markdown:
## Never Let Me Go
**2782**
## Lời bài hát
Love me like your best friends did,
Promise I won't hurt you kid,
Hold me really tight until the stars look big,
Never let me go.
All the world is ours,
Like they say in Scarface kid,
You can push your drugs and I can make it big,
Sing at CBGB's have a real good gig,
Hey you never know.
Cause baby we were born to live fast and die young,
Born to be bad, have fun,
Honey, you and me can be one,
Just believe, come on.
If you love me hardcore, then don't walk away,
It's a game boy,
I don't wanna play,
I just wanna be yours,
Like I always say,
Never let me go.
Boy, we're in a world war,
Let's go all the way,
Put your foot to the floor,
Really walk away,
Tell me that you need me more and more everyday,
Never let me go, just stay.
We gonna go far,
I can already taste it kid,
LA's gonna look real good,
Drive me in your car until the sky gets big,
Never let me go.
Send me to the stars,
Tell me when I get there kid,
I can be your Nancy,
You can be my Sid,
Get into some trouble like our parents did,
Hey, they'll never know,
Cause baby we were born to be bad,
Move on,
Built to go fast,
and stay strong,
Honey, you and me and no one,
Just believe,
Come on.
If you love me hardcore, then don't walk away,
It's a game boy,
I don't wanna play,
I just wanna be yours,
Like I always say,
Never let me go.
Boy, we're in a world war,
Let's go all the way,
Put your foot to the floor,
Really walk away,
Tell me that you need me more and more everyday,
Never let me go, just stay.
I remember when I saw you for the first time,
You were laughing,
Sparking like a new dime,
I came over,
"Hello, can you be mine?"
Can you be mine,
Can you be mine?
If you love me hardcore, then don't walk away,
It's a game boy,
I don't wanna play,
I just wanna be yours,
Like I always say,
Never let me go.
Baby it's a sweet life,
Sing it like a song,
It's a short trip,
Only getting one who can count on me and my love more than anyone,
Never let me go.
If you love me hardcore, then don't walk away,
It's a game boy,
I don't wanna play,
I just wanna be yours,
Like I always say,
Never let me go.
Boy, we're in a world war,
Let's go all the way,
Put your foot to the floor,
Really walk away,
Tell me that you need me more and more everyday,
Never let me go, just stay.
## Lời Việt
Hãy ôm em trong vòng tay của anh,
Hãy yêu em như những người bạn thân của anh đã làm,
Hứa với em là anh sẽ không làm tổn thương em,
Hãy ôm em thật chặt cho đến khi các ngôi sao trở nên to lớn,
Xin đừng để em đi.
Tất cả thế giới này là của chúng ta,
như câu họ nói trong Scarface, anh yêu.
Anh có thể đưa những viên thuốc của anh và em có thể làm nó trở nên lớn hơn,
Rồi hát ở CBGB sẽ có một buổi diễn thật là tuyệt vời,
Này, anh sẽ không bao giờ biết đâu.
Bởi vì chúng ta được sinh ra để sống thật nhanh và sẽ chết lúc chúng ta còn trẻ,
Được sinh ra để trở thành những tệ nạn, vui vẻ,
Anh yêu này, anh và em có thể hòa thành một,
Chỉ cần anh tin tưởng thôi.
Nếu anh yêu em thật mảnh liệt, thì xin đừng rời xa em.
Tình yêu chỉ là một cuộc chơi,
Nhưng em không muốn bắt đầu.
Em chỉ muốn là của anh,
Như câu em luôn luôn nói,
Xin đừng để em đi.
Anh yêu này, chúng ta đang trong tình trạng chiến tranh,
Chúng ta hãy cùng nhau bước đi,
Rồi đặt đôi chân của anh xuống sàn nhà,
Anh thật sự đi rồi,
Xin hãy nói với em rằng là anh thực sự cần em và nhiều hơn mỗi ngày,
Xin đùng để em đi, hãy dừng lại.
Chúng ta sẽ chạy thật xa,
Em đã có thể thưởng thức nó rồi, anh yêu ạ,
L.A sẽ là nơi rất tốt dành cho chúng ta,
Hãy chở em trong chiếc xe của anh cho đến khi bầu trời trở nên lớn mênh mông,
Xin đừng để em đi.
Xin hãy gửi em đến những vì sao,
Hãy nói với em rằng khi anh đã đến nơi,
Rồi em sẽ trở thành Nancy của anh,
Và anh sẽ trở thành Sid của em,
Rơi vào những lỗi lầm như cha mẹ chúng ta đã làm,
Này, họ sẽ không bao giờ biết được đâu.
Bởi vì chúng ta được sinh ra để trở thành xấu xa,
Ngày qua ngày,
Được sắp xếp để sống nhanh,
Và trở nên mạnh mẽ,
Anh yêu này, anh và em và không còn ai khác nữa,
Chỉ cần anh tin tưởng thôi.
Nếu anh yêu em thật mảnh liệt, thì xin đừng rời xa em.
Tình yêu chỉ là một cuộc chơi,
Nhưng em không muốn bắt đầu.
Em chỉ muốn là của anh,
Như câu em luôn luôn nói,
Xin đừng để em đi.
Anh yêu này, chúng ta đang trong tình trạng chiến tranh,
Chúng ta hãy cùng nhau bước đi,
Rồi đặt đôi chân của anh xuống sàn nhà,
Anh thật sự đi rồi,
Xin hãy nói với em rằng là anh thực sự cần em và nhiều hơn mỗi ngày,
Xin đùng để em đi, hãy dừng lại.
Em vẫn còn nhớ vào ngày đầu tiên mà chúng ta gặp nhau,
Anh thì cười với nụ cười tỏa sáng như những đồng xu mới tinh.
Rồi em đến bên anh và nói:
"Chào anh, anh có thể là của em không?"
Có thể là của em không?
Có thể là của em không?
Nếu anh yêu em thật mảnh liệt, thì xin đừng rời xa em.
Tình yêu chỉ là một cuộc chơi,
Nhưng em không muốn bắt đầu.
Em chỉ muốn là của anh,
Như câu em luôn luôn nói,
Xin đừng để em đi.
Anh yêu này, đây là một cuộc sống ngọt ngào,
Xin hãy hát nó như một ca khúc.
Đây là một cuộc hành trình rất ngắn
Chỉ có duy nhất thôi, người mà em có thể đếm được những tình yêu mà anh dành cho em và nhiều hơn tất cả mọi người.
Xin đừng để em đi.
Nếu anh yêu em thật mảnh liệt, thì xin đừng rời xa em.
Tình yêu chỉ là một cuộc chơi,
Nhưng em không muốn bắt đầu.
Em chỉ muốn là của anh,
Như câu em luôn luôn nói,
Xin đừng để em đi.
Anh yêu này, chúng ta đang trong tình trạng chiến tranh,
Chúng ta hãy cùng nhau bước đi,
Rồi đặt đôi chân của anh xuống sàn nhà,
Anh thật sự đi rồi,
Xin hãy nói với em rằng là anh thực sự cần em và nhiều hơn mỗi ngày,
Xin đùng để em đi, hãy dừng lại.
Bạn vui lòng click vào link bên cạnh sau đó chọn skip ads để sao chép lời
[Sao chép](http://adf.ly/845497/vnloidich.com/xem/Never-Let-Me-Go-Lana-Del-Rey-y6)Thank you
Nếu bạn thích bài hát hãy để lại lời comment nhé


markdown:
|
|
Bản đồ thế giới trực tuyến
|
|
|
|
|
|
Địa lý, chính trị bản đồ, địa hình chi tiết của Việt Nam và thế giới trong các trực tuyến năm 2017 -
Tìm kiếm nâng cao trên bản đồ của thế giới: Các thành phố, đường giao thông, đường phố, nhà cửa, bất kỳ khu định cư bất cứ nơi nào trên hành tinh này.
Tính toán khoảng cách giữa các thành phố và các quốc gia trên bản đồ thế giới. Rất dễ dàng để tìm thấy bất kỳ đối tượng trên bản đồ thế giới
trong thành phố của bạn, chẳng hạn như thuốc, bệnh viện, ngân hàng, khách sạn, trạm xăng, quán cà phê và quán bar, khu vui chơi, sòng bạc
trung tâm mua sắm, cửa hàng tạp hóa, trường học, trạm xe buýt và nhiều hơn nữa. Tìm kiếm một địa điểm trên bản đồ bằng GPS tọa độ
và ngược lại tìm tọa độ GPS để địa chỉ trên bản đồ thế giới. Bản đồ của ùn tắc giao thông trực tuyến tất cả các
thành phố trên khắp thế giới. Dự báo thời tiết chi tiết trên bản đồ để tìm kiếm trực tuyến trong tất cả các thành
phố trên thế giới. Đo khoảng cách trên bản đồ thế giới.
Hiện tại thế giới thời gian trực tuyến và các múi giờ trên toàn thế giới. Đo diện tích và chu vi trên bản đồ địa lý
thế giới. Dải đo trên bản đồ thế giới. Cấu hình thủ công một vệ tinh món ăn để bất kỳ vệ tinh trực tuyến.
|
|
© 2015

WARC-Type: response

Content-Type: application/http; msgtype=response

WARC-Identified-Payload-Type: text/html

Connection: close

Vary: Accept-Encoding

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


markdown:
**Đây là những mẫu nhà nông thôn theo chuẩn được thiết kế dựa trên những ý tưởng và kiểu mẫu phù hợp với nông thôn Việt Nam hiện đại.**
Nhìn lại một vài năm về trước, giai đoạn gần cuối năm âm lich thì các đơn vị tư vấn xây dựng vẫn dồi dào những nguồn việc với các công trình xây dựng nhà ở, công trình công…Nhưng có vẻ như khi nguồn tài chính thu hẹp, người ta cần phải lựa chọn cẩn trọng hơn trong việc chọn phương án thiết kế, thời gian khởi công sao cho thang giá vật liệu không bị đẩy lên quá cao…việc đó khiến cho đơn đặt hàng của bà con đối với dân làm nghề chúng ta “ít dần đều”.Mặc dầu vậy, nhu cầu vẫn không thể không nảy sinh, điều quan trọng là chúng ta biết đưa đến phương án thỏa đáng về mặt thực tế để tư vấn cho khách hàng. Đối với bà con sống ở vùng ven, vùng nông thôn, mẫu nhà cấp 4 vừa đẹp, tiện dụng, chi phí ít, đáp ứng mức tối thiểu về không gian sử dụng là ưu tiên hàng đầu.
Nắm bắt được nhu cầu của bà con nông dân ở nông thôn, trung tâm quy hoạch đô thị và nông thôn tỉnh Đồng tháp đã giới thiệu 25
**mẫu thiết kế nhà ở nông thôn giai đoạn 2010-2015**. Mặc dầu những mẫu này thoạt nhìn chúng ta sẽ thấy nó không mới, không mang yếu tố đột phá sáng tạo về mặt thiết kế nhưng có một điều chắc chắn là nó phù hợp với nhu cầu của nhứng bà con ở nông thôn, được nhiều người lựa chọn.
## Bộ sưu tập 25
[mẫu nhà cấp 4 nông thôn](http://mauxaynhadep.com/tag/mau-nha-cap-4-nong-thon)
Mỗi mẫu nhà ở cấp 4 nông thôn bao gồm 2 bản vẽ: 1 bản vẽ phối cảnh tổng thể và 1 bản vẽ triển khai mặt bằng tầng trệt, mặt bằng mái, mặt chính và mặt bên. Vì giai đoạn thiết kế mẫu nên các bản vẽ chưa triển khai chi tiết phần kiến trúc, kết cấu và điện nước.
Đặc điểm chung mang tính chủ đạo cho 25 mẫu nhà ở cấp 4 nông thôn này là giá thành không quá đắt, phương án thiết kế không cầu kỳ mà thiên về vẽ đẹp truyền thống, đặc biệt không gian mặt sân trước và sân sau được dành trống tối đa sao cho phù hợp với các hoạt động nông nghiệp ở vùng nông thôn. Do chỉ là “trục xương sống”, là phần cốt cho nên tùy vào nhu cầu của gia chủ mà chúng ta có thể biến tấu, thay đổi cho phù hợp.
### Một số nét chính chung trong các mẫu thiết kế này:
GIải pháp kiến trúc, bố trí mặt bằng
- Mặt bằng trung thành với bố cục: 01 phòng khách + thờ; 01 hoặc 2 phòng ngủ, sau cùng là khu vực bếp ăn + khu vệ sinh.
Giải pháp kết cấu
- Kết cấu chính là khung BTCT chịu lực chính kết hợp các hệ dầm, giằng móng, giằng tường
- Tường xây bằng gạch ống + gạch đặc hoặc gạch không nung.
- Mái lợp ngói 22V/m2, hoặc lợp tôn
Vật liệu hoàn thiện
- Nền lát gạch, tường xây tô, sơn màu
- cửa chính và cửa sổ làm bằng gỗ hoặc nhôm kính.
Một vài ưu & nhược điểm
*
*Về mặt ưu điểm:*
- Chi phí xây dựng thấp, phù hợp với điều kiện kinh tế.
- Diện tích xây dựng tương đối phù hợp cho gia đình có ít thành viên, phù hợp cho các bạn mới lập gia đình muốn dọn ở riêng!!
- Kiến trúc đơn giản, dễ thi công.
- Cách bố trí phòng ốc thuận tiện cho sinh hoạt gia đình.
*
*Về* *nhược điểm:*
- Ít tính sáng tạo trong bố cục, không mới mẽ, cuốn hút và cầu kỳ về mặt hình thức thể hiện.
- Công năng sử dụng vẫn chưa phù hợp cho mô hình nhà ở kết hợp kinh doanh, mô hình hợp tác xã vừa và nhỏ.
- Các mẫu thiết kế mới chỉ dừng lại ở mức tham khảo cho bà con, chưa triển khai thiết kế chi tiết
### Một số hình ảnh trích trong bộ sưu tập 25
[mẫu nhà cấp 4](http://mauxaynhadep.com/tag/mau-nha-cap-4) nông thôn
Mẫu số 4: Mẫu nhà ở 01 phòng khách + thờ; 01 phòng ngủ; khu vực bếp ăn + khu vệ sinh
Mẫu số 5: Mẫu nhà ở 01 phòng khách + thờ; 02 phòng ngủ; khu vực bếp ăn + khu vệ sinh
Trên đây là những đánh giá sơ bộ về
**25 mẫu nhà cấp 4 nông thôn** nhằm khởi gợi thêm ý tưởng cho các bạn có thêm những lựa chọn phù hơp. Trong phạm vi bài viết mình không thể đưa hết 25 mẫu lên đây được mà chỉ đưa một số hình ảnh minh họa trong 25 mẫu trên. Nếu cần tham khảo các bạn tải về toàn bộ các mẫu trên với chỉ một link duy nhất. Chúc các bạn có ngôi nhà như ý…

Server: nginx

Accept-Ranges: bytes

Cache-Control: max-age=3, must-revalidate, public

X-Powered-By: W3 Total Cache/0.9.5.1

Pragma: public


markdown:
Mẫu nhà ống 2 tầng đẹp luôn được quan tâm và thu hút nhiều gia chủ thi công xây dựng nhất là đối với các mẫu nhà phố 2 tầng đẹp mặt tiền 4m , 4,5m và điển hình là 5m. Cùng Blog Xây Nhà tìm hiểu những kiểu nhà ống mới hiện đại này nhé. Mẫu nhà phố đẹp 2 tầng theo kiến trúc nhà ống hiện đại Thông thường các gia chủ có tài chính và gặp nhiều thuận lợi trong công việc cũng như kinh doanh thì…
[Chi tiết »](http://mauxaynhadep.com/mau-nha-pho-dep-2-tang-theo-kien-truc-nha-ong-hien-dai.html)
# kiểu nhà ống mới hiện đại
Mẫu nhà ống 2 tầng đẹp luôn được quan tâm và thu hút nhiều gia chủ thi công xây dựng nhất là đối với các mẫu nhà phố 2 tầng đẹp mặt tiền 4m , 4,5m và điển hình là 5m. Cùng Blog Xây Nhà tìm hiểu những kiểu nhà ống mới hiện đại này nhé. Mẫu nhà phố đẹp 2 tầng theo kiến trúc nhà ống hiện đại Thông thường các gia chủ có tài chính và gặp nhiều thuận lợi trong công việc cũng như kinh doanh thì…


markdown:
|
|Giá bán: |1.990.000 [Chưa bao gồm VAT]|
Bảo hành: |12 Tháng|
|
|Kho hàng: |
|
Còn hàng
|
|Giá bán: |3.690.000 [Chưa bao gồm VAT]|
Bảo hành: |12 Tháng|
|
|Kho hàng: |
|
Còn hàng
|
|Giá bán: |3.700.000 [Chưa bao gồm VAT]|
Bảo hành: |12 Tháng|
|
|Kho hàng: |
|
Còn hàng
|
|Giá bán: |2.990.000 [Chưa bao gồm VAT]|
Bảo hành: |12 Tháng|
|
|Kho hàng: |
|
Còn hàng
|
|Giá bán: |3.290.000 [Chưa bao gồm VAT]|
Bảo hành: |12 Tháng|
|
|Kho hàng: |
|
Còn hàng
|
|Giá bán: |2.690.000 [Chưa bao gồm VAT]|
Bảo hành: |24 Tháng|
|
|Kho hàng: |
|
Còn hàng
|
|Giá bán: |2.790.000|
Bảo hành: |12 Tháng|
|
|Kho hàng: |
|
Còn hàng
|
|Giá bán: |2.490.000 [Chưa bao gồm VAT]|
Bảo hành: |12 Tháng|
|
|Kho hàng: |
|
Còn hàng
|
|Giá bán: |4.590.000 [Chưa bao gồm VAT]|
Bảo hành: |12 Tháng|
|
|Kho hàng: |
|
Còn hàng
|
|Giá bán: |3.100.000 [Chưa bao gồm VAT]|
Bảo hành: |12 Tháng|
|
|Kho hàng: |
|
Còn hàng
|
|Giá bán: |2.490.000 [Chưa bao gồm VAT]|
Bảo hành: |12 Tháng|
|
|Kho hàng: |
|
Còn hàng
|
|Giá bán: |2.290.000 [Chưa bao gồm VAT]|
Bảo hành: |12 tháng|
|
|Kho hàng: |
|
Liên hệ
|
|Giá bán: |2.980.000 [Đã bao gồm VAT]|
Bảo hành: |06 tháng|
|
|Kho hàng: |
|
Còn hàng
|
|Giá bán: |2.780.000 [Đã bao gồm VAT]|
Bảo hành: |12 tháng|
|
|Kho hàng: |
|
Liên hệ
|
|Giá bán: |1.290.000 [Đã bao gồm VAT]|
Bảo hành: |06 tháng|
|
|Kho hàng: |
|
Còn hàng

WARC-Truncated: length

Pragma: no-cache

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


markdown:
_/^^^^^\_
• yeudienthoai.net •
Không lừa đảo!
Ads: XEM mục người lớn - giới tính phê và sướng tại: truyensexdam.sextgem.com
video lén cởi đồ khám phá em này nào
Dung lượng: 2,7 MB
>
Tải xem video trên
$ 0.8 video charge, does not contain sex
Games online hot
- Games online chiến đấu kiếm hiệp đẹp như phim
- Games online di động CẬP NHẬT!!!
yeudienthoai.net
»Angelina Jolie.nth
»BMW.nth
»Blue Crystal.nth
»Blue Leaf.nth
»Blue Mac.nth
»Britney Spear.nth
»Bunny Taz.nth
»Butter Fly.nth
Â»Cat.nth
»Christina Aguilera.nth
»Daffy Duck.nth
»Trai Dau Tay.nth
»Depeche.nth
»Drbean.nth
»Eagle.nth
»Ho Trang.nth
»Hoa Hong Bach.nth
»Iceage.nth
»Linkin Park.nth
»Mini Cooper.nth
»Nguoi Nhen.nth
»Paris Hilton.nth
»San Andreas.nth
»Snow Girl.nth
»The Killers.nth
»Thien Nhien.nth
»Tuning.nth
»Uztenlambo.nth
»VISTA.nth
»Vod.nth
»XP.nth
»nfs.nth
»White.nth
yeudienthoai.net
Facebook
Bấm vào nút facebook trên để chia sẻ trang này lên tường nhà facebook của bạn!
[- quay lại trang]
- Trang chủ yeudienthoai
Thống kê
1/1/358
Log in
Sign up

WARC-Identified-Payload-Type: application/xhtml+xml

P3P: CP="Not supported"

Via: 1.1 varnish

X-Robots-Tag: Crawl-delay: 10

Cache-Control: private, no-cache, no-cache=Set-Cookie, proxy-revalidate

Vary: Host,Accept-Encoding

Set-Cookie: _xta_vid=d2dc2ed697fb9b5125e5e420a31a516b-1498324508; expires=Sat, 24-Jun-2017 17:45:08 GMT; Max-Age=1800; path=/; domain=.sextgem.com; httponly

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


markdown:
Số 13 Quốc Tử Giám - Đống Đa - Hà Nội
Điện thoại: 04 3 7325 896
Hotline: 09 75 75 89 25
E-mail: study@bridgeblue.edu.vn
Website: www.bridgeblue.edu.vn
Mr. La Tất Thành58 B Trần Quốc Thảo, phường 7, Quận 3, Tp Hồ Chí Minh
Điện thoại: 0933 55 99 06
E-mail: cauxanhhcm@bridgeblue.edu.vn
DU HỌC BB

Server: Apache

Content-Type: text/html


markdown:
Món Thịt Bò
Món Thịt Heo
Món Heo Rừng
Món Thịt Dê
Món Thịt Cừu
Món Thịt Gà
Món Thịt Vịt
Món Tôm
Món Cá Kho
Món Cá Chiên
Món Cua Biển
Món Mực
Món Ốc
Món Lương
Món Thịt Ếch
Món Đậu Hủ
Món Rau quả
Món Trứng
Món Đặc Sản
Món Ăn Miền Bắc
Món Ăn Miền Trung
Món Ăn Miền Nam
Món Ăn Nước Ngoài
Món Hàn Quốc
Món Nhật Bản
Món Pháp
Món Ý
Món Thái Lan
Món Âu
Món Việt Nam
Món Trung Hoa
Món Ngày Tết
Món Mùa Hè
Món Mùa Thu
Món Mùa Đông
Món Giáng Sinh
Món Trung Thu
Món Tiệc Tùng
Món Chay
Món Ăn Sáng
Món Ăn Trưa
Món Giảm Cân
Món Ăn Vặt
Món Món Khai Vị
Món Tráng Miệng
Món Chính
Món Dễ Làm
Món Chiên rán
Món Hầm Ninh
Món Hấp
Món Kho
Món Luộc
Muối Chua
Món Nướng
Món Om
Món Quay
Món Xào
Món Xôi
Món Cháo
Món Cơm
Món Lẩu
Món Nem
Món Chả
Món Ngon
Hủ Tiếu
Phở
Nước Chấm
Món Canh
Món Salad
Món Snacks
Món Pasta
Món Spaghetti


markdown:
Cha ca
cơm chiên hải sản nhồi ống tre
thịt heo kho măng của hà tĩnh mình
quán kem hoa quả
chè sikhye
hộp đựng
ăn ngon ngày tết
canh rau cu thap cam
banh su
salad bắp cải tím
Các món xôi ngon
cách làm canh cá diếc
dau phu nhoi thit
Trung Quốc
ngu qua
cha ca thac lac chien com
bánh khoai tây chiên thịt nguội
may vÃƒ
lầm trứng hấp ngon
bắp cải muối chua Hằng MT
cach lam banh thach 3D
cÃ quáº kho to
cach lam bap cai
dọc mùng xào
mang chua
xe
mut chum ruot ngon
rau chum ngay
Cu cai trang
bánh nhãn chiên
salad bo tom
infographic
bÃ nh quy
rau sắng
che ngo ngot thach den
bún ngon
lợn muối
thìa muỗng
cac mon nuong
che khoai
tui xach
canh náº m
những món ngon từ tôm
đậu đũa bọc thịt heo
nghêu nấu cháo
xôi ngọt
bò xào hành
mề gà nướng
cha gio mang cau
đuôi bò nấu lẩu
canh cua kim cham ngon
de
xay nhuyễn
láº m
bánh giáng sinh
hạt cơm
xôi đậu nấu nồi cơm điện
cach nau che ngo khoai lang
cách làm bánh cookies đậu phộng
cách nấu các món chay
cải cuộn
banh mi trung nuong
bo nuong cuon rau xanh
kem que trái cây
món ăn từ trứng
She
banh su nhan jambon
chat beo
món trùng trục
mon an mien trung
mon bun xao
lÃ ng máº n
mon an voi nam kim cham ngon
chả chay
chao vịt
thịt gà rán vừng
pha trà táo
nếp cẩm nấu sôi
Công dụng bất ngờ từ giấm
MÃª
nuoc cham rau muong luoc ngon
sắc màu
lau cua chua cay ngon
banh trang cuon thit heo ngon
Indonesia
bánh mì nướng sốt sa tế
phở bò hà nội
cách làm cơm nắm cá hồi
canh moc
cach nau chao long
hàu rong biển thịt heo muối món ngon
Suon non chay chien
mẹo làm ruốc cá
sữa chiên
món canh có tác dụng cho sức khỏe nam
món mặn
tom xao bong thien ly dau hao
su hào gỏi su hào món Bắc Hằng MT
lỗi sử dụng ấm siêu tốc
gà kho gừng lò vi sóng Electrolux
Mát lòng huyết bò xào lá hẹ
cach lam kem flan dua
ot ngam dam
giỏ đựng đồ
canh cá kiểu thái
cách làm tương hột
cua be
trứng cuộn thịt nguội
Cach lam banh dau Xanh
tết nhâm thìn
trứng cút om nấm rơm
Tart chocolate
hướng dẫn làm bánh giò
yến sào
cong thuc lam banh quy
thấu bóp thịt dê
chÃ o
cáº i
ga xe phay sot tieu cay
cach lam mon an chay
cơm tối


markdown:
![ cầu mút(cầu đá)](http://nguonhanggiasi.net/styles/brivium/Nitrogen/xenforo/avatars/avatar_male_l.png)
- Hoạt động lần cuối:
- 14/6/17
- Tham gia:
- 16/7/16
- Số bài viết:
- 1
- Được thích:
- 0
- Điểm:
[1](members/cau-mut-cau-da.16506/trophies)
1/113
- Giới tính:
- Nam
- Sinh nhật:
- 16/7/88 (Tuổi: 28)
### Share trang này
# cầu mút(cầu đá)
New Member, Nam, 28
- cầu mút(cầu đá) lần cuối xem:
- 14/6/17
-
- Đang tải...
- Đang tải...
-
### Giới thiệu
- Giới tính:
- Nam
- Sinh nhật:
- 16/7/88 (Tuổi: 28)
- Đang tải...

Server: LiteSpeed

X-Frame-Options: SAMEORIGIN

Cache-control: private, max-age=0


markdown:
# Hoạt động người Việt bốn phương tuần qua
![](http://rs.nhipcaudautu.vn/staticFile/Subject/2016/09/24/501_nv4p_anh-thoi-su-2-ngay-199-1_dantocmiennui.vn_241239871.jpg)
**Phó Thủ tướng dự Diễn đàn Doanh nhân người Việt tại Nga**
Diễn đàn “Doanh nhân người Việt tại Nga - Triển vọng hợp tác”, tổ chức ngày 18.9, tại Tổ hợp thương mại Hà Nội - Moscow. Tại đây, ông Đỗ Xuân Hoàng, Chủ tịch Hiệp hội Doanh nhân Việt Nam tại Nga nhận định: “Với việc Hiệp định Thương mại tự do (FTA) Việt Nam - Liên minh Kinh tế Á - Âu (EAEU) có hiệu lực, Chính phủ Việt Nam đã xây cho cộng đồng doanh nghiệp trong nước và doanh nghiệp Việt Nam tại Nga một sân vận động hiện đại. Việc của các doanh nghiệp là thi đấu thật tốt”.
Theo Phó Thủ tướng Chính phủ Trịnh Đình Dũng, với việc cắt giảm hơn 50% dòng thuế về 0% và có đầy đủ các thỏa thuận về các điều kiện thuận lợi hóa thương mại, FTA với EAEU sẽ mở ra không gian làm giàu cho doanh nghiệp trong nước cũng như doanh nghiệp Việt Nam ở nước ngoài, đặc biệt là tại Nga.
Trên thực tế, FTA Việt Nam - EAEU sẽ có những tác động nhất định đến mô hình làm ăn của cộng đồng người Việt Nam tại Nga. Phó Thủ tướng cho rằng, các doanh nghiệp, hộ kinh doanh người Việt tại Nga cần tích cực chuyển đổi hoạt động kinh doanh từ kinh tế chợ sang kinh doanh tại các trung tâm thương mại, sản xuất và làm dịch vụ, xem xét khả năng nhập trực tiếp hàng hóa từ Việt Nam sang Nga. Đặc biệt là việc phối hợp chặt chẽ với các doanh nghiệp trong nước để tạo ra sức mạnh tổng hợp, phát huy tối đa những cơ hội hiệp định thương mại tự do mang lại. “Chính phủ sẽ có trách nhiệm cùng các doanh nghiệp tháo gỡ khó khăn, phát triển sản xuất kinh doanh”, Phó Thủ tướng Trịnh Đình Dũng khẳng định.
|
|![]()
|FTA với EAEU sẽ mở ra không gian làm giàu cho doanh nghiệp trong nước cũng như doanh nghiệp Việt Nam ở nước ngoài, đặc biệt là tại Nga. Ảnh: dantocmiennui.vn|
Trong khuôn khổ chuyến thăm và làm việc tại Nga, Phó Thủ tướng và đoàn công tác Chính phủ đã đến thăm Đại sứ quán Việt Nam tại Moscow. Sáng 18.9, Phó Thủ tướng và đoàn công tác đã đến đặt hoa tại Quảng trường Hồ Chí Minh ở Thủ đô Moscow.
**Diễn đàn Doanh nghiệp Việt kiều châu Âu lần thứ 10**
Với chủ đề “Hiệp định Thương mại Tự do Việt Nam - Liên minh châu Âu: Cơ hội hợp tác và phát triển”, Diễn đàn Doanh nghiệp Việt kiều châu Âu lần thứ 10, được tổ chức tại thủ đô Budapest, Hungary, thu hút khoảng 250 đại biểu tham dự.
Diễn đàn là sự kiện thường niên lớn nhất của cộng đồng các doanh nhân Việt ở châu Âu, kể từ năm 2006. Diễn đàn năm nay ghi nhận sự gắn kết của cộng đồng doanh nhân người Việt tại châu Âu, sự trưởng thành của các doanh nghiệp người Việt trẻ. Đây là những doanh nhân trưởng thành tại châu Âu, với tư duy, cách làm việc mới dựa trên những lợi thế về tri thức và ngôn ngữ.
Thực tế, kinh doanh ở châu Âu không phải lúc nào cũng dễ dàng. Kể từ khi khối Đông - Trung Âu gia nhập EU vào năm 2004, các quốc gia tại đây phải hoàn thiện hệ thống luật pháp nghiêm ngặt với vô vàn quy định về thuế, chất lượng sản phẩm, điều kiện kinh doanh... Chỉ trong thời gian ngắn, các công ty đa quốc gia ồ ạt xâm chiếm thị trường châu Âu, các hệ thống bán lẻ đua nhau mọc lên. Chợ Việt không còn là sự lựa chọn phổ biến trong bối cảnh hàng hóa không còn khan hiếm. Thay vào đó, khách hàng có thể lựa chọn nhiều chủng loại hàng hóa tại các trung tâm thương mại. Cạnh tranh khốc liệt đã khiến nhiều doanh nghiệp của người Việt phá sản, giải thể hoặc hoạt động cầm chừng.
FTA Việt Nam - EU được kỳ vọng là cơ hội hợp tác và phát triển đối với thương mại và đầu tư giữa Việt Nam và EU. Theo đó, chỉ khoảng 42% kim ngạch xuất khẩu của Việt Nam sang EU được hưởng mức thuế 0% và còn phụ thuộc vào cơ chế GSP, Hiệp định Thương mại Tự do Việt Nam có thể giúp tỉ lệ này tăng lên trên 90% sau một lộ trình ổn định, tức là 28 tỉ USD hàng hóa xuất khẩu sang EU trong tương lai sẽ được miễn thuế. Hiệp định có các quy định, cơ chế rõ ràng và hiệu quả, liên quan đến thương mại hàng hóa, quy tắc xuất xứ, minh bạch hóa, sở hữu trí tuệ, bao gồm cả chỉ dẫn địa lý, hợp tác xây dựng năng lực, thương mại và phát triển bền vững... Với các cam kết mở cửa thị trường hàng hóa, dịch vụ, mua sắm công và cam kết về chính sách đầu tư, doanh nghiệp nhà nước, minh bạch hóa chính sách, hiệp định này sẽ thúc đẩy luồng vốn đầu tư chất lượng cao của EU vào Việt Nam.
|
|![]()
|28 tỉ USD hàng hóa xuất khẩu từ Việt Nam sang EU trong tương lai sẽ được miễn thuế. Ảnh: digitaltrends.com|
Ông Bruno Angelet, Đại sứ, Trưởng phái đoàn Liên minh châu Âu (EU) tại Việt Nam, cho biết, EU không chỉ tập trung vào thương mại, đầu tư mà còn muốn đảm bảo rằng kinh tế tư nhân có thể tồn tại và phát triển tốt sau khi Hiệp định Thương mại Tự do Việt Nam có hiệu lực. Điều quan trọng là doanh nghiệp 2 nước phải hiểu rõ Hiệp định Thương mại Tự do Việt Nam là gì và hiểu quyền lợi cũng như nghĩa vụ liên quan khi Hiệp định được thực thi.
**Hội đoàn người Việt tại Pháp gửi EC Tuyên bố chung về phán quyết của PCA về biển Đông**
35 Hội đoàn người Việt tại Pháp đã chính thức gửi Ủy ban châu Âu (EC) Tuyên bố chung, phản đối những hành động, yêu sách trái với Luật pháp quốc tế của Trung Quốc. Bản Tuyên bố chung có đoạn: “Tuyên bố chung liên quan tới phán quyết của Tòa trọng tài quốc tế về vụ kiện của Philippines đối với tuyên bố chủ quyền của Trung Quốc trên Biển Đông. Tòa Trọng tài Thường trực tại La Haye (Hà Lan) (PCA) ngày 12.7 đã ra phán quyết, Trung Quốc không có bất kỳ căn cứ pháp lý nào khi đòi “quyền lịch sử” trong vùng giới hạn bởi “đường chín đoạn” trên Biển Đông. Không những vậy, PCA còn tố cáo Trung Quốc đã gây ra những tổn hại nặng nề đối với hệ sinh thái thông qua việc tự ý khai phá, biến đổi hiện trạng và xây dựng tràn lan các cơ sở hạ tầng cảng tàu, sân bay”.
Cũng trong Tuyên bố chung, các tổ chức thuộc cộng đồng người Việt Nam tại Pháp và các hội đoàn hữu nghị với Việt Nam đã cùng tuyên bố:
1. Phản đối mạnh mẽ những hành động, yêu sách trái với luật pháp quốc tế của chính phủ Trung Quốc khi: Đòi hơn 80% diện tích biển phía Nam Trung Quốc; Ngang nhiên xây dựng từ năm 2014 các đường băng, cảng và các căn cứ quân sự trên các đảo có tuyên bố chủ quyền bởi Việt Nam và các nước khác trong vùng; Đe dọa xác lập vùng nhận dạng phòng không (ADIZ) hòng kiểm soát toàn bộ việc đi lại trên biển và trên không trong khu vực; Đã có nhiều hành động khiêu khích, tấn công với các tàu cá của Việt Nam và Philippines trong vùng tranh chấp trên Biển Đông. Cụ thể, lần gây hấn gần nhất xảy ra vào ngày 9.7; Tăng cường các hoạt động quân sự trong vùng tranh chấp nhằm tái khẳng định cái gọi là “chủ quyền” và “quyền lịch sử” trái với phán quyết từ PCA. Thậm chí, Trung Quốc còn thách thức xung đột quân sự trên Biển Đông ngay sau phán quyết từ PCA.
2. Kêu gọi tất cả các bên liên quan đặc biệt là Trung Quốc và cộng đồng quốc tế cam kết và hành động để: Luật pháp quốc tế phải được thực thi, đặc biệt Công ước Liên Hợp quốc về Luật Biển năm 1982 (UNCLOS) và Tuyên bố về ứng xử của các bên trên Biển Đông (DOC) phải được tuân thủ; Những tranh chấp trên Biển Đông phải được giải quyết bằng những giải pháp hòa bình và đàm phán theo luật quốc tế, tuyệt đối không sử dụng bất kỳ sự hăm dọa và hành động vũ lực nào; Đảm bảo sự tôn trọng của các bên đối với phán quyết từ PCA về những điểm đã được nêu ở trên.
Ý thức rằng nguy cơ bất ổn trong khu vực luôn tiềm ẩn, qua Tuyên bố chung, các hội đoàn người Việt tại Pháp, một mặt ngăn chặn những động thái có thể gây ra hậu quả khôn lường, đe dọa tới hòa bình, ổn định và tự do hàng hải, hàng không trên khu vực. Mặt khác, đã thắt chặt hơn nữa sự đoàn kết và tình hữu nghị giữa các nước trong khu vực, giữa cộng đồng quốc tế yêu chuộng hòa bình và công lý.
**Hải Vân**

Cache-Control: private


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)
##
Posted On Thursday, June 26, 2008 at
at
[ASP.NET MVC Project templates cho VS.NET 2005](http://nthoai.blogspot.com/2008/06/aspnet-mvc-project-template-vsnet2005.html)
[6:33 PM](http://nthoai.blogspot.com/2008/06/aspnet-mvc-project-template-vsnet2005.html)by Van Nguyen [](https://www.blogger.com/post-edit.g?blogID=3978293580246860892&postID=3244763374806972329&from=pencil)
- Để có thể tạo được project web ASP.NET với mô hình MVC framework, các bạn phải download
[ASP.NET MVC Preview 3 Visual Studio Templates](http://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=aspnet&ReleaseId=13792) và chỉ có thể cài được khi bạn đã có VS.NET 2008 hoặc VS.NET Express 2008. Đối với những bạn chỉ có VS.2005 trong máy thì thật là bực mình vì …
làm biếng đi mua đĩa VS.2008 mà lại muốn test ngay xem MVC trong ASP.NET như thế nào. Đối với một số người thì không thể có VS.NET 2008 để sử dụng vì bản quyền. Tôi đã táy máy để chuyển những template từ trang CodePlex để có thể install và chạy được với VS.NET 2005.
Bạn có thể download template cho VS.NET 2005 ở link sau:
[1st mirror: ASPNET_MVC_Project_Template_for_VSNET_2005.html](http://www.4shared.com/file/52810888/97a76567/ASPNET_MVC_Project_Template_for_VSNET_2005.html)
Hoặc ở link sau
[2nd mirror: ASPNET_MVC_Project_Template_for_VSNET_2005.html](http://nvthoai.googlepages.com/ASP.NETMVCProjectTemplateforVS.NET20.vsi)
Tuy nhiên có một số điều lưu ý:
- Nếu bạn vừa cài VS.NET 2005 và VS.NET 2008 thì tất nhiên cũng chẳng cần install cái setup của tôi làm gì. Khi bạn cài bản template của Codeplex, các template mặc định sẽ được chép vào các thư mục của VS.NET 2005 và mặc định cả 2 version đều có thể hiểu được các template này. Tuy nhiên template của CodePlex sẽ không chạy được cho VS.NET 2005 vì project được tạo ra từ template này chỉ hiểu được trên VS.NET 2008 (
[cú pháp C# 3.0](http://msdn.microsoft.com/en-us/vcsharp/aa336745.aspx)). Vì vậy nếu như bạn muốn install phiên bản riêng cho VS.NET 2005 thì hãy bỏ check các Item Template và chỉ chọn install 2 project template ở cuối cùng như trong hình. Nếu bạn vẫn chọn và install, trình install sẽ hỏi bạn có chép đè file có sẵn từ lần install trước hay không, và bạn có thể chép đè vẫn không sao vì các item template có thể hiểu được trên cả VS.NET 2005 và VS.NET 2008. ![cssbody=[boxHoverBody] cssheader=[boxHoverHeader] header=[Hình gì đây? :|] body=[Bạn có thể chọn những mục để install, hai mục cuối cùng là template ASP.NET MVC project cho VB và C#] ASP.NET MVC Framework project template for VS.NET 2005](http://img372.imageshack.us/img372/4825/templateinstallss5.png)
Hình 1: Bạn có thể chọn những mục để install.
- Tôi đã chỉnh sửa một số nơi trong template gốc của CodePlex để project tạo ra có thể build được trên VS.NET 2005 cụ thể là sửa trong file global.asax.cs. Trong phần routing ở VS.NET 2008 có hỗ trợ các extension API mà VS.NET 2005 không thể hiểu được buộc lòng tôi phải đổi sang kiểu code truyền thống
![31 :bbpbuon:](http://igame.vn/f/images/smilies/BBP_smilies/31.gif)
![cssbody=[boxHoverBody] cssheader=[boxHoverHeader] header=[Hình gì đây? :|] body=[Tôi đã sửa lại temlate để có thể build project MVC] ASP.NET MVC Framework project template for VS.NET 2005](http://img381.imageshack.us/img381/4845/changedvs4.png)
Hình 2: Đổi sang kiểu code truyền thống để có thể build.
- Và sau khi install xong, các bạn sẽ thấy các template mới khi muốn tạo project mới:
![cssbody=[boxHoverBody] cssheader=[boxHoverHeader] header=[Hình gì đây? :|] body=[Sau khi install, các template sẽ xuất hiện bên trong dialog new project] ASP.NET MVC Framework project template for VS.NET 2005](http://img511.imageshack.us/img511/5598/createprojectxs6.png)
Hình3: Project templates sau khi install
Trong mấy ngày tới, tôi sẽ nghiên cứu và chế ra cái template có sẵn Unit Test.
![46 :bbpsdieu2:](http://igame.vn/f/images/smilies/BBP_smilies/46.gif)
##
Posted On Tuesday, June 24, 2008 at
at
[ASP.NET và MVC Framework](http://nthoai.blogspot.com/2008/06/aspnet-va-mvc-framework.html)
[10:55 PM](http://nthoai.blogspot.com/2008/06/aspnet-va-mvc-framework.html)by Van Nguyen [](https://www.blogger.com/post-edit.g?blogID=3978293580246860892&postID=8645765789787481505&from=pencil) ![cssbody=[boxHoverBody] cssheader=[boxHoverHeader] header=[Hình gì dây -,- ?] body=[Hình minh họa ASP.NET Model View Controller Framework] ASP.NET Model View Controller Framework](http://dotnetslackers.com/images/articleimages/mvc.jpg)
- Ai từng sử dụng qua ngôn ngữ ASP cũng biết rằng khá bất tiện khi phải xử lý code giao diện chung với những xử lý bussiness logic. Những xử lý để đọc dữ liệu database viết xen kẽ với những phần code định dạng HTML làm cho ứng dụng web rất khó bảo trì và khó tái sử dụng. Sau khi version 4.0 của IIS ra đời năm 1997, Bác Bill cùng các đồ đệ tiếp tục nghiên cứu một mô hình web application để giải quyết vẫn đề trên của ASP: tách rời giữa phần hiển thị và phần nội dung. Sau 4 năm nghiên cứu với một loạt những phiên bản beta ở các năm 2000 và 2001, ASP.NET 1.0 đã được công bố vào tháng 1 năm 2002, sau đó là version 1.1 ở tháng 4 năm 2003. Mô hình code-behind của ASP.NET đánh dấu một bước tiến so với người anh em ASP, nó khuyến khích người viết web trên nền .NET xây dựng những ứng dụng với sự tách bạnh rõ ràng giữa các thành phần hiển thị và nội dung mặc dù vẫn có thể viết theo style của ASP, mọi xử lý viết thẳng vào file aspx, ascx. Trên lý thuyết, mô hình này sẽ giúp những web designer chủ động thiết kế ra giao diện của ứng dụng mà không sợ ảnh hưởng đến những phần code xử lý bên dưới. Điều này dường như giống với ý tưởng tách rời giữa controller và view trong mô hình Model-View-Controller framework.
- Trong một số bài viết về cách implement
[MVC](http://nthoai.blogspot.com/search/label/MVC)cho ASP.NET, các tác giả thường cho rằng Code Behind của 1 trang ASP.NET là controller, các file aspx, ascx chính là các View. Theo tôi điều này chỉ đúng một phần vì các nguyên nhân sau:
1/Với mô hình Code Behind, đúng là đã có sự tách riêng giữa phần hiển thị (aspx, ascx) và các xử lý bussiness logic. Tuy nhiên người lập trình chỉ có thể làm được chuyện tách riêng phần View và Controller. Trong khi phần Model nếu không làm khéo sẽ vẫn dính chặt với vần controller và chẳng dễ test nó chút nào. Nếu bạn viết code lấy dữ liệu từ database ngay trong file code behind của 1 trang thì rõ ràng Model và Controller của bạn dính thành 1 cục và không thể test được bằng Unit Test. Như vậy người không biết sẽ vô tình làm code của mình khó test, khó bảo quản và khó sử dụng lại.
2/Các lớp Code Behind của ASP.NET đều kế thừa từ System.Web.Page, như vậy controller theo kiểu này cũng không thể dùng Unit Test để test các xử lý bussines logic. Đó là điều mà các fan của Unit Test không thể chấp nhận được. Ngoài ra, với sự phụ thuộc vào namespace System.Web như vậy, những xử lý của bạn sẽ không thể sử dụng lại khi muốn đổi một ứng dụng web sang ứng dụng windows form.
- Ngoài các lý do trên, có 1 điều nữa giúp tôi khẳng định Mô hình Code Behind của ASP.NET không theo
[MVC](http://nthoai.blogspot.com/search/label/MVC), đó chính là sự ra đời của framework ASP.NET MVC gần đây và một số [framework MVC khác](http://www.castleproject.org/monorail/index.html)cho ASP.NET.
- ASP.NET MVC Framework là một
[Model-View-Controller](http://nthoai.blogspot.com/search/label/MVC)framework được Microsoft thêm vào bộ ASP.NET. Nó cho phép người làm phần mềm xây dựng những Web application theo ý tưởng của [MVC](http://nthoai.blogspot.com/search/label/MVC), gồm 3 thành phấn Model, View và Controller. Một Model tượng trưng cho một trạng thái của ứng dụng. Thông thường, một model sẽ maps với một table trong cơ sở dữ liệu, những record trong table đó sẽ tượng trưng cho trạng thái của table đó. Còn một Controller sẽ handle những tương tác của người dùng với ứng dụng và cập nhật giá trị cho Model. Một View sẽ lấy những dữ liệu cần thiết của Model và hiển thị ra giao diện. ![cssbody=[boxHoverBody] cssheader=[boxHoverHeader] header=[Hình gì dây -,- ?] body=[Project Template cho ASP.NET Model View Controller Framework, các bạn có thể download nó ở các link tham khảo bên dưới] ASP.NET Model View Controller Framework Project Template](http://www.scottgu.com/blogposts/mvcsource/step1.png)
- ASP.NET MVC Framework tách rời các models, các views và các controllers của
[MVC](http://nthoai.blogspot.com/search/label/MVC)bẳng cách dùng các [Interface](http://en.wikipedia.org/wiki/Interface_%28computer_science%29)(trong ngôn ngữ lập trình), bằng cách đó giúp cho các thành phần này có thể test độc lập với nhau. View engine trong ASP.NET MVC framework chính là các trang aspx, ascx để hiển thị giao diện. Tuy nhiên, những tương tác của người dùng lên trang web sẽ được truyền thẳng cho controller mà không thông qua cơ chế postback truyền thống. Với ASP.NET MVC framework, chúng ta còn có thể làm được 1 trang web với Friendly-URL mà không phải mất công code những implement phức tạp như trước đây. [ASP.NET MVC Preview 3 Release](http://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=aspnet&ReleaseId=13792)vừa mới được công bố hồi tháng 5/2008 với nhiều feature mới hứa hẹn nhiều điều hấp dẫn để tìm hiểu cho những lập trình viên như chúng ta.
Các bạn có thể tự tìm hiểu những resource về ASP.NET MVC Preview3 tại các link sau:
[http://www.codeplex.com](http://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=aspnet&ReleaseId=13792) [http://www.asp.net](http://www.asp.net/mvc/default.aspx?wwwaspnetrdirset=1) [http://weblogs.asp.net/scottgu](http://weblogs.asp.net/scottgu/archive/2008/05/27/asp-net-mvc-preview-3-release.aspx)
##
Posted On Sunday, June 22, 2008 at
at
[MVC Model View Controller](http://nthoai.blogspot.com/2008/06/mvc-model-view-controller.html)
[3:22 PM](http://nthoai.blogspot.com/2008/06/mvc-model-view-controller.html)by Van Nguyen [](https://www.blogger.com/post-edit.g?blogID=3978293580246860892&postID=6262807952839744952&from=pencil)
- Mấy tuần nay tôi đang tìm hiều về các pattern thiết kế giao diện và đã gặp nhiều vướng mắc. Một số đã tự giải quyết được, một số vẫn còn tồn đọng. Vì vậy tôi cũng muốn chia sẽ những gì mình đã tìm hiểu với mọi người. Tôi quyết định dịch và viết bài từ mô hình ra đời lâu nhất và được nhiều người biết đến nhất, đó là mô hình MVC. Ban đầu tôi đã định không tìm hiểu về MVC và đi vào những thiết kế mới nhất như MVP nhưng thực ra MVC vẫn còn rất phổ biến hiện nay. (Cám ơn
[Tính nai oan oan](http://blog.360.yahoo.com/blog-ZDmbtn8lcqjB40guZjXo) cho các thông tin về MVC và [Monorail](http://www.castleproject.org/monorail/index.html)) Vì vậy, trong những loạt bài sau tôi sẽ viết nhiều về pattern đang phổ biến hiện nay như MVP và các ví dụ thực tế của nó. Phần lớn sẽ là bài dịch và sửa đổi cho dễ hiểu, hiện nay vẫn chưa đủ trình độ để sáng tạo cái gì cả.
- Có thể nói rằng các chương trình dù là Win Application hay Web Application đều gồm hai thành phần chính là giao diện và dữ liệu. Các ứng dụng chúng ta tạo ra sẽ đọc dữ liệu từ nơi lưu trữ và hiển thị lên cho người dùng thấy. Sau khi người sử dụng chương trình thao tác với ứng dụng và thay đổi giá trị dữ liệu, chương trình sẽ lưu các thay đổi đó xuống nơi lưu trữ. Do luồng thông tin chính của các ứng dụng sẽ truyền từ nơi lưu trữ lên trên phần hiển thị và ngược lại nên người có thể cho rằng nên có cách nào đó thiết kế hai thành phần dữ liệu và giao diện cùng với nhau để giảm thiểu việc coding và tăng performance. Dù không cố tình làm như vậy nhưng đa số những bạn mới viết chương trình cơ sở dữ liệu lần đầu tiên thường không biết nên sẽ làm theo cách này. Cách làm như vậy có một số vấn đề nghiêm trọng. Một trong các vấn đề đó là việc giao diện thường có xu hướng thay đổi nhiều hơn so với dữ liệu lưu trữ. Hơn nữa, những xử lý tính toán (business logic) trong chương trình cũng là một thành phần thường xuyên thay đổi trong suốt quá trình phát triển phần mềm. Nếu chương trình được xây dựng theo kiểu trộn lẫn code của các thành phần data access, business logic và presentation thì sẽ rất khó bảo trì sửa đổi cũng như khả năng sử dụng lại. Chính vì mục đích tăng tính độc lập giữa các thành phần trong ứng dụng và để giải quyết những trở ngại trên, người ta đã nghĩ ra nhiều mô hình và cách thiết kế ứng dụng rất hiệu quả. Kể từ những năm 70, mô hình MVC được nghĩ ra để giải quyết một số vấn đề trên.
Đặt vấn đề:
- Khi lần đầu tiên viết chương trình đọc dữ liệu từ database và hiển thị lên form, tôi đã viết chương trình kiểu gom chung phần xử lý giao diện và truy xuất dữ liệu làm một. Có nghĩa là tôi tạo ra câu query sql ngay trong code của lớp giao diện. Cách làm này rất không hợp lý vì khi sửa đổi cấu trúc bảng trong cơ sở dữ liệu thì câu query sql sẽ cần phải đổi, dẫn đến phải sửa lớp giao diện. Khi cần đổi database khác thì gần như phải viết lại từ đầu. Như vậy gom chung giữa giao diện và dữ liệu là không nên, và ai cũng biết điều đó.
- Liệu có một cách nào chúng ta có thể chia nhỏ chương trình thành nhiều module để tiện thay đổi, bảo trì?
Giả sử người ta có các yêu cầu sau:
- Giao diện của ứng dụng có xu hướng thay đổi nhiều hơn là những thay đổi business logic của chương trình, đặt biệt đối với những ứng dụng Web. Ví dụ như cùng một trang Web hiển thị sản phẩm có thể sẽ được yêu cầu thay đổi nhiều lần về cách bố trí sản phẩm, màu sắc bố cục trong khi cách để lấy thông tin sản phẩm từ database sẽ không cần sửa đổi. Hơn nữa, một trong những tiện lợi của ứng dụng Web là người ta có thể thay đổi giao diện vào bất cứ lúc nào mà không cần người dùng phải install cài đặt gì cả. Nếu như những đoạn code xử lý giao diện và xử lý business logic bên trong chương trình được viết chung với nhau, bạn sẽ phải thay đổi những lớp dùng để xử lý business logic mỗi khi cần thay đổi giao diện. Mà khi xử lý business logic của ứng dụng bị thay đổi thì có thể sẽ gây ra các lỗi không mong muốn nên phải test mọi thứ lại từ đầu cho dù đó chỉ là một thay đổi nhỏ về giao diện. Như vậy ta có một nhu cầu về việc tách riêng giữa giao diện và các xử lý business logic.
- Trong một số ứng dụng, chương trình sẽ hiển thị cùng một dữ liệu bằng nhiều cách khác nhau. Ví dụ như chúng ta cần làm một loạt các biểu đồ khác nhau hiển thị giá chứng khoán, các biểu đồ này được hiển thị cùng lúc. Nếu người dùng thay đổi dữ liệu trên một màn hình nào đó thì hệ thống phải cập nhật thay đổi đó trên các màn hình còn lại. Ta có một nhu cầu về tự cập nhật giao diện khi có những thay đổi trong dữ liệu.
- Để thiết kế giao diện HTML đẹp và hiệu quả cần những kĩ thuật đặt biệt, có khi cả năng khiếu về mĩ thuật mà không phải một lập trình viên nào cũng có được. Vì vậy trong những dự án lớn thường có những người design giao diện riêng và công việc của họ chỉ là thiết kế layout, còn lập trình viên sẽ thực hiện các xử lý business logic của ứng dụng. Do đó nhu cầu cho việc tách rời phần design giao diện và phần lập trình được đặt ra để tăng hiệu quả cho quá trình làm phần mềm.
- Có một yêu cầu khác được đặt ra như sau: những thao tác trên giao diện thông thường sẽ gồm có hai phần: hiển thị và cập nhật. Thành phần hiển thị sẽ lấy dữ liệu từ nơi lưu trữ, định dạng lại nếu cần thiết và hiển thị lên màn hình. Khi người sử dụng thực hiện một số thao tác, những gì thay đổi sẽ được thành phần cập nhật gọi thành phần xử lý business logic để cập nhật các thay đổi đó xuống nơi lưu trữ. Như vậy thành phần hiển thị sẽ tự nó thực hiện việc lấy thông tin, trong khi những thao tác của người dùng sẽ được xử lý bởi một thành phần khác.
- Trong các ứng dụng Web, khi bạn click vào một link trên 1 trang, một thao tác ứng với link đó sẽ được thực hiện đồng thời một trang mới sẽ được hiển thị. Trong nhiều trường hợp, trang web cần hiển thị sau cùng sẽ không liên quan trực tiếp đến thao tác được gọi khi click vào link ở trang trước. Ví dụ: trong những trang Web mua bán trực tuyến, khi muốn xem danh sách những món hàng mình muốn mua trước khi thanh toán, bạn sẽ click vào phần giỏ hàng. Một danh sách những món hàng sẽ hiện ra kèm với các link hoặc button xóa chúng khỏi giỏ hàng. Nếu bạn đổi ý và muốn bỏ đi một món nào đó thì bạn sẽ click vào link hoặc button tương ứng. Sau đó, giỏ hàng sẽ lại hiện ra với danh sách những món hàng mới mà không có món bạn vừa xóa. Vì vậy, ứng dụng phải hiển thị lại cùng 1 trang với cùng một danh sách nào đó sau khi thực hiện hai thao tác khác hẳn nhau trong cùng một HTTP request. Vậy có một yêu cầu là nhiều xử lý phức tạp sẽ được thực hiện trong cùng một request.
- Ngày nay, giao diện của một ứng dụng nên được độc lập với thiết bị. Nếu bạn muốn ứng dụng Web của mình có thể được hiển thị nhanh và đẹp trên các thiết bị di dộng thì bạn phải sửa đổi nhiều ở phần giao diện và chắc chắn là những business logic sẽ không cần thay đổi gì cả. Một sự tách biệt rõ ràng giữa hai thành phần này sẽ giúp bạn đạt được yêu cầu đó vài giảm thiểu những rủi ro khi phải thay đổi business logic do sai lầm khi thiết kế lúc đầu. Vậy dẫn đến yêu cầu về thiết kế ứng dụng để dễ dàng hỗ trợ nhiều dạng thiết bị khác nhau chứ không riêng gì máy tính.
- Và cuối cùng, để phần mềm của bạn có thể được test một cách toàn diện đôi khi không khả thi và rất mất thời gian. Hiện nay người ta có thể sử dụng Unit Test để test các lớp business logic nhanh chóng chính xác và tự động trong hầu hết trường hợp. Vì thế càng làm cho những xử lý tách rời khỏi phần giao diện sẽ giúp chương trình của bạn dễ viết code test hơn. Vậy yêu cầu thiết kế ứng dụng cho dễ test bằng code cũng được đặt ra.
MVC sẽ đạt được mọi yêu cầu trên:
- Mẫu thiết kế Model-View-Controlller (MVC) tách rời phần dữ liệu domain, module hiển thị và những xử lý thao tác của người dùng thành ba nhóm lớp (class) riêng biệt:
Model: là những gì liên quan đến dữ liệu của ứng dụng. Model sẽ chịu trách nhiệm thao tác trực tiếp với database như truy xuất, cập nhật, thêm mới. Model sẽ lấy thông tin và trả về cho View, nó cũng sẽ chịu trách nhiệm thông báo cho Controller những thay đổi dữ liệu nếu có. Bạn có thể xem Model bao gồm các lớp DAL (Data Access Layer) và các lớp
[Domain](http://en.wikipedia.org/wiki/Domain_model).
View: View sẽ chịu trách nhiệm hiển thị thông tin như tên của nó. Ta có thể xem View như các trang web, hoặc các form trong ứng dụng windows.
Controller: là những lớp sẽ lắng nghe những thao tác chuột và bàn phím từ người dùng, nó sẽ tác động đến Model và View để thay đổi khi cần thiết.
Hình dưới mô tả mối quan hệ giữa Model, View và Controller, Model sẽ không biết gì về View và
Controller.
![cssbody=[boxHoverBody] cssheader=[boxHoverHeader] header=[Hình gì dây -,- ?] body=[Quan hệ giữa Model View và Controlller, nguồn của MSDN] Model View Controller Class Structure](http://msdn.microsoft.com/en-us/library/ms978748.des_MVC_Fig01%28en-us,MSDN.10%29.gif)
Hình: MVC Class Structure
- Theo như hình trên thì ta thấy cả View và Controller đều phụ thuộc và có thể gọi đến Model. Tuy nhiên, Model lại hoàn toàn độc lập với View và Controller. Điều này là một trong những lợi ích chính của mô hình MVC khi tách rời các thành phần Model View và Controller. Sự độc lập của Model giúp chúng ta build và viết code test cho nó mà không ảnh hưởng hoặc phụ thuộc đến những lớp hiển thị. Ngoài ra, sự tách rời View và Controller ra hai nhóm lớp như trên là một thuận lợi thứ hai đối với những ứng dụng có nhiều người dùng. Ví dụ như trong một số cách làm, người ta có thể lập trình phần kiểm tra quyền (Role) ngay trong phần xử lý giao diện. Khi theo cách làm MVC, người ta sẽ phải tách riêng phần kiểm tra quyền ra khỏi phần hiển thị và nó hoàn toàn thuận lợi khi cần sửa đổi hoặc thêm những trang mới.
Những lợi ích về test khi áp dụng MVC
- Sự dễ dàng trong viết code test là một thuận lợi khi áp dụng MVC. Test những component của chương trình trở nên rất khó khăn khi chúng phụ thuộc chặt chẽ vào nhau, đặc biệt đối với những thành phần giao diện. Để test giao diện của một phần mềm, tất nhiên bạn phải qua các bước cài đặt và đôi khi điều đó trở nên rất mất thời gian khi chỉ để test một chức năng đơn giản. Tệ hơn khi xảy ra lỗi, chúng ta sẽ rất khó để phát hiện lỗi ở phần nào. Đó là lý do tại sao chia nhỏ các thành phần chức năng là một trong những chiều hướng chính của các thiết kế quan trọng. MVC chia nhỏ các vấn đề như lưu trữ, hiển thị và cập nhật dữ liệu thành 3 nhóm components, những component này có thể được test độc lập với nhau.
- Ngoài vấn đề về sự phụ thuộc, giao diện của phần mềm cũng rất phức tạp khi muốn test. Người ta thường sử dụng người thật để test giao diện, hoặc sẽ phải viết những script test để giả lập những thao tác của con người. Để viết những script này thường rất mất thời gian và phức tạp. MVC KHÔNG giải quyết được vấn đề về test giao diện, NHƯNG nó tách rời phần dữ liệu Model ra khỏi những xử lý hiển thị và cho phép MODEL có thể được test độc lập với phần hiển thị và điều đó sẽ giảm thiểu những test case liên quan đến giao diện.
Ý kiến của Nguyễn Thoại:
- Tôi đã không dịch và đưa vào những dạng biến đổi của mẫu MVC vào bài này vì không muốn các bạn cảm thấy rối thêm, cũng không đưa vào những lợi ích và giới hạn của MVC. Lợi ích thì tất nhiên đã được đề cập tới ở trên nên cũng không cần tổng kết lại làm gì, còn giới hạn chính là tính phức tạp. Cũng như những bài viết trước, các Pattern luôn phức tạp nhưng khi chịu khó một chút thì về sau sẽ được những lợi ích lớn.
- Các bạn có thể đặt câu hỏi: áp dụng MVC vô ASP.NET như thế nào. Có ví dụ code sample nào không. Xin thưa là có trang ví dụ ở
[đây](http://msdn.microsoft.com/en-us/library/ms998540.aspx), nhưng cá nhân tôi vẫn còn nghi ngờ tính đúng đắn của nó. Sắp tới, tôi sẽ viết thêm một số bài nữa liên quan đến việc áp dụng MVC trong.NET để tìm hiểu những vấn đề tôi còn nghi ngờ. Trong bài viết này không có ví dụ vì tôi sẽ dành phần code sample cho các bài sau. Hi vọng qua bài dịch này các bạn có được khái niệm MVC là cái gì, và lợi ích của nó như thế nào và khoan hãy nghĩ đến cách áp dụng. Cũng giống như những pattern khác (ở các bài viết sau), MVC được nghĩ ra với mục đích tách rời các thành phần quan trọng trong ứng dụng để tăng tính dễ bảo trì, dễ test tự động và khả năng sử dụng lại. Cùng một mục đích như vậy nhưng các mẫu pattern khác như MVP sẽ có cách thực hiện và cách cài đặt khác. ![50 :bbpraroi:](http://igame.vn/f/images/smilies/BBP_smilies/50.gif)
Liệu mô hình ASP.NET của Microsoft với các trang aspx và code behind tách rời có phải là một implement MVC? Ở bài
[sau](http://nthoai.blogspot.com/2008/06/aspnet-va-mvc-framework.html)tôi sẽ trả lời câu hỏi đó và giới thiệu khái quát về một framework MVC Framework cho ASP.NET.
##
Posted On Friday, June 13, 2008 at
at
[Phỏng vấn 2 mẫu thiết kế Abstract Factory và Factory Pattern](http://nthoai.blogspot.com/2008/06/abstract-factory-and-factory-method.html)
[6:01 PM](http://nthoai.blogspot.com/2008/06/abstract-factory-and-factory-method.html)by Van Nguyen [](https://www.blogger.com/post-edit.g?blogID=3978293580246860892&postID=3735657099004199699&from=pencil)
Nguyễn Thoại: Chà chà, chào hai anh, đây là lần đầu tiên blog của iem phỏng vấn hai anh, hai anh cảm thấy thế nào.
Factory Method: Tôi ko biết sao hay bị gộp chúng với cha Abstract Factory. Đều là factory pattern không có nghĩa chúng tôi không được có những buổi phỏng vấn riêng.
![4 :bbpcaycu:](http://igame.vn/f/images/smilies/BBP_smilies/4.gif)
Nguyễn Thoại: Ấy ấy, đừng tự ái, em muốn phỏng vấn cả hai anh cùng nhau để giúp đọc giả phân biệt được ai là ai. Hai anh có nhiều điểm giống nhau, và em có nghe vài phàn nàn rằng người ta thỉnh thoảng bị rối và không thể phân biệt được 2 người.
Abstract Factory: Ừ đúng đấy, đã có lúc tôi bị nhầm lẫn là cha Factory Method, và tôi biết ổng cũng bị giống như tôi. Hai tụi tôi đều giỏi trong việc giảm sự phụ thuộc giữa chương trình với những cài đặt cụ thể; nhưng mỗi người chúng tôi lại có những cách làm riêng nên thỉnh thoảng dân lập trình lại cảm thấy rối và không thể xác định được phải dùng cách nào.
![17 :bbpcuoi3:](http://igame.vn/f/images/smilies/BBP_smilies/17.gif)
Factory Method: Ấy, người ta vẫn phân biệt được tôi mà. Nói chung, tôi dùng các lớp để tạo ra products, còn cha dùng những đối tượng; hai cách đó hoàn toàn khác nhau nhé.
Nguyễn Thoại: Ừ em có tìm hiểu về hai anh rồi mà vẫn còn rối đây này, anh có thể nói thêm về khoản này không, anh Factory Method?
![Big Smile :big_smile:](http://igame.vn/f/images/smilies/popo/big_smile.gif)
Factory Method: Ok, Cả cha Abstract Factory và tôi đều tạo ra các products, các objects, đó là việc chúng tôi phải làm. Nhưng tôi làm nhờ vào sự kế thừa (inheritance) …
Abstract Factory: … còn tôi làm nhờ vào sự kết hợp các đối tượng.
Factory Method: Đúng thía, nghĩa là nếu muốn tạo ra các đối tượng bằng cách Factory Method, người ta cần phải extend một lớp và override lại hàm tạo “factory method”.
Nguyễn Thoại: …rồi factory method sẽ làm cái gì?
Factory Method: Tất nhiên là tạo ra 1 object roài, anh đã từng viết bài về tôi mà giờ còn hỏi hả. Ý tưởng của tôi, Factory Method Pattern, là sẽ sử dụng các lớp con để sinh ra 1 đối tượng mong muốn. Bằng cách đó, người dùng sẽ chỉ cần biết đến lớp trừu tượng như gia cầm, và các lớp con cụ thể sẽ lo về các kiểu gà, kiểu vịt, kiểu ngan. Vì vậy, nói theo cách khác, tôi giúp chương trình độc lập với các kiểu (type) cụ thể đó.
![29 :bbpskien:](http://igame.vn/f/images/smilies/BBP_smilies/29.gif)
Abstract Factory: Ý tưởng của tôi cũng giống giống vậy đó, nhưng chỉ là làm theo một cách khác…
Nguyễn Thoại: Tiếp đi anh Abstract Factory … vừa rồi anh có đề cập đến cách kết hợp các đối tượng?
Abstract Factory: Ờ,cách của tôi thế này: Tôi tạo ra một kiểu trừu tượng (
[abstract type](javascript:void();)) để dùng vào việc tạo ra một nhóm những products khác. Khi đó, những lớp con của kiểu trừu tượng sẽ xác định cách tạo ra các products này. Để áp dụng được ý tưởng của tôi, bạn phải tạo ra một instance của một trong các lớp con trên (instance này là 1 factory) và đưa nó vào chỗ cần thiết trong code. Vì thế, giống như Factory Method, những nơi sử dụng factory của tôi sẽ hoàn toàn độc lập với những produtcts cụ thể.
Nguyễn Thoại: Oh yè, tôi biết rồi, một lợi ích nữa của cách này là anh đã nhóm các products tương tự nhau lại, có đúng không?
Abstract Factory: Đúng roài cưng à.
![3 :bbpchao:](http://igame.vn/f/images/smilies/BBP_smilies/3.gif)
Nguyễn Thoại: Bây giờ người ta cần bổ sung thêm một product nữa vô nhóm các products mà anh có thể tạo ra. Vậy không cần phải thay đổi gì hết huh?
Abstract Factory: Hèm, trường hợp này thì tôi phải thay đổi chút ít, nhiều người không thích lắm ở điểm này.
Factory Method: hĩ hĩ
![17 :bbpcuoi3:](http://igame.vn/f/images/smilies/BBP_smilies/17.gif)
Abstract Factory: Cười gì cha nội?
![31 :bbpbuon:](http://igame.vn/f/images/smilies/BBP_smilies/31.gif)
Factory Method: Cười chứ sao ko cười, làm vậy quá mất công chứ gì nữa. Cha thay đổi có nghĩa là người dùng phải đi mà đổi tất cả các lớp con roài? (các lớp con ở đây là các factories)
Abstract Factory: Đúng, nhưng cần phải làm như vậy vì tôi có khả năng tạo ra nhiều kiểu product khác nhau, trong khi người ta xài cách của anh khi họ cần tạo ra một kiểu product nào đó thôi, vì thế anh không có cồng kềnh như tôi, anh chỉ cần một method duy nhất.
![23 :bbpnodo:](http://igame.vn/f/images/smilies/BBP_smilies/23.gif)
Nguyễn Thoại: Anh Abstract Factory bớt nóng, tôi nghe đồn rằng anh thường sử dụng nhiều hàm factory method theo cách của anh Factory Method để tạo các đổi tượng bên trong những factories của anh, điều đó có đúng ko?
Abstract Factory: Đúng đó em, anh thừa nhận điêu này. Những lớp factory con thường dùng các factory method để tạo các products tương ứng. Trong trường hợp này, các factory method được dùng thuần túy để tạo ra các products.
Factory Method: … còn tôi dùng hàm factory method để tạo ra product cụ thể mà người ta muốn, người dùng sẽ không biết cái gì được tạo ra, họ chỉ cần gọi hàm.
Nguyễn Thoại: Dường như hai anh làm rất tốt công việc của mình. Tôi chắc rằng đọc giả đã có được lựa chọn của mình. Sau cùng, những factories của 2 anh quả thật rất hữu ích, đọc giả của tôi sẽ sử dụng chúng trong các tình huống thích hợp nhất. Các anh đều đóng gói (encapsulate) quá trình tạo ra đối tượng để giúp chương trình độc lập và giảm phụ thuộc với những kiểu cụ thể, việc làm này thật đáng tuyên dương. Cám ơn hai anh, hai anh có lời gì trước khi chào tạm biệt đọc giả không ạ?
![09 :bbpbtay:](http://igame.vn/f/images/smilies/BBP_smilies/09.gif)
Abstract Factory: Cám ơn. Hãy nhớ đến tôi, Abstract Factory, và sử dụng tôi bất cứ khi nào bạn cần cùng một lúc
[tạo ra nhiều loại products](javascript:void();), và khi bạn muốn chắc chắn những nơi sử dụng sẽ không cần biết đến những lớp cụ thể khi cần làm việc này. ![29 :bbpskien:](http://igame.vn/f/images/smilies/BBP_smilies/29.gif)
Factory Method: Còn tôi là Factory Method, hãy sử dụng tôi để làm cho chương trình của bạn độc lập với những lớp cụ thể mà bạn cần
[tạo 1 đối tượng](javascript:void();), hoặc khi bạn không biết sau này sẽ cần đến những lớp con nào nữa. Khi cần sử dụng tôi, hãy tạo tạo ra subclass (1 factory implement 1 kiểu abstract) và implement factory method cho chính bạn. ![50 :bbpraroi:](http://igame.vn/f/images/smilies/BBP_smilies/50.gif)
(Page 158-162 of Head First – Design Pattern)
##
Posted On Monday, June 9, 2008 at
at
[10 điều bạn sẽ phải chấp nhận nếu làm việc trong ngành IT](http://nthoai.blogspot.com/2008/06/10dieu-toi-te-khi-lam-nganh-it.html)
[10:25 PM](http://nthoai.blogspot.com/2008/06/10dieu-toi-te-khi-lam-nganh-it.html)by Van Nguyen [](https://www.blogger.com/post-edit.g?blogID=3978293580246860892&postID=8263160920864936674&from=pencil)
1/Ở những ngành khác thì nữ vừa nhiều vừa xinh đẹp, ngành IT thì ngược lại.
- Điều này thì tự ai đã và đang học CNTT ở các trường ĐH thì biết rồi. Không riêng gì trong ngành CNTT mà trong những ngành kĩ thuật thì số lượng nữ giới cũng rất thấp. Tuy nhiên so với các ngành như Cơ Khí, Điện Tử thì tỉ lệ nữ giới học CNTT cũng còn khá cao. Nhưng khi học xong và đi làm thì tỉ lệ nữ giới làm lập trình lại càng giảm, đa số các bạn âý làm QC, DB, BA, … .Ở nhóm tôi khoảng 20 người chỉ có mỗi 2 dev, 2 QC là nữ, còn lại toàn đực rựa. Tuy nhiên cũng an ủi là trong cty vẫn có nhiều chị em xinh lắm hĩ hĩ nhưng không làm ở bộ phận lập trình. Thiếu thốn này thường dẫn đến điều thứ 2.
2/Xác suất phải lập gia đình với người cùng ngành rất cao.
- Nghe có vẽ như hơi mâu thuẫn, đã ít nữ thì làm sao xác suât này cao được. Thế nhưng những người làm IT thì kể từ lúc đi làm thường nhìn máy tính nhiều hơn giao tiếp với ngưòi thật nên sẽ ăn nói kém, giao tiếp kém, cơ hội gặp những phụ nữ khác ngành cũng ít hơn những người làm ở ngành khác nên trời kiu ai nấy dzạ
. Tuy nhiên chúng ta thường quen nửa cuộc đời của mình từ trong trường ĐH hoặc ở nơi làm việc nên điều này có thể cũng đúng với những người làm ở các ngành khác. Dù những người làm ở ngành IT chúng ta thường được cái thông minh, nhưng 2 người thông minh thì sinh con ra chưa chắc thông minh nên đây cũng là một hiểm họa tiềm tàng. Hơn nữa, 2 người cùng ngành IT giờ gặp nhau ngoài nói chuyện bug, code thì chán chết. Phải chi chàng kể chuyện bug, nàng hỏi bug là gì huh anh thì có thú vị ko nhẩy
3/Bạn sẽ bị yếu đi.
- Điều này không có gì phải bàn cãi. Thứ nhất ngồi nhiều … thì bụng và mông sẽ to. Bụng càng to càng khó làm... nhiều thứ và tuổi thọ giảm. Ngồi nhiều thì còn có thể gây ra nhiều bệnh tế nhị khác. Ngoài 2 cái bệnh đằng trước và đằng sau thì còn bệnh ở mắt do nhìn quá nhiều. Đa số người làm IT xung quanh ta đều bị cận thị. Gõ máy tính thường xuyên sẽ ảnh hưởng đến tim, rê chuột thường xuyên sẽ thoái hóa cổ tay. Ngoài ra cột sống sẽ bị chai hoặc mọc gai do cái tật ngồi nhiều hơn đứng của công việc này. Ngoài ra, những ngưòi làm IT thường có thói quen làm việc, sinh hoạt ban đêm. Cái giờ đáng lẽ những người trong những ngành khác làm cái việc mà ai cũng biết là việc gì đấy thì người trong ngành IT lại gõ gõ, click click và nó thường gây ra bệnh đau bao tử. Tay chân ít hoạt động nên con người thường cảm thấy mỏi mệt, lười vận động, thậm chí cả lười tắm nên đừng thắc mắc tại sao một số SV ở ngành IT thường hay ở dơ. Nói chung làm cái nghề này nếu ko chịu sinh hoạt … điều độ thì đừng mong thọ.
4/Bạn sẽ thường xuyên bị làm phiền bởi người quen.
- Đây là một trong những điều tệ hại và khó chịu nhất mà bạn sẽ gặp phải. Những người quen của bạn, bạn bè, bà con, cô dì chú bác, bạn của ba của mẹ sẽ gọi điện nhờ bạn giúp khi họ không nghe nhạc được, máy khởi động chậm, không thấy webcam, không biết đưa hình lên blog. Kiểu hỗ trợ kĩ thuật miễn phí này bạn nên cẩn thận vì nó sẽ thường xuyên lặp đi lặp lại. Một số trường hợp bạn sẽ được trả công nhưng theo tôi bạn chẳng cần số tiền chả đáng đổ xăng đó làm gì so với thời gian bạn phải chạy đi chạy lại. Đa số những người nhờ bạn giúp sẽ mong muốn được hỗ trợ miễn phí và tôi chắc chúng ta sẽ không vui gì về điều đó. Vì vậy hãy tập nói không khi có thể.
5/Bạn sẽ phải thường xuyên về trễ mà không được trả tiền.
- Đặc thù của ngành IT là công việc thường không thể tính chính xác bằng giờ. Có nghĩa là không phải cứ 1 lượng thời gian nào đó thì sẽ làm xong một công việc. Thuờng thì chúng ta sẽ phải ở lại thêm 1h, 2h để làm nốt công việc của mình nếu bạn là người có trách nhiệm. Nhưng dù có trách nhiệm hay không thì khi công việc chưa xong mà đã gần đến deadline thì bạn vẫn phải ở lại để hoàn thành những gì còn dở dang, và tất nhiên không có xu nào cả.
6/Bạn sẽ thường xuyên bị stress.
- Khi làm việc với những project lớn nhiều người, công việc sẽ theo flow rõ ràng, bạn làm ngưòi khác test, manager dí, và khi đến những ngày cuối cùng là lúc bạn làm việc nhiều nhất. Phải suy nghĩ nhiều, cơ thể mệt mỏi thiếu ngủ cộng với căng thẳng khi làm việc sẽ khiến nhiều người bị stress. Theo một số điều tra thì thủ phạm gây stress nhiều nhất là email. Khi phải đọc khoảng 100 email một ngày thì người hiền lành cũng trở nên gắt gỏng. Bởi vậy những người làm IT thường hay khó chịu đột xuất.
![cssbody=[boxHoverBody] cssheader=[boxHoverHeader] header=[Hình gì đây :D?] body=[Đây là hình minh họa về Lập Trình Viên khi thất nghiệp] 10 điều tồi tệ khi làm trong ngành CNTT](http://img241.imageshack.us/img241/1006/code4foodwz5.jpg)
7/Lương bạn sẽ tăng rất chậm.
- Làm IT lương khởi điểm sẽ khá cao so với một số ngành nhưng tốc độ tăng sẽ chậm và ít đột biến. Thường thì những người làm IT sẽ giải quyết nhu cầu tăng lương bằng cách nhảy sang công ty khác. Cho nên những bạn sinh viên mới ra trường nên tìm một công ty có lương khởi điểm khá tốt vì thông thường chu kì tăng lương sẽ là từng năm và khi lạm phát 2 chữ số mà tăng lương dưới 15% + với trả lương bằng tiền Việt thì hơi bị đuối. Tốt nhất nên tìm hiểu những anh chị đi trước hoặc xác định mục tiêu của mình để tìm hướng đi khác vì làm lập trình chay khó làm giàu lắm.
![17 :bbpcuoi3:](http://igame.vn/f/images/smilies/BBP_smilies/17.gif)
8/Không phải lúc nào cũng được làm công việc ưa thích.
- Bạn từng nghĩ sẽ áp dụng những kĩ thuật tiên tiến nhất của các ngôn ngữ lập trình hiện đại, sẽ học hỏi những công nghệ mới nhất và làm việc với những chuyên gia đầy kinh nghiệm trong lĩnh vực CNTT nhưng thường thì không phải như vậy. Ở những công ty càng lớn thì sẽ càng có những project kì lạ kiểu như chuyển nguyên một chương trình từ VB6 sang C#, hoặc từ một ngôn ngữ rất cổ xưa sang C#. Tuy đòi hỏi kiến thức lập trình trên 2 ngôn ngữ, khả năng đọc hiểu code nhưng nói chung công việc như vậy khá nhàm chán và tôi nghĩ chẳng ai muốn theo đuổi lâu dài. Đôí vơí những project lớn thì chi phí cho công nghệ mới là một trong những vấn đề quan tâm của khác hàng. Bạn muốn sử dụng SQL 2005 nhưng khách hàng sẽ nói “No” khi họ đã có licence cho SQL 2000 và không muốn bỏ tiền mua thứ mới. Bạn muốn sử dụng ASP.NET để làm website cho khách hàng nhưng họ cho rằng PHP sẽ rẻ hơn vì không tốn nhiều licence cho máy chủ WINDOWS. Bạn muốn dùng
[ORM tool](http://nthoai.blogspot.com/search/label/ORM)để tiết kiệm thời gian lập trình nhưng khách hàng nhất quyết bạn phải dùng Store Procedure và viết code gọi bằng C# vì làm vậy nhanh hơn 30 milisecond khi gọi 10000 query. Nói chung khách hàng là thượng đế và chúng ta phải nghe theo. ![39 :bbpcuoi5:](http://igame.vn/f/images/smilies/BBP_smilies/39.gif)
9/Khi nhảy việc cũng không đơn giản, có khi phải bắt đầu lại từ đầu.
- Lương bạn hiện không cao trong khi lương tụi bạn đã gấp 2 mình. Đề nghị xếp tăng lương thì sao, liệu xếp có chịu tăng cho mình gấp rưỡi không chứ đừng nói gấp 2. Tại sao không nhảy việc khi vừa có thể có lương cao hơn lại có thể học hỏi nhiều cái mới và làm quen với nhiều con người mới. Nhưng khi nhảy việc là lúc bạn phải chấp nhận làm lại từ đầu. Có thể bạn có nhiều kinh nghiệm từ công ty cũ nhưng sang môi trường mới sẽ không có đất để dụng võ. Và khi chưa biết gì hết thì bạn sẽ là một newbie và chấp nhận làm lại từ con số không. Vì vậy theo tôi nếu tìm được một công việc mới lương gấp rưỡi trở lên thì hãy nhảy, còn không ở lại cho lành và chờ thời cơ.
![50 :bbpraroi:](http://igame.vn/f/images/smilies/BBP_smilies/50.gif)
![cssbody=[boxHoverBody] cssheader=[boxHoverHeader] header=[Hình gì đây -,- ?] body=[Lập trình viên muốn làm giàu không dễ chút nào] 10 điều tồi tệ khi làm trong ngành CNTT](http://img156.imageshack.us/img156/5187/moneyox6.jpg)
10/Rất khó để tự kinh doanh riêng về IT
- Tỉ lệ thất bại cao của các công ty IT mới thành lập đã nói lên điều này. Nếu bạn làm IT khi muốn mở một công ty làm phần mềm thì rất khó. Một trong những khó khăn lớn nhất là sự cạnh tranh. Bạn sẽ khó mà kiếm được project từ những khách hàng lớn khi công ty của bạn chưa hề có tên tuổi hoặc không có công ty mẹ đỡ đầu. Nếu chấp nhận làm dự án nhỏ thì có vô khối công ty đã làm như vậy. Những công ty may mắn sống sót nhờ vào dạng những project nhỏ này họ có thể thực hiện website trong vòng một tuần nhờ tái sử dụng những cái đã có từ project cũ và chúng ta sẽ khó mà cạnh tranh nỗi khi kinh nghiệm tổ chức và kinh doành là con số 0. Giỏi lập trình không có nghĩa là giỏi quản lý và càng không có nghĩa là giỏi kinh doanh nên làm công ty về IT không hề đơn giản. Và khi không có một project nào trong khi phải nuôi đội quân cỡ 5 người, cộng với trả tiền điện, tiền mặt bằng trong vòng 3 tháng là bạn phải nghĩ đến chuyện giải tán.
![3 :bbpchao:](http://igame.vn/f/images/smilies/BBP_smilies/3.gif)
- Đó là 10 trong khá nhiều những khó khăn, thiệt thòi, gian khổ của ngành IT. Làm IT không đơn giản và không sướng chút nào, càng không dễ làm giàu. Thế nên những ai nghĩ rằng làm IT sướng và lương cao thì nên xem lại và cân nhắc nêú như đang chọn nghề cho mình. Đây là những ý kiến chủ quan của tôi, có thể có nhiều ý kiến trái ngược và bổ sung khác cho nên rất mong được sự chia sẽ từ các bạn. Mọi comment khen ngợi, chửi bới đều hoan nghênh và vui lòng post trực tiếp ở entry này hoặc ở
[link này](http://www.blogger.com/comment.g?blogID=3978293580246860892&postID=8263160920864936674). ![Byebye :byebye:](http://igame.vn/f/images/smilies/popo/byebye.gif)
##
Posted On Friday, June 6, 2008 at
at
[Sử dụng Adapter Pattern Trong Lập Trình Hướng Đối Tượng](http://nthoai.blogspot.com/2008/06/su-dung-adapter-pattern-trong-lap-trinh.html)
[4:57 PM](http://nthoai.blogspot.com/2008/06/su-dung-adapter-pattern-trong-lap-trinh.html)by Van Nguyen [](https://www.blogger.com/post-edit.g?blogID=3978293580246860892&postID=8757846962963344299&from=pencil) ![cssbody=[boxHoverBody] cssheader=[boxHoverHeader] header=[Hình gì đây :D?] body=[Đây là hình minh họa về Adapter trong đời sống] Adapter Pattern Samble In Real Life](http://img524.imageshack.us/img524/5052/dcadaptervv1.jpg)
I/ Giới thiệu.
- Khái niệm Adapter đã xuất hiện từ rất lâu và được sử dụng rất nhiều trong cuộc sống. Thiết bị điện tử của bạn không thể sạc pin bằng điện 220V mà phải thông qua một bộ chuyển, biến điện 220 thành 12V. Bạn có một con chuột với Jack cắm USB nhưng máy đã hết chỗ cắm, người bán tặng bạn thêm 1 bộ chuyển từ USB sang PS2 để giải quyết vấn đề trên…Đó là những ví dụ hay gặp nhất về Adapter, và vì chúng quá thông dụng nên ít ai ngờ đến cái mình đang sử dụng hằng ngày lại là một kiểu adapter nào đó. Từ lâu, khái niệm Adapter đã được 4 đại ca về Design Pattern đưa vào lĩnh vực làm phần mềm và nó tỏ ra có ích không kém. Tôi dám chắc là các bạn ai đều cũng từng sử dụng đến Adapter trong cuộc sống của mình, thế thì tại sao lại không sử dụng nó trong lập trình để giải quyết những vấn đề tương tự
![29 :bbpskien:](http://igame.vn/f/images/smilies/BBP_smilies/29.gif)
![cssbody=[boxHoverBody] cssheader=[boxHoverHeader] header=[Hình gì đây :D?] body=[Đây là hình minh họa về Adapter trong đời sống] Adapter Pattern Samble In Real Life](http://img524.imageshack.us/img524/2869/audiojack2si7.png)
![cssbody=[boxHoverBody] cssheader=[boxHoverHeader] header=[Hình gì đây :D?] body=[Đây là hình minh họa về Adapter trong đời sống] Adapter Pattern Samble In Real Life](http://img524.imageshack.us/img524/4638/audiojackwf4.jpg)
![cssbody=[boxHoverBody] cssheader=[boxHoverHeader] header=[Hình gì đây :D?] body=[Đây là hình minh họa về Adapter trong đời sống] Adapter Pattern Samble In Real Life](http://img524.imageshack.us/img524/254/powerjackip0.gif)
![cssbody=[boxHoverBody] cssheader=[boxHoverHeader] header=[Hình gì đây :D?] body=[Đây là hình minh họa về Adapter trong đời sống] Adapter Pattern Samble In Real Life](http://img524.imageshack.us/img524/4989/usbjacklf1.jpg)
-
[Inheritance](http://en.wikipedia.org/wiki/Inheritance_%28computer_science%29)là một trong 3 nguyên tắc cơ bản của lập trình hướng đối tượng. Khi cần xây dựng một lớp dựa trên một hoặc nhiều lớp hay interface có sẵn bạn chỉ cần khai báo lớp mới kế thừa lớp cũ và có thể viết thêm những method, attribute của mình tùy thích. Tuy nhiên sẽ có lúc tính kế thừa của OOP sẽ không sử dụng được. Thật sự là có nhiều trường hợp như vậy mà tôi đã từng gặp phải. Giả sử bạn cần mở rộng một lớp nhưng lớp đó là lớp seal (không cho kế thừa) thì inheritance chắc chắn không sử dụng được rồi. Một ví dụ khác là khi bạn cần kết hợp nhiều thứ có sẵn để làm ra một lớp mới sử dụng lại những thứ đó. Như các bạn biết C# và Java không hỗ trợ đa kế thừa, chúng ta không thể nào kế thừa từ 2 lớp có sẵn được. Như vậy nếu bạn đã có một lớp để tìm ước số chung lớn nhất của hai số tự nhiên, một lớp để cộng hai phân số, và khi dùng adapter để kết hợp hai thứ có sẵn đó bạn sẽ làm được một lớp có khả năng cộng hai phân số với nhau với kết quả phép cộng là phân số đã tối giản. ![08 :bbpnen:](http://igame.vn/f/images/smilies/BBP_smilies/08.gif)
- Như vậy, Adapter Pattern là một design pattern, nó còn được gọi là Wrapper Pattern biến đổi một lớp không thể sử dụng trực tiếp được thành một lớp mới có thể sử dụng. Trong một số trường hợp, Adapter Pattern còn được sử dụng để biến đổi dạng dữ liệu. Để tiết kiệm chỗ trong và giảm tính phức tạp trong database, nhiều giá trị string có thể được lưu thành một string duy nhất với kí tự phân cách đặc biệt, mẫu Adapter sẽ chịu trách nhiệm tách các string đó ra thành array để nơi khác có thể sử dụng. Nhưng nói chung Adapter Pattern được sử dụng đúng nhất khi biến cái không thể thành cái có thể.
![50 :bbpraroi:](http://igame.vn/f/images/smilies/BBP_smilies/50.gif)
II/ Sử dụng Adapter Pattern như thế nào?
- Theo tôi nói ở trên, Adapter Pattern thường được dùng để biến cái không thể thành cái có thể, biến lớp không thể sử dụng thành một lớp mới có thể sử dụng. Tuy nhiên, Adapter Pattern còn được dùng để biến những lớp có sẵn thành một thứ khác dễ và tiện sử dụng hơn. Vì vậy có hai cách thiết kế và áp dụng Adapter Pattern trong lập trình, ở một số tài liệu Design Pattern, hai cách này được gọi là Object Adapter Pattern và Class Adapter Pattern. Một số trang còn gọi là Inheritance-Way và Composition-Way. Nói chung những cách gọi này đều dựa trên cách thiết kế lớp Adapter. Object Adapter Pattern hay Composition-Way là cách sử dụng một đối tượng thuộc về lớp chúng ta muốn biến đổi bên trong lớp Adapter. Trong khi đó, ClassAdapterPattern hay Inheritance-Way là cách kế thừa từ lớp chúng ta muốn biến đổi hoặc mở rộng thêm.
III/ Ví dụ mẫu về Adapter Pattern
- Tôi sẽ lần lượt đưa 2 ví dụ thiết kế lớp về 2 cách này:
A. Object Adapter Pattern (Composition-Way)
- Để kiếm đủ tiền ăn nhậu, massage
![19 :bbpxtay:](http://igame.vn/f/images/smilies/BBP_smilies/19.gif)
![17 :bbpcuoi3:](http://igame.vn/f/images/smilies/BBP_smilies/17.gif)
B. Class Adapter Pattern (Inheritance-Way)
- Tôi đã rất mừng khi phát hiện ra rằng chỉ mất chút ít thời gian để làm cái BarChart. Nhưng khi đưa cho khách hàng, họ yêu cầu tôi phải sửa lại cái BarChart, phải cho người dùng thấy được số liệu khi rê chuột lên hình. Đúng là đồ free có khác, không khi nào dùng ngay được. Tôi đành phải thiết kế lại lớp ThoaiChart theo hướng khác. Bây giờ tôi sẽ inherit lớp CloseSourceCode.BarChart và override lại hàm hover chuột của nó. Thiết kế lớp như sau:
IV/ So sánh Adapter Pattern với các Design Patterns khác?
- Trong các Design Pattern thuộc nhóm
[Structural Design Pattern](http://en.wikipedia.org/wiki/Design_pattern_%28computer_science%29#Classification), có rất nhiều mẫu có thiết kế lớp tương tự nhau. Chúng ta nên nắm rõ ý nghĩa và trường hợp sử dụng của chúng để không nhầm lẫn và … để khi em trai em gái nó hỏi còn biết đường trả lời ![31 :bbpbuon:](http://igame.vn/f/images/smilies/BBP_smilies/31.gif)
• Với khả năng biến cái không thể thành có thể, Adapter Pattern làm cho 1 lớp có thể sử dụng được sau khi lớp đó đã được thiết kế xong trong khi
[Bridge Pattern](http://nthoai.blogspot.com/search/label/Bridge%20Pattern)làm điều đó trước khi lớp này được tạo ra.
•
[Bridge Pattern](http://nthoai.blogspot.com/search/label/Bridge%20Pattern)được nghĩ ra với ý tưởng tách rời những abstraction ra khỏi những implementation, và tạo tính độc lập cao giữa chúng. Trong khi đó, Adapter pattern đươc dùng để làm những lớp không liên quan (không cùng namespace, khác interface) có thể làm việc với nhau.
• Adapter Pattern về ý nghĩa sẽ biến đổi interface của một lớp, Proxy Pattern sẽ không đổi interface của một lớp và Decorator Pattern sẽ kế thừa và mở rộng dựa trên interface đó.
• Adapter Pattern khi dùng sẽ thay đổi interface của một đối tượng có sẵn để biến nó thành thứ có thể dùng được. Decorator Pattern sẽ phát triển thêm trên một đối tượng mà không làm thay đổi interface của nó
• Giống với Adapter Pattern, Façade Pattern có thể kết hợp nhiều xử lý vào một lớp mới đơn giản và gọn hơn , nhưng nó sẽ định nghĩa mới 1 interface trong khi Adapter Pattern tái sử dụng một interface (Trong ví dụ về các biểu đồ ở trên thì interface được tái sử dụng là IMyChart, không hề có một interface mới được tạo ra)
- Các bạn có thể tham khảo thêm những ví dụ code mẫu cho Adapter Pattern ở trang
[wiki](http://en.wikipedia.org/wiki/Wrapper_pattern). Ví dụ thứ hai ở trang này là biến đổi 1 lớp DList thành Stack dựa trên những xử lý có sẵn của DList mà không cần viết lại những xử lý phức tạp cho lớp Stack.
Tài liệu tham khảo:

Server: GSE

X-Content-Type-Options: nosniff

X-XSS-Protection: 1; mode=block


markdown:
THUẬT NGỮ
TRONG VĂN KIỆN
ĐẠI HỘI ĐẠI BIỂU
TOÀN QUỐC
LẦN THỨ XII
CỦA ĐẢNG
Tác giả: Quốc hội
Số trang: 220 trang - Giá tiền: 30.000 đồng
Xuất bản: Tháng 2-2017
Luật phá sản năm 2014 được Quốc hội nước Cộng hòa xã hội chủ nghĩa Việt Nam khóa XIII, kỳ họp thứ 7 thông qua ngày 19-6-2014 và có hiệu lực thi hành từ ngày 01-01-2015;...
Đọc thêm...
Số trang: 256 trang
Giá tiền: 41.000 đồng
Xuất bản: Tháng 1-2017
Cuốn sách giới thiệu toàn văn Nghị định của Chính phủ về xử phạt vi phạm hành chính trong lĩnh vực bảo vệ môi trường,...
Tác giả: Lương Đức Cường
Số trang: 324 trang - Giá tiền: 74.000 đồng
Cuốn sách liên hết, xâu chuỗi các quy định của pháp luật về một điều khoản của Luật khiếu nại năm 2011 sửa đổi năm 2013 và Luật tố cáo năm 2011 kết hợp với các quy định hướng dẫn thi hành luật để giúp bạn đọc tra cứu nhanh...
Tác giả: Bộ Tài chính
Số trang: 376 trang
Giá tiền: 67.000 đồng
Cuốn sáchThông tư số 133/2016/TT-BTC ngày 26-8-2016 của Bộ trưởng Bộ Tài chính hướng dẫn chế độ kế toán doanh nghiệp nhỏ và vừa...
Tác giả:TS. Luận Thùy Dương
Số trang: 216 trang -Giá tiền: 47.000 đồng
Xuất bản: Tháng 4-2017
Tác giả: Luật gia Trương Hồng Quang – Luật gia Nguyễn Bích Loan – Luật gia Vũ Hữu Trường Điền
Số trang: 752 trang -Giá tiền: 255.000 đồng
Tácgiả: Ban Tuyên giáo Trung ương
Số trang: 128 trang -Giá tiền: 16.000 đồng
Tác giả: Quốc hội
Số trang: 92 trang -Giá tiền: 20.000 đồng
Xuất bản: Tháng 3-2017
Tác giả: Ban Tuyên giáo Trung ương
Số trang: 112 trang -Giá tiền: 26.000 đồng
Tác giả: Báo Nhân Dân
Số trang: 346 trang -Giá tiền: 79.000 đồng
Số trang: 240 trang -Giá tiền: 28.000 đồng
Tác giả: Quốc Hội
Số trang: 604 trang -Giá tiền: 107.000 đồng
Tác giả: Đại tướng Võ Nguyên Giáp (Chủ biên)
Số trang: 404 trang -Giá tiền: 99.000 đồng
Xuất bản: Tháng 11-2016
Số trang: 232 trang -Giá tiền: 33.000 đồng

Server: HostVDC

P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"

Cache-Control: post-check=0, pre-check=0


markdown:
Phòng GD&ĐT Huyện Hướng Hoá Tỉnh Quảng Trị - ĐC: Khóm 3B, TT Khe Sanh, Huyện Hướng Hoá, Tỉnh Quảng Trị - ĐT: 053.3880514
Trang chủ
Giới thiệu
Chi bộ Đảng
Giới thiệu CBĐ
Hoạt động CBĐ
Phòng GD&ĐT
Giới thiệu PGDĐT
Hoạt động PGDĐT
Công Đoàn
Công đoàn Giáo dục
Công đoàn Cơ Sở
HĐ của CĐGD huyện
Tổ chức cán bộ
Tài chính - Kế hoạch
Mầm non
Giới thiệu chung MN
Các văn bản GDMN
Số liệu GDMN
Tiểu học
Giới thiệu chung GDT'H
Các văn bản GDT'H
Các Số liệu GDT'H
Trung học cơ sở
Giới thiệu chung về THCS
Các văn bản liên quan THCS
Các số liệu về SL-CL THCS
Lịch công tác
Lịch công tác tuần
Kế hoạch tháng
Thống kê số liệu
Năm học 2008 - 2009
Khuyến học
Các công văn KH huyện
Các hoạt động Khuyến học
Nghiên cứu - Trao đổi
SKKN Công tác quản lý
SKKN Giáo dục Mầm non
SKKN Giáo dục Tiểu học
SKKN Giáo dục THCS
Các bài viết
CÁC ĐỀ THI HSG-GVDG
KĐCL CSGD ĐA ĐANH GIA NGOAI
VB chỉ đạo Bộ-Sở
Văn bản Bộ GD
Văn bản Sở GD
Tập san vì sự TBPN
Tập san số 4 năm 2009
Tập san số 5 - 2011
TẬP SAN SỐ 6 - 2013
Góp ý
Văn bản Phòng GD&ĐT
VĂN BẢN CHUNG
VĂN BẢN MẦM NON
VĂN BẢN TIỂU HỌC
VĂN BẢN THCS
PHỎ CẬP GIÁO DỤC
Các báo cáo-KH PCGD
Kết quả PCGD
Các văn bản PCGD
CẢI CÁCH HÀNH CHÍNH
-----Website liên kết-------
Bộ Giáo Dục và Đào Tạo
Thư viện bài giảng điện tử
Sở GD&ĐT Tp Hà Nội
Sở GD&ĐT TT Huế
Sở GD&ĐT Tp HCM
Hội HSSV Việt Nam
---Các trang báo và tạp chí---
Báo Tiền Phong
Tạp chí CNTT - VT - TT
Báo Tuổi Trẻ
Báo Việt Nam NET
Báo Lao Động Việt Nam
Báo Công An Nhân Dân
Báo Nhân Dân
Báo Thanh Niên
Lượt truy cập:
730 KE HOACH TUYEN SINH 2014-2015
CT
Tin đã đưa
THONG TU 11/2014 Ngayf 18.4.2014 QUY CHE TUYEN SINH THCS -THPT
- 5/21/2014
987. HƯỚNG DẪN THI GVDG CÁC CẤP CỦA SỞ GD&ĐT QT ngày 30/8/2010
- 9/10/2012
Tiêu chuẩn đánh giá trường THCS, THPT ban hành theo Thông tư 13/2012
- 7/31/2012
Thông tư 13/2012 ngày 06/4/2012 Ban hành Quy định về tiêu chuẩn đánh giá trường THCS, THPT...
- 7/31/2012
Thông tư 58/2011 ngày 12/12/2011 Quy chế đánh giá xếp loại học sinh THCS
- 12/19/2011
Trở về
Tin mới đăng
PHÂN CÔNG NHIỆM VỤ VÀ CHỈ ĐẠO CỦA CB-CV PHÒNG GD&ĐT 2016-2017 (QĐ 62)
(10/6/2016)
QĐ 1765 UBND TINH BAN HÀNH KHUNG THỜI GIAN NĂM HỌC 2016-2017
(8/8/2016)
THÔNG BÁO CHỮ KÝ TRƯỞNG PHÒNG GD&ĐT HUYỆN
(6/15/2016)
SỐ 03 KẾ HOẠCH TRIỂN KHAI CÁC NHIỆM VỤ TRỌNG TÂM HKII 2015-2016
(1/6/2016)
QUYẾT ĐỊNH 185 BỔ SUNG, ĐIỀU CHỈNH PHÂN CÔNG CHỈ ĐẠO - CÔNG VIỆC CBCV PGD&ĐT TỪ 25.11.2015
(12/3/2015)
Bản quyền trang web thuộc phòng GD&ĐT Huyện Hướng Hoá - Tỉnh Quảng Trị
Phát triển bởi Trung Tâm Phát Triển Công Nghệ Thông Tin - Viễn Thông Quảng Trị
ĐC: 20 Trần Hưng Đạo - Đông Hà - Quảng Trị
ĐT: 053 3556911 -Website:
http://vnptquangtri.com.vn


markdown:
![ ](http://2.bp.blogspot.com/_Pk35hN4wTbg/SxZOECC9ICI/AAAAAAAAACU/DQj26qIwIGQ/s320/nl_cucmore.JPG)
Vâng, em biết, em biết. Lại hoa Cúc.
Em đã nói rồi: chúng sẽ còn mãi. Bốt thế này còn là thưa đấy, tình trạng thực tế còn có thể tồi tệ hơn.
Không có gì nhiều để nói về tấm ảnh này. Có thể chỉ đơn giản: "Nhìn này! Một bông hoa Cúc!"
Ps: Nếu bình luận nhiều hơn, có thể nói nó giống, có thể lắm, một quả núi.
Chưa có bạn nào ý kiến ý cò gì cả (không tính facebook).
## Giơ tay bi bô phát biểu bằng nick Google, WordPress...
## Bi bô bằng nick facebook, Yahoo...


markdown:
![ Hiếp dâm bạn gái cũ xinh đẹp khi chồng vừa mới qua đời](http://phimsexhot.net/wp-content/uploads/2016/11/hiep-dam-ban-gai-cu-xinh-dep-khi-chong-vua-moi-qua-doi.jpg)
Hiếp dâm bạn gái cũ xinh đẹp khi chồng vừa mới qua đời. Nghe tin chồng bạn vừa mới qua đời, cậu bạn cũ đến chia buồn, thấy cô phải một mình lo toan hậu sự gánh vác công việc quá mệt mỏi nên anh quyết định ở lại vài hôm giúp cô bạn mình. Anh này ngày xưa yêu cô nhưng bị từ chối, vì có nhan sắc đẹp nên cô lấy được con trai một gia đình giàu có, sau khi chồng mất cô không khỏi tiếc thương vì hằng ngày ngồi trước di ảnh chồng suy nghĩ về một điều gì đó xa xôi.
Nói về anh bạn, vì chỉ có mỗi anh là người bạn thân và cô còn giữ liên lạc nên thường được cô tâm sự chia sẻ những nỗi đau cô đã trải qua, một ngày khi đến để được cô giãi bày và nói rằng mình đang rất cô đơn, anh ta đã không thể kiềm chếnhục dục bản thân nên đã lao vào hãm hiếp người bạn và cũng là người cô theo đuổi bấy lâu mà không thành, trước cơn cuồng dâm của người bạn mình cô nàng đã không thể chống cự và ngoan ngoãn để anh ra dở trò đồi bại, chắc cũng lâu rồi chưa được làm chuyện ấy. Kể từ sau hôm bị hiếp dâm thì tinh thần của cô lên nhiều, cô đã không còn buồn rầu như trước mà lúc nào cũng mơn mởn, hơn thế lại còn hay gọi anh bạn đó đến hàn huyên tâm sự rồi lại chính cô là người chủ động làm tình: trong nhà tắm, phòng ngủ…Tìm kiếm
set vua; sex hiep dam gai dep; phim xet hiếpdăm tập thể; phim sex hiếp dăm bạn gái cũ; phim sex hiếp dâm người yêu cũ khi chồng vừa mất;

Server: cloudflare-nginx

Set-Cookie: __cfduid=de0e3ce9fcc521e1e5a71726ffbffd6391498325202; expires=Sun, 24-Jun-18 17:26:42 GMT; path=/; domain=.phimsexhot.net; HttpOnly

X-Powered-By: VPSSIM