LYK’16 (LİNUX YAZ KAMPI!)

Herkese Merhabaaa 🙂

Bu sene ilk kez Linux yaz kampına katıldım. Yazımda daha önce katılmadığıma çoook pişman olduğum bu harika kamptan ve 15 günlük kamp sürecinden bahsettim. Keyifli okumalar. ^^

                             logo.png

5-20 Ağustos 2016 tarihleri arasında yapılan kamp, 4 yıldır olduğu gibi bu sene de Bolu Abant İzzet Baysal Üniversitesi’nde idi. Kampa katılmak için 1-15 Temmuz arasında başvurularımızı yaptık. Kabul maillerimiz geldi ve LYK maceramız başlamış oldu.

Kampta konuları ve içerikleri birbirinden güzel 11 farklı kurs vardı. Ben Ruby on Rails kursunda idim. İlk gün Rails kodlamamız için gerekli toolların ve geliştirme ortamının kurulumu ile geçti. İkinci güne Umurcan Görür hocamızdan temel Ruby eğitimi ile başladık.  Açıkçası daha önce çok fazla Ruby deneyimim yoktu ve kamp ile birlikte Ruby’i çok sevdim. İlerleyen günlerde Rails’e başlamadan önce Tayfun Öziş Erikan hocamızdan Web nasıl çalışır, arka planda hangi istekler yapılır ve Rails uygulamamız web ile nasıl haberleşir konularını ,  Leyla Kapi  hocamızdan Haml ve Sass’ı projelerimizde nasıl kullanabileceğimizi öğrendik ve Kader Sucuk hocamızdan da Git/Github  ile alakalı güzel bir sunum dinledik.

Artık sıra Rails’e gelmişti. Mehmet Beydoğan  , Muhammet Dilmaç , Saygın Burak Sevinç hocalarımızla Rails’e başladık ^^ Yoğun, öğretici ve eğlenceli bir haftanın ardından bir günlük bir aramız oldu. Sınıfça Gölcük’e gittik. Doğası ve manzarası gereği kesinlikle gidip görmeniz gereken bir yer.

IMG_0019

Ruby on Rails Sınıfı Kahvaltıda 

Piknik, trekking, fotoğraf çekimi, bisiklet sürme, çimlere uzanmaca gibi her türlü eğlenceli ve dinlendirici aktivite için uygun bir yer gözlemlediğim kadarıyla. Sonra merkeze inip yoğurtlu gözleme yedik 😀 Bahsetmesem yazı eksik olurdu. Bolu’ya giderseniz yoğurtlu gözlemeyi de deneyin kesin ^^

IMG_0077

RoR Sınıfı ^^ 

Aradan sonraki kısımda Utku Kaynar hocamızda bize katıldı ve Rails eğitimine devam ettik. Kampın son 2 günü çok çok eğlenceli bir şey oldu. Tabi ki uygulama! Öğrendiklerimizi uygulamamız için 3-4 kişilik gruplar halinde yarıştık. Konumuz IMDB’nin kitaplar için olan versiyonunu yapmaktı. Hem eğitici hem de eğlenceli bir yarışma süreci geçirdik ve maalesef 15 günün sonuna geldik. 20 Ağustos cumartesi günü kapanış törenini yaptık, sertifikalarımızı aldık ve kısa bir süreliğine vedalaştık.

us257UaW.jpg

 

Bir öğrenci olarak kampı değerlendirmem gerekirse, hem çok eğlendim hem de gerçek anlamda bir şeyler öğrenmenin mutluluğunu yaşadım. Kampta her şey gönüllülük üzerine ilerliyor bu arada. Eğitmenler bu iş için para almıyorlar, üstelik yıllık izinlerinden feragat edip 15 gün boyunca maximum çabayla bir şeyler öğretme amacındalar. Ha bir de, siz de “Ben de bir şeyler öğretirim abi!” diyorsanız eğitmen olarak başvurabiliyorsunuz.

Emeklerinden ve güzel arkadaşlıklarından ötürü tüm eğitmenlere, organizasyondaki görevli herkese bu yazı aracılığı ile teşekkürlerimi sunuyorum. İyi ki varsınız!

Şu linkten Linux yaz kampı ile ile ilgili merak ettiğiniz her şeye ulaşabilirsiniz. LYK’17 de görüşmek üzere o zaman ^^

WTM İstanbul – Google CSI Lab: Creative Skills For Innovation

Merhaba arkadaşlar 🙂

27 Aralık 2015 Cumartesi günü Women Techmakers İstanbul tarafından organize edilen Google CSI Lab’a katıldım.

9427226_orig.jpg

Yazıyı yazmaya ancak fırsat bulabildim. Geç olsun güç olmasın dedim ve deneyimlerimi sizinle paylaşmak istedim 🙂 Keyifli okumalar.

Etkinlik Google Türkiye Ofisi’nde yapıldı. Kontenjan 20 kişiydi.

20151227_113804

Etkinliği yaptığımız yer ana ofis değildi. Biz 5. katta, konferans salonu tadında bir yerdeydik ama güzelliğe bakar mısınız? (Sanırım aşık oldum 😀 kalpler kalpler kalpler)

Geçelim etkinliğe. Öncelikle Google CSI Lab nedir bundan bahsedelim.

Etkinlik sayfasında şöyle bir tanım var : “Bir soruna ya da ihtiyaca kullanıcı odaklı bakış açısıyla bakarak inovatif fikirler geliştirme ve prototip haline getirme sürecini deneyimleten bir workshop ve aslında bir ‘yapılandırılmış düşünce methodu’ (Structured thinking methodology).”

Bizde aynen böyle yaptık. Belirli bir ihtiyaç üzerinden yola çıkarak, eğitici ve eğlenceli bir süreç içerisinde beyin fırtınası yaptık ve ortaya çıkan fikirleri prototipledik.

Konumuz ‘Türkiye’de teknoloji sektöründe daha fazla kadın görebilmek için neler yapılabilir?’ idi.

Etkinlik Sevnur Malik’in sunumu ile başladı. Kendisi bu etkinlikte bizlere moderatör olarak eşlik etti 🙂

Devamında Google Developers Regional Lead Barış Yesugey Google’ın Women Techmakers programı ve bu program kapsamında yapılan faaliyetlerden bahsetti. Motive edici bir sunum olduğunu söyleyebilirim.

CXOkh5MWsAEzwsF

Barış Bey’in sunumundan sonra ortamı ısıtacak eğlenceli bir oyun oynadık.

Her katılımcıya bir etiket verildi. Etiketlerde yerli/yabancı oyuncular, şarkıcılar hatta çizgi karakterlerin isimleri yazılıydı. Herkesin alnına birer etkiket yapıştırıldı. Etiket sahibi kişi etikette ne yazdığını bilmiyordu. Yapmamız gereken şey karşımızdaki kişiye sorular sorarak etiketteki kişiyi bulmaktı. Yanıtlayan kişi sadece evet veya hayır ile cevap verebiliyordu. Ben Gupse Özay’dım 🙂

Aşağıda takım arkadaşım Kaan Kırlı’nın hararetli bir kimlik bulma çabasını izliyorsunuz 🙂

20151227_132429

Bu eğlenceli aktiviteden sonra işe koyulma zamanı dedik ve workshopımıza başladık.

Sevnur Hanım’ın yönlendirmesi ile önce gruplara ayrıldık. Gruplar genel olarak 4’er kişilikti. Grup arkadaşlarım Merve Güngör, Okan Aydın ve Kaan Kırlı’ya da buradan selam olsun 🙂 İlk adım olarak grup içerisinde 5’er dakikalık soru cevaplar ile birbirimizin profillerini çıkardık. Kadınları teknoloji sektöründe daha fazla görmek için neler yapılabilir sorusuna çeşitli yaklaşımlarda bulunduk.

Sonra gelsin beyin fırtınaları! Bir sürü fikir ürettik. Hem bizim hem de diğer ekiplerin masaları fikirlerle doldu taştı. Her yer kafalarımızdan çıkan düşünce balonlarıyla doldu. 🙂

20151227_135522.jpg

Fikirlerimiz bazı aşamalardan geçti. Eledik, hangisi önemli hangisi kolay yapılabilir bu gibi faktörleri göz önünde bulundurarak prototipleme sürecine geçtik.

Sonra sıra sunum aşamasına geldi. 5 fikir çıktı. Fikirleri sunduktan sonra kendi aramızda oyladık. 1. IRONA oldu. Kız çocukları için tasarlanmış bir akıllı ev. Amacı klasik Barbie oyuncakları ve evlerinin yerine kız çocuklarının bu evle oynayarak teknolojiyle küçüklükten haşır neşir olmaları. Keşke küçükken benimde olsaydı 🙂

Bizim fikrimiz 2. oldu. Düşündük , düşündük ve dedik ki : Kadınlar teknolojiden korkmasın, önyargılar kırılsın. Önlerinde birer idol olsun. Bu idolden beslenip motive olsunlar. Yazılım neden yapılır, nasıl yapılır bilsinler ve kendilerini rahat hissedecekleri bir hackathon olsun.

20151227_155657.jpg

Bunun için önce kadın yazılımcıları bir araya getirecek bir etkinlik organize edilsin dedik. Etkinliğe yazılıma ilgisi olan veya olmayan herkes davet edilsin. Amaç önyargı yıkmak. Kadın yazılımcılar yaşadıkları zorlukları, bunları nasıl aştıklarını, yazılımla uğraşmanın nasıl bir şey olduğunu anlatsınlar dedik.

Bu birinci aşama idi. Bu aşamanın amacı korkuları yok etmek ve ilgi uyandırmak.

İkinci aşama workshoplar evresi. İlgisi çekilen kitle için workshoplar organize edelim ve basitten zora doğru kadınlara yazılımı anlatalım, sevdirelim dedik.

Bu süre zarfında sürekli mentorleriyle iletişim halinde olabilsinler ve şevkleri hiç kırılmasın diye istedikleri zaman bizlere ulaşabilsinler dedik.

Son olarak artık yazılım nedir , teknoloji korkulacak bir şey midir? sorularına yanıt bulan ve workshoplarla yazılım dünyasına adım atmış kadınlar için bir hackathon düzenleyelim.Tamamen onlara özel bir hackathon. Konforuyla, saatleriyle , mekanıyla içlerindeki yazılım aşkı perçinlenir dedik.

Ağaşıda Google’ın muhteşem ikramlarından 3 saat içinde bir sürü kilo alıp, fikrini anlatmak üzere sunum yapan beni görüyorsunuz. Normalde tabii ki 45 kiloyum 😀 (Şaka bir yana Google’ın ikramları bir harikaydı. Google yine beni kendine aşık etti. Bunu da belirtmeden geçmek istemiyorum. )

20151227_155742.jpg

Sunumlar yapıldı. Oylamalar yapıldı. Etkinlikten sonra biraz da ayaküstü sohbet yaptık.

Gelelim değerlendirmeye

Bir fikrin üretilip , prototipleme süreci hakkında bir sürü şey öğrendim diyebilirim. Ekip halinde çalışmak ve WTM ekibi ile tanışmak da bana ayrı keyif verdi. WTMİstanbul’a bu güzel organizasyon için teşekkür ediyorum. Umarım başka etkinliklerde tekrar bir araya geliriz. 🙂

Şimdilik benden bu kadar. Başka bir yazıda görüşmek üzere! 🙂

20151227_161127.jpg

 

 

CouchDB , Futon ve Curl İle CRUD İşlemleri

Herkese Merhaba 🙂 Bu yazımda basitçe “CouchDB nedir? , Futon nedir, nasıl kullanılır? , Terminalden curl ile Couchdb üzerinde CRUD işlemleri nasıl  yapılır?” konularını inceleyeceğiz.

Couchdb NoSQL tabanlı, verileri JSON formatında tutan , MapReduce indeksleri için JavaScript ve kendi API’si için HTTP kullanan, Erlang ile yazılmış open source bir veritabanı sistemidir. 

couchdb_logo.png

Öncelikle “NoSQL nedir, nasıl bir yapısı vardır?” hakkında şu yazımı okuyarak bilgilenebilirsiniz. 🙂 

Map Reduce kavramına değinelim. Big Data severlerin hakim olduğu bu kavram, dağıtık mimariler üzerindeki çok büyük verilerin kolay bir şekilde analiz edilmesini sağlayan bir kütüphaneyi simgeler. Google tarafından geliştirilmiştir. Map ve Reduce fonksiyonları ile işlem yapılır.

Map tarafında ana düğüme gelen veriyi küçük parçalara ayrılır ve işçi düğümlere gönderilir. İşçi düğümler belirlenen işleri gerçekleştirdikten sonra sonuçları ana düğüme döner. Reduce tarafında ise tamamlanan işler belirli bir mantığa göre birleştirilir. Kısaca map tarafında analiz edilmesi gereken veriler seçilir, reduce tarafında analiz işlemi yapılır diyebiliriz.

Gelelim asıl konumuza : Couchdb’yi nasıl kullanacağız?

Couchdb kurulumu için şuraya tıklamanız gerekiyor. Uygun işletim sistemi ve versiyonunu seçip kurduysanız artık couchdb ile işlem yapmaya hazırsınız. Official sitesinde nasıl kurulum yapacağınız da anlatılıyor.

Ben Ubuntu 15.04 kullanıyorum, işlemleri Ubuntu üzerinden anlatacağım. Couchdb 1.6.1’i kurdum. İlk başta kurulum aşamasında fazlaca problem yaşadım. Hata çöze çöze kurulum yaptım diyebilirim. 🙂 

Root olarak işlem yapıyoruz bu yüzden komutu sudo ile verdim. Couchdb’yi başlattık : 

Screenshot from 2015-12-07 16:39:05

İkinci bir terminal penceresi açalım. Buradan işlemlerimizi yapacağız. Ama önce size Futon’u anlatmalıyım.

Futon için Couchdb’nin arayüzü desek yanlış olmaz. Ulaşmak için url çubuğuna http://127.0.0.1:5984/_utils/ yazıyoruz. Kurulum esnasında localhostu ve 5984 numaralı portu ayarlamıştık. Futona bir göz atalım. 

Screenshot from 2015-12-07 16:52:57

Karşımıza böyle bir pencere geliyor. Kullanımı son derece basit. Sol üstte bulunan create database ‘e tıklayarak yeni bir database oluşturabiliriz. Tıklayalım madem 🙂 Veritabanımıza bir isim verdikten sonra yine sol üst köşede bulunan new document kısmından ilk dökümanımızı ekleyelim. Şimdi bu dökümana field eklememiz gerekli. add field kısmından field eklemeye başlıyoruz. Id için random bir değer geliyor. Bildiğiniz gibi NoSQL’de id ile işimiz yok bu yüzden gelen değere okey demenin bence bir sakıncası yok 🙂 Ekledikten sonra sağ tarafda bulunan source kısmına tıkladığınızda verinin JSON formatında tutulmuş olduğunu göreceksiniz. 

Screenshot from 2015-12-07 17:07:47

 

Save document dediğimiz an artık veritabanımıza ekleme işlemi yapmış olduk. Source kısmında da fields kısmında da verilerin üzerine çift tıklama yaparak düzenleme yapabiliriz. Ekleme, silme ve güncelleme işlemleri bu arayüz sayesinde basit ve açık bir şekilde yapmayı öğrendik. 

Gelelim curl ile yani terminal üzerinden bu işlemleri gerçekleştirmeye. Temel olarak curl ile kullanacağımız 4 method var : 

-GET/POST

-PUT

-DELETE

GET methodu ile verileri görüntüleyebiliyor, PUT ile ekleme yapıyor ve DELETE ile silme işlemini gerçekleştiriyoruz. 

Screenshot from 2015-12-07 17:19:04.png

curl -X GET http://127.0.0.1:5984/_all_dbs komutu ile kayıtlı tüm veritabanlarını görüntüleyebiliyoruz. İlk açtığımız terminal penceresinde de işlemlerimiz anlık olarak listeleniyor.

curl http://127.0.0.1:5984/ komutu ile couchdb versionu ile birlikte bizlere merhaba diyor.

curl -X PUT http://127.0.0.1:5984/database_name komutu ile yeni bir veritabanı oluşturuyoruz.

 

curl -X DELETE http://127.0.0.1:5984/database_name komutu ile veritabanımızı siliyoruz.

Elimizdeki bir json dosyasını da curl ile veritabanımıza ekleyebiliriz. Öncelikle bir adet json dosyası oluşturalım, adı newfile.json olsun ve verilerimizi json formatında kaydedelim.

Terminalden dosyanın bulunduğu dizine girerek şu komutu kullanıyoruz : 

http://127.0.0.1:5984/database_name/ -d @newfile.json -H “Content-Type: application/json”

Futon’dan sayfayı yenilediğinizde yeni dökümanın veritabanınıza eklenmiş olduğunu göreceksiniz. 🙂

Şimdilik Couchdb’den ve benden bu kadar. Mutlu günler 🙂 

 

 

 

NoSQL Nedir?

Merhaba arkadaşlar. Bu yazımda birlikte , günümüzde fazlaca popüler olan, ilişkisel veritabanlarına alternatif olarak ortaya çıkan NoSQL yapısını basitçe inceleyeceğiz.  🙂 

                            nosql-nedir

NoSQL denildiğinde aklımıza ilk olarak “SQL değil” anlamı gelse de NoSQL için NOT ONLY SQL yani “Sadece SQL Değil” kavramı da kullanılmaktadır.

Yazının başında ilişkisel veritabanlarına alternatif olarak ortaya çıkan tabirini kullandım. İlişkisel veritabanlarında kullanılan SQL sorguları NoSQL’de yoktur. Veriler JSON ya da XML formatında tutulur. 

“Neden kullanıyorlar ki bunu? Amaç nedir abi?” sorusu için şöyle bir açıklama getirebilirim. Günümüzde internetin yaygınlaşması ve hızlanması sebebi ile sistemler sürekli büyüyen bir veri yumağına dönüşüyor. Sistemlerin büyümesi ile veritabanları da karmaşıklaşıyor ve karmaşık veritabanlarında sürekli değişiklik yapmak zorlaşıyor.

Tabloları ve sütunları ekleyip, son olarak ilişkileri düzenlediğimiz, fazla sayıda veri barındıran bir veritabanı düşünelim. Bir süre sonra tabloya yeni bir sütun eklememiz ya da önceden planlayamadığımız bir değişiklik yapmamız gerektiğinde , tabloyu ve ilişkileri yeniden tasarlamamız, belki veritabanı tasarımını baştan yapmamız gerekebilir. Bahsedilen değişiklikleri büyük bir sistem üzerinde uygulamak verimsiz/maliyetli sonuçlar doğurabilir.

NoSQL de sonradan değişiklik yapmak ilişkisel veritabanlarında olduğu kadar verimsizlik yaratmaz. Çünkü tablo veya sütun kavramlarının olmadığı NoSQL de tek yapmanız gereken eklemek istediğiniz veriyi JSON ya da XML formatında eklemektir. 

İlişkisel veritabanları transaction alt yapısıyla çalışır. Yani veri bütünlüğünü sağlamak için çeşitli prensiplere dayanarak işlem yapılır. NoSQL’de transaction kavramı yoktur. Fire and Forget adı verilen bir prensiple çalışan bu sistemde amaç hız ve performansı maximize etmektir. Yani %100 veri bütünlüğü sağlamaz. Bankacılık gibi hassas , verinin aynı anda her yerde güncellenmesi gereken sistemlerde NoSQL tercih edilmemektedir. 

Günümüzde Google Big Table , Amazon ise DynamoDB adını verdiği NoSQL veritabanı sistemi ile verilerini saklamaktadır. NoSQL genel olarak çoğu sistemin belli kısımlarında, parça parça kullanılmaktadır. 

NoSQL kendi içinde şu şekilde gruplandırılmıştır :

1) Wide-column stores

2)Document databases

3)Key-value stores

4)Graph stores

Şimdilik NoSQL hakkında bildiklerim bu kadar. Öneri ve düzeltmeler için yorum yapabilirsiniz. Bir daha ki yazıda görüşmek üzere. Mutlu günler 🙂 

Bye-smiley

 

Terminal Üzerinden Git Erişimi, SSH Key Ve Dosya Yükleme

Merhaba arkadaşlar. Bu yazımda terminal üzerinden Git’e nasıl erişilir, bilgisayarda oluşturulan bir dosya uzak depoya nasıl gönderilir bunu inceleyeceğiz.

Öncelikle Git ile iletişim kurmak için ssh key almamız gerekiyor. Terminali açalım. Kullanıcı adımız ve mailimizi sisteme kaydedelim :

Screenshot from 2015-10-12 11:19:10

Şimdi ssh key oluşturmak için şu kodu terminale yazalım :

ssh-keygen -t rsa -C “mail_adresiniz@blabla.com”

Bu komuttan sonra ssh keyinizi kaydetmek için bir dosya adı girmenizi istiyor. Siz sadece adını giriyorsunuz dosyayı kendisi oluşturuyor. Oluşturduğunuz bir dosyanında içine yazdırabiliyorsunuz. Ayrıca entera basmanızda yeterli. Entera bastığınızda ssh keyiniz .ssh dosyanızda kayıtlı tutuluyor. Dosya oluşturulduktan ve anahtarınız kaydedildikten sonra ekrana verilen şu mesajla parola girmeniz isteniyor :

Enter passphrase (empty for no passphrase):
Enter same passphrase again:

Parolanızı girdikten sonra ekrana verilen mesaj keyinizin saklandığı dosyayı gösteriyor :
Your identification has been saved in /home/gizem/.ssh/id_rsa.
Your public key has been saved in /home/gizem/.ssh/id_rsa.pub.

SSH Keyimizi kullanmak için ssh agent ‘ı configure etmemiz gerekiyor Bunu da şu komutlar ile sağlıyoruz :

eval “$(ssh-agent -s)”

ssh-add ~/.ssh/id_rsa

Artık anahtarımız oluşturuldu. Anahtarı kopyalamak için xclip i indirelim ve çalıştıralım :

sudo apt-get install xclip
xclip -sel clip < ~/.ssh/id_rsa.pub

Şimdi yapmamız gereken şuraya tıklamak ve ssh keyi yapıştırmak.  Add ssh key butonuna tıklıyoruz. Keyimize bir ad veriyor ve keyi yapıştırıyoruz. Artık ssh keyimiz aktif.

Şu komut ile aktifliğimizi kontrol edelim :

ssh -T git@github.com

Bu komut sonucu dönen “Hi kullanici_adi! You’ve successfully authenticated, but GitHub does not provide shell access.”  bağlantımızın aktifleştiğini gösteriyor. Ara yüzden de görüleceği üzere keyimizin üzerinde minik bir yeşil ışık yanıyor.

Şimdi terminal üzerinden dosya yüklemeye geçelim. Github üzerinden bir repo oluşturun. Ben blogdeneme adında bir tane oluşturdum.

Eğer bu dosya bilgisayarınızda yoksa

mkdir dosya_adi şeklinde oluşturabilirsiniz. mkdir komutu “make directory” den gelmektedir.

Screenshot from 2015-10-12 12:39:52

Directoryimizi oluşturduktan sonra cd proje_adi komutu ile blogdeneme dosyasının içine girmiş olduk. index.php sayfamızı oluşturduk ve echo komutu ile içine bir şeyler yazdık.

git init komutu ile boş bit git reposunu başlatmış olduk.

git add . komutu yapılan tüm değişikliği almamızı sağlar. Güncellemek üzere tüm değişikliği ekliyoruz.

git commit -m “blablabla” ile dosyamızı commitledik.

git remote add origin git@github:kullaniciadiniz/projeniz.git ile uzak depomuz ile bağlantı kurmuş olduk.

git push origin master komutu ile yaptığımız her şeyi uzak depomuza push ettik.

Şimdi Github üzerinden yapılan değişiklikleri kontrol edelim.

github1

index.php dosyamız oluşturulmuş ve yaptığımız commitleme işlemi kaydedilmiş. Dosyanın içine girelim.

github2

Echo ile yazdığımız satır da dosyamızın içine kaydolmuş.

Okuduğunuz için teşekkürler. Bir sonra ki yazıda görüşmek üzere 🙂

Git/Github nedir? Terminal Üzerinden Git Kurulumu

Merhaba arkadaşlar. Bu yazımda Git/Github nedir? Geliştiricilere faydası nedir? Terminal üzerinden Git Kurulumu gibi başlıkları inceleyeceğiz.

130712_git_github_topdenota1

Öncelikle Git nedir bu konuda konuşalım. Git dağıtık bir versiyon kontrol sistemidir. Basit olarak , üzerinde çalıştığınız bir projeyi yükleyebildiğiniz, aynı projeyi takım arkadaşlarınızın clone edebildiği, proje üzerinde offline olarak çalışıp, yaptığınız değişiklikleri kaydedebildiğiniz bir sistemdir. Github için ise verisyon kontrol sistemimiz için uzak bir depodur diyebiliriz.

Git/Github kullanımının geliştiriciler bir çok faydası var. Public olarak istediğiniz kadar proje oluşturabilirsiniz. Private olarak ücretsiz versiyonda 1 tane hakkınız var.

Hızlıdır. Git ile zamandan tasarruf edebilirsiniz. Kodlarınızı terminal üzerinden yüklemek size zaman kazandıracaktır. Binlerce satır kodu kopyala yapıştır yapmak hem zor hem de oldukça sıkıcı bir işlemdir. Aynı proje üzerinde birden fazla kişi çalışabilir ve yapılan çalışmalar izlenebilir. Değişiklikler tarihleriyle birlikte satır satır tutulur. Offline iken çalıştıklarınızı bir güncelleme ile online deponuza gönderebilirsiniz. Diyelim harddiskiniz yandı ya da bir şekilde bilgisayarınızdaki kodlar silindi. Projenizi tekrar bilgisayarınıza klonlayabilirsiniz. Ayrıca güvenilir bir sistemdir.

Şimdi Github kullanımına ve Git kurulumuna bakalım. Öncelikle şuradan Github’a kaydımızı yapalım. Kayıt olduktan sonra New repository kısmından proje oluşturabiliyoruz.

Screenshot from 2015-10-12 10:26:08

Oluşan projeye yeni sayfalar ekleyebiliyor, README belgesi oluşturabiliyoruz.

Screenshot from 2015-10-12 10:37:29

Create repository diyorum ve yeni repom oluşmuş oluyor. Bu repo ile yukarıda anlattığım her şeyi yapabiliyoruz. Şimdi terminal üzerinden Git kurulumunu inceleyelim.

Öncelikle http://git-scm.com/downloads adresinden Git’i indiriyoruz. İndirdiğimiz paketi bilgsayarımıza kuralım :

sudo apt-get install git    komutu ile Git’i kuruyoruz. Github ile bağlantı yapabilmek için ssh key almamız gerekiyor. Bir sonra ki yazımda ssh key almayı ve terminal üzerinden Git kullanımını anlatacağım.

Görüşmek üzere! 🙂

github

PHP ile E-mail Göndermek

phpmailer7418

Merhaba arkadaşlar. Bugün birlikte PHP ile nasıl mail gönderebiliriz bunu inceleyeceğiz 🙂 

Öncelikli olarak kullanabileceğimiz mail() fonksiyonu var. Fakat bir çok sunucu mail() fonksiyonuna kapatılmış durumda. Sebebi ise bu fonksiyon ile gönderilmiş maillerin spam kutusuna düşmesidir. Tabi ki bunun olmasını istemiyoruz. PHP’nin bu konuda bize sunmuş olduğu bir başka güzellik var.

PHPMailer Class’ı ve SMTP Protokolü (Simple Mail Transfer Protocol) . Mail gönderim işlemi yapılacak bilgisayar SMTP suncusuna bağlanır. Kullanıcı adı, şifre gibi kontrollerin ardından sunucu onay verirse mail gönderme işlemi tamamlanmış olur.

Şimdi adım adım PHPMailer ve SMTP’yi  kullanarak bir mail gönderelim. Öncelikle buradan PHPMailer Class’ını indiriyoruz. İndirdiğimiz dosyadaki php uzantılı class.phpmailer.php , class.smtp.php ve class.pop3.php dosyalarını çalıştığımız proje dosyası içine gömüyoruz. Üzerinde çalıştığımız php sayfası bu dosyaların ile aynı dizinde olması gerekiyor.

Ben kullanıcıdan verileri ayrı bir sayfada almayı tercih ettim ve başlangıç olarak mailgiris.php dosyamı oluşturdum. Bilgileri kullanıcıdan almak yerine elle de girebilirsiniz. HTML ile klasik, basit bir form oluşturalım.

Giriş sayfamın kodları :

<hmtl>

   <head>
       <title>COMPOSE E-MAIL</title>
   <style>

        body
        {
              background-color: skyblue;
        }

   </style>


   </head>
    <body>

From :

//Gonderenin mailini aliyoruz

To :

//Gonderilecek adresi aliyoruz

Subject :

Gonderinin konusunu aliyoruz

Mail :

//mail metnini alıyoruz

</body> </hmtl>

(From, To, Subject ve Mail kısımlarının kodları wordpress tarafından otomatik olarak derlendiği için şimdilik gösteremiyorum.)

Girilen verileri “post” metodu ile mailalis.php sayfasına gönderiyoruz. Sayfanın local’de çalıştırılmış halinin ekran görüntüsü şöyle :

ss

Şimdi asıl işin olduğu yani mail gönderme işlemini yaptığımız, PHPMailer Classı ve SMTP’yi kullandığımız sayfamızı oluşturalım.

Mail gönderme sayfamın kodları :

<?php

include 'class.phpmailer.php'; //PHPMailer sinifimizi import ettik
$mail = new PHPMailer(); 

$from = $_POST["from"];  //Bu dort satirda formdan gelen verileri degiskenlere aktardik   
$to = $_POST["to"];
$subject = $_POST["subject"];
$mail_text = $_POST["mail"];

$mail->IsSMTP(); //Maili gonderecegimiz yolu belirledik
$mail->SMTPDebug = 1; Debug islemi. 1 degeri hata ve mesaj icinken 2 degeri ile sadece mesaj olusturuluyor 
$mail->SMTPAuth = TRUE; //SMTP kimlik dogrulamayi etkinlestirdik
$mail->SMTPSecure = 'ssl'; //Guvenli baglanti icin ssl'i tercih ettim, 'tls' de kullanilabiliyor
$mail->Host = 'smtp.gmail.com'; //Gmail sunucusu uzerinden islem yapacagimi belirttim
$mail->Port = 465; //587 normal baglanti icin gerekli port numarasi, guvenli baglanti icin 465'i kullaniyoruz.
$mail->CharSet = 'UTF-8'; //Dil ayarlari icin UTF-8 i kullaniyoruz.
$mail->Username = $from; //mailin gonderilecegi adres
$mail->Password = '********'; //mailin gonderildigi adresin sifresi
$mail->SetFrom($mail->Username, $from);
$mail->Subject = $subject; //konu
$mail->AddAddress($to); //mailin gideceği adres
$mail -> MsgHTML($mail_text); //mailin icerigi


//Asagıdaki kod blogunda mailin gonderilip gonderilmedigini kontrol ediyoruz. 

if(!$mail->Send())

{
    echo "Mailer Error: ".$mail->ErrorInfo;
}
else
{
    echo "Sent";
}

?>

İşte bu kadar. Mailiniz gönderildi. Yandex mail için hostu ‘smtp.yandex.com’ , port numarasını 587 ve SMTPSecure ‘u tls olarak değiştirip denemeler yapabilirsiniz.

Aslında çok zor bir işlem değil gördüğümüz gibi 🙂 PHPMailer sınıfını import ediyor ve her şeyi SMTP üzerinden hallediyoruz.

Kendi bilgisayarımdan kendi adresime denemeler yaptım bir kaç sorunla karşılaştım. Sorunlardan ve nasıl çözdüğümden bahsetmek istiyorum.

  • Öncelikle karşılaştığım ilk sorun   "SMTP -> ERROR: Failed to connect to server: Unable to find the socket transport “ssl” " hatası oldu. Sorunun çözümü için stackoverflow’da gözüme takılan bir yorumdan faydalandım.

php.ini dosyasını açtım.

;extension=php_openssl.dll     –> satırını buldum ve başındaki noktalı virgül karakterini sildim. Sonra apache’yi restart yaptım ve sorunum çözüldü. 

  • İkinci sorun ise “SMTP -> ERROR: Password not accepted from server: 534-5.7.9 Application-specific password required. ” 

Sorunun çözümü için araştırma yaparken aklıma gmail hesabımın 2 adımlı doğrulama ile açıldığı geldi. Şifremi giriyorum, telefonuma bir kod gönderiliyor ve gelen kodu ekrandaki kutucuğa girince hesabıma erişebiliyorum. Belki doğru iz üzerindeyimdir diye düşündüm ve 2 Adımlı Doğrulamayı etkisiz hale getirdim ve sorun çözüme kavuşmuş oldu. Ekrana “Sent” mesajı basıldı ve mail inboxıma düşmüş oldu. 🙂

Okuduğunuz için teşekkür ederim. Görüş ve önerilerinizi yorum olarak gönderebilirsiniz. 🙂