Koray Kırdinli

Yazılım ve İş Yaşamı Hakkında Paylaşımlar

PL SQL Decode Fonksiyonu

Decode fonksiyonu IF-THEN-ELSE yapısını sorgu içerisinde kolayca yapmamızı sağlar.

 

DECODE(kolon_adi,koşul1,deger1,koşul2,deger2,. . .);

Burada kolonun değeri şu ise değer şu olsun şu ise şu olsun kolayca dememizi sağlıyor. Örneğin şöyle bir şeye ihtiyacınız oldu ; id alanınız var ve siz 1-10 arası kayıtlarınızı katagori1 11-20 arası kayıtlarınızı katagori2 olarak select sorgunuzda göstermek istiyorsunuz.

SELECT id,DECODE(trunc ((id – 1) / 10),0,’katogori1′,1,’katagori2′,2)  FROM TabloAdi

Veya

If yrs_of_service < 1 then return 0.04
If yrs_of_service >= 1 and < 5 then return 0.04
If yrs_of_service > 5 then return 0.06

gibi bir şey yapmak istiyoruz.Sorgusu aşağıdaki gibi olacaktır.1 den küçük değerler için 0,04 yazacaktır.

 

SELECT emp_name,
decode(trunc (( yrs_of_service + 3) / 4), 0, 0.04,
  1, 0.04,
    0.06) as perc_value
FROM employees;

 

 

Detaylar için http://www.techonthenet.com/oracle/functions/decode.php adresini inceleyebilirsiniz.

Reklamlar

Nisan 30, 2009 Posted by | Oracle | , , | Yorum bırakın

ORM (OBJECT RELATION MAPPING) Nedir?

     Bu makalemde son zamanlarda çok sık duymaya başladığımız bir kavram ORM hakkında konuşacağım. Öncelikle bu konuda herkes bir şeyler söylüyor projelerimde ORM kullanmak zorunda olan biri olarak birkaç şey de ben ilave edeyim dedim..

Öncelikle ORM nedir sorusuna cevap bulalım ; Veritabanımızda yaratmış olduğumuz her bir nesneye karşılık kod tarafında bir nesne oluşturan programlardır diyebiliriz.Bu programlar code generation tekniği kullanarak bizim yazmamız gereken kodu otomatik üretiyor.

Örnek Veritabanımızda bir tablo var Ogrenci(id,adi,soyadi,sinifi) Normal şartlarda OOP yazılım geliştirirken bu tabloya karşılık gelen bir sınıfı kendimiz elle oluştururuz. Yani Ogrenci isminde bir sınıf ve id , adi , soyadi , sinifi field ve property lerini oluştururuz sonra da Update,Insert,Delete ve Select sorgularını hazırlarız. İşte ORM bütün bu standart işlemleri otomatik olarak yapıyor.

Ne güzel diyebilirsiniz , gerçekten de güzel . Çok hızlı veri tabanından bağımsız , katmanlı bir uygulama geliştirebiliyorsunuz. Örneğin biz şirketimizde LLBLGEN isminde bir bileşen kullanıyoruz.Bunlara karşılık .NET’in Linq’u , Java’nın Hibernate ve daha bir çok bileşen bulmak mümkün. Örnek bir kod :

 OgrenciEntity entity = new OgrenciEntity(id);

entity.Name = ‘Koray’;

entity.Save();

İşte veritabanına kayıt eklemek bu kadar kolay.

      Tabi ki dezavantajları da mevcut.Bunlardan bir tanesi performans , kaybı diğeri ise kontrolün sizden bir anlamda çıkması.Performansın önemli olduğu ve karışık sorguların bulunduğu kısımlar hariç kullanmakta yarar var diye düşünüyorum. Bazıları kesinlikle kullanmayın diye tabirlerde bulunuyor ancak benim 2 haftada yapacağım işi 3 güne düşürüyorsa neden kullanmayayım. Ancak bir projede hem ORM hem de kendi kodumuzu yazabiliriz. Böyle bir yapı sanırım daha sağlıklı.Aslında bana göre en iyisi herşeyi kendinizin yaptığı yazılımdır ancak bazen zaman kısıtı sizi böyle şeyler kullanmaya zorluyor.

Nisan 29, 2009 Posted by | Yazılım | , , , , , , | Yorum bırakın

Yeni Bilgisayar Mühendisinin Yol Haritası

            Bu makalemizde bilgisayar mühendisliği öğrencileri için iş hayatına girince neleri bilmek gerekir , hangi programlama alanına yönelmeliyim gibi sorulara cevap olabilecek bir takım konulara değineceğim. Çoğu bilgisayar mühendisi iş hayatına başlamadan önce eminim ki neleri öğrenirsem iş bulabilirim veya daha fazla kazanabilirim gibi sorular kendisine veya çevresindekilere soruyordur. Bende bu anlamda iş hayatında ilk etapta karşısına çıkacak konulara genel bir bakış açısıyla ışık tutmaya çalışacağım.

                Bilişim dünyası o kadar geniş bir  sektör ki gerçekten her şeyi dört dörtlük öğrenmenin imkanı yok. Yazılım mühendisliği , veritabanı yöneticisi , web programcısı , test uzmanı , proje yöneticisi ,  vs.vs. Türkiye’de bilgisayar mühendisliği tek bir iş yapmaz , işe başladığında iş neyi gerektirirse onu yapar.Tabi bu işin doğrusu bu değil ancak Türkiye’de bir çok yerde maalesef işler böyle yürüyor ve uzmanlaşmayı kişi ancak kendi gayretleriyle başarabiliyor.

                Öncelikle programlamayı dört ana başlıkta incelemekte yarar gördüm. Biz bir proje yapıyorsak bu ihtiyaca göre web , console,Windows veya mobil bir uygulama olabilir.Bunların neler olduğunu kısa kısa açıklayayım.

Console Uygulamaları : Belli bir sıraya göre ilerleyen , komut satırı görünümde çalışan uygulamalardır.Günümüzde hala üniversitelerde yeni başlayanlara console uygulamarı üzerinden algoritmalar anlatılmakta ki bu da yeni başlayan birisi için en uygunu. Örneğin C dili ile geliştirdiğimiz uygulamalar bunlara örnektir. Sistem kaynaklarını fazla tüketmediği için hızlı çalışır.

Windows Uygulamaları : Hepimizin bildiği üzere piyasada çok fazla kullanılan Windows ara yüzü olan uygulamalardır. Piyasada kullanımı çok yaygındır.Bir çok şirket kayıtlarını Windows uygulamaları ile tutmaktadır. Stok takip programları , muhasebe programları , en basitinden kullanmış olduğumuz winamp dahil Windows uygulamalarına örnek teşkil eder.

Web Uygulamaları : Web uygulamaları kabaca web browserı ile çalışan görünümünü HTML kodları ile belirleyen uygulamalardır.(Facebook , Yahoo,.. )Internet erişiminin yaygınlaşmasıyla artık web uygulamaları basit birer web sitesi olmaktan çıktı ciddi anlamda iş dünyasının ihtiyaçlarına cevap verir duruma geldi. Firmalar farklı lokasyonlardaki birimlerini ortak bir dille konuşturmak için çoğunlukla web uygulamalarını tercih ediyorlar. Web uygulaması bir servera yüklenip internet üzerinden erişim sağlıyor.

Mobil Uygulamalar : El bilgisayarında çalışan uygulamalardır. Örneğin restoranlarda garson siparişlerini el terminali ile alır ve merkeze direk aktarımını sağlar.Bu gibi uygulamalar için gayet kullanışlıdır.

 

Yukardaki şekil aslında bize şunu anlatıyor.Uygulamalar aslında her şekilde yapılabilir.Örneğin bir web sitesi yapacaksam ben bunu düz HTML kodları ile de yapabilirim , ASP.NET ve C# ile de yapabilirim , Java ile de yapabilirim , PHP ile de yapabilirim.Buradaki kilit nokta şu benim ne tür bir uygulamaya ihtiyacım var. Her dilin birbirine göre üstünlükleri var ve bazı diller bazı uygulamalar için daha uygun.Zaten iş hayatında ilk etapta dili seçme imkanınız olmayacak.Şirket neyi kullanıyorsa sizde onu kullanmak durumunda olacaksınız.Yanlız tavsiyem çoğu hakkında az da olsa bilgi sahibi olmanız.Zaten dillerin yapısı mantık itibari ile.Bir tanesini çok iyi bilmek diğerlerine geçişi kolaylaştırır.Yani bunları bilmem gerekiyor diye hepsine gece gündüz çalışmaya gerek yok ,  sadece birinde uzmanlaşmaya gitmek yeterli .İhtiyaç anında zaten ister istemez kısa bir sürede başka bir dile de adapte olacaksınız.

                Keşke işimiz dil öğrenmekle bitseydi.Uygulamaları anlamlı kılan içindeki verilerdir.Veri olmadan uygulamanın da bir anlamı yok.Örneğin bir fabrikanın üretimini takip etmek için bir yazılıma ihtiyacı var diyelim.Sizin çalıştığınız firmaya bir talepte bulundular.Bu firma bana şu şu şu raporları verebilecek bir yazılıma ihtiyacım var der asla C# ile yazılmış bir yazılım istiyorum demez.Müşteri için neyle yazıldığı değil ona neleri sunduğu önemlidir. Verilerde veritabanlarında tutulur.(SQL Server,Oracle,Access,Firebird,MySQL). Aslında yazılımcının işi yazılımın tasarımını,kodlamasını ve testini yapmak olmasına rağmen veritabanını tasarlamakta üstünüze kalabilir.O yüzden okul bitmeden en az bir veritabanı sistemi üzerinde detaylı olarak bilgilenin.

                Türkiye piyasası şartlarında .NET veya JAVA platformlarında bilgili olmak size kolay iş bulmanızda yararlı olacaktır.En popüler veritabanları ise kuşkusuz Oracle ve SQL Server. Ben işim gereği .NET konularıyla uğraşıyorum ve iş sadece C# öğrenmekle bitmiyor tabi ki yeri geliyor ASP.NET eri geliyor WPF yeri geliyor Silvirligt, AJAX .Belki Sharepoint,CSS,Javascript,Linq,Devexpress,LLBLGEN . İşin özü iş neyi gerektiriyorsa onu yapıyoruz aslında ve emin olun öğreneceğiniz konular meslek hayatınız boyunca bitmeyecek.Ben oldum demek gibi bir şey yok. İşte bu yüzden neyi öğrenmeniz gerektiğinizin kesin bir cevabı yok. Belki bundan seneler sonra çok farklı şeyler üzerine tartışıyor olacağız.Çünkü artık yeni çıkan araçlar ile kod yazmaktan giderek uzaklaştığımızı hissediyorum.

Nisan 26, 2009 Posted by | Yazılım | , , , , , , , , , , | Yorum bırakın

İyi Sunum İçin İpuçları

Bu makalemizde iyi bir sunumu nasıl yapabileceğimiz hakkında bazı bilgilerimi paylaşmak istiyorum.İşim gereği bir çok yerde seminer ve sunumlara katılıyorum ve sunumu yapan kişileri çok iyi gözlemlemeye ve onlardan bir şeyler öğrenmeye çalışıyorum.Ancak bazı konuşmacıları dinlerken uyumamak için kendimi zor tutuyorum.Sunum yapmak gerçekten zor ve bir o kadar da eğlenceli bir iş.Bende defalarca farklı amaçlar için sunum yapma fırsatı buldum.Sunum yapma konusunda da aman aman yetenekli olduğumu söyleyemem ancak bazı noktalar vardır ki bunları yapmak sunuma bir artı kazandırır. Gelin bunların neler olabileceğini maddeler halinde inceleyelim.

  1. 1.        Sunuma başlamadan önce projeksiyon , bilgisayar ve bilimum araçlar hazır olmalı,dinleyicilerin önünde bunları hazırlamak için vakit kaybetmemeliyiz.Dinleyici beklemeyi sevmez.
  2. 2.        Bilgisayarınızda Powerpoint veya bir başka araçla hazırladığınız sunumun haricinde göstermeniz gereken belgeler varsa bunları önceden hazırlayıp masaüstüne kopyalamalısınız , konu geldiğinde kolayca erişip sunumun akışını bozmamış olursunuz.
  3. 3.        Kılık kıyafettiniz de özen göstermelisiniz , bu sunuma verdiğiniz önemi ve ciddiyetinizi gösterir.
  4. 4.        Sunum dizaynınız da çok önemlidir. Konuyla alakalı renkler kullanmak gerekir.Bol bol yazılarla sunumu doldurmak gereksizdir sadece kısa bilgiler ve bol resim ve şekiller kullanmak daha etkilidir.
  5. 5.        Sunuma başlarken kendimizi ve kısa özgeçmişimizi kısaca anlatmalıyız ki dinleyici size kendini daha yakın hissetsin ve sunumun ilerleyen yerlerinde kendine bu doğrultuda pay çıkarabilsin.
  6. 6.        Sunuma başlamadan önce çok kısa anlatacağınız konular hakkında bilgi verin ve ne zaman hangisini anlatacağınızı dinleyici bilsin.
  7. 7.        Sunuma başlamadan dinleyicilere konuyla alakalı yazılar verin ki aralarda dinleyiciler sıkılmasın ve konuya daha fazla dikkatini versin.
  8. 8.        Sunum sonunda bir ödül dinleyicilerin sunum bitmeden sunumu terk etmesini engeller.Örneğin sunum sonunda  3 soru soracağız bilenlere bütün dokümanların bulunduğu bir cd verilecek gibi.
  9. 9.        Sunuma başlarken sizi dinleyecek kitleyi tanımak için sorular sorun. Örneğin öğrenci olanlar el kaldırsın.Bu konuyla daha önce uğraşanlar el kaldırsın gibi.Böylece sunumun seviyesini anlatacağınız topluluğa göre belirleyebilirsiniz.
  10. 10.     Aşırı teknik terimlerle sunumu boğmayın.Dinleyicilerin seviyesine uygun ve her şeyi bilindik örneklerle anlatmaya çalışın.
  11. 11.     Sunumunu yapacağınız konuya çok iyi hakim olmalısınız.Konuyla alakalı pek çok kaynak okumalı ve bir soru sorulduğunda benzer konularla kıyaslama yapabilmelisiniz ve tatmin edici cevaplar verebilmelisiniz.
  12. 12.     Ses tonu ve sahneyi kullanım da etkili bir sunum için olmazsa olmazlardandır.Cılız bir sesle sadece bilgisayar başında yapılan sunum dinleyicileri sıkacaktır.Gür sesle gerektiğinde sahnede dolaşarak sunumu hareketlendirmelisiniz.
  13. 13.     Akıcı ve düzgün kelimeleri seçerek konuşmak gerekir.Sizin ağzınızdan çıkan her kelimeyi dikkatle dinleyen bir kitle önünde konuşuyor olacaksınız ve bu yüzden eee , iiii , gibi kelimeleri fazla kullanmamaya özen gösterin.
  14. 14.     Soruları sunumun sonuna bırakmak bana göre yanlış , soruları sıcağı sıcağına cevaplamak hem dinleyicilerin daha fazla sunuma katılmasını hem de sunumda düz bir anlatımdan uzaklaşmanızı sağlar.Bunu sunumun başında da belirtin.Dinleyicilere sorunuz olursa sözümü kesebilirsiniz deyin böylece dinleyici ile olan mesafeyi azaltmış olursunuz.
  15. 15.     Sunum sürenizi iyi ayarlayın.Hangi konulara ne kadar vakit ayırmalısınız belirleyin ve süreyi aşmamaya özen gösterin.
  16. 16.     Sunumda önemli bulduğunuz yerleri vurgulayın her konuyu aynı seviyede anlatmayın , ses tonu ve harekelilik inişli çıkışlı olması daha iyidir.
  17. 17.     Dinleyicilerle göz göze gelin.Uyumalarına engel olun.Uyuklayan olursa şaka yollu uyarın.Espri yapmak sunuma olan ilgiyi artırır.
  18. 18.     İlk defa bir sunum yapıyorsanız dinleyicilerin desteğini arkanıza alacak kelimeler sarfedin.İlk sunumum kusura bakmayın biraz heyecanlıyım.
  19. 19.     Sunumda hiçbir şeyin konsantrasyonunuzu bozmasına izin vermeyin . Sadece anlatacağınız konuya odaklanın.Konsantrasyonunuz bozulursa demorilize olursunuz ve sunum bir işkenceye dönüşebilir.
  20. 20.     Konuyu düz metin gibi anlatmaktan kaçının.Senaryolar üzerinden hareket etmek dinleyicilerin olayı zihinlerinde canlandırmalarına yardımcı olacaktır.Örneğin SQL’de select ifadesi veri getiren sorgular yaratmaya yarar gibi bir anlatımdan ziyade.Örneğin bir firma müşteri bilgilerini bir tabloda tutuyor ve içlerinden bazılarını filtreleyip göstermek istiyor bu gibi durumlar için Select ifadelerini kullanabiliriz gibi.
  21. 21.     Konuları anlatıp geçmek yerine ufak birer demo ile hafızada kalmasını sağlayabilirsiniz.Örneğin C# ‘ta id üretmek için GUID’lerin kullanımını göstereceksiniz. Bu durumda .NET arka planda mutlaka açık olmalı ve hemen uygulamayı gösterebilmelisiniz.
  22. 22.     Ara ara dinleyiciye sunumun nasıl gittiği konusunda sorular sorun.Anlaşılmayan noktaların tekrar üzerinden geçebileceğinizi belirtin.
  23. 23.     Sunumuzu kaydedin ve fotoğraflatın.Sonra sunumu tekrar izleyip kendinizi eleştirin.

 

Bu maddeler daha da genişletilebilir.Sizlerinden fikirleri varsa yorumlarsanız sevinirim.Herkese iyi sunumlar

Nisan 25, 2009 Posted by | Güncel-Genel | , , , , , | Yorum bırakın

SQL With Rollup Kullanımı

Merhabalar bu yazımda bir projemde araç istatistiklerini gösteren bir sql sorgusu yazmıştım bunu ne amaçla ve nasıl yaptığımı anlatmak istiyorum. _HAREKET isimli tablomdan araçla ilgili yapmış olduğu KM , yaptığı ciro , kaç sefer yaptığı ve bunların aylık toplamları gibi bilgilerden bir rapor oluşturmam gerekliydi.Bu raporu oluşturabilmem için öncelikle Araçlara göre gruplamam gerekliydi çünkü her satırda tek aracın bilgileri olmalıydı. Bu yüzden öncelikle GROUP BY kullanmaya karar verdim. Daha sonra da bu prosedüre ay ve yıl bilgisini dışardan göndererek filtreleme yaptırdım. Son olarak kilit nokta bu sorgudaki alt toplamı aldırmaktı.İşte bunu Sql’de yapan komut WITH ROLLUP komutu idi.

Bu komut group by sonuna yazıldığı zaman grup bazında alınan toplamların en üstte bütün grupların toplamını aldırmakta.

Sorgumuz şu şekilde

declare @ay int,@yil int

SELECT @ay=10,@yil=2008

 

SELECT A.AracNo,MAX(A.PlakaNo) As PlakaNo,isnull(SUM(H.SCikan),0) As Toplam_Sevk,

isnull(SUM(H.CBorc),0) As Ciro,COUNT(H.SCikan) As Sefer_Sayisi,

(SELECT isnull(SUM(AH2.AGider),0) FROM _ARACHAREKET AH2

Left Join _HAREKET H On AH2.HareketNo=H.HareketNo

WHERE MONTH(H.Tarih)=@ay AND YEAR(H.Tarih)=@yil AND AH2.AracNo=A.AracNo) AS Arac_Gideri,

(SELECT ROUND(isnull(AVG(AH2.KMde_Yaktigi),0),2) FROM rArac_Hareketleri AH2

 WHERE AH2.AracNo=A.AracNo AND MONTH(AH2.Tarih)=@ay AND YEAR(AH2.Tarih)=@yil ) As KM_OrtalamaYakit

 FROM _ARACHAREKET AH 

Left Join _HAREKET H On AH.HareketNo=H.HareketNo Left Join _ARAC A On A.AracNo=AH.AracNo

WHERE   MONTH(Tarih)=@ay AND YEAR(Tarih)=@yil

GROUP BY A.AracNo

WITH ROLLUP

Nisan 15, 2009 Posted by | MSSql | , , , , , , | Yorum bırakın

Kaliteli Yazılım Geliştirmek İçin Neler Yapılabilir?

Öncelikle sizlere maddeler halinde özellikle kodlamaya yeni başlayanlar veya yazdığı koda tekrar baktığında anlamayan geliştiriciler için kendi çapımda birkaç öneri vermek istiyorum. Sadece benim tecrübelerim doğrultusunda neler yapılabilir onları yazacağım. Bunlara ilave etmek istediğiniz olursa lütfen sizde paylaşın.

1-       İlk önce değişken ve kontrollere isim verirken anlamlı isimler vererek başlayabiliriz.Örneğin sayıların toplamını tutmak için bir integer sayıyı int x yerine , int _toplam şeklinde yazmalıyız veya bir forma Form1 yerine frmAnasayfa.

2-       Windows veya web uygulaması yaptığımızı düşünelim bir butona tıklayınca bir işlem yaptıracağız diyelim ; işlem yapacak kodları butonun click eventi yerine bir fonksiyonda tanımlayıp butonun click eventinde bu fonksiyonu çağırabiliriz.

3-       İşlem yapacak fonksiyonları gruplayarak class’ların içerisinde tanımlayabiliriz.Örneğin maliyet hesaplama işlemlerini yapacak fonksiyonları ve değişkenleri Maliyet isminde bir class içerisine yazıp bu classı programın diğer yerlerinde kullanabiliriz.

4-       Klasörler oluşturma : Belli amaca hizmet eden class’ları bir klasör altında toplayarak bir hiyerarşi sağlayabiliriz.

5-       Her class değişkenini public tanımlama yerine private tanımlayıp eğer dışarıdan erişim sağlanacaksa public bir property tanımlayabiliriz.

6-       Bütün fonksiyonları public tanımlamak yerine bu fonksiyonu sadece sınıf içinde mi kullanacağız yoksa alt sınıflar mı kullanacak belirleyerek private veya protected tanımlayabiliriz,Böylece fonksiyonların etki alanlarını kısıtlamış oluruz.

7-       Çok abartı olmamak kaydıyla gerekli gördüğünüz yerlere summary’ler ve açıklamalar ekleyiniz.

8-       Bir class’ın tek bir görevi ihtiva etmesini sağlayın.Örneğin Stok sınıfı deyip içinde başka işlemleri de bu sınıfa yüklemeyin.

9-       Geliştirme yaparken belirli aralıklarla ( refactoring ) kodda ve tasarımda iyileştirme yapın

10-    Programı genellikle 3 katmanlı olarak oluşturmaya çalışın. Data Layer – Business Layer ve Presentation Layer.

11-    Bir kodu yazarken bir başka projede kullanılabilir olduğunu test edin.Örneğin bir class başka class’lara bağımlı olmadan başka bir yerde kullanılabilir mi(re-use).Genellikle DLL haline getirmeye çalışın.

12-    Formda veya Sayfada asla sql cümleleri kullanmayın.Veritabanı işlemlerini data katmanında yapın.

13-    Abstract class ve interface kullanın. Bunların sayesinde sınıfların birbirlerine olan bağımlılıklarını azaltabilir programa esneklik kazandırabilirsiniz.

14-    Design Patternlerden faydalanın. Amerika’yı yeniden keşfetmeye gerek yok.Hem kodunuz sadeleşir hem de daha etkili ve anlaşılır bir koda sahip olursunuz.

15-    İlerde şöyle bir fonksiyon kullanabilirim deyip boşu boşuna fazladan bir fonksiyon implement etmeyin .Gereksiz hiçbir kod eklemeyin.

16-    Fonsiyon ve sınıf isimlerini anlaşılır isimler verin bırakın uzun olsun : GetUserIdByUsernameAndPassword();

17-    Bazı metodlar başka metodları tetiklemesi gerekiyorsa delegate’lerden faydalanın.

18-    Veritabanı uygulaması yapıyorsanız , çoğu işlemi veritabanına yıkmaya çalışın ; stored procedure , function , view , ..kullanın değiştimesi de böylece kolay olur.

19-    For yerine foreach , if else yerine switch , Arraylist yerine Generic List ,  tercih edin.

20-    Enumaration kullanın.

21-    Önce çalışan kodu yazın daha sonra hem anlaşılır hem de performanslı çalışan kodu yazın.

22-    Parçala-Böl –Yut : Bir problemi en küçük parçalarına kadar ayırın ve alt parçaları yaparak işleme başlayın , kağıt kalem kullanın. Metodların 30 satırı geçmemesine dikkat edin.

23-    Tekrarlayan kodları fark ettiğiniz an bu tekrarı yok etmeye çalışın

24-    Class diyagramından faydalanın. Diyagramda her şeyi daha net görebilirsiniz.

25-    Using kullanımını artır çünkü yaratılan nesneleri otomatik dispose eder veya kullanmasanda yaratılan nesneleri dispose et.Böylece bellek taşmalarını engelleyebiliriz.

26-    Namespace isimlerini kodun içinde yazmak yerine en üste using Namespace diyip kullanın

27-    String birleştirme işlemini StringBuilder ile yapın

28-    80 kolondan uzun kodları alt satıra geçirin.

29-    Kodlarınızı Regionlar ile bölün.

Unutmayın Compiler’ın anlayabileceği kodu herkes yazar ancak insanların anlayabileceği kodu ancak gerçek yazılımcılar yazabilir.

Nisan 13, 2009 Posted by | Yazılım | , , , | Yorum bırakın

The ‘Microsoft.Jet.OLEDB.4.0’ provider is not registered

Arkadaşlar ASP.NET  projemde excelden Oracle a import ve Access’e export işlemleri yaptırmıştım.Local’da herşey çok güzel bir şekilde çalışıyordu Fakat Windows Server 2003 x64 SP1 serverına projeyi publish ettiğimde sorun yaşadım ve aşağıdaki adımları izledim.

The ‘Microsoft.Jet.OLEDB.4.0’ provider is not registered on the local machine HATASI
SORUNUN KAYNAĞI:

– Bu hata Jet Oledb sistemde kurulu olmadığından veriyor veya bu provider 64 bit işletim sistemini desteklemediği için bu hatayı veriyor.’Microsoft.Jet.OLEDB.4.0′ yani Access ve Excel kaynaklarımıza 64 bit işletim sistemlerinde erişemiyoruz.

ÇÖZÜM ÖNERİLERİ

–        Office 2003 kur

–        Windows server 2003 ‘e bu programı kur.Mecbur değil WindowsServer2003-KB829558-ia64-ENU.exe

–        IIS da projenin Application Pools özelliklerinin advanced tabında Enable 32 bit applicationsu işaretle Yalnız IIS v7.0’da bu özellik var fakat IIS v.6.0 da tek bir projeye bu özelliği eklemek mümkün değil ve bir script yardımı ile bütün projeleri 32 bite çevirebiliriz

Başlat->Çalıştır->
cscript %SYSTEMDRIVE%inetpubadminscriptsadsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 1
ve ardından IIS’i yeniden başlatmak için :

Başlat->Çalıştır->
%SYSTEMROOT%Microsoft.NETFrameworkv2.0.50727aspnet_regiis.exe –i

 

http://support.microsoft.com/kb/894435 adresini incele

Benim projemi publish ettiğim serverda benimki ile birlikte birçok proje daha vardı bende 32 bit çevirmemden etkilenmesinler diye projemi IIS’ı 32 bite ayarlı olan bir servera yükledim ve eski serveımı bu servera yönlendirdim.Bunu da şu şekilde yaptım.

Birinci serverda sadece boş bir sayfayı publish ettim ve

<head runat=”server”>

<title>Logintitle>

<meta http-equiv=”refresh” content=”1; URL=http://172.28.161.28:81″>

head>

Bu kod sayfa çağrıldığında 1 sn sonra belirtilen IP adresine yönlenmesini sağladı.

Umarım yararlı olmuştur.

Nisan 6, 2009 Posted by | ASP.NET | , , , , , | Yorum bırakın

Devexpress export sorunu çözümü

Servera attığımız sitede devexpressin exportu çalışmıyorsa

ASP.NET web sitesine add referans deyip XtraRichEditör,XtraPrinting,XtraReport dll’lerini eklememiz lazım. Web config dosyasında da bu assemby’ler eklenmiş olacaktır

Server’da da bin klasörüne baktığımızda bu dll’ler mutlaka var olmalıdır

Nisan 2, 2009 Posted by | ASP.NET | , , | Yorum bırakın

Aspx formundan kod tarafına değer almak

Eğer bir değeri javascript ile formdan almak gerekiyorsa örneğin gridviewin bir cell’indeki değeri. Önce javascript fonksiyonu ile değeri bir hidden fielda yazdırıp kod tarafında bu hidden fielddan değeri alabiliriz.

 

<asp:HiddenField runat=”server” ID=”hdnNo” Value=”-1″ />


Javascript fonksiyonunu içeriği aşağıdaki gibi olmalıdır.

Var no = grid1.GetEditor(“KolonAdi”).GetValue().toString();

document.getElementById().value = no;

Nisan 2, 2009 Posted by | Javascript - Jquery | , | Yorum bırakın

ASP.NET Gridviewden tıklanan satırı alma

ASP.NET gridview’leri projelerimizde çok sıklıkla kullandığımız programcılar için vazgeçilmez kontrollerden bir tanesidir. Bu örnek uygulamada gridview’deki butona tıklanınca o satırda herhangi bir değeri nasıl alabileceğimizi anlatmaya çalışacağım
Öncelikle grdiviewimizin asp kodları aşağıdaki gibi olmalıdır.

asp:GridViewID=”grdDosyalar”runat=”server”AutoGenerateColumns=”False”SelectedRowStyle-BackColor=”Gold”

Font-Size=”Smaller”>

<Columns>

<asp:BoundFieldDataField=”Name”HeaderText=”Dosya Adı”/>

<asp:BoundFieldDataField=”Length”HeaderText=”Dosya Uzunluğu”/>

<asp:BoundFieldDataField=”Extension”HeaderText=”Uzantısı”/>

<asp:BoundFieldDataField=”CreationTime”HeaderText=”Oluşturulma Zamanı”DataFormatString=”{0:dd.MMMM.yy}”

HtmlEncode=”False”/>

<asp:BoundFieldDataField=”LastWriteTime”HeaderText=”Son Yazılma Zamanı”DataFormatString=”{0:dd.MMMM.yy}”

HtmlEncode=”False”/>

<asp:TemplateField>

<ItemTemplate>

<asp:ButtonID=”btnIndir”runat=”Server”OnClick=”btnIndir_Click”Text=”indir”/>

ItemTemplate>

asp:TemplateField>

Columns>

asp:GridView>
Burada bir template kolon yaratıp içerisine buton ekliyoruz. Ve asıl işimiz bundan sonra başlıyor. Butonun click olayında aşağıdaki gibi bir kodla tıklanan satırın herhangi bir kolonunu C# tarafında almamız  mümkün.

protectedvoid btnIndir_Click(object sender, EventArgs e)
{
Button Button1 = (Button)sender;
GridViewRow grdRow = (GridViewRow)Button1.Parent.Parent;
string strField1 = grdRow.Cells[0].Text;
}

İlk olarak sender nesnesinden bizim tıklamış olduğumuz buton geliyor ve biz içeride bir buton nesnesi yaratarak sender’ı daha anlamlı hale getiriyoruz. Daha sonra da button1’in parentının parentını bir gridviewrow nesnesine dönüştürerek ilgili satırı bu nesneye atamış oluyoruz.
Son satırda da sıfırıncı cellinin değerini artık alabiliyoruz.

İşte bu kadar kolay
Umaraım yararlı olmuştur.
Herkese iyi çalışmalar

Nisan 2, 2009 Posted by | ASP.NET | , , , , | Yorum bırakın