30 Ocak 2013 Çarşamba

Düzenli İfadeler (Regular Expressions) ile İleriye ve Geriye Bakma

Düzenli ifadelerde ileriye ve geriye bakma kabiliyeti çok lazım olan şeylerden birisi. Nasıl yapıldığını anlatan gördüğüm en iyi site burası.

Buradaki sorudan da anlaşıldığı gibi ileri ve geri bakma kabiliyeti bi-directional iterator kullanılmasını gerektiriyor.

İleriye Bakma
Peki bu yetenek neden lazım ? Şöyle bir örnek vereyim. Diyelim ki virgül ile biten sayıları arıyoruz, ancak virgül karakterinin arama sonucunda dönmesini istemiyoruz. Eğer ileri bakma yeteneği olmasaydı bu aramayı yapamazdık. Bu gibi durumlar için düzenli ifadelerdeki positive lookahead, negative lookahead, positive lookbehind ve negative lookbehind kabiliyeti kullanılıyor. Bu yeteneklere hepsine kısaca lookaround deniyor.

Lookahead için ? işareti, lookbehind içinse ?< işareti ile başlayan düzenli ifadeler kullanılır.

Positive Lookahead : İleriye bakarak verilen düzenli ifadeyle bittiğinin kontrol
Positive Lookahead yazısına taşıdım.

Negative Lookahead : İleriye bakarak verilen düzenli ifadeyle bitmediğinin kontrolü
Düzenli ifadeye (?! ile başlayan bir ek yapılır. RegEx to extract the first 6 to 10 digit number, excluding 8 digit numbers  örneğinde
ifadesi için negative lookahead kullanılmış.



Geriye Bakma

Negative LookBehind - Geriye bakarak verilen düzenli ifade ile başlamadığının kontrolü
Düzenli ifadeye  (?<! ile başlayan bir ek yapılır. How do I properly use negative lookahead for this Java regex? sorusundan aldığım örnek aşağıda.
Bir başka örnek ise burada.
Bu örnekte 3 haneli bir sayının &# karakterleri ve alfanümerik bir metin ile başlamadığı kontrol edilir.

Bir diğer örnekte ise  "-" karakteri başlamayan boşluk karakteri ayrılıyor.


Positive LookBehind
Positive Lookbehind yazısına taşıdım

29 Ocak 2013 Salı

Spring ve DAO

Spring ve DAO

Spring ile Hibernate veya JDBC kullanan DAO sınıfları yazmak mümkün.Aşağıdaki şekilde kırmızı çerçeve içinde DAOSupport sınıfından türeyen HibernateDaoSupport ve JdbcDaoSupport sınıfları görülebilir.


DAO ve Repository Arasındaki Fark Nedir
Yukarıdaki sınıf hiyerarşisinde de görüldüğü gibi sınıflarımız xxxDaoSupport kelimesi ile biten sınıflardan türemesine rağmen,  @Repository anotasonu ile işaretleniyorlar. Repository ile DAO arasındaki fark nedir ?
DAO aynı zamanda Table Data Gateway olarak ta adlandırılıyor. Repository, Domain Modelini dönen nesne. Çoğunlukla DAO ile Repository aynı şeyler. Farklı oldukları durumu açıklayan bir yazı burada.

JDBCDaoSupport

JdbcDaoSupport sınıfı da kendi içinde bir hiyerarşiye sahip. Aşağıdaki şekilde bunun bir örneğini görmek mümkün. Örneğin NamedParameterJdbcDaoSupport sıfını buna bir örnek olarak verilebilir.


Aşağıda NamedParameterJdbcDaoSupport sınıfını biraz daha detaylı gösteren bir şekil var.


DAO ve Template Kullanımı

Spring ile gelen tüm sınıflarda template tasarım örüntüsü kullanılıyor. Veritabanına erişim için kullanılan kodlar bir template içinde gizli. Aşağıdaki şekil bunu gösteriyor.


DAO ve Exception
 
DAO sınıflarını @Repository anotasonu ile kullanırsak alt tarafta kullanılan veritabanı erişimi kütüphanelerinden atılabilecek exceptionlar Spring tarafından belli bir hiyerarşi altında gruplanırlar. Böylece veritabanı kütüphanesinden daha bağımsız kod geliştirmek mümkün olur. Aşağıda Spring tarafından kullanılan exception hiyerarşisini gösteren bir şekil bulabilirsiniz.


/dev/zero

/dev/zero bir device driver'mı yoksa özel bir dosyamı ben de bilmiyorum. Ancak muhtemelen bir device driver olduğunu düşünüyorum. Örnek:


14 Ocak 2013 Pazartesi

444 özel hizmet numarası nedir ?

444 Özel Hizmet Numarası Nedir?
444 ile başlayan özel hizmet numaraları Bilgi Teknolojileri ve İletişim Kurumu (BTİK) bünyesinde bulunan Telekominikasyon İletişim Başkanlığı tarafından Türk Telekom'a tahsis edilen numara bloğudur.

Bu blok içinde bulunan 7 haneli (örneğin 444 0 333) numaralar firmalar tarafından çağrı merkezlerine yönlendirme için kullanılmaktadır. Bu tür çağrı merkezleri aranınca hem arayan hem de aranan ücretlendiriliyor. Aranan yani çağrı merkezi de ücretlendirildiği için 444'lü tarife seçerken dikkatli olmak gerekiyor.


0850 İle Başlayan Özel Hizmet Numarası Nedir?
Türk Telekom ile çalışmak istemeyen firmalar 0850 ile başlayan özel hizmet numaraları alıyorlar.
Ancak 085023,  085035, 085040 ile başlayan numaralar halen Türk Telekom'a ait bloklar.

Eğer sabit telefondan  Türk Telekom'a ait olmayan 0850'li bir numara aranırsa faturada Sabit Telefon Hizmeti Şehirler Arası olarak görünüyor.

Eğer Türk Telekom'a ait olan 0850'li bir numara aranırsa faturada Sabit Telefon Hizmeti Şehir İçi olarak görünüyor.

0800 İle Başlayan Özel Hizmet Numarası Nedir?
Bu numaralar da çağrı merkezleri tarafından kullanılıyor ancak arayan için bedava, aranan içinse ücretli.


3 Haneli Özel Servis Numarası Nedir?
Bu numaralardan 118 ile başlamayan numaralar iki kısmı ayrılıyorlar. İlki ücretsiz olan ve kamu hizmeti için kullanılan numaralar. Örneğin 155 Polis İmdat, 158 Sahil Güvenlik gibi.

Diğer numaralarda ise ücret alınıyor. Örneğin 186 Alo Elektrik gibi.

12 Ocak 2013 Cumartesi

Türk Telekom ve Next Generation Network (NGN)

Next Generation Network (NGN) fikri iletişim şebekesinin tamamen değiştirilerek, IP tabanlı paket teknolojisine dönüştürülmesine dayanıyor.
Sadece dönüşüm fikrini göstermesi açısından aşağıdaki şekli buradan aldım ve ekledim.

Türk Telekom NGN şebekesine dönüşüm çalışmasını 2010 senesinde başlatmış durumda.

Dijital Çoklu Hat Nedir?
ISDN olarak kısaltılan bu teknoloji Türk Telekom tarafından ISDN BRI ve ISDN PRI olarak iki şekilde satılmaktadır. ISDN ve PSTN arasındaki farkı görmek için What is a difference between pstn and isdn? sorusuna bakılabilir.

ISDN BRI (Basic Rate Interface) birleştirilmiş iki tane telefon hattına benzer ve aylık ücreti de normal PSTN hattın iki katıdır.

ISDN PRI (Primary Rate Interface) ise birleştirilmiş 30 tane tane telefon hattına benzer ve aylık ücreti de normal PSTN hattın iki katıdır.

Direct Dial Inwards Nedir ?
ISDN PRI teknolojisi ile Direct Dial Inwards (DDI) numaralar almak mümkün. DDI aynı zamanda Direct Inward Dialing olarak ta biliniyor.

Satın alınan ISDN hattının kapasitesinden (örneğin 30 hat) daha fazla  telefon numarası müşteriye verilir. Müşteri herbir numara için (beher numara) için belli bir ücret öder.

8 Ocak 2013 Salı

TM Forum

Geleneksel Telco Mimarisi
Geleneksel olarak Telco mimarisi iki parçadan oluşuyor gibi düşünülebilir. Bunlar
1. Business Support Systems
2. Operations Support Systems
Açıklaması şöyle
The traditional telco landscape is separated into OSS (Operations Support Systems), BSS (Business Support Systems), and OSS-BSS-Integration.
Business Support Systems Nedir
Açıklaması şöyle.
BSS deals with customer relationship management (CRM) and processes, such as taking orders, processing bills, and collecting payments.
Bazı BSS sistemleri şöyle
- CRM
- Service Desk
- ERP/Billing

Operations Support Systems Nedir?
Açıklaması şöyle.
OSS tracks network inventory, assets, and provisioning of services.
Bazı OSS sistemleri şöyle
- Service Provisioning
- Service Level Management
- Performance Management
- Resource Inventory
- Fault/Event Management
- Network Management System
- Activation
- Element Management System

TM Forum
TM Forum bilgi, telekom, ve eğlence sektöründeki firmaların bir araya gelerek oluşturdukları bir organizasyon. Bu organizasyonun amacı üyelerine nasıl daha iyi hizmet verebilecekleri konusunda yardımcı olmak.

Bu kapsamda organizasyonun ortaya koyduğu bazı çatı standartları var. Bu standartlardan birisi ise Frameworkx. Frameworkx aslında bir standartlar bütünü. Frameworkx kapsamında bulunan standartlar şöyle sıralanabilir. Standartlar kuşbakışı seviyeden beraber çalışabilirliği sağlayan alçak seviyeye doğru sıralanmış.
  1. enhanced Telecom Operations Map (eTOM).  Burada eTOM hakkında yazılmış bir master tezi bulabilirsiniz. eTOM , Telecom Operations MAP (TOM) temel alınarak geliştirilmiş bir doküman.
  2. Shared Information Data (SID)
  3. Telecom Application Map (TAM)
  4. Technology Neutral Architecture (TNA)
Telekom sektörüne yazılım geliştiren firmalar bu standartlar ile uyumlu yazılım geliştirmeye çalışıyorlar. Böylece değişik firmalar tarafından üretilen yazılımlar kavramsal olarak örtüşüyorlar.

Enhanced Telecom Operations Map (eTOM)
Bu dokümanda bir Telekom firmasında olması gereken örnek faaliyet alanları listeleniyor. Firmada eksik olan bir faaliyet alanı varsa dokümana bakılarak tespit edilebilir.

eTOM dokümanında süreçlere isim ve numara verildikten sonra Addendum D dokümanında süreçler kabaca açıklanıp şekilsel olarak gösteriliyorlar.


Telecom Application Map (TAM)
Bu dokümanda eTOM ile tanımlanan faaliyet alanlarının/süreçlerin uygulama bileşenleri olarak nasıl tanımlanacağı gösteriliyor.

Burada dikkat edilmesi gereken nokta TAM bir firmada olması gereken bir işlevi gösterdiği halde bu işlevin kaç tane uygulama tarafından, nasıl ve hangi mimari ile karşılanması gerektiğini söylemez. TAM ile uyumlu olduğunu iddia eden iki ayrı firma apayrı mimariler kullanarak bu hedefe ulaşmış olabilirler.

TAM ile uygulama mimarisi arasındaki farkı daha iyi anlatan bir şekli burada buldum.


Yukarıdaki şekilde de görüldüğü gibi iş akışları eTOM ile başlıyor. Akış boyunca gönderilen veri SID ile tanımlanıyor. Daha sonra TAM ile akışın ve verinin hangi işlevsel gruplara denk geldiği görülüyor. En altta bulunan Operasyonel Sistemler ise uygulama yazılımları, kullanılan ara katman, veritabanı gibi sistemler.

Shared Information/Data Model (SID)
SID ile Telekom firmasında kullanılan veri modeli tanımlanıyor. Belli bir alanın analizini yapmak ve modeli çıkartmak maliyetli bir iş. SID bize yarı bitmiş bir model sunuyor. Dokümanda binlerce sınıf var. Sınıflar UML ile gösteriliyor. Örnek burada

Product Catalogue
Product Catalogue bir firmanın sattığı ürünlerin bilgilerini içeriyor. Katalog içinde Product Offering'ler var. Örneğin mail ve mailPlus isimli iki teklif olabilir. Product Offering satış işlemi gerçekleşince Product haline geliyor.

Her teklif şablon olarak bir Product Specification kullanıyor. Product Specification aslında kompozit bir yapıya sahip ve AtomicProductSpecification tanımlamalarından oluşuyor.

Product Specification Customer Facing Service sınıfları ile ilişkililer.Customer Facing Service müşterinin satın aldığını bildiği servisler. Tabiki her serviste olduğu gibi  Customer Facing Service , Customer Facing Services Spec. şablonundan oluşuyor.

Customer Facing Service'ler ise Resource Facing Services direkt olarak müşteriyi ilgilendirmeyen ancak bir CFS'in işlevsel olabilmesi için gereken fiziksel kaynakları sağlayan servis. Örneğin santralde bir numaranın tanımlanması, bir merkezde diskin ayrılması vs. gibi kaynakları ilgilendiren servisler. Yani altyapısal servisler. Tabiki her serviste olduğu gibi Resource Facing Services , Resource Facing Services Spec. şablonundan oluşuyor. Kaynaklar da kendi aralarında Logical ve Physical olarak tanımlanabiliyorlar.


    2 Ocak 2013 Çarşamba

    İş Zekası

    Aşağıda iş zekası ile ilgili aldığım notlar var.

    Fact Table
    Türkçesi Olgu Tablosu. Fact Table genel bilgilerinin tutulduğu ,tarihsel derinliği olan ve milyonlarca kayıt sayısına sahip olabilecek tablodur.

    Dimension
    İngilizcede "By X" içeren cümleler Dimension tablosudur. Dimension tablosundaki tek bir satır, Fact Table'daki n tane satır ile eşleşir. Eşleştirme için Surrogate Key kullanılır. Surrogate Key ile ilgili olarak Hibernate ile Birincil Anahtar ve GeneratedValue kullanımı başlıklı yazıya bakabilirsiniz.