Thứ Năm, 26 tháng 2, 2015

Ruby ngừng hỗ trợ bản 1.9, hãy nâng cấp hệ thống của bạn lên 2.x

Theo thông báo mới nhất từ homepage của Ruby thì thời hạn support bản 1.9.3 đã kết thúc.

Kế hoạch ngừng hỗ trợ này đã được thông báo 1 năm trước.

Việc fix bug hoặc các vấn đề về bảo mật của bản 1.9.3 trở về trước sẽ ngừng hoàn toàn.


Do đó, nếu trước kia vì lý do gì đó bạn chưa nâng cấp lên Ruby v2 thì hiện tại khuyến cáo bạn nên làm càng sớm càng tốt.

Nếu bạn có một lý do nào đó mà KHÔNG THỂ bỏ được bản 1.9.3 thì có thể liên lạc lại để được hỗ trợ thêm.

Chi tiết cụ thể xem ở trang tin của Ruby.

Đồng thời với việc trên, có tin tốt là phiên bản Ruby 2.0.0-p643 mới cũng đã được phát hành vào ngày 25/2/2015 vừa qua.

Phiên bản Ruby này không phải là mới nhất (hiện mới nhất là Ruby 2.2.0), mà là bản fix cuối lớn cho Ruby v2.0.0.

Trong vòng 1 năm tới thì bản Ruby 2.0.0 cũng sẽ bị ngừng hỗ trợ.

Do đó, càng sớm nắm bắt các bản Ruby mới thì càng tốt.

Thứ Bảy, 14 tháng 2, 2015

Apple đang promote app không có In-App-Purchases (IAP) ở trang chủ

Lâu nay bạn đã quen với việc chơi game Freemium - miễn phí chơi thoải mái. Nhưng nếu bạn muốn trở nên khoẻ hơn trong game (get well) thì bạn sẽ phải bỏ tiền ra mua vật phẩm. Điển hình như là các game đình đám như Clash Of Clan (COC), BoomBeach, Temple Run, ..., hoặc các game có nguồn gốc từ Trung Quốc, game kiếm hiệp bạn sẽ hiểu rõ điều này.
Các game của châu Âu hoặc Mỹ còn đỡ, bạn vẫn có thể sống khoẻ nếu không bỏ tiền mua, bạn vẫn có cơ hội để trải nghiệm toàn bộ game. Riêng game Trung Quốc, bạn không bỏ tiền nghĩa là bạn không là khách hàng của game, bạn chẳng có benefit gì cả.

Điều này thực là cay đắng khi bạn trót chơi một thời gian rồi, và bạn nhận ra rằng mình sẵn sàng phải chi tiền ra nếu muốn nhân vật, hoặc cuộc chơi trở nên vui hơn. Và Apple cũng cho rằng, thật là khó chịu nếu đã trót chơi mà lại phải bỏ thêm tiền. Do đó, họ đang có một chiến dịch quảng bá những app không có In-App-Purchases Mua bán trong App, ngay trên trang chủ của App Store.


Hiện tại, khu vực quảng bá apps này mới được mở ở UK, và Apple gọi nó là "PAY ONCE & PLAY" (Thanh toán một lần và Chơi) . Sắp tới, chức năng này cũng sẽ được mở ở US store như là một phần trong kế hoạch làm mới App Store hằng tuần.



Khu vực Pay Once & Play này đang hiển thị những app, được gọi là "great games" (những game tuyệt vời nhất), mà không hề yêu cầu người dùng phải bỏ thêm một đồng nào để mua bán qua IAP nữa.
Khu vực quảng bá Pay Once & Play này được tổ chức thành các mục gồm: Recent Releases (Mới Phát hành), Blockbuster Games (Game bom tấn), và App Store Originals (App Store Nguyên bản). Các game bao gồm nhiều thể loại của các lập trình viên, và được xếp hạng dựa vào tính phổ biến.

Trong nhiều năm qua, mặc dù phát minh ra IAP, nhưng cũng chính Apple phải chịu rất nhiều phàn nàn, và điều tra về những game có tính năng này. Làm sao họ có thể quảng cáo một game miễn phí download, nhưng những tính năng chính cũng như gameplay lại bị ẩn đằng sau In-App Purchases. Apple đã cố gắng thực hiện nhiều thay đổi về việc hiển thị các game freemium này trên App Store, như là thêm nhãn IAP báo trước cho người dùng khi download; rồi thay đổi nút download của các game có IAP từ "Free" (Miễn phí) thành "Get" (Tải về).

Đây vẫn chưa rõ là một section (khu vực mới) sẽ được đều đặn cập nhật, hoặc là trở thành một phần đặt cố định trên trang chủ của App Store hay không, nhưng nó cũng là một dấu hiệu thú vị trong việc quảng bá các game có trải nghiệm chất lượng cao không theo xu hướng freemium hiện nay.

Điều này chắc chắn sẽ được welcome. Tôi còn nhớ, tôi đã từng say mê trò Diablo 2, hay trò Đế chế, GTA Vice City, hay Hero 3 như thế nào. Tôi chơi các game đó qua hàng năm, trải nghiệm mọi ngõ ngách, khám phá mọi điều tuyệt vời trong game mà không phải lo nghĩ đến chuyện bỏ tiền ra để trả cho những vật phẩm mà mình rất thích trong game.

Thứ Sáu, 13 tháng 2, 2015

Các công ty tuyển dụng cần gì ở lập trình viên PHP?

Để tuyển dụng được một lập trình viên tốt, thì nhà tuyển dụng thường đặt khá nhiều kỳ vọng vào các kỹ năng mà lập trình viên đã tự trang bị được cho mình, chẳng hạn như: làm việc nhóm, độc lập, tư duy tốt, tự tìm tòi và học hỏi, nghiên cứu nhanh,...
Trong bài này, chỉ bàn riêng về chuyên môn trong lĩnh vực PHP, các nhà tuyển dụng cần gì ở một lập trình viên? Bạn đã chuẩn bị được những kỹ năng gì để đi xin việc làm một lập trình viên PHP.


Những kỹ năng bắt buộc

Những kỹ năng dưới đây là bắt buộc khi bạn làm một lập trình viên PHP.

Bắt buộc 1: Nắm chắc kiến thức cơ bản về lập trình web với HTML, CSS (và cả JS thì là tốt nhất)

PHP là để lập trình web, mà HTML+CSS(+JS) là bộ cơ sở đi với nhau, và do đó, bạn muốn làm web mà không biết HTML+CSS thì chắc chắn là không thể được. Thực tế, với HTML+CSS bạn không cần phải biết tường tận mọi ngõ ngách, không cần phải siêu đẳng, thế nhưng những thứ thường gặp bạn cần phải nắm rõ.
Ví dụ:
- Với HTML bạn cần hiểu biết trong đầu về thẻ là gì, các thẻ thường làm có meta, div, các thẻ h, span, p, a, form, ...
- Với CSS bạn cần hiểu biết về: border, padding, margin, float, overflow, z-index, background, color, :hover,...
- Với JS: bạn có thể làm chưa quen, nhưng bạn cũng cần phải đọc được các câu lệnh JS đơn giản để: show/hide element, get/change/remove css class,...

Những thứ trên là các kiến thức rất cơ bản, nếu bạn không nắm chắc, hãy kiếm những quyển sách rất đơn giản và học lại, làm theo những bước trong sách hướng dẫn, thử thay đổi các tham số để hiểu rõ hơn về việc mình thực hành.

Nhấn mạnh lại một điều nữa để bạn hiểu rõ, Không nắm được HTML+CSS, đừng nghĩ đến chuyện làm WEB, và cũng đừng nghĩ đến chuyện làm PHP.


Bắt buộc 2: Về ngôn ngữ PHP

Bạn làm về PHP, rõ ràng bạn phải hiểu được cơ bản về nó. Cách bạn đặt biến như nào, đặt hàm như nào, làm thế nào để gọi,... rồi những vấn đề cơ bản như: hiển thị một chuỗi lên HTML bằng PHP như thế nào, PHP kết nối đến DB như là MySQL ra làm sao,... Bạn có thể quên quên nhớ nhớ, nhưng khi đưa code có sẵn ra bạn phải đọc được và hiểu được, rồi mới tính đến chuyện tự tay code được. Bạn đọc hiểu code có sẵn không được thì làm sao mà code được.

Những kỹ năng cạnh tranh, làm lợi thế

Nếu bạn tu luyện được một trong các kỹ năng dưới đây, ngoài việc tăng khả năng kiếm được một công việc như ý về PHP, bạn còn có lợi thế nhất định khi đàm phán lương bổng.

Thành thạo một, hoặc nhiều thì càng tốt, các PHP framework

Với cộng đồng PHP lớn mạnh, cũng như vị trí của bộ sậu PHP-MySQL trong thế giới web, thì việc mà có vô số các sản phẩm opensource, hoặc có phí là điều dễ hiểu. Tương tự đó, rất ít các công ty phát triển web làm từ đầu sản phẩm của mình, mà thường dựa vào một nền tảng framework nào đó để tuỳ biến. Nhất là các công ty ở Việt Nam, có rất ít công ty bỏ tiền ra đầu tư làm từ đầu sản phẩm của mình. Do đó, bạn nắm được nhiều framework thì bạn lại càng có nhiều lợi thế hơn khi xin việc cũng như khi đàm phán lương bổng.

Các framework đáng chú mà các bạn cần bỏ thời gian nghiên cứu, làm thử gồm:
- Về CMS: Wordpress, Joomla, CakePHP, Yii, Laravel, ...
- Về eCommercer: Magento, OpenCart, Shopify,...
- Ngoài ra, còn có một số khác, mặc dù ít gặp ở VN nhưng không phải là không cần: CRM như Sugar hoặc Tiger,...

Thành thạo làm Responsive



Với thời điểm bùng nổ smartphone, tablet iOS, Android như hiện tại, việc có thêm kỹ năng làm web Responsive là cực kỳ quan trọng. Các website lớn, hoặc chuyên nghiệp sẽ yêu cầu điều này. Việc học cách để làm responsive này cũng không tốn nhiều thời gian, vì cũng như PHP, hiện có rất nhiều framework giúp cho các bạn về việc này. Và do đó, tôi recommend, hoặc xúi các bạn cũng có thể nói là vậy, nên học thêm Bootstrap, sau đó là Foundation framework. Ngoài ra cũng nên dành thời gian tìm hiểu thêm việc ứng dụng HTML5, các hiệu ứng CSS mới,...

Thành thạo các Javascript framework, tối đặc biệt JQuery

Tương tự với các quan điểm trên, bạn cũng nên nắm được vững cách sử dụng JQuery. Tài liệu hướng dẫn rõ ràng dễ hiểu, các biện pháp giải quyết khó khăn bằng JQuery nhiều vô kể. Và cũng có vô số người sẵn sàng giúp bạn trên StackOverflow.


Một số kỹ năng, hoặc hiểu biết khác

Ngoài những điểm đề cập trên, thật tuyệt vời nếu nhà tuyển dụng cũng biết được bạn thành thạo, hoặc đã từng làm, hoặc có hiểu biết, hoặc thậm chí là có nghe nói đến một số các thứ sau đây:
- Kỹ thuật về AJAX với JQuery.
- JSON
- Restful Webservices
- Tương tác với web API, request header, response header
- AngularJS
- Thành thạo các tool như Sublime Text, Notepad++, IntelliJ IDEA,...
- Cách deploy một web PHP lên hosting bằng FTP, CPanel,...


Bạn cũng nên theo dõi blog này thường xuyên, tôi sẽ post các bài hướng dẫn lập trình từ cơ bản đến phức tạp trên một số lĩnh vực như web, android, ios...


Thứ Tư, 11 tháng 2, 2015

Samsung Galaxy S6 sẽ có màn hình cong ở cạnh bên, theo Bloomberg

Theo một báo cáo từ Bloomberg, Samsung cho rằng việc trang bị một màn hình cong, giống như Galaxy Note Edge đã làm (hình minh hoạ bên dưới), là cách để chiếc siêu phẩm flagship smart phone Galaxy S6 sắp ra mắt chiến đấu với những chiếc smartphone phẳng. Và, cũng theo báo cáo đó thì công ty Hàn Quốc sẽ ra mắt chiếc Galaxy S6 màn hình 5.1-inch, với việc cong xuống ở cả 2 bên cạnh màn hình chứ không phải chỉ một cạnh như Note Edge.
Ngoài ra, cũng có thể một thiết bị tương tự như Galaxy S6 với 5.1-inch màn hình phẳng như các bản cũ cũng được sản xuất. Hiện tại chưa có thêm thông tin cụ thể nào về các thiết bị đó, tuy nhiên ở hội nghị Mobile World Congress sắp diễn ra vào ngày 1 tháng 3 tới đây tại Barcelona, mọi bí mật sẽ được Samsung bật mí.



Theo bước chân của Galaxy Note 4, khung sườn của những chiếc Galaxy S6 sẽ được làm bằng thép. Thêm vào đó, Samsung đã từ bỏ việc trang bị con chip vi xử lý Qualcomm Snapdragon 810 (do vấn đề của dòng chip này, mặc dù các vấn đề đó đã được sửa fix), và trang bị con chip cao cấp model Exynos 7420 (Samsung cũng đã build một vài con chip A8 cho các thiết bị Apple iPhone). Samsung đã chiến đấu với Apple để giành giật thị phần smartphone, và kể cả chiến đấu lại những công ty đang nổi từ Trung Quốc như Xiaomi, và Lenovo (cho những chiế Zenfone).

Thiếp mời tham gia sự kiện "What's Next" (Điều gì tiếp theo?) ngày 1 tháng 3 tới đây ở Barcelona đã được gửi đi, nhấn mạnh đến một thiết kế có màn hình cong ở góc. Chúng ta đã thấy những thiết kế concept cho thiết bị đa màn hình, dựa trên Note Edge đã làm. Có vẻ rất đẹp, nhưng vẫn thiếu một chút gì đó tiện ích để khiến cho chiếc phone đó trở nên đắt đỏ hơn so với một chiếc Note bình thường.
Sẽ thật thú vị nếu Samsung có thể cung cấp những tính năng mới nữa, và cũng hy vọng giá cả sẽ giảm xuống, đến dòng điện thoại đầu bảng Galaxy model.

Copy.com - Dịch vụ lưu trữ trên mây cloud miễn phí, có 20GB ngay hôm nay

Copy là dịch vụ lưu trữ trên mây (Cloud Storage Service) cung cấp cho bạn miễn phí 15GB lưu trữ. Và nếu bạn bấm vào link này (https://copy.com?r=AojzKC) để đăng ký; sau đó bạn login account vừa đăng ký trên vào apps Copy trên PC (cách làm này giống như với Dropbox đang thực hiện, nên nếu bạn quen với Dropbox thì điều này không có gì khó khăn cản trở bạn được), bạn sẽ được thêm 5BG bonus thưởng thêm nữa, tổng sẽ là 20Gb.



Copy là dịch vụ mới đáng để thử, bên cạnh các dịch vụ quen thuộc như: Google Drive, Dropbox, OneDrive,...
Cũng giống như các dịch vụ khác, Copy hỗ trợ bạn sync tự động các files giữa PC-Mobile-Cloud thông qua apps được cung cấp sẵn theo từng nền tảng. Và các file của bạn cũng có thể được đánh dấu phiên bản, bạn có thể lấy lại phiên bản cũ hơn của file lúc nào cũng được.

Vậy so với Google Drive, Dropbox,... thì Copy có thêm những điểm gì xứng đáng để bạn phải thử nó. Hãy xem các thông tin dưới đây:

Pros - Ưu điểm


  • Dung lượng 15GB là khá lớn so với các dịch vụ miễn phí hiện nay
  • Nhiều user cho một tài khoản, bạn có thể gán tới 5 người dùng cho một tài khoản
  • Chia nhỏ phí lưu trữ với các thư mục chia sẻ shared folders
  • Các tính năng Đồng bộ, Chia sẻ, Sao lưu, Khôi phục hoạt động rất mượt mà, dễ sử dụng
  • Hỗ trợ đa nềng tảng: Windows, Mac OS X, Linux, Mobiles smartphone Android hoặc iOS


Cons - Nhược điểm

  • Giao diện ứng dụng web đang còn lỗi, về tương lai chắc điều này sẽ được khắc phục dần
  • Hiện tại chưa hỗ trợ việc mã hoá file bằng key riêng của mình, mà làm tự động.



  • The Bottom Line - Điểm mấu chốt

    Với 15GB miễn phí lưu trữ, hỗ trợ đa người dùng, Copy là một giải phát tuyệt vời làm phương án backup thay thế cho Google Drive.

    Copy Plans and Pricing - Gói dịch vụ và phí

    Mặc dù miễn phí 15GB hỗ trợ 5 người dùng với đầy đủ tính năng, hiện tại bạn còn có thể được hưởng thêm 5GB thưởng nữa nếu dùng link cung cấp này để đăng ký: https://copy.com?r=AojzKC.

    Với gói dịch vụ 250GB bạn tốn $9.99/tháng (hoặc mua cả năm là $99).
    Với gói dịch vụ 500GB, bạn tốn $14.99/tháng (hoặc $149 / năm).

    Copy cũng hỗ trợ các gói dành cho doanh nghiệp, với giá rẻ hơn Dropbox, và Box. Khởi điểm là $79/tháng cho 10 người dùng, và có gói $239/tháng cho 30 người dùng. Copy cũng có cả gói tuỳ chọn, theo số lượng người dùng nữa.

    Bắt đầu sử dụng Copy


    Với Copy trên web, bạn có thể upload files, thư mục lên account của mình. Chỉ cần nhấn vào nút upload, chọn đối tượng upload, file của bạn sẽ được tải lên.

    Tôi thấy là tốc độ chuyển dữ liệu cho upload và download khá là ấn tượng.
    Ngoài ra, giao diện quản lý nền web cũng khá là sáng sủa.

    Hình ảnh giao diện nền web:


    Ứng dụng Copy trên desktop PC


    Ứng dụng Copy cho desktop PC có các phiên bản dành cho Windows, Mac, Linux (bao gồm cả Raspberry Pi). Về cơ bản, ứng dũng sẽ tạo một thư mục Copy ở trong thư mục Home của bạn. Thư mục Copy này bạn có thể thay đổi sang vị trí khác nếu muốn. Các file bạn đưa vào thư mục này, sẽ được tự động sync lên máy chủ Copy, và từ đó, những thiết bị hoặc desktop khác cũng cài app Copy có thể truy cập được vào những file này.
    Ngược lại, các file được lưu trữ sẵn trên máy chủ Copy, sẽ được tự động tải về máy của bạn.

    Bạn có thể lựa chọn loại bỏ những thư mục không muốn sync tự động. Bạn cũng có thể tuỳ chỉnh được băng thông upload, download, gán proxy, và thậm chí là share thư mục qua LAN mà không cần phải kết nối với Internet. Ngoài ra, tính năng "undelete" sẽ giúp bạn lấy lại những file, folder đã bị xoá nhầm, nằm trong thùng rác.

    Mobile Apps - Ứng dụng cho Mobile


    Copy cũng có ứng dụng di động dành cho Android, iOS, và Windows Phone.
    Với các app này bạn cũng làm được những việc rất là cần thiết và hữu ích như:
    • Upload file từ điện thoại lên máy chủ Copy
    • Xem các phiên bản của files
    • Lựa chọn chỉ cho sync thông qua WiFi để tránh bị tính thêm phí data qua 3G
    • Đặt passcode mật khẩu cho app để tăng bảo mật
    • Chia sẻ các thư mục, quản lý các chia sẻ
    • Tự động sao lưu ảnh chụp bằng điện thoại lên máy chủ Copy
    • Phát các file media đến Chromecast TV
    Tính năng hấp dẫn là xem, hoặc khôi phục các phiên bản của file. Không chỉ là trên nền web, ngay trong app bạn cũng có thể làm được điều này.


    Đánh dấu phiên bản File Versioning

    Copy đóng vai trò là dịch vụ backup rất tốt. Bạn có thể lấy lại phiên bản cũ hơn của file bằng Web, bằng mobile app, hoặc bằng cả desktop app (nhấn chuột phải vào file đó). Đồng thời file bị xoá sẽ chỉ thực sự xoá khỏi server sau 30 ngày, do đó bạn có nhỡ xoá phải file quan trọng thì vẫn có cơ hội để bạn có thể khôi phục lại.

    Fair Storage - Tính năng chia sẻ chi phí cho các thư mục share

    Các file và thư mục shared thay vì bị tính cùng một dung lượng với mỗi account được share, Copy sẽ chia việc sử dụng cho mỗi người dùng. Do đó, với 10GB folder được chia sẻ cho 5 người, bạn thực tế sẽ chỉ bị tính là mới dùng 2GB dung lượng, thay vì bị tính 10GB dung lượng như các dịch vụ khác. Copy gọi đây là "Fair Storage"

    Chia sẻ files

    Chia sẻ nội dung của folder bằng Copy thì rất là đơn giản và hiệu quả. Bạn chỉ cần nhấn chuột phải vào file hoặc folder, chọn Share. Một đường link sẽ được tạo, và bạn có thể gửi đường link này qua email, qua mạng xã hội (Facebook, Twitter, Google+) thông qua nút chia sẻ.

    Copy có 2 kiểu chia sẻ là: Đơn giản và Bảo mật.
    Chia sẻ Đơn giản là: nếu người nào có link thì đều có thể truy cập được.
    Chia sẻ Bảo mật: người được truy cập phải được mời, "invitation only", và người được mời qua email phải xác thực trước khi có thể truy cập. Tính năng này, còn cho phép đổi quyền cụ thể cho mỗi người được chia sẻ. Các quyền gồm: Có thể Sửa Edit & Sync, chỉ Xem, và có thể quản lý Can Manage.

    Speed Tốc độ hoạt động

    Tốc độ hoạt động khá là tốt trong bài test của tôi. Một số khách hàng của tôi từ Châu Âu như UK, cũng bắt đầu chia sẻ tài liệu với chúng tôi qua dịch vụ Copy này. Tôi có thể upload file lên với max băng thông upload. Tốc độ download cũng khá tốt.

    Security Bảo mật

    Copy sẽ tự động mã hoá file sử dụng phương pháp 256-bit AES encryption, cả quá trình upload cũng được mã hoá, và file lưu trên server cũng được mã hoá. Các file được lưu trên mạng máy chủ của Barracuda Networks, không phải trên một dịch vụ của bên thứ 3 nào khác, not on 3rd party servers.
    Bởi vì tính bảo mật cao, bạn sẽ không được cung cấp lựa chọn là sử dụng key mã hoá cá nhân của mình (personal encryption key). Bạn có thể thấy nó không phù hợp để lưu trữ các dữ liệu tối mật của mình nếu không được sử dụng personal encryption key của mình.

    Tổng kết những điểm được ưa thích

    • 15GB miễn phí (bây giờ đang được hưởng 20GB rồi :) ) thì hoàn toàn đủ cho nhu cầu sao lưu, lưu trữ và chia sẻ
    • Các file upload, download nhanh, chia sẻ dễ dàng
    • Tuyệt vời cho việc chia sẻ ảnh

    Điểm mà không thích

    Các điểm trừ dưới đây là điểm làm tôi cảm thấy bớt thích Copy đi một chút.

    Giao diện web đang còn lỗi, điều này có thể sẽ được sửa chữa về sau, nhưng hiện tại đang là điểm khó chịu.
    Không hỗ trợ khoá mã hoá cá nhân "personal encryption", nên mặc dù được mã hoá, các file của bạn không thể đảm bảo được tiêu chí là "File của bạn chỉ được thấy bởi những người bạn cho phép". Bạn phải đặt niềm tin vào khả năng bảo vệ dữ liệu của Copy, giống như bạn đặt niềm tin vào Dropbox, hoặc các dịch vụ khác tương tự.

    Ai nên dùng Copy?

    Nếu bạn đang tìm kiếm một dịch vụ lưu trữ trên mây miễn phí, với các tính năng tuyệt hảo, đôi khi để thay thế cho Google Driver (GD không hỗ trợ Linux) thì bạn sẽ rất thích Copy.

    Copy cũng rất tuyệt dành cho doanh nghiệp, bởi vì ngay với gói miễn phí, Copy cũng hỗ trợ tới 5 người dùng cho mỗi account.



    Hãy sử dụng ngay link này https://copy.com?r=AojzKC để đăng ký, bạn có 20GB miễn phí chứ không ít đâu :).

Thứ Ba, 10 tháng 2, 2015

AngularJS Tutorial - Bài 1: Giới thiệu

Angular là một MVW Javascript framework rất hấp dẫn để xây dựng nên những ứng dụng web. Angular được xây dựng, phát triển bởi Google, và nó cung cấp những tính năng rất hiện đại cho việc xây dựng web. MVW là viết tắt của Model-View-Whatever, bạn có thể thấy rằng tham vọng cũng như những gì nó mang lại là rất lớn, và nó sẽ hỗ trợ chúng ta một cách mềm dẻo flexible để phát triển mọi thể loại ứng dụng. Trong MVW, chữ W có thể được thay thế để bạn có thể đi theo các hướng MVC (Model-View-Controller) hoặc MVVM (Model-View-ViewModel), do đó bạn có thể thấy được sự quen thuộc nhất định khi bắt tay vào tìm hiểu và sử dụng Angular.

Bài này là một trong series các bài viết:


Trước khi biết về Angular JS, bạn sẽ không thể ngờ rằng HTML còn có thể trở nên "ĐỘNG" và tiện dụng đến như vậy. Bạn thử tưởng tượng rằng, web của bạn sẽ kết nối với server API, lấy về result dưới dạng JSON, Angular JS sẽ đóng vai trò data-driven để biến JSON đó thành những Models. Bạn có thể nhanh chóng update lên HTML content mà không cần phải refresh lại trang,...


Angular thì miễn phí và open-source do đó bạn có thể thoải mái sử dụng và tuỳ biến theo ý thích của mình.

Dưới đây là một sơ đồ mà tôi vẫn hay sử dụng khi làm việc với AngularJS:




Angular thích hợp sử dụng nhất cho những ứng dụng có 1 trang SPA - Single Page Application.
Thông qua các bài tutorial này, bạn sẽ lần lượt làm quen với những tính năng nổi trội mà Angular JS mang lại.

Đối tượng hướng đến

Các bài trong series này hướng đến những người đã có ít nhiều kinh nghiệm lập trình web, làm việc với Javascript.
Do đó, bạn cần tham khảo phần các yêu cầu chuẩn bị trước khi theo dõi các bài tutorial này.

Điều kiện để học Angular JS

Để làm quen và sử dụng Angular, bạn phải có những kiến thức, hiểu biết cơ bản về những môn sau:
Ngoài ra, bạn có thêm được các kiến thức công nghệ về JQuery, HTML5, AJAX, JSON, Restful Webservices,... thì lại càng lợi thế hơn khi học Angular.


Các tính năng Cơ bản của Angular JS


Nhìn tổng quát ở sơ đồ trên, ta có thể thấy được những tính năng chính do Angular JS cung cấp gồm có:
  • Data-binding Sự gắn kết data lưu trong model với view

    Angular có khả năng tự động đồng bộ hoá data giữa Model và View. Data được thay đổi trên View (thông qua input field) sẽ ngay lập tức được cập nhật vào Model javascript object. Ngược lại, javascript object khi có thay đổi, có thể là từ JSON phía server API trả về, sẽ được tự động cập nhật hiển thị lên HTML view ngay mà bạn không cần phải can thiệp vào. Đây chắc chắn là thế mạnh mà bạn sẽ cực kỳ thích thú.
  • Scope

    Scope có thể hiểu là những objects model ở tầng application (chú ý, nó không chỉ là Model để lưu các giá trị thuộc tính của object trong OOP, mà nó còn lưu cả các cài đặt cho application ở thời điểm hiện tại nữa). Và chúng sẽ đóng vai trò kết nối giữa controller với view. Chẳng hạn, bạn sẽ gán action cho button đến một hàm trong scope.
  • Controller

    Controller trong Angular JS sẽ chứa các javascript method, và giới hạn trong một scope cụ thể.
  • Services

    AngularJS cung cấp một vài services sẵn, ví dụ như $http để thực hiện một lời gọi AJAX (XMLHttpRequest) đến server API. Những services này là những object duy nhất, dùng chung trong toàn app, và nó chỉ được khởi tạo một lần. Bạn sẽ có thể sẵn sàng sử dụng các object này ngay bất cứ lúc nào, và Angular framework sẽ quản lý những object này giúp bạn.
  • Filters - Các bộ lọc

    Bạn sẽ sử dụng các bộ lọc này để lọc ra được những item từ một arrays nào đó.
  • Directives - Điều hướng

    Các điều hướng là những đánh dấu (markers) trên các thành phần DOM. Nó có thể là bản thân cả element, thuộc tính, css,... để giúp bạn thao tác với element đó. Directives cũng có thể được sử dụng để tạo ra những thẻ HTML tuỳ biến, các widgets. AngularJS cung cấp sẵn một số directive thường dùng, mà sau này bạn sẽ quen thuộc, ví dụ như ngBind, ngModel, ...
  • Templates - Mẫu giao diện

    Template sẽ những view hiển thị các thông tin từ model do controller chỉ thị. Nó có thể là một file (ví dụ index.html), có thể là nhiều view như là những thành phần con (partials) để ghép lại thành một màn hình.
  • Routing - chuyển hướng trang web

    Nếu bạn đã từng làm việc với các framework MVC, bạn sẽ hiểu khái niệm này. Routing sẽ giúp bạn chỉ định view nào sẽ hiển thị, nếu người dùng truy cập vào URL có patterns như thế nào. Nghĩa là nó sẽ thay đổi views hiển thị tương ứng với ngữ cảnh.
  • MVW - Model View Whatever

    MVW là một design pattern mà chia một ứng dụng thành các phần Model, View, và thường là Controller tương tự là MVC truyền thống. Mỗi phần sẽ có khả năng và vai trog đáp ứng riêng. So với MVC truyền thống, MVW còn pha trộn thêm MVVW (Model-View-ViewModel). Và cái tên MVW Model View Whatever là do Angular JS team đặt ra.
  • Deep Linking - Liên kết sâu

    Deep linking liên kết sâu cho phép ta mã hoá tình trạng của ứng dụng vào URL, và ta có thể bookmark lại được. Sau đó, ứng dụng có được dựng lại hoàn toàn trạng thái của nó sau này khi ta access vào URL đó.
  • Dependency Injection

    AngularJS có sẵn một hệ thống injection để developers có thể dễ dàng tạo, hiểu, và kiểm tra ứng dụng.



Ưu điểm của AngularJS

  • Với concept ý tưởng, cũng như những thành phần có sẵn mà Angular cung cấp, ta có thể thấy là những ứng dụng SPA Single Page Application - Ứng dụng một trang, sẽ rất thực hiện một các rõ ràng clean, và dễ cho bảo trì code.
  • Với việc mà binding được data vào HTML DOM, nó rất nhanh update data qua lại giữa view và model.
  • Code viết với AngularJS rất dễ test.
  • AngularJS sử dụng injection để bạn ngăn cách và hiểu một cách tách bạch được những thứ liên quan đến nhau.
  • Có thể viết theo hướng tái sử dụng.
  • Với AngularJS, các lập trình viên developers sẽ chỉ cần code ít hơn cho những tính năng lớn.
  • Trong AngularJS, các views là những trang HTML code thuần; các Controller thì được viết bằng javascript để thực hiện các nghiệp vụ business.
  • Và điều quan trọng nhất, ứng dụng viết bằng AngularJS sẽ chạy trên hầu hết các trình duyệt hiện nay, bao gồm cả các trình duyệt trên smart phones, tablets máy tính bảng, đương nhiên là bao gồm cả iOS và Android :)

Nhược điểm của AngularJS

Mặc dù có nhiều lợi ích khi sử dụng AngularJS, tuy nhiên không có gì là hoàn hảo, bạn cũng cần xem xét một số nhược điểm của Angular để có kế hoạch cho mình khi develop app bằng AngularJS. Điều may mắn là những nhược điểm này có thể khắc phục hoặc hạn chế được, đủ để ta yên tâm coding app bằng AngularJS.
  • Không an toàn: Vì nó là nền tảng dựa trên javascript, có nghĩa là nó chạy phía client. Điều này đồng nghĩa với việc người dùng có hiểu biết về coding, có mục đích mờ ám, thì họ có thể sửa đổi code phía client trước khi submit lên server. Do đó, một số các tác vụ quan trọng, bạn nên thực hiện phía server, ví dụ: Authenticate và Authorization (xác thực và kiểm tra quyền của người dùng); thực hiện validation với những data được submit lên API trước khi save hoặc thao tác với data do người dùng submit lên đó. Do đó cách tốt nhất là dùng AngularJS để query vào các WebService API, không nên save trực tiếp data vào database mà không check.
  • Nếu người dùng ứng dụng, bật chức năng chặn Javascript, bạn sẽ không thể làm gì được, webpage sẽ chỉ hiển thị được những thông tin cơ bản, và đương nhiên là các thao tác business sẽ không hoạt động. Tuy nhiên điều này có lẽ ít xảy ra, nhưng bạn cũng cần consider chuyện này.





Tài liệu tham khảo

Bạn có thể tham khảo các ví dụ, cũng như hướng dẫn từ trang chủ Angular JS.

AngularJS Tutorial: Hướng dẫn lập trình web với AngularJS

Tôi đã thực sự ngạc nhiên và thích thú với những gì mà AngularJS có thể làm được. Thậm chí tôi đã liên tục thấy xuất hiện suy nghĩ trong đầu rằng: "Tất cả web, hay ứng dụng hybrid từ giờ về sau sẽ hướng theo việc sử dụng những tính năng tuyệt vời do AngularJS mang lại để tiết kiệm công sức, thời gian". Trong thời gian tới, với việc HTML5 dần phổ biến, các thiết bị di động với các trình duyệt có bộ dựng tốt hơn, thì đây sẽ là xu hướng có rất nhiều ích lợi. Bạn sẽ dần mê mẩn AngularJS như tôi hiện tại sau khi bắt tay vào tìm hiểu và lập trình với AngularJS.

Đây sẽ là một loạt các bài viết hướng dẫn lập trình web với thư viện Javascript là AngularJS.



Chủ Nhật, 8 tháng 2, 2015

Điểm danh 3 Xu Hướng Thiết Kế app


Mỗi năm qua đi, chúng ta lại nhận thấy có sự thay đổi trong xu hướng thiết kế ứng dụng, có những thứ mới xuất hiện, có những thứ phát triển lên tầm cao mới, và cũng có những thứ không còn xuất hiện nữa. Các developers cũng cố gắng để làm cho app của mình trở nên độc đáo, unique. Bằng cách tiếp cận các xu hướng thiết kế mới này, bạn sẽ có thể làm cho ứng dụng của mình fresh - tươi mới, hiện đại, thân thiện với người dùng. Cùng nhìn vào một số sản phẩm được đánh giá là "Best Design App of 2014 - Những app thiết kế tốt nhất 2014" để tìm ra xu hướng mới cho năm 2015.

Màu sắc và Tính cách

Ngay cả khi app của bạn có nội dung trang trọng, nghiêm túc, bạn cũng nên làm nó trở nên màu sắc hơn. Mắt người sẽ bị hấp dẫn vào những thứ màu sắc, những nơi sáng sủa, sạch sẽ, và tương tự, nếu app của bạn có những điều đó, người dùng sẽ dễ dàng nhớ và nhận ra. Do màn hình mobile thì tương đối nhỏ so với màn hình máy vi tính, hoặc TV, do đó bạn không nên quá lo lắng về việc người dùng sẽ bị chói hoặc mỏi mắt khi nhìn vào ứng dụng tươi sáng của bạn.

Chỉ có một điều quan trọng cần ghi nhớ đó là: Chữ hoặc hình ảnh cần phải luôn hiển thị rõ ràng trên nền sáng của ứng dụng.

Ví dụ:




Pha trộn giữa FLAT DESIGN và Skeumorphism


Kể từ khi Apple phát hành bản iOS 7, và Google giới thiệu Material Design, xu hướng thiết kế số 1 trong thế giới mobile chính là FLAT DESIGN - THIẾT KẾ PHẲNG. Đây cũng là câu trả lời cho xu hướng thiết kế cũ là: Skeumorphism, là phương pháp thể hiện các đối tượng trong thế giới thực thành những đối tượng 3 chiều (3D) với việc những bóng đổ (shadow), trên mobile và PC. Với FLAT DESIGN, những bóng đổ, hiệu ứng mờ được loại bỏ hoàn toàn, các đối tượng được thiết kế hoàn toàn bằng 2 chiều (2D).
Tuy nhiên, xu hướng này cũng đã có sự thay đổi một chút. Bằng cách khéo léo pha trộn thế mạnh của 2 xu hướng Flat Design và Skeumorphism, kết quả lại càng tuyệt vời hơn. Bằng cách thêm những bóng đổ vào các đối tượng 2D, ta có thể làm nổi bật đối tượng cần gây chú ý.





Thêm các lớp thể hiện để Đơn giản hoá

Trong nhiều năm, developers đã tìm các cách để làm các thành phần trên app hợp lý với nội dung, và phải đơn giản để dễ sử dụng.
Ngày nay, nhiều developers và nhà phát hành publishers đã tìm ra cách để làm cho app trở nên đẹp hơn hơn. Chiến thuật chính đó là ẩn đi những Menu-Trình đơn, Navigation Bar-Thanh điều hướng, cho đến khi người dùng cần đến chúng. Một số chiến thuật khác thì lại sử dụng phương pháp gán nhiều chức năng truyền thống vào chỉ một vài nút, và cho phép các nút đó xổ ra các trình đơn ngữ cảnh cho người dùng lựa chon khi chạm vào.

Xu hướng này khá là phụ thuộc vào trực quan so với các phương pháp khác. Các developers cần phải cực kỳ quen thuộc với việc người dùng mobile sẽ muốn sử dụng những gì trên khoảng trống của màn hình, và người dùng sẽ tương tác như thế nào với màn hình cảm ứng. Họ quẹt (swiping) hay là họ tap (chạm), hay là những gesture (cử chỉ) gì.

Ví dụ:




Là một developer, bạn không nhất thiết phải copy nguyên bản những xu hướng trên hoàn toàn vào app của mình. Mà thay vào đó, bạn nên suy nghĩ cách để phối hợp hiệu quả các xu hướng trên. Thậm chí cả những xu hướng khác mà bản thân bạn nhận thấy phù hợp, để sao cho apps của mình có thể cạnh tranh được trong thế giới mobile app.

Chúc may mắn :)

Thứ Bảy, 7 tháng 2, 2015

6 lỗi chết người thường mắc phải khi phát triển ứng dụng mobile


Việc phát triển ứng dụng dành cho mobile, đang thu hút được sự chú ý lớn, thậm chí là sự yêu thích, muốn hướng tới của nhiều lập trình viên, nhiều công ty khởi nghiệp. Tuy nhiên các lập trình viên sẽ rất dễ gặp phải thất bại nếu thiếu kinh nghiệm khi bắt tay vào xây dựng app cho riêng mình. Để trở nên thành công, và cũng như là giữ được thành công, đòi hỏi không chỉ sự hiểu biết về việc mình cần làm, mà chúng ta cũng phải hiểu được cả những gì không nên làm.

Bạn có thể biến ý tưởng tuyệt vời để thành một app "gone-with-the-wind" - lên như diều gặp gió, sau khi đã tránh được những lỗi có thể, ngay từ đầu bắt tay vào xây dựng ứng dụng.

Dưới đây là 6 lỗi thường gặp, và bạn nên tránh nó càng sớm càng tốt; hoặc nếu không, bạn có thể sẽ phải đối mặt với những lỗi nghiêm trọng trong ứng dụng của mình.

Chỉ xây dựng cho những nền tảng thông dụng nhất

Trong vương quốc của smart phone, bạn dễ dàng nhận thấy rằng IOS và Android hiện đang đóng vai trò là những người chơi chính mạnh mẽ chiếm hầu hết thị phần. Nhưng bạn cũng cần nhớ rằng, những thiết bị của Black Berry, của Microsoft với thương hiệu Lumia (mua lại từ Nokia) chạy Windows Phone, mặc dù chiếm tỷ trọng không lớn, nhưng không ai dám khẳng định một ngày kia những OS cùng với các thiết bị này sẽ trở nên lớn mạnh hay không; hay bị bại trận hoàn toàn phải biến mất.

Hẳn bạn đã từng nghe nói rằng: "Người dùng iOS sẵn sàng chi tiền ra nhất". Tuy nhiên bạn cũng có thể nghe thấy ở đâu đó, có báo cáo nói rằng: "Các thiết bị Android đang làm mưa làm gió trên toàn cầu, ở khắp các phân khúc từ giá rẻ - trung cấp - đến cao cấp". Như vậy, bạn là một developer, bạn quen thuộc với iOS, bạn chỉ "chơi" với iOS. Thế thì bạn đã bỏ qua phần lớn những người dùng smart phone khác đang sử dụng Android, Windows Phone rồi. Bạn cũng quên rằng, người dùng iOS sẵn sàng bỏ tiền ra cho ứng dụng, nhưng bạn cũng biết rằng họ đủ thông minh để sẵn sàng chi tiền ra cho những thứ đáng tiền. Còn những người dùng Android lại có những suy nghĩ khác.

Bạn là một developer, và thật thông minh nếu bạn cố gắng làm cho ứng dụng của mình xuất hiện trên nhiều nền tảng nhất có thể.

Làm App như là một bản thu gọn hoá của Website của bạn

Đây là một suy nghĩ rất sai lầm. Website được thiết kế chạy trên những máy PC. Và nó có nhiều sự khác biệt khi hiển thị trên mobile. Người dùng PC sẽ chấp nhận chuyện họ nhấn vào đường link, ngồi chờ trang web được tải về. Nhưng khi dùng app trên mobile, họ sẽ rất thấy nhàm chán khi nhấn vào nút trên ứng dụng của bạn mà sau đó phải chờ đợi để content được load về một cách chậm chạp, hoặc tệ hơn, đôi khi nhấn xong không thể hiểu được app đang làm gì vì không nhận thấy sự thay đổi trên màn hình. Một app mobile, ngoài nội dung là điều quan trọng, thì thứ quan trọng nhất lại là việc tạo ra một trải nghiệm tốt, tương tác tốt với những thao tác "chạm - touch" trên màn hình cảm ứng, cũng như phản xạ bản năng của con người khác sẽ khác khi sử dụng mobile so với PC. Không chỉ thế, thiết bị mobile thì rất đa dạng về kích thước màn hình, độ phân giải màn hình, rồi là sự thay đổi về hiển thị khi dùng máy ở tư thế nằm ngang, sẽ khác với dọc. App mobile sẽ cần được thiết kế để tận dụng được tối đa khả năng hiển thị trên một nhiều loại màn hình từ bé đến lớn.
Do đó, app cho mobile cần được thiết kế để đáp ứng được các đặc điểm trên.

Không đặt ưu tiên cho việc tạo ra tiền khi làm app


Bạn là developer, bạn có ý tưởng hay, đồng thời bạn có suy nghĩ rằng, với ý tưởng này thì mình sẽ nhanh chóng kiếm ra được tiền. Điều này là rất nguy hiểm. Thế giới ứng dụng phải cạnh tranh rất khốc liệt. Developer viết ra app, ngoài việc đam mê, nó còn là nguồn thu nhập nữa. Nếu developer không bắt đầu tìm cách làm ra tiền ngay từ lúc bắt đầu, thì tinh thần của anh có thể bị hạ rất nhanh trong thời gian ngắn, và anh kết thúc bằng một sự thất bại.
Bởi vậy, anh phải có kế hoạch trong đầu xem anh tạo ra tiền như thế nào. Có nhiều cách để kiếm tiền từ app, ví dụ như: subscription (yêu cầu người dùng đóng tiền theo tháng để sử dụng), freemium (miễn phí sử dụng, nhưng bán nội dung). Và bạn có thể thấy được nhiều app đang kiếm tiền bằng những phương thức đó. Nhưng, bạn cũng xem xét cách mà bạn kiếm tiền bằng app của mình sớm, bởi vì cách thức đó sẽ ảnh hưởng đến thiết kế kỹ thuật khi bắt đầu viết app.

Quá tin tưởng về Doanh thu Sản phẩm của bạn khi bắt đầu phát triển

Hầu hết các nhà sáng chế đều sống dưới một niềm tin rằng họ có thể phát minh ra thứ tốt nhất mà cả thế giới sẽ sử dụng trong thời của anh ấy. Và tương tự, người ta cũng thường tin tưởng rằng, một khi mình bắt đầu khởi chạy sản phẩm, thì rất nhanh sẽ bán được rất nhiều dựa vào giá trị mà nó mang lại. Điều này thật là tuyệt vời, có thể là như vậy, nhưng nó còn phụ thuộc vào khả năng promote, quảng cáo của bạn.
Không phải mọi sản phẩm là dành cho tất cả mọi người, và do đó bạn phải tìm hiểu được thị trường. Và điều cần thiết là bạn phải nắm được thị hiếu, nhu cầu của khách hàng mà bạn đang hướng tới cho ứng dụng. Một khi bạn đã define - định nghĩa rõ được điều này, hãy cố gắng xây dựng ý tưởng của bạn quanh mục tiêu đó. Và như vậy, ngay khi bạn khởi động app, những khách hàng đó sẽ sẵn sàng tải app của bạn, vì họ cần, và app của bạn đáp ứng được nhu cầu của họ.

Chỉ Test - kiểm tra ứng dụng của bạn đến phiên bản Beta

"Two is always better than one"-"2 luôn hơn là 1" - câu này cũng vẫn đúng trong thế giới ứng dụng. Đừng quá phụ thuộc vào một vài phương pháp bạn đã kiểm thử trong bản beta test. Bởi vì khi bạn phát triển app, bạn sẽ có một vài tư tưởng kiểu như "app của mình viết chắc chắn là ngon", "code của mình chắc chắn là xịn", "chắc chắn là hết lỗi rồi",... vì bạn là người develop ra nó, bạn nắm nó rõ nhất. Và <strong>bạn biết cách sử dụng app mà không gây ra lỗi</strong>. Đây chính là điểm chết người. Khi app được tung ra, hàng đống complain, exception từ người dùng report về sẽ khiến bạn đau đầu.
Do đó, bạn nên cố gắng tìm cách nhờ bên thứ 3, hoặc một đơn vị nào đó test sản phẩm của bạn. Bạn hãy lắng nghe những ý kiến của họ, kể cả những lời khen và lời chê. Tìm hiểu ra những điểm chưa đáp ứng được, những điểm chưa hài lòng. Cố gắng điều tra xem mình đã sai ở bước nào, bạn thiếu ở điểm nào.

Không tối ưu hoá app

Bạn có thể từng nghĩ rằng "app chạy được là được rồi" khi release ứng dụng của mình. Tuy nhiên có những vấn đề có thể bạn chưa thấu đáo hết.
Một quan điểm đã được trình bày một phần ở trên, khi nói về việc mobile app không nên là một bản thu gọn của website. Lối mòn suy nghĩ (mindset) khi người dùng app sẽ khác với dùng web. Vì thế, bạn hãy quan tâm đến tốc độ xử lý, sự chiếm dụng bộ nhớ trong khi app của bạn hoạt động. Người dùng chắc chắn sẽ không thích app của bạn tốn quá nhiều bộ nhớ, hoặc xử lý quá lâu mỗi khi thao tác trên ứng dụng của bạn.
Và tương tự, chắc chắn rằng họ sẽ không thích hơn nữa nếu app của bạn sử dụng quá nhiều băng thông data, vì điều này ăn vào túi tiền của người dùng một cách vô lý. Vì vậy, hãy optimized-tối ưu hoá, app của bạn đến mức tối đa.

Thứ Sáu, 6 tháng 2, 2015

Giới thiệu về Ruby, Ruby on Rails - Introduction of Ruby, Ruby on Rails

Ruby đang phát triển chóng mặt, dần trở thành ngôn ngữ lập trình được ưa thích và dễ kiếm ra tiền từ nó.

Ở vào thời điểm hiện tại, bạn có rất nhiều lựa chọn một ngôn ngữ lập trình để theo đuổi. Ví dụ như học Java: bạn có thể làm được phần mềm chạy trên PC, hoặc cross-platform đa nền tảng, làm web, phát triển ứng dụng cho các thiết bị Android - nghề mới đang rất hot. Tương tự như Java, các công nghệ development bằng bộ .NET Framework của Microsoft cũng đã hấp dẫn rất nhiều lập trình viên trong mấy chục năm qua. Hay là bạn có thể làm web với bộ PHP-MySQL...

Tuy nhiên, Ruby đang là một "HOT TREND", một xu hướng mới thu hút nhiều lập trình viên tham gia phát triển các ứng dụng của mình bằng ngôn ngữ này.


Vậy, Ruby là gì?

Đọc đến đây, bạn đang tự hỏi vì sao Ruby đang dần trở nên phổ biến?
Các fans của Ruby thì khen nó là một ngôn ngữ lập trình "beautyful - đẹp", "artful - đầy nghệ thuật". Không chỉ thế, họ còn nói rằng nó rất tiện dụng dễ học dễ làm.

Những lời khen có cánh đó không phải là vô lý nếu bạn tiếp tục theo dõi bài viết này, và có thể ngay sau đó, bạn sẽ hào hứng bắt tay vào học Ruby.

Ý tưởng của Người tạo ra Ruby

Ruby là ngôn ngữ rất quan tâm đến sự cân bằng. "Cha đẻ" ra nó, Yukihiro Matsumoto "Matz" (người Nhật Bản), đã pha trộn những phần tuyệt vời nhất mà ông nhận thấy ở những ngôn ngữ ông ưa thích trước đó (Perl, Smalltalk, Eiffel, Ada, Lisp) vào một ngôn ngữ mới, cân bằng giữa yếu tố: lập trình chức năng với sở thích lập trình.

Ông thường nói rằng ông "cố gắng làm cho Ruby trở nên tự nhiên, không phải đơn giản". Và thế là coding bằng ngôn ngữ Ruby được hiển thị (appearance) một cách rất đơn giản, nhưng bên trong nó lại rất phức tạp, giống như cơ thể con người vậy.

Về sự phát triển của Ruby

Kể từ khi được giới thiệu vào năm 1995, Ruby đã không được sự ủng hộ của giới coder. Tuy nhiên, đến năm 2006, nó đã được chấp nhận rộng rãi.
Khắp nơi người ta đã nói đến Ruby, và vào top 10 các ngôn ngữ được bàn luận nhiều nhất.
Hiện tại cũng có vô vàn các group nhỏ vẫn đang thảo luận về Ruby. Đặc biệt là RoR - Ruby on Rails.

Ruby cũng Hoàn Toàn Miễn Phí. Bạn không phải trả một xu nào, thoải mái sử dụng, sửa chữa, phân phối lại cho người khác.

Những điểm nổi bật của Ruby so với ngôn ngữ khác


Trong Ruby - mọi thứ đều được coi là một Object
Khởi đầu, Matz đã tham khảo các ngôn ngữ khác để tìm một ý tưởng về cú pháp các câu lệnh. Nhớ lại lúc đó, ông nói: "Tôi đã muốn một ngôn ngữ kịch bản mà có nhiều sức mạnh hơn Perl, và hướng đối tượng Object-Oriented hơn là Python2".

Trong Ruby, mọi thứ là một đối tượng object. Mỗi bit thông tin, và code có thể sở hữu các thuộc tính cũng như actions của chúng. Lập trình hướng đối tượng gọi các properties là các biến instance, và các actions thường được biết như là những methods phương thức. Phương thức thuần hướng đối tượng của Ruby thể hiện qua một dòng code dưới đây, đó là áp dụng action vào một số.

5.times { print "We *love* Ruby -- it's outrageous!" }

Dòng code trên nghĩa là thực hiện 5 lần liên tiếp việc in ra dòng text: "We *love* Ruby -- it's outrageous!"


Trong nhiều ngôn ngữ, numbers số và một số kiểu dữ liệu gốc primitive types không phải là object (ví dụ trong java boolean, int, float,...). Ruby thì làm theo cách của ngôn ngữ Smalltalk bằng cách cung cấp các methods cũng như là các properties cho toàn bộ các kiểu data.

Tính mềm dẻo của Ruby’s Flexibility
Ruby được thấy là một ngôn ngữ khá mềm dẻo, khi mà nó cho phép người dùng tự do thay đổi các thành phần của nó. Ngay cả những thành phần nòng cốt của Ruby cũng có thể bị loại bỏ đi, hoặc có thể định nghĩa lại nếu muốn. Các phần đang sẵn có thì có thể thêm vào tuỳ thích. Ruby cố gắng không hạn chế coder.

Ví dụ, phép cộng được thực hiện thông qua ký tự (+). Nhưng, bạn nếu muốn nó trở nên dễ đọc hơn nữa, bạn có thể thêm mới 1 method vào lớp Numeric có sẵn của Ruby như dưới đây:


class Numeric
def plus(x)
self.+(x)
end
end


y = 5.plus 6
# kết quả là y = 11



Blocks - Khối: a Truly Expressive Feature Một tính năng thực sự Ấn tượng
Khối trong Ruby, cũng được xem là nguồn gốc của tính mềm dẻo tuyệt vời của nó. Một coder có thể gán một closure (tôi cũng không biết được từ tương đương trong tiếng Việt nữa) cho mọi method, mô tả method đó sẽ làm gì. Closure được gọi là một block và trở thành một tính năng phổ biến nhất đối với những người mới chuyển sang code Ruby từ các ngôn ngữ khác như PHP hoặc VB.

Block được lấy cảm hứng từ tính năng của ngôn ngữ. Matz nói, "trong Ruby closures, tôi muốn bày tỏ sự cảm ơn đến văn hoá của ngôn ngữ Lisp."


search_engines =
%w[Google Yahoo MSN].map do |engine|
"http://www." + engine.downcase + ".com"
end

Trong đoạn code trên, block được mô tả bên trong cấu trúc do ... end. Phương thức map được gán cho block để cung cấp một danh sách các từ.
Có nhiều method trong Ruby để lại một lỗ trống mở cho code có thể tự viết block của mình nhằm thực hiện việc mà method cần làm.

Ruby và Mixin
Không giống như nhiều ngôn ngữ hướng đối tượng khác, Ruby chỉ cho phép thừa kế đơn. Nhưng Ruby cũng có những concept về modules (trong Objective-C thì gọi là Categories). Modules là một tập các methods.

Trong lập trình hướng đối tượng, mixin là một class tổng hợp chứa nhiều methods từ các class khác.
Các class có thể mixin một module, và ngay lập tức có được các methods có trong module đó. Ví dụ


class MyArray
include Enumerable
end

Trong đoạn code trên, class MyArray sẽ đồng thời có cả những method do class Enumerable cung cấp.

Thông thường, những Ruby developer nhìn việc này là cách rõ ràng hơn là đa thừa kế, đa thừa kế vốn rất phức tạp và quá hạn chế.


Ruby’s Visual Appearance - Cái nhìn về Ruby (sự hiển thị code để bạn có thể đọc được)
Trong khi Ruby thường sử dụng rất hạn chế các dấu chấm, và thường sử dụng các từ khoá bằng English, thậm chí phép đánh dấu chấm thường chỉ để sử dụng trang trí. Ruby không phải khai báo biến, nó sử dụng một quy tắc rất đơn giản để hiển thị phạm vi scope của biến.


  • var là local variable.
  • @var là instance variable.
  • $var là global variable.

Việc đánh dấu như vậy cải thiện việc đọc code, cho phép lập trình viên dễ dàng xác định được vai trò của các biến. Và rõ ràng là việc sử dụng các self., hoặc this. cũng trở thành không cần thiết nữa.


Xa hơn những điều cơ bản trên
Ngoài những điều cơ bản trên, Ruby còn rất giàu có các tính năng khác như dưới đây:

  • Ruby cũng có các tính năng để bắt các exception như là Java hoặc Python, giúp ta dễ dàng xử lý lỗi.
  • Ruby có cơ chế tự thu dọn rác với tất cả các objects. Như Matz nói, "Điều này tốt hơn cho sức khoẻ của bạn."
  • Viết các phần mở rộng bằng C trong Ruby thì dễ hơn là Perl hoặc Python, và cũng rất dễ dàng cho gọi các Ruby API từ C. Bao gồm cả việc gọi Ruby nhúng trong một phần mềm, để sử dụng như là một ngôn ngữ kịch bản. Một giao diện SWIG cũng được cung cấp sẵn.
  • Ruby có thể tải các thư viện mở rộng một cách động, nếu OS cho phép.
  • Ruby độc lập với OS theading. Vì thế, với mọi nền tảng mà Ruby có thể chạy, bạn sẽ có khả năng đa luồng multithreading, không cần biết là OS có hỗ trợ hay không, ngay cả MS-DOS!
  • Ruby cơ động cao: Nó có thể được develop trên hầu hết GNU/Linux, và có thể hoạt động trên nhiều máy UNIX, Mac OS X, Windows, DOS, BeOS, OS/2, ...



Các biến thể của Ruby
Ruby, là một ngôn, nó có một vài biến thể khác. Mặc định Ruby thường được hiểu là MRI ("Matz's Ruby Interpreter") hoặc CRuby (vì nó được viết bằng C). Nhưng có một số biến thể khác nhằm những mục đích riêng, ví dụ như là cung cấp các tính năng kết nối mở rộng đến các ngôn ngữ khác, hoặc các môi trường khác, hoặc các tính năng đặc biệt khác mà MRI không có.

Danh sách một số biến thể thông dụng:
  • JRuby là đỉnh của JVM, lợi dụng được các tối ưu hoá của trình biên dịch JIT, bộ dọn rác, concurrent threads, các thư viện,...

  • Rubinius là ‘Ruby được viết bằng Ruby’. Sử dụng bộ LLVM, Rubinius cũng có một VM tốt như là các ngôn ngữ top khác.
  • MacRuby là Ruby được viết để kết hợp với bộ thư viện Cocoa trên các nền tảng của Apple như là Mac OS X, cho phép bạn viết các ứng dụng desktop một các dễ dàng.
  • mruby là một bản gọn nhẹ của Ruby, có thể được nhúng vào trong một ứng dụng khác. Nó được phát triển, và dẫn dắt bởi "cha đẻ" của Ruby Yukihiro “Matz” Matsumoto.
  • IronRuby là một bản Ruby có thể kết hợp với .NET Framework.

Thứ Năm, 5 tháng 2, 2015

Top apps Android mới đáng chú ý tháng 1-2015

Trong tháng vừa qua, điều đáng mong chờ và hoan nghênh nhất có lẽ là việc Microsoft tiếp tục mở rộng các sản phẩm của mình đến nhiều nền tảng khác nhau. Các apps, ví dụ như Microsoft Words, Excel, PowerPoint được Microsoft nhanh chóng trở thành top seller (bán chạy nhất) trên cả iOS App Store, và cả Android Google Play, là chứng minh rõ nhất cho sự cần thiết và đón chào của người dùng. Hy vọng Microsoft ngày càng cải thiện hơn nữa các apps của mình để người dùng có thêm nhiều tiện ích.
Ngoài ra, trong tháng 1 cũng có nhiều apps khá hay cho nhu cầu sử dụng của bạn. Dưới đây giới thiệu một số app đáng chú ý.





Microsoft Outlook Preview




Đây là apps email "chính chủ" của Microsoft hoạt động với Microsoft Exchange, dù rằng trước đây đã có nhiều email app khác làm được việc này.
Tất nhiên, app email Microsoft Outlook này đương nhiên cũng hoạt động với các chuẩn email thông dụng như POP3, IMAP,...
Outlook cũng sẽ làm việc với Microsoft Exchange, Office 365, Outlook.com (bao gồm Hotmail, MSN), Gmail, Yahoo Mail, và iCloud. Quá đủ cho nhu cầu của tất cả mọi người.
Chạy trên cả Android phone và tablet. Mỗi devices sẽ có giao diện hỗ trợ tương ứng để tận dụng được tối đa lợi thế của mình.

Không chỉ thế, Microsoft Outlook còn là app hoàn toàn miễn phí - totally free.
Bạn cũng không cần phải có account Office365 để có thể sử dụng nó.

Microsoft Outlook hỗ trợ mạnh mẽ bạn trong việc quản lý email, lịch biểu (calendar), meetings, danh bạ liên lạc (contacts), và quản lý các file đính kèm.
Hỗ trợ các thao tác swipe - trượt, để xoá, lưu trữ (archive), hoặc schedule message - lên kế hoạch tự động gửi message vào một thời điểm định trước. Tất cả các việc trên được thực hiện rất dễ dàng, trên một giao diện ứng dụng Hiện đại, nhưng quen thuộc.
Nó cũng tích hợp các chức năng để làm việc với OneDriver (tên cũ là SkyDriver), hoặc Dropbox. Bạn có thể lưu các file đính kèm attachments lên các dịch vụ lưu trữ trực tuyến trên chỉ bằng vài thao tác chạm :).







Facebook Lite


Đây là một app thực sự ấn tượng của Facebook. Dung lượng rất nhẹ nhàng, bản cài đặt chỉ tốn chưa đến 300KB. Quá tuyệt vời, hơn nữa nó hoạt động với đầy đủ tính năng như so với app Facebook nặng nề cồng kềnh hiện tại.

Điều quan trọng và thực sự hấp dẫn là nó được thiết kế để hoạt động tốt với các mạng dữ liệu 2G-2.5G. Quá tốt cho những nơi có mạng data yếu kém, bạn vẫn có thể vào Facebook được bình thường.
Và với mục tiêu như trên, nó cũng sẽ giảm được rất nhiều data load trong apps, giảm được tiền cước data bạn phải chi trả cho nhà mạng.

So sánh với bản nặng nề full lâu nay, bản Lite này hoạt động nhẹ nhàng, hiệu quả. Không bị lag, giật.
Ở bản Facebook Lite này, bạn cũng không cần phải cài Facebook Messenger vẫn có thể chat được với bạn bè bình thường.








Power Button FlashLight/Torch




Biến đèn flash của Camera thành đèn soi sáng tạm thời - Tôi chắc rằng bạn đã từng sử dụng tính năng hữu ích này, mặc dù mục đích chính của đèn Camera Flash không được thiết kế ra như vậy.

Và bởi vì nó quá hữu ích, cho nên có rất nhiều app được viết ra để làm việc này.
Thậm chí các nhà sản xuất cũng tích hợp sẵn những app FlashLight/Torch đi kèm trong phần mềm OS của máy luôn.
Tuy nhiên, app được giới thiệu đây, ngoài việc chạm màn hình để bật Flashlight, nó còn có tính năng khá tiện lợi khác mà có thể bạn sẽ rất thích:

★ Bật đèn Flashlight bằng cách Nhấn phím Power (nguồn) liên tiếp 3 lần trong 3 giây.
★ Nếu bạn đang tắt màn hình, chỉ cần Nhấn phím Power (nguồn) liên tiếp 4 lần.
★ Và bạn đã có một chiếc đèn Torch với một phím vật lý hoạt động.
★ NO ROOT required! Bạn không cần phải root máy khi dùng app này.

Để hỗ trợ các nhà phát triển app, bạn có thể thỉnh thoảng click vào quảng cáo trong app. Hoặc bạn có thể mua gói full ngay bên trong app (In-App-Purchase IAP) để gỡ bỏ tính năng quảng cáo với chỉ $0.99.




Thứ Ba, 3 tháng 2, 2015

Hướng dẫn Setup môi trường development APACHE-MYSQL-PHP trên Mac OS X 10.10 Yosemite

Bài viết này hướng dẫn cách tạo dựng một môi trường Apache-MySQL-PHP (còn gọi tắt là AMP) đầy đủ, thuận tiện cho develop các ứng dụng PHP ở local trên HĐH Mac OS X 10.10 Yosemite.

Các thành phần sẽ cài đặt gồm có:

Apache / Web Sharing

Mặc định, Mac Yosemite đã được cài sẵn một phiên bản Apache và được kích hoạt để chạy sẵn. Chúng ta không được cung cấp một tuỳ chọn, hoặc một GUI cài đặt nào để có thể tuỳ chỉnh, cũng như ON/OFF chức năng này. Do đó, hầu hết việc thay đổi sẽ được dựa vào Terminal để thực hiện. Đối với anh em lập trình viên thì điều này cũng không phải là khó khăn gì, và rất nhanh thôi chúng ta sẽ quen thuộc với việc gõ lệnh trên Termanal tiện dụng hơn nhiều lần so với tool Command Prompt trên Windows :)

Để START Apache, chúng ta gõ lệnh:
sudo apachectl start

Để STOP Apache, chúng ta gõ lệnh:
sudo apachectl stop

Để RESTART Apache, chúng ta gõ lệnh:
sudo apachectl restart

Và để kiểm tra lại version Apache hiện có, ta gõ lệnh:
httpd -v

Nếu mọi thứ hoạt động một cách bình thường, thì ngay lập tức ta đã có thể kiểm tra bằng cách mở trình duyệt Safari và gõ vào địa chỉ
http://localhost/
kết quả:



Root Document

Document Root là nơi chứa các files, thư mục phục vụ cho việc vận hành một website. Và thường được đặt bởi các tên thông dụng như "public_html", "htdocs",...

Trong Mac Yosemite, thì mặc định sẽ có 2 Document Root được thiết lập. Một dành cho system level, một dành cho user level. Với system level thì cả hệ thống sẽ dùng chung, còn với user level thì mỗi user trong máy có thể thiết lập riêng một thư mục làm Document Root cho mình.

Nếu bạn có quyền, bạn có thể cài đặt lại để có thể dùng chung cả system level và user level vào chỉ một thư mục.

System Level Web Root

Mặc định, System Level Web Root có địa chỉ web là:
http://localhost/
và được đặt ở thư mục vật lý có đường dẫn (path):
/Library/WebServer/Documents/


User Level Web Root

User Level Web Root đặt ở địa chỉ "~/Sites" trong Home của mỗi User. Và mặc định thì thư mục này không được tạo sẵn. Do đó chúng ta phải tạo thư mục "Sites" trong Home của user của mình thì nó sẽ hoạt động bình thường.

Ngay sau khi chúng ta tạo ra thư mục "Sites" thì có thể thấy hệ thống tự động thay đổi icon của thư mục thành một icon dễ dàng nhận biết là thư mục web.

Để bắt đầu làm việc với thư mục này, chúng ta cần phải có một vài tweaks (tinh chỉnh sửa đổi) nho nhỏ trước, theo các bước dưới đây.

Thêm file config tuỳ chỉnh theo username

Tạo một file “username.conf” bằng cách gõ các lệnh sau trong Terminal:
cd /etc/apache2/users/

Thay username.conf trong câu lệnh dưới đây bằng username của user mà bạn đang dùng. Nếu bạn không rõ thì cõ thể gõ lệnh "whoami" trong Terminal để biết username mà mình đang dùng.
sudo nano username.conf

Sau khi gõ vào mật khẩu Admin, trình Terminal sẽ chuyển sang chế độ soạn thảo, và bạn cần đưa vào nội dung dưới đây:

<Directory "/Users/username/Sites/">
AddLanguage en .en jp .jp vi .vn
LanguagePriority en jp vn
ForceLanguagePriority Fallback
AllowOverride All
Options Indexes MultiViews FollowSymLinks
Order allow,deny
Allow from localhost
Require all granted
</Directory>


Nhấn nút control + O để tiến hành write file.
Nhấn nút control + X để thoát chế độ soạn thảo trên Terminal.

Thay đổi quyền truy cập file username.conf như dưới đây:
sudo chmod 644 username.conf

Thay đổi các tuỳ chọn ở cài đặt gốc của apache httpd - add modules

Gõ vào Terminal lệnh sau để có thể tiến hành thay đổi nội dung file httpd.conf:
sudo nano /etc/apache2/httpd.conf

Chắc chắn rằng 3 module sau cần được cài đặt (bỏ dấu # đầu dòng nếu có):
LoadModule authz_core_module libexec/apache2/mod_authz_core.so
LoadModule authz_host_module libexec/apache2/mod_authz_host.so
LoadModule userdir_module libexec/apache2/mod_userdir.so

Đồng thời, bỏ comment (dấu # đầu dòng) trước dòng có nội dung sau:
Include /private/etc/apache2/extra/httpd-userdir.conf

Nhấn nút control + O để tiến hành write file.
Nhấn nút control + X để thoát chế độ soạn thảo trên Terminal.


Thay đổi các tuỳ chọn ở cài đặt httpd-userdir.conf

Gõ lệnh:
sudo nano /etc/apache2/extra/httpd-userdir.conf

Bỏ comment (dấu # đầu dòng) trước dòng có nội dung sau:
Include /private/etc/apache2/users/*.conf

Nhấn nút control + O để tiến hành write file.
Nhấn nút control + X để thoát chế độ soạn thảo trên Terminal.


Khởi động lại Apache để các thay đổi trên được kích hoạt

Gõ lệnh:
sudo apachectl restart

Sau khi Apache đã được khởi động, kiểm tra lại hoạt động bằng cách truy cập vào địa chỉ sau ở Safari:
http://localhost/~username/

Nếu trình duyệt không báo lỗi, một giao diện web hiển thị directory tree hiện lên nghĩa là mọi việc đã làm đúng.


Tips & Info

- Bạn có thể thay đổi Document Root thành một thư mục ở ổ đĩa khác bằng cách:
  • Tạo thư mục mong muốn làm Document Root, ví dụ /Volumes/WORK/WWW
  • Gõ lệnh sau vào Terminal:
    ln -s /Volumes/WORK/WWW /Users/username/Sites
  • Gõ lệnh để khởi động lại Apache
- Xem video:




.htaccess, mod rewrites

Để có thể override URL, một phương pháp để có những URL rút gọn dễ nhớ, thì bạn cần enable module mod_rewite cũng như là .htaccess.

Enable cho phép .htaccess hoạt động

Sửa file httpd.conf, tìm kiếm và thay đổi settings AllowOverride thành
AllowOverride All

Enable mod_rewrite hoạt động

Uncomment dòng dưới đây:
LoadModule rewrite_module libexec/apache2/mod_rewrite.so



PHP

Mặc định, Mac OS X Yosemite đã có Apache và PHP version 5.5.14 đi kèm. Dù Apache được cài đăt để hoạt động bình thường, ngay từ đầu, nhưng PHP thì không. Để có môi trường phát triển PHP, ta cần phải enable PHP trong Apache config để nó có thể hoạt động.

Config PHP

Chỉnh sửa file httpd.conf, bỏ comment (xoá dấu # ở đầu dòng) cho dòng sau:
LoadModule php5_module libexec/apache2/libphp5.so

Lưu lại và sau đó khởi động lại Apache.
Để kiểm tra xem PHP đã hoạt động chưa, tạo một file ở đường dẫn "~/Sites/index.php, nội dung:




Mở trình duyệt Safari và truy cập vào:
http://localhost/~username/

Nếu PHP hoạt động bình thường, bạn sẽ thấy nội dung như sau được hiển thị:




MySQL

Với lập trình PHP thì MySQL là hệ cơ sở dữ liệu phổ biến đi cùng thành một cặp. Nhắc đến PHP thì đồng thời cũng cần có MySQL nếu nói về CSDL tương tự như khi nói tới ASP.NET thì nói tới MS SQL Server vậy.

MySQL thì không được cung cấp kèm với Mac OS X Yosemite như là Apache. Bạn bắt buộc phải download bộ cài đặt từ website. Hãy chọn bộ cài đặt Mac OS X 10.9 (x86, 64-bit), DMG Archive (chạy được trên Mac Yosemite 10.10). Khi download, bạn có thể bấm chọn No thanks, just start my download. ở bên dưới, để tiến hành ngay mà không cần Login hoặc Sign Up.
Có một vấn đề là phiên bản này sẽ không tự khởi động lại mỗi lần khởi động Mac, mà ta phải chạy nó bằng command line.

Nếu trước đó đã có một bản MySQL khác hoạt động trên Mac rồi, thì bạn có thể yên tâm rằng nó vẫn sẽ hoạt động tiếp. Và nếu bạn đang sử dụng bản MySQL cũ hơn, mà muốn nâng cấp lên thì bạn cần chú ý là TẮT MySQL Server đi trước khi upgrade tránh tình trạng data bị hư hỏng.

Cài đặt MySQL


Sau khi download, ta tiến hành mở file .DMG và tiến hành cài đặt bằng trình Installer.



Ở bước cuối cùng quá trình cài đặt, ta nhận được thông báo cài đặt không thành công. Tuy nhiên thực tế là MySQL Server đã được cài đặt và có thể chạy được đầy đủ, lý do báo failed là vì script để restart MySQL Server mỗi lần reboot bị lỗi trên Mac Yosemite.
Ta sẽ khắc phục được vấn đề này sau.

Nếu ta chọn tuỳ biến cài đặt, nhớ chú ý bỏ chọn ở Startup Item. Khi khởi động lại Mac, ta sẽ có thể khởi động lại MySQL Server thông qua System Preferences hoặc Command Line ở Terminal.


Chạy MySQL


Bạn có thể khởi động MySQL Server từ System Preferences hoặc thông qua command line, hoặc nếu nó đang chạy mà muốn restart thì có thể dùng command line.

Command Line để start MySQL Server trên Terminal: (bạn cần có mật khẩu Admin để làm việc này)
sudo /usr/local/mysql/support-files/mysql.server start

Command line để restart MySQL Server trên Terminal:
sudo /usr/local/mysql/support-files/mysql.server restart

Để kiểm tra version hiện tại của MySQL, dùng command sau:
/usr/local/mysql/bin/mysql -v

Đặt mysql vào shell path

Để thao tác bằng command line mysql ngắn gọn mà không phải gõ full path trong Terminal, ta nên làm thêm bước này.
Việc này được hoàn thành bằng cách chỉnh sửa file .bash_profile có trong thư mục Home của user.
Nếu file .bash_profile không tồn tại, bạn có thể tạo nó bằng vi hoặc nano.
cd; touch .bash_profile

Command line để mở file này ra để edit:
sudo nano .bash_profile

Thêm dòng sau vào nội dung của file, khi Terminal chuyển sang chế độ soạn thảo sửa file (chú ý dấu nháy kép cần được gõ chính xác):
export PATH="/usr/local/mysql/bin:$PATH"

Nhấn nút control + O để tiến hành write file.
Nhấn nút control + X để thoát chế độ soạn thảo trên Terminal.

Ra lệnh tải lại file vừa chỉnh sửa bằng command:
source ~/.bash_profile

Bây giờ thì ta có thể dùng lệnh ngắn gọn để thao tác với mysql. Ví dụ như kiểm tra version, có thể gõ ngắn gọn như sau:
mysql -v


Cài đặt root password cho MySQL

Trong MySQL thì root là user cao cấp nhất có toàn quyền. Do đó root cần phải có mật khẩu mạnh để đảm bảo an toàn dữ liệu.
Nhớ rằng root user này không liên quan gì đến root user của linux hay là Mac OS X.

Dùng lệnh sau để cài đặt password cho user root của MySQL, cần nhớ password này, hoặc take note nó:
/usr/local/mysql/bin/mysqladmin -u root password 'yourpasswordhere'
Chú ý: password được bao quanh bởi dấu nháy đơn '.

Sửa lỗi 2002 MySQL Socket error

Trong quá trình hoạt động ta có thể gặp lỗi 2002. Lỗi này xảy ra khi MySQL muốn truy cập vào các socket trong thư mục /tmp, tuy nhiên Mac OSX lại tìm trong thư mục /var/mysql/.

Các command cần thực hiện:
sudo mkdir /var/mysql
sudo ln -s /tmp/mysql.sock /var/mysql/mysql.sock

Sửa vấn đề với auto-start MySQL Server khi reboot

Làm theo hướng dẫn sau đây sẽ sửa được lỗi auto start MySQL khi reboot Yosemite:

Edit file bằng trình nano trong Terminal:
sudo nano /Library/LaunchDaemons/com.mysql.mysql.plist


Paste vào nội dung dưới đây:

<!--?xml version="1.0" encoding="UTF-8"?-->
<plist version="1.0">
<dict>
<key>KeepAlive</key>
<true />
<key>Label</key>
<string>com.mysql.mysqld</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/mysql/bin/mysqld_safe</string>
<string>--user=mysql</string>
</array>
</dict>
</plist>


Lưu lại và thoát chế độ soạn thảo.
Chỉnh lại quyền permission cho các file:
sudo chown root:wheel /Library/LaunchDaemons/com.mysql.mysql.plist
sudo chmod 644 /Library/LaunchDaemons/com.mysql.mysql.plist
sudo launchctl load -w /Library/LaunchDaemons/com.mysql.mysql.plist

Sau đó thì MySQL có thể tự khởi động lại khi hệ điều hành khởi động.





phpMyAdmin

phpMyAdmin là web tool rất quen thuộc để thao tác với MySQL để thực hiện việc quản lý users cũng như là dữ liệu.

Cài đặt và Config phpMyAdmin

Download phpMyAdmin từ trang chủ.
Unzip vào thư mục Document Root, và đổi tên thư mục của nó thành phpmyadmin.

Tạo bên trong thư mục đó, thư mục con có tên là config.
mkdir ~/Sites/phpmyadmin/config

Đổi quyền truy cập cho thư mục đó:
chmod o+w ~/Sites/phpmyadmin/config

Mở Safari, tiến hành cài đặt phpmyadmin bằng cách truy cập vào địa chỉ: http://localhost/~username/phpmyadmin/setup/ hoặc http://localhost/phpmyadmin/setup/

Bạn cần tạo mới một Server connection, nhấn vào nút New server


Chuyển sang tab Authentication, và đưa vào root user, password (root password đã được cài đặt ở bước trên, khi mà ta cài đặt xong MySQL Server).

Nhấn vào nút Save để lưu lại thông tin cài đặt. Khi đó một file config.inc.php được tạo ra trong thư mục /phpmyadmin/config/.
Di chuyển (move,cut) file này ra ngoài thư mục gốc /phpmyadmin. Xoá thư mục trống /config đi.

Bây giờ truy cập lại http://localhost/~username/phpmyadmin/ sẽ có thể thao tác được với MySQL databases.

Nâng cấp phpMyAdmin

Để nâng cấp, đơn giản chỉ cần tiến hành download bản mới. Đổi tên thư mục sau khi xả nén thành phpmyadmin, và copy file config.inc.php từ thư mục backup của bản cũ hơn vào là xong.




Trên đây là toàn bộ các bước để cài đặt đủ một bộ môi trường phát triển Apache-PHP-MySQL trên Mac OS X Yosemite.
Nếu có vấn đề gì khó khăn, bạn có thể để lại comment.