Conditional comments using to recognise version of your IE browser
Conditional comments only work in Explorer on Windows, and are thus excellently suited to give special instructions meant only for Explorer on Windows. They are supported from Explorer 5 onwards, and it is even possible to distinguish between 5.0, 5.5 and 6.0, ie7, ie8
The syntax I use is:
According to the conditional comment this is Internet Explorer<br />
<![endif]–>
<!–[if IE 5]>
According to the conditional comment this is Internet Explorer 5<br />
<![endif]–>
<!–[if IE 5.0]>
According to the conditional comment this is Internet Explorer 5.0<br />
<![endif]–>
<!–[if IE 5.5]>
According to the conditional comment this is Internet Explorer 5.5<br />
<![endif]–>
<!–[if IE 6]>
According to the conditional comment this is Internet Explorer 6<br />
<![endif]–>
<!–[if IE 7]>
According to the conditional comment this is Internet Explorer 7<br />
<![endif]–>
<!–[if gte IE 5]>
According to the conditional comment this is Internet Explorer 5 and up<br />
<![endif]–>
<!–[if lt IE 6]>
According to the conditional comment this is Internet Explorer lower than 6<br />
<![endif]–>
<!–[if lte IE 5.5]>
According to the conditional comment this is Internet Explorer lower or equal to 5.5<br />
<![endif]–>
<!–[if gt IE 6]>
According to the conditional comment this is Internet Explorer greater than 6<br />
<![endif]–>
gt: greater thanlte: less than or equal to
In HTML code<!--[if IE 7]>
<style>
.ie7Div1{ width:700px; }
.ie7Div2{ width:450px;}
</style>
<![endif]-->
<!--[if IE 8]>
<style >
.ie8Div1{ width:600px; }
.ie8Div2{ width:600px;}
</style>
<![endif]-->
If your browser you're using is IE7 it will choose ie7Div1 style
and it has no style in ie8Div1
Connecting to SQL Server 2005 Express using PHP
Bạn sử dụng php để kết nối tới SQL Server 2005 nhưng lại nhận được lỗi :
mssql_connect() [function.mssql-connect]: Unable to connect to server…
Để giải quyết vấn đề này bạn có thể làm theo một số bước sau :
Bước 1 : Bật extention php_mssql lên :
Nếu bạn sử dụng wamp thì có thể vào PHP–> php extentions –> php_mssql
Nếu bạn sử dụng xampp thì bỏ comment dòng php_mssql.dll đi
Bước 2 : Bạn phải chắc chắn rằng SQL Server 2005 đang chạy đúng port chuẩn là 1433, và đã bật Name Pipes và TCP/IP. đã bật chức năng remote connection
bạn có thể kiểm tra bằng cách telnet localhost 1433
nếu telnet thành công thì port đó đang mở
nếu không bạn có thể chỉnh lại như sau :
1. Start -> All Programs –> Microsoft SQL Server 2005 -> Configuration tools -> SQL Server Configuration Manager
2. Kích vào Protocols for SQL Express
3. Bật Name Pipes và TCP/IP lên
3. Kích chuột phải vào phần TCP/IP –> Properties
4. Trong tab Ip Address kéo xuống cuối, chỉnh lại TCP/IP port là 1433
5. Khởi động lại SQL Server 2005 bằng cách gõ vào Command prompt :
net stop mssql$sqlexpress
net start mssql$sqlexpress
có thể xem thêm ở đây để rõ hơn:
http://kimphuc.wordpress.com/2009/10/18/enable-sa-user-and-remote-connection-from-sql-server-2005/
Bước 3 :
1. Bạn tải file ntwdblib.dll (2000.80.194.0) tại đây hoặc có thể tìm trên một số trang download dll như http://www.dll-files.com hoặc www.dll-download.net
2. Ghi đè vào file C:\wamp\bin\apache\apache2.2.6\bin\ntwdblib.dll
3. Ghi đè vào file : C:\wamp\bin\php\php5.2.5\ntwdblib.dll
Bước 4 :
Khởi động lại các dịch vụ
Good Luck!
Enable Sa user and remote connection from SQL Server 2005
1. Enable “sa” user
b.In general panel of Properties set password for sa user
2. Change mode to mix-mode
- Check that you have allowed both SQL Server and Windows Authentication mode (If you’re not use Windows Authentication mode). For instance, user ‘sa’.
- Login to SQL Server using SQL Server Management Studio Express on local SQL Server with Windows Authentication user. This will use Windows account to authenticate to SQL Server.
- In Object Explorer, right click on the instance name and select Properties.

- On the left, select Security and change Server authentication to SQL Server and Windows Authentication mode. If the choice is already selected, that means you have already allowed SQL Server authentication.

- There’ll be an information window shows that you need to restart SQL Server to takes effect of the changes.
- Right-click on the instance name again, select Restart to restart SQL Server service.

If you want to enable remote connection from sql server 2005
1. Open SQL Server Surface Area Configuration from Start–> All programs–> Microsoft Sql Server 2005 –> Configuration
2. Select Surface Area Configuration for Services and Connections
3.On the left side, expand your SQL Server instance -> Database Engine -> Remote Connections. On the right side, select Local and remote connections -> using both TCP/IP and named pipes.

4.On the left side, select SQL Server Browser -> Service.
On the right side, if the startup type is Disable, you need to change to Automatic and click Apply and click Start button to start the service. Then, click OK.
If it does’nt work, check the default port of SQL Server by telnet to localhost on port 1433
If that port doen’t open. Open that port by open SQL Server Configuration Manager
Double click on TCP/IP
On tab IP Address, in IP All catalog, change the TCP port into 1433

The difference between Viewstate, SessionState, Cookies and Cache in ASP.NET
Web Applications are natively statesless, means once a web page renders from server to client, nothing remains on server and the next time user submits the page you have to create the page again.
Solutions in ASP.NET
ASP.NET provides multiple simple solutions to this problems like:
1- Viewstate
2- Session Variables
3- Application Variables
4- Cache
5- Cookies
Now the question arises that when to use what?
1- Viewstate
Viewstate is a hidden fields in an ASP.NET page, contains state of those controls on a page whose “EnableViewstate” property is “true”.
You can also explicitly add values in it, on an ASP.NET page like:
Viewstate.Add( “TotalStudents”, “87″ );
Viewstate should be used when you want to save a value between diferent roundtrips of a single page as viewstate of a page is not accessible by another page.
Because Viewstate renders with the page, it consumes bandwith, so be careful to use it in applications to be run on low bandwith.
2- Session Variable
Session variables are usually the most commonly used.
When a user visits a site, it’s sessions starts and when the user become idle or leave the site, the session ends.
Session variables should be used to save and retrive user specefic information required on multiple pages.
Session variables consumes server memory, so if your may have a huge amount visiters, use session very carefully and instead of put large values in it try to put IDs and references
3- Application variables
Application variables are shared variables among all users of a web application
Application variables behave like static variables and they are substitute of static variables as static variables are stateless in web applications
Only shared values should be persisted in Application variables, and as soon as they are not in use they should be removed explicitly.
4- Cache
Cache is probably the least used state feature of ASP.NET.
Cache is basically a resource specific state persistence feature, means unlike session it stick with resource instead of user, for instance: pages, controls etc.
Cache should be used or frequently used pages, controls, and data structures
Data cache can be used to cache frequently used list of values e.g. list of products
6- Cookies
Cookies are some values saved in browsers for a particular website o publicly accessible
The purpose of cookies is to help websites to identify visitors and retrieve their saved preferences
Cookies are also used to facilitate auto login by persisting user id in a cookie save in user’s browser
Because cookies have been saved at client side, they do not create performance issues but may create security issues as they can be hacked from browser
Finally remember the following points on your finger-tips:
1- Viewstate is bandwidth hungry
2- Session variables are memory hungry as per number of users
3- Applications variables are shared
4- Cache is memory hungry as per number of resources
5- Cookies are the least secure
Hướng dẫn sử dụng Visual SourceSafe
- Source Safe không phải là 1 trình quản lý source code dạng client/server . Nó chấp nhận cho hệ thống người dùng đơn lẻ ít phải cấu hình hơn các hệ thống quản lý source code khác. Thêm vào đó, quy trình sao lưu dữ liệu có thể đơn giản như việc copy toàn bộ nội dung của cây thư mục . Tuy nhiên đối với môi trường nhiều người dùng , nó thiếu nhiều chức năng quan trọng được tìm thấy trong các hệ thống quản lý cấu hình khác .
- Source Safe thừa kế nhiều chức năng chia sẽ sử dụng hệ thống điều khiển file để thâm nhập vào tất cả các file trong repository .
- Khởi đầu với Visual Source Safe 2005 , Microsoft đã thêm vào 1 chế độ client-server . Trong chế độ này , người dùng không cần ghi các đường dẫn vào Server Message Block nơi chúng có thể làm nguy hại tới Source Safe database . Thay vào đó , file phải được truy cập từ các công cụ phía người dùng như : the VSS windows client, the VSS command-line tool , hoặc các chương trình khác thích hợp ,hoặc cạnh tranh với các chương trình phía người dùng đó.
- Như hầu hết các hệ thống quản lý cấu hình khác, Source Safe tạo 1 thư viện ảo trên các tập tin máy tính . Người dùng có thể đọc bất kì file nào tại bất kì thời điểm nào ,nhưng để thay đổi nó , người dùng phải “check out” nó trước . Sau khi chúng được sửa chữa , phải “check in” nó lại . Những thay đổi sẽ được cập nhật đối với tất cả người dùng sau khi nó được “check in”.
Platforms
- Microsoft chỉ hỗ trợ Source Safe trên nền tảng Windows . Các đối tác của Microsoft đưa ra các phiên bản không dành cho windows của Source Safe như :
• Dynamsoft đưa ra 1 sản phẩn tích hợp Source Safe đó là SourceAnywhere for VSS phục vụ cho người dùng java .
• Metrowerks đưa ra sản phẩm quản lý cấu hình tương thích với Source Safe cho hệ điều hành MacOS.
• SourceGear đưa ra sản phẩm tích hợp Source Safe là SourceOffSite cho người dùng sử dụng Hệ điều hành MacOS , Linux , Solaris.
• SourceSafe 2005 Update CTB : http://download.microsoft.com/downlo…08-x86-enu.exe
• SourceSafe 2005 Update : http://www.microsoft.com/downloads/i…7-X86-INTL.exe
a. Vào Menu Tools -> Options :
b. Kích vào nốt Source Control , chọn “Microsoft Visual SourceSafe”

a. Tạo Database cho Visual SourceSafe
- Tạo 1 thư muc trống trên ổ đĩa (ví dụ tạo thư muc tên là SourceSafe DB)
- Mở chương trình “Microsoft Visual SourceSafe Administrator”
- Chọn File –> New Database

- Cửa sổ “Add SourceSafe Database Wizard” sẽ hiện lên

- Nhấn Next , ở cửa sổ tiếp theo ,chọn dường dẫn tới thư mục trống vừa tạo (trong ví dụ là thư mục SourceSafe DB).

- Nhấn next , nhập tên cho Database , mặc định tên sẽ là tên thư mục ta dùng để lưu trữ database.

- Chọn settings cho Database.

- Nhấn Finish để hoàn tất.

- Tạo project mới , khi tạo đánh dấu check vào ô “Add to Source Control”

- Nếu muốn add 1 project đã tạo rồi vào Database của Visual SourceSafe thì trong cửa sổ Solution , kích chuột phải vào Solution file , chọn “Add to Source Control”.

c. Quản lý source code trong project
- Khi add project vào trong Database của Visual SourceSafe thì trên cửa sổ Solution , các file sẽ xuất hiện các biểu tượng có hình ổ khóa.

- Muốn thay đổi nội dung của file , ta kích chuột phải chọn “Check out for edit”

- Nội dung file khi chưa thay đổi


- Nếu sau khi thay đổi , người dùng cảm thấy không vừa lòng với những thay đổi trên và muốn quay lại file ban đầu thì kích chuột phải vào file trong cửa sổ solution chọn “Undo Checkout” thì tập tin chúng ta sẽ trở lại ban đầu .

- Sau khi ta đã xác định chắc chắn những gì mình sửa trên file là chính xác , thì hãy check In để update vào Database của SourceSafe . Khi Check-in ,chúng ta nên ghi lại các comment để sau này dễ dàng xác định những thay đổi trên file để ta có thể quay lại các phiên bản trước của file dễ dàng .

- Nếu người dùng muốn trở lại các phiên bản trước của file ,kích chuột phải vào file trong cửa sổ solution , chọn “View History”.

- Cửa sổ History sẽ hiện ra ,dựa vào Ngày tháng Check In , User Check In , ta xác định version nào cần phục hồi , chọn và nhấn Rollback để quay lại phiên bản đó .

Difference between Stored procedures and User Defined functions[UDF]
The definition of stored procedure as from WIKIPEDIA
Stored procedure
A stored procedure is a program (or procedure) which is physically stored within a database. They are usually written in a proprietary database language like PL/SQL for Oracle database or PL/PgSQL for PostgreSQL. The advantage of a stored procedure is that when it is run, in response to a user request, it is run directly by the database engine, which usually runs on a separate database server. As such, it has direct access to the data it needs to manipulate and only needs to send its results back to the user, doing away with the overhead of communicating large amounts of data back and forth.
User-defined function
A user-defined function is a routine that encapsulates useful logic for use in other queries. While views are limited to a single SELECT statement, user-defined functions can have multiple SELECT statements and provide more powerful logic than is possible with views.
In SQL Server 2000
User defined functions have 3 main categories
- Scalar-valued function – returns a scalar value such as an integer or a timestamp. Can be used as column name in queries
- Inline function – can contain a single SELECT statement.
- Table-valued function – can contain any number of statements that populate the table variable to be returned. They become handy when you need to return a set of rows, but you can’t enclose the logic for getting this rowset in a single SELECT statement.
Differences between Stored procedure and User Defined Functions (UDF)
- UDF can be used in the SQL statements anywhere in the WHERE/HAVING/SELECT section where as Stored procedures cannot be.
- UDFs return tables can be treated as another rowset . This can be used in JOINs with other tables.
- Stored Procedures are designed to return its output to the application. It can’t return a table variable although it can create a table .
- UDFs can’t change the server environment or your operating system environment, while a SPROC can. Operationally, when T-SQL encounters an error the function stops, while T-SQL will ignore an error in a SPROC and proceed to the next statement in your code (provided you’ve included
- Inline UDF’s can be though of as views that take parameters and can be used in JOINs and other Rowset operations.
10 bí quyết thoả thuận lương trong cuộc phỏng vấn tuyển dụng
Thông thường, thỏa thuận lương chỉ kéo dài trong một khoảnh khắc ngắn nhưng lại ảnh hưởng đến tinh thần và năng lực cả quá trình làm việc lâu dài. Trong những giây phút đầy căng thẳng này, chỉ một sự sơ xuất hoặc thiếu sự chuẩn bị là bạn có thể tuột mất nhiều quyền lợi.
1.Luôn cập nhật thông tin liên quan đến bậc lương
Nghe có vẻ hơi lạ lẫm với bạn, nhưng điều này là cần thiết. Trong thực tế, đã có nhiều ứng viên đi đến buổi phỏng vấn trong khi vẫn còn mơ hồ về những con số ảnh hưởng đến tương lai của mình. Biết rõ quyền lợi của mình, bạn sẽ có thêm nhiều lý lẽ và tự tin hơn để nói chuyện tiền bạc.
2.Biết rõ giá trị của mình
Bạn có bao giờ thử nghĩ xem mình giá trị đến mức nào. Một lần, hãy viết ra ra giấy những mặt ưu điểm của bạn: kỹ năng, năng lực, kiến thức, kinh nghiệm, khả năng nổi bật… Động tác tưởng chừng đơn giản này sẽ giúp bạn có cái nhìn tích cực hơn về bản thân mình. Nhờ thế, khi các nhà tuyển dụng cố làm bạn thiếu tự tin về giá trị của mình trong lúc thương lượng, bạn vẫn có cơ sở quật ngã những lời nhận xét cố làm bạn mất phương hướng.
3.Đừng hé lộ mức lương hiện tại.
Tránh tiết lộ vội vàng với nhà quản lý tương lai về mức lương hiện tại hoặc đưa ra đề nghị quá sớm về con số bạn mong muốn kiếm được trong tương lai. Khi viết thư xin việc hay resume, bạn tránh đưa các con số vào, thay vào đó hãy ghi là “thương lượng”. Tại sao cần phải cẩn trọng như thế? Bởi vì, một khi bạn phô bày những thông tin cực kỳ nhạy cảm này bạn sẽ có nguy cơ bị thiệt thòi trong quá trình thương lượng về lương. Nhà tuyển dụng có thể căn cứ vào đó trả cho bạn số tiền không tương đương với mức họ dự định.
4.Tránh đề xuất mức lương mong muốn quá chi tiết, cụ thể
Bí quyết này sẽ giúp bạn tận dụng và tìm kiếm thêm nhiều lợi thế hơn nữa. Nếu bạn đưa ra thông tin chi tiết về mức lương, bạn sẽ có nguy cơ hưởng ít hơn số tiền mà công ty dự định chi trả cho bạn. Thêm vào đó, nếu bạn chọn mức lương không phù hợp với năng lực bản thân bạn sẽ tự mang thêm rắc rối vào mình. Vì thế nên linh động và nhạy bén, tùy theo diễn biến câu chuyện mà phất cờ.
5.Đừng dè dặt khi nói chuyện lương bổng
Chẳng có gì xấu hổ khi định giá sức lao động của mình cả. Để bảo đảm lợi nhuận, nhà tuyển dụng sẽ cố ép bạn xuống mức tối thiểu, sự dè dặt của bạn sẽ tạo thêm cơ hội cho họ. Hãy tự tin khi và thẳng thắng đòi hỏi quyền lợi cho chính mình, bạn bán sức lao động để kiếm cơm chứ không ngồi chơi chờ hưởng lợi.
6.Tận dụng thời cơ
Lúc nào là thời điểm quan trọng. Một qui luật cốt yếu cần ghi nhớ là đừng vội vàng nhanh nhảu đoảng. Tuyệt đối không nên thoả thuận qua điện thoại, tốt nhất là mặt đối mặt. Nếu như cái giá họ đưa ra không làm bạn vừa ý thì cố giữ bình tĩnh và thể hiện sự không hài lòng của mình một cách khéo léo rõ ràng. Như thế, bạn có thể tác động nhà tuyển dụng nâng cao mức lương. Nếu tình thế có vẻ khó khăn, người phỏng vấn không thể quyết định nhanh chóng, hãy đề nghị một cuộc hẹn khác. Hãy tỏ ra nhiệt tình và sẵn sàng hợp tác.
7.Lưu tâm đến các quyền lợi khác.
Nếu nhà tuyển dụng dứt khoát không thay đổi con số đã đưa ra, bạn có thể yêu cầu được biết về những khoản khác như: tiền trợ cấp, tiền thưởng, lợi ích từ lợi nhuận, tiền thưởng cho thành tích vượt trội… Bạn yêu cầu nhà tuyển dụng cam kết về thời hạn tăng lương, các khoản thu nhập khác được hưởng trong hợp đồng rõ ràng. Nếu nhà tuyển dụng tỏ ra cứng rắn, bạn có thể hỏi họ về các hình thức làm việc khác như bán thời gian hay tư vấn…
8.Định rõ giới hạn chấp nhận được
Đây là điều bạn cần phải luôn lưu tâm và suy nghĩ nghiêm túc tường tận trước mỗi buổi phỏng vấn. Hãy vạch ra giới hạn rõ ràng, con số tối đa mà bạn có thể đạt được, con số tối thiểu mà bạn chấp nhận được.
9.Đừng quên những bài học quá khứ
Nhớ lại những lần thương lượng về lương trước đây mà bạn đã trải qua, cho dù đó là những sai lầm thì vẫn là những bài học quý giá giúp bạn thêm kinh nghiệm trong “cuộc chiến” giành quyền lợi cho chính mình.
10.Tiền không phải là tất cả
Chúng ta luôn muốn được trả công xứng đáng, nhưng nên nhớ tiền không phải là tất cả. Tiền lương cần nhưng đừng để nó chi phối mọi hành động của bạn. Đừng để đồng tiền ép bạn vào những công việc không yêu thích hoặc từ bỏ những cơ hội lớn của tương lai.
Port forwarding là gì?
1. Port forwarding là gì?
Nếu máy tính của bạn kết nối với internet thông qua router hoặc có một trình firewall đang chạy, port forwarding là động tác mở một cổng trên router/firewall để các kết nối từ bên ngoài có thể thiết lập được với máy tính của bạn.
Có một vài điểm mà bạn cần nắm rõ trước khi bắt tay vào tìm hiểu về port forwarding. Để cho đơn giản và nhanh chóng, bạn hãy tạm chấp nhận những *tiên đề* sau (đúng trong hầu hết các trường hợp):
1. Mỗi thiết bị trên mạng internet đầu có ít nhất 1 địa chỉ IP. Địa chỉ IP là một con số được sử dụng để nhận diện một thiết bị.
2. Mỗi địa chỉ IP được chia ra làm nhiều cổng khác nhau. Khi một máy tính gửi dữ liệu đến một máy tính khác, dữ liệu sẽ đi từ một cổng thuộc địa chỉ IP này đến một cổng thuộc địa chỉ IP kia.
3. Trong một thời điểm bất kỳ, một cổng chỉ có thể được sử dụng bởi một chương trình.
Giờ, khi bạn đã nắm được những điểm trên, ta hãy cùng nói đến NAT. NAT là viết tắt của Network Address Translation. NAT nhận một địa chỉ IP và, về cơ bản, chia nó ra làm nhiều địa chỉ IP khác nhau.
Ở đây, địa chỉ IP ngoài (external IP address) được chia thành 2 địa chỉ IP nội bộ (internal IP address). Địa chỉ IP thứ 1 (IP Address1) là của gateway. Địa chỉ IP thứ 2 (IP Address2) là của máy tính thứ nhất. Cần chú ý rằng router có 2 địa chỉ IP – 1 địa chỉ IP ngoài và 1 địa chỉ IP nội bộ làm việc như một gateway đối với mỗi máy tính trong mạng.
Trong hình trên, những máy tính trong mạng nội bộ (internal network) chỉ *nhìn thấy* những địa chỉ IP nội bộ. Vì thế những máy tính này ko thể gửi dữ liệu trực tiếp tới một máy tính ngoài mạng mà ko thông qua gateway. Cần nhớ, gateway là địa chỉ IP nội bộ của router. Khi máy tính trong mạng muốn gửi dữ liệu ra ngoài, đầu tiên những dữ liệu đó sẽ được chuyển đến gateway, sau đó router sẽ đưa chúng ra ngoài thông qua địa chỉ IP ngoài. Điều này cũng tương tự như những gì xảy ra trên mạng internet. Một máy tính ngoài mạng sẽ ko thể *thấy* một máy tính trong mạng nội bộ. Chúng chỉ có thể *thấy* và gửi dữ liệu tới router thông qua địa chỉ IP ngoài. Sau đó, router mới quyết định xem nó phải làm gì mới những dữ liệu đó – và NAT đóng vai trò chính trong quá trình này. Thật may mắn là NAT được cấu hình sẵn để làm việc với vài chương trình. Tuy vậy, có những chương trình mà NAT ko được thiết kế để làm việc với, do đó chúng ta phải làm một bước gọi là port forwarding.
Port forwarding cũng khá đơn giản. Khi một máy tính trong mạng internet gửi dữ liệu tới router qua địa chỉ IP ngoài, router cần xác định xem nó sẽ làm gì với dữ liệu đó. Quá trình port forwarding sẽ chỉ ra cho router thấy: Cần gửi dữ liệu tới máy tính nào trong mạng LAN. Khi bạn cài đặt xong các rule cho port forwarding, router sẽ lấy dữ liệu dạng địa chỉ IP ngoài:số thứ tự cổng và gửi dữ liệu đó tới địa chỉ IP nội bộ:số thứ tự cổng. Các rule dành cho port forwarding được cài đặt theo cổng. Vì thế, rule cho cổng mang số 53 sẽ chỉ làm việc cho cổng mang số 53.
Xin nhắc lại: Tại 1 thời điểm, một cổng chỉ có thể được sử dụng bởi một chương trình! Dùng cùng 1 cổng trên 2 máy tính trong mạng nội bộ vào cùng một thời điểm có thể dẫn tới xung đột giữa các rule và làm rối loạn việc truyền dữ liệu. Hầu hết các router đều bắt bạn chỉ ra chính xác địa chỉ IP nội bộ cần forward đến cũng vì lý do này. Còn với những router ko bắt bạn làm việc này, hãy cẩn thận! Rule cho port forwarding chỉ làm việc với một máy tính trong một thời điểm!
2. Tại sao cần phải forward port?
Dữ liệu được truyền tải thông qua một cổng khi bạn đang download. Nếu cổng đó chưa được mở, bạn chỉ có thể kết nối được với những người khác trong swarm (cổng của họ đã mở). Nếu cổng của bạn đã mở rồi, những người khác có thể kết nối với bạn (những người này có thể đã mở hoặc chưa mở cổng). Như vậy, việc mở cổng làm tăng số lượng người kết nối được với bạn và do đó sẽ tăng tốc độ download.

