Fortrabbit SSH ipuçları

Bu yazı Fortrabbit’i hali hazırda kullananlar içindir. Kullanmayanlar için kısa bir bilgi vereyim. Fortrabbit, bir PHP hosting servisidir. PHP dışındaki dilleri desteklemez, ve PHP’ye özel olarak geliştirilmeye devam edilmektedir. Composer, basit bir “git push” ile kodları deploy edebilmek gibi belli başlı artıları vardır. Çok uzatmak istemiyorum, detayları fortrabbit.com‘dan alabilirsiniz.

Fortrabbit’te SSH’e girerken sürekli şifreyi arayıp kopyalayıp yapıştırmaktan yorulduğunuzu farz ediyorum. Bunun için kısa ipuçları vereceğim. Öncelikle yapmanız gereken public keyinizi Fortrabbit’in ~/.ssh/authorized_keys dosyasının içine yapıştırmak. Bunun için önce public keyinizi kopyalayacağız. Şu komutla kopyalama işlemini yapabilirsiniz.

$ cat ~/.ssh/id_rsa.pub | pbcopy

Daha sonra Fortrabbit’e kaydetmek için önce SSH’e bağlanıyoruz. Daha sonra şu komutla authorized_keys dosyasını düzenlemeye başlıyoruz:

$ vim ~/.ssh/authorized_keys

Kopyaladığımız public keyi bu dosyaya yapıştırdıktan sonra kaydedip çıkıyoruz. Artık SSH’a girerken şifre girmemize gerek yok.

Olayı bir adım daha öteye götürüp Fortrabbit’in ssh2.eu.frbit.com gibi uzun SSH server adresini de girmek istemiyorum ve bunun için alias oluşturuyorum. Örneğin projemizin adı app-test olsun. Bu appin SSH kullanıcı adı u-app-test olacaktır. Normal şartlarda gireceğimiz komut “ssh u-app-test@ssh2.eu1.frbit.com” olacaktır. Bunun yerine ben apptestssh yazıp girmek istiyorum.

~/.bashrc dosyamızı açıp şu satırı eklememiz yeterli:

alias apptestssh = "ssh u-app-test@ssh2.eu1.frbit.com"

Artık terminale “apptestssh” yazıp direkt SSH’e bağlanabiliriz.

Artisan’a Command Kaydı Yaparken “Segmentation fault 11″ hatası ve çözümü

Bir ServiceProvider içerisinden Artisan için Command kaydı yapmak isterseniz ve normalde kullanılan Artisan::add() methodunu kullanırsanız “Segmentation fault 11″ gibi abuk subuk bir hata alabilirsiniz. PHP sürümleriyle de ilgili olan bu hatanın çözümü son derece basit.

Kayıt için öncelikle Command sınıfınızı IoC içerisine kaydedip daha sonra ServiceProvider’dan $this->commands(‘ioc.ye.kaydettiginiz.isim’); koduyla kaydınızı başarıyla tamamlayabilirsiniz. Örnek bir kod:

<?php namespace Ekrembk\Providers;

use Illuminate\Support\ServiceProvider;
use Ekrembk\Builder\Commands\Builder;

class BuildServiceProvider extends ServiceProvider
{
    public function register()
    {
        $this->app['eb.build'] = $this->app->share(function($app)
        {
            return new Builder;
        });
        $this->commands('eb.build');
    }
}

Sorunu çözmenin dışında kökenine de inmek isteyenler için, bu hatanın nedenini biraz daha açıklayayım. Bu kısım sadece meraklıları ilgilendiriyor.

Artisan’a start/artisan.php dışında command kaydı yapmak için `artisan.start` eventini beklememiz gerekiyor. Bu andan önce Artisan nesnesi yeni sınıf kaydı aldığında sorun veriyor. Zaten yukarıdaki kodda kullandığım $this->commands() methodunun kaynağına inersek şöyle bir kod görüyoruz:

        /**
	 * Register the package's custom Artisan commands.
	 *
	 * @param  array  $commands
	 * @return void
	 */
	public function commands($commands)
	{
		$commands = is_array($commands) ? $commands : func_get_args();

		// To register the commands with Artisan, we will grab each of the arguments
		// passed into the method and listen for Artisan "start" event which will
		// give us the Artisan console instance which we will give commands to.
		$events = $this->app['events'];

		$events->listen('artisan.start', function($artisan) use ($commands)
		{
			$artisan->resolveCommands($commands);
		});
	}

İsterseniz kendiniz de Event::listen() ile bu sorunu aşabilirsiniz ancak Laravel zaten sizin için böyle yardımcı bir method hazırlamışken aynı kodu tekrar yazmanın kimseye bir faydası olmaz.

Eloquent\Model ile Mock

Facadelar dışında `Illuminate\Database\Eloquent\Model` sınıfını kullandığınız sınıfları test ederken bu sınıfı mock etmekte zorlanmış olabilirsiniz. Bunun sebebi bu sınıfta statik methodlar bulunması ve statik methodların taklit edilmesindeki zorluk. PHP 5.3 ile birlikte farklı çözümler çıkmasıyla birlikte benim kullandığım yöntem Mockery özelinde olacak. Çünkü PHPUnit’e göre classları taklit etmek çok daha kolay ve çok daha okunabilir bir kod yazılmasına imkan sağlıyor.

Mockery ile bunu yaparken Alias: yöntemini kullanacağız. Aynı şekilde Overload ile de yapabilirsiniz. Bu durumlar için mock işlemini orijinal sınıf henüz yüklenmeden yapmanız gerekmekte. Ve aynı test içerisinde birden fazla mock oluşturmaya çalışırsanız hata alırsınız çünkü bu yöntemle aynı isimde fake bir sınıf oluşturuluyor ve aynı isimde iki sınıf olamaz.

Laravel’de bunu sağlamak için mock işleminizi testinizin __construct veya setUp methodlardan birinin içerisinde yapmanız gerekiyor.

Genel olarak mantığını anlatabilmişimdir umarım, bir de örnek kod vereyim:

<?php
 
use Ekrembk\Repositories\EloquentLinkRepository;
 
class EloquentLinkRepositoryTest extends TestCase {
    public function __construct()
    {
        $this->mockEloquent   = Mockery::mock('alias:Ekrembk\Link');
    }
 
    public function tearDown()
    {
        Mockery::close();
    }
 
    public function testTumuMethoduEloquenttenAldigiVerileriDegistirmedenDonduruyor()
    {
        $eloquentDongu = 'sahte dongu';
        $this->mockEloquent->shouldReceive('all')
                     ->once()
                     ->andReturn($eloquentDongu);
        $repo = new EloquentLinkRepository($this->mockEloquent);
 
        $tumLinkler = $repo->tumu();
        $this->assertEquals($eloquentDongu, $tumLinkler);
    }
}

Storcuyuz.com web sitesi yayına açıldı

Daha önceden yazdığım ve birkaç müşterinin daha kullandığı e-ticaret yazılımını perde hesaplamaları ve satışı için özel güncellemelerden geçiriyordum bir süredir. Storcuyuz.com için hazırladığımız bu yazılım dün itibarı ile yayına açıldı. Güzel bir iş olduğunu düşünüyor, müşterilerimize başarılar diliyorum.

Composer nedir? Nasıl kullanılır?

PHP ile çalışırken dış kaynakları, başka kütüphaneleri projeye dahil edebilmek hep çok dertli olmuştur. Her frameworkün ayrı yapısı var, projeye zamanla birçok kütüphane ekleyince PHP içerisinde tek tek yüklemek işkence. Bunun için PEAR kullananlar var ve aslında bu amaca hizmet de ediyor. Ancak ne kadar başarılı bir hizmet olduğu tartışılır, hatta ben açık açık PEAR'i muhatap dahi almayanların tarafındayım. Nedenlerini başka bir yazıda açıklarım.

Konudan sapmadan tekrar asıl anlatmak istediğim şeye döneyim. Bu yazıda, PHP komünitesinin son dönemde en popüler araçlarından biri olan Composerı anlatmak istiyorum. Projenizin içerisinde tutacağınız bir composer.json dosyasında projenizin hangi kütüphanelere ihtiyaç duyduğunu belirtin ve tek bir komutla hepsini sizin için indirsin. Hatta tek tek bunları include etme işlemiyle uğraşmanıza gerek yok, çünkü Composer’la birlikte bir autoload sistemi geliyor. Yani bütün bu kütüphaneleri tek bir satır kodla projenize ekleyebileceksiniz! Nasıl olduğunu yazının devamında bulabilirsiniz.

Kurulum


http://getcomposer.org üzerinden detaylı bilgi alabileceğiniz Composer’ın kurulumu son derece basit. Windows kullanıcıları hiç command line uğraşmadan kendileri için hazırlanan installerı kullanıp tek tıkla kurulumu tamamlayabilirler. Windows için Composer installerı buraya tıklayarak indirebilirsiniz.

*nix kullanıcıları ise şu komutla kurulumu yapabilirler:

$ curl -sS https://getcomposer.org/installer | php

Not: Bu şekilde Composer’ı yerel kurmuş olacaksınız. Tüm dizinlerde geçerli olacak bir kurulum için (ki bu mantıklı yoldur) şu komutu da ekleyebilirsiniz: (Aynı zamanda her seferinde php composer.phar demek yerine sadece composer komutunu kullanabileceksiniz.)

$ mv composer.phar /usr/local/bin/composer


Composer.json


Composer.json dosyası projenizin içerisinde tutacağınız ve Composer’la ilgili tüm ayarları yapacağınız dosyadır, yani can damarı diyebiliriz. Bu dosya içerisinde hem dışarıdan alacağınız yazılımlarla ilgili ayarları tutabilirsiniz, hem de kendi kodunuzu başka insaların Composer ile kullanabilmesini sağlayabilirsiniz.

Sıra sıra ilerleyelim. Öncelik dışarıdan kütüphane çekmekte. JSON dosyamızı oluşturmaya başlayalım:

{
    "require": {
        "monolog/monolog": "1.6.*@dev",
        "ozgur/est": "dev-master",
        "ekrembk/sanal-pos": "dev-master"
    }
}

Yukarıdaki örnek çok basit bir Composer.json dosyası. Projemize monolog ve sanal-pos kütüphanelerini eklemek istiyoruz. Sol tarafa kütüphanenin ismini sağ tarafa da versiyonu yazıyoruz. Versiyon seçiminde ne kadar net konuşmak istediğinizi >=2.0, <3.0, !=1.0.2 gibi kullanımlarla belirleyebilirsiniz.

Bu dosyayı kaydettikten sonra yapacağımız şey çok basit. Komut satırını açıp projemizin olduğu klasöre geliyoruz. (Bunu nasıl yapacağını bilmeyenler için örnek: cd /projenizin/yolu) Daha sonra şu kodu çalıştırıyoruz ve arkamıza yaslanıp bütün isteklerimizin önümüze gelmesini bekliyoruz:

composer install

image

Şimdi istediğimiz kütüphaneler vendor klasörünün içerisine geldi ancak PHP dosyalarımız içerisinden bunları çağırmamız lazım. Önceden de söylediğim gibi her kütüphane için tek tek gereken dosyaları include etmemize gerek yok. Tek yapmamız gereken:

require 'vendor/autoload.php';

Şimdi çektiğimiz kütüphaneleri yazılımımıza entegre etmeyi de öğrendiğimize göre biraz daha geliştirelim. Şimdi sadece yazılım üzerinde çalıştığımız evrelerde kullanacağımız kütüphaneler ekleyelim. Mesela phpunit buna güzel bir örnek. PHPUnit’i sadece yazılım üzerine çalışırken kullanacağız. Bunun için composer.json dosyamızda require’a ek olarak require-dev isimli ikinci bir alan oluşturuyoruz. Geri kalan her şey aynı şekilde. Örnek:

{
    "require": {
        "monolog/monolog": "1.6.*@dev",
        "ozgur/est": "dev-master",
        "ekrembk/sanal-pos": "dev-master"
    },
    "require-dev": {
        "phpunit/phpunit"
    }
}

Bu sefer kullanacağımız method çok az farklı:

composer install --dev

Peki zamanla kütüphaneleri güncellemek isterseniz ne yapacaksınız. Çok zor değil:

composer update

Hepsi bu. Şimdi biraz daha ilerletelim. Farz edelim ki bu kütüphanelere ihtiyaç duyan yazılımımızı artık başka insanlarla da paylaşmak istiyoruz. Hemen!

{
    "name": "Örnek yazılım",
    "description": "Örnek olsun diye hazırladığımız yazılımın açıklaması",
    "keywords": ["yazilimimiza", "etiketler", "verebiliriz"],
    "authors": [
        {
            "name": "Ekrem Büyükkaya",
            "email": "ebuyukkaya@gmail.com",
            "homepage": "http://ekrembk.com"
        }
    ],
    "require": {
        "monolog/monolog": "1.6.*@dev",
        "ozgur/est": "dev-master",
        "ekrembk/sanal-pos": "dev-master"
    },
    "require-dev": {
        "phpunit/phpunit"
    }
}

Bu şekilde yazılımınızın detaylarını belirliyorsunuz. Sıra bu yazılımları bütün komüniteyle paylaşmaya geldi:

Packagist


Buraya ayrı bir başlık atmak istedim çünkü çok önemli. Packagist.org‘u Composer için bir dizin olarak düşünebilirsiniz. Composer üzerinden çekip kullanabileceğiniz kütüphanelerin tamamına buradan ulaşabilirsiniz. Çok kolay bir arayüz üzerinen arama yapabiliyorsunuz.

Ayrıca yazının biraz yukarılarında Composer ile başkalarının da kullanımına hazır hale getirdiğimiz kodlarımızı Packagist’e rahatlıkla yükleyebilirsiniz. Bunun için kodlarınızı tutan reponun linkini (Git, Svn ve Hg destekliyorlar) girmeniz yeterli olacak. Kodları çekilecek ve sizin kütüphaneniz dizinde yerini alıp komünitenin ilgisini bekleyecek.

Packagist’i ziyaret etmeyi ihmal etmeyin!

Son Sözler


Son dönemde çok hızlı bir ilerleme kaydeden ve kod yazmayı gün geçtikçe daha eğlenceli hale getiren PHP komünitesinin son bombalarından Composer’ı kullanmayı gerçekten ama gerçekten hayati görüyorum. Bir kere kullanmaya alışınca kesinlikle vazgeçemeyeceksiniz.

Aklınıza takılan herhangi bir soruda yorum bırakabilir, e-mail ya da tweet atabilirsiniz.

Silikon Vadisi ve Girişimcilik’ten notlar

Dijital Girişimcilik Rehberi kitabının yazarı veya Dakick.com kurucusu olarak tanıyabileceğiniz Serkan Ünsal‘ın yeni kitabı Silikon Vadisi ve Girişimcilik kitabında gözüme çarpan, not aldığım noktaları paylaşıyorum.

Notları paylaşmadan önce kitabın oldukça kısa (~40 sayfa) ama yeterince bilgi dolu olduğunu söyleyeyim. Bu da okumayı daha zevkli hale getiriyor, bir oturuşta bitirilecek bir kitap. Bu arada kitap ücretsiz dağıtılıyor. Umarım Türk girişimcilerden bu tarz kitaplar çıkmaya devam eder. Çünkü Türkiye’de girişimcilikle ilgili bir şeyler öğrenmeye çalışan öğrenciler; karşılarında aynı insanları ve onların aynı başarı/başarısızlık hikayelerini görmekten sıkıldı diye düşünüyorum.

  • “Fikrinizi anlattığınızda başkası da yapabiliyorsa zaten o fikir değersizdir.” düşüncesi, tüm Silikon Vadisi’ni kaplamış durumda.
  • Silikon Vadisi’nde girişimciler melek yatırımcıya giderken “benim aklıma süper bir fikir geldi, kesin tutar” gibi bir cümleyle gitmiyorlar. Ellerinde prototip ve test gruplarının prototip hakkındaki görüşleri ile melek yatırımcının karşısına çıkıyorlar.
  • Türkiye ile kıyaslarsak ürünü çıkmadan test ettiren girişimci pek yoktur.
  • Türkiye’de başarısızlık deneyim değil, dışlanan ve beceriksizlikle eşdeğer görülen bir kavramdır.
  • Başarısızlığı övecek değiliz fakat başarısızlığı bir tecrübe olarak görüp tecrübeli insaları da sürekli olarak ekosistemde tutmamız bizi, Silikon Vadisi kültürüne bir adım daha yaklaştıracak, girişimcilerimiz de biraz daha cesur adımlar atacaktır.
  • Silikon Vadisi’nde “acquisition cost” gibi kavramlar yerini “cost per engaged user acquisition” kavramlarına bırakmaya başlamış.
  • Günü kurtarmak, iyi gözükmek yerine ürününüzü sevmiş ve tekrar kullanacak kişileri öne çıkarabildiğimizde uzun vadeli planlar yapmamız da kolaylaşacaktır.
  • Silikon Vadisi’nde arayüz konusunda da kullanıcı deneyimini test ettirme konusunda da bütçeler yazılım bütçelerini geçmeye başlamış.
  • Türkiye’de bir sitenin iyi gözükmesi çoğu girişimci için yeterli sayılabilirken kullanıcı testleri, satışa döndürebime testleri neredeyse hiç yapılmamaktadır.
  • Arayüz tasarımcının pazar trendleri ile geldiği, yazılım mühendisinin teknik verilerle geldiği, pazarlamancının ise ziyaret ve satışa dönüştürebilme yetenekleri ile ilgili izlenimleri paylaştığı “deneyim mühendisliği” toplantıları yapmak bizleri Silikon Vadisi’ndeki yaklaşıma bir adım daha yaklaştıracaktır.
  • Silikon Vadisi’nin en iyi öğrencileri girişimci, yatırımcı olurken, teknoloji şirketlerinde çalışırken, bizim en iyi öğrencilerimiz askeri yazılım donanım şirketlerinde çalışmakta veya Amerika’da çalışmaktadır.
  • Danışmanlar size yol gösterir, çevresiyle tanıştırır, kararlarınıza yardımcı olur. Mentorlar ise hangi yoldan gitmeniz gerektiğini söylemez, sadece yolları tanımlamanıza ve yolları sorgulamanıza yardımcı olur.
  • Silikon Vadisi’ndeki girişimcilerin çok iyi okullardan çıkmasına rağmen tecrübe paylaşımına ve girişim konusunda da kullanıcıları dah çok söz sahibi yapması Türkiye’de zayıflık gibi görülse de değiştirmemiz gereken en önemli konuların başında gelir.
  • Türkiye’de Etohum ve Girişim Fabrikası gibi oluşumlar dışında girişimciliğin yoğun konuşulduğu alanlar bulmak neredeyse imkansızdır.
  • San Fransisco’da en sık görebileceğin şey dizüstü bilgisayarıyla çalışan bir girişimcidir.
  • Yeni mezun bir Stanford öğrencisinin Instagram’ın kurucusuna, Next’in kurucusuna, Zynga’nın kurucusuna uzaklığı en fazla 2-3 kişidir.
  • Silikon Vadisi’nde bazen aynı kafede 5-6 yatırımcı bile görebilmek oldukça avantajlı bir durum. Türkiye’de 5-6 yatırımcıyı aynı yerde görebilmek için büyük bir konferansa gitmeniz gerekir.
  • Tanışmak ile çevre yapmak arasındaki kalın çizgiyi de bilerek ilerlemek gerekiyor. Bunu da özellikle oraya sonradan yerleşen göçmen girişimcilerden öğrenmek mümkün. Görüştüğüm girişimcilerden biri çevre yapmak için 1.5 yıl boyunca tüm girişimci etkinliklerine gittiğini ve ilk girişimini başarıyla sattıktan sonra iyi bir çevreye sahip olduğunu aktarmıştı. Bu da “Silikon Vadisi’nin taşı toprağı altın” kavramının yanlış olduğunu özellikle dışarıdan gelenler için hayatın daha zor olduğunu gözler önüne seriyor.
  • Silikon Vadisi’nde olduğu gibi bilgiyi paylaşa paylaşa ekosistemin ortalama bilgi ve tecrübe düzeyini yukarı çıkartmamız gerekiyor. Girişimciler birbirini rakip gördüğü ve bilgi ve tecrübelerini paylaşmadığı sürece sürekli olarak geri giden bir ekosisteme sahip oluyoruz.
  • Bir iki girişimcinin bilgi ve deneyimleri o ekosistem için yeterli olmuyor.
  • San Fransisco’da, Palo Alto’da ve diğer tüm şehirlerde erken dönemdeyken tek başına ofis tutanların sayısı neredeyse sıfır.
  • 2011 yılında VC’ler Kaliforniya’da 14.5 milyar dolar yatırım yapmışlar. (11.7 milyarı Silikon Vadisi’nde.)
  • 2011 yılında Amerika’da tohum döneminde yapılan yatırım miktarı 930 milyon dolar. Erken dönem yatırım miktarı da 8.3 milyar dolar.
  • 2011 yılında internet ile ilgili 15 milyar dolar yatırım yapılmış ve bunun 7 milyar doları Silikon Vadisi’nde.
  • Geçtiğimiz yıl Maçkolik ve Yemeksepeti’ne yapılan iki büyük yatırımı saysak bile Türkiye’deki yatırım miktarı 70 milyon doların altında, yani Silikon Vadisi’ndeki yatırım miktarının 1%’ine denk geliyor.
  • Silikon Vadisi’nde bir milyar dolarlık bir işe dönüşebilecek bir girişim peşinde koşan yatırımcılar bunu yapmak için birçok girişime farklı dönemlerde yatırım yapıyorlar. Hem riski dağıtmış oluyorlar hem de şanslarını arttırmış oluyorlar. Türkiye’de riski dağıtacak kadar bile girişim olmadığını düşünürsek yatırım şirketlerinin portföy oluşturma şansları oldukça az.
  • Türkiye’de bir VC’nin önüne melek yatırım almamış, deneyimli melek yatırımcıların süzgecinden geçmemiş girişimler gelmesi de, yatırım yaptıkları girişimlere sonradaki turlarda yatırım yapacak yatırımcı olmaması da olduçta motivazyon düşürücüdür.
  • Bir elin parmaklarını geçecek kadar VC’miz var artık.
  • Silikon Vadisi’nde, Kaliforniya’da vergisel bir avantaj yoktur. Hatta tam tersine Kaliforniya vergilerin en yüksek olduğu eyalettir.
  • “Hire in good times, fire in bad times” / “Hire and fire easily” gibi özler Amerika’da oldukça yaygın.
  • Silikon Vadisi’nde deneyimli girişimciler yeni girişimcilere göre her zaman avantajlı ve çoğu zaman kayrılıyor. Bu da büyük şirketlerde bile yıllarca çalışmış kişilerin yeni denizlere yelken açmasını kolaştırıyor.
  • Devlet destekli, yer gösterilecek, vergisel avantaj sağlayarak yaratılan yapay oluşumlar ölü doğmaya mahkumlar.
  • Türkiye’de girişimciler için bir teknoloji veya KOBİ borsası açmak hem yatırımcılar açısından yatırımlarının geri dönüşlerini almak için iyi bir alternatif olabileceği gibi hem de şirketler için mevcut pozisyonlarını korumak ve yıkıcı inovasyon yapan firmaları satın almak konusunda fayda sağlayacaktır.
  • Silikon Vadisi’nde yeniliğe sıcak yaklaşımlar sadece bireysel müşteriler için değil, kurumsal müşteriler de yeniliğe oldukça sıcak bakıyorlar.
  • İnovasyona inanıyorsak önce onu denemeli ve ardı sıra gelecek inovasyonların önünü açmak için motive edici olmalıyız.
  • Kaliforniya’da halkın 80%’i internet kullanıyor (~30 milyon). Neredeyse Türkiye’yle aynı (ülke toplamı).
  • Kaliforniya’da internet kullananların 75%’i internetten en az bir kez alışveriş yapmış (~24 milyon), Türkiye’de bu rakam 8-9 milyon civarında.
  • Tüm San Fransisco’da bile bir elin parmaklarından daha az alışveriş merkezi var.
  • Türkiye’de bir ürünün maliyetini hesaplarken AR-GE maliyetini ve insan gücünü değil malzeme maliyeti hesaplanıyor. Bu da bizi hep başka ülke ürünlerinin daha kaliteli olduğu yanılgısına sürüklüyor.
  • 1970′lerde öğretmen, 1980′lerde memur, 1990′larda doktor olunması tavsiye edilen bir ülkede girşimci olmak, risk almak oldukça zordur.
  • Yeni ödeme sistemi ürün ve çözümleri bankalardan değil Google, Paypal, Apple, Facebook, Amazon gibi internet dünyasının devlerinden veya Levelup, Roam, Uber gibi yeni girişimlerden gelmektedir.
  • 2012 yılında ülkemizde kartla yapılan internet harcamaları toplam kart harcamalarının 9%’una ulaşmış durumda.
  • Deborah Perry Piscione, Silikon Vadisini; “Nerede çalışıyorsun?” sorusunun çok az sorulduğu, “Tutkun nedir?” sorusunun sıkça sorulduğu bir yer olarak tanımlıyor.

Laravel 4 Günü!

downloadBütün blogu Laravel 4 dersleriyle doldurmak isteyip zamansızlıktan sürekli şikayet ederim. İnşallah bir süre sonra video dersler ile bu açığı kapatacağım ama o başka zamanın konusu.

Laravel’in ne olduğunu bilmeyenler için kısaca gelmiş geçmiş açık ara en başarılı PHP frameworkü diyebilirim. Kelimesi kelimesine hiç şüphe etmeden yazıyorum bunu. Çünkü php frameworklerini birkaç adım ileriye taşıdığını düşünüyorum.

Bugünün Laravel için de çok büyük önemi var. Çünkü zaten iyi olan frameworkün evrimleştiği sürüm olan Laravel 4 bugün yayına çıktı! Birkaç aydır zaten üzerinde çalışılan kodlar üzerinden çalışabiliyorduk ancak kararlı bir sürüm bambaşka. Dökümantasyonunu biraz inceleyip farklılığı ve kaliteyi kendiniz anlayabilirsiniz. Asıl zevki yakalamak için de kodları inceleyin (Github repo). Önceden uyarayım, meraklısı için içine girdikten sonra çıkmak saatler alabiliyor :) Facadeler, Artisan, Eloquent… her biri başı başına yazılar aslında. Ayrıca Composer kullanıyor olması ve Laravel Bundler’ı bunun için devreden çıkartması da güzel özelliklerinden başka bir tanesi.

Bir süredir işte yarattığım her boşluğumda Laravel kullandığımı söylersem takıntı düzeyimi anlatabilirim sanırım. Bu konuda ders arayanlar için Nettuts ve Jeffrey Way‘i takip etmelerini öneriririm. Görüntülü ve yazılı dersleri son derece iyi. Hatta imkanınız varsa premium üyelik almanızı da öneririm. Sadece Laravel özelinde değil genel olarak çok iyi.

Laravel’in yaratıcısının normal bir insan olmasını beklemek de mümkün değil tabii. Taylor Otwell‘in GitHub sayfasını inceleyip nasıl manyakça çalıştığını görebilirsiniz. Issuelara dakikalar içerisinde çözümle cevap vermesi, son 12 ayda 37 gün hariç her gün commit göndermiş olmasıyla zaten GitHub’ın en aktif üyeleri arasında.

Bugünün Laravel için bir önemi daha yazının içinde adı geçen Jeffrey Way’in Laravel Testing Decoded kitabı bugün çıktı. Kitabı satın almak için buraya tıklayabilirsiniz. 15$’ı fazlasıyla hak ediyor. Çıktıktan çok az sonra satın aldım ancak üzerinden sadece birkaç saat geçtiği için kısaca göz atabildim sadece. Unit testinge de temelden başlıyor, TDD’ye meraklı olan her seviyedeki kullanıcılar rahatlıkla alabilir. Bu kitabın kattıklarını da yine blogda paylaşmaya çalışacağım.

Ben de Laravel’i uzun süredir müşterilerin işlerinde kullanmak istiyordum ve Laravel kullanabileceğim ilk ciddi projeye şans eseri bugün başlamak zorunda kaldım.

Git Aliases kullanımı ve kullandığım aliaslar

Git aliases nedir?

Bu yazıyı okuyan birinin Git ile zaten tanışmış olduğunu varsayıyorum. Eğer öyle değilse yazılım hayatınızın sağlıklı bir şekilde devam etmesi için size tavsiyem git’in ne olduğunu öğrenip hemen kullanmaya başlamanız. O kadar çok kez hayatınızı kurtaracak ki şaşıracaksınız.

Git hayatınızdaysa aynı şeyleri tekrar tekrar yapmaktan sıkıldığınızı farz ediyorum. Tabii bu dediklerim bir GUI yerine direkt Terminal’i tercih etmeniz durumunda geçerli. Bu noktada komutları uzun uzun yazmaktansa kısayollar yaratma şansımız var. Bu imkanı bize Aliases başlığı altında Git zaten veriyor.

Kısayolları iki şekilde belirleyebiliyorsunuz. Birincisi proje bazlı ayarlar. Bu şekilde belirlediğiniz kısayollar sadece o repoda geçerli olacak ve diğer projelerinizde tekrar ayarlamanız gerekecek. Ayar dosyası <RepoKlasoru>/.git/.gitconfig‘dir İkincisi de global ayarlar. Bunu yapmak için sisteminizin home dizininde .gitconfig dosyasını düzenlemeniz gerekiyor. Yoksa bu dosyayı oluşturun.

Home dizininizin neresi olduğunu bilmiyorsanız:

Windows’ta: X:/Users/<KullanıcıAdınız>/
*nix: ~/

Gitconfig dosyanız zaten oluşturulmuş ve içerisinde belirli ayarlar olabilir. Bu dosyanın formatı çok basit. Ayar grupları [grup] şeklinde başlıyor ve onun altındaki her bir satıra bu grupla ilgili bir ayar geliyor. Mesela kısayollarımız [alias]  grubu altında olacak. Şu şekilde:

[alias]
    kisayol = gercekKomut

Örnek vermek gerekirse:

[alias]
   com = commit
   pushom = push origin master

Bu şekilde kendi kısayollarınızı belirleyebilirsiniz. Seçenek ve argümanları da kısayolda belirtebileceğinizi unutmayın (Yukarıda pushom ile örneğini yazdım.)

tl;dr

Kısayollarım: (liste daha uzundu ancak kullanmadığımı fark ettiğim bir bölümü çıkarttım.):

    search = "!git ls-files | grep -i"
    pushom = push origin master
    pullom = push origin master
    com = commit
    br = branch
    co = checkout
    cl = clone
    st = status
    r = reset
    loglist = log --pretty=format:"%C(yellow)%h%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate
    filelog = log -u
    al = "!git config -l | grep alias | cut -c 7-"

Jshint Tercihlerim

Sublime Text için tercihlerimden sonra aklıma JSHint tercihlerimi de paylaşmak geldi.

JSHint nedir?

JSHint, javascript kodlarınızı belirli bir standartta ve düzgün bir formatta tutmak için denetleyicidir. Daha önceden bu işi yapmak için ortaya çıkan ve oldukça popüler olan JSLint’i temel alan ancak kendi isteğinize göre tercihler yapabileceğiniz bir halidir. JSHint ile geçmişten geleceğe belirli bir düzende tutabilirsiniz kodlarınızı, yazarken hatalarınızı fark edebilirsiniz. Daha da iyisi birden çok yazılımcı tek projede çalışıyorsa o projenin kod stilini belirli bir standartta tutabilirsiniz. Kesinlikle tavsiye ediyorum.

Nasıl kullanılır?

Birden fazla kullanım biçimi var. Node Package Manager ile kurup konsolunuz üzerinden erişebilirsiniz. Sublime Text ve başka editörler için eklentiler kullanabilirsiniz (Ben SublimeLinter kullanıyorum).

Burada yazacaklarım zamanla geçerliliğini yitirebileceği için bu adresten kullanım detaylarını incelemeniz daha doğru olur.

.jshintrc nedir?

.jshintrc adında oluşturacağınız ve proje dizininizde tutacağınız bir dosya ile JSHint ayarlarınızı JSON formatında tutabilirsiniz. Ayarlarınızı yapmanın aslında birden fazla yolu var, örneğin herhangi bir javascript dosyasında en üstte comment satırında da belirtebilirsiniz ama ben dosyalarda yer kaplamamasından yanayım.

Benim .jshintrc dosyam

1 2 3  Scroll to top