text:
Khi tiến hành cài đặt lại Win7 trên 1 hệ điều hành cũ, nếu ko để ý khi cài đặt xong bạn sẽ thấy trong ổ C (ổ cài đặt Windows), xuất hiện một folder windows.old chứa các thông tin của bản windows trước đó. Và folder windows.old chiếm khá nhiều ổ cứng của bạn (khoảng gần 3GB nếu trước đó là xp và 4 -> 5GB nếu là win7).
Cách tránh tạo ra thư mục Windows.old trong quá trình cài đặt Win7 :
Khi bạn cài Win7, đến phần chọn ổ đĩa cài đặt Windows (Where do you want to install Windows ?) như hình minh họa bên dưới, bạn hãy chọn ổ đĩa muốn cài đặt và bấm vào nút Drive options (advanced). Một loạt các tùy chọn sẽ hiện ra như Delete, New, Format, Extend…Nếu bạn muốn chia đĩa thì hãy bấm New để thực hiện, còn nếu muốn Format thì bấm nút Format -> xong.
- Vào Startmenu và gõ Clean vào ô tìm kiếm, kết quả hiện ra bạn chọn Disk Cleanup hoặc Start >> accessories >> system tools >> disk cleanup >> chọn ổ chứa file windows.old ( thường là ổ C ) >> nhấn ok.
Nguyên nhân: Ko format ổ đĩa khi cài win7. Hôm nay, tôi chỉ các bạn cách tránh Win7 tạo ra thư mục Windows.old và cách xóa nó.
Cách tránh tạo ra thư mục Windows.old trong quá trình cài đặt Win7 :
Khi bạn cài Win7, đến phần chọn ổ đĩa cài đặt Windows (Where do you want to install Windows ?) như hình minh họa bên dưới, bạn hãy chọn ổ đĩa muốn cài đặt và bấm vào nút Drive options (advanced). Một loạt các tùy chọn sẽ hiện ra như Delete, New, Format, Extend…Nếu bạn muốn chia đĩa thì hãy bấm New để thực hiện, còn nếu muốn Format thì bấm nút Format -> xong.
Cách xóa thư mục Windows.old trong Win7
- Vào Startmenu và gõ Clean vào ô tìm kiếm, kết quả hiện ra bạn chọn Disk Cleanup hoặc Start >> accessories >> system tools >> disk cleanup >> chọn ổ chứa file windows.old ( thường là ổ C ) >> nhấn ok.
Từ hộp thoại hiện ra bạn, bạn bấm nút Cleanup System File > chọn ổ đĩa cài Win giống hồi nãy, bấm OK. Giờ hộp thoại hiện ra bạn sẽ thấy có một mục tên là Previous Windows installation(s), hãy chọn nó và bấm nút OK để tiến hành xóa bỏ.

markdown:
Khi tiến hành cài đặt lại Win7 trên 1 hệ điều hành cũ, nếu ko để ý khi cài đặt xong bạn sẽ thấy trong ổ C (ổ cài đặt Windows), xuất hiện một folder windows.old chứa các thông tin của bản windows trước đó. Và folder windows.old chiếm khá nhiều ổ cứng của bạn (khoảng gần 3GB nếu trước đó là xp và 4 -> 5GB nếu là win7).
Khi bạn cài Win7, đến phần chọn ổ đĩa cài đặt Windows (Where do you want to install Windows ?) như hình minh họa bên dưới, bạn hãy chọn ổ đĩa muốn cài đặt và bấm vào nút Drive options (advanced). Một loạt các tùy chọn sẽ hiện ra như Delete, New, Format, Extend…Nếu bạn muốn chia đĩa thì hãy bấm New để thực hiện, còn nếu muốn Format thì bấm nút Format -> xong.
![ ](http://cb9.upanh.com/19.96.25932828.AFU0/screenshot7.jpg)
![ ](http://cb0.upanh.com/19.96.25932849.dTh0/screenshot8.jpg)
- Vào Startmenu và gõ Clean vào ô tìm kiếm, kết quả hiện ra bạn chọn Disk Cleanup hoặc Start >> accessories >> system tools >> disk cleanup >> chọn ổ chứa file windows.old ( thường là ổ C ) >> nhấn ok.
![ ](http://cb6.upanh.com/19.96.25933405.S5m0/screenshot9.jpg)
![ ](http://r21.imgfast.net/users/2613/15/25/16/smiles/1745451301.gif)
Nguyên nhân: Ko format ổ đĩa khi cài win7. Hôm nay, tôi chỉ các bạn cách tránh Win7 tạo ra thư mục Windows.old và cách xóa nó.
![ ](http://cb6.upanh.com/19.95.25932135.T3J0/screenshot6.jpg)
![ ](http://cb6.upanh.com/19.95.25932135.T3J0/screenshot6.jpg)
**Cách tránh tạo ra thư mục Windows.old trong quá trình cài đặt Win7 :**
Khi bạn cài Win7, đến phần chọn ổ đĩa cài đặt Windows (Where do you want to install Windows ?) như hình minh họa bên dưới, bạn hãy chọn ổ đĩa muốn cài đặt và bấm vào nút Drive options (advanced). Một loạt các tùy chọn sẽ hiện ra như Delete, New, Format, Extend…Nếu bạn muốn chia đĩa thì hãy bấm New để thực hiện, còn nếu muốn Format thì bấm nút Format -> xong.
![ ](http://cb9.upanh.com/19.96.25932828.AFU0/screenshot7.jpg)
![ ](http://cb0.upanh.com/19.96.25932849.dTh0/screenshot8.jpg)
**Cách xóa thư mục Windows.old trong Win7**
- Vào Startmenu và gõ Clean vào ô tìm kiếm, kết quả hiện ra bạn chọn Disk Cleanup hoặc Start >> accessories >> system tools >> disk cleanup >> chọn ổ chứa file windows.old ( thường là ổ C ) >> nhấn ok.
Từ hộp thoại hiện ra bạn, bạn bấm nút Cleanup System File > chọn ổ đĩa cài Win giống hồi nãy, bấm OK. Giờ hộp thoại hiện ra bạn sẽ thấy có một mục tên là Previous Windows installation(s), hãy chọn nó và bấm nút OK để tiến hành xóa bỏ.
![ ](http://cb4.upanh.com/19.96.25933183.A5i0/screenshot2.jpg)
![ ](http://cb7.upanh.com/19.96.25933226.2A40/screenshot4.jpg)
![ ](http://cb4.upanh.com/19.96.25933183.A5i0/screenshot2.jpg)
![ ](http://cb7.upanh.com/19.96.25933226.2A40/screenshot4.jpg)
![ ](http://cb6.upanh.com/19.96.25933405.S5m0/screenshot9.jpg)
![ ](http://cb5.upanh.com/19.96.25933504.rfI0/screenshot10.jpg)
![ ](http://r21.imgfast.net/users/2613/15/25/16/smiles/1745451301.gif)


text:
10/09/2013 10:43
Tổng biên tập: Đỗ Danh Phương - Giấy phép số 1872/GP- BTTTT cấp ngày 9 tháng 10 năm 2012 của Bộ Thông tin và Truyền thông
Địa chỉ: 127 Võ Văn Tần, Phường 6, Quận 3 - TPHCM, Điện thoại: 84-8-3930.6262 / 3930.3270, Fax: 84-8-3930.4707, Email: toasoan@nld.com.vn
Bản quyền thuộc về Báo Người Lao Động ©2001-2014
Ghi rõ nguồn www.nld.com.vn khi sử dụng lại thông tin từ website này
Hotline: 0926 864 344
Email: doanhnghiep@admicro.vn

WARC-Type: response

Content-Type: application/http; msgtype=response

Cache-Control: private

Content-Type: text/html; charset=utf-8

Connection: close


text:
25/10/2013 16:42
Tổng biên tập: Đỗ Danh Phương - Giấy phép số 1872/GP- BTTTT cấp ngày 9 tháng 10 năm 2012 của Bộ Thông tin và Truyền thông
Địa chỉ: 127 Võ Văn Tần, Phường 6, Quận 3 - TPHCM, Điện thoại: 84-8-3930.6262 / 3930.3270, Fax: 84-8-3930.4707, Email: toasoan@nld.com.vn
Bản quyền thuộc về Báo Người Lao Động ©2001-2014
Ghi rõ nguồn www.nld.com.vn khi sử dụng lại thông tin từ website này
Hotline: 0926 864 344
Email: doanhnghiep@admicro.vn


text:
-
Giỏ hàng của bạn đang trống!
(Model: DTC-K.CRV.001)
60.000 đ
(Model: DTC-ONKS2A.10.001)
165.000 đ
(Model: DTC-TQA8D.2330.001)
350.000 đ
(Model: DTC-TQA8D.2530.001)
420.000 đ
(Model: DTC-8DPL3L.001)
1.000.000 đ
(Model: DTC-8DPL3T.001)
850.000 đ
(Model: DTC-8DPLNN.001)
470.000 đ
(Model: DTC-8DPLNT.001)
520.000 đ
(Model: DTC-DPH2A.6.001)
75.000 đ
(Model: DTC-DHD2A.7.001)
(Model: DTC-DHD2A.8.001)
90.000 đ
(Model: DTC-DHD2A.9.001)
130.000 đ
(Model: DTC-DKS2A.10.001)
175.000 đ
(Model: DTC-DKS2A.6.001)
95.000 đ
(Model: DTC-DKS2A.7.001)
110.000 đ
(Model: DTC-DKS2A.8.001)
140.000 đ
(Model: DTC-DPH2A.7.001)
85.000 đ
(Model: DTC-DPH2A.9.001)
(Model: DTC-DT2A.6.001)
(Model: DTC-DT2A.7.001)
(Model: DTC-DT2A.9.001)
(Model: DTC-DTX2A.L.001)
(Model: DTC-DTX2A.N.001)
40.000 đ
(Model: DTC-1HLH16C.001)
1.400.000 đ 1.450.000 đ

WARC-Truncated: length

X-XSS-Protection: 1; mode=block

Set-Cookie: currency=vnd; expires=Tue, 25-Apr-2017 15:00:13 GMT; path=/; domain=noithatanphuco.com

Server: nginx

Cache-Control: no-cache, no-store, max-age=0

X-Content-Type-Options: nosniff

Pragma: no-cache

Vary: User-Agent


text:
Tủ bếp gỗ Hương
- Nhà sản xuất: Nội thất ANPHUCO
- Mã sản phẩm: NT-TB1H-001
- Tình trạng: 3
-
0 đ
-
Mô tả ngắn
Tủ bếp gỗ Hương
Tủ bếp gỗ Hương
Xin vui lòng liên hệ: 1900 55 88 05 - 0932 112 365 để biết thêm thông tin chi tiết
Tags từ: Tủ bếp gỗ Hương

markdown:
# Tủ bếp gỗ Hương
- Nhà sản xuất:
[Nội thất ANPHUCO](http://noithatanphuco.com/noi-that-anphuco)
- Mã sản phẩm:
**NT-TB1H-001**
- Tình trạng:
**3**
-
## 0 đ
-
### Mô tả ngắn
Tủ bếp gỗ Hương
Tủ bếp gỗ Hương
Xin vui lòng liên hệ: 1900 55 88 05 - 0932 112 365 để biết thêm thông tin chi tiết
Tags từ:
[Tủ bếp gỗ Hương](http://noithatanphuco.com/Tim-kiem-san-pham?tag=T%E1%BB%A7%20b%E1%BA%BFp%20g%E1%BB%97%20H%C6%B0%C6%A1ng)

Set-Cookie: currency=vnd; expires=Tue, 25-Apr-2017 14:52:04 GMT; path=/; domain=noithatanphuco.com


text:
MVP - Model View PresenterPosted On Monday, June 30, 2008 at at 6:05 PM by Van Nguyen
Giới thiệu
- Trong bài viết giới thiệu về mô hình MVC, chúng ta đã đề cập đến các nhược điểm của ngôn ngữ ASP. Có thể thấy hiện giờ ít trang web nào sử dụng công nghệ ASP cũ để phát triển nữa mà thay vào đó là các ngôn ngữ mới hơn, tiện ích hơn như PHP, ASP.NET, Java, v.v. Microsoft giới thiệu ngôn ngữ ASP.NET với điểm nhấn tách riêng các thành phần giao diện và xử lý dữ liệu bussiness logic bằng mô hình code-behind. ASP.NET có vẽ như là một lựa chọn tốt cho các ứng dụng web đơn giản, nhưng chính mô hình code-behind sẽ gây ra một số khó khăn cho các ứng dụng web vừa và lớn:
- Code-behind dường như được thiết kế để làm quá nhiều việc, nó vừa là một nơi để xử lý các event, kiểm soát các workflow trong chương trình và nó còn là một layer trung gian giữa dữ liệu bên dưới và giao diện phía trên. Người lập trình có thể viết mọi thứ trong code-behind và làm cho nó trở nên vô cùng rối rắm. Để cho code-behind làm quá nhiều thứ sẽ làm cho code của bạn khó kiểm soát và khó test (Unit Test). Trong những ứng dụng web lớn, người ta xem một design tốt khi nó giảm thiểu sự phụ thuộc lẫn nhau giữa các tầng (layer) và làm sao để cho code-behind càng đơn giản càng tốt. Với mô hình Model-View-Presenter, chúng ta sẽ thấy rằng code-behind được giữ cho vô cùng đơn giản và không hề dính dáng gì đến những xử lý trên giao diện Web.
- Một nhược điểm khác của code-behind là nó hầu như rất khó để sử dụng lại những xử lý giao diện (presentation logic) giữa những trang code-behind khác nhau nếu không đưa các xử lý đó ra các lớp Utility hay Helpers để tránh trùng lặp code. Tất nhiên để làm được điều đó cần một thời gian để tổ chức các lớp cho thich hợp. Tuy nhiên, nó thường dẫn chúng ta đến việc thiết kế các lớp một cách rời rạc và giống như khi sử dụng ASP. Trong một design tốt, mỗi class trong hệ thống nên có duy nhất một nhiệm vụ và mục đích rõ ràng, nếu chúng ta cần tạo ra một class chỉ để tránh trùng lặp code giữa 2 hoặc nhiều nơi khác thì đó là một dấu hiệu xấu, một thiết kế tồi.
- Và một nhược điểm cố hữu mà tôi thường nhắc đến là khả năng sử dụng Unit Test để test các lớp code-behind này. Các lớp code-behind đều kế thừa từ System.Web.UI.Page nên khó có thể viết các Unit Test một cách tự nhiên và thuận lợi được.
- Đã có nhiều kĩ thuật được tìm ra để giải quyết vấn đề của code-behind. Chẳng hạn như Castle Monorail project đã kế thừa những lợi điểm của Ruby-On-Rails và không sử dụng mô hình ASP.NET event. Thực ra cũng giống như ASP.NET MVC Framework, Castle Monorail hướng người lập trình đến cách phát triển ứng dụng Web theo MVC hơn là MVP, và khi áp dụng những framework này, chúng ta sẽ làm web ASP.NET theo một cách hoàn toàn khác, không có postback, không có server controls,... Khác với các framework hỗ trợ MVC, các framework hỗ trợ MVP là những giải pháp trong đó vẫn giữ mô hình event của ASP.NET nhưng hướng đến mục tiêu làm cho code-behind càng đơn giản càng tốt. Model-View Presenter sẽ giúp bạn làm được chuyện đó mà không cần dựa trên một framework nào cả. Đó cũng chính là lý do rất nhiều lập trình viên Web đã chọn MVP thay vì MVC trước khi có những framework hỗ trợ MVC như hiện nay.
- Bên cạnh các ASP.NET MVC Framework, Castle Monorail, hiện nay đã có những framework hỗ trợ MVP cho .NET như MVC# Framework và NMVP Framework. Hi vọng tôi có thời gian tìm hiểu và chia sẽ với các bạn muốn quan tâm. Trong bài viết này, tôi sẽ trình bay khái quát lý thuyết suông về MVP; một sample code sẽ được giới thiệu trong bài tiếp theo.
- Nhiều người cho rằng MVP là một design biến đổi của MVC. Điểm khác nhau dễ thấy nhất là Presenter và Controller hehe đùa thôi... Trong mô hình MVP, các lớp View sẽ được sử dụng thông qua một Interface được định nghĩa trong .NET. Các lớp Presenter tương ứng sẽ sử dụng Interface này để đọc và ghi dữ liệu lên trên các View. Trong đa số các cách implement, một View sẽ có một Presenter tương ứng của nó. View sẽ khởi tạo Presenter cho nó và truyền cho Presenter này tham chiếu đến chính nó. Khi một event nào trên view được kích hoạt chẳng hạn như button_clicked, text_changed,.. bản thân lớp View sẽ không làm gì cả mà sẽ để cho lớp Presenter xử lý những sự kiện đó. Presenter sẽ đọc dữ liệu từ View (vì nó giữ một instance của View như là một member trong class) thông qua View Interface, thực hiện những xử lý ứng với Event được kích hoạt và set những thay đổi từ dữ liệu Model lên trên View thông qua View Interface.
- Trong môi trường .NET, cùng một Presenter có thể được sử dụng cho View trên web như các trang ASP.NET hoặc được sử dụng cho các Form trong Windows Form Application. Các Presenter đọc và ghi dữ liệu thông qua một Interface của .NET nên nó hoàn toàn độc lập với layer View. Chính nhờ cách làm này mà ta có thể áp dụng Unit Test cho các lớp xử lý Presenter rất dễ dàng và nó cũng chính là một trong những lợi ích lớn nhất của MVP cho khả năng tái sử dụng.
Cập nhật View
- Khi thành phần dữ liệu Model được cập nhật, View cũng sẽ phải được cập nhật để hiển thị những thay đổi. Quá trình cập nhật View có thể được thực hiện bằng nhiều cách khác nhau. Có lẽ cũng từ những cách này mà Model-View-Presenter được chia thành hai loại là Passive View và Supervising Controller.
- Trong mô hình Passive View, Presenter sẽ cập nhật view tương ứng bằng cách đọc dữ liệu trực tiếp từ Model rồi set lên View, do đó các lớp View sẽ không biết gì về thay đổi dữ liệu bên dưới. Hay nói cách khác chúng hoàn toàn bị động theo như trên gọi.
- Còn trong mô hình Supervising Controller, các lớp View sẽ tương tác trực tiếp với Model bên dưới để đọc dữ liệu mà không cần thông qua các lớp Presenter. Presenter sẽ cập nhật Model; nó chỉ thay đổi những control trên View trong trường hợp có những xử lý giao diện phức tạp mà không thể khai báo trước chẳng hạn như ẩn hiện control, đổi màu text,…
- Quyết định dùng Passive View hay Supervising Controller thường dựa trên nhu cầu test tự động của ứng dụng. Nếu bạn muốn làm một ứng dụng có thể test tự động dể dàng và cover hầu hết các xử lý bên trong thì Passive View là một lựa chọn thích hợp, mọi UI logic đều được test bằng cách viết lớp test cho các Presenter. Mặt khác, nếu bạn thích code đơn giản hơn thì Supervising Controller có vẻ là một lựa chọn thích hợp hơn. Đối với những thay đổi đơn giản trên giao diện, bạn cũng không cần đưa những xử lý cho các thay đổi đó vào lớp Presenter. Khi chọn lựa giữa Passive View và Supervising Controller, bạn nên cân nhắc các điều sau đây:
- Cả hai cách đều cho phép bạn tăng khả năng test tự động cho các xử lý giao diện (presentation logic)
- Passive View thường cung cấp khả năng test cao hơn Supervising Controller bởi vì tất cả các xử lý giao diện được đặt trong các lớp Presenter.
- Supervising Controller sẽ đỡ phải code nhiều như Passive View bởi vì Passive View không cần thực hiện những cập nhật đơn giản cho View.
Tương tác với dữ liệu
- Bạn cần phân biệt rõ Model với Domain, hai khái niệm này hoàn toàn khác nhau. Chúng ta có thể implement các lớp tương tác với dữ liệu bằng nhiều cách khác nhau. Trong một số trường hợp, có thể bạn sẽ phải sử dụng Observer Pattern cho các Presenter và Model. Nó sẽ giúp cho Presenter nhận những events từ Model khi có sự thay đổi và từ đó cập nhật thay đổi đó lên trên View. Thông thường, người ta sẽ làm ra các lớp Service/Manager, các lớp này sẽ đóng vai trò như các lớp Bussiness Logic trong layer Model để giúp Presenter tương tác với database bên dưới:
Các nhược điểm của MVP
- Có nhiều lớp, nhiều layer phải implement; có nghĩa độ phức tạp của ứng dụng sẽ tăng.
- Bạn phải nghĩ ra một cách để kết hợp giữa các Views và các Presenters. Trong ASP.NET thì các lớp Code-Behind sẽ implement một interface IView nào đó và sử dụng một member Presenter.
- Mô hình Model không biết gì về Presenter. Vì thế nếu dữ liệu Model bị thay đổi từ một chương trình khác thay vì bởi Presenter thì phải nghĩ ra một cách để Presenter biết. Các bạn có thể implement chức năng này nếu cần bằng cách sử dụng các events, hoặc tham khảo thiết kế Observer Pattern.
Tài liệu tham khảo:
http://msdn.microsoft.com/en-us/library/cc304728.aspx
http://www.codeproject.com/KB/architecture/ModelViewPresenter.aspx
http://en.wikipedia.org/wiki/Model_View_Presenter
Trong bài sau tôi sẽ trình bày một sample cho Supervisinng Controller.
Bài này chưa nói kĩ về "Supervising Controller" và "Passive View" nên em cũng chưa hiểu nhiều, nhưng chắc phần em thắc mắc liên quan tới "Supervising Controller" phải ko anh Thoại :D
Mô hình MVP nếu ko có nhiều ví dụ cụ thể thì cũng khó hình dung :D. À, em cũng chưa hiểu rõ Model và Domain khác nhau thế nào ? :D
Chờ xem bài viết kế tiếp về sample của "Supervising Controller" của anh Thoại :D
Model trừu tượng hóa problems trong Domain
em củng đang tìm hiểu về mô hình MVP. trong quá trình tìm hiểu những cài gi em không hiểu anh có thể giúp em không.anh có thể liên lạc với em qua mail :quoctuan143@gmail.com. e rất vui được sự giúp đỡ của anh
Rất dễ hiểu, dễ đọc. Thank bạn.

markdown:
##
Posted On Monday, June 30, 2008 at
at
[MVP - Model View Presenter](http://nthoai.blogspot.com/2008/06/mvp-model-view-presenter.html)
[6:05 PM](http://nthoai.blogspot.com/2008/06/mvp-model-view-presenter.html)by Van Nguyen [](https://www.blogger.com/post-edit.g?blogID=3978293580246860892&postID=1508613222466389840&from=pencil)
Giới thiệu
- Trong bài viết giới thiệu về mô hình
[MVC](http://nthoai.blogspot.com/2008/06/mvc-model-view-controller.html), chúng ta đã đề cập đến các nhược điểm của ngôn ngữ ASP. Có thể thấy hiện giờ ít trang web nào sử dụng công nghệ ASP cũ để phát triển nữa mà thay vào đó là các ngôn ngữ mới hơn, tiện ích hơn như PHP, ASP.NET, Java, v.v. Microsoft giới thiệu ngôn ngữ ASP.NET với điểm nhấn tách riêng các thành phần giao diện và xử lý dữ liệu bussiness logic bằng mô hình code-behind. ASP.NET có vẽ như là một lựa chọn tốt cho các ứng dụng web đơn giản, nhưng chính mô hình code-behind sẽ gây ra một số khó khăn cho các ứng dụng web vừa và lớn:
- Code-behind dường như được thiết kế để làm quá nhiều việc, nó vừa là một nơi để xử lý các event, kiểm soát các workflow trong chương trình và nó còn là một layer trung gian giữa dữ liệu bên dưới và giao diện phía trên. Người lập trình có thể viết mọi thứ trong code-behind và làm cho nó trở nên vô cùng rối rắm. Để cho code-behind làm quá nhiều thứ sẽ làm cho code của bạn khó kiểm soát và khó test (Unit Test). Trong những ứng dụng web lớn, người ta xem một design tốt khi nó giảm thiểu sự phụ thuộc lẫn nhau giữa các tầng (layer) và làm sao để cho code-behind càng đơn giản càng tốt. Với mô hình Model-View-Presenter, chúng ta sẽ thấy rằng code-behind được giữ cho vô cùng đơn giản và không hề dính dáng gì đến những xử lý trên giao diện Web.
- Một nhược điểm khác của code-behind là nó hầu như rất khó để sử dụng lại những xử lý giao diện (presentation logic) giữa những trang code-behind khác nhau nếu không đưa các xử lý đó ra các lớp Utility hay Helpers để tránh trùng lặp code. Tất nhiên để làm được điều đó cần một thời gian để tổ chức các lớp cho thich hợp. Tuy nhiên, nó thường dẫn chúng ta đến việc thiết kế các lớp một cách rời rạc và giống như khi sử dụng ASP. Trong một design tốt, mỗi class trong hệ thống nên có duy nhất một nhiệm vụ và mục đích rõ ràng, nếu chúng ta cần tạo ra một class chỉ để tránh trùng lặp code giữa 2 hoặc nhiều nơi khác thì đó là một dấu hiệu xấu, một thiết kế tồi.
- Và một nhược điểm cố hữu mà tôi thường nhắc đến là khả năng sử dụng Unit Test để test các lớp code-behind này. Các lớp code-behind đều kế thừa từ System.Web.UI.Page nên khó có thể viết các Unit Test một cách tự nhiên và thuận lợi được.
- Đã có nhiều kĩ thuật được tìm ra để giải quyết vấn đề của code-behind. Chẳng hạn như
[Castle Monorail project](http://www.castleproject.org/monorail/index.html) đã kế thừa những lợi điểm của [Ruby-On-Rails](http://www.rubyonrails.org/) và không sử dụng mô hình ASP.NET event. Thực ra cũng giống như [ASP.NET MVC Framework](http://nthoai.blogspot.com/2008/06/aspnet-va-mvc-framework.html), Castle Monorail hướng người lập trình đến cách phát triển ứng dụng Web theo MVC hơn là MVP, và khi áp dụng những framework này, chúng ta sẽ làm web ASP.NET theo một cách hoàn toàn khác, không có postback, không có server controls,... Khác với các framework hỗ trợ MVC, các framework hỗ trợ MVP là những giải pháp trong đó vẫn giữ mô hình event của ASP.NET nhưng hướng đến mục tiêu làm cho code-behind càng đơn giản càng tốt. Model-View Presenter sẽ giúp bạn làm được chuyện đó mà không cần dựa trên một framework nào cả. Đó cũng chính là lý do rất nhiều lập trình viên Web đã chọn MVP thay vì MVC trước khi có những framework hỗ trợ MVC như hiện nay.
- Bên cạnh các
[ASP.NET MVC Framework](http://nthoai.blogspot.com/2008/06/aspnet-va-mvc-framework.html), Castle Monorail, hiện nay đã có những framework hỗ trợ MVP cho .NET như [MVC# Framework](http://www.mvcsharp.org/) và [NMVP Framework](http://www.codeplex.com/nmvp). Hi vọng tôi có thời gian tìm hiểu và chia sẽ với các bạn muốn quan tâm. Trong bài viết này, tôi sẽ trình bay khái quát lý thuyết suông về MVP; một sample code sẽ được giới thiệu trong bài tiếp theo. [http://nthoai.blogspot.com](http://nthoai.blogspot.com/))
- Nhiều người cho rằng MVP là một design biến đổi của
[MVC](http://nthoai.blogspot.com/2008/06/mvc-model-view-controller.html). Điểm khác nhau dễ thấy nhất là Presenter và Controller ![50 :bbpraroi:](http://igame.vn/f/images/smilies/BBP_smilies/50.gif)
- Trong môi trường .NET, cùng một Presenter có thể được sử dụng cho View trên web như các trang ASP.NET hoặc được sử dụng cho các Form trong Windows Form Application. Các Presenter đọc và ghi dữ liệu thông qua một Interface của .NET nên nó hoàn toàn độc lập với layer View. Chính nhờ cách làm này mà ta có thể áp dụng Unit Test cho các lớp xử lý Presenter rất dễ dàng và nó cũng chính là một trong những lợi ích lớn nhất của MVP cho khả năng tái sử dụng.
![cssbody=[boxHoverBody] cssheader=[boxHoverHeader] header=[Một cấu trúc solution áp dụng MVP] body=[Đây chỉ là một sample, có rất nhiều cách tổ chức solution ra các thành phần Model View Presenter khác nhau] Model View Presenter Solution Structure](http://img413.imageshack.us/img413/1786/mvpsolutionoq0.jpg)
Cập nhật View
- Khi thành phần dữ liệu Model được cập nhật, View cũng sẽ phải được cập nhật để hiển thị những thay đổi. Quá trình cập nhật View có thể được thực hiện bằng nhiều cách khác nhau. Có lẽ cũng từ những cách này mà Model-View-Presenter được chia thành hai loại là Passive View và Supervising Controller.
- Trong mô hình Passive View, Presenter sẽ cập nhật view tương ứng bằng cách đọc dữ liệu trực tiếp từ Model rồi set lên View, do đó các lớp View sẽ không biết gì về thay đổi dữ liệu bên dưới. Hay nói cách khác chúng hoàn toàn bị động theo như trên gọi.
- Còn trong mô hình Supervising Controller, các lớp View sẽ tương tác trực tiếp với Model bên dưới để đọc dữ liệu mà không cần thông qua các lớp Presenter. Presenter sẽ cập nhật Model; nó chỉ thay đổi những control trên View trong trường hợp có những xử lý giao diện phức tạp mà không thể khai báo trước chẳng hạn như ẩn hiện control, đổi màu text,…
- Quyết định dùng Passive View hay Supervising Controller thường dựa trên nhu cầu test tự động của ứng dụng. Nếu bạn muốn làm một ứng dụng có thể test tự động dể dàng và cover hầu hết các xử lý bên trong thì Passive View là một lựa chọn thích hợp, mọi UI logic đều được test bằng cách viết lớp test cho các Presenter. Mặt khác, nếu bạn thích code đơn giản hơn thì Supervising Controller có vẻ là một lựa chọn thích hợp hơn. Đối với những thay đổi đơn giản trên giao diện, bạn cũng không cần đưa những xử lý cho các thay đổi đó vào lớp Presenter. Khi chọn lựa giữa Passive View và Supervising Controller, bạn nên cân nhắc các điều sau đây:
- Cả hai cách đều cho phép bạn tăng khả năng test tự động cho các xử lý giao diện (presentation logic)
- Passive View thường cung cấp khả năng test cao hơn Supervising Controller bởi vì tất cả các xử lý giao diện được đặt trong các lớp Presenter.
- Supervising Controller sẽ đỡ phải code nhiều như Passive View bởi vì Passive View không cần thực hiện những cập nhật đơn giản cho View.
Tương tác với dữ liệu
- Bạn cần phân biệt rõ Model với Domain, hai khái niệm này hoàn toàn khác nhau. Chúng ta có thể implement các lớp tương tác với dữ liệu bằng nhiều cách khác nhau. Trong một số trường hợp, có thể bạn sẽ phải sử dụng
[Observer Pattern](http://en.wikipedia.org/wiki/Observer_pattern)cho các Presenter và Model. Nó sẽ giúp cho Presenter nhận những events từ Model khi có sự thay đổi và từ đó cập nhật thay đổi đó lên trên View. Thông thường, người ta sẽ làm ra các lớp Service/Manager, các lớp này sẽ đóng vai trò như các lớp Bussiness Logic trong layer Model để giúp Presenter tương tác với database bên dưới:
Các nhược điểm của MVP
- Có nhiều lớp, nhiều layer phải implement; có nghĩa độ phức tạp của ứng dụng sẽ tăng.
- Bạn phải nghĩ ra một cách để kết hợp giữa các Views và các Presenters. Trong ASP.NET thì các lớp Code-Behind sẽ implement một interface IView nào đó và sử dụng một member Presenter.
- Mô hình Model không biết gì về Presenter. Vì thế nếu dữ liệu Model bị thay đổi từ một chương trình khác thay vì bởi Presenter thì phải nghĩ ra một cách để Presenter biết. Các bạn có thể implement chức năng này nếu cần bằng cách sử dụng các events, hoặc tham khảo thiết kế Observer Pattern.
Tài liệu tham khảo:
[http://msdn.microsoft.com/en-us/library/cc304728.aspx](http://msdn.microsoft.com/en-us/library/cc304728.aspx) [http://www.codeproject.com/KB/architecture/ModelViewPresenter.aspx](http://www.codeproject.com/KB/architecture/ModelViewPresenter.aspx) [http://en.wikipedia.org/wiki/Model_View_Presenter](http://en.wikipedia.org/wiki/Model_View_Presenter)
Trong bài sau tôi sẽ trình bày một sample cho Supervisinng Controller.
![19 :bbpxtay:](http://igame.vn/f/images/smilies/BBP_smilies/19.gif)
Bài này chưa nói kĩ về "Supervising Controller" và "Passive View" nên em cũng chưa hiểu nhiều, nhưng chắc phần em thắc mắc liên quan tới "Supervising Controller" phải ko anh Thoại :D
Mô hình MVP nếu ko có nhiều ví dụ cụ thể thì cũng khó hình dung :D. À, em cũng chưa hiểu rõ Model và Domain khác nhau thế nào ? :D
Chờ xem bài viết kế tiếp về sample của "Supervising Controller" của anh Thoại :D
Model trừu tượng hóa problems trong Domain
em củng đang tìm hiểu về mô hình MVP. trong quá trình tìm hiểu những cài gi em không hiểu anh có thể giúp em không.anh có thể liên lạc với em qua mail :quoctuan143@gmail.com. e rất vui được sự giúp đỡ của anh
Rất dễ hiểu, dễ đọc. Thank bạn.

Server: GSE

Cache-Control: private, max-age=0

Content-Type: text/html; charset=UTF-8


text:
Viết ASP.NET bằng MVP và NHibernate phần 4 - Castle WindsorPosted On Friday, October 31, 2008 at at 9:20 PM by Van Nguyen
Bài viết này được dịch, tóm tắt và bổ sung dựa vào bài viết NHibernate Best Practices with ASP.NET, 1.2nd Ed trên code Project. Các code sample trong bài dựa vào database Northwind của Microsoft và tham khảo 99,99% từ code mẫu của tác giả Billy McCafferty.
I. Giới thiệu Inversion of Control và Castle Windsor
I.1 Giới thiệu
- Có rất nhiều website và blog nói về Inversion of Control và Dependency Injection. Có nguồn cho rằng đây là hai khái niệm khác nhau (MSDN) nhưng sự phụ Martin Fowler thì cho rằng Dependency Injection là tên gọi khác của Inversion of Control để khỏi confused. Tui thì thấy giải thích của bác Martin Fowler khá ổn, dù gì cũng là người lớn tuổi nên chắc không lừa con nít tụi mình . Trên trang MSDN cúng giải thích khái niệm này rất bình dân nên dân đen như tụi mình rất dễ hiểu:
Inversion of Control (IoC) có nghĩa rằng các object không phải tự nó tạo ra các objects mà nó phụ thuộc. Thay vào đó, nó sẽ có những objects nó cần nhờ vào một bên thứ ba.
- Còn Inversion of Control Container là một library dựa trên nguyên tắc của IoC để hỗ trợ chúng ta trong việc tạo và hủy các đối tượng trong chương trình. Khi nhắc đến Dependency Injection, ngoài Spring.NET có lẽ người ta sẽ nghĩ đến Castle Windsor. Castle Windsor là một Container mà phần chính của nó là Castle MicroKernel (cũng là 1 container). Theo như Castle Prolect thì Windsor Container là một library dựa trên library MicroKernel nhưng có hỗ trợ thêm khả năng config uyển chuyển và một số tính năng khác. Nói cách khác, Windsor Container tiện dụng hơn MicroKernel và đối với những ai đã sử dụng Spring.NET thì sẽ thấy rằng Windsor cách dùng đơn giản như đang giỡn
Hình : Lâu đài Windsor ở Anh Quốc
I.2 Cách dùng Windsor
- Trước tiên hãy nghĩ xem Castle Windsor giúp chúng ta giải quyết problem gì. Người ta thường phân chia chương trình thành các module, các layer hay các tầng, tầng này khai báo Interface và tầng kia sẽ có những lớp implement các interface này. Như vậy với cách làm thông thường chắc chắn bằng cách nào đó sẽ có sự phụ thuộc, sẽ có các dòng code đại loại như : IOrderDao orderDao = new NHibernateOrderDao(). Và như vậy rõ ràng nơi nào sử dụng dòng code này đã có sự phụ thuộc vào module/layer chứa lớp NHibernateOrderDao. Người ta muốn tránh sự phụ thuộc này bằng cách thay dòng code có chữ new bằng một cách khác và cách người ta sử dụng chính là Dependency Injection. Có 3 khái niệm Dependency Injection: Constructor injection, Setter Injection và Interface Injection nhưng cái chúng ta thường gặp nhất là Interface Injection. Trong phần này ta sẽ tìm hiểu cách sử dụng Windsor Conainer và Interface Injection.
- Để khỏi phải new 1 object NHibernateOrderDao như trên, ta sẽ sử dụng Castle Windsor. Ta tạo 1 file config tên là Windsor.config rồi add vào project, nội dung của file này như sau:
<?xml version="1.0"?>
<configuration>
</configuration>
<configuration>
<components>
</components>
<component id="orderDao"
</component>
type="MyProjectName.Data.NHibernateOrderDao, MyProjectName.Data"
service="MyProjectName.Core.DataInterfaces.IOrderDao, MyProjectName.Core">
<parameters>
</parameters>
service="MyProjectName.Core.DataInterfaces.IOrderDao, MyProjectName.Core">
<parameters>
<nameOfParameter1>value1</nameOfParameter1>
<nameOfParameter2>100</nameOfParameter2>
<nameOfParameter2>100</nameOfParameter2>
</parameters>
</component>
</components>
</configuration>
Code 1: Nội dung file config cho Castle Windsor
- Bước thứ hai, mình mở mở file config và thêm vào như sau:
<?xml version="1.0"?>
<configuration>
</configuration>
<configuration>
<configSections>
</configSections>
<castle>
</castle>
<section name="castle"
type="Castle.Windsor.Configuration.AppDomain.CastleSectionHandler, Castle.Windsor" />
</configSections>
<castle>
<include uri="Windsor.config" />
</castle>
</configuration>
Code 2: Thêm config cho Windsor vào file app/web.config
- Theo như config trên thì file app/web config và file Windsor.config phải ở cùng thư mục với nhau. Trong Code1, ta khai báo một component với id là orderDao (có thể đặt tên gì cũng được), trong đó type và service lần lượt là Interface và class implement tương ứng. Trong phần parameters, ta khai báo các value cần thiết cho constructor của lớp NHibernateOrderDao. Và cuối cùng trong chương trình, ta sẽ dùng code sau đây để lấy được instance của class NHibernateOrderDao như mong muốn:
IWindsorContainer windsorContainer = new WindsorContainer(new XmlInterpreter());
IOrderDao = (IOrderDao)windsorContainer.Resolve("orderDao");
// Or : IOrderDao = (IOrderDao)windsorContainer.Resolve(typeof(IOrderDao));
IOrderDao = (IOrderDao)windsorContainer.Resolve("orderDao");
// Or : IOrderDao = (IOrderDao)windsorContainer.Resolve(typeof(IOrderDao));
Code 3: Lấy instance của class NHibernateOrderDao như mong muốn
II. Tạo Web project và cấu hình Windsor, NHibernate
II.1 Load config cho Windsor trong global.asax
- Sau khi tạo một project Web, add file Windsor.config và sửa file web.config như đã nói ở trên xong thì điều tiếp theo ta sẽ nghĩ xem nên load cái config ấy như thế nào. Rõ ràng không nên cứ load config này mỗi lần muốn Resolve 1 object. Tương tự như khi sử dụng log4net cho web application, chúng ta phải load config log4net 1 lần duy nhất và code cho hành động này được đặt ở file global.asax. Nhưng khác với log4net, chúng ta cần một cách nào đó để giữ lại instance của WindsorContainer nên không thể thực hiện trong Global.asax được. Cách của bác Billy rất hay, đó là viết 1 lớp CustomHttpApplication, đặt tất cả các cấu hình cần thiết vào Application_Start, kế đến khai báo một public property để giữ instance của Windsor Container trong suốt thời gian sống của Application và vì thế instance của Windsor Container có thể được sử dụng bất cứ nơi nào trong tầng Web, cụ thể là các Page và các UserControl:
private static IWindsorContainer windsorContainer;
public static IWindsorContainer WindsorContainer
{
get { return windsorContainer; }
}
public void Application_Start(object sender, EventArgs e) {
// Initialize log4net
XmlConfigurator.Configure();
// Create the Windsor Container for IoC.
// Supplying "XmlInterpreter" as the parameter tells Windsor
// to look at web.config for any necessary configuration.
windsorContainer = new WindsorContainer(new XmlInterpreter());
}
public void Application_End(object sender, EventArgs e) {
windsorContainer.Dispose();
}
public static IWindsorContainer WindsorContainer
{
get { return windsorContainer; }
}
public void Application_Start(object sender, EventArgs e) {
// Initialize log4net
XmlConfigurator.Configure();
// Create the Windsor Container for IoC.
// Supplying "XmlInterpreter" as the parameter tells Windsor
// to look at web.config for any necessary configuration.
windsorContainer = new WindsorContainer(new XmlInterpreter());
}
public void Application_End(object sender, EventArgs e) {
windsorContainer.Dispose();
}
Code 4: Giữ instance của WindsorContainer trong HttpApplication
II.2 Open Session In View Principle
- Nếu google cụm từ trên thì các bạn sẽ thấy rất nhiều topic viết về chủ đề này trong đó tui thấy nên đọc nhất là trang của Hibernate.org. Vấn đề chúng ta mong muốn giải quyết ở đây là hạn chế số lần NHibernate mở connection đến database. Trong một view bất kì (page/usercontrol) có thể ta sẽ cần load nhiều dữ liệu, gọi nhiều query để load nhiều thông tin khác nhau để hiển thị trên form. Nếu với cách làm bình thường mỗi lần cần 1 Dao object nào đó select dữ liệu ta lại để NHibernate mở một connection thì performance của chương trình sẽ rất thấp, bởi vậy người ta nghĩ ra ý tưởng chỉ mở 1 connection ứng với mỗi View. Kĩ thuật của tác giả là khi có một request đến một view, một connection hay còn gọi là NHibernate session sẽ được tạo ra nếu chưa có, sau khi được sử dụng session NHibernate này sẽ được lưu trong 1 Hashtable, và nếu trong view đó tiếp tục còn Request khác thì session NHibernate này sẽ được lấy ra để tiếp tục sử dụng. Cuối cùng khi không còn Request nào nữa, ứng với sự kiện EndRequest của 1 view thì NHibernate session này sẽ được lấy ra lần cuối để close đi, sau đó empty Hashtable. Vậy nếu trên 1 trang aspx của ta có 3 usercontrol tương ứng 3 view sẽ có 3 lần mở connection đến database mà thôi thay vì mỗi usercontrol bản thân nó lại mở cả đống connection. Vậy làm sao để NHibernate Session chỉ mở một lần ứng với 1 View? Người ta có thể dùng HttpModule để thực hiện mục đích này.
- Như chúng ta biết HttpModule được khai báo trong file web.config và cho phép chúng ta implement những function bổ xung cho web application. Một HttpModule sẽ được gọi ngay vào đầu và sau khi có request đến 1 View bất kì. Thông thường người ta sử dụng HttpModule để phục vụ việc Logging hay check Security, trong trường hợp này ta đã implement lớp NHibernateSessionModule(Xem bài 3) để quản lý việc đóng và commit transaction. Lớp này được đặt trong project ProjectBase.Data và Pattern này có thể được sử dụng trong nhiều prolect khác nhau của bạn:
/// <summary>
/// Commits and closes the NHibernate session provided by the supplied <see cref="NHibernateSessionManager"/>.
/// Assumes a transaction was begun at the beginning of the request; but a transaction or session does
/// not *have* to be opened for this to operate successfully.
/// </summary>
private void CommitAndCloseSession(object sender, EventArgs e) {
OpenSessionInViewSection openSessionInViewSection = GetOpenSessionInViewSection();
try {
// Commit every session factory that's holding a transactional session
foreach (SessionFactoryElement sessionFactorySettings in openSessionInViewSection.SessionFactories) {
if (sessionFactorySettings.IsTransactional) {
NHibernateSessionManager.Instance.CommitTransactionOn(sessionFactorySettings.FactoryConfigPath);
}
}
}
finally {
// No matter what happens, make sure all the sessions get closed
foreach (SessionFactoryElement sessionFactorySettings in openSessionInViewSection.SessionFactories) {
NHibernateSessionManager.Instance.CloseSessionOn(sessionFactorySettings.FactoryConfigPath);
}
}
}
/// Commits and closes the NHibernate session provided by the supplied <see cref="NHibernateSessionManager"/>.
/// Assumes a transaction was begun at the beginning of the request; but a transaction or session does
/// not *have* to be opened for this to operate successfully.
/// </summary>
private void CommitAndCloseSession(object sender, EventArgs e) {
OpenSessionInViewSection openSessionInViewSection = GetOpenSessionInViewSection();
try {
// Commit every session factory that's holding a transactional session
foreach (SessionFactoryElement sessionFactorySettings in openSessionInViewSection.SessionFactories) {
if (sessionFactorySettings.IsTransactional) {
NHibernateSessionManager.Instance.CommitTransactionOn(sessionFactorySettings.FactoryConfigPath);
}
}
}
finally {
// No matter what happens, make sure all the sessions get closed
foreach (SessionFactoryElement sessionFactorySettings in openSessionInViewSection.SessionFactories) {
NHibernateSessionManager.Instance.CloseSessionOn(sessionFactorySettings.FactoryConfigPath);
}
}
}
Code 5: Implement 1 lớp HttpModule để apply Open In View Principle
- Và đây là một phần của file web.config để khai báo HttpModule này:
<system.web>
</system.web>
<compilation debug="true" />
<httpModules>
</httpModules>
<httpModules>
<add name="NHibernateSessionModule" type="ProjectBase.Data.NHibernateSessionModule, ProjectBase.Data" />
</httpModules>
</system.web>
Code 6: Khai báo HttpModule trong web.config
III. Cải tiến DaoFactory bằng Generic và Castle Windsor
- Hiện tại có một vấn đề với DaoFactory của chúng ta. Khi cần tạo mới một class XXXDao nào đó cho một entity mới, chúng ta phải mở code, sửa lại interface IDaoFactory và thêm vào một dòng IXXXDao GetXXXDao(). Tất nhiên chúng ta cũng phải sửa lại lớp NHibernateDaoFactory, implement thêm method GetXXXDao(). Như vậy khá là bất tiện. Bác huynguyen_fisherman (đồng nghiệp, PM của project NHAU) đã đề nghị tui cách làm khác như sau:
1/ Refactoring lại interface IDao, thay tên của nó thành IGenericDao:
Hình : Refactor lại interface IDao
2/ Thêm vào một interface rỗng IDao và để IGeneric Dao inherit từ interface IDao này
3/ Sửa lại interface IDaoFactory như sau:
Code 7: Sửa lại interface IDaoFactory
4/ Implement lại class NHibernateDaoFactory:
public class NHibernateDaoFactory : IDaoFactory
{
public NHibernateDaoFactory()
{
}
// id is "component id" that we "declare" in the CastleComponents.config
public T GetDao
(string id) where T : IDao
{
Check.Require(string.IsNullOrEmpty(id) == false, "component id cannot be null or empty");
return (T)_windsorContainer.Resolve(typeof(T));
}
private IWindsorContainer _windsorContainer = new WindsorContainer(new XmlInterpreter());
}
{
public NHibernateDaoFactory()
{
}
// id is "component id" that we "declare" in the CastleComponents.config
public T GetDao
{
Check.Require(string.IsNullOrEmpty(id) == false, "component id cannot be null or empty");
return (T)_windsorContainer.Resolve(typeof(T));
}
private IWindsorContainer _windsorContainer = new WindsorContainer(new XmlInterpreter());
}
Code 8: Sửa lại class NHibernateDaoFactory
5/ Và đây là cách sử dụng để lấy 1 Dao object như ý muốn
IDaoFactory daoFactory = new NHibernateDaoFactory();
ICustomerDao customerDao = daoFactory.GetDao<ICustomerDao>("CustomerDao");
ICustomerDao customerDao = daoFactory.GetDao<ICustomerDao>("CustomerDao");
Code 9: Cách lấy một Dao bằng NHibernateDaoFactory
IV. Tóm tắt & Kết luận
- Castle Windsor là một IOC Container rất được ưa thích, nếu các bạn xem ở blog này http://www.hanselman.com/blog/ListOfNETDependencyInjectionContainersIOC.aspx sẽ thấy rằng Windsor xếp đầu bảng và ngoài nó ra còn rất nhiều library Dependcy Injection nữa. Trong số đó thì có Unity và NInjection là hai IoC Container tui muốn tìm hiểu khi có thời gian :D.
- Trong bài này ta đã tìm hiểu cách áp dụng Generic và IoC Container để làm cho code gọn gàng, dễ sửa đổi. Chúng ta chỉ mới tạo project web và chuẩn bị trước một số thứ như config NHibernate và Windsor cũng như làm quen với Open In View Principle. Trong phần tiếp theo chúng ta sẽ tìm hiểu cách áp dụng pattern MVP để làm các trang aspx. Cách làm mới có gì khác so với cách làm truyền thống? Hãy chờ hồi sau sẽ rõ
Code phần 4: http://nthoaiblog.googlepages.com/EnterpriseSample-part4.zip
Các đoạn code minh họa trong bài viết được tui rút gọn cho dễ hiểu, code được implement cuối cùng trong demo sẽ có nhiều điểm khác biệt...
(Còn tiếp)
Tham khảo:
http://martinfowler.com/articles/injection.html
http://msdn.microsoft.com/en-us/library/aa973811.aspx
http://www.castleproject.org/container/documentation/v1rc3/concepts/ioc.html
http://en.wikipedia.org/wiki/Inversion_of_control
http://sourceforge.net/forum/message.php?msg_id=2847509
http://www.hibernate.org/43.html
http://www.builderau.com.au/program/dotnet/print.htm?TYPE=story&AT=339284537-339028399t-320002019c
http://dotnetslackers.com/articles/designpatterns/InversionOfControlAndDependencyInjectionWithCastleWindsorContainerPart1.aspx
http://dotnetslackers.com/articles/designpatterns/InversionOfControlAndDependencyInjectionWithCastleWindsorContainerPart2.aspx
Hoi do la`m cai IoC dau tien voi tao dung ko :P.
A`, trong cai Castle Windsor co`n nhieu mo'n an choi lam, viet AOP du`ng Castle cu~ng ok luon a'
脚やせエステ茨城
脚やせエステ新宿
脚やせエステ三重
脚やせエステ松山
脱毛 高崎
脱毛 北千住
脱毛 豊田
脱毛 岡山
フェイシャルエステ札幌
フェイシャルエステ埼玉
フェイシャルエステ中野・杉並
フェイシャルエステ愛知
フェイシャルエステ岡山
フェイシャルエステ久留米
エステ体験 所沢
エステ体験 恵比寿
エステ体験 福井
エステ体験 天王寺
エステ体験 福岡
水戸 エステ
千葉市 エステ
上野 エステ
青葉台 エステ
富山 エステ
梅田 エステ
橿原 エステ
熊本 エステ
メンズエステ 千葉
メンズエステ 三重
メンズエステ 大分

markdown:
##
Posted On Friday, October 31, 2008 at
at
[Viết ASP.NET bằng MVP và NHibernate phần 4 - Castle Windsor](http://nthoai.blogspot.com/2008/10/aspnet-mvp-with-nhibernate-p4.html)
[9:20 PM](http://nthoai.blogspot.com/2008/10/aspnet-mvp-with-nhibernate-p4.html)by Van Nguyen [](https://www.blogger.com/post-edit.g?blogID=3978293580246860892&postID=1236310999122297799&from=pencil)
Bài viết này được dịch, tóm tắt và bổ sung dựa vào bài viết
[NHibernate Best Practices with ASP.NET, 1.2nd Ed trên code Project](http://www.codeproject.com/KB/architecture/NHibernateBestPractices.aspx). Các code sample trong bài dựa vào database Northwind của Microsoft và tham khảo 99,99% từ code mẫu của tác giả [Billy McCafferty](http://www.codeproject.com/script/Articles/MemberArticles.aspx?amid=2797038).
# I. Giới thiệu Inversion of Control và Castle Windsor
## I.1 Giới thiệu
- Có rất nhiều website và blog nói về Inversion of Control và
[Dependency Injection](http://nthoai.blogspot.com/search/label/Dependency%20Injection). Có nguồn cho rằng đây là hai khái niệm khác nhau ( [MSDN](http://msdn.microsoft.com/en-us/library/aa973811.aspx)) nhưng sự phụ [Martin Fowler](http://martinfowler.com/articles/injection.html)thì cho rằng [Dependency Injection](http://nthoai.blogspot.com/search/label/Dependency%20Injection)là tên gọi khác của Inversion of Control để khỏi confused. Tui thì thấy giải thích của bác [Martin Fowler](http://martinfowler.com/)khá ổn, dù gì cũng là người lớn tuổi nên chắc không lừa con nít tụi mình ![17 :bbpcuoi3:](http://www.igame.vn/f/images/smilies/BBP_smilies/17.gif)
[MSDN](http://msdn.microsoft.com/en-us/library/aa973811.aspx)cúng giải thích khái niệm này rất bình dân nên dân đen như tụi mình rất dễ hiểu: ![50 :bbpraroi:](http://www.igame.vn/f/images/smilies/BBP_smilies/50.gif)
*Inversion of Control (IoC) có nghĩa rằng các object không phải tự nó tạo ra các objects mà nó phụ thuộc. Thay vào đó, nó sẽ có những objects nó cần nhờ vào một bên thứ ba.*
- Còn
**Inversion of Control Container**là một library dựa trên nguyên tắc của IoC để hỗ trợ chúng ta trong việc tạo và hủy các đối tượng trong chương trình. Khi nhắc đến [Dependency Injection](http://nthoai.blogspot.com/search/label/Dependency%20Injection), ngoài [Spring.NET](http://nthoai.blogspot.com/search/label/Spring.NET)có lẽ người ta sẽ nghĩ đến Castle Windsor. Castle Windsor là một Container mà phần chính của nó là [Castle MicroKernel](http://www.castleproject.org/container/index.html)(cũng là 1 container). Theo như Castle Prolect thì Windsor Container là một library dựa trên library [MicroKernel](http://www.castleproject.org/container/index.html)nhưng có hỗ trợ thêm khả năng config uyển chuyển và một số tính năng khác. Nói cách khác, Windsor Container tiện dụng hơn [MicroKernel](http://www.castleproject.org/container/index.html)và đối với những ai đã sử dụng [Spring.NET](http://nthoai.blogspot.com/search/label/Spring.NET)thì sẽ thấy rằng Windsor cách dùng đơn giản như đang giỡn ![50 :bbpraroi:](http://www.igame.vn/f/images/smilies/BBP_smilies/50.gif)
![cssbody=[boxHoverBody] cssheader=[boxHoverHeader] header=[NHibernate Best Practices với ASP.NET MVP] body=[Lâu đài Windsor ở Anh Quốc được lấy tên để đặt cho Windsor Container] Castle Windsor](http://kwnhuw.blu.livefilestore.com/y1pRmvVJRpOdyp6IFo1hqH3KXMY2UuLKTUyTExt9jHpRgd-6--UUn7TtwU_11W20O3Dif7D34vDcqQ/Castle%20Windsor.jpg)
Hình : Lâu đài Windsor ở Anh Quốc
## I.2 Cách dùng Windsor
- Trước tiên hãy nghĩ xem Castle Windsor giúp chúng ta giải quyết problem gì. Người ta thường phân chia chương trình thành các module, các layer hay các tầng, tầng này khai báo Interface và tầng kia sẽ có những lớp implement các interface này. Như vậy với cách làm thông thường chắc chắn bằng cách nào đó sẽ có sự phụ thuộc, sẽ có các dòng code đại loại như :
**IOrderDao orderDao = new NHibernateOrderDao()**. Và như vậy rõ ràng nơi nào sử dụng dòng code này đã có sự phụ thuộc vào module/layer chứa lớp **NHibernateOrderDao**. Người ta muốn tránh sự phụ thuộc này bằng cách thay dòng code có chữ **new**bằng một cách khác và cách người ta sử dụng chính là [Dependency Injection](http://nthoai.blogspot.com/search/label/Dependency%20Injection). Có 3 khái niệm [Dependency Injection](http://nthoai.blogspot.com/search/label/Dependency%20Injection): Constructor injection, Setter Injection và Interface Injection nhưng cái chúng ta thường gặp nhất là Interface Injection. Trong phần này ta sẽ tìm hiểu cách sử dụng Windsor Conainer và Interface Injection.
- Để khỏi phải new 1 object NHibernateOrderDao như trên, ta sẽ sử dụng Castle Windsor. Ta tạo 1 file config tên là Windsor.config rồi add vào project, nội dung của file này như sau:
[<?xml version="1.0"?>]
<configuration>
<components>
</components>
<component id="orderDao"
</component>
type="MyProjectName.Data.NHibernateOrderDao, MyProjectName.Data"
service="MyProjectName.Core.DataInterfaces.IOrderDao, MyProjectName.Core">
<parameters>
</parameters>
service="MyProjectName.Core.DataInterfaces.IOrderDao, MyProjectName.Core">
<parameters>
<nameOfParameter1>value1</nameOfParameter1>
<nameOfParameter2>100</nameOfParameter2>
<nameOfParameter2>100</nameOfParameter2>
</parameters>
</component>
</components>
</configuration>
Code 1: Nội dung file config cho Castle Windsor
- Bước thứ hai, mình mở mở file config và thêm vào như sau:
[<?xml version="1.0"?>]
<configuration>
<configSections>
</configSections>
<castle>
</castle>
<section name="castle"
type="Castle.Windsor.Configuration.AppDomain.CastleSectionHandler, Castle.Windsor" />
</configSections>
<castle>
<include uri="Windsor.config" />
</castle>
</configuration>
Code 2: Thêm config cho Windsor vào file app/web.config
- Theo như config trên thì file app/web config và file Windsor.config phải ở cùng thư mục với nhau. Trong
[Code1](http://nthoai.blogspot.com/2008/10/aspnet-mvp-with-nhibernate-p4.html#ASPNET_NHIBERNATE_MVP_P4_CODE1), ta khai báo một component với id là orderDao (có thể đặt tên gì cũng được), trong đó type và service lần lượt là Interface và class implement tương ứng. Trong phần parameters, ta khai báo các value cần thiết cho constructor của lớp NHibernateOrderDao. Và cuối cùng trong chương trình, ta sẽ dùng code sau đây để lấy được instance của class NHibernateOrderDao như mong muốn: [IWindsorContainer windsorContainer = new WindsorContainer(new XmlInterpreter());]
IOrderDao = (IOrderDao)windsorContainer.Resolve("orderDao");
// Or : IOrderDao = (IOrderDao)windsorContainer.Resolve(typeof(IOrderDao));
Code 3: Lấy instance của class NHibernateOrderDao như mong muốn
# II. Tạo Web project và cấu hình Windsor, NHibernate
## II.1 Load config cho Windsor trong global.asax
- Sau khi tạo một project Web, add file Windsor.config và sửa file web.config như đã nói ở trên xong thì điều tiếp theo ta sẽ nghĩ xem nên load cái config ấy như thế nào. Rõ ràng không nên cứ load config này mỗi lần muốn Resolve 1 object. Tương tự như khi sử dụng log4net cho web application, chúng ta phải load config log4net 1 lần duy nhất và code cho hành động này được đặt ở file global.asax. Nhưng khác với log4net, chúng ta cần một cách nào đó để giữ lại instance của WindsorContainer nên không thể thực hiện trong Global.asax được. Cách của bác Billy rất hay, đó là viết 1 lớp CustomHttpApplication, đặt tất cả các cấu hình cần thiết vào Application_Start, kế đến khai báo một public property để giữ instance của Windsor Container trong suốt thời gian sống của Application và vì thế instance của Windsor Container có thể được sử dụng bất cứ nơi nào trong tầng Web, cụ thể là các Page và các UserControl:
[private static IWindsorContainer windsorContainer;]
public static IWindsorContainer WindsorContainer
{
get { return windsorContainer; }
}
public void Application_Start(object sender, EventArgs e) {
// Initialize log4net
XmlConfigurator.Configure();
// Create the Windsor Container for IoC.
// Supplying "XmlInterpreter" as the parameter tells Windsor
// to look at web.config for any necessary configuration.
windsorContainer = new WindsorContainer(new XmlInterpreter());
}
public void Application_End(object sender, EventArgs e) {
windsorContainer.Dispose();
}
Code 4: Giữ instance của WindsorContainer trong HttpApplication
## II.2 Open Session In View Principle
- Nếu google cụm từ trên thì các bạn sẽ thấy rất nhiều topic viết về chủ đề này trong đó tui thấy nên đọc nhất là trang của Hibernate.org. Vấn đề chúng ta mong muốn giải quyết ở đây là hạn chế số lần NHibernate mở connection đến database. Trong một view bất kì (page/usercontrol) có thể ta sẽ cần load nhiều dữ liệu, gọi nhiều query để load nhiều thông tin khác nhau để hiển thị trên form. Nếu với cách làm bình thường mỗi lần cần 1 Dao object nào đó select dữ liệu ta lại để NHibernate mở một connection thì performance của chương trình sẽ rất thấp, bởi vậy người ta nghĩ ra ý tưởng chỉ mở 1 connection ứng với mỗi View. Kĩ thuật của tác giả là khi có một request đến một view, một connection hay còn gọi là NHibernate session sẽ được tạo ra nếu chưa có, sau khi được sử dụng session NHibernate này sẽ được lưu trong 1 Hashtable, và nếu trong view đó tiếp tục còn Request khác thì session NHibernate này sẽ được lấy ra để tiếp tục sử dụng. Cuối cùng khi không còn Request nào nữa, ứng với sự kiện EndRequest của 1 view thì NHibernate session này sẽ được lấy ra lần cuối để close đi, sau đó empty Hashtable. Vậy nếu trên 1 trang aspx của ta có 3 usercontrol tương ứng 3 view sẽ có 3 lần mở connection đến database mà thôi thay vì mỗi usercontrol bản thân nó lại mở cả đống connection. Vậy làm sao để
**NHibernate Session**chỉ mở một lần ứng với 1 **View**? Người ta có thể dùng **HttpModule**để thực hiện mục đích này. ![50 :bbpraroi:](http://www.igame.vn/f/images/smilies/BBP_smilies/50.gif)
- Như chúng ta biết
**HttpModule**được khai báo trong file *web.config*và cho phép chúng ta implement những function bổ xung cho web application. Một **HttpModule**sẽ được gọi ngay vào đầu và sau khi có request đến 1 View bất kì. Thông thường người ta sử dụng **HttpModule**để phục vụ việc **Logging**hay check **Security**, trong trường hợp này ta đã implement lớp **NHibernateSessionModule**( [Xem bài 3](http://nthoai.blogspot.com/2008/10/aspnet-mvp-with-nhibernate-p3.html)) để quản lý việc đóng và commit transaction. Lớp này được đặt trong project **ProjectBase.Data**và Pattern này có thể được sử dụng trong nhiều prolect khác nhau của bạn: [/// <summary>]
/// Commits and closes the NHibernate session provided by the supplied <see cref="NHibernateSessionManager"/>.
/// Assumes a transaction was begun at the beginning of the request; but a transaction or session does
/// not *have* to be opened for this to operate successfully.
/// </summary>
private void CommitAndCloseSession(object sender, EventArgs e) {
OpenSessionInViewSection openSessionInViewSection = GetOpenSessionInViewSection();
try {
// Commit every session factory that's holding a transactional session
foreach (SessionFactoryElement sessionFactorySettings in openSessionInViewSection.SessionFactories) {
if (sessionFactorySettings.IsTransactional) {
NHibernateSessionManager.Instance.CommitTransactionOn(sessionFactorySettings.FactoryConfigPath);
}
}
}
finally {
// No matter what happens, make sure all the sessions get closed
foreach (SessionFactoryElement sessionFactorySettings in openSessionInViewSection.SessionFactories) {
NHibernateSessionManager.Instance.CloseSessionOn(sessionFactorySettings.FactoryConfigPath);
}
}
}
Code 5: Implement 1 lớp HttpModule để apply Open In View Principle
- Và đây là một phần của file web.config để khai báo HttpModule này:
[<system.web>]
<compilation debug="true" />
<httpModules>
</httpModules>
<httpModules>
<add name="NHibernateSessionModule" type="ProjectBase.Data.NHibernateSessionModule, ProjectBase.Data" />
</httpModules>
</system.web>
Code 6: Khai báo HttpModule trong web.config
# III. Cải tiến DaoFactory bằng Generic và Castle Windsor
- Hiện tại có một vấn đề với DaoFactory của chúng ta. Khi cần tạo mới một class XXXDao nào đó cho một entity mới, chúng ta phải mở code, sửa lại interface IDaoFactory và thêm vào một dòng IXXXDao GetXXXDao(). Tất nhiên chúng ta cũng phải sửa lại lớp NHibernateDaoFactory, implement thêm method GetXXXDao(). Như vậy khá là bất tiện. Bác
[huynguyen_fisherman](http://360.yahoo.com/profile-bNw.Bzs_dLIM3Br7YGzwqcoENiDR66jk)(đồng nghiệp, PM của project NHAU ![40 :bbpcheer:](http://www.igame.vn/f/images/smilies/BBP_smilies/40.gif)
1/ Refactoring lại interface IDao, thay tên của nó thành IGenericDao:
Hình : Refactor lại interface IDao
2/ Thêm vào một interface rỗng IDao và để IGeneric Dao inherit từ interface IDao này
3/ Sửa lại interface IDaoFactory như sau:
Code 7: Sửa lại interface IDaoFactory
4/ Implement lại class NHibernateDaoFactory:
[public class NHibernateDaoFactory : IDaoFactory]
{
public NHibernateDaoFactory()
{
}
// id is "component id" that we "declare" in the CastleComponents.config
public T GetDao
{
Check.Require(string.IsNullOrEmpty(id) == false, "component id cannot be null or empty");
return (T)_windsorContainer.Resolve(typeof(T));
}
private IWindsorContainer _windsorContainer = new WindsorContainer(new XmlInterpreter());
}
Code 8: Sửa lại class NHibernateDaoFactory
5/ Và đây là cách sử dụng để lấy 1 Dao object như ý muốn
![19 :bbpxtay:](http://www.igame.vn/f/images/smilies/BBP_smilies/19.gif)
[IDaoFactory daoFactory = new NHibernateDaoFactory();]
ICustomerDao customerDao = daoFactory.GetDao<ICustomerDao>("CustomerDao");
Code 9: Cách lấy một Dao bằng NHibernateDaoFactory
# IV. Tóm tắt & Kết luận
- Castle Windsor là một IOC Container rất được ưa thích, nếu các bạn xem ở blog này
[http://www.hanselman.com/blog/ListOfNETDependencyInjectionContainersIOC.aspx](http://www.hanselman.com/blog/ListOfNETDependencyInjectionContainersIOC.aspx)sẽ thấy rằng Windsor xếp đầu bảng và ngoài nó ra còn rất nhiều library Dependcy Injection nữa. Trong số đó thì có Unity và NInjection là hai IoC Container tui muốn tìm hiểu khi có thời gian :D.
- Trong bài này ta đã tìm hiểu cách áp dụng Generic và IoC Container để làm cho code gọn gàng, dễ sửa đổi. Chúng ta chỉ mới tạo project web và chuẩn bị trước một số thứ như config NHibernate và Windsor cũng như làm quen với Open In View Principle. Trong phần tiếp theo chúng ta sẽ tìm hiểu cách áp dụng pattern
[MVP](http://nthoai.blogspot.com/search/label/MVP)để làm các trang aspx. Cách làm mới có gì khác so với cách làm truyền thống? Hãy chờ hồi sau sẽ rõ ![50 :bbpraroi:](http://www.igame.vn/f/images/smilies/BBP_smilies/50.gif)
Code phần 4:
[http://nthoaiblog.googlepages.com/EnterpriseSample-part4.zip](http://nthoaiblog.googlepages.com/EnterpriseSample-part4.zip)
Các đoạn code minh họa trong bài viết được tui rút gọn cho dễ hiểu, code được implement cuối cùng trong demo sẽ có nhiều điểm khác biệt...
(Còn tiếp)
Tham khảo:
[http://martinfowler.com/articles/injection.html](http://martinfowler.com/articles/injection.html) [http://msdn.microsoft.com/en-us/library/aa973811.aspx](http://msdn.microsoft.com/en-us/library/aa973811.aspx) [http://www.castleproject.org/container/documentation/v1rc3/concepts/ioc.html](http://www.castleproject.org/container/documentation/v1rc3/concepts/ioc.html) [http://en.wikipedia.org/wiki/Inversion_of_control](http://en.wikipedia.org/wiki/Inversion_of_control) [http://sourceforge.net/forum/message.php?msg_id=2847509](http://sourceforge.net/forum/message.php?msg_id=2847509) [http://www.hibernate.org/43.html](http://www.hibernate.org/43.html) [http://www.builderau.com.au/program/dotnet/print.htm?TYPE=story&AT=339284537-339028399t-320002019c](http://www.builderau.com.au/program/dotnet/print.htm?TYPE=story&AT=339284537-339028399t-320002019c) [http://dotnetslackers.com/articles/designpatterns/InversionOfControlAndDependencyInjectionWithCastleWindsorContainerPart1.aspx](http://dotnetslackers.com/articles/designpatterns/InversionOfControlAndDependencyInjectionWithCastleWindsorContainerPart1.aspx) [http://dotnetslackers.com/articles/designpatterns/InversionOfControlAndDependencyInjectionWithCastleWindsorContainerPart2.aspx](http://dotnetslackers.com/articles/designpatterns/InversionOfControlAndDependencyInjectionWithCastleWindsorContainerPart2.aspx)
Hoi do la`m cai IoC dau tien voi tao dung ko :P.
A`, trong cai Castle Windsor co`n nhieu mo'n an choi lam, viet AOP du`ng Castle cu~ng ok luon a'
脚やせエステ茨城
脚やせエステ新宿
脚やせエステ三重
脚やせエステ松山
脱毛 高崎
脱毛 北千住
脱毛 豊田
脱毛 岡山
フェイシャルエステ札幌
フェイシャルエステ埼玉
フェイシャルエステ中野・杉並
フェイシャルエステ愛知
フェイシャルエステ岡山
フェイシャルエステ久留米
エステ体験 所沢
エステ体験 恵比寿
エステ体験 福井
エステ体験 天王寺
エステ体験 福岡
水戸 エステ
千葉市 エステ
上野 エステ
青葉台 エステ
富山 エステ
梅田 エステ
橿原 エステ
熊本 エステ
メンズエステ 千葉
メンズエステ 三重
メンズエステ 大分


text:
Trang chủ
Đăng nhập
Đã xem
Mới nhất
Xem nhiều
Danh sách kênh
Kênh Đăng ký
Chuyên mục
Tin tức - Thời sự
Giải trí
Thể thao
Âm nhạc
Gia đình sức khỏe
Phim
Clip hài
Thiếu nhi
Video Game
Độc lạ
Radio
Upload Video
Điều khoản sử dụng
Thông tin bảo mật
Hướng dẫn sử dụng
Chương trình khuyến mại
Trợ giúp
Phim
Clip Hot
x
HOT
Xem trực tiếp vòng loại World Cup MIỄN CƯỚC 3G!
Nếu không xem được video
click vào đây
!
Pete và người bạn Rồng (Vietsub) - Pete"s Dragon (2016)
Lượt xem: 178249 |
Đăng bởi: Yoko
PHIM
80
35
kể về câu chuyện của cậu bé mồ côi Pete và người bạn rồng Elliott. Trong nhiều năm, người thợ khắc gỗ Meacham vẫn thường kể cho những đứa trẻ nghe câu chuyện về một con rồng hung dữ sống sâu trong khu rừng Tây Bắc. Nhưng riêng cô con gái của ông là Grace chỉ xem những câu chuyện trên như cổ tích hư cấu cho đến khi cô ấy gặp Pete. Theo lời Pete mô tả, người bạn đặc biệt này rất giống với con rồng đã xuất hiện trong những câu chuyên của ông Meacham. Cùng với sự giúp đỡ của cô bé 11 tuổi Natalie - con gái của chủ xưởng gỗ Jack, Grace đã dần khám phá ra nguồn gốc của chú bé Pete và sự thật về ng
1
2
3
Mã nhúng HTML
Tags:
Pete và người bạn Rồng
Pete Dragon
Chú Bé Peter Pan (thuyết minh) - Peter Pan (1/7)
56165 lượt xem
Chú Bé Peter Pan (thuyết minh) - Peter Pan (2/7)
33226 lượt xem
Chú Bé Peter Pan (thuyết minh) - Peter Pan (3/7)
29538 lượt xem
Chú Bé Peter Pan (thuyết minh) - Peter Pan (4/7)
25729 lượt xem
Chú Bé Peter Pan (thuyết minh) - Peter Pan (5/7)
34261 lượt xem
Chú Bé Peter Pan (thuyết minh) - Peter Pan (6/7)
20782 lượt xem
Chú Bé Peter Pan (thuyết minh) - Peter Pan (7/7)
24913 lượt xem
Venus (2006) Official Trailer # 1 - Peter O'Toole HD
6085 lượt xem
Death at a Funeral Official Trailer #1 - Matthew Macfadyen, Peter Dinklage Movie (2007) HD
6050 lượt xem
PAN Trailer (Peter Pan Movie - 2015)
21413 lượt xem
Bình luận
1
1
1 · Được chia sẻ công khai
Gợi ý
Chú Bé Peter Pan (thuyết minh) - Peter Pan (1/7)
56165 lượt xem
Chú Bé Peter Pan (thuyết minh) - Peter Pan (2/7)
33226 lượt xem
Chú Bé Peter Pan (thuyết minh) - Peter Pan (3/7)
29538 lượt xem
Chú Bé Peter Pan (thuyết minh) - Peter Pan (4/7)
25729 lượt xem
Chú Bé Peter Pan (thuyết minh) - Peter Pan (5/7)
34261 lượt xem
Chú Bé Peter Pan (thuyết minh) - Peter Pan (6/7)
20782 lượt xem
Chú Bé Peter Pan (thuyết minh) - Peter Pan (7/7)
24913 lượt xem
Venus (2006) Official Trailer # 1 - Peter O'Toole HD
6085 lượt xem
Death at a Funeral Official Trailer #1 - Matthew Macfadyen, Peter Dinklage Movie (2007) HD
6050 lượt xem
PAN Trailer (Peter Pan Movie - 2015)
21413 lượt xem
Mạng xã hội chia sẻ Video onbox © Viettel

Set-Cookie: ASP.NET_SessionId=l4fwwygqc4zfec0fikraaglx; domain=.onbox.vn; path=/; HttpOnly


text:
Tên Phim: Quý Cô Xảo Quyệt - Cunning Single Lady | PhimViet24h.Com
Đạo diễn: Ko Dong-Sun
Diễn viên: Lee Min Jung, Joo Sang Wook, Kim Gyu Ri
Thể loại: Tình Cảm, Tâm Lý, Hài hước,
Quốc Gia: Hàn Quốc,
Năm Phát Hành: 2014,
Thời Lượng: Đang Cập Nhật
Từ Khóa: xem phim quy co xao quyet Cunning Single Lady 2014 long tieng vietsub, xem phim quy co xao quyet online full hd.
Bạn đang xem phim Quý Cô Xảo Quyệt - Cunning Single Lady 2014 trực tuyến tại Xem Phim Online
Các bạn vui lòng ấn Like và g+1 để xem phim nhanh hơn!
Read more »
0 nhận xét : Quý Cô Xảo Quyệt - Cunning Single Lady 2014 (Tập 16/16)
Đăng nhận xét

markdown:
**Tên Phim:**Quý Cô Xảo Quyệt - Cunning Single Lady | *PhimViet24h.Com* **Đạo diễn:**Ko Dong-Sun **Diễn viên:**Lee Min Jung, Joo Sang Wook, Kim Gyu Ri **Thể loại:**Tình Cảm, Tâm Lý, Hài hước, **Quốc Gia:**Hàn Quốc, **Năm Phát Hành:**2014, **Thời Lượng:**Đang Cập Nhật **Từ Khóa:**xem phim quy co xao quyet Cunning Single Lady 2014 long tieng vietsub, xem phim quy co xao quyet online full hd. *Bạn đang xem phim Quý Cô Xảo Quyệt - Cunning Single Lady 2014 trực tuyến tại* [Xem Phim Online](http://www.phimviet24h.com/)
Các bạn vui lòng ấn
**Like**và **g+1**để xem phim nhanh hơn! [Read more »](http://www.phimviet24h.com/2014/02/quy-co-xao-quyet-cunning-single-lady.html#more)
## 0 nhận xét : Quý Cô Xảo Quyệt - Cunning Single Lady 2014 (Tập 16/16)
Đăng nhận xét


text:
Tuổi Trẻ Cuồng Loạn - Shaitan - 2011
- Thể loại: Phim Hành Động
- Quốc gia: Ấn Độ
- Năm phát hành: 2011
- Đạo diễn: Bejoy Nambiar
- Diễn viên: Gulshan Devaiah, Shiv Pandit, Kalki Koechlin
- Thời lượng: 121 phút
- Lượt Xem: 2684 92684 2684 lượt đánh giá
Link Tải Phim Đang Cập Nhật
THÔNG TIN PHIM
Sau sự ra đi của mẹ, và sự xuất hiện của một người mẹ kế, Amrita Jayshankar trở nên trầm cảm. Cha cô được triệu tập đến trường học của cô và nói rằng con gái của ông cần được tư vấn, nhưng ông từ chối và thay vào đó là đóng góp 1 khoản tiền cho nhà trường. Sau đó, Amrita gặp gỡ với 4 thanh niên khác cụ thể là Zuben, Dushant Sahu, Karan Chaudhary và Tanya Sharma. Họ cùng nhau sống với ma túy và rượu cho đến khi họ vô tình giết chết một cặp vợ chồng. Cảnh sát được điều động để truy bắt họ. Không có tiền, năm người quyết định giả mạo một vụ bắt cóc, tống tiền người cha của Amrita...

markdown:
![Tuổi Trẻ Cuồng Loạn - Shaitan](http://img.phimhot.info/i/TWCKW6s)
## Tuổi Trẻ Cuồng Loạn - Shaitan - 2011
**Thể loại:** [Phim Hành Động](http://phimhot.info/the-loai/phim-hanh-dong.html) **Quốc gia:** [Ấn Độ](http://phimhot.info/quoc-gia/phim-an-do.html) **Năm phát hành:**2011 **Đạo diễn:** [Bejoy Nambiar](http://phimhot.info/dao-dien/bejoy-nambiar.html) **Diễn viên:** [Gulshan Devaiah](http://phimhot.info/dien-vien/gulshan-devaiah.html), [Shiv Pandit](http://phimhot.info/dien-vien/shiv-pandit.html), [Kalki Koechlin](http://phimhot.info/dien-vien/kalki-koechlin.html) **Thời lượng:**121 phút **Lượt Xem:**2684 92684 **2684**lượt đánh giá
# Link Tải Phim Đang Cập Nhật
### THÔNG TIN PHIM
Sau sự ra đi của mẹ, và sự xuất hiện của một người mẹ kế, Amrita Jayshankar trở nên trầm cảm. Cha cô được triệu tập đến trường học của cô và nói rằng con gái của ông cần được tư vấn, nhưng ông từ chối và thay vào đó là đóng góp 1 khoản tiền cho nhà trường. Sau đó, Amrita gặp gỡ với 4 thanh niên khác cụ thể là Zuben, Dushant Sahu, Karan Chaudhary và Tanya Sharma. Họ cùng nhau sống với ma túy và rượu cho đến khi họ vô tình giết chết một cặp vợ chồng. Cảnh sát được điều động để truy bắt họ. Không có tiền, năm người quyết định giả mạo một vụ bắt cóc, tống tiền người cha của Amrita...

Server: cloudflare-nginx

Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0

Vary: Accept-Encoding


markdown:
![Rắn Và Khuyên Lưỡi - Snakes And Earrings](http://img.phimhot.info/i/KnSGryy)
## Rắn Và Khuyên Lưỡi - Snakes And Earrings - 2008
Chuyển thể từ tác phẩm cùng tên của nhà văn Hitomi Kanehara. Sẽ không ít khán giả phản ứng tức thì khi bước vào thế giới dị biệt của Rắn và khuyên lưỡi. Họ là những con người quá lập dị mà chẳng cần viện tới sự che chắn hay bất cứ thứ mặt nạ nào để được chấp nhận. Lui, cô gái bụi đeo khuyên tai cỡ 0G (to nhất), bắn khuyên lưỡi và xăm hình kỳ lân sau lưng. Ama, người tình Punk với 3 cái khuyên cỡ 4G trên cung mày trái, 3 cái cùng kiểu ở môi dưới, mái tóc đỏ hoe húi trụi 2 bên, xăm hình rồng và có lưỡi chẻ nhỏ, chẻ nhánh. Shiba-san là chủ hiệm xăm có đống khuyên..


text:
Kết quả từ khóa: chua te cua nhung chiec nhan full
chua te cua nhung chiec nhan full | Phim chua te cua nhung chiec nhan full hay | Tuyển tập chua te cua nhung chiec nhan full mới nhất 2015
Chưa có dữ liệu
Chưa có dữ liệu
phimmovie.net - Xem phim online miễn phí, chất lượng hình ảnh rõ nét, tốc độ tải phim nhanh, xem phim không phải chờ đợi lâu. phimmovie.net luôn cập nhật phim mới để mang đến cho các bạn những bộ phim hành động, võ thuật, phim chiếu rạp, các thể loại phim tâm lý, tình cảm cực lôi cuốn và hấp dẫn nhất. Đặc biệt website rất thân thiện với người dùng và hạn chế tối đa các quảng cáo gây khó chịu khi xem phim. Chúc các bạn xem phim vui vẻ.

markdown:
# Kết quả từ khóa: chua te cua nhung chiec nhan full
## chua te cua nhung chiec nhan full | Phim chua te cua nhung chiec nhan full hay | Tuyển tập chua te cua nhung chiec nhan full mới nhất 2015
Chưa có dữ liệu
Chưa có dữ liệu
phimmovie.net -
[ miễn phí, chất lượng hình ảnh rõ nét, tốc độ tải phim nhanh, Xem phim online](http://phimmovie.net)


text:
- Hoạt động cuối:
- 16 Tháng mười 2014
- Tham gia ngày:
- 20 Tháng chín 2014
- Bài viết:
- 1
- Đã được thích:
- 0
- Giới tính:
- Nam
- Sinh nhật:
- 10 Tháng mười 1992 (Age: 24)
Chia sẻ trang này
minh triet
Thành viên mới, Nam, 24
- minh triet được nhìn thấy lần cuối:
- 16 Tháng mười 2014
-
- Đang tải...
- Đang tải...
-
Giới thiệu
- Giới tính:
- Nam
- Sinh nhật:
- 10 Tháng mười 1992 (Age: 24)
- Hôn nhân:
- Đang độc thân
Tương tác

markdown:
![ minh triet](http://phunuvn.net/styles/brivium/argon/xenforo/avatars/avatar_male_l.png)
- Hoạt động cuối:
- 16 Tháng mười 2014
- Tham gia ngày:
- 20 Tháng chín 2014
- Bài viết:
- 1
- Đã được thích:
- 0
- Giới tính:
- Nam
- Sinh nhật:
- 10 Tháng mười 1992 (Age: 24)
### Chia sẻ trang này
# minh triet
Thành viên mới, Nam, 24
- minh triet được nhìn thấy lần cuối:
- 16 Tháng mười 2014
-
- Đang tải...
- Đang tải...
-
### Giới thiệu
- Giới tính:
- Nam
- Sinh nhật:
- 10 Tháng mười 1992 (Age: 24)
- Hôn nhân:
- Đang độc thân
### Tương tác

Server: Apache

X-Frame-Options: SAMEORIGIN


text:
Mặt hàng cây chùm ngây Lê Hoàng tốt cho sức khoẻ l Bán tại tp hồ chí minh
- Đường phố: tân bình
- Quận/huyện: tân bình
- Tỉnh/Thành phố: Toàn quốc
- Quốc gia: Vietnam
- Listed: Tháng Tư 26, 2016 6:34 sáng
- Expires: This ad has expired
Description
Cây chùm ngây có nguồn gốc và trồng rộng rãi ở miền Nam châu Á và Bắc Phi. Chùm ngây được đánh giá là loài cây có thể mọc được ở những nơi có khí hậu khắc nghiệt nhất trên thế giới, thậm chí còn nhanh lớn trong những điều kiện mà nhiều giống cây khác không thể tồn tại nổi như những vùng đất xấu, lạnh giá hay là nơi có nước biển mặn.
Phòng bệnh ung thư, thoái hóa điểm vàng và xơ nang: Lá của cây chùm ngây có chứa 46 loại chất chống oxy hóa, đặc biệt là vitamin C và vitamin A.
Đây là những chất chống oxy hóa vô cùng quan trọng đối với sức khỏe con người. Các chất chống oxy hóa này giúp trung hòa các tác động tàn phá của các gốc tự do, từ đó bảo vệ chúng ta khỏi bệnh ung thư và các bệnh thoái hóa như thoái hóa điểm vàng và bệnh xơ nang.
Tốt cho cơ bắp, sụn, xương, da và máu: Lá của cây chùm ngây rất giàu các axit amin. Nó có chứa 18 axit amin, trong đó có 8 axit amin thiết yếu nên loài cây này chứa protein “hoàn hảo’ và là một loại cây rất hiếm trong thế giới thực vật. Trên thực tế, hàm lượng protein của cây chùm ngây nhiều ngang thịt, do đó nó rất có lợi cho những người ăn chay vì họ sẽ không lo bị thiếu protein. Protein là chất đặc biệt cần thiết để xây dựng cơ bắp, sụn, xương, da và máu.
Tác dụng của cây chùm ngây cũng quan trọng với cơ thể vì là chất cần thiết trong quá trình sản xuất các enzyme và hormone. Phòng ngừa loãng xương: Với hàm lượng canxi và magie phong phú, cây chùm ngây trở thành một trong những loại thực vật có tác dụng tốt cho xương của bạn nếu bạn bổ sung chúng qua ăn uống hoặc dùng để pha trà.
Canxi là dưỡng chất cần thiết để xây dựng xương và răng, còn magiê lại giúp cơ thể hấp thụ canxi tốt hơn. Vì cây chùm ngây chứa nhiều cả hai dưỡng chất này này nên nó đặc biệt tốt cho bạn trong việc phòng ngừa bệnh loãng xương và các bệnh về xương khác.
Tốt cho da: Giống cây chùm ngây chứa cytokinin một loại kích thích tố thực vật tạo ra phân chia tế bào, tăng trưởng, và làm chậm quá trình lão hóa của các tế bào. Các nghiên cứu lâm sàng cho thấy Moringa YSP sản xuất đặc tính chống lão hóa ở người.
Không phải vô cớ mà cây chùm ngây được nhà Phật gọi là cây Độ Sinh, còn các nhà khoa học trong quá trình nghiên cứu đã không ngần ngại đặt tên là cây Thần Diệu. Với những công dụng trị bệnh tuyệt vời , hạt chùm ngây có thể coi là người bạn thân thiết của bất kì độ tuổi nào trong gia đình. Hãy đến với công ty chúng tôi để mua được một sản phậm hạt chùm ngây chất lượng với giá cả ưu đãi nhất nhé .
Hiện nay C.ty chúng tôi cung cấp hạt và các loại mặt hàng chùm ngây đảm bảm an toàn vệ sinh thực phẩm. Chúng tôi sẽ tư vấn và mang trực tiếp sản phẩm đến tay người tiêu dùng và không qua bất kỳ một khâu trung gian nào với những sản phẩm chất lượng và giá cả hợp lý nhất .
Xin liên hê : Công ty Lê Hoàng
Tel: ( 08) 667 668 63 – 0983868779
Web : http://caychumngay.com – http://caythuocviet.com
64 lượt xem, 1 hôm nay
Sponsored Links
Xem nhiều nhất trong ngày
- GAMING KEYBOARD CHÍNH HÃNG K40 (269 lượt xem)
- atlantic khai giảng lớp tiếng anh beginner (71 lượt xem)
- Tủ đông cũ thanh lý giá rẻ tại TPHCM (65 lượt xem)
- lưới sân golf hdpe hàn quốc (65 lượt xem)
- Máy bán hàng cảm ứng RẺ dùng cho SPA bán tại HÀ NỘI (65 lượt xem)

markdown:
[Mặt hàng cây chùm ngây Lê Hoàng tốt cho sức khoẻ l Bán tại tp hồ chí minh](http://raovatonline.org/rao-vat/mat-hang-cay-chum-ngay-le-hoang-tot-cho-suc-khoe-l-ban-tai-tp-ho-chi-minh/)
- Đường phố: tân bình
- Quận/huyện: tân bình
- Tỉnh/Thành phố: Toàn quốc
- Quốc gia: Vietnam
- Listed: Tháng Tư 26, 2016 6:34 sáng
- Expires: This ad has expired
![ ](http://raovatonline.org/wp-content/themes/classipress/images/no-thumb-500x375.png)
### Description
**có nguồn gốc và trồng rộng rãi ở miền Nam châu Á và Bắc Phi. Chùm ngây được đánh giá là loài cây có thể mọc được ở những nơi có khí hậu khắc nghiệt nhất trên thế giới, thậm chí còn nhanh lớn trong những điều kiện mà nhiều giống cây khác không thể tồn tại nổi như những vùng đất xấu, lạnh giá hay là nơi có nước biển mặn. Cây chùm ngây ** ![ [IMG]](http://raovatonline.org/wp-content/plugins/lazy-load/images/1x1.trans.gif)
Phòng bệnh ung thư, thoái hóa điểm vàng và xơ nang: Lá của cây chùm ngây có chứa 46 loại chất chống oxy hóa, đặc biệt là vitamin C và vitamin A.
Đây là những chất chống oxy hóa vô cùng quan trọng đối với sức khỏe con người. Các chất chống oxy hóa này giúp trung hòa các tác động tàn phá của các gốc tự do, từ đó bảo vệ chúng ta khỏi bệnh ung thư và các bệnh thoái hóa như thoái hóa điểm vàng và bệnh xơ nang.
Tốt cho cơ bắp, sụn, xương, da và máu: Lá của cây chùm ngây rất giàu các axit amin. Nó có chứa 18 axit amin, trong đó có 8 axit amin thiết yếu nên loài cây này chứa protein “hoàn hảo’ và là một loại cây rất hiếm trong thế giới thực vật. Trên thực tế, hàm lượng protein của cây chùm ngây nhiều ngang thịt, do đó nó rất có lợi cho những người ăn chay vì họ sẽ không lo bị thiếu protein. Protein là chất đặc biệt cần thiết để xây dựng cơ bắp, sụn, xương, da và máu.
**Tác dụng của cây chùm ngây** cũng quan trọng với cơ thể vì là chất cần thiết trong quá trình sản xuất các enzyme và hormone. Phòng ngừa loãng xương: Với hàm lượng canxi và magie phong phú, cây chùm ngây trở thành một trong những loại thực vật có tác dụng tốt cho xương của bạn nếu bạn bổ sung chúng qua ăn uống hoặc dùng để pha trà.
Canxi là dưỡng chất cần thiết để xây dựng xương và răng, còn magiê lại giúp cơ thể hấp thụ canxi tốt hơn. Vì cây chùm ngây chứa nhiều cả hai dưỡng chất này này nên nó đặc biệt tốt cho bạn trong việc phòng ngừa bệnh loãng xương và các bệnh về xương khác.
Tốt cho da: Giống cây chùm ngây chứa cytokinin một loại kích thích tố thực vật tạo ra phân chia tế bào, tăng trưởng, và làm chậm quá trình lão hóa của các tế bào. Các nghiên cứu lâm sàng cho thấy Moringa YSP sản xuất đặc tính chống lão hóa ở người.
![ [IMG]](http://raovatonline.org/wp-content/plugins/lazy-load/images/1x1.trans.gif)
**Không phải vô cớ mà cây chùm ngây được nhà Phật gọi là cây Độ Sinh, còn các nhà khoa học trong quá trình nghiên cứu đã không ngần ngại đặt tên là cây Thần Diệu. Với những công dụng trị bệnh tuyệt vời , hạt chùm ngây có thể coi là người bạn thân thiết của bất kì độ tuổi nào trong gia đình. Hãy đến với công ty chúng tôi để mua được một sản phậm hạt chùm ngây chất lượng với giá cả ưu đãi nhất nhé .**
Hiện nay C.ty chúng tôi cung cấp hạt và các loại mặt hàng chùm ngây đảm bảm an toàn vệ sinh thực phẩm. Chúng tôi sẽ tư vấn và mang trực tiếp sản phẩm đến tay người tiêu dùng và không qua bất kỳ một khâu trung gian nào với những sản phẩm chất lượng và giá cả hợp lý nhất .
Xin liên hê : Công ty Lê Hoàng
Tel: ( 08) 667 668 63 – 0983868779
Web :
[http://caychumngay.com](http://caychumngay.com/) – [http://caythuocviet.com](http://caythuocviet.com/)
64 lượt xem, 1 hôm nay
**Listing ID:**940571f0bdb1d5fd
## Sponsored Links
## Xem nhiều nhất trong ngày
[GAMING KEYBOARD CHÍNH HÃNG K40](http://raovatonline.org/rao-vat/gaming-keyboard-chinh-hang-k40/)(269 lượt xem) [atlantic khai giảng lớp tiếng anh beginner](http://raovatonline.org/rao-vat/atlantic-khai-giang-lop-tieng-anh-beginner/)(71 lượt xem) [Tủ đông cũ thanh lý giá rẻ tại TPHCM](http://raovatonline.org/rao-vat/tu-dong-cu-thanh-ly-gia-re-tai-tphcm/)(65 lượt xem) [lưới sân golf hdpe hàn quốc](http://raovatonline.org/rao-vat/luoi-san-golf-hdpe-han-quoc/)(65 lượt xem) [Máy bán hàng cảm ứng RẺ dùng cho SPA bán tại HÀ NỘI](http://raovatonline.org/rao-vat/may-ban-hang-cam-ung-re-dung-cho-spa-ban-tai-ha-noi/)(65 lượt xem)

Link: <http://raovatonline.org/wp-json/>; rel="https://api.w.org/", <http://raovatonline.org/?p=9170>; rel=shortlink

Vary: Accept-Encoding,Cookie,User-Agent


text: Bán Đầu thu DVB-T2 HD323 Bình Dương–0932 783 869Công ty TNHH MTV TM Dịch Vụ Hội LộcĐc: 591 Đại Lộ Bình Dương, P.Hiệp Thành, Tp.TDM, Tỉnh Bình DươngWebsite: mangbachkhoa.net – Sky: khabknetTel: (0650) 3878 132 - Hotline: 0932 783 869Giới thiệu sản phẩm Đầu thu KTS HD VJV HD-323 (Vàng)Tính năng mới: Điều chỉnh âm lượng theo sở thích riêng, có thể điều chỉnh mỗi kênh một âm lượng theo ý thích một cách đơn giản trên phím tăng giảm âm lượng. Với tính năng này sản phẩm đã giải quyết được tình trạng các đài phát có âm lượng khác nhau, mỗi khi chuyển kênh gây khó chịu cho người xem. Tính năng thông thường: Đầy đủ phím điều khiển trên đầu thu. Xem phim nghe nhạc trên thiết bị lưu trữ qua cổng USB. ( Đối với một số file âm thanh có định dạng Dolby do yêu cầu về bản quyền nên đầu thu chỉ cho phép xem hình ảnh và không cho phép giải mã âm thanh) Xem lịch phát sóng. Hẹn giờ tắt mở chương trình. Ghi lại các chương trình phát sóng qua cổng USB. Quản lý kênh theo sở thích, khóa trẻ em. Tiêu thụ điện năng thấp. Hỗ trợ giải mã MPEG-1, MPEG-2, MPEG-4. Tiêu chuẩn Châu Âu: DVB-T2 ETSI EN 302-775 v1.3.1, Tiêu chuẩn kỹ thuật theo QC63 của Bộ TTTT. Độ phân giải: 1920x1080p Full HD Bảo hành đầu thu 12 tháng 1 đổi 1 trong điều kiện lỗi kỹ thuật của nhà sản xuất. Kể cả điều kiện đầu thu bị xước vẫn được đổi. Nguồn 5V và điều khiển bảo hành 3 tháng 1 đổi 1 Lưu ý: Để xem được kênh truyền hình trên đầu thu HD-323, yêu cầu quý khách ở khu vực có phát sóng DVB-T2 ổn định, có sẵn anten loại thu sóng UHF được kết nối với đầu thu. Các khách hàng đang có anten thường dùng xem TV vẫn có thể tận dụng để sử dụng cho đầu thu mà không cần phải mua mới nếu loại đó còn dùng bình thường. Không dùng anten chảo lắp cho đầu thu. Sản phẩm đóng gói: 01 đầu thu. 01 điều khiển. 01 nguồn 5V ( adaptor ). 01 dây AV. 01 sách hướng dẫn sử dụng Bảo hành điện tử, quý khách không cần phải giữ thẻ bảo hành, khi xảy ra lỗi kỹ thuật quý khách hàng chỉ cần mang đầu thu còn nguyên tem đến các trung tâm bảo hành đều được chấp nhận bảo hành.Thông tin sản phẩm Đầu thu KTS HD VJV HD-323 (Vàng)Bộ sản phẩm bao gồm: · 01 đầu thu. · 01 điều khiển. · 01 nguồn 5V ( adaptor ). · 01 dây AV. · 01 sách hướng dẫn sử dụngĐặc điểm chính: SKU HD434ELBAE5DVNAMZ-845181 Model 2015 Kích thước sản phẩm (D x R x C cm) 12x12x3 Bảo hành Bảo hành đầu thu 12 tháng 1 đổi 1.Điều khiển bảo hành 03 tháng 1 đổi 1Nguồn (adaptor) bảo hành 03 tháng 1 đổi 1 Trọng lượng (KG) 0.3 Sản xuất tại Việt NamGiá 699.000) 550.000 VNĐLiên hệ: 0932.783.869 (Mr.Khả)

Server: Apache/2.2.15 (CentOS)


text:
Sàn nhạc sử dụng tốt nhất ở trình duyệt Firefox
Để thu âm và sử dụng sannhac một cách dễ dàng, bạn hãy cài đặt phầm mềm sau
Bắt đầu cài đặt Firefox
để duyệt web nhanh hơn
Đăng nhập
|
Đăng ký
Tên đăng nhập
Mật khẩu
Ghi nhớ
Quên mật khẩu
|
Gửi lại mail kích hoạt
Trang chủ
Phòng thu
Sàn đấu
Club
Hát Live
Sàn Nhạc
Sàn Diễn
SanNhac.com
on Facebook
Bình luận & Đánh giá
Bạn có thể đăng nhập bằng tài khoản
Yahoo
hoặc
Google
để bình luận hoặc đánh giá cho bài hát này
Hoặc đăng ký tài khoản mới
tại đây
Hủy
Bình luận
Chia sẻ ca khúc
Tặng quà
Cắt nhạc chuông
Bình luận
Chia sẻ ca khúc
Tặng quà
Cắt nhạc chuông
Bạn muốn chia sẻ ca khúc này cho thành viên
Mô tả
Bạn phải
đăng nhập
mới được chia sẻ ca khúc!
Bình luận
Chia sẻ ca khúc
Tặng quà
Cắt nhạc chuông
Bạn muốn tặng ca khúc này cho thành viên
Gửi quà và tin nhắn
Bình luận
Chia sẻ ca khúc
Tặng quà
Tạo nhạc chuông
Để tạo nhạc chuông theo phong cách riêng của bạn, hãy thực hiện các bước sau :
Bước 1 :
Chọn đoạn nhạc chuông bạn muốn cắt (đoạn được bôi trắng).
Bước 2 :
Thay đổi độ dài đoạn nhạc mà bạn muốn làm nhạc chuông bằng cách di chuyển hai đầu đoạn trắng, click
play
để nghe thử.
Bước 3 :
Nếu bạn đã ưng ý, hãy nhấn nút
Mp3
hoặc
ARM
chọn định dạng và
nhắn tin theo hướng dẫn
để tải nhạc chuông về máy hoặc tặng bạn bè.
Xem toàn bộ
Di chuyển
Đóng
Di chuyển
Đóng
Viết lưu bút cho
Nhắn tin cho
Tiêu đề
Nội dung tin nhắn
Thông tin chi tiết
Giả vờ yêu - Ngô Kiến Huy
Thể hiện:
cushun
0 vote sao - 43 lượt nghe
Thời gian: 07/06/2010 22:01:45
Thêm vào playlist của bạn
Thêm vào danh sách yêu thích
Mã Nhúng Blog
Mã Nhúng Forum
Đã Copy
Mới nhất của cushun
Hay nhất của cushun
Cùng thể hiện bài này
Sàn Nhạc
, Tầng 21 Tòa nhà Center Building - Hapulico Complex
Số 1 Nguyễn Huy Tưởng, Thanh Xuân, Hà Nội.
Email:
sannhac@gmail.com
Liên hệ hợp tác: 094.686.1289
Giới thiệu quảng cáo
Liên hệ quảng cáo:
Admicro
Hà Nội – Ms. Hải Yến: 0988 965 517 – (84 4) 3974 8899. Ext 2201
Hồ Chí Minh – Mr.Tuấn: 0983 050 185 – (84 8) 7307 7979. Ext 173
Email:
giaitrixahoi@admicro.vn
Hỗ trợ & CSKH:
Admicro
Ms.Thơm: 01268 269 779
Address: Tầng 20, Center Building Hapulico Complex, Số 1 Nguyễn Huy Tưởng, Thanh Xuân, Hà Nội
Copyright 2009
– Công ty cổ phần VCCorp.
Chịu trách nhiệm quản lý nội dung : Ông Nguyễn Thế Tân.
Tầng 17, 19, 20, 21 Tòa nhà Center Building - Hapulico Complex
Số 1 Nguyễn Huy Tưởng, Thanh Xuân, Hà Nội.
Giấy phép số 375/GP-BTTTT Bộ Thông tin và Truyền thông cấp ngày 07 tháng 08 năm 2015.
Trang chủ
|
Điều khoản
|
Quy định
|
Phòng thu
|
Beat
|
Recording

Set-Cookie: viewbeat=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0


text: Đón xuân này tôi nhớ xuân xưa Fa2_sol2 rê#2 đô2 sol2 đô3 sol#2 sol2 Một chiều xuân em đã hẹn hò Đô2 rê#2 fa2 fa2 sol2 rê#2 đô2 Như ươm tình trong cánh hoa mơ Sib đô2 sol sol2 sol#2 sol2 fa2 đưa hương theo làn gió fa2 fa2 fa2 rê#2 sol2 Em nói rằng nên viết thành thơ Rê2 rê#2 sol rê2 fa2 si đô2 Đón xuân này tôi nhớ xuân xưa Fa2_sol2 rê#2 đô2 sol2 đô3 sol#2 sol2 Hẹn gặp nhau khi pháo giao thừa Đô2 rê#2 fa2 fa2 sol2 rê#2 đô2 Em đứng chờ tôi trước song thưa Sib đô2 sol sol2 sol#2 sol2 fa2 Tôi đi qua đầu ngõ fa2 fa2 fa2 rê#2 sol2 hỏi nhau thầm xuân đã về chưa? Rê2 rê#2 sol rê2 fa2 si đô2 ĐK: Xuân đến xuân đi Mi2 sol2 mi2 mi2 Xuân về gieo thương nhớ Mi2 đô2 rê2 rê2 mi2 Xuân qua để tôi chờ Đô2 đô2 rê2 la sol Xuân đến xuân đi Fa2 la2 fa2 fa2 Xuân về mang lá hoa Fa2 đô2 fa2 la2 sol2 Xuân qua rung đường thơ Mi2 mi2 rê2 đô2 rê2 Bướm song hồ như đắm như mơ Fa2_sol2 rê#2 đô2 sol2 đô3 sol#2 sol2 trở về đây khi gió sang mùa Đô2 rê#2 fa2 fa2 sol2 rê#2 đô2 Mong ước tìm cô gái xuân xưa Sib đô2 sol sol2 sol#2 sol2 fa2 cho vơi bao niềm nhớ fa2 fa2 fa2 rê#2 sol2 có đâu ngờ xuân vắng người thơ Rê2 rê#2 sol rê2 fa2 si đô2 ------- Cảm âm bài 500 năm dưới Ngũ Hành Sơn Nguồn tại: https://www.saotrucvn.com/threads/cam-am-bai-500-nam-duoi-ngu-hanh-son.1133/ Trang chủ Diễn đàn: Sáo Trúc DiLinh


text:
Thảo luận trong 'A - B - C - D' bắt đầu bởi dilinhqldt, 9/4/16.
[Sheet] Đường tình đôi ngã
Dãn cách tên bằng dấu phẩy(,).


text:
Cộng đồng SEO Việt Nam - Forum SEO SEOTOT.EDU.VN
Trang chủ
Diễn đàn
>
MUA BÁN - RAO VẶT
>
Quảng cáo tổng hợp
Page 1 of 583
1
←
2
3
4
5
6
→
583
Next >
Sort by:
Tiêu đề
Ngày gửi
Trả lời
Đọc
Bài viết cuối ↓
Lăng Halicarnassus được coi là một chuẩn mực cho các công trình
Ninhbinhxanh35
,
25/3/17 lúc 14:11
Trả lời:
0
Đọc:
3
Ninhbinhxanh35
25/3/17 lúc 14:11
Tìm hiểu về máy phát điện kama kde 6500
NgocLoan
,
25/3/17 lúc 08:25
Trả lời:
0
Đọc:
3
NgocLoan
25/3/17 lúc 08:25
Năm 2016 máy hái chè của công ty Hoàng Long giảm giá
NgocLoan
,
25/3/17 lúc 08:06
Trả lời:
0
Đọc:
3
NgocLoan
25/3/17 lúc 08:06
Lựa chọn máy bơm mỡ và những điều cần biết
ohmygod_305
,
25/3/17 lúc 07:22
Trả lời:
0
Đọc:
5
ohmygod_305
25/3/17 lúc 07:22
Chọn lựa mái che nhà bạn theo mùa tuyệt đẹp
ngothong248
,
25/3/17 lúc 06:44
Trả lời:
0
Đọc:
6
ngothong248
25/3/17 lúc 06:44
Máy tỏi làm đen gia đình mới nhất
windylift
,
25/3/17 lúc 04:01
Trả lời:
0
Đọc:
8
windylift
25/3/17 lúc 04:01
Cách sửa máy bơm nước kêu to trong quá trình hoạt động
phong
,
24/3/17 lúc 23:01
Trả lời:
0
Đọc:
7
phong
24/3/17 lúc 23:01
Cung cấp máy bơm cứu hỏa serm 50v hàng đầu việt nam
NgocLoan
,
24/3/17 lúc 08:31
Trả lời:
0
Đọc:
10
NgocLoan
24/3/17 lúc 08:31
Tổng đại lý Máy lạnh treo tường LG gới báo -giá mới nhất - rẻ nhất sài gòn
maylanhhailongvan
,
24/3/17 lúc 07:45
Trả lời:
0
Đọc:
6
maylanhhailongvan
24/3/17 lúc 07:45
MT55l là model hoàn toàn mới của Mikasa,đầm cóc
NgocLoan
,
24/3/17 lúc 07:33
Trả lời:
0
Đọc:
9
NgocLoan
24/3/17 lúc 07:33
Thi công cổng vòm led trang trí đường phố
trangtridothi
,
24/3/17 lúc 03:33
Trả lời:
0
Đọc:
7
trangtridothi
24/3/17 lúc 03:33
Tổ chức sự kiện: Nghề của những ý tưởng- và nhiệt huyết
lekimhoa
,
23/3/17 lúc 10:04
Trả lời:
0
Đọc:
15
lekimhoa
23/3/17 lúc 10:04
Nghề sự kiện - Lối đi nào cho newbie?
lekimhoa
,
23/3/17 lúc 10:00
Trả lời:
0
Đọc:
10
lekimhoa
23/3/17 lúc 10:00
Tổ chức sự kiện: Nghề của những ý tưởng- và nhiệt huyết
lekimhoa
,
23/3/17 lúc 09:54
Trả lời:
0
Đọc:
10
lekimhoa
23/3/17 lúc 09:54
Vì sao người đi xuất khẩu lao động Nhật Bản ngại về nước?
lacdasaysua
,
23/3/17 lúc 08:41
Trả lời:
0
Đọc:
10
lacdasaysua
23/3/17 lúc 08:41
giá tiền cắt dài bao quy đầu
akakavn
,
23/3/17 lúc 07:44
Trả lời:
0
Đọc:
9
akakavn
23/3/17 lúc 07:44
Máy làm tỏi đen mua ở đâu giá rẻ đảm bảo chất lượng
windylift
,
23/3/17 lúc 06:32
Trả lời:
0
Đọc:
8
windylift
23/3/17 lúc 06:32
Nhà thầu chuyên bán giá rẻ và thi công cho Máy lạnh tủ đứng DAIKIN FVRN siêu tiện lợi
maylanhhailongvan
,
23/3/17 lúc 05:08
Trả lời:
0
Đọc:
9
maylanhhailongvan
23/3/17 lúc 05:08
Địa chỉ mua máy làm tỏi đen tiross chính hãng giá rẻ
windylift
,
23/3/17 lúc 03:26
Trả lời:
0
Đọc:
9
windylift
23/3/17 lúc 03:26
Phương pháp cải thiện thị lực hiệu quả khi mắt yếu
thichduthu
,
23/3/17 lúc 03:14
Trả lời:
0
Đọc:
10
thichduthu
23/3/17 lúc 03:14
Hiển thị chủ đề từ 1 đến 20 của 11,653
Tùy chọn hiển thị chủ đề
Xếp chủ đề theo:
Lần gửi bài cuối
Thời gian tạo chủ đề
Tiêu đề (sắp xếp ABC)
Số lượng trả lời
Số lượt xem
Bài viết đầu được yêu thích
Xếp chủ đề kiểu:
Thứ tự giảm dần
Thứ tự tăng dần
Đang tải...
(Bạn phải Đăng nhập hoặc Đăng ký để đăng bài viết)
Show Ignored Content
Page 1 of 583
1
←
2
3
4
5
6
→
583
Next >
Tên tài khoản hoặc địa chỉ Email:
Bạn đã có tài khoản rồi?
Tích vào đây để đăng ký
Vâng, Mật khẩu của tôi là:
Bạn đã quên mật khẩu?
Duy trì trạng thái đăng nhập
Cộng đồng SEO Việt Nam - Forum SEO SEOTOT.EDU.VN
Trang chủ
Diễn đàn
>
MUA BÁN - RAO VẶT
>
Trang chủ
Diễn đàn
Diễn đàn
Liên kết nhanh
Tìm kiếm
Bài viết mới nhất
Thành viên
Thành viên
Liên kết nhanh
Notable Members
Đang truy cập
Hoạt động gần đây
Quản trị website
Thiết kế website chuyên nghiệp
Dịch vụ SEO
Menu
Đăng nhập hoặc Đăng ký
Tìm kiếm
Chỉ tìm trong tiêu đề
Được gửi bởi thành viên:
Dãn cách tên bằng dấu phẩy(,).
Mới hơn ngày:
Search this forum only
Hiển thị kết quả dạng Chủ đề
Tìm kiếm hữu ích
Bài viết mới nhất
Thêm...


text:
Bút bi nước búp bê Nhật JB77
Kích thước : 17.8 cm
Ship COD toàn quốc cho hóa đơn > 100K - Free Ship cho hóa đơn > 500K
Tư vấn & đặt hàng ngay tại : m.me/shopdodunghoctap
Hoặc có thể gọi trực tiếp, zalo, viber, sms qua số hotline 0988 408 931 để được tư vấn nhanh nhất
>> XEM PHÍ SHIP COD TOÀN QUỐC TẠI ĐÂY <<

markdown:
##### Bút bi nước búp bê Nhật JB77
Kích thước : 17.8 cm
** Ship COD toàn quốc cho hóa đơn > 100K - Free Ship cho hóa đơn > 500K** ** Tư vấn & đặt hàng ngay tại : m.me/shopdodunghoctap** ** Hoặc có thể gọi trực tiếp, zalo, viber, sms qua số hotline 0988 408 931 để được tư vấn nhanh nhất** [ >> XEM PHÍ SHIP COD TOÀN QUỐC TẠI ĐÂY << ](http://shopquahandmade.com/phi-ship-cod-toan-quoc-danh-cho-khach-hang/)

Server: LiteSpeed

Cache-Control: max-age=3600, public

Pragma: public

Accept-Ranges: bytes


text:
Diễn đàn rao vặt nhà đất miễn phí
Diễn đàn (Forum) - đăng tin, rao vặt, miễn phí
Index
Calendar
Trợ giúp
Tìm kiếm
Tìm kiếm
Display results as :
Số bài
Chủ đề
Advanced Search
Thành viên
Nhóm
Đăng ký
Đăng Nhập
Tìm kiếm
Inside
G
o
o
g
l
e
Display results as :
Posts
Topics
Advanced Search
Similar topics
»
Tổn thất chung - General Average
»
[GRI House] - Ngôi Nhà Chung của couple siu nhắng ! !
»
Hệ thống báo động trực ca hàng hải (Bridge Navigation Watch Alarm System - BNWAS)
»
VỀ LẠI MÁI NHÀ XƯA - 20 - 11 - 2010
»
Vấn đề thi sỹ quan vận hành?
»
Tình yêu với các thủy thủ
»
Lần đầu tiên xuống tàu thì phải làm gì nhỉ? Phải chú ý những gì?
»
Trung tâm làm sổ thuyền viên,hộ chiếu thuyền & chứng chỉ trực ca cho thuyền viên
»
Hỏi về các phương tiện thủy nội địa
»
Thảo luận chung về tàu Container
Latest topics
»
BÁN CHUNG CƯ XUÂN PHƯƠNG QUỐC HỘI GIÁ GỐC CĐT
Fri Mar 24, 2017 11:09 am by
nhung1983bds
»
Bản lề laptop_ linh kiện laptop_xác laptop hàng tháo máy cập nhật liên tuc nè AE!
Fri Mar 24, 2017 7:30 am by
banle68
»
Chọn đồng phục công sở uy tín nhất
Thu Mar 23, 2017 1:55 pm by
vvpbaonam
»
Máy triệt lông cao cấp nhất
Thu Mar 23, 2017 11:04 am by
thuexeoto2
»
túi xách giá rẻ ở Hà Nội giá cực rẻ
Thu Mar 23, 2017 9:01 am by
vimark
»
Địa chỉ bán hoa hướng dương đẹp nhất Hà nội
Wed Mar 22, 2017 9:36 am by
decant
»
bảo hộ lao động tại Thái Nguyên giá rẻ
Tue Mar 21, 2017 11:47 am by
3tshop
»
Địa chỉ may quần âu nam uy tín
Mon Mar 20, 2017 5:19 pm by
vest1
»
Chọn mua tăng cường sức đề kháng BigBB
Mon Mar 20, 2017 10:41 am by
aothuat
Top posters
datphat191
luyen1210
hienbt1110
suaxesaigon
mrchung89
banle68
uyen.sandatviet
nhadat88
mikkey
mohip613
March 2017
Mon
Tue
Wed
Thu
Fri
Sat
Sun
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Calendar
Keywords
sống
hanh
minh
nghe
phat
Biệt
xanh
giao
dang
PRIDE
thiết
cong
decal
tươi
dinh
30m2
chung
giang
lang
thịnh
hoang
phong
lien
thanh
linh
innova
Diễn đàn rao vặt nhà đất miễn phí
::
Siêu Thị Nhà Đất
::
Mua Bán Nhà
Share
|
Cần bán Chung cư Rainbow Văn Quán, giá rẻ S=101m ban công rất đẹp
Tác giả
Thông điệp
datphat191
Chủ Tịch Xã
Tổng số bài gửi
:
1724
Join date
:
12/10/2011
Tiêu đề: Cần bán Chung cư Rainbow Văn Quán, giá rẻ S=101m ban công rất đẹp
Mon May 07, 2012 2:38 pm
Cần bán Chung cư Rainbow Văn Quán, giá rẻ S=86m2 ban công rất đẹp
[SIZE="1"]Cần bán Chung cư Rainbow Văn Quán, giá rẻ S=101m ban công rất đẹp, Cần bán Chung cư Rainbow Văn Quán, giá rẻ S=101m ban công rất đẹp, Cần bán Chung cư Rainbow Văn Quán, giá rẻ S=101m ban công rất đẹp, Cần bán Chung cư Rainbow Văn Quán, giá rẻ S=101m ban công rất đẹp[/SIZE]
[SIZE="4"]
Cần bán Chung cư Rainbow Văn Quán, giá rẻ S=101m ban công rất đẹp
Hiện nay tôi cần sang tên một số căn hộ chung cư cao cấp RainBow Văn Quán Hà Đông giá rất rẻ.
Vơi các căn hộ tại các các tầng 7, 8, 9, 10, 12, 14, 20, 23, 24… Với các loại diện tích 80,31m2, 86m2, 101m2, 120 m2, Thiết kế 3 phòng ngủ, 2 phụ, 1 khách, 1 bếp, hướng ban công rất đẹp nhìn ra vườn hoa và sân chơi trẻ em.
- Giá Bán: 27- 29tr/m2 ( giá rất hợp lý)
- Chung cư Rainbow văn Quán – Hà Đông cao 27 Tâng và 2 tầng hầm do công Ty Cổ Phần BIC Việt Nam làm chủ đầu tư:
- Chung cư RAINBOW Văn Quán-Hà Đông đang trong giai đoạn bàn giao nhà
__________________
Quý khách có nhu cầu vui lòng liên hệ:
Ms Thảo: 0934.453.186 - Ms Tuyết : 0936.453.268
[/SIZE]
<miễn trung gian>
[SIZE="1"]Cần bán Chung cư Rainbow Văn Quán, giá rẻ S=101m ban công rất đẹp, Cần bán Chung cư Rainbow Văn Quán, giá rẻ S=101m ban công rất đẹp, Cần bán Chung cư Rainbow Văn Quán, giá rẻ S=101m ban công rất đẹp, Cần bán Chung cư Rainbow Văn Quán, giá rẻ S=101m ban công rất đẹp[/SIZE]
Copyright© 2011- datphat191
Cần bán Chung cư Rainbow Văn Quán, giá rẻ S=101m ban công rất đẹp
Trang
1
trong tổng số
1
trang
Similar topics
Similar topics
»
Phim mới của Chung Tử Đơn cực hay_Legend Of The Fist: The Return Of Chen Zhen 2010-Huyền Thoại Trần Chân
»
Bài tập phân chia tổn thất chung
»
[NOTE] Kêu gọi các VIP vote cho BIGBANG tại vòng chung kết Fan Army trên Billboard
»
Vô hình ...
»
Đi karaoke hát bài nào
Permissions in this forum:
Bạn
không có quyền
trả lời bài viết
Diễn đàn rao vặt nhà đất miễn phí
::
Siêu Thị Nhà Đất
::
Mua Bán Nhà
Diễn đàn rao vặt nhà đất miễn phí
::
Siêu Thị Nhà Đất
::
Mua Bán Nhà
Chuyển đến
:
Chọn Diễn Đàn
|
|--Siêu Thị Nhà Đất
| |--Mua Bán Nhà
| |--Mua Bán Đất
|
|--Quảng Cáo - Rao Vặt
|--Giới Thiệu Website, Blog
|--Rao Vặt
Free forum
|
©
phpBB
|
Free forum support
|
Liên hệ
|
Report an abuse
|
Sosblogs.com

Cache-Control: no-cache

P3P: CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"


text:
© Bản quyền thuộc về Sở Nội vụ tỉnh Vĩnh Phúc
Địa chỉ: số 38 đường Nguyễn Trãi, phường Đống Đa, thành phố Vĩnh Yên, tỉnh Vĩnh Phúc
Điện thoại: 0211.3862.522
Fax: 0211.3862.522
Email: sonv@vinhphuc.gov.vn / sonoivuvp@gmail.com
Giấy phép số: 10/GP-TTĐT ngày 20/5/2014 của sở Thông tin và truyền thông tỉnh Vĩnh Phúc


text:
Bệnh trĩ gồm nhiều loại và được phân làm nhiều cấp độ nặng nhẹ khác nhau:
– Trĩ nội (Internal hemorrhoids): là bệnh mà các búi trĩ xuất phát từ các đám rối mạch máu tĩnh mạch ở bên trong hậu môn phía trên đường lược.
– Trĩ ngoại (External hemorrhoids): là bệnh trĩ mà các búi trĩ xuất phát từ bên dưới đường lược và thường được che phủ bởi niêm mạc hoặc da ở rìa hậu môn.
– Trĩ hỗn hợp (Mixed hemorrhoids: là do có sự kết hợp giữa các búi trĩ nội lẫn các búi trĩ ngoại.
– Trĩ vòng: khi có nhiều hơn ba búi trĩ và chiếm gần hết toàn bộ vòng hậu môn thì được gọi là trĩ vòng.
– Trĩ thuyên tắc: các mạch máu nơi có búi trĩ bị tắc nghẽn hay vỡ tạo thành các cục máu đông, gây đau đớn nhiều.
Đối với trĩ nội, tùy thao mức độ sa của búi trĩ mà ta có thể phân chia làm 4 cấp độ:
– Cấp độ 1: Búi trĩ chỉ phình lên, không sa ra ngoài. Có thể chảy máu khi đi tiêu.
– Cấp độ 2: Búi trĩ sa ra ngoài khi đi tiêu và ngay sau đó tự tụt vào.
– Cấp độ 3: Búi trĩ sa ra ngoài khi đi tiêu và khó tụt vào. Thường phải dùng tay đẩy vào.
– Cấp độ 4: Búi trĩ sa ra ngoài thường trực và khi lấy tay đẩy vào búi trĩ lại tụt ra.
(Theo BV Đa khoa Hoa Mỹ Sài Gòn)

markdown:
* gồm nhiều loại và được phân làm nhiều cấp độ nặng nhẹ khác nhau:* ![ phan-loai-benh-tri](http://suckhoe4u.com/wp-content/uploads/2013/05/phan-loai-benh-tri.jpg)
–
**Trĩ nội** (Internal hemorrhoids): là bệnh mà các búi trĩ xuất phát từ các đám rối mạch máu tĩnh mạch ở bên trong hậu môn phía trên đường lược.
–
**Trĩ ngoại** (External hemorrhoids): là bệnh trĩ mà các búi trĩ xuất phát từ bên dưới đường lược và thường được che phủ bởi niêm mạc hoặc da ở rìa hậu môn.
–
**Trĩ hỗn hợp** (Mixed hemorrhoids: là do có sự kết hợp giữa các búi trĩ nội lẫn các búi trĩ ngoại.
–
**Trĩ vòng:** khi có nhiều hơn ba búi trĩ và chiếm gần hết toàn bộ vòng hậu môn thì được gọi là trĩ vòng.
–
**Trĩ thuyên tắc**: các mạch máu nơi có búi trĩ bị tắc nghẽn hay vỡ tạo thành các cục máu đông, gây đau đớn nhiều.
Đối với trĩ nội, tùy thao mức độ sa của búi trĩ mà ta có thể phân chia làm 4 cấp độ:
– Cấp độ 1: Búi trĩ chỉ phình lên, không sa ra ngoài. Có thể chảy máu khi đi tiêu.
– Cấp độ 2: Búi trĩ sa ra ngoài khi đi tiêu và ngay sau đó tự tụt vào.
– Cấp độ 3: Búi trĩ sa ra ngoài khi đi tiêu và khó tụt vào. Thường phải dùng tay đẩy vào.
– Cấp độ 4: Búi trĩ sa ra ngoài thường trực và khi lấy tay đẩy vào búi trĩ lại tụt ra.
(Theo BV Đa khoa Hoa Mỹ Sài Gòn)

Server: Nginx-VPSSIM


text:
Diễn đàn chính thức sinh viên Học viện Ngân Hàng
Trang chủ
Thành viên
>
kimtuyen201180
>
Hoạt động cuối:
15/8/12
Tham gia ngày:
15/8/12
Bài viết:
0
Đã được thích:
0
Điểm thành tích:
0
kimtuyen201180
New Member
kimtuyen201180 được nhìn thấy lần cuối:
15/8/12
Tin nhắn hồ sơ
Các bài đăng
Thông tin
Hiện tại không có tin nhắn trong hồ sơ của kimtuyen201180.
Show Ignored Content
Đang tải...
Xem
Tương tác
Nội dung:
Tìm tất cả nội dung bởi kimtuyen201180
Tìm tất cả chủ đề bởi kimtuyen201180
Đăng nhập bằng Facebook
Đăng nhập bằng Google
Tên tài khoản hoặc địa chỉ Email:
Bạn đã có tài khoản rồi?
Tích vào đây để đăng ký
Vâng, Mật khẩu của tôi là:
Bạn đã quên mật khẩu?
Duy trì đăng nhập
Diễn đàn chính thức sinh viên Học viện Ngân Hàng
Trang chủ
Thành viên
>
kimtuyen201180
>
Trang chủ
Diễn đàn
Video
Video
Liên kết nhanh
Video ngẫu nhiên
Video
Playlists
Diễn đàn học tập
ĐĂNG NHẬP | ĐĂNG KÝ
Diễn đàn
Liên kết nhanh
Tìm kiếm diễn đàn
Watched Tags
Bài viết gần đây
Menu

Vietnix-Cache: HIT from backend


text:
Diễn đàn chính thức sinh viên Học viện Ngân Hàng
Trang chủ
Thành viên
>
Lanhuong_2309
>
Hoạt động cuối:
22/6/13
Tham gia ngày:
22/6/13
Bài viết:
0
Đã được thích:
0
Điểm thành tích:
0
Lanhuong_2309
New Member
Lanhuong_2309 được nhìn thấy lần cuối:
22/6/13
Tin nhắn hồ sơ
Các bài đăng
Thông tin
Hiện tại không có tin nhắn trong hồ sơ của Lanhuong_2309.
Show Ignored Content
Đang tải...
Xem
Tương tác
Nội dung:
Tìm tất cả nội dung bởi Lanhuong_2309
Tìm tất cả chủ đề bởi Lanhuong_2309
Đăng nhập bằng Facebook
Đăng nhập bằng Google
Tên tài khoản hoặc địa chỉ Email:
Bạn đã có tài khoản rồi?
Tích vào đây để đăng ký
Vâng, Mật khẩu của tôi là:
Bạn đã quên mật khẩu?
Duy trì đăng nhập
Diễn đàn chính thức sinh viên Học viện Ngân Hàng
Trang chủ
Thành viên
>
Lanhuong_2309
>
Trang chủ
Diễn đàn
Video
Video
Liên kết nhanh
Video ngẫu nhiên
Video
Playlists
Diễn đàn học tập
ĐĂNG NHẬP | ĐĂNG KÝ
Diễn đàn
Liên kết nhanh
Tìm kiếm diễn đàn
Watched Tags
Bài viết gần đây
Menu


text:
- Hoạt động cuối:
- 5/11/14
- Tham gia ngày:
- 5/11/14
- Bài viết:
- 0
- Đã được thích:
- 0
- Điểm thành tích:
- 0
- Sinh nhật:
- 14/1/91 (Tuổi: 26)
tran thuc
New Member, 26
- tran thuc được nhìn thấy lần cuối:
- 5/11/14
-
- Đang tải...
-
Giới thiệu
- Sinh nhật:
- 14/1/91 (Tuổi: 26)
Tương tác

markdown:
![ tran thuc](http://svnhforum.com/forum/styles/banh/xenforo/avatars/avatar_l.png)
- Hoạt động cuối:
- 5/11/14
- Tham gia ngày:
- 5/11/14
- Bài viết:
- 0
- Đã được thích:
- 0
- Điểm thành tích:
[0](members/tran-thuc.99560/trophies)
- Sinh nhật:
- 14/1/91 (Tuổi: 26)
# tran thuc
New Member, 26
- tran thuc được nhìn thấy lần cuối:
- 5/11/14
-
- Đang tải...
-
### Giới thiệu
- Sinh nhật:
- 14/1/91 (Tuổi: 26)
### Tương tác


text:
- Hoạt động cuối:
- 18/3/13
- Tham gia ngày:
- 17/3/13
- Bài viết:
- 0
- Đã được thích:
- 0
- Điểm thành tích:
- 0
- Nơi ở:
- Algeria
- Nghề nghiệp:
- Algeria
typefrope
New Member, đến từ Algeria
- typefrope được nhìn thấy lần cuối:
- 18/3/13
-
- Đang tải...
-
Giới thiệu
- Nơi ở:
- Algeria
Man
- Nghề nghiệp:
- Algeria
Tương tác
- ICQ:
- 241842314

markdown:
![ typefrope](http://svnhforum.com/forum/styles/banh/xenforo/avatars/avatar_l.png)
- Hoạt động cuối:
- 18/3/13
- Tham gia ngày:
- 17/3/13
- Bài viết:
- 0
- Đã được thích:
- 0
- Điểm thành tích:
[0](members/typefrope.49562/trophies)
- Nơi ở:
[Algeria](misc/location-info?location=Algeria)
- Nghề nghiệp:
- Algeria
# typefrope
New Member, đến từ
[Algeria](misc/location-info?location=Algeria)
- typefrope được nhìn thấy lần cuối:
- 18/3/13
-
- Đang tải...
-
### Giới thiệu
- Nơi ở:
[Algeria](misc/location-info?location=Algeria)
Man
- Nghề nghiệp:
- Algeria
### Tương tác
- ICQ:
- 241842314


text: ***Nếu được nói một từ về thầy cô của bạn, bạn sẽ nói gì? Đối với tôi, thầy cô là những người nhân từ nhất, cho đi rất nhiều nhưng những gì thầy cô mong muốn nhận lại chỉ là sự thành công của chính chúng ta... Đã có bao nhiêu người cảm thấy thực sự biết ơn công ơn vun đắp, dạy dỗ của thầy cô?!? ***Tháng 11, tháng tri ân những nhà giáo Việt Nam MCC cũng có món quà - là tâm sự, tình cảm của chúng em, những chủ nhân tương lai của đất nước dành tặng cho các thầy các cô trong HVNH nói riêng và tất cả những giáo riêng trên mọi miền đất nước![video=youtube;nJzpsuknp30]http://www.youtube.com/watch?v=nJzpsuknp30&feature=plcp[/video]


text:
-
Mọi bài viết vi phạm chính sách, Spam/Không đúng chuyên mục BQT sẽ xóa bài và nick vĩnh viễn.Dismiss Notice
Để báo lỗi hoặc cần hỗ trợ vui lòng liên hệ:
Email: vipkhongtin@gmail.com - FB: Vipkhongtin. Xin cảm ơn!
Tác dụng của ăn chuối thường xuyên
Thảo luận trong 'Rao vặt linh tinh' bắt đầu bởi hoangtrong1807, 12/4/16.

markdown:
-
Mọi bài viết vi phạm chính sách, Spam/Không đúng chuyên mục BQT sẽ xóa bài và nick vĩnh viễn.
Để báo lỗi hoặc cần hỗ trợ vui lòng liên hệ:
Email: vipkhongtin@gmail.com - FB:
[Vipkhongtin](http://fb.com/vipkhongtin). Xin cảm ơn! [Dismiss Notice](account/dismiss-notice?notice_id=1)
# Tác dụng của ăn chuối thường xuyên
Thảo luận trong '
[Rao vặt linh tinh](forums/rao-vat-linh-tinh.38/)' bắt đầu bởi [hoangtrong1807](members/hoangtrong1807.8049/), [12/4/16](threads/tac-dung-cua-an-chuoi-thuong-xuyen.41632/).

Server: Nginx

X-Powered-By: VPSSIM