Tags: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , | Categories: Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Coding Disaster, Tip, Coding Disaster, Coding Disaster, Coding Disaster, Tip, Tip, Coding Disaster, Coding Disaster, Tip, Coding Disaster, Coding Disaster, Coding Disaster, Tip, Tip, Tip, Coding Disaster, Coding Disaster, Tip, Tip, Tip, Coding Disaster, Coding Disaster, Coding Disaster, Tip, Tip, Tip, Tip, Coding Disaster, Tip, Tip, Tip, Coding Disaster, Tip, Tip, Tip, Tip, Tip, Tip, Coding Disaster, Tip, Tip, Tip, Tip, Tip, Tip, Tip, Tip, Tip, Tip, Tip, Tip, Tip, Tip, Tip, Tip, Tip, Tip, Tip, Tip, Tip, Tip, Tip, Tip, Tip, Tip, Tip, Tip, Tip, Tip, Tip, Tip, Tip, Tip, Tip, Tip, Tip, Tip, Tip, Tip, Tip, Tip, Tip, Tip, Tip, Tip, Tip, Tip, Tip, Tip, Tip, Tip, Tip, Tip, Tip, Tip, Tip, Tip Posted by okutbay on 05.03.2014 19:45 | Yorumlar (0)

Selamlar, kod yazmak zor (dışarıdan çok kolay görünebilir) bir iştir. Gelecek cümle özellikle yeni başlayan, başlayacak arkadaşlar için. "Ama kod okumak çok daha zor bir iştir!"

O nedenle kod yazarken, bir süre sonra sizin ya da başka birinin bu kodu okuyup anlaması gerektiğini aklınızdan çıkarmadan üşengeçlik yapmamaya özen göstermek önemlidir.

Bu yolda kullanabileceğiniz en güçlü bedava araçlardan biri aynı kod blogunda olan (indent olarak aynı hizada olan) kod satırları arasında okumayı kolaylaştıracak boşlukları gerektiği kadar vermektir. Gerektiği kadar diyorum çünkü her satır arasına boşluk koymak da koymamakla aynı şeydir. Kodunuzun okunmasını zorlaştırır.

Örneğin şu kod bloguna bakin.

List<ContactMethod> contactMethods = new List<ContactMethod>();
ContactMethod contactMethod = null;
values = new System.Collections.ArrayList();
values.Add(LangID);
values.Add(companyID);
try
{
    command = x.DaoBase.DBHelper.GetCommand(type, "8", values);
    dr = command.ExecuteReader();
    if (dr != null)
    {
        while (dr.Read())
        {
            contactMethod = new ContactMethod();

Bunu yazarken şu şeklide yazmak okumayi ve kodu anlamayi kolaylaştıracaktır.

List<ContactMethod> contactMethods = new List<ContactMethod>();
ContactMethod contactMethod = null;
values = new System.Collections.ArrayList();
values.Add(LangID);
values.Add(companyID);

try
{
    command = x.DaoBase.DBHelper.GetCommand(type, "8", values);
    dr = command.ExecuteReader();
    if (dr != null)
    {
        while (dr.Read())
        {
            contactMethod = new ContactMethod();

Boşlukları vererek kod blogunda (aynı seviyede) yer alan kodları mantıksal olarak ilişkilerine göre gruplamış olduk aslında. Özellikle try, if gibi kod bloklarını aynı seviyedeki kodlardan ayırmak için öncesinde bir satır boşluk bırakmak iyi olur. Aynı seviyede olmayan try ve command arasına boşluk vermeye gerek olmadığını da söylemek isterim.

Olay bu kadar.

Klavyeler şen ola...!

11 kişi tarafından 2.0 olarak değerlendirildi

  • Currently 2/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , , | Categories: Fun, Programlama, Security, Tip, Web Uygulaması Posted by okutbay on 24.07.2013 21:26 | Yorumlar (0)

İlk web sayfalarımı yaparken içerik kopyalanmasını önlemek için çeşitli numaralar yapar kopyalayanın işini zorlaştırmaya çalışırdım. Sonraları bunun gereksizliğine inandım. Çünkü içeriğin kopyalanması engellemezdi ve ayrıca ziyaretçiler için sinir bozucu olabiliyordu. Ben de bu uygulamadan vazgeçtim. Ama görüyorum ki bazı sitelerin yöneticileri hala yazılımcılarından böyle önlemleri almalarını istemekte ve arkadaşlarımızın değerli zamanlarını ve emeklerini gereksiz konulara yönlendirmekteler. Yapmayın etmeyin. Boşverin isteyen istediğini kopyalasın. Unutmayın kilit dost içindir. Hırsız niyet ettiyse kilit falan dinlemez.

Neden yazdım bu kadar yazı. Çünkü sinirlendim. Okuduğum bir Yılmaz Özdil yazısını facebookda paylaşmak istedim. Açıklama kısmına yazıdan bir bölümü kopyalayıp yapıştırmak istediğimde başarısız oldum. Hemen bir word belgesi açtım. Seçili bölümü sürükleyip belgeye bıraktım. Ve işte metin buradaydı. Orada durmadım düz metine çevirmek için bir ne notepad açıp wordden oraya yapıştırdım. Oradan da facebook a.

Sonuç sadece insanları sinir ediyorsunuz...  

2 kişi tarafından 4.5 olarak değerlendirildi

  • Currently 4,5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , | Categories: Hata, IDE, Tip Posted by okutbay on 14.10.2011 00:01 | Yorumlar (0)

Geçen hafta içinde yeni bir proje ekibine dahil oldum. Proje oldukça heyecanlı bir proje ama her zaman olduğu gibi bitiş tarihi belli, ne istendiği kabaca belli ama detaylar bize kalıyor... :D Ama bu yazımda bu konuyla ilgili bişiler olmayacak. Yeni projeyle beraber yaşadığım bir sorunu ve çözümünü anlatmaya çalışacağım.

 .NET frameworkü ilk versiyonundan beri kullanırım, Visual studio ise Visual Interdev zamanlarindan bu yana aktif kullandığım bir ürün. Hafta başında sıkıştırılmış olarak kaynak kodları ve veritabanı yedeği teslim aldım. Bir şekilde bunları çalıştırıp proje hakkında fikir sahibi olmam gerekiyordu.

Hemen veritabanı yedeğini yerel olarak bilgisayarımda buluna sql sunucusuna açtım. Oh mis. Sonra her developer gidi neymiş şu proje bağlantı cümlesini düzenliyip bakayım diye .sln dosyasına tıkladım... Ama karşıma bir mesaj çıktı... 

The project file "x" cannot be opened. Project type is not supported by this installation.

Dosya VS 2008 .sln dosyasıydı ve bu mesaj genelde VS 2005 ile web application destek güncellemesi kurulu olmadığında o biçimde yaratılmış projeleri açmaya çalıştığımızda almaya alışık olduğumuz mesajlardandı.

"Allah, Allah, çok ilginç..." diyerek dosyayı gönderen arkadaşı sorayım dedim. Developerı ortada olmayan ve bilgi alınma şansı kalmamış bir proje olduğunu söyledikten sonra "silverlight 2.0 projesi olması lazım" dedi...

Gel gelelim ben de zaten bi sürü silverlight SDK hödösü kuruluydu. Ufak bir googledan sonra Microsoft® Silverlight™ 2 Tools for "Visual Studio 2008 SP1" kurmam gerektiğini öğrendim... Ohhh dedim şimdi işin yoksa "Microsoft Visual Studio 2008 Service Pack 1" kur bi de diye hayıflandım... SP1 i kurdum sonra silverlight toolsu kurayım dedim. Ama ne mümkün. fatal error verip kurulumu kesiyordu. Sonra öğrendim ki ne kadar silverlight hedesi varsa kaldırıp öyle kurmak gerekiyormuş... SP1 kurucam diye hayıflandığıma çok pişman olmuştum... Sen miydin hayıflanan, al sana demişti şakacı bir kişilik. Uzun lafın kısası bir şekilde kurduk ve .sln dosyasını açtığımda başta yükleyemediğim 5 projeden 3ünü yüklemeyi başarabilmiştim.

Şekil 1: Başarıyla yüklenen 3 proje. 

Ama hala 2 proje saçma şekilde yüklenmiyordu.

 

Şekil 2: Proje yüklenme hatası.

"Ne ulan bu projeler" diye bir text editör ile proje dosyasına bakarak tiplerini anlamayı düşündüm. Tabi adamlar guid tutmuşlar ve bişi almadım. Nedir bunlar diye aradım ve proje tipleri normal şartlarda sahip olduğum kurulumun açması gereken cinstendi.

 

PlantDoctorDataServices.csproj

{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}

PlantDoctorWebPart.csproj

{593B0543-81F6-4436-BA1E-4747859CAAE2};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 

 

Not: Ulaştığım tablo gayet faydalı bir tablo. Buraya da koyayım lazım olur sonra

Project Type Description Project Type Guid
Windows (C#) {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
Windows (VB.NET) {F184B08F-C81C-45F6-A57F-5ABD9991F28F}
Windows (Visual C++) {8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}
Web Application {349C5851-65DF-11DA-9384-00065B846F21}
Web Site {E24C65DC-7377-472B-9ABA-BC803B73C61A}
Distributed System {F135691A-BF7E-435D-8960-F99683D2D49C}
Windows Communication Foundation (WCF) {3D9AD99F-2412-4246-B90B-4EAA41C64699}
Windows Presentation Foundation (WPF) {60DC8134-EBA5-43B8-BCC9-BB4BC16C2548}
Visual Database Tools {C252FEB5-A946-4202-B1D4-9916A0590387}
Database {A9ACE9BB-CECE-4E62-9AA4-C7E7C5BD2124}
Database (other project types) {4F174C21-8C12-11D0-8340-0000F80270F8}
Test {3AC096D0-A1C2-E12C-1390-A8335801FDAB}
Legacy (2003) Smart Device (C#) {20D4826A-C6FA-45DB-90F4-C717570B9F32}
Legacy (2003) Smart Device (VB.NET) {CB4CE8C6-1BDB-4DC7-A4D3-65A1999772F8}
Smart Device (C#) {4D628B5B-2FBC-4AA6-8C16-197242AEB884}
Smart Device (VB.NET) {68B1623D-7FB9-47D8-8664-7ECEA3297D4F}
Workflow (C#) {14822709-B5A1-4724-98CA-57A101D1B079}
Workflow (VB.NET) {D59BE175-2ED0-4C54-BE3D-CDAA9F3214C8}
Deployment Merge Module {06A35CCD-C46D-44D5-987B-CF40FF872267}
Deployment Cab {3EA9E505-35AC-4774-B492-AD1749C4943A}
Deployment Setup {978C614F-708E-4E1A-B201-565925725DBA}
Deployment Smart Device Cab {AB322303-2255-48EF-A496-5904EB18DA55}
Visual Studio Tools for Applications (VSTA) {A860303F-1F3F-4691-B57E-529FC101A107}
Visual Studio Tools for Office (VSTO) {BAA0C2D2-18E2-41B9-852F-F413020CAA33}
SharePoint Workflow {F8810EC1-6754-47FC-A15F-DFABD2E3FA90}
XNA (Windows) {6D335F3A-9D43-41b4-9D22-F6F17C4BE596}
XNA (XBox) {2DF5C3F4-5A5F-47a9-8E94-23B4456F55E2}
XNA (Zune) {D399B71A-8929-442a-A9AC-8BEC78BB2433}
SharePoint (VB.NET) {EC05E597-79D4-47f3-ADA0-324C4F7C7484}
SharePoint (C#) {593B0543-81F6-4436-BA1E-4747859CAAE2}
Silverlight {A1591282-1198-4647-A2B1-27E5FF5F6F3B}

Kaynak: http://www.mztools.com/articles/2008/mz2008017.aspx

Proje tipinden bir sonuç çıkmayınca çaresizce hata mesajınını googleda arayıp alakalı olabilecek cevaplara bakmaya başladım. Kimin aklına gelirdi "<ProjectTypeGuids></ProjectTypeGuids>" tagleri arasında yazan guidleri silince projelerin yükleneceği. Benim de gelmezdi bir yerde okumasam. Sildim ve projeler şimdi yükleniyor... Patrona söylesen hayatta inanmaz böyle bişiye bir gün harcadığına... :D

Neyse projeleri yükledik ama bakalım derlenecek mi? %99 derlenmeyecek. Ama şu an mutluyum...  

 

  

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , , | Categories: IDE, SSS (FAQ), Tip, UI, Web Uygulaması Posted by okutbay on 01.10.2011 02:16 | Yorumlar (0)

Geliştirdiğimiz web uygulamasını belirli aralıklarla düzenli olarak bir sunucuya göndermemiz gerekiyorsa her seferinde tüm dosyaları sunucuya yüklemeye çalışmak zaman kaybettirebilir...

Son güncelleme zamanından önce değiştirilmiş dosyaları bulmak için dosya arama fonksiyonunu kullanabilirsiniz. Bulunan dosyaları seçil sildiğinizde elinizde sadece son guncelleme zamanindan bu yana degisen dosyalar kalacaktır.

Windows 7 de arama bir miktar farklı olduğundan belirli bir tarihten onceki dosyalari bulmak için arama kutucuğunua "datemodified:<‎18.‎05.‎2011" yazabilirsiniz.

 

 

1 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , , , , | Categories: Tip, UI, Web Uygulaması Posted by okutbay on 20.09.2011 20:53 | Yorumlar (0)

İDOnun hizmetlerini beğenerek kullanıyoruz. Daha önce dikkatimi çekmemişti ama bu sefer bilet alırken bir miktar zorlandım.

İlk zorlandığım nokta bileti al butonu ile kredi kartı bilgilerinin girileceği yerin birbirine olan uzaklığıydı. Butona odaklandığım için kredi kartı bilgilerini gireceğim yeri görmekte kısa da olsa bir süre zorlandım. Bence yolcu bilgileri ile kredi kartı bilgileri yer değiştirse daha iyi olur.

Diğer bir nokta ise kullanıcının bilet alma işini sonlandırabilmesi için şartları kabul etmesi gerekiyor. Burada bir sorun yok. Ama şartları kabul etmeninizin gerektiğini anlamanın tek yolu kredi bilgilerini girdikten sonra bir kısım checkbox ın altında yer alan ayrı bir checkboxı işaretlemeniz gerektiğini söyleyen bir notu okumak...

Bu notu okumayı atlarsanız benim gibi "yahu bu bilet al butonu niye pasif, neyi eksik yaptım" diye söylenerek aranırsınız.

Oysa "bilet al" butonunu da bu bilgiyi vermek için kullansa, mesela pasif yapmasa tıklayınca uyarı mesajı verse, ya da onun sağına soluna bi yere de not yazsa kullanılabilirlik adına daha yüksek bir kaliteye ulaşılır. Çünkü kişiler bir an önce bileti almaya odaklandıkları için diğer bölümleri hızlı hızlı geçip o butona tıklama eğilimindedir. Ve siz butona tıklama eğiliminde olan kullanıcının bu işlevi kullanmasını engelleyerek sadece onlar için hayatı zorlaştırırsınız.

 

 

 

 

 

 

2 kişi tarafından 3.5 olarak değerlendirildi

  • Currently 3,5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , , | Categories: IDE, Programlama, Tip Posted by okutbay on 16.09.2011 21:42 | Yorumlar (0)

.NET uygulamalari gelistirirken Visual Studio versiyonlarini kullanmayi tercih ediyoruz. Tabi yıllar içinde Framework versiyonları ile beraber visual studio versiyonlari da değişti. Değişmeyen bir tek şey kaldı benim için. Her kurulum sonrasında Windows > Close All Documents için bir kısayol ataması yapmak...

Benim tercihim Shift + Ctrl + F4...  

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , , , | Categories: Script, Tip, Veritabanı Posted by okutbay on 22.04.2011 19:53 | Yorumlar (0)

SQL Serverda text deger içeren bir kolonda like ile sorgulama yapmak istediğinizde arama kriteriniz sorgularda özel anlamı olan karakterler içeriyorsa [] içinde kullanabilirsiniz

Örneğin "_" içere arama kriterlerinde [] içinde yazarsanız sorgunu o kolonda içinde "_" geçen kayıtları döndürecektir... 

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Categories: Script, SSS (FAQ), Tip, Web Uygulaması Posted by okutbay on 22.02.2011 21:01 | Yorumlar (0)

Selamlar, javascript i çok çirkin bulmama ve sevmememe rağmen bir web uygulama geliştiricisinin hayatını nasıl kurtara bileceğinin farkındayım... Tabi yazılan javascript deneyimsiz ellerden çıkmışsa bir o kadar da ölümcül olabilir...

Bugün sizlerle çok ufak ama hayat kurtaracak bir script parçası paylaşacağım... 90lı yılların sonunda ASP ile uygulama geliştirirken sık sık frame ve iframe yapılarını kullanmak zorunda kalırdır. Daha sonra ASP.NET le beraber kendi adıma bunları hiç kullanmadım desem yeridir. Eğer uygulamanızda forms authentication (ya da benzeri bir yapı) kullanıyorsanız frame içinde gösterilen sayfanın login gerektirecek bir durumla karşılaşması halinde frame içinde login sayfasına gidecek ve login olduğunuzda eğer return url bilinmiyorsa ana sayfaya gitmesi halinde hoş olmayan bir görüntü ile karşılaşabilirsiniz. Bu sorunu aşmanın bir kaç farklı yolu olsa da bana en pratik geleni sizinle paylaşmak istiyorum. Bu ufak script ilgili sayfada çalışarak en üst framede yüklenmesini garanti edecektir...

Klavyeleriniz şen ola.

<script type="text/javascript" language="javascript">
    if(top.frames.length>0){
        top.location = 'hede.aspx';
    }
</script>  

1 kişi tarafından 4.0 olarak değerlendirildi

  • Currently 4/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Categories: IDE, Tip Posted by okutbay on 10.02.2011 02:48 | Yorumlar (0)

Son versiyonu aldığınızdan emin olmak için "Get latest version of item on check out" seçeneğini işaretleyiniz.

image

Ayrıca isteğe bağlı olarak kaza eseri check out etmemek için aşağıdaki ayarı da yapabilirsiniz

image

1 kişi tarafından 4.0 olarak değerlendirildi

  • Currently 4/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , , , , | Categories: Tip, UI, Web Uygulaması Posted by okutbay on 21.01.2011 20:02 | Yorumlar (0)

Her ne kadar ülkemizde de yavaş yavaş arayüz geliştirme ve yazılım geliştirme farklı uzmalıklar olarak algılanmaya başlasa da hala katedilmesi gereken çok mesafe var.

Kullanılabilirlik konusu alt yapının yetenekleriyle sınırlıdır. Alt yapının size izin vermediği özelliklerin müşteriler tarafından istenmesi elbette geliştiren için çok büyük acıdır. Ama öte yandan alt yapının yeteneklerini bilmek ve arayüzde mümkün olan en iyi kullanılabilirliği sunmamız oluşturmaya çalıştığımız ürünün kalite algısını üst düzeylere çıkartacaktır.

Elbette bu yeteneklerin yanlış kullanılması da ters bir etkiyi doğrucaktır. Örnek vermek gerekirse bir arama kutucuklarına yazmak için geldiğiniz de önceki yazılmış metnin silinmesi çok yaygın bir uygulama. Bir çok sitede görülebilir. Ama yaygın olması doğru olduğu anlamına gelmiyor. Mantık olarak kullanıcının yazdığı bir metni yine kullanıcının silmesi doğrudur. Burada bahsettiğim arama kutucuğunda bulunan "Type to search" initial textin silinmesi değil. "abc xyz" şeklinde yaptığım ve arama sonuçlarından memnun olmayarak arama metnini değiştirmek istediğimde "abc xyz" metninin temizlenmesi. Arayüz geliştiren arkadaşlara önerim bu metni silmek yerine, seçili duruma getirebilirler. En doğru uygulama bu olacaktır.

Ne kadar can sıkıcı olabileceğine örnek vermek gerekirse yazdığım durak adını her seferinde tekrar yazmak zorunda kaldığım şu sayfaya bakabilirsiniz...

image

http://harita.iett.gov.tr/

Aynı mantık sayfa üstünde bulunan hat arama ve adres arama kutuları için de uygulanmış ve kanımca hoş bir kullanılabilirlik örneği değil... Geliştirmeyi yapan arkadaşın kodunu sadece initial texti temizleyecek ve diğer metinleri seçecek şekilde değiştirmesi yeterli olacaktır.

Tabi ki bu haliyle de çok faydalı. Kullanışlı ama çok ufak dokunuşlarla kullanılabilirlik ve kalite algısını üst düzeye çıkarmak mümkün.

Klavyeleriniz şen ola...

1 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5