No such thing as “the best editor”

There is no such thing as the “best code editor”, just like there is no “best programming language”. It is a matter of choice, need, being accustomed to, and being comfortable with.

If you already have used X (replace X with any editor out there), liked it, and are comfortable with it, keep using X.

If you are looking for an alternative, each editor has advantages and disavantages (more like un-advantages).

If you are trying to find an editor to stick to, give each one at least 3 months, customizing and optimizing each according to your needs in the mean time. After about a year, you’ll know which one you want to go with.

Türkçe’yi öldürüyoruz

Uzun süredir takip ediyorum, yabancı dil ve kültür özentimiz ile TDK’nın uzun süredir dişe dokunur hiçbirşey yapmıyor olması yüzünden kendi dilimizi öldürüyoruz. Gündelik yaşamda o kadar çok örnek görüyorum ki, “Türk demek Türkçe demektir. Ne mutlu Türk’üm diyene.” sözünün aslında ne kadar doğru olduğunu tekrar tekrar farkediyorum.

Bu yazıda Türkçe cümlelerin içine yerleştirilen ve Türkçe’ye zarar veren örneklere yer vermeye karar verdim. Eğer bu kelimeleri kullanıyorsanız, lütfen biraz daha özen gösterin ve Türkçe karşılıklarını kullanmaya çalışın.

Türkçe olmayan kullanımlara örnekler:

  • aplikasyon (böyle bir aplikasyon varmış) (doğrusu: uygulama)
  • application (bu __ applicationı ile alakalı) (doğrusu: uygulama)
  • spesifik (uygulamanın spesifik kullanımları) (doğrusu: belirli)
  • know-how (onların know-howları nedir) (doğrusu: yol-yordam, usül bilgisi)
  • search (bulabilir miyiz diye search yaptıkça)
  • sample (oda, mutfak ve benzeri samplelar) (doğrusu: örnek)

Sevdiğim programlama fontları

Bir programcı için, her gün kullandığı en değerli eşyası bilgisayarıdır. Bu bilgisayarın da “yüzü”, ekranı.

Yani, benim gibi bütün gün kod yazan biriyseniz, gününüzün çok büyük bir kısmını bilgisayar ekranınıza, özellikle de kod editörünüze bakarak geçirirsiniz.

Bu kod editörünün görüntüsü performansınızı doğrudan etkiler.

Gözlerinizi yormayacak bir tema ve renk şeması çok önemlidir.

Font konusu ise hem performansınızda, hem bilgisayarınıza bakışınızda (bence) doğrudan etkilidir. Çünkü kötü bir görüntü, sizi çok güzel bir editörden soğutabilir, veya güzel bir font, sizi kötü bir editörde tutabilir.

Aşağıda saydığım fontların performansınıza doğrudan faydası olacağını düşünüyorum. Fontun sayfasına gitmek için başlığa tıklayabilirsiniz.

Operator Mono

Ücretlidir (pahalı bile diyebilirsiniz – 600 dolar), ama çok güzeldir. Hem hafif, hem normal biçimleri var. Eğik hali el yazısını andırıyor, o yüzden kodun yorum kısımlarını eğik ayarlarsanız yorumlar çok güzel bir şekilde öne çıkıyor. Serifli bir fonttur (harflerin köşeleri çıkıntılıdır) ve kıvrımları belirgin olduğu için çok okunaklıdır. Seçeneklerine bir bakın, hoşunuza gideceğine eminim.

Envy Code R

Çoğu kişi editörünün seçtiği öntanımlı fontu bile değiştirmez ama ben kullandığım bütün programları kendime göre özelleştiriyorum. Hem yıllar içinde bazı şeylerin doğrusunun nasıl olduğunu keşfettiğim için özelleştiriyorum, hem de o ortam bana ait oluyor, verimim artıyor. Eğer serifli fontlardan sıkıldıysanız Envy Code R’ye bir şans verin. Çok seveceksiniz. Ben çok seviyorum en azından. Özellikle terminal ekranlarında biraz sıkıştırırsanız çok güzel duruyor. 2008’den sonra geliştirilmedi ama pek de ihtiyacı yok..

PT Mono

 

Serifli ve serifsiz font verdim, ama seriflili pahalı olunca, ücretsiz olanını da sunmak istedim. PT Mono, Operator Mono’ya çok benziyor, yalnız biraz daha yayvan bir font. Operator Mono uzun süre kullandığınızda sıkışıklık hissi verebilir, bu durumda kısa süreliğine PT Mono’ya geçerek rahat edebilirsiniz. MacOS’ta hazır kurulu geliyor. PT Mono’nun hafif sürümü yok.

Input

Bu font kendi başına bir aile sayılır. Çok özelleştirilebilir bir font. /a/ harfini, /i/ ve /ı/ harflerinin küçük ve büyük hallerini, /l/ harfini aynı şekilde özelleştirebiliyorsunuz ve istediğiniz görüntüye çok daha yakın bir sonuç elde etmek mümkün oluyor. Üstelik harf aralığını ve satır aralığını da özelleştirebiliyorsunuz. Dolayısıyla isterseniz sıkışık, isterseniz yayvan bir font da üretmek mümkün oluyor. Aşağıdaki ilk ekran görüntüsü kendi yapılandırmam, ikincisi de sitedeki özelleştirme kısmından.

Fontunuzu seçin, dünyanız değişecek! 🙂

DigitalOcean sanal sunucu kurulumu ilk işlemler

Sık sık DigitalOcean’da yeni makinalar kuruyorum ve/ya siliyorum.

Her kurulumdan sonra ilk olarak yaptığım belirli işlemler var. Burada onları listelemek istiyorum.

  1. /etc/ssh/sshd_config dosyasındaki AcceptEnv LANG LC_* satırının başına # koy. Özellikle Mac bilgisayardan bağlanıyorsanız, terminalde sürekli karakter kodlaması hatası alırsınız. Bu işlem onu engelliyor.
  2. /etc/ssh/sshd_config dosyasının sonuna ClientAliveInterval 60 ve ClientAliveCountMax 10 ekleyin. SSH ile bağlandığınız makinalarda terminal pencerelerinde bir süre işlem yapmazsanız bağlantı kapanır. Bu satırlar bağlantının kapanmasını engeller. Bir nevi PING işlemi gibi düşünebilirsiniz. ClientAliveInterval saniye cinsinden ne sıklıkla bağlantının canlandırılacağını, ClientAliveCountMax de bu işlem kaç kez tekrarlanacağını belirtir. Terminal penceresinde SSH içinde herhangi bir işlem yaptığınızda bu sayaçlar sıfırlanır.
  3. Bu iki satırı girdikten sonra makineyi yeniden başlatarak bu yapılandırmanın devreye girmesini sağlayın.
  4. Yeniden bağlandıktan sonra, işlemlere root olarak devam etmemek için, sudo yetkisi olmayan bir kullanıcı oluşturmanızı öneririm. Neden sudo yetkisi olmayan? Olur da bir şekilde web sunucunuza sızarlarsa yetki yükseltmesi dahil sudo yetkisi olan bir kullanıcıyla fazla birşey yapamazlar. Ubuntu kullanıyorsanız komut şu: adduser kuladı. Eğer daha sonra şifreyi kaldırmayacaksanız buraya girdiğiniz şifreyi unutmayın 🙂
  5. Oluşturduğunuz kullanıcının şifresini silip sadece SSH anahtarıyla erişilebilir kılmanızı öneririm. Böylece kabakuvvet saldırılarını anlamsız kılmış olursunuz. Bunun için, o kullanıcıya geçin: su kuladı. Sonra .ssh dizinini oluşturun: mkdir ~/.ssh. Ardından da kendi anahtarınızı id_rsa.pub dosyasının içine yerleştirin: nano ~/.ssh/authorized_keys. Yalnız bu işlemden sonra bu .ssh dizininin ve bu dosyanın izinlerini 0600 olarak değiştirmeyi unutmayın: chmod 0700 ~/.ssh ve chmod 0600 ~/.ssh/authorized_keys.
  6. Bundan sonra o makinaya root olarak değil, oluşturduğunuz yeni kullanıcıyla bağlanabilirsiniz.

Yeni sanal sunucunuz hayırlı olsun 😉

Bu makinayı örütbağ sunucu olarak kullanacaksanız Apache, PHP ve MySQL kurulumu da burada.

DigitalOcean Ubuntu Server sanal sunucu üzerine Apache, PHP ve MySQL kurulumu

Sık sık DigitalOcean’da Ubuntu sanal makinalar kuruyorum. Bu sanal makinaları da çoğu zaman PHP siteleri yayınlamakta kullanıyorum. Dolayısıyla sık sık Apache-PHP-Mysql üçlüsünü (LAMP diyorlar) kurup yapılandırıyorum. Bu yazıda bu üçlünün kurulumundan bahsedeceğim.

  1. Apache kurmak için apt-get install apache2 yeterli, ama PHP kuracaksanız buna ihtiyacınız da kalmıyor, apt-get install libapache2-mod-php komutu Apache’ye otomatik olarak kuruyor.
  2. İkinci olarak PHP’nin neredeyse her durumda ihtiyaç duyduğu paketleri kuruyoruz: apt-get install php-xml php-zip php-mysql php-mbstring php-json php-imap php-intl php-gettext php-gd php-cli. Bu paketleri Ubuntu zaten kuruyor olsa bile bu komutla garantilemenizi öneririm.
  3. Bu noktada bir WordPress kurulumunun ihtiyaç duyabileceği bütün PHP paketlerini kurmuş olduk, ama projenize göre şu paketlere de ihtiyacınız olabilir: apt-get install php-soap php-redis php-mongodb php-membcache php-geoip
  4. Sıra geldi MySQL kurulumuna. MySQL iki parçadan oluşuyor. Sunucu için yeterli olan mysql-server ve sunucunuza SSH ile bağlandığınızda MySQL işlemleri yapmaya yarayan mysql-client. apt-get install mysql-server mysql-client ile ikisini de kuruyoruz. Bu kurulum sırasında MySQL size kendi root kullanıcısının şifresini iki kez soracak. Karmaşık birşey yapmayı ve güvenli bir şekilde saklamayı unutmayın.

Apache, PHP ve MySQL kurulumları bitti. Artık örütbağ tarayıcınıza sunucunuzun IPsini girerek bağlanabilirsiniz. Bundan sonrası proje dosyalarının aktarılması, MySQL veritabanlarının oluşturulup yapılandırılması ve SSL sertifikalarının yüklenmesi işlemlerinden oluşuyor. Onlar da bir sonraki yazıya kalsın.

Programcıyla iletişim

Bir programcı olarak milyon kere yaşadığım bir durumdan bahsedeceğim bugün. Programcıyla iletişim adabı.

Biriyle iletişim kuracağınızda, ona karşı saygılı olmanın (tüm iletişim saygı çerçevesinde yürümelidir) iki çeşidi vardır.

Bunlardan biri konuşurken, biri de konuşmanın dışında olur. İletişim sadece yüzyüze, telefonda, sosyal mecralarda ya da anlık mesajlaşma ortamlarında, iletişim anında olmaz. Konuşurken, iş ilişkisi içinde olduğunuz insana karşı, elbette ki saygılı olmalısınız. Bu, topluluk olmanın doğal bir kuralıdır. Ama bir de konuşmaya başlamadan önce ve konuşma bittikten sonra da saygılı olmak gerekir ki, (en azından programcılara karşı) çoğu kişi bunu pas geçiyor.

İster müdür ister herhangi bir personel olsun, çoğu insanın yaptığı iş bölünmeyi kaldırabilir. Çok fazla zihinsel faaliyet gerektirmez veya görüşme bittikten sonra o insan çalışmasına kolayca dönebilir.

Fakat programcılık böyle değildir. Programcıyı böldüğünüz mü kendini tekrar işine vermesi çok uzun sürebilir.

Çünkü programcılık, çoğu zaman yoğun zihinsel çaba gerektiren ve bloklar halinde yapılan bir iştir. Programcı bir işi yaparken araya girilirse kendini tekrar işine vermesi saatler bile sürebilir.

Programcılık kişinin kendini dış dünyadan soyutlamasını gerektirir. Kodla uğraşan programcının konuşma şekli bile değişir, daha ciddi, daha katı ve daha kopuk hale gelir.

O nedenle, programcıyla, zorunlu olmadıkça anlık mesajlaşılmaz. Çalışırken bölünmez, bölünmemelidir. Programcıyla muhatap olan kişinin aklına bir konu ya da espri geldiğinde ya da birşey konuşmak istediğinde, programcıyı bölmesi, programcının veriminin düşmesi anlamına gelir.

Bu argümanın karşı tarafında “o zaman o da anlık mesajlaşma programını kapatsın” düşüncesi yer alır. Fakat bu argümanın atladığı bir detay var, ki o da şu: Telefonunuzu kapatmak veya anlık mesajlaşma programınızı kapatmak, hem dış dünyayla iletişim kurmanızı sağlayan organları kapatmak, hem de kendinizi acil durumlara da kapatmak anlamına gelir. Telefonunuzu kapattığınızı düşünün. Acil bir durum olduğunda eşiniz, anne veya babanız size ulaşamaz. Yani bu argüman aslında pek de geçerli değil.

Uzun lafın kısası, bilgisayar başında olan programcıları bölmeyin. Ona saatler kaybettirebilirsiniz.

Örütbağ sitelerimde kullandığım servisler

Örütbağ (web) siteleri geliştirirken, eğer herşeyi kendiniz yapmaya çalışırsanız, hem iş çok uzar, hem de geliştirdiğiniz ürünlerde hatalar çıkma ihtimali artar (nihayetinde ne kadar çok kod o kadar çok olası hata). Bu nedenle çok sayıda dış servise ihtiyaç oluyor. Mesela epostaları harici bir servis kullanarak gönderebilirsiniz. Veya para birimleri arası çevrimleri dış bir servise yaptırabilirsiniz.

Benim kullandığım ya da gerektiğinde kullanmayı düşündüğüm dış hizmetler şunlar (diğerlerini aklıma geldikçe yazacağım):

numverify.com

Telefon numaralarını doğrulama ve numaralar hakkında daha detaylı bilgi edinme amaçlı kullanılıyor. Gönderdiğiniz numaranın ülke, eyalet, şehir bilgilerini ve geçerli bir numara olup olmadığını dönüyor.

crisp.chat

Sitenizi ziyaret edenlerle canlı olarak konuşmak için. Mobil uygulaması da var. Ücretsiz versiyonu iki personele izin veriyor. Ücretleri de gayet makul.

WordPress medya kütüphanesini temizleme

WordPress’te yeni bir site başlattıysanız, ilk işlerden biri tema seçmek, ikincisi de temanın demolarından istediğinizi sitenize kurmaktır.

Diyelim üç demo kurdunuz, sonunda kendi sayfalarınızı oluşturma noktasına geldiniz. Kendi sayfalarınızı oluşturmak için varolan sayfaları silmeye bile gerek yok, ama üç demonun sonunda medya kütüphanenizde bir sürü resim var ve bu resimleri silmek yararınıza olacaktır.

Neden? Çünkü bir WordPress sitesinde en çok yer kaplayan ve yönetimi en zor olan öğeler medya dosyalarıdır. Çok fazla resim olduğunda aradığınızı bulmakta çok zorlanırsınız.

Çözüm, medya kütüphanesini boşaltmak. Ama WordPress bu için kolay bir yöntem sunmuyor. Ve bu çözümü uygulayabilmek için de biz çözüme ihtiyacımız var.

Şu yolu izleyerek medya kütüphanenizi boşaltabilirsiniz (uyarı, bu işlem bütün resimleri siler, geri dönüşü yoktur):

  1. Medya kütüphanenizi açın.
  2. Kütüphanedeki bütün resimler yüklenene kadar sürekli sayfa altına inin.
  3. Bütün resimlerin yüklendiğinden emin olduktan sonra, sayfanın en üstüne gelin ve Bulk Edit / Toplu Düzenle butonuna tıklayın.
  4. Geliştirici konsolunu açın.
  5. Şu komutu verin:
jQuery("ul.attachments li.attachment").prop("aria-checked", "true").addClass("selected")

Geçmiş olsun.

Her WordPress kurulumunda olması gereken eklentiler

Activity Log
Change Author
Comet Cache
Contact Form 7
Enhanced Media Library
Flamingo
Google Analytics for WordPress by MonsterInsights
Loco Translate
OneSignal Push Notifications
Page Break
Phoenix Media Rename
PolyLang
Scheduled Post Trigger
Slider Revolution
TinyMCE Advanced
Wordfence Security
WPBakery Visual Composer (cogu temayla gelir)
WP Extended Search
WP Facebook Pixel
WP-Mail-SMTP / Easy WP SMTP
Yoast SEO