Openldap Yeni Object ve Attribute Ekleme

Php Ldap Admin yönetici panelinde hali hazırda bulunan object ve attribute schema’ları bazen yeterli gelmeyebilir. Kendi object ve attribute’lerimizi oluşturmak zorunda kalabiliriz. Bu durumda yapacağımız değişiklikleri /etc/openldap/schema klasöründe yapmalıyız. Örneğin birkaç attribute’ü olan bir object oluşturmak için aşağıdaki kodları kullanabiliriz.

/etc/openldap/schema/newobject_attributes.schema
objectClass ( 2.1.6.100               #burası her farklı object ve attribute için tekil olmalı.
NAME ‘new_object’                      #objenin ismi
DESC ‘info about new_object’     #obje hakkında bilgi
SUP inetOrgPerson                      #objenin hangi objenin mirası olduğu(değişebilir)
STRUCTURAL
MAY ( attribute_1 $  )                     #objenin hangi attribute’leri içerdiği bilgisi
)

#aynı dosya içerisinde objenin içerdiği attribute’leri tanımlıyoruz.

attributetype ( 2.1.6.101
NAME ‘attribute_1’
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{1024} )   #attribute’ün hangi bilgiyi tutacağına  #göre burası değişebilir. php ldap admin’den uygun syntax seçilebilir.

Bu dosyayı kaydettikten sonra /etc/openldap/slapd.conf konfigürasyon dosyasına aşağıdaki satırı uygun biçimde eklemeliyiz.

include /etc/openldap/schema/newobject_attributes.schema

Bu değişikliklerden sonra ldap beğeni satın al sunucusunu restart ediyoruz.

service ldap restart

Yapılan işlemlerden sonra Php Ldap Admin’den mail’lere new_object adında oluşturduğumuz ve attribute_1 içeren object’ler ekleyebiliriz.

Kaynak : http://fosshelp.blogspot.com/2010/09/openldap-add-new-attributetype.html

Görüntü sürücüsü yanıt vermeyi kesti ve bu durumdan kurtuldu HATASI

Bilgisayarımın anakartını değiştirdiğimden beri bellli aralıklarla bilgisayar takılıyor ve görüntü sürücüsü yanıt vermeyi kesti ve bu durumdan kurtuldu hatasını alıyordum. Oyun açmak imkansız hale gelmişti. Aklıma ilk olarak BIOS geldi. Bilindiği gibi BIOS anakarta hükmedebilmemizi ve diğer donanımlarla ortak çalışabilmesini sağlar. Anakartı değiştirince bu işlemin de gerekli olduğu mantıklı geldi. Bu yüzden bilgisayar ve işletim sistemime uygun güncel BIOS güncellemesini indirerek bilgisayarıma kurdum. Sorunum halloldu.

Karekod nedir? (QR Code) – 2 Boyutlu Kod

Bir kaç yıl önce bir konferansta tanıştığım bu barkodlama sistemi ile ilgili biraz araştırma yapmak istedim. Karekod iki boyutlu kodlama çeşitlerinden biridir. Peki başka hangi çeşitleri var bu iki boyutlu kodlamanın derseniz; Karekodun (QR) yanına Data Matrix, Aztec Code vs.. gibi kodlama çeşitlerini de ekleyebiliriz. Karekod ismini Quick Response’un baş harflerinden alıyor. Quick Response, hızlı tepki anlamına geliyor, fakat görüldüğü üzere Türkçe’ye çevrilmiş haliyle anlamı arasında alaka yok. (: Fakat bazı çeviriler gerçek anlamında daha iyi oturur ya bazı kelimelere, işte QR kodun karekod olarak çevrilmesi de sanki çok iyi oturmuş.
karekodYandaki resim bir karekod örneği.   Resimde görülen  karekod siyah ve beyaz çeşitli desenlerden oluşuyor. İlk karekod örnekleri sadece siyah ve beyaz renklerden oluşurken farklı renkler içeren yeni karekod örnekleri de vardır. Yazının başında karekodun bir barkod çeşidi olduğunu söylemiştik. Yani içerisinde bilgiler içeriyor. Örneğin yandaki şekilde benim twitter adresimin linki saklı. Karekod okuyuculu bir mobil cihaz ile bu resim okutulduğunda içerisindeki saklı link belirlenecek ve bir tuş ile siteye erişim sağlayabileceksiniz. Karekodlar yandaki örnekte olduğu gibi internet adresleri içerebilmelerinin yanısıra text, coğrafi konum bilgisi, e-mail adresi, sms, mms vs. gibi bilgileri de içerebilirler. Karekod oluşturmak için birçok site mevcuttur.

(Örn: http://keremerkan.net/qr-code-and-2d-code-generator) Bu karekodların kullanılabilmesi için ise kameralı bir mobil cihazımızın ve cihazınıza uygun bir karekod okuyucu programın cihazımızda yüklü olması yeterlidir. Mobil cihazların kullanımının artması karekodların kullanımını da artırmıştır. Ayrıca son zamanlarda eczanelerde de ilaçların üzerinde karekod bulunması zorunlu hale gelmiştir. Böylece ilaç hakkında detaylı bilgi küçük bir alanda saklanabilecektir. Son olarak aşağıdaki karekodun içerdiği linki takip ettiğiniz de ise ‘Bu adamı takip edin.’ şeklinde bir twit atmış olabilirsiniz. 🙂qrcode.nuh

Bir Bilgisayar Mühendisi Gözüyle İnsan

Her insanın olaylara bakış açısı farklıdır. Yada şöyle diyelim; bir resim koyalım ortaya ve onlarca kişiye gösterelim. Onlarca farklı ayrıntı, farklı fikir çıkacaktır meydana. Bir anlamda beyin fırtınası da diyebiliriz.

Bu düşünceyle bu saatte insanı resmettim gözümde. Gördüklerimi kendimce yorumladım ve sonra n+1.kez şükrettim. :p Peki ne mi gördüm? Şöyle ki; İnsan hayal edemediğim kadar büyük bir sabit belleğe sahip bir bilgisayar sanki. Sanal belleği de bir o kadar geniş. Veri okuma yazma hızı muhteşem. Nasıl bir arama algoritması bu? Nasıl da buluyor yıllar öncesinden bir hatırayı. Hem bu koca bilgisayarı güncellemek için yaşamayı sürdürmek yetiyor. :p Hem bu bilgisayar sadece mantıksal ve aritmetik işlemleri yapmıyor, bunun yanı sıra vicdani ve duygusal işlemleri de yapıyor. Nasıl bir işletim sistemi bu yahu? Nasıl bir kudrete sahip bu bilgisayarı yapan? Hem sonra yapay zekada kullanmıyor, herkesçe model alınan doğal zeka direk. Tüm algoritmalar yaşarken tecrübeyle yükleniyor içerisine. Nasıl bir donanım sahi bu? Kayıt cihazı, kamerası, sensörü hepsi dahili, yaratılıştan mevcut. Yıllar geçtikçe zamana uyum sağlıyor hem. Virüsleri de var bu bilgisayarın, ateş tabanlı varlığın derleyicisinde oluşturulmuş. Tabi antivirüsü de kendisinde mevcut. Güç kaynağıda kesilmiyor, son nefes gelmedikçe. Peki yok mu bu donanım ve yazılımın telif hakkı? Var tabi ki, şükretmek lazım O’na.

İnsanın mesleği meğer bu derece etkiliyormuş bakış açısını. Algıda seçicilik bir anlamda. Fakat insanın mesleği ne olursa olsun, dünyaya nereden bakarsa baksın, ‘O’ her yerde. Yalnızca bakmasını bilmek gerekiyor. Yapmamız gereken sadece ve sadece hakkıyla şükretmek.

15 Aralık 2008 – 23:15

Expression Web 4 Sunucu Meşgul Hatası

expressionstudio-hata

Expression Web 4’ü açtığımda yandaki hatayla karşılaşıyordum. Yeniden Dene butonuna bastığımda hata tekrar geliyor. Geçiş Yap butonunda ise başlat menüsü açılıyordu. Dolayısıyla program kitleniyor ve o şekilde bekliyor. Birkaç dakika sonrasında programda her hangi bir yere tıkladığımda hata ekranı kapanıyor. Herşey normale dönüyordu. Programı her açışımda dakikalarca beklemek sinir etmeye başlamıştı. Bir türlü hangi programın buna sebep olduğunu bulamadım. Ta ki Expression Web 4 Service Pack 1’in çıktığını duyana kadar. Service Pack belki bu aptal soruna çare olabilir diye hemen indirip kurdum. Şu ana kadar bir çok kez denememe karşın hata ile karşılaşmadım. Sanırım sorun hallolmuş gibi. Bu problemle karşılacak olursanız çözüm için Service Pack 1 paketini denemenizi tavsiye ederim.

Ayrıca Expression Web 4 Service Pack 1 paketi aşağıdaki yenilikler ve destekleri de içermektedir.

  • HTML 5
  • CSS 3
  • PHP 5
  • IE 6-9 , Mozilla , Chrome ve Safari Mac için SuperPreview desteği

 

Expression Web 4 Service Pack 1 paketini bağlantıdan indirebilirsiniz.

Johnson Algoritması–En Kısa Yol Problemi (The Shortest Path Problem)

En Kısa Yol Problemi’nden (The Shortest Path Problem) daha önce bahsetmiştim. Bu yazımda bu problemi çözmek için kullanılan algoritmalardan kısaca bahsedip, Johnson Algoritması’nın üzerinde duracağım. En Kısa Yol Problemi için üretilen algoritmaların bazıları şunlardır;

  • Djikstra Algoritması
  • Bellman Ford Algoritması
  • Floyd – Warshall Algoritması
  • Johnson Algoritması
  • A* Search Algoritması
  • Dinitz Algoritması
  • Tarjan Algoritması
  • GOR Algoritması
  • Dial Algoritması

Algoritmalardan bazılarına kısaca göz atacak olursak;

  • Dijkstra Algoritması: Single Source, Single Pair ve Single Destination problemlerini çözmek için kullanılır. Döngüye girme ihtimalinden dolayı negatif ağırlıklı bağlantıları kabul etmez. Basit bir algoritmadır. Buna karşı performansı yüksektir.
  • Bellman Ford Algoritması: Single Source problemlerini kenar ağırlıkları negatif olduğu durumlarda da çözebilmektedir.
  • A* Search Algoritması: İki nokta arasındaki en kısa yolu aramayı hızlandırmak için sezgisel yöntemler kullanarak çözüm arar.
  • Floyd – Warshall Algoritması : All pairs probleminin çözümünde kullanılır.
  • Johnson Algoritması : Floyd Warshall Algoritması’ndaki gibi all pairs problemini çözmeye yarar. Sparse(dağınık) ve yönlü graflar için kullanılan bir algoritmadır. Sparse graflarda Floyd-Warshall’dan daha hızlı çalışır. Daha yoğun grafiklerde daha hızlı çalışabilir.En önemli özelliği negatif kenarlar içeren graflar için çözüm sunar.

Johnson Algoritması (Johnson’s Algorithm)

1977 yılında Donald B. Johnson tarafından geliştirilmiştir. Bellman Ford, Reweighting ve Dijkstra Algoritması tabanlı, All pairs problemini çözmek için kullanılan bir algoritmadır. Sparse(dağınık) ve directed(yönlü) graflar için kullanılan güzel bir çözüm yoludur. Bağlantıların negatif olmasına izin vermektedir ve bu en önemli özelliğidir. Negatif bağlantıları reweighting yöntemiyle işlem sırasında ağırlıkları yeniden hesaplayarak pozitif ağırlıklara güncellemektedir. Bu yönüyle Floyd Warshall’a benzemektedir fakat O(V3) olan çalışma süresi Johnson Algoritması’nın tercih edilmesine neden olur. Ayrıca Floyd Marshall daha sık graflarda tercih edilirken, Johnson seyrek graflarda daha iyidir. Ağırlıkların pozitif olması durumunda Dijkstra’nın kullanılması daha iyi performans sağlar. Algoritmanın adımlarını aşağıdaki graf üzerinde açıklayalım.

1

  • Adım 1: Öncelikle grafa aşağıda görüldüğü üzere yeni bir düğüm ve bu düğümden grafta bulunan tüm düğümlere bağlantılar eklenir. Bu düğümün ve bağlantılarının ağırlığı sıfır olarak belirlenir.

2

  • Adım 2: Her düğüm için BellmanFord Algoritması bir kez çalıştırılır ve düğümlerin ağırlıkları belirlenir. Aşağıda görüldüğü üzere her düğümün ağırlığı içerisine yazıldı.

image

  • Adım 3 : Adım 4’te Dijkstra Algoritması kullanılacaktır. Bilindiği üzere Dijkstra Algoritması negatif bağlantı uzunluklarını kabul etmemektedir. Bu yüzden bu adımda ağırlıklar tekrar hesaplama yöntemiyle yenilecek ve negatif bağlantı kalmayacaktır. Yeniden hesaplama yöntemi şu şekildedir;  ŵ(u, v) = w(u, v) + d(s, u) – d(s, v)

4 x

Ağırlıkların yeniden hesaplanması Reweighting Teorem ile yapılır. Formülde yeni kenar ağırlığı eski kenar ağırlığı ile düğümün, algoritmanın birinci adımında eklenen yeni düğümüne olan ağırlığı ile toplanır. Bu değerden gidilecek olan düğümün S düğümüne olan ağırlığı çıkarılır ve yeni ağırlık bulunur. Reweightin işlemi sonucunda shortest path değişmezken, ağırlıkların hepsi nonnegative olur. Burada akla şu soru gelebilir; ağırlıkları bu şekilde hesaplayacağımıza tüm düğümlere minimum bağlantı uzunluğunu eklesek olmazmı? Olmaz çünkü bu en kısa yolun değişmesine sebep olabilir. Aşağıda ağırlıkların güncellenmiş hali bulunmaktadır. Kenarların yeni ağırlıklarının bulunma işlemine örnek verecek olursak ; eski ağırlığı 8 olan kenarın yeni ağırlığı yukarıda bahsettiğimiz yöntemle 8 + 0 – (-5) = 13 ‘e olarak hesaplanır.

3

Aşağıdaki grafikta tüm düğümlere minimum düğüm ağırlığının eklenmesi durumunda ortaya çıkacak bozulma görülmektedir. Birinci durumda kısa yol alttaki iken, ikinci durumda üstteki oluyor. Bu metod görüldüğü üzere kısa yolun değişmesine sebep oluyor.
5

  • Adım 4 : Birinci adımda eklenen düğüm graftan silinir ve geri kalan tüm düğümler için Dijkstra Algoritması uygulanır. Tüm çiftler arası en kısa yol bulunur. Aşağıda tüm düğümler için ağırlıkların Dijkstra Algoritması’yla yeniden hesaplanması görülmektedir.

8 9 10

ALGORİTMANIN KARMAŞIKLIĞI

Algoritmanın karmaşıklığına bakalım. Algoritmanın adımlarını kontrol edelim.

  • İlk adımda yeni düğüm ekleniyor ve her düğümün ağırlığı Bellman Ford ile hesaplanıyor. Bu durumun getirdiği karmaşıklık O(VE)’dir.
  • Daha sonra negatif kenarlardan kurtarmak için reweighting işlemi yapılıyor. Bu durumun getirdiği karmaşıklık O(E)’dir.
  • Her düğüm için Djikstra Algoritması’nın getirdiği karmaşıklık O(V2 logV + VE logV )’dir.

Bu durumda Johnson Algoritması’nın karmaşıklığı O(V2 logV + VE logV) olarak hesaplanır.

(V: Düğümler Kümesi , E: Bağlantılar Kümesi )

Kaynaklar

Shortest Path Problem – En Kısa Yol Problemi

Shortest Path Problem yani En Kısa Yol Problemi’nden önce bu konuyla ilgili olan Graph Theory’den bahsetmek istiyorum.

Graph Theory

Graf Teori yani Çizge Kuramı, çizgeleri yani grafları inceleyen matematik dalıdır. Graflar node (yada vertice) yani düğümler ve edge yani bağlantılardan oluşan bir çeşit ağ yapısıdır. Bağlantıların her birinin değeri vardır ve tek yada çift yönlü olabilirler. Bir G grafı, G = (V,E) şeklinde ifade edilir. Burada V düğümler kümesi , E ise bağlantılar kümesini ifade eder.

Shortest Path Problem

Shortest Path Problem, Graph Theory içerisinde önemli bir problemdir. Graf içerisinde belirtilen node’lar arasındaki en kısa yolu bulmayı amaçlar. Bu özelliğiyle Gezgin Satıcı Problemi’ne de (Travelling Salesman) benzer. Ancak Gezgin Satıcı’dan iki noktada ayrılır. Birincisi, hedef düğüme giderken tüm düğümlere uğramak zorunda değiliz. İkincisi de hedefe vardıktan sonra başlangıca dönmüyoruz.

En kısa yollar döngüler içeremez, ancak negatif bağlantı değerleri bulundurabilirler. Bununla birlikte n tane düğümün olduğu bir grafta en kısa yol n-1 kenardan daha fazla kenara sahip olamaz.

Kaynak nodun diğer tüm node’lara olan en kısa yollarını bularak Graph Theory içerisinde yer alan En Kısa Yol Ağacı’nı da (Shortest Path Tree) oluşturabiliriz.

Shortest Path Problemleri

· Single-Source (Single – Destination) : Verilen bir node’dan diğer tüm node’lara olan en kısa yolun bulunması problemidir.

  • Single-Pair: Verilen iki node arası en kısa yolun bulunması problemidir.
  • All-Pairs : Grafta bulunan tüm ikililer arası en kısa yolun bulunması problemidir.

En Kısa Yol Problemi’nin Görüldüğü Yerler

En Kısa Yol Problemi’ni çözen çeşitli algoritmalardan daha sonra bahsedeceğiz, ancak daha önce bu problem nerelerde görülür onlardan bahsetmek istiyorum.

  • Navigasyon cihazlarında güzergah ayarlaması sırasında
  • Dynamic Routing kullanan Network’lerde En ucuz yada hızlı hat ayarlaması yaparken
  • Limancılık, havacılık, postacılık güzergah ayarlaması esnasında
  • Hatta Rubik Cube’ü en az hamlede çözmek için dahi kullanılabilir.
  • Robot hareket planlaması

Kaynaklar

Quad Tree (Dörtlü Ağaç)

Quad dörtlü, tree ağaç demektir. QuadTree adı üstünde bir ağaç yapısıdır. Her nodun (node) dört adet çocuğu (child) vardır. İki boyutlu uzayda kullanılmaktadır. Üzerinde çalışılan bölge dörtlü alanlara bölünerek uygulanır.

Örnek verecek olursak; İlgilendiğimiz alan aşağıdaki gibi olsun. Alanı iki boyutlu bir uzay gibi  düşünelim. Bu bölgeye her hangi bir eleman geldiğinde bölge dörde bölünür. Ağacın şekli üçüncü resimdeki gibi olur. Root’un sadece ilk elemanı doludur.

1  3 2

Bölgeye eleman gelmeye devam etsin. İkinci eleman ilk elemandan farklı bir bölgede olduğu için alan bölme işlemine gerek kalmadı. Ağaçta ise root’un ikinci elemanı B nodu oldu.

quadtree1 5

Yeni elemanımız B ile aynı bölgede olsun. Bu durumda B’nin bulunduğu bölge dörde bölünecek ve ağacın yapısı değişecektir.

6 7

Bölgeye birkaç eleman daha ekleyelim ve ağacın durumuna bakalım.

8 9

E elemanı bölgeye eklendiğinde B’nin bulunduğu alan tekrar dörde bölünür. Ağaçta B bir alta geçerek E ile kardeş olur.

10 11

Bölgeye F elemanı eklendiğinde ise durum aşağıdaki ağaçtaki gibi olur.12 13

Sorularınız olursa yardımcı olmaya çalışırım. Konuyla ilgili buradan da bilgiye ulaşabilirsiniz.