I’m Cem Unalan. I blog about things that I build, things that I consume and things that happen to me.

Neler Yapıyorum – 4

5 April 2020

Mac’ten (Hackintosh’tan) Ubuntu’ya Geçiş

Yaklasik 9 aydir, Ryzen islemcili bilgisayarimda Hackintosh kullaniyorum. Vanilla kurulumla yaptığım için, guncelleme patch yapma gibi mevzulara girismeden kurabildim. Bu yuzden de epey de memnundum. Benim gibi development yapan birinin karsilasacagi yegane problem, sanallastirma sorunlari sebebiyle Docker‘ın çalışmaması.

Normalde lokal ortamımda herhangi bir sanallaştırma kullanmadığım için çok lazım olmuyordu. PHP işleri için Laravel Valet‘i tercih ediyorum.

Ancak bu sefer bir iş için gerekti. Bi yandan hem Ubuntu’yu merak ettiğimden ve Linux uzerinde Docker kullanma deneyimi uzerine iyi seyler duydugumdan denemeye karar verdim.

Docker deneyimi gercekten cok iyi. Arada VM’in olmadigi, performans kaybinin cok az oldugu bir senaryoda development yapmak acayip keyifli. Senelerce Mac’te Docker ile calisirken korkunc bir performansla karsilastiktan sonra ilac gibi geliyor. Docker’i islerinizde siklikla kullaniyorsaniz Linux’e gecis ciddi dusunulebilir.

Gunluk islerde de pek bir zorluk yasamadim. Eski nesil toolarin hepsi zaten terminalde, yeni nesil toolarin hepsi de Electron’la yazilmis durumda. Isteyip de kuramadigim bir uygulama olmadi.

Uygulama kurmak basit ancak Ubuntu Yazilim Merkezinden kurarsaniz Snappy paket yoneticisi ile yukleniyor. Bu yeni bir paketleme turu ve hala bazi problemler var. Uygulamalarin baslangic hizi cok kotu. Ayrica bazi buglar da var. Ornegin Snappy ile kurdugum uygulamalarda linklere tiklayinca tarayiciyi acamiyorum.

Docker

Docker benim icin hep lokalde bir ortam yaratmak icin kullanilan bir tool idi. Ancak arkasindaki fikirleri tam bilmiyordum. Izole bir ortami nasil olusturuyor? Ne gibi isletim sistemi ozelliklerini kullaniyor?

Bunlarin cevabinin tamami bu videoda var. Izlemenizi siddetle tavsiye ederim. Videoyu izleyince Docker’in spesifik Linux kernel ozelliklerine ihtiyac duydugunu, eski anlamda VM’lerle alakasinin olmadigini, Mac/Windows kurulumlarinda neden Linux VM ile geldigini sokuyorsunuz.

Bu noktadan bakinca, Mac/Windows makinelerde sadece lokal ortam olusturmak icin Docker kurmak epey sacma geliyor.

Ayni zamanda bonus olarak Docker’in tanitim sunumunu da izleyebilirsiniz. Bu video’da da LXC’nin uzerine neler getirdiklerinden bahsedilmis.

Klavye, Xmodmap ve Vim

Yukarida Ubuntu’da gunluk kullanimda zorlanmadigimdan bahsettim. Aslinda zorlandim. Cunku Mac’ten Linux’e gecis ayni zamanda klavyenin de ciddi bir sekilde degismesi demek.

Mac’in en buyuk avantajlarindan biri sistem modifier tusunun cmd tusu olmasi. Kopyalamak cmd + c, tumunu secmek icin cmd + a yapiyorsunuz. Dolayisi ile ctrl tusu tamamen terminaller icin bosta birakilmis durumda. Terminalde ctrl + c yaptiginizda bu sadece SIGINT anlamina geliyor.

Linux’te elbette bir cmd tusu yok. Isin kotusu tum sistem kisayollari ctrl’e verilmis durumda. Kopyalamak ctrl + c, tumunu secmek icin ctrl + a gibi gibi. Elbette terminale geldiginizde bir karmasa oluyor. Artik ctrl + c kopyalamak mi yoksa SIGINT mi?

Bu durumu cozmek epey zor ve ben hala tam bir cozume varabilmis degilim. Ancak su sekilde bazi degisiklikler yaptim.

Oncelikli olarak elimin alistigi sekilde, Mac’te cmd’in bulundugu yere ctrl tusunu aldim. Onun bir yanina ise alt tusunu atadim. Boylece Mac’te alistigim gibi kopyalama (ctrl + c), yapistirma (ctrl + v), tumunu secme (ctrl +a), sekme acma (ctrl + t), sekme kapama (ctrl +w) aksiyonlarini yapabiliyorum. Ellerim fizikesel olarak Mac klavyesindeki tuslarin yerine basiyor.

Ancak yukarida bahsettigim terminal ikilemi icin bir cozume daha girismedim. GNOME terminalde default olarak kopayalma yapistirma islemleri icin shift tusu kullaniliyor. Kopyalamak ctrl + shift +c mesela.

Ubuntu’da bu klavye ayarlamalarini yapabileceginiz cok fazla katman var. Ben bunlarin hepsini Xmodmap kullanarak yaptim. Xmodmap, Xorg display server’in bir tool’u. Klavye tus kodlarini yeni fonksiyonlara atayabiliyorsunuz. Epey karisik bir config dosyasi var. Tavsiyem su: kesinlikle internetten buldugunuz Xmodmap configlerini copy paste yapmayin. Once su iki kaynagi okuyun.

  1. https://wiki.archlinux.org/index.php/Xmodmap
  2. http://xahlee.info/linux/linux_xmodmap_tutorial.html

Bu bahsettigim degisiklikleri yaptigim configimi burada bulabilirsiniz: https://github.com/raicem/dotfiles/blob/master/.Xmodmap

Tabi macera burada bitmiyor. Mac’teki cmd ve ctrl ayriminin kaybolmasiyla VSCode ve PHPStorm icindeki Vim duzenim de bozuldu.

Ben editor olarak Vim’i kullanmiyorum ama editorlerin icinde gezinmek icin Vim kisayollarini kullanmaya bayiliyorum. Biraz tatli su Vim’cisiyim diyebilirim yani.

Elbette Mac’te cmd + w ile sekme kapatabiliyor, cmd + a ile tumunu sec yapabiliyordum. Ubuntu’ya gecince bunlarin hepsi patates oldu. ctrl + w’nin Vim icin bir anlami var. Artik sekme mi kapatacak yoksa Vim’deki gorevini mi icra edecek?

Ozetle bu sekilde cmd ve ctrl ayriminin yok olmasindan dolayi bir suru karmasiklik cikti. Hepsini tek tek cozmek gerekiyor ve isin kotusu yarin obur gun format atarsam tum ayarlari bastan yapacak olmam beni biraz uzuyor.

cron.weekly ve The Syscast podcast

Ikisi de Laravel tayfasindan takip ettigim Mattias Geniar tarafindan uretiliyor. Podcast’i takip etmeyi cok seviyorum cunku formati epey guzel. Alanin uzmanlarina sanki hicbir sey bilmiyormus gibi sorular soruyor ve bunu genelde iki konuyu karsilastirarak yapiyorlar. Ornegin Intel, AMD ve ARM islemciler arasindaki farklar veya BSD ile Linux arasindaki farklar gibi.

Karsilastirmali olarak gittigi icin mevzulari kavrami epey kolaylastiriyor.