Kobkrit Viriyayudhakorn, PhD.

Smooth Build Dist by Update NPM Package.json for Angular-Fullstack@2.0.13

After you clean initialize the generator-angular-fullstack package version 2.0.13, edit the file as follows to smooth your grunt build experience.

Happy building! 🙂

Think Startup: Rushbike

เรื่องราวของ Rushbike ออก นสพ. กรุงเทพธุรกิจ ใน Section: Think Startup (หน้า 26) เมื่อวันพฤหัสที่ 18 สิงหาคมที่ผ่านมาครับ

14037890_10154349257345097_1908404796_o

[React-Native-Router-Flux] [IgniteJS] Allow POP to refresh the previous scene

This post is talk about how to allow the NavigationActions.pop() command of the react-native-router-flux library https://github.com/aksonov/react-native-router-flux refresh the props of the previous scene.

The situation is when user went from the Screen1 to Screen2, and user press “Back button” on the Navigation bars of Screen2 back to Screen1. Here is the way to notified Screen1 about this return.

NavItems.js

Screen1.js
Add the following function to

NavigationRouter.js

The console.log show as follows.

Compatible version of React-Native and React Libraries

For RN 0.30 and 0.31: npm install react@~15.2.1
For RN 0.32: npm install react@~15.3.0

React-Native Setup on Windows for Android Development Walkthrough

Android Development

  • Install Chocolatey
  • Install Node
  • Install Python2
  • Install React-Native Client
  • Install Android Studio
  • Setup Android SDK
  • Setup ANDROID_HOME and PATH environment
  • Install Genymotion
  • Setup Genymotion ADB Setting
  • Run React-Native on Genymotion


Environement Variable Content

Notable Android’s SDK command

Lecture 1: Introduction to React-Native Slides

Full PDF: L1-ReactNativeIntroduction

React Native is a new technology that allows building real mobile apps using only JavaScript. It is a JavaScript framework for writing, debugging, and deploying both iOS and Android mobile applications with native experience. React-Native allows developers to share about 80% of code between iOS and Android which make the development is 5x faster than traditional means. React-Native libraries are created by Facebook released in March 2015. It was proven by many world-class mobile applications, such as Facebook, Facebook Ads Manager, TaskRabbit, QQ, Discord, SoundCloud, etc.

Setting ANDROID_HOME enviromental variable on Mac OS X After Install Android Studio

In Terminal:

Add lines:

Check it worked:

React-Native Setup For Mac

The following are react-native setup for mac.

Install Homebrew
Open terminal, and run the following command.

(For Developing iOS) Install Xcode via Mac App Store: https://itunes.apple.com/us/app/xcode/id497799835?mt=12
(For Developing Android) install Android Studio: https://developer.android.com/studio/install.html

Testing the installation
Open terminal

Using Mobile Angular in Generator-Angular-Fullstack

The followings are that transformation of the web app generated by generator-angular-fullstack https://github.com/angular-fullstack/generator-angular-fullstack to mobile friendly website by using the mobile-angular-ui http://mobileangularui.com/

Generate the project from the generator-angular-fullstack

Add the following to index.html

Continue reading

Paparvue error, note to self.

Symtom: Can not open /reviews

Error root cause.

How to install PhantomJS v1.0.0 into ancient NodeJS project

Copy phantom and phantomjs from amtt-conf-2016 folder

Add

as the last arguments of the phantom.create

Done. 🙂

Fix npm install failed on angular-fullstack@2.0.13 nowaday (Apr 8,2016)

Change package.json to..

สรุป P, NP, NP-Complete, NP-Hard และ P=NP หรือไม่ ฮ่าๆ

Concept ก่อนเข้าใจ


Deterministic Turing machine

คอมพิวเตอร์ที่รันคำสั่งเหมือนเดิมทุกครั้ง ถ้าหาก Input และ State เหมือนเดิม (คอมพิวเตอร์ในปัจจุบัน)

Non-deterministic Turing machine
คอมพิวเตอร์ที่รันคำสั่งอาจะไม่เหมือนเดิมทุกครั้ง ถ้าหาก  Input และ State เหมือนเดิม (แยก Process ได้) มันสามารถแตกการกระทำได้มากกว่า 1 พร้อมๆกัน

ตัวอย่างปัญหา
อาทิเช่น Zero sum subset problem สมมุติว่ามี Set อยู่ {5,-2,-3, 7, 8} ต้องหา Subset ที่รวมกันได้ 0 (คำตอบก็คือ {5, -2, -3}) เป็นต้น

Continue reading

How to accept all friend invitations on Linkedin at once.

Screen Shot 2016-03-23 at 15.12.10

I get about 100+ Linkedin friend invitations from many people every week.  I think they wish to connect with me for some reasons so I often accept it. But with the high amount of invitations, click the accept button one-by-one is too slow and waste of my time. To make it super fast (within 2 seconds), I use the JavaScript trick to make the browser click all 100+ of accept invitation buttons for me programmatically.
Continue reading

One Metric To Rule Them All – A Post from the Law Canvas.

Here is the interesting opinion from the Law Canvas, A law document templating startup. I quite agree on their suggestions.

Here is the summary:

Summary: The best way to make growth, focus on only the most important metric (For Rushbike, it is the number of order). Do not care else. We can identify the best users segments who usually making that key action by using Mixpanel easily.

Full version, click below…

http://blog.lawcanvas.com/blog/one-metric/

เรียนมาเก็ตติ้งแบบนู้ปๆ Strategic For Market Leadership

วันนี้เบื่อครับ เขียนโค้ดไม่ออก เลยลองนั่งเรียนวิชา What’s on Marketing บน Coursea https://class.coursera.org/whartonmarketing-003/lecture

การที่จะให้ตัวเองเป็น Brand Leader นั้นเราต้องเข้าใจลูกค้าซะก่อน เข้าใจว่าลูกค้าต้องการอะไร เพราะคู่แข่งมันเยอะเหลือเกิน และความต้องการของลูกค้าก็หลากหลายเหลือเกิน เราไม่สามารถตอบโจทย์ลูกค้าทุกประเภทได้มันยากเกินไป

การวางแผนให้เราเป็น Brand Leader ใน Market ได้นั้นเราต้องเข้าใจกระบวนการคิดของลูกค้าก่อนว่า เวลาจะตัดสินใจซื้ออะไร เค้าดูจากอะไรบ้าง

  1. ประสิทธิภาพของ Product (ของที่เราขาย)
  2. ประสิทธิภาพของ Operational (ประสิทธิภาพการทำงานของพนักงานของเรา)
  3. ประสิทธิภาพของ Customer Intimacy (การเข้าถึงเข้าใจลูกค้า)

สมมุติธุรกิจที่ผมทำอยู่  นั้นก็คือ App เรียก Messenger (Rushbike)
Continue reading

อุปกรณ์การตรวจรับบ้าน

อุปกรณ์การตรวจรับบ้าน

  1. ไฟฉาย
  2. ลูกแก้ว
  3. ถังน้ำ
  4. ผ้าใช้อุดท่อระบายน้ำ
  5. ขนมปัง
  6. เทปกาว
  7. เหรียญ (เอาไว้เคาะกระเบื้อง)
  8. ไม้วัดความยาว
  9. ไม้ตรงยาวๆ
  10. ไฟจิ้มปลั๊ก
  11. โทรศัพท์แบบที่มีระบบใช้ถ่านไฟฉายมาเพื่อขยายสัญญาณ 2 เครื่อง (เทสสัญญานโทรศัพท์)

Basic Non-Blocking Control for NodeJS (Q Module) วิธีการเรียก Async Call จำนวนมากและเรียงลำดับดังใจที่ต้องการได้อย่างถูกต้อง

โจทย์

โจทย์มีอยู่ว่าเราจะเรียก Async Call ดึงข้อมูลจาก DB ตาม id ที่เรียงลำดับใน Array และพิมพ์ออกมา ต้องทำอย่างไร

เขียนแบบแรก

ผลออกมา

ทำไม i ถึงเป็น 3 ตลอดเวลา? เนื่องจากว่า i มันวิ่ง loop จาก 0 ครบถึง 3 แล้วก่อนที่ Async Call ตัวแรกจะทำงานเสร็จสิ้น
ทำไม Obj 3 มาก่อน Obj 2? เนื่องจากว่า Async Call ของ 3 มันทำงานเสร็จสิ้นก่อน 2, 3 เลยถึงพิมพ์มาก่อน 2.


ทำอย่างไรให้ i เป็น 0,1,2,3,..

ต้อง Declare เป็น Function ให้ Function Variable Scope มันล็อกเฉพาะของ Loop นั้นๆ

ผลออกมา

แต่อย่างไรก็ดี 3 มันก็ยังออกก่อน 2 อยู่ดี!! ทำอย่างไรดี

ทำอย่างไรให้เรียงลำดับได้ถูกต้อง

มันก็มีอยู่หลายวิธีเหมือนกัน วิธีที่ใช้ง่ายสุดเลยคือใช้ setTimeout()

ผลออกมา

เราต้อง setTimeout โดยกะเวลาประมาณการ Query ข้อมูลอันนึงให้เสร็จชัวร์ๆ (100ms) ถึงจะมั่นใจได้ว่ามันจะเรียงลำดับได้

มีวิธีที่ดีกว่านี้อีกไหม?

มีใช้ Module Q https://github.com/kriskowal/q ซึ่งจะขอกล่าวในโพสถัดไปครับ 🙂

Happy Coding!
(ใช่เวลาเขียน Blog นี้ 40 นาที)

Removing white spaces (leading and trailing space, aka trim) from string value in MongoDB shell

The following is the code for removing white spaces (trim) in the mongodb console.

I encountered an error called “unable to call trim of undefined”. It is caused by the name or surname of some records are undefined. So I put the if statement to exclude these cases.

« Older posts

Copyright © 2016 Kobkrit Viriyayudhakorn, PhD.

Theme by Anders NorenUp ↑