Yazar: vlyalcin

  • Java split() metodunda kırpmanın önüne geçme

    Java’da bir dizgeye split() metodunu uyguladığımız zaman, dizgenin son kısımlarında boş (yani “”) dönmesi gereken alanlar kırpılıyor (“trim” uygulanıyor).

    Örneğin aşağıdaki gibi bir dizgemiz olsun.

    String degerler = "0|0|0|1|||0|1|0|||";

    degerler dizgesini boruya (pipe, “|”) göre split() ettiğimde karakter dizisi içerisinde geriye “0”, “1” yada “” değerleri dönecek.

    String[] karakterDizisi = degerler.split("\|"); 

    Yukarıdaki kodu uyguladıktan sonra split() metodu en sondaki “0” rakamından sonraki  “|||” kısmını kırpıyor ve boş değerleri listeye dahil etmiyor.  Bu durumda karakterDizisi‘nin uzunluğu 9 dönüyor.

    Bu durum String.split(String regex) bağlantısında açıkça belirtilmiş.

    Kırpılan alanları da karakter dizisine eklemek istiyorsanız, sınırlama değeri girmelisiniz. Sınırlama değeri  split() metodunun dizgeye kaç defa uygulanacağını belirtir.  split() metodunun kaç defa uygulanacağına dair bir sınır girmek istemiyorsanız eksili bir sayı girmeniz yeterli.

    Sınırlama değeri ile kullanmak için sözdizimi şu şekilde: String.split(String regex, int limit)

    Örnek olarak;

    String[] karakterDizisi = degerler.split("\|", -1); 

    Artık karakterDizisi uzunluğunda bir sınır yok ve boş alanlar da listeye dahil. Yukarıdaki kodu uyguladıktan sonra listenin uzunluk değeri 12 dönüyor.

    Kaynak: http://stackoverflow.com/questions/14414582/java-split-string-to-array

  • Sabit diskinizin çıkardığı sese göre arıza tespiti

    DataCent isimli profosyonel veri kurtarma hizmeti veren bir şirketin veri kurtarma laboratuvarlarında sabit disklerden çıkan arıza seslerini kaydetmişler ve bu çıkan seslere göre diskin arızasını tanımlamışlar.

    Seslerin kaydedildiği sabit disk markaları arasında Western Digital, Seagate, Maxtor, Samsung, Hitachi/IBM, Toshiba, Fujitsu ve Quantum bulunuyor.

    Sayfaya aşağıdaki bağlantıya tıklayarak ulaşabilirsiniz

    http://datacent.com/hard_drive_sounds.php

    Sayfadaki arıza sesleriden birini duyuyorsanız ve hala verilerinize ulaşabiliyorsanız en kısa zamanda verilerinizi yedeklemeniz öneriliyor.

  • Gnome 3’te kullanıcı resmi bilgileri

    Gnome 3 kullanan dağıtımlarda sistemde kullanıcı resmi bilgileri 2 dizinde işleniyor.

    Birincisi /var/lib/AccountsService/users
    İkincisi /var/lib/AccountsService/icons

    /var/lib/AccountsService/users

    Dizinin altında her kullanıcı için .desktop dosya yapısına benzer bir metin dosyası mevcut. /var/lib/AccountsService/users/[Kullanıcı Adı] şeklinde tutuluyor. Kurulum esnasındaki tercihlere göre Ubuntu’da ortalama varsayılan olarak şöyle geliyor.

    [User]
    XSession=ubuntu
    XKeyboardLayouts=

    Kurulumdan sonra bir kullanıcı resmi belirlersek dosyaya “Icon=” ile başlayan bir satır ekleniyor. Eğer sistemin sunduğu resimlerinden seçerseniz “Icon=” karşısına seçilen resmin yolunu yazar. Başka bir yoldan resim seçerseniz resmi /var/lib/AccountsService/icons dizini altına seçimi yapan kullanıcının ismi ile bir resim dosyası oluşturur (/var/lib/AccountsService/icons/[Kullanıcı Adı] gibi) ve “Icon=” karşısına bu oluşturduğu resmin yolunu yazar.

    /var/lib/AccountsService/icons

    Seçtiğiniz resim Kullanıcı Hesapları uygulamasındaki sunulanın dışında bir resim ise, uygulama seçilen resmi /var/lib/AccountsService/icons dizini altına, 96×96 piksel boyutuna getirip, seçimi yapan kullanıcı adını dosya ismi olarak kullanarak, png formatına çevirerek atar.

    Herhangi bir resim seçtikten sonra users dizini altındaki dosyanın son hali

    [User]
    XSession=ubuntu
    XKeyboardLayouts=
    Icon=/var/lib/AccountsService/icons/volkan

    Kaynak:
    http://askubuntu.com/questions/61637/where-is-the-users-profile-picture-stored-in-gnome-3
    http://comments.gmane.org/gmane.comp.gnome.gdm.general/2513

  • User Administration (Kullanıcı Yönetimi)

    (Uygulamanın kaynak kodlarına https://github.com/vlyalcin/User-Administration adresinden ulaşabilirsiniz.)

    Kullanıcı Yönetimi sisteminizdeki kullanıcıları yönetmeye yarar. Uygulama temel olarak;

    -Yeni kullanıcı ekler
    -Mevcut kullanıcı bilgilerini düzenler veya siler.
    -Kullanıcı resmini belirler (görüntüyü kameradan veya bilgisayarınızdaki bir resimden alabilir)

    Linux sisteminde kullanıcı bilgileri bir metin dosyası içerisinde saklanıyor (/etc/passwd yapısı hakkında güzel bir kaynak http://www.cyberciti.biz/faq/understanding-etcpasswd-file-format/). Benim yaptığım olay Linux standartlarının dışına çıkmadan bu metin dosyalarını Kullanıcı Yönetimi uygulaması aracılığı ile düzenlemek oldu. Yani benim kazandığım tecrübe ağırlıklı olarak metin dosyası açma, okuma ve düzenleme üzerine oldu. Mevcut kitaplıklar ile çok daha az satır ve çok daha az emek ile basitce kullanıcı oluşturabileceğimin farkındayım. Ben işi el ile yaparak Python ve programlama konusunda tecrübe kazanmak istedim.

    Onun dışında OpenCV’nin bilgisayar kamerasından görüntü alıp kaydetme gibi çok basit bir özelliğini kullandım.

    Parolaları şifreleme ihtiyacı sebebiyle passlib kitaplığı ve şifreleme konusunda deneyim edindim.

    Qt arayüzü ile aşina oldum.

    Uygulamada çeşitli ihtiyaçlar ile içe aktardığım kitaplıklar şu şekilde;
    os, sys, shutil, datetime, Image, cv, python-passlib, PyQt4

    Uygulamayı kaynak koddan “python setup.py install” komutu ile yükledikten sonra /usr/share/user-administration/.backup dizini altına “/etc/passwd”, “/etc/shadow”, “/etc/group” dosyalarının yedeğini alıyor. Bu dosyalar ile ilgili herhangi bir sorun ile karşılaştığınızda yedeği alınan dosyaları ilgili yerlere geri taşıyarak sorunu giderebilirsiniz.

    root olarak yada sudo ile “python setup.py install” komutuyla uygulamayı sisteminize yükledikten sonra komuta satırına tekrar root olarak yada sudo ile “user-administration” komutunu yazarak uygulamayı başlatabilirsiniz
    Kullanıcı resmi durumundan dolayı şimdilik sadece Ubuntuda sağlıklı olarak çalışıyor.

    Uygulama sistem ve kullanıcılar ile ilgili olduğu için farketmeden güvenlik zaafiyeti oluşturmuş olabilirim. Sakıncalı gördüğünüz noktaları uyarmaktan çekinmeyiniz.

    Türkçe desteğini vakit darlığından dolayı oluşturamadım. Fakat kod satırlarındaki yorumlamalarda Türkçe yorumları eksik etmedim.

    Ekran görüntüleri

  • Linux’te Vim ile metin dosyası şifreleme

    Vim metin düzenleyici ile düzenlediğiniz metinleri kolaylıkla şifreleyebilirsiniz.
    Vim şifreli dosyalar yazmamıza ve şifreyi doğru girdiğimiz taktirde onları tekrar okumamıza olanak sağlıyor.
    Vim ile bir metin dosyasını şifrelemek için komut satırına;

    vim -x dosyaismi

    şeklinde komut girin. dosyaismi mevcut bir dosya veya yeni oluşturacağınız bir dosya olabilir. Vim açıldığında sizi yorumlayıcı karşılayacak ve sizden şifre girmenizi isteyecek.

    Sizi karşılayan Vim yorumlayıcısına şifreyi girdikten sonra dosyayı kaydetmezseniz, şifreleme işleminiz geçersiz olur. Bu yüzden şifreyi girdikten sonra dosyayı kaydetmeyi unutmayın.

    Dilerseniz bir örnek yapalım;

    
    
    volkan@volkan-N61Vg$ vim -x bir-metin.txt

    Komutundan sonra bizden şifre isteyecek.

    Şifre anahtarını girin: ****
    Aynı anahtarı tekrar girin: ****

    Şifrenizi girin ve kaydedin. Kaydettikten sonra, “bir-metin.txt” dosyası girdiğimiz şifre ile şifrelendi.

    Dosyanın şifrelendiğini teyit edelim.

    volkan@volkan-N61Vg$ cat bir-metin.txt 
    VimCrypt~01!ssuU��� �S��*�� 
    volkan@volkan-N61Vg$

    Evet, artık girdiğiniz şifreyi öğrenmediği sürece kimse metin dosyanızı okuyamaz 🙂