Skip to content

Social Network Badges

Posts Tagged ‘Programlama ’

Ekonomik krizin tüm dünyayı vurduğu şu günlerde ülkemizde de işten çıkarmalar başladı. Bilişim sektörü gibi temel ihtiyaçtan sayılmayan alanlarda çalışanlar, ne kadar uzman olurlarsa olsunlar maalesef bir masraf kalemi olarak görülüyorlar. Krizin hissedilmeye başladığı ilk anlarda kapının önüne konuluveriyorlar. Her biri bir dram, her biri üzücü hayat hikayeleri…

Ancak, bilişim uzmanları nispeten şanslı. Sahip oldukları bilgi birikimini ve yeteneklerini illa da bir şirket için kullanmak zorunda değiller. Hatta serbest çalışmaya, kendi işini yapmaya en müsait alanlardan birisi bilişim. Yeter ki, kendilerini geliştirmiş ve en azından temel seviyede İngilizce biliyor olsunlar.

Peki, diyelim ki başınıza olabilecek en kötü ihtimal geldi ve işinizden çıkarıldınız. Başka bir işe girmek de kriz sebebiyle zor. En azından sürekli bir işe girinceye kadar birşeyler yapmak lazım. Ne yapacaksınız?

Bu sorunun cevabını birkaç seçenekle verelim. Üstüne benzerlerini de siz ekleyin.

Öncelikle kesinlikle ümitsiz olmayın. Türkçemizde bu tür durumlarda ifade edilen ve bugünlerde sık duyduğumuz bir söz var: “Allah bir kapıyı kapatır, diğer kapıyı açar.” Diğer kapılara karşı inancınız ve ümidiniz tam olsun.

Gelelim yapılabilecek işlere…

Yeteneğinizi kiralayın

Özellikle bir yazılımcıysanız, sizin bilgilerinize para ödemeye hazır bir çok insan olduğunu bilin. Örneğin Rent A Coder sitesinde yaptırmak istediği işler için yazılımcı arayan kişiler açık azaltmalar düzenleyerek en uygun fiyat veren yazılımcıları seçiyorlar. İşlem şöyle gerçekleşiyor:

  1. Alıcılar işi yayınlıyorlar
  2. Yazılımcı fiyat teklifi yapıyor.
  3. Alıcının seçtiği kişi işi yapıyor. Bu sırada haftalık düzenli raporlar gönderiyor.
  4. Yazılımcı işi teslim ediyor.
  5. Alıcı onaylıyor.
  6. Yazılımcı parasını alıyor.
  7. Karşılıklı olarak birbirlerini değerlendiriyorlar.

Sitede bir yazılımcı için ipuçları, iletişim teknikleri, dokümantasyon için şablonlar içeren bir makaleler bölümü de var.

Bu konuda iş yapılabilecek diğer siteler şunlar:

Uzaktan çalışın

Uzaktan çalışma (telecommuting) özellikle Amerika’da çok popüler bir yöntem. Internet bağlantılarının iyi olması sebebiyle uzun yıllardır var ve popülaritesi gittikçe yükseliyor. Artık Türkiye’de de ADSL sayesinde uzaktan çalışmak verimli hale geldi.

Bu yöntemde genelde iş ilanlarına başvuruyor ve kabul edilirseniz verilen işleri şirketin bir elemanı gibi çalışarak yapıyorsunuz. Çalışmanızı periyodik raporlarla şirkete iletiyorsunuz. Bazı işler yazılı, sesli ya da görüntülü bağlantı gerektirebiliyorlar. Ya da bazı işler için arada sırada şirkete gelmenizi isteyebiliyorlar. Ama genelde evden çıkmadan iş yapabiliyorsunuz. Program yazmaktan teknik doküman hazırlamaya, test yapmaktan destek vermeye kadar bir çok alanda size uygun işler bulabilirsiniz.

Uzaktan çalışma ilanları bulabileceğiniz birkaç adres :

iPhone için uygulama yazın

Aslında bir yazılımcıya sadece iPhone için uygulama yazmayı tavsiye etmek dar bir kapsam sayılabilir. Ancak son dönemde en moda işlerden birisi bu. Ortak bir platform var, eğer yazdığınız uygulamayı kabul ettirebilirseniz hazır bir satış yeri var.

iPhone uygulamaları çok rağbet gördüğü için güzel bir gelir elde edebilirsiniz. Hatta isterseniz ücretsiz bir uygulama yazıp bağışlarla bile geçinebilirsiniz. Nitekim bir Türk yazılımcının iPhone’da olmayan kes/yapıştır özelliğini getiren ücretsiz uygulaması yüksek miktarda bağış almıştı.

iPhone uygulaması yazmak için işe yarayacak kaynaklar:

Ücretli destek verin

Geniş bant Internet’in yaygınlaşmasının en güzel yanlarından biri de uzaktan teknik yardım ve yönetim işlerini kolaylaştırması. Bilişim sektöründe bugün bir çok teknik sorun uzak bağlantılar yöntemiyle kolay ve masrafsız bir şekilde hallediliyor.

Uzman olduğunuz konularda, yardım ihtiyacı olan insanlara yazılı, sesli ve görüntülü bağlantı metotlarını kullanarak uzaktan ulaşabilir, sorunlarını çözebilir ve karşılığında ücret alabilirsiniz.

Mesela Crossloop.com sitesi bu tür bir teknik yardım topluluğu olarak hizmet veriyor. Uzman olduğunuz alanları ve müsait olduğunuz saatleri belirtiyorsunuz. Müşterileriniz size ulaşıp yardım talep ediyor. Siteden ücretsiz indirilebilen uzaktan yönetim programını kullanarak müşterinizin bilgisayarına müdahale ediyor ve sorununu çözüyorsunuz. Sitede uzmanlar hakkında başarı değerlendirmeleri yapılıyor. Böylece eğer insanları memnun edebiliyorsanız talibiniz de çok oluyor.

Benzer bir site de Experts Exchange. Bu sitede sorunlara verdiğiniz yazılı cevaplar sayesinde gelir elde edebiliyorsunuz. Google’ın benzeri amaçla kurduğu Google Answers sitesi 2 yıl önce kapandı ama sitedeki uzmanlar UClue.com’u açtılar. Yine bu sitede de uzmanlık alanınızdaki soruları cevaplayarak para kazanabilirsiniz. Yahoo’nun Answers sitesi ise gönüllü ve ücretsiz yardım esasına dayalı bir site. İsterseniz bu sitede cevaplar yazarak kazandığınız puanları reklamınız olarak kullanabilirsiniz.

Henüz benzer bir Türkçe site yok. Ama işte size iş fikri. İnsanlara para kazandırabileceğiniz böyle bir siteyi siz açın o zaman. 😉

Test Yapın

Geliştirilen yazılımlar ve web siteleri için üreticilerin bir test ekibi kurmaları her zaman mümkün olmuyor. UTest.com bu konuda yardımcı olmak üzere kurulmuş bir şirket. Siteye üye olan müşteriler, 150 ülkeden kayıtlı binlerce test uzmanına ürünlerini test ettirebiliyorlar.

Bir test uzmanı olarak UTest.com’a kayıt olabilir, bekleyen ürünleri test edip hata raporları girerek değerlendirme sonucuna göre ücret alabilirsiniz. Performansınıza ve ayırdığınız vakte bağlı olarak yüksek miktarda gelir elde etme şansınız var.

Site test uzmanlarına Mastercard uyumlu bir ödeme kartı gönderiyor ve kazandığınız parayı kart hesabınıza yatırıyor.

Yazı yazın

Eğer yazabilme yeteneğiniz varsa, nispeten daha az gelir getirecek ama zaman zaman “kısa günün kârı” sayılabilecek işler yapabilirsiniz. Türkiye’de ilk defa olarak Pilli sitelerinde başlayan bir uygulama ile makaleler yazıp okunma sayısına göre para kazanıyorsunuz. Bu yöntem hem sitelerdeki kaliteli içerik miktarını arttırıyor, hem de üyelerine ek bir gelir imkanı sağlıyor.

Pilli sitelerinde yazı yazarak nasıl para kazanabileceğinizi şuradan öğrenebilirsiniz. Hatta gelirinizi arttırmanızı sağlayacak ipuçlarını da bulabilirsiniz.

Ücretli makaleler yazabileceğiniz Türkçe içerik sitelerini arıyorsanız şuraya, İngilizce içerik sitelerini arıyorsanız şuraya tıklayabilirsiniz.

Reklamdan para kazanın

Bir web siteniz varsa ya da web sitesi hazırlayabiliyorsanız, reklamlardan para kazanmayı da deneyebilirsiniz. Son zamanlarda sitelerine aldıkları reklamlardan yüksek meblağlar kazanan insanları görmek mümkün. Gerçekten yüksek rakamlar var. Tabii gelir miktarı sitenizin ilgi çekmesi ile doğru orantılı. Özellikle de arama motorlarında arandığında ilk sıralarda gözükmesi popülerliği ve dolayısıyla da reklam gelirlerini arttıracak bir etken. Sırf bu amaçla SEO denilen bir alan oluştu bile.

Peki siz nasıl reklamdan gelir elde edeceksiniz?
Google’ın Adsense programı şu sıralar en popüler ve en çok kazandıran reklam ortaklığı. Sitenize alacağınız reklamlara tıklandıkça hesabınızdaki para artıyor. Yalnız Google’ın kurallarının çok katı olduğunu belirtmekte fayda var. Bu işe girişmeden önce şu yazıyı okumanız tavsiye olunur.

Ayrıca sitenize alabileceğiniz diğer reklam kaynakları:

Kendi reklamlarınızı verin

Kriz zamanları girişimciler için fırsatlara dönüşebilir. Uzmanlık alanınızla ilgili hizmet reklamlarını Internet sitelerinde yayınlayarak kendinizi pazarlayabilirsiniz. Yazdığınız programı, yaptığınız web sitelerini, yazdığınız kitapları vb. her ne konuda bir şeyler ürettiyseniz, yüksek maliyetlere gerek kalmadan insanlara duyurabilirsiniz.

Internet reklamları için kullanabileceğiniz birkaç adres :

Kendi işinizi kurun

ve işte en son, ama hayatınızı en radikal biçimde değiştirebilecek önerimiz. Kendi işinizin patronu olun. Ekonomik kriz zamanları Türkiye’de hem en çok işyerinin kapandığı, hem de en fazla iş girişiminin yapıldığı dönemler. Zaten belki çalıştığınız yerde kafanızda çok güzel iş fikirleri vardı ama cesaretiniz yoktu. İşte şimdi bir işiniz de yok, kaybedeceğiniz ne var ki?

Önce benzerlerini sizin de bulabileceğiniz başarı hikayelerini okuyun. Sonra kendi işinizi yapmak için gereken bilgileri ve alabileceğiniz destekleri okuyun ve izleyin. Daha sonra da kolları sıvayın ve işe girişin.

Mesela linkibol.com’u kuran Volkan Özçelik’in yol hikayesi size bu konuda yardımcı olabilir. Yazıları tarih sırasına göre takip ederek geldiği noktayı ve yaşadıklarını görebilirsiniz.

Evet, gördüğünüz gibi “bilgisayarcı adam” (tabiri her iki cinsiyete uygun olarak kullanıyorum, siz kendinize uyarlayın) işsiz kalmaz. Eğer işsizliğiniz için oturup kendinize kahrediyorsanız, tahminen iş beğenmiyor ya da üşengeçlik yapıyorsunuzdur.

Yazıyı konuya uyacak bir fıkrayla bitirelim. Dursun Temel’le karşılaştığında;
– “Duydun mu?” demiş, “Cemal açlıktan hasta olmuş. Durumu hiç iyi değil.”
– “Olur mu öyle şey?” diye kızmış Temel. “Karadenizli açlıktan hasta olmaz. Neden kimseden yardım istememiş?”
– Utanmış.
– Bak gördün mü? Açlıktan değil utancından hasta olmuş.

Krizlerin ve işsizliklerin hiç yaşanmamasını ama başımıza geldiğinde bunun hayatımızın sonu olmamasını diliyoruz.

Programcıların zaman tahmin yeteneği çok kötüdür. Neredeyse tüm yazılım projeleri tahmin edilenin iki hatta bazen üç, dört ve fazla katı zamanda tamamlanır. Çünkü;

  • Programcılar hesaplama yaparken aslında çok zaman alan toplantıları ve kodlama dışı aktiviteleri dikkate almazlar.
  • Programcılar projede bir değişiklik isteği, bu isteğin onaylanması vb. süreçlerin yavaşlığını hesaba katmazlar.
  • Programcılar her zaman aslında yazılması istenen ürünün ne olduğunu tam anlamazlar. Hatta bazen bir prototip yazıldıktan sonra yaklaşımın yanlış olduğunu, herşeyin baştan yazılması gerektiğini anladıkları bile olur 🙂
  • Eğer geliştirilen proje her zaman yapılandan farklı bir yapıda ya da kategorideyse, programcılar öğrenme ve adaptasyon sürecini hesaplayamazlar.
  • Programcılar, bir ürünün gerçekten hatasız çalışır hale gelmesinin gerektiği süreyi hesaplamazlar. Halbuki bazen hata düzeltme süreci geliştirmeden çok daha uzun sürer.

Programming from the Ground Up (Jonathan Bartlett ) kitabından

5 Ağustos 2008

Programlama

Java ile yazdığınız uygulamanın kaynak kodlarında bir satır bile değiştirmeden kullanıcı adı ve şifre kontrolünü, akıllı kart kullanımını ya da parmak izi kullanımını nasıl eklersiniz?

JAAS (Java Authentication and Authorization Service) paketleri Java’nın içindeki güvenlik sistemini biraz daha geliştiriyor ve farklı kaynaklar kullanılarak güvenlik sistemleri oluşturmayı mümkün hale getiriyor.

Java SDK içindeki java.security.* paketleri bir uygulamanın güvenliğinin sağlanması için temel metotları içeriyor. Bunlar arasında byte-code doğrulayıcısı (byte-code verifier), sınıf yükleyicisi (class loader), güvenlik yöneticisi (security manager), erişim denetleyicisi (access controller), politikalar (policy) ve koruyucu alanlar (protecting domain) sayılabilir.

Bunlara ek olarak genişletme kütüphaneleri (extension API) sayesinde uygulamaların güvenliği istenilen seviyelerde arttırılabiliyor. JAAS bunlardan birisi…

JAAS temel olarak uygulamaya kimlik bilgisi döndürecek bir LoginContext ve bu kimlik bilgisinin çeşitli yollarla elde edilmesini sağlayan bir LoginModule‘den oluşuyor.

LoginModule sınıfından genişletilerek oluşturulan modüller kimlik bilgisi için bir veritabanına bağlanan, Kerberos ya da LDAP dizininden kullanıcı bilgisi alan, akıllı kart okuyucudan veya parmak izi okuyucudan bilgi aktaran bir yapıda tasarlanabilir. Uygulamadan bağımsız olarak modüller tasarlamak bize eklenip çıkarılabilir bir kimlik denetimi yapısı sağlar.

jaas.jpg

Uygulamamızda JAAS kullanmak için şöyle bir yol izliyoruz:

Öncelikle bir konfigürasyon dosyası oluşturuyoruz. Daha sonra uygulamayı çalıştırırken parametre olarak bu dosyayı vereceğiz.

jaas.config

Ornek 
{
   DBLoginModule required 
        debug="true" 
        url="jdbc:mysql://localhost/jaasdb?user=root&password=pass" 
        driver="org.gjt.mm.mysql.Driver";
};

Uygulamayı çalıştırırken kullanımı:

 java -Djava.security.auth.login.config=jaas.config JaasTest 

Burada kullanacağımız modül, bir MySql veritabanına bağlanarak kullanıcı adı kontrolü yapıyor.

JaasTest uygulamamıza bu modüllere erişip kullanacak LoginContext’i tanımlıyoruz.

JaasTest.java

...
/* JAAS sınıfları */
import java.security.*;
import javax.security.auth.*;
import javax.security.auth.login.*;

...

        try {
            // LoginModule ile haberleşecek olan sınıf
            ConsoleCallbackHandler cbh = new ConsoleCallbackHandler();
	 
            LoginContext lc = new LoginContext("Ornek", cbh);

            try {
            	// LoginModule içinde login metodunu kendimize uygun şekilde
            	// tanımlayacağız.
                lc.login();

		// Subject : kimlik denetimi bilgilerini içeren nese 
                subject = lc.getSubject();

		// Principal : Yetkili olan kişiler vb.
                Iterator it = subject.getPrincipals().iterator();

		// Credential : Yetkiler, haklar vb.
                it = subject.getPublicCredentials(Properties.class).iterator();

		...
		// Programın çalışma rutinleri
		
		// Program çıkışında 
                lc.logout();
            } catch (LoginException lex) 
	    {
              ....
            }

        } catch (Exception ex) 
	{
            ...
        }

        System.exit(0);
    }

Temel anlamda kullanılan sınıf ve metotlar böyle…
Şimdi MySQL veritabanına bağlanıp kontrol yapan login modülümüze bakalım.

DBLoginModule.java

...

import java.security.*;
import javax.security.auth.spi.LoginModule;
import javax.security.auth.login.LoginException;
import javax.security.auth.Subject;
import javax.security.auth.callback.*;

...

public class DBLoginModule implements LoginModule 
{

    // initial state
    CallbackHandler callbackHandler;
    Subject  subject;

...

    public void initialize(Subject subject, CallbackHandler callbackHandler,
            Map sharedState, Map options) 
    {
      // ön işlemler
    }
    
    public boolean login() throws LoginException 
    {
	// veritabanına bağlanıp yapılacak kontroller
	// Buraya akıllı kart, parmak izi okuyucu vb. 
	// kontrolleri eklenebilir
    }

    public boolean commit() throws LoginException 
    {
       // Otomatikmen çalışır
       // login işlemi doğru yapıldı ise true, değilse false döndürür
    }

    public boolean abort() throws javax.security.auth.login.LoginException 
    {
      // işlem başarısız  olduğunda burası çalışır
    }

    public boolean logout() throws javax.security.auth.login.LoginException 
    {
      // uygulamadan çıkışta yetkileri temizler 
    }
}

Bu örnekte veritabanına bağlandık. Sadece LoginModule ve jaas.config dosyalarında değişiklik yapılarak istenen kontrol yöntemi uygulanabilir. Böylelikle uygulamamızın kaynak koduna müdahale etmeden güvenlik kontrolü ekleyebiliriz.

JAAS konusunda bilgilenmek isteyenler için maalesef Türkçe doküman yok. Ancak İngilizce olarak şu bilgilendirici sunum, şu yazı, Sun sitesindeki orijinal kılavuz faydalı olabilir. Ayrıca veritabanına bağlanan, akıllı kart okuyucudan bilgi alan, parmak izi okuyucuya bağlanan örnekler incelenebilir.

11 Aralık 2007

Programlama