String Format for Double C#

The following examples show how to format float numbers to string in C#. You can use static method String.Format or instance methods double.ToString and float.ToString.

Digits after decimal point

This example formats double to string with fixed number of decimal places. For two decimal places use pattern „0.00“. If a float number has less decimal places, the rest digits on the right will be zeroes. If it has more decimal places, the number will be rounded.

[C#]
// just two decimal places
String.Format("{0:0.00}", 123.4567);      // "123.46"
String.Format("{0:0.00}", 123.4);         // "123.40"
String.Format("{0:0.00}", 123.0);         // "123.00"

Next example formats double to string with floating number of decimal places. E.g. for maximal two decimal places use pattern „0.##“.

[C#]
// max. two decimal places
String.Format("{0:0.##}", 123.4567);      // "123.46"
String.Format("{0:0.##}", 123.4);         // "123.4"
String.Format("{0:0.##}", 123.0);         // "123"

Digits before decimal point

If you want a float number to have any minimal number of digits before decimal point use N-times zero before decimal point. E.g. pattern „00.0“ formats a float number to string with at least two digits before decimal point and one digit after that.

[C#]
// at least two digits before decimal point
String.Format("{0:00.0}", 123.4567);      // "123.5"
String.Format("{0:00.0}", 23.4567);       // "23.5"
String.Format("{0:00.0}", 3.4567);        // "03.5"
String.Format("{0:00.0}", -3.4567);       // "-03.5"

Thousands separator

To format double to string with use of thousands separator use zero and comma separator before an usual float formatting pattern, e.g. pattern „0,0.0“ formats the number to use thousands separators and to have one decimal place.

[C#]
String.Format("{0:0,0.0}", 12345.67);     // "12,345.7"
String.Format("{0:0,0}", 12345.67);       // "12,346"

Zero

Float numbers between zero and one can be formatted in two ways, with or without leading zero before decimal point. To format number without a leading zero use # before point. For example „#.0“ formats number to have one decimal place and zero to N digits before decimal point (e.g. „.5“ or „123.5“).

Following code shows how can be formatted a zero (of double type).

[C#]
String.Format("{0:0.0}", 0.0);            // "0.0"
String.Format("{0:0.#}", 0.0);            // "0"
String.Format("{0:#.0}", 0.0);            // ".0"
String.Format("{0:#.#}", 0.0);            // ""

Align numbers with spaces

To align float number to the right use comma „,“ option before the colon. Type comma followed by a number of spaces, e.g. „0,10:0.0“ (this can be used only in String.Format method, not in double.ToString method). To align numbers to the left use negative number of spaces.

[C#]
String.Format("{0,10:0.0}", 123.4567);    // "     123.5"
String.Format("{0,-10:0.0}", 123.4567);   // "123.5     "
String.Format("{0,10:0.0}", -123.4567);   // "    -123.5"
String.Format("{0,-10:0.0}", -123.4567);  // "-123.5    "

Custom formatting for negative numbers and zero

If you need to use custom format for negative float numbers or zero, use semicolon separator;“ to split pattern to three sections. The first section formats positive numbers, the second section formats negative numbers and the third section formats zero. If you omit the last section, zero will be formatted using the first section.

[C#]
String.Format("{0:0.00;minus 0.00;zero}", 123.4567);   // "123.46"
String.Format("{0:0.00;minus 0.00;zero}", -123.4567);  // "minus 123.46"
String.Format("{0:0.00;minus 0.00;zero}", 0.0);        // "zero"

Some funny examples

As you could notice in the previous example, you can put any text into formatting pattern, e.g. before an usual pattern „my text 0.0“. You can even put any text between the zeroes, e.g. „0aaa.bbb0“.

[C#]
String.Format("{0:my number is 0.0}", 12.3);   // "my number is 12.3"
String.Format("{0:0aaa.bbb0}", 12.3);          // "12aaa.bbb3"

Nguồn: http://www.csharp-examples.net/

String Format for Int C#

Integer numbers can be formatted in .NET in many ways. You can use static method String.Format or instance method int.ToString. Following examples shows how to align numbers (with spaces or zeroes), how to format negative numbers or how to do custom formatting like phone numbers.

Add zeroes before number

To add zeroes before a number, use colon separator „:“ and write as many zeroes as you want.

[C#]
String.Format("{0:00000}", 15);          // "00015"
String.Format("{0:00000}", -15);         // "-00015"

Align number to the right or left

To align number to the right, use comma „,“ followed by a number of characters. This alignment option must be before the colon separator.

[C#]
String.Format("{0,5}", 15);              // "   15"
String.Format("{0,-5}", 15);             // "15   "
String.Format("{0,5:000}", 15);          // "  015"
String.Format("{0,-5:000}", 15);         // "015  "

Different formatting for negative numbers and zero

You can have special format for negative numbers and zero. Use semicolon separator „;“ to separate formatting to two or three sections. The second section is format for negative numbers, the third section is for zero.

[C#]
String.Format("{0:#;minus #}", 15);      // "15"
String.Format("{0:#;minus #}", -15);     // "minus 15"
String.Format("{0:#;minus #;zero}", 0);  // "zero"

Custom number formatting (e.g. phone number)

Numbers can be formatted also to any custom format, e.g. like phone numbers or serial numbers.

[C#]
String.Format("{0:+### ### ### ###}", 447900123456); // "+447 900 123 456"
String.Format("{0:##-####-####}", 8958712551);       // "89-5871-2551"

Nguồn: http://www.csharp-examples.net/

String Format for DateTime C#

This example shows how to format DateTime using String.Format method. All formatting can be done also using DateTime.ToString method.

Custom DateTime Formatting

There are following custom format specifiers y (year), M (month), d (day), h (hour 12), H (hour 24), m (minute), s (second), f (second fraction), F (second fraction, trailing zeroes are trimmed), t(P.M or A.M) and z (time zone).

Following examples demonstrate how are the format specifiers rewritten to the output.

[C#]
// create date time 2008-03-09 16:05:07.123
DateTime dt = new DateTime(2008, 3, 9, 16, 5, 7, 123);

String.Format("{0:y yy yyy yyyy}", dt);  // "8 08 008 2008"   year
String.Format("{0:M MM MMM MMMM}", dt);  // "3 03 Mar March"  month
String.Format("{0:d dd ddd dddd}", dt);  // "9 09 Sun Sunday" day
String.Format("{0:h hh H HH}",     dt);  // "4 04 16 16"      hour 12/24
String.Format("{0:m mm}",          dt);  // "5 05"            minute
String.Format("{0:s ss}",          dt);  // "7 07"            second
String.Format("{0:f ff fff ffff}", dt);  // "1 12 123 1230"   sec.fraction
String.Format("{0:F FF FFF FFFF}", dt);  // "1 12 123 123"    without zeroes
String.Format("{0:t tt}",          dt);  // "P PM"            A.M. or P.M.
String.Format("{0:z zz zzz}",      dt);  // "-6 -06 -06:00"   time zone

You can use also date separator / (slash) and time sepatator : (colon). These characters will be rewritten to characters defined in the current DateTimeForma­tInfo.DateSepa­rator and DateTimeForma­tInfo.TimeSepa­rator.

[C#]
// date separator in german culture is "." (so "/" changes to ".")
String.Format("{0:d/M/yyyy HH:mm:ss}", dt); // "9/3/2008 16:05:07" - english (en-US)
String.Format("{0:d/M/yyyy HH:mm:ss}", dt); // "9.3.2008 16:05:07" - german (de-DE)

Here are some examples of custom date and time formatting:

[C#]
// month/day numbers without/with leading zeroes
String.Format("{0:M/d/yyyy}", dt);            // "3/9/2008"
String.Format("{0:MM/dd/yyyy}", dt);          // "03/09/2008"

// day/month names
String.Format("{0:ddd, MMM d, yyyy}", dt);    // "Sun, Mar 9, 2008"
String.Format("{0:dddd, MMMM d, yyyy}", dt);  // "Sunday, March 9, 2008"

// two/four digit year
String.Format("{0:MM/dd/yy}", dt);            // "03/09/08"
String.Format("{0:MM/dd/yyyy}", dt);          // "03/09/2008"

Standard DateTime Formatting

In DateTimeForma­tInfo there are defined standard patterns for the current culture. For example property ShortTimePattern is string that contains value h:mm tt for en-US culture and valueHH:mm for de-DE culture.

Following table shows patterns defined in DateTimeForma­tInfo and their values for en-US culture. First column contains format specifiers for the String.Format method.

Specifier DateTimeFormatInfo property Pattern value (for en-US culture)
t ShortTimePattern h:mm tt
d ShortDatePattern M/d/yyyy
T LongTimePattern h:mm:ss tt
D LongDatePattern dddd, MMMM dd, yyyy
f (combination of D and t) dddd, MMMM dd, yyyy h:mm tt
F FullDateTimePattern dddd, MMMM dd, yyyy h:mm:ss tt
g (combination of d and t) M/d/yyyy h:mm tt
G (combination of d and T) M/d/yyyy h:mm:ss tt
m, M MonthDayPattern MMMM dd
y, Y YearMonthPattern MMMM, yyyy
r, R RFC1123Pattern ddd, dd MMM yyyy HH':'mm':'ss 'GMT' (*)
s SortableDateTi­mePattern yyyy'-'MM'-'dd'T'HH':'mm':'ss (*)
u UniversalSorta­bleDateTimePat­tern yyyy'-'MM'-'dd HH':'mm':'ss'Z' (*)
(*) = culture independent

Following examples show usage of standard format specifiers in String.Format method and the resulting output.

[C#]
String.Format("{0:t}", dt);  // "4:05 PM"                         ShortTime
String.Format("{0:d}", dt);  // "3/9/2008"                        ShortDate
String.Format("{0:T}", dt);  // "4:05:07 PM"                      LongTime
String.Format("{0:D}", dt);  // "Sunday, March 09, 2008"          LongDate
String.Format("{0:f}", dt);  // "Sunday, March 09, 2008 4:05 PM"  LongDate+ShortTime
String.Format("{0:F}", dt);  // "Sunday, March 09, 2008 4:05:07 PM" FullDateTime
String.Format("{0:g}", dt);  // "3/9/2008 4:05 PM"                ShortDate+ShortTime
String.Format("{0:G}", dt);  // "3/9/2008 4:05:07 PM"             ShortDate+LongTime
String.Format("{0:m}", dt);  // "March 09"                        MonthDay
String.Format("{0:y}", dt);  // "March, 2008"                     YearMonth
String.Format("{0:r}", dt);  // "Sun, 09 Mar 2008 16:05:07 GMT"   RFC1123
String.Format("{0:s}", dt);  // "2008-03-09T16:05:07"             SortableDateTime
String.Format("{0:u}", dt);  // "2008-03-09 16:05:07Z"            UniversalSortableDateTime

 

Nguồn: http://www.csharp-examples.net/

Chương trình hẹn giờ tắt máy tính bằng C#

Chương trình hẹn giờ tắt máy tính
Chương trình hẹn giờ tắt máy tính

Khi mới làm quen với chiếc máy vi tính, tôi đã luôn tò mò làm thế nào mình có thể viết một trang web, viết một phần mềm nho nhỏ. Có lẽ đó là lý do tôi chọn theo ngành Công nghệ Thông tin. Tuy vậy, tôi cũng chưa thể viết ngay được một phần mềm cho ra hồn, khi vào ĐH. Cho đến khi học về C#, Windows Form, tôi mới bắt đầu tự viết các phần mềm nho nhỏ, như chương trình hẹn giờ tắt máy tính, chương trình nghe nhạc, chương trình xem ảnh, chương trình thay đổi màn hình desktop (Windows XP)….
Bạn thấy đấy, nó không lớn, và cũng có nhiều người làm rồi, tuy vậy với một người yêu thích lập trình giống như tôi cảm giác tự mình làm ra một phần mềm (made by tự tui) vẫn rất thú vị. Và tôi nghĩ nhiều bạn lúc mới bắt đầu cũng có suy nghĩ giống vậy. Tôi vẫn thích dùng phần mềm do mình viết ra hơn, dù nó không thực sự là hoàn hảo.
Hôm nay, tôi sẽ hướng dẫn các bạn viết một chương trình nho nhỏ, đó là chương trình hẹn giờ tắt máy tính bằng C#. Bạn có thể sử dụng nó mỗi lúc để máy nghe nhạc, hay nghe truyện ma trước khi ngủ, tặng cho bạn bè, hay tặng bạn gái của bạn… Tùy tính sáng tạo của bạn, tôi có vài gợi ý như là: Hẹn giờ tắt máy, hẹn giờ đi chơi với bạn gái, hẹn giờ cứ tới 9h tối là hát bài “Chúc bé ngủ ngon” :D. Nó cũng hữu ích trong trường hợp bạn ngồi quá lâu trước máy vi tính, nó nhắc nhở bạn bằng một bài hát yêu thích, hay hiện lên hình ảnh cô gái sexy nào đó sau mỗi 45 phút. (Ý tưởng cũng không tồi nhỉ?)
Tôi đặt tên cho ứng dụng của mình là AppAutoShutdown. Bạn có thể đặt tên nào mà bạn thích. 🙂

Video Chương trình hẹn giờ tắt máy tính C#

Tóm tắt Video

  • Tạo dự án Windows Form trong VS
  • Thiết kế giao diện màn hình chính
  • Sử dụng control Timer
  • Viết Class ExitWindows
  • Xử lý sự kiện khi hẹn giờ

Hãy sáng tạo theo cách của bạn. Nâng cao một chút như khởi động cùng windowns, thu gọn chương trình vào khay hệ thống, hay hẹn giờ vào thời gian kế tiếp, như 12h chẳng hạn, thay gì 1h30ph.

Nếu bạn đã hoàn thành theo hướng dẫn mà vẫn gặp khó khăn, hãy tải mã nguồn ứng dụng tại đây:  Download hoặc tải về file exe của chương trình. Yêu cầu Net Framework 4.0.  AppAutoShutdown.Exe

Cảm ơn bạn đọc và tôi luôn đánh giá cao phản hồi của bạn.

Design Pattern là gì?

Design Pattern là một kỹ thuật dành cho lập trình hướng đối tượng. Nó cung cấp cho ta cách tư duy trong từng tình huống của việc lập trình hướng đối tượng, và phân tích thiết kế hệ thống phần mềm. Nó cần thiết cho cả các nhà lập trình và nhà phân tích thiết kế. Đối với những người chuyên về lập trình thì việc nắm vững công cụ lập trình thôi chưa đủ, họ cần phải có một tư duy, một kỹ năng giải quyết các tình huống nhỏ của công việc xây dựng phần mềm mà họ là người thi hành. Việc giải quyết này phải đảm bảo tính ổn định là họ có thể giải quyết được trong mọi tình huống, với thời gian đúng tiến độ, phương pháp giải quyết hợp lý và đặc biệt là phải theo một chuẩn nhất định. Những nhà phân tích thiết kế mức cao, việc nắm vững công cụ lập trình có thể là không cần thiết, nhưng họ cũng cần phải biết được ở những khâu nhỏ nhất chi tiết nhất của thiết kế của họ đưa ra có thể thực hiện được hay không và nếu thực hiện được thì có thể thực hiện như thế nào, và sẽ theo một chuẩn ra sao.
Design pattern được dùng khắp ở mọi nơi, trong các phần mềm hướng đối tượng các hệ thống lớn. Trong các chương trình trò chơi, … Và cả trong các hệ thống tính toán song song,..
Design pattern thể hiện tính kinh nghiệm của công việc lập trình, xây dựng và thiết kế phần mềm.Có thể chúng ta đã gặp design pattern ở đâu đó, trong các ứng dụng, cũng có thể chúng ta đã từng sử dụng những mẫu tương tự như design pattern để giải quyết những tình huống của mình, nhưng chúng ta không có một khái niệm gì về nó cả.

Mối quan hệ giữa các Pattern
Mối quan hệ giữa các Pattern

Design Pattern là gì?

Design patterns là tập các giải pháp cho cho vấn đề phổ biến trong thiết kế các hệ thống máy tính. Đây là tập các giải pháp đã được công nhận là tài liệu có giá trị, những người phát triển có thể áp dụng giải pháp này để giải quyết các vấn đề tương tự.

Giống như với các yêu cầu của thiết kế và phân tích hướng đối tượng (nhằm đạt được khả năng sử dụng các thành phần và thư viện lớp), việc sử dụng các mẫu cũng cần phải đạt được khả năng tái sử dụng các giải pháp chuẩn đối với vấn đề thường xuyên xảy ra.

Tại sao sử dụng Design Pattern?

Design pattern cung cấp giải pháp ở dạng tổng quát, giúp tăng tốc độ phát triển phần mềm bằng cách đưa ra các mô hình test, mô hình phát triển đã qua kiểm nghiệm. Thiết kế phần mềm hiệu quả đòi hỏi phải cân nhắc các vấn đề sẽ nảy sinh trong quá trình hiện thực hóa (implementation). Dùng lại các design pattern giúp tránh được các vấn đề tiềm ẩn có thể gây ra những lỗi lớn, dễ dàng nâng cấp, bảo trì về sau.
Một lợi thế lớn để sử dụng một mẫu thiết kế là lập trình viên khác sẽ có thể dễ dàng nhận ra nó (đặc biệt là nếu bạn sử dụng quy ước đặt tên tốt).

Khi nào nên sử dụng Design pattern?

Đó là khi bạn muốn giữ cho chương trình của mình thực sự đơn giản. Việc sử dụng các design pattern sẽ giúp chúng ta giảm được thời gian và công sức suy nghĩ ra các cách giải quyết cho những vấn đề đã có lời giải. Bạn có thể đọc qua cuốn “Head First Design Patterns” để có cái nhìn tổng quát hơn về design pattern.

Hệ thống các mẫu design pattern hiện có 23 mẫu được định nghĩa trong cuốn “Design patterns Elements of Reusable Object Oriented Software”. Các tác giả của cuốn sách là Erich Gamma, Richard Helm, Ralph Johnson và John Vlissides, hay còn được biết đến với các tên “Gang of Four” hay đơn giản là “GoF”. Hệ thống các mẫu này có thể nói là đủ và tối ưu cho việc giải quyết hết các vấn đề của bài toán phân tích thiết kế và xây dựng phần mềm trong thời điểm hiện tại. Hệ thống các mẫu design pattern được chia thành 3 nhóm: nhóm Creational (5 mẫu), nhóm Structural (7 mẫu) và nhóm Behavioral (11 mẫu).

Tên Mục đích
Nhóm Creational (nhóm kiến tạo)
1. Abstract Factory Cung cấp một interface cho việc tạo lập các đối tượng (có liên hệ với nhau) mà không cần qui định lớp khi hay xác định lớp cụ thể (concrete) tạo mỗi đối tượng
Tần suất sử dụng: cao
2. Builder Tách rời việc xây dựng (construction) một đối tượng phức tạp khỏi biểu diễn của nó sao cho cùng một tiến trình xây dựng có thể tạo được các biểu diễn khác nhau.
Tần suất sử dụng: trung bình thấp
3. Factory Method Định nghĩa Interface để sinh ra đối tượng nhưng để cho lớp con quyết định lớp nào được dùng để sinh ra đối tượng Factory method cho phép một lớp chuyển quá trình khởi tạo đối tượng cho lớp con.
Tần suất sử dụng: cao
4. Prototype Qui định loại của các đối tượng cần tạo bằng cách dùng một đối tượng mẫu, tạo mới nhờ vào sao chép đối tượng mẫu này.
Tần suất sử dụng: trung bình
5. Singleton Đảm bảo 1 class chỉ có 1 instance và cung cấp 1 điểm truy xuất toàn cục đến nó.
Tần suất sử dụng: cao trung bình
Nhóm Structural (nhóm cấu trúc)
6. Adapter Do vấn đề tương thích, thay đổi interface của một lớp thành một interface khác phù hợp với yêu cầu người sử dụng lớp.
Tần suất sử dụng: cao trung bình
7. Bridge Tách rời ngữ nghĩa của một vấn đề khỏi việc cài đặt ; mục đích để cả hai bộ phận (ngữ nghĩa và cài đặt) có thể thay đổi độc lập nhau.
Tần suất sử dụng: trung bình
8. Composite Tổ chức các đối tượng theo cấu trúc phân cấp dạng cây; Tất cả các đối tượng trong cấu trúc được thao tác theo một cách thuần nhất như nhau.
Tạo quan hệ thứ bậc bao gộp giữa các đối tượng. Client có thể xem đối tượng bao gộp và bị bao gộp như nhau -> khả năng tổng quát hoá trong code của client -> dễ phát triển, nâng cấp, bảo trì.
Tần suất sử dụng: cao trung bình
9. Decorator Gán thêm trách nhiệm cho đối tượng (mở rộng chức năng) vào lúc chạy (dynamically).
Tần suất sử dụng: trung bình
10. Facade Cung cấp một interface thuần nhất cho một tập hợp các interface trong một “hệ thống con” (subsystem). Nó định nghĩa 1 interface cao hơn các interface có sẵn để làm cho hệ thống con dễ sử dụng hơn.
Tần suất sử dụng: cao
11. Flyweight Sử dụng việc chia sẻ để thao tác hiệu quả trên một số lượng lớn đối tượng “cở nhỏ” (chẳng hạn paragraph, dòng, cột, ký tự…).
Tần suất sử dụng: thấp
12. Proxy Cung cấp đối tượng đại diện cho một đối tượng khác để hỗ trợ hoặc kiểm soát quá trình truy xuất đối tượng đó. Đối tượng thay thế gọi là proxy.
Tần suất sử dụng: cao trung bình
Nhóm Behavioral (nhóm tương tác)
13. Chain of Responsibility Khắc phục việc ghép cặp giữa bộ gởi và bộ nhận thông điệp; Các đối tượng nhận thông điệp được kết nối thành một chuỗi và thông điệp được chuyển dọc theo chuỗi nầy đến khi gặp được đối tượng xử lý nó.Tránh việc gắn kết cứng giữa phần tử gởi request với phần tử nhận và xử lý request bằng cách cho phép hơn 1 đối tượng có có cơ hội xử lý request . Liên kết các đối tượng nhận request thành 1 dây chuyền rồi “pass” request xuyên qua từng đối tượng xử lý đến khi gặp đối tượng xử lý cụ thể.
Tần suất sử dụng: trung bình thấp
14. Command Mỗi yêu cầu (thực hiện một thao tác nào đó) được bao bọc thành một đối tượng. Các yêu cầu sẽ được lưu trữ và gởi đi như các đối tượng.Đóng gói request vào trong một Object , nhờ đó có thể nthông số hoá chương trình nhận request và thực hiện các thao tác trên request: sắp xếp, log, undo…
Tần suất sử dụng: cao trung bình
15. Interpreter Hỗ trợ việc định nghĩa biểu diễn văn phạm và bộ thông dịch cho một ngôn ngữ.
Tần suất sử dụng: thấp
16. Iterator Truy xuất các phần tử của đối tượng dạng tập hợp tuần tự (list, array, …) mà không phụ thuộc vào biểu diễn bên trong của các phần tử.
Tần suất sử dụng: cao
17. Mediator Định nghĩa một đối tượng để bao bọc việc giao tiếp giữa một số đối tượng với nhau.
Tần suất sử dụng: trung bình thấp
18. Memento Hiệu chỉnh và trả lại như cũ trạng thái bên trong của đối tượng mà vẫn không vi phạm việc bao bọc dữ liệu.
Tần suất sử dụng: thấp
19. Observer Định nghĩa sự phụ thuộc một-nhiều giữa các đối tượng sao cho khi một đối tượng thay đổi trạng thái thì tất cả các đối tượng phụ thuộc nó cũng thay đổi theo.
Tần suất sử dụng: cao
20. State Cho phép một đối tượng thay đổi hành vi khi trạng thái bên trong của nó thay đổi , ta có cảm giác như class của đối tượng bị thay đổi.
Tần suất sử dụng: trung bình
21. Strategy Bao bọc một họ các thuật toán bằng các lớp đối tượng để thuật toán có thể thay đổi độc lập đối với chương trình sử dụng thuật toán.Cung cấp một họ giải thuật cho phép client chọn lựa linh động một giải thuật cụ thể khi sử dụng.
Tần suất sử dụng: cao trung bình
22. Template method Định nghĩa phần khung của một thuật toán, tức là một thuật toán tổng quát gọi đến một số phương thức chưa được cài đặt trong lớp cơ sở; việc cài đặt các phương thức được ủy nhiệm cho các lớp kế thừa.
Tần suất sử dụng: trung bình
23. Visitor Cho phép định nghĩa thêm phép toán mới tác động lên các phần tử của một cấu trúc đối tượng mà không cần thay đổi các lớp định nghĩa cấu trúc đó.
Tần suất sử dụng: thấp

Vui lòng ghi rõ nguồn khi bạn trích dẫn lại bài viết này.

Sử dụng Stopwatch để kiểm tra tốc độ xử lý trong .NET

Là một lập trình viên bạn thường hay quan tâm với vấn đề tối ưu, hiệu suất, tốc độ xử lý của ứng dụng. Đôi khi bạn muốn so sánh 2 thuật toán để tìm ra thuật nào toán nào tối ưu hơn. Hay đơn giản, bạn muốn biết thời gian chạy của thuật toán là bao lâu? Khi mới bước vào thế giới lập trình mình cũng hay tự đặt ra câu hỏi, thuật toán của mình mất bao nhiêu thời gian để hoàn thành? Liệu mình có thể thay đổi để rút ngắn thời gian thực thi.

Trong .NET, Microsoft đã cung cấp cho chúng ta class Stopwatch. Stopwatch (giống như đồng hồ chấm giờ trong cuộc thi chạy) sẽ cho chúng ta biết thời gian từ lúc bắt đầu đến khi kết thúc của thuật toán, phương thức xử lý là bao nhiêu lâu. Cách sử dụng Stopwatch khá đơn giản. Chúng ta chỉ cần quan tâm các phương thức Start(), Stop(), sau đó dùng thuộc tính Elapsed để kiểm tra thời gian đã qua.
Để sử dụng chúng ta cần using namspace System.Diagnostics;

Cách sử dụng Stopwatch (Ứng dụng Console C#)

using System;
using System.Diagnostics;
using System.Threading;
class Program
{
    static void Main(string[] args)
    {
        Stopwatch stopWatch = new Stopwatch();
        stopWatch.Start();
        Thread.Sleep(10000);
        stopWatch.Stop();
        // Get the elapsed time as a TimeSpan value.
        TimeSpan ts = stopWatch.Elapsed;

        // Format and display the TimeSpan value.
        string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
            ts.Hours, ts.Minutes, ts.Seconds,
            ts.Milliseconds / 10);
        Console.WriteLine("RunTime " + elapsedTime);
    }
}

Một ví dụ khác khi mình sử dụng Stopwatch để kiểm tra thử thời gian chạy Insert 1.000.000 dòng vào Cơ sở sữ liệu SQL Server hết bao nhiêu thời gian. Code đơn giản cho các bạn dễ hình dung, và cũng chưa thật sự tối ưu nhé. (Ứng dụng Console C#). Chú ý: cách này rất củ chuối, hoàn toàn không tối ưu. Các bạn không nên áp dụng, nếu có giải pháp hay, hãy chia sẻ cùng mọi người nhé.
Tham khảo cách kết nối CSDL trong C# tại đây

Code

/* FileName: Program.cs
Project Name: LoopSQL
Date Created: 9/27/2014 15:50:08 PM
Description: Auto-generated
Version: 1.0.0.0
Author:	Lê Thanh Tuấn - Khoa CNTT
Author Email: [email protected]
Author Mobile: 0976060432
Author URI: http://tuanitpro.com
License: 

*/
using System;
using System.Data;
using System.Data.SqlClient;
using System.Diagnostics;
namespace LoopSQL
{
    class Program
    {
        static void Insert()
        {
            Console.WriteLine("Begin " + DateTime.Now);             
            using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS; Initial Catalog=Test; User id=sa;
 Password=sa"))
            {
                conn.Open();
                string sql = "INSERT INTO Table1(Col1, Col2, Col3, Col4, Col5) values(1,2,3,4,5)";
                SqlCommand cmd = new SqlCommand(sql, conn);
                cmd.CommandType = CommandType.Text;

                for (int i = 0; i < 1000000; i++)
                {
                    cmd.ExecuteNonQuery();
                }              
                conn.Close();
            }
            Console.WriteLine("End " +DateTime.Now);
        }
        static void Main(string[] args)
        {
            Console.WriteLine("Insert 1.000.000 dong vao CSDL");
            Stopwatch stopWatch = new Stopwatch();
            stopWatch.Start();
            Insert();
            stopWatch.Stop();
            TimeSpan ts = stopWatch.Elapsed;
            string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
                ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds / 10);
            Console.WriteLine("RunTime " + elapsedTime);
            Console.ReadKey();
        }        
    }
}

Kết quả ở đây mình mất tới 12m23s59. Các bạn thử xem nhé. (Máy mình cấu hình Core I5, RAM 8GB, SQL Server Express 2012)

tuanitpro.com-inert1000000-sqlserver

Chúc các bạn thành công.

Kiểm tra khóa chính trước khi Insert trong Stored Procedure

Khi làm việc với Cơ sở dữ liệu chúng ta hay gặp các tình huống phát sinh lỗi do ràng buộc dữ liệu. Ví dụ khi người dùng đăng ký thành viên, chúng ta cần kiểm tra email có tồn tại hay chưa? Hoặc thêm một sản phẩm (ở đây là sách) vào trong CSDL, cần kiểm tra mã sách tồn tại hay chưa? Chúng ta dễ dàng kiểm tra bằng hàm EXISTS  trong Stored Procedure của SQL.

SQL EXISTS được sử dụng kết hợp với một truy vấn phụ và được coi là đáp ứng, nếu trả về ít nhất một dòng . Nó có thể được sử dụng trong các trường hợp như SELECT, INSERT, UPDATE, hoặc DELETE .

Hướng dẫn sau giúp bạn kiểm tra Mã sách tồn tại hay chưa trước khi thực thi lệnh INSERT dữ liệu. Nếu có rồi thì bỏ qua, ngược lại thì INSERT vào trong CSDL.

Code tạo bảng mẫu

Create Table Book
(
    BookID nvarchar(50) primary key,
    Name nvarchar(50),
    Author nvarchar(50)
)
insert into Book(BookID, Name, Author) values('B01',N'Lá nằm trong lá',N'Nguyễn Nhật Ánh')

Code tạo thủ tục

create procedure Book_Insert
(
    @BookID nvarchar(50),
    @Name nvarchar(50),
    @Author nvarchar(50)
)
as
begin
    if not exists(select top 1 BookID from Book where BookID = @BookID)
        insert into Book(BookID, Name, Author) values(@BookID,@Name,@Author)
end
-- Test
exec Book_Insert 'B02', 'Văn học VN','Không rõ'

Chúc các bạn thành công

SQL Server connection strings

Chào các bạn. Trong quá trình tham gia các diễn đàn, mình hay bắt gặp nhiều bạn hay gặp lỗi khi kết nối CSDL trong C#, hay ASP.NET. Do vậy mình chia sẻ một số cách kết nối chuẩn SQL Server connection strings dùng trong các ứng dụng liên quan tới SQL Server như lập trình C#, ứng dụng web ASP.NET, MVC… Hy vọng các bạn bớt khó khăn hơn khi gặp tình huống như vậy. 🙂

Standard Security

Server=myServerAddress;Database=myDataBase;User Id=myUsername; Password=myPassword;
VD: Server=TUANITPRO.com;Database=myDataBase;User Id=myUsername; Password=myPassword;
hoặc
Server=192.168.1.100;Database=myDataBase;User Id=myUsername; Password=myPassword;

Trusted Connection

Server=myServerAddress;Database=myDataBase;Trusted_Connection=True;

Connection to a SQL Server instance

Server=myServerName\myInstanceName;Database=myDataBase;User Id=myUsername;Password=myPassword;
VD:
Server=TUANITPRO-PC\SQLEXPRESS;Database=myDataBase;User Id=myUsername; Password=myPassword;

hoặc
Server=TUANITPRO-PC\SQLEXPRESS;Database=myDataBase;UID=myUsername; PWD=myPassword;
hoặc
Server=.\SQLEXPRESS;Database=myDataBase;User Id=myUsername;Password=myPassword;

Server=.\SQLEXPRESS;Database=myDataBase;UID=myUsername; PWD=myPassword;

Ngoài ra còn một số cách viết khác trong .NET

Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;User ID=myDomain\myUsername;Password=myPassword;
VD:
Data Source=TUANITPRO.com;Initial Catalog=myDataBase;Integrated Security=SSPI;User ID=myUsername;Password=myPassword;
Data Source=192.168.1.100;Initial Catalog=myDataBase;Integrated Security=SSPI;User ID=myDomain\myUsername;Password=myPassword;
Data Source=TUANITPRO-PC\SQLEXPRESS;Initial Catalog=myDataBase;Integrated Security=SSPI;User ID=myDomain\myUsername;Password=myPassword;
Data Source=.\SQLEXPRESS;Initial Catalog=myDataBase;Integrated Security=SSPI;User ID=myDomain\myUsername;Password=myPassword;

*Cách này dùng khi kết nối file *.mdf trong thư mục App_Data của ứng dung web .NET

Server=.\SQLExpress;AttachDbFilename=|DataDirectory|mydbfile.mdf;Database=dbname;Trusted_Connection=Yes;

Chúc các bạn thành công.

OOP – Interface vs Abstract class

Hiện nay mặc dù OOP đã rất phổ biến nhưng đa số vẫn còn khá mơ hồ trong việc phân biệt và định nghĩa hai khái niệm Interface và Abstract class. Có vẻ vấn đề này không được dạy rõ ràng ở trường, hoặc có thể các người dạy cũng chưa nắm rõ về nó. Ngoài ra, đây còn là một vấn đề cần giải quyết mà xác suất bạn nhận được khi đi phỏng vấn là khá cao.

Is-a và Can-do

Bỏ qua tất cả những phần về lý thuyết của việc tạo một abstract class và interface. Bạn không cần quan tâm nhiều đến việc abstract có thể khai báo những gì, hay interface có được phép định nghĩa nội dung phương thức hay không. Điểm cơ bản khi bạn được hỏi về sự khác biệt giữa chúng là gì? Đó chính là mục đích mà chúng được sử dụng:

–          Abstract class: là một class cha cho tất cả các class có cùng bản chất. Bản chất ở đây được hiểu là kiểu, loại, nhiệm vụ của class. Hai class cùng hiện thực một interface có thể hoàn toàn khác nhau về bản chất.

–          Interface: là một chức năng mà bạn có thể thêm và bất kì class nào. Từ chức năng ở đây không đồng nghĩa với phương thức (hoặc hàm). Interface có thể bao gồm nhiều hàm/phương thức và tất cả chúng cùng phục vụ cho một chức năng.

Vậy, bạn không nên nhầm lẫn khi nói về việc một class được implement hay extend. Nhiều người thường hay đồng nhất là không phân biệt hai từ này, nhưng chính chúng đã nói lên sự khác biệt giữa interface và abstract class. Bạn chỉ có thể thừa kế (extend) từ một class và chỉ có thể hiện thực (implement) các chức năng (interface) cho class của mình.

Theo cách ngắn gọn, quan hệ giữa một class khi thừa kế một abstract class được gọi là is-a, và một class khi hiện thực một interface được gọi là can-do (hoặc –able).

Hãy xem ví dụ sau, tôi có:

–          Interface: Barkable, Runable, Flyable, Swimable.

–          Abstract class Animal và các sub class: Bolt, AngryBird và Nemo.

–          Abstract class Machine và các sub class: McQueen, Siddeley.

OOP – Interface vs Abstract class
OOP – Interface vs Abstract class

Như bạn thấy, mặc dù cả McQueen và Bolt đều được hiện thực interface Runable, nhưng chúng hoàn toàn thuộc hai loại khác nhau. Và tất nhiên một class có thể can-do nhiều thứ, ví dụ như Bolt có thể chạy và “bow wow”.

Dùng Interface như một “bản thiết kế” của class?

Đây là một điều thường được dùng để trả lời cho hai câu hỏi:

–          Interface được dùng để làm gì?

–          Tại sao không thể định nghĩa phần thân cho các phương thức của interface.

Xét ở một mức độ nào đó điều này là hợp lý, nhưng như đã nói ở phần trên, nó chỉ được dùng để mô tả một “bản thiết kế” cho một chức năng của class. Nếu muốn tạo một bản thiết kế, hãy sử dụng abstract class. Một bản thiết kế tất nhiên sẽ có những thứ đã được dựng sẵn và có những thứ là abstract.

Một câu trả lời có thể lý giải phần nào câu hỏi thứ hai là việc cho phép định nghĩa thân phương thức trong các interface có thể khiến cho hiệu suất bị giảm sút. Nguyên nhân là việc tìm kiếm các phương thức sẽ diễn ra lâu hơn vì phải duyệt qua các interface, thay vì chỉ cần phải tìm trong class cha của nó.

OOP – Interface vs Abstract class
OOP – Interface vs Abstract class

Về công dụng của interface, xét ở mức ứng dụng, các interface có thể được hiểu như các plugin hoặc thư viện/phần mềm third-party. Việc hiện thực một interface cho class cũng giống như cài thêm plugin cho một phần mềm vậy.

Bảng so sánh

Cuối cùng, cũng nên liệt kê các điểm khác biệt giữa hai khái niệm này để bạn có thể sử dụng được khi cần thiết. Các điểm khác biệt này có thể khác nhau tùy vào ngôn ngữ mà bạn sử dụng. Vì vậy bạn chỉ cần nhớ các điểm căn bản sau:

Interface Abstract class
Multiple inheritance Một class có thể hiện thực nhiều interface.(tạm coi là thừa kế) Không hỗ trợ đa thừa kế
Default implementation Không thể định nghĩa code xử lý, chỉ có thể khai báo. Có thể định nghĩa thân phương thức, property.
Access Modifiers Mọi phương thức, property đều mặc định là public. Có thể xác định modifier.
Adding functionality Mọi phương thức, property của interface cần được hiện thực trong class. Không cần thiết.
Fields and Constants Không

Nguồn: tham khảo Internet

Ý tưởng ứng dụng

Kinh Doanh

  • Ứng dụng quản lí khách sạn (khách hàng, kinh doanh,…)
  • Ứng dụng báo cáo kinh doanh (định lượng/số lượng buôn bán theo ngày, tháng, năm)
  • Ứng dụng quản lí nhân viên từ xa.
  • Ứng dụng thực hiện giao dịch tại các tài khoản ngân hàng một cách bảo mật, an toàn
  • Ứng dụng quản lí phòng trọ từ xa
  • Ứng dụng mua bán quần áo theo phong thủy
  • Ứng dụng tra cưu nhanh gia cả các thị trường (áo quần, công nghệ, nước giải khát)
  • Ứng dụng thu âm cuộc nói chuyện
  • Ứng dụng về camera có hỗ trợ chức năng giám sát và theo dõi
  • Ứng dụng hỗ trợ nhập dữ liệu bằng giọng nói
  • Ứng dụng soạn và gửi mail bằng giọng nói
  • ứng dụng về soạn thảo văn bản
  • Ứng dụng đọc file nén
  • Ứng dụng định vị cuộc gọi đến và đi
  • Ứng dụng vẽ bản vẽ xây dựng nhà ở
  • Ứng dụng định hướng việc làm và tuyển dụng
  • Ứng dụng chia sẻ công việc và kinh nghiệm làm việc
  • Ứng dụng thời khóa biểu cho công việc hàng ngày
  • Ứng dụng dành riêng cho kế toán và tài chính
  • Ứng dụng soạn và gửi mail có file đính kèm nhanh chóng và dễ dàng
  • Ứng dụng cập nhật tin tức về tỉ giá, giá vàng, lãi suất và giá của các mặt hàng trên thị trường
  • Ứng dụng đọc và quản lý các mã vạch hàng hóa
  • Ứng dụng phổ biến pháp luật
  • Ứng dụng cung cấp thông tin về địa điểm mua hàng giá rẻ
  • Ứng dụng theo dõi chuyển phát hàng hóa nhanh
  • Ứng dụng cập nhật thông tin về xe ô tô
  • Ứng dụng hỗ trợ làm việc nhóm hiệu quả
  • Ứng dụng thiết kế, tạo lập vật thể 3D
  • Ứng dụng hỗ trợ chụp hình thẻ
  • Ứng dụng dạy chơi chứng khoán ảo cho người mới vào nghề

Du Lịch

  • Ứng dụng cập nhật tin tức giao thông
  • Ứng dụng tìm đường nhanh
  • Ứng dụng định vị cuộc gọi đến và đi
  • Ứng dụng bản đồ kết hợp địa điểm nhà hàng, khách sạn
  • Ứng dụng cung cấp thông tin về các món ăn (giá cả và địa điểm)
  • Ứng dụng đọc báo, chỉ đường,… có hỗ trợ offline
  • Ứng dụng truy cập tìm taxi nhanh
  • Ứng dụng truy cập tìm chốt công an
  • Ứng dụng tra cứu các điểm ATM
  • Ứng dụng đặt vé qua mạng và trừ tiền trực tiếp trên tài khoản
  • Ứng dụng giới thiệu phong cảnh của các khu du lịch
  • Ứng dụng giá cả khu du lịch và báo giá cho một chuyến du lịch
  • Ứng dụng giới thiệu các tour du lịch
  • Ứng dụng cung cấp thông tin về giá tiền các món ăn tại địa điểm du lịch
  • Ứng dụng cập nhật thời tiết tại các địa điểm du lịch
  • Ứng dụng cập nhật thông tin về các phương tiện di chuyển tại các địa điểm du lịch
  • Ứng dụng mua vé trực tuyến khi đi du lịch
  • Ứng dụng chia sẻ kinh nghiệm và tư vấn, chỉ dẫn thời gian đi du lịch
  • Ứng dụng cập nhật về tình trạng ô nhiễm môi trường có kèm hình ảnh
  • Ứng dụng bản đồ theo dõi lộ trình xe bus
  • Ứng dụng tính giá cước Taxi
  • Ứng dụng cập nhật các điểm du lịch lạ và độc đáo
  • Ứng dụng dịch tiếng nước ngoài sang Tiếng Việt
  • Ứng dụng cung cấp thông tin về địa điểm mua hàng giá rẻ
  • Ứng dụng cập nhật các thông tin giảm giá về tour, vé máy bay, nhà hàng, khách sạn
  • Ứng dụng cập nhật những lưu ý, những điều cần tránh khi đến một địa điểm du lịch
  • Ứng dụng chụp và chỉnh sửa kèm hình ảnh độc đáo riêng của địa điểm du lịch
  • Ứng dụng lịch vạn niên có hình ảnh minh họa sống động
  • Ứng dụng từ điển
  • Ứng dụng cung cấp thông tin và chia sẻ kinh nghiệm về các địa điểm du lịch hè dành cho trẻ

Giáo Dục

  • Ứng dụng đọc và chia sẻ sách, tạp chí
  • Ứng dụng định hướng việc làm và tuyển dụng
  • Ứng dụng dạy học (ngoại ngữ, quảng cáo, tin học, …cho trẻ em và người lớn)
  • Ứng dụng hỗ trợ giảng dạy
  • Ứng dụng giải bài tập trên mạng
  • Ứng dụng tư vấn, chia sẻ kinh nghiệm và hướng dẫn phương pháp học tốt
  • Ứng dụng cung cấp thông tin, chia se kinh nghiệm về trường tốt, giáo viên giỏi
  • Ứng dụng giúp học tốt các môn tự nhiên (toán, lý, hóa) dễ dàng
  • Ứng dụng dịch tiếng nước ngoài sang Tiếng Việt
  • Ứng dụng từ điển
  • Ứng dụng cung cấp thông tin, cách làm các món ăn ngon và chia sẻ với mọi người
  • Ứng dụng phổ biến pháp luật Việt Nam
  • Ứng dụng giới thiệu và cách bảo vệ môi trường sạch
  • Ứng dụng cung cấp thông tin và tin tức về thời trang
  • Ứng dụng vẽ kí họa trên di động cho các bạn thích mỹ thuật
  • Ứng dụng trợ lý nấu ăn
  • Ứng dụng Cho Biết Thông Tin Cơ Bản Các Loại Động Thực Vật
  • Ứng dụng học tổng hợp cho từng trình độ kiến thức
  • Ứng dụng sổ tay hóa học
  • Ứng dụng thiết kế, tạo lập vật thể 3D
  • Ứng dụng tổng hợp video quảng cáo, nhạc thiếu nhi dành cho bé
  • Ựng dụng hỗ trợ học tiếng việt (cho bé hoặc người nước ngoài)
  • Ứng dụng hỗ trợ đàn ông nuôi con lần đầu
  • Ứng dụng thư viện bài giảng và kiến thức dành cho hs gv
  • Ứng dụng dạy sửa chữa vi tính cơ bản
  • Ứng dụng dạy chơi chứng khoán ảo cho người mới vào nghề
  • Ứng dụng mạng xã hội du học sinh
  • Ứng dụng về lịch sử Việt Nam
  • Ứng dụng chia sẻ kinh nghiệm đi du học
  • Ứng dụng cung cấp thông tin và chia sẻ kinh nghiệm về các phòng trọ cho sinh viên

Sức Khỏe

  • Ứng dụng cung cấp mẹo vặt chăm sóc gia đình
  • Ứng dụng dạy các môn thể dục và thể thao
  • Ứng dụng về cách ăn uống, chế độ dinh dưỡng cho trẻ
  • Ứng dụng về thuốc và mẹo vặt chữa trị cho trẻ
  • Ứng dụng phần mềm điện tim
  • Ứng dụng đo lường sức khỏe
  • Ứng dụng hỗ trợ các loại bệnh khác nhau
  • Ứng dụng đo lường lượng đường trong máu
  • Ứng dụng cung cấp thông tin về 1 số bệnh hay gặp và giúp giải đáp thắc mắc nhanh
  • Ứng dụng cung cấp thông tin về các loại thuốc
  • Ứng dụng tư vấn các bệnh sinh lý và phụ khoa khó nói
  • Ứng dụng về trao đổi, chia sẻ kinh nghiệm và tư vấn về sức khỏe
  • Ứng dụng cung cấp thông tin và tư vấn của các bác sỹ có uy tín
  • Ứng dụng thông minh cảm ứng được nhiệt độ cơ thể
  • Ứng dụng đo huyết áp
  • Ứng dụng tư vấn về chăm sóc sức khỏe sau sinh
  • Ứng dụng cung cấp thông tin về sức khỏe tuổi trung niên
  • Ứng dụng hướng dẫn sử dụng thuốc và thông tin xe cứu thương nhanh nhất
  • Ứng dụng về cách làm đẹp có kèm hình ảnh
  • Ứng dụng cung cấp thông tin về các nơi tập thể dục thể hình
  • Ứng dụng cung cấp thông tin và địa chỉ các thẩm mỹ viện
  • Ứng dụng tư vấn về cách sử dụng sản phẩm chăm sóc da
  • Ứng dụng về các bài tập và hướng dẫn tập Yoga
  • Ứng dụng hỗ trợ người cận thị
  • Ứng dụng về bảo vệ môi trường
  • Ứng dụng trợ lý nấu ăn
  • Ứng dụng cập nhật thông tin và tìm kiếm các bệnh viện
  • Ứng dụng hỗ trợ đàn ông nuôi con lần đầu
  • Ứng dụng hỗ trợ người khuyết tật
  • Ứng dụng nhận diện màu cho người bị mù màu

Trò Chơi & Giải Trí

  • Ứng dụng cập nhật tin tức mới nhất về những người nổi tiếng
  • Ứng dụng bình luận về bóng đá
  • Ứng dụng cung cấp thông tin mới nhất về các tác phẩm nghệ thuật
  • Ứng dụng đọc và chia sẻ sách, tạp chí
  • Ứng dụng chỉnh sửa phim ảnh
  • Ứng dụng chụp hình 3D
  • Ứng dụng chụp vật thể đang di chuyển không bị nhòe
  • Ứng dụng download nhanh các hình ảnh trên mạng
  • Ứng dụng bản đồ kết hợp địa điểm nhà hàng, khách sạn
  • Ứng dụng cung cấp thông tin về các món ăn (giá cả và địa điểm)
  • Ứng dụng đặt món ăn qua điện thoại
  • Ứng dụng đọc báo, chỉ đường, … có hỗ trợ offline
  • Ứng dụng chơi các nhạc cụ trên điện thoại
  • Ứng dụng tìm kiếm khu vui chơi dành cho trẻ em tại TPHCM
  • Game phiêu lưu có yếu tố phiêu lưu hấp dẫn cho con nít
  • Game tương tác nhiều người chơi cùng 1 màn
  • Game thông minh phục vụ cho học tập
  • Game tự điều chỉnh, lập trình theo sở thích.
  • Ứng dụng giao tiếp với bạn bè
  • Ứng dụng tìm bài hát bằng giọng nói
  • Ứng dụng hát karaoke trên điện thoại
  • Ứng dụng thu âm giọng hát và có chức năng chia sẻ cho mọi người
  • Ứng dụng tìm kiếm nhanh danh sách nhạc và phim mà không vào trình duyệt web
  • Ứng dụng về truyện cười, hài, tiếu lâm, danh ngôn và tục ngữ
  • Ứng dụng cung cấp thông tin và tin tức về thời trang
  • Ứng dụng giới thiệu phong cảnh của các khu du lịch
  • Ứng dụng giá cả khu du lịch và báo giá cho một chuyến du lịch
  • Ứng dụng giới thiệu các tour du lịch
  • Ứng dụng cung cấp thông tin về giá tiền các món ăn tại địa điểm du lịch
  • Ứng dụng cập nhật thông tin về các phương tiện di chuyển tại các địa điểm du lịch
  • Ứng dụng cập nhật thông tin về xe ô tô
  • Game dạy trẻ phân biệt màu sắc từ những đồ vật xung quanh mình
  • Ứng dụng chơi nhạc và phim tốt hơn mặc định
  • Ứng dụng vẽ kí họa trên di động cho các bạn thích mỹ thuật
  • Ứng dụng chỉnh sửa ảnh, tạo truyện tranh mang phong cách riêng
  • Ứng dụng tổng hợp video quảng cáo, nhạc thiếu nhi dành cho bé
  • Ứng dụng xem thông tin chòm sao bằng công nghệ thực tế ảo
  • Ứng dụng chụp ảnh thay đổi khuôn mặt
  • Game chơi chứng khoán ảo cho người mới vào nghề
  • Ứng dụng giả lập game flash

Công Cụ & Tiện Ích

  • Ứng dụng thực hiện giao dịch tại các tài khoản ngân hàng một cách bảo mật, an toàn
  • Đọc tin tức bằng giọng nói, không cần chỉ thị bằng tay
  • Ứng dụng cập nhật tin tức giao thông
  • Ứng dụng thu âm cuộc nói chuyện
  • Ứng dụng về camera có hỗ trợ chức năng giám sát và theo dõi
  • Ứng dụng chỉnh sửa phim ảnh
  • Ứng dụng hỗ trợ nhập dữ liệu bằng giọng nói
  • Ứng dụng soạn và gửi mail bằng giọng nói
  • Ứng dụng gọi điện qua internet hỗ trợ audio và video
  • Ứng dụng soạn và gửi tin nhắn bằng giọng nói
  • Ứng dụng gửi tin nhắn có kèm hình ảnh
  • Ứng dụng chỉnh sửa phim ảnh
  • Ứng dụng chụp hình 3D
  • Ứng dụng chụp vật thể đang di chuyển không bị nhòe
  • Ứng dụng download nhanh các hình ảnh trên mạng
  • Ứng dụng về soạn thảo văn bản
  • Ứng dụng đọc file nén
  • Ứng dụng tìm đường nhanh
  • Ứng dụng định vị cuộc gọi đến và đi
  • Ứng dụng bản đồ kết hợp địa điểm nhà hàng, khách sạn
  • Ứng dụng vẽ bản vẽ xây dựng nhà ở
  • Ứng dụng dịch tiếng nước ngoài sang Tiếng Việt
  • Ứng dụng soạn và gửi mail có file đính kèm nhanh chóng và dễ dàng
  • Ứng dụng đọc báo, chỉ đường, … có hỗ trợ offline
  • Ứng dụng gọi điện đến số cố định miễn phí
  • Ứng dụng mua sắm trực tuyến
  • Ứng dụng lịch vạn niên có hình ảnh minh họa sống động
  • Ứng dụng về thời tiết
  • Ứng dụng thay đổi giao diện cho màn hình
  • Ứng dụng hỗ trợ thanh toán tiền điện, nước, internet,… qua điện thoại
  • Ứng dụng truy cập tìm taxi nhanh
  • Ứng dụng truy cập tìm chốt công an
  • Ứng dụng tra cứu các điểm ATM
  • Ứng dụng cập nhật tin tức xổ số
  • Ứng dụng đặt vé qua mạng và trừ tiền trực tiếp trên tài khoản
  • Ứng dụng báo thức bằng giọng nói
  • Ứng dụng cung cấp thông tin về địa điểm mua hàng giá rẻ
  • Ứng dụng Heremap có cấu hình giao diện sống động và đẹp mắt hơn
  • Ứng dụng cập nhật thời tiết tại các địa điểm du lịch
  • Ứng dụng mua vé trực tuyến khi đi du lịch
  • Ứng dụng có chế độ nhận dạng chữ viết trên giấy
  • Ứng dụng kiểm soát tin nhắn rác
  • Ứng dụng thiết bị định vị và camera theo dõi em bé ngủ
  • Ứng dụng chỉnh sửa video clip
  • Ứng dụng tạo video từ hình ảnh
  • Ứng dụng hỗ trợ cho người tham gia giao thông (camera, bản đồ, …)
  • Ứng dụng quản lí thư mục và file trên điện thoại
  • Ứng dụng quay phim màn hình điện thoại
  • Ứng dụng biến điện thoại thành remote cho Tivi và PC
  • Ứng dụng tra cứu tắc đường, chia sẻ đoạn đường đang tắc
  • Ứng dụng Chụp ảnh Phơi sáng và Xóa phông như DSLR
  • Ứng dụng báo thức hiệu quả và độc đáo
  • Ứng dụng tự chụp hình khi vỗ tay
  • Ứng dụng thông báo sự cố và gặp nạn cho bạn bè người thân
  • Ứng dụng dùng nét viết tay làm font chữ cho điện thoại
  • Ứng dụng tạo Stop Motion
  • Ứng dụng soạn nhạc
  • Ứng dụng chống trôm điện thoại
  • Ứng dụng hỗ trợ người lái xe
  • Ứng dụng trích ảnh từ video
  • Ứng dụng nhắc nhở bảo trì xe máy
  • Ứng dụng đo vận tốc hoặc khoảng cách bằng camera
Nguồn: http://www.nokia.com/vn-vi/y-tuong-ung-dung/