Thứ Năm, 11 tháng 12, 2014

Cách Phần Biệt Động Từ DO Và MAKE

DOMAKE là động từ hay gây nhầm lẫn cho người học tiếng Anh. Ở đây ta sẽ tìm hiểu sự khác nhau giữa hai động từ này và phần biệt cách dùng các động từ này. Chúng ta cũng có thể sử dụng phương pháp học thuộc các câu sử dụng DOMAKE, điều đó giúp bạn nắm được chính xác hơn là phải xác định các trường hợp của nó. Xem thêm Cách Sử Dụng Động Từ DO và MAKE

Khi nào sử dụng DO?

Động từ Do được sử dụng khi

1. Khi nói về làm viêc, công việc hay nhiệm vụ (Work, jobs, tasks). Chú ý rằng công việc không tạo ra một đối tượng vật chất nào.

  • Have you done your homework?
  • I have guests visiting tonight so I should start doing the housework now.
  • I wouldn’t like to do that job.

2. DO được sử dụng khi chúng ta đề cập đến các hoạt động chung chung, không cụ thể. Trong những trường hợp này, chúng ta thường sử dụng các từ như: thing, something, nothing, anything, everything etc

  • Hurry up! I’ve got things to do!
  • Don’t just stand there – do something!
  • Is there anything I can do to help you?

3. Đôi khi chúng tôi sử dụng DO để thay thế một động từ mang ý nghĩa rõ ràng hoặc hiển nhiên. Điều này thường gặp trong cách nói thân mật trong tiếng Anh.

  • Do I need to do my hair? (do = brush or comb)
  • Have you done the dishes yet? (done = washed)
  • I’ll do the kitchen if you do the lawns (do = clean, do = mow)

Nhớ rằng, DO cũng được sử dụng như một trợ động từ (dùng để đặt câu hỏi. VD:  Do you like chocolate?).

Khi nào sử dụng MAKE?

MAKE được dùng trong Sản xuất, xây dựng, tạo dựng (producing, constructing, creating or building) thứ gì đó mới.

1. Nó cũng được sử dụng để chỉ ra nguồn gốc của một sản phẩm hoặc vật liệu được sử dụng để làm một cái gì đó.

  • His wedding ring is made of gold.
  • The house was made of adobe.
  • Wine is made from grapes.
  • The watches were made in Switzerland

2. Chúng ta sử dụng MAKE chỉ việc gây ra một hành động hay phản ứng.

  • Onions make your eyes water.
  • You make me happy.
  • It’s not my fault. My brother made me do it!

3. Ta sử dụng MAKE với một số danh từ nói về kế hoạch hay quyết định

  • make the arrangements,
  • make a choice

4. Ta sử dụng Make với các danh từ về việc nói và một số tiếng động:

  • make a comment
  • make a noise
  • make a speech

5. Sử dụng MAKE để nói về việc nấu nướng.

  • make a cake
  • make a cup of tea
  • make dinner

do-vs-make-difference

Sưu tầm từ http://itienganh.org/cach-phan-biet-dong-tu-do-va-make.html

Thứ Tư, 10 tháng 12, 2014

Giới từ chỉ thời gian - in / on / at

* AT: để chỉ thời gian chính xác (At 10 o’clock)
* IN: dùng cho tháng, năm, thế kỷ và những thời kỳ dài
* ON: cho thứ, ngày

*at: thời gian chính xác
at 3 o’clock
at 10.30am
at noon
at dinnertime
at bedtime
at sunrise
at sunset
at the moment

*in: tháng, năm, thế kỷ và những thời kỳ dài
in May
in summer
in the summer
in 1990
in the 1990s
in the next century
in the Ice Age
in the past/future

*on: thứ, ngày
on Sunday
on Tuesdays
on 6 March
on 25 Dec. 2010
on Christmas Day
on Independence Day
on my birthday
on New Year’s Eve

Ví dụ:
I have a meeting at 9am.
The shop closes at midnight.
Jane went home at lunchtime.
In England, it often snows in December.
Do you think we will go to Jupiter in the future?
There should be a lot of progress in the next century.
Do you work on Mondays?
Her birthday is on 20 November.
Where will you be on New Year’s Day?

Chú ý sử dụng giới từ AT trong một số cụm từ tiêu chuẩn sau:

at night - The stars shine at night.
at the weekend - I don’t usually work at the weekend.
at Christmas/Easter - I stay with my family at Christmas.
at the same time - We finished the test at the same time.
at present - He’s not home at present. Try later.

Chú ý sử dụng giới từ In và ON trong một số cụm từ tiêu chuẩn sau:

in the morning
in the mornings
in the afternoon(s)
in the evening(s)

on Tuesday morning
on Saturday mornings
on Sunday afternoons
on Monday evening

Khi ta dùng last, next, every, this thì không dùng giới từ at, in, on nữa:

I went to London last June. (not in last June)
He’s coming back next Tuesday. (not on next Tuesday)
I go home every Easter. (not at every Easter)
We’ll call you this evening. (not in this evening)

Tối ưu tốc độ tải trang bằng việc nén các file resources JS và CSS sử dụng Gruntjs

 

09/06/2013 | Đăng bởi Trần Mạnh | 0 bình luận
Tiếp theo của phần 3 trong series Nhập môn Nodejs trên Hanoijs, chúng ta sẽ tiếp tục tìm hiểu về khái niệm module và việc tổ chức code trong nodejs.
Phần lớn lập trình viên đều quen thuộc với khái niệm tổ chức code trong ứng dụng của mình. Việc tổ chức code 1 cách logic sẽ cho chúng ta khả năng sử dụng lại những code mà ta đã viết. Chúng ta thông thường sẽ tách và nhóm những đoạn code lặp lại hoặc được sử dụng lại một cách thường xuyên thành các function, nhiều function xử lý chung 1 logic nào đó chúng ta lại tổ chức thành các class. Các class và function đó được tổ chức vào các file và đặt vào thư mục như lib hoặc classes... Còn các code thông thường thì có thể sẽ được tổ chức vào thư mục application hoặc một thư mục bất kỳ nào khác tuỳ vào project của chúng ta.
1. Tổ chức và sử dụng lại các hàm chức năng
Khi chúng ta thực hiện một ứng dụng nào đó, của bất kỳ ngôn ngữ nào, thường sẽ có những thời điểm mà code của chúng ta viết tất cả trong 1 file.Điều này sẽ dẫn đến việc rất khó để kiểm soát được code của chúng ta nếu xảy ra lỗi. Vì thế, thay vì tống hết đống code đó trong 1 file, chúng ta hãy xem lại xem những phần code nào có thể tách ra và chuyển chúng sang một file khác.
Đối với 1 số ngôn ngữ thực thi như PHP hay Ruby, chúng ta thường dùng khái niệm include file để tổ chức ứng dụng của chúng ta. Phần lớn việc include có nghĩa là các code xử lý trong file include sẽ thực thi ở phạm vi Global.Điều này có nghĩa là bất kỳ biến hay hàm nào chúng ta khai báo trước đó sẽ có khả năng bị ghi đè (overwrite) bởi code trong các file include đó.
Giả sử với PHP, ứng dụng của bạn có một phương thức thực hiện việc đổi tỷ giá đồng USD như sau:
function changeVNDToUSD($number, $rate = 20000) {
  $number = (int) $number;

  if ($rate > 0)
     return round($number / $rate, 2);
  else return 0;
}

include 'currency_helper.php';
Sau đó bạn include 1 file giả sử là currency_helper.php ngay dưới phương thức changeVNDToUSD mà trong file currency_helper.php bạn lại khái báo 1 phương thức cũng tên changeVNDToUSD, bạn sẽ nhận được lỗi: Fatal error: Cannot redeclare changeVNDToUSD.
Để tránh điều này, trong PHP chúng ta có thể dùng namespaces, với Ruby là modules. Đối với Nodejs, nó cung cấp cho chúng ta hệ thống module cực kỳ mạnh mẽ, ta có thể tách code và require code mà không lo bị xung đột với các code mà ta đã viết trước đó. Một khi muốn sử dụng 1 phương thức hay một đoạn code nào đó ở phạm vi Global, chúng ta cần phải thông qua đối tượng là exports hoặc module.exports. Và đây chính là cách mà chúng ta tạo module trong nodejs.
2. Tạo module trong nodejs
currency_helper.js
var df_rate = 20000;

function changeVNDToUSD(number, rate) {
  var rate = rate || df_rate;
  if (rate > 0)
     return Math.round(number / rate, 2);
  else return 0;
}

exports.changeVNDToUSD = changeVNDToUSD;
// C2: module.exports = changeVNDToUSD;
app.js
var currency = require('./currency_helper'); // File currency_helper.js cùng thư mục với app.js
console.log(currency.changeVNDToUSD(200000)); // $10
// C2: console.log(currency(200000)); // $10
Hãy chú ý đến phần comment ở cuối file currency_helper.js, nếu chúng ta sử dụng exports.changeVNDToUSD = changeVNDToUSD thì ở fileapp.js chúng ta phải gọi phương thức thông qua đối tượng currencycurrency.changeVNDToUSD. Còn nếu chúng ta sử dụng C2, gán trực tiếp phương thức changeVNDToUSD với đối tượng module.exports thì ở file app.js ta sẽ gọi trực tiếp phương thức khi require: currency(200000). Ngoài ra chúng ta có thể sử dụng phương thức changeVNDToUSD một lần bằng cách require('./currency_helper.js').changeVNDToUSD(200000) mà không cần phải khai báo.
3. Exports nhiều phương thức
Như đã đề cập ở trên, trong nodejs chỉ những phương thức nào được gán với đối tượng exports thì chúng ta mới có thể sử dụng được ở các module khác. Các phương thức khác trong cùng file sẽ được coi là các private method
currency_helper.js
var df_usd_rate = 20000;
var df_eu_rate = 40000;

function changeVNDToUSD(number, rate) {
  var rate = rate || df_usd_rate;
  if (rate > 0)
     return Math.round(number / rate, 2);
  else return 0;
}

function changeVNDToEU(number, rate) {
  var rate = rate || df_eu_rate;
  if (rate > 0)
     return Math.round(number / rate, 2);
  else return 0;
}

function changeUSDToVND(number, rate) {
  var rate = rate || df_eu_rate;
  return Math.round(number * rate, 2);
}

exports.changeVNDToUSD = changeVNDToUSD;
exports.changeVNDToEU = changeVNDToEU;
Giả sử trong file currency_helper.js ta có 3 phương thức như trên. Nếu ta chỉ exports 2 phương thức là changeVNDToUSDchangeVNDToEU thìở các module khác ta chỉ có thể sử dụng 2 phương thức này, còn phương thức changeUSDToVND là phương thức private của currency_helper.js
app.js
var currency = require('./currency_helper'); // Lưu ý là k cần phần mở rộng .js
console.log(currency.changeVNDToUSD(1200000)); // $60
console.log(currency.changeVNDToEU(1200000)); // 30 euro
console.log(currency.changeUSDToVND(20)); // TypeError: Object #<Object> has no method 'changeUSDToVND'
Như vậy là đến thời điểm này, chúng ta đã có thể hiểu được cách tổ chức, phân tách code sử dụng module trong node, cách tạo 1 module và require module của ta trong các module khác. Nhưng nếu chỉ có thế thì làm sao nói hệ thống module trong node là mạnh mẽ được? Nếu bạn còn nghi ngờ điều này, xin chào mừng bạn đến với thế giới của module trong node: NPM
4. NPM: Thế giới của các module
Nghe giới thiệu có vẻ mỹ miều thế nhưng thực ra npm là 1 package manager của Node. Ta có thể sử dụng nó để cài cắm các module package khác của tất cả mọi lập trình viên trên thế giới mà đã được publish trên NPM. Hoặc chúng ta cũng có thể publish những module package mà chính ta viết cho cộng đồng sử dụng.
Cài đặt 1 npm module
Trong /Desktop/my_project
Mở terminal (Với Windows bạn có thể sử dụng PowerShell) và gõ lệnh sau:
$npm install request
NPM sẽ thực hiện tìm kiếm và nếu tìm thấy nó sẽ download về thư mục node_modules trong my_project cho chúng ta. Trong trường hợp này npm sẽ clone 1github repo từ https://github.com/mikeal/request
request module sẽ được đặt trong /Desktop/my_project/node_modules/request
Trong file /Desktop/my_project/app.js, ta sẽ load module request vào bằng dòng code sau:
var request = require('request');
Lưu ý là trong require, chúng ta chỉ cần đặt tên giống với tên thư mục trong node_modules là được.
Ta có thể cài đặt 1 module ở phạm vi global bằng cách thêm tham số -g đằng sau lệnh npm install
$npm install coffee-script -g
Tuy nhiên, những module là global thì ta không thể require chúng trong ứng dụng của chúng ta. Hãy lưu ý đến phần này.
Ngoài cách cài đặt từng module sử dụng lệnh npm install chúng ta còn có 1 cách khác cũng rất tiện lợi đó là định nghĩa các module cần thiết cho ứng dụng của chúng ta trong file package.json
{
    "name": "My App",
    "version": "1",
    "dependencies": {
       "connect": "1.8.7",
       "request": "lastest"
    }
}
Lưu ý là file package.json cần phải được đặt ở root của ứng dụng của chúng ta. Thực hiện cài đặt các npm module bằng lệnh npm install. Npm sẽ tự động đọc file json và tải về các gói đã được định nghĩa trong file.
Tổng kết
Chúng ta đã đi qua 4 phần của series về Nodejs trên hanoijs. Nếu bạn vẫn chưa đọc các phần khác của series thì truy cập vào Nhập môn Nodejs để theo dõi. Tuy mọi thứ từ lúc bắt đầu đến giờ vẫn chỉ là những khái niệm ở mức low level nhưng hanoijs hy vọng bạn đã có 1 cái nhìn cơ bản nhất về các nội dung trên nodejs. Phần tiếp theo của series, hanoijs sẽ cùng các bạn tìm hiểu 1 web framework chạy trên node có tên là Expressjs. Happy coding!!


Sưu tầm: http://hanoijs.org/bai-viet/blog/toi-uu-toc-do-tai-trang-bang-viec-nen-cac-file-resources-js-va-css-su-dung-gruntjs/37

Cách sử dụng some, many, much, any, a lot of, lots of,few, a few, little and a little

1. Some.
some: vài, 1 vài, 1 ít trong số, 1 số.
some được xem là hình thức số nhiều của a, an.
some đứng trước danh từ số nhiều đếm được và danh từ ko đếm được.

EX: There’s some milk in the fridge. Có 1 ít sữa trong tủ lạnh.
There are some books on the table. Có vài quyển sách trên bàn.
- Sử dụng “some” khi chưa xác định rõ số lượng.
- Sử dụng “some” trong câu hỏi để bộc lộ rõ ý muốn của ng` nói, đặc biệt trong câu yêu cầu và đề nghị.Khi đó,ng` nói mong muốn dc đáp lại bằng “yes”.
EX: Did you buy some milk? Bn đã mua 1 ít sữa phải ko?
2. Many
many: nhiều.
many thường đứng trước danh từ đếm được
- Sử dụng “many” khi muốn ám chỉ 1 số lượng lớn.
- Dc dùng chủ yếu trong câu hỏi và câu phủ định.
EX: I have many friends here. Ở đây tôi có nhiều bạn.
How many floors does your school have? Trường bạn có bao nhiêu tầng?
There aren’t many students in this school. Không có nhiều học sinh ở trường này.
3. Any
any ko có nghĩa xác định.
any thường được dùng trong câu hỏi và câu phủ định.
any đứng trước danh từ số nhiều đếm được hoặc danh từ ko đếm được.
- Khi đạt câu hỏi với “any”, người đó ngụ ý nghi ngờ, không biết điều mình hỏi có hay không có.
EX: Are there any oranges? Có quả cam nào không?
No, there aren’t any oranges. Không, không có quả cam nào cả.

Is there any cheese in the fridge? Có chút phomat nào trong tủ lạnh không?
No, there isn’t any cheese in the fridge./No,there isn’t.
4. Much
much thường dùng trong câu phủ định và câu hỏi.
much đi với danh từ không đếm được.

EX: I don’t have much time. Tôi ko có nhiều thời gian.
I don’t have much money. Tôi ko có nhiều tiền.
5. A lot of và lots of
a lot of có nghĩa là nhiều, 1 số lượng nhiều
a lot of thường được dùng trong câu khẳng định.
a lot of là cách nói khác của lots of.
a lot of và lots of thường đi với danh từ không đếm được và danh từ số nhiều.
EX: There’s a lot of rain today. Hôm nay mưa nhiều.
A lot of students are studying in the library. Nhiều học sinh đang học bài trong thư viện.
There are lots of people here. Có nhiều người ở đây

6. Few, a few và Little, a little

FEW, A FEW dùng với danh từ đếm được còn LITTLE và A LITTLE thì dùng cho danh từ không đếm được.
Còn muốn phân biệt giữa từng cặp với nhau thì xem xét như sau: Nhìn trong câu tìm xem có ý nào LÀM GIẢM ĐI SỐ LƯỢNG danh từ đi sau nó hay không, nếu có thì dùng FEW (hoặc LITTLE) ( = ít ) còn không có thì dùng A LITTLE (hoặc A FEW) ( = 1 ít, một vài ) Còn muốn phân biệt giữa từng cặp với nhau thì xem xét như sau:
Nhìn trong câu tìm xem có ý nào LÀM GIẢM ĐI SỐ LƯỢNG danh từ đi sau nó hay không, nếu có thì dùng FEW (hoặc LITTLE) ( = ít ) còn không có thì dùng A LITTLE (hoặc A FEW) ( = 1 ít, một vài )
Các em xem ví vụ sau nhé :

The window is so small that the room gets ______ air.
a. little
b. a little
c. few
d. a few


Nhìn phía sau thấy chữ air không có s -> không đếm được nên loại câu c và d, xét tiếp nội dung câu ta thấy so small nghĩa là cửa sổ quá nhỏ -> làm giảm số lượng không khí vào phòng nên chọn câu a: little
Ví dụ 2:
I enjoy my lifehere. I have ________friends and we meet quite often.

a. little
b. a little
c. few
d. a few

Nhìn phía sau có friendss nên loại câu a và b, xét tiếp thấy enjoy ngoài ra không có yếu tố nào làm giảm số lượng friends nên chọn câu d : a few
Ngoài ra các em cũng có thể dựa vào các dấu hiệu sau để làm bài.
Nếu gặp ONLY, QUITE thì chọn  a few, a little

Nếu gặp : VERY, SO  TOO thì chọn little, few mà không cần xem xét gì thêm nữa.
Ví dụ:
There are only________houses

a. little
b. a little
c. few
d. a few
Loại ngay câu a và b vì phía sau là houses, tiếp đến ta thấy có only nên chọn câu d: a few

PHÂN BIỆT SỐ ÍT HAY SỐ NHIỀU TRONG TIẾNG ANH

Thông thường một danh từ có s phía sau là danh từ số nhiều, còn ngược lại là số ít. Nhưng cũng có những ngoại lệ cần nhớ:

1) N AND N (hai danh từ nối với nhau bằng chữ and )

Khi 2 danh từ nối nhau bằng chữ and thì thông thường là dùng số nhiều, nhưng trong các trường hợp sau thì lại dùng số ít :

- Khi chúng cùng chỉ một người, một bộ, hoặc 1 món ăn

Đối với người thì dấu hiệu nhận biết cùng 1 người là danh từ thứ 2 không có THE

Ví dụ:

The professor and the secretary are ......(ông giáo sư và người thư ký .....) => 2 người khác nhau

The professor and secretary is ......(ông giáo sư kiêm thư ký ...) => một người

 

Đối với món ăn thì cũng phải dịch theo nghĩa

Ví dụ:

Salt and peper is ..... ( muối tiêu ) xem như một món muối tiêu

Bread and meat is.... (bánh mì thịt ) xem như một món bánh mì thịt.

The saucer and cup is... (tách và dĩa để tách được xem như một bộ )

- Phép cộng thì dùng số ít:

Two and three is five (2 + 3 = 5)

2) Luôn luôn số ít:

Gặp các chữ sau đây luôn luôn dùng số ít

EACH, EVERY, MANY A,TO INF, V-ING, MỆNH ĐỀ DANH TỪ, TỰA ĐỀ

Lưu ý chữ " MANY A " + danh từ số ít

Many a book is....

( Nhưng many không có a thì vẫn dùng số nhiều nhé : Many books are..)

Ví dụ:

Each man and woman is .....( có chữ each ở trước thì phía sau dù có "and" bao nhiêu lần cũng mặc kệ ta vẫn dùng số ít )

 

- Chủ từ là To inf. hoặc Ving

Ví dụ:

To do this is ....

Learning English is .........

 

- Chủ từ là mệnh đề danh từ

Cách nhận dạng ra mệnh đề danh từ là có các chữ hỏi ở đầu như what, when, why, how...hoặc that

Ví dụ:

why he doesn't come is....

what he said is ..........

That he stole the bicycle is true.(sự việc mà anh ta ăn cắp xe đạp là sự thật)

 

- Chủ từ là tựa đề

Dấu hiệu để nhận ra tựa đề là nó được viết trong ngoặc kép.

Ví dụ:

"Tom and Jerry" is ....

"War and Peace" is...(chiến tranh và hòa bình là ...)

"Gone with the wind" is..(Cuốn theo chiều gió là ...)

 

3) Danh từ có S nhưng dùng số ít

- Nhóm Môn học :

physics (vật lý ), mathematics (toán ).... , dấu hiệu nhận biết là có tận cùng là ICS

 

- Nhóm Bệnh tật :

Measles (sởi ), mumps (quai bị ).....

 

- Chữ News

 

- Nhóm Đo lường :

Ví dụ:

Two pounds is .....(2 cân)

 

- Nhóm Khoảng cách :

Ví dụ:

Ten miles is ...(10 dặm)

 

- Nhóm Thời gian :

Ví dụ:

Ten years is .....( 10 năm )

 

- Nhóm Giá tiền

Ví dụ:

Ten dollars is ...(10 đô la )

 

- Nhóm Tên nước :

The United States (Nước Mỹ), the Philippines

 

4) Không có s nhưng dùng số nhiều

- Các danh từ tập họp sau đây

People, cattle, police, army, children

 

- Nhóm tính từ có THE

The poor (người nghèo ), the blind (người mù ), the rich (người giàu ), the deaf ( người điếc ), the dumb ( người câm), the injured (người bị thương )....

 

5) Hai danh từ nối nhau bằng các chữ : OR , NOR , BUT ALSO thì động từ chia theo danh từ phía sau:

Ví dụ:

you or I am .....(chia theo I )

Not only she but also they are ....

 

6) Các danh từ nối nhau bằng : AS WELL AS, WITH, TOGETHER WITH, WITH thí chia theo danh từ phía trước:

Ví dụ:

She as well as I is ...(chia theo she)

 

7) Hai danh từ nối nhau bằng chữ OF thì chia theo danh từ phía trước nhưng nếu danh từ phía trước là none, some, all, most, majority, enough, minority, half, phân số .... thì lại phải chia theo danh từ phía sau:

Ví dụ:

The study of science is ...(chia theo study)

Some of the students are ...( nhìn trước chữ of gặp some nên chia theo chữ phía sau là students)

Most of the water is ...(nhìn trước gặp most nên chia theo N phía sau là water )

Lưu ý :

Nếu các chữ trên đứng một mình thì phải suy nghĩ xem nó là đại diện cho danh từ nào, nếu danh từ đó đếm được thì dùng số nhiều, ngược lại dùng số ít.

Ví dụ:

The majority think that....(đa số nghỉ rằng..) ta suy ra rằng để "suy nghĩ' đựoc phải là danh từ đếm được (người ) => dùng số nhiều :The majority think that.

 

8) Nhóm Tiếng Nói, Dân tộc:

- Tiếng nói dùng số ít

- Dân tộc dùng số nhiều

- Tiếng nói và dân tộc viết giống nhau nhưng khác ở chỗ : dân tộc có THE còn tiếng nói thì không có THE

Ví dụ:

Vietnamese is ....(tiếng Việt thì ..)

The Vietnamese are ....(dân tộc Việt Nam ...)

 

9)A NUMBER và THE NUMBER:

A NUMBER dùng số nhiều

THE NUMBER dùng số ít

 

10) Danh từ tập hợp:

Bao gồm các chữ như : family, staff, team, group, congress, crowd, committee ....

Nếu chỉ về hành động của từng thành viên thì dùng số nhiều, nếu chỉ về tính chất của tập thể đó như 1 đơn vị thì dùng số ít

Ví dụ:

The family are having breakfast ( ý nói từng thành viên trong gia đình đang ăn sáng )

The family is very conservative (chỉ tính chất của tập thể gia đình đó như là một đơn vị )

 

11) Gặp chữ THERE:

Thì chia theo danh từ phía sau:

Ví dụ:

There is a book (chia theo a book)

There are two books (chia theo books)

Tuy nhiên: there is a book and two pens (vẫn chia theo a book)

 

12) Đối với mệnh đề RELATIVE:

Chia động từ trong mệnh đề trước sau đó bỏ mệnh đề đi để chia động từ còn lại

Ví dụ:

One of the girls who go out is very good.

Chữ go có chủ từ là who = girls => chia theo số nhiều

Bỏ mệnh đề đi cho dễ thấy:

One of the girls is good (gặp of chia theo chữ trước là one => số ít )

 

13) Gặp các Đại từ sở hữu như: MINE, (của tôi), HIS (của anh ấy), HERS (của cô ấy)...

Thì phải xem cái gì của người đó và nó là số ít hay số nhiều

Ví dụ:

Give me your scissors. Mine (be) very old. (ta suy ra là của tôi ở đây là ý nói scissors của tôi là số nhiều nên dùng số nhiều:

=> ...Mine are very...

Nếu không thấy nằm trong 13 điều này thì chia theo qui luật bình thường: có s -> số nhiều .Không s -> số ít

Thứ Hai, 8 tháng 12, 2014

Attributes and ASP.NET MVC

 What is an Attribute?

    An attribute is a class that inherits from the abstract class System.Attribute. By convention, all attributes are given a class name that ends with the word “Attribute”. The .NET framework recognizes this convention and allows you to drop “Attribute” from the syntax for attaching the attribute. For example, to attach System.Web.Mvc.AuthorizeAttribute to a controller’s action method, you would use the following syntax: 
    C# example
    [Authorize]
    public ActionResult Index() { }

    Visual Basic example

    <Authorize()> _
    Function Index() As ActionResult
    End Function

 Attribute Parameters

    An attribute can take a parameter that is either positional or named. A positional parameter corresponds to the parameters of the attribute’s public constructors. For example, System.Web.Mvc.ActionNameAttribute has a constructor that takes a name parameter. C# example
    [ActionName("Start")]
    public ActionResult Index() { }

     Visual Basic example

    <ActionName("Start")> _
    Function Index() As ActionResult
    End Function

     A named parameter corresponds to a public property or public field of an attribute. For example, System.Web.Mvc.OutputCacheAttribute has several public properties (named parameters). 
    C# example
    [OutputCache(CacheProfile = "MyProfile", Duration = 10)]
    public ActionResult Index() { } 
    Visual Basic example
    <OutputCache(CacheProfile := "MyProfile", Duration := 10)> _
    Function Index() As ActionResult
    EndFunction

 Customizing Your Own Attribute

    You can write your own attribute by creating a class that inherits either directly or indirectly from System.Attribute. ASP.NET MVC has several abstract attributes that you are intended to customize. For example, you must customize System.Web.Mvc.ActionFilterAttribute to implement an action filter. The following class implements a simple logging action filter: 
    C# example
    public class LoggingFilterAttribute : ActionFilterAttribute   
    {
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
             filterContext.HttpContext.Trace.Write("(Logging Filter)Action Executing: " +
             filterContext.ActionDescriptor.ActionName);
             base.OnActionExecuting(filterContext);
         }
         public override void OnActionExecuted(ActionExecutedContext filterContext)
         {
             if (filterContext.Exception != null)
             filterContext.HttpContext.Trace.Write("(Logging Filter)Exception thrown");
             base.OnActionExecuted(filterContext);
         }
     } 
    Visual Basic example
    Public Class LoggingFilterAttribute
          Inherits ActionFilterAttribute
       Public Overrides Sub OnActionExecuting(ByVal filterContext As ActionExecutingContext)
           filterContext.HttpContext.Trace.Write("(Logging Filter)Action Executing: " + _
                filterContext.ActionDescriptor.ActionName)
           MyBase.OnActionExecuting(filterContext)
       End Sub
       Public Overrides Sub OnActionExecuted(ByVal filterContext As ActionExecutedContext)
            If Not filterContext.Exception Is Nothing Then
                filterContext.HttpContext.Trace.Write("(Logging Filter)Exception thrown")
            End If
           MyBase.OnActionExecuted(filterContext)
        End Sub
    End Class

 ASP.NET MVC Attributes

    The following list shows the attributes that are currently available to you as an ASP.NET MVC programmer. All of these attributes are in the System.Web.Mvc namespace.

  • AcceptViewAttribute
  • ActionFilterAttribute
  • ActionMethodSelectorAttribute
  • ActionNameAttribute
  • ActionNameSelectorAttribute
  • AuthorizeAttribute
  • BindAttribute
  • CustomModelBinderAttribute
  • FilterAttribute
  • HandleErrorAttribute
  • HiddenInputAttribute
  • HttpDeleteAttribute
  • HttpGetAttribute
  • HttpPostAttribute
  • HttpPutAttribute
  • ModelBinderAttribute
  • NonActionAttribute
  • OutputCacheAttribute
  • RequireHttpsAttribute
  • ValidateAntiForgeryTokenAttribute
  • ValidateInputAttribute

Chủ Nhật, 7 tháng 12, 2014

Phân Biệt Html.Partial(), Html.RenderPartial()

Phân Biệt Html.Partial(), Html.RenderPartial(), Html.Action(), và Html.RenderAction()

Nói chung, Html.Partial()Html.RenderPartial() dùng để chèn sub view có nội dung tĩnh hoặc nội dung được render với dữ liệu lấy từ parent view. Ngược lại, Html.Action()Html.RenderAction() dùng để chèn sub view được render với dữ liệu sinh ra từ kết quả thực thi action method trên controller.

Sự khác biệt duy nhất giữa Html.Partial()Html.RenderPartial()Html.Partial() trả về một chuỗi được encoded (MvcHtmlString class) trong khi Html.RenderPartial() render và write trực tiếp sub view vào trong output stream. Điều này cũng đúng cho Html.Action()Html.RenderAction().

Html.Partial()Html.Action() trả về một chuỗi nên chúng có thể được viết trực tiếp trong Razor như sau

@Html.Partial("ViewName")
@Html.Action("ActionName", "ControllerName")

Trong khi đó, Html.RenderPartial()Html.RenderAction() trả về void nên phải được gọi như là một method trong Razor và do đó phải được đặt trong cặp dấu {} như sau

@{ Html.RenderPartial("ViewName"); }
@{ Html.RenderAction("ActionName", "ControllerName"); }

Khi truyền view name cho Html.Partial()Html.RenderPartial() thì asp.net mvc sẽ tìm kiếm sub view ở "~/Views/ControllerName/ViewName.cshtml" trong đó "ControllerName" là tên controller mà gọi parent view hoặc ở "~/Views/Shared/ViewName.cshtml".

Khi sub view cần render không nằm trong những location nêu trên thì phải truyền virtual path cho Html.Partial()Html.RenderPartial() như ví dụ sau

@Html.Partial("~/Views/Account/SubViews/AccountPartial.cshtml")
@{ Html.RenderPartial("~/Views/Shared/Account/AccountPartial.cshtml"); }


http://nguyenvutuan.blogspot.com/2013/03/phan-biet-htmlpartial-htmlrenderpartial.html

Thứ Ba, 20 tháng 5, 2014

Less Css

Thủ thuật CSS (6/7): LESS CSS Hướng dẫn cơ bản cho người bắt đầu
Css thì rất đơn giản và dễ dàng để học, tuy nhiên nó lại có một giới hạn nhất định. Đặc biệt là khi bạn phải điều chỉnh lại nó. Bạn hãy tưởng tượng xem , khi bạn có hàng ngàn dòng css mà cần phải thay đổi một cái gì đó thì thật là mệt mỏi phải không ?
LESS CSS - Hướng dẫn cơ bản cho người bắt đầu
Tuy nhiện một công nghệ mới đã ra đời giúp bạn giải quyết việc này , đó là LESS. Với LESS bạn có thể viết các câu lệnh css dạng động, tức là có khai báo biến, có khai báo hàm…. Có lẽ đọc tới đây các bạn vẫn còn mơ hồ, vậy chúng ta cùng khám phá chi tiết về LESS nhé.
1 Cách sử dụng LESS
Sử dụng LESS thì rất là đơn giản, chúng ta chỉ cần đặt 2 dòng này vào bên trong thẻ
là okie. Nhưng điều đầu tiên là các bạn phải download
less.js về máy của mình.

            1
           

            2
           

             
                <
link
               
                rel
="stylesheet/less"
               
                type
="text/css"
               
                href
="style.less">
             

             
                <
script
               
                src
="less.js"
               
                type
="text/javascript">script>
             
Phải chắc chắn rằng file .less được đặt trước less.js.
2 Cú pháp của LESS
Không giống như CSS thông thường, LESS hoạt động như một ngôn ngữ lập trình, nó cũng có khai báo biến, toán tử…
Khai Báo Biến (Variables)
Trước hết chúng ta cùng xem lại cách mà chúng ta viết câu lệnh CSS bình thường.

            1
           

            2
           

            3
           

            4
           

            5
           

            6
           

            7
           

            8
           

            9
           

            10
           

             
                .class
1
               
                {

             

             
                background-color
:
               
                #2d5e8b
;
             

             
                }

             

             
                .class
2
               
                {

             

             
                background-color
:
               
                #fff
;
             

             
                color
:
               
                #2d5e8b
;
             

             
                }

             

             
                .class
3
               
                {

             

             
                border
:
               
                1px

                solid

                #2d5e8b
;
             

             
                }

             
Và đây là cách mà LESS làm tương tự :

            1
           

            2
           

            3
           

            4
           

            5
           

            6
           

            7
           

            8
           

            9
           

            10
           

            11
           

             
                @color-base:

                #2d5e8b
;
             

             
                .class
1
               
                {

             

             
                background-color
:
                @color-base;

             

             
                }

             

             
                .class
2
               
                {

             

             
                background-color
:
               
                #fff
;
             

             
                color
:
                @color-base;

             

             
                }

             

             
                .class
3
               
                {

             

             
                border
:
               
                1px

                solid

                @color-base;

             

             
                }

             
Chúng ta dễ dàng nhận thấy LESS khai báo biến @color-base: #2d5e8b; là màu dùng chung cho cả 3 lớp (class). Và với kiểu khai báo thế này, thì chỉ mỗi khi bạn sử dụng , chỉ cần gọi lại biến @color-base, đồng thời sau này nếu bạn muốn đổi màu thì chỉ cần thay đổi màu tại biến @color-base. Thật tiện lợi và dễ điều chỉnh phải không các bạn.
3 Mixins
Mixins cho phép gắn toàn bộ thuộc tính của một class trong CSS vào trong class khác bằng một cách khá đơn giản là thêm tên class này như một thuộc tính của class kia. Để hiểu rõ hơn thì chúng ta cùng xem ví dụ sau :
Giả sử chúng ta khai báo một lớp (class) dùng cho hiển thị màu gradient như sau :

            1
           

            2
           

            3
           

            4
           

            5
           

            6
           

            7
           

            8
           

             
                .gradients {

             

             
                background
:
               
                #eaeaea
;
             

             
                background
:
                linear-gradient(
top,
               
                #eaeaea
,
               
                #cccccc
);
             

             
                background
:
                -o-linear-gradient(
top,
               
                #eaeaea
,
               
                #cccccc
);
             

             
                background
:
                -ms-linear-gradient(
top,
               
                #eaeaea
,
               
                #cccccc
);
             

             
                background
:
                -moz-linear-gradient(
top,
               
                #eaeaea
,
               
                #cccccc
);
             

             
                background
:
                -webkit-linear-gradient(
top,
               
                #eaeaea
,
               
                #cccccc
);
             

             
                }

             
Và khi bạn muốn áp dụng màu gradient này vào bất cứ khai báo nào khác , thì chỉ cần đặt .gradientsvào ngay bên trong là được :

            1
           

            2
           

            3
           

            4
           

            5
           

             
                div {

             

             
                .gradients;

             

             
                border
:
               
                1px

                solid

                #555
;
             

             
                border-radius:

                3px
;
             

             
                }

             
Đoạn css trên tương đương với cách mà chúng ta viết CSS thường ngày thế này :

            1
           

            2
           

            3
           

            4
           

            5
           

            6
           

            7
           

            8
           

            9
           

            10
           

             
                div {

             

             
                background
:
               
                #eaeaea
;
             

             
                background
:
                linear-gradient(
top,
               
                #eaeaea
,
               
                #cccccc
);
             

             
                background
:
                -o-linear-gradient(
top,
               
                #eaeaea
,
               
                #cccccc
);
             

             
                background
:
                -ms-linear-gradient(
top,
               
                #eaeaea
,
               
                #cccccc
);
             

             
                background
:
                -moz-linear-gradient(
top,
               
                #eaeaea
,
               
                #cccccc
);
             

             
                background
:
                -webkit-linear-gradient(
top,
               
                #eaeaea
,
               
                #cccccc
);
             

             
                border
:
               
                1px

                solid

                #555
;
             

             
                border-radius:

                3px
;
             

             
                }

             
Với việc sử dụng thế này, LESS sẽ giúp file css của bạn ngắn gọn và dễ hiểu hơn rất nhiều. Ngoài ra bạn cũng có thể đặt tham số khi sử dụng LESS.

            1
           

            2
           

            3
           

            4
           

            5
           

            6
           

            7
           

            8
           

            9
           

            10
           

            11
           

            12
           

             
                / LESS

             

             
                .rounded-corners (@radius:

                5px
)
                {

             

             
                border-radius: @radius;

             

             
                -webkit-border-radius: @radius;

             

             
                -moz-border-radius: @radius;

             

             
                }

             

             
                #header {

             

             
                .rounded-corners;

             

             
                }

             

             
                #footer {

             

             
                .rounded-corners(
10px);
             

             
                }

             
Đoạn css trên tương đương với cách viết sau :

            1
           

            2
           

            3
           

            4
           

            5
           

            6
           

            7
           

            8
           

            9
           

            10
           

             
                #header {

             

             
                border-radius:

                5px
;
             

             
                -webkit-border-radius:

                5px
;
             

             
                -moz-border-radius:

                5px
;
             

             
                }

             

             
                #footer {

             

             
                border-radius:

                10px
;
             

             
                -webkit-border-radius:

                10px
;
             

             
                -moz-border-radius:

                10px
;
             

             
                }

             
4 Nested Rules
Thay vì viết các tên selector dài để chỉ ra các quan hệ thừa kế trong CSS, với Less bạn có thể lồng các selector và nhau. Việc này làm cho quan hệ thừa kế trở nên rõ ràng hơn và code stylesheet cũng ngắn gọn hơn. Chúng ta cùng xét ví dụ sau :

            1
           

            2
           

            3
           

            4
           

            5
           

            6
           

            7
           

            8
           

            9
           

            10
           

            11
           

            12
           

            13
           

            14
           

            15
           

             
                nav {

             

             
                height
:
               
                40px
;
             

             
                width
:
               
                100%
;
             

             
                background
:
               
                #455868
;
             

             
                border-bottom
:
               
                2px

                solid

                #283744
;
             

             
                }

             

             
                nav li {

             

             
                width
:
               
                600px
;
             

             
                height
:
               
                40px
;
             

             
                }

             

             
                nav li a {

             

             
                color
:
               
                #fff
;
             

             
                line-height
:
               
                40px
;
             

             
                text-shadow
:
               
                1px

                1px

                0px

                #283744
;
             

             
                }

             
Trong cách viết CSS thông thường này, để áp đặt thuộc tính cho các phần tử con, bạn phải chỉ định phần tử cha đứng trước nó, nhưng với LESS, thì việc này đơn giản và rõ ràng hơn nhiều :

            1
           

            2
           

            3
           

            4
           

            5
           

            6
           

            7
           

            8
           

            9
           

            10
           

            11
           

            12
           

            13
           

            14
           

            15
           

             
                nav {

             

             
                height
:
               
                40px
;
             

             
                width
:
               
                100%
;
             

             
                background
:
               
                #455868
;
             

             
                border-bottom
:
               
                2px

                solid

                #283744
;
             

             
                li {

             

             
                width
:
               
                600px
;
             

             
                height
:
               
                40px
;
             

             
                a {

             

             
                color
:
               
                #fff
;
             

             
                line-height
:
               
                40px
;
             

             
                text-shadow
:
               
                1px

                1px

                0px

                #283744
;
             

             
                }

             

             
                }

             

             
                }

             
Ngoài ra bạn còn có thể ấn định pseudo-classes, như :hover, vào selector bằng cách sử dụng kí tự ( &). Các bạn có thể tham khảo đoạn css sau :

            1
           

            2
           

            3
           

            4
           

            5
           

            6
           

            7
           

            8
           

            9
           

             
                a {

             

             
                color
:
               
                #fff
;
             

             
                line-height
:
               
                40px
;
             

             
                text-shadow
:
               
                1px

                1px

                0px

                #283744
;
             

             
                &:hover {

             

             
                background-color
:
               
                #000
;
             

             
                color
:
               
                #fff
;
             

             
                }

             

             
                }

             
5 Operation (Toán tử)
Với LESS bạn có thể thực hiện các phép tính như cộng , trừ , nhân chia. Cùng xem ví dụ sau nhé :

            1
           

            2
           

            3
           

            4
           

            5
           

            6
           

            7
           

             
                @
height:
               
                100px

             

             
                .element-A {

             

             
                height
:
                @height;

             

             
                }

             

             
                .element-B {

             

             
                height
:
                @height *

                2
;
             

             
                }

             
Như bạn đã thấy ở đoạn css trên, đầu tiên chúng ta lưu trữ giá trị biến @height, và rồi ấn định giá trị này cho lớp element A. Và khi đến lớp element B, chúng ta sử dụng biến @height một lần nữa, nhưng lần này giá trị của nó đã được nhân đôi.
6 Scope
LESS cũng cung cấp thêm một khái niệm là Scope, nơi mà biến sẽ được thừa hưởng trong phạm vi gần nó nhất. Để dễ hiểu hơn , chúng ta cùng xem ví dụ sau :

            1
           

            2
           

            3
           

            4
           

            5
           

            6
           

            7
           

            8
           

            9
           

            10
           

            11
           

             
                header {

             

             
                @
color:
               
                black
;
             

             
                background-color
:
                @color;

             

             
                nav {

             

             
                @
color:
               
                blue
;
             

             
                background-color
:
                @color;

             

             
                a {

             

             
                color
:
                @color;

             

             
                }

             

             
                }

             

             
                }

             
Trong ví dụ trên, header sẽ có màu background là màu đen, trong khi màu navmàu xanh da trời, và màu của a cũng là màu xanh da trời.
LESS chỉ là một trong số những giải pháp của CSS pre-processor, bạn có thể sử dụng SASS hoặc Stylus. Mình hy vọng là với bài viết này, các bạn sẽ có thêm một kiến thức mới về cách sử dụng CSS cho những trang web hay blog của mình