An experience while setting up Active Directory – Really stupid issue

I tried to set up an experiment domain with one machine that hosted Active Directory service and another machine joint as a domain client.

After setting up Active Directory successful, I was unable to make the client join to the domain.
At the first time it said some error about client could not locate the DC. Then I discovered it was a DNS issue. To fix this, there were two things to do:
– Configure the DNS server (hosted at the same machine with AD) so that it can resolve the hostname and IP of the AD. To do this, I had to create a pointer (PTR) in the Reserved section that point to the hostname and IP of the host machine, and ofcourse with dynamic updating allowed.
– Pointed the client’s DNS IP to this DNS server’s IP. Means the DNS address of client must be the address of AD (because I let AD machine hosted DNS also)

And the second error was funny, when I tried to join the client to domain again, it could locate the AD, but another error said that it couldn’t contact to the AD! WTH!!!!
It took me 2 DAYS to check out that error and to find the solution but not successful. Even that I tried to reinstall the machine (after a lot of touching inside the system, tweek it, bite it, punch it,…) it didn’t work. Then, I decided to take a vegetarian’s food to gain more luck… and luck was gained!!!

Looking into Event Viewers, there were a lot of error events logged. One of them was something wrong with NetLogon, and tracing from this node I found that SYSVOL folder had never been shared! OMG!! Why???
Ok, let share it! But, wait! Why it was not shared? There must be something wrong with the installation…
Looking inside that folder, I saw there was almost nothing inside, all were empty folders! Ok, then they couldn’t generate the database to hold AD setting information. But why? Mr. G tell me that it must be a insufficient disk space issue. And, THAT WAS MY SILLY ISSUE: I ACTUALLY MADE THE VIRTUAL MACHINE A 2GB HDD!!!!!
So after the Win2K3 installed, there was less than 512MB remaining free space on the HDD which was required for AD’s database files holding. What a suck!!
I retried to the whole installation, setting up on a larger HDD VM and now it works OK! Then I think I have to write down these stupid right away to remain me about it. 2 DAYS sitting next to the laptop without gaming, sporting, girling,… for nothing!!!

Poor me!


Các Design Patterns trong lập trình hướng đối tượng

(Bài viết này được viết dựa trên kinh nghiệm thực tế + tham khảo “Gang of Four”)
Trong lập trình hướng đối tượng nói chung, các design pattern được phân chia làm 3 loại:
– Creational patterns
– Structural patterns
– Behaviour patterns

1. Creational patterns: Gồm Simple Factory, Factory Method, Abstract Factory, Builder, Prototype, SingleTon/MultiTon
a. Simple Factory: Một factory chung sẽ làm nhiệm vụ phân phối các đối tượng theo yêu cầu
– Interface IVerhicle
– Car, Truck: IVerhicle
– IVerhicle VerhicleFactory.Get(CarType)
b. Factory Method: Việc phân phối các đối tượng được thực hiện thông qua các factory chuyên biệt
– Interface Iverhicle, IVerhicleFactory{Get();}
– Car, Truck: Iverhicle
– CarFactory, TruckFactory: IVerhicleFactory
– Car = CarFactory.Get(), Iverhicle TruckFactory.Get()
c. Abstract Factory: Tương tự như Factory Method trong việc phân phối các đối tượng. Tuy nhiên, trong quá trình phân phối có sự che dấu cách thức cung cấp đối tượng.
– Interface Iverhicle, IVerhicleFactory{Get();}
– Car, Truck: Iverhicle
– CarFactory, TruckFactory: IVerhicleFactory
Factory factory = new CarFactory()
Car = factory.Get()
Factory factory = new TruckFactory()
Truck = factory.Get()
Xét về bản chất thì tại thời điểm tạo đối tượng factory, bản thân đối tượng chính là một thể hiện của một factory cụ thể (ví dụ CarFactory, TruckFactory). Vì vậy có thể coi pattern này là một implementation của Factory Method, điểm khác chính là ở cách thức lấy đối tượng ra mà thôi.

d. Builder: Tương tự như Abstract Factory về cách thức implement, điểm khác biệt cơ bản giữa hai pattern này là ở cách thức xây dựng lên đối tượng trước khi phân phối: Abstract Factory thường áp dụng cho những đối tượng có tính available/imediately cao, trong khi Builder áp dụng cho những đối tượng mà việc xây dựng chúng trải qua nhiều công đoạn, cần phải “build”.
e. Prototype: Việc khởi tạo các đối tượng dựa trên clone từ một đối tượng mẫu (prototype)
f. SingleTon/Multiton: Singleton: Một thể hiện của đối tượng được tạo ra một lần duy nhất và được truy cập đồng nhất từ mọi điểm. Multiton: Mở rộng của Singleton, cho phép truy cập thể hiện qua key, với mỗi key chỉ có một đối tượng duy nhất.

(còn tiếp)