Ubuntu 16.04 altında Less derlemek için uzun yönteme gerek yokmuş, tek paketi kurmak yeterli…

sudo apt-get install node-less

Sonrasında, evet sonrasında kate’in derleme eklentisinin aktif edilmesi gerekiyor. Sonrasında Kate derleme eklentisine şu yolu göstermek yetiyor.

/usr/bin/lessc %f %n.css

Küçük bir video ekleyeyim.

Biraz makale okudum ama, hiç birisinde benim yöntemim anlatılmamıştı 🙂

Lazım olsa bulunmaz, şunda dursa kötü olmaz.

	$array_city(
		0 => 'Türkiye',
		1 => 'Adana',
		2 => 'Adıyaman',
		3 => 'Afyonkarahisar',
		4 => 'Ağrı',
		5 => 'Amasya',
		6 => 'Ankara',
		7 => 'Antalya',
		8 => 'Artvin',
		9 => 'Aydın',

		10 => 'Balıkesir',
		11 => 'Bilecik',
		12 => 'Bingöl',
		13 => 'Bitlis',
		14 => 'Bolu',
		15 => 'Burdur',
		16 => 'Bursa',
		17 => 'Çanakkale',
		18 => 'Çankırı',
		19 => 'Çorum',
		20 => 'Denizli',

		21 => 'Diyarbakır',
		22 => 'Edirne',
		23 => 'Elazığ',
		24 => 'Erzincan',
		25 => 'Erzurum',
		26 => 'Eskişehir',
		27 => 'Gaziantep',
		28 => 'Giresun',
		29 => 'Gümüşhane',

		30 => 'Hakkari',
		31 => 'Hatay',
		32 => 'Isparta',
		33 => 'Mersin',
		34 => 'İstanbul',
		35 => 'İzmir',
		36 => 'Kars',
		37 => 'Kastamonu',
		38 => 'Kayseri',
		39 => 'Kırklareli',

		40 => 'Kırşehir',
		41 => 'Kocaeli',
		42 => 'Konya',
		43 => 'Kütahya',
		44 => 'Malatya',
		45 => 'Manisa',
		46 => 'Kahramanmaraş',
		47 => 'Mardin',
		48 => 'Muğla',
		49 => 'Muş',

		50 => 'Nevşehir',
		51 => 'Niğde',
		52 => 'Ordu',
		53 => 'Rize',
		54 => 'Sakarya',
		55 => 'Samsun',
		56 => 'Siirt',
		57 => 'Sinop',
		58 => 'Sivas',
		59 => 'Tekirdağ',

		60 => 'Tokat',
		61 => 'Trabzon',
		62 => 'Tunceli',
		63 => 'Şanlıurfa',
		64 => 'Uşak',
		65 => 'Van',
		66 => 'Yozgat',
		67 => 'Zonguldak',
		68 => 'Aksaray',
		69 => 'Bayburt',
		70 => 'Karaman',

		71 => 'Kırıkkale',
		72 => 'Batman',
		73 => 'Şırnak',
		74 => 'Bartın',
		75 => 'Ardahan',
		76 => 'Iğdır',
		77 => 'Yalova',
		78 => 'Karabük',
		79 => 'Kilis',
		80 => 'Osmaniye',
		
		81 => 'Düzce',
	);

Ubuntu Gnome altında KDE araçlarından KATE kullanırken karşıma çıkan bir bug’ı şu kenara not alalım.

kate_bug

Kate kullanırken menülerde ikonlar görünmüyorsa yapmanız gereken tek şey şu paketi kurmak appmenu-qt5

sudo apt-get install appmenu-qt5 libqt5libqgtk2 oxygen-icon-theme

Benim durumumda (Ubuntu Gnome altında KDE uygulaması çalıştırmak) kalırsanız işi kolaylaştırabilir.

Kaynaklar:
* http://askubuntu.com/questions/695409/kate-is-missing-all-button-icons

Firefox eklentileriyle daha da güzelleşen bir internet tarayıcı. Dönem dönem farklı olsa da şu sıralar şu firefox eklentilerini yoğun olarak kullanıyorum…

firefox eklentilerim

Biraz daha detaylandırırsak;

Her Eve Lazım

AdBlock Plus

Reklam engelleme işlevini yerine getiriyor. Farklı olarak AdBlock -> Süzgeç Tercihleri -> İsteğe Bağlı Süzgeçler alanından *banner*, *reklam* kelimeleriyle , dönem dönem bunlara *ads*, *kampanya*, *advertorial*, kelimesini de dahil ederek engelleme yapıyorum.

Element Hiding Helper for Adblock Plus

Sayfa içindeki kimi elementleri seçip, ilgili elementlere göre sayfadaki öğeleri gizlemeye yarıyor. Örnek olarak sitelerin footer alanlarını falan gizleyebiliyorsunuz. Hatta çok takipçisi olan bir sitenin dizi izleme sayfasının adblock plus ile öğeler gizlenmiş ve orjinal hali şöyle olabiliyor.

test1
sayfa

Ghostery

Birçok internet sitesinde en azından google analytic kodu bulunuyor; ilerledikçe facebook like butonundan, twitter like butonuna, bazen yorum servislerinden uçuk rus ve çin takip sitelerine kodlar yeralabiliyor. Ghostery bunları pasif hale getiriyor ve ilgili servislere tarayıcınızın ping atmasını veya ilgili servislerden dosya indirilmesini engelliyor. Böylece internet sayfalarının açılış hızları artarken, sizin de daha az kem gözlerin takibi altında olmanızı sağlıyor…

ZenMate

Twitter veya kimi siteler engellendiğinde ve dns değişikliği ile (şahsen sürekli opendns kullanıyorum) erişilemediğinde işe yarayan bir VPN aracı.

FlashGot

Sitelerdeki videoların url lerini yakalamakta kullanıyorum. Böylece online sitelerde video izlemektense, onları şirkette (mesai bittikten sonra tabii ki, fiber de sağolsun) indirip daha sonra tabletimde veya bilgisayarımda izleyebiliyorum.

DownThemmAll

Çoklu indirmeleri yönetmeyi, indirmeleri belli bir hızla sınırlandırmayı, bazen tek dosyayı birden çok parça ile daha hızlı indirmeyi sağlayan güzel bir araç. Her zaman kuruludur.

Web Geliştiricilerine Özel

FireBug

Sayfa içindeki html nesneleri yakalamayı, online olarak düzenlemeyi, css değişikliklerini daha yayınlanmadan test etmeyi yaptığım bir araç.

JSONView

Json formatında data export eden servisleri tarayıcı üstünde test ederken yardımcı oluyor.

User-Agent Switcher

Site tasarımlarının tarayıcı bazlı kodlarda nasıl göründüğünü test etmekte kullanıyorum. Çok nadir işim düşüyor.

Nimbus Screen Capture

Web sitelerinin tam sayfa ekran görüntüsünü almakta kullanıyorum. Hemen üstteki iki resimde örneği var 🙂

Linux Özel

HTitle

Gnome masaüstünde firefox entegrasyonunu daha uyumlu hale getiren bir eklenti. Tamamen kozmetik.

50 bin haberimiz var ve hangilerinin aynı başlığa sahip olduğunu bilmek istiyoruz…

SELECT 
	content_id, 
	content_title, 
	count(*) 
FROM 
	content 
WHERE
	content_status = 1
GROUP BY 
	content_title
HAVING 
	count(*) > 1
ORDER BY
	content_id DESC;

Kaynak: https://forum.ubuntu-tr.net/index.php?topic=50599.0

Türkiyede oturup RSS yayınını GMT üstünde yayınlamış kişilerin rss kayıtlarını Türkiye saatine eşitlerken lazım oldu…

function convert_to_turkish_time( $date )
{
/**
* Tarih ve Saatten tarih veya saat çıkartır veya ekler
*/
return date('Y-m-d H:i:s', strtotime('-3 hour',strtotime($date)));
}

MySQL ah MySQL; PhpMyAdmin ile işlerimi yapmaya o kadar kötü alışmışım ki şu kadarcık kodu arayıp bulmam gerekti

CREATE TABLE tuval_content_backup LIKE tuval_content; 
INSERT tuval_content_backup SELECT * FROM tuval_content;

Kaynak: https://stackoverflow.com/questions/2415855/copy-a-mysql-table-including-indexes/2415879#2415879

Ek alan eklenip, tek tek uğraşmak istemeyince.

SELECT team_name FROM tuval_team FOR UPDATE;
UPDATE tuval_team SET team_name_sort = team_name;

varolan bir datadan insert üretirken

INSERT INTO tuval_lig_rel (lig_id, team_id)
SELECT 6, team_id FROM tuval_team WHERE team_lig = 6;

	define('TUVAL', '1');
	require 'app/lib/init.php';
	
	ini_set('max_execution_time', 0); // unlimited execution time, because of large amount of comments
	ini_set('memory_limit', '2048M');

	$file = 'disqus.xml';
	$doc = new DOMDocument();
	$doc->load($file);

	$thread_list = array();
	$threads = $doc->getElementsByTagName('thread');
	
	foreach($threads as $thread)
	{
		if (!isset($thread->getElementsByTagName('link')->item(0)->textContent)) continue;

		$comment = array();
		$comment['thread_id'] = $thread->getAttribute('dsq:id');
		$comment['url'] = $thread->getElementsByTagName('link')->item(0)->textContent;
		$path = parse_url($comment['url'], PHP_URL_PATH);
		$path = preg_replace("/(/){2,}/", "/", $path); // remove multiple slashes
		$thread_list[$comment['thread_id']] = $comment; 
	}
	
	$post_list = array();
	$posts = $doc->getElementsByTagName('post');

	foreach($posts as $post) 
	{
		$comment = array();
		$comment['comment_id'] = $post->getAttribute('dsq:id');
		$comment['thread_id'] = $post->getElementsByTagName('thread')->item(0)->getAttribute('dsq:id');
		$comment['comment'] = $post->getElementsByTagName('message')->item(0)->nodeValue;
		$comment['created_at'] = $post->getElementsByTagName('createdAt')->item(0)->nodeValue;
		$comment['email'] = $post->getElementsByTagName('author')->item(0)->getElementsByTagName('email')->item(0)->nodeValue;
		$comment['name'] = $post->getElementsByTagName('author')->item(0)->getElementsByTagName('name')->item(0)->nodeValue;
		$comment['isDeleted'] = $post->getElementsByTagName('isDeleted')->item(0)->nodeValue;
		$comment['ipAddress'] = $post->getElementsByTagName('ipAddress')->item(0)->nodeValue;
		$comment['url'] = $thread_list[$comment['thread_id']]['url'];
		
		print_r($comment);
		
		$record = array(
			'comment_content'		=> 1,
			'comment_author'		=> $comment['name'],
			'comment_email'			=> $comment['email'],
			'comment_text'			=> n2br($comment['comment']),
			'comment_ip'			=> $comment['ipAddress'],
			'create_time'			=> $comment['created_at'],
			'comment_status'		=> 2,
			'isDeleted'				=> $comment['isDeleted'],
			'comment_url'			=> $comment['url'],
		);
		
		$rs = $conn->AutoExecute(T_COMMENTS, $record, 'INSERT');
		if($rs == false)
		{
			throw new Exception($conn->ErrorMsg());
		}		
		
		//döngü ile burdaki dataları veritabanına alacağız
	}

PHP de Memcache veya Memcached modülünü aktif ettim; lakin “PHP Can’t find save handler memcache” gibi bir hata alıyordum.

İncelerken şöyle bir hata yaptığımı anladım;

;session.save_path = "/tmp"

değeri yeni tanımladığım satırlardan sonrasında yer alıyordu; onu biraz yukarıya aldım ve düzeldi…

; Handler used to store/retrieve data.
;oturumları yeniden files olarak tutmak için alttaki iki satırı aktif ediniz
;session.save_handler = files
;session.save_path = "/tmp"

;oturumları memcache üstünde tutmak için şu şekilde ayarlıyoruz
session.save_handler = memcache
session.save_path = "127.0.0.1:11211"

Bu sayede php’nin oturumlarını da Memcache üzerine almış olduk.