Openmoko’nun bize getirdiği olağanüstü avantajlar

neo.jpgOpenmoko‘yu bilmeyenler için ilk önce tanıtayım. Openmoko tamamen açık olan, GNU/Linux alttabanına sahip bir platform. Buna da NEO adında dokunmatik ekrana sahip güzel bir telefon. En önemli özelliği ise açık olması ve geliştiriciler için çok güzel imkanlar sunmasıdır. Bu benim ne işime yarayacak diyenler var ise, ne gibi avantajı olduğunu şu şekilde anlatayım.

Bildiğiniz gibi 3 hafta önce iPhone adında bir telefon çıktı. Her ne kadar tüketici aşıkları bu telefonu yüzyılın telefonu olarak ilan etseler bile, hadinden fazla ekisklikleri vardır. Bunları şimdi saymaya başlamak istemiyorum bunun yerine Ethem Tolga’nın yazdığı “iPhone’daki eksiklikler” yazısına bakabilirsiniz. Fakat en önemli noktayı kaçırmayalım, iPhone’nun en kötü ve en berbat yani kapalı bir sistem olmasıdır. Hiç bir işe yaramayan kapalı bir sistem. Ne bir şey geliştirilebiliyor, ne de herhangi bir değişiklik yapılabiliyor. Eliniz kolunuz bağlı. Çök kötü bir duygu olsa gerek. #!/bin/blog’da bu konuya değinmişti.

İşte tam bu anda Openmoko devreye giriyor. Neo adındaki bu telefon açık kaynak kodlu bir sistem. Hem de tam alasından. Nasıl mı. Birincisi alet açık bir şekilde satılıyor. Öyle herhangi bir servis sağlayıcısına bağlılık yok. Aylık ödeme yok. Serbestsiniz yani. Openmoko’nun tüm parçalara ayrılmış belgesi bile var. Güzel bir dökümana sahip. Hangi parça ne anlama geliyor, ne ne içindir gibi sorular aklınızı karıştırmasın. Çünkü resmi dökümanlar var. Resimlerle beraber herşeyi görebilirsiniz. Bu kadar açık yani. Onun dışında açık bir sistemin de açık bir arayüzü vardır. Openmoko için yeni programlar geliştirilmesi için gerekli tüm yazılım bileşenleri mevcut. Yeni başlayanlar için oluşturulan belgesindeSim kartı nasıl takılır” gibi ibareler yerine, doğrudan nasıl shell bağlantısı oluşturulacağı yazılır.

neo1.jpgGördüğünüz gibi olanaklar o kadar geniş ki. Sınır tanımıyor. Devkit adında bir paket varki, içinde yok yok. Bilgisayar ile Openmoko arasından binbir türlü bağlantı kurabiliyorsunuz. İçindeki işletim sistem de tabi ki yukarıda bahsettiğim gibi GNU/Linux.

Gördüğünüz gibi bu kadar güzel, bu kadar kullanışlı, bu kadar bize avantaj sağlayan başka bir telefon yoktur. Openmoko platformu bu sene çığır atacak bir adımdır. Eminim çok muhteşem işler yapılabilecek bu telefon ile. Programlama becerilerim iyice artıktan sonra böyle bir cihaz almayı düşünüyorum. Hem okuduğum mesleğim’e uygun(Elektrik-Elektronik Müh.), hem de ilgi alanıma uyuyor. İleride edindiğim bilgiler ile de daha değişik şeyler yapmam mümkün olacaktır. Tek dejavantajı henüz alpha aşamasında olup, tüm şeyler rayına oturmamış olmasıdır. En az 1 sene daha geçmesi lazım tahminen.

C’de gets yerine fgets kullanın

Okulda verilen ödevi yapmaya çalışırken bu iki komut ile karşılaştım, sonra her ne kadar işime yaramadığını anladıysam da, ileride belki işime yarayabilir diye öğrenmiştim.İlk başta bir string tanımlayalım, 50 byte büyüklüğünde.

1
char string[50];

Ardından istediğiniz yere : gets(string); yazın. Sizden scanf komutu gibi stringi doldurmanızı isteyecek. Fakat boşluklar da dahil. Uzun yazılar için birebir yani. Gets’e benzer birde fgets komutu vardır. Gets yerine fgets kullanmak da daha mantıklıdır. Çünkü gets string’in büyüklüğünü gözardı ediyor. Nasıl yani ?

Şöyle ki, örneğin gets ile 110-120 karakterlik bir cümle yazdıysanız, programınız sağlıklı çalışmaz, hata verir. Gets tüm yazdığınız karakterleri kaydetmeye çalışacak. Fakat bizim string’e ayırdığımız alan sadece 50 byte. Bu yüzden fgets’kullanmak daha mantıklı. Kullanımı da şu şekilde:

1
fgets(string, sizeof(string), stdin);

Burada string bildiğimiz string, sizeof(string) ise string’in büyüklüğü(byte olarak), stdin de standart input, yani klavyeden girdiğimiz veri. Stdin yerine de dilerseniz dosya adını da yazabilirsiniz. sizeof(string) yerine 100, 53, 134 gibi sayılar da yazabilirsiniz. Size bağlı. Bu yüzden fgets’i kullanmak daha iyi, çünkü belirleyici bir sayı var, onun geçmesine izin vermiyor.

Not:(Yazıda ingilizce kelimelerin Türkçe karşılığını bilmediğim için aynen öyle yazdım, string gibi.)

C ile en büyük ve en küçük sayıları bulma

Kod’u çalıştırdıktan sonra, sayılar girmenizi isteyecek, sonra da en büyük ve en küçük sayıyı size gösterecek. İnternet’de çok araştırmıştım fakat bir çözüme ulaşamamıştım. “Largest Smallest Number C Programming” diye aratınca da pek bir şey bulamadım. Başkaları arayınca burayı bulsunlar diye yazdım kelimeleri :) En son çare’yi Freenode’a ##c kanalında buldum. Pragma takma adlı bir kişi bir iki yerde yardım etti bana. Buraya yazdıklarımı bilmezse dahi, kendisine teşekkür ederim.

#include 
#define Sentinel 0

int largest(int max, int a);
int smallest(int min,int b);

int main(void)
{
	int maximum,minimum,num;	

	printf("\nInput the number(Enter %d for exit): ", Sentinel); 	scanf("%d", &num);

	maximum = num;
	minimum = num;

	while (num != Sentinel) {
		maximum = largest(maximum,num);
		minimum	= smallest(minimum,num);
		printf("Input the number(Enter %d for exit): ",Sentinel); 	scanf("%d", &num);
	}

	printf("\nLargest number: %d\n", maximum);
	printf("Smallest number: %d\n\n", minimum); 

	return (0);
}

//Get numbers and compare, return the largest
int largest(int max, int a)
{
	if ( max < a)	{
		return (a);
	}
	else 	{
		return (max);
	}
}

//Get numbers and compare, return the smallest
int smallest(int min,int b)
{
	if ( min > b)		{
		return (b);
	}
	else {
		return (min);
	}
}

Not:(Çok basit olduğunu bliliyorum fakat bulamamıştım belki başkaların işine yarar)
Not 2: Programlama adında yeni bir kategori açtım.