Cá chết

Những ngày này, facebook của tôi thối um mùi cá chết. Thật khó mà tránh được mùi cá chết, trừ phi tôi phải unfriend hết cả đám friend này. Gia nhập facebook quả là một sai lầm khó lòng sửa chữa. Trong đám friend của tôi (theo nghĩa facebook), có nhiều người đã ăn cá chết nhiều năm, có nhiều người sản xuất cá chết, thậm chí có nhiều người bản thân họ là cá chết, song họ vẫn chửi cá chết.

Cá chết. Do nhiễm độc, hay do cái gì đó. Như cuốn sách gần đây mới xuất bản, bức xúc, có làm ta vô can, đéo đâu.

***

Tiên sư thằng nào làm cá chết. Chửi phát kẻo người ta lại quy kết.

Năm xưa M.J tức Micheal Jackson đại ca tôi, đã làm hai quả MV tuyệt đỉnh. Một là Heal the World, hai là Earth Song. Hai MV này cái nào cũng có thể khiến người ta phát khóc, nếu người ta đủ sến, như tôi năm xưa ấy. Mà bây giờ tôi cũng vẫn sến như thế, song tôi từ chối sến. Tôi muốn suy nghĩ một cách lành mạnh hơn, đàn ông hơn, Moscow không tin vào những giọt nước mắt, Hà Nội cũng vậy, Sapa cũng vậy.

Tôi định viết một đoạn dài xong đã xóa đi khi chưa viết, bởi có để làm gì đâu. Tôi sinh ra và lớn lên ở Hà Nội, nhưng thành phố tôi yêu ấy nay chỉ còn là tàn tích. Mười năm trước thành phố này đã không còn không khí để thở, đừng nói là bây giờ. Tôi cũng yêu núi rừng, nhưng núi rừng cũng đã mất.

Tôi đã sinh ra hai đứa con, chúng lớn lên cũng sẽ như tôi. Một cốc café mỗi một sáng uống, là một cây rừng tự nhiên mất đi để trồng cây café. Một điếu thuốc hút, làm một tí rừng mất đi để trồng thuốc lá. Mỗi cốc chè đá uống là góp phần mất đi một tí đất rừng để trồng chè. Mỗi sáng mùa hè tôi tới văn phòng bật cái điều hòa lên, mỗi tối mùa đông đá bóng về bật cái bình nóng lạnh để tắm, là góp phần phát sinh thêm thủy điện nhiệt điện.

Cuối năm ngoái tôi đi một chuyến lượn núi một mình. Qua quả thủy điện Nho Quế, tôi thốt lên, ôi dcm chúng nó, sao con sông đẹp thế lại làm thủy điện thì còn gì là sông. Câu chửi chưa kịp bay qua mồm, đã phải ngậm lại. Điện ai chả cần, người dân ở trên núi cũng cần điện, vậy điện ở đâu ra. Người ở trên núi không có bổn phận đốt bếp lửa mà giữ cảnh sắc núi rừng này, để phục vụ cho cái thằng như mình ngày đéo nào đi làm cũng bật điều hòa từ 8am đến 6pm.

Tôi là thằng mê ăn hải sản. Riêng tôi tráng miệng để bắt đầu một bữa ăn hải sản, cũng hết cả cân ngao là ít. Ăn ngao đã thế, chưa nói xong ngao thì mới sang món khác. Ngao tự nhiên ở đéo đâu ra cho tôi ăn lắm thế, phải là nuôi trồng. Một bãi cát nuôi ngao ắt sẽ chẳng còn là bãi cát tự nhiên cho các sinh vật khác.

Tôi ăn rau cũng rất tài. Rau muống mà tôi xơi một bữa, phải là một mớ, vợ luộc ra một đĩa tú ụ tôi ăn hết sạch. Nếu không phun thuốc kích phọt, tất không thể đủ rau muống cho cái loại tôi ăn. Chưa kể thứ nước mắm mà cái mồm khắt khe của tôi ăn, phải là nước mắm xịn, cá xịn, cứ xơi nước mắm như tôi thì đừng hỏi sinh thái sao không biến đổi để có cá làm mắm.

Ngay cả hoa quả. Tôi mà đã mở mồm ăn, thì một rổ mận cơm tôi ăn phát một là hết. Rồi tôi gặm đào rừng thì đừng hỏi. Rồi lợn sạch mà ông Chư nuôi trên bản, thật nuôi cả năm chả đủ cho tôi dẫn bạn lên nhậu. Chưa kể số lượng bia rượu mà tôi uống một năm, tính quy ra diện tích ruộng bậc thang chắc phải đôi quả đổi mới phục vụ được nhu cầu mỗi tôi.

Mà tôi chỉ là một trong vô vàn thằng ăn thùng uống vại, quần áo là lượt, điều hòa bật tối ngày, xe chạy phà phà xả khói ầm ỹ… Chưa kể xem phim phải là HD, nghe nhạc phải là lossless,.. gom ra đều là tài nguyên cả.

Tính vo vo, một thằng tôi, một thằng thành phố sống tương đối đơn giản, tiêu tốn tài nguyên đất nước phải bằng cả nhà ông Chư và mười mấy thằng anh em trên núi của ông ấy cộng lại.

***

Vậy chửi đéo gì.

Người ta chặt cây xà cừ, vì cây ấy to quá, mà rễ nó chỉ còn toen hoẻn vì người ta phải làm đường, làm vỉa hẻ, ngầm hóa dây dợ, cây ấy sống thế nào được với đám đông chúng ta. Yêu cây thì cố kiếm tiền mua 10m2 mặt phố rồi trồng cây cổ thụ đi. Hay bỏ tiền lên núi mua ba quả đồi cứ vứt đấy, không làm gì cả, hai trăm năm sau ắt có một cánh rừng. Gần nhà bố vợ tôi có cái cột điện, người ta viết rõ ràng trên tường cạnh đấy là “ĐCM thằng nào đổ rác”, vẫn đổ rác đều, mày chửi tao khác gì chửi bố mày. Nhà hàng xóm với nhau đã thế, đừng nói nhà máy. Người ta phun thuốc kích phọt rau là vì, trồng rau hữu cơ bán đắt quá, chả ai mua. Đường phố khói bụi, song ít người chịu đi xe bus, vì bất tiện, bà mày cứ xe máy chạy thôi. Chửi thủy điện vì tàn phá môi trường, chửi điện hạt nhân vì nguy hiểm, song mùa hè đến nhất định không thể để con bà nằm ngủ không điều hòa.

Cần số liệu thì google, nhưng đại loại có sự tương quan tỉ lệ nghịch giữa diện tích rừng tự nhiên vs dân số. Mà dân số Việt Nam thì tăng nhanh dã man, đẻ khỏe như thế thì núi không trọc sông ngòi không ô nhiễm hơi phí. Hà Nội trong cái ký ức sến sẩm của tôi, thì toàn là xe đạp, đường phố vắng tanh, nhà cửa thì nghèo quá có ai xây đâu mà bụi. Ra đến biển thì bãi biển sạch bong, làm gì đã có túi nilon mà vứt, với cả mỗi năm bố mẹ mới được cơ quan cho đi nghỉ mát gia đình một lần, có tiền đâu mà mua đồ ăn vặt cho con, chỉ có bơi và phơi nắng chứ không có rác mà xả.

Ngày này đất chật quá người đông quá rồi, phải hùng hục mà kiếm ăn. Ngọc Trinh rất minh triết khi bảo là “không có tiền thì cạp đất mà ăn”, thế mà nàng cũng bị bọn nó chửi là não ngắn, chả hiểu ngắn chỗ nào. Lao động làm ra hàng hóa giá trị cao lợi nhuận cao, thì khó lắm. Tây nó mới làm được. Ta không làm nổi, ta làm tiến sỹ hoặc là làm rẫy mà thôi. Ta cạp hết tài nguyên lên mà bán lấy tiền, với hy vọng bọn con cháu sau này giỏi hơn ta, sẽ biết làm cái gì đấy lợi nhuận cao hơn. Với cả lúc ấy thì tài nguyên cũng hết sạch trơn rồi, môi trường độc hại như trong game FallOut, bọn con cháu sẽ buộc phải nghĩ ra cái gì khác.

Cứ tạm nhất trí là thằng gì Đài Loan mày đổ chất thải độc ra biển. Ờ, thế là không được. Mày làm thế khác gì chúng tao. Mày hoành tráng hơn, mày phải biết cách xử lý chất thải thế nào đi chứ, cũng như bọn tao thì nói làm gì. Bọn tao, dân Hà Nội, 8 triệu mạng, hàng ngày xả rác sinh hoạt. Các cô công nhân vệ sinh gom rác về, các anh xe rác chở ra đâu đấy xa xa, đào đất lên, chôn xuống, làm kỷ niệm cho con cháu, bọn tao gọi là “công nghệ chôn lấp”. Vãi bọn tao, chúng mày vẫn còn chưa bằng.

Chọn đi, nhà máy thép hay tôm cá. Anh ấy hỏi thật minh triết, trí tuệ, đi thẳng vào vấn đề, không lòng vòng, khiến người nghe cảm phục. Dạ thôi, tôm cá chúng em biết nuôi, công nghiệp thì nhờ các anh cả.

***

Tất nhiên chúng ta có thể chửi chính quyền. Bọn nó làm ăn chả ra gì cả, ờ, cần phải chửi chết cụ bọn chúng đi. Nhưng một dân tộc đã trải nghiệm tất cả các hình thái chính quyền, thậm chí đã thử nghiệm cả hình thái tiến bộ nhất (SGK khẳng định) là nhà nước XHCN, mà vẫn lởm, thì dân tộc đó cần đặt câu hỏi cho chính bản thân mình. Tầm năm chục năm sau mà nhân loại (tức là bọn tây ấy) nghĩ ra một hình thái xã hội ưu việt hơn cả XHCN, và VN ta một lòng chân thành đi theo, thì tôi vẫn khẳng định là chúng ta vẫn cứ là chúng ta mà thôi.

Hồi còn nhỏ, và cho đến hai mươi mấy tuổi, tôi vẫn bảo hoàng hơn vua, căm ghét thậm chí sẵn sàng mạng đổi mạng với bọn bán nước. Song giờ tôi chả quan tâm. Khổ thân bọn bán nước. Làm gì có ai mua, sao mà bán được giá đây.

Hôm nay nói năng phản động thật. Thật lòng tôi chỉ mong là mỗi một người lên facebook chửi vụ cá chết, hãy dừng xe khi có đèn đỏ, và lỡ có đi sai bị công an bắt thì đồng ý lập biên bản ra kho bạc nộp tiền. Toàn dân cứ như thế, không quá hai mươi năm thì tất cả miền duyên hải chữ S này không có cá nào chết vì độc nữa cả và chúng ta sẽ là một đân tộc hùng mạnh, thật thích khi lúc ấy đảng ta vẫn còn lãnh đạo.

Nguồn: Teq316

Hiểu về Z-layout trong thiết kế web

4 điểm dừng

          Z-layout (bố cục theo hình chữ Z) là một rất hiệu quả để bắt đầu lên bố cục trong thiết kế web. Nó đáp ứng 4 yêu cầu cơ bản mà mọi website cần phải có: Branding (định vị thương hiệu), hierachy (thứ tự ưu tiên về thông tin), structure (cấu trúc thông tin trong trang web) và call to action (định hướng người dùng).

Bố cục hình chữ Z

                                                                             Bố cục hình chữ Z

Trước khi áp dụng bất kỳ pattern về layout nào, chúng ta cần phải hiểu bản chất của chúng, bởi mỗi layout lại mang đến cho người dùng những trải nghiệm khác nhau, tuỳ theo nhu cầu và mục đích thiết kế, không có đáp án chung cho mọi bài toán thiết kế.

Giới thiệu về Z-layout

Nguyên tắc thiết kế Z-layout rất đơn giản: đặt một chữ Z với 4 điểm dừng lên phần đầu tiên của trang web, định hướng mắt nhìn của người dùng đi theo thứ tự của chữ Z mà ở điểm kết thúc (4) sẽ là nơi đặt nút Call-to-aciton, theo như hình dưới đây:

Quan sát kỹ hình wireframe dưới đây, bạn sẽ thấy rõ ràng 4 điểm dừng của chữ Z (1-2-3-4) đều là nơi tập trung thông tin cụ thể:

4 điểm dừng

Người dùng sẽ bắt đầu ở góc trái trên cùng (1), đây là điểm đặt Logo, tiếp đó người dùng sẽ đi sang phải (2), đây là điểm đặt Navigation Bar, tuy nhiên, trong nhiều trường hợp, người dùng sẽ đi từ (1) sang (3) . Trong cả hai trường hợp, người dùng sẽ phải đi qua Image Place Holder (đây là phần đặt hình ảnh chủ đạo của trang web, thường là một slider chạy những hình ảnh tiêu biểu, giới thiệu ngắn bọn về trang web để thu hút sự chú ý của người dùng). Tiếp đó, người sử dụng sẽ đi từ (3) sang  (4) và gặp nút Call-to-Action.

Tại sao nên dùng Z-layout

Sở dĩ, Z-layout cho thấy hiệu quả và được áp dụng rộng rãi là bởi phương pháp này áp dụng thói quen của người dùng khi tiếp cận các trang web. Người đọc nói chung có theo quen lướt trang web trước khi đọc sâu vào chi tiết. Việc lướt web này bắt nguồn từ thói quen đọc sách (từ trái sang phải, từ trên xuống dưới). Z-layout nắm bắt phương pháp này là đặt Call-to-Action vào điểm dừng của quá trình lướt, khuyến khích người dùng Click.

Trong thiết kế, ta nên ứng dụng Z-layout một cách linh hoạt, có thể kéo dài chữ Z hoặc co, bóp tuỳ thiết kế . Dưới đây là một số ví dụ về việc ứng dụng linh hoạt Z-layout:

Trang web của Evernote, điểm kết thúc của chữ Z là nút Download

Trang web của Evernote, điểm kết thúc của chữ Z là nút Download

Trang web của Diana Reed, điểm kết thúc của chữ Z là "Get in Touch"

Trang web của Diana Reed, điểm kết thúc của chữ Z là “Get in Touch”

Code Monkey, điểm kết thúc là "Get Started"

Code Monkey, điểm kết thúc là “Get Started”

Trang web bán xe đạp DIY, điểm kết thúc là nút Price màu đỏ, gây ấn tượng mạnh về thị giác.

Trang web bán xe đạp DIY, điểm kết thúc là nút Price màu đỏ, gây ấn tượng mạnh về thị giác.

Web CampaignMonitor, kết thúc chữ Z ở điểm số (3) với "Try it for free"

Web CampaignMonitor, kết thúc chữ Z ở điểm số (3) với “Try it for free”

Khi nào nên dùng Z-layout

Z-layout phù hợp nhất với những website thiết kế đơn giản, tinh gọn với mục đích nhằm định hướng người dùng click vào Call-to-Aciton. Với những website phức tạp hơn như website tin tức hoặc thương mại điện tử, sử dụng Z-layout sẽ phản tác dụng. Điều quan trong là bạn phải hiểu người dùng và mục đích của họ khi truy cập trang web trước khi đưa ra phương án thiết kế. Ngoài Z-layout, F-layout là một phương án cũng khá phổ biến mà bạn nên tham khảo.

Theo Smasing Magazine

Tất cả lập trình viên đều tự học

9766-still-learning

Có rất nhiều cách để trở thành một lập trình viên mà không cần đến bằng cấp về khoa học máy tính (computer science). Nếu bạn đi theo con đường tự học, rất nhiều khi bạn sẽ phải tự hỏi  làm thế nào để theo kịp những người có bằng cấp, những người đã dành nhiều năm trên giảng đường và được đào tạo về lập trình và máy tính.

Trên thực tế, tôi nhận thấy rằng sự cạnh tranh này không hề tồn tại. Điều quan trọng là bạn có thể làm được gì với những kỹ năng mình có. Không có con đường duy nhất để trở thành một lập trình viên. Trên thực tế, chẳng có mấy ai trở thành một web developer hay ios developer từ trường lớp cả.

Những ngừoi làm việc trong lĩnh vực công nghệ này phần lớn đều tự học và cải thiện kỹ năng của mình trong quá trình làm việc. Tôi đăng ký vào rất nhiều lớp liên quan đến máy tính trong quá trình học đại học, nhưng rất ít trong số này giảng dạy chuyên sâu về lập trình web. Ngay cả khi có thì thường giáo trình cũng đã quá lỗi thời bởi công nghệ hiện nay biến đổi từng ngày.

Đọc  đến đây, có thể bạn sẽ tự hỏi nếu những kỹ năng chuyên sâu như lập trình web và mobile không thể học được trên giảng đường thì việc theo đuổi bằng cấp có ý nghĩa gì? Vai trò của việc theo đuổi giáo trình đại học nó sẽ giúp bạn trở thành một generalist – với nền tảng kiển thức rộng về khoa học máy tính. Bạn sẽ phải làm quen với khái niệm như database, thuật toán, networking, design pattern, những điều sẽ không thể có được nếu như bạn chỉ tập trung chuyên sâu vào một khoá học ngắn hạn về một ngôn ngữ lập trình.

Mục tiêu của bạn không phải là trở thành chuyên gia trong tất cả những mảng kiến thức này. Bạn chỉ cần biết rằng chúng tồn tại và áp dụng vào công việc thực tế. Tất cả những kiến thức bạn học được sẽ đóng vài trò như là một bộ công cụ giúp bạn sẵn sàng sử dụng khi cần đến. Những kỹ năng này chỉ là điểm khởi đầu để cho bạn có thể đào sâu hơn khi bắt tay vào công việc.

Nếu bạn không có những kiến thức này khi ngồi trên ghế nhà trường, bạn có thể tự học thông qua sách vở, tài liệu. Không có sự khác biệt giữa kiến thức trong trường học và trong sách vở, chỉ có điều lộ trình học trên ghế nhà trường đã được tối ưu, đỡ mất thời gian mò mẫm.

Những kiến thức này sẽ stick khi bạn bắt đầu sử dụng chúng để ứng dụng vào công việc thực tế. Bạn sẽ dần nhận thấy mình trở thành chuyên gia trong một số lĩnh vực mà mình quan tâm.

Những gì bạn học được trên trường lớp thực chất là chưa hoàn thiện. Bạn sẽ phải làm việc với từng dự án nhỏ để hiểu được các khái niêm đã gặp trên sách vở. Trong thực tế, công việc chưa dừng lại khi bạn đưa ra sản phẩm đầu tiên. Bạn sẽ phải học kỹ năng bào trì, fix bug, phát triển phẩn mềm trong cả team khi mà mỗi người lại có một chuyên môn khác nhau.

Điều quan trọng nhất là bạn phải duy trì được thói quen tự học mỗi ngày!

Duy trì thói quen tự học lập trình

KeepCalmAndKeepCoding

Đối với những người tự học lập trình, nhất là những người bắt đầu học khi đã đi làm, duy trì được kỷ luật học là điều vô cùng khó khăn bởi bạn còn phải hoàn thành rất nhiều công việc, nghĩa vụ khác. Bạn không thể vắt kiệt sức mình bên những dòng code bởi còn có cuộc sống riêng của mình, dành thời gian cho gia đình, những thú vui, sở thích khác và quan trọng nhất là đảm bảo sức khoẻ.

Ngay cả tới khi bạn có thời gian để ngồi bên máy tính, việc tập trung vào học một ngôn ngữ duy nhất cũng không phải là điều dễ dàng, luôn luôn có một ngôn ngữ lập trình, một framework mới, lấp lánh hơn, “cool” hơn thứ mà bạn đang theo đuổi. Có quá nhiều thứ khiến cho bạn tin rằng để trở thành một lập trình viên giỏi, bạn cần phải biết tất cả những design pattern, tham gia vào các dự án open source, master được các khái niệm phức tạp về computer science…

Trên thực tế, có rất ít người có khả năng làm được tất cả những việc này, đó là những người đã có thâm niên làm việc để mở rộng kiến thức của mình qua năm tháng. Chẳng hạn như, với tư cách là một web developer từ năm 2004, dĩ nhiên là tôi có nhiều thời gian hơn những người mới bắt đầu.

Khi đi theo nghề lập trình, dĩ nhiên là bạn cần phải luôn cập nhật những công nghệ mới, nhưng bạn không nhất thiết phải biết tất cả mọi thứ. Cần vài tháng để học một ngôn ngữ lập trình hay một framwork mới ngay cả khi bạn không có quá nhiều thời gian rảnh. Điều khó khăn nhất là bạn cần phải duy trì được kỷ luật và thói quen lập trình mỗi ngày và tiến bộ từng chút một, dưới đây là một số kinh nghiệm nhỏ:

  • Đầu tiên bạn phải lựa chọn và cam kết vào một dự án duy nhất mà bạn muốn theo đuổi, đó có thể là một ngôn ngữ lập trình, một framework, một khái niệm về computer science hay là một kỹ năng mềm. Nếu bạn dàn trải bản thân mình ra quá nhiều việc một lúc, bạn sẽ không thể hoàn thành được một điều gì có chất lượng. Chọn lấy thứ mà bạn muốn thực sự thấy thích thú, đừng lựa chọn một ngôn ngữ chỉ bởi nó đang “hot” trên các bảng xếp hạng.
  • Lên trước kế hoạch thực hiện dự án, bao gồm một thời gian biểu cơ bản có điểm kết thúc. Nếu có một vài tháng để theo đuổi dự án này, bạn có thể chọn một deadline để đánh giá những tiến bộ của mình. Khi đó, nếu bạn muốn tiếp tục, bạn có thể đề ra những mục tiêu mới. Nếu không có kế hoạch rõ ràng, bạn sẽ dễ dàng bỏ cuộc mà không cảm thấy chút nào hối tiếc vì đã không hoàn thành được mục tiêu đề ra. Để làm việc hiệu quả hơn, bạn nên lên trước kế hoạch cho vài ngày. Điều này sẽ tiết kiệm được thời gian cho bạn không phải mất nửa tiếng mỗi ngày để nghĩ xem hôm nay làm gì. Kế hoạch này có thể bao gồm các task con như hoàn thành một bài tut, đọc xong một chapter của một quyển sách, nghe một bài podcast, hoặc code thêm một tính năng cho phần mềm đang làm…
  • Để duy trì được thói quen, bạn cần phải làm việc đều đặn mỗi ngày, cho dù thành quả đôi khi là rất nhỏ bé. Bạn có thể làm việc khác những dự án chính của bạn phải luôn được đặt lên hàng đầu. Mỗi ngày tiến thêm một bước nhỏ sẽ giúp bạn hoàn thành được chặng đường. Nếu bạn chỉ bắt đầu mỗi ngày có vài giờ rảnh rỗi hoặc khi mọi điều kiện đều thuận lợi, bạn sẽ không duy trì được thói quen.
  • Nếu mục tiêu của bạn là học để thử một ngôn ngữ mới, bạn cần phải chấp nhận rằng dự án của mình sẽ không bao giờ hoàn tất 100%. Hãy tận hưởng những kiến thức mới mẻ bạn có được ở ngôn ngữ này để áp dụng vào các dự án sau. Nhiều lập trình viên luôn có side projects như một ứng dụng todo list hoặc một trang blog mà họ dụng để học một ngôn ngữ mới. Những ứng dụng này không nhất thiết phải hoàn thiện 100%.

Học là một quá trình trọn đời đối với lập trình viên bởi sẽ luôn luôn có những kỹ năng mới mà bạn cần phải có. Do đó, nếu bạn đã lựa chọn con đường này, hay biết cạnh tận hưởng cảm giác thích thú khi mỗi ngày thức dậy bạn có thêm những điều mới để học hỏi. 

Theo DZone

javaScript lại mạnh hơn với Angular 2

Vừa qua, Google đã nâng JavaScript lên một tầm cao mới khi phát hành phiên bản beta dành cho Angular 2. Tiền thân của Angular 2 là AngularJS đã ra đời được 6 năm dưới dạng mã nguồn mở, tuy nhiên framework này lại chỉ tối ưu cho việc phát triển Web Apps cho trình duyệt. Với Angular 2, Google không hề che giấu tham vọng lấn sân sang cả native apps cho các thiết bị di động sử dụng iOS và Android.

Angular 2 image

Angular 2 Beta đã chính thức phát hành

Khi mới được giới thiệu vào tháng 3/2014, Angular 2 đã phải nhận không ít chỉ trích của giới lập trình. Họ phàn nàn rằng việc viết lại toàn bộ framework đã khiến cho Angular 2 có quá nhiều khác biệt cho với phiên bản gốc là AngularJS. Tuy nhiên, quãng thời gian “alpha” dài 21 tháng cũng đã cho thấy sự nghiêm túc của Google trong việc sửa đổi nhằm đáp ứng nguyện vọng của những người yêu thích AngularJS. 

Đầu năm 2015, Facebook đã phát hành React Native, một phiên bản của React framework hỗ trợ viết lập trình ứng dụng di động. Trong những năm qua, Angular và React luôn là 2 framework mạnh và phổ biến nhất để xây dựng Web Apps. Angular 2 chính là câu trả lời của Google dành cho React Native của Facebook. 

Có vẻ như, đây là một trào lưu đang được ứng dụng rất mạnh mẽ trong thế giới lập trình hiện nay. Đó là ngày càng có nhiều công cụ giúp cho một ngôn ngữ lập trình có thể làm được nhiều việc khác nhau. Chẳng hạn như, với MEAN Stack (MongoDB, Epresss.JS, AngularJS, NodeJS) một lập trình viên JavaScript có thể chỉ cần master một ngôn ngữ mà vẫn có thể kiểm soát được toàn bộ Web Stack. Gần đây nhất là việc Apple cho Open source Swift, biến một ngôn ngữ vốn chỉ dùng để viết ứng dụng cho iOS và Mac OS mở rộng ra nhiều thiết bị khác, tới đây Swift sẽ trở thành một ngôn ngữ dành cho server. Trong khi đó, Go của Google lại đi theo hướng ngược lại, từ một ngôn ngữ server mở rộng sang mobile. 

Lộ trình học Angular.js

js-learning-curves

Tình cờ tìm được một bài viết rất hay về lộ trình học AngularJS từ “Zero JS”, kéo lại về blog nghiên cứu, khi nào có thời gian sẽ dịch lại toàn bộ. 

To develop applications in Angular you need to code using JavaScript, which makes JavaScript the minimal pre-requisite for learning Angular.What this means is that you cannot learn Angular with ‘Zero JS’.

That said, you don’t need to be an a expert JS developer. A short detour to familiarize  yourself would suffice to get  started.

While you get yourself familiar with JavaScipt, here is an introduction to Angular where I did my best to focus  less on the scripting aspects and more on core concepts.

You only need to be familiar with the concepts of MVC and a bit of Dependency Injection to grasp what have I said here.

I am hoping that once you read this introduction you will be motivated to go learn enough JavaScript to get started with developing application in Angular.

At the outset, here is how your journey to code your cool ideas in Angular might look like.

There a quite a few good resources already there to help you. What I have done here is to tie them together to create a lesson plan that will help you learn the concepts while you try get your hands dirty in code.

References

  1. Read on
  2. https://www.codeschool.com/courses/javascript-road-trip-part-1
  3. https://www.youtube.com/watch?v=…
  4. https://github.com/angular/angul…
  5. http://www.toptal.com/angular-js…
  6. https://docs.angularjs.org/guide

Are you ready?

Introducing Angular

If introduce Angular with a tag line, I would say ‘Angular- A JavaScript MVC framework’

Being an MVC framework implemented in JavaScript is a remarkable thing, isn’t it? Given that all the traditional MVC frameworks were server centric ,with every bit of execution, including the ones for presentation specific tasks, needing a round trip to the server.

Since Angular runs completely in browser, the application’s dependency on the server drastically reduces, which has many benefits.

In the diagram below you can see how the most of presentation logic is getting executed in the browser and not the server.

Talking about the benefits of being able to run in the browser, being contained the browser makes Angular the ideal choice of SPA applications.

This is because in SPA apps only the only initial resources are fetched in full from the server.From then on the server is contacted only to download just enough resources on a need basis.

Angular application work in the similar way with all the presentation related tasks getting executed in the browser and the server being reached out to only to download additional UI resources and get application data.

The dependency on the server is reduced, the number of round trips to server is also reduced which is what makes Angular suitable for developing responsive applications.

Now lets look at the other feature highlights of Angular. I am going introduce these features by explaining to you how they are applied in developing the simple function.

What makes Angular Special?

We’ll look at a function that is very common in the web applications, filtering pre-populated search results .

The function we are about to consider will look something like the image above when implemented; the names displayed will get filtered as the user types the search criteria.

The code snippets that implement the filter functionality are presented below.

One part of the code is in the HTML page itself( we will talk more about this in the section for directives) . The other part of the code is the controller that pre-populates the search results. For this example, we have hard coded the values in the controller itself, to aid illustration.The hard coded section of the code would be replaced with server access code in a real world implementation.

For this example, we have hard coded the values in the controller itself. This portion would be replaced with server access code in a more real world application.

Part#1: Angular in HTML

Note:The code is below is not complete as I have deliberately suppressed the bootstrapping code for functions like setting up Angular java script & CSS libraries to help us focus on the concepts.

Part#2: Angular in JavaScript

Note: Don’t get too bogged down with the syntax. For now, just notice that the controller code is developed in Java Script.

If you already getting uncomfortable with the anomalies you notice in the code, just hang on. We are about to take a closer look at these odd looking pieces of code in the following sections.

1.   Presence of non-HTML tags and attributes in the page

These non-HTML tags are directives (the portions marked in white and numbered in HTML code above)

Angular allows you to define the view and its behavior by adding custom HTML tags & attributes called directives.

Directives are parsed by the Angular java script compiler to generate java script that would manipulate the view’s DOM when it is rendered.

Using java script to manipulate DOM is nothing new, you may say.

Agreed!

JQuery, for example , did just that. What makes Angular standout though, is the manner in which this feature is supported.

In Angular, DOM manipulation logic is completely abstracted from the developer by allowing a declarative style of view definition using custom HTML tags.

The table above shows all the functionality that has been abstracted from the developer by  directives. Notice how  you would have been saved from having to code all the abstracted logic by using directive, if you were to develop this page.

Your view is left clean and maintainable.

2.   The seemingly callous way in which the searchString and items-list are accessed and updated as if they are always upto date.

This feature that enables you to access model attributes without having to write code to refresh them with the values entered by the user in the view is provided by a construct called Databinding in Angular.

In Angular, this is 2-way. View to Model and Model to View. With this feature, you can automatically set the value user has entered in the view (searchString) to a variable in the model and display the latest value received from the data source immediately to the user (items list).

Hope  you realized by now that Angular is working behind the scenes to sync values between model and view letting you focus on the application logic instead of writing boiler plate code

3.    Inline annotation for Dependency Injection

Another interesting feature of Angular is the way it readily makes services available to you, using Dependency Injection(DI).

While DI is not something unique to Angular, the speciality here is that there very little you have to set up service to be accessed using DI. You just need to declare its use before you access it.

This style of supporting DI is called Inline annotation, which drastically reduces the code you otherwise needed to write in the form of XML declaration and interfacing with injector libraries.

See how $http service is available in the function by just passing it as parameter.

Its that simple!

Even here Angular does all the work of locating the service, instantiating it and readying to be used, behind the scenes. You are again saved the effort of having to deal with configuration files or factory methods that you would have needed in other DI implementations.

Conclusion

That’s a glimpse of what Angular can do for you. Is that all? Of course not! I have left out talking about its support of testing and the rich set of library functions to focus solely on the 3 core strengths of Angular- 3Ds- Derivatives,Data Binding & Dependency Injection.

By now, I am hoping that the case for learning java script is made too, after we’ve seen the controller being scripted in JS. As you could see we did not have to write any intricate java script either, which is why having enough competency to work with Angular’s libraries would be enough to get you started. Codeschool’s Tutorial does a wonderful job to serve that purpose.

All the best!

Credits:

  1. https://angularjs.org/ – The code snippet for DI
  2. http://tutorialzine.com/2013/08/… – The filter example is a scaled down version of the ‘Instant Search’ example shown in this tutorial.
  3. http://www.ng-newsletter.com/pos… – Source of my learning for a lot of what I have said.
  4. http://www.johnpapa.net/pageinspa/– Where I learn about SPA.

Edits#1: Replaced images.
Other Edits: Replaced images & restructured content

Nguồn: Quora

Tương lai của CMS

cms

Hầu hết các CMS (hệ thống quản trị nội dung như WordPress, Drupal, Joomla, Ghost, October…) đều tập trung vào việc quản trị website thay vì thực quan tâm đến vấn đề nội dung site. Vấn đề thứ hai của CMS là các hệ thống này thường hướng người dùng vào một số template front-end nhất định, không khuyến khích việc sáng tạo trong thiết kế. Vấn đề thứ ba là ngoài website chính, sẽ rất khó để đưa vào thêm hệ thống truy cập thông tin vệ tinh (như mobile app, microsites, wearable…) mà không làm trùng lặp thông tin.

Phần lớn các hệ thống quản trị nội dung đều bao gồm 2 bộ phận: front-end và back-end. Như trong trường hợp của WordPress, front-end là Themes, back-end là Admin Panel (Dashboard). Bạn tiếp cận thông tin ở phần front-end và lưu trữ, nhập thêm thông tin ở back-end.

Cách đây 20 năm, khi website còn ở dạng tĩnh, quy trình tiêu chuẩn là upload file mới thông qua FTP mỗi khi cần cập nhật thông tin trên website. Đầu những năm 2000 là thời điểm bùng nổ của các CMS mà bản chất là một dạng phần mềm được cài đặt vào máy chủ, cung cấp cho người sử dụng một giao diện người dùng (Graphical User Interface – GUI) để cập nhật thông tin thông qua trình duyệt. Các CMS đã hoạt thành xuất sắc công việc của mình khi giảm đi đáng kể công sức phải bỏ ra để cập nhật nội dung.

Tuy nhiên, đó là thời điểm mà phương tiện duy nhất để truy cập internet là máy tính để bàn hoặc laptop. Giờ đây, người ta gần như có thể truy cập internet bằng mọi thức (smartphone, tablet, game console, smart TV, native mobile app…). Do đó, thay vì gắn chặt front-end và back-end vào nhau như cái cách mà CMS đang làm hiện nay, chúng ta không thử tách chúng ra.

Tách Front-end và Back-end ra làm 2 phần riêng biệt

Với cách tiếp cận này, chúng ta sẽ cần 02 phần mềm. Phần mềm thử nhất dùng để chạy việc quản trị nội dung ở back-end, phần mềm thử 02 nằm ở front-end sẽ biên dịch nội dung và truyền tải thông tin phù hợp với thiết bị truy cập.

Vào thời điểm hiện tại, có thể tạm coi web chính là phần mềm biên dịch front-end, tuy nhiên trong một tương lai không xa, sẽ có rất nhiều thiết bị tiếp cận front-end khác. Chẳng hạn như đọc nội dung thông qua phương tiện trung gian là social media như Facebook hay Tweeter, nghe nội dung thông qua podcast hoặc giao tiếp với thông tin (nói và nghe) thông qua trợ lý ảo như Siri, Cortana…, cuối cùng đọc thông tin bằng các thiết bị đeo được (wearable) như đồng hồ thông minh.

Các thiết có thể trở thành front-end trong tương lai gần

Tóm lại, trong tương lai, khi mà các phương tiện tiếp cận front-end ngày càng mở rộng, tất cả việc thiết kế đều phải xoay quanh việc quản lý nội dung.

Theo InVision

Những Framework PHP tốt nhất (2015)

Dưới đây là danh sách những framwork PHP được đánh giá là tốt nhất. SitePoint đưa ra kết quả này dựa trên khảo sát trên website và kết quả thu được từ Google và Github. Qua kết quả khảo sát này, có thể nhận thấy Lavarel và Symfony 2 hiện đang có ưu thế hơn hẳn so với những framework còn lại, xét về cộng đồng sử dụng.

Những Framework php tốt nhất 2015

Tôi chọn Lavarel vì có một cái gì đó tựa như “gut feeling” của bản thân rằng đây chính là tương lai của PHP hiện đại, ngôn ngữ được sử dụng đến hơn 80% ở backend của các trang web trên toàn thế giới. Với Lavarel, về cơ bản là những tranh cãi, so sánh xem Framework nào cho PHP tốt nhất đã kết thúc. Trong một vài năm tới, Lavarel sẽ trở thành niềm tự hào của cồng động PHP developers, giống như cộng động Ruby có thể tự hào khi có một Framework như Ruby on Rails.

Phân biệt Post và Page trong WordPress

Wordpress's photo

Một trong những vấn đề mà những người bắt đầu làm quen với WordPress hay gặp phải  là sự nhầm lẫn giữa Posts và Pages. Cả Posts và Pages đều dẫn bạn đến mỗi khung soạn thảo văn bản. Khi bạn đưa ra ngoài trang web thì cả Post và Page đều trông giông giống nhau. Vậy thì tại sao lại cần phải tách là làm hai loại này? Khi nào thì bạn nên sử dụng Post vs Page? Chúng ta sẽ làm rõ hơn trong bài viết này.

Post

Nếu bạn sử dụng WordPress làm blog thì đa phần nội dung trang web sẽ sử dụng Post. Posts bao gồm các mục nội dung blog của bạn được sắp xếp theo thứ tự thời gian từ mới đến cũ. Do có sự sắp xếp từ mới đến cũ nên một trong nhưng đặc tính rất quan trọng của Posts là thời gian lưu. Post càng cũ thì bạn càng phải chuyển qua nhiều trang để tìm kiếm. Các bài Post có thể được phân loại trên cơ sở categories và tags.

Do Post của WordPress có yếu thời gian nên Post liên kết chặt, đồng bộ chẽ với RSS feeds. Điều này giúp cho người đọc có thể được thông báo khi có bài viết được đưa ra vào thời gian gần đây. Post khuyến khích người đọc tương tác và được xây dựng kèm chức năng comment, chia sẻ lại trên các mạng xã hội khác. Tuy nhiên bạn có thể vào Setting để tắt đi chức năng này nếu muốn.

Page

Pages thường được sử dụng để hiện thị những thông tin tĩnh trong website của bạn, chẳng hạn như nhưng thông tin về ‘Giới thiệu bản thân’, ‘Bảo mật’, ‘Điều khoản sử dụng’… Mặc dù Pages được database lưu lại thông tin về khởi gian khởi tạo nhưng đây không phải là yếu tố quan trọng của Page. Page cũng không khuyến khích tương tác nên đa phần không có phần chia sẻ trên mạng xã hội hoặc bình luận.

Khác với Post, Page không sử dụng category hoặc tags để phân loại hoặc tìm kiếm. Thay vào đó, Pages có tính kế thừa, điều này có nghĩa là bạn có thể sử dụng template của một page có sẵn trong theme (gọi là Blueprint page) để áp dụng, thiết lập layout cho một page khác. Những theme bạn mất tiền mua thường kèm nhiều page template để cho bạn có thể tự do tuỳ biến layout.

FAQs

Tôi có thể tạo tối đa bao nhiêu Pages/Posts?

Bạn có thể tạo bao nhiêu Pages và Posts cũng được, không có giới hạn trong WordPress.

Sự dựng Pages và Posts ra sao thì tốt hơn cho SEO?

Các công cụ tìm kiếm tương ưu tiên những nội dụng có tổ chức. Những nội dung không có thời gian (timeless) như Pages thường được ưu tiên hơn nhưng những Posts mới được khởi tạo cũng có những ưu tiên tiên nhất định. Tuy nhiên, khi mới bắt đầu, bạn chưa cần quan tâm đến điều này, hãy tập trung vào việc kết hợp Posts và Pages sao cho hợp lý nhất, thuận tiện cho người sử dụng.

Theo WPBeginner

Nguyên tắc trừ hai

a2ca51241b655289d6fea9efe515c9d3

Nguyên tắc trừ hai, một bài viết nhỏ từ trong cuốn sách Quà của Bố của tác Trần Đình Dũng mà tôi rất yêu thích. Lời nhắn nhủ tưởng như nhẹ nhàng của người cha dành cho còn lại chứa đựng đầy đủ triết lý nhân sinh về cuộc đời và về Đạo. Trong đó, không có sự áp đặt, dù mong mỏi đến thế nào, cha cũng không thể bắt con lựa chọn cách sống không phải của mình. Cha chỉ có thể đưa ra một bức tranh toàn cảnh để con có thể nhìn rõ những lựa chọn của mình là nhận ra con đường phù hợp nhất với bản thân mình.

Con thương yêu!

Từ cảm nhận và trải nghiệm của riêng bố về cuộc sống và sự giao thoa trong cộng đồng, bố rút gọn dễ nhớ là nguyên tắc Trừ hai. Khi hiểu và vận dụng nguyên tắc Trừ hai này, hy vọng con sẽ có cuộc sống nhẹ nhàng, thanh thản.

Tất cả những gì con đang có, tại thời điểm con đang có, nếu con nhận biết được và hưởng thụ được, thế giới đó gọi là Hạnh Phúc.

Với tất cả những gì con đang có: vật chất, tinh thần, tình cảm, sức khỏe, điểm mạnh, thế yếu, những mối quan hệ xã hội…. và con biết cách gìn giữ, hưởng thụ, bày tỏ, bộc lộ đúng với giá trị thật của nó, bố gọi là trừ không (-0), sẽ là sự TRUNG THỰC.

father and daugher

Đã nhiều lần bố nói với con, nếu con giàu sẽ có người giàu hơn, nếu con giỏi sẽ có người giỏi hơn, nhưng nếu con trung thực, sẽ chẳng bao giờ có ai trung thực hơn con, sự trung thực là giá trị sống của con người và là bản lĩnh sống của chính con, dám đối diện với nó là sức mạnh của bản ngã, không phải ai cũng làm được.

Nếu con thể hiện và hưởng thụ những gì con đang có, trừ đi hai đơn vị (-2), bố sẽ gọi đó là KHIÊM TỐN. Tức là mình sử dụng 80% những gì mình đang có, mình bày tỏ, bộc lộ và chia sẻ nguồn lực có kiểm soát. Điều đó tạo một vị thế tiềm ẩn, một sức mạnh chưa khai phá, một thế lực ngầm che giấu, một đường rút lui an toàn, một quỹ dự phòng kín đáo. Đó là phong cách sống của mỗi người, điều đó tạo một vùng đệm để mình không bỗng chốc trở thành kẻ khoe khoang, bốc đồng, không để lại những lỗ hổng trên con đường mình đi…Đây là một nghệ thuật sống đẹp và sống đầy.

Nếu con bày tỏ những gì con đang có, trừ thêm 2 đơn vị (-2-2), bố sẽ gọi đó là KHÔN NGOAN. tức là mình sử dụng 60% những gì mình đang có, mình biết mình sẽ làm gì với 40% còn lại, có định hướng, có mục đích, có phương pháp, có tính kỷ luật bản thân. Không phải tất cả đều sống với định hướng 60-40 thế này suốt đời, tùy từng giai đoạn của cuộc sống, tùy từng thời điểm của cuộc đời, tùy thời cuộc, thế thời phải thời thế. Vì thế, nó được gọi là khôn ngoan.

Nếu con lại tiếp tục trừ thêm hai đơn vị (-2-2-2) bố sẽ gọi đó là TINH QUÁI. Điều này bố không khuyến khích con làm, nhưng khuyến khích con nhận biết để sống và dè chừng những kẻ tinh quái khác. Người ta có mười nhưng người ta chỉ sử dụng bốn, số còn lại là mượn lực của những người xung quanh. Những kẻ tinh quái thường là những kẻ cơ hội, xu thời, láu lỉnh, tiểu xảo… Ta không gọi tốt hay xấu, ta chỉ cần biết để sống phù hợp. Vậy đó con ạ. Cuộc sống muôn màu muôn mặt, khôn cũng chết dại cũng chết, biết thì sống.

Nếu con biết ai đó tiếp tục trừ thêm hai đơn vị (-2-2-2-2), tức là họ có mười phần nhưng chỉ sử dụng có hai phần, tám phần còn lại không nhận ra, giấu kín hoặc lãng phí, bố sẽ gọi đó là những kẻ NGU ĐẦN. Phàm những kẻ ngu đần, thế giới quan sẽ hạn hẹp, càm ràm xét đoán với hiện tượng mà không đoái hoài đến bản chất, rên rỉ khóc lóc với những điều vụn vặt chợt đến chợt đi…

Kẻ ngu đần nói về con người.

Kẻ tinh quái nói về sự việc.

Kẻ khôn ngoan nói về cơ hội.

Kẻ khiêm tốn nghe cả ba kẻ kia.

Kẻ trung thực được cả bốn nhóm người trên chọn làm chỗ dựa.

Chọn lựa và quyết định là do con.