Showing posts with label Web Developer. Show all posts
Showing posts with label Web Developer. Show all posts

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.

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.

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à đủ)

March 16, 2015

Unit test multi modules in Phalex project

Sau khi mình release project Phalex của mình thì tới nay đã khá lâu (cũng gần 4 tháng rồi) và mình cũng bắt đầu code vài dự án với Phalex. Một trong những dự án dựa trên Phalex 5SOnline - đây là một dự án mình làm cho công ty HDViet. Tuy nhiên, bên cạnh đó mình vẫn âm thâm code một dự án riêng của cá nhân, hy vọng sẽ trình làng mọi người vào giữa năm nay.

Dự án của HDViet thì phải chạy cho nhanh nên không có test (TDD) cho dự án, còn dự án cá nhân thì chắc chắn là có. Phalex ra đời nhằm mục đích là multi modules, nên khi làm việc với nó, mình cũng mất khá nhiều thời gian khi chạy test cho từng module. May mắn thay, vô tình hôm nay đọc cách test của Zend Framework 2, nên mình đã thử áp dụng vào project và đã thành công, nay mình chia sẽ lại với các bạn nếu ai đó có dùng Phalex để code

January 26, 2015

TDD và quan điểm của tôi

http://www.filecatalyst.com/wp-content/uploads/tdd.png


Test Driven Development (TDD) là một trong rất nhiều quy trình phát triển phần mềm (không chỉ trong lĩnh vực web). Đây là một quy trình phát triển sản phẩm dựa trên test.

KHÔNG BÀN LUẬN

Bài viết này không nhằm giải thích thế nào là TDD, không phân tích ưu nhược điểm TDD, không so sánh TDD với các quy trình khác, và càng không hướng dẫn mọi người cách thực hiện TDD. Nếu bạn đang tìm một trong những thứ mình vừa đề cập bên trên, bạn có thể ngừng đọc tiếp phần bên dưới ^_^

VẬY BÀN ĐIỀU GÌ - NOTHING ^_*

Bài viết cũng chẳng bàn thêm gì trong TDD, chỉ là chia sẻ góc nhìn của mình khi dấn thân làm TDD, những cảm nhận, suy nghĩ, khó khăn và những thú vị xung quanh TDD mà mình từng trải nghiệm.

June 9, 2014

Người thứ hai đạt chứng chỉ ZCPE - chuẩn PHP 5.5 tại Việt Nam

Zend Certified PHP Engineer
Như vậy là sau bao nhiêu ngày tháng học tập, làm việc với PHP thì cuối cùng mình cũng đã lấy được chứng chỉ PHP của Zend. Đây là bằng cấp quốc tế thứ 2 của mình trong năm. Thật tế thì ở Việt Nam đã có 33 anh hùng hào kiệt lấy được chứng chỉ PHP của Zend - và mình là người thứ 33. Tuy nhiên, từ tháng 10/2013 thì Zend đưa ra chuẩn mới dựa theo PHP 5.5, và từ lúc đó đến giờ thì ở Việt Nam mình có được 2 người đạt chuẩn này - và mình là người thứ 2 - nên "giựt tít" cho thêm phần sôi nổi ^^

March 24, 2014

Techcamp Saigon 2014 - Buổi nói chuyện đầu tiên tại sự kiện cộng đồng

Sự kiện Techcamp Saigon 2014 vừa rồi (diễn ra tại trường đại học RMIT ngày 23/3) mình cũng có đăng ký tham gia chia sẻ. Chủ đề mình đăng ký nói về PHP Framework Phalcon và một module nhỏ do mình làm ra nhằm mục đích dễ phát triển hơn với Phalcon. Nhân một chút rãnh rỗi, ngồi viết lại bài blog này chia sẻ cùng mọi người.

October 24, 2013

PHP - Design Pattern - Observer

Nguồn: http://mydevelopedworld.files.wordpress.com/2013/03/observer-pattern-uml.png
Đã lâu lắm rồi mới ngồi viết lại đề tài "Design Pattern", hôm nay mình giới thiệu thêm một cái Design Pattern nữa cũng rất hấp dẫn và lôi cuốn, và nó cũng làm mình mất không ít thời gian tìm hiểu - Observer Design Pattern. Với mẫu thiết kế này, nó sẽ giúp bạn xây dựng mô hình lập trình hướng sự kiện - Event-Driven Programming (EDP) - và trong ví dụ này của mình cũng sẽ dùng vấn đề này để demo cho mẫu thiết kế Observer

PHP - Design Pattern - Observer

Nguồn: http://mydevelopedworld.files.wordpress.com/2013/03/observer-pattern-uml.png
Đã lâu lắm rồi mới ngồi viết lại đề tài "Design Pattern", hôm nay mình giới thiệu thêm một cái Design Pattern nữa cũng rất hấp dẫn và lôi cuốn, và nó cũng làm mình mất không ít thời gian tìm hiểu - Observer Design Pattern. Với mẫu thiết kế này, nó sẽ giúp bạn xây dựng mô hình lập trình hướng sự kiện - Event-Driven Programming (EDP) - và trong ví dụ này của mình cũng sẽ dùng vấn đề này để demo cho mẫu thiết kế Observer

October 21, 2013

Developer Round Table Lần 1 - Sự im lặng đến nghẹt thở

Sự kiện Developer Round Table được trung tâm tin học Hoàng Nguyễn tổ chức, với mục đích chia sẻ giao lưu là chính. Và lần thứ nhất đã được diễn ra tại ngay trung tâm của Hoàng Nguyễn, lúc 9h ngày 20/10/2013 (Đúng vào ngày phụ nữ VN) với một không khí hết sức im lặng, im lặng đến mức nghẹt thở chứ không như mình tưởng tượng ban đầu, sẽ rất ồn ào náo nhiệt, điều khá lạ tại hội thảo IT

September 24, 2013

MongoDB - Something to note

MongoDB.org
Mấy ngày nay ngồi tìm hiểu về MongoDB, một Document Database mà theo mình là rất hấp dẫn. Nghiên cứu nhiều tài liệu, từ trang chủ, slideshare, stackoverflow ... và vẫn đang tiếp tục tìm hiểu. Mình viết lại những gì mình đã đọc tại đây để có gì còn coi lại và vận dụng. Cũng như chia sẻ cho mọi người những điều thú vị mà mình đọc qua, hy vọng các bạn sẽ thấy được điều hữu ích gì đó dành cho mọi người.
Loạt bài này sẽ nhiều phần, vì như mình nói, mình đang nghiên cứu nghiền ngẫm, thấy hay gì là note lại chứ không logic hay chuẩn bị gì cả.

August 6, 2013

PHP - Tốc độ giữa Foreach vs For

Làm việc với PHP cũng có được vài năm kinh nghiệm, lại là một người yêu thích về mặt tốc độ khi triển khai ứng dụng web. Ngày hôm qua, sau khi đọc 1 bài viết phân tích sâu về ARRAY PHP và trong bài viết này đã cho rằng foreach chậm hơn for đã làm cho mình thật sự không tin. Benchmark không biết bao lần, dẫn chứng cho bao người xem, cuối cùng sau khi đọc hết bài viết, test thử và gật gù thừa nhận. Và phải nhìn lại rằng PHP là một ngôn ngữ tuy rất dễ chịu nhưng cũng thật huyền bí, thay đổi 1 vài thứ sẽ lật ngược ván cờ về performance. Bài viết không có ý định trình bày lại những gì tác giả kia đã viết, chỉ một chút minh họa để nhìn lại vấn đề performance thôi.

April 30, 2013

Zend Framework 2: Login ZF2 using session basic

Việc dùng session trong một ứng dụng web là chuyện rất bình thường và gần như là một điều bắt buộc trong việc lập trình ứng dụng web ngày nay. Bài viết không có ý định giải thích session là gì, cách khai báo, cơ chế như thế nào... trong session. Bài viết chỉ đơn giản làm một ví dụ minh họa cách dùng session đơn giản nhất trong Zend Framework 2 (ZF2). Việc ứng dụng hay dùng nhất  và cũng đơn giản nhất đó chính là việc login/logout trong một website, như vậy mình cũng sẽ dựa vào đây để làm ví dụ minh họa cho bài viết này.

April 9, 2013

Xdebug - Profiler website for high performance

Trong phần 1, mình đã giới thiệu tới mọi người tính năng thứ nhất của XDebug đó là debug code PHP. XDebug không chỉ dừng lại mỗi tính năng này, cái hay của nó là ở phần Profiler website - tính năng rất hữu ích cho việc tìm ra bottle-neck (nút thắt cổ chai) của website, từ đó đưa ra giải pháp cải tiến, nâng cấp, tối ưu nhầm mang lại hiểu quả cao hơn cho website. Hôm nay mình sẽ chia sẻ 1 phần kỹ thuật này, giúp mọi người có thể tự tay tìm ra điểm "chậm" của website mình

April 3, 2013

Zend Framework 1.x - Work Flow - Part 2

Sau khi tiến trình xử lý Routing kết thúc, ZF sẽ kích hoạt tiến trình preDispatch, đây là tiến trình được xử lý trước các action trong controller của ZF.


Tiến trình được xử lý đầu tiên bằng việc Plugin Broker kiểm tra xem có một controller plugin nào được thiết lập phương thức dispatchLoopStartup hay không, nếu có thì thực thi phương thức này của controller plugin, sau đó Plugin Broker sẽ thông báo ngược lại với Front Controller đã hoàn tất quá trình loop startup và từ đây Front Controller sẽ gắn trạng thái TRUE vào cờ isDispatch của đối tượng Request (xem lại phần 1), Front controller sẽ tiến tới quá trình xử lý preDispatch, như vậy tại đây chúng ta sẽ thấy rằng Loop Dispatch là tiến trình chạy trước preDispath.

March 28, 2013

Zend Framework 2 - Routing - Part 2

Tree Routing
Cải tiến hơn so với version 1, ZF2 không chỉ dừng lại ở mức routing cho từng path URI cụ thể. Đến với ZF2, chúng ta sẽ làm quen với khái niệm Tree Routing - hay có thể nói là làm sao kết nối các routing lại với nhau để tạo hiệu ứng tốt hơn cho việc làm đẹp url.

Ngoài ra, với tree routing còn giúp cải thiện tốc độ load web nhanh hơn. Nhưng đây cũng là một khái niệm khá mới nên có vẻ cũng hơi khó làm quen với nó. Mình cũng chỉ mới tập tành làm quen với dạng routing này.

March 25, 2013

Zend Framework 2 - Routing - Part 1

Trong ZF2 chức năng routing được thay đổi rất đáng kể so với ZF1. Đối với ZF2, sẽ không còn cái được gọi là routing mặc định để áp dụng cho tất cả những uri được request tới. Mà thay vào đó là mọi router đều phải được đăng ký. Việc này sẽ làm cho lập trình viên hơi bị mệt nhọc và nặng nề cho việc viết rule routing, tuy nhiên nó lại giúp cho ứng dụng ZF2 chạy nhanh hơn.

Việc cải tiến nữa trong routing ZF2 đó là cơ chế routing cơ bản nhất cũng yêu cầu sử dụng regular expression - cái thứ mà rất làm nản lòng dân developer.

Bài viết sẽ cố gắng giúp mọi người có thể cài đặt routing trong ZF2 và cũng không dám mong rằng đây là một hướng dẫn xuyên suốt cho phần routing ZF2

March 22, 2013

Zend Framework 1.x - Work Flow - Part 1

Zend Framework 1.x work flow
nguồn: http://www.kurttest.com/zfa/dispatch.html
Đa số chúng ta làm việc với Zend Framework (ZF) nhưng cũng không nắm rõ lắm luồn dữ liệu được xử lý như thế nào? Một request URL đến, thì ZF đã làm gì để rã ra thành một module, controller, action và những tham số input để từ đó chúng ta tiến hành xử lý?

Bài viết mang một khía cạnh minh họa và giảng lược bằng hình ảnh để giúp những người đã từng có kinh nghiệm làm việc với ZF hiểu rõ cơ chế vận hành như thế nào.

Để rào trước đón sau, mình chỉ dám nói đây là tiến trình xử lý của ZF1 chứ không dám khẳng định ZF2 cũng y như vậy. ZF2 đã có 1 số cải tiến rất rõ về bộ library không biết có thay đổi về work flow không thì mình vẫn chưa thể khẳng định tại thời điểm này.

March 18, 2013

Zend Framework 2 - Access Db via PDO

Zend Framework 2 - access DB
Tiếp nối cho bài viết về Zend Framework 2 - Startup, chỉ đơn giản là cài đặt và chạy bộ khung của ứng dụng ZF2, hôm nay mình sẽ viết tiếp sự tương tác của ZF2 với Database. Cụ thể trong bài này mình sẽ dùng database là Mysql server và bộ thư viện PDO để tương tác. Đại đa số các bài hướng dẫn trên mạng về sự tương tác DB với ZF2 chủ yếu tập trung với việc dùng class TableGateway, bài viết của mình đơn giản hơn là dùng chính PDO để tương tác với MySQL server luôn.