gaupoit

Developer – Writer

alert(‘hello’); — September 11, 2019
First Daily Blog – 09/06/2019 — June 9, 2019

First Daily Blog – 09/06/2019

This is my first blog to get started on the task (https://trello.com/c/LnyzZZBw/3-daily-march-set-the-pace). In this series, I will follow the pattern:

Morning

What is your mission/purpose?
_ Today is weekend, a resting day with many people. However, as a founder and CTO at Ymese, the weekend is review and meeting days. My mission is building a great team with 3 members that can deliver high-quality WordPress plugins.

What matters most today?
_ The meeting is short and effective, we need to revamp the team’s spirit. Next week, I will apply new release management. The developers need to be more active in their release tickets. Think bigger and having more responsibility.

What am I thankful for today?

Which morning habits set me up for success?
_ Recording everything happens and see which one can do the template for it.

End of day
What successes did I experience today?
_ I clean up the desk and tank. I feel more productivity if I have a clean workspace.

What challenges?
_ Management, be calm and quit smoking

What did I learn today? How will I grow?
_ Clean workspace will improve your productivity

Who do I need to follow up with?
_ Danh, I hope he can help me with the DRM solution.
_ Clarence Avant, Black Godfather

Which end-of-day habits help me wind down, sleep well, and prepare for the next day?
_ Watch the good documentaries

[Tips]How to add ssh private key to the key chain — May 15, 2018
Miền Trung, Ba Đù và Các Bạn 05/2017 – Phần 1 — June 2, 2017

Miền Trung, Ba Đù và Các Bạn 05/2017 – Phần 1

Tình bạn cũng giống như tình yêu vậy đúng không mọi người? Giống nhau ở chỗ, từ cái lúc bắt đầu e dè và thận trọng với đối phương, đến những lúc sóng gió cao trào vì trải qua những chuyện vui ra nước mắt mà buồn ra nụ cười, rồi đến lúc xa cách đầy thăng trầm, mà đám bạn chúng tôi thì đang ở giai đoạn trầm. Trầm thì phải hâm nóng cho nó thăng lên lại, chính vì điều đó mà các bạn được nhìn thấy bức ảnh dưới đây nè: bảy thằng khác nhau cơ bản về hệ gen, dấu vân tay nhưng chung một thứ đó là tình bạn với nhau.

20170513_182940

Mọi sự xảy ra đều có một cái cớ, và cái cớ cho chuyến đi lần này là từ Ba Đù (nhân vật ở giữa hàng thứ hai), hắn đi du học Úc năm về một lần, anh em lâu ngày không gặp đâm sinh nhớ nên Ba Đù rủ cả bọn làm một chuyến đi xa và dài ngày. Địa điểm được cả bọn chọn lựa kỹ càng và khá dân chủ, anh em đều nhất trí cao cộng với sự cam kết hỗ trợ chỗ ăn, ở và chơi từ Nguyễn (nhân vật từ Ba Đù đếm qua trái một người).

Và chuyến đi hâm nóng tình bạn của chúng tôi bắt đầu: Hội An – Huế – Đà Nẵng.

Ngày khởi hành!

Ngày đầu tiên vài đứa chúng tôi tập hợp ở nhà Kiên(nhân vật áo đỏ ngồi hàng đầu) lúc bảy giờ sáng để thuận tiện cho việc di chuyển ra sân bay. Trải qua không ít khó khăn với đường xá đông nghìn nghịt, cả bọn cũng tập trung và gặp được nhau mà tay bắt mặt mừng.

Tranh thủ làm tô phở cho ấm lòng chiến sĩ.

Ăn sáng qua loa cho ấm bụng, một giờ sau đó chúng tôi được chiếc máy bay của bà Nguyễn Thanh Hà đưa đến tận sân bay quốc tế Đà Nẵng. Hãng này đang ăn nên làm ra có khác, bạn nhân viên nào cũng cười tươi roi rói như vừa được thưởng Tết vậy.

Screen Shot 2017-06-02 at 5.00.34 PM

Đà Nẵng đón chúng tôi bằng những tia nắng dễ chịu ấm áp của thành phố biển và những giọng nói dễ nghe mà cũng dễ ghiền của các bạn tư vấn du lịch. Chúng tôi cũng cố gắng thu thập các tờ quảng cáo các điểm du lịch của thành phố, vừa thu thập thêm kiến thức, học hỏi cách làm du lịch, vừa có giấy để tới lúc cần còn dùng. Âu cũng là tiện đôi đường!

Rời khỏi sân bay, chưa kịp ngắm nhìn các công trình của thành phố thì xe đã bon bon lăn bánh đưa chúng tôi về với phố cổ Hội An, nơi chôn rau cắt rốn của bạn Nguyễn. Trên đường đi, những hình ảnh từ chuyến đi bốn năm trước lại hiện về trong tôi,  mơ màng với những hình ảnh của quá khứ, tôi chợt nhận ra mình đã đến nơi. Căn nhà ấy vẫn không có nhiều thay  đổi, nó vẫn ấn tượng khách đến chơi nhà với vẻ thoáng mát và sáng sủa nhờ vào cái giếng trời và hồ cá cảnh bên dưới. Vào những ngày mưa, ngồi trước hồ cá, đọc sách, ngắm mưa, nhâm nhi vị trà nóng, gia chủ quả là người tinh tế với thú vui của cuộc sống. Nhưng tôi cần nghe một âm thanh quen thuộc hơn là tiếng nước chảy, âm thanh đó đâu rồi, chợt nhận ra hai anh bạn đó đã đi vài năm rồi. Vẫn nhớ hai anh lắm, một anh lúc nào cũng năng động chạy quanh khắp nhà, anh kia thì cực kỳ làm biếng nhưng đầy khôn ngoan, giống y tính cách bạn Nguyễn nhà ta.

Sau khi dùng bữa cơm trưa thịnh soạn với gia đình Nguyễn, cả bọn kéo nhau ra biển An Bàng giữa trưa, bày đặt phơi nắng cho giống mấy bạn Tây!

Biển An Bàng cách trung tâm Hội An tầm 10km, nghe chủ nhà nói từ hồi bãi biển Cửa Đại bị sạt lở nghiêm trọng, du khách chuyển về đây. Biển ở Hội An, nhìn chung rất sạch, các bạn có thể thoải mái bơi lội mà không phải lo ăn phải rác hay các thứ liên quan.

anbang1

Vùng quẩy với biển cả một hồi, anh em tôi tranh thủ làm lon bia và chộp tấm hình kỷ niệm với nàng biển An Bàng.

anbang2

Tắm biển là một trong những hoạt động yêu thích của tôi, không những có lợi co sức khoẻ mà hoạt động này còn giúp chúng ta ra bớt đồ ăn và nạp vào tiếp, mà nạp được nhiều hơn trước khi tắm biển nữa. Người đang khoan khoái nhẹ tưng lại bụng đói cồn cào, chủ nhà dẫn bọn tôi đi ăn thịt nướng Hội An mà hắn quảng cáo là ngon cực kỳ, ăn một xiên thì không thể không ăn xiên thứ năm.

Quán thịt nướng này nằm trên đường Nguyễn Huệ số 20, trước nằm ở gần phố cổ nay mới dời ra chổ này. Quán lề đường nhưng người ra vào khá đông.
thitnuong

Món này gồm thịt nướng ăn với bánh trán và bánh ướt kèm với rau, điểm nhấn đặt biệt là chén nước chấm màu vàng tươi đậm đà, ngậy ngậy gây ghiền. Đúng như chủ nhà quảng cáo, cả bọn chén mỗi đứa 5 xiên mới chịu đi. Cái cảm giác ngọt của thịt, cắn vào trúng miếng ớt cay xè lưỡi thật là tuyệt vời.

thinuong
Đồ nghề đầy đủ cả, thiếu món chính?

Tạm biệt cô bán thịt nướng, chúng tôi lên đường thuê tàu ra cửa biển. Thuyền đưa chúng tôi từ phổ cổ Hội An dọc theo sông Thu Bồn qua cầu Cửa Đại. Cầu nối giữa thành phố Hội An và huyện Duy Xuyên hoàng thành vào tháng 3/2016. Nhờ có cây cầu này mà các em học sinh ở huyện có thể đi học dễ dàng hơn, không phải đi ghe hay thuyền như trước đây nữa. Tuy có hơi muộn nhưng thật là điều đáng mừng!

20170510_163304
Các anh em chuẩn bị ra khơi.

Khung cảnh yên bình cộng với làn gió nhẹ nhàng đẩy đưa chúng tôi vào giấc ngủ mà không hề hay biết. Lúc quay về thì cũng đã xế chiều, phố cổ xa xa đã lên đèn, với vẻ đẹp quyền rũ nhưng một nàng công chúa lên đồ đi trẩy hội vậy.

IMG_20170510_180517_HDR1234

Đêm hôm đó của chúng tôi kết thúc với chuyển đi dạo phố cổ và bữa tiệc thân mật với anh em Hội An. Những người bạn mà tôi đã từng gặp trong thời sinh viên của mình, chúng tôi ngồi ún với nhau vài ly bia, ôn lại những kỷ niệm về một thời đã qua, thật là quý hoá và trân trọng. Chúc anh em sức khoẻ và luôn hạnh phúc.

20170510_223032
Gặp mặt anh em Hội An

Vạn dừa và Lăng Cô

Sáng hôm sau chúng tôi hạ quyết tâm dậy sớm để đi tắm biển sáng với Bà Trinh (mẹ Nguyễn) ở biển Cửa Đại, sau thời gian dài bị sạt lở thì nay biển Cửa Đại đã được bồi đắp lại. So với An Bàng thì tôi thích tắm biển Cửa Đại hơn, vì nước trong và quang cảnh thoáng đãng hơn, xa xa là cù lao chàm đang nhấp nhô nhìn lén mọi người tắm.

IMG_20170511_063730

Cảm giác tắm biển sáng thật là sảng khoái, nó làm ta thêm tỉnh táo để đủ sinh lực cho một ngày dài phía trước. Buổi trưa chúng tôi bắt taxi đi đến khu du lịch sinh thái Vạn Dừa để tham gia các hoạt động mạnh như Sasuke và đi xe đạp qua cầu khỉ.

vandua1

IMG_20170511_170447.jpg

Ăn chơi thăm thú Hội An vậy là đủ, ngày thứ ba trong cuộc hành trình chúng tôi về với Cố Đô Huế.

Còn tiếp…

How I protect my ebook with WordPress? — May 29, 2017

How I protect my ebook with WordPress?

Hi, there WordPress fan, in this article, I will share my experience to protect my resource such as ebooks, images, files and share it with my subscribe users. Hopefully, it will be useful to you, especially the people who work in content, writer, and author.

1. What is my problem?

Last week, I just finished my ebook “Travel tips in Vietnam” talking about the small and precious experience when I am traveling in Vietnam. I uploaded and stored it in my WordPress media.

Screen Shot 2017-05-29 at 3.31.09 PM

Well, now I want to protect the travelTipsInVN file and share with the users who subscribed my blog. I spent few hours on researching and googling the proper and fast way to solve my problem. Thanks to WordPress to create a GREAT platform for developers to contribute with a ton of plugins to help users, finally, I found the one I need at https://wordpress.org/plugins/prevent-direct-access/

2. How to I resolve the problem?

After installing the plugin, my WordPress media has one more column namely “Prevent Direct Access”, where I can protect my “travelTipsInVN” file.
Screen Shot 2017-05-29 at 3.41.44 PM

Great! When I tick “Protect this file” is when the magic happens, the Prevent Direct Access plugin protects my files and gives me a private link where I can share to my targeted users.

Screen Shot 2017-05-29 at 3.50.45 PM

The plugin also has some advantage features such as customize the private link, tracking your private link click totals, create a lifetime for secret links in the premium version.

Thanks for your reading and enjoy blogging with WordPress.

[Nhật ký hành trình]Bình Ba (11/01-12/01/2016) — February 15, 2016

[Nhật ký hành trình]Bình Ba (11/01-12/01/2016)

Trong những ngày đầu tiên của năm Bính Thân 2016, tôi có dịp cùng 9 người bạn đồng hành đã có những trải nghiệm ngắn ngủi nhưng đầy thú vị trên hòn đảo Bình Ba thuộc thị xã Cam Ranh, tỉnh Khánh Hoà.

Xuất phát từ thành phố hoa Đà Lạt vào lúc 7h30 ngày 11/01/2016, vượt qua những đoạn đường gập ghềnh, ngoằn nghoèo nhưng không kém phần nên thơ.

img_6280_25044198425_o

Cuối cùng chúng tôi có mặt tại Bến Thuỷ Nội Địa Cảng Cam Ranh vào tầm giữa trưa. Tại đây khách du lịch sẽ có hai sự lựa chọn để đi đến “đảo tôm hùm”:

  1. Đi bằng đò: với chi phí bao gồm vé đi qua bến cầu (hay nói cho dễ hiểu là vé vào cổng) 10k/lượt và vé đi đò 30k/lượt, tổng cộng 80k cho cả lượt đi và về.
  2. Đi bằng cano: giá vé là 100k/lượt, tổng cộng  200k cho cả lượt đi và về.

Sau cuộc thảo luận nhanh, chúng tôi đã chọn phương án 2 vì sự ưu tiên về mặt thời gian, đi bằng cano chỉ tốn tầm 15-20 phút di chuyển, trong khi đó đi bằng đò ngoài thời gian hành trình từ 45-60 phút còn phải cộng thêm thời gian chờ.

img_6292_25017850596_o
Bến Thuỷ Nội Địa Cảng Cam Ranh

 

img_6293_24748648640_o
Khu vực gửi xe máy
img_6289_24950909081_o
Khu vực gửi xe ô tô

Sau khi mua vé cano và chờ khoảng 5p chúng tôi được anh lơ cano hướng dẫn xuống tàu và mặc áo phao. Khi mọi người đã ổn định chổ ngồi và trang bị đầy đủ phương tiện bảo hộ, một vài anh bộ đội biên phòng sẽ tiến hành kiểm tra giấy tờ tuỳ thân của hành khách (CMND hoặc hộ chiếu). Và thế rồi con tàu cano của chúng tôi cũng được nổ máy phành phạch tiến ra biển khơi.

Vượt qua sóng vỗ ầm ập, gió tát ào ạt, bỗng dưng anh thuyền trưởng nhẹ nhàng giảm tốc độ, xa xa những chiếc bóng áo vàng quen thuộc hiện ra trước mắt chúng tôi. Oà Ồ À thì ra là các chú giao thông đường biển, bị chặn trên đường bộ cũng khá nhiều lần nhưng bị chặn trên biển thì đây là lần đầu, thật là cảm giác thú vị pha lẫn tò mò.

 

IMG_6305
Cảnh sát giao thông đường biển làm nhiệm vụ

Sau vài phút xã giao tâm sự của vị thuyền trưởng với những chiến sĩ thầm lặng trên biển, chiếc cano từ vẻ e thẹn trở lại hình ảnh uy dũng lướt trên mặt biển, và rồi hòn đảo Bình Ba dần dần hiện lên trước mắt chúng tôi.

 

IMG_6327
Chào mừng đến với Bình Ba

Cập bến tại đảo lúc 12h30 chúng tôi nhanh chóng hỏi thăm người dân trên đảo đường đến nhà nghỉ Trí Khanh (100k/ng/đêm) mà chúng tôi đã đặt phòng trước đó. Hỏi ra thì mới biết nhà nghỉ nằm ngay ở bãi nồm, gần ngay sát biển. Sau khi thu xếp phòng ốc ổn định, tôi và một đứa em gặp chị chủ nhà nghỉ để hỏi thăm về hoạt động ngắm đảo san hô và tham quan nhà bè. Chị cho tôi số liên lạc của người gọi là Cậu Tư, sau cuộc đàm phán nhanh chóng của những người đàn ông, thằng em tôi đã set được kèo vào lúc 13h45 với chi phí là 100k một người cho cả hai hoạt động trên. Ông bà ta có câu “có thực mới vực được đạo”, “con cãi cha mẹ trăm đường con hư” vì vậy cả nhóm quyết định kiếm chút gì ăn ở quán hải sản bên cạnh làm hai nồi lẩu hải sản cho ấm bụng. Quán ăn không có gì đặc biệt, có điểm nhấn là phục vụ hơi lâu. Vừa ăn xong thì Cậu Tư cũng vừa đến, cả đoàn sẵn sàng xắn quần ra biển khơi.

Cậu Tư dẫn chúng tôi men theo con hẻm nhỏ để ra chợ, tại đây chúng tôi tạm dừng để mua vịt nướng. Vì vịt cỏ lại được ăn tôm hùm hàng ngày nên rất ngon, thịt chắc và ngọt, nước chấm vừa ăn giá cả cũng vừa phải (240k/con) tiếc là tụi mình chỉ mua nữa con. Bởi vậy lên bè cả nhóm ăn xong mà cũng còn thòm thèm, chẹp chẹp. Trong lúc đó cậu Tư cũng vội vã chạy về nhà để lấy xô đá cho tụi mình ún beer. Sau khi chuẩn bị lương thực xong, tụi mình ra lại bến thuyền và thuê một chiếc xe điện để đi đến “Bãi nhà cũ” với giá 100k/1xe chở được tầm 12 mạng.

 

DSC_0114
Đi xe điện ra Bãi Nhà Cũ

 

Sau chừng 10p di chuyển, xe điện đưa chúng tôi đến một bãi biển xanh tươi rói, tại đây tập trung nhiều tàu nhỏ và thúng để đưa du khách đi ngắm san hô và ra bè.

DSC_0139
Bãi Nhà Cũ

Sau khi làm vài shot ảnh, Cậu Tư dùng thuyền của mình đễ đưa cả nhóm ra nhà bè. Khoảng cách từ Bãi Nhà Cũ đến nhà bè của cậu không xa lắm, tầm chừng 15p là tới nơi. Vừa lên bờ thì cậu nhanh nhảu chạy ra bắt một con cá nóc khè cả nhóm. Nghe danh anh ấy đã lâu nay mới được diện kiến, thoạt đầu, nhìn anh ấy nhiều gai thấy cũng ghê ghê, nhưng chạm vào bóp bóp thì thấy anh Nóc khá thân thiện vã dễ thương cộng thêm cái mặt phúng phính thở phì phò, iu chết đi được. Nghe nói Cậu Tư mang anh về 4,5 năm trước đễ mỗi lần có đoàn ra thăm lại khoe và khè để mọi người chụp hình. Cậu có mời mọi người làm thịt anh Nóc mà mình xin kiếu và hẹn lần sau. Sau đó Cậu còn khoe hai chị sao biển màu xanh ngọc và cam khá sexy chân cẳng gì dơ ra hết cho thiên hạ nhìn vào, chậc.

DSC_0196.JPG
Anh Nóc nhà Cậu Tư
DSC_0215
Hai chị Sao Biển

Phải nói nhà Cậu Tư đón tiếp khách khá nồng hậu, nào là anh Nóc, chị Sao Biển à còn cá cả anh Tôm Hùm nữa các bạn à, đảo “Tôm Hùm” mà lị.

DSC_0239
Đố bạn con nào to và khoẻ nhất???

Sau khi được làm quen với các bạn ở nhà bè Cậu Tư, bọn mình để đồ ăn và bia tại đây để cùng Cậu nổ máy ra khơi ngắm san hô.

Trên đường ra đảo rùa, tôi có dịp được trải nghiệm cảm giác lái thuyền máy, cách điều khiển thuyền, tăng tốc và hãm. Tuy có vài lần xém đâm đầu vào đá nhưng cũng may nắm phá vững lý thuyết nên cả nhóm vẫn an toàn. Tới đảo rùa, cả bọn được chủ nhà bè hướng dẫn cách mặt áo phao, đeo kính và ống thở sao cho an toàn. Lần lượt từng người trong đoàn, được đạp xuống biển, thoạt đầu, có vài bạn lúng túng la toán cả lên nhưng sau quen dần lại khoái cảm giác vùng vẫy giữa biển khơi. Nước ở đây rất trong nên các bạn có thể mang áo phao và nhìn thấy san hô, nếu bạn nào biết bơi có thể cởi áo phao ra và lặn xuống để chiêm ngưỡng vẻ đẹp cận cảnh của san hô. Tiếc là dịp này mình chưa chuẩn bị kịp đồ nghề để chụp dưới nước, nên thiếu đi những shot ảnh của đại gia đình san hô này. Đùa vui một hồi cả nhóm cũng đã thấm mệt, Cậu Tư còn tặng cho bọn mình trò xe lửa dưới nước. Chơi khá vui mà về sáng hôm sau ngủ dậy, tay đứa nào cũng như mới tập tạ lần đầu.

Một điều mình thích nhất ở biển là mỗi lần chơi với nó xong, sẽ đói vã..i cả ra. Mà lúc đói nhất là lúc ăn sướng và ngon nhất. Cái bụng nó đã chiến thắng cái đầu của cả nhóm, tụi mình quyết định cưa luôn con tôm hùm cuối cùng trên bè với giá là (1k6/1kg) không biết mắc hay rẻ nữa mà vì chủ nhà quá nhiệt tình và vui vẻ nên tụi mình đồng ý luôn. Trong lúc đợi tôm hùm chín thì mặt trời đang dần xuống núi về nhà ngủ với vợ. Cả bọn cũng lăn xăn ra tạo dáng chụp hình với ổng.

Huuuu ra mùi tôm hùm thoang thoảng đâu đây, giờ ăn tới rồi. Cậu Tư nổi hứng mới thêm tụi mình 3 con cá Giò (300k/1kg), nghe nói Cậu chỉ mời xui gia và chiến hữu thân mến nhưng thấy bọn mình chơi vui quá làm Cậu cũng vui nên đem ra đãi mấy đứa. Không biết cá ngon ngọt như thế nào, nhưng tấm lòng và sự nhiệt tình của Cậu Tư làm cả bọn thấy ngọt ngào và ấm áp giữa biển khơi đầy muối và gió này.

 

12729354_1282847781732651_55728433237238250_n
Cá Giò

 

DSC_0387
Tôm Hùm bị hiếp

 

 

DSC_0403
Tôm Hùm banh xác

Cuộc vui nào cũng có điểm dừng, thêm vào đó đồ ăn thì hết mà bia cũng không còn. Cả đoàn dọn dẹp thu gom đồ đạc và chuẩn bị về lại Bãi Nhà Cũ. Trước khi rời xa cái bè hiếu khách và dễ mến này tụi mình cũng không quên chào tạm biệt các thành viên trong ngôi nhà và hẹn gặp lại họ trong một ngày sớm nhất.

 

12745956_1282849811732448_543123741206106222_n
Tự sướng với Cậu Tư

Thuyền đưa bọn mình về lại bờ, ở đó chú xe điện đã đợi sẵn để đưa tụi mình về lại nhà nghĩ. Đến giờ thì mọi người đều đã thấm mệt, nhưng trong ánh mắt của họ đều toát lên vẻ khoẻ khoắn và vui tươi sau một ngày vui chơi với biển cả và thưởng thức những món ăn đặc sản của đảo Bình Ba này. Sáng hôm sau tụi mình ngủ dậy hơi muộn, đi ăn bún cá ở chợ và tắm biển ở bãi Nồm cho đến 1h trưa đón Cano về lại Cam Ranh.

Tuy chỉ có vỏn vẹn chưa đầy hai ngày thăm quan đảo “Tôm Hùm” xinh đẹp này, nhưng những gì đọng lại trong tôi không chỉ nước biển trong vắt, mùi thơm của tôm hùm mà còn sự chân tình và nồng hậu của con người nơi đây. Nhất định tôi sẽ trở lại và dành thời gian dài hơn để tìm hiểu rõ nét hơn về hòn đảo này.

 

 

 

 

BDD/TDD development with nodejs/express — January 24, 2016

BDD/TDD development with nodejs/express

Motivation:

Project maintenance is always important and time-consuming part in software development, that’s reason why BDD/TDD development method helps us developers to resolve the problems. I am a real fan of this programming style so I applied it to my projects. Recent years, most of time I have played with nodejs and obviously figure out how to apply the method with nodejs is my motivation in this article.

Preparation:

This is our stack:

_ selenium server

_ phantom js

_ webdriverio

_ mocha

_ chai

1.Install mocha, chai, webdriverjs

In order to complete this step, we need to install nodejs and npm. You can easily find out clear instructions in nodejs official page (nodejs.org) or some websites. Once you have installed nodejs and npm, you can install mocha, chai and webdriverjs also.

I want to install mocha globally because it is needed in many projects.

npm install -g mocha

npm install --save chai webdriverjs

2.Install selenium server

Download selenium server  (http://goo.gl/rQhaxb) and run it

java -jar selenium-server-standalone-2.49.1.jar.

Please remember that running selenium server before we run any our tests.

3. Connect to selenium server

Alright, let’s write some code snippet to connect to running selenium server. In your project directory, create client.js with the following line of codes:

'use strict'

const webdriverio = require('webdriverio');

var client = webdriverio.remote({
	desiredCapabilities: {
		browserName: 'phantomjs'
	},
	logLevel: 'silent',
	waitforTimeout: 15000,
});

module.exports = client;

 

Next, we will create a test case by Mocha and Chai syntax based on the user story:

As a user, I want to go to http://example.com homepage and see Example Domain title.

'use strict'

const expect = require('chai').expect;
const client = require('./client');

describe('Test example.com', function(){
    before(function(done) {
        client.init().url('http://example.com', done);
    });

    describe('Check homepage', function(){
        it('should see the correct title', function(done) {
            client.getTitle().then(function(title){
            	console.log(title);
                expect(title).to.have.string('Example Domain');
                done();
            });
        });

    });

    after(function(done) {
        client.end();
        done();
    });
});

 

Finally, we will run mocha command to run our test and see the below results.

Screen Shot 2016-01-24 at 15.15.14

Well, now our project already has a great testing environment with selenium sever, phantomjs, webdriverio, mocha and chai. Enjoy TDD and BDD.

 

P/s: You can see all the source code at Github.

 

 

[Tips-Vagrant] How to check a package is installed when we write provision file? — June 18, 2015

[Tips-Vagrant] How to check a package is installed when we write provision file?

Vagrant (www.vagrantup.com) is one of technology we applied in every our private projects. One of its advantage is wasting time to run provision file. That’s reason why I wrote a small script to check if the package is installed.

     installed() {
         if rpm -q "$1" >/dev/null; then
            echo "Installed " $1
         else
            yum install -y $1
         fi
      }

Ok, now we can use it like this:

installed vim
installed git
installed nodejs
installed npm

Hopefully, we will save more time with this tips when using vagrant.

[ProjectA-ReviewSession] Preparation for our first review. — June 17, 2015

[ProjectA-ReviewSession] Preparation for our first review.

Actually, we closed Project A last month however, we decided to hold a review meeting today (2015, June 15). There are several questions each members need to answer and share their experience to the others.

  1. What have you learned from this project?

Well, it ‘s a nice question. Actually, it is the first time I worked with you guys, so the first lesson I learned is how to communicate with the project’s member. Everybody had their time table, I and the other guy always work late (from 12h pm) but our project manager sleep at that time. As a result, we could not communicate well.

2. Current development flow (development, launch, testing > iteration)

I. The old development flow:

a. Development:

Now we are using vagrant. It helps us to create the virtual machine with same configurations among every team members. Hence, we won’t have the different development environments. That’s cool. After that, the developer will test manually by himself when he finished a feature.

b. Testing:

To be honest, we just tested our current feature and we don’t test the old and the others feature. Ohhh we absolutely met the problems here. FIX ME PLEASE. (1)

c. Deployment:

After the develop test manually, project manager will ask them to deploy new features and fixes to the production. The way we did it is copying the lasted code base and replacing the old one. I realise that it is waste time and eventually threw the errors. FIX ME PLEASE. (2)

II. The new development flow:

a. Development:

We still use vagrant beside that, we write unit test and automation test which helps us to solve (1) problem. In addition, we also install jenkin to help use run scripts such as test or deploy script.

b. Testing:

At this point, we have jenkin included unit test, automation test. Beside that, product owner need to involve to manually test.

c. Deployment.

Thanks to jenkin, we can deploy automatically once every tests are passed.

3. Single page app – advantages + disadvantages when developing for FB app. Should you still use it next time?

I. Advantages:

+ Easy to write the client logic with mvc framework (angularjs).

+ Easy to follow the project structure and maintain source code.

II. Disadvantages:

+ Need to load many javascript file

+ Hard to use meta data which used by facebook or twitter.

We should use this next time because we found the way how to solve disadvantages.

How could I meet the cute animal (golang) ? — June 5, 2015

How could I meet the cute animal (golang) ?

Yoooo guys!!! Today is Friday which I love much in the week. I ended this Friday which some tasks still have not finished yet. What’s a boring day I thought!. I need to refresh my head by find something to do this weekend. I remembered that I just bought a Raspberry Pi 2 (RaspPI) toy last week and have never tried to made it fun before. Ok! Let’s make some fun with RaspPi :D. After googling I found an interesting framework which is http://gobot.io/ and it also supports my toy. I decide to go home and play with golang in RaspPI.

I. How could I install go in Raspberry PI 2?

First of all, we need to find the way to install go in ARM CPU Architecture  because my RaspPI’s heart made by this architecture. The plan for completing this task includes 4 steps : preparation, building, packing the compiler(optional), installation.

1.Preparation

Begin with making some build directory and cloning the golang repository.


mkdir ~/build

cd build

git clone https://github.com/golang/go.git

….. wait a minute guy. Time to break and go to toilet :D.

Oh yeah! It has already finished. Then we will choose the branch we want to check-out.


git branch -av
* master 54789ef cmd/internal/obj/arm64: make function prologue more predictable
remotes/origin/HEAD -> origin/master
remotes/origin/dev.cc a91c2e0 [dev.cc] cmd/internal/obj: set ctxt.Windows != 0 on windows
remotes/origin/dev.garbage db40624 [dev.garbage] runtime: raise StackGuard limit for Windows (again)
remotes/origin/dev.power64 7904e95 [dev.power64] liblink: fix Solaris build
remotes/origin/dev.ssa bd95412 [dev.ssa] cmd/compile/internal/ssa: add a String() method to Func
remotes/origin/master 54789ef cmd/internal/obj/arm64: make function prologue more predictable
remotes/origin/release-branch.go1 08b97d4 [release-branch.go1] doc: clarify that the displayed tar file name is an example
remotes/origin/release-branch.go1.1 1d6d8fc go1.1.2
remotes/origin/release-branch.go1.2 43d00b0 go1.2.2
remotes/origin/release-branch.go1.3 3dbc53a go1.3.3
remotes/origin/release-branch.go1.4 883bc6e [release-branch.go1.4] go1.4.2
remotes/origin/release-branch.r57 7998d01 [release-branch.r57] docs/GoCourseDay1.pdf: fix error in operator table.
remotes/origin/release-branch.r58 0584eb2 [release-branch.r58] reflect: disallow Interface method on Value obtained via unexported name
remotes/origin/release-branch.r59 5d97657 [release-branch.r59] gc: fix closure bug
remotes/origin/release-branch.r60 394b383 [release-branch.r60] doc: document release.r60.3

As we can see, origin/release-branch.go1.4 is the lasted release that’s reason why I will checkout this revision.


git checkout -b go1.4 origin/release-branch.go1.4

At that time, we already prepared everything we need. Being confidence to go to next steps.

2.  Building the compiler

Before building this animal, we have to force it to build it on ARMv7 (RaspBerry Pi 2) or ARMv6 (Raspberry Pi) CPU Architecture.


export GOARM=7

or


export GOARM=6

After that, we will move to src folder and run make.bash script.


cd src

./make.bash

Now waiting the magic happens and drinking beer. Eventually, you must see these line:


Installed Go for linux/arm in /home/pi/build/go
Installed commands in /home/pi/build/go/bin

Hehe, mission completed. I am careful guy so I want to packing the compiler I just complied.

3. Packing the compiler

I will build a tarball for this go compiler


cd ~/build
tar -czvf go-1.4.1-pi.tar.gz go/

We have own backup tarball. Fell free to install the compiler.

4.Install the compiler

Let’s move our go compiler from build to /user/local.


cd ~/build
sudo mv go /usr/local/
sudo chown -R root:root /usr/local/go
sudo chmod -R 755 /usr/local/go

After moving, let go to /user/local/go and continue to make a tarball.


sudo tar -C /usr/local -zxvf go-1.4.1-pi.tar.gz
sudo chown -R root:root /usr/local/go
sudo chmod -R 755 /usr/local/go

In addition, we need to add $PATH and $GOPATH in ~/.profile (for your user account) or /etc/profile (for entire OS) in the end of file the following lines.


export PATH=$PATH:/usr/local/go/bin

export GOPATH=$HOME/go

Cool! To make sure it will be effected. Let’s reboot our Raspberry Pi.

Let’s try some check go version to make sure we could finish all our steps.


go version
go version go1.4.1 linux/arm

Finally, I saw the golang animal in my Raspberry PI 2. The next mission is “How to install gobot to Raspberry PI 2?”

II. How could I install gobot to Raspberry PI 2?

At this point, we had Go compiler. Now we need to get the gobot repository and install it by coping and pasting this line:

<pre class="CodeRay">go get -d -u github.com/hybridgroup/gobot/... && go install github.com/hybridgroup/gobot/platforms/raspi

Next, we will go to gobot directory, build and run it.

cd $GOPATH/src/github.com/hybridgroup/gobot/examples/
go build raspi_blink.go
cd $GOPATH/src/github.com/hybridgroup/gobot/
./raspi_blink
2015/06/06 08:26:59 Initializing Robot blinkBot ...
2015/06/06 08:26:59 Initializing connections...
2015/06/06 08:26:59 Initializing connection raspi ...
2015/06/06 08:26:59 Initializing devices...
2015/06/06 08:26:59 Initializing device led ...
2015/06/06 08:26:59 Starting Robot blinkBot ...
2015/06/06 08:26:59 Starting connections...
2015/06/06 08:26:59 Starting connection raspi...
2015/06/06 08:26:59 Starting devices...
2015/06/06 08:26:59 Starting device led on pin 7...
2015/06/06 08:26:59 Starting work...

Ok, great! We clearly see some things “Starting…”. What the hack is that I wondered. Ahh I need some toys such as led, board, cable or something I don’t know. Let’s by them right now and continue our new journey “How could I control a led on/off with gobot in Raspberry PI 2?”