26.04.2019

pureline

Renksiz bir linux terminali yerine daha renkli bir terminal elde etme yolundaki ilk çalışmamın ardından Reddit'te şu gönderi ilginç geldi.

Daha önce PowerLine'ı denemiştim, ama amaca göre biraz aşırı doz izlenimi yarattığı için çok ilgimi çekmemişti. Pureline daha sade. Hoşuma gitti. Github sayfasında bazı şeyler anlatılmış, ama biraz daha açıklama fena olmaz herhalde.

Profil klasörümün altında github repo'sunun kopyasını yarattım:

# git clone https://github.com/chris-marsh/pureline

Bu şekilde ~/pureline klasörü yaratıldı, ve altına ilgili dosyalar indirildi. Bu klasörün altında bir de configs diye bir alt klasör var. Burada örnek bazı yapılandırmalar verilmiş. Bunlardan en fazla göstergesi (ya da modül) olan powerline_full_256col.conf dosyasını profilimin altına kopyaladım.

# cp ~/pureline/configs/powerline_full_256col.conf ~/.pureline.conf

Daha sonra da Github sayfasında önerilen, .bashrc ya da .profile dosyasına şu satırları eklemek:

if [ "$TERM" != "linux" ]; then
    source ~/pureline/pureline ~/.pureline.conf
fi


Bundan sonra eğer açıksa terminali kapatıp yeniden açmak lazım. Şu şekilde bir terminal görünecektir:


Burada gözüken göstergeleri (modülleri) değiştirmek/düzenlemek için ~/.pureline.conf dosyasıın açmak gerek. Her göstergenin ~/pureline/pureline dosyası içinde bir fonksiyonu var. ~/.pureline.conf içinde ise şu bölüm altında kullanılan göstergeler belirleniyor:

# All modules are enabled. Uncomment/comment to enable/disable a module
declare -a PL_MODULES=(
    # Module                Background  Foreground
    'time_module            MyLightGrey Black'
    'battery_module         MyBlue      Black'
    'user_module            MyLime      Black'
    'ssh_module             MyYellow    Black'
    'virtual_env_module     MyBlue      Black'
    'path_module            MyBlue      Black'
    'read_only_module       MyRed       White'
    'background_jobs_module MyPurple    White'
    'git_module             MyGreen     Black'
    'return_code_module     MyRed       White'
    'newline_module'
    'prompt_module          MyDarkGrey  White'
)


İlk sütun dosyadaki fonksiyon ismi. İkinci sütun göstegenin fon rengi, üçüncü sütun ise font rengi. Örneğin terminalde zamanı yazdığımız bölüm için fon rengi MyLightGrey, yazı rengi olarak da Black kullanılmış. Bu satırın baştan sona tek tırnak arasında yazıldığına dikkat!

İstenmeen modüller çıkartılıp, yerleri değiştirilebilir, hatta yenileri yazılabilir.

23.04.2019

git işleri

Git konusuna yabancıyım. Bu kısa giriş ilk başlayanlar için faydalı olabilir.

Elimizde bir proje var. Bunun üzerinde çalışıyoruz. Sürekli değişiklikler yapıyoruz. Yaptığımız değişikliklerin sürümlerini denetlemek istiyoruz. Hatta ortak çalışacak kişilerle birlikte kod paylaşımı yapabilmeyi, belki de açık kaynak kodlu projemizin başkalarının çalışmalarına taban olmasını umuyoruz. Bu amaçla git gibi bir sürüm kontrol sistemi kullanabiliriz.

Önce bir klasör oluşturup bunu git init ile "ilklendirelim". Sonrasına proje oluşurken bu klare yeni dosyalar da eklenecek. İşin bir noktasında uygun gördüğümüz dosyaları git add komutu ile hazırlık aşamasına (staging area) ekleyebiliriz. Bu aşamada henüz sürüm denetim sistemine dahil olan birşey yok. İstenen dosyalar eklendikten sonra hazırlık aşamasındaki dosyaların tümünü git commit komutu ile sürüm kontrol sistemine dahil edebiliriz. Bu adımdan sonra yerel bir depomuz (repository) oldu. Bu depoyu bir internet deposuyla eşzamanlı hale getirmemiz mümkün. Bunun için önce git remote add komutuyla önce bir uzak depo eklememiz, daha sonra da git push komutu ile yerel depomuzu uzaktakiyle eşzamanlı hale getirmemiz gerek.

İlk git yapılandırması için bir kullanıcı adı bir de eposta adresi gerek. İlk yapılandırma şöyle:

# git config --global user.name "kullanıcıadınız"
# git config --global user.email "eposta@adresiniz.com"

Mevcut ayarlarımızı ve ayarların nerden geldiğini görmek istersek:

# git config --list --show-origin
file:/home/metin/.gitconfig     user.name=kullanıcıadınız
file:/home/metin/.gitconfig     user.email=eposta@adresiniz.com


ya da tek tek bu bilgileri görmek için:

# git config user.name
kullanıcıadınız

olabilir.

İlk ayarlar yapıldı. Şimdi bir klasör yaratalım

# mkdir ~/Belgeler/git/proje1
# cd ~/Belgeler/git/proje1

ve bu klasörü git işlemleri için ayarlayalım (initialize). Bu işlem ile proje1 klasörünün içinde bir .git alt klasörü oluşturulur ve bu klasörün içinde projeye dahil edilen belgeler için sürüm denetlemesi (version control) yapılabilmesi mümkün olur:

# git init

Diyelim ki bu klasördeki tüm txt dosyalarını projeye dahil etmek istiyoruz. Bu durumda verilecek komut:

# git add *.txt

Yapılan değişklikler de git add ile kapsam içine alınmalı. Son olarak değişiklikleri işlemek için git commit kullanılır.

# git commit -m "tum txt dosyaları eklendi"

Burada -m ile son commit ile yapılan işlerin kısa bir özeti verilir, daha sonra geriye dönüp ne yapıldı diye bakılması durumuna karşı.

Buraya kadar yapılanların tümü yerel bilgisayar üzerindeydi. Şimdi oluşturulan verilerin örneğin Github'a senkronize edilmesine bakalım. Öncelikle Github üzerinde bir repository oluşturmamız gerek. Ben BuyukProje diye bir repository oluşturdum. Şimdi mevcut klasörü bu repository ile ilişkilendirmemiz gerek. Repository'nin adresin kopyalayıp aşağıdaki en son alana yapıştırıyorum.

# git remote add BuyukProje http://github.com/kullaniciadi/repository-adi.git

En son olarak commit edilen değişikliklerin git sunucusuna aktarılması için de

# git push -u BuyukProje master

komutu kullanılır. Bu aşamada Github kullanıcı adı ve şifresi istenebilir.

Yapılan işlerin bir kaydını görmek için

# git log

veya mevcut durumun bilgisini almak için

# git status

Hangi uzak sunucuları yapılandırdığımızı görmek için

# git remote

kullanılır. -v anahtarı ile URL ayrıntıları görüntülenebilir.

Öte yandan mevcut bir repository'nin kopyasını çıkarmak/indirmek istiyorsak şu komut kullanılır:

# git clone http://github.com/kullanıcı/proje3

Bu şekilde mevcut klasörün içinde proje3 alt klasörü oluşturulur ve içerik bu alt klasörün içinde yaratılır. Eğer sizin diskinizdeki alt klasör adının proje3'ten farklı birşey olmasını istiyorsak en sona bu klasör ismini yazabiliriz. Her iki durumda git init'te olduğu gibi bir .git alt klasörü daha yaratılarak sürüm denetimi için gerekli veriler burada depolanır.

Üzerinde değişiklik yapılan bir dosyanın tüm değişikliklerini geri alıp, en son repository'den alınan haline geri getirmek için ise

# git reset --hard

gibi birşey buldum, benim çok işime yaradı.

--
https://git-scm.com/book/en/v2/Git-Basics-Viewing-the-Commit-History
https://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes

17.04.2019

Google'ın adil olmayan oyunları

Büyük abimiz Google ile ilgili komplo senaryoları her yerde. Öte yandan hayatımızın her noktasına nüfuz eden hizmetleri ile artık neredeyse vazgeçilmez konuma geldi. Ama artık toplu olarak bir Google perhizi yapmamızın zamanı geldi. Alternatif arama motoru DuckDuckGo, Google Chrome'a alternatif Firefox, Android'e yerine LineageOS, artık ne varsa...

Ben de bunları bir Google platformundan paylaşıyorum, bu da garip aslında. Belki de alternatif WordPress'e falan taşımalıyım.

En son Reddit'te rastladığım bir haber üzerine iyice tedirgin oldum. Firefox'un eski geliştirici kadrosundan olduğu söylenen Johnathan Nightingale'in Tweet'leri küçük bir deprem etkisi yaratmış durumda. Zdnet'teki haberde de doğrulanan bilgiler çok ciddi suçlamalar.

Nightingale'e göre yıllarca Google, kendi ürünü Google Chrome'u öne çıkarabilmek için Firefox ile oynayıp durmuş. Üstelik de bunu yaparken "Aa pardon, kusura bakmayın, yanlışlıkla oldu. Firefox ile aynı taraftayız elbette, sizi destekliyoruz" gibi yalan tepkiler ile göz doldurmuş.

Reddit'in r/firefox sub'ında Google ile çeşitli komplo senaryoları paylaşılıyor.

İnternet tarayıcısını seçme özgürlüğü internet üzerindeki en temel haklardan biri olmalı. Arabanı seçebilmek, telefonunu, yediğin yemeği seçebilmek gibi birşey bu. Ama gelinen durum şu ki, yeni kurulan bir bilgisayara ilk yüklenen yazılımlardan biri Google Chrome oluyor. Google garip bir şekilde hem teknoloji ile yakından ilgilenen kesimin, hem de bilgisayarı sadece sosyal ağlara bağlanmak için kullanan kişilerin ilgisini çekerek Chrome'u herkesin gözüne soka soka dünyanın en çok tercih edilen tarayıcısı yapmış durumda. Üstüne Microsoft'un Edge'in mevcut motorunu bırakarak Chromium tabanlı bir sürüme geçiyor olması, piyasadaki chromium tabanlı tarayıcıların oranını iyice artıracak.Standartları Google'ın güdümündeki Chrome/ium belirleyecek. Zaten yapılmaktaydı, Google'un sunduğu sayfalarda Firefox'un performansı bilerek ama yanlışlıkla oldu denilerek düşürülecek. Biz de "Bu Firefox da ne kötü oldu ya" deyip diğer tarafta geçmeyi mantıklı bulacağız.