{{

Asil Balaban

}}

İnternet & Development üzerine

HTML2PDF output error

HTML2PDF kullanırken çözemediğim bir şekilde çözemediğim bir şekilde aşağıdaki hatayla karşılaşıyordum.

Sorunu çözdüm ve aynı hatayla karşılaşan arkadaşlar için bir not yazma ihtiyacı hissettim. Şuanda üzerinde çalıştığım projede kullanıcıya pdf çıktı veriyoruz, projeyi laravel ile yazdığım için html2pdf kütüphanesini kullanmaya karar verdim. Kütüphaneyi laravel ile çalıştırdıktan sonra ilginç bir şekilde exampleların düzgün çalıştığını ancak ben herhangi bir değişiklik yaparsam yukardaki hatanın ortaya çıktığını gördüm. Biraz debeleneden sonra sorunun çözdüm.  Normalde aşağıdaki gibi çıktı alıyoruz.

$html2pdf = new HTML2PDF('P', $paperSize, 'fr', true, 'UTF-8', 0);
$html2pdf->writeHTML($content);
$html2pdf->Output('exemple08.pdf', 'I');

Biz çıktı aldıktan sonra laravel’in çalışması devam ettiği için bu hata oluşuyor. $html2pdf->Output('exemple08.pdf', 'I'); Bu satırın hemen altına exit(); şekline çalışmayı durdurucu bir komut girerseniz sorun ortadan kalkıyor.

Laravel’de eventleri nereye koyacağım?

Laravel build-in olarak eventleri yazabileceğiniz bir dosya ile birlikte gelmiyor. Eventleri kullanacaksanız event dosyasını kendiniz oluşturmalısınız. Bunu yapmak için aşağıdaki adımları izleyebilirsiniz.

Öncelikle app/start/global.php dosyasını açın ve en alt satırına aşağıdaki satırı ekleyin.

require app_path().'/listeners.php';

Ardından app/dizini altına listeners.php isminde bir dosya oluşturun.
Eventlerinizi buraya yazabilirsiniz.

Basitçe örnek event kullanımından bahsedecek olursak

Örneğin blog yazılımı yazdınız her yazı kaydedildiğinde eklenen yazıyı twitter’a post etmek istiyorsunuz. Kodları tutupta blog yazıları modülünün içine yazarsanız bu ilerde işler karışabilir. Bu nedenle blog yazısı kayıt edildiği anda bir event tetikliyorsunuz, daha sonra bu event’i başka bir dosyada yakalayarak istediğiniz işlemleri orada gerçekleştiriyorsunuz.

Bir event tetiklemek için.
$event = Event::fire('auth.login', array($user));

Tetiklenen bir eventi yakalamak için
Event::listen('auth.login', function($user)
{
$user->last_login = new DateTime;
$user->save();
});

Bu işlemi az önce oluşturduğunuz listeners.php dosyasında yapabilirsiniz.

ZPanel Roundcube parola değiştirme

Bildiğiniz gibi zpanel kurduğunuzda roundcube içinde geliyor. Bilindiği gibi directadmin gibi lisans ücreti isteyen yönetim panellerinde mail adreslerinin şifreleri direk olarak roundcube üzerinden değiştirilebiliyor. Zpanel üzerinden bunu yapmak istediğinizde ise başarılı olamıyorsunuz. Çünkü SQL driver’ı düzgün çalışmıyor. Bunu çözmeye çalışırken başka bir driver buldum ve sorunsuz çalışıyor.

Parola değiştirme işlemini aktifleştirmek için aşağıdaki adımları gerçekleştirin

Öncelikle aşağıdaki dizindeki dosyayı oluşturun ve vereceğim kodları içine yapıştırın. 27. satırda başlayan yazılmış database bilgilerini kendinize göre değiştirmeyi unutmayın.

/etc/zpanel/panel/etc/apps/webmail/plugins/password/drivers/zpmail.php

/etc/zpanel/panel/etc/apps/webmail/plugins/password/config.inc.php

Yukarıda dizinini verdiğim dosyayı editleyin. Eğer böyle bir dosya yoksa dikkat edin, config.inc.php.dist şeklinde bulunuyor olabilir. Bu dosyada driver dışında herşeyi aynı bırakabilirsiniz. Tabiki ihtiyacınıza göre değişiklikler yapın. Parolada minumum karakter sayısı vs.

Son olarak eğer password plugin’i aktif durumda değilse /etc/zpanel/panel/etc/apps/webmail/config/main.inc.php  dosyasındaki plugins array’ine password plugin’ini de ekleyin.

İşlem tamam. Artık roundcube ayarlarından parolanızı değiştirebilirsiniz.

Laravel public dizinini kaldırma

Normalde Laravel framework çekirdek dosyaları sunucudaki root klasörünün bir üst dizininde bulunuyor. Dolayısı ile domain üzerinden kaynak dosyalara erişim engellenmiş oluyor. Bu her ne kadar süper bir şey olsa da paylaşımlı hosting kullanan kişiler için acı verici. Çünkü bu tip durumlarda genelde public_html dizini üzerine çıkamıyorsunuz veya virtual host özelleştirmesi yapamıyorsunuz.

Peki böyle bir durumda ne yapmalı?

Laravel’i yayına atarken URL’den public dizinini kaldırmak için aşağıdaki adımları izleyin.

1 – Public dizini içinde ne varsa hepsini bir üst dizine taşıyın.
2 – Ana dizindeki index.php (public klasöründen geldi) dosyasının 21. satırında bulunan

require __DIR__.'/../bootstrap/autoload.php';

satırını

require __DIR__.'/bootstrap/autoload.php';

şeklinde değiştirin.

Aynı dosya içersinde 35. satırda bulunan

$app = require_once __DIR__.'/../bootstrap/start.php';

bölümünü

$app = require_once __DIR__.'/bootstrap/start.php';

şeklinde değiştirin.

3- bootstrap/paths.php dosyasını açın ve 35. satırı aşağıdaki gibi değiştirin.

'public' => __DIR__.'/..',

4- İçi boş kalan public dizinini silin.

5- Artık public dizini diye bir şey yok, ancak laravel vendor vb. dizinler url üzerinden erişilebilir durumda. Bu klasörlere erişimi de htaccess ile engelleyelim. Ana dizinde bulunan .htaccess dosyasına aşağıdaki satırları ekleyin.

Herşey tamam. Böylelikle en kolay şekilde laravel public klasörünü kaldırmış olduk.

Eğer daha pratik bir çözüm kullanan arkadaş varsa deneyimlerini yorum olarak bekliyorum.

Sitenizin domain’ini değiştirmek

Domain Taşımak

Eğer bir sitenizi olduğu gibi yeni bir siteye aktarmak istiyorsanız (domain değiştirmek istiyorsanız) öncelikle dikkat etmeniz gereken bir şey var. Google. Eğer bu işlemi herhangi bir işlem gerçekleştirmeksizin yaparsanız Google yeni sitenin aynen eski siteden kopyalandığını düşünebilir ve bu kötü sonuçlar doğurabilir.

Diğer bir taraftan eski sitenizin hala arama sonuçlarında çıkıyor olması da yeni sitenizin ziyaret sayısını düşürecektir. Eğer Google Analytics kullanıyorsanız yeni sitenize yeni bir takip kodu oluşturursanız, eski istatistiklerinizi kaybetmis olacaksınız ki bu da kimsenin istemeyeceği bir şey.

Peki ne yapmak gerekiyor ?

Yapacağımız işlem eski sitenin aynısını yeni domain üzerinden yayına aldıktan sonra eski sitedeki tüm bağlantıları yeni siteye aktarmak, daha sonra arama sonuçlarında domain’in değişmesi için Google’a haber vermek. Ardından da Analytics bilgilerimizi yenileyerek yeni domain üzerinden verileri toplamaya başlamak.

Hemen Başlayalım

1 – Herşeyin yedeğini alın. Eğer bir sorun çıkarsa sitenizden olmayın…
2 – Eski sitenizin aynısını yeni domain üzerinden yayına alın ve herşeyin çalıştığından emin oldun.
3 – Yeni sitenizi Google Web Master üzerinden doğrulayın.
4 – Google Web Master TOOLS’dan eski sitenize gidin. Sağ üstteki ayarlar kısmından Change of Address / Adres Değiştir bölümüne tıklayın. Alt kısımdan yeni domainizi seçtikten sonra isteği gönderin.
5 – İsteği gönderikten sonra eski sitenizi tamamen silin, ROOT’a yeni bir htaccess dosyası oluşturun. İçeriği aşağıdaki gibi olacak. www.eskisite.com, www.yenisite.com bölümlerini kendinize göre düzenleyin.

Bu işlem tamamlandıktan sonra Google’da site:eskisiteniz.com şeklinde arama yapın. Sonuçlardan birisine tıklayıp, yeni sitenize başarıyla yönlendirme yaptığınızı doğrulayın. Eğer herşey çalışıyorsa Analytics doğrulamasını yapıp işimizi bitirebiliriz.

6 – Google Analytics’e erişin sitenizin istatistiklerinizi görüntülediğiniz sayfadayken sağ üstteki Admin/Yönetim linkine tıklayın. PROPERTY/MÜLK kısmında PROPERTY Settings / Mülk Ayarları linkine tıklayarak site adresinizi yenileyin.

İşlem tamam. Artık Google’da arama yapanlar ve eski sitenizi bulanlar otomatik olarak yeni sitenize geliyor. Ayrıca eski domain’iniz kısa zamanda Google sonuçlarından kaldırılacak ve yeni sitenizin adı ile değiştirilecek.

Düğün Dernek filmi

Düğün Dernek Filmi AfişiBu pazar şöyle bir sinemaya gidelim düşüncesiyle vizyon filmlerine baktık. Gösterimde bir sürü BKM filmi var, hangisine gitsek diye düşündük düşündük, Eyvah Eyvah 3′e gitmeye karar verdik. Ancak salonda adam gibi bir koltuk olmadığından biraz daha geç seans’daki Düğün Dernek filmine bilet aldık.

Düğün Dernek filmine girmeden önce filmle ilgili baya bir ön yargım vardı. İşler Güçler tayfasını bir zamanlar seve seve takip ediyordum. Ama diziyi çekerken son 8 – 10 bölümde işten çok sıkıldıklarını fazlasıyla belli etmeleri, seneryonun bambaşka yerlere gitmesi ve bitse de gitsek tadında yazılıyor olması, beni hem diziden hem de oyunculardan ölümüne soğutmuştu. Ahmet Kural, Murat Cemcir gözümde Mehmet Ali Erbil ile aynı yerdeydi yani.

Film 21:20 seansıydı 40 dakika falan reklam izledik, 22:00 gibi başladık filme.. 10 – 15 dakika içinde ön yargılarımdan yavaş yavaş kurtulmaya başladım ve genel itibari ile eğlendim.  Bir kaç sahnede çok güldüm, en çok da Rasim Öztekin‘e güldüm. Son zamanlarda gittiğim filmlerde çıkarken küfredip harcadığım paraya üzüldüğüm için, uzun zamandır sinemaya gitmiyordum. Ama bu filmle şevkim yerine geldi. Güzel bir filmdi tavsiye ediyorum.

Düğün Dernek Sana Puanım : 6/10

Not: 1 mısır, 2 kola, 1 tadelle çikolataya 20 liranın üzerinde para alan cinemaximum ailesini ayrıca tebrik etmek istiyorum. Sen hem filmlerin başına 40 dakika reklam koy, hemde dışardan dışarıda satılandan daha küçük boyda çikolatayı dışarıdakinden 4 kat daha pahalıya sat. Ayıp.

WordPress domain değişikliği sonrası resim adreslerini değiştirmek

WordPress’de domain değiştirdikten sonra yazı içlerinde yazdığınız resimlerin linklerini topluca değiştirmek için aşağıdaki sql komutunu kullanabilirsiniz.

Apple Earpods yalanmış

Dün kendime uzun zamandır istek listemde yer tutar Apple Earpods almaya karar verdim. Ürünü Teknosa’dan 80 lira karşılığında satın aldım, an itibari ile 2-3 saat kesintisiz kullanmış bulunmaktayım.

Yeni Apple Kulaklıkları

Her ne kadar Earpods’u sahibi olmak istesem de gerçekten almaya karar vermek kulak içi kulaklıkları kullanmakla ilgili problemim olduğu için pek kolay olmadı. Bu tip kulaklıklar 45 dakikadan sonra kulaklarımı acıtmaya başlıyor ve bir süre sonra müzikten çok bu acıyı duyuyorum… Sürekli olarak kulaklığın pozisyonunu değiştirerek acıyı azaltmaya çalışıyorum. Evet Apple Earpods’um olsun istiyorum, ama acı çekme ihtimalim olan bir kulaklığa 80TL vermek mantıklı mı ?

Teknosa’da ürünün başında uzun uzun bunları düşünürken, bu kulaklıkla ilgili WWDC’de binlerce kulağı 3-D olarak taradık ergonomik olarak en iyisini yapmaya çalıştık falan diye cümleler ile tanıtıldığını hatırlayıp almaya karar verdim. Sonuç olarak kulaklığı aldım ve ses kalitesi güzel, ama ergonomik olarak ucuz kulaklıklardan pek farkı yok. Şöyle ki bundan 2-3 sene önce 40 tl gibi bir fiyata aldığım ve geçen sene tek tarafı bozulduğu için emekliye ayrılan Philips kulaklığım bundan daha rahattı.

Sennheiser HD201

Eğer nasıl bir rahatlık arayışı içinde olduğumdan bahsetmem gerekirse philips kulaklığın bozulmasından hemen sonra D&R’dan 100 küsür TL’ye aldığım, Sennheiser HD201 den bahsetmem gerekir, bu kulaklık hala mükemmel şekilde çalışmaya devam ediyor. Uzunca kablosu ve yanında ücretsiz verilen altın 2mm jack to 3mm jack çeviricisi benim işime çok yaradı, çünkü kulaklığı M-Audio Fast Track II Ses harici ses kartı ile kullanıyorum. Şimdiye kadar sahip olduğum kulaklıklar içinde en rahat olan budur heralde… Kulak üstü kulaklıkları sevdim bu kulaklık sayesinde. Apple kulaklığı alırken beklediğim rahatlık en az HD201 kadar rahat olmasıydı, hatta beklendim bununda üstündeydi. Ama Earpods bu konuda sınıfta kaldı…

iPad, iPhone, iPod sahibi olmama rağmen aldığım kulaklıktaki çok fonksiyonlu tuşlar beni çok ilgilendirmiyor, çünkü kulaklığı en fazla gün içinde iş yerinde bilgisayar başında kod yazarken kullanıyorum. Onun dışında yanımda kulaklık taşıyan, dolmuşlarda müzik dinleyen yada telefonla kulaklıkla konuşan biri değilim. Eğer sizde benim gibi düşünüyorsanız ve 80 lira ödeyip karşılığında rahat bir kulaklık alma gibi bir beklentiniz varsa o zaman Apple earpods’dan uzak durun derim.. Çünkü bu ürün standart bir kulaklıktan çok fazlasını veremiyor, ama sanki verecekmiş gibi pazarlanıyor. Şöyle ki Apple’ın yukarda da linkini verdiğim Earpods tanıtım filminde tanıtılan kulaklıkla benim aldığım kulaklık bambaşka birer ürünmüş gibi geliyor.

Apple Earpods, Sana puanım: 5.5/10

İnternetime Dokunma Şarkısı

Bu videoyu 2011 yılında yapmıştım, ama internetim malum sebeplerden dolayı 90′lı yıllardaki kadar yavaş olduğu şu günlerde bu videoyu izleyip hatırlamakta fayda var…

Laravel ile gmail üzerinden mail göndermek

Laravel ile gmail üzerinden mail göndermek sandığınızdan çok daha basit.
app/config/mail.php dosyası içersindeki ayarları aşağıdaki gibi yapmanız yeterli.