Tuesday, June 9, 2020

Typing chinese puntuations

倉頡
ZXAD-->。
ZXAC-->、
ZXAB-->,
ZXCD-->「
ZXCE-->」

Windows 10

組合鍵 產生符號 說明
Ctrl + , (逗號) , 逗號
Ctrl + . (點) 。 句號
Ctrl + ; (分號) ; 分號
Ctrl + ' (單引號) 、 頓號
Ctrl + / (斜線[右上左下) … 刪節號
Ctrl + - (減號) — 破折號
Ctrl + [ (左中括號) 【 左粗中括號
Ctrl + ] (右中括號) 】 右粗中括號
組合鍵 產生符號 說明
Ctrl + Shift + , (逗號) 《 左書名號(書名)
Ctrl + Shift + . (點) 》 右書名號(書名)
Ctrl + Shift + ; (分號) : 冒號
Ctrl + Shift + ‘ (單引號) " 雙引號
Ctrl + Shift + [ (左中括號) { 左大括號
Ctrl + Shift + ] (右中括號) } 右大括號
Ctrl + Shift + 1 (上方數字鍵) ! 驚嘆號
Ctrl + Shift + / (斜線[右上左下) ? 問號
Ctrl + Shift + 9 (開引號) 「 開引號
Ctrl + Shift + 0 (閂引號) 」 閂引號 「註一」


註一:要先把 Advance Key Settings - Between input langauges - Change Key Sequence - Switch Keyboard Layout 的 Key sequence 改為 Not Assigned.


(謝謝 mobile 1 的獨覺禪Source: https://www.mobile01.com/topicdetail.php?f=300&t=4837494)

Saturday, April 27, 2019

Face tracking web application

Continuing the theme of exploring various technology, it is time to see how far the browser has come.

A web application which tracks user faces through the device video capture source. On mobile phone, user can choose which camera to capture the video from. Since mobile phone have limited computational power, the resolution of the video capture is lower to ensure a smooth experience.


Try out the face tracking web app. Please note the application is rather large ~ 9 MB, and may require a few minutes to download on a slow connection. You will also need a a modern browser such as Google Chrome. Available for desktop and mobile devices

Don't worry, all processing are done on the client side, i.e. no video or imagery are send to anyone.



Friday, April 26, 2019

Trying out flutter 1.0 to build an Android App

With the recent 1.0 release of Flutter, it is time to try out yet another technology. This time, it was a pleasant surprise. It was surprisingly easy to build an app and publish it!

And here it is: Hong Kong Barbeque Sites in Google Play Store 

This is a simple app which list out the Barbeque sites from LCSD Hong Kong. In this app, I get to tryout:
  1. Dart + Flutter
  2. Google Map integration 
  3. I18n with Chinese HK/CN and English.

Thursday, April 4, 2019

Did you know? JDK comes with HttpServer since 1.6

Did you know? JDK comes with a HttpServer since 1.6

And it is not a secret, do not use API under sun.*. It is under com.sun.*. Just tried it out and still works on JDK 11.

Thursday, August 10, 2017

Intellij SLF4J live template - psfl

In Settings > Editor > Live Templates
Under "others" section

Add the following with abbreviation: psfl and description: Insert slf4j logger

private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger($CLASS_NAME$.class);

And "Edit Variable" where CLASS_NAME = className()

Sunday, May 31, 2015

Bitcoin Faucet - And I actually got paid by one of them

In the past weekend, there was a Bitcoin-themed hackathon in Hong Kong. Although I didn't participate, it did bring my attention to bitcoin again and I did a little bit of research about it.

While I was doing my research, I learn about these little sites called "Bitcoin faucet". For those of us old enough to know about those get-paid-to-surf-the-net-schemes back in the 90s (e.g. AllAdvantage, are the still around?), are they back?

At first I was skeptical, but I figure I will give them a try. Of the 7-ish Bitcoin faucets I tried over the week, one of them actually did payout. The faucet that paid out is http://freebitco.in/


And here is a screenshot of the transaction receiving the bitcoin!


That's right. A Grand Total of $0.14 USD. Is it worth the time? Probably not. But at the end of the day, what intrigues me is the ability to enable micro-transactions. After all, paying out $0.14 USD by any other means, the transaction cost is probably more than the actual amount transferred.

Like it or not, Bitcoin or some other crypto-currency technologies like this will open a whole new world for us.

P.S. Wanna try out the bitcoin faucet? Here is the link to it again.


Saturday, March 28, 2015

Javascript oddities #1

var func = function() {}
console.log(func.prototype.constructor == func); // return true