Thứ Tư

Lập trình viết ứng dụng Facebook


Cảm giác của bạn thế nào khi nhìn thấy được “thành phẩm” của mình trên Facebook? Bài viết sẽ gợi ý cho bạn cách tạo một ứng dụng nhỏ trên Facebook.
Hiện tại, theo thống kê danh mục ứng dụng của Facebook có chứa khoảng hơn 550.000 ứng dụng. Bạn muốn “nhúng” những bài trình bày trong hồ sơ Facebook của mình hay muốn chia sẻ những quyển sách và bộ phim yêu thích với bạn bè, hay chỉ muốn chơi một số trò chơi với những thành viên "không quen" khác trên Facebook. Tất cả điều nói trên sẽ được các ứng dụng hiện có trên Facebook đáp ứng cho bạn. Tuy nhiên, nếu bạn không thích dùng những ứng dụng được “dọn sẵn” và không muốn nhìn thấy những thương hiệu của hãng thứ 3 hay các mẫu quảng cáo, thì bạn có thể tự phát triển ứng dụng Facebook theo cách riêng. 
Dưới đây sẽ là một số bước để giúp bạn tạo ra ứng dụng nhỏ trên Facebook theo ý muốn; đây chỉ là những ví dụ đơn giản về viết ứng dụng Facebook dùng code HTML và ASP.Net.
Để viết ứng dụng Facebook, bạn cần một số kiến thức về các ngôn ngữ lập trình web và cần biết một số máy chủ (web server) cho phép bạn có thể đặt ứng dụng Facebook lên đó.
1. Ứng dụng Facebook dùng code HTML
Bước 1: Giả sử bạn đã có tài khoản trên Facebook, thêm ứng dụng Developer (https://www.facebook.com/developers/) vào hồ sơ Facebook của bạn, sau đó nhấn “Set Up New App”.
Bước 2: Bạn đặt tên cho ứng dụng Facebook, đồng ý với những điều khoản trên Facebook.

Tiếp tục nhập mã bảo vệ, sau đó bạn có thể tải lên một số hình ảnh để chọn làm biểu tượng (logo) cho ứng dụng của bạn.
Bước 3: Bạn có thể dùng công cụ trình biên tập WYSIWYG HTML hay notepad, để ghi nội dung bạn muốn hiển thị bên trong ứng dụng Facebook. Trong ví dụ này sẽ thiết lập ứng dụng máy tính điện tử (calculator).
<html>
<head>
<title>PC World VN Calculator by JavaScript</title>
<script type="text/javascript" src="calculate.js"></script>
</head>
<body>
<h1>PC World VN Calculator by JavaScript</h1>
<form name="calculator">
<table border="0" cellpadding="2" cellspacing="0" background="/images/background.jpg" width="233" height="259">
<tr><td align="center" style="padding-bottom:0px;padding-top:15px"><input type="text" name="win" value="0" style="height:30px;width:190px;text-align:right;font-size:20px;font-weight:bold;border:1px solid #666666;padding-right:2px;" maxlength='15'></td></tr>
<tr><td>
<table border="0" cellpadding="5" cellspacing="1" align="center">
<tr><td style="padding-top:0px"><input type="button" value="CE" style="width:40px" onClick="calc('CE')"></td>
<td style="padding-top:0px"><input type="button" value="C" style="width:40px" onClick="calc('C')"></td>
<td style="padding-top:0px"><input type="button" value="+/-" style="width:40px" onClick="calc('+/-')"></td>
<td style="padding-top:0px"><input type="button" value="%" style="width:40px" onClick="calc('%')"></td></tr>
<tr><td><input type="button" value="7" style="width:40px" onClick="calc('7')"></td>
<td><input type="button" value="8" style="width:40px" onClick="calc('8')"></td>
<td><input type="button" value="9" style="width:40px" onClick="calc('9')"></td>
<td><input type="button" value="/" style="width:40px" onClick="calc('/')"></td></tr>
<tr><td><input type="button" value="4" style="width:40px" onClick="calc('4')"></td>
<td><input type="button" value="5" style="width:40px" onClick="calc('5')"></td>
<td><input type="button" value="6" style="width:40px" onClick="calc('6')"></td>
<td><input type="button" value="x" style="width:40px" onClick="calc('*')"></td></tr>
<tr><td><input type="button" value="1" style="width:40px" onClick="calc('1')"></td>
<td><input type="button" value="2" style="width:40px" onClick="calc('2')"></td>
<td><input type="button" value="3" style="width:40px" onClick="calc('3')"></td>
<td><input type="button" value="-" style="width:40px" onClick="calc('-')"></td></tr>
<tr><td><input type="button" value="0" style="width:40px" onClick="calc('0')"></td>
<td><input type="button" value="." style="width:40px" onClick="calc('.')"></td>
<td><input type="button" value="=" style="width:40px" onClick="calc('=')"></td>
<td><input type="button" value="+" style="width:40px" onClick="calc('+')"></td></tr>
</table>
</td></tr>
</table>
</form>
</body>
</html>
Bước 4: Truy cập máy chủ web của bạn, tạo một thư mục con gọi là “facebook” và tải lên file code (index.php hay index.html) mà bạn đã tạo ở trên. Trong trường hợp này, ứng dụng được đặt trên máy chủ web www.thegioigame.vn.
Cavas Page: là đường dẫn URL cho ứng dụng (http://apps.facebook.com/tgvt_fb_app/).
Canvas URL: là nơi đặt dịch vụ web (web service) để lưu trữ ứng dụng sẽ được liên kết với Facebook (http://www.thegioigame.vn/facebook).
Hoàn tất xong bạn nhớ lưu lại các thao tác vừa làm. Bạn hãy quan tâm đến 2 khóa: API Key và App Secret, 2 khóa này cần khai báo trong ứng dụng khi có truy cập thư viện (API) của Facebook.  
Bước 5: Thành quả cuối cùng của bạn. Đó chính là ứng dụng của riêng bạn hiện đã có mặt trên Facebook.
Qua 5 bước này sẽ giúp bạn phần nào hình dung ra cách thức tạo một ứng dụng đơn giản trên Facebook. Các bạn cũng có thể tự tạo những ứng dụng khác theo sở thích và nhu cầu của riêng mình.
Từ ứng dụng đơn giản này, bạn cũng có thể xây dựng các ứng dụng có mức độ phức tạp hơn, chẳng hạn có kèm thêm RSS để cập nhật tin tức, chèn thêm các đoạn video clip… Hy vọng các bạn sẽ tạo được nhiều ứng dụng bổ ích và hữu dụng để chia sẻ cùng với bạn bè.
2. Ứng dụng Facebook với ASP.Net
Bước 1:
Đăng nhập vào facebook: https://www.facebook.com/
Vào phần phát triển ứng dụng: https://www.facebook.com/developers/ , nhấn nút “Set Up New App” để tạo ứng dụng mới.
Bước 2:
Điền tên ứng dụng và chọn đồng ý, nhấn nút khởi tạo.

Nhập mã xác nhận rồi submit.
Bước 3: 
Tab About: Có thể mô tả ứng dụng trong phần Description, chọn icon, logo cho ứng dụng…
Tab Facebook Integration
Application ID và Application Secret là 2 key của ứng dụng cho phép ta viết code truy xuất thông tin.
Canvas Page là trang ứng dụng facebook.
Canvas URL sẽ là trang ASP.Net mà ta viết code truy xuất thông tin.
Trong ví dụ này, mã lệnh (code) sẽ được đưa lên 1 host free http://phuonglam.somee.com. Các bạn có thể vào trang http://somee.com/ để đăng ký 1 host free để sử dụng, trang này hỗ trợ khá tốt ASP.Net tất cả framework, tuy nhiên trang hiển thị sẽ bị phần quảng cáo ở phía trên và dưới (chịu thôi, đồ “chùa” mà).
Hoàn tất, nhấn Save Changes

Đường dẫn của ứng dụng sẽ là: http://apps.facebook.com/pcwsample/
Bước 4:  
Download Starter Kit tích hợp vào Visual Studio.
Cài đặt Starter kit:
Bước 5:
Khởi chạy Visual Studio tạo website. Chọn Facebook Starter Kit v2.1

Bước 6: 
Code; chỉnh tập tin web.config các “key” cho đúng với ứng dụng Facebook đã tạo ban đầu.
 
Starter Kit sẽ tự tạo cho chúng ta trang Default.aspx có nội dung như hình vẽ:  
Ghi chú
Image1 hiện thị hình ảnh của người tạo ứng dụng.
Control FriendList1 sẽ liệt kê hình bạn bè của người tạo ứng dụng.
DropDownList1 thay đổi sẽ làm thay đổi Image2 hiển thị hình ảnh bạn trong danh sách bạn bè friend list.
Bước 7: 
Đưa website lên host free đã tạo.
Bước 8:
Chạy ứng dụng facebook: http://apps.facebook.com/pcwsample/ 
Hộp thoại Request for Permission hiện ra, chọn Allow.

Kết quả cuối cùng:

Chúc các bạn thành công! 
Nguồn pcworld.com.vn

Thứ Sáu

Tất cả các lệnh cấu hình trong CCNA theo chuyên mục

Phần 1. Routing - Định Tuyến (Các giao thức phức tạp)
OSPF.

Note: Tất cả những router có cùng area phải cấu hình giống nhau tất cả các thông số thì khu vực đó mới hoạt động đúng chức năng được.

1. Cấu hình cơ bản

Router(config)#router ospf process ID
Router(config-router)#network Network_number Wildcard_mask area_ID

2. Cấu hình priority ở các interface để bầu DR và BDR

Priority càng lớn thì khả năng được bầu làm DR càng cao, ngược với bầu Root brige của Switch, càng nhỏ thì lại càng được bầu.

Router(config)#interface fastethernet 0/0
Router(config-int)#ip ospf priority 55

Sau khi cấu hình xong priority có thể kiểm tra bằng lệnh.

Router# show ip ospf interface f0/0

3. Chỉnh sửa lại OSPF cost metric trong mỗi interface

Cost càng nhỏ thì tuyến đó càng được coi là best path

Router(config-int)#ip ospf cost 1

4.Cấu hình OSPF Authentication ở các interface và áp dùng vào router

Authentication key được hiểu như là password để các router trong cùng một vùng chia sẻ với nhau.

a.Cấu hình authentication đơn giản

Router(config-if)#ip ospf authentication-key password
Router(config-router)#area area number authentication

b.Cấu hình authentication theo dạng mã hoá, bảo mật cao.

Router(config-if)ip ospf message-digest-key key ID md5 encryption-type key
Router(config-router)#area area ID authentication message-digest

5.Cấu hình OSPF timer trong các interface

Router(config-if)ip ospf hello-interval timer
Router(config-if)ip ospf dead-interval timer

6.Cấu hình quảng bá một tuyến mặc định trong OSPF

Router(config-router)#default-information originate

7.Quảng bà một tuyến khác (không phải là default)

Router(config-router)#redistribute protocols subnets

8.Các lệnh show dùng để kiểm tra cấu hình OSPF

show ip protocol
show ip route
show ip ospf
show ip ospf interface
show ip ospf database
show ip ospf neighbor detail
clear ip route *
debug ip ospf events
debug ip ospf adj

EIGRP

1.Cấu hình cơ bản.

Router(config)#router eigrp autonomous number
Router(config-router)#network network number
Router(config-router)#eigpr log-neighbor-changes (Không có cũng được)
Router(config-router)#no auto-summary

2.Thay đổi băng thông và tự tổng hợp tuyến trong interface

Router(config-if)#bandwidth kilobits
Router(config-if)#ip summary-address protocol AS network number subnets mask

3.Cân bằng tải trong EIGRP

Router(config-router)#variance number

4.Quảng bá default route

Cách 1:
Router(config)#ip route 0.0.0.0 0.0.0.0 [interface/nexthop]
Router(config)#redistribute static

Cách 2:
Router(config)#ip default-network network number

Cách 3:
Router(config-if)#ip summary-network eigrp AS number 0.0.0.0 0.0.0.0

5.Quảng bá các tuyến khác trong EIGRP (không phải là default)

Router(config-router)#redistribute protocol process ID metrics k1 k2 k3 k4 k5
Ex: Router(config-router)#redistribute ospf metrics 100 100 100 100 100

6.Chia sẻ traffic trong EIGRP

Router(config-router)#traffic share {balanced/min}

7.Các lệnh kiểm tra cấu hình EIGRP

<!--[if !supLists]-->- <!--[endif]-->show ip eigrp neighbor
<!--[if !supLists]-->- <!--[endif]-->show ip eigrp interface
<!--[if !supLists]-->- <!--[endif]-->show ip eigrp topology
<!--[if !supLists]-->- <!--[endif]-->show ip eigrp traffic
<!--[if !supLists]-->- <!--[endif]-->debug eigrp fsm
<!--[if !supLists]-->- <!--[endif]-->debug eigrp packet

Phần 2. Switching - Chuyển mạch

1.Cấu hình cơ bản chung cho một Switch

Reset tất cả cấu hình của Switch và reload lại.

Switch#delete flash:vlan.dat
Switch#erase startup-config
Switch#reload

2.Cấu hình về Security và management

Switch(config)#hostname tên switch
Switch(config)#line console 0
Switch(config-line)#password mật khẩu
Switch(config-line)#login

Switch(config)#line vty 0 4
Switch(config-line)#pass mật khẩu
Switch(config-line)#login

3.Thiết lập địa chỉ IP và default gateway cho Switch

Switch(config)#interface vlan1
Switch(config-int)#ip address địa chỉ subnetmask
Switch(config)#ip default-gateway địa chỉ

4.Thiết lập tốc độ và duplex của cổng

Switch(config-int)#speed tốc độ
Switch(config-int)#duplex full

5.Thiết lập dịch vụ HTTP và cổng

Switch(config)#ip http server
Switch(config)#ip http port 80

6.Thiết lập, quản lý địa chỉ MAC

Switch(config)#mac-address-table static địa chỉ MAC interface fastethernet số vlan
Switch#show mac-address-table
Switch#clear mac-address-table

7.Cấu hình bảo mật cho cổng

Switch(config-if)#switchport mode acess
Switch(config-if)#switchport port-security

Cấu hình Static: Switch(config-if)#switchport port-security mac-address địa chỉ Mac

Cấu hình Sticky: Switch(config-if)#switchport port-security mac-address sticky (thông dụng nhất)

Switch(config-if)#switchport port-security maximum value
Switch(config-if)#switchport port-security violation shutdown

8.Tạo Vlan

Cách 1.

Switch#vlan database
Switch(vlan)#vlan number

Cách 2. Khi gán các cổng vào vlan, dù vlan chưa tồn tại nhưng Switch vẫn tự tạo.

Switch(config)#interface fastethernet 0/0
Switch(config-int)#switchport access vlan vlan-id

Muốn xoá vlan ta làm như sau:

Switch(config-if)#no switchport access vlan vlan-id
Switch#clear vlan vlan_number (xoá toàn bộ vlan )

9.Gán nhiều cổng vào trong vlan cùng một lúc, cấu hình Range

Đối với dãy cổng không liên tục.
Switch(config)#interface range cổng 1 , cổng 2 , cổng 3

Đối với một dãy liên tục.
Switch(config)#interface range cổng 1-n
Switch(config-range)#switchport access vlan vlan-id


Ví dụ:
Switch(config)#interface range f0/0 , f0/2 , f0/4
Switch(config)#interface range f0/0-10
Switch(config-range)#switchport access vlan 10

10.Cấu hình Trunk

Switch(config-if)#switchport mode trunk
Switch(config-if)#switchpor trunk encapsulation encapsulation-type
Switch#show trunk

11.Cấu hình VTP

Switch#vlan database
Switch(vlan)#vtp v2-mode
Switch(vlan)#vtp domain tên domain
Switch(vlan)#vtp {server/client/transperant}
Switch(vlan)#vtp password password (Tạo pass cho domain)
Switch#show vtp status

12.Cấu hình Inter-Vlan trên Router

Router(config)#interface fastethernet 0/0.1
Router(config-subif)#encapsulation type
Router(config-subif)#ip address địa chỉ subnetmask

Phần 3. Access-list và các cấu hình liên quan.

1.Nhắc lại về lý thuyết.

Có 2 loại access-list.

<!--[if !supLists]-->- <!--[endif]-->Loại thứ nhất: Standard IP Access-list chỉ lọc dữ liệu dựa vào địa chỉ IP nguồn. Range của loại này là từ 1à 99. Nên được áp dụng với cổng gần đích nhất.

<!--[if !supLists]-->- <!--[endif]-->Loại thứ hai: Extended IP Access-list lọc dữ liệu dựa vào
<!--[if !supLists]-->o <!--[endif]-->Địa chỉ IP nguồn
<!--[if !supLists]-->o <!--[endif]-->Địa chỉ IP đích
<!--[if !supLists]-->o <!--[endif]-->Giao thức (TCP, UDP)
<!--[if !supLists]-->o <!--[endif]-->Số cổng (HTTP, Telnet…)
<!--[if !supLists]-->o <!--[endif]-->Và các thông số khác như Windcard mask
Range của loại này là từ 100 à199. Nên được áp dụng với cổng gần nguồn nhất.

Hai bước để cấu hình Access-list
<!--[if !supLists]-->- <!--[endif]-->Bước 1: Tạo access-list trong chế độ cấu hình config.
<!--[if !supLists]-->- <!--[endif]-->Bước 2: Áp dụng access-list cho từng cổng tuỳ theo yêu cầu ở chế độ cấu hình (config-if)

Lưu ý:
<!--[if !supLists]-->- <!--[endif]-->Mặc định của tất cả Access-list là deny all, vì vậy trong tất cả các access-list tối thiểu phải có 1 lệnh permit. Nếu trong access-list có cả permit và deny thì nên để các dòng lệnh permit bên trên.
<!--[if !supLists]-->- <!--[endif]-->Về hướng của access-list (In/Out) khi áp dụng vào cổng có thể hiểu đơn giản là: In là từ host, Out là tới host hay In vào trong Router, còn Out là ra khỏi Router.
<!--[if !supLists]-->- <!--[endif]-->Đối với IN router kiểm tra gói tin trước khi nó được đưa tới bảng xử lý. Đối vơi OUT, router kiểm tra gói tin sau khi nó vào bảng xử lý.
<!--[if !supLists]-->- <!--[endif]-->Windcard mask được tính bằng công thức:
WM = 255.255.255.255 – Subnet mask (Áp dụng cho cả Classful và Classless addreess)
<!--[if !supLists]-->- <!--[endif]-->0.0.0.0 255.255.255.255 = any.
<!--[if !supLists]-->- <!--[endif]-->Ip address 0.0.0.0 = host ip address (chỉ định từng host một )

2.Cấu hình Standard Access-list (Ví dụ)

Router(config)#access-list 1 deny 172.16.0.0 0.0.255.255
Router(config)#access-list 1 permit any
Router(config)#interface fastethernet 0/0
Router(config-in)#ip access-group in

3.Cấu hình Extended Access-list (Ví dụ)

Router(config)#access-list 101 deny tcp 172.16.0.0 0.0.255.255 host 192.168.1.1 eq telnet
Router(config)#access-list 101 deny tcp 172.16.0.0 0.0.255.255 host 192.168.1.2 eq ftp
Router(config)#access-list 101 permit any any
Router(config)#interface fastethernet 0/0
Router(config-int)#ip access-group out

4.Cấu hình named ACL thay cho các số hiệu.

Router(config)#ip access-list extended server-access (tên của access-list)
Router(config-ext-nacl)#permit tcp any host 192.168.1.3 eq telnet
Router(config)#interface fastethernet 0/0
Router(config-int)#ip access-group server-access out

5.Permit hoặc Deny Telnet sử dụng Standard Acl (Ví dụ)

Router(config)#access-list 2 permit 172.16.0.0 0.0.255.255
Router(config)#access-list 2 deny any
Router(config)#line vty 0 4
Router(config-line)#password cisco
Router(config-line)#login
Router(config-line)#ip access-class 2 in

6.Xoá và kiểm tra Access-list

Muốn xoá thì ta dùng lệnh sau:
Router(config)# no ip access-list số hiệu

Kiểm tra Acl ta dùng các lệnh sau:

<!--[if !supLists]-->- <!--[endif]-->show access-list
<!--[if !supLists]-->- <!--[endif]-->show running-config
<!--[if !supLists]-->- <!--[endif]-->show ip interface

Phần 4. NAT – PPP – Frame Relay

I.Cấu hình NAT

* Cấu hình Static NAT

Cấu hình NAT trong chế độ Router(config). Các lệnh như sau

Router(config)#ip nat inside source static [inside local address] [inside global address]
Ví dụ:
R(config)#ip nat inside source statice 10.0.0.1 202.103.2.1 (Địa chỉ 10.10.0.1 sẽ được chuyển thành 202.103.2.1 khi đi ra khỏi Router)

Sau khi cấu hình xong phải áp dụng vào cổng in và cổng out, trong ví dụ dưới đây, cổng Ethernet là công in, còn cổng Serial là cổng out

Router(config)#interface ethernet 0
Router(config-if)#ip nat inside

Router(config)#interface serial 0
Router(config-if)#ip nat outside

* Cấu hình Dynamic NAT

Router(config)#ip nat pool [ tên pool] [A.B.C.D A1.B1.C1.D1] netmask [mặt nạ]
Router(config)#ip nat inside source list [số hiệu ACL] pool [tên pool]
Router(config)#access-list [số hiệu ACL] permit A.B.C.D windcard masks

Ví dụ:
R(config)#ip nat pool nat-pool1 179.9.8.80 179.9.8.95 netmask 255.255.255.0
R(config)#ip nat inside source list 1 pool nat-pool1
R(config)#access-list 1 permit 10.1.0.0 0.0.0.255

Sau đó áp vào cổng In và Out như Static NAT

Note: Giải địa chỉ inside local address và inside global address phải nằm trong giải cho phép của ACL

* Cấu hình PAT overload

*
o Cấu hình overload với 1 địa chỉ IP cụ thể.

Router(config)#ip nat pool [tên pool] [ip global inside] [subnet mask]
Router(config)#ip nat inside source list [tên số hiệu ACL] pool [tên pool] overload
Router(config)#access-list [số hiệu] permit [địa chỉ] [windcard mask]

Ví dụ:
R(config)#access-list 2 permit 10.0.0.0 0.0.0.255
R(config)#ip nat pool nat-pool2 179.9.8.20 255.255.255.240
R(config)#ip nat inside source list 2 nat-pool2 overload

*
o Cấu hình overload dùng địa chỉ của cổng ra.(Thường xuyên được dung hơn là trường hợp trên)

Router(config)#ip nat inside source list [tên số hiệu ACL] interface [cổng ra] overload
Router(config)#access-list [số hiệu] permit [địa chỉ] [windcard mask]

Ví dụ:
R(config)#ip nat inside source list 3 interface serial 0 overload
R(config)#access-list 3 permit 10.0.0.0 0.0.0.255

* Các lệnh Clear NAT/PAT

Lệnh xóa tất cả dynamic nat trên toàn bộ các interface.
Router#clear ip nat translation *

Lệnh xóa các single nat trên từng interface
Router#clear ip nat translation [inside/outside] [global ip - local ip]

Lệnh xóa các extended nat trên từng interface
Router#clear ip nat translation protocol [inside/outside] [global ip - global port – local ip – local port]

* Kiểm tra và Debug các NAT và PAT

Router#show ip nat translation
Router#show ip nat statics
Router#debug ip nat

* Cấu hình DHCP

Router(config)#ip dhcp excluded-address ip-address (end-ip-address)
Router(config)#ip dhcp pool [tên pool]
Router(dhcp-config)#network addess subnetmask
Router(dhcp-config)#default-router address
Router(dhcp-config)#dns-server address
Router(dhcp-config)#netbios-name-server address
Router(dhcp-config)#domain-name tên domain
Router(dhcp-config)#lease ngày/giờ/phút

* Kiểm tra và troubleshoot cấu hình DHCP

Router#show ip dhcp binding
Router#debug ip dhcp server events

* Trong trường hợp DHCP server không nằm cùng mạng với host

Note: khi DHCP server không cùng mạng với host thì ta phải dùng lệnh ip helper-address giúp host đến DHCP server.

Router(config)#interface [cổng nằm cùng mạng với host]
Router(config-if)#ip helper-address [địa chỉ của DHCP server]

Note: Trong trường hợp muốn gói tin của host được broadcast ở mạng chứa DHCP thì ta dùng thêm lệnh ip directed-broadcast ở cổng cùng mạng với DHCP server

Router(config)#interface [cổng nằm cùng mạng với dhcp]
Router(config-ì)#ip directed-broadcast

II. Cấu hình PPP

1. Cấu hình cơ bản:

R(config)#interface serial 0/0
R(config-if)#encapsulation ppp

2. Cấu hình PAP

Cấu hình PAP không yêu cầu hai Router giống nhau về password nhưng CHAP thì phải có.

(Cấu hình trên RA)
R(config)#host RA
RA(config)#username RB password 321
RA(config-if)#encapsulation ppp
RA(config-if)#ppp authentication pap
RA(config-if)#ppp pap sent-username RA password 123

(Cấu hình trên RB)
R(config)#host RB
RB(config)#username RA password 123
RB(config-if)#encapsulation ppp
RB(config-if)#ppp authentication pap
RB(config-if)#ppp pap sent-username RB password 321

3. Cấu hình CHAP. (yêu cầu phải giống nhau về password)

(Cấu hình trên RA)
R(config)#host RA
RA(config)#username RB password 123
RA(config-if)encapsulation ppp
RA(config-if)ppp authentication chap

(Cấu hình trên RB)

R(config)#host RB
RB(config)#username RA password 123
RB(config-if)encapsulation ppp
RB(config-if)ppp authentication chap


4. Các cấu hình khác của PPP

<!--[if !supLists]-->a. <!--[endif]-->Cấu hình Multilink

R(config-if)#encapsulation ppp
R(config-if)#ppp multilink

<!--[if !supLists]-->b. <!--[endif]-->Cấu hình Compression

R(config-if)#encapsulation ppp
R(config-if)#compress [predictor/stac/mppc]

<!--[if !supLists]-->c. <!--[endif]-->Cấu hình Error detection

R(config-if)#encapsulation ppp
R(config-if)#ppp quality [phần trăm]

5. Các lệnh kiểm tra cấu hình PPP

R#show interface (xem encapsulation)
R#debug ppp negotiation (Xem quá trình kết nối giữa 2 node)
R#debug ppp authentication (Xem quá trình xác thực giữa 2 node)


III. Cấu hình Frame-Relay

<!--[if !supLists]-->1. <!--[endif]-->Cấu hình đơn giản

R(config-if)#encapsulation frame-relay {ciso| ietf} (mặc định là cisco)

Khi lệnh này được thực thi, DLCI sẽ được Inverse ARP tự động map, người dùng không cần phải làm gì cả.

* Nhưng Inverse ARP không làm việc với các kết nối Hub-and-Spoke

<!--[if !supLists]-->2. <!--[endif]-->Cấu hình Frame-relay static map

R(config-if)#encapsulation frame-relay
R(config-if)#frame-relay map ip remote–ip-address local-dlci [broadcast] [cisco| ietf]
(ip address trong dòng lệnh trên chỉ lấy làm minh họa bởi nó rất phổ biến, chính xác phải là remote–protocol–address)
Broadcast trong câu lệnh trên có 2 chức năng:
<!--[if !supLists]-->§ <!--[endif]-->Forward broadcast khi multicast không được khởi động.
<!--[if !supLists]-->§ <!--[endif]-->Đơn giản hóa cấu hình OSPF cho mạng nonbroadcast sử dụng FRelay.
Ví dụ:

R(config-if)#encapsulation frame-relay
R(config-if)#frame-relay map ip 192.168.2.1 100 broadcast


<!--[if !supLists]-->3. <!--[endif]-->Cấu hình FR trong mạng None Broadcast MutiAccess

<!--[if !supLists]-->- <!--[endif]-->Trong mạng Broadcast khi 1 máy tính truyền frame tất cả các node lắng nghe frame nhưng chỉ có node cần nhận mới nhận được.
<!--[if !supLists]-->- <!--[endif]-->Trong mạng None Broadcast khi 1 máy tính truyền frame thì chỉ có node cần nhận mới lắng nghe và nhận được frame đó, các node còn lại thì không. Frame được truyền qua 1 virtual Circuit hoặc 1 thiết bị chuyển mạch.
<!--[if !supLists]-->- <!--[endif]-->Star topology có thể được coi như là 1 mạng Hub and Spoke.

<!--[if !supLists]-->4. <!--[endif]-->Giải quyết vấn đề với Routing Updates mà không disable Split Horizal

Giải pháp dùng Sub-interface

R(config)#interface s0/0
R(config-if)#encapsulation frame-relay
R(config-if)interface s0/0.1 [multipoint| point-to-point]

<!--[if !supLists]-->- <!--[endif]-->point-to-point: Mỗi subinterface có subnet riêng của mình. Broadcast và Split horizol không là vấn đề.
<!--[if !supLists]-->- <!--[endif]-->Multi-point: Tất cả các subinterface liên quan phải cùng chung 1 subnet và như vậy Broadcast và Split horizol sẽ có vấn đề.

Ví dụ:
(Point-to-point)
R(config)#interface s0/0
R(config-if)#encapsulation frame-relay
R(config-if)#interface s0/0.1 point-to-point
R(config-subif)#frame-relay interface-dlci 18

(Multipoint)
R(config)#interface s0/0
R(config-if)#encapsulation frame-relay
R(config-if)#interface s0/0.2 multipoint
R(config-subif)#frame-relay interface-dlci 19
R(config-subif)#frame-relay interface-dlci 20

<!--[if !supLists]-->5. <!--[endif]-->Cấu hình trên Frame-relay Switching (ví dụ)

R(config)#frame-relay switching
R(config)#interface s0/0
R(config-if)#encapsulation frame-relay
R(config-if)#frame-relay intf-type dce
R(config-if)#frame-relay route 103interface serial 0/1 301

theo hocit.com

Thứ Năm

Những điểm mới trong ASP.NET MVC 3


ASP.Net MVC 3 là một phiên bản khá hấp dẫn, có thêm nhiều tính năng và cải tiến mới rất tuyệt vời, giúp đơn giản hóa mã (code) của bạn. ASP.Net MVC 3 cũng tương thích ngược với ASP.Net MVC 1 và ASP.Net MVC 2, khiến việc nâng cấp các ứng dụng hiện có rất dễ dàng. Bài viết này sẽ trình bày về những tính năng mới như: Razor, multi view engine, những cài tiến trong: controller, JavaScript và Ajax, Model Validation, Dependency Injection, và các tính năng mới khác.
1. Công cụ xem Razor (The Razor View Engine)
- ASP.net MVC 3 đi kèm với một công cụ xem mới có tên là Razor với những lợi ích sau:
  • Cú pháp Razor là sạch sẽ và xúc tích, đòi hỏi một số lượng tối thiểu các tổ hợp phím.
  • Việc tìm hiểu Razor tương đối dễ dàng vì nó dựa trên ngôn ngữ C# và Visual Basic.
  • Visual Studio bao gồm IntelliSense và mã cú pháp Razor được màu hóa.
  • Razor views có thể kiểm tra từng đơn vị mà không đòi hỏi bạn phải chạy các ứng dụng hoặc phải chạy web server.
- Một số tính năng mới của Razor:
  • Cú pháp @model để xác định các loại sẽ được truyền vào view.
  • @**@  là cú pháp comment.
  • Khả năng định rõ mặc định (như layoutpage) một lần cho toàn bộ trang web.
  • Phương thức Html.Raw để hiển thị các văn bản mà không cần mã hóa Html cho nó.
  • Hỗ trợ chia sẽ mã giữa nhiều views (_viewstart.cshtml hay _viewstart.vbhtml).
-  Razor cũng bao gồm những công cụ hỗ trợ HTML mới, chẳng hạn như:
  • Chart – biểu diễn một biểu đồ, cung cấp các tính năng như control chart trong ÁP.NET 4.
  • WebGrid – biểu diễn một lưới dữ liệu (data grid), hoàn chỉnh với chức năng phần trang và phân loại.
  • Crypto – Sử dụng các thuật toán băm (hashing algorithms) để tạo thuộc tính thông thạo và băm các mật khẩu.
  • WebImage – biểu diễn một hình ảnh.
  • WebMail – gởi tin nhắn email.
-  Để biết thêm các  thông tin về Razor, xem thêm các nguồn sau:
2. Hỗ trợ đa View Engines (Support for Multiple View Engines)
-  Thêm hộp thoại View trong ASP.NET MVC 3 cho phép bạn chọn các view engine mà bạn muốn làm việc với nó, và hộp thoại New Project cho phép bạn xác định view engine mặc định cho một project. Bạn có thể chọn view engine Web Forms (ASPX), Razor, hay một view engine nguồn mở như Spark, NHaml, hay NDjango.
3. Những cải tiến Controller
3.1 Global Action Filters
Đôi khi bạn muốn thực hiện một logic hoặc trước khi một phương thức thực hiện hoặc sau một một phương thức hành động được thực hiện. Để hỗ trợ điều này, ASP.NET MVC 2 đã cung cấp bộ lọc hành động (Action Filters).  Action Filter là các thuộc tính tùy chỉnh cung cấp khai báo một phương tiện để thêm trước hành động và sau hành động một hành vi để xác định phương thức controller hành động cụ thể. MVC 3 cho phép bnaj chỉ định các bộ lọc chung bằng cách thêm chúng vào bộ sưu tập GlobalFilters. Để biết thêm thông tin có thể tham khảo ở những nguồn dưới đây:
3.2 Thuộc tính mới “ViewBag”
MVC 2 hỗ trợ điều điều khiển một thuộc tính ViewData để cho phép bạn chuyển dữ liệu đến một view template bằng cách sử dụng một API. Trong MVC 3, bạn có thể sử dụng cú pháp đơn giản hơn một chút với thuộc tính ViewBag để thwucj hiện cùng một mục đích trên. Ví dụ, thay vì viết ViewData[“Message”] = “text”, bạn có thể viết ViewBag.Message = “text”. Bạn không cần phải xác định lớp mạnh bất kỳ để sử dụng thuộc tính ViewBag. Bởi vì nó là một thuộc tính năng động (dynamic property), bạn có thể thay vì chỉ nhận hay thiết lập các thuộc tính và nó sẽ giải quyết các ván đề còn lại tự động khi chạy. Bên trong thuộc tính ViewBag được lưu trữ như cặp name/value trong từ điển ViewData. (Lưu ý: trong hầu hết các phiên bản trước của MVC3, thuộc tính ViewBag có tên là ViewModel).
3.3 Các kiểu “ActionResult” mới
Dưới đây là các kiểu ActionResult và phương pháp trợ giúp mới và nâng cao trong MVC 3:
  • HttpNotFoundResult . Trả về trạng thái mã HTTP 404 cho khách hàng.
  • RedirectResult . Trả về một chuyển hướng tạm thời (mã trạng thái HTTP 302) hoặc một chuyển hướng vĩnh viễn (mã trạng thái HTTP 301), phụ thuộc vào một tham số Boolean. Kết hợp với thay đổi này, các lớp control hiện nay có ba phương pháp để thực hiện thường xuyên đổi hướng: RedirectPermanent ,RedirectToRoutePermanent , và RedirectToActionPermanent . Những phương pháp này trả về một dữ liệu của RedirectResult với Permanent sở hữu thiết lập đúng .
  • HttpStatusCodeResult . Trả về một mã trạng thái người dùng được xác định.
4. JavaScript và Ajax
Theo mặc định, Ajax và các công cụ hỗ trợ hợp lệ trong MVC 3 sử dụng một cách tiếp cận unobtrusive JavaScript. Unobtrusive JavaScript nội tuyến tránh tiêm tín hiệu từ JavaScript vào HTML. Điều này làm cho HTML của bạn nhỏ hơn và ít lộn xộn hơn, và làm cho nó chuyển đổi ra ngoài dễ dàng hơn hay tùy chỉnh các thư viện JavaScript. Validation helpers trong MVC 3  cũng sử dụng plugin jQueryValidate theo mặc định. Nếu bạn muốn MVC 2 thực hiện, bạn có thể vô hiệu hóa unobtrusive JavaScript bawgnf cách thiết lập lại file web.config.  Để biết thêm thông tin về Ajax và JavaScript tham khảo những nguồn sau:
4.1 Client-Side Validation Enabled by Default
-  Trong các phiên bản trước đó của MVC, bạn cần phải gọi rõ phương thức Html.EnableClientValidation từ một view để cho phép phía máy khác xác nhận. Điều này trong MVC 3 là không cần thiết vì phía khách hàng xác nhận là kích hoạt mặc định. (Bạn có thể vô hiệu hóa điều này bằng cách sử dụng một thiết lập trong file web.config).
-  Để cho phía máy khách xác nhận để làm việc, bạn vẫn cần phải tham khảo thích hợp  thư viện jQuery và jQuery Validation trong trang web của bạn. Bạn có thể lưu trữ các thư viện trên máy chủ của chính bạn hoặc tham chiếu cho chúng từ một mạng lưới phân bố nội dung(CDN – Content Delivery Network) như CDNs từ Microsoft hay Google.
4.2  Remote Validator
-  ASP.NET MVC 3 hỗ trợ lớp RemoteAttribute cho phép bạn tận dụng lợi thể của plugin jQuery Validation để hỗ trợ xác nhận từ xa. Điều này cho phép các bên các nhận thư viện client-side validation để tự động gọi một phương thức tùy chỉnh mà bạn xác định trên máy chủ để thực hiện xác nhận logic chỉ có thể được xác nhận phía máy chủ.
-  Trong ví dụ sau đây, thuộc tính Remote xác định rừng xác nhận máy khác sẽ gọi một hành động tên là UserNameAvailable trên lớp UsersController để xác minh trường UserName.
public class User
{
    [Remote("UserNameAvailable", "Users")]
    public string UserName { get; set; }
}
-  Ví dụ sau đây minh họa các điều khiển tương ứng:
public class UsersController
{
    public bool UserNameAvailable(string username)
    {
        if(MyRepository.UserNameExists(username))
        {
            return "false";
        }
        return "true";
    }
}
-  Để biết thêm về cách sử dụng các thuộc tính Remote, xem bài How to: Implement Remote Validation in ASP.NET MVC trong MSDN.
4.3 JSON Binding Support
ASP.NET MVC 3 bao gồm ràng buộc hỗ trợ JSON  cho phép các phương thức hành động để nhận được dữ liệu JSON-encoded và model-bind tham số phương thức hành động của nó. Khả năng này rất hữu ích trong các tình huống liên quan đên client template và data binding. MVC 3 cho phép bạn dễ dàng kết nối client template với các phương thức hành độngtrên máy chủ khi gởi và nhận nhận dữ liệu JSON. Để biết thêm thông tin về JSON binding support, tham khảo Scott Guthrie’s MVC 3 Preview .
5. Model Validation Imporvements
5.1 Thuộc tính siêu dữ liệu “DataAnnotations”
ASP.NET MVC 3 hỗ trợ các  thuộc tính siêu dữ liệu DataAnnotations như DisplayAttribute.
5.2 Lớp “ValidationAttribue”
Lớp ValidationAttribute đã được cải tiến trong .NET Framerwork 4 để hỗ trợ một quá tải mới là IsValid cung cấp thêm thông tin về bối cảnh xác nhận hiện tại, chẳng hạn như những gì đối tượng đang được xác nhận. Điều này cho phép các kịch bản phong phú hơn, nơ bạn có thể xác nhận giá trị hiện tại dựa trên các thuộc tính khác của model. Ví dụ, thuộc tính mới CompareAttribute cho phép bạn so sánh các giá trị của 2 thuộc tính của một model. Trong ví dụ dưới đây, thuộc tính ComparePassword phải phù hợp với trường Password để được hợp lệ:
public class User
{
    [Required]
    public string Password { get; set; }
    [Required, Compare("Password")]
    public string ComparePassword { get; set; }
}
5.3 Validation Interfaces
-  Giao diện IValidatableObject cho phép bạn thực hiện các cấp model xác nhận, và nó cho phép bạn cung cấp các thông điệp xác nhận lỗi cụ thể đối với các trạng thái của model tổng thể, hay giữ 2 thuộc tính trong model. MVC 3 bây giờ lấy lỗi từ giao diện IValidatableObject khi ràng buộc mô hình, và từ động gắn cờ hay tô sáng các trường bị ảnh hưởng trong phậm vi view bằng cách sử dụng công cụ hỗ trợ hình thức HTML.
-  Giao diện IClientValidatable cho phép ASP.NET MVC khám phá trong thời gian chạy dù validator đã hỗ trợ cho việc xác thực ở client. Giao diện này được thiết kế để có thể tích hợp với hàng loạt các validation frameworks.
6. Dependency Injection Imporvements
-  ASP.NET MVC 3 cung cấp hỗ trợ tốt hơn cho việc áp dụng Dependency Injection (DI) và tích hợp với Dependency Injection hay Inversion of Control (IOC) containers. Các hỗ trợ cho DI được thêm vào:
    • Controllers (registering and injecting controller factories, injecting controllers).
    • Views (registering and injecting view engines, injecting dependencies into view pages).
    • Action filters (locating and injecting filters).
    • Model binders (registering and injecting).
    • Model validation providers (registering and injecting).
    • Model metadata providers (registering and injecting).
    • Value providers (registering and injecting).
-  MVC 3 hỗ trợ các thư viện Common Service Locator và bất kỳ DI container nào có hỗ trợ của thư viện IServiceLocator. Nó cũng hỗ trợ giao diện mới IDpendencyResolver làm cho nó dễ dàng hơn để tích hợp với DI frameworks.
-  Tham khảo thêm:
7. Các tính năng mới khác (Other New Features)
7.1 NuGet Integration
-  ASP.NET MVC 3 tự động cài đặt và cho phép Nuget như một phần cài đặt của nó. NuGet là một gói quản lý nguồn mở miễn phí mà có thể dễ dàng tìm tâấy nó, cài đặt và sử dụng  thư viện .NET và các công cụ trong các project của bạn. Nó hoạt động với tất cả các loại project của Visual Studio (bao gồm ASP.NET Web Forms và ASP.NET MVC).
-  NuGet cho phép các nhà phát triển để duy trì các dự án mã nguồn mở (ví dụ: các dự án như Moq, NHibernate, Ninject, StructureMap, NUnit, Windsor, RhinoMocks, và Elmah) để đóng gói thư viện của mình và đăng ký chúng trong một bộ sưu tập trực tuyến.
-  Để biết thêm về NuGet, xem thêm tài liệu NuGet documentation on the CodePlex site
7.2 Partial-Page Output Caching
ASP.NET MVC được hỗ trợ bộ nhớ đệm output của trang trả lời đầy đủ kể từ phiên bản 1. MVC 3 cũng hỗ trợ các trang xuất caching một phần, cho phép bạn dễ dàng đến các vùng nhớ đệm hoặc các mảnh của một response.
7.3 Kiểm soát và yêu cầu xác nhận (Granular Control over Request Valiedation)
ASP.NET MVC đã được xây dựng trong quá trình xác nhận yêu cầu tự động giúp bảo vệ chống lại các cuộc tấn công XSS và HTML injection. Tuy nhiên, đôi khi bạn muốn vô hiệu hóa yêu cầu xác nhận rõ ràng, chẳng hạn như nếu bạn muốn cho phép một người post nội dung HTML (Ví dụ, trong ác mục blog hoặc nội dung CMS). Bạn có thể thêm một thuộc tính AllowHtml cho các model hay view models để vô hiệu hóa các yêu cầu xác nhận trên mỗi một thuộc tính cơ bản trong mô hình liên kết.
7.4 Mở rộng hộp thoại “New Project”
Trong ASP.NET MVC 3, bạn có thể thêm các project mẫu, view engines, và unit test project frameworks cho hộp thoại  New project.
7.5 Scaffolding Improvements
ASP.net MVC 3 các mẫu scaffolding làm một công việc tốt hơn của việc xác định các thuộc tính khóa chính trên các mô hình và xử lý chúng một cách thích hợp hơn trong các phiên bản trước của MVC.
Theo mặc định, Tạo và Sửa scaffolds bây giờ sử dụng Html.EditorFor helper thay vì Html.TextBoxFor helper. Điều này cải thiện hỗ trợ cho các siêu dữ liệu trên mô hình ở dạng chú thích thuộc tính dữ liệu khi hộp thoại Add View tạo ra một view.
7.6 Các quá tải mới cho “Html.LabelFor”” và “Html.LabelForModel”
Các phương pháp quá tải mới có thêm  phương thức LabelFor và LabelForModel. Các quá tải mới cho phép bạn xác định hay ghi đè lên label text.
7.7 Sessioinless Controller Support
7.8 Lớp mới “AdditionalMetadataAttribute”
-   Bạn có thể sử dụng thuộc tính AdditionalMetadata để đưa vào từ điển ModelMetadata. AdditionalValues cho một thuộc tính model. Ví dụ, nếu view model có một thuộc tính sẽ được hiển thị chỉ cho một admin, bạn có thể thực hiện giống như trong ví dụ dưới đây:
public class ProductViewModel
{
    [AdditionalMetadata("AdminOnly", true)]
    public string RefundCode {get; set;}
}

Thứ Ba

"Làm chủ" Windows Update


Dù rất quan trọng nhưng Windows Update có thể là một quấy rầy vì thường xuyên tạo ra các báo động đột ngột không mong đợi. Bạn có thể làm cho công cụ này ít báo tin hơn, và thậm chí có thể tắt.
WINDOWS
 
Bạn có thể thay đổi cài đặt của Windows Update để giảm bớt cảnh báo.
Bước 1: Nhấn chuột Start, rồi mở Control Panel.

Bước 2: Nhấn chuột biểu tượng Windows Update (trong Classic Wiew) hoặc văn bản dưới đầu đề security (trong trình đơn Control Panel mới).

Bước 3: Trong trình đơn Windows Update, bạn nhấn chuột View update history để nhìn thấy tất cả các cập nhật đã được cài đặt từ trước. Nhấn chuột đúp lên cập nhật bất kỳ trong số đó sẽ làm xuất hiện các chi tiết, bao gồm ngày và giờ đã cài đặt, cùng với thông tin về chức năng mà cập nhật này sẽ thực hiện. Bạn cũng có thể có nhiều thông tin hơn bằng cách nhấn chuột lên liên kết này.

Bước 4: Nhấn chuột Change Settings ở phía trái
Loại bỏ phần mềm không cần thiết khỏi PC
Không có điều gì gây thất vọng hơn việc khởi động một PC mới, và bỗng nhận ra rằng nó bị bày bừa bãi với đầy rác rưởi. Bạn có thể tấn công “crapware” (phần mềm rác) thông qua Control Panel của Windows: Nhấn chuột đúp Programs and Features (trong Classic View), hoặc nhấn chuột Uninstall a program (trong Control Panel mới này). Chọn một chương trình không cần thiết, và nhấn chuột Uninstall/Change.

Một cách khác: PC Decrapifier(find.pcworld.com/69411) là một công cụ dễ dùng và hiệu quả. Trên màn hình “Select Items” của nó, bạn có thể phân loại những rác rưởi, mà phần mềm này nhận dạng được. Công cụ này còn có thể tạo một điểm phục hồi để sữa chữa mọi trục trặc. Mặc dù vậy, bạn hãy chú ý đến những khoản mục nào bị loại bỏ, vì tiện ích này có sự phân biệt đáng lo ngại giữa các phiên bản thử nghiệm và các trình ứng dụng cần hủy. Nếu có danh sách bất kỳ nào của các chương trình được nâng cấp hoặc được cài đặt thủ công, bạn hãy chọn riêng chúng ra, sao cho PC Decrapifier không loại bỏ chúng.
Bước 5: Dưới đầu đề “Important updates” bạn có thể thay đổi tính thường xuyên của các cập nhật. Trong trình đơn rơi xuống này bạn có thể báo cho công cụ biết để tự động cài đặt các khoản mục, tải xuống các cập nhật nhưng không cài đặt chúng mà chỉ báo cho bạn biết về các cập nhật mới, hoặc phớt lờ các cập nhật. Bạn cũng có thể chọn ngày và giờ PC của bạn phải thực hiện các nhiệm vụ này.

Bước 6:
 Bên dưới đầu đề “Recomended Updates” bạn quyết định có chấp nhận các cập nhật được giới thiệu nhưng không quan trọng hay không.

Bước 7: Check lên hộp bên dưới đầu đề “Who can install updates” để cho phép tất cả mọi người dùng đều có thể cài đặt các cập nhật. Uncheck hộp này sẽ chỉ cho phép người quản lý được quyền thực hiện như vậy.

Bước 8: Dùng cài đặt “Microsoft Update” để kiềm chế các cập nhật đối với các sản phẩm Microsoft chứ không phải Windows.

Bước 9: Khi kết thúc, bạn nhấn chuột OK để quay về lại trình đơn Windows Update.

Bước 10: Dùng liên kết Restore hidden updates nếu bạn đã quyết định không cài đặt các cập nhật, khi đầu tiên chúng tỏ ra có thể dùng được còn bây giờ thì mong muốn phải cài đặt chúng. Từ trình đơn “Restore hidden updates”, bạn chọn một cập nhật và nhấn chuột nút Restore.

PC World Mỹ 6/2011
 
  
Muốn sử dụng các bookmark yêu thích ở bất kỳ đâu, tôi gửi bookmark này bằng e-mail? Thực hiện như thế nào?

Internet Explorer, Firefox và Chorme đều cho phép xuất các dấu trang (bookmark) ra tập tin HTML. Do đó, bạn có thể gửi kèm file này hay dùng trình duyệt mở file và copy nội dung để gửi qua e-mail.

Trong Internet Explorer 8, để xuất các địa chỉ dấu trang (Favorite), bạn nhấn nút Favorites. Dưới trình đơn “Add to Favorites”, bạn chọn Import and Export. Tiếp theo, bạn chọn Export to file, nhấp chọn các Favorite, sau đó thư mục cấp cao nhất của cây thư mục để xuất.

Trong Firefox 3, bạn chọn Bookmarks. Organize Bookmarks, nhấn Import and Backup, sau đó chọn Export HTML.

Trong Chrome 8, bạn nhấn chuột biểu tượng wrench ở góc trên bên phải màn hình, chọn Bookmark Manager. Kéo trình đơn Organize xuống và chọn Export Bookmarks.

Ngoài ra, có một dịch vụ trực tuyến có thể làm việc tốt hơn so với cách gửi email. Đó là Xmarks (find.pcworld.com/70229). Bạn có thể tải về add-on miễn phí này cho IE, Firefox, Chrome và Safari. Bạn thiết lập tài khoản trong Xmarks và tải các dấu trang của bạn lên.

Khi cài đặt các add-on lên máy tính khác và đăng nhập vào tài khoản của mình, bạn sẽ nhận được các tùy chọn để kết hợp các shortcut đã có sẵn trên máy tính. Dĩ nhiên, nếu bạn cài đặt add-on này lên một máy khác và đồng bộ các bookmark của máy đó với bookmark của bạn thì bookmark của máy này sẽ bị mất. Do đó, nếu bạn làm việc trên máy tính khác, bạn có thể đăng nhập vào my.xmarks.com để truy cập các liên kết của mình mà không làm thay đổi trình duyệt của máy này.

Xuân Cường 
PC World Mỹ 05/2011

Kinh nghiệm nâng cấp card đồ họa


Khác những phần cứng khác, việc nâng cấp (thay mới) card đồ họa và bo mạch chủ (BMC) thường không đơn giản chút nào.
Ngoài lựa chọn theo khả năng tài chính hoặc theo yêu cầu công việc, bạn cũng cần xét đến những yếu tố khác như khả năng hỗ trợ của BMC, không gian bên trong thùng máy, công suất nguồn và số đường cấp nguồn cần đáp ứng v..v...
PHẦN CỨNG
 
Lựa chọn thông minh
Nâng cấp card đồ họa mới, mạnh mẽ hơn sẽ cải thiện đáng kể khả năng xử lý đồ họa của hệ thống, nhất là với game thủ, có thể “phá băng” được nhiều game hơn. Tuy nhiên, dù không quan tâm đến vấn đề giá cả thì bạn cũng nên cân nhắc chọn card đồ họa phù hợp với cấu hình hiện tại, không quá mạnh hoặc quá yếu để tránh lãng phí. Hơn nữa, card đồ họa còn là 1 trong những phần cứng có tốc độ “đề mốt” nhanh; chẳng hạn vào thời điểm hiện tại, AMD và NVIDIA đã đưa ra thị trường những dòng card đồ họa thế hệ thứ 2 hỗ trợ đầy đủ thư viện đồ họa DirectX 11, bổ sung 1 số tính năng mới và có hiệu năng tốt hơn. Kết quả thử nghiệm tại Test Lab cho thấy card tầm trung (giá từ 200 – 300 USD, khoảng 4 – 6 triệu đồng) có sức mạnh tương đương hoặc cao hơn so với 1 số card dòng cao cấp (giá 500 USD, khoảng 10 triệu đồng) xuất hiện cách đây 1 – 2 năm.

Kế tiếp, bạn cần xem xét khả năng hỗ trợ card đồ họa của BMC. Bỏ qua những BMC cũ hỗ trợ chuẩn giao tiếp AGP 8x đã lỗi thời, bài viết chỉ đề cập đến việc nâng cấp card đồ họa chuẩn PCI Express (PCIe) x16 phổ dụng hiện nay. Trường hợp hệ thống sử dụng đồ họa tích hợp, bạn cần kiểm tra xem BMC có sẵn khe cắm PCIe x16 không; tham khảo chi tiết trong tài liệu đi kèm BMC hoặc xem thông tin trên website nhà sản xuất (NSX). Nếu máy tính của bạn đang sử dụng card đồ họa rời thì hãy bỏ qua bước này.
 
Tiếp theo, kiểm tra khả năng hỗ trợ của thùng máy. Cụ thể là khoảng cách từ khe gắn card mở rộng ở mặt sau cho đến vị trí gắn ổ cứng của thùng máy phải lớn hơn chiều dài card đồ họa. Dòng card đồ họa kích thước “full size” chỉ thích hợp với thùng máy chuẩn mid-tower (thùng đứng, cỡ trung) hoặc tốt nhất là full-tower (thùng đứng, cỡ lớn) với cấu hình CrossFire, SLI.

Ngoài việc đảm bảo công suất cần đáp ứng cho toàn hệ thống thì bộ nguồn phải có đường cấp nguồn +12V (riêng cho card đồ họa) đạt mức khuyến cáo của NSX. Có thể dựa vào thông số kỹ thuật của phần cứng hoặc sử dụng tiện ích như extreme.outervision.com/psucalculatorlite.jsp, thermaltake.outervision.com/index.jsp hoặc antec.outervision.com để tính được tổng công suất bộ nguồn cần đáp ứng. 
Bạn cũng cần kiểm tra số đường cấp nguồn +12V PCIe của bộ nguồn. Dòng card đồ họa phổ thông thường không yêu cầu hoặc chỉ cần 1 đường cấp nguồn bổ sung trong khi dòng card tầm trung cần từ 1 đến 2 đường +12V PCIe (loại 6 chân và 8 chân). Dòng card cao cấp cần đến 2 đường cấp nguồn loại 8 chân và đặc biệt là dòng card đồ họa hàng “đỉnh” như Asus ARES cần đến 3 đường cấp nguồn (PCIe 8 chân, 1 PCIe 6 chân) đạt mức 40A.
 
Cấu hình tham khảo
Từ các lưu ý ở phần trên, để tiện bạn đọc tham khảo cách ra quyết định đầu tư vào loại card đồ hoạ nào chúng ta xét cấu hình dùng để thực hiện bài bài viết: BMC Asus P5K Pro (chipset Intel P35, socket 775LGA); BXL Intel Core 2 Extreme QX9650 (3,0GHz, 12MB cache L2, bus 1333MHz, socket 775LGA). RAM Corsair Dominator Twin2x4096-8500C5DF; Card đồ họa Gigabyte GV-N26OC-896H-B (Geforce GTX 260, 896MB GDDR3); Ổ cứng WD Caviar Black 2x1TB (RAID 0); Thùng máy Cooler Master Centurion 5; Bộ nguồn Corsair TX750W và HĐH Windows 7 Ultimate 64 bit. Cách đây vài năm, cấu hình trên có thể được xếp vào hạng cao cấp nhưng với tốc độ phát triển nhanh củacông nghệ phần cứng thì hiện nay cấu hình này chỉ được đánh giá “thường thường bậc trung”. Nâng cấp BXL hoặc card đồ họa mới sẽ cải thiện đáng kể hiệu suất hệ thống. Tuy nhiên, BXL QX9650 là 1 trong những BXL mạnh nhất (chỉ sau QX9770 và QX9775) trong thế hệ BXL socket 775LGA của Intel. Vì vậy, nâng cấp card đồ họa là lựa chọn tốt hơn với cấu hình này.

Với cấu hình trên thì chúng ta có thể chọn những card đồ họa như Asus EAH6850 DC/2DIS/1GD5/V2 hoặc Gigabyte GV-R685OC-1GD (sử dụng GPU AMD Radeon HD 6850) nếu ngân sách của bạn chỉ khoảng 4 triệu đồng hoặc Asus ENGTX560 Ti DCII/2DI/1GD5 (Geforce GTX 560 Ti), giá khoảng 5,5 triệu đồng. Asus ENGTX560 TI DCII TOP/2DI/1GD5 và Gigabyte GV-N560OC-1GI (pcworld.com.vn/A103_46) cũng sử dụng GPU Geforce GTX 560 Ti nhưng có giá cao hơn (khoảng 6-6,3 triệu đồng) vì đã được NSX ép xung sẵn trước khi xuất xưởng.
 
Xét tỷ lệ giữa hiệu năng/chi phí, cấu hình và thông tin tham khảo từ nhiều nguồn thì Asus ENGTX560 Ti DCII/2DI/1GD5 là lựa chọn tốt. Card sử dụng kiến trúc Femi, sản xuất trên công nghệ 40nn với 384 “nhân” CUDA, xung nhịp (shader clock) 1.660MHz, tốc độ phủ vân (texture fill rate) đạt mức 52,5 tỉ/giây. Chip đồ họa Geforce GTX 560 Ti (GF114) chạy ở xung nhịp 830MHz, bộ nhớ GDDR5 dung lượng 1GB, xung nhịp đạt 1.200MHz và giao tiếp bộ nhớ là 256 bit. Card hỗ trợ thư viện đồ họa DirectX 11 và OpenGL 4.1. Tuy chưa có điều kiện thử nghiệm thực tế nhưng theo một số thử nghiệm của một số diễn đàn chuyên về công nghệ, mức độ cải thiện về hiệu năng đồ hoạ khi nâng cấp bằng card đồ hoạ này có thể đạt đến 50%.

Hy vọng những bạn có kinh nghiệm quý báu về việc nâng cấp đồ hoạ cho những cấu hình khác sao cho “ngon, bổ, rẻ” sẽ chia sẻ thêm.

Lắp ráp
1. Tải về trình điều khiển (driver) card đồ họa mới từ website NSX.

2. Gỡ cài đặt driver card cũ. Thậm chí cả khi card đồ họa cũ và mới sử dụng chip đồ họa của cùng NSX.
 
3. Tắt máy và rút cáp nguồn điện, cáp tín hiệu (VGA hoặc DVI) kết nối giữa card cũ và màn hình.
4. Tháo nắp đậy bên hông thùng máy.

5. Rút cáp PCIe cấp nguồn của card cũ. Tháo vít (hoặc chốt gài) giữ card đồ họa với thùng máy.

6. Đẩy chốt gài (của khe PCIe x16) giữ card đồ họa sang 1 bên và tháo card ra khỏi thùng máy.

7. Với card mới, ấn chặt card vào khe PCIe x16, bảo đảm các chân giao tiếp của card nằm hoàn toàn trong khe cắm trên BMC, sử dụng vít hoặc chốt gài để giữ card chặt vào thùng máy.

8. Gắn cáp cấp nguồn (2 PCIe loại 6 chân). Dùng các dây rút để buộc cáp nguồn gọn gàng, tạo sự thông thoáng bên trong thùng máy.

9. Gắn cáp tín hiệu giữa card mới và màn hình. Ưu tiên sử dụng DisplayPort hoặc DVI nếu màn hình hỗ trợ.
 
10. Trước khi kết thúc quá trình lắp ráp máy tính, hãy kiểm tra lại để đảm bảo cáp nguồn, cáp dữ liệu đã gắn kết đầy đủ.

11. Cấp nguồn và khởi động máy tính để kiểm tra. Cài đặt driver mới và chạy thử 1 vài game để đánh giá sức mạnh của card đồ họa mới. Hãy chắc chắn mọi thứ hoạt động tốt trước khi đóng nắp thùng máy.
Lưu ý
- Đeo vòng khử tĩnh điện (nếu có) hoặc chạm vào thùng máy để cân bằng tĩnh điện trong người.

- Giữ card đồ họa trong túi bảo vệ cho đến khi cần sử dụng.

Tham khảo: PC World Mỹ ,Test Lab, PC World VN

Ẩn hình ảnh một số trang web trong Chrome


Đôi khi bạn cảm thấy khó đọc văn bản trong một trang web có nhiều hình ảnh nhấp nháy và trải dài. Trình duyệt Google Chrome cung cấp cách ẩn hình ảnh trong một số trang web.
Bước 1: Mở Google Chrome và nhấn vào biểu tượng chiếc cờ-lê ở góc phải phía trên. Sau đó chọn Options (Tùy chọn).
Bước 2: Nhấn vào mục Under the Hood (Nâng cao) trong danh sách bên trái, rồi nhấn nút Content settings… (Cài đặt nội dung..).
Bước 3: Trong mục Images (Hình ảnh), nhấn nút Manage Exceptions… (Quản lý ngoại lệ…).
Bước 4: Nhập địa chỉ URL một trang web mới vào danh sách, sau đó bạn có thể thay đổi thao tác trong hộp Behavior (Hành vi): Allow (Cho phép) để hiển thị hình ảnh hay Block (Chặn) để ẩn hình ảnh.
Bước 5: Thoát, mở lại trình duyệt và vào lại địa chỉ trang web mà bạn đã cài đặt. Hình ảnh trong trang web này sẽ không hiển thị. Và nếu bạn muốn hiển thị lại hình ảnh trong trang này, hãy chọn nút X nhỏ nằm cạnh tên của trang đó khi bạn di chuyển chuột đến để xóa khỏi danh sách, sau đó khởi động lại trình duyệt.
Trước khi khóa hiển thị hình ảnh.
Sau khi khóa hiển thị hình ảnh.
Bạn cũng có thể làm theo các hướng dẫn này để khóa hiển thị toàn bộ các trang web khi xem trong trình duyệt Google Chorme, ngoại trừ một số trang trong danh sách mà bạn cho phép, giống như trong bước 4.
Nguồn: pcworld

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Blogger Templates