coolwolf / 19/02/2015

Folx GO

Size bu arkadaşlarla geçen küçük bir tecrübeden bahsedeyim.
Belki kullanmayı düşünen vardır da fikir olur.
Programın Web Sitesi : http://mac.eltima.com/download-manager.html
Mac App Store Linki : https://itunes.apple.com/us/app/folx-go/id736584830?mt=12
Mevzuya gelince;
iGetter‘ın her açılışta bekletmesinden sıkılınca başka bir indirme yöneticisi yok mu diye bakınayım dedim. Araştırınca da bu Folx programını buldum.
İndirdim kurdum fena değil gibi. Türkçesi var mı diye bakınırken olmadığını fark ettim.
Ardından da üşenmeyip adamlara mail attım : “Programda Türkçe dili yok, isterseniz sizin için tercüme edebilirim” dedim.
Gelen cevap: “Çok sağolun, Türkçe tercümeye ihtiyacımız yok”
Cevabım saçmalığı ile dumura uğrayıp şunu yazdım ben de : “Bu ne biçim cevap ? Tercümeye sizin neden ihtiyacınız olsun. Türkçe kullanmak isteyenlerin ihtiyacı olur. Belki para isterim diye öyle yazdınız. Ama para istemiyorum. Bunu sizin için ücretsiz yaparım”
Adamlar üşenmeyip bir daha cevap yazmış: “Yanlış anlaşılma için kusura bakmayın. Müdürümle konuştum. Şu anki dillerden başka bir dile tercüme için ayıracak personelimiz yok”
Buyur burdan yak. (Acaba adamın elinde kaynak kodu mu yok !? 🙂 Belki de yazılımcısı tercümeyi modüler yapmadı ve adamın tercümeyi kodun içine gömmesi gerekiyor. Ama koda ulaşamadığı için yapamıyor.)
Eğer bu yazıyı okuyan ve bu programı kullanmak isteyecek arkadaş varsa, lütfen bu adamların saygısızlığına karşılık olarak, hiç değilse “Türkçe tercüme istiyoruz” diye mail atın.

coolwolf / 15/02/2015

Swift Cocoa, ComboBox doldurmak

Swift ile Combobox doldurmak için 2 farklı yöntem kullanabilirsiniz :
1. Manual Yöntem :
Öncelikle alttaki resimde göründüğü gibi datasource özelliğini devre dışı bırakalım.

Ardından da windowDidLoad yada istediğiniz başka bir yerde aşağıdakine benzer bir kodla ComboBox’ınıza öğeler ekleyin.

for index in 1..5
{
    self.cbxComboBoximiz.addItemWithObjectValue(index)
}

2. DataSource ile :
Öncelikle yukarıdaki resmin tersine “Uses Data Source” seçeneğini işaretliyoruz.
Combobox’ın üzerine sağ tıkladığımızda çıkan pencereden datasource ve delegate seçeneklerinin yanındaki + işaretine basılı tutarak File Owner üzerine sürükleyiniz.
Ardından Window’umuzun .swift uzantılı dosyasında bulunan kod kısmına alttaki kodları kendi işleminize göre özelleştirerek ComboBox‘ımıza satırları eklemiş oluyoruz. Aslında burada kullandığımız yapı, TableView‘e veri doldurmak ile neredeyse aynı.

var sayi=0
myComboBox.dataSource = self
myComboBox.usesDataSource = true
func numberOfItemsInComboBox(comboBox: NSComboBox) -> Int {
    return 6
}
func comboBox(aComboBox: NSComboBox!, objectValueForItemAtIndex index: Int) -> AnyObject! {
  sayi++
  return sayi
}

coolwolf / 28/01/2015

Xcode ile Cocoa üzerinde Swift dilini kullanarak tablo (GridView) doldurmak

Ekran Resmi 2015-01-28 02.33.11
Bu örnekte kısaca 6 satır içeren bir tablonun içine öylesine veri dolduracağız.
İnternetteki tüm örneklerin AppDelegate penceresi üzerinde olması nedeniyle tablomuzu ikinci bir pencerede gösterdik.
1. Xcode ile Swift dilini kullanan bir proje oluşturun.
2. Sol tarafta bulunan klasör simgesi şeklindeki proje ismimize sağ tıklayıp “New File” seçeneğini seçiyoruz. Çıkan pencerede “Cocoa Class” seçeneğini seçip Next diyoruz. Class adı olarak wTablom ismini verelim. İleride siz değiştirebilirsiniz, fakat şu anda bu ismi kullanalım. Subclass of kısmında NSWindowController seçili olsun. Next deyip penceremizi oluşturalım.
3. Açılan pencereye sağ taraftan TableView nesnesini bulup ekleyelim.
4. Sağ üstte “Table View” görene kadar 3 kez tablonun üzerine tıklayalım. Content Mode olarak Cell Based seçelim.
5. Şimdi tablonun üzerine sağ tıklayıp, çıkan penceredeki datasource’un hemen sağındaki artı işaretini fareye basılı tutarak hemen solda en üstte olan küp şeklindeki ve üzerine gelindiğinde File’s Owner yazan simgenin üzerine bırakalım.
6. Aynı şeyi delegate için de yapalım.

7. Şimdi sağ üstteki içiçe geçmiş iki haklaya tıklayalım. Solda tablomuz, sağda da alttaki kod olmalıdır.

//
// wTablom.swift
// TableViewOrnek
//
// Created by ilyas sariyurt on 28.01.2015.
// Copyright (c) 2015 CodeLAMA. All rights reserved.
//
import Cocoa
class wTablom: NSWindowController, NSTableViewDelegate, NSTableViewDataSource {
@IBOutlet weak var tblListe: NSTableView!
var sira=1
var metin="a"
override func windowDidLoad() {
    super.windowDidLoad()
    // Implement this method to handle any initialization after your window controller's window has been loaded from its nib file.
}
func numberOfRowsInTableView(tableView: NSTableView) -> Int {
    return 6
}
func tableView(tableView: NSTableView!, objectValueForTableColumn tableColumn: NSTableColumn!, row: Int) -> AnyObject!{
    var newString=""
    if tableColumn.identifier=="sutun1" { newString=String(sira) }
    else if tableColumn.identifier=="sutun2" { newString=metin }
    sira++
    metin+=String(sira)
    return newString;
    }
}

8. Şimdi kntrl tuşuna basılı tutarak sağdaki windowdidLoad yazısının hemen stüne bırakalım. Çıkan küçük pencerede isim olarak tblListe yazalım.
9. Ardından kodumuzu üstteki örneğe göre düzenleyelim.
10. Şimdi Sol taraftan MainMenu.xib penceresine tıklayalım. Sağ alttaki nesnelerden buton ekleyelim. Üstüne istediğiniz yazıyı yazabilirsiniz.
11. kntrl tuşuna basarak farenizi butonun üzerinde basılı tutarak, sağdaki didfinishLaunching’in hemen üstüne bırakalım. Çıkan küçük pencereden Outlet yerine Action seçelim ve bir isim verelim.
12. Oluşturduğumuz kodun hemen üstüne alttaki kodu yazalım :

lazy var winTablo = wTablom(windowNibName: "wTablom")

13. Az önce oluşturduğumuz Action içine de alttaki kodu yazalım :

 winTablo.showWindow(self)

Artık uygulamamızı çalıştırabiliriz.

coolwolf / 18/01/2015

XCode 6 ve Swift dilini kullarak cocoa arayüzlü sayı bulmaca oyunu

Bildiğiniz gibi OS X ve IOS programları yavaş yavaş Swift diline kaydırılıyor. Yıllarca Windows üzerinde VB ve C#, web üzerinde de PHP dili ile uygulama geliştirmeye çalışmış benim gibi insanlar için Objective C nerede ne olduğunu bir türlü anlayamadığımız karışık bir dünya idi.
Sağolsun Appledaki arkadaşlar da bu zorluğu farkedip Swift adında bir dil geliştirmişler. İlk gözüme çarpan .h ve .m uzantılı dosyaların olmamasıydı. Bunun yerine kodlarınızı .swift uzantılı tek bir dosyanın içine yazıyorsunuz. Yine Objective C’de olduğu gibi .xib uzantılı bir dosyanız üzerinde form nesnelerini oluşturuyorsunuz.
.swift uzantılı dosya sanki .m uzantılı dosyanın halini almış ve .h uzantılı dosyamız ortadan kaldırılmış.
Swift yazımını C#, PHP veya Java bilen arkadaşların kolaylıkla benimseyebileceğini düşünüyorum. En azından benim için öyle oldu.
Ayrıca Swift kodu içerisinde Objective C nesnelerini de rahatlıkla kullanabiliyorsunuz. Kaynak sıkıntısı çekilmemesi için Apple böyle bir güzellik yapmış.
Şunu özellikle belirtmeliyim ki; Objective C uzmanları yukarıdaki yazım şeklimi çok cahilce bulabilirler 🙂 Sen böyle yazmışsın ama .h uzantılı dosya da … ve …. işlerinde çok işe yarıyordu. Ayrıca onun adı .h değil header dosyası gibi şeyler de söyleyebilirler. Ve haklılar da. Bu konudaki bilgilerini paylaşırlarsa bizler de Objective C’de neyin ne olduğunu bilmek isteriz 🙂
Biraz laf ebeliği yaptıktan sonra asıl konumuza dönelim. Bildiğiniz gibi form üzerindeki Evet  (Burada action deniyor) benzeri olayları kavrayabilmek için en basit yöntem bir sayı bulmaca oyunu yazmak.
Sayı bulmaca oyununda :
1. Form üzerindeki nesnelere kod tarafından nasıl erişilir,
2. Form üzerindeki nesnelerin değerleri kod tarafından nasıl değiştirilir,
3. Form’un kendisi ve üzerinde bulunan nesnelerin olayları nasıl yakalanır,
4. Textbox’tan girilen string değer Int türüne nasıl dönüştürülür,
5. Değişken ve genel değişken nasıl tanımlanır,
6. Tip çevrimleri nasıl yapılır,
7. if then else nasıl kullanılır..
gibi şeyleri küçük ve basit bir örnekte deneyebiliyoruz. Ayrıca örnek üzerinde birçok profesyonel geliştirmeler de yapılabilir.
Şimdi gelelim sayı bulmaca oyununu yapabilmek için izleyeceğimiz adımlara:
Öncelikle XCode uygulamasını açalım. Cocoa Application simgesini seçip Next tuşuna basalım.


Şimdi proje ismi ve organizasyon bilgilerini yazıp, Next butonuna tıklayalım:


Create butonuna tıkladıktan sonra projemiz oluşturulmuş ve karşımıza aşağıdakine benzer bir ekran çıkacaktır:


Şimdi, XCode’un bizim olulturduğu ilk formu açıp üzerinde işlem yapmak için alttaki adımları izleyelim. Öncelikle soldaki MainMenu.xib dosyasını üzerine tıklayalım. Ardından sol orta sütundaki pencere simgesine tıklayarak formu görelim. Şimdi sağ alt tarafta bulunan nesneler arasında ilk sırada olan Push Button nesnesini sürükleyip form üzerinde istediğimiz yere bırakalım.:

Şimdi textbox ve label nesnelerimizi ekleyelim. Aynı şekilde TextBox nesnesini form üzerinde istediğimiz yere taşıyalım. Ardından bir Label, textbox’un soluna, bir Label da butonun üstüne (kullanıcıya bilgi vermek için) ekleyelim. :


Şimdi Label nesnemizin içeriğini değiştirelim. Sağ üstteki “Show the attributes inspector” butonuna tıklayalım (aşağı doğru ok işareti olan buton). Sonra da Title kutucuğuna istediğimiz metni yazalım. Örneğimizde “Tahmininiz”. Buton ile textbox arasına yerleştirdiğimiz Label’ımızın metni boş olsun başlangıçta. Biz örneğimizde arkaplanı sarı, yazı rengini kırmızı yaptık. Renkleri değiştirmek için yine Attributes Inspector kısmında yer alan Text Color ve Background özelliklerini kullanabiliriz.

Butonumuzun etiketini de Dene olarak değiştirelim :

Şimdi gelelim işin en can alıcı noktasına. Nesnelerimizin kod kısmı ile haberleşmesi için yapılacaklara. “Show The Assistant Editor” (iç içe iki halka olan buton) butonu bunu bizim için kolaylaştıracaktır. Eğer Show Assistant Editor düğmesine bastığınızda sağdaki pencerenin üstünde AppDelegate.swift yazısını görmüyorsanız, hemen dosya adının solunda bulunan pencere çerçevesi şeklindeki simgeye tıklayarak, manual kısmından AppDelegate.swift dosyasını bulup üzerine tıklayınız:

Şimdi nesnelerimizi kodumuzla ilişkilendirelim. Bunun için alttaki resimde de görüldüğü gibi, kntrl tuşuna basılı tutarak textboxun üzerine basalım, fareyi hiç bırakmadan sağ taraftaki “class AppDelegate parantezinin hemen peşine sürükleyip bırakınız” :

Açılan kutucuktan outletimize bir isim verelim. Biz sayiOutlet ismini kullandık:

Şimdi kodumuz şu hali aldı :


Sonra da buton için aynısını yapalım. Yalnız buton için iki sefer yapacağız. İlkinde outlet seçeneğini işaretleyeceğiz, ikincisinde de Action seçeneğini işaretleyeceğiz:


Butonumuzun outletine de bir isim verelim.


İlk seferde Outlet oluşturduktan sonra, ikinci sürüklemede Action seçeneğini seçiyoruz. Bu işlemin ardından kodumuz şu hali alacaktır :


Artık işin programcılık kısmına geçip yazmaya başlayalım. Bizim hazırladığımız kod örneği aşağıda verilmiştir.

//
//  AppDelegate.swift
//  SayiBulmaca
//
//  Created by ilyas sariyurt on 18.01.2015.
//  Copyright (c) 2015 CodeLAMA. All rights reserved.
//
import Cocoa
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
    var tutulanSayi=0
    var buldu=false
    @IBOutlet weak var sayiOutlet: NSTextField!
    @IBOutlet weak var btnOutlet: NSButton!
    @IBOutlet weak var durumOutlet: NSTextField!
    @IBAction func btnAction(sender: AnyObject) {
        if(buldu)
        {
            buldu=false
            btnOutlet.stringValue="Dene"
            tutulanSayi=Int(arc4random_uniform(99)+1)
            durumOutlet.stringValue="Lütfen tahmininizi yazınız"
        }
        var girilenSayi=sayiOutlet.intValue
        if(Int(girilenSayi)==tutulanSayi)
        {
            buldu=true
            durumOutlet.stringValue="Tebrikler"
            btnOutlet.stringValue="Baştan Başlamak İçin Tıklayınız"
            return
        }
        if(Int(girilenSayi)<tutulanSayi)
        {
            durumOutlet.stringValue="Tuttuğum sayı daha büyük"
        }else
        {
            durumOutlet.stringValue="Tuttuğum sayı daha küçük"
        }
    }
    @IBOutlet weak var window: NSWindow!
    func applicationDidFinishLaunching(aNotification: NSNotification) {
        // Insert code here to initialize your application
        tutulanSayi=Int(arc4random_uniform(99)+1)
        durumOutlet.stringValue="Lütfen tahmininizi yazıp Dene butonuna tıklayınız"
    }
    func applicationWillTerminate(aNotification: NSNotification) {
        // Insert code here to tear down your application
    }
}

Artık programımızı çalıştıralım. CMD+B projeyi derler. CMD+R projeyi çalıştırır. Aşağıdaki gibi çalışıyorsa işlem tamamdır. İyi kodlamalar.

coolwolf / 07/12/2014

Silverlight MD5 Fonksiyonu


public static string Md5(string duzMetin)
{
string _sonuc = "";
System.Text.UnicodeEncoding _ucEnc=new System.Text.UnicodeEncoding();
byte[] _kByte;
System.Security.Cryptography.HashAlgorithm _hAlg;
byte[] _sByte;
if (String.IsNullOrEmpty(duzMetin)) _kByte = _ucEnc.GetBytes("");
else _kByte = _ucEnc.GetBytes(duzMetin);
_hAlg = new System.Security.Cryptography.SHA256Managed();
_sByte = _hAlg.ComputeHash(_kByte);
_sonuc = Convert.ToBase64String(_sByte);
return _sonuc;
}

coolwolf / 23/11/2014

Türkçe Harf Sıralaması Destekli SQLite Admin

Kendi işlerimde kullanmak üzere geliştirdiğim basit programı sizlerle de paylaşmak istedim.
Bunu yazmak zorunda kalmamın sebebi Türkçe Harf sıralaması yapabilmek.
Diğer SQLite yönetim programları ile oluşturduğunuz veritabanlarında Türkçe Harfle sıralama yapabilmek için tabloları Sorgu penceresinden elle oluşturmak zorundasınız.
Çünkü Türkçe Harfe göre sıralama yapan fonksiyon şöyle çalışıyor :
Eğer ilgili field’ın tanımında UTF8CI görürse, bu field’tan dönen değerleri Türkçe sıralamaya tabi tutuyor. Eğer UTF8CI yazmazsa veritabanından geldiği gibi kullanıcıya sunuyor.
Bu özelliği kullanabilmek için C# programınıza şuradaki makalede tarif edilen işlemleri de yapmalısınız.
Program sadece basit ihtiyaçları görmek üzere yapıldığından birçok eksiği olması normaldir.
Talep ettiğiniz iyileştirme/düzeltme yada başka istekler programa eklenebilir. Bunun için bu yazıya yorum eklemeniz yeterlidir.
Fakat lütfen zamanlama konusunda ısrarlı olmayınız.
Sizin olduğu gibi, benim de evime ekmek götürmeye ihtiyacım var.
Bu programı arayıp bulduğunuza göre siz de bir yazılım geliştiricisiniz.
Anlayışla karşılayacağınızı umut ediyorum.
İndirmek için

[wpdm_package id=’4339′]

coolwolf / 04/08/2014

Seagate 1 TB Expansion External Drive nasıl sökülür

Seagate 1 TB Expansion External Drive cihazınız var, ama nasıl söküleceğini bir türlü bulamadınız (Benim gibi :))
P/N yani (Product Number) 9SE2A4-571 ve 9SF2A4-500.
Öncelikle bu cihazın güç kaynağının 12V 2 Amper olması gerektiğini belirtelim.
İşte size adımları :
1. Dikkatli bir şekilde, arka taraftan başlayarak, düz tornavida ile çentikleri boşa çıkarın.


Kapağı açtığınızda şu şekilde görünecektir :


2. Şimdi küçük yıldız vidayı çıkararak hard diski ortaya çıkaralım:


Vidayı söktükten sonra artık hard diski görüyor olacağız:


3. Hard diski sökmek için her iki tarafta bulunan 4 hard disk vidasını yıldız tornavida ile söküyoruz :


4. Son olarak, eğer hard diskin bağlandığı kartı da sökmek istiyorsanız; iki adet yıldız vidayı da söküp, kartı kendinize doğru çekiniz :

Hepsi bu kadar…
For english users:
If you want to disassemble Seagate 1 TB Expansion External Drive (P/N (Product Number) 9SE2A4-571 or 9SF2A4-500),
There is no extra explanation needed. Just follow the pictures by order.

coolwolf / 01/08/2014

Arduino ile Servo Motor Kullanımı

Aşağıdaki bağlantı şeklini kullanarak, basitçe bir potansiyometre ile servo motoru sağa ve sola hareket ettirebilirsiniz.


Programı da şu şekilde :

#include
Servo myServo;
int potPini=0;
int potDeger=0;
void setup()
{
  myServo.attach(8);
}
void loop()
{
  potDeger=analogRead(potPini);
  potDeger=map(potDeger,0,1023,0,179);
  myServo.write(potDeger);
  delay(15);
}

coolwolf / 01/08/2014

Arduino Seri İletişim

Arduino UNO’nun 0 ve 1 dijital pinleri doğal donanım seri iletişim yeteneğine sahiptir.
Serial.write(), Serial.print(), Serial.println() komutlarını kullanarak göndereceğiniz seri veriyi; Arduino IDE üzerinden Tools-> Serial Monitor kullanarak yada bu pinlere bağlayacağınız bir kablo ile bilgisayarınız üzerinden izleyebilirsiniz. Seri iletişim çift yönlü olduğundan Arduino’nuza bilgisayarınızdan da bilgi gönderebilirsiniz.
Dikkat etmeniz gereken nokta; setup() içerisinde tanımladığınız Serial.begin(9600); satırı ile bilgisayarınızın ayarları ile aynı olması. PuTTY veya benzeri bir program seri porttan veri okumanız için yeterli olacaktır. Arduino’muzu bilgisayar ile haberleştirerek, 5 nolu pinin durumunu bilgisayarda görmek için aşağıdaki kurulumu yapabiliriz:

Yukarıdaki bağlantı şekline göre Arduino üzerindeki 5 nolu dijital pin’in değerini seri arabirim üzerinden okumak için aşağıdaki programcığı kullanabiliriz.

int DURUM=0;
int sonDURUM=0;
void setup()
{
 Serial.begin(9600);
 pinMode(5,INPUT);
}
void loop()
{
 DURUM=digitalRead(5);
 if(DURUM!=sonDURUM)
 {
 Serial.print("Pin 5 durumu:");
 Serial.println(DURUM);
 sonDURUM=DURUM;
 }
}

Peki, bu iletişimi çift taraflı hale getirmek istesek… Önceki donanım kurulumunu aşağıdaki şekilde değiştirip, resmin hemen altında yer alan kodu kullanarak bilgisayardan gelen veriye göre ledimizi yakabiliriz. Led’i yakmak için SPACE tuşunu kullanınız.
Arduino Mega kullandığınızda Serial1, Serial2 ve Serial3 şeklinde kullanmayı unutmayın.

int DURUM=0;
int sonDURUM=0;
int gelenBayt = 0;
int ledDURUM=LOW;
void setup()
{
  Serial.begin(9600);
  pinMode(5,INPUT);
  pinMode(4,OUTPUT);
}
void loop()
{
  DURUM=digitalRead(5);
  if(DURUM!=sonDURUM)
  {
    Serial.print("Pin 5 durumu:");
    Serial.println(DURUM);
    sonDURUM=DURUM;
  }
  //Gelen bilgiyi okumaya çalışalım
  if (Serial.available() > 0)
  {
    gelenBayt = Serial.read();
    //32 space tuşu
    if(gelenBayt==32) ledDURUM=HIGH;
    else ledDURUM=LOW;
  }
  digitalWrite(4,ledDURUM);
}

coolwolf / 01/08/2014

Arduino Mega

Arduino Mega 2560 ve Arduino MEGA ADK adında iki farklı Mega çeşidi vardır.
Arduino Mega 2560 ATMEL Atmega2560 mikrokontrolcü kullanan bir geliştirme ortamıdır. Kısaca özelliklerini sıralayacak olursak:
*15’i PWM olarak kullanılabilecek 54 adet dijital giriş / çıkışı vardır,
*16 Analog Giriş,
*4 adet donanımsal seri port (UART),
*16MHz hız,
*ICSP başlığı,
*USB bağlantısı,
*power jack,
*SDA ve SCL pinleri,
*5V ile çalışır,
*Giriş pinlerine uygulayabileceğiniz voltaj 7-12V(Tavsiye edilen), 6-20V(Limit),
*248KB Flash (8’i bootloader için kullanıldığından 256 yerine 248 kullanılabilir.),
*SRAM 8KB,
*EEPROM 4KB,

Arduino Mega 2560, kendisinden önceki Arduino Mega’nın yerine geliştirilmiştir. Programlama ortamı diğer Arduino’larla aynı oluop, buradan indirilebilir.

Peki Mega ADK’nın farkı nedir ?
Android telefon ve tabletlere bağlamak için USB Host özelliği vardır, böylece Arduino Mega android kullanan herhangi bir cihaz ile iletişim kurabilir. Cihazı Android ile nasıl kullanacağınız hakkında detaylı bilgi Google’ın ADK sitesinden edinilebilir.
USB Host kütüphanesi Lauzus tarafından yazılmış olup, buradan indirilebilir.