October 6, 2016

Tôi là ai?

http://patnabeats.com/wp-content/uploads/2016/07/who-am-i.jpg
Tôi là ai trong cõi đời tấp nập,
Là bóng vô hình hay một khoảng khắc không gian
Nơi tôi đi quá có để lại dấu chân,
Những điều tôi làm có hiện hữu chăng?

September 26, 2016

Hạnh phúc xa lắm - đừng cố tìm

Có một câu chuyện kể rằng: Khi xưa, có một anh chàng đến gặp một bậc cao nhân sống ẩn sâu, cầu mong cao nhân chỉ giúp làm sao tìm được hạnh phúc. Vị cao nhân nhìn thấy điều anh chàng này muốn, ôn tồn đáp:

- Được rồi, người hãy về nhà đi, rồi sáng mai hãy quay lại đây, ta sẽ chỉ nhà ngươi cách tìm được hạnh phúc. À mà nhớ là từ giờ tới ngày mai, nhà ngươi không được ăn gì hết.

Sáng ngày hôm sau, cậu chàng trai quay lại đúng hẹn với bậc cao nhân, chàng bắt đầu lắng nghe sự chỉ giảng của bậc cao nhân này. Cao nhân giữ đúng lời hứa, nói với chàng trai, đi theo mình và làm những điều mà cao nhân chỉ rồi sau đó sẽ dạy chàng trai. Cao nhân dắt chàng trai băng rừng, vượt suối, leo đèo,..., sau đó tới một cánh rừng đầy táo ngọt. Chàng trai vốn đã nhịn từ ngày hôm trước, đói rã rời, mà bây giờ nhìn khu rừng đầy táo ngọt liền quá thèm định chạy lại hái ăn. Thì ngay lúc đó, bậc cao nhân liền nói:

September 2, 2016

Hậu phương vững chãi - Tiền tuyến xông pha

Ngồi code hoài cũng làm cho bản thân ngợp ngạt, loay hoay một hồi thì cũng có chuyện phải làm - viết bài blog chia sẻ cho vui. Cũng trùng hợp hay sự ngẫu nhiên gì đó, lang thang facebook thì thấy người bạn chia sẻ bài viết về người vợ dịu dàng sẽ giúp chồng thành công càng dữ dội, và thấy đề tài này hay nè, bàn bạc tí cho nó vui.

Dễ hình dung cho cái đề tài này mà, dân gian hay ví von một điều là vợ là hậu phương, còn chồng là tiền tuyến. Và lẽ dĩ nhiên, hậu phương vững chắc, thì tiền tuyến an tâm mà xông pha trận mạc, dám đương đầu sóng gió vì anh ta biết khi quay về nhà (hậu phương) thì anh ta sẽ được chăm lo, được khôi phục, là sẽ luôn tràn đầy năng lượng.

Nhưng, tôi là một coder, không phải nhà tâm lý học hay nhà phân tích thực trạng xã hội, tôi không dám mạnh miệng nói sảng trên vấn đề này. Vậy tôi lảm nhảm cái gì - tôi nói về hậu phương và tiền tuyền trong quá trình phát triển phần mềm.

August 13, 2016

Tản mạn chuyện Tỷ Can moi tim

Tỷ Can moi tim
Coi Đắc Kỷ Trụ Vương - Bảng Phong Thần thì có rất nhiều phân đoạn tuyệt vời (đối với từng người và từng thời điểm), nhưng hôm nay có tí khí chất "văn chương" ngồi viết lảm nhảm suy nghĩ về nhân vật Tỷ Can, và đặc biệt là khi ông moi tim hiến vua cứu Đắc Kỷ. Đây là dòng suy nghĩ miên man rất cá nhân cho vui thôi, vì cuối tuần không biết làm gì, rảnh rỗi sinh nông nổi ấy mà.

Tỷ Can là một trung quân ái quốc, ai đã từng coi qua bất kỳ bộ phim hoặc truyện Phong Thần thì nhân vật này không thể không được đề cập bên cạnh những nhân vật khiết tiếng như Na Tra, Lý Tịnh, Khương Tử Nha, Đắc Kỷ, Trụ Vương...

Ông ngoài trung cam nghĩa đảm, ông còn được trời ban cho trái tim Thất Khứu Linh Lung, tương truyền là có khả năng làm cho bách yêu trách xa, chính vì điều đó mà yêu hồ Đắc Kỷ không thể tấn công trực tiếp mà phải mượn tay vua Trụ moi tim ông. Khi ông thấy triều đình trở nên mục nát, ông xin vua cáo lão hồi hương, sống an nhàn thanh đạm những ngày cuối đời. Nhưng cũng vì có trái tim thần ban, cộng với tính khí không thể chịu nhường nhịn, khuất phục, mặc kệ cho bọn yêu ma tác quái, ông quay về triều đình và kết quả lãnh nhận cái kết quá bi đát - tự moi tim mà chết.

August 12, 2016

Xây dựng ứng dụng API với NodeJS - Bảo mật ứng dụng với JWT và Passport

source: https://scotch.io/wp-content/uploads/2014/04/restful-api-node-express-4-router.jpg
Ứng dụng xây xong mà không có bảo mật thì thật sự rất đáng nguy, ứng dụng nào cũng vậy chứ không riêng gì API. Hôm nay có tí chút thời gian, viết thêm bài viết về bảo mật ứng dụng bằng PassportJS và JWT. Để dễ hình dung, mình tóm tắt ngón gọn thế nào là PassportJS cũng như JWT:

Passport là một module trong NodeJS, rất linh động và tích hợp tương tác với nhiều kiểu chứng thực (authenticate) phổ biến như: Basic, Digest, OAuth, OAuth2 và dĩ nhiên là phải có JWT (không có sao có bài viết này được ^^). Còn JWT (Json Web Token) là một kiểu chứng thực (authenticate) đơn giản nhưng cũng an toàn dành cho REST API (rất hợp lý cho loạt bài này).

Rào trước đón sau: "Bài viết không có ý định làm rõ những khái niệm này, chỉ là một ghi chú của bản thân để sau này dễ triển khai." Nên nếu ai đó có sự thắc mắc muốn làm rõ hơn thì bạn nên tự thân vận động để nắm được vấn đề, có vậy bạn mới trở nên cao tay hơn.

July 22, 2016

Xây dựng ứng dụng API với NodeJS - Phần 2.4: CRUD - Delete

source: https://scotch.io/wp-content/uploads/2014/04/restful-api-node-express-4-router.jpg
Đi tiếp cho hết quảng đường CRUD của loạt bài này, để còn đi qua một chặng đường khác đầy hào hứng và hấp dẫn hơn rất nhiều, can đoan luôn. Đây là bài cuối trong phần này, liên can chữ D đó là Delete. Bây giờ chúng ta sẽ thêm một phương thức mới vào service user mà chúng ta đã làm mấy lâu nay:
removeUserById: function (id, cb) {
      User
        .destroy({where: {id: id}})
        .then(function (number) {
          return number ? cb(null, true) : cb(null, false);
        })
        .catch(function (error) {
          return cb(error);
        });
    }

Bây giờ, chúng ta sẽ thêm một router mới đảm nhận vai trò xóa user theo email được cung cấp. Chỉnh sửa tập tin user.js trong thư mục app/controllers theo nội dung như bên dưới:

July 19, 2016

Xây dựng ứng dụng API với NodeJS - Phần 2.3: CRUD - Update

source: https://scotch.io/wp-content/uploads/2014/04/restful-api-node-express-4-router.jpg
Tiếp theo những phần trước, bài này sẽ đi tới phần Update trong CRUD. Để minh họa, mình sẽ viết tiếp phần login vừa rồi, sau khi login sẽ cập nhật thông tin "last_logged_in" chính là ngày hiện hành. Bây giờ chúng ta sẽ sửa lại phương thức login của tập tin user.js trong thư mục app/services như sau:
login: function (email, password, cb) {
      var isSuccessful = true;
      User
        .findOne({
          where: {email: email}
        })
        .then(function (instance) {
          if (!instance) {
            return cb(null, false);
          }
          var user = _.clone(instance.dataValues);
          if (user.password !== password) {
            isSuccessful = false;
            return;
          }
          instance.last_logged_in = sequelize.fn('NOW');
          return instance.save({silent: true});
        })
        .then(function () {
          return cb(null, isSuccessful);
        })
        .catch(function (error) {
          return cb(error);
        });
    }

July 17, 2016

Xây dựng ứng dụng API với NodeJS - Phần 2.2: CRUD - Read

source: https://scotch.io/wp-content/uploads/2014/04/restful-api-node-express-4-router.jpg
Trong phần này, mình sẽ minh họa việc đọc dữ liệu bằng thao tác login. Trong bài này, mình chỉ dùng phương thức findOne() mà được cung cấp sẵn bởi Sequelize nhằm tìm một đối tượng duy nhất. Kết quả trả về chỉ một dòng dữ liệu duy nhất (được phát sinh bởi LIMIT = 1) hoặc là không tìm thấy kết quả nào hết. Đây chỉ là một trong những phương thức lấy dữ liệu mà Sequelize cung cấp, bên cạnh đó có những phương thức khác như: findAll(), findById()

July 14, 2016

Xây dựng ứng dụng API với NodeJS - Phần 2.1: CRUD - Create

source: https://scotch.io/wp-content/uploads/2014/04/restful-api-node-express-4-router.jpg
Ở phần trước, chắc hẳn không ít bạn sẽ (tự) hỏi tại sao không là MongoDB mà là MySQL? MongoDB không phải là thời thượng ah? MySQL già cõi rồi xài chi?...Vô số câu hỏi được đặt ra. Và câu trả lời của mình tại sao loạt bài này dùng MySQL mà không dùng MongoDB

Nói một câu đơn giản, dễ hiểu, xúc tích nhất là: "Mình thích"
Nói một cách cụ thể hơn là: "MongoDB với NodeJS thì nó nhan nhãn hằng ha sa số rồi, thêm 1 bài hay bớt 1 bài cũng không có gì. Một phần nữa MySQL cũng khá thân quen rồi, nên tiếp cận dễ hơn cho đa số người."

July 11, 2016

Xây dựng ứng dụng API với NodeJS - Phần 1: Khởi tạo kiến trúc

Building a RESTful API Node and Express 4
source: https://scotch.io/wp-content/uploads/2014/04/restful-api-node-express-4-router.jpg
Loạt bài này mình sẽ giới thiệu cách tạo một ứng dụng RESTful API dựa trên NodeJS và Express4. Phần đầu này, chỉ là khởi tạo kiến trúc, và lẽ dĩ nhiên, đây không phải là cách duy nhất, nhưng đây là cách quen thuộc mà mình vẫn hay dùng xưa nay. Việc khởi tạo một ứng dụng NodeJS bây giờ có thể gọi là đơn giản nhiều lắm với những công cụ đã được hỗ trợ sẵn.

June 30, 2016

Review truyện: Colorful - cuốn truyện dành cho những ai chỉ thích một mình

Colorful - cuốn truyện đầy nhân văn cho những góc khuất, cho những ai chỉ thích sống một mình, ở một mình, chơi một mình - giống y như mình ^^

Đại ý cuốn truyện này kể về 1 hồn ma, ở kiếp trc, mắc phải 1 tội lỗi khá là nghiêm trọng mà theo truyện là không được đầu thai. Hồn ma này không biết là do phúc phần tu hành từ kiếp nào đó, mà được vận may xổ số từ "sếp", nên thay vì bị "xử" luôn thì hồn ma này phải chịu một thử thách khác. Nhiệm vụ cũng không khó lắm, là nhập vào xác của một cậu mới "tèo" và đi tiếp những thách thức sau đó. Vậy đó...

Vậy cái hay là cái gì. Mình đọc cuốn truyện này trong tâm thế hơi chán nản, mệt mỏi và có phần bi quan. Nhưng tiêu đề cuốn truyện này cho thấy ngay vấn đề "đầy màu sắc" trong cuộc sống. Đọc xong cuốn truyện này, sẽ cho bạn thấy cuộc sống này màu sắc thế nào là do con mắt bạn nhìn, do tâm bạn nghĩ, do hướng bạn đi. Không ai ép bạn chọn con đường u tối mà đi, cũng không ai ép bạn phải đi một mình, tất cả là do chính bạn đã chọn. Bạn cứ thử mở lòng ra, nhắm mắt lại cũng được, và rồi hãy nhìn vấn đề ở nhiều góc cạnh. Nói một cách nôm na dễ hiểu là: "đừng tin quá nhiều vào cái bạn thấy" - "càng không nên tin quá nhiều vào cái bạn suy tưởng". Thêm nữa, bạn hãy luôn tìm một người bạn mà mình tin tưởng nhất, cảm giác đồng hành cùng bạn được. Đó sẽ là niềm tin mãnh liệt nhất khiến bạn đi xa trên con đường này.

Một lần nữa, mình thích cuốn truyện này chỉ bởi lẽ nó kéo mình ra khỏi những suy nghĩ bế tắc, bi quan mà luôn tin rằng đâu đó vẫn còn có một cơ hội mới, một cách tiếp cận, một cách suy nghĩ tích cực để cuộc đời này "colorful".  Nếu bạn nào không muốn mình cứ bi quan, nghĩ là thế giới quan này chỉ có mình bạn là đủ, mình tin chắc cuốn truyện của tác giả Eto Mori này sẽ rất hữu ích cho bạn. Hy vọng nó giúp mình được thì cũng giúp bạn được.

June 9, 2016

ZCPE có thật sự cần thiết

Đã 2 năm ngày mình đạt được chứng chỉ quốc tế này. Nhắc tới các ngày đó, chỉ xét riêng cảm xúc trong chuyện thi cử và đỗ đạt này thì mình rất thú, rất vui mừng, và đầy hãnh diện.

Cá nhân mình tại sao lại thích thú cái bằng này, và phải đi lấy nó. Nói cho đúng thì mình đã bị "dụ" - đúng nghĩa luôn đấy chứ. Mình đọc một số bài, một số comment của những chàng developer nước ngoài (bạn nhớ kỹ là nước ngoài nha), đại đa số nhận xét là sau khi lấy được cái bằng này, con đường nghề nghiệp của họ thăng tiến nhanh hơn, mức lương cũng được đề bạt cao hơn... Nói chung đây nhưng là một tấm vé VIP cho một khoản thu nhập mới.

Điều này hoàn toàn không sai nha (nhưng một lần nữa mình phải nói là ở nước ngoài thì không sai), vì để có được chứng chỉ ZCPE này, bạn phải có 1 lượng kiến thức đủ với chương trình thi của nó - thật không ít, các bạn có thể xem lại bài này để thấy tại thời điểm đó, cần gì để có thể lấy ZCPE. Và để có được lượng kiến thức này, bạn phải thực sự nghiêm túc ôn tập và thực hành. Thêm nữa, chứng chỉ ZCPE lại là chứng chỉ có giá trị quốc tế, được chính công ty Zend phát hành nên bạn có nó thì chắc hẳn trình PHP của bạn ổn đó. Từ đó thì không khó nhận ra là cầm cái bằng này thì lương lậu cũng ngon.

Nhưng...

June 1, 2016

Review Sách: Nếu Tôi Biết Được Khi Còn 20

Lại vừa hoàn thành xong một cuốn sách tuyệt vời nữa, nên chia sẻ tới mọi người. Đây là cuốn sách mà khi mình quyết định mua nó thì chưa từng đọc qua bất kỳ nội dung gì, hay được ai đó giới thiệu. Chỉ nhìn thấy mỗi tiêu đề sách - nghĩ ngay tới việc ở lứa tuổi 20 mình từng gặp phải tình huống gì - và nghĩ đây là cuốn sách bàn về những tính "trẻ trâu", tâm lý học. Nói chung là múc cuốn sách này không có lý do gì khác ngoài cái tiêu đề rất ấn tượng với cá nhân mình.

Tuy nhiên, sau khi có được sách trong tay, lật mặt sau ra và vài dòng đầu tiên thì nhận ra ngay đây là cuốn sách nói về mảng kinh doanh. Có một sự tiếc nhẹ ngay lúc đó, nhưng nghĩ giờ còn mỗi cuốn sách này, không coi thì cũng đã mua rồi, đọc luôn lấy kiến thức có sao đâu. Và rồi càng đọc, càng bị nó lôi cuốn, và góc nhìn của mình vẫn không là góc kinh doanh, nhưng phải nói là mình nhận được từ quyển sách này rất nhiều ý nghĩa.

May 28, 2016

SQLAlchemy - Phần 2 - Truy vấn

Sau phần 1 - Xây dựng kiến trúc dựa vào SQLALchemy thì giờ phải có phần 2 - truy vấn cơ sở dữ liệu dựa. Rào trước cản sau, bài viết này mình chỉ mong chia sẻ 1 phần của vấn đề, không tham vọng làm hết tất tần tật cách truy vấn với SQLAlchemy. Bạn nào muốn tìm hiểu sâu thì nên vào trang chủ để biết thêm thông tin chi tiết, những hàm hay những truy vấn phức tạp. Không lăn tăn nữa, vào vấn đề thôi.

May 17, 2016

SQLAlchemy - Phần 1 - Xây dựng kiến trúc

SQLAlchemy - ORM Schema
Lọ mọ muốn làm việc với Python, rồi lại muốn tiếp cận ORM trên nền Python. Không thích cách làm việc cứng ngắt của Django, và thấy nó to đùng ra, không thích hợp cho việc học tập những thứ nhỏ nhặt.Loay hoay 1 hồi thì ra anh chàng này, khá hay, đơn giản, nhỏ gọn, tích hợp được nhiều thứ loại database, thấy cũng vui. Bắt tay viết loạt bài này chia sẻ cho những ai cùng quan tâm vậy (không ai quan tâm thì xem như bài ghi chú cho cá nhân cũng vui ^^ )

May 6, 2016

Review Sách: Khéo Ăn Nói sẽ có được Thiên Hạ

Review sách - đây sẽ là mảng mới trong blog của mình kể từ đây. Xưa nay chủ yếu là chia sẻ những kiến thức về lập trình web, nay thử sức qua một đề tài mới xem thế nào.

Bản thân là người rất vụng nói, và không ít lần cũng vì cái vụng nói mà ảnh hưởng không ít tới đời sống cũng như trong công việc. Vô tình thấy cuốn sách này trong những quảng cáo online, rồi cái tựa quá ấn tượng, có lẽ cũng muốn "thâu tóm thiên hạ" nên xúc em này về đọc. Và cuốn sách thật sự là một "cookbook" cho tất cả những ai muốn nâng cấp hoặc bổ sung kỹ năng mềm - giao tiếp.

Bố cục

Cuốn sách này đầy những điều tuyệt vời cho tất cả mọi người. Mình tin chắc rằng không ai lại không muốn có thêm những mối quan hệ, và con đường phải đi qua để có thêm mối quan hệ là "giao tiếp"

April 28, 2016

Cài đặt APCu trên Windows với WAMP

Cách đây xưa thiệt là xưa, xa thiệt là xa, mình có bài viết cài đặt APC trên nền Linux, cụ thể lúc đó mình dùng CentOS nhằm hỗ trợ tăng tốc cho PHP. APC có cái lợi vừa opcode cache vừa data cache (xem lại bài này để biết chi tiết). Nhưng từ khi PHP 5.5 ra đời thì mình dẹp luôn cái APC vì Zend Optimizer+ ngon, bổ, rẻ nó tích hợp sẵn.

Dự án APC không vì đó mà ngừng lại, họ tách phần data cache ra, tạo một extension riêng cho PHP là APCu - APC User Cache. Thật ra mình cũng không dùng sau này, vì có memcache, redis hỗ trợ ổn cho vấn đề cache data.

Nhưng hôm nay vì lý do phải dùng nó, mà máy công ty là Windows, đang dùng WAMP, nên thôi viết tiếp bài này chia sẻ chơi cho vui.

March 28, 2016

Truyện ngụ ngôn - tiếng vọng

Có một cậu bé ngỗ nghịch thường bị mẹ khiển trách. Ngày nọ, giận mẹ nhưng không thể xúc phạm một cách trực tiếp, cậu chạy đến một thung lũng cạnh một khu rừng rậm.

Cậu lấy hết sức mình và thét lên: "Tôi ghét người". Cậu bé ngạc nhiên vô cùng vì từ khu rừng có tiếng vọng lại: "Tôi ghét người".

Cậu hoảng hốt quay về với mẹ và khóc nức nở. Cậu không thể hiểu được từ trong rừng đã có người thù ghét cậu.

March 23, 2016

Ba cây nhang - cây nào sáng nhất

Một người đàn ông bước vào ngôi chùa để được tĩnh tâm ... Cửa phật từ bi ...

Phật : " ta thấy sâu thẳm trong đôi mắt con chất chứa u sầu ... Nói ta nghe đi "

- Thưa Phật ... Con biết mình đang lầm đường lạc lối . Nhưng con thật sự ko thể ngăn nổi bước chân mình lại. Con đã có gia đình nhưng bây giờ con đang yêu một người con gái khác. Con thật lòng muốn từ bỏ vợ mình đến với cô ấy. Vợ con rất tốt... nhưng chỉ bên cô ấy con mới cảm giác hạnh phúc nhất và yêu thương mãnh liệt hơn bao giờ hết . Con không biết phải làm sao nữa?

March 22, 2016

Startup và những món nợ

Hai tháng quân trường cho một không gian hoàn toàn mới, làm cho bản thân nhận ra nhiều điểm rất lạ nhưng lại quen. Hai tháng 2016 này đầy những biến cố, sóng gió mà có lẽ chưa lần nào trong đời phải đối mặt. Tối nay, tức cảnh sinh tình, nhớ lại thời huy hoàng ngày nào mà viết lên cái nỗi niềm riêng, một chút lắng đọng cũng như sự nhận thức của bản thân.

Bài viết này nhằm viết lên cái nhìn cá nhân của mình cho những ai đang, đã và sắp làm startup-tech. Với một người đã trải qua một vài công ty làm startup, từ vị trí developer cho đến tech leader thì mình nhận ra những món nợ mà một startup phải gánh chịu. Mình chỉ muốn chia sẻ góc nhìn cá nhân chứ cũng không thêm thắt gì trong đây.

Bài viết là góc nhìn bản thân về những món nợ của một startup, ai từng làm hoặc có ý định làm thì cũng nên ngó qua xem có phải vậy không trước khi buông bút để lại bình luận. Có những món nợ mà bạn không thấy nhưng nó vẫn tồn tại, mà nợ thì phải trả, không bằng cách này thì cũng bằng cách khác.

January 26, 2016

Dễ dàng giả lập HTTP với module Nock trong NodeJS

source: https://cms-assets.tutsplus.com/uploads/users/487/posts/22836/final_image/http-mock-test.png
Theo kế hoạch đặt ra, và phải đẩy thật mạnh blog cho năm nay, nên trước khi Tết Tết cái con Khỉ nó kéo về, làm tinh thần xuống, và sau khi Tết nó qua thì cũng làm tinh thần không nhanh chóng khôi phục, thì làm theo bài blog này, ghi chú lại việc giả lập HTTP trong NodeJS nhằm thực hiện test. (Haiz, số là dạo gần đây bị cái TDD nó đè nên hành xác bu theo đắm đuối)

Mục tiêu và tại sao lại giả lập HTTP, và có tác dụng gì cho việc unit test - TDD. Đơn giản là, hiện tại mình đang viết vài project NodeJS theo cơ chế "thông" nhau bởi API. Unit test vốn dĩ là isolated test, có nghĩa là cô lập nó lại mà test. Nên mình cần giả lập (mock) http response từ API server, rồi tiếp đó mình chỉ tập trung viết code cho client là đủ (không thèm biết API nó mần sao, chỉ cần giả lập những response như nó mô tả là đủ)

January 9, 2016

Sinon - Solved method already wrapped

source: http://cdn.dev.classmethod.jp/wp-content/uploads/2012/03/sinonjs.png
Dạo gần đây do một số nhu cầu nên phải lấn sâu làm việc với mấy anh chàng JS. Từ backend (NodeJS) đến frontend, mà vốn dĩ ưa thích cái phong cách TDD, nên giờ code gì cũng lôi TDD vào mà mần. Đồng đạo có thễ xem lại bài hướng dẫn testing với JS tại đây

Trong lúc mần ăn với TDD JS thì gặp phải tình huống mock một đối tượng và bị báo lỗi "already wrapped". Mần mò một khoảng thời gian, từ google đến stackoverflow rồi thì cũng giải quyết được cái vấn đề này. Hôm nay, có tí thời gian viết bài blog chia sẻ tới mọi người.

January 1, 2016

2016 - New Year Resolutions

Source: http://file.vforum.vn/hinh/2015/11/2016-2.jpg
Thế là hết một năm - một năm thê thảm trên chiến trường sự nghiệp. Phải nói một năm vừa qua là một năm khốn khó nhất mà mình từng trải. Nhưng sẽ không quan tâm đến nó nữa, vì giờ đây đã bước sang một năm mới, xin kính gửi lời chúc sức khỏe, an bình và những lời tốt đẹp nhất đến tất cả mọi người.

Một năm trôi qua, dù không ít sóng gió nhưng kỳ thật dù thế nào đi nữa, đó là trải nghiệm trong đời. Sẽ chẳng thể nào khá hơn nếu chúng ta không có những trải nghiệm này. Cứ trải nghiệm rồi sẽ trưởng thành và sẽ có nhiều điều tốt đẹp đi theo sau đó. Nhưng vẫn như thường lệ, hoạch định một năm của mình vẫn được đặt ra và cũng như nhìn lại khoảng khắc tốt xấu trong năm vừa rồi để phát huy, sửa đổi, cải thiện.