özgür dünya

Uzak Bilgisayarda Kod Geliştirme

Bugün genellikle vi ve vim ile çözülen sorunlardan birisi olarak uzak bilgisayarda kod geliştirme yapma konusunda en pratik bulduğum alternatif yöntemden bahsedeceğim. Microsoft'un geliştirdiği açık kaynak kodlu Visual Studio Code üzerinde eklentilerle bu işi yapacağız.

Öncelikle kendi sisteminizde Visual Studio Code'un yüklü olduğunu varsayıyorum ve eklentilerde "Remote VSCode" olarak aratıp ilgili eklentinin yüklenmesini sağlamalısınız.Eklenti yüklendikten sonra uygulamayı yeniden başlatmanız gerekmektedir.


Daha sonra ve ilerleyen tüm süreçte uzaktaki bilgisayarda (kodların bulunduğu) aşağıdaki komutları çalıştırarak rmate uygulamasını yüklemeniz gerekmekte:
sudo wget -O /usr/local/bin/rmate https://raw.github.com/aurora/rmate/master/rmate
sudo chmod a+x /usr/local/bin/rmate
Daha sonra tekrar kendi bilgisayarınızda VS Code uygulamasında iken CTRL + P tuşlarına basarak açılan komut kutusuna ">Remote: Start Server" yazmanız gerekmekte. Böylelikle sisteminiz uzak makineye bağlanmaya hazır olacaktır.

Ve son olarak kendi bilgisayarınızda aşağıdaki komut ile ilgili porttan giriş sağlamanız gerekmektedir.Tabi ki IP adresini kendinize göre tanımlayarak.
ssh -R 52698:localhost:52698 UZAKMAKİNEIPADRESİ
Bu işlemlerden sonra uzak bilgisayarda aşağıdaki komutu yazdığınızda VS Code üzerinde ilgili dosya açılabilecektir.
rmate deneme.py
VS Code üzerinde ilgili sunucu başlatılmasını başlangıçta yapmak için kullanıcı ayarlarında aşağıdaki kısmı aktif etmek gerekmekte.
  "remote.onstartup": true,
kaynak: https://medium.com/@prtdomingo/editing-files-in-your-linux-virtual-machine-made-a-lot-easier-with-remote-vscode-6bb98d0639a4 

Etki Alanı Nedir?

Etki alanı, ekşisözlükteki ilk tanımı gibi Windows literatüründe domain'e karşılık gelmektedir. Bir çok kişinin bunu yalnızca bu şekilde bilmesi aslında temel olarak bir yanılgıdır. Bu yanılgının kaynağı dilimizde teknolojik alanlarda (özellikle internet alan adları şeklinde kullanılan) "domain" kelimesinin de kullanılmasından kaynaklanmaktadır. Oysa ki bilgisayar alanında tüm domain'lerin Türkçe karşılığı "Etki Alanı"'dır.

Windows kurulu bilgisayarlar 2 farklı ortamda bulunabilirler.Bu ortamlar ya Çalışma Grubu (workspace), ya da Etki Alanı (domain)'dır. Varsayılan olarak Windows kurulu bilgisayar çalışma grubu içerisinde bulunup bu modda iken aynı ağa bağlı diğer cihazları görebilip iletişim kurabilmesine rağmen neredeyse diğer kurumsal özelliklerin hiçbirisine sahip değildir. Windows kurulu bilgisayarın bir diğer ortamı ise Etki Alanı ortamıdır. Bu ortamda ise merkezi bir "sunucu"da bulunan kullanıcı, makine ve diğer bilgiler, aynı etki alanına sahip tüm bilgisayarları ayrı ayrı veya tümleşik olarak etkileyecek biçimde kurgulanabilmektedir.

Etki Alanı ile alakalı olmayarak Windows kurulu bilgisayarlarda varsayılan olarak "Security Accounts Manager" (SAM) isminde bir yapı bulunmaktadır. Bu yapı içerisinde bilgisayardaki yerel kullanıcı bilgileri tutulmaktadır. Bu bilgiler GNU/Linux sistemindeki /etc/passwd ve diğer temel dosyaların bulunduğu yapıyla kıyaslanabilir.

Fakat kurumsal ihtiyaçlardan dolayı tüm kullanıcıların merkezi bir sunucuda tutulup, her bir bilgisayarda ayrı ayrı tutulmaması gereği düşünülmüş ve Etki Alanı Denetçisi (Domain Controller) kavramı ortaya çıkmıştır.

Etki Alanı Denetçisi içerisinde bir çok yapıyı barındırmaktadır. Bu yapılardan en önemlisi kullanıcı bilgilerinin tutulduğu LDAP (Basit İndeks Erişim Protokolü) olarak görülebilir. LDAP bir protokol olup, bu protokolü kullanan bir çok sunucu uygulaması bulunmaktadır. Bu uygulamaları aşağıdaki gibi özetleyebiliriz:

  • OpenLDAP
  • 389 DS (RedHat tarafından kullanılmakta, FreeIPA tarafından tercih edilmekte)
  • LDB (SAMBA4 tarafından kullanılmakta)
  • OpenDS (Sun tarafından kullanılmakta)
  • IBM Directory Server (IBM tarafından kullanılmakta)
  • MS LDAP (MS Aktif Dizin tarafından kullanılmakta)
Bu yazıda anlaşılması gereken en önemli şey Dizin Sistemi (LDAP) ile Etki Alanı Denetçisi'nin aynı şey olmadığıdır. Etki alanı denetleyicisinde dizin sisteminin yanında genellikle DNS sunucu, NTP sunucu ve Kerberos gibi bir ticket sistemi de bulunmaktadır. Benim bildiğim ve aktif kullanılan en önemli 3 etki alanı denetçisi bulunmaktadır. (Univention Corporate Server, Zentyal ve RazDC gibi 3 farklı etki alanı denetçisi de bulunmaktadır)
  • MS Aktif Dizin
  • SAMBA4
  • FreeIPA
Bunlardan ilki ve en çok kullanılanı MS Aktif Dizin olarak söyleyebiliriz. MS Aktif Dizin'in doğal olarak MS Windows'a tam desteği var. GNU/Linux sistemler için ise SAMBA ve Winbind aracılığı ile neredeyse tüm dağıtımlarda kullanılan bir entegrasyonu bulunmaktadır. MS Aktif Dizin'in 2008 sürümünden ilham alınarak benzer şekilde açık kaynak kodlu olarak yayımlanan SAMBA4 de bir etki alanı denetçisidir. Burada belirtmemiz gerekir ki SAMBA, 4 sürümünden önce yalnızca istemciyi "etki alanı"'na dahil etmek için kullanılan bir servis iken SAMBA4 ile birlikte Etki Alanı Denetçisi modu da kullanılabilir olmuştur. Böylelikle MS AD gibi bir etki alanı denetçisi özelliğine sahip olmuştur. Bu özelliği ile MS Windows cihazların da etki alanına bağlanabilmesini sağlayabilmektedir. Yeni geliştirilen özellikle MS Aktif Dizin'in başka bir özelliği olan GPO(Grup İlkesi Nesnesi)'ların kullanılmasına da izin verebilmektedir. Fakat belirtilmesi gerekir ki Server 2008 sonrasındaki özelliklerde problemler bulunabilmektedir.

İlk iki etki alanı denetçisinden bahsettikten sonra Linux üzerinde kullanılabilen bir diğer etki alanı denetçisinden bahsedeceğim. FreeIPA, RedHat tarafından ve topluluk tarafından desteklenen bir etki alanı denetçisidir. İsminin IPA'sının açılımı: Identity (Kimlik), Policy (Politika) ve Audit (Denetim)'dir. Kendi hakkında sayfasında belirtildiği gibi kimlik derken "makine, kullanıcı, sanal makineler, gruplar, kimlik doğrulama bilgileri" kastedilmektedir. Politika derken makine bazlı erişim kontrol işlemleri kastedilmektedir. Denetim kısmı ise ertelendiği belirtilmektedir. Daha sonraki yazılarda bu konularda daha detaylı bilgiler vereceğim.

Etki Alanı Denetçilerinin yönetim arayüzlerinden bahsetmemiz gerekirse. MS Aktif Dizin'i MS Sunucu sürümünde veya "Uzak Sunucu Yönetim Araçları"nda yer alan "Kullanıcılar ve Bilgisayarlar" uygulamasından yönetilebilmektedir. Bir cümlede belirttiğimiz GPO ve başka işler için ayrı araçlar bulunmaktadır. Ayrıca ilgili sunucuyu yönetebilmek için üçüncü parti ücretli farklı araçlar bulunmaktadır. Bunlardan kullandığım iki tanesi için: ManageEngine'in ADManager Plus ve LDAPSoft AD Admin.Daha fazla AD yönetim araçları da ilgili adreste bulabilirsiniz.

SAMBA4 Etki Alanı denetçisinin kontrolü için de yukarıda belirtilen AD araçlarını hatta Microsoft'un kendi aracını bile kullanabilirsiniz. Bunlara ek olarak webmin modülleri ve github üzerinde farklı projelerde belirtilmiş uygulamaları kullanabilirsiniz. Bunlardaki temel özellik LDAP okuyucu ve düzenleyici olduğu için şema dizilimi belli olduktan sonra oldukça rahat kullanılmaktadır. Ki zaten SAMBA4 ve MS AD'nin LDAP dizilimi birbirine çok fazla benzemektedir.

FreeIPA hakkında daha sonra daha detaylı bilgiler vereceğim fakat LDAP yönetim araçlarına ek olarak kendi FreeIPA arayüzünden de yönetebilmektesiniz.


Burası Vim, buradan çıkış yok!

Stackoverflow'da dün yayınlanan blog yazısına göre vim editöründen çıkmayı en çok aratan 2. ülke olmuşuz. Bunun nedenleri ayrı bir tartışma konusunda yer alacağını söylemekle birlikte yaklaşık iki gündür sosyal medyada dönen geyikleri izlemekteyiz. Bu yazımda ise basit bir biçimde Vim'den nasıl çıkılacağını, ve daha büyük kabus olan vi'de düzenleme yapıp çıkabilmeyi anlatacağım. Tabi Vim'in onlarca verimli ve güzel özelliği varken bunları anlatmak biraz absürt olsa da kim bilir bu seviyeden durumu yakalayan arkadaşlar daha detaylı ilgilenmeye başlarlar.

Öncelikle espriler ve geyiklerden sıyrılıp Vim'den çıkış için gerekli tuş kombinasyonunu yazmak gerekir. "Visual mod" yani varsayılan mod açıkken aşağıdaki komutu yazarsanız editörden yaptığınız değişikleri kaydetmeden çıkarsınız

:q!

Eğer kaydederek çıkmak istiyorsanız:

:wq

yazmanız gerekmekte. Yani aslında aranılan mucizevi komut budur.

Eğer vim'inizin ayarları yoksa yön tuşları ve backspace sorunlu karakterler çıkartacaktır. Bunu önlemek için geçici olarak:

:set nocompatible
:set backspace=2

komutlarını yazmak veya bulunduğunuz kullanıcı üzerinde kalıcı olması için bu komutları ev dizininizdeki .vimrc içerisine yazmanız gerekli. yani:

printf "set nocompatible\nset backspace=2\n" >> ~/.vimrc

yazmanız gerekmekte.

Bir de eğer "vim" kurulu olmayan bir bilgisayarda veya bash ayarlarında vi yazınca vim'e yönlendirmiyorsa ilk girdiğinizde "yön tuşları" ve "geri" tuşlarının saçma sapan görevler yaptığına şahit olmuş olabilirsiniz. Bu illetten kurtulmak için için kalıcı olarak aşağıdaki komutu kullanabilirsiniz.

printf "alias vi='TERM=rxvt-unicode-256color vi'" >> ~/.bashrc

İlk paragrafta da bahsettiğimiz gibi popüler kültürün bir iki gündür meşhur ettiği bu konu vim'in esprili bir noktası fakat gerçek anlamda verimlilik sağlamak için vim'de kullanılan oldukça güzel araçlar ve eklentiler bulunmaktadır. Araştırarak güzel noktalara varabilirsiniz.

Microsoft'un Gelir Dağılımı Hakkında

Birçok insanın çoğu zaman merak ettiği, teknoloji alanında büyük şirketlerin gelir modelleri neler ve gelirlerini nereden elde ediyorlar konulu bir araştırma Visual Capitalist tarafından 12 Mayıs 2017 tarihinde duyuruldu.

Bu rapora göre Microsoft'un gelirleri aşağıdaki yüzdeyle gerçekleşmekte:

Bu rapordan çıkartılan ön sonuç, genel anlamda MS'un Office gelirleri %28 ile şirketin en büyük kazandığı noktayı gösteriyor. %22 ile Windows'un sunucu tarafında yaptığı yatırımların sonucunu görüyoruz. Tabi ki bu tabloda sunucu tercihleri konusunda %9 kar elde ettikleri istemci Windows satışının önemli rol oynadığını unutmamamız gerekmektedir. Yüzde 18'lik "Diğer" bölümü de oldukça muamma olduğu için aslında önemli bir noktayı barındırdığını unutmamak gerekir.

Bu tabloda ana ürünleri olan MS Windows işletim sisteminden ana kalem olarak kar etmedikleri açıkça görünüyor. Bunu düz bir biçimde bakıp "işletim sisteminden gelir elde edemiyoruz" şeklinde yorumlayacak kendi yöneticileri elbette bulunmamaktadır. Çünkü işletim sistemini yalnızca diğer yan ürünlerini iyi bir biçimde pazarlayabilmek için "ucuz"a satmaktalar. Ve bir anlamda daha önce onlarca kez belirtildiği gibi sürümden kazanmaktalar.

Özgür ve açık kaynak işletim sistemlerinin bu tabloda Ofis anlamında bir üstünlük elde etmesi gerekliliğinin bir kere daha altını çizmek istiyorum. Eğer kullanıcılar Ofis alışkanlıklarını değiştirirse Microsoft'un Windows'una bağlı kalmamak için en büyük kalelerden ilki olan MS Office bağımlılığından kurtulabiliriz. Tabi bu adımdan sonra bir de Windows Server'ın muadil yapısının detaylandırılması önemli noktalardan birisi. Çok daha profesyonel bir çözüm sunulup, kullanıma gidilmesi gerekiyor. Zamanla hepsi olabilir ama yol haritasının bu şekilde olması gerektiğini düşünmekteyim.

Desktop dosyası anatomisi

Linux "X Masaüstü Sistemleri"nde genel olarak yani tüm Masaüstü ortamlarında masaüstünde görüntülenen ikonlar .desktop dosya tipiyle tutulmaktadır.

.desktop dosya tipinde elemanlar aşağıdaki gibi listelenmektedir:
eleman=değer

.desktop dosyasında gerekli elemanlar: 

Type : ikon tipini belirtir. Yandaki seçeneklerden birisi olabilir: Application, Link ve Directory.
Name : ikonun görüntülecek ismini belirtir.
Exec : tıklanıldığında çalıştırılacak komutu gösterir.

.desktop dosyasında opsiyonel elemanlar: 

Version – ikonun versiyonunu belirtir
Encoding – dosyanın encode tipini belirtir.GenericName – jenerik ismini belirtir.
Comment – ikon hakkında yorumIcon – ikonun görselinin bulunduğu dizin veya ismini belirtir.
Path – hangi dizin üzerinde çalıştırılacağı belirtilir.Terminal – terminal üzerinde çalışıp çalışmayacağı belirtilir.
MimeType – mimetipini belirtir
Categories – uygulamanın bulunduğu kategorileri belirtir

Örnek bir desktop dosyası:

[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Terminal=false
Exec=ls -l
Name=Ekranı Görüntüle
Icon=$HOME/ikonlar/ikon.png