Etiketler: , | Kategoriler: Etkinlik, Sql Server Emrah Uslu | 10.11.2011 12:55

21 Ekim 2011 tarihinde yapılan Sql Server Öncüleri tanıtım toplantısında yaptığım Sql Server 2008 R2  Reporting Services Yenilikler sunumu. Buyrun :

Etiketler: | Kategoriler: Etkinlik Emrah Uslu | 10.11.2011 10:33

 

Globalleşen ve rekabetin arttığı günümüzde; İşletmeler, süreçlerini yönetmek için hızla gelişen teknolojiye ayak uydurmak ve bu teknolojiyi işletmelerine yansıtarak kaynaklarını verimli olarak kullanmak durumundadırlar. Üretim işletmelerinde maliyetleri düşürmenin en etkili yolu verimliliği arttırmaktır. Verimliliğin artışıyla, düzenli bir büyüme sağlayan kurumlar, yerel ölçüde kalmayıp, dış dünyaya açılarak rekabet edebilme yeteneği kazanacaklardır.

 

YALIN SOFTWARE, İşletmelere verimliliklerini arttırmaları yönünde önemli bir ölçüt olan üretim planlama alanında gelişen son bilgi teknolojileri ve maliyet düşürme yöntemleri hakkında bir bilgi platformu sağlamayı hedeflemektedir.

 

Seminerimizde siz değerli paydaşlarımızı da aramızda görmekten mutluluk duyacağız

 

       

Gündem

13:00-13:15 Açılış Konuşması

                    Ertan Yılmaz I Yalın Software

 

13:15-14:00 İleri Planlama ve Çizelgeleme

                    Doç. Dr Seda Özmutlu I Yöneylem Eğitim ve Danışmanlık

 

14:15-15:00 Akıllı Çizelgeleme ve Planlama Yazılım Örneği

                    Yağmur Melih Gürtunca I Yalın Software

 

15:15-16:00 Veri Tabanı Teknolojisinde Son Nokta : Sql Server 2012 

    Emrah Uslu I Microsoft Türkiye

 

16.11.2011 Çarşamba

Baia Otel

Yeni Yalova Yolu 9. Km Asmerkez yanı Osmangazi Bursa

                                       Seminere kayıt olmak için Lütfen Tıklayınız

 

                                          Rekabet Gücünüzü Arttırmak için düzenlediğimiz

                                       3. Seminerimiz

 

                                             Yalın Bilişim Yazılım Danışmanlık Hizm. Elk.

                                      San.Tic.Ltd.Şti

 

                                                 ULUTEK Teknoloji Geliştirme Bölgesi No:202 

                                      .Ü.Görükle Kampüsü Nilüfer Bursa

 

                                             Tel : 0224 280 84 55 Faks: 0224 280 84 57

 

                                              www.yalin.com.tr info@yalin.com.tr 

 

Etiketler: | Emrah Uslu | 09.11.2011 22:58

Nedir 4G?
4G genel olarak 3G’nin özelliklerini geliştirecek olan yeni nesil bir bağlantı teknolojisi olarak tanımlanabilir. Aslına bakılırsa 3G ile 4G arasında kullanıcı tarafında hız hariç pek de bir fark yaşanmayacak. 4G, kullanıcılara son derece hızlı mobil data trafiği sağlayacak.

Dünyanın ilk 4G testi Verizon tarafından 2009 yılında gerçekleştirildi. Boston ve Seattle arasında gerçekleştirilen testte; video, dosya indirme ve yükleme, internette gezinti, ses transferi, VoIP görüşmeler denendi. Günümüzde ise Amerika'da birkaç cihazla 4G teknolojisi başlatılmış durumda.

4G ne işimize yarayacak?
Olayı son kullanıcı bazına indirgediğimizde, 4G’nin mobil cihazlarda ADSL hızının yakalanmasını sağlayacağını söyleyebiliriz. Ayrıca altyapı yeterliliği ve kullanıcı sayısının artışı nedeniyle, bağlantı ücretleri düşecek. Dolayısıyla bu da, 4G ile sürekli mobil cihazımızla internete bağlı kalabileceğimiz anlamına geliyor.

4G’nin aktarım hızı, bir önceki bağlantı standartları olan 2G ve 3G’den oldukça fazla. 2G ile yani hala akıllı telefonlarımızda bulunan Edge ile 50 ile 80 Kbps arasında değişen bir hıza sahipken, bu değer 3G’de 1.4 Mbps’e kadar çıktı.

2G ile 3G arasındaki uçurum göz kamaştırıcı ancak 4G bize çok daha iyisini vadediyor. Ülkemiz ADSL kullanıcılarının çoğunun hala 1 Mbps internet bağlantısına sahip olduğunu göz önünde bulundurduğumuzda, 4G’nin sunacağı 100 Mbps’e kadar ulaşan bağlantı hızının devrim niteliğinde olacağı aşikar.

Yüksek aktarım hızlarıyla mobil internet deneyimi yaşamamıza olanak tanıyacak olan 4G; iş dünyasındaki birçok sürecin mobil cihazlara odaklanmasını ve her mobil kullanıcının bilgisayara ihtiyaç duymayacak imkanlara sahip olmasını sağlayacak.

Kaynak : Hürriyet Teknoloji

Etiketler: , | Kategoriler: .NET Emrah Uslu | 09.11.2011 20:57

Assembly Nedir?

Hangi .NET dilinin kullanıldığından bağımsız olarak .NET binary’leri bir dosya uzantısı alırlar: *.dll ya da *.exe. Burada dikkati çekilmesi gereken nokta bu binary’lerin işletim sistemine özel komutlar içermemesidir. Bunun yerine .NET binary’leri, platformdan bağımsız Common Intermediate Language (CIL) adındaki ara dili içerirler.

 Tüm .NET derleyicileri, kaynak kodu assembly içerisindeki CIL koduna derler.

IL kısaltması ile ilgili bir noktaya dikkat çekmek gerekiyor. Geliştirilme aşamasında IL’in resmi adı Microsoft Intermediate Language (MSIL) iken final sürümünde bu terim Common Intermediate Language (CIL) olarak değiştirildi. Dolayısıyla kaynaklarda geçen MSIL ve CIL aynı kavramı işaret eder. 

.NET ortamındaki bir programlama dilinin derleyicisi kullanılarak bir .dll ya da .exe oluşturulduğunda, bu bir assembly içerisine koyulur. Assembly, CIL kodu içerir ve bu kod, ihtiyaç duyulana kadar platforma özel bilgilere derlenmez.

Şunu da eklemek gerekir ki binary dosya (.exe ya da .dll uzantılı) ile assembly tektir ve aynı kavramlardır. Alt seviye bir programlama dili olan Assembly ile sadece isim benzerliği vardır. Ayrıca çalıştırılabilir kod (.exe) ve kütüphane kodu (.dll) aynı assembly yapısına sahiptir ve terim olarak her ikisi de assembly olarak çağrılır. Aralarındaki tek gerçek fark; çalıştırılabilir assembly (.exe) program için ana giriş noktası (Main metodu) içerirken, kütüphane assembly’si (.dll) bunu içermez.

Metadata ve Manifesto

Assembly, CIL dışında bir de metadata içerir. Tip metadata, binary içerisindeki her bir tipin ayırt edici özelliklerini tanımlar. Şöyle bir örnek vereyim: Mevcut evimizden başka bir eve taşınırken eşyaları kutulara koyarız. Eğer kutuların üzerine tek tek içerisinde neler olduğunu bir kağıda yazıp yapıştırırsak yeni evimizde açarken aradığımızı kolayca buluruz. Metadata, kutunun üzerindeki bu listedir ve assembly içerisindeki .dll ya da .exe’nin sahip olduğu tüm tipler hakkında bilgi içerir. Örneğin X adında bir sınıf varsa, tip metadası X sınıfının türediği sınıf, varsa hangi arayüzleri uyguladığı gibi ayrıntıları taşırken, X tipinin metotları, alanları vb. her bir üyesinin tüm tanımlamalarını içerir.

Bir assembly’de aynı zamanda kendisini tanımlayan bilgileri içeren assembly metadata bölümü bulunur. Assembly adı, versiyonu,kültür bilgisi, kısa bir açıklama, başka assembly’lere olan referanslar gibi bilgilerin tamamına assembly metadata denir ve manifesto adıyla assembly içerisinde yer alır. Bir assembly’nin assembly metadatası taşımasının arkasındaki gerçek, içerisindeki kodu çağıran uygulama ya da diğer assembly’lerin o assembly’yi nasıl kullanacaklarını öğrenmek için registry’ye ya da başka bir veri kaynağına başvurmalarına gerek kalmamasıdır.

Öyleyse bir assembly içerisindeki kaynak kodun CIL karşılığı, tip metadatası, manifesto bilgisi ve kaynaklar yer alır. Yandaki şekilde Bir.NET assembly’sinin 4 bileşeni bulunmaktadır.

Assembly’lerın kendi içeriklerini bilmeleri, çalışma zamanında bu bilgilerin elde edilip kullanılabileceği anlamına gelir ki, bu eklenti (plug-in) tabanlı programlama içerisinde önem arz eden bir konudur ve reflection (yansıma) olarak isimlendirilir. Visual Studio uygulama geliştirme ortamının intelli-sense özelliği, bu kavramdan faydalanarak çalışır.

Tek Dosyalı (Single-File) ve Çok Dosyalı (Multiple-File) Assembly

.NET ortamında geliştirilen uygulamalar varsayılan olarak tek bir assembly’den oluşurlar. Bir assembly tek bir .dll ya da tek bir .exe modülünden oluşuyorsa ona Single-File Assembly denir. Bu şekildeki tek-dosya assembly’ler gerekli bütün ortak ara dil yönergeleri (CIL), metadata ve manifesto bilgilerini benzersiz tek bir pakette tutar. Multi-File Assembly’ler ise birden fazla assembly’nin bir araya gelmesiyle oluşur ve bu durumda her birine modül adı verilir. Çok-dosyalı assembly oluşturulurken modüllerden bir tanesi (Birincil modül –primary module-) manifesto bilgisini içerir. Diğer modüller ise, modül seviyesinde kendi manifesto, CIL ve metadata bilgilerini taşımaya devam ederler. Bu bilgilerden anlaşılacağı gibi birincil modül manifestosu, diğer modüllere ne zaman başvurulacağı, modüller içerisindeki tipler ve diğer dosyalar (kaynaklar) gibi bilgileri sunar. Ayrıca tüm assembly’ler  farklı .NET dilleri kullanılarak yazılmış parçalar olabilir ve çok dosyalı assembly mimarisi ile bu uygulama parçaları tek bir assembly altında birleştirilerek kullanılabilir.

Private Assembly ve Shared Assembly

.NET ortamında assembly’ler private (özel) ve shared (paylaşılan) olmak üzere ikiye ayrılırlar:

Private (özel) assembly’ler çalıştırılabilmeleri için, geliştirilen uygulama ile birlikte aynı klasörde yer almalıdır. Bu yolla assembly’nin sadece o uygulama ile birlikte çalışması amaçlanır. Varsayılan olarak oluşturulan assembly’ler private’dır. Çalışma zamanı, private assembly’lerin diğer uygulamalar tarafından kullanılmayacağını garanti eder; çünkü bir uygulama, private assembly’yi sadece çalıştırılabilir dosyanın (.exe) çağrıldığı dizin ya da bir alt dizini ile aynı dizinden çağırabilir.

Aynı makinede çalışan birden çok .NET uygulamasının ortak bir dizinde bulunması senaryosunu düşündüğümüzde dahi bir uygulamanın yanlışlıkla başka bir uygulamanın kullandığı private assembly’lerin üzerinde modifiye yapması ya da kendi assembly’si yerine bir diğerini çağırması gibi riskler söz konusu değildir. Private assembly’lerin sadece kendisini kullanan uygulama tarafından erişilmesi çok fazla esneklik sağlar. Örneğin bir uygulama başka bir uygulamanın kullandığı assembly’nin yeni versiyonunu kullanırken diğer uygulama eski versiyonla çalışmaya devam edebilir.

Private assembly’nin bu özelliği ile dağıtılması da çok kolaydır. Dizin sisteminde uygun klasöre uygun dosya ya da dosyaların yerleştirilmesi yeterlidir (Yapılması gereken registry girişi vb. ayrıntılar yoktur).

Shared (paylaşılan) assembly’ler ile aynı makinedeki bütün uygulamaların kullanabilmesi için ortak bir kütüphane oluşturmak amaçlanır. Öyleyse aynı bilgisayardaki shared assembly’lere diğer uygulamalar erişebileceği için aşağıdaki risklere karşı daha dikkatli davranılmalıdır:

  • İsim çakışmaları: X uygulamasının kullandığı shared assembly’deki tiplerin isimleri, Y uygulamasının kullandığı başka bir shared assembly’dekilerle aynı olabilir. Client tarafındaki kodlar teorik olarak aynı anda her iki assembly’ye de erişebildiği için,bu büyük bir problem olabilir.
  • Versiyon problemi: Bir assembly’nin farklı bir versiyonu üzerine kaydedilebilir ve böylece yeni versiyon, varolan bazı kodlarla uyuşmazlık yaşayabilir.

Kullanıma açık assembly’ler dosya sisteminde özel bir alt-dizine  yerleştirilir, bu dizin Global Assembly Cache’dir ve assembly’nin özel olarak bu cache’e atılması gereklidir. Erişim adına oluşabilecek yukarıda belirtilen riskleri önlemek için  shared assembly’lere özel şifre kriptografisine sahip bir isim verilir. Bu isim strong name olarak bilinir, o assembly’nin tekliğini garanti eder ve assembly’yi referans etmek isteyen uygulamalar tarafından bilinmesi gerekir.

Global Assembly Cache’in Windows işletim sistemli makinelerdeki varsayılan yolu şudur: C:\WINDOWS\assembly

Obfuscator Kavramı

.NET mimarisi kullanılarak geliştirilen assembly’lerin CIL içerikleri ILDASM (Intermadite Language Disassembler) aracı ile görülebilir, pek çok faydalı bilgiye erişilebilir. Bu uygulama geliştirici için avantaj olsa da binary dosyalara ulaşan birisi reverse – engineering işlemleri ile CIL kodunu herhangi bir .NET diline çevirebileceği için dezavantaj da yaratabilir. Kötü niyetli kullanıcılar uygulamadaki varsa güvenlik sorunlarını bularak bunlardan faydalanabilir ya da kullanılan orijinal fikirleri çalabilir. Bu noktada reverse-engineering ile okunduğunda kaynak kodun anlamsız olarak görüntülenmesini hedef alan obfuscation metodu geliştirilmiştir. Bu işi yapan araca da obfuscator denilmektedir.

Obfuscation, uygulama kodlarının çalışmasını etkilemeden kaynak kodları saklamaktır ve kodlara değil .NET assembly’lerine uygulanan bir metottur. Bu metot içerisinde kullanılan tekniklerden bazıları şunlardır: Metadata içerisindeki adları anlamsız olarak yeniden isimlendirmek, çalışma zamanının kullanmadığı metadata bilgilerini silmek, string şifreleme, kontrol deyimlerinin karıştırılması vb.

Ortak Ara Dilin (Common Intermediate Language) Rolü

.NET assembly’leri hakkında elde edilen bilgiler ışığında platform ortak ara dilinin (CIL) rolü biraz daha ayrıntılı incelenebilir. CIL, herhangi bir platform-özel direktif setinin yerine geçmiştir. Seçilen .NET tabanlı dilin hangisi olduğundan bağımsız, ilgili derleyici CIL direktifleri üretir.

C# derleyicisi (csc.exe) ile bir kaynak kod dosyası derlendiğinde;

  • CIL direktifleri
  • Manifest  bilgisi
  • Uygulamadaki sınıfların, yapıların vb. her ayrıntısını tanımlayan metadata bilgisi 

içeren tek dosyalı (single-file) bir *.exe assembly elde edilir. Bu assembly ildasm.exe ile açılırsa yazılan kodların CIL kullanılarak temsil edildiği görülür. (Visual Studio Tools altındaki Visual Studio Command Prompt (2010)’a ildasm.exe yazılarak bu araç açılabilir ve ilgili .dll ya da .exe’nin yolu gösterilir):

Bu metot için üretilen CIL kodundan pek bir şey anlaşılmaması çok önemli değildir. Burada üzerinde durulması gereken nokta şu ki; C# derleyicisi işletim sistemine özel kodlar değil, CIL üretir. Tekrarlamakta fayda var, bu özellik bütün .NET tabanlı derleyiciler için geçerlidir. Bunu gösterebilmek için aynı uygulamayı C# yerine Visual Basic .NET (VB.NET) dili ile yazıp karşılaştırabilirsiniz.

CIL’in Yararları

Bu noktada kaynak kodun platforma özel komut setine (makine diline) değil de CIL’e derlenmesinden tam olarak ne elde edildiği merak edilebilir. Bunun cevabı öncelikle dil entegrasyonudur. Bir önceki konuda görüldüğü gibi bütün .NET tabanlı derleyiciler neredeyse aynı CIL kodunu üretiyorlar. Dolayısıyla bütün diller iyi tanımlanmış bu binary ortamda aralarında anlaşabileceklerdir. Bunlara aşağıdaki örnekler verilebilir:

  • Bir dilde yazılmış sınıf, başka dilde yazılmış bir sınıfın üyelerini kalıtım yoluyla kullanabilir.
  • Bir sınıf hangi dilde geliştirildiğinden bağımsız olarak başka bir sınıf örneğini içerebilir.
  • Nesneler ya da nesne referansları metotlar arasında parametre olarak geçirilebilir.
  • Farklı dillerde yazılmış metotları çağırırken hata ayıklayıcı ile metot çağrımları arasında gezilebilir; yani farklı dillerdeki kaynak kodları arasında adım adım ilerlenebilir.

Ayrıca CIL’in platformdan bağımsız olmasından yola çıkarak .NET Framework’ün de platformdan bağımsız olduğunu söyleyebiliriz. (Tek bir kod bloğunun sayısız işletim sistemi üzerinde çalışabilmesi) Bu platform-bağımsızlık Windows işletim sistemlerinde geçerli olmakla beraber bir-çok Windows olmayan platformda deneme aşamasında da olsa uygulamaları mevcuttur. (Mono ve Portable.NET projeleri) Özet olarak CIL’in getirdiklerine bakılınca işin en güzel yanı .NET’in yazılım geliştiriciye hangi dil ile bunu yapmak istediği seçeneğini sunmasıdır.

CIL’in Platforma Özel Koda Derlenmesi

Herhangi bir dilde yazılmış uygulamanın bir bilgisayarda çalışması için mutlaka bilgisayarın anlayacağı komutlara dönüştürülmesi gereklidir. .NET assembly’leri platforma özel kod yerine CIL içerdiğinden dolayı kullanılmadan önce makine koduna derlenmelidirler. CIL’i uygulamanın çalıştığı makine için anlamlı talimatlara dönüştüren derleyiciye just-in-time compiler (tam zamanında derleyici) adı verilir ve aynı zamanda jitter olarak da anılır. .NET çalışma zamanı ortamı, her biri üzerinde çalıştığı işletim sistemi için optimize edilmiş, her CPU için bir JIT derleyicisi kullanır ve bu optimizasyonu otomatik yapar.

Örneğin akıllı telefonlarda yayınlanmak üzere bir .NET uygulaması geliştiriliyorsa, düşük bellek ortamında çalışması için uygun jitter kullanılır. Diğer yandan geliştirilen assembly bir yedek sunucuda dağıtılacaksa (bellek çoğu zaman sorun olmayacaktır) jitter yüksek bellekli ortamda işlevini yerine getirmesi için optimize edilecektir. Bu yolla yazılım geliştiriciler, etkin bir şekilde “tam-zamanında-derlenecek” ve farklı mimariler kullanılarak çalıştırılacak kod blokları yazabilirler.

Bütün bunlara ek olarak kullanılan jitter ile CIL komutları uygun makine kodlarına derlendiğinde, sonuçlar uygun bir yolla hedef işletim sisteminin belleğinde saklanacaktır. Buna göre bir metoda çağrı yapılırsa, ilk çağrıda CIL komutları platforma özel kodlara derlenecek ve sonraki kullanımlar için hafızada tutulacaktır. Dolayısıyla o metodun ikinci çağrılışında CIL’i yeniden derlemeye gerek kalmayacaktır.