Kategori arşivi: Yazılım Geliştirme

Twitter API Güncellendi! Örnekler Patladı!

Ancak korkmaya, endişelenmeye ve kara kara düşünmeye gerek yok 🙂 Rahatlayın ve kendinizi bana bırakın…

Buradan sizinle oAuth Twitter API’sini kullanarak kendi uygulamalarımızdan yada web sitelerimizden nasıl twit atacağımız yada okuyağımızla ilgili yazılar paylaşmıştım.

Twitter yeni API uygulamasını tamamen devreye almış, bu kapsamda da önceki sürüm API uygulamasını devre dışı bırakmıştır. Ben gerekli araştırma ve geliştirmeleri yapıp olayı çözdüm. Hatta şu an aşağıda sitemde çalışan canlı uygulamayı da görebilirsiniz. Alın işte çalışıyor, çalıştırdım:
http://bahadir.almaci.com/oauth/

Burada aslında değişiklikler arka planda gerçekleşmiş olup, bizim kullanımımızı temelde çok etkileyen değişiklikler olmamıştır. Şu aşamada bizim örneklerimizin çalışmamasının en büyük nedeni POST ve GET işlemlerin geri dönüş değerlerinde XML formatının çöpe atılıp yanlızda JSON formatının bırakılmasıdır.

Öğrendiklerimiz temelde aynı kalacak. Hatta POST işlemlerimizde herhangi bir değişiklik de yapmamız gerekmeyecek. Sadece Twitter’dan istek yaparken kullandığımız Resource URL’lerimiz tamamen değişti.

Resorce URL’lerimizin hepsini değiştiriyoruz. Örneğin eskiden aşağıdaki gibi olan Resource URL’miz:
http://twitter.com/account/verify_credentials.xml
Aşağıdaki gibi değişti:
https://api.twitter.com/1.1/account/verify_credentials.json
Dikkat ederseniz “account/verify_credentials” kısmı aynı. Uzantı .xml yerine .json oldu ve baş taraf değişti.
Okumaya devam et

Türkçe İsim Kullanımına Yönelik Metodlar – C#

Uzun zamandır yazılım geliştirmeyle ilgili pek birşeyler yazmamıştım. Artık bu gidişe bir “Dur!” demenin vakti geldi diye düşünüyorum: “-Dur!”

Bu yazımda sizinle yazılım geliştiricilerinin kanayan bir yarası olan, yazının içinde geçen ismin sonuna gelecek eklerin uyuşmaması konusundan yola çıkarak, özel isimleri ekrana yazarken bunların sonuna gelecek ekleri elde edebileceğimiz methodlar paylaşacağım.

En sık karşılaşılan durum aşağıda görüldüğü gibidir:
“Ahmet’i listenize eklediniz.” “Arzu’i listenize eklediniz.” “Akın’i listenize eklediniz.”

Gönül ister ki bunlar: “Arzu’yu listenize eklediniz.” “Akın’ı listenize eklediniz.” şeklinde olsun.

Bildiğiniz gibi bu ekler aslında Türkçe’de sıkça karşılaştığımız ismin halleri ve aitlik ekleridir. Örn:”Akın’ın profiline bak” gibi.

İsmin 5 hali vardır: Yalın hali, -i hali, -e hali, -de hali, -den hali. Bu ekler kelimenin bitişine ve kelimedeki sesli harfe göre ses değişimine uğramaktadırlar. Bu yüzden öncelikli olarak kelimedeki en son sesli harfin hangisi olduğunu öğrenmemiz gerekiyor.

Lafı fazla uzatmaya gerek yok, yazının devamında ilgili metodları ve bu metodlar kullanılarak yapılmış bir konsol uygulama örneği bulabilirsiniz. Emeğe saygı falan bunlara gerek yok, alın kullanın, kendi adınızı yazın altına, hiç gocunmam, helali hoş olsun… 🙂

Okumaya devam et

SFTP (SSH FTP) (Secure Shell File Transfer Protocol) C#

Bir süredir geliştireceğim windows servisinde kullanmak için SFTP üzerine araştırmalar yapıyordum. Olay şu ki; aldığımız bir servis, ürettiği gün sonu raporlarını kendi üzerlerindeki bir SFTP alanına atıyor ve benim bu raporlar üzerine bazı  işlemler yapmam gerekiyor. Dolayısıyla C# yazılımımdan SFTP bağlantı kurup oluşturulmuş raporları almam gerekiyordu.

Sonradan anladım ki SFTP aslında çok da kullanılan bir yöndem değilmiş ve durum böyle olunca çok fazla kaynağa ulaşamıyorsunuz. Yani .Net ile geliştirilmiş ve .Net içerisinde kullanabileceğiniz çok fazla kaynak yok. PHP ile birlikte default gelen birşey aslında bu. Buradan bir kez daha PHP’ye övgüler göndermek istiyorum. Piyasada 2 tane hazır geliştirilmiş ücretli olarak satılan kütüphane mevcut. Birkaç tane de ücretsiz olarak ve açık kaynak kodlu olarak geliştirilmiş kütüphane var.

Tabii ki ben ücretsiz olanlardan birini kullanarak işimi hallettim. 🙂 Ücretsiz kütüphaneler içerisinde düzgün çalışan tek kodu geliştirmiş olan Tamir Gal isimli geliştiriciye buradan teşekkür etmek istiyorum.

Ücretsiz kütüphaneye ise aşağıdaki linkten ulaşabilirsiniz.

http://sourceforge.net/projects/sharpssh/files/

Okumaya devam et

Alıntı: Neden yazılım uzmanı olamazsınız?

Sitebuilders grubundaki bir arkadaşımın yaptığı gönderiyi sizinle paylaşmak istedim. Hepsi bu…

————————————————————————————————–

Tech Republic’de yazan Justin James 10 maddede neden yazılım uzmanı olamayacağınızı açıklamış. Bakalım neymiş bu 10 madde.
1: Kendi kendine öğrenmek yerine kursları tercih ediyorsunuz
Yazılım Uzmanı ilk işe başladığında gerekli tüm bilgiyi biliyor olduğu varsayılır. Firmanın belirli bir eğitim politikası olsa bile gerçekte firmanın yardımı ile alacağınız eğitimler hiç bir zaman gerçekleşmez. En iyi ihitimalle bir iki kitap almanız için bir ödenek ayrılır. Yönetim ekibinin düşüncesine göre yazılım uzmanı problem çözmeyi bilen akıllı bir kişidir ve bu yüzden de eğitime ihtiyacı yoktur. Öte yandan kurs masrafları karşılanan yazılım uzmanının her zaman firmayı terkedip gitme ihtimali olduğu için firmanın yatırım yapması pek düşünülemez (olsa iyi olurdu tabii ama gerçek hayat bu). Bu durumlar göz önüne alındığında kendi kendinize öğrenebiliyor olmanız gerekir. Eğer bu disiplin sizde yoksa yazılım uzmanı olmayı aklınızdan bile geçirmeyin.
2: Normal çalışma saatlerini seviyorsunuz
Yazılım projelerinin geç bitme olayını herkes bilir. Zamanında biten projeler bile projenin hayatı boyunca çoğu kereler geç kalma durumuna düşmüştür. Eğer 9’dan 5’e bir işte çalışmayı seviyor ve yazılım projelerinin uzun çalışma saatlerine ve gecelemelerine dayanamayacağınızı düşünüyorsanız yazılım uzmanı olmayı aklınızdan çıkarın. Patronunuz, ürünün zamanında müşteriye ulaştırılmasını, sizin oğlunuzun spor müsabakasından yada televizyonda seyretmek istediğiniz programdan daha önemli tutacaktır.
3: Küçük maaş artışlarını kıdem yükselmesine tercih ediyorsunuz
Teknolojik değişmeleri uygulamayan bir firmada çalışmıyorsanız, şimdi bildiğiniz şeyler seneye ya geçersiz yada az ödeyen konuma gelecektir. Bugün gözde olan teknolojiler seneye isimleri bile hatırlanmayan garip teknolojiler olabilir. İşin sırrı hızlı biçimde değişmektir. Yeni teknolojileri hızlı (herkesden önce) öğrenip konu hakkında otorite olmaya bakın. Hiç yeni bir teknoloji öğrenmeden aynı koltukta oturup, maaşınıza gelecek zammın hayat standardınıza yeteceğini düşünüyorsanız yanılıyorsunuz. Ya deneyimlerinizi ilerletip aynı firmada kıdem yükseltmeli yada başka bir firmaya geçerek aldığınız maaşı yükseltmelisiniz.
4: Ekip çalışmasında insan ilişkileriniz pek iyi değil
Yazılım uzmanları her ne kadar a-sosyal insanlar olarak bilinsede bir araya geldiklerinde hararetli konuşmalar yaparlar ve kendileri gibi olan insanlarla hemen kaynaşıp sosyalleşirler. Hangi dükkanda indirim var veya dün akşamki diziden bahsetmedikleri için dışarıdan kulak misafiri olanlara Fransızca gibi gelir ama aslında çok sosyal insanlardır. Ekip içinde çalışamıyor ve iletişimin düşük olduğunu düşünüyorsanız yada ekip arkadaşları ile bağlantı kuramıyorsanız; problem genellikle sizdedir. Aynı deneyimleri yaşamamış kişilerin bağlantı kurmaları beklenemez.
5: Kolayca sinirleniyorsunuz
Yazılım dünyası pek çok engellerle doludur. Belgeler genelde tam değildir, sizden önceki yazılımcı okunmaz bir kod yazmıştır, proje müdürünün anlaşılmaz kuralları vardır, herkesin uyması beklenen… liste daha da uzatılabilir. Sonuç olarak kimse sürekli bela okuyan ve ekrana küfür eden birisi ile aynı çatı altında olmak istemez. Eğer 8 saatlik bir uğraşın sonunda konuyu 10 dakikada çözebileceğinizi görüp deliriyorsanız bu kariyer sizin için değildir.
6: Ekip elemanlarının fikirlerine kapalı iseniz
Yazılım geliştirmede genelde problemlerin birden fazla çözümü vardır her yiğidin bir yoğurt yiyişi olduğu gibi. Eğer gelen kritikleri ve diğer çözümleri göz ardı ediyorsanız önemli bir noktayı gözden kaçırıyor olabilirsiniz. Sektörde yani olan ve deneyimleri sizden az olan birinin yapacağı bir tavsiye size pek çok şey kazandırabilir. Tabii bu tavsiyeye önem verip uygularsanız.
7: Detay adamı değilsiniz
Programlama olayı komplex bir olaydır ve dikkat ister. Eğer Conan The Barbarian filminden daha karmaşık bir filmi izlerken kayboluyorsanız yada bir yeni nesil ev kredisi formunu doldururken zorlanıyorsanız yazılım uzmanlığı büyük ihtimalle sizin için değildir. Bazen unutulan bir virgül, başarı ile başarısızlık arasındaki çizgiyi çizer. Eğer bu virgülü arayıp bulacak yapıya ve sinir esnekliğine sahip değilseniz kariyeriniz belli limitler içinde yer alır.
8: Yaptığınız işten onur duymuyorsunuz
Kitaba göre yazılım üretmek ve orta derece ile geçecek bir iş çıkartmak mümkündür. Problem, kitapların sürekli güncelleniyor olmasıdır. Yazılım geliştirmek bir fabrika işi değildir. Fabrikada işler belirli bir prosedüre göre gider ve beyin seviyeniz ne olursa olsun prosedürü uyguladıktan sonra iş ortaya çıkar. Yazılım geliştirme daha çok bilimsel bir iştir ve bağımsız düşünce gerektirir ki bu da yaptığınız işten gurur duymanızı sağlar. Bir işi yanlış yoldan yapıp üretime geçildiğinde ancak yeteri kadar çalışmasını sağlayabilirsiniz fakat göz ardı ettiğiniz o hata problem açmıyor gibi görünsede ileride problem açacaktır. Yazılımcı olarak yaptığınız işin gurur duyulacak bir iş olduğunu düşünmüyorsanız ürettiğiniz ürünün kalitesi düşük olacaktır ve kariyerinizin sürekliliği ile doğru orantılı olacaktır. Siz ayrıldıktan sonra arkanızdan konuşulmasını istemiyorsanız (gerçi ağzınla kuş tutsan arkandan konuşacaklardır) haysiyet ve onurunuzu korumak için yaptığınız işin tam olmasına dikkat edin. En azından sizin içiniz rahat olur.
9: Önce ateş edip sonra soru soran tiplerden misiniz?
Yazılım uzmanı bir parça kod yazmadan önce bir planlama aşaması geçirir ve kod yazmaktan daha fazla zaman planlamaya ayrılır. Eğer kod yazma aracınızı açıp Allah ne verdiyse kod yazmaya başlıyorsanız %100 ihtimalle iki ay sonra yazdığınız kod tamamı ile değişecektir. Konu hakkında düşünen, planlayan yazılım uzmanı ise daha az hata ile daha kısa sürede kod yazacaktır. Çoğu programcıların neden 10 parmak yazamadığının nedeni de budur; işin zor kısmı ne yazacağını bilmektir. Eğer düşünen bir insan değilseniz yazılım uzmanlığı sizin için bir kariyer değildir.
10: “Geek” tipini sevmiyorsunuz
Haklı kimi nedenlerden dolayı, mühendis veya teknik kişilerin yakınında olmaktan hoşlanmıyor olabilirsiniz. Eğer Dilbert gibi bir kişilikten çekiniyorsanız yazılım uzmanlığını düşünmeyin bile. Tabii ki her yazılım uzmanı böyle değil ama sektörün büyük bir çoğunluğunu oluşturuyor ve aralarında haliniz yaman olur.

IE6, IE7 ve Firefox için CSS Hack

Bugün size çok basit ama çok işinize yarayacağını düşündüğüm bir CSS inceliği anlatmak istiyorum.

Genelde web sitelerinin en büyük problemi tarayıcı uyumsuzluklarıdır. Bu uyumsuzluklar da tarayıcılar arasında belli bir CSS standardının bulunmamasından kaynaklanmaktadır. Ne kadar eski olsa da halen daha bir çok büyük kurumsal şirkette son kullanıcılarda, yüksek upgrade masrafları ve iyi kötü iş görmeleri nedeniyle IE6 yüklü bilgisayarlar kullanılmakta. Bu yüzden ülkemizde maalesef web sitesi yaparken IE6 uyumluluğu gerekmekte.

Neyse gelelim konumuza. Aşağıda aynı CSS özelliğine IE6, IE7 ve Firefox (IE8, Safari) için nasıl ayrı ayrı değerler verebileceğimizi görüyorsunuz.

1
2
3
4
5
.tablo{
width:250px;   /* IE6, IE7, FF, IE8, Safari */
*width:260px;  /* IE6, IE7 */
_width:270px;  /* IE6 */
}

Yukarıdaki class’a sahip olan elementin tarayıcılara göre hangi “width” özelliği değerini alacağını görüyorsunuz.

Peki bu nasıl oluyor?

HTML’de aynı elemente birden çok olarak verilmiş aynı CSS özelliğiyle ilgili tarayıcılar her zaman en son değeri kendine referans alırlar. Aşağıdaki örnekteki class’a sahip olan element’in width özelliği her zaman en alttaki değere eşit olacaktır.

1
2
3
4
5
6
7
8
.tablo2{
width:250px;
height:100px;
}
.tablo2{ /* evet yanlış değil, yukarıdaki ile aynı isimde */
width:350px;
width:450px;
}

“tablo2” class’ına sahip element’in “width” özelliği 450px olacaktır.

En üstteki örnekteki CSS’e dikkat ettiyseniz özelliğin baş tarafında “*” (yıldız) ve “_” (alt çizgi) karakterleri var idi. “*” ile başlayann özellikleri Firefox hatalı olarak algılamaktadır. “_” ile başlayanları ise hem FF, hem de IE7 hatalı olarak algılamaktadır. Aşağıdaki tabloda bunu görebiliriz.

* _
IE6 OK OK
IE7 OK HATA
FF HATA HATA

En yukarıdaki örneği tekrar ele alırsak, ilk satırdaki width değeri tüm tarayıcılarda geçerli olacaktır. İkinci satırda “*” ile başlayan satıra gelindiğinde FF bu satırı hatalı olarak kabul ettiği için CSS önceki değerini koruyacak ancak IE7 ve IE6’da “*” ile başlayan satırdaki değeri alacak. Üçüncü satırda da bu kez IE7’de hatalı olarak kabul ettiği için bir önceki “*” ile başlayan satırdaki değeri koruyacak fakat IE6 bu satırı kabul ettiği için son olarak IE6’da CSS özelliğimiz bu değeri alacaktır.

Böylece tarayıcılar arasında yaşayacağımız irili ufaklı tasarım kaymalarını ve bozukluklarını tarayıcıdan bağımsız olarak gidermiş olacağız.

Bambaşka bir konuda daha görüşmek dileklerimle…

OAuth Örneği – Twitter API

İki önceki yazımda OAuth temel bazı bilgiler aktarmıştım. Bir önceki yazımda da sitemiz için Twitter API kaydımızı nasıl yapacağımızı anlatmıştım. Bu yazımda da artık olaya iyice gireceğim. Canlı çalışan bir Twitter API uygulaması yapacağız. Bu uygulama ile web sitenizdeki üyelerin Twitter’larını site hesaplarına ekleme işleminin nasıl olduğunu anlatmayı umuyorum.

Hemen konuya girmek gerekirse OAuth’u sitemize ekleme işlemi 4 adımdan oluşuyor.
1. Twitter’a gidiş
2. Twitter’da onay işlemi
3. Sitemize geri dönüş ve kullanıcımız için token ve secret anahtarlarımızı alma
4. Kullanıcımızın Twitter’ından okuma ve yazma.

Hazır kütüphane olarak Twitter’ın API sitesindeki C# kütüphanelerinden birini kullandım. Türkçe karakter sorununu gidermek için biraz modifiye ettim. Bu kütüphaneyi başka sitelerin OAuth uygulamaları için de kullanabilirsiniz. Örnek uygulamamda ben ASP.Net 3.5 C# kullandım. Çok rahatlıkla önceki versiyonlara yada Visual Basic.Net’e çevirebilirsiniz diye düşünüyorum. Diğer programlama dilleri içinde mantık ve algoritma aynı şekilde işliyor.

Önceki yazımda Twitter API kayıt işlemini anlatmıştım. Oradaki 5 adet parametreyi saklıyoruz. Örnek uygulamamda ben web.config’de tutmayı tercih ettim.

Öncelikle OAuth nesnemizi oluşturuyoruz. Okumaya devam et

OAuth Uygulaması için Twitter API’si Oluşturma

Sitemize Twitter uygulaması eklemek için öncelikle Twitter’da uygulama kaydı açıp, Twitter’ın sitemiz için oluşturacağı tekil API Key ve API Secret bilgilerini almamız gerekiyor.

Bunun için aşağıdaki adımları sırasıyla yapacağız:

1. Twitter’a login ol.

2. “Settings” altındaki “Connections” bölümüne gir. Burada Twitter bilgilerinizi okuması için izin verdiğiniz site ve uygulamaları göreceksiniz.

3. Sağdaki bölümde Developers açıklamasının içindeki “here” yazan linke tıkla.

4. Bu ekranda da varsa eğer daha önce oluşturduğumuz site API’lerimizi görüyoruz. “Register a new application »“‘a tıklıyoruz ve kayıt formumuzu açıyoruz. Aşağıdaki form açılıyor. Okumaya devam et

OAuth nedir, nasıl çalışır?

En kısa tanımla OAuth, kullanıcıların üyesi oldukları bir site yada platformun şifresini üye oldukları başka bir web sitesi yada platformla paylaşmadan, izin verdiği bilgilere diğer site tarafından ulaşılmasını sağlayan bir kimlik doğrulama protokolüdür.

Burada protokol kelimesinin altını çizmek istiyorum. Zira OAuth’u bir yazılım yada kütüphane olarak görmek çok yanlıştır.Yani aslında OAuth yukarıda tanımını yaptığımız işlem ile ilgili adımlar ve kurallar bütünüdür. Örneğin HTTP yada FTP birer protokoldür. Bu protokole uyarak yazılmış kütüphaneler ve yazılımlar birbirleriyle iletişime geçebilir. OAuth için de yazılmış hazır kütüphaneler ve yazılımlar mecvuttur.

OAuth ile OpenID’nin birbirleriyle alakası yoktur. Tamamen farklı kavramlardır bunlar.

Günümüzde artık dünya çapında kullanılan çoğu web sitesinin OAuth API desteği mecvuttur. Temel olarak hepsi aynı mantıkla çalışmaktadır. Bunlara örnek olarak; Yahoo BBAuth, Google AuthSub, Flickr API, Twitter API’yi sayabiliriz. Okumaya devam et