« Posts tagged c#

{iş ilanı} Mobil Uygulama Geliştirme Uzmanı

Nokta.com Ankara ofisimize, tam zamanlı olarak, mobil geliştirme ekibimizin içinde yer alacak, öğrenmeye hevesli, yeni teknolojileri ve gündemi takip eden, mobil dünyada gerçekleştirebilecek hayalleri olan ve bu yönde kendisini her zaman geliştiren takım çalışmasına uygun ekip arkadaşı arıyoruz.

Genel Nitelikler:
Mobil cihazlar için uygulama geliştirme,
Daha önce herhangi bir mobil platformda uygulama geliştirme tecrübesine sahip,
C++, Objective-C, Java programlama dillerinden en az birinde tecrübesi olan,
iPhone, Android, Symbian, Blackberry, Microsoft Phone 7, Bada SDKlarından en az birisine hakim,
Qt, XCode, Eclipse gibi geliştirme ortamlarını kullanmış,
Öğrenme kabiliyeti yüksek,
İngilizce bilen.

* En iyi uygulamanızın download linkini (appStore, Ovi, Android Market, App World vs..) başvurunuz esnasında ön yazıya ekleyebilirsiniz.

İş Tanımı:
Noktacom Medya bünyesinde mobil projelerin hayata geçirilmesi.

Başvuru:
basvuru@nokta.com

C# StreamReader sınıfı…

Öncelikle C#’ta dosya işlemleri yapmak için “System.IO” kütüphanesini eklemeniz gerekiyor.

Bu kütüphane içinde bulunan StreamReader adlı sınıfı kullanarak bir dosya içerisini rahatça okuyabilirsiniz.

Örnek uygulamamızda:
1 adet buton
1 adet listbox

Kullanılmıştır. Dosya içerisinde ki her bir satır listbox’a eklenmektedir.
Kod:

C#
private void button1_Click(object sender, EventArgs e)
{
  string line;
  StreamReader file = new StreamReader("C:\\deneme.txt");
  while ((line = file.ReadLine()) !=null)
  {
    listBox1.Items.Add(line);
  }
  file.Close();
}

Bir kaç satırlık kod ile tüm dosya içerisinde bulunan satırları listbox içerisine atamış oluyor.
Bu kodu açıklayacak olursak:

line adında bir string değişken oluşturuyoruz.
Sonrasında file isminde c:\deneme.txt dosyasını okuyacak olan bir nesne yaratıyoruz.
while döngüsü içerisinde file.ReadLine() ile her bir satırı line değişkenine atıyoruz ve bu değişken boş olmadığı(!=null) sürece bu döngünün dönmesini sağlıyoruz.
Döngü içerisinde line değişkeninde ki veriyi listBox1 adında ki ListBox’a atıyoruz.
while döngüsü dışına çıkınca file bağlantısını kapatıyoruz.

İşinize yarayabilecek bir kaç method:

StartsWith(“”) methodu ile “” arasına yazacağınız ifadeler ile başlayan satırları okutabilirsiniz.
Örnek Kullanım:

C#
if (line.StartsWith("#"))
{
  listBox1.Items.Add(line);
}

Bu örnekte # işareti ile başlayan satırları aldık.
EndsWith(“”) methodu ile “” arasına yazacağınız ifadeler ile biten satırları okutabilirsiniz.
Örnek Kullanım:

C#
if (line.EndsWith("#"))
{
  listBox1.Items.Add(line);
}

Eğer belirttiğiniz ifadenin bulunmadığı durumlar için işlem yapmak istiyorsanız if koşulunun başına ünlem işareti koymanız yeterli.

Length methodu ile stringin boyutunu öğrenebiliriz.
Örnek Kullanım: (label eklenmiş olduğunu varsayıyorum)

C#
label1.text = line.Lenght.toString();

Length methodu integer bir değer döndürdüğü için, yazdırmadan önce string’e döndürmek gerekiyor.

C# string parse örneği…

Klavyeden girilen bir kelimenin tersten diziliminin aynı olup olmadığını kontrol eden c# kodu:

C
Console.Write("Lutfen Bir Kelime Giriniz:");
            string kelime = Console.ReadLine();
            string[] dizi = new string[kelime.Length];
            for (int i = 0; i < kelime.Length; i++)
            {
                dizi[i] = kelime[i].ToString();
            }
            int sayac = kelime.Length-1;
            int durum = 0;
            for (int i = 0; i < kelime.Length; i++)
            {
                if (string.Compare(dizi[i],dizi[sayac])==0)
                {
                    durum = durum + 1;
                }
                sayac = sayac - 1;
            }
 
            if (durum==kelime.Length)
            {
                Console.WriteLine("Bu kelime aynidir");
            }
            else
            {
                Console.WriteLine("Ayni Degil");
            }

Asal Sayılar

Üniversiteden bir arkadaşımla biraz asal sayılar üzerinde çalıştık. “Sadece kendisine ve bir’e bölünebilen sayılar” tanımını bilmemize rağmen gecenin bi yarısında biraz uzunca sürdü (25dk kadar). Tabi birde uzun süredir uğraşmadığım C# ile uğraşınca kod yazılışlarında biraz cebelleştim :) .

Arkadaşımın yazmış olduğu sabit bir sayının asal olup olmadığını kontrol eden kod üzerinde biraz oynama yaparak, klavyeden girilen bir sayıya kadar olan asal sayıların listesini yapan bir kod haline getirdik.

C# Kodu:

C
Console.Write("Bİr sayi giriniz:");
int sayi = Int32.Parse(Console.ReadLine());
int durum=0;
 
for (int i=1;i<=sayi;i++)
{
  for(int j=2;j<i;j++)
  {
    if(i%j ==0)
    {
      durum=1;
    }
  }
  if(durum !=1)
  {
    Console.WriteLine(i);
  }
  durum = 0;
}

Buda PHP kodu:

PHP
$sayi = 20;
for($i=1;$i&lt;=$sayi;$i++)
{
  for($j=2;$j&lt;$i;$j++)
  {
    if(($i%$j)==0)
    {
      $durum = 1;
    }
  }
  if($durum!=1)
  {
    echo $i . " asal
";
  }
  $durum = 0;
}

Not: Gün boyu sql ile uğraşıp daha sonra algoritmaya geçmek insanı sıkıyormuş :)

PowerShell ve Bash

İstanbulda Archlinux Türkiye irc kanalından tanıdığım Alper Yalçıner‘in yanında kalıyorum. Kendisinden özellikle sistem yöneticiliği ve network konularında oldukça güzel bilgiler alıyorum.

Neyse gelelim asıl konuya. Alper abi bir kaç gündür Microsoft‘un geliştirdiği, C# komut satırı diyebileceğimiz PowerShell ile uğraşıyor. Bence de oldukça iyi bir uygulamaya benziyor. Bir yazılımcı için pek bir şey ifade etmeyecek gibi bir uygulamaysa da sistem yöneticileri için oldukça yararlı bir şey. Zaten Microsoft PowerShell’i sistem yöneticileri için geliştirdiklerini söylüyor.

Biraz incelediğinizde bash uygulamasından bir çok şey olduğunu göreceksiniz. Örneğin ls, ps, cat gibi komutlar çalışıyor. Microsoft, PowerShell hakkında, bash sistemini temel aldıklarını ve bashin eksikliği olan nesne tabanlı yapıyı ekleyerek geliştirdiklerini söylüyor. Bir çok bash komutunu alias olarak eklenmiş olarak buluyorsunuz. Bu sayede Linux sistem yöneticileri rahatlıkla PowerShell kullanmaya başlayabiliyor.

Genel olarak PHP dil yapısına benziyor komutlar. Ayrıca C# direk olarak çalışabiliyor. Tabi bir çok yararlı C# fonksiyonu sınıf olarak çalışıyor. Linux camiyası biraz kızacak fakat Microsoft PowerShell ile güzel bir iş çıkartmışa benziyor :) .

Java ve C# ile çeşitli kodlamalar…

Son dönemlerde Java ve C# ile haşır neşir olmaya başladım. Tabi genel tercihim açık kaynak olması ve platform bağımsızlığı c#a göre daha iyi olması sebebi ile Java.

Fakat Java ile C# arasında çok ufak farklılıklar mevcut, ve bu farklılıklar C# lehinde basit kod yazımına yönelik (benim fark ettiklerim). Örneğin C# ile rastgele sayı oluşturmak Javaya göre daha kolay geldi.

Neyse gelelim kodlama kısmına…

Rastgele sayı üretimi (C#):

C#
private int RastgeleSayi(int baslangic, int bitis)
{
Random rasgele = new Random();
return rasgele.Next(baslangic, bitis);
}

Bu şekilde artık dilediğimiz iki aralıkta rastgele sayı üretmemiz yeterli oluyor.

Örnek kod olarak iki metin kutusundan alınan değerler arsında rastgele sayı üretimi yapalım:

C#
private void button1_Click(object sender, EventArgs e)
{
int baslangicsayisi = Convert.ToInt32(textBox1.Text);
int bitissayisi = Convert.ToInt32(textBox2.Text);
int[] dizi = new int[100];
for (int i = 0; i &lt; dizi.Length; i++)
{
dizi[i] = RastgeleSayi(baslangicsayisi, bitissayisi);
}
}

Bu kod ile yukarıda tanımladığımız RastgeleSayi fonksiyonu ile baslangicsayisi ve bitissayisi aralığında 100 adet sayı üretip bu sayıları bir diziye atıyoruz.

Gelelim bu işin Java ile yapılmasına. Öncelikli olarak Javada rastgele sayı üretimi fonksiyonu yazalım:

Java
private static Random rn = new Random();
int[] dizi = new int[30000]; // bu tanımlamayi daha sonra kullanmak için yapıyoruz...
 
public static int rand(int lo, int hi)
{
int n = hi - lo + 1;
int i = rn.nextInt() % n;
if (i &lt; 0)
i = -i;
return lo + i;
}

Artık rand() fonksiyonu ile rastgele sayı oluşturabiliriz. Gelelim bu fonksiyon ile sayı oluşturma kodlarına:

Java
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
int sayi1 = Integer.parseInt(jTextField1.Text());
int sayi2 = Integer.parseInt(jTextField2.getText());
for (int i =0; i&lt; dizi.length; i++)
{
int sayi = rand(sayi1,sayi2);
dizi[i]= sayi;
}
}

Şeklinde bir kod karşımıza çıkıyor.

Aslına bakıldığında ikinci kısımlar (rastgele sayıyı diziye aktarma) her iki dil içinde yaklaşık olarak aynı. Fakat rastgele sayı oluşturma kısımları C# ile daha kolay geldi bana. Bu noktada Java ile daha basit bir yöntem var olabilir, fakat internet taramalarım, Java ile uğraşan arkadaşların yönlendirmeleri vb araştırma sonuçlarında bu yöntemin geçerli olduğunu gördüm :)

Bunun dışında Java ve C# ile yapmaya çalıştığım bir başka iş vardı. C# ile becerebildim, fakat Java ile yapamadım. Daha sonra tekrar bakacağım. Fakat burada yapmak istediğimi anlatayım. Bir işlem yapılıyor, bu işlem uzun sürebilimekte. Ve ben işlem sürerken bir etiket üzerine “İşlem Yapılıyor…” yazdırmak istiyorum. C# ta işe başlamadan hemen önce ilgili kodu yazdığımızda, işlem bittikten sonrada aynı etikete işlemin bittiğini yazan kodu yazdığımda çalışıyor. Fakat bu mantık Java ile oturmadı :) .

Javanın can sıkıcı başka bir tarafıda zamanlar(time) ile işlem yaparken milisaniye göstermesi için çeşitli fonksiyonlar vb. şeyler kullanmak gerekiyor anladığım kadarı ile. Fakat C#’ta işler çok daha basit. Şuanki zamanı alan DateTime.Now komutu ile aldığımız iki zaman arasında bulunan farkı TimeSpan kullanarak direk olarak milisaniyeleri ile birlikte alabiliyoruz.

Bu konuda daha geniş bilgisi olan arkadaşların yorumlarını ve eksik kalan noktalar konusunda bilgi vermelerini rica ediyorum….

Gece, xfce-tr ve programlama muhabbetleri

Sanırım yaklaşık üç dört saattir xfce-tr kanalında ben, Gökmen Görgen, Cihan Okyay ve Samed Beyribey (daha sonra kendisi lost izlemeye gitti ) ile birlikte programlama dilleri üzerine sohbet gerçekleştirdik (şuan devam ediyoruz).

Gökmen Görgen, küçük bir işlem çubuğu (progress bar) uygulamasını çeşitli dillerde yazarak, diller arasında ki farkı incelemekte, kanalda bu konular üzerine fikirlerimizi paylaşıyoruz. Ama en önemli noktası C# ta gelinen noktada var olmayan (henüz keşfetmemiş olabiliriz) bir özellik. Bir dizi içerisine ekleyeceğimiz elamanları tek tek eklememiz gerekiyor toplu halde eklememiz mümkün gözükmüyor (döngü seçeneğini kullanmıyoruz).

Bu isteğimizi php üzerinden örneklersem:

$dizi = array (“a”,”b”,”c”);

Bu şekilde bir kod yazımı sanıyorum ki C# için geçerli değil. C# ta durum şu şekilde işliyor:

int[] dizi = new init[sayi]

Buradaki sayi yerine dizimizin kaç elemandan oluşacağını giriyoruz (Girmezsek C# kabul etmiyor, eğer dinamik yapıda bir dizi istiyorsak ArrayList kullanmamız gerekiyormuş – bu farkıda bu gün öğrendim -). Kodun devamı şu şekilde

dizi[n1] = “a”;

dizi[n2] = “b”;

Ve tabi başta Gökmen Görgen olmak üzere hepimiz bu işe gıcık olduk :) . Eğer bu işin tek satırda nasıl yapılacağını bilenler varsa bilgilendirmelerini bekliyorum.

Şu sıralar Lost izlemeyi bitirmiş olsan Samed Beyribey de aramıza bi Lost muhabbeti ile katılmış durumda.

Tabi bir şeyi belirtmekte fayda var, C# kodlarını mono ve arch linux üzerinde çalıştırıyor Gökmen Görgen…

Özgür Kuru is Stephen Fry proof thanks to caching by WP Super Cache