25 Aralık 2016 Pazar

Facebook Login Asp.Net Mvc

Merhaba,

Bu yazımda projeleriniz için basit ve kullanışlı bir Facebook Login bileşeninden bahsedeceğim. Basit olduğu kadar da kod hakimiyeti üst düzeyde.

Web forms ve Mvc de kullanılabilir, aynı mantık. Ben Mvc örneği üzerinden gideceğim.
Öncelikle Nuget üzerinden aşağıdaki paketi yüklüyorsunuz.


Burası View tarafındaki kodunuz:

                   <form action="/Home/fbInit">
                        <input type="submit" value="Facebook İle Kaydol" class="fbLoginBtn" />

                    </form>

Burası formumuzun gönderildiği Action:

         public ActionResult  fbInit() {
            FbClient fb = new FbClient();
            var Link = fb.CrateLoginUrl().ToString();
            Response.Redirect(Link);
            return null;

        }

Burası callback action'ımız:

public ActionResult fbCallBack(string code) {
            facebookErrorViewModel m = new facebookErrorViewModel();
            try {
                if (code.Length > 10) {
                    FbClient fbc = new FbClient();
                    string token = fbc.GetAccessToken(code);
                    FbProfile fp = fbc.GetUserInfo(token);

                    if (fp.Mail==null) {
                        m.ErrorMsg = "E mail adresinizi paylaşmanız gerekli..";
                        return View(m);
                    } if (fp.Name==null) {
                        m.ErrorMsg = "Ad Soyad bilgisini paylaşmanız gerekli..";
                        return View(m);
                    }
                    return Redirect("/");
                }

            } catch (Exception ex) {
                m.ErrorMsg = "Bir hata oluştu: " + ex.Message;
               return View(m);
            }
      
            return View();

        }

Son olarak bu sonuçları döndüren sınıfımız:

   namespace TestFb.Client.Class {
    public class FbProfile {
        public string ID { get; set; }
        public string Name { get; set; } 
        public string Mail { get; set; }
        public string ProfilePhoto { get; set; }
    }
    public class FbClient {
        string AppID = "App Id";
        string AppSecret = "Secret";

        string CallBackUrl = "https://localhost:44300/Home/fbCallBack";

        string Scope = "email,public_profile";
        //, user_birthday, user_hometown, user_website, offline_access, read_stream, publish_stream, read_friendlists
   

        FacebookClient FacebookIslem = new FacebookClient();
        public Uri CrateLoginUrl() {
            return FacebookIslem.GetLoginUrl(
                                new {
                                    client_id = AppID,
                                    client_secret = AppSecret,
                                    redirect_uri = CallBackUrl,
                                    response_type = "code",
                                    scope = Scope,

                                });
        }

        public dynamic GetAccessToken(string code) {
            dynamic result = FacebookIslem.Post("oauth/access_token",
                                          new {
                                              client_id = AppID,
                                              client_secret = AppSecret,
                                              redirect_uri = CallBackUrl,
                                              code = code
                                          });
            return result.access_token;
        }

        public FbProfile GetUserInfo(dynamic accessToken) {
            var client = new FacebookClient(accessToken);
            var profile = new FbProfile();

            dynamic me =  client.Get("me?fields=id,email,name");
            profile.Name = me.name;
            profile.ID = me.id;
            profile.Mail = me.email;
            profile.ProfilePhoto = string.Format("https://graph.facebook.com/{0}/picture?type=large", profile.ID);
            return profile;
        }
    }

}

Görüldüğü gibi oldukça basit, kodlar da manupule edilmeye oldukça müsait. Facebook app ayarlarını yazmıyorum, eğer bilmiyorsanız önce onu öğrenip sonra bu kod ile çalışmaya başlayın (:

Herkese iyi kodlamalar!

25 Ekim 2016 Salı

Yeni bir yazılım dili öğrenirken.


Merhaba,

Bu yazımda yeni bir yazılım dilini öğrenirken uyguladığım metodoloji'yi paylaşmak istiyorum. Bu metot Jr. seviyesindeki yazılımcılar için o kadar da kullanışlı olmayabilir.

Şayet bir dili çok iyi biliyorsanız, aynı teknolojiye hizmet eden farklı dilleri çözmeniz o kadar da zor olmayacaktır. Kodların hepsi temelde aynı şeydir, sadece syntax farkı vardır, bu problemin de kısa bir süre yavaşlık dışında bir negatif etkisi yoktur. Fark şu durumda oluşur, web developer iseniz ancak elinize hem web olmayan hem de farklı bir dille yazılmış bir proje geldiyse bu durumda yapacağınız şey nazikçe ben bunu yapamam demektir (:

Mesela
Örnek olarak, Php dilinde web projeleri kodluyorsunuz, ancak elinize .Net yada başka bir dille yazılmış bir web projesi geldi. Bu durumda yapacağınız şey bir web projesi için tüm dillerde geçerli olan ortak aksiyonların bu dil ile nasıl yapıldığını bulmak.

Nedir bu Web projesi için ortak aksiyonlar?

  • İde'nin kurulumu ve kodun derlenmesi için gereken işlemler.
  • Post,Get işlemleri.
  • Async işlemler.
  • Arayüzden backend'e veri gönderimi.
  • Backend üzerinden arayüze veri basılması.
  • Backend üzerinden veritabanı bağlantısı.
  • Veritabanı'na veri gönderilmesi ve alınması.
  • Kod life cycle'i nin hangi metotlardan oluştuğunun belirlenmesi.
Görüldüğü gibi bir kaç tane temel madde var. Önünüze bir web projesi geldiği zaman dili ne olursa olsun totalde  yapacağınız işlemlerin özeti aslında bunlardır. Yukarıdaki aksiyonları öğreneceğiniz yeni dil üzerinde çözdüğünüz zaman, ki bu max. bir haftanızı alır. Bu yeni dili %80 oranında öğrenmişsiniz demektir. Geriye kalanlar, syntax farkı nedeniyle oluşan zaman maliyeti ve bu yeni dile ait normalizasyon&sınıflandırma tekniklerinin, paternlerin oturması sürecidir. Bu da low level öğrenme süreciyle,  hem çalışıp hem öğrenerek max. 1 2 ayınızı alır. 

Yukarıda ben web teknolojileri için örnek verdim, diğer farklı platformların hepsinde de bunun gibi 5-10 maddelik özet çıkarılabilir. Yani aslolan dil değil, geliştirme yaptığınız teknoloji bütünlüğüdür.

Mobil Projeler üzerinde uygulayalım.
Şimdi de aynı tekniği mobil yazılımlar üzerinde uygularsak bu maddeler aşağıdaki gibi olacaktır.
  • İde ve emulator'un kurulumu ve kodun derlenmesi işlemleri.
  • Async Post ve Get işlemleri nasıl yapılır?
  • Web servisten gelen veri nasıl objelere parse edilir?
  • Arayüz üzerinden alınan veri web servis'e nasıl post edilir?
  • Kod life cycle'i hangi metotlardan oluşur?
  • Cihaz sensorleri nasıl kullanılır?(Bunu hemen öğrenmenize gerek yok, ihtiyaç oldukça)
Son bir trick daha. Yeni bir dil öğrenme aşamasında haliyle aldığınız hataların sayısı oldukça fazla olacak bir süre. Hatayı aldığınız zaman, Google üzerinden ararken kendi kafanıza göre açıklama yapmayın. Hata ekranında bulunan exception u kopyalayıp(kabul edilebilir bir uzunlukta), sonuna öğrenmeye çalıştığınız teknoloji ile ilgili tek kelimelik bir ibare ile Google search bar'a yapıştırın. 

Örnek olarak "[exception string] Android". Bu sayede Google sizi daha önceden bu hatayı almış ve sohbet esnasında exception detaylarının kullanılmış olduğu bir sohbetin içine götürecek. Yine bu sohbetin hepsini okumak ile uğraşmayın, okuyacağınız kısım 1. exception detaylarının olduğu kısım. Burayı doğruladıktan sonra, 2.  thank you, solved gibi cümleleri aratın. Çözümünüz bu mesajın bir kaç mesaj üstünde olacaktır.

 Google'i doğru kullanmak da bana göre kod yazmak gibi bir sanattır, hatta iyi bir developer olma yolunda olmazsa olmazdır (: Google kullanımı ile ilgili çok trick var bunun gibi. O konu üzerinden de başka bir yazımda geçeceğim.

Herkese iyi çalışmalar.

19 Ekim 2016 Çarşamba

Bisiklet İle Çanakkale İzmir yolculuğu

Merhaba,
Bu yazımda bisiklet ile ilk defa uzun yolculuk yapacaklar için işe yarayacağını düşündüğüm Bandırma, Çanakkale, İzmir rotasındaki deneyimlerimi paylaşmak istiyorum.
2016 yaz döneminin sonlarına doğru bu rota üzerinden ile 4 günde yaptığım 500 küsür km'lik yolculuğum Bandırma'dan başladı. Aşağıdaki resim Bandırmadan otoban'a çıktığım yer oluyor (:

Yola çıkmadan önce bulunması gereken malzemeler aşağıdakiler.

Bisiklet tamir kiti
  • En az 2 yedek iç lastik.
  • Bisiklet zincir eki, ve zincir ekleme aparatı.
  • Bisiklet pompası
  • Bisiklet alyan takımı.
  • 14-15 anahtar ve hafifinden bir ingiliz anahtarı
İlk Yardım
  • 2 bandaj
  • Yara bandı
  • Yaralanmalarda kıllı bölgeyi temizlemek için traş bıçağı.
  • Kas gevşetici krem ve hap
  • Bulabiliyorsanız antibiyotik.
  • Gazlı bez
  • Güneş kremi.

Bunlardan kas gevşetici kremi almadığım için ilk gün bacağımda oluşan çekme yolculuk bitene kadar daha da şiddetlendi, bacağım şişti ve o bölgede ödem oluştu. 2. gün yatağımdan doğrulduğum zaman yere bastıktan sonra acı ile düşmem bir olmuştu.  İyileşmesi 15 günü filan aldı sanırım. 14-15 anahtar ve ingiliz anahtarını da atlamışım, dağın başında arka lastiğim patlasaydı kalacaktım oralarda. (: Yukarıda saydıklarımda eksik olabilir ama fazla malzeme kesinlikle yok. Eğer konaklama işlemini dışarıda yapacaksanız, bu malzemelere çadır,uyku tulumu ve temizlik malzemesi eklemeniz gerekecek. Diğer, elbiseler ile olan bagaj kısmını saymıyorum. Yola çıkmadan önce dış lastikleri yenilemenizde fayda var.(burası yıldızlı**) Geceye kalma ihtimalinine karşı mutlaka sağlam bir ön &arka farınız ve reflektörlü giysiniz olsun.

Özellikle arka lastik yükün de etkisiyle çok çabuk yıpranıyor, ve diken üzerinden geçse patlamaya başlıyor, Ben ilk 3 gün sadece bir lastik patlaması vakası yaşarken son gün aynı günde 4 kez lastiğim patladı, karanlıkta sürmek zorunda kaldım, sonra önüme geyik atladı, köpekler kovaladı, hep bahsettiğim yıpranma yüzünden.
Resim: Altınoluk , ilk lastik patlama vakası


Başka Başka?

Yola çıkmadan önce bir iki ayda min. 500 km yapın, biraz kondusyonuzu yükseltip öyle çıkın, ben 1000 km yapmıştım. Benimle gelecek arkadaş 300 km de kaldığı için almamıştım yanıma (: Yolda yükte hafif ancak şeker ve kaloride yüksek erzağınız olsun, her 50 km bir adet canga yada tadelle tüketmiştim ben.Ek olarak mola verdiğim yerlerde mutlaka bir trileçe yemiştim. (:  Su tüketimi çok önemli, havanın durumuna göre susamadan az az tüketerek ilerlemelisiniz. Eğer susayıp da su içiyorsanız, su içmek için geç kalmışsınız demektir.
Resim: şekerim düştüğü anda imdadıma yetişen trakyalı kavun satan amca

Yollar nasıl?
Bandırma'dan otoban'a çıkıncaya kadar sert rampalar var. Otobanda bir süre rahat rahat sürüyorsununuz, emniyet şeridi kocaman. Ancak Biga geçildiği zaman yollarda düzlüğe pek rastlanmıyor,sert iniş yada rampa. İlk gün bu yolda bacağımı incitmiştim. Çanakkale Altınoluk arasında meşhur kaz dağlarımız var, ve sağlam tırmanıyorsunuz ((:Dağın içine girdikçe neredeyse sıvı kıvamına gelecek oksijen başınızı döndürüyor ve zirveye çıktıktan sonra Küçükkuyu'ya kadar tek pedal çevirmiyorsunuz.
Resim: Bergama İzmir Yolu, karadut suyu ile glikojen dopingi.

Ancak kaz dağı yolları çok kötü(hem çıkış,hem iniş), dolambaçlı,emniyet şeridi yok ve yol yapım çalışmaları sebebiyle sürekli tırlar geçip duruyor, oldukça dikkatli sürmek gerekli!
Resim:Kaz Dağlarında mola verdiğim bir yer

Altınoluk Bergama arası biraz inişli çıkışlı. Eğer Bergama'da sizi olanca heybetiyle çok uzaktan karşılayan meşhur Pergamon antik kentinin bulunduğu dağa tırmanmak isterseniz ortalama %10 oranında bir rampa, 400 metre civarı bir rakım var, adam seçiyor :D 
Resim:Pergamon zirvesi

Bergama İzmir arası ise bu rotanın en tatlı yolu. Emniyet şeridi tekrar kocaman, yollar düz ve rüzgar az. Ancak oldukça fazla cam kırığı var yolda. Dış lastiğin önemi burada ortaya çıkıyor.
Resim: Altınoluk Sahili.


Özet Geçelim:
  • Harcanan para: 450 TL(3 gün konaklama vapur bileti dahil). Mevsimden dolayı en fazla verdiğim otel parası 70 TL idi.
  • En çok sevilen yer: Altınoluk, aşık oldum buraya galiba. (Parayı bulduğum zaman yazlık alacağım yeri Altınoluk olarak güncelledim.)
  • En kötü yer: Dikili. Pahalı kaskımı çaldı şopar kardeşlerim o yüzden soğudum buradan.
Bu yolculuğumdan çıkarabileceğim özet bunlar nacizane. Seneye bu yoldan tekrar geçeceğim ama bu kez 1.100 km olacak rotanın uzunluğu ve yolculuk Kaş'ta bitecek. Bana katılmayı düşünürseniz şayet "serdarrah@gmail.com" üzerinden mail gönderebilirsiniz. Bisiklet sevginiz daim olsun efenim  (:

20 Ağustos 2016 Cumartesi

Sql Server Locked Queries

Merhaba,
Aşağıdaki prosedür ile yüksek trafik karşısında veritabanlarınızda lock işlemine sebep olan queryleri ve diğer lock detaylarını görüntüleyebilirsiniz.

CREATE PROC [dbo].[SP_LOCK_INFORMATION]
AS
BEGIN
SELECT dm_tran_locks.request_session_id,
       dm_tran_locks.resource_database_id,
       DB_NAME(dm_tran_locks.resource_database_id) AS dbname,
       CASE
           WHEN resource_type = 'DATABASE'
               THEN OBJECT_NAME(dm_tran_locks.resource_associated_entity_id)
           ELSE OBJECT_NAME(partitions.OBJECT_ID)
       END AS ObjectName,
       partitions.index_id,
       indexes.name AS index_name,
       dm_tran_locks.resource_type,
       dm_tran_locks.resource_description,
       dm_tran_locks.resource_associated_entity_id,
       dm_tran_locks.request_mode,
       dm_tran_locks.request_status
FROM sys.dm_tran_locks
LEFT JOIN sys.partitions ON partitions.hobt_id = dm_tran_locks.resource_associated_entity_id
JOIN sys.indexes ON indexes.OBJECT_ID = partitions.OBJECT_ID AND indexes.index_id = partitions.index_id
WHERE resource_associated_entity_id > 0
  AND resource_database_id = DB_ID()
ORDER BY request_session_id, resource_associated_entity_id
END

18 Temmuz 2016 Pazartesi

Mr. Robot 2. sezon girişi

 İlk sezonda gelişen olaylar ve kurgunun belirli bir rotaya girmesinden sonra 2. sezonda daha az fail yerleri göreceğimi ümit ederek 2. sezonu izlemeye başladım. Bu arada ağır spoiler içerir, henüz izlemediysen tarayıcı sekmeni kapatmanı öneririm.

 İlk bölümde iyi bir giriş yapmışlardı, biraz şaşırmıştım açıkcası. 2. bölümde ise hemen başlarda yine saçma bir sahne ile çıktılar karşımıza. Evil Corp yöneticisi ile buluşma noktasında kurye ile çanta ve yanıcı madde gönderdiler. Bu sahne kesinlikle üzerinde az düşünülmüş öylesine yazılmış. Oraya kurye gidemez, bu gizlilik ile yürümesi gereken planda sağlam bir güvenlik açığı oluşturacak ve kötü adamların o kuryeden yola çıkarak saklandıkları yeri bulmak çok da zamanlarını almayacaktır.

 Oraya günler öncesinden farklı bir kılıkla gelip çanta ve yanıcı gaz absurd bir yere saklanabilirdi. Yada farklı bir şey, ama olmaması gereken şey kendileri ile direkt olarak bağlantılı birini oraya göndermek. Şimdi o kadar da olur diyenleriniz de olabilir, ama zekanın, manüpulasyonun ana tema olduğu bir yapımda böyle hatalar yapılırsa s.çıyor işte.

Ama çok beğendiğim sahneler de vardı. Daha önceki ilgili yazımda bahsettiğim seyirciyi içeri çekme olayını daha iyi yapıyor hale geldiler. Artı 2. bölümde Elliot'un kendisini hackleme sahnesi harikaydı, tam bu temada olması gereken, cuk oturmuş bir kurgu.

Sonraki bölümlerde en azından 1. sezona göre daha iyi olacağını ümit ediyorum, umarım yanılmam.

24 Haziran 2016 Cuma

Game Of Thrones Kurgu Hataları

 Merhaba,
Bu yazımda bir çok kişinin takipçisi olduğu Game Of Thrones'un geçtiğimiz günlerde yayınlanan efsane bölümü yani 6. sezon 9. bölümünde tespit ettiğim birkaç rahatsız edici kurgu hatasından bahsetmek istiyorum. Aslında başka başka hatalar da vardı ama bu bahsettiklerim Truva filmindeki bir sahnede kolunda digital saati olan Aşil gibi rahatsız edici. Dipnot olarak ağır spoiler içerir.

1- John Snow Ramsay Bolton sohbeti
Büyük savaş başlamadan bir gün önce orduların liderleri yani John Snow ve Ramsay Bolton bir görüşme gerçekleştirir. Ramsay John Snow a piç diye hitap eder ve aşağılayıcı cümleler kullanır.

John Snow terbiyesini bozmayıp teke tek dövüş teklif eder. Ramsay kabul etmez tabi, ama John Snow iyi bir kanal yakalamıştır. Ramsay ı sinirlendirmiş ve adamlarının önünde küçük düşürme şansını yakalamıştır. Ramsay bunun üzerine daha da aşağılayıcı cümleler kurmaya başlar, lafa Sansa'yı filan karıştırır, konuyu değiştirmeye çalışır(başarır). Ancak Snow da bu konunun üzerine gitmez. Ramsay i tüm adamlarının önünde küçük düşürme ve savaşa psikolojik olarak 1-0 önde girme şansını kaçırır. Aşağıdaki gibi bir dialog olsa iyi olmaz mıydı sizce?

Ramsay: Yarın görüşürüz piç!
j. Snow : Tabi görüşeceğiz, umarım yine buradaki gibi kaçmazsın!.

2- Bolton Ramsay'ın Wun wun'u vurma sahnesi.
Hadi diyelim kumandan Snow biraz saf, ve zaten Sansa'nın zekası olmasa orada püre olacaktı. Sahnemiz Wun wun kalenin kapısını kırdıktan sonra başlıyor. Yediği sayısız oktan sonra bitkin düşen Wun wun son dakikalarında John Snow ile vedalaşırcasına bakışıyor.

Sahne baya uzun. Bu arada Bolton yayını germiş ve Wun wun u gözünden vurmuştur. Sizce Wun wun ile John Snow u yan yana gören psikopat ve zeki Bolton neden hazırlıksız ve savunmasız John Snow u indirmesin? Kale gitmiş, savaş kaybedilmiş ve düşman kumandanı karşında gardını düşürmüş vaziyette. Ve Bolton düşman kumandanı yerine ölmek üzere olan Wun wun u seçiyor.

28 Mayıs 2016 Cumartesi

ehil.com maceram

Merhaba, bu yazımda geçmişte tecrübe ettiğim güzel bir startup projeden ehil.com dan bahsetmek istiyorum.

Tarihi tam olarak hatırlamıyorum ama küçük bir yazılım firmasında yeni işe girmiştim ve ehil.com biraz başlanmış dışarıdan alınan müşteriye yaptığımız bir işti. Daha sonra çalışma stilim müşteriler tarafından beğenildi ve transfer oldum.
Başlangıçta proje sahipleri ile birlikte mükemmel bir uyum içerisindeydik. Projeyi yazarken sonunda nasıl bir şey olacağına dair en küçük bir fikrimiz yoktu. Projeyi kodluyor, yayınlıyor. Ardından etkilerini analiz edip düzenlemeler yapıyorduk. Pazardaki büyüklük ve boşluk inanılmazdı.

Projedeki tek teknik kişi bendim, yani yazılımından tasarımına, veritabanına, tüm teknik yükün yanında iş modeli, iş geliştirme çoğu business model konularında da aktif olarak çalışıyordum. Bu benim için 6-8 aylık geceli gündüzlü bir çalışma, bombok bir psikoloji, fast food ,alınan kilolar anlamına geliyordu. Ama aşk her şeyin üzerinde olduğu için bunlar o kadar da önemli değildi. Herkes üzerine düşeni yapıyor, proje inanılmaz bir hızla büyüyordu. Tam olarak hatırlamıyorum ama 20-40 kişi arasında bir sayıya ulaşmıştık çalışan olarak. Arada sırada hararetli tartışmalar yaşansa da herkes işini sahipleniyor ve deli gibi çalışıyordu. Pozitif iyi bir hava yakalamıştık. Projenin değeri 10 milyon dolar'a ulaşmış ve gelen yatırımla birlikte 40-50 milyonlara ulaşması o kadar da zor değildi.

Projenin yatırım alması zaten kaçınılmazdı. Neyse beklenen yatırım geldi. Yönetim aramızdaki görüş ayrılıkları burada başladı. Sonunda yönetim beni iş geliştirmeden tamamen kopartıp, bir de teknik yönetici getirip beni coder konumuda getirdi. Moralim bozulsa da onlar patrondu, yapacak bir şey yoktu. Bir süre ne olacağını görmek istedim. Teknik yöneticinin teknik bilgisi zayıftı ve zamanımın çoğu bir şeyler anlatmakla geçiyordu. Uzun bol goygoylu toplantılar yapıyorduk. İş geliştirmede sürekli yanlış olduğunu düşündüğüm stratejiler üzerinde çalışılıyordu. Operasyon tarafında da çalışanlar üzerinde negatif bir baskı oluşturuldu ve eski pozitif hava tümüyle kayboldu. Özellikle bu havanın kaybolması bir startup için kesinlikle kalbinin teklemesi anlamına geliyordu.

Sonrasında benim için zor olsa da ayrılma kararı aldım. Sezarın hakkı Sezar a verilmemesinin moral bozukluğu ile birlikte bu şekilde uzun vadede projenin geleceğinin iyi olmayacağını da tahmin ediyordum. Ancak her şeye rağmen bu kafaların günün birinde değişeceğini ve projenin ayakta kalacağını ümit ediyordum. Ancak projeniz maliyeti yüksek bir proje ise cebinizdeki para bitmeden aklınızın başınıza gelmesi gerekiyor..

Son aldığım haberlere göre proje oldukça zor durumda. Bence eski haline gelmesi imkansız demeyeyim ama oldukça zor(umarım yanılırım). Her şeye rağmen kırgınlığım olsa da kızgınlığım yok, hepimiz insanız ve hatalar yaparız. Umarım bu tecrübeden gereken dersler çıkarılmıştır.

 Son olarak bir anektod. Bu işlerin içinde bulunmuş biri olarak şunu söyleyebilirim. Pazar çok büyük ve oyuncular hala yeteneksiz. Bir iki daire parası gömecek parası olan, ve kafası çalışan birileri bu pazarı tekel haline getirebilir.

19 Mayıs 2016 Perşembe

Kralcı Papağan

Merhaba, bu yazımda biraz gereksiz bir bilgi, ancak bir o kadar ilginç bir tarihi olaydan bahsetmek istiyorum.

Tarih 1789. Fransa'da monarji yıkılıp yerine taze Cumhuriyet rejimi gelmiştir. Bir gün Paris sokaklarında sahipsiz bir papağan "Yaşasın Kral,Yaşasın Kral" diye bağırmaya başlar. Bunu duyan Paris halkı uzun bir kovalamacadan sonra papağanı yakalar, polise teslim eder ve hakkında suç duyurusu bulunur.


Sonra papağanın mahkemeye çıkarılmasına karar verilir ve karşı devrimci faaliyet yürütmekten yargılanır. 2 celse süren mahkeme sonucunda, mahkeme papağana Cumhuriyet yönetimini öven kelimeler ezberletilmesine ve eğer şayet ezberlemezse giyotin ile idam edilmesine karar verir.
Sonrasında papağan Cumhuriyet i öven kelimeleri ezberlemiş ve kelleyi kurtarmıştır.

12 Şubat 2016 Cuma

Ligo keşfi neden çok önemli?

Bugünlerde bilim camiasında çoğu ülkede flaş haber olarak duyurulan LIGO labaratuarının tespit ettiği yerçekimi dalgaların öneminden bahsetmek istiyorum bu yazıda.

Neden çok önemli bir keşif?
 Teoriye göre evren üzerinde gerçekleşen şiddetli olaylarda örneğin süper nova patlamaları yada karadeliklerin birleşmesi gibi olaylar evrenin dokusunu etkileniyor ve suya atılan bir taş misali bu dalgalar şiddetine göre evrende büyük bir alana yayılıyordu.  Aslında Einstein yıllar önce bundan detaylı bir şekilde bahsetmişti. Ama bu sadece teoriydi, bilimsel geçerlilik için ispat gerekiyordu.

Ligo deneyinde kullanılan düzenekten de kısaca bahsedeyim. Aynı anda birbirinden uzak iki büyük lazer tüpüne ışın demetleri gönderiliyor. Normal koşullarda iki ışın demetinin de aynı anda geri dönmesi bekleniyor. Ancak bir tanesi bu geri dönüş sürecinde gecikme yaşadığı takdirde bu bir kütle çekim kuvvetinin etkisine girdiği ve bu sebepten dolayı sözkonusu tüpün zamanının büküldüğü anlamına geliyor.

Neyi bulduk?
Ben sonuçlar hakkında az da olsa halen şüpheliyim(daha önce de bulduklarını iddia etmişler ve sonuçların bir eletromanyetik parazit sebebiyle olduğu anlaşılmıştı) ancak verilerin gerçek olduğunu kabul edersek netleşen bir kaç konu var. Yerçekiminin nasıl davrandığını biliyorduk, her şeyi çekiyordu. Ancak nasıl etki ettiğine dair kanıtlanmış hiç bir verimiz yoktu, ve yerçekimini manupule etmek istiyorsak nasıl davrandığına artı olarak nasıl etki ettiğini de bilmemiz gerekiyordu. Şimdi elimizde net birkaç verimiz var.

1-Yerçekimi dalgalar halinde ışık hızında ilerliyor.
2-Uzayın bir dokusu var ve yerçekmi dalgaları bu dokuyu büküyor.
3-Yerçekimi zaman ile direkt olarak ilişkili. Yerçekimini çözdüğümüzde, manupule edebildiğimizde aynı şey zamanın kendisi için de geçerli olacak.

Sonuç olarak
Tüm bu kanıtlara, ölçümlere rağmen yerçekimi hakkında halen çok az şey biliyoruz. Ancak bu bile çok büyük bir gelişme. En azından nereden ilerleyeceğimizi bulduk ve bir çok farklı tez üzerinde kafa yorup zaman kaybetmeyeceğiz. Bu kanıtlar LIGO ekibininin de bahsettiği gibi bence de kesinlikle Nobel'i hakediyor.

16 Ocak 2016 Cumartesi

Sql Server Database Column Search

Merhaba, bu yazımda benim de büyük projelerde sıkca kullandığım bir Sql Server fonksiyonunu paylaşayım istedim.

Projenizde 100 küsür tablonuz var ve her zamanki gibi zamanınız önemli. Bir kolonun hangi tabloda olduğunu tespit etmeye çalışıyorsunuz. Kolonun tam ismini de bilmiyorsunuz ama bir hece aklınızda.

Aşağıdaki fonksiyonu bur tür senaryolar için kullanabilirsiniz. İyi çalışmalar.

CREATE FUNCTION FIND_COL ( @PRM NVARCHAR(50) )
RETURNS @TBL TABLE (TABLE_NAME NVARCHAR(50),SCHEMA_NAME NVARCHAR(50),COLUMN_NAME NVARCHAR(50))
AS
BEGIN
      INSERT @TBL
      SELECT T.NAME AS TABLE_NAME,
             SCHEMA_NAME(schema_id) AS SCHEMA_NAME,
             C.NAME AS COLUMN_NAME
             FROM sys.tables AS T
             INNER JOIN sys.columns C ON T.OBJECT_ID = C.OBJECT_ID
             WHERE C.NAME LIKE '%'+@PRM+'%'
             ORDER BY SCHEMA_NAME, TABLE_NAME;
   RETURN
   RETURN

END


--Call--

SELECT * FROM FIND_COL('PASS')

--Output--

9 Ocak 2016 Cumartesi

Startuplarda hızın anlam ve önemi

Merhaba,
Bu yazımda Startup projelerinde öneminin olması gerektiği kadar farkında olmadığımızı düşündüğüm hız kavramı hakkında bir iki paragraf yazmak istedim.

Neler yaşanıyor?
Startup projeleri başlangıçta ekip için oldukça heyecan verici şekilde başlar. Ekip yeni bir ürün çıkartmanın heyacanı ve enerjisi ile işe dört kolla sarılır. İlk başlarda oldukça hızlı bir şekilde ilerleme kaydedilir, ancak proje geliştikçe bu hızı tıkayan engeller oluşmaya başlar, ya teknik anlamda ya operasyonel konulardan. Bir süre sonra bu problemler o kadar çoğalmıştır ki ekibin o ilk günkü heyecanından eser yoktur. Dolayısıyla ürün gelişmesi yavaşladığı için, heyecan olmadığı için ekibin performansı da büyük ölçüde düşmüştür. Zincirleme reaksiyon proje ekibinin küçülmesi yada projenin iptal edilmesiyle sonlanır. Bu bahsettiğim ülkemizde bulunan startup projelerinin %90 ı kadarının başından geçmiş özetidir.

Peki neden böyle oluyor? 
Cevap aslında basit, kontrolsüz bir şekilde hızlı ilerlenmeye çalışılıyor. Hızlı gitmesi düşünülen bir şey diğer her şeyde olduğu gibi ince bir ayar gerektirir. Bu ayar verilmezse hız belirli bir ivme sonunda kontrolden çıkar ve hızlanan her ne ise istenilenden daha farklı bir şekilde sonlanır.

Kontrolsüz hızlanma konusunu açmak istiyorum biraz. Bunun birçok sebebi olabilir. Ancak ülkemizde yaşadan durumlar genelde aşağıdaki başlıklar altında toplanabilir.

İvme nerelerde kontrolden çıkar?

  • Ekip üyelerinin yetenekleri ürünün ihtiyacı ile çatışır. Geliştirme istenildiği gibi yapılamaz ve iş modeli zorunlu olarak değişir.
  • Ekip yöneticilerin ürün sektörü hakkında deneyimi azdır, nasıl pazarlanacak nasıl satılacak konuları deneme yanılma yöntemleri ile tespit edilmeye çalışılır.
  • Ürünün operasyonel maliyeti mecburi olarak fazladır. Yeterli mali kaynak yoktur, ve daha ucuz maliyetlerle ihtiyaç karşılanır(bu benim başıma gelen durum oluyor)
  • Ekip yöneticileri öylesine dağınık o kadar kontrolsüzdür ki, kimin ne yaptığını, ne yapacağını ekip üyelerine sorarak bilir. Ürün gelişmesine parelel olarak artan iş parçaları belirli bir yönetim disiplini olmadığı için takip edilemez duruma gelmiştir. Bu durumda ya kontrollü yavaşlama uygulanır ya da uzun uzun toplantılar yapılır, uygulanan iş parçalarının ürüne olan etkisi yöneticilere aktarılmaya çalışılır. (bu durum için 2 istifa vermişliğim var)
  • Ekip yöneticilerinin tepeden inme olmaları sonucunda gelişmelere hakim olamıyor yada geç kalıyor oluşu.

Peki nasıl hareket etmek gerekir? 
Hız düşemez, düşmemeli. Bu önemli. Ama hızlı giderken kontrolü kaybetmemek için executing öncesi planlama dikkatlice yapılmalıdır. Ancak bu demek değildir ki ürün çıkmadan önce planını yapalım sonra hop diye ürün çıksın. Böyle bir plan yapılamaz, çünkü tüm olasılıklar executing öncesinden tahmin edilemez.  Planlama ve uygulama kısa aralıklarla yapılmalıdır, örneğin haftalık yada 10 günlük gibi. Executing sırasında da bir sonraki planning hakkında veri toplanır. Böylece kısa kısa ama hızlı ve net adımlarla ilerlenir. Bunun sonucunda ürününüz gelişir, ekibin motivasyonu düşmez, pozitif enerjiyi hissedersiniz. Ki istenilen de budur.

Biraz felsefe

Merhaba,
Bu yazımda biraz felsefe yapayım istedim kendimce. Mümkün olduğunca herkesin anlayacağı bir şekilde yazmaya çalışacağım nacizane.

İçinde bulunduğumuz evren bir çoğunu henüz bilmediğimiz çeşitli canlı cansız varlıkları barındıran bol sıfırlı ışık yılları genişliğinde bir yer ve daha yaşı da çok genç. Halen devam eden büyük bir patlamanın içindeyiz. Ancak her ne kadar evren hakkında cahil olsak da, dünyamızdaki çeşitlilik ile ilgili pek çok bilgiye sahibiz. Okyanus derinliklerinde yaşayan bakterileri yada taş devrinden bu yana nesli tükenmiş canlıları biliyoruz.
Çok çok fazla çeşitlilik var, ama aslında bu bir yanılsama olabilir mi?

Enerjinin korunumu yasasına göre, her madde enerjinin değişik bir halidir. Yani aslında madde ve enerji aynı şeydir. Var olan her canlı cansız nesne belirli miktarda enerjinin bir araya gelmesiyle oluşur. Her şeyin bir varoluş sebebi budur. Bu çiçek için de böyledir, taş içinde, insan içinde.  Kısaca Mars yüzeyindeki kırmızı toz zerresinden yada Pluton üzerinde bulunan buz parçalarından pek bir farkımız yok. Kullandığımız enerji ise evren oluşurken, Big Bang de açığa çıkan muazzam enerji. Buraya kadar çoğumuzun bildiği fizikten bahsettim.

İşin felsefi tarafına gelirsek, bir üst paragrafta bahsettiklerim de doğru olduğuna göre, evrende aslında evrenin kendisinden başka hiç bir şey yok dersek bu yanlış bir tez olmaz herhalde. Hepimiz Big Bang da açığa çıkan enerjinin farklı varyasyonlarıyız. Bugün insanız, yarın deniz yosunu, daha sonra başka bir şey. Evren yaratılırken de vardık, evren yok oluncaya kadar da var olmaya devam edeceğiz.

Big Bang den bahsettik, evrende var olan her şeyi yaratan öldüren, öldürdüğü şeyi başka bir şey yapan ve bunu sürekli yapan muazzam güçte bir enerji. Bu enerji aslında çeşitli kültürler tarafından farklı farklı şekillerde tasfir edilen, büyük yaratıcımızın ta kendisi olabilir mi? (: Aslında görünmez değil de her yerde sadece kendisini görüyor olabilirmiyiz? Kutsal kitapların bir çoğunda da geçen Tanrı nasıl her yerde olabilir sorusunun cevabı bu olabilir mi? Bilinç dışında kendimize ait hiç bir şeyin olmadığı doğru olabilir mi?

Özlü sözler filan kurmayacağım, özet geçiyorum. Eğer bu konu ilginizi çektiyse ve daha derinlere inmek istiyorsanız Spinoza'nın Ethicasını alıp okuyabilirsiniz.