Kategori: Sorunlu Teknoloji

  • Gereksiz dosyaların git deposuna eklenmesini engellemek

    Bunun için proje köküne “.gitignore” adında bir dosya oluşturup örnekteki içeriği ekleyebilirsiniz. Aşağıdaki örnek içerikte bulunan uzantılar ve dosyaların haricinde depoya gitmesini istemediğiniz dosyalar ve ya dosya türleri varsa bu listeye ekleyebilirsiniz. Aynı zamanda bu dosyayı git deposuna eklemenizi proje ortaklarınız içinde faydalı olacaktır. Böylelikle bütük kullanıcılarda aynı dosyalar bir kerede engellenmiş olur.

    (daha&helliip;)

  • Uzak sunucudaki git deposunu yerele çekmek

    Uzak sunucudaki git deposunu yerele çekmek diğer anlamıyla, remote repo’yu clone’lamak için aşağıdaki adımları takip edeceğiz.
    Yerel makinede projenin klonlanacağı klasöre geçiyoruz. Örnekte “~/dev/” klasörünü kullancağım

    veli@veli-GA-990XA-UD3:~/dev/git clone [email protected]:project.git

    Cloning into ‘project’…
    Enter passphrase for key ‘/home/veli/.ssh/id_rsa’:
    warning: You appear to have cloned an empty repository.
    Checking connectivity… done.

    Yukarıda daha önceki yazımda “gitolite” aracılığı ile ilklendirmiş olduğumuz boş depoyu yerelimize klonlamış olduk. Bundan sonra yapılacak olan iş proje klsörü içine proje dosyalarını koymak ve bunları depoya göndermek. Dosyaları ekledikten sonra depoya göndermek için şunları yapıyoruz: (daha&helliip;)

  • Gitolite ile Git’e kullanıcı eklemek

    Eklenecek kullanıcının public_key’i alınır. Bunun için kullanıcın bilgisayarında, geliştirme için kullanılan kullanıcı hesabı ile login olunur ve aşağıdaki komut çalıştırılır.

    ali@ali-GA-990XA-UD3:~/ ssh-keygen -t rsa -C “ali@ali-GA-990XA-UD3

    bu komut ile kullanıcın home klasöründe bulunan .ssh klasörü altında “[email protected]” isimli bir public key oluşur. Bu public key dosyası gitolite yönetici olan kullanıcıya iletilir. gitolite yöneticisi olan kullanıcı, bu public key dosyasını “gitolite-admin/keys” klasörüne yerleştirir ve gitolite deposuna ekler

    veli@veli-GA-990XA-UD3:~/gitolite-admin/git add keydir/[email protected]

    Sonrasında eklenecek kullanıcı için git kullanıcısı oluşturulur: (daha&helliip;)

  • Kendi Git deponuzu kurun ve Gitolite ile yönetin

    Bu doküman ile Ubuntu sistemlerde git sürüm yönetim sistemini kolaylıkla kurup rahat bir şekilde yönetebilirisiniz. Öncelikle ubuntu sistemlerinde git sürüm yönetim sistemi nasıl kurulur onu inceleyelim

    • Git sürüm yönetim sistemi kurulumu:

    veli@veli-GA-990XA-UD3:~/ sudo apt-get install git-core

    Hepsi bu 🙂

    • Gitolite ile Git yönetimi:

    Git sürüm yönetim sisteminin komut dilini ezberlemek ve her seferinde hatırlamaya çalışmak biraz sıkıntılı, özellikle de yeni depo kurmanız ve kullanıcı ve dahi haklarını yönetmeniz gerekiyorsa…

    Gitolite bu işleri basitleştirmek amacıyla, daha önceden var olan az daha sorunlu, sıkıntılı ve artık geliştirilmesi bırakılmış olan Gitosis yerine oluşturulmuş bir projedir. Amaç depo ve kullanıcı yönetimini basitleştirmek, sistem yöneticilerinin kendilerine daha fazla zaman ayırabilmelerini sağlamaktır :p

    Ubuntu sisteminde gitolite kurmak ve sürüm yönetim sistemini bunun üzerine taşımak için git sürüm yönetim sistemini kurduktan sonra aynı yöntem ile gitolite’ı sisteme kuracağız. Ancak bunu yaparken uzak sunucu kullanmak isteyeceğinizi varsayarak sistemi yapılandıracağız. Bunun için uzak sunucuya ssh ile giriş yaptıktan sonra süper kullanıcı konumuna geçmeniz gerekli. (daha&helliip;)

  • Twitter ve (dahası için) engelleri aşmak

    Eğer bilgisayar üzerindeyseniz işini kolay. Birkaç seçenekten en basiti ile başlayalım:

    • DNS Değiştirmek:

    DNS Adresini değiştirerek kolayca Twitter’a ulaşabilirsiniz.

    • Opera Browser Kullanmak:

    Opera BROWSER‘ı indirip kurun ve ayarlarından Off-Road’ı etkinleştirin. (DNS değiştirmenize gerek yok.)

    • TOR Browser Kullanmak:

    TOR Browser Bundle indirip kullanabilirsiniz. (DNS değiştirmenize gerek yok. Sadece browseri kurup gitmek istediğiniz adrese bu browser ile gitmeniz yeterli. Veri güvenliği için tercihen sadece HTTPS protokolünü kullanınız.)

    • Kullandığınız browser için Proxy eklentisi kurmak:

    Firefox veya Chrome için çeşitli proxy eklentileri mevcut. Bu eklentilerden birisini kurarak, Hide My Ass ya da Free Proxy List gibi adreslerden edinebileceğiniz proxy adreslerini bu eklentilere girip eklentileri aktive ederekte twitter’a ulaşabilirsiniz.

    Eğer Android yüklü bir cep telefonu kullanıyorsanız Aşağıdaki seçeneklerden birini tercih edebilirsiniz…

    • GooglePlay’den Opera Classic browserı kurmak ve ayarlarindan Turbo’yu açmak.
    • GooglePlay’den Opera Mobile browserı kurmak ve ayarlarindan Off-Road’ı açmak.
    • Bu adım için biraz teknolojiye yatkın olmanız ve uygulamayı kurmadan önce Android sistemleri rootlamak ile ilgili bilgilenmeniz gerekiyor.
      • Cep telefonunuzu öncelikle ROOT’lamanız gerekmekte.
      • Rootlama işleminden sonra GooglePlay’den SetDNS programını kurmanız gerekli.
      • SetDNS programını kurduktan sonra telefonunuzu yeniden başlatın.
      • Telefonunuz açıldıktan sonra SetDNS programının sağladığı herhangi bir DNS adresini seçip ayarları kaydedin.
      • Bu aşamadan sonra ister browser ile ister twitter uygulaması ile engele takılmadan sisteme dahil olabilirsiniz.

     

  • Dial-Up Hand Shake (Nostalji)

  • RAID 1 sistemin tek diskini başka makineye bağlayıp yedek almak

    Farz-ı misal yedekleme için kullandığınız veri yolları yavaş çalışan bir Software RAID 1 üzerinde koşan makinanız var. Zaman içinde bu makinanın diskinin dolması ile yedeklerin arşiv disklerine kayıt edilme zamanı geldi diyelim. Arşiv olarak kullanmak üzere aldığınız diske verileri aktarmanız gerekiyor ama başta dediğim gibi yedekleme makinasının veri yolları o kadar yavaş ki içindeki yedekleri arşiv diskine aktarması günler alacak.

    Normalde yavaş veri yolu olan bir makineden veriyi içindeki diski daha hızlı bir makineye takarak almayı tercih edenlerdenim, ancak şimdiye kadar SoftRAID 1 üzerinde koşan bir makinadan bu şekilde veri çekmemiştim.

    Veri yüklü diski söktüm arşiv diski ile birlikte hızlı bir makineye bağladım ve sistemi boot ettim. Normalde yapacağım iş iki diski de mount edip veri aktarımını başlatmak ancak SoftRAID1 diski mount etmek için fdisk ile neyi mount etmem gerektiğine bakarken şöyle birşey ile karşılaştım:

     

    # fdisk -l

    Disk /dev/sdc: 2000.4 GB, 2000398934016 bytes
    255 heads, 63 sectors/track, 243201 cylinders, total 3907029168 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 4096 bytes
    I/O size (minimum/optimal): 4096 bytes / 4096 bytes
    Disk identifier: 0x00015350

    Device Boot Start End Blocks Id System
    /dev/sdc1 2048 3905535 1951744 fd Linux raid autodetect
    /dev/sdc2 * 3905536 3907028991 1951561728 fd Linux raid autodetect

     

    Tabi mount etmeye kalkınca şu hatayı aldım:

    # mount /dev/sdc1 /mnt

    mount: unknown filesystem type ‘linux_raid_member’

    Ufak bir araştırma ile önce diski taktığım sistemde bir array oluşturmam grektiğini gördüm ancak array oluşturma denemem tek disk doğal olarak aynısı olması gereken tek partition bulunduğu için başarısız olmuştu. Velhasıl biraz daha bakınınca array için kullandığım --assemble komutuna --run anahtarını da eklemem gerektiğini gördüm;
    
    
    # mdadm --assemble --run /dev/md0 /dev/sdc1
    
    
    Komutu ile tek partition ile arrayi oluştumayı başardım ve /dev/md0 cihazını /mnt altına bağlayarak verileri almaya başlayabildim.
  • Amazon S3 buketini Linux’a mount etmek

    Eğer Amazon S3 servisindeki buketinizin içindeki dosyaların bilgisayarınızdaki kopyalarında değişiklik yaptıktan sonra illaki Firefox s3 organizer gibi bir eklenti ya da s3cmd gibi bir linux konsol komutu üzerinden buketteki dosyayı güncellemekten sıkıldıysanız, fuse tabanlı s3fs ile buketlerinizi yerel makinenize mount ederek dosya sisteminin bir parçası gibi kullanabilirsiniz.

     

     

    Malesef şimdilik Ubunut paket deposunda bulunmamakta ancak kaynaktan kurulum düşündüğünüz kadar zor değil. Sadece kaynağı derlerken gerekli olan bağımlılıkların sisteminizde kurulu olması gerekmekte. Kuruluma hazırlık için öncelikle bu bağımlılıkları kurmanız gerekmekte:

    # sudo apt-get update

    # sudo apt-get install build-essential gcc libfuse-dev fuse-utils libcurl4-openssl-dev libxml2-dev mime-support build-essential libcurl4-openssl-dev

    Bağımlılıkları kurduktan sonra s3fs kaynak dosyasını indirebilirsiniz. Ben s3fs’i derleyip kurduğumda son sürüm olarak 1.71 bulunmaktaydı. Eğer daha güncel bir sürüm varsa bunu kullanmayı deneybilirsiniz. Ancak bağımlılıklardan dolayı sorun yaşama ihtimaliniz durumunda çözümünü araştırmanız gerekecek. Şimdi güncel kaynak dosyasını indirelim:

    # wget http://s3fs.googlecode.com/files/s3fs-1.71.tar.gz

    İndirdiğimiz kaynak dosyasını açalım;

    # tar -xvzf s3fs-1.71.tar.gz

    Derleme ver kurulum işlemlerini yapalım:

    # cd s3fs-1.71

    # ./configure

    # make

    # sudo make install

    s3fs kurulumu bu kadar. Şimdi dosyanın nereye kurulduğuna şu komut ile bakabiliriz:

    # which s3fs
    /usr/local/bin/s3fs

    Bundan sonra s3fs için bir password dosyası oluşturup buketlerimizin Access ve Secret keylerini içine yazmak olacak. Oluşturacağımız dosyanın lokasyonu ve adı aşağıdaki gibi olmak zorundadır:

    # nano /etc/passwd-s3fs

    access_key:secret_key

    ctrl+x

    # chmod 640 /etc/passwd-s3fs

    Böylece bağlayacağımız buketi mount ederken s3fs’in okuması gereken access ve secret keylerin bulunduğu dosyayı da oluştumuş olduk.

    Bundan sonra işimiz sadece bir klasör oluşturup buketi o klasöre bağlamaya kalıyor.

    # sudo mkdir /mnt/herhangi_bir_klasör_ismi

    # sudo s3fs benim.buketimim.adı /mnt/herhangi_bir_klasör_ismi

    tabi bu işlem sonucunda doğal olarak o klasöre sadece root ya da sudo kullanıcısı ulaşabilecek demektir. izinleri ayarlamak için gerekli işlemleri araştırmadığım için buraya yazmıyorum, bu da sizin ödeviniz olsun.

  • Yarım kalan recovery ve kullanıma girmeyen RAID array bölümü.

    Başıma gelen bir diğer sorun ise recovery’nin bir şekilde yarım kalması ve bu yüzden RAID arraye ait bölümün birisinin kullanıma girmemesiydi ([_U] durumu).

    Tekrar recvery denediğimde bana “Device or Resource Busy” hatası döndürdü durdu.

    # mdadm –manage /dev/md0 –add /dev/sda1
    mdadm: cannot open device /dev/sda1: Device or resource busy

    MD array’indeki bölümü durdurmama bile müsaade etmedi.

    # mdadm –stop /dev/md2 /dev/sda3
    mdadm: fail to stop device /dev/sda1: Device or resource busy

    İnanılmaz birşey ancak bir türlü durmuyordu. Onu durdurabilmek için baya bir uğraştıktan ve araştırdıktan sonra öncelikle failed olarak işaretlemem ve ardından remove etmem gerektiğini öğrendim.

    # mdadm –fail /dev/md2 /dev/sda3
    mdadm: set /dev/sda3 faulty in /dev/md2

    # mdadm –remove /dev/md2 /dev/sda3
    mdadm: hot removed /dev/sda3

    Sonunda onu durdurmayı başardım ve doğrudan recovery işlemini başattım. recovery işlemini başlattığımda otomatik olara sda3 bölümün md2 arrayine ekleyip resync işlemine başladı. Bu yazıyı yazarken recovery henüz bitmemişti, bitmesine de daha en az 3 saat vardı. O yüzden bölümün kullanıma girip girmediğini yazmıyorum.

  • inactive RAID array sorunu.

    RAID recovery sırasında ilk karşılaştığım sorun inactive raid array oldu. Bir arrayin inactive olup olmadığını anlamak için “# cat /proc/mdstat” komutu çıktısına bakmanız yeterli. Eğer çıktıda listelenen md’lerin karşılığında hepsinde “active” yazıyorsa sıkıntı yok demektir.  Aşağıda örnek bir çıktı görebilirsiniz.

    Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] [linear] [multipath]
    md0 : inactive sdb1[1](S)
    2102464 blocks

    md1 : active raid1 sda2[0] sdb2[1]

    Bu durumda md0 için restorasyon işlemini muhtemelen başlatamayacaksınız. Sorunu çözmek için arrayleri tekrar taramasını sağlamak gerk bunun için aşağıdaki komutu veriniz:

    # mdadm –examine –scan
    ARRAY /dev/md0 level=raid1 num-devices=2 UUID=158bb15a:5c2c4636:776c2c25:004bd7b2
    ARRAY /dev/md1 level=raid1 num-devices=2 UUID=75dc21a0:5e11dd36:776c2c25:004bd7b2
    ARRAY /dev/md2 level=raid1 num-devices=2 UUID=2aeee9cb:e15b14af:776c2c25:004bd7b2
    spares=1

    Sonrasında düzelip düzelmediğine “# cat /proc/mdstat” komutuyla bakarak eğer düzelmişse recovery işlemine geçebilirsiniz.