Kod okunaklılığı bu işlerle uğraşan insanlar için oldukça önemli. Zaman zaman editörlerin renk teması, fontlar ile uğraşılan sürenin kodlamanın kendisine ayrılan süreden fazla olduğu ile ilgili espiriler döner.

Kapalı kaynak kodlu olmasına rağmen kullanmaktan zevk aldığım nadir programlardan biri JetBrains firmasına ait editörler. En çok kullandığım iki tanesi WebStrom ve PhpStrom.

Ben kodun değerlere göre hizalı olması konusunda takıntılıyım. Ne yazık ki bu default ayarlar ile gelmiyor.
Kastettiğim şeyi görsel olarak anlatmak gerekirse birinci durum gibi değil ikinci durum gibi olsun istiyorum.

Okumaya devam et

Microsoft Excel’in muadili (ama daha özgürü) olan Libre Office’de yazıcıdan çıktı alırken sayfa altı ve üstüne yazdığı bilgiler çıkmasın istiyorsanız çözüm basit.
Türkçe sürüm için menüden şu adımları seçmek lazım.
Biçim -> sayfa -> Alt bilgi -> düzenle -> altbilgi -> hiçbiri ve
Biçim -> sayfa -> Üst bilgi -> düzenle -> altbilgi -> hiçbiri
Hepsi bundan ibaret.

Göreceğiniz üzere aynı yerden farklı yazım düzenleri de üretmek mümkün.

Atalarımızın dediği gibi; Kendinizi kapalı kaynak kodlu yazılımların esiri olmaktan kurtarın açık kaynaklı yazılım kullanın.

Libre Office Calc’da seçemeniz gereken ayarlar.

Kullanığım kod editörü (PHPstorm) başlıkta geçen uyarıyı verdi. Gözüme görünen bir hata ise yoktu, bir süre arayınca bence anlamsız bir şeyin sebep olduğunu farkettim.
Başkası aynı şeyle debelenmesin diye yazmak lazım.

Öncelikle yazacaklarım PHP 5.4 ve sonrası için geçerlidir. (gerçi öncesi kullanan kalmış mıdır?)

uyarı veren kod;

$selamlama = function ($selam = "Merhaba", $isim)

PHP 5.4 ve sonrasında anonim fonksiyon yaratırken değişkene default değer vermek mümkün.
Kuralımız önce tanımsız değişkenler onlar bittikten sonra sağına ise öntanımlaması yapılmış değişkenler şeklinde imiş.

yani kod şu şekilde olmalı imiş, evet bu kadar basit bir sorunmuş.

Niye böyle bir şeye gerek duymuşlar mantıklı bir gerekçe bulamadım. Aynı doğal dillerde olduğu gibi programlama dillerinde de çok inatlaşmayıp kural böyle demek gereken yerler var.

$selamlama = function ($isim, $selam = "Merhaba")

konu ile ilgili referans; // https://www.php.net/manual/tr/functions.arguments.php (örnek 5-6)

Başlığın kendisi her şeyi anlatıyor aslında. Windows 10 altında WSL (Windows Subsystem for Linux) denilen nane ile bir Linux kurulumu yaptınız ve bir sebeple kurulduğu yolu değiştirmek istiyorsunuz klasörü taşı bitti ile olmuyor. Mutlaka elinizi kirletip regedit ile muhatap olacaksınız.

Belki daha basit bir yolu belki vardır ama benim bulduğum en pratik çözüm bu; regedit i açıp
..\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss{***}
şeklinde giden anahtarı bulmak ve buradaki BasePath değişkenini istediğiniz şekilde güncellemek.
Başka bir şeye gerek yok.

Kötü programcılar yada başka sebeplerle wordpress’in databaseinin temel tablolarından biri olan wp_options bir süre sonra şişiyor. Terabaytlar seviyesinde trafik alan içerik sayısının yüzbinlerle ölçüldüğü bir sitede bile bu tablo doğru ayarlandıktan sonra 6mb.
Eğer sıradan bir siteniz varsa bu tablo 2-3 mb’den büyükse kesinlikle temizlik ihtiyacı mevcut demektir.

1- Delikanlı programcı yapacağı işlemlerden önce yedek almaz.

2- Phmyadmin yada benzeri bir araç ile ilgili databasei açar. Eğer database isminde özel bir değişiklik yapılmadı ise yani tablolar wp_* şeklinde ise alttaki komutu SQL katına geçip uygular.

DELETE FROM `wp_options` WHERE `option_name` LIKE ('%\_transient\_%');

Bu işlemin ardından hazır eli değmişken database’in tamamını optimize etmekten de zarar gelmez.

imza az önce wp_options için 450bin satır civarı gereksiz veri (transient) silmiş bu sayede databasede 671 mb küçülme sağlamış biri.

yazıya ek

Eğer sisteme SSH erişiminiz varsa ssh üzerinden kullanabileceğiniz wp-cli adlı bir araç var. Bu kurulu ise bu işlemi çok daha kolay halledebilirsiniz.

wp transient delete --expired ile sadece expire olmuş olanlar silinir.
Ama bizim derdimiz zaten kötü kodlama sebebi ile datanın expire olmuyor oluşu idi.
wp transient delete --all diyerek topunu silebiliriz gerekli transientleri sistem yeniden oluşturacaktır.
Bu komutu da crona bağlayıp haftada bir sistemin en rahat olduğu bir gece yarısı çalıştırırsanız yaşasın tembellik.

Web işi hız işi. Yakın zamanda büyük ölçekli bir sitenin server bakım işini aldık. Görev tanımımda olmayan bazı konularda da yardımcı oluyorum.
Sağolsunlar siteye zamanında optimize edilmemiş milyonlarca JPEG resim atmışlar. Milyon lafı sözün gelişi değil sitede gerçekten milyonlarca resim var. Aylık 40 terabayt trafik dersem sitenin büyüklüğü anlaşılır sanırım!

Komut satırından bu işi nasıl çözeriz araştırmaya başladım.
Ortalıkta resim optimizasyonu için pek çok konsol tabanlı uygulama var.
Benim gördüğüm kadarı ile en iyi sıkıştıranı mozjpeg.
Alttaki linkte bir karşılaştırma tablosu var.
https://blarg.co.uk/blog/comparison-of-jpeg-lossless-compression-tools
Yazının eski olması önemli değil o günden bu yana dişe dokunur tek oyuncu çıkmış guetzli.
Guetzli tarif edilemeyecek derecede yavaş olduğu için onu listeden çıkarttım. Hem 2 yıldır en ufak bir güncelleme olmadığı ısrarla single core çalıştığı için hem de ızdırabına değmez boyut avantajı sebebi ile bkz; https://ariya.io/2017/03/squeezing-jpeg-images-with-guetzli

Mozjpeg iyi hoş ama kendisi Debian’ın depolarında hazır gelmiyor. Bu yüzden kurulum adımlarını not alayım ki gelecek sefere kolay olsun.

sudo apt-get update sudo apt-get install cmake autoconf automake libtool nasm make pkg-config git
git clone https://github.com/mozilla/mozjpeg.git
cd mozjpeg
mkdir build && cd build
sudo cmake -G"Unix Makefiles" ../
sudo make install
sudo ln -s /opt/mozjpeg/bin/jpegtran /usr/bin/mozjpeg

make install aşaması biraz zaman alıyor.
mozjpeg’i kurduktan sonra bir aşama daha var

cd /tmp
wget https://github.com/danielgtaylor/jpeg-archive/releases/download/2.1.1/jpeg-archive-2.1.1-linux.tar.bz2 -O jpeg-archive.tar.bz2
tar -xf jpeg-archive.tar.bz2
sudo cp jpeg-recompress /usr/bin/jpeg-recompress
sudo chmod 755 /usr/bin/jpeg-recompress

benim kullanıp memnun kaldığım ayarlar.

jpeg-recompress --quality medium --method ssim --min 60 orjinal.jpg cikti.jpg

jpeg-recompress --quality medium --method ssim --min 60 yazmak pek keyifli olmadığı için buna bir alias tanımlamanın zararı olmaz, –min 60 parametresi tahmin edileceği gibi minimum bu kaliteye in altına inme diye bir garanti unsuru.
--accurate paramatresi ile daha yavaş ama daha sağlıklı sonuç alınır
Alttaki kod ile şu klasörün altında tüm JPG’leri bul ve sıkıştır demek mümkün. (dikkat emin olmadan uygulamayın geri dönüşü yok)

find /var/www/sitenin-koku/wp-content/uploads -type f -iname '*.jpg' -exec jpeg-recompress --quality medium --min 60 --accurate --method ssim \{} \{} \;

Şu anda kullanmakta olduğum Debian 9 ile Firefox’un görece eski bir sürümü (52 esr) gelmekte. Oysa yazının yazıldığı an itibari ile güncel sürüm 65.01.
Debian’ın olumlu anlamdaki tutuculuğunu seviyorum bu ünlü stabilitesinin kaynağı zaten. Ama bir miktar esnetmekten zarar gelmez.

öncelikle en güncel sürümü indirelim.

wget -O FirefoxSetup.tar.bz2 "https://download.mozilla.org/?product=firefox-latest&os=linux64&lang=en-US"

aradaki -O paramatresi ile hangi sürüm o an için güncel olursa olsun “sabit” bir isimle indirmeyi garantiye alıyoruz.
eğer gavurca değilde yerli ve milli olsun dersek lang=tr olacak şekilde değiştirmek gerekli. (artık seçim meydanlarında firefoxumuz göklerde diye bağırabilirsiniz, mutlaka yiyen olur.)

yeni sürümü yükleyeceğimiz klasörü yaratıp içeriğini oraya açalım.

 sudo mkdir /opt/firefox
sudo tar xjf FirefoxSetup.tar.bz2 -C /opt/firefox/

eski (esr) sürümü yedeğe taşıyıp yeni sürümü onun yerini alacak şekilde sembolik link ile bağlayalım.

sudo mv /usr/lib/firefox-esr/firefox-esr /usr/lib/firefox-esr/firefox-esr_yedek.bak
sudo ln -s /opt/firefox/firefox/firefox /usr/lib/firefox-esr/firefox-esr

bir sebeple eski sürümü geriye almak isterseniz çözüm basit.

unlink /usr/lib/firefox-esr/firefox-esr
mv /usr/lib/firefox-esr/firefox-esr_yedek.bak /usr/lib/firefox-esr/firefox-esr

hayırlı uğurlu olsun.

BOINC nedir?
boinc berkeley üniversitenin geliştirdiği basit bir program. Amacı boşta duran bilgisayar işlem gücünüzü bilimsel projelerin kullanımına sokmak. Bir tür insanlık için imece durumu.
Hani insanların çoğunda varolan hiç bir şey yapmadan insanlığa faydalı olma isteği var ya tam olarak onu sağlıyor.
Bilgisayar başında iş yapıyorsunuz çay kahve almak için kalktınız gittiniz geldiniz 5-10 dk. o sırada bilgisayarınız ne iş yapar? Boş boş yatar değilmi? İşte bu türden bilgisayarın boşta kaldığı durumlarda bir üniversitedeki tıp çalışması yada kimya çalışmasının milyonda birlik kısmını yapsa ne olur mantığı üzerine kurulu.  Merak eden kalanını araştırır bulur. Windows, Linux, Macos, Android telefon aşağı yukarı her ortama kurmak mümkün. Telefonunuz gece şarjda yatarken işe yarasa kötümü olur?

VPN, torrent vb işler için alınmış bir serverınız var. Bu server genelde günün önemli kısmı boş yatar. Peki parasını zaten verdiğiniz server niye boş yatıyor?

Okumaya devam et

Sublime’in şu renk şemasıydı şu eklentisiydi derken ayarlarını çorba etmek en azından benim için çok kolay.
Tüm eklentileri silmek istemiyor fakat renk şemasını başlangıç durumuna döndürmek isterseniz console’u açıp şunu yazmak yeterli.

[ v.settings().erase("color_scheme") for views in [ w.views() for w in sublime.windows() ] for v in views ]

 

Bu arada hem vim’de hem de sublime’de kullanabileceğiniz hoş bir renk şeması önerisi; gruvbox.

Yüklemek için https://github.com/morhetz/gruvbox

Twitterda birisi Sublime ile Nano’nun çocukları olursa adı Suplemon olur demiş.suplemon-icon

vim; linux dünyasındaki en iyi editörlerden birisi. Aynı zamanda doğru düzgün kullanabilmek içinde baya emek vermek gereken editörlerden birisi.
sublime; iyi hoş fakat iki önemli eksiği var.
herşeyden önce açık kaynak değil.
ayrıca terminalde çalışan versiyonu yok.
nano: vim’e oranla zayıf.Okumaya devam et