16 Şubat 2014 Pazar

Git ve Github

Git açık kaynaklı bir versiyon kontrolü yazılımıdır.

Github ise, git ile versiyon kontrolü yaptığımız paketlerimizi, açık kaynaklı ise bedava, kapalı kaynaklı ise aylık ücretlendirilerek hem yer edinmesine hem de bir çok geliştirici tarafından aynı anda geliştirilirken yönetilmesini sağlıyor.


Github “social coding”e de imkan veren, kod yazan insanların facebook’udur da diyebiliriz.

Bir proje üzerinde birden fazla geliştirici olsun ,her geliştiricinin yaptığı değişiklikleri kimin neyi değiştirdiği görmek istediğimiz zaman satırlarca uzun kodu tek tek incelemek epey uğraştırıcıdır yada  farklı dosyalar üzerinde sürekli değişiklikler yaptığımızı düşünelim, bir yerden sonra yaptığımız değişikliğin hatalı olduğunu farkettik şimdi ne yapacağız sürekli  Text editörü veya IDE’de geri al düzelt yapmak bizi epey yorar, yada silmek istemediğimiz bir dosyayı sildiğimizde geri almak istersek ne yapacağız işte tüm bu sorunların cevabı da Github'dır.

Github da yapılan en küçük değişiklik bile commit adı verilen komutlarla tutulabilir. Projemize yeni özellikler eklemek istediğimiz mesela projeye bir dal (dallanma olayına branch denir) oluştururuz ve burada orjinal proje üzerinde istediğimizi yapabiliriz daha sonra bunu tekrar ana projeye dahil edebiliriz bu olayda merge olarak geçer. Birçok kişi aynı proje üzerinde çalıştığında her biri farklı dallardan gerçekleştirir bu olayı ve işlerini tamamladıktan sonra bunu ana projeye merge ederler.Githubın sağladığı kolaylıklardan sadece birkaçıdır bunlar.

Git ve Github nasıl kullanılır?

Öncelikle github kullanabilmek için bir github hesabımızın olması gerekiyor . şuradan girip kayıt olup bir adres edinebilirsiniz.
Daha sonra gerekli ortamı oluşturmak için linux konsoldan  

$sudo apt-get install git  

komutu veriyoruz.

Bilgisayarımızla github hesabımızın anlaşması için bir güvenlik anahtarı oluşturmamız gerekiyor. Bunu yapmamızın nedeni ise bu key ile  bizi tanımalarını sağlamaktır.  Bilgisayarımız da yaptığımız her işlemin githuba yansıması sağlanır böylece.
 

$ssh-keyge

komutunu konsola yazarak çıkan ekrandaki anahtarı kaydetmek için bir dosya yeri(.ssh/id_rsa.pub)ve  bir parola girdikten sonra bir key elde etmiş oluruz. Buna da ulaşmak için gedit text editörünü kullanabiliriz.  

$gedit .ssh/id_rsa.pub 

komutu ile anahtarımıza erişmiş oluruz.

Şimdi bu anahtarımızı github hesabımıza girerek kaydediyoruz.
account setting(https://github.com/settings)   butonuna

1

ordan da SSH key(https://github.com/settings/ssh) butonuna  2

daha  sonra  Add SSH key butonuna
 3

Çıkan ekranda Title kısmına başlık ve key kısmına anahtarımızı ekleyip
5 
Add key tıklayıp kayıt ediyoruz.

Böylece bilgisayarımızda lokal olarak yaptığınız değişiklikleri github da gözlemleyebiliriz.
Github da bilmemiz gereken 3 önemli terim vardır bunlar  repository, fork ve branchtır.

Burada repository den bahsedelim öncelikle , bizim Github da paylaştığımız projelerimiz burada yer alır.
Bir repo açma örneği yapalım öncelikle hesabımızda  resimde gözüken yere tıklayarak

77    

 aşağıdaki resimdeki ekranın gelmesini bekliyoruz.

88  Burada bir repo adı yazıp  , create repository butonuna tıklıyoruz.

sonraki aşamada elde edeceğimiz ekran görüntüsü aşağıdaki gibidir.
99             
Farzedelimki masaüstümüzde Python dili ile yazılmış kodların olduğu bir
klasörümüz var biz bu klasördeki kodları bu repomuza yollamak
isteyelim. Bunun için ;
 
$mkdir Desktop/ilk_repo  

adında bir klasör oluşturuyoruz. Klasörümüze makinamızdan bir çok python kodu yerleştiriyoruz.Daha sonra bu klasörümüzün içine girelim    

$cd Desktop/ilk_repo   

komutu ile ve yukarıdaki resmimizde çıkan aşamaları konsolda tek tek uygulayalım. Böylece normal oluşturduğumuz kodları git reposu haline getireceğiz. öncelikle;

$touch README.m

komutu ile repo hakkında yorumlarımızı yazabileceğimiz bir dosya oluşturuyoruz.Daha sonra,

 $git init 

komutunu ile komutuyla oluşturduğumuz dosyayı github’ın anlayacağı dile çeviriyoruz.

 $git add .

 diyerek  klasörümüzdeki tüm python kodlarını dahil etmiş oluyoruz .

$git commit -a -m "python_kodları"

değişiklik kayıtları için commit mesajını yazıyoruz

$git remote add origin https://github.com/kadertarlan/ilk_repom.git

 komutu ile depomuzun yolunu yazıyoruz.

son olarak dosyaları repo’muzun master branch’ına göndereceğimizi farzediyoruz ve

$ git push origin master

diyerek commit’imizi repo’muzun master branch’ına yolluyoruz. Başka bir branch’a yollamak için  master yerine o branch’ın adını yazıyoruz.

Bu kodumuzdan sonra github hesap adımızı ve şifremizi soran yazıları yanıtladıktan sonra kodlarımız repomuza ulaşmış demektir .

l77


şekildede görüldüğü gibi repomuz python kodlarımızla dolmuş bulunuyor.

İkinci bir örneğe gelelim bu seferde var olan bir repositorydeki public olarak githubda yayınlanan bir projeyi kendi localimize almak isteyelim. Bunun için önce fork etmemiz gerekir , fork kavramına da burada değinmiş oluruz.
Fork ile bu proje artık bizim kendi klasörümüze gelmiş olur.  Böylece onu clone edip kendi bilgisayarımıza alabiliriz.


    herhangi birinin hesabındaki bir
   projeyi forklamak istediğimiz zaman    sağdaki resimde sağ üst köşedeki        fork butonuna tıklarız.
   repomuzun şu andaki adı
   ismetacar/tantuni-rails dir. Ancak
   repoyu forklandıktan sonraki  
   adının değiştiğine dikkat edin.
   Benim repom için adı
   kadertarlan/tantuni-rails olacaktır.




şekilde görüldüğü gibi repo adımız değişti. Şimdi proje artık bizim kendi klasörümüze gelmiş oldu ve artık clone etmeye hazır haldedir.
 
$git clone https://github.com/kadertarlan/tantuni-rails.git

komutu ile kendi localimize bu projeyi almış olduk.  

$cd tantuni-rails
    
Komutu ile projenin içine girebilir, değişiklik yapabilir, silebilirsiniz.
Daha sonra bunu tekrar git’e göndermek istediğinizde

 $git status

 komutunu verip localiniz de ki klasörünüzde değişen,eklenen,silinen dosyaları görürsünüz, nerelerde değişiklik yaptığınızı görmek isterseniz

$git diff 

komutunu vererek dosyada yaptığınız değişiklikleri görürsünüz.

$git add dosyalar

komutu ile tekrardan git e yollayabiliriz.

$git -m commit "duzenlendi" 

 komutunu verirek yaptığımız her değişikliği kayderiz.

$git push origin gonderilecek_branch 

 komutunu da verip repositorymizi düzenlenmiş şekilde tekrardan githuba göndermiş oluruz.

Ayrıca benim yaptığım bu değişiklik klonlamak için aldığım orjinal dosyayı etkilemez. Biz bunu şu an kendi branchımıza yani kendi dalımıza yolladık kendi repomuzdaki proje üzerinde değişiklik yaptık. Ancak bu değişikliğin orjinal dosyadada olmasını istiyorsak   kendi branch’ımızda iken githubta  pull request butonuna tıklarsak. Karşı tarafın bu pull requesti görmesini sağlarız , karşı taraf benim eklediğim satırları yeşil, çıkardığım satırları ise kırmızı görür böylece değişen dosyaları ayırt etmek kolaylaşır . Karşı taraf pull requesti gördü hatırlarsak diff bize değişiklikleri haber ediyordu o da diff ine bakarak değişiklikleri görür. Ve eğer o da bu değişikliği kendi projesine koymak isterse merge eder.

Şimdi 3. önemli konumuz olan branchtan bahsedelim birazda..

Bir proje içerisinde çalışmaya başladık diyelim  bu projeye yeni özellikler eklemek istiyoruz yada çalışacağım insan sayısını artırmak isitiyoruz bu durumda dallar yani branchlar eklememiz gerekecek.

$git checkout -b yeni_branch  

komutu ile yeni bir branch açtık böyle bir çok branch açabiliriz. Peki açtığımız tüm branchları görmek için ne yapmalıyız onun için de

$git branch


komutunu kullanırız.

master branch ana projemizin olduğu branchdır. diğerleri ise sizin sonradan oluşturduğunuz branchlardır.

$git pull 

komutu ile ana projemizin olduğu yer yani master'dan , projemizi oluşturduğumuzu yeni dala çekeriz. Sonra burada kod üzerinde  istediğimiz değişiklikleri orjinal projeyi bozmadan dilediğimizce yaparız. Yaptığımız değişiklikleri kaydetmek istersek

$git commit -am "degistirildi"

yazarak değişikliği kaydederiz.

Projede yapmak istediğimiz her seyi yaptıktan sonra bunları  ana projeye dahil etmek istediğimiz zaman ana brancha geçeriz.

$git checkout master

komutu ile ana brancha geçeriz ve kendi branchımızda yaptığımız değişikliği ana brancha aktarmak için

$git merge

Komutunu veririz.

15 Şubat 2014 Cumartesi

Ruby on Rails

Ruby nesne tabanlı bir programlama dili olup oldukça sade ve kısa bir sözdizimine sahiptir. Karmaşık kodlar yerine gelişmiş uygulamaları kısa yoldan gerçekleştirebilmemizi sağlar.
Rails ise web üzerinde veritabanına dayanan çalışmaları gerçekletirmeye yarayan , Ruby programlama dili üzerinden çalışan bir web uygulama geliştirme  aracıdır.
Web uygulamalarının yapılmasını kolaylaştırmak için tasarlanmıştır çok daha az kod ile istenileni gerçekleştirmeyi hedefler.
Rails, Dont Repeat Yourself (DRY) yani kendini tekrar edip durma ve Convention Over Configuration yani rutin işlerin ruby on rails tarafından hal edildiği felsefeleri üzerine kuruludur.

Railsi kurmak için gemlerden faydalanırız.  Gems, Ruby ile yazılmış bir paket yönetim sistemidir. Linux’da ki yum , apt tarzı bir işlem gibi düşünülebilir. İçinde bir çok paket barındırır.
Ruby kurmak için linuxta konsola  sudo apt-get install ruby  yazarak kurabiliriz.
RubyGems kurmak için, önce download sayfasından indirin. Arşivi açın ve ruby setup.rb ile çalıştırın.
Rails kurmak için  gem install rail yazın ve  rails –version  ile de version kontrolü yapabiliriz.

Rails temeli Model(ActiveRecord)-View(ActionView)-Controller(ActionController) (MVC) üzerine kuruludur.

- Model’ler

Rails yapısında modeller esas olarak veritabanı ile olan ilişkilerden sorumludur. Veri tabanınızdaki her tabloya karşılık uygulamanızda bir model olacaktır. Örneğin comment modeli veritabanında comments tablosu ile ilşkilidir. Comment modeli bu tabloda Create, Read, Update ve Delete işlemlerini yapar.

- View’lar (Görseller)

Görseller uygulamanızın kullanıcıya gözüken yüzüdür. Rails’de görseller, ruby kodlarıyla birleştirilmiş HTML dosyalarıdır. View’ın, Model ile iletişimi  Controller üzerinden olur.

- Controller’lar

Kontrolörler, modeller ve görseller arasında birleştirici görevi yaparlar. Rails’de kontrolörler,  dış dünyadan kullanıcı aracılığıyla web den gelen  istekleri kabul edip işleyerek  verileri kullanıcıya sunulması için view katmanına göndermekte.


Şimdi basit bir rails projesi yapalım,terminalden;

$ rails new project

yazarak ilk projemizi oluşturalım ve $ cd project komutu ile projemizin içine girelim.

$ rails server komutunu vererek  varsayılan olarak bir web server başlatacaktır.

Uygulamamızı çalışır şekilde görmek için bir tarayıcı açıp ve http://localhost:3000 adresini girin. Rails’in default bilgilendirme ekranı görecekseniz.


 $cd   project ile projemizin içine girdik projemiz içinde
 $ls   komutu verdiğimiz zaman proje içinde app, bin config,db, lib, log, public, test,tmp ve vendor dizinleri ile bir kaç dosya görüyoruz şimdi bunların ne işe yaradıklarına bir bakalım..

app/: Bu klasörde views, controllers ve models katmanları bulunur.

config/ : Bu klasörde uygulamamızın çalışma kuralları, yolları, veritabanı ve yapılandırma dosyaları bulunur.

config.ru :Rack temelli suncucular için uygulamayı başlatmak için konfigürasyonlar içerir.

db/:Geçerli veritabanı şeması,  ve veritabanı geçişleri için birleştirmeleri (Migration)  içerir.

Gemfile : Bu dosya Rails uygulamamızın bağlantılı olduğu Gem’leri belirtir.

lib/:Uygulamamız için modüller bulundurur.

log/: Uygulamamızın log dosyaları.

public/ : Dışarıdan , oldukları sekilde ulaşılabilen  dosyalar buradadır. Burada statik dosyalarımız bulunur, tüm resimleriniz, javascriptleriniz, stilleriniz ..

README: uygulama için kısa kullanım kılavuzudur. Uygulamamızın ne yaptığını, nasıl, vb ayarları için kullanıcılara söylemek istediklerimizi bu dosyaya yazarız.

test/:Birim testleri , bağlayıcılar ve diğer test yardımcılarını içerir.

tmp/: Geçici dosyaları barındırır.

vendor/:Tüm 3. parti yazılımları buradadır. Tipik bir Rails uygulamasında, Gem dosyaları,pluginler ve projenizin içine gömecekseniz Rails kaynak kodu bulunur.

Gerekli Gemlerin Kurulması

Rails uygulamamızın kullandığı tüm gemleri vendor klasöründe işleyemek için Bundler gemi kullanır.
Bu uygulamamızı başlatmak ve hatasız olarak çalıştırmak için gereken bağımlılıkların olduğundan emin olmamızı kolaylaştırır.

#bundle install   komutu ile bunu kurabiliriz.


Rails’de Veritabanı

Hemen hemen tüm Rails uygulaması veritabanı kullanır. Kullanılacağımız veritabanı config/database.yml dosyasında yer alır. Rails uygulaması oluşturduktan sonra bu dosyayı kontrol edersek SQLITE3 gibi bir veritabanından bahsedildiğini görürüz.

$ rake db:migrate   komutu ile  db/  klasöründe  veritabanlarınızı oluşturur.


Şimdi Rails üzerinde kısa bir çalışma yapalım..

Rails’in var olan “Welcome abroad” yazısı yerine hazırladığımız görselin çıkmasını isteyelim mesela bize  “Hoşgeldin Rails” desin  bunun için :

$ rails generate controller welcome index
komutunu kullanırız.

Bu  komutu açıklarsak Rails’in bize Hoşgeldin Rails! demesi için bize controller ve views katmanları lazım. Bu komutla birlikte Rails bunu sağlıyor.

app/  dizi içinde controllerda  welcome_controller.radında bir dosya oluşturuyor ve içinde index  metodu yer alıyor,  aynı zamanda bu komut  app/  dizini içinde  views  klasöründe  index.html.er adında bir html dosyası oluşturuyor.

$app/views/home/index.html.erb    dosyasını açıp içine sadece
 <h1>Hoşgeldin Rails!</h1>   yazıp kayıt edip çıkalım.

Şimdi http://localhost:3000/ adresine girdik  ve hiç bir değişiklik olmadığını gördük çünkü  routes.rb  dosyasında ana sayfamızın değiştiği haberini vermedik.   Bu dosyada uygulamamızın Rails’e gelen isteklerin nasıl yönlendireceğini anlatan DSL girdileri vardır.

$config/routes.rb   dosyasını açalım , bu dosyada sadece yorumlar vardır, bu yorumlarda örnek yönlendirmeler yer alır.
 root :to   ile örnek yönlendirmenin önündeki yorum işaretini(#)  kaldıralım ve şu hale getirelim:

Project::Application.routes.draw do
# get “welcome/index”
# The priority is based upon order of creation: first created -> highest priority
# See how all your routes lay out with “rake routes”
# You can have the root of your site routed with “root” 

root ‘welcome#index


Şimdi $rails server komutu ile Rails projemizi tekrar çalştıralım ve tarayıcımızdan http://localhost:3000/ adresi ile giriş yapalım.

Çıkan sonuç şekildeki gibi olur:

Screenshot from 2014-02-16 03:28:34

25 Ocak 2014 Cumartesi

SELENIUM


Selenium
Selenium web tabanlı uygulamaların testlerini browser üzerinden yapmamızı sağlayan bir araçtır.Tüm web testlerinin yapılabileceği açık kaynak kodlu bir test aracıdır. Diğer test araçlarına göre daha fazla gelişmiştir. Web ortamında testlerinizi kaydetme , çalıştırabilme, düzeltme, yeniden test etme imkanı verir.
Test adımları için java, ruby, python gibi farklı yazılım dilleri kullanılabilir.
Test adımlarını web üzerinden görebilmek için selenium-ide kullanılır.Selenium ide fırefox için geliştirilmiş bir eklentidir.
Seleniumda firefoxdaki haraketlerimizi kayıt edebilir ve sonraki ürettiğimiz test kodlarını otomotik testler için kullanabiliriz.
Şimdi 4 adımda bir senaryo düşünelim. www.sahibinden.com adresine girdik
1- siteyi açtım
2- arama kısmına tıkladım, telefon yazdım, aradım
3- ilk çıkan sonuca tıkladım
4- ilan no : 3123123 tarzı bişey yazıyo mu onu kontrol ettim


Diyelim ki sahibinden.com'da çalışıyoruz, kod yazdık, aramayı güçlendiriyoruz.
Kodumuzdan öyle eminiz ki, ya da arama kısmıyla beraber ürünle ilgili de bi kod yazıyoruz, en ucra köşede bir kod, evet kodumuz çalışıyor. Ama,
ya aramayı bozmuşsa? Ya aralarında bağ varsa? Ya ilan numarası gelmiyorsa? Sırf o yazdığımız küçük kod yüzünden? Bunlar olabilir..

Tester larımız vardır, click clickçiler, şu yukarıdaki senaryomuzu ona veririz, ve her bir güncellemede, bunları test eder. Sen de doğrularsın kodun, aramayı bozmamış. Bunun gibi 100lerce senaryo düşünürsek;
mesaj göndersin, paylaşsın, yazdırsın, favorilere eklesin vs..

peki hep click clickçilerle mi uğraşçaz? Bi ton para, + insan, yanılabilir. İşte bu aşamada ,automated ui tests devreye giriyor..

Şimdi, Selenium kendini burada gösteriyor kendi içinde, “tıkla” , “aç”, “doğrula”, “yaz” gibi automated test için çok kullanılan fonksiyonlara sahip.
Biz de onu kullanarak, senaryoyu yazarız. Ve RUN! dediğimiz an , kendine kendine bizim senaryomuzu çalıştırır, ve bize, evet çalıştırdım, düzgün çalışıyor yada eğer bozuksa hata var! gibi çıktılar verir.
Biz her güncelleme yaptığımızda , sadece RUN! diyerek bu testimizi çalıştırabiliriz bu sayede.

Burada Selenium-İde görüntüsü yer almakta ve aşağıda da açıklanmakta.


Selenium'da;
1-Dosya seçeneği, yeni veya önceden açılmış test case açmaya , kaydetmeye,yarar.
2-Düzenle seçeneği, kontrol işlemlerini yapar (kes,yapıstır, geri al gibi).
3-Options seçeneği, ide ile alakalı ayarlar yapılır, varsayılan ide dili değiştirilir.
    3.1-Options>Options seçeneği, karakter kodlaması ve “*waıt” komutu için       milisaniye cinsinden sürenin belirlenmesi bu kısımda yapılır.Varsayılan bekleme süresi 30 sn .ayrıca bu bölümde kişisel java scriptler yüklenebilir.
    3.2-Options>Format seçeneği, html dilindeki scriptleri başka dile çevirmeye yarar.
    3.3-Options >Clipboard format seçeneği; hızlı şekilde mevcut diğer dillere çevirme işlemini yapar.

*Base URL, test yapılmak istenen url adresi bu bölüme yazılır. Eğer kayıtlı bir test case varsa test case çalıştırıldığında bu url otomatık olarak gelir.
*Fast & slow, bu kısımda testin hızı ayarlanır. Hız göstergesi ile 1 ile 10 arasındadır. Testin varsayılan hızı 10 dur.
*Play all, tüm test caseleri çalıştırmak için kullanılır.
*Play, üzerinde çalışılan test case çalıştırır.
*Pause, çalıştırılmış bir test case bekletir.
*Step, bekletilmiş bir test case adım adım ilerletir.
*Test runner, selenium kodunu, test case ve test yapılan siteyi gösterir.
*Record, testi kaydetmek ve testi durdurmak için kullanılır. Selenium-ide ilk başlatıldığında kayıt otomatik başlar.

~Log: testin çalıştırılması ile hatalı ve başarılı işlemlerin kaydını tutar.
~Reference: Komutların açıklanmasını gösterir. Komutların nasıl kullanılacağı burada anlatılmaktadır.

Selenium Nasıl Çalışır?

1-Command: Test için senaryomuzdaki komutları girdiğimiz yer.Bazı komutlar;
   Open: Verilern URL'ye(siteye) ait web sayfasını açmak için
   Click: Bir nesneyi tıklamak için
   ClickAndWait: Nesneye tıklattıktan sonra sayfanın yüklenmesini beklemek için
   AssertElementPresent: Belirtilen elemanın yüklenemesini beklemek için
   AssertTextPresent: Belirtilen bir metnin sayfada olup olmadığını kontrol  eder.
   WaitForPageToload: sayfanın yüklenmesini bekler.
   WaitForElementPresent: Sayfadaki beklenen arayüz ekrana gelene kadar   testi bekletir.
   Type:bir inputun içine yazmak için kullanılır.
   VerifyTextPresent: Sayfanın herhangi bir yerinde beklenen yazının varlığını doğrular.
   VerifyElementPresent: Sayfada olması beklenen arayüzün doğru yerde olup olmadığını kontrol eder.
   Title/AsertTitle: Beklenen sayfa başlağını doğrular.
   DeleteCookie: Belirtilen cookinin silinmesi sağlar.
   MouseOver: Mouse belirtilen elemanın üzerine götürür.

2-Target: Commanda belirttiğimiz olayın hangi nesne üzerinde gerçekleşeceğini belirtiriz. Burada CSS Locator yada Xpath gibi yer bulucular kullanmamız gerekmekte.

3-Value: Targette belirttiğimiz nesnenin bir değeri varsa ve o değeri belirtmemiz gerekiyorsa yada sitede bir yere değer yazmak gerekiyorsa kullanılır.


Şimdi elimizde 1 tane senaryomuz olsun

Scenario 1: cikti.al home page
1- Open page(http://cikti.al)
2- Verify the page header('Çıktı Al ! Bulut Flash Bellek( (beta))

 burada (http://cikti.al) adresine gidip Çıktı Al ! Bulut Flash Bellek( (beta))
yazısının sayfada olup olmadığının kontrolünü yaparız.Seleniumu çalıştırdığımız anda bize tarayıcımızdan yeni bir sekme açarak
http://cikti.al adresine gider.











 Burada istediğimiz adrese gitti. Çıktı Al ! Bulut Flash Bellek yazımızı kontrol etti evet böyle bir metin var ve  her şey yolunda dedi bize. Peki ,bu Bulut Flaş bellek sitemiz ne işe yarıyor? Herhangi bir dökümanımızı yükleyip ,daha sonra istediğimiz bir yerde çıktısını almamızı sağlıyor, harici bellek kullanmadan hallediyoruz çıktı alma olayını ,site kendi hafızasında saklıyor bu dökümanı. Peki o zaman bizde bir dosya yükleyelim Seleniuma komutları verelim o bizim için yüklesin ve baksın sitemizin dosya yükle butonu gerçekten çalışıyor mu bir sorunu var mı ?

Seleniuma gireceğimiz  komutlar bu şekildedir. Seleniuma Run  komutunu verdiğimiz anda yeni sekmede http://cikti.al adresine gitti yazımızı kontrol etti ve commanda kısmına yazdığımız type komutu ile target kısmına yazdığımız CSS Locator yer bulucusu  ile dosya yüklemesi gereken yeri bulmasını söyledik ve value kısmına yüklenecek dosyamızın adını verdik.


Dosyamız yüklendi! Sitemizde hiç bir sorun olmadığını test ederek gördük.


Sizlerde Seleniumu çeşitli siteleri test etmek amaçlı kullanabilirsiniz hatta bunu farklı browserlarda deneyebilir hatta ve hatta farklı işletim sistemleri için bile test edebilir hale getirebilirsiniz.
http://www.browserstack.com bu adres ile testlerinizi farklı web tarayıcılarında deneyebilirsiniz. Örneğin tekrar www.sahibinden.com dan tekrar bahsedersek ve buradaki bir ürünümüzü tam müşterinin biri 1500 dolarlık ürün alırken, İnternet explorer8 de göremediğimiz, ödemeyi onayla butonu , çalışmazsa ne olacak? Ve bizden önce bunu müşteri görmüş olsa, biz 1500 doları ve müşterizi kaybetsek, ne kötü olur değil mi? İşte bu gibi durumlara sebebiyet vermemek için testimizi farklı tarayıcılar ve farklı işletim sistemleri içinde kullanıma hazır hale getirebiliriz.
 Yazıma burada son veriyorum Selenium hakkında bişeyler katabilmişsem ne mutlu :)




26 Eylül 2013 Perşembe

Linux Yaz Kampı-2013




Bu sene Bolu'da 4. sü düzenlenen Linux Yaz Kampı'nın bir katılımcısı olarak size kamp ortamından , kamp süresince neler yaptığımızdan biraz bahsetmek istiyorum. Bolu'nun bol oksijenli havasını aldıktan sonra , Abant İzzet Baysal Üniversitesi yoluna koyulduk ve  hiç bir işlem,sıra gerektirmeden kimliğimizi bırakarak Kyk Yurtlarına giriş yaptık. Bilmediğim şehirde ne yaparım,nerede kalırım düşüncesi kapılmanıza hiç gerek yok zaten kamp kapsamında her şey ayarlanmış oluyor, kamp öğrencisiyim demeniz yeterli. Kampın ilk günü kayıt işlemlerinden sonra herkesin toplandığı bir sınıfta Hakan Uygun'un konuşması ile kamp havasına girdik. Ben Linux Sistem Yönetimi(lsy)(1.düzey) sınıfındaydım ve bu nedenle kendi kursum hakkında bilgiler vereceğim ancak eş zamanlı olarak Linux Sistem Yönetimi(2.düzey), PHP ile Yazılım Geliştirme, Ruby/Rails ile Yazılım Geliştirme, Java EE ile Yazılım Geliştirme dersleri de verildi. Derslerimizin gidişatı Sabah 9:30 da ders saati 12:30-14:00 arasında öğle yemeği arası, 17:30-19:30 arasında akşam yemeği arası verip akşam 22:30 a kadar etüt şeklinde devam etti. Sınıflarımız 20 şer kişilikti , dersi anlama ve anlamadığın takıldığın yerde sorma, bir konuyu tartışma , bol örneklerle konuyu pekiştirme açısından sınıf mevcudumuz çok iyiydi. Ders hocamız Barkın Kılıç ile
ilk ders günümüz linuxta komut satırında temel komutlar, linuxtaki dosya hiyerarşisi , işletim sistemi yapısı derken DNS ve Web sunucusuna Giris,Veritabanına Giriş ve MySQL Veritabanı Sunucusuna kadar geldiğimiz dersler dolu dolu geçti. 13 saat ders ile biten gün sonunda hala ders anlatma enerjisi olan Barkın hocam (yorulmayan hoca :) ) bu işi bu kadar istekli ve gönüllü yapan kurstaki diğer hocalarım gibi , onların bu enerjisi karşısında dersi dinleyenlerin de enerjileri onca saat derse rağmen yerinde olabiliyordu. Günde 12 sayfa dolu dolu not tuttuğum oluyordu kurs bitiminde vay be epey şey öğrendim diyebiliyorsunuz kendinize. Farklı hocalardan da ders dinleme fırsatımız oldu M.Akgül Hocam , Doruk Fişek Hocam, her hocamıza burdan da teşekkür ediyorum.  Yoğun geçen ders temposuyla ders aralarında bir araya geldiğiniz birçok alandan kursa katılan sınıf arkadaşlarınızla hoş sohbetler oluşabiliyor. Bu bile insana çok şey katıyor daha birinci sınıf öğrencisiyken bu kurstan öğrendiğim çok şey olduğuna inanıyorum. İlerde aynı işi yapacağım meslektaş olacağım insanlarla muhabbetlerimiz oldu onlarında meslek hayatlarının nasıl geçtiğini önerilerini dinlemiş oldum. Etüt sonrası sınıfça soluğu Bolu'nun sokaklarında aldığımız günler oldu kafelerinde çaylarımızı yudumlarken, kendimizi lunaparkta yada bir kokoreçcide yada  vazgeçemediğimiz Çorbacı Mülayimde aldığımız oldu, Barkın hocam , Mehmet hocam, Emre hocam hep birlikte  abi kardeş ilişkisi içinde kurs sonrası da çok güzel vakit geçirdik. Bu sıcak ortamda yıllardır tanışıkmışız hissi oluşuyor. Kesinlikle 15 gün içerisine sıkıştırılabilecek en yoğun en güzel programdı diyebilirim. 15 gün içinde sadece bir gün tatilimiz vardı onu da hep beraber Abant Gölü ve Gölcük gezileri ile değerlendirdik.Son günümüz de ise karnelerimizi aldık :)



Bu kapsamda emeği geçen herkese çok teşekkür ederim , ilerki zamanlarda dersi dinlemeye gelen arkadaşlarımın ve ben dahil gönüllü olarak burada bulunmaktan görev almaktan zevk duyacağımızı belirtmek isterim. En yakın zamanda sınıfça kararlaştırdığımız üzere, Mersin Akademik Bilişimde görüşmek üzere ! :)