28 Kasım 2012 Çarşamba

Üniversitelerde Microsofta HAYIR

Merhabalar; Ön not : Uzun zamandır yapmam gerekeni ancak yaptığımı farkediyorum. Üniversitelerimizde hem gereksiz lisans ücreti, hem gereksiz tekelcilik hem de bilgi güvenliği ve virüs konularından dolayı Microsoft'a hayır kampanyası başlatıyoruz. Amacımız eğitimi daha ucuz hale getirmek, ve en önemlisi oluşturulan tekelciliği kırmaktır. Eğitimde bilinç seviyesini yukarı çekerek, bilinçsizce öğretilen Microsoft C#, Sql Server gibi gereçleri "ZORUNLU" olarak öğretilmesini istemiyoruz! Öğrenci ne öğreniyorsa, ileride de onu kullanmak isteyeceğinden dolayı, bu işi daha bağımsız hale getirmeliyiz. Linux dağıtımlarını hayatı boyunca kullanmamış kişiler Microsoft'un daha iyi olduğunu iddia edebiliyor. Burada belirli bir çıkar ilişkisi olup olmadığı geliyor akıllara. Bu kampanyamıza bir imza ile lütfen siz de katkıda bulunun, Türkiye'ye katkıda bulunun. Bizlere destek olun. İmza verin. Devamı için : Üniversitelerde Microsofta HAYIR

27 Kasım 2012 Salı

Chrome ve lanet olası onbellegi

Chrome tarayıcısı kullanan bir geliştirici iseniz, işiniz gerçekten zor. Burada, herşeyi önbellekleyerek, daha hızlı getirmeye çalışan bir aletten bahsediyoruz. Başlığı da gördüğünüz gibi, sinirliyim. Tüm ekip arkadaşlarım da sinirli bu konuda. Diyelim ki sitenizin ön yüzünde çağırdığınız bir image dosyasını aynı isimle değiştirdiniz. Veya css dosyanızda yazmış olduğunuz bir css kuralını düzenlediniz. Uyguladıklarınız : Sayfayı yeniden yükleme : Normalde developement ortamında expire cache kullanmıyorsunzdur. Bu noktada f5 yapınca içeriğin değişip değişmediğine göre yeniden yüklenmesi gerekir. Chrome bunu yapmıyor. Sayfayı CTRL + F5 (Pragma : no-cache) ile çağırmanız : Bu işlem ile server'a "dosya bende değişmese de illa yenisini gönder" demiş oluyoruz. Ancak gelin görün ki Chrome bunu da yemiyor. Çözüm: CTRL + Shift + Delete e basıp, tüm önbelleği temizlerseniz(bir süredir temizlemiyorsanız bu işlem yaklaşık 1 dk sürüyor benim) çözüme ulaşabiliyorsunuz.   Ek olarak : Eğer geliştiriciyseniz, Chrome'da F12 ye basınca açılan geliştirici gereçlerindeki ayarlar kısmında (sağ alttaki dişli işaretine tıklayınca açılır) bu kısımdan çeşitli önbellekleme ayarlarını devre dışı bırakabilirsiniz. Ancak bu da sizi kesmeyecektir. Emin olun. Devamı için : Chrome ve lanet olası onbellegi

Php ignore_user_abort fonksiyonu

Çook uzun süren bir php fonksiyonu çalıştıran bir URL'niz var. Ancak istemci (tarayıcı-browser) kapansa bile bu işlemin devam etmesini istiyorsunuz. Örneğin 1 milyon datanın patchlenmesi işlemi (kim bunu URL'den tetikler ki?) Bir şekilde böyle bir ihtiyacınız var diyelim. Bu durumda, ne yapmalısınız? Öyleyse sizin
ignore_user_abort(true);
komutuna ihtiyacınız var. Bu komut ile birlikte
set_time_limit(0); 
verirseniz de kodunuz; çalıştıran istemci veya süre kısıtlaması olmadan sonsuza dek çalışacaktır. http://php.net/manual/tr/function.ignore-user-abort.php adresinden de okumaya devam edebilirsiniz. Devamı için : Php ignore_user_abort fonksiyonu

26 Kasım 2012 Pazartesi

Zend guard license is not valid hatasi

Zend Guard kullanıyorsanız, mevcut lisansınız bittiğinde, zend.com dan lisans uzatma işlemi yapsanız dahi, lisans dosyasını yüklerken  "license is not valid" hatası alıyorsanız, lütfen zend guard (benimki zend guard 5.5.0) programınızı yonetici olarak çalıştırın. Bu noktada lisanslama işleminde administrative yetkiye ihtiyacınız olduğundan hata veriyordur. 3 gündür zend.com dan destek beklediğim konu, bu kadar basit bir olaymış :) Umarım işinize yarar. Devamı için : Zend guard license is not valid hatasi

23 Kasım 2012 Cuma

Linuxta Wget ile Ftp den klasor cekmek

Linux bir sistem kullanıyorsanız, FTP den bazı şeyleri düzenli olarak çekmeniz gerekiyorsa, aşağıdaki şekilde linux komut satırından bir ftp klasörünü topluca çekebilirsiniz. Aşağıdaki komutta 1.2.3.4 ipsinden ftp hesabındaki tüm klasörleri çekmesin söylüyoruz. (-r komutu recursive , yani klasörü içindekilerle birlikte çeker) Not : {username} ve {password} yerine size tahsis edilen bilgileri girmelisiniz.  
  wget -r ftp://1.2.3.4/ --user {username} --password {password}  
Devamı için : Linuxta Wget ile Ftp den klasor cekmek

20 Kasım 2012 Salı

Deloitte Teknoloji Fast 50 Turkiye 2012 Sonuclari

Deloitte Teknoloji Fast 50 Türkiye 2012 Programı kapsamında son 5 yıllık büyüme performansları ışığında seçilen teknoloji şirketleri, Sabancı Müzesi'nde The Seed Etkinlik Merkezi'nde düzenlenen törenle ödüllerine ulaştı. Bu sonuçlara göre Yazılım Departmanı Yöneticisi olduğum IdeaSoft 4. olarak bizlere emeğimizin karşılığında haklı bir gurur yaşattı. Okumaya devam linki : http://www.btnet.com.tr/60894-teknolojide-en-iyiler.html   Devamı için : Deloitte Teknoloji Fast 50 Turkiye 2012 Sonuclari

Maili Post ile gondermek - Cloudmailin

Cloudmailin logo Ara sıra mail ile haberleşme konularında, çeşitli tetik (trigger) metodları yaratmak istediğimizde, biri bir yere mail atacağına keşke HTTP POST isteği yapsa dediğinizi duyar gibiyim.  Bu noktada tam "böyle bir hizmeti nasıl yaparım?" ı araştırmaya başlayacakken, ilk araştırmamda bu siteyi buldum. Cloudmailin.com işte tam burada devreye giriyor, ve mail olarak attığınız datayı size HTTP POST isteği ile , hem de 4 farklı seçenekte (Original,JSON,Multipart,Raw format) sunuyor. Yapmanız gereken üye olmak ve mailin HTTP POST isteği olarak gönderilmesini istediğiniz URL adresini belirlemek. Mail adresini sistem zaten otomatik olarak belirleyecek ve size verecek. Ancak tamamen ücretsiz değil, sadece deneme amaçlı aylık küçük bir sayıda maili ücretsiz olarak yolluyor. Bir mail adresinize gelen mailleri otomatik olarak burada oluşturduğunuz maile yönlendirirseniz mantıken, tüm mailleriniz size HTTP yoluyla iletilmiş olacak ki, bu noktada yapacaklarınız sizin yaratılığınıza kalmış oluyor. Teknik destek hizmeti veren firmaların ilgisini çekebileceğini düşünüyorum.   Devamı için : Maili Post ile gondermek - Cloudmailin

17 Kasım 2012 Cumartesi

network - LLDP (Link Layer Discovery Protocol) nedir?

Networklerde cihazların ilişkilerini bulabilmek için cihazların barındırdığı network discovery protokolleri kullanırız. LLDP (Link Layer Discovery Protocol), ethernet networklerinde bridge'lerin, wireless access point'lerin vs. yayın yaptıkları ve yayınlarını aldıkları ilişkili cihazlar hakkında bilgi sahibi oldukları bir metoddur. Cihazlar arasındaki bilgiyi gösterir. Yani bir veri-bağlantı katmanı protokolüdür. LLDP, MAC (Media Access Control) katmanının üzerinde çalışır. Bu yüzden bir MAC servisini çalıştıran herhangi bir ağ cihazı üzerinde kullanılabilir. LLDP mesajları kesin bilgileri garantilemek için pediyodik aralıklarla gönderilir. Bu zaman aralığı kullanıcının belirlerdiği TTL (Time To Live) değeridir. TTL default olarak 120 saniye olarak tanımlanmıştır. Cihazların kullanım durumlarına göre kullanıcı tarafından değiştirilebilir. Devamı için : network - LLDP (Link Layer Discovery Protocol) nedir?

13 Kasım 2012 Salı

Mysql baska tabloda kaydi olmayan kayitlari silmek

Veritabanınızdan zaman zaman aktif olmayan kişileri, hiç bir işe yaramayan verileri silmek istiyor olabilirsiniz. Bu noktada konuyu bir örnek ile açıklayacağım ; Diyelim ki bir üyeler, bir de yorumlar tablomuz olsun. Yorumu olmayan üyeleri silmek isteyen bir query yazmak istiyoruz diyelim. Bu durumda aşağıdaki query ile bu işi yapabiliyoruz. Subquery ile yorumları çekip bunları NOT EXIST ile denetliyoruz. Sonuç tam da istediğimiz gibi.
  SELECT u.uye_id FROM `uyeler` u WHERE NOT EXISTS (SELECT yorum_id FROM yorumlar y WHERE y.uye_id = u.uye_id)  
Çok fazla detaya girmeden anlattım, anlamayan olursa tabi ki detaylıca yardım edebilirim. Umarım işinize yarayacaktır. Devamı için : Mysql baska tabloda kaydi olmayan kayitlari silmek

12 Kasım 2012 Pazartesi

PayPal Maestro Card destegi

Paypal'ın bugün bir bilgilendirme maili ile duyurduğu konuyu sizlere aktarmak istiyorum,
Şimdi PayPal ile online alışveriş yaparken daha fazla ödeme seçeneğiniz var. PayPal hesabınıza Maestro banka kartınızı ekleyin ve harcamalarınızı banka hesabınızdan dilediğinizce yapma özgürlügünü yaşayın. PayPal'da Maestro kartınız ile ister dizüstü bilgisayarınızdan, ister akıllı telefonunuzdan, ister tabletinizden kolay ve güvenli alışverişin keyfini çıkarın.
Maestro card'ın normal kartlardan çeşitli farklılıkları var. Uzun bir süredir, maestro card desteği beklenen paypal, bu problemi de gidermiş oldu. Devamı için : PayPal Maestro Card destegi

10 Kasım 2012 Cumartesi

Java JAR Dosyasi Yaratma - Bolum 2

Daha önceki yazımda, JAR dosyasının komut satırından nasıl yaratılacağından bahsetmiştim. Bu yazıda da Java için geliştirme yapılan Eclipse ve Netbeans IDE'lerinde nasıl JAR dosyası yaratılacağını göstereceğim.

Eclipse

  1. Package Explorer ekranında jar dosyasını oluşturmak istediğimiz projeye sağ tıklıyoruz. Açılan menüden Export seçeneğine tıklıyoruz.
  2. Açılan ekranda Java altında JAR File seçeneğini seçerek Next diyoruz.
  3. Açılan ekranda, istenilen proje ve paketleri seçiyoruz. Alttaki seçeneklerde, oluşturulan class dosyalarını ve kaynakları eklemek için "Export generated class files and resources" seçeneğini, kaynak dosyaları eklemek için "Export java source files and resources" seçeneğini seçiyoruz. JAR File bölümünde jar dosyasını oluşturmak istediğimiz yeri seçiyoruz. Seçenekler kısmında, eğer jar dosyasını sıkıştırmak istiyorsak "Compress the contents of jar file" seçeneğini, dizinlendirmelerin olduğu gibi eklenmesini istiyorsak "Add directory entries" seçeneğini, herhangi bir uyarı vermeden eski jar dosyası üzerine yazmak istiyorsak "Overwrite existing files without warning" seçeneğini seçiyoruz ve Next diyoruz.
  4. Açılan ekranda, Next diyoruz.
  5. Açılan ekranda, eğer manifest dosyasının otomatik yaratılmasını istiyorsak, "Generate manifest file" seçeneğini, kendi oluşturduğumuz manifest dosyasını eklemek istiyorsak, "Use existing manifest from workspace" seçeneğini seçerek manifest dosyasının yerini seçiyoruz. Eğer, projemiz bir kütüphane değil de çalıştırılabilir bir uygulama olacak ise "Main class" seçeneğinden uygulamanın hangi sınıfdan başlayacağını seçiyoruz (sınıfın main metoduna sahip olması gerekiyor).
Not: İşlemler Eclipse 4.2 Juno versiyonunda gerçekleştirilmiştir.

Netbeans

Netbeans'te işlemler biraz daha kolay ama seçenekler de Eclipse'e göre daha az.
  1. Projects ekranında jar dosyasını oluşturmak istediğimiz projeye sağ tıklıyoruz. Açılan menüden Properties seçeneğine tıklıyoruz.
  2. Açılan ekranda Build > Packaging'e tıklıyoruz. Sağ tarafta "JAR File" kısmında dosyanın oluşacağı klasör belirtiliyor (proje klasörünün altında). "Exclude From JAR File" kısmında jar dosyasına eklemek istemediğimiz dosyaları yazıyoruz. Örnekte, tüm java ve form uzantılı dosyalara eklenmeyecek şekilde seçim yapılmış. Eğer, jar dosyasını sıkıştırmak istiyorsak, "Compress JAR file" seçeneğini, eğer proje derlendikten sonra jar dosyasının otomatik olarak oluşmasını istiyorsak (bu örnekte bu şekilde oluşturacağız), "Build JAR after Compiling" seçeneğini, eğer kullandığımız kütüphaneleri de jar dosyasına eklemek istiyorsak, "Copy dependent libraries" seçeneğini seçerek OK'ye tıklıyoruz.
  3. Projects ekranında jar dosyasını oluşturmak istediğimiz projeye sağ tıklıyoruz. Açılan menüden Clean and Build seçeneğine tıklıyoruz. Bu işlemden sonra jar dosyası "proje yolu/dist/" klasörü altında oluşmuş oluyor.
Not: İşlemler Netbeans 7.0.2 versiyonunda gerçekleştirilmiştir. Herkese iyi çalışmalar.   Devamı için : Java JAR Dosyasi Yaratma - Bolum 2

7 Kasım 2012 Çarşamba

Mysql Tekrar Eden Verilerin Hepsini Listelemek

Tekrar eden (duplicate) verileri bulmak için bu yazımızı okuyabilirsiniz. Ancak bu verilerin hepsini bir şekilde düzenlemeniz gerekirse, sizden bunların listesi istenecektir. Aşağıdaki Query ile, list tablosundaki aynı email kaydına sahip (aynı email'in en az 2 kişide olması durumu) customer_id leri ve emailleri , emaile göre sıralayarak listeyelen bir sorgu bulunmaktadır.
SELECT list.email, list.customer_id  FROM list  INNER JOIN (    SELECT email    FROM list    GROUP BY email    HAVING COUNT( customer_id ) >1  ) duplicate ON list.email = duplicate.email  ORDER BY list.email ASC
  
Umarım işinize yarar.
Devamı için : Mysql Tekrar Eden Verilerin Hepsini Listelemek

bson - binary json nedir?

Bson, yani Binary JSON, JSON'ların binary şekilde encode edilmiş halidir. Bson, tıpkı json gibi, içinde array ve döküman barındırırlar. Temelde 4 tipten oluşurlar, bunlar;
byte 1 byte (8-bits)
int32 4 bytes (32-bit signed integer)
int64 8 bytes (64-bit signed integer)
double 8 bytes (64-bit IEEE 754 floating point)
Çok küçük bir örnek vermek gerekirse;
  {"hello": "world"}	→	"\x16\x00\x00\x00\x02hello\x00\x06\x00\x00\x00world\x00\x00"  
Bu adresten, başka örneklere ve içerisinde saklanan söz dizimlerine ulaşabilirsiniz. Önemli olan bir nokta, MongoDB, ağ ve disk yönetiminde BSON kullanmaktadır. Çoğu dil için, MongoDB'nin driverı mevcuttur (C, C++, Java, Perl, PHP, Python, Perl, Ruby vs.) Onların listesine de buradan ulaşabilirsiniz. İyi çalışmalar. Devamı için : bson - binary json nedir?

6 Kasım 2012 Salı

Corona Debugger Kullanımı

Corona, Android ve IOS ortamları için uygulama (daha ziyade oyun) yazmaya yarayan bir yazılım geliştirme kitidir (Software Development Kit - SDK). Yazının konusu ise Corona'nın debug tool'unun nasıl kullanılacağı. Genelde SDK'lar için kullandığımız IDE'lerde, debugger gömülü olarak bulunur. Corona'nın kendi IDE'si olmadığı ve indirdiğimiz SDK paketi ile beraber gelen 3rd party IDE de ücretli olduğu için, Corona ile yazılım yaparken Geany text editörünü kullanıyorum(herhangi biri kullanılabilir ancak LUA programlama dilini tanıyan bir text editör tercih edilse daha iyi). Tabi firmaya ait IDE kullanmamanın en büyük sıkıntılarından biri de debug işlemini yapamamaktır. Ancak Corona'nın benim de bir süre sonradan keşfettiğim command prompt ile çalışan bir debugger'ı mevcut. Yazıda debugger komutları ile ilgili birkaç örnek vereceğim. Corona Debugger'ı çalıştırmak için Corona SDK klasörünüzü açıp, Corona Debugger dosyasını açıyoruz. Bir simülasyon penceresi, debugger'ın çalıştığı bir dos penceresi ve bir de simülatör çıktılarını görebileceğiniz Corona Simülatör penceresi açılır. Simülasyon penceresini açıp File - Open Project'ten projenizin main dosyasını çalıştırdıktan sonra debugger penceresine döneceğiz. Debugger'ın komutlarını görmek için komut satırına help yazıp enter'a basıyoruz. Burada zaten komutların ne işe yaradığını kısaca söylüyor. Biz birkaç örnek verip yazıyı bitirelim. setb komutu: İstenen dosyanın istenen satırına breakpoint koymaya yarar. "setb" ya da yalnızca "b" olarak kullanılabilir. "setb dosyaadi satir" şeklinde yazılır. Örnek komut: setb screen2.lua 275 Bu komut ile screen2.lua dosyasında 275. satıra bir breakpoint koyuyoruz. run: Bu komut ile programı işletmeye başlatıyoruz. Mesela yukarıdaki breakpoint'i koyduktan sonra programın bu noktaya gelene kadar işlemesi için kullanabilir. Program koyduğumuz breakpoint'e geldiğinde durur. dump: İstenen değişkenin o andaki durumunu görmeye yarar. "dump degisken" şeklinde kullanılır. Örnek komut: dump randomPlace Bu komut ile bulunulan noktada bu değişkenin değerinin ne olduğunu görebiliyoruz. delb: Koyduğumuz breakpointi bu komut ile kaldırıyoruz. Hangi breakpoint olduğunu belirtmek için setb'de yazdığımız gibi dosya adı ve satırını yazıyoruz. Örnek komut: delb screen2.lua 275 delallb: Koyduğumuz tüm breakpoint'leri tek komut ile bu komutu kullanarak kaldırıyoruz. setw, delw, delallw: Watch ifadesi ekliyoruz, siliyoruz, hepsini siliyoruz. step: İşlenen komutlarda bir satır ilerlemenizi sağlar. Sadece si yazmanız da yeterli. over: İşlenen komutlarda yine bir satır ilerlemenizi sağlar ancak işleyeceğiniz satır bir fonksiyon ise fonksiyona dallanmaz, işleyip döner ve bir satır devam eder. over yerine so yazmanız da yeterli. exit: Debugger'dan çıkmanızı sağlar. Yukarıda bahsettiğim komutlar haricindeki komutları önceden de söylediğim gibi help yazarak birer satırlık açıklamalar haricinde görebilirsiniz. Kolay gelsin. Devamı için : Corona Debugger Kullanımı

MySQL Tekrar Eden Verileri Bulmak

Merhaba, Binlerce satır verinizin bulunduğu bir tabloda birbiri ile aynı olan satırları bulmanız gerekebilir. Bunun için aşağıya yazacağım SQL cümleciğini kendinize göre düzenleyerek çalıştırabilirsiniz. SELECT column FROM table GROUP BY reference_column HAVING COUNT( * ) >1 column : buraya görüntülemek istediğiniz sutunları yazabilirsiniz veya tümü için * yazabilirsiniz. table : işlem yapmak istediğiniz tabloyu yazınız reference_column : aynı dataların olup olmadığının kontrol edileceği sutun.   Umarım işinize yarar.     Devamı için : MySQL Tekrar Eden Verileri Bulmak

3 Kasım 2012 Cumartesi

FTP den yanlislikla .svn veya .git klasorunu da yuklemek

Versiyon kontrol sistemi kullanmanın avantajlarından şu yazımızda bahsetmiştik. Ancak bunu bilinçsiz kullanmanın epey zararı olabiliyor. Şurada okuduğumuz yazı da belirtiyor ki, FTP den dosya yüklerken , .svn klasörlerini ve içeriklerini de yanlışlıkla yükleme ihtimalimize karşı, (veya .git klasörünü) projemizin kaynak kodlarının tamamının çalınma riski oluşuyor. Hatta risk değil bu, direkt buyrun alın diyorsunuz. Bu klasörlerin içinde versiyon kontrol sistemi dahilinde olan kaynak kodların tamamı ve her versiyonu bulunuyor. SVN 'de FTP den atacaksanız export işlemi yapıp, projeyi SVN dosyalarından arındırmanız gerekiyor. Google'da şu aramayı yaparsanız eğer, zaten dediğimi anlayacaksınız : ".svn" intitle:"Index of"  Bu yüzden, projelerinizde versiyon kontrol sistemlerini kullanıyorsanız (kullanın tabi ki..) , bu duruma özellikle dikkat ediniz. Sonradan başınız yanmasın. Devamı için : FTP den yanlislikla .svn veya .git klasorunu da yuklemek