Derleyici ve IDE Arasındaki Fark

Derleyici ve IDE kavramları sıklıkla karıştırılıyor, bugün Friendfeed’de gördüğüm bir feed üzerine bu yazıyı yazmaya karar verdim.

IDE-Integrated Development Environment’ın kısaltması. Tümleşik Geliştirme Ortamı olarak çevirebiliriz Türkçe’ye. Yani içinde “syntax highlighting” özelliği bulunan bir kod editörü, debug-trace için yardımcı araçlar vs. bulunan tümleşik bir ortam. Derleyici ise bir programlama dilinde yazılmış programı makine koduna veya ara koda (Java-.net) dönüştüren programcık. Şüphesiz IDE’ler derleyicilerle beraber çalışır. Siz Eclipse’de basit bir kod yazıp çalıştır dediğinizde Eclipse arka planda yazdığınız kodu javac ile derler ve çıktısını kendi konsolunda size gösterir.

javac, en popüler java derleyicisi. Sun’ın JDK’sını kullanıyorsanız siz de javac kullanıyorsunuz demektir. Bunun yanında gjc (GNU Java Compiler) gibi derleyiciler de mevcut. Java derleyicileri ile ilgili wikipedia’da detaylı bilgi mevcut. Eclipse, Netbeans, IntelliJ Idea vs. ise popüler Java IDE’leri.

C# kodu yazıyorsanız muhtemelen kodu Visual Studio’da yazıp F5 tuşuna basarak çalıştırıyorsunuz ancak c#’ın da csc adında bir derleyicisi var. .Net kurulum dizininde csc.exe adında bulabilirsiniz. Kullanımı ve mantığı javac ile aynı.

Konuyla ilgili iki link:

http://en.wikipedia.org/wiki/Integrated_development_environment

http://en.wikipedia.org/wiki/Compiler


Python ile Ziple ve Ftp’ye Yükle

Uzun zaman önce istediğim klasörleri periyodik olarak zipleyip belirttiğim ftp adresine yükleyecek bir programcık yazmam gerekti. Doğal olarak Java veya c# ile yazacakken aklıma bir zamanlar bir gece biraz kurcalayıp daha sonra bir türlü aktif olarak kullanamadığım Python geldi. Bir klasörü zipleyip upload etmenin pythonla çok kolay olacağını düşündüm ve haklıydım da. Hemen gerekli araştırmayı yapıp aşağıdaki kod parçasını yazdım. Python uzmanı değilim, kodda hatalar olabilir ve geliştirilebilir. İhtiyaç duyanlara örnek olması açısından paylaşıyorum…

# -*- coding: utf-8 -*-

import zipfile

import glob, os

import ftplib

import sys

ziplenecekDosya=raw_input("Lütfen arşivlenecek klasör yolunu giriniz: ")

arsivDosyasi=raw_input("Lütfen arşiv dosyası yolunu giriniz: ")

#önce arşiv dosyasını oluşturup write modunda açıyoruz

try:

    file=zipfile.ZipFile(arsivDosyasi, "w")

    print "Arşiv oluşturuldu..."

except:

    print "Arşiv dosyası açılırken hata oluştu!"

    sys.exit()

#sonra da dosyaları arşive atıyoruz,

try: 

    dosyalar=[]

    for name in glob.glob(ziplenecekDosya+"*"):

        file.write(name,os.path.basename(name),zipfile.ZIP_DEFLATED)

        dosyalar.append(os.path.basename(name))

        print "Dosya eklendi: "+os.path.basename(name)

except:

    print "Dosyalar arşiv dosyasına eklenirken hata oluştu!"

finally:

    try:

        file.close()

    finally:

        print "Bu kadar..."

s=ftplib.FTP("host", "user", "passwd")

f=open(arsivDosyasi,'rb')

s.cwd("public_html")

s.storbinary('STOR '+arsivDosyasi,f)

f.close()

s.quit()

Android-Locale Değiştirme

Android için uygulama hazırlarken kullanıcının telefonunun locale ayarı ne olursa olsun siz Türkiye ayarlarınıkullanmak isteyebilirsiniz. En basit örneği siz bir tarihi “dd MMMM yyyy” olarak formatladığınızda telefonun locale ayarı “en” ise 14 November 2010 gibi bir sonuç alacaksınız. Ancak siAndroidz kullanıcı telefonunu isterse Çince kullansın “November” yerine “Kasım” yazmasını istiyorsunuz. Bunu uygulama bazında locale ayarını değiştirerek yapabilirsiniz.

Şöyle ki;

Activity’nin onCreate metoduna veya ihtiyacınızın olduğu yere;

Locale lokal=new Locale("tr");
Locale.setDefault(lokal);

satırlarını eklerseniz uygulama artık telefonun locale ayarı “tr” imiş gibi davranacaktır.

Bazı kaynaklarda bunun geçerli olması için manifest dosyanıza her activity için

android:configChanges="locale"

ifadesini eklemek gerekiyormuş ancak ben bunu eklemeden çalıştığını 1.6 ve 2.2 üzerinde test ettim. Belki dil için değil ancak başka ayarlar için gerekiyor olabilir.

Kaynak: http://adrianvintu.com/blogengine/post/Force-Locale-on-Android.aspx


Eclipse & Android gen/r.java Hatası

Eclipse ile Android projesi geliştirirken bazen
r.layout.main cannot be resolved
veya
Description Resource Path Location Type Project 'ornekProje' is missing required source folder: 'gen' ornekProje Build path Build Path Problem

gibi hatalar alıyordum. Genelde Project->Clean seçeneğini kullanınca düzeliyordu ancak bu sefer düzelmedi. Bu durumun bir kaç sebebi ve bunlar için bir kaç çözüm var. Araştırdığım kadarıyla aşağıda yazıyorum.

  1. Gen klasörünü silip tekrar Build edin. Konsolda r.java’nın bulunamadığı ve yeniden oluşturulduğuna dair bir mesaj görüntülenecek. Eğer sorun r.java dosyasındaysa bu şekilde çözülüyor.
  2. AndroidManifest.xml dosyasındaki paket adını kontrol edin, yanlışsa düzeltin, paket adı yanlış olunca r.java bulunamıyor ve bu hata oluşuyor. Yanlışsa ve düzeltirseniz sorununuz çözülecektir.
  3. Çeşitli sebeplerle (büyük ihtimalle paket adı değişikliği) ADT java dosyalarınızın başına import android.R satırını ekliyor, eğer yukarıdaki adımlar işe yaramadıysa ve bu satır varsa satırı silin, ben bu satırı silince hata ortadan kalktı, umarım sizde de işe yarar.

Not: Adımları uyguladıktan sonra projeyi rebuild etmeyi unutmayın.