Spotify Labs Puzzles -Medium- Solution with Java

by Süleyman Petek 9. May 2016 11:40
import java.util.*;public class SpotifyMedium {    public static void main(String[] args)

import java.util.*;

public class SpotifyMedium {

    public static void main(String[] args) {       

        List<String> indata = new ArrayList<String>();

        System.out.println("Please enter the count of played times and name of the song with a one char gap...");

        System.out.println("e.g. 487 LetItBe");

        String line;

        Scanner stdin = new Scanner(;

        while (stdin.hasNextLine() && !(line = stdin.nextLine()).equals("")) {

            String[] tokens = line.split(" ");

            indata.add(tokens[0] + ":" + tokens[1]);


        System.out.println("Please enter the total song to select...");

        int totalSelect = Integer.parseInt(stdin.nextLine());


        String[][] songList = new String[indata.size()][3];

        for (int i = 0; i < indata.size(); i++) {

            String[] row = indata.get(i).split(":");

            songList[i][0] = row[0];

            songList[i][1] = row[1];

            songList[i][2] = String.valueOf(i + 1);



        String[][] calculatedSongList = new String[songList.length][3];

        for (int i = 0; i < songList.length; i++) {

            for (int j = 0; j < songList[i].length; j++) {

                String zipValue = String.valueOf(ZipsLaw(songList.length, i + 1));

                String qualityValue = String.valueOf(SongQuality(Double.parseDouble(songList[i][0]), Double.parseDouble(zipValue)));

                calculatedSongList[i][j] = songList[i][j] + ":" + qualityValue;



        Arrays.sort(calculatedSongList, new Comparator<String[]>() {


            public int compare(final String[] entry1, final String[] entry2) {

                String strObj1[] = entry1[0].split(":");

                String strObj2[] = entry2[0].split(":");


                Double obj1 = new Double(strObj1[1]);

                Double obj2 = new Double(strObj2[1]);

                int retval = obj2.compareTo(obj1);

                if (retval > 0) {

                    //System.out.println("obj1 is greater than obj2");

                } else if (retval < 0) {

                    //System.out.println("obj1 is less than obj2");

                } else {

                    //System.out.println("obj1 is equal to obj2");                    


                return retval;



        int total = 0;

        for (final String[] s : calculatedSongList) {

            if (total < totalSelect) {






    public static double ZipsLaw(double n, double i) {

        return (n * n) / i;


    public static double SongQuality(double fi, double zi) {

        return fi / zi;



Tags: , , , ,

Tech | Tip

Spotify Labs Puzzles -Easy- Solution with Java

by Süleyman Petek 5. May 2016 17:25
public static void main(String[] args) {&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;

public static void main(String[] args) {        

        int yourNumber; 

        Scanner in = new Scanner(;

        System.out.println("Enter your number");

        yourNumber = in.nextInt();        


        if (yourNumber < 0) {

            System.out.println("Error: Less then Zero");




            System.out.print("Binary is: ");           





    public static void toBinary(int int1){       


       String b = new StringBuffer(Integer.toBinaryString(int1)).reverse().toString();       

       System.out.println("The reverse in binary format is: "+ b);                  

       int decimalValue = Integer.parseInt(b, 2);           

       System.out.println("The reverse decimal is:" +decimalValue); 


For harder ones, please visit (:

Tags: , , , , ,

Geyik | Innovation | Tech | Tip

How to call batch files via Python

by Süleyman Petek 10. March 2016 17:26
Gentle reminder for me and anyone who needs in the future, say that you have lots of .bat files and

Gentle reminder for me and anyone who needs in the future, say that you have lots of .bat files and you need to call them all.

You can do it via Python like below :

import glob  

import os 


for filename in glob.iglob('*.bat', recursive=True): 




Tech | Tip

Securing The Internet of Things

by Süleyman Petek 28. September 2015 20:30
Internet of things aka &quot;IoT&quot; is a very popular word recently. Many large companies are investing abo

Internet of things aka "IoT" is a very popular word recently. Many large companies are investing about this issue. We can also say that another popular word "Big Data" is overlapping with IoT. The architecture of the original Internet was created long before communicating with billions of simple devices such as sensors and appliances was ever envisioned. The upcoming explosion of these simple devices creates gorgeous challenges for the current networking paradigm. The scope and range of the devices to be connected are huge and the connections to the edges of the network where these devices will be setup will be low-speed, lossy and by snatches. Within a few years, devices on the IoT will overdose human beings on the planet and the number of devices will continue to grow.

Here are some basic design guidelines;

  • It should specify as little as possible and leave much open for others to innovate.
  • Systems must be designed to fail gracefully seeking not to eliminate errors, but to accommodate them.
  • Graduated degrees of networking functionality and complexity are applied only where and when needed.
  • The architecture is created from simple concepts that build into complex systems using the analog provided by natural phenomena.

There are many products on the market today under the label of IoT with the lack of  basic security architectures. It is very easy for a knowledgeable person to take control of devices for malicious purposes. The management knows how to manage known risks but they don't know how to measure them in the field of IoT and computer communication. We can list the attack types as:

  • Denial of Service
  • Breaking the Stored Credentials / Guessing the Credentials
  • Man in the Middle
  • Network Sniffing
  • Port Scanning / Web Crawling
  • Search Features & Wildcards
And how can we protect ourselves ?
  • Virtual Private Networks
  • Certificates & Encryption
  • Authentication of things

According to the HP Fortify 2014 IoT Security report
  • Six out of 10 devices that provide user interfaces were vulnerable to a range of issues such as persistent XSS and weak credentials
  • 70 % of devices used unencrypted network service
  • 90 % of devices collected at least one piece of personal information via the device, the cloud, or its mobile application
  • 60 % raised security concerns with their user interfaces

You can also check the OWASP for IoT as they list the top 10 for 2014 as below

  • I1 Insecure Web Interface
  • I2 Insufficient Authentication/Authorization
  • I3 Insecure Network Services
  • I4 Lack of Transport Encryption
  • I5 Privacy Concerns
  • I6 Insecure Cloud Interface
  • I7 Insecure Mobile Interface
  • I8 Insufficient Security Configurability
  • I9 Insecure Software/Firmware
  • I10 Poor Physical Security

Tags: , ,

IT Security | Awareness | Tech | Internet Of Things

Big Data Gerçekleri - 2

by Süleyman Petek 3. July 2015 20:41
&quot;Big Data nın mevcut BI dan ne farkı var ?&quot;&amp;nbsp;Big Data (B&#252;y&#252;k Veri) konuşulan bir &#231;ok ortamda bu

"Big Data nın mevcut BI dan ne farkı var ?" 

Big Data (Büyük Veri) konuşulan bir çok ortamda bu soruyu sık sık duyabiliyoruz. Ya da "Şimdiye kadar kullandığımız araçlar ile büyük veriyi analiz edemez miyiz ?" şeklinde de değiştirebiliriz bu soruyu. Şimdiye kadar kullanılan BI metodolojisinde temel prensip, kurumsal bilgilerin merkezi bir veri deposunda toplanması üzerine idi, veri daha çok offline modda işleniyordu.(OLTP dediğimiz online dataların Warehouse dediğimiz denormalize ortamlara aktarılması)

Big Data da ise şöyle belirgin farklar vardır

  • Veri merkezi bir yerde değildir, dağıtık bir şekilde bulunmaktadır
  • Veriyi işleyen fonksiyonlar veriye gider, veriler işlenmek için fonksiyona gitmezler
  • Verinin belirli bir biçimi olmayabilir, biçimlendirilmemiş veri de kullanılabilir
  • Offline veri ve real time (anlık) veri beraber olabilir
  • Teknoloji ağırlıklı olarak paralel process üzerinde yürümektedir

Tags: ,

Big Data | Tech

Big Data Gerçekleri

by Süleyman Petek 3. July 2015 20:27
Big Data (B&#252;y&#252;k Veri) hakkında g&#246;rd&#252;ğ&#252;m şu resim beni &#231;ok etkilemişti.Ger&#231;ekten bu konunun şu anda t

Big Data (Büyük Veri) hakkında gördüğüm şu resim beni çok etkilemişti.

Gerçekten bu konunun şu anda tam olarak anlaşılmadığı ve zamanla daha da olgunlaşmaya açık olduğuna inanıyorum.

Sağlam ve yüksek performanslı ilişkisel veritabanlarımız varken big data da nereden çıktı ?

80 li yılların başında ilişkisel veritabanları ortaya çıkmaya başladığı zamanlarda, saklanan veri sadece transactionlardan(tam olarak Türkçe bir karşılık bulamadım buna) ibaretti. Daha sonra bu veriler çoğalmaya başlayınca insanoğlu bu verileri offline modda incelemeye başladı ve data warehouse, data mart gibi şeyler konuşulmaya başlandı. Veri analizleri ve iş zekası, yöneticilerin geleceğe yönelik planlamalarında önemli bir yere geldi. İlk başlarda bu analizler şirketlerin kendi içlerinde mevcut verilerle yürürken daha sonra internetin yaygınlaşması ile bu sefer şirket dışındaki veriler de günlük akışın önemli bir parçası oldu.

Ve sosyal medya diye birşey çıktı, artık hiçbirşey eskisi gibi olmayacaktı. Olaylar daha da karmaşıklaşmaya başladı çünkü veriler o kadar hızlı ve o kadar çeşitliydi ki... Bu değişimle beraber, Facebook, Google gibi internetin liderleri kendi veri saklama,işleme ve analiz etme metotlarını geliştirdiler (dağıtık sistemler, NoSQL veritabanları gibi).

Derken mobil cihazlar patlama yaptı, bununla birlikte bulut teknolojisi de günden güne yaygınlaşmaya başladı ve dünya üzerinde üretilen veriler o kadar hızlanmaya başladı ki mevcut verinin %90 ının son 2-3 yılda üretildiği ve bunun yaklaşık %70 inin kişiler tarafından yani şirketlerden bağımsız üretildiği söyleniyor. Şu anda yeryüzünde 4 trilyon gigabyte ın üzerinde verinin var olduğu tahmin ediliyor.

Kurumlar, şirketler, müşterilerinin ihtiyaçlarına hızlı cevap verebilmek, yenilikçilik ve rekabet adına ayakta kalabilmek için, bu resim, video, feed vs. verileri toplamak ve çok hızlı kararlar almak zorundalar artık. Burada karıştırılmaması gereken konu, problemin, big datanın hacmen büyüklüğünden ziyade, belli bir sabit yapısı olmaması, çok değişken ve aynı zamanda çok çeşitli olmasıdır aslında.

Tags: ,

Big Data | Tech


<<  May 2021  >>

View posts in large calendar