Category Archives: Genel

Creating Local CentOS Repository

In many Linux distros, package management tools are utilized for getting new packages and their dependencies. They are also used for  In environments that has many boxes, updating packages and installing new packages may lead tremendous bandwidth consumption. In order to avoid this, it is possible to create a local CentOS Repository and add it all the machines. By using this ability, all other machines can get packages locally, means without consuming any bandwidth from outside Internet connection.

Since traffic inside a network for a limited time for updates does not lead to a problem for many local networks, it results in a observable gain in bandwidth usage of Internet connection. Especially, when local network and number of boxes getting bigger, the ratio is becoming more and more profitable. Continue reading Creating Local CentOS Repository

Kivy Course #4 – Box Layout Example

This part is continuing with BoxLayout class of Kivy. BoxLayout is another common layout which is used frequently. It supports both vertical and horizontal orientations and size hints to spare the widgets at specific ratios.

The Python code is:

And the Kivy Language file is:

More explained documentation will come soon.

Multiple Sliders Controlling Background Color in Kivy

In this example, three independent sliders are used to control background color and they are in order of red, green and blue. All the values are written at the buttom of the application window in the precision of 0.001. You can change the precision in .kv file if you want. The color is sent by Kivy’s automatic property binding mechanism to Canvas Color and Label.

Continue reading Multiple Sliders Controlling Background Color in Kivy

Python ile Metinlerde Frekans Analizi

Elimizdeki bir metinde hangi karakterlerin olduğunu, hangi karakterin kaç kere geçtiğini ve metnin yüzde kaçını oluşturduğunu ölçmek için kullanabileceğimiz bir sınıf oluşturdum. Sınıfın yaptığı, Python’da yer alan veri yapılarını kullanarak girilen metnin frekans analizini yapmak.

Ne işe yaradığına geleyim. Program herhangi bir jargonda kullanılan harf, rakam ve karakterlerin analizini yapıyor. Yani mesela çocuk hikayelerini verdiğinizde alıntılar çok olduğu için tırnak işaretlerinin frekansını ve yüzdesini bazı harflere göre daha yüksek bulurken, sayıların az olmasını bekleriz. İşte bu analizi yapıp, hangi harf daha çok kullanılıyor diye bir veri elde ediyoruz. Bunu yerine koyma ile şifrelenmiş(Substitution) metinlerin orijinal hallerini elimizde sadece şifreli metin varken bulurken kullanıyoruz. Continue reading Python ile Metinlerde Frekans Analizi

Matlab ile Inline Fonksiyonlar

Uzun zamandır Matlab hakkında bir şeyler yazmamıştım. Hazır bir ödev için lazım olunca, Inline fonksiyonların Matlab üzerinde nasıl kullanıldığından bir örnekle bu yazıda bahsedeyim.

İlk olarak, inline fonksiyonu ne için kullandığımıza bir bakalım. Normalde Matlab ile fonksiyon tanımlamak için bir .m dosyası oluşturup içerisine uygun formatta bir fonksiyon tanımlar, dosyayı fonksiyon adıyla kaydettikten sonra eğer path’e ekliyse bu fonksiyonu çalıştırabiliyor olurduk. Bunda bir değişiklik yok. Inline fonksiyonlar bize bunu yapmadan, işimizi göreceğimiz tek satırda ifade edilebilen fonksiyonlar sağlıyor.

Matlab dökümantasyonuna göre, inline fonksiyonlar yerini anonymous fonksiyonlara bırakıyor. (http://www.mathworks.com/help/matlab/ref/inline.html) Continue reading Matlab ile Inline Fonksiyonlar

Programlama Dili Seçimi

Youtube’da yer alan Python derslerinden dolayı olsa gerek, birçok kişi Facebook üzerinden veya mail ile dilin ne işe yaradığı hakkında sorular sormaya başladı. Bunun üzerine ben de toptan bir cevap niteliğinde bu yazıyı yazma gereği duydum.

İlk olarak, “en iyi programlama dili” diye bir şey yok. Bulunduğunuz gün içerisinde yapmanız gereken işi en hızlı ve en verimli şekilde yapan dil, o gün sizin için en iyi programlama dilidir. Yani Python kodu rahat yazılıyor diye mikrodenetleyiciye Python çekirdeğini gömmeye çalışmak mantıklı bir düşünce değil(şu anki mikrodenetleyiciler için). Diğer yandan, görsel basit bir hesap makinesi yazıp kendi işinize özel basit birkaç fonksiyon ekleyecekseniz de C’nin kahrını çekmenize gerek yok.

Kim nerede görüyor bilmiyorum ama, son zamanlarda oyun programlamayla ilgili de oldukça yoğun şekilde soru geliyor. Açıp elle tutulur bir oyun yazmışlığım yok ama tek dille sınırlı kalınmıyor bu işlerde. Ayrıca, kodun büyük çoğunluğunun C++ Continue reading Programlama Dili Seçimi

Obligasyon

Uzun zamandır teknik içerikli olmayan bir yazı yazmamıştım bu bloga. En az bir tane yazmak istedim, çünkü aklımda konu birikti. Bu yazının konusu “obligasyon”. Sebebi ise bir türlü anlam veremediğim İngilizce kelimelerin Türkçe’de kullanılması.

Kullanılması demişken, “neden her kelimeye Türkçe karşılık bulup kullanmıyoruz” gibi bir yaklaşımla yazmıyorum bu yazıyı. Bu yazının çıkış noktası “obligasyon”.

Bu kelimeyi nerede ve kimden duyduğumu hatırlamıyorum. Ama bir kelimenin Türkçe’de yıllardır kullanılan, herkes tarafından anlaşılan bir karşılığı varken, neden “obligasyon”. Belki de şöyle sormak lazım, onu kullanan muhterem insan, neden “zorunluluk” demedi? Ya da zorunluluk demek ona neden zor geldi?

Bazen öyle bir kullanıyorlar ki, İngilizce’sini bildiğim bir kelimeyi bile anlayamıyorum. Oldu olacak bilgisayar yerine de “kompitör” gibi bir şey zırvalansın. Zor değil, Türkçe düşünen bir insanın, düşündüğü gibi konuşması “obligasyon” demesinden çok daha basit.

Tabi tek kelime üzerinden gitmiyorum. Kimisi derdini öyle bir Türkçe ile anlatıyor ki, %25 Türkçe %50 İngilizce, kalan %25’i ise hala çözemediğim farkı dünya dillerinden derlenmiş kelimelerden oluşuyor.

Neden eleştiriyorum onu da söyleyeyim. Genelde, en azından benim açımdan, zevkine değil de, derdimizi anlatmak için konuşuyoruz. Karşıdakinin anlattığımız şeyi anlamıyor olması bizim için bir şey ifade etmemeli(yani bundan ego tatmini amaçlayan varsa, bilemem). Karşıdakinin düşüncemizi anlayabilmesi içinse, onun ve bizim bildiğimiz bir dil gerekli. Ben “obligasyon” u ve bütün türevlerini anlamıyorum, duymak da istemiyorum, bu yazı sadece bunun içindi.

Yorum Satırı ve Değişken İsmi Kullanımı Hakkında

Geçenlerde bir raporun bir kısmını okumuştum, özgür yazılımcılar için özetle şöyle diyordu: bu kişilerin kodlama bilgileri oldukça gelişmiştir fakat görsel arayüzlerle ve dökümantasyonla pek araları yoktur. Başlığı ya da yazarı hakkında hiçbir şey hatırlamadığım için kaynak gösteremiyorum, bilen varsa lütfen söylesin ekleyeyim.

Bu yazıda yorum satırları konusuna değinmek istiyorum. Koskoca program ya da ufacık örnek bir kod yazıyor olmamızın bir önemi olmadan. Bir kodu sadece kendimiz kullanıcaz, kimse zaten görmeyecek diye yazıyorsanız, istediğiniz ne varsa üzerinde uygulayın, bu yazı o kodu hedef almıyor baştan söyleyeyim.

Şimdi gelelim projelere, örnek kodlara ya da başka insanların göreceği şekilde yazılan herhangi bir koda. Açık kaynak fikrini benimsemiş olmak, ben paramı kazanayım, kodu da açayım işte açık kaynak olsun destek vermiş olayım demek değildir. Açık kaynak yazıyor olmak, gerçekten seviyor olmak, sürekli bir şeyleri geliştirip insanların kullanımına sunuyor olmak da değildir. Açık kaynak bir projede kar amacı gütmeden çalışmak, takım ruhunu yakalamak da değildir.

Bir iyilik yapıyorsanız, tam yapın.

2 satır kod yazıyorsanız, insanlar o kodu okuyacaksa, hakkını verin. O kodun ne olduğunu yazın. 2 tane yorum satırı yazın. Bakın aynı işi yapan 2 kod veriyorum ve örnekle açıklıyorum derdimi:

İlk kodumuz, buna gizemli adını verelim:(kodların ikisi de Python3 için yazılmıştır)

Şimdi ikinci kodumuzu görelim. Buna da gizemsiz adını verelim.

Şimdi iki kod arasındaki farka bakın. İkinci kodu görmeden birinciye uğraşırsanız, programın ne yaptığını anlamanızın dışında, kodtaki değişkenlerin isimlerini aklınızda tutmanız, bilmediğiniz bir yapı varsa nasıl kullanıldığını anlamanız vs. gerekecek. Kısacası durduk yere kafanızı 1 yerine onlarca işle meşgul edeceksiniz. Ufacık bir kod parçası için o kadar yorulmanız gerekecek.

İkinci koda bakalım. En baştan söyleyeyim, bu kodtaki açıklamaların vs. de yeterli olduğunu düşünmüyorum. Ayrıca değişken isimleri de İngilizce olabilirdi, önceki kodlardan birini hazır aldığım için bu şekilde. Her satırda ne yaptığımız belirlenmiş.

Yorum satırı sizin programınızı yavaşlatmayacak, daha kötü bir programcı olmanıza sebep olmayacak üstüne daha iyi bir programcı olmanızı sağlayacak. Kodlarınıza bakan insanlar işlerini halledebilecek, bu adam ne yapmış burda diye düşünüp durmayacak. Bir kod bakacaklarında önce sizin kaynaklarınızı tercih edecekler(eğer isteğiniz buysa, ama amaç bu değil).

Değişken isimlerine de bir bakalım. İngilizce olsa tabii daha iyi olurdu ama, en azından Türkçe yazılmış, yabancıya yazmıyorsak sıkıntı yok. Her değişkenin ne yaptığı belli, nerde kullanıldığı açık. Kısacası bir problem yok.

2 satır yorum var diye uzun kod yazmış olmazsınız, eliniz de eskimez. Madem açık kaynak yazıyoruz, madem yığınla ilerlemeden bahsediyoruz, insanların bütün zamanını sizin projenizi anlamak için değil, geliştirmek için kullanmasına yardımcı olun. Bir işi yapıyorsak, elimizden geldiğince profesyonel olarak yapalım.

“6 ay sonra kendi kodunuza baktığınızda” muhabbetine farkettiyseniz henüz girmedim. Neden? Çünkü bu tür yazmaya alışık biri oturup kendi kodunu açıp uzun uzun incelemeyi de adet edinmiştir. Belki de Stockholm kokuları geliyordur kim bilir?

[Çözüm] Result Code: NS_ERROR_FAILURE (0x80004005) Virtualbox Hatası

Linux Mint 14 altında Virtualbox çalıştırmak istediğimde şöyle bir hata almıştım:

Çözümü şu adreste belirtilmiş. Kısaca şunu yazmak yetiyor.

Ben kernel güncellediğimde aldım bu hatayı. Yeni kernelde bu işlem de hata veriyor, Virtualbox’un kendi sitesinden yeni sürümünü kurup bu komutu vermek büyük ihtimalle o kernelle de uyumlu çalışmasını sağlayacaktır. Ben yeni kernel ile uğraşmadan eskisiyle başlatıp bu komutu kullanarak sorunu çözdüm.