Ocak 26

Javascript ile Slot Makinesi

Geçenlerde Alexandrapoli’de Alexandrapouli hotel’in içindeki Casino Thraki’de “20 super hot” oynadım. Oyun hızlı kaybettirmeyen eğlenceli bir oyun. Hoşuma gittiği için javascript te oyunun bir benzerini yazmaya karar verdim.
Oyun rastgele sembollerin dizildiği 5 tane tekerlekten oluşuyor. Bu tekerlekler rastgele hızlarla dönüyor. Durduğunda her tekerlek üzerinde 3 adet sembol den oluşan 3×5 lik bir matris değerlendirmeye alınıyor. 20 adet sıralama bu matrisin içinde kontrol ediliyor ve dizilimlere göre bahisin katları kazanılıyor.

20 dizilimin 3×5 matris üzerindeki sıralamaları:


  var Lines = [];
  Lines[1 ]=[[1,1],[1,2],[1,3],[1,4],[1,5]];
  Lines[2 ]=[[2,1],[2,2],[2,3],[2,4],[2,5]];
  Lines[3 ]=[[3,1],[3,2],[3,3],[3,4],[3,5]];
  Lines[4 ]=[[1,1],[2,2],[3,3],[2,4],[1,5]];
  Lines[5 ]=[[3,1],[2,2],[1,3],[2,4],[3,5]];
  Lines[6 ]=[[1,1],[1,2],[2,3],[3,4],[3,5]];
  Lines[7 ]=[[3,1],[3,2],[2,3],[1,4],[1,5]];
  Lines[8 ]=[[2,1],[1,2],[1,3],[1,4],[2,5]];
  Lines[9 ]=[[2,1],[3,2],[3,3],[3,4],[2,5]];
  Lines[10]=[[1,1],[2,2],[2,3],[2,4],[1,5]];
  Lines[11]=[[3,1],[2,2],[2,3],[2,4],[3,5]];
  Lines[12]=[[2,1],[3,2],[2,3],[1,4],[2,5]];
  Lines[13]=[[2,1],[1,2],[2,3],[3,4],[2,5]];
  Lines[14]=[[1,1],[2,2],[1,3],[2,4],[1,5]];
  Lines[15]=[[3,1],[2,2],[3,3],[2,4],[3,5]];
  Lines[16]=[[2,1],[2,2],[1,3],[2,4],[2,5]];
  Lines[17]=[[2,1],[2,2],[3,3],[2,4],[2,5]];
  Lines[18]=[[1,1],[3,2],[1,3],[3,4],[1,5]];
  Lines[19]=[[3,1],[1,2],[3,3],[1,4],[3,5]];
  Lines[20]=[[2,1],[1,2],[3,3],[1,4],[2,5]];

1. tekerleğin üstündeki sembol ile komşuları aynı olması koşulu ile 3,4,5 yanyana sembol aranıyor.
Çarpan matrisi aşağıdaki gibi.


  var MeyveCarpan3 = {'bigwin':5  , 'yedi':2 , 'muz':1 , 'karpuz':1 , 'erik':1 , 'portakal':0.5, 'limon':0.5, 'kiraz':0.5};
  var MeyveCarpan4 = {'bigwin':20 , 'yedi':20, 'muz':4 , 'karpuz':2 , 'erik':2 , 'portakal':1  , 'limon':1  , 'kiraz':1  };
  var MeyveCarpan5 = {'bigwin':500, 'yedi':50, 'muz':20, 'karpuz':10, 'erik':10, 'portakal':5  , 'limon':5  , 'kiraz':5  };

Tekerleklerde yedi, yıldız, erik, üzüm, karpuz, portakal, limon ve kiraz var. yıldız gelmesi olasılığı en düşük olan sembol. yedi nin olasılığı yıldızdan büyük, üzüm, erik ve karpuzdan daha olasılıklı, karpuz ve erik, geri kalanlardan daha olasılıklı. 3,4 ve 5 komşu gelmesine göre katsayıları değişiyor. 1. çark dışında yedi gelir ise dizilimlerde joker olarak tüm sembollerin yerini tutuyor. yıldız sembolü yerine bigwin üzüm sembolü yerine ise muz kullandım 😀 hızı ayarlanabilir bir simülasyon. bir çok deneme yaptım, uzun vadede tamamen şansa bağlı olduğunda bile kaybedeceğiniz gerçeğini acı bir şekilde gün yüzüne çıkarıyor.

Sabitler ve değişkenler;


  var KacinciEl   = 1; // El sırası
  var pTema      = '20bkf'; //tema dizini, muz.png,yedi.png ..vb dosyalar bu klasörde
  var pSembolGenislik = '130';//sembollerin boyutu
  var beklemeKatsayisi= 5; //kazanç olan ellerde otomatik çevirme aktif iken beklemeKatsayisi*cevirmesüresi kadar bekler
  var cevirmeSuresi = 250;//1000;// otomatik çevirmelerde milisaniye kadar bekler, tekerlek dönüş süresi aynı zamanda
  var Bahis    = 10; // başlangıç bahis ayarı
  var Kredi    = 5000; // başlangıç kredi ayarı
  var ElTop   = 0; // El de oluşan toplam kazanç
  var pTekerlekler   = []; // Tekerlekler
  var hSlot    = 9; // tekerlekteki eleman sayısı
  var vSlot    = 5; // tekerlek sayısı
  var autoPlay = false; // otomatik dönüş modu
  var slotDizi = []; // slot sonucunda gelen 3x5 lik matris
  var slotEkran = []; // slotun ekrandaki nesneleri
  slotEkran[1]=['', '#s_1_1', '#s_1_2', '#s_1_3', '#s_1_4', '#s_1_5'];
  slotEkran[2]=['', '#s_9_1', '#s_9_2', '#s_9_3', '#s_9_4', '#s_9_5'];
  slotEkran[3]=['', '#s_8_1', '#s_8_2', '#s_8_3', '#s_8_4', '#s_8_5'];

Tekerlek üreten fonksiyon;


  function yeniMeyveSerisi(){
  var pMixed    = [];
  var pRandomMeyve, secilenMeyve = null;
  var pMeyveler  = [  
          'bigwin','bigwin',
          'yedi','yedi','yedi','yedi',
          'muz','muz','muz','muz','muz',
          'karpuz','karpuz','karpuz','karpuz',
          'karpuz','karpuz','karpuz',
          'erik','erik','erik',
          'erik','erik','erik',                             
          'portakal','portakal','portakal',
          'portakal','portakal','portakal',  
          'portakal','portakal','portakal',  
          'limon','limon','limon',
          'limon','limon','limon',
          'limon','limon','limon',
          'kiraz','kiraz','kiraz',
          'kiraz','kiraz','kiraz',
          'kiraz','kiraz','kiraz',

          'bigwin','bigwin',
          'yedi','yedi','yedi','yedi',
          'muz','muz','muz','muz','muz',
          'karpuz','karpuz','karpuz','karpuz',
          'karpuz','karpuz','karpuz',
          'erik','erik','erik',
          'erik','erik','erik',
          'portakal','portakal','portakal',
          'portakal','portakal','portakal',
          'portakal','portakal','portakal',
          'limon','limon','limon',
          'limon','limon','limon',
          'limon','limon','limon',
          'kiraz','kiraz','kiraz',
          'kiraz','kiraz','kiraz',
          'kiraz','kiraz','kiraz'
           ];//Meyveler
    
    while (pMixed.length <= pMeyveler.length){
      secilenMeyve='';
      pRandomMeyve  = Math.floor((Math.random() * pMeyveler.length) );
      secilenMeyve = pMeyveler[pRandomMeyve];
      pMeyveler.splice(pRandomMeyve,1);
      if (secilenMeyve != '') pMixed.push(secilenMeyve);
    }
  return pMixed;
  }  

Dizilimleri hesaplayan fonksiyon;


  function LineHesapla(LineNumara,SonucMatrixi){
    var cercevelenecekHucre=[];
    var LastMeyve = "";
    var LineTop = 0;
    var MeyveSayisi = {'bigwin':0   , 'yedi':0 , 'muz':0 , 'karpuz':0 , 'erik':0 , 'portakal':0  , 'limon':0  , 'kiraz':0  };
    for (k=0;k<=Lines[LineNumara].length-1;k++){
      if (LastMeyve==="") 
        LastMeyve = SonucMatrixi[Lines[LineNumara][k][0]][Lines[LineNumara][k][1]];
        else 
        if (
          LastMeyve != SonucMatrixi[Lines[LineNumara][k][0]][Lines[LineNumara][k][1]] &&
          SonucMatrixi[Lines[LineNumara][k][0]][Lines[LineNumara][k][1]] != "yedi" 
          ) break;
      //hep ilk elemanı arttır
      MeyveSayisi[SonucMatrixi[Lines[LineNumara][0][0]][Lines[LineNumara][0][1]]]++;
      cercevelenecekHucre[k]=slotEkran[Lines[LineNumara][k][0]][Lines[LineNumara][k][1]];
    }
    for (meyve in MeyveSayisi){
      if (MeyveSayisi[meyve]>=3){
      for (hucre=0;hucre < cercevelenecekHucre.length;hucre++) 
      $(cercevelenecekHucre[hucre]).css('border', '5px solid red');
      }
      switch(MeyveSayisi[meyve]) {
        case 3:
          LineTop += MeyveCarpan3[meyve]*Bahis;
        break;
        case 4:
          LineTop += MeyveCarpan4[meyve]*Bahis;
        break;
        case 5:
          LineTop += MeyveCarpan4[meyve]*Bahis;
        break;
      }
    }
    return LineTop;
  }

Ocak 4

WebSitesi içeriğini instagramdan çekmek

Instagramda eklediğiniz içeriğin web sitenizde görünmesini mi istiyorsunuz. Sizler için örnek küçük bir uygulama geliştirdim.


$username = "bariskayar";
$url = 'https://www.instagram.com/'.$username.'/media/';
$json = file_get_contents($url);
$data = json_decode($json);
foreach($data->items as $item){
  echo '<a href="'.
  ($item->images->standard_resolution->url).
  '" target="_blank">'.
  '<img src="'.($item->images->thumbnail->url).'" />'.
  '</a>';
}

Ocak 4

TEKNOLOJİNİN İŞ SÜREÇLERİNE KATKISI – INTERACTIVE INTELLIGENCE CIC – VARLIK YÖNETİM ŞİRKETLERİ

ÖZET

44 Sayfalık tam dökümanı indirmek için :  Teknolojinin_is_sureclerine_katkisi_Interactive_Intelligence_Baris_Kayar

Bankaların bilançolarında yer alan şüpheli alacak kalemlerini bireysel ve ticari tahsil edilemeyen alacaklar oluşturmaktadır. Bu alacakların tahsil edilip edilemeyeceği konusunda kesin bir bilgi olmadığından alacaklar ihale açılarak varlık yönetim şirketlerine devredilmektedir. Bu yol ile bankaların şüpheli alacaklarından kurtularak bilançolarının daha güvenilir hale gelmesi, tahsil edilememiş borçların uygun koşullarla tahsilatı, borçluların yeniden kredi ya da borç kullanabilir hale gelmesi ve ekonominin canlanması amaçlanmaktadır.

Varlık yönetimi şirketleri banka borçlularını devraldıktan sonra borçlulara ulaşarak anlaşma yoluyla borcun ibrasını amaçlar. Süreç bir tahsilat operasyonudur. Tahsilat operasyonu sürecinde varlık yönetimi çalışanları borçlulara telefon kanalı ile ulaşarak bazı teklifler sunmakta ve hukuki yollara başvurmadan anlaşarak borcun ibrası için çalışmaktadırlar.

Tahsilat operasyonlarında telefon ile borçlulara ulaşmak oldukça yorucu ve zor bir uğraştır. Çoğu zaman tahsilat temsilcileri aradıkları borçluya çeşitli sebeplerden (yanlış numara, meşgul, telesekreter, ulaşılamıyor …vb) ulaşamamaktadır. Akıllı telefon sistemleri ile tahsilat operasyonlarındaki telefon ile borçluya ulaşma işinin yükü, tahsilat temsilcilerinin üzerinden alınabilmektedir. Akıllı arama sistemleri boşta bekleyen çalışan sayısına bağlı olarak öngörülü olarak sürekli müşterileri arar, gerçek insan sesi algıladığında ise bu çağrıyı ilgili tahsilat temsilcisine transfer eder. Bu sayede çalışanlar tek tek numara aramaktan, ulaşılamıyor mesajı, telesekreter, fax sesi dinlemekten kurtulmuş olur ve zamanını daha çok konuşmaya ayırabilir. Elde edilecek zaman tasarrufu ve daha fazla borçluyla görüşülmesi operasyonun verimini ve iş gücü kazancını arttıracaktır. Bu durumda dolaylı olarak karlılık da artacaktır.

 

Category: Makale | LEAVE A COMMENT
Ocak 4

MSSQL Lock Analiz uygulaması

MSSQL de eğer iyi bir veri tabanı kurgunuz yok ise sıkça lock ve bekleme sorunları yaşarsınız. Table Lock lar zaman zaman ciddi sorunlara yol açar. Raporlama için yazılan sorgularda  kirli okuma (dirty reading) yapılmadığı durumlarda (with nolock kullanılmaması durumunda) sorgu ile ilgili tablolarda kayıt yazma, güncelleme işlemleri var ise bu işlemlerin bitmesini bekleyen processler çalışanları çıldırtabilir. bu gibi sorunların tespiti için geliştirdiğim bu küçük uygulama ile lock oluştuğunda hangi sorgunun hangi sorguyu blokladığını tespit edip gerekli iyileştirmeler ile sorunu çözebilirsiniz.

https://sourceforge.net/projects/mssqllockanalyz/

https://youtu.be/H6d4lwthf8M

Ocak 4

SQL Batch

Küçük bir toplu işlem uygulaması. SQL den veri çekerek gelen dataset i Batch file içinde kullanan ve toplu işlemler yapmayı sağlayan taşınabilir, esnek bir uygulama. Örneğin veri tabanında dosyaların network pathleri var ve siz bu dosyaları topluca işlemek istiyorsunuz, kopyalama, ftp ile bir yerlere atma .. vb. aşağıdaki linkten indirip yardım dosyalarını okuyarak ilerleyebilirsiniz.

https://sourceforge.net/projects/bkfsqlbatch/

Akış
örnek dataset
datasetten oluşan örnek batch
batch çalıştıktan sonra oluşan dosyalar ve dosyaların içeriği