ADIM ADIM Hibernate - ilk uygulama Hibernate nedir artık biliyoruz.. Veritabanı işlemlerinde bize yardımcı olan, obje kavramından uzaklaşmadan işimize devam etmemizi sağlayan bir yapı. Artık; INSERT INTO mytable(name, surname, country) VALUES ("Nurettin" , "YAKIT", "Türkiye") Yerine, session.save(person); Kullanıyoruz.....

Read more

twitter

Cuma, Mart 02, 2012

Veritabanı tablosuna bir yerlerden foreign key var ama nereden ? (MySQL)

Daha önceki yazılarımdan birinde Oracle veritabanı üzerinde, bir tabloya hangi tablolardan foreign key verilmiş nasıl öğrenebileceğinizi gösteren bir SQL yazmıştım. 

Şimdi de aynı işlemi MySQL veritabanı için yapalım ;) 

USE information_schema;
SELECT * FROM KEY_COLUMN_USAGE WHERE REFERENCED_TABLE_NAME = 'TABLE_NAME' AND REFERENCED_COLUMN_NAME = 'OID';

Kırmızı ile yazılan alanların bizim sorgulamak istediğimiz tablo ve kolon değişkenleri olduğunu tahmin etmişsinizdir. 

Umarım işinize yarar. 

Perşembe, Şubat 16, 2012

Mac OS X Mountain Lion

Duymayanlara duyrulur ;

Mac OS X Mountain Lion



Apple bir kaç saat önce sitesinde yeni Mac OS X 'inin yakında geleceğini duyurdu sessiz sedasız.. apple.com 'a girerek veya buraya bakarak detaylı bilgi alabilirsiniz.

Yeni Mac OS X Mountain Lion'da ne geliyor ? 
 

Messages



iPhone , iPad ve iPod 'larda bulunan iMessage artık Mac kullanıcıları için de var. Bu sayede sadece internet bağlantısı üzerinden diğer ios device'lara ve/veya mac bilgisayarlara mesaj atabilecek ve alabileceksiniz. (Mesajlara resim, video gibi media content eklenebildiğini söylememe gerek yok :)


Reminders


Yine iOS cihazlarında bulunan diğer bir özellik olan Reminders bundan sonra Mac OS 'da da bulunuyor. İşin diğer güzel bir yanı da burada eklediğiniz tüm reminderlarınız anında diğer iOS cihazlarınızda görünüyor, bu sayede hatırlatıcılarınızı o an size en yakın olan kaynaktan düzenleyebiliyorsunuz.

Notification Center

 Android ile birlikte çıkan notification bar kavramını apple , iPhone 'da iOS 5 ile birlikte çok güzel bir şekilde kullanıma sundu. iPhone (veya başka bir iOS device) kullanıyorsanız ne kadar işe yaradığını biliyorsunuzdur. Mac OS X Mountain Lion'da da basit bir swipe ile notification center 'ı açıyor ve kapatıyorsunuz.

Notes


Aynı şekilde notes 'da artık Mac OS X 'de de bulunuyor. Ve yine iCloud üzerinden tüm iOS cihazlarınızla senkronize olarak geliyor.

Game Center


Bir diğer özellik olarak game center 'da iOS 'dan Mac OS 'a taşınanlardan..

AirPlay Mirroring

İle Mac'inizde bulunan içeriği AppleTV aracılığı ile televizyonunuzda wireless üzerinden gösterebiliyorsunuz..

Twitter

Twitter da artık sisteme entegre olarak geliyor.

NOT: Yeni bir Mac OS geliyorsa.. Yeni macbook serileri yakındır :) Intel 22 nano metrelik ivy bridge işlemcileri ile de bilgisayar tasarımlarını daha "ince"  yapmanın önünü açıyor olacak önümüzdeki günlerde. Mac OS X Mountain Lion çıktıktan kısa bir süre sonra 15" macbook air veya o kıvamda yeni macbook pro'lar görürsek hiç şaşırmayın :)

Ki zaten yeni iPad3 'de yolda ;)


Adım adım ilk iphone uygulaması

Herkese yeniden merhabalar,

Bir süredir blog'a yeni gönderiler yapmaya fırsat bulamıyorum. Ama bundan sonra daha sık yazıyor olmaya çalışacağım.

Bu yazıda xcode kullanarak nasıl ilk iphone uygulaması (bir nevi "Hello World" ) yazılır onu öğreneceğiz. Yazıya başlarken belirteyim, mac'inizde xcode indirilmiş ve kurulmuş olduğunu varsayıyorum.

İki tane text field ve bir button 'dan oluşan , bir text field'dan input alan ve button'a tıklandığında diğer textfield 'a text set eden bir  uygulama yazacağız. Bu sayede input almayı ve output yazdırmayı görmüş olacak ve ekrandaki action nasıl yakalanıyor öğrenmiş olacağız.

Hadi başlayalım

Xcode 'u açıyoruz. Ve projemizi oluşturuyoruz.

Create a new Xcode Project
Proje olarak view-based Application seçiyoruz.



Projemizi isimlendiriyoruz.. "My First iPhone Application".




Kullanacağımız kaynakları tanımlıyoruz. Bunun için My_First_iPhone_ApplicationViewController.h dosyasını kullanıyoruz. Burada yaptığımız interface de bulunan iki componenti tanımlamak ve bir de kullanacağımız bir methodu belirtmek. Başta belirttiğim iki tane text field 'ı da burada tanımlıyoruz.



Tanımlamalar bitti :) Ve görsel kısma geçiyoruz. Resources klasörünün altındaki My_First_iPhone_ApplicationViewController.xib (nib diye okunuyor) dosyasına çift tıkladığımızda Xcode'un Interface builder kısmı açılacaktır.



Ve işte Interface Builder 'da geldi :) Size tavsiyem interface builder ile xcode 'u ayrı space'lerde açmanız. Bu sayede daha rahat hareket ediyorsunuz ( özellikle 13" macbook pro kullanıyorsanız :)



Kullanacağımız iki tane text field 'ımızı ve button 'umuzu yerleştirelim. En üstte de application ismi yazmak için bir label yerleştirdim.


Button ve Text Field'ları sürükle bırak yaparak taşıyoruz. Daha sonra köşelerinden tutarak boyutlarını değiştiriyoruz. Bu konuda Xcode bize yardımcı da oluyor..


Button daha belirgin olsun diye isimlendirelim. Üzerine bir text yazalım..


Bir de gri arayüz yerine daha canlı bir renk seçelim. View 'a (arka plan) a tıkladıktan sonra yine "view" sekmesinden Background'a tıklayarak renk seçebilirsiniz.


Şimdi yapmamız gereken çizdiğimiz bu component'leri ilk başta tanımladığımız objeler ile eşleştirmek. (Kaynaklarımızı tanımladığımız .h dosyasındaki yazdıklarımız ile eşleştiriyoruz). Bunun için yapmamız gereken sadece sürükle bırak ; File's Owner 'a tıklıyoruz. Inspector'da (soldaki pencere ve command shift i ile açılıyor ) connections tabında daha önce yazdıklarımızı görebiliyoruz. Burada ki isimlerin yanında bulunan yuvarlaklara tıklayarak eşleştirme yapacağız.


Yuvarlaklara tıklayarak sürükle bırak yaptığımızda çıkan ok ile eşleştirmemizi yapıyoruz.


text1 'i üstteki Text Field'a text2 'yi ise alttaki Text Field'a eşleştiriyoruz.


Button için de da aynı şekilde bir eşleştirme yapıyoruz. Yalnız bu sefer outlet değil de action ile eşleştiriyoruz. Action olduğu için diğerlerinden farkı kullanacağımız action 'lar listelenecek. Bunun için yine sürükle bırak yapıyor..



Ardından da copy methodunu buttonumuzdaki Touch down inside action'i ile eşleştiriyoruz.



Artık değişiklikleri kaydettikten sonra Interface Builder ' ı değiştrebiliriz. (Command + s kombinasyonu ile kaydedebilirsiniz , aynı şekilde command + q ile de çıkıyoruz).

Bundan sonra yapmamız gereken tek şey copy button'una tıklandığında olacakları yazmak kaldı. Ve bunun için de sadece  My_First_iPhone_ApplicationViewController.m (yani implementation dosyamıza) copy methodumuzu yazmamız yetecektir.


Yazdığımız method bu kadar da kısa :) (yalnız copy isminin .h dosyasında tanımladığımız method ismi ile aynı olmasına dikkat edin)

 -(IBAction)copy:(id)sender{
  
    [text2 setText:[text1 text] ];
  
}


Artık ilk iPhone application 'umuzu çalıştırabiliriz. Simulator olarak iphone seçili olduğundan emin olun. Ardından Build and Run 'a basarak çalıştırınız.



İlk Text Field' ımıza herhangi birşeyler yazıyoruz.



Ve Copy 'e tıklıyoruz....



Tebrik ederim ilk iPhone uygulamanızı yazdınız :) Artık iOS development dünyasına girmiş bulunuyorsunuz :)


Çarşamba, Ocak 11, 2012

Neden Ben ?

Merhabalar,

Aslında bu yazıyı sadece kendime not düşmek için yazıyorum... Ama daha sonradan tekrar dönüp okumak isteyebileceğimden kaybolmayacak bir yerde olması için publish etmeye karar verdim :) Belki sizlere de farklı bir bakış açısı sunabilir..

Şu anda çalıştığım yerde team-lead sayılırım ( yani business card'ın üzerinde öyle yazmıyor ama kabul edilen bir durum ). Son zamanlarda projedeki gelişmelerden dolayı project management konusunda da sorumluluk almış bulunuyorum.. Öyle sertifikalı PMP filan değilim yanlış anlaşılmasın :) Projede yapılacak işleri tanımlıyor.. Hangi gün kimin hangi işi yapacağını ayarlıyor.. Yani iş planı oluşturup takip ediyorum. (Tabi bir yandan da software developer olarak kod yazmaya devam :)

Geçenlerde bir an bir soru belirdi.. Neden ben ?.. Neden team-lead oldum.. Neden project management konusunda sorumluluk aldım.. Neden şu an ki projenin %50 'den fazlası benim sorumluluğumda ? ( Projeyi iki ana kısıma böldük. %50 ve %50 olmak üzere.. bir %50 iki tane developer bulunuyor diğer %50 de ben, ondandır ki %50 'den fazla olması )

Sonra cevaplar geldi kronolojik olarak..


  • Çünkü projeyi sahiplendim...
  • Çünkü aylarca (yaklaşık 1,5 sene ) gece 12 'ye kadar (kimi zaman daha da fazlası) hevesle çalıştım! (Ee şirkette 2,5 yıldır çalışıyorsun arta kalan 1 yıl hevesli değil miydin ? Hayır o 1 yıl gece 12 yapmadım sadece heves baki :)
  • Çünkü ekibin moralini yüksek tutmasında yardımcı oldum. ( Kimi zaman işi bırakacak arkadaşı bu fikrinden çevirdim, kimi zaman bu kadar çok çalışsak nolacak diye sorgulayanın cevabı bulmasına yardımcı oldum ) 
  • Çünkü süreçleri yönetme konusunda da sorumluluk aldım. ( Hepimizin bildiği yazılım döngüsünün projedeki yerinin netleşmesinde yer aldım)
  • Çünkü (burası önemli) elimde hiç çalışmayan bir modül ile hiç bilmediğim bir çalıştayda , "Yıllardır bu pazarda olan şirketlerin de almaya çalıştığı entegresyon belgesi" 'ni aldım. 
  • Çünkü requirements'ların gelmesini beklemedim. Buldum, planladım, yaptım. 
  • Çünkü business logic'i kısa sürede öğrenerek analist'in yükünü de kaldırdım. Onun diğer %50 'de kalmasını sağladım. İş yükü azaldı ve daha verimli çalıştı. 
  • Çünkü yazılımcının kendi işini yapmasını (yani yazılım yazmasını ) sağladım.  Adam/saat maliyeti 15 tl olan yazılımcının adam/saat maliyeti 3 tl olan bir işi yapmasının önüne geçtim ve onların da bunu görmesine yardımcı oldum ) ( Artık aynı yazılımcılar işlere adam/saat maliyet olarak yaklaşıyorlar bugün bunun örneğini bizzat gördüm :) 
  • Çünkü ürünün hem teknik , hem kullanıcı demo'sunu (ürün üzerinden sunum) yaptım. (İlk aylardan itibaren) (Satış / Pazarlama )
  • Çünkü kullanıcı isteklerini değerlendirdim. (Hepsini yapmadım ama ürünün yararına olanların hiçbirini atlamadım) 
  • Çünkü "key" kullanıcıları yanıma aldım ( Onlar isteklerinin daha öncelikli yapılacağını biliyor ben de onların proje yararına davranacaklarını biliyorum )
Ve hepsinden önemlisi bunların herbirini severek ve isteyerek yaptım. 

Bunları sadece ben mi yaptım ? Hayır. Proje ekibindeki herkes en az benim kadar özverili ve istekli çalıştı (çalışıyor). Her biri projeyi sahiplendi.. Normalin çok üstünde bir performansla ortaya güzel bir ürün çıkardılar ve çıkarmaya devam ediyorlar.. Yazılımcısından analistine, destek elemanına vs.. hepsi projenin çok önemli parçaları ve çok yüksek katma değerleri var. 

Yukarıdaki çünkü'ler benim yaşadığım süreçlerdeki adımlarım.. Sizler için aynı adımlar geçerli midir ? Aynı sonuçları verir mi? Daha iyisini mi verir ? Daha az çaba ile daha iyi yerlere gelinir mi ? Kişiye , projeye, şirkete ve daha bir çok değişkene göre değişir :) 

Çok daha farklı adımlarla aynı yere veya daha iyi bir yere gelebilirsiniz :)

Cuma, Ocak 06, 2012

Yine  Marmara Üniversitesinde , Engineering Management Master programındaki ; Energy Technologies
 Economics and Policy dersi kapsamında Renewable Energy üzerine sunum yaptım..


Sunuma buradan ulaşabilirsiniz.  



Salı, Kasım 29, 2011

Jack Trout

Merhabalar ,

Bugün Marmara Üniversitesi , Engineering Management Master programındaki ; Principles of Marketing dersi kapsamında sunum yaptım..

Günümüzün en önemli Marketing Guru'larından biri olan Jack Trout'u anlattım. Sanırım faydalı oldu :) Prezi ile hazırladığım sunuma buradan ulaşabilirsiniz.



Cuma, Temmuz 22, 2011

Sağanağın bitmesini beklemeyin! Çıkın ve dans edin !

Biraz önce eve gelirken sitede çimler sulanıyordu... Çimleri sulamak için yerleştirilen fıskiyeler hedef şaşırmış olmalı ki eve giden yolu da sulamaya başlamıştı.. Hiç yolumu değiştirmeden ve bir kaç damla ıslanmaya aldırmadan devam ettim.. Biraz kollarım ıslandı.. Biraz da tişört'üm.. :)

O sırada aklıma bir arkadaşım geldi.. Orada yanımda o olsaydı büyük ihtimalle oradan geçemezdik :) Islanmak istemeyeceğinden (tabi bir kaç damlaya ıslanmak denirse ) binanın diğer tarafından dolaşırdık..

Nereden mi biliyorum ? Yağmura yakalandığımızda gelen üç beş damla ve belki saçlarımızın biraz ıslanmasının etkisi bir kaç saat sürerdi :) Veya dakikalarca yağmurun dinmesini beklerdik..

Ama önemli olan yağmurun dinmesini beklemek değil! O yağmurun altında dans etmek!

Olur da bir gün yolda yürürken yağmura yakalanırsanız ; dinmesini beklemeyin. Çıkın ve yağmurla dans edin..

It's about dancing in the rain!

Some people behaves like ; "Damn.. It's raining.. So I'm not going anywhere.." But they are missing the whole thing! It's not about waiting rain to stop. It's about dancing in the rain! So don't be one of "Damn" people :) Choose dancing! Dancing and smiling :)