Posts

Showing posts from 2016

Đọc Một Cuốn Sách tháng 12/2016: "Chiến binh cầu vồng" - Andrea Hirata

Image
Trong 25 ngày đầu tiên của tháng 12, tui đọc được vài cuốn sách, và khá phân vân không biết cuối tháng sẽ review cuốn nào. Cuốn kinh điển thì lại quá quen thuộc với mn nên viết review vô nghĩa, cuốn thấy hay thì nó lại quá nặng về chính trị (nói chuyện chính trị là dưa leo viên vào đâm cho nát ass), cuốn của tác giả nổi tiếng thì không  quá ấn tượng. May là trong 3 ngày tiếp theo, tui có đọc cuốn "Chiến binh cầu vồng" của tác giả Andrea Hirata, nên là tui sẽ review nó. Cuốn sách tôn vinh cuộc đấu tranh cho quyền được học tập của mọi con người, đồng thời cũng kể một câu chuyện tuổi thơ với tình cảm bạn bè, thầy cô đầy sắc màu và đáng nhớ.

Mở đầu là lễ khai giảng ở ngôi trường làng Muhammadiyah hòn đảo Belitong, Indonesia. Nếu không có đủ 10 em đến nhập học, trường sẽ phải đóng cửa, chấm dứt ước mơ được đến trường của những đứa trẻ chưa từng đi học và của 1 cô giáo 15 tuổi cũng chưa từng đi dạy. Nhưng may mắn thay, ngôi trường xiêu vẹo ấy cũng có đủ 10 em học sinh mới, để có …

How to use Oracle JDK 7 on CircleCI Ubuntu 14.04 machines

Image
Recently I have worked on a 'boring' Java project which uses OpenJDK 7. I want to continuous integrate that project using CircleCI and I had tried to build it on a Linux Ubuntu 14.04 (Trusty), which is the newest version that CircleCI offers. While doing so, I encountered a problem, which, after narrowed down the scope, I found that not occur when I used OracleJDK or build on Linux Ubuntu 12.04 (Precise).

I don't want to downgrade the OS version and I still have not figured out what goes wrong with OpenJDK, so I have temporarily chosen OracleJDK on Ubuntu 14.04. I also stay with version 7 because I don't want to upgrade the JDK version to version 8.
CircleCI Ubuntu 14.04 does not have OracleJDK 7 pre-installed As mentioned in CircleCI build images page, CircleCI's Ubuntu 14.04 machines has JDK 6, 7, 8 pre-installed, both OracleJDK and OpenJDK; and oraclejdk7 is the default version unless you describe a version you want in the machine section, like:


machine:
java:
ve…

Shouldn't call gradle twice in a build

Image
I often watch TV series/movies during my spare time. But, occasionally, I work with my pet projects. Recently I have added tests and fixed minor bugs for an existing project using CircleCI and coveralls.io for continuous integration and code coverage collecting.

The frustrating thing is that coveralls.io also collects coverage for builds which has failed tests while I want to track only the builds of which all tests pass. So, the record of coveralls contains more items than the number of my success builds and it makes me really disturbed.

I tried to figure out the way to achieve what happened. And here is the explanation:
1/ The flow I use Gradle build system to automatically build, test and collect code coverage. Each of my builds contains 3 main Gradle tasks:

- test for running the unit/integration tests.
- jacocoTestReport for generating test reports file (xml for machine-reading and html for human-reading), this task must be carried out after the test task
- coveralls for collecting …

Đọc Một Cuốn Sách tháng 11/2016: "Suối nguồn" - Ayn Rand

Image
Đợt rồi tui bận quá, nói chung là hổng có đọc sách báo gì nhiều. May sao có đọc quyển Suối nguồn của Ayn Rand nên có cái mà viết cho mục Đọc một cuốn sách tháng 11.

Đây là 1 cuốn sách thuộc loại kinh điển, khi bắt đầu đọc là tui hầu như chỉ dừng lại để ăn uống, tắm rửa và lúc làm việc. Đã có rất nhiều bài review và phân tích về câu chuyện của tiểu thuyết này, nên tui sẽ viết rất ngắn gọn thôi, vì viết dài là vô nghĩa.

Suối nguồn có nội dung trải dài qua mười mấy năm cuộc đời của những con người mà tính cách đã được tác giả tối đa hoá để làm cho nổi bật những triết lý về con người và xã hội.

Tạm gọi là nhân vật chính diện, đứng về phía những con người có thái độ làm việc độc lập và yêu quý sự tư duy cá nhân là Howard Roark, một kiến trúc sư theo trường phái hiện đại, bị người khác cho là lập dị.
Đối đầu với Roark, cá nhân tui cho rằng người xứng đáng ở vị trí này là Ellsworth Toohey, một nhà phê bình nghệ thuật (thiệt ra là đủ lĩnh vực), luôn tự rao giảng về chủ nghĩa vị nhân sinh, như…

Đọc Một Cuốn Sách tháng 10/2016: "Sailing Alone Around The World" - Joshua Slocum

Image
Mỗi người có 1 sở thích, có người thích đổi mới cuộc sống, có người thích hát rap rồi đi nước ngoài, có người lại thích cùng 500 anh em đi phượt Hà Tĩnh. Tui thì thích mỗi ngày đều được đọc một cuốn sách. Và quyển sách cho Topic "Đọc một cuốn sách" tháng 10 là "Sailing Alone Around The World" (dịch đại là "Một mình căng buồm đi quanh thế giới") của tác giả Joshua Slocum.

Mỗi cuộc chuyến đi nghìn dặm đều bắt đầu bằng 1 bước đi. Và để mỗi bước đi được vững chắc là cả 1 sự chuẩn bị cẩn thận. Chuyến đi bắt đầu khi tác giả Slocum, một người đi biển đầy kinh nghiệm, mua lại chiếc tàu nát Spray và sửa nó lại thành 1 chiếc tàu như mới.

Tốn hơn $550 và 13 tháng làm việc, tháng 4/1895, tàu Spray xuất phát từ Boston cùng thủy thủ đoàn 1 người của mình. Băng qua Caribe, men theo bờ biển Nam Mỹ, Spray tiến vào Thái Bình Dương, ghé thăm 1 loạt đảo nhỏ trước khi cập bến nước Úc. Từ đó, thuyền trưởng Slocum vượt Ấn Độ Dương, vòng qua châu Phi ở mũi Hảo Vọng trước khi băng …

Đọc Một Cuốn Sách tháng 9/2016: "Xứ Đông Dương" - Paul Doumer

Image
Đọc sách là cách làm giàu cho tinh thần, cho trí tuệ, và từ đó là cho túi tiền. Để có động lực đọc sách, chắc tui sẽ mở thêm chuyên mục "Đọc một cuốn sách", mỗi tháng cố gắng viết 1 review về 1 quyển hay ho nào đó.
Lần này là hồi kí "Xứ Đông Dương" của cố Toàn quyền Đông Dương Paul Doumer.

Muốn đọc những dòng đẹp về du lịch khám phá, nên đọc.
Muốn tìm hiểu về tình hình bán đảo Đông Dương và lân cận từ 1897 đến 1902, nên đọc.
Muốn biết về chính sách khai thác thuộc địa của Pháp, nên đọc.

Tác giả Paul Doumer là con trai 1 công nhân xe lửa, Bộ Trưởng Tài chính Pháp, Toàn quyền Đông Dương, Tổng Thống Pháp, có 4 con trai chết trận vì nước Pháp. Đọc hồi kí, có thể thấy ông Doumer là 1 người yêu nước nồng nhiệt, tận tụy hết lòng vì những lợi ích của Pháp tại Viễn Đông.

Vì nước Pháp, ông đã xoá bỏ hoàn toàn chủ quyền Việt Nam, mạnh tay xây dựng cơ sở hạ tầng ở Việt Nam với quy mô chưa từng có. Ông đã nghiêm túc tiến hành thám hiểm và khai phá những vùng cao nguyên với mục đích t…

Counting Android project Code Coverage with JaCoCo: Part I - What is Code Coverage?

Image
As you may not know, I am a full time developer and in my spare time, I read books and watch romantic comedies a lot.
Just kidding, I do not watch romantic comedies a lot, I almost watch superhero movies.
Recently, there have been Internet problems in Vietnam so that I have not had such a good connection to enjoy the movies. So, I have resumed writing tech blog posts.
What is Code Coverage? In one of previous entries, I mentioned Test-driven development (TDD), a software development process in which writing test is the first step and the software is developed to pass the newly-added test cases. Your code must pass the test cases first, but if you only test a small proportion of your code, how much confidence can you have in it?

There are some ways those can be used to determine how well your tests exercise your code. The TDD proponents often tend to push Code Coverage as a useful metric for gauging how much your tests cover your source code. Code Coverage measures how many lines/bloc…

Tips those may help your Android project from failing test on CircleCI

Image
As you may notice, in my previous blog entry, I mentioned CircleCI, one of many continuous integration services allowing your projects be built and tested automatically on predefined environments.

In this post I will give some tips to increase the chance to run successfully and pass test on CircleCI.

Background If you are not familiar with CircleCI, you may want to read this. There are something involved:
- CircleCI needs a file named circle.yml put in the root directory of your project, in which you write commands to be executed on CircleCI.
- In common, the process is like: CircleCI first created a virtual machine, then it pulls your code from your repository and sets up the environment, finally it runs the tests. Particularly, CircleCI starts an emulator in the virtual machine they creates (sounds VM in another VM, VM-ception), and uses the Gradle wrapper to run Gradle tasks for testing purpose.
- Remember, the emulator on CircleCI is super-weak.
- Have a quick look (or slow l…

Build your release APK with CircleCI

Image
This entry is about Android development.

It has been quite long since the last time I wrote an actual technical blog entry. Then I was too much busy being inactive, and I did change my job. Now I am in a position that I have learnt every day. I should have written this post a year ago in order to summarize the knowledge I got, but whenever I type a few words, I feel exhausted. This time is my big try. *hat off*

I assume that you are familiar with:
- Gradle, a build system where you can write scripts to automate your tasks, in the scope of this entry, Android build/test tasks.
- Test-driven development (TDD), a software development process in which test cases are written before you code; or at least when you finished coding, the test cases are finished also.
- Continuous Integration (CI), a development practice that requires you to integrate code into a shared repository several times a day.

 The combination of Gradle, TDD and CI gives a result that every time you push code into a rep…

Things foreigners should do in Vietnam

Image
These days a lot of travellers travel to Vietnam. If you are one of them and you don't have a friend who has experiences what to do here, this post is for you. I am not a local Saigonese, but I have lived in Saigon for 7 years, and I AM a Vietnamese, so I can tell you a bit. There are something you should (this means you don't have to) do in Vietnam, especially in Saigon.
Have "cơm tấm" or "hủ tiếu" for your mealsCơm tấm is broken rice with grilled pork chop, eaten with sliced cucumber/potato/carrot. You can also choose fried egg and some other accoutrements such as shredded pork, pork skin... It is typical dish in Southern Vietnam. A dish of cơm tấm costs around 20000 vnd.
A cơm tấm dish in Thành Rau restaurant, Phú Nhuận District. Source: VIETNAM CORACLE
Hủ tiếu is a kind of noodle, popular in Vietnam and it is NOT Phở. As far as I know, there are several type of hủ tiếu: hủ tiếu bò viên (hủ tiếu with meatball), hủ tiếu xào (stir fried hủ tiếu), hủ tiếu Na…

A Viet backpacker who wants to buy crude oil

Image
Do not take notice of the post title. It tells you nothing.

Several weeks ago, I planned to go to Dumai City, Indonesia, before my coming birthday.
That city is definitely not a tourism city. Some travel websites event recommend that you should go out as soon as you can and if you have to stay, do not buy anything unless it is urgently required.

I knew no ways to get in/around, nothing to do, no places to visit, no special dishes to taste. So I decided to make a travel map for that city. At first it was really hard to find any interesting information. Google could hardly gives images, but it did give me the location via Google Map service.

Then little by little, I found a blog of a Thai solo backpacker who wrote a guide to get to Dumai by boat. This guy made me firmly want to carry on the trip. Because a Thai did it means a Viet can do it too, and will do it well.

After reading at least dozens of blogs (and unintentionally they were all on blogspot) with the powerful help from Google …

A year look back - 2015

Image
There were not many struggles in my 2015, so summarizing the journeys I made during the year is a good way to review it.

Long An, June 13rd - 14th This trip was not prepared well. I planned to go just the night before. Tan An city, the central of Long An province, was nice with a lot of bridges. It would be interesting walking alongside the river banks.
Actually, It rained from late in the afternoon to the midnight. So I had to have my dinner in a supermarket.  The meal was a pizza which costed 23.000 VND - about $1
Then I bought 4 comic volumes and spent the rest of the night reading them. Later the electricity was cut until the next day's afternoon.
Singapore, July 17th - 19th This trip was also not prepared so well. Last July, Arsenal FC came to Singapore for some friendly matches. I booked the match tickets, the flight and hostel bed just a month before I departured. I stayed Bunc @ Radius, a hostel was managed by chinese guys in Little India. The building was really pretty bu…