19 Nisan 2012 Perşembe

Active Directory

 Active Directory ile çalışırken aldığım notları yazıyorum.

DN (Distinguished Name)
Active Directory altındaki her nesnenin bir Distinguished Name (DN) ismi olmalı.

DN isimleri hiyerarşik bir yapı izlerler. Hiyerarşi için Microsoft dc=X,dc=y gibi başlayan bir yapı benimsemiştir.

Aşağıda bir örnek var.


17 Nisan 2012 Salı

udev

Not : /dev altında yaratılan diğer dosyalar için TTY ve Devpts ile Posix Standart Streamleri başlıklı yazıları okuyabilirsiniz.

udev Cihaz Yöneticisi
Linux altında çalışan cihaz yöneticisinin ismi udev.  Çekirdek tarafından bulunan yeni cihazlar aşağıdaki şekilde de görüldüğü gibi udev yöneticisine bildiriliyor.


udev yöneticisi ise /etc/udev/rules.d/ altında bulunan kurallara bakarak yeni cihazla ilgili bazı dosyaları çalıştırabiliyor.
Örneğin detect usb(s) attachment/deattachment and send email çok bilgilendirici.


12 Nisan 2012 Perşembe

Spring ApplicationContext

Spring ApplicationContext ile Otomatik Yüklenen Beanler

Aşağıdaki şekli buradan aldım ve ApplicationContext ayağa kalkarken otomatik olarak yüklenilen bazı beanleri gösteriyor.

MessageSource
MessageSource bean'i Spring konfigürasyon dosyaları arasında varsa ApplicationContext ayağa kalkarken otomatik olarak yüklenilir. Bir örneği burada bulmak mümkün. Tek yapılması gereken ismi messageSource olan bir bean tanımlamak.

Bu bean'i kendi kodumuz içine enjekte etmek istersek tek yapmamız gereken kendi sınıfımızı MessageSourceAware arayüzünden türetmek. Örneği burada bulabilirsiniz.


7 Nisan 2012 Cumartesi

Per Process File Table , inode ve fork ilişkisi

Unix dosya sistemi karmaşık bir yapıya sahip.

Per Process File Table

Her uygulamanın açık tuttuğu file descriptorları sakladığı bir tablo var. Buna "Per Process File Table" deniliyor.

Tablodaki her satır ise işletim sistemin çekirdeğinde bulunan "System Open File Table" tablosundaki bir satırı işaret ediyor. Aşağıda şekili buradan aldım ve uygulama ile çekirdek arasındaki bağlantıyı gösteriyor.

Per Process File Table ve fork()

Unix üzerinde çalışan bir process fork() sistem çağrısını kullanınca yeni yaratılan process, onu yaratan process ile birebir aynı file descriptorlara sahip oluyor. Aşağıda bunun bir örneğini görebilirsiniz.
 İki farklı process aynı dosyaları nasıl paylaşıyor ?

Bunun cevabı işletim sistemi tarafından yönetilen "Open File Table" veri yapısında saklı. Bir dosyayı open() komutuyla açınca bize verilen sayı aslında "Open File Table veri yapısına erişmek için verilen bir indeks. Aşağıdaki şekli buradan aldım ve durumu çok güzel özetliyor.


fork() ile process file descriptor yeni yaratılan uygulamaya aktarılıyor. Eğer yeni uygulama bu dosya'dan okuma yaparsa, onu yaratan uygulama da kendi file descriptor'ının değiştiğini görecektir. Sebebi ise yukarıdaki veri yapısıdır.

4 Nisan 2012 Çarşamba

Hibernate ve JSR 303

Bu konu ile ilgili bir yazı hazırlamak istiyorum ancak şimdilik sadece aşağıdaki buradan aldığım şekli ekliyorum.

Şekilden de görüldüğü gibi JSR 303 standardını gerçekleştiren hibernate-validator kütüphanesi var.
Buradan aldığım şekilden de görüldüğü gibi JSR 303 ile domain modeline validasyon kodu eklenebiliyor.


30 Mart 2012 Cuma

Güvenlik İçin Ses ve Video Matris Anahtarlayıcıları

Video Matris Anahtarlayıcısı


"Gefen" firmasının ürettiği "16x16 DVI Matrix" input olarak verilen bir DVI-D sinyalini bir veya daha fazla outputa anahtarlayabilme yeteneğine sahip bir cihaz. Yazılımsal olarak ASCII karakter dizileri ile RS-232 üzerinden kontrol edilebiliyor.


Kullanım Senaryosu :

Güvenlik kameralarının ve DVK'lerin sayısının ortamda bulunan  monitörlerden  daha fazla olduğu durumlarda bir video matris anahtarlayıcısına ihtiyaç vardır. Anahtarlayıcı ile izlenmek istenen görüntü arzu edilen monitöre yansıtılır.


Ses Matris Anahtarlayıcısı

"Kramer Electronics" firmasının ürettiği "VS-88A 8x8 Balanced Stereo Audio Matrix Switcher" yazılımsal olarak kumanda etmesi çok kolay olan bir ürün.


Cihazı kumanda etmek için kullanılan mesajlar sabit olarak sadece 5 byte uzunluğunda ve RS-232 üzerinden rahatça gönderilip alınabiliyor.

Kullanım senaryosu :

Günveliğin önemli olduğu ortamlarda bir çok "Dijital Video Kaydedici" (DVK) vardır ve bazen geçmişe yönelik bir olayı ararken tüm DVK'lardan birden video geri oynatma yapmak istenebilir. Ancak bu durumda ortamda ses karmaşası olacaktır.

Tüm DVK'ların ses çıkışlarını bir Ses Matris Anahtarlayıcısına yönlendirerek DVK'ların sesleri anahtarlanabilir ve hoparlörlerden sadece seçilen DVK'nın sesi duyulur.

KVM Anahtarlayıcısı

Adder firmasının ürettiği "ADDERView PRO" bir çok bilgisayarın tek monitör,klavyeye ve fareye bağlanmasını sağlayan bir anahtarlayıcı.
 Cihazı kumanda etmek için kullanılan mesajlar sabit olarak sadece 1 byte uzunluğunda ve RS-232 üzerinden rahatça gönderilip alınabiliyor.

Discrete I/O

Sisteme eklenen çeşitli sensörleri (ısı,nem,duman,açık kapı vb) okumak ve I/O için kullanılan portları kontrol etmek için Moxa Remote I/O ioLogik4200 cihazı kullanılabilir.

Sistemin Kaç Saat Çalıştığını Gösteren Sayaç
 
Tüm sistemler bir araya gelip bir konsol halini alınca sistemin ne kadar saat çalıştığını görmek istenebiliyor. Bunun için şu linkteki "CASED HOUR METERS AND COUNTERS" cihazlarından birisi kullanılabilir.

Estab
Estab firmasının bir çok cihazı konsol ve kabinetlerde kullanılabiliyor. 
Özellikle snmptrap gönderebilme yeteneğine sahip olan bu cihazlar udp port 162 üzerinden dinlenince duman, kapı vs. gibi dedektörler için kolaylıkla kullanılabiliyor. Aşağıdaki şekli snmptrap'in çalışmasını gösterdiği için buradan aldım ve ekledim.

27 Mart 2012 Salı

Hibernate ve FlushMode

Hibernate ile kullanılabilecek FlushMode seçenekleri şunlar. Ben de anladıklarmı yazıyorum.

ALWAYS

AUTO

COMMIT

MANUAL
Manual modu eskiden NEVER olarak geçiyordu. Bu konuyu anlatan en iyi örneği Hibernate: Understand FlushMode.NEVER başlıklı yazıda buldum. Yazının özeti şu : Hibernate kendi haline bırakılırsa AUTO modu kullanır. Bu kullanım şeklinde her sorgudan önce session içinde yüklü bulunan (yani birincil önbellekte yüklü bulunan) her nesneye kirli kontrolü (dirty check) uygulanır. Eğer birincil önbellekte binlerce nesne yüklü ise her nesneye bu kontrolü uygulamak performansı çok düşürecektir.

FlushMode.MANUAL kullanılarak bazı sorguların kirli kontrolü yapması engellenir ve tüm işlemlerin sonunda session.flush() metodu çağırılarak performans artırılabilir.