12/24/10

Cấu hình VLAN - trunk " Vlan routing "

Bài viết này mình xin giới thiệu cơ bản lý thuyết về mạng VLAN, cách cấu hình mạng VLAN cơ bản, Cấu hình Vlan trungking.
 Trước hết mình giới thiệu về lý thuyết
VLAN là gì?
 hiểu VLAN là 1 mạng ảo. Về mặt kỹ thuật, VLAN là một miền quảng bá được tạo bởi các switch. Bình thường thì router đóng vai trò tạo ra miền quảng bá. Đối với VLAN, switch có thể tạo ra miền quảng bá.
CCNA-network visualizer 6.0
Việc này được thực hiện khi bạn - quản trị viên - đặt một số cổng switch trong VLAN ngoại trừ VLAN 1 - VLAN mặc định. Tất cả các cổng trong một mạng VLAN đơn đều thuộc một miền quảng bá duy nhất.

Vì các switch có thể giao tiếp với nhau nên một số cổng trên switch A có thể nằm trong VLAN 10 và một số cổng trên switch B cũng có thể trong VLAN 10. Các bản tin quảng bá giữa những máy tính này sẽ không bị lộ trên các cổng thuộc bất kỳ VLAN nào ngoại trừ VLAN 10. Tuy nhiên, tất cả các máy tính này đều có thể giao tiếp với nhau vì chúng thuộc cùng một VLAN. Nếu không được cấu hình bổ sung, chúng sẽ không thể giao tiếp với các máy tính khác nằm ngoài VLAN này.

VLAN có cần thiết không?

Có một điều quan trọng mà tôi cần nhấn mạnh, đó là bạn không cần cấu hình một mạng LAN ảo trừ khi mạng máy tính của bạn quá lớn và có lưu lượng truy cập quá nhiều. Nhiều khi người ta dùng VLAN chỉ đơn giản vì lý do mạng máy tính mà họ đang làm việc đã sử dụng chúng rồi.
Thêm một vấn đề quan trọng nữa, đó là trên switch Cisco, VLAN được kích hoạt mặc định và tất cả các máy tính đã nằm trong một VLAN. VLAN đó chính là VLAN 1. Bởi thế mà theo mặc định, bạn có thể sử dụng tất cả các cổng trên switch và tất cả các máy tính đều có khả năng giao tiếp với nhau.
--------------------------------------------------------------------------------------------------------------
Về Phần Demo cấu hình VLAN - trunk thì mình xin trình bày 1 mô hình đơn giản của 1 công ty với 3 phòng ban: kinhdoanh, ki thuat, ketoan.
Mô hình lab yêu cầu : chỉ các host trong cùng 1 phòng mới Ping thấy nhau. Tất cả các host của các phòng đều Ping được host A ( môi trường ngoài )
Mô hình
Như vậy, mình sẽ phải cấu hình VLAN cho Switch B và Switch C
Để dễ hiểu thì mình cấu hình đặt VLAN cho 2 Switch trước, sau đó mình sẽ cấu hình đặt các cổng VLAN.
1. Đặt VLAN
  - Trên Switch B:

Switch>en
Switch#conf t
Switch(config)hostname WB
WB(config)#exit
WB#vlan database
WB(vlan)#vlan 2 name kinhdoanh
WB(vlan)#vlan 3 name kithuat
WB(vlan)#vlan 4 name ketoan
WB(vlan)#exit
WB#conf t
WB(config)#vtp domain ctyA
WB(config)#vtp mode server
WB(config)#int f0/10
WB(config-if)#switchport mode trunk
WB(config-if)#exit

- Trên Switch C

Switch>en
Switch#conf t
Switch(config)hostname WC
WC(config)#vtp domain ctyA
WC(config)#vtp mode client
WC(config)#int f0/10
WC(config-if)#switchport mode trunk
WC(config-if)#exit

2. Đặt vào các cổng VLAN
- Trên Switch B

WB>en
WB#conf t
WB(config)#int f0/1
WB(config-if)#switchport mode access
WB(config-if)#switchport access vlan 2
WB(config-if)#exit
WB(config)#int f0/2
WB(config-if)#switchport mode access
WB(config-if)#switchport access vlan 3
WB(config-if)#exit
WB(config)#int f0/3
WB(config-if)#switchport mode access
WB(config-if)#switchport access vlan 4
WB(config)#exit

- Trên Switch A, C (Giống Switch B)
-------------------------------------------------------------------------------------------------------------
Còn vấn đề các máy của các phòng ban ping thấy host A thì mình khỏi trình bày nhé. Cái này chắc ai bắt đầu học về router thì cũng biết !!!

Chúc các bạn học tập tốt!!!

12/21/10

cấu hình Static routing - định tuyến tĩnh

Bài viết này mình xin hướng dẫn cấu hình Static route. Trước tiên mình xin giới thiệu sơ qua về lí thuyết Static Route.
1. Giới thiệu định tuyến tĩnh
Đối với định tuyến tĩnh các thông tin về đường đi phải do người quản trị mạng nhập cho router .Khi cấu trúc mạng có bất kỳ thay đổi nào thì chính người quản trị mạng phải xoá hoặc thêm các thông tin về đường đi cho router .Những loại đường đi như vậy gọi là đường đi cố định .Đối với hệ thống mạng lớn thì công việc bảo trì mạng định tuyến cho router như trên tốn rất nhiều thời gian .Còn đối với hệ thống mạng nhỏ ,ít có thay đổi thì công việc này đỡ mất công hơn .Chính vì định tuyến tĩnh đòi hỏi người quản trị mạng phải cấu hình mọi thông tin về đường đi cho router nên nó không có được tính linh hoạt như định tuyến động .Trong những hệ thống mạng lớn ,định tuyến tĩnh thường được sử dụng kết hợp với giao thức định tuyến động cho một số mục đích đặc biệt.
2. Hoạt động của định tuyến tĩnh
Hoạt động của định tuyến tĩnh có thể chia ra làm 3 bước như sau:
+ Đầu tiên ,người quản trị mạng cấu hình các đường cố định cho router
+ Router cài đặt các đường đi này vào bảng định tuyến
+ Gói dữ liệu được định tuyến theo các đường cố định này
Trong hình 1 và 2 là 2 câu lệnh mà người quản trị của router Hoboken cấu hình đường cố định cho router đến mạng 172.16.1.0/24 và 172.16.5.0/24 .Ở hình 1,câu lệnh này chỉ cho router biết đường đến mạng đích đi ra bằng cổng giao tiếp nào .Còn ở hình 2 ,câu lệnh này chỉ cho router biết địa chỉ IP của router kế tiếp là gì để đến được mạng đích .Cả 2 câu lệnh đều cài đặt đường cố định vào bảng định tuyến của router Hoboken. Điểm khác nhau duy nhất giữa 2 câu lệnh này là chỉ số tin cậy của 2 đường cố định tương ứng trên bảng định tuyến của router sẽ khác nhau.
Static routing, dinh tuyen tinh, câu lệnh cấu hình định tuyến tĩnh, Demo static route

Chỉ số tin cậy là một thông số đo lường độ tin cậy của một đường đi .Chỉ số này càng thấp thì độ tin cậy càng cao .Do đó ,nếu đến cùng một đích thì con đường nào có chỉ số tin cậy thấp hơn thì đường đó được vào bảng định tuyến của router trước. Trong ví dụ trên,đường cố định sử dụng địa chỉ IP của trạm kế tiếp sẽ có chỉ số tin cậy mặc định là 1,còn đường cố định sử dụng cổng ra thì có chỉ số tin cậy mặc định là 0 .Nếu bạn muốn chỉ định chỉ số tin cậy thay vì sử dụng giá trị mặc định thì bạn thêm thông số này vào sau thông số về cổng ra / địa chỉ IP trạm kế của câu lệnh .Giá trị của chỉ số này nằm trong khoảng từ 0 đến 255.
Waycross(config)# ip router 172.16.3.0 255.255.255.0 172.16.4.1.130
Nếu router không chuyển được gói ra cổng giao tiếp đã được cấu hình thì có nghĩa là cổng giao tiếp đang bị đóng, đường đi tương ứng cũng sẽ không được đặt vào bảng định tuyến .
3. Demo cấu hình định tuyến tĩnh
*+* Đinh tuyến tĩnh (static route)
Sơ đồ bài Demo mình xin trình bày như hình vẽ sau:
Mô hình định tuyến tĩnh, Demo static route
Mô hình triển khai
Để dễ hiểu mình cấu hình theo các bước sau:
3.1. Đặt IP cho các cổng interface
- Đối với Router A

Router>enable                                viết tắt là en
Router# config terminal                        viết tắt là conf t
Router(config)#hostname RA
RA(config)#interface f0/0                      viết tắt là int f0/0
RA(config-if)# ip address 10.1.1.1 255.0.0.0
RA(config-if)#exit
RA(config)#interface s0/0
RA(config-if)#ip address 172.16.1.1 255.255.0.0
RA(config-if)#no shutdown
RA(config-if)#exit

-Đối với RouterB
Router>en
Router# conf t
Router(config)#hostname RB
RB(config)#interface f0/0
RB(config-if)# ip address 192.168.1.1 255.255.255.0
RB(config-if)#exit
RB(config)#int s0/0
RB(config-if)#ip address 172.16.1.2 255.255.0.0
RB(config-if)#no shutdown
RB(config-if)#clock rate 64000
RB(config-if)#exit
RB(config)#int s0/1
RB(config-if)#ip address 11.1.1.1 255.0.0.0
RB(config-if)#no shutdown
RB(config-if)#clock rate 64000
RB(config-if)#exit


RouterB có 1 điểm lưu ý đó là " RouterB đóng vai trò nhà cung cấp mạng" nên sẽ có đặt xung nhịp clock rate 64000 ( clock rate để đảm bảo tốc độ xung nhịp cho truyền dữ liệu. Tốc độ xung nhịp này do DCE cấp )
-Đối với RouterC
Router>en
Router# conf t
Router(config)#hostname RC
RC(config)#int f0/0
RC(config-if)# ip address 173.16.1.1 255.255.0.0
RC(config-if)#exit
RC(config)#int s0/0
RC(config-if)#ip address 11.1.1.2 255.0.0.0
RC(config-if)#no shutdown
RC(config-if)#exit


Xong bước cấu hình địa chỉ IP cho các interface.
3.2. Cấu hình đường đi cho route (static route)
Các bạn thấy ở con RouterA có 3 lớp mạng mà nó chưa đi đến được đó là ( next hop )
11.0.0.0
192.168.1.0
173.16.0.0
Như vậy các bạn sẽ phải chỉ đường đi cho RA tới được 3 mạng đó

RA(config)# ip route 11.0.0.0 255.0.0.0 172.16.1.2
RA(config)# ip route 192.168.1.0 255.255.255.0 172.16.1.2
RA(config)# ip route 173.16.0.0 255.255.0.0 172.16.1.2

Tương tự RouterB có 2 lóp mạng mà nó chưa đi đến được đó là ( next hop )
10.0.0.0
173.16.0.0
RB(config)# ip route 10.0.0.0 255.0.0.0 172.16.1.1
RB(config)# ip route 173.16.0.0 255.255.0.0 11.1.1.2

RouterC tương tự RouterA. Có 3 lớp mạng trong mô hình mà nó chưa hiểu (next hop )
172.16.0.0
192.168.1.0
10.0.0.0
RC(config)# ip route 172.16.0.0 255.255.0.0 11.1.1.1
RC(config)# ip route 192.168.1.0 255.255.255.0 11.1.1.1
RC(config)# ip route 10.0.0.0 255.0.0.0 11.1.1.1

Để xem địa chỉ IP các cổng của router và bước đi của nó các bạn dùng lệnh
show ip route
*+* Định tuyến tĩnh mặc định (static default route)
   Với dạng mặc định như thế này thì đơn giản hơn rất nhiều. Các bạn chi cần route cho lớp mạng bạn cần đi đến mặc định là 0.0.0.0 0.0.0.0. Ví dụ trong trường hợp này mình sẽ route như sau:
Trên RA
RA(config)# ip route 0.0.0.0 0.0.0.0 172.16.1.2

Trên RB đóng vai trò là Router nhà cung cấp nên ta không để mặc định

Trên RC
RC(config)# ip route 0.0.0.0 0.0.0.0 11.1.1.1

Đối với các HostA, HostB, HostC khi các bạn đặt địa chỉ IP các bạn trỏ Defalt Gateway về cổng F0/0 của con router đó
Bài viết mình chưa trình bày tới hạn chế của static route

Chúc các bạn học tập tốt !!!

12/11/10

1 số Key + Crack khắc phục lỗi phần mềm

Bài viết này xin cung cấp 1 số Key + Crack 1 số phần mềm thường dùng và mắc phải 1 số lỗi (không phải bản quyền).
Crack software
1. Crack Microsoft OFFICE 2007: khắc phục lỗi " This modification is not allowed because the selection is locked " hay Microsoft OFFICE 2007 đã bị khóa
-Khắc phục : Các bạn tải File Crack OFFICE 2007
File Crack Office 2007 TẠI ĐÂY
 Sau đó các bạn chạy file Crack. (trước khi chạy file đó các bạn đóng chương trình Word, Exel,....)
Hoặc các bạn làm theo hướng dẫn có trong file hay doc.txt
ps: Nếu các bạn đã từng cài lại WIN thì khi cài lại OF7 các bạn nên kiếm đĩa đã có người cài rồi và chắc chắn không bị block. Chú ý khi cài các bạn chọn chế độ offline khi nó báo update
2. Crack Adobe Dreamwear CS5:
Nếu các bạn chưa có Phần mềm cài Adreamwear CS5 thì để lại Comment (có địa chỉ Mail) mình sẽ gửi qua
Các bạn tải
Crack Adobe Dreamwear CS5 tại đây

............
tiếp tục
Link FIX
Crack Adobe Dreamwear CS5
Bài hướng dẫn chi tiết Crack Microsoft office 2007 các bạn theo dõi tại http://itviet360.com/2012/09/crack-microsoft-office-2007-thanh-cong.html

- Nếu bạn nào gặp error thì comments để lại email, mình sẽ gửi sớm cho các bạn.

12/10/10

Sử dụng Free các phần mềm có bản quyền

Hết 30 ngày sử dụng bản dùng thử của phần mềm diệt virut Kaspersky thì tài khoản theo máy tính của bạn sẽ không còn được sử dụng nữa
Và có nhiều lỗi khi các bạn sử dụng Office . Ví dụ "This modification is not allowed because the selection is locked"
Và ngay cả khi các bạn xóa đi cài lại thì vẫn không thể sử dụng được tiếp phần mềm
Bài viết này mình xin hướng dẫn 1 cách đơn giản để các bạn có khả năng khắc phục những lỗi đó. Các bạn có thể hiểu đơn giản là cách làm này mình sẽ xóa đi Key mà máy tính mình đăng kí
Các bạn hoàn toàn có thể làm tương  tự cho những phần mềm khác....
Các bước thực hiện như sau:
- Trước tiên các bạn gở bỏ phần mềm đó đi đã nhé !!!
- Các bạn vào Start (đối với WIN XP) và gõ vào Run câu lệnh "REGEDIT". Còn đối với WIN7 thì các bạn thực hiện như hình vẽ dưới đây
Các bạn sẽ thấy khung hình dưới hiện lên

ở Khung này các bạn chọn Edit -> Find...(hoặc bấm Ctrl F) để tìm Key phần mềm mà máy bạn đã đăng kí.
ví dụ ở đây mình tìm là KASPERSKY. Hình bên dưới
Khi bấm FIND NEXT nếu phần mềm các bạn đã được sử dụng thì nó sẽ tìm cho các bạn, tương tự như hình phía dưới đây
các bạn thấy phía hình đó chỗ màu xanh các bạn nhấp chuột phải vào và chọn Delete

Để chắc chắn các bạn khởi động lại máy (RESTART)
Mình chú ý các bạn khi cài Office 2007 để tránh bị LOCK thì các bước cuối cùng các bạn chọn là Offline (lựa chọn thứ 2 . mình cũng ko nhớ rõ đó là chữ j)
 XEM CRACK OFFICE 2007 - KHÁC PHỤC LỖI BỊ KHÓA


chúc các bạn thành công!!!!

12/4/10

cách tạo con dấu bằng (trong) photoshop đơn giản

cách tạo con dấu tròn - vuông trong photoshop
Bài viết này mình xin hướng dẫn các bạn cách tạo 1 con dấu trong Photoshop theo phong cách riêng của bạn. Mình chỉ là dân nghiệp dư nên không rành lắm về PS.
Qua mạng mình thấy có nhiều bạn có nhứng con dấu rất ấn tượng nên mình cũng thử tìm hiểu và xin trình bày lại cách làm chi tiết. Nếu các bạn có chỗ nào không hiểu hay có những cách làm hay hơn, tạo cho con dấu đẹp hơn thì xin comment lại giúp mình nhé !!!
Các bước thực hiện như sau:
1. Mở PS. chọn File -> New
các bạn có thể thay đổi Width và Height theo kích thước bạn muốn
 Nhấp OK bạn được 1 file hình mới.
sau đó các bạn nhấp vào biểu tượng như trong hình bên đây. chú ý : nếu biểu tượng mặc định hình ở bên là hình vuông thì các bạn nhấp chuột phải vào đó chọn hình tròn






qua bên hình vẽ các bạn kéo chuột để vẽ 1 hình tròn
Tiếp theo các bạn điều chỉnh khung hình tròn đó sao cho phù hợp (mình nghĩ nên đủ sát khổ hình vương)
tương tự như hình bên . Bạn kéo chuột để thay đổi kích thước khung tròn. Sau khi đã chỉnh xong bạn nhấn vào ô tròn ở hình phía bên trên rùi chọn APPLY

Sau khi nhấn APPLY quay trở lại với khung vẽ đang vẽ hiện tại. Bạn nhấp chuột phải vào phần bên trong khung tròn đó  và chọn Stroke...



 Sau khi nhấp Stroke... bạn được kết quả như hình dưới
Width và color bạn thay đổi tùy ý nhé!!!
Ở đây mình chọn Width: 3px và color là màu đỏ. và làm tương tự như trên mình có vòng tròn thứ 2 đặt bên trong








 Sau đó bạn chọn Layer -> New Layer hoặc bạn cũng có thể nhấp chuột theo hình bên cạnh.







Tiếp theo bạn viết những gì bạn muốn thể hiện bên trong 2 khung tròn.
Ví dụ hình bên đây mình viết chữ nguoinhaque0909. mình viết xong dòng chữ đó và bôi đen nhấp chuột phải chọn
Warp text.. Tiếp theo ở style chọn Arc và chọn Bend : 100% . Tùy chỉnh size chữ sao cho nó phù hợp với khung trong 2 ô tròn nhé. Như vậy mình được chữ nguoinhaque0909 ở phía trên. Còn đối với chữ nguoinhaque0909 ở phía dưới bạn làm tương tự như trên và thêm bước chọn edit -> Transform -> Rotate 180o

Như vậy mình xong khung viền của con dấu nhé!
Bước tiếp theo là nội dung của con dấu.
mình thêm tiếp 1 Layer nữa và viết ví dụ như I'm Lonely
Chữ I'm Lonely mình có chỉnh sửa 1 chút style. Nếu các bạn muốn tạo style cho chữ thì các bạn chọn bôi chữ đó là chọn Layer -> Layer Style -> Blending Option






Bây giờ mình giới thiệu về cách làm cho con dấu mờ để tạo nên 1 con dấu sinh động và giống thực tế hơn
Khi đã hoàn thành các bước trên các bạn tạo 1 Layer mới ( vẫn với con dấu đang làm nhé!!). và làm mờ nó, các bạn chọn Filter-->Render-->Clounds

 Tiếp theo các bạn chọn Filter --> Noise --> Add noise.. và được hình như dưới đây
bước cuối cùng : bạn tạo thêm 1 Layer nữa. tạo xong bạn chọn Layer --> Layer Style --> Blending Options... Đổi Normal thành Screen như hình dưới
Xong rồi. Kết quả cuối cùng mình được 













Để Xoay hình ảnh bạn chọn Select -> All (hoặc bấm Ctrl A)
-> Edit -> Copy Merged (hoặc Shift Ctrl C)
-> Edit -> Paste (hoặc Ctrl V)  
-> Edit -> Transform -> Rotate 
 các bạn tự kéo độ xoay theo ý thích của mình nhé !!!
hình bên là mình được khi thực hiện các bước trên..


Như vậy là mình có thể tự tạo 1 con dấu cho mình rồi phải không?

Kết quả


Ở đây mình dùng bản PS CS3 ko cần cài đặt (do cấu hình máy mình không được mạnh). Nếu bạn nào cần bản PS này thì comment cho mình, mình gửi qua cho nhé !
Nếu các bạn không có thời gian tự tao con dấu cho riêng bạn thì để lại Comment cùng "nội dung của con dấu" nếu muốn mình tạo 1 con dấu nhé. Tuy mình ko chuyên nhưng sẽ cố gắng !!! :)


Chúc các bạn thành công!!!!!!!!!

11/19/10

Banner, quảng cáo thanh trượt cho blogger (blogspot)

Đây là bài viết về thủ thuật blogger đầu tiên về thủ thuật blogger của mình. vì mình thấy thủ thuật blog đã có khá nhiều trang thực hiện việc này
mình xin giới thiệu 1 thủ thuật làm quảng cáo, banner, hay bất kì hình ảnh phục vụ cho lợi ích nào. Hình ảnh này sẽ trượt theo 2 bên khung hình của trình duyệt như blog của mình.
để làm được điều này trước tiên bạn vào Design (thiết kế) --> edit HTML và dán đoạn code sau đây dưới thẻ HEAD
1. code:
<style type="text/css">
#slideads{
position: absolute;
visibility: hidden;}
#slideads1{
float:left;
margin-left: 20px;}
#slideads2{
float:right;
margin-right: 20px;}
</style>
<script src="http://vuphong90.freevnn.com/quangcaotruot.js;" type="text/javascript">
</script>

ở đoạn code này các bạn có thể lấy đường dẫn http://vuphong90.freevnn.com/quangcaotruot.js của mình hoặc cũng có thể lấy nó về và đưa lên Host của bạn. nếu bạn chưa có Host thì mình nghĩ bạn nên đăng kí cho bạn 1 cái Host - Free để tránh phụ thuộc vào Host người khác.
2. sau khi đã đưa code trên vào xong bạn SAVE TEMPLATE (lưu mẫu) lại.
3. sau đó bạn chọn PAGE ELEMANTS ( phần tử của trang ) và chọn thêm 1 tiện ích HTML/JAVASCRIPT và nên để tiện ích đó ở dưới Blog Post (bài đăng)
4. Dán code dưới đây vào HTML/JAVASCRIPT bạn vừa thêm
code:
<div id="slideads">
<div class="slideads1" id="slideads1">
<a href="http://nguoinhaque0909.blogspot.com/" target="_blank"><img border="0" src="http://i1178.photobucket.com/albums/x364/phongvu90/login.jpg" /></a></div>
<div class="slideads2" id="slideads2">
<a href="http://nguoinhaque0909.blogspot.com/" target="_blank"><img border="0" src="http://i1178.photobucket.com/albums/x364/phongvu90/login.jpg" /></a> </div>
</div>

các bạn thay link http://nguoinhaque0909.blogspot.com bằng link mà các bạn muốn trỏ đến
các bạn thay link ảnh http://i1178.photobucket.com/albums/x364/phongvu90/login.jpg bằng hình ảnh muốn hiển thị trên blog của bạn

Chúc các bạn thành công

11/15/10

hướng dẫn ghi đĩa với Ashampoo burning studio 8.03 + crack

theo yêu cầu của 1 số bạn, mình xin gửi tới phần mềm ghi đĩa Ashampoo burning studio 8.03 + crack và cách ghi đĩa VCD, CD ,DVD, MP3
trước tiên các bạn tải phần mềm Ashampoo burning studio 8.03 TẠI ĐÂY
nếu các bạn có hứng thú với phần mềm và muốn sử dụng lâu dài thì các bạn tải key crack TẠI ĐÂY
Cách ghi:
1. ghi dạng đĩa ko có hình ảnh : CD, MP3...
mở chương trình lên các bạn chọn theo hình
cách ghi CD , MP3
 khi chọn loại hình đĩa bạn muốn ghi xong nó sẽ xuất hiện khung như ảnh dưới
chèn file nhạc xong bấm next
 sau đó mọi hoạt động ghi sẽ là do phần mềm tự động
2. ghi đĩa có file hình : VCD, DVD, SVCD...
 các bước làm cũng tương tự như trên
chọn loại hình ghi nhé
sau khi chon xong các bạn cũng được khung như hình trên ở mục 1. các bạn chọn file video mà mình muốn ghi rồi add vào
nếu các bạn muốn tạo 1 album pro thì hãy comment lại cho mình, mình có thể hỗ trợ các bạn ở phần làm hiệu ứng đẹp, chuyên nghiệp.
cảm ơn các bạn đã quan tâm tới bài viết !
chúc các bạn thành công

11/12/10

tổng hợp những bài hát nhép gala cười (2)

tổng hợp những bài hát nhép gala cười (2). Gala cười các năm, các bài hát nhép gala cười các năm: hay và đặc sắc
tiếp theo của part 1
Ánh sáng đời tôi


Tôi không tin

Bức tranh muôn màu

Thôi em hãy về


Chúc các bạn vui vẻ

tổng hợp những bài hát nhép gala cười (1)

gala cười đã qua được một thời gian, nhưng hình ảnh những nghệ sĩ cùng với những " ca khúc " vẫn còn đọng mãi trong lòng khán giả
tổng hợp những bài hát nhép gala cười . Gala cười các năm, các bài hát nhép gala cười các năm: hay và đặc sắc
itviet360 chia sẻ những video hát nhép của các nghệ sĩ trong gala cười.
Chúc các bạn vui vẻ:
0. Vẫn nhớ


1. bản tình ca mùa đông
2. Giấc mơ diệu kì
 
3. Ước gì 
4. Khung trời ngày xưa 
5. Trái tim mùa thu 
6. Giờ thì anh hứa để làm gì?????

tài liệu mạng máy tính và thiết bị truyền thông

mình xin gửi tới các bạn cuốn tài liệu mạng máy tính, thiết bị truyền thông và mạng. nói là cơ bản nhưng theo mình nghĩ nó có tất cả những phần quan trọng trong bộ môn mạng máy tính.
Cuốn sách của trung tâm điện toán và truyền số liệu KV1.
Cụ thể:
Chương 1: Tổng quan về công nghệ mạng máy tính và mạng cục bộ
Chương 2: Giới thiệu giao thức TCP/IP
Chương 3: Tổng quan về bộ định tuyến
Chương 4: Hệ thống tên miền DNS
Chương 5: Dịch vụ truy cập từ xa và Dịch vụ Proxy
Chương 6: Bảo mật hệ thống và Firewall
Các bạn download TẠI ĐÂY
Trong file có slide ngắn gọn về mạng máy tính cơ bản.
Dưới đây là tài liệu tham khảo cần thiết cho các bạn học quản trị mạng CCNA, thiết bị
Các bạn Download TẠI ĐÂY
chúc các bạn học tập tốt

11/9/10

giải phương trình bậc 2 - JavaScript

Giải phương trình bậc 2 - JavaScript
Đề bài yêu cầu: xây dựng ứng dụng giải phương trình bậc 2 bằng javascript lên trang web của bạn. tham khảo code (bài làm giải phương trình bậc 2, có tính nghiệm số phức)

demo:


a :
b :
c :
x1=
x2=




code tại đâynhững bài viết về code của mình chỉ mang ý ngĩa tham khảo. cũng có những bài mình code và có những bài bạn bè học chung mình code xem hệ pt bậc nhất 2 ẩn

11/5/10

đối đáp "chuyện ấy" của dân IT

Chàng:
Em ơi lấy chồng tin học đi.
Phần mềm phần cứng chẳng ngại chi.
Vấn đề chủ yếu là công nghệ.
Với anh cái đó thì khỏi chê...

Nàng:
Em chẳng lấy chồng tin học đâu.
Phần mềm, phần cứng nhức cả đầu.
Phần mềm thì mãi sao không cứng.
Phần cứng lúc cần chẳng thấy đâu.

giải hệ phương trình bậc nhất 2 ẩn (javascript)

giải hệ phương trình bậc nhất 2 ẩn ( code javascript)
Đề bài yêu cầu: xây dựng ứng dụng giải hệ phương trình bậc nhất 2 ẩn bằng javascript lên trang web của bạn.

demo:



a1:
b1:
c1:
a2:
b2:
c2:
x =
y =






code tại đây
những bài viết về code của mình chỉ mang ý ngĩa tham khảo. cũng có những bài mình code và có những bài bạn bè học chung mình code

10/31/10

Quản lí nhân viên ( danh sách liên kết )

xin gửi tới code C về bài tập quản lí nhân viên, bảng lương của nhân viên, thông tin nhân viên.....
dựa vào bài này, các bạn có thể xây dựng thêm những hàm quản lí khác

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iomanip.h>
#include <conio.h>
#include <ctype.h>
struct Date{
int ngay;
int thang;
int nam;
};
struct NhanVien{
char manv[10];
char holot[15];
char ten[10];
Date ngaysinh;
int phai; //0:nu , 1:nam
char noisinh[20];
long phucap;
long lcb;
int ngaycong;
};
struct Node{
NhanVien dataNV;
Node *next;
};
typedef Node *DSNV;
//=====================================
void manHinh(){
printf("\n ################### QUAN LY NHAN VIEN ##################");
printf("\n #======================================================#");
printf("\n #======================================================#");
printf("\n # 1-Them nhan vien ## 5-Xoa mot nhan vien #");
printf("\n # 2-Tim 1 nhan vien ## 6-In bang luong #");
printf("\n # 3-Sua thong tin nv ## 7-Xoa tat ca nhan vien #");
printf("\n # 4-Sap xep nv theo ten ## 0-Thoat chuong trinh #");
printf("\n #======================================================#");
printf("\n #=========== SV KHOA CNTT- DH GTVT TPHCM ===========#");
printf("\n ########################################################");

}
void BangLuong(DSNV first);
//===========ham kiem tra nam nhuan=======
int ktNam(int nam){
if(nam%400==0 || ((nam%4==0) && (nam%100 != 0))) //nam nhuan tra ve 366 ngay
return 366;
return 365;
}
//==========ham kiem tra so ngay trong thang==
int soNgay(int thang,int nam){
int songay;
switch(thang){
case 4:
case 6:
case 9:
case 11:
songay = 30;
break;
case 2:
if(ktNam(nam)==366)
songay = 29;
songay = 28;
break;
default:
songay = 31;
break;
}
return songay;
}
//=======ham nhap ngay thang===========
void NhapThoiGian(Date &tg){
do{
fflush(stdin);
printf("\t Nhap ngay thang nam(dinh dang dd/mm/yy): ");
scanf("%d/%d/%d",&tg.ngay,&tg.thang,&tg.nam);
fflush(stdin);
if((tg.ngay>0)&&(tg.ngay<=soNgay(tg.thang,tg.nam))&&(tg.thang>0)&&(tg.thang<=12)) break; printf("\nvui long kiem tra lai ngay thang \n"); }while(1); } //=============ham khoi tao ====== void KhoiTao(DSNV *head){ *head=NULL; } //=========ham tim nhan vien====== DSNV TimNhanVien(DSNV head,char key[10]) { DSNV p; p=head; while((p!=NULL)&&strcmp(p->dataNV.manv,key)!=0)
p=p->next;
return p;
}
//============ham nhap nhan vien ==
void NhapNhanVien(NhanVien &nv){
// Rang buoc du lieu nhap :Phai la 0 hay 1 ,0<= ngay cong <= 31; //clrscr(); printf("\n\t Nhap cac thong tin cua nhan vien : Ho lot , ten , ....\n\n"); fflush(stdin); printf("\n\t Ho lot : "); gets(nv.holot); fflush(stdin); printf("\n\t Ten : "); gets(nv.ten); fflush(stdin); NhapThoiGian(nv.ngaysinh); // nhap vao gioi tinh ( rang buoc la 0 hay 1) do{ fflush(stdin); printf("\n\t Phai (1:Nu, 0:Nam ): "); scanf("%d" ,&nv.phai); }while(nv.phai!=0 && nv.phai!=1); fflush(stdin); printf("\n\t Noi sinh : "); gets(nv.noisinh); fflush(stdin); printf("\n\t Phu cap :"); scanf("%ld",&nv.phucap); fflush(stdin); printf("\n\t Luong co ban :"); scanf("%ld",&nv.lcb); fflush(stdin); printf("\n\t Ngay cong :"); scanf("%d",&nv.ngaycong); } //=============ham in nhan vien==== void InNhanVien(NhanVien nv){ float luong;// bien tam chua luong luong = float(nv.lcb*nv.ngaycong)/26 + nv.phucap; // tinh luong printf("\n\t Ma so :%s ",nv.manv); printf("\n\t Ho va ten :%s %s",nv.holot,nv.ten); printf("\n\t Ngay sinh :%d/%d/%d ",nv.ngaysinh.ngay,nv.ngaysinh.thang,nv.ngaysinh.nam); if(nv.phai==1) printf("\n\t Phai :nu "); else printf("\n\t phai: nam "); printf("\n\t Noi sinh :%s",nv.noisinh); printf("\n\t Phu cap :%ld",nv.phucap); printf("\n\t Luong co ban :%ld",nv.lcb); printf("\n\t Ngay cong :%d",nv.ngaycong); printf("\n\t Luong :%.1f",luong); } //===============ham tim nhan vien====== void Tim(DSNV first){ NhanVien nv; DSNV pos; printf("\n\t Ma nhan vien : "); fflush(stdin); gets(nv.manv); pos=TimNhanVien(first,nv.manv); // kiem tra xem nhan vien co trong danh sach hay chua if(pos==NULL) // nhan vien nay chua co trong danh sach printf("khong co nhan vien nay"); else InNhanVien(pos->dataNV);

}
// =========ham them cuoi =========
void ThemCuoiNV(DSNV *first,NhanVien NV_Them)
{
DSNV ps,ns;
ns=new Node;
ns->dataNV=NV_Them;
ps=*first;
if(ps==NULL)//danh sach rong
{
ns->next=*first;
*first=ns;
}
else
{
while(ps->next!=NULL)
ps=ps->next;
ns->next=ps->next;
ps->next=ns;
}
}
//====================
//=======================================//
void Them(DSNV *first){
NhanVien nv;//bien tam chua cac thong tin cua nhan vien
char tieptuc;
// vong lap them nhan vien
do{
printf("\n\t Them nhan vien vao danh sach ");
printf("\n\t Ma nhan vien : ");
fflush(stdin);
gets(nv.manv);
// kiem tra xem nhan vien co trong danh sach hay chua
if(TimNhanVien(*first,nv.manv)==NULL) // nhan vien nay chua co trong danh sach
{
NhapNhanVien(nv);// nhap cac thong tin ho lot , ten ....
ThemCuoiNV(first,nv); // them nhan vien nv vao danh sach

}
else{
printf("\n\t Nhan vien co ma so :%s da co trong danh sach ",nv.manv);

}
printf("\n\t Tiep tuc (Y/N)?: ");
tieptuc=getch();

}while((tieptuc=='Y')||(tieptuc=='y'));
}
//=========sua nhan vien========
void SuaNhanVien(DSNV *first)
{
DSNV ps;
NhanVien a;
Date tgTam;
do{
printf("\n nhap ma so nhan vien can sua:");
fflush(stdin);
gets(a.manv);
ps=TimNhanVien(*first,a.manv);
if(ps!=NULL)
break;
printf("\n Ma so nhan vien khong ton tai . vui long nhap lai");
}while(1);
printf("\n Tim thay ma so nhan vien \n");
InNhanVien(ps->dataNV);
printf("\n Tien hanh chinh sua: \n");
NhapNhanVien(a);
ps->dataNV=a;
printf("\n da sua xong");
}
//==========xoa mot nhan vien===
void XoaNhanVien(DSNV *first)
{
DSNV ps,qs;
char k[10] ;
ps = *first;
printf("\n nhap ma so nhan vien can xoa:");
fflush(stdin);
gets(k);
if(TimNhanVien(*first,k)==NULL)
printf("\n Ma so nhan vien khong ton tai . vui long thu lai");
else
{
if(ps->next==NULL)
{
*first=NULL;
delete ps;
}
else{
while(ps!=NULL)
{
qs=ps;
ps=ps->next;
if(strcmp(ps->dataNV.manv,k)==0)
break;
}
qs->next=ps->next;
delete ps;
}
printf("\n Da xoa xong");
}
}
//================sap xep danh sach theo ten=========
void SapXep(DSNV *first){
DSNV p,q;
NhanVien tam;
p= *first;
while(p->next!=NULL){
q=p->next;
while(q!=NULL){
if(strcmp(q->dataNV.ten,p->dataNV.ten)<0){ tam="q-">dataNV;
q->dataNV=p->dataNV;
p->dataNV=tam;

}
q=q->next;
}
p=p->next;
}
printf("\nsap xep xong");
BangLuong(*first);

}
//============= in bang luong ========
void BangLuong(DSNV first){
float luong,tongluong=0;
int stt=1;
char gach[80],tua[80];
DSNV p;
p = first;
strcpy(gach,"--------------------------------------------------------------------------------");
strcpy(tua,"|STT | Ho Ten | LCB | Phu cap |Ngay cong | Luong ");
clrscr();
printf("\n cong ty Hong Minh ");
printf("\n\t\t\t BANG LUONG \n");
printf("%s",gach);
printf("%s",tua);
while(p!=NULL)
{
luong=float(p->dataNV.lcb*p->dataNV.ngaycong)/26+p->dataNV.phucap;
tongluong+=luong;
// in cac thong tin chi tiet cua nhan vien
printf("\n|%-5d|%-15s %10s|%10ld|%12ld|%10d|%10.1f",stt,p->dataNV.holot
,p->dataNV.ten,p->dataNV.lcb,p->dataNV.phucap,p->dataNV.ngaycong
,luong);
stt++;
p=p->next;
// xu ly ngat dong :10 dong
if(stt%10==0){
getch();
}


}
printf("\n\t\t Tong luong : %f",tongluong);
}
//=========xoa tat ca danh sach ==========
void XoaTatCaNV(DSNV *first)
{
DSNV ps,qs;
ps=*first;
*first=NULL;
while(ps!=NULL)
{
qs=ps;
ps=ps->next;
delete qs;
}
printf("\n Da xoa xong");

}
//==========ghi file===========
void GhiFileDuLieu(DSNV first)
{
FILE *f;
DSNV ps;NhanVien a;
f=fopen("DULIEU.NTL","wb");
ps=first;
while(ps!=NULL)
{
a=ps->dataNV;
fwrite(&a,sizeof(a),1,f);
ps=ps->next;
}
fclose(f);
}
//============doc file =============
void DocFileDuLieu(DSNV *first)
{
FILE *f;
NhanVien a;
f=fopen("DULIEU.NTL","rb");
if (f==NULL )
printf("\n DU LIEU KO TON TAI .DA TAO MOI FILE DU LIEU \n");
else
{
printf("\n DA TAI DU LIEU TU FILE DU LIEU \n");
while(fread(&a,sizeof(a),1,f)==1)
{
ThemCuoiNV(first,a);
}
fclose(f);
}

}
int main(){

DSNV head;
KhoiTao(&head);
DocFileDuLieu(&head);
//NhanVien n;
//NhapNhanVien(n);
//InNhanVien(n);
int luaChon;
giaoDien:
manHinh();
printf("\n Nhap lua chon : ");
scanf("%d",&luaChon);
clrscr();;
switch(luaChon)
{
case 0:
goto thoatChuongTrinh;
break;
case 1:
Them(&head);
break;
case 2:
Tim(head);
break;
case 3:
SuaNhanVien(&head);
break;
case 4:
SapXep(&head);
break;
case 5:
XoaNhanVien(&head);
break;
case 6:
BangLuong(head);
break;
case 7:
XoaTatCaNV(&head);
break;

default:
printf("\n CHUONG TRINH KHONG CO CHUC NANG NAY");
}
do
{
cout<<"\n An phim Enter de ve menu : ";  
getch();  
break;  
}while(1);  
clrscr();  
goto giaoDien; 
thoatChuongTrinh: 
do {  
printf("\n Chuong trinh ket thuc.Ban se luu lai nhung gi vua thuc hien chu"); printf("\n chon Y de luu lai va thoat,N de thoat khong luu\n 
chon M de ve menu tiep tuc cong viec \n 
chon S de luu file roi tiep tuc cong viec\n");
fflush(stdin);
int chonThoat=getch(); 
if(toupper(chonThoat)=='Y')  
{  
GhiFileDuLieu(head);  
break;  
}  
if(toupper(chonThoat)=='N')  
{ break; }  
if(toupper(chonThoat)=='M')  
{ clrscr;  
goto giaoDien;  
break; }
if(toupper(chonThoat)=='S')
{ GhiFileDuLieu(head);
clrscr();
goto giaoDien;
break; }
clrscr();
printf("\n ban nhap sai chuc nang hay kiem tra lai\n"); }while(1);
return 0; }

CODE + DEMO giải thuật tham lam ( greedy) GTS1 & GTS2.

1. Lý thuyết
- Greedy mình đã trình bày bên GTS1. GTS2 có độ chính xác cao và có độ phức tạp tăng theo. Thuật giải thay đổi so với GTS1
2. Demo
môi trường thực hiện C-FREE
#include<iostream.h>
#include<fstream.h>

using namespace std;

int n,p,v,cs;
int Cost;
int mtTP[20][20];
int Tour[10][20];
int mCost[10];
int Flag[20];

void Input()
{
ifstream f;
f.open("Input.txt");
if(f.bad())
{
cout<<"\n\t File khong ton tai. \n";
exit(1);
}
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
f>>mtTP[i][j];
}
f.close();
}

int GTS1(int v)
{
for(int i=0;i<=n;i++) Flag[i]=0;
int t=v;
int dem=0;
Tour[t][0]=v;
Cost=0;
Flag[v]=1;
int tmp=v;
while(dem!=n-1)
{
int tmpCost=100;
int co;
for(int i=1;i<=n;i++)
{
if(tmpCost>mtTP[v][i] && Flag[i]==0 && mtTP[v][i]!=-1)
{
tmpCost=mtTP[v][i];
co=i;
}
}
dem++;
Tour[t][dem]=co;
Cost+=tmpCost;
Flag[v]=1;
v=co;
}
Cost+=mtTP[v][tmp];
mCost[t]=Cost;
return Cost;
}

void GTS2()
{
int tmp=100;
for(int i=1;i<=p;i++)
{
int a =GTS1(i);
if(tmp>a)
{
tmp=a;
cs=i;
}
}
}

void Output(int cs)
{
ofstream g;
g.open("Output.txt");
g<<"Chi phi cho qua trinh :"<<mCost[cs]<<endl;
g<<"Hanh trinh nhu sau :";
for(int i=0;i<n;i++)
g<<Tour[cs][i]<<" -->";
g<<Tour[cs][0]<<endl;
}

int main()
{
cout<<" **************** TRI TUE NHAN TAO ******************* \n";
cout<<" | | \n";
cout<<" ************ Khoa CNTT - DH GTVT TPHCM ************** \n";
cout<<" | bai toan ung dung giai thuat GTS2 | \n";
cout<<" ***************************************************** \n\n\n\n\n";
Input();
GTS2();
Output(cs);
return 0;
}
những bài viết về code của mình chỉ mang ý ngĩa tham khảo. cũng có những bài mình code và có những bài bạn bè học chung mình code
xem giải thuật GTS1

10/23/10

code + demo giải thuật A* (A star - A sao) cho bài toán TACI

code + demo giải thuật A* (A star - A sao)cho bài toán TACI
ngôn ngữ viết C++. trình biên dịch C-free. bài toán TACI ứng dụng thuật giải A*
giai thua a sao, sao thuat a star, giai thuat a*
code:
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
#include<stdio.h>
#include<windows.h>
void xuat(int X[3][3])
{
cout<<"\n *---*---*---*";
for(int i=0;i>3;i++)
{
cout<<"\n | ";
for(int j=0;j<3;j++)
if((X[i][j]==0)||(X[i][j]==13))
cout<<" | ";
else
cout<<X[i][j]<<" | ";
cout<<"\n *---*---*---*";
}
cout<<endl;
}
int kiem_tra(int X[3][3],int y)
{
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
{
if(X[i][j]==y)
return 1;
}
return 0;
}
void nhap_s(int S[3][3])
{
int tam;
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
{
system("cls");
cout<<"\n NHAP VAO YEU CAU BAI TOAN ";
cout<<"\n Luu y o trong co gia tri = 0";
cout<<"\n Trang thai dau : \n";
xuat(S);
cout<<" Nhap cac so vao trang thai dau \n";
cout<<"\n Nhap nhap vao vi tri dong "<<i+1<<" cot "<<j+1<<" = ";
cin>>tam;
while(kiem_tra(S,tam)==1)
{
cout<<" so vua nhap da ton tai \n Vui long nhap so khac: ";
cin>>tam;
}
while(tam<8)
{
cout<<" Vui long nhap cac so tu 0 -> 8 : ";
cin>>tam;
}
S[i][j]=tam;
}
}
void nhap_G(int G[3][3],int S[3][3])
{
int tam;
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
{
system("cls");
cout<<"\n NHAP VAO YEU CAU BAI TOAN ";
cout<<"\n Luu y o trong co gia tri = 0";
cout<<"\n Trang thai dau : \n";
xuat(S);
cout<<"\n Trang thai dich :\n";
xuat(G);
cout<<" Nhap cac so vao trang thai dich \n";
cout<<"\n Nhap nhap vao vi tri dong "<<i+1<<" cot "<<j+1<<" = ";
cin>>tam;
while(kiem_tra(G,tam)==1)
{
cout<<" so vua nhap da ton tai \n Vui long nhap so khac: ";
cin>>tam;
}
while(tam>8)
{
cout<<" Vui long nhap cac so tu 0 -> 8 : ";
cin>>tam;
}
G[i][j]=tam;
}
}
void khoitao(int A[3][3],int B[3][3])
{
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
{
A[i][j]=13;
B[i][j]=13;
}
}
int Her(int A[3][3],int B[3][3])
{
int dem=0;
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
if(A[i][j]!=B[i][j])
dem++;
return dem;
}
struct trang_thai
{
int T[3][3];
int g;
int h;
int f;
};
void input_ds(trang_thai DS[100],int&nds,trang_thai X)
{
DS[nds]=X;
nds=nds+1;
}
int tim_min(trang_thai DS[100],int nds)
{
if(nds==0)
{
return -1;
}
else
{
int min,vi_tri;
int i=(nds-1);
min=DS[0].f;
vi_tri=0;
while(i>=0)
{
if(min>DS[i].f)
{
min=DS[i].f;
vi_tri=i;
}
i--;
}
return vi_tri;
}
}
void output_ds(trang_thai DS[100],int&nds,int vi_tri,trang_thai&X)
{
if(vi_tri==(nds-1))
{
X=DS[vi_tri];
nds=nds-1;
}
else
{
X=DS[vi_tri];
for(int i=vi_tri;i<nds-1;i++)
DS[i]=DS[i+1];
nds=nds-1;
}
}
void tim_o_trong(trang_thai X,int&i,int&j)
{
int ngat=0;
int m,n;
for(m=0;m<3;m++)
{
for(n=0;n<3;n++)
{
if(X.T[m][n]==0)
{
ngat=1;
break;
}
}
if(ngat==1)
{
break;
}
}
i=m;
j=n;
}
void AKT(trang_thai DS[100],int&nds,int G[3][3],trang_thai tam)
{
int vi_tri_min;
int i,j;
while(tam.f!=tam.g)
if(nds==0)
{
cout<<" Khong tim duoc loi giai ";
break;
}
else
{
vi_tri_min=tim_min(DS,nds);
output_ds(DS,nds,vi_tri_min,tam);
xuat(tam.T);
tim_o_trong(tam,i,j);
if(i<2)
{
int t;
trang_thai tam2;
tam2=tam;
t=tam.T[i+1][j];
tam2.T[i+1][j]=tam2.T[i][j];
tam2.T[i][j]=t;
tam2.g=tam2.g+1;
tam2.h=Her(tam2.T,G);
tam2.f=tam2.g+tam2.h;
input_ds(DS,nds,tam2);
}
if(i>0)
{
int t;
trang_thai tam2;
tam2=tam;
t=tam.T[i-1][j];
tam2.T[i-1][j]=tam2.T[i][j];
tam2.T[i][j]=t;
tam2.g=tam2.g+1;
tam2.h=Her(tam2.T,G);
tam2.f=tam2.g+tam2.h;
input_ds(DS,nds,tam2);
}
if(j<2)
{
int t;
trang_thai tam2;
tam2=tam;
t=tam.T[i][j+1];
tam2.T[i][j+1]=tam2.T[i][j];
tam2.T[i][j]=t;
tam2.g=tam2.g+1;
tam2.h=Her(tam2.T,G);
tam2.f=tam2.g+tam2.h;
input_ds(DS,nds,tam2);
}
if(j>0)
{
int t;
trang_thai tam2;
tam2=tam;
t=tam.T[i][j-1];
tam2.T[i][j-1]=tam2.T[i][j];
tam2.T[i][j]=t;
tam2.g=tam2.g+1;
tam2.h=Her(tam2.T,G);
tam2.f=tam2.g+tam2.h;
input_ds(DS,nds,tam2);
}
}
}
void main()
{
int A[3][3],B[3][3];
int x,y;
trang_thai ds_tr_thai[100];
int nt=0;
khoitao(A,B);
nhap_s(A);
nhap_G(B,A);
//cout<<"\n her cua a= "<<Her(A,B);
trang_thai tam;
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
tam.T[i][j]=A[i][j];
tam.g=0;
tam.h=Her(tam.T,B);
tam.f=tam.g+tam.h;
input_ds(ds_tr_thai,nt,tam);
cout<<"\n---------------------------------------------------------------";
cout<<" Ket qua la: ";
AKT(ds_tr_thai,nt,B,tam);
}

những bài viết về code của mình chỉ mang ý ngĩa tham khảo. cũng có những bài mình code và có những bài bạn bè học chung mình code

10/16/10

code + demo bài toán TACI = giải thuật Akt

code + demo bài toán TACI = giải thuật Akt
ngôn ngữ C++ , trình biên dịch C-Free, bài toán TACI và thuật giải Akt. (bài tập của môn TRÍ TUỆ NHÂN TẠO)

#include <stdio.h>
#include<conio.h>
#include<math.h>
int a[3][3]={ {2,8,3},{1,6,4},{7,0,5} };
int A[3][3]={ {1,2,3},{8,0,4},{7,6,5} };
int b[3][3]={ {2,8,3},{1,6,4},{7,0,5} };
int I,J,I1,J1,g=0,h;
void xuly();
int ketthuc();
int tinh();
int tim(int );
void timdinhtrong();
void swap(int & , int &);
void xetchon();
void chep1();
void chep2();
void main()
{// clrscr();
xuly();
printf("\n So buoc lap la : %d",g);
getch();
}
void xuly(){
while(!ketthuc())
{
g++;
xetchon();
printf("%d \n",h);
for(int i=0; i<3; i++)
{
for(int j=0; j<3; j++)
printf("%d ",a[i][j]);printf("\n");
}
getch();
}
}
int ketthuc()
{
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
if (a[i][j]!=A[i][j])
return 0;
return 1;
}
int tinh()
{
int bac=0;
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
{
if(tim(b[i][j]))
bac+=abs(I1-i)+abs(J1-j);
}
return bac;
}
int tim(int x)
{
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
if (A[i][j]==x && x!=0 )
{
I1=i;
J1=j;
return 1;
}
return 0;
}
void timdinhtrong()
{
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
if (a[i][j]==0)
{
I=i;J=j;
}
}
void swap( int &x , int &y)
{
int temp;
temp=x;
x=y;
y=temp;
}
void xetchon()
{
int min=100;
timdinhtrong();
for(int j=0;j<3;j++)
for(int l=0;l<3;l++)
{
if ((abs(I-j)+(abs(J-l))==1))
{
swap(b[j][l],b[I][J]);
h=tinh();
if( h<min )
{
min=h;
chep2();
}
swap(b[j][l],b[I][J]);
}
}
chep1();
h=min;
}
void chep1()
{
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
b[i][j]=a[i][j];
}
void chep2()
{
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
a[i][j]=b[i][j];
}


những bài viết về code của mình chỉ mang ý ngĩa tham khảo. cũng có những bài mình code và có những bài bạn bè học chung mình code

10/13/10

CODE + DEMO giải thuật tham lam ( greedy) GTS1 & GTS2

1. Lý thuyết
Nguyên lý tham lam (Greedy): Lấy tiêu chuẩn tối ưu (trên phạm vi toàn cục) của bài toán để làm tiêu chuẩn chọn lựa hành động cho phạm vi cục bộ của từng bước (hay từng giai đoạn) trong quá trình tìm kiếm lời giải.

Bài toán: Hãy tìm một hành trình cho một người giao hàng đi qua n điểm khác nhau, mỗi
điểm đi qua một lần và trở về điểm xuất phát sao cho tổng chiều dài đoạn đường cần đi là
ngắn nhất. Giả sử rằng có con đường nối trực tiếp từ giữa hai điểm bất kỳ.
Tất nhiên ta có thể giải bài toán này bằng cách liệt kê tất cả con đường có thể đi, tính
chiều dài của mỗi con đường đó rồi tìm con đường có chiều dài ngắn nhất. Tuy nhiên,
cách giải này lại có độ phức tạp 0(n!) (một hành trình là một hoán vị của n điểm, do đó,
tổng số hành trình là số lượng hoán vị của một tập n phần tử là n!). Do đó, khi số đại lý
tăng thì số con đường phải xét sẽ tăng lên rất nhanh.
Một cách giải đơn giản hơn nhiều và thường cho kết quả tương đối tốt là dùng một thuật
giải Heuristic ứng dụng nguyên lý Greedy. Tư tưởng của thuật giải như sau:
Từ điểm khởi đầu, ta liệt kê tất cả quãng đường từ điểm xuất phát cho đến n đại
lý rồi chọn đi theo con đường ngắn nhất.
Khi đã đi đến một đại lý, chọn đi đến đại lý kế tiếp cũng theo nguyên tắc trên.
Nghĩa là liệt kê tất cả con đường từ đại lý ta đang đứng đến những đại lý chưa đi
đến. Chọn con đường ngắn nhất. Lặp lại quá trình này cho đến lúc không còn đại
lý nào để đi.
Bạn có thể quan sát hình sau để thấy được quá trình chọn lựa. Theo nguyên lý Greedy, ta
lấy tiêu chuẩn hành trình ngắn nhất của bài toán làm tiêu chuẩn cho chọn lựa cục bộ. Ta
hy vọng rằng, khi đi trên n đoạn đường ngắn nhất thì cuối cùng ta sẽ có một hành trình
ngắn nhất. Điều này không phải lúc nào cũng đúng. Với điều kiện trong hình tiếp theo thì
thuật giải cho chúng ta một hành trình có chiều dài là 14 trong khi hành trình tối ưu là 13.
Kết quả của thuật giải Heuristic trong trường hợp này chỉ lệch 1 đơn vị so với kết quả tối
ưu. Trong khi đó, độ phức tạp của thuật giải Heuristic này chỉ là 0(n^2 ).
Tất nhiên, thuật giải theo kiểu Heuristic đôi lúc lại đưa ra kết quả không tốt, thậm chí rất tệ
Để hiểu hơn thì các bạn xem slide mình họa Tại đây
2. Demo
bài này viết theo ngôn ngữ C++ , môi trường thực hiện C-Free 4.0 , BOLAND C ++....
các bạn tham khảo
#include<iostream.h>
#include<fstream.h>
#include<stdio.h>
int n,v;
int Cost;
int Tour[20];
int mtTP[20][20];
int Flag[20];

void Input()
{
ifstream f; // tao file
f.open("Input.txt"); // mo file
if(f.bad()) // kiem tra file, neu file chua dc tao
{
printf("\n\t File khong ton tai. \n\n");
}
f>>n>>v;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
f>>mtTP[i][j];
}
for(int i=0;i<=n;i++)
Flag[i]=0;
f.close();
}

void Output()
{
ofstream g;
g.open("Output.txt");
g<<"Chi phi cho qua trinh :"<<Cost<<endl;
g<<"Hanh trinh nhu sau :";
for(int i=0;i<n;i++)
g<<Tour[i]<<" -->";
g<<Tour[0]<<endl;
}
// theo thuat giai
void GTS1()
{
int dem=0;
Tour[0]=v;
Flag[v]=1;
int tmp=v;
while(dem!=n-1)
{
int tmpCost=100;
int co;
for(int i=1;i<=n;i++)
{
if(tmpCost>mtTP[v][i] && Flag[i]==0 && mtTP[v][i]!=-1)
{
tmpCost=mtTP[v][i];
co=i;
}
}
dem++;
Tour[dem]=co;
Cost+=tmpCost;
Flag[v]=1;
v=co;
}
Cost+=mtTP[v][tmp];
}
int main()
{
printf("**************** TRI TUE NHAN TAO ******************* \n");
printf("| | \n");
printf("************ KHOA CNTT - DH GTVT TPHCM ************** \n");
printf("| bai toan ung dung giai thuat GTS1 | \n");
printf("***************************************************** \n\n\n\n\n");
Input();
GTS1();
Output();
return 0;
}
các bạn tạo file input.txt và output.txt nhé những bài viết về code của mình chỉ mang ý ngĩa tham khảo. cũng có những bài mình code và có những bài bạn bè học chung mình code xem tiếp GTS2

hướng dẫn tải office 2007 portable

sau 1 thời gian dùng OFFICE 2007 các bạn bị MS block. nếu bạn vẫn muốn dùng OFFICE 2007 thì xem chi tiết bài viết dưới đây :
trước tiên bạn vào đây để tải
dung lượng 205MB các bạn nên dùng DOWNLOAD IDM để tải cho nhanh
cách download:

click SLOW DOWNLOAD ( mình dùng FREE)
ngồi chờ loading
DOWNLOAD NOW
 tải xong bạn giải nén với WINRAR. váo thư mục chứa tập tin bạn đã tải
nhấp chuột phải chọn "extract here"
nếu bạn nhấp chuột phải mà ko thấy extract here thì có thể máy bạn chưa cài WINRAR. bạn có thể tải WINRARtại đây . cài winrar các bạn enter là được

lưu ý: đây là bản office ko cần cài đặt. sau khi giải nén các bạn mở lên và dùng bình thường. có 7 chức năng trong bản office portable 7 này

10/3/10

hình hài hước - Obama cầm dép tổ ong :D

hình hài hước - Obama cầm dép tổ ong :D
một số hình ảnh hài hước. post lên chỉ để giải trí. Cảm ơn các bạn đã ghé xem

chắc hẳn ai cũng biết
và đây trước công chúng ông ấy đã tuyên dương "hàng VIỆT NAM chất lượng cao"
Obama cầm dép tổ ong


nước nào dám....
trên bảo dưới không nghe
còn gì là người nữa.....
gió..........to quá
miễn bàn luận :D :D
nhiếp ảnh gia tài baaaaa
tranh bóng của anh à?
trắng gì mà sáng thế ???????
chú mày run thế? anh bắn sao được





ko ăn thua
trận nào cũng xin ra sân
cứ từ từ
khổ thân thằng bé nhà tôi....

sao chép tập tin ...