2017年1月24日 星期二

firefox multi-process

After 11 years of first multi-core x86 processor, yes, 11-years, firefox start to supported multi-processor, even only supported two of processor.

reference from here:
http://www.ghacks.net/2016/07/22/multi-process-firefox/


  1. Enable electrolysis
    • in firefox "about:config"
    • search "browser.tabs.remote.autostart"
    • setting to "true"
  2. Tabs remote enable:
    • in firefox "about:config"
    • search "browser.tabs.remote.force-enable" (if not, create it, boolean)
    • setting to "true"
  3. Accessibility enable:
    • in firefox "about:config"
    • search "accessibility.force_disabled"
    • setting to "0"
  4. Check:
    • in forefox "about:support"
    • see option "Multiprocess Windows"
but, even now, I only see two of firefox task in the task-manager.




2017年1月7日 星期六

Panasonic GF2 看快門數

原文是無忌上的
http://cnc.xitek.com/thread-1091207-1-1-1.html


  • 关闭IA模式,相机内要放置有效的SD卡,关机。
  • 按住Q.MENU/Fn、WB、回放三个按键不放,开机;
  • 保持按住Q.MENU/Fn不放,按MENU/SET,进入设置,倒数第二项会多出一个“ROM BACKUP”的选项,选择此项;
    • ps. 選到這個選項後, 離開選單, 所有按鈕都可放開.
  • 保持按住Q.MENU/Fn不放,按住左方向键不放,按MENU/SET;
    • 我修正一下:
    • 按著 Q.menu/Fn, 再按 menu/set 進選單, 選到 ROM backup, 此時游標在 ROM backup, 不要進去
    • 此時按住左 (對焦點指定) 再按 menu/set
    • 看到一堆數字選單時表示成功, 可以放開所有按鈕.
  • 保持按住Q.MENU/Fn和左方向键不放,这时你会看到屏幕一堆数字在滚动,再次按下MENU/SET即可看到快门数等信息;
    • 我修正一下:
    • 看到這堆數字時, 按住 Q.menu/Fn, menu/set 再按左(對焦點指定) 才能再看到 camera info.
    • Q.menu/Fn 可以翻頁, camera info 有兩頁
  • 如果要退出工程模式,同样是按住Q.MENU/Fn和左方向键不放然后按MENU/SET,关机重启即可。

ps. 裡面的序號跟機身上印的序號不一樣, 我不知道那是什麼的序號.
ps2. Panasonic GF2 是機械快門, 不是電子快門.

2016年12月8日 星期四

USB hub driver (Windows 7)

有些人覺的 USB hub 沒有 driver, 這個說法表面上算對, 但其實是錯誤的. 以 linux kernel 來說它包在 USB core driver 裡一起, 但在 windows 裡卻可以拆離成分開的檔案, 這個檔案叫 usbhub.sys 跟 usbd.sys (root hub).
%SystemRoot%\system32\drivers\usbd.sys
%SystemRoot%\system32\drivers\usbhid.sys
安裝時的參考檔 usb.inf
%SystemRoot%\inf\usb.inf (不可以是別的路徑)
一般來說是 usb.inf 很常不見, 原因不明, 可能跟我用過 USB oblivion 這個軟體有關係, 總之以上這三個檔案不見的第一時間是無法發現的, 等到

  • USB 裝置換孔位
  • 新裝 USB hub
  • 新裝 USB UART device (如 FTDI2232 這類的東西)
  • 接上 Android device PC端說找不到 driver

裝不起來時才會發現. USB UART (特別是多 port 的像 FTDI2232/4232) 跟 Android device 的症狀會比較明顯, 因為這些都是 USB device 認的到但是路徑不正確.
正確:
USB\VID_04E2&PID_1424&MI_00
有問題的:
USB\VID_04E2&PID_1424
後面 &MI 的部份會完全不見, 所以認不到, 在裝置認不到的第一時間都會以為 driver 有問題, 通常不會懷疑到是不是 Windows 本身的 USB host 是不是有問題.

如果是檔案不見, 從另一臺電腦 copy 出來是比較直覺的方式, 但通常出狀況時你只有你面前出包的這臺電腦而已, 所以找這裡面:
%SystemRoot%/winsxs (不一定是 c:\windows, 特別是你系統修不只一次過時)
的 usb.inf 這個檔, 先貼回 %SystemRoot%/inf/ 裡試試看, 如果成功就不需要費時去貼回 driver 檔案.
如果這樣不行, 首先你要找一個工具叫 unlocker , 用這個工具, 先將
usbd.sys (如果你是連 roothub 都抓不到就要動它)
usbhub.sys rename 成 _usbhub.sys 後 (刪除或直接蓋掉會說你沒有權限), 再把檔案貼回去.

步驟有點麻煩也有點囉唆, 但如果不想重灌系統的話, 就努力一下吧.

2016年8月10日 星期三

foxxray (廣鼎) FXR-BM-12

foxxray (廣鼎) FXR-BM-12, 網路上找到的絕大多數都是業配文, 好像沒有人買過這東西似的. 前兩天因為看到它可以用到 7 個按鈕, 就買來玩玩看

它的 4,5,6,7 定義特別跟別的滑鼠都不一樣, 一般 5 button mouse 4 & 5 是上一頁 / 下一頁, 它 5 是連發左鍵, 4 是臨時把 DPI 降到最低. 也就是說一般最常用的 4 & 5 被定義成兩個無用的按鈕, 6 & 7 更瞎了, 定義成音量上下. 這兩個鍵最瞎的地方在被定義成一般遊戲不能使用的鍵, 也就是說, 對絕大多數遊戲來講, 這支就是 3 鍵鼠
我去問過廣鼎, email 發過去當沒看到也不回信, 打電話過去才說不能軟體改.

你不願意改, 那我就只好貼在這提供產品資訊, 讓想買的人決定要不要買.

2016年8月4日 星期四

[轉] Windows 10 UAC

沒實驗過
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]

EnableLUA=DWORD:0

2016年6月11日 星期六

40歲

在這個時間點該寫下的一句話, 為了這個其實我想了很久. 這 30 年來的求知生涯裡, 唯一不變的就是 "變", 唯一直得懷疑的就是真理. 所以我覺的留這句話寫給以後的自己....
.
"懷疑所有你認為正確的事情"

2016年6月1日 星期三

Microsoft Azure IoT certification

筆記一下做 IoT device 認證的流程. 在這裡先說我的結論: IoT device 認證硬體所需要的, 就是可以連 internet 的 ethernet 界面 (ethernet 可能是模擬的那也可以, 但一定要可以連 internet, 因為最後要連去 azure cloud server 做認證), 其中最主要的部份是加解密, 你 device 送出的加密資料 iot device explorer 可以解, device explorer 送出的加密資料你 device 可以解的開, 這樣才可以完成認證. 我認為對 Microsoft 來說它的重點在加解密.
至於 internet 連線能力最好是 raw package 不是靠 TCP/IP stack, 有沒有在 NAT 後面無所謂.

1. Azure 相關環境的建置:


整體流程參考文章..
https://azure.microsoft.com/zh-tw/documentation/articles/iot-hub-tested-configurations/
  • 首先你要有 microsoft 的帳號, hotmail.com 還是 outlook.com 這類的都可以.
  • 這個帳號要綁信用卡... (這點可以說是整個流程裡最棘手的部份)
至於帳號怎麼用信用卡付費, 還有一套跟 Microsoft 申請的流程要跑, 因為這個流程會隨 Azure portal 界面更改而小有變動, 目前不寫在這裡. 目前 (2016/06) 以它免費帳號附贈的 6300NTD 額度來說, 只是做這個認證, 完全花不到裡面的額度. 即使是如此, 我還是去申請了發票請款...

在申請完 azure 帳號後, 要照這個文件設定一個 azure 端的 iothub service
https://github.com/Azure/azure-iot-sdks/blob/master/doc/setup_iothub.md
如文件所述, 記得把 primary key copy 下來, 會用在 device explorer 上.

device explorer 有可以直接安裝的 .msi 檔 (它有 source-code, 但重編它意義不大) 可用:
https://github.com/Azure/azure-iot-sdks/releases
目前 device explorer 僅能在 windows 下執行. 安裝好後執行它, 參考設定文件:
https://github.com/Azure/azure-iot-sdks/blob/master/doc/manage_iot_hub.md#device-explorer
把剛剛從 azure portal 上 copy 下的 primary key 貼在 configuration 中, 再從 device explorer 裡新增你要認證的 IoT device 型號, 此時你會再得到另一組新 key, 選到 "Copy connection string" copy 下這個字串.

這個字串很重要, 就是你日後要改 c#, 改 c sample code 裡的那個關鍵字串. 以下就是 code work.

Device Explorer 雖然目前只能在 Windows 上跑, 但對於認證並不影響, linux iot device 測試一樣要連到這台裝了 Device Explorer 的 Windows 機器上, Windows 也是.

2. Ubuntu linux 14.04.4 LTS armhf (for C)

先講 ubuntu 是因為拉它的 sample code 用 git 比較方便, 有 linux / windows 雙修的人我建議先用 linux git 把整包 code 拉下來後再分給 linux 或 windows 機器去編.
  • git clone --recursive https://github.com/Azure/azure-iot-sdks.git
以下是在板子上做編譯的動作, 我沒有試過拿 linaro 的 gcc 4.9 tool-chain 去 cross-compile 這個 sample code, 因為它只要對應的 SSL library 那些東西版本不對, 就算編的過也過不了測試.
需要安裝這些東西:
  • sudo apt-get update
  • sudo apt-get install -y curl libcurl4-openssl-dev build-essential cmake git libssl-dev uuid-dev

再檢查版本是否合乎需求
  • cmake --version
  • gcc --version
因為這包 sample code 需要 cmake 2,8,12 以上, gcc 4.9 以上才能正常工作, 裝 cmake 時就會強迫把 gcc 4.8 相關套件也全裝上去. 裝 gcc 4.9 需要這些步驟:
  • sudo apt-get install -y software-properties-common
  • sudo add-apt-repository ppa:ubuntu-toolchain-r/test
  • sudo apt-get update
  • sudo apt-get -y install gcc-4.9 g++-4.9
  • sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.9
  • (update 2016/09/12 see update note)

如同參考文件:
https://github.com/Azure/azure-iot-sdks/blob/master/doc/get_started/ubuntu-ankaa-c.md
一樣, 修改以下三個檔案
  • azure-iot-sdks/c/iothub_client/samples/iothub_client_sample_amqp/iothub_client_sample_amqp.c
  • azure-iot-sdks/c/iothub_client/samples/iothub_client_sample_http/iothub_client_sample_http.c
  • azure-iot-sdks/c/iothub_client/samples/iothub_client_sample_mqtt/iothub_client_sample_mqtt.c

  • static const char* connectionString = "[device connection string]"; 
的部份, [device connection string] 就是用前面講的 Device Explorer 中 Copy connection string 出的字串.
再來才是
  • sudo azure-iot-sdks/c/build_all/linux/build.sh

最後它會做些測試, 只要看以上三個 sample code self-test 沒過, 大部份就是 ssl library 之類的套件不合需求所致. 例如我在 debian 8.4 上做同樣的事, debian 8.4 有原生的 gcc 4.9.2, 但編出來的東西就是不能用.

測試時有裝 Device Explorer 的 Windows 機器要開機開著, 選好 device 後, 點選 monitor 開始監聽來自這個 iot device 發的訊息, 跟送出給這個 iot device 的訊息, 就可以完成測試.

ps1. 因為 ubuntu 14.04 base-core 只有 armhf, 所以我不知道 armel 能不能編的過.
ps2. 如果確定 target ARM 是 ARMv7 的機器, 可以試著使用 ubuntu 14.04 base-core 套件
http://cdimage.ubuntu.com/ubuntu-base/releases/14.04/release/
的 rootfs 掛起來後, 再去編譯. 如前面所述, 此時的 kernel 只要打通 UART (for debug) 跟 ethernet 就可以測試,
ps3. 三個 sample code 預設都不會 printf 出它送出的訊息, 只能靠從 Device Explorer 接收到的訊息判斷是否可以正常溝通. 需要進一步資料正確性驗證工作的請自己改 code. Device Explorer 收到訊息的樣子請參考下圖 Windows 10 的範例, 送出的嘛............... 因為訊息太亂我不想貼了 sorry (重點是根本無從驗證正不正確)

3.Windows 10 (for C#)

目前編譯環境 Windows 僅能支援 10. (ps. 按照原始的文件, 你必需要在要認證的裝置上跑那個 code builder, 但實際上個人實驗的結果是根本不需要, 只需要執行編譯出來的 binary 就可以)

首先的要裝一個 Windows 10, 專業版或個人版都可以, 試用就可以不需要正式版 (正不正式看你需要...). 裝好後第一件事情就是 setting, security and update, developer mode 打開.
安裝 visualstudio 2015 (community 版即可)
https://www.visualstudio.com/en-us/downloads/download-visual-studio-vs.aspx
只知道需要幾樣元件有:
  • Programming Languages
    • Visual C++
      • Common Tools for Visual C++ 2015
  • Windows and Web Development
    • Microsoft SQL Server Data Tools

安裝網路版 SDK:

網路版安裝有一個好處, 它會幫你檢查 vs2015 有沒有欠缺元件.

下載前面講的檔案
https://github.com/Azure/azure-iot-sdks
(Windows 用戶可以點選旁邊的 "clone or download" 再 download zip 下載, 可是個人比較信任它的 git clone 能力...), 解開壓縮檔.

如同文件
https://github.com/Azure/azure-iot-sdks/blob/master/doc/get_started/windows10-aaeon-up-csharp.md
所述, 修改 program.cs 中 private const string DeviceConnectionString = "replace";, "replace" 就是用前面講的 Device Explorer 中 Copy connection string 出的字串. 然後 build solution.

要測試時, 進 console, 到 project 的 release folder 下執行該 .exe 檔...
azure-iot-sdks-master\csharp\device\samples\DeviceClientAmqpSample\bin\Release\
送出成功會像這樣:
Device Explorer 收到會像這樣:


ps1. 如果此時提示 Microsoft.Zaure.Devices.Client.DLL 找不到, 請先嘗試 build Microsoft.Zaure.Devices.Client 這單一個 project 試試看. 如果這一個失敗, 後面三個 sample code 就算編的起來也不能使用.

ps2. 用 vs2015 打開 iothub_csharp_client.sln, 打開後 vs2015 會提示是否要安裝欠缺的套件, 如果沒有出現, 可以嘗試看看 solution explore 那邊有沒有 "install missing feature(s)" 的選項, 安裝欠缺的套件. 個人建議 android SDK 跟 iOS SDK 可以不用裝, 因為此時的重點是 C#.

最後, 要把 build log 存起來, 寄給微軟時會要用到.

added note 2016/06/23 根據這篇文
http://www.inside.com.tw/2016/06/21/connecting-to-microsoft-azure-iot-hub-using-mqtt
所述, Device Explore 給的 key 有可能只有 24 小時的效力, azure portal 看到 iot hub 的那個 primary key 我則是確定可以用很多天 (其實是我沒換...) 都還有效. Device Explore 配發給 device 的 ssh key 是不是只有 24 小時內有效, 我不知道, 等有機會我再試...
update 20160912:
今天看到 ubuntu 14.04.5 LTS 更新裡有 gcc 4.9 (不是只有 base 而已) 可用, 看來可以直接裝.