Android’de İnternet’e Erişimde ‘Permission Denied’ Sorunu

Android üzerinde İnternet’teki bir kaynağa erişim yapılırken çıkan “Permission Denied” sorununu aşmak için “AndroidManifest.xml” dosyasında </manifest> etiketinden önce aşağıdaki satırı eklemek gerekir:

<uses-permission android:name=”android.permission.INTERNET” />

Örnek ekleme:

<manifest . . . >
    <application . . . >
        <service android:name=”com.example.project.Service” . . . >
            . . .
         </service>
             . . .
     </application>
     <uses-permission android:name=”android.permission.INTERNET” />
</manifest>

Kolay gelsin…

Svn’de Yerelde Yapılan Değişiklikleri Yok Etmek

Çalışma kopyası (working copy) üzerinde yapılan değişiklikleri geri almak için:

svn revert -R *

komutu kullanılabilir. Bu, sadece üzerinde değişiklik yapılan mevcut dosyalar üzerinde çalışır. Yani yeni bir dosya oluşturmuşsak bunu silmez.

Diğer bir yöntem ise [1]‘deki tekniktir:

svn st -q | awk ‘{print $2;}’ | xargs svn revert

Tabi bu daha uzun bir yol.

Yeni oluşturulan dosyaları silmek için ise daha önce bahsettiğim tekniği kullanabilirsiniz. Pardus üzerinde bulunan

svnclean

komutu ile de yeni oluşturulan dosyaları silmek mümkün.

İyi günler.

[1]: http://fredericiana.com/2008/06/11/reverting-all-local-changes-in-svn/

Svn’de Yeni Dosyaları Silmek

Svn ile çalışırken yereldeki(local) çalışma kopyamızda(working copy) yeni dosyalar oluşturduğumuzda ve bu dosyaları silmek istediğimizde aşağıdaki komut işimizi görür:

svn st | grep ^\? | awk ‘{print $2}’ | xargs rm -r

Bu sayede ‘svn st‘ ile çıkan ve ‘?‘ başlayan tüm dosyalar silinir.

Kaynak: http://www.pgrs.net/2008/01/23/remove-files-that-are-not-in-subversion/

Kendime not: awk’ı araştırmak lazım.

Ekleme:

Fatih Arslan, Pardus altında bulunan ve bir perl betiği olan “svnclean” ile de aynı işi yapmak mümkün olduğunu söyledi. Bilgi olarak bulunsun.

Pardus Staj Çalışması: KDE 3 için Quickformat

Quickformat

Quickformat, USB sabit diskleri, USB flash diskleri, SD/MMC gibi hafıza kartlarını biçimlendirmeyi kolaylaştıran bir uygulama. Pardus 2011 ile birlikte KDE 4 ortamı için gelen uygulama, bazı bağımlılıklardan dolayı KDE 3 ve Gnome gibi diğer masaüstü ortamlarında çalışamıyordu. Bununla beraber Pardus’un Kurumsal 2 sürümü KDE 3 ortamını kullanıyor ve daha da kullanacak gibi görünüyor. Quickformat’ın da KDE 3 ortamına uygun hale getirilip son kullanıcıların kullanımına sunulması gerekiyordu. Pardus stajındaki projem bu problemi çözmek üzerineydi: Quickformat uygulamasını KDE 3 ortamına aktarmak.

Bu sorunu çözmek için programı baştan yazmak yerine mevcut bağımlılıkların giderilmesi için alternatifleri aramak daha mantıklıydı ve bu arama işlemi asgari 2 haftamı aldı. Hatta kod yazmaya stajın 3.haftasının 3.günü (çarşamba) saat 16:00′da başladım. Programın KDE 3 üzerinde ayağa kalkması ise yarım saat sürdü. Yani servisler gelmeden program KDE 3′e “Merhaba” dedi. :)

Uygulama üzerine kafa yordukça bazı ufak tefek eklemeler de yaptım. Halen de mümkün olduğunda düzenlemeler ve eklemeler yapmaya çalışıyorum. Programın kaynak kodları[1] Pardus svn sunucularında bulunuyor.

Uygulama Üzerinde Yapılan Değişiklikler ve Sonuçlar

  • KDE 4 ile birlikte gelen ve aygıtlar hakkında bilgi almayı, uygulama açıkken takılan/çıkarılan aygıtları algılayarak gerekli bilgileri güncellemeyi oldukça kolaylaştıran Solid sistemi yerine KDE 3 üzerinde alternatifleri arandı ve UDisks sistemi kullanıldı. DBus üzerinden UDisks ile takılı depolama aygıtları üzerinde gerekli işlemler yapıldı.
  • Kod okunabilirliğinin artırılması için her sınıf ayrı bir dosyaya alındı. Bu, eklenen yeni kodların da etkisiyle bazı bölümlerde değişikliklere sebep oldu.
  • Biçimlendirme işleminden önce kullanıcıdan onay alma eklendi.
  • Herhangi bir hata veya biçimlendirme işlemi esnasında çıkan saydam bildirim penceresinin arkasındaki düğmelerin klavyeden <TAB> tuşuyla gezilebilmesi engellendi.
  • Bunlara ek olarak önceki sürümde Solid’in sağladığı bazı özellikleri (aygıta uygun simgenin gösterilmesi gibi) eklemek için bazı dolambaçlı yollardan geçmek zorunda kaldım. Ama önceki sürümdeki bu özellik şu an programda mevcut.
  • Uygulamayı Gnome ortamında da test ettim ve düzgün çalışıyor.

Ekran Görüntüsü

Quickformat Genel Görünüm

Quickformat Genel Görünüm

Yapılacaklar ve Yapılabilecekler

Aşağıda yazılı olan fikirlerin bazılarının gerçekleştirilmesi zaman alabilir, hiç gerçekleştirilemeyebilir ya da yarına eklenmiş olabilir. Bunları fikir olması açısından yazıyorum. Umarım gerçekleştirebilirim.

  • KDE 3 için Konqueror, KDE 4 için ise Dolphin bütünleşmesi. Önceki sürümde Dolphin ile bütünleşme bulunuyor. Bu sürümde de KDE 3 ve KDE 4 için aynı şey yapılabilir.
  • Bilgisayarımda firewire arayüzü olmadığından firewire üzerine herhangi bir test yapamadım. Firewire aygıtların uygulamayla çalışabilirliğinin test edilmesi gerekir.
  • Firewire aygıtları için ayrı bir simge gösterilmesi.
  • Önceki sürümde birçok dile ait olan ‘locale‘ dosyalarının yeni sürüm için güncellenmesi.
  • Uygulama kullanımı ile ilgili bir wiki sayfasının oluşturulması.
  • Küçük bir düğme eklenerek, seçili olan aygıtın içeriği Konqueror veya Dolphin üzerinde görüntülenmesi.
  • Bölüm bayraklarının (partition flags) kaldırılması için parted modülü kullanılıyor. Parted bağımlılığının ortadan kaldırılması için çalışma yapılması.
  • Kaynak koddan derleme yaparken herhangi bir inşa aracının yokluğunda bile bazı klasörler yaratılmış oluyor. Bunu engellemek için setup betiği üzerinde değişikliklerin yapılması.

Aklıma gelen fikirleri svn’deki TODO dosyasına ekliyorum. Bununla beraber eklediğim özellikleri CHANGES dosyasına geçiriyorum. Umarım Quickformat uygulaması diğer dağıtımlar tarafından da tercih edilen bir biçimlendirme aracı olur. :)

[1]: http://svn.pardus.org.tr/uludag/trunk/playground/intern/2011/quickformat-for-KDE3/

gcc: Linking Error: undefined reference to ‘tan’ Sorununun Çözümü

Not: Sorun her ne kadar “tanjant” fonksiyonu üzerinden anlatılmışsa da diğer kütüphanelerle ilgili çıkan aynı sorunların çözümü içinde kullanılabilir. Burada sadece “tanjant” fonksiyonu örnek alınarak anlatılmıştır.

#include <stdio.h>
#include <math.h>

int main(){
    int x = 45;
    double sonuc = tan(x);
    printf("Sonuc: %d", sonuc);
}

Yukarıdaki kodu hesap.c olarak kaydedip aşağıdaki gibi derlediğimizde:

$ gcc hesap.c -o hesap

aşağıdaki bağlama(linking) hatasını alırız:

/tmp/ccOTnqUQ.o: In function `main’:
hesap.c:(.text+0x1f): undefined reference to `tan’
collect2: ld returned 1 exit status

Bu sorunu aşabilmek için “tan” fonksiyonunu barındıran nesne dosyalarının (object files) bulunduğu bir arşiv dosyası olan “libm.a” dosyasını bağlamak(link) gerekir. Bunu gerçekleştirmek için:

$ gcc hesap.c /usr/lib/libm.a -o hesap

komutuyla “/usr/lib/” dizinindeki matematik kütüphanesi olan “libm.a” arşiv dosyasını bağlarız.

Her seferinde uzun şekilde dizini belirtmek yerine:

$ gcc hesap.c -lm -o hesap

şeklinde bir çağırımla da bağlama yapabiliriz. Buradaki -l seçeneği linker için yazıldığını gösterir, “m” ise “libm.a” dosya adındaki “m” harfini gösterir. Büyük programlarda bir çok bağlama seçeneği yazıldığı için bu kısayol işimizi kolaylaştırır.

Kaynaklar ve Yararlı Bağlantılar
http://www.network-theory.co.uk/docs/gccintro/gccintro_17.html
http://joysofprogramming.com/undefined-reference-to-tan/

İyi Çalışmalar…