[教學] 小米路由器 mini 刷機紀實 (PandoraBox / Padavan / OpenWRT / LEDE)

xiaomiroutermi42.jpg

圖片來源:https://blog.jks.coffee/wp-content/uploads/2017/11/xiaomiroutermi42.jpg

其實 小米路由器 mini 這台已經出一陣子了,

官方的韌體也是不錯用但小弟有一些更進階的需求,
所以嘗試使用刷第三方韌體的想法,
網路上教學很多,多方參考才能降低失敗率
以下是我參考多方文件所得出的筆記

刷機有風險,刷機前請參考各方教學文 
步驟弄錯,變磚不要找我 😛

打開 SSH 介面

瀏覽官方 SSH 解鎖工具
前提要先把機器綁定到小米帳號底下,這網址才會有作用 (注意,該動作也會直接註銷喪失保固!

https://d.miwifi.com/rom/ssh

這裡會提供 root 密碼, SSH 工具 (miwifi_ssh.bin)

大略步驟如下:

  1. 刷入開發版 Rom
  2. USB隨身碟放入SSH工具 miwifi_ssh.bin
  3. 斷電,按住reset按鈕之後重新接上電源,長按約3-5秒 LED 變為黃燈閃爍,安裝後會自動重啟
  4. 連入 ssh 進行刷機

screencapture-d-miwifi-rom-ssh-1512040175668.png

打開 SSH 刷入 Breed 工具

Breed 是一款類似於 u-boot 的不死固件,類似手機的 Recovery
它放在 Bootloader 中,當 Firmware 有問題的時候,還可以經由進入 Breed 來做刷機

另外因為小米路由器的韌體架構的關係,韌體上面會有小米序號,
必須要先做備份,以免事後無法回復到原廠韌體。

  1. 查看 rom 資料
$ cat /proc/mtd
dev:    size   erasesize  name
mtd0: 01000000 00010000 "ALL"
mtd1: 00030000 00010000 "Bootloader"
mtd2: 00010000 00010000 "Config"
mtd3: 00010000 00010000 "Factory"
mtd4: 00c80000 00010000 "OS1"
mtd5: 00b11e68 00010000 "rootfs"
mtd6: 00200000 00010000 "OS2"
mtd7: 00100000 00010000 "overlay"
mtd8: 00010000 00010000 "crash"
mtd9: 00010000 00010000 "reserved"
mtd10: 00010000 00010000 "Bdata"
  1. 備份成檔案
cd /tmp
mkdir rom
dd if=/dev/mtd0 of=/tmp/rom/ALL.bin
dd if=/dev/mtd1 of=/tmp/rom/Bootloader.bin
dd if=/dev/mtd2 of=/tmp/rom/Config.bin
dd if=/dev/mtd3 of=/tmp/rom/Factory.bin
dd if=/dev/mtd4 of=/tmp/rom/OS1.bin
dd if=/dev/mtd5 of=/tmp/rom/rootfs.bin
dd if=/dev/mtd6 of=/tmp/rom/OS2.bin
dd if=/dev/mtd7 of=/tmp/rom/overlay.bin
dd if=/dev/mtd8 of=/tmp/rom/crash.bin
dd if=/dev/mtd9 of=/tmp/rom/reserved.bin
dd if=/dev/mtd10 of=/tmp/rom/Bdata.bin
  1. 複製備份到電腦上

用 scp 把備份檔案抓出來 $ scp -r [email protected]:/tmp/rom .

(註:scp 指令適用於 Mac / Linux 環境,
如果是 Windows 的使用者,請改用 pscp 或 WinSCP 來做資料傳輸)

恢覆指令 (以後備用)

mtd write /tmp/rom/Bootloader.bin Bootloader
mtd write /tmp/rom/Config.bin Config
mtd write /tmp/rom/Factory.bin Factory
mtd write /tmp/rom/OS1.bin OS1
mtd write /tmp/rom/rootfs.bin rootfs
mtd write /tmp/rom/OS2.bin OS2
mtd write /tmp/rom/overlay.bin overlay
mtd write /tmp/rom/crash.bin crash
mtd write /tmp/rom/reserved.bin reserved
mtd write /tmp/rom/Bdata.bin Bdata
  1. 刷入 Breed

用 scp 把 breed-mt7620-xiaomi-mini.bin 檔案複製進去

$ scp breed-mt7620-xiaomi-mini.bin [email protected]:/tmp
  1. 執行刷機
cd /tmp
mtd -r write breed-mt7620-xiaomi-mini.bin Bootloader

進入 Breed 介面

斷電,按住reset按鈕之後重新接上電源,長按3-5秒,LED 變為藍燈閃爍 插網路線,瀏覽 192.168.1.1 進入 Breed 介面

screencapture-192-168-1-1-1512040517285.png

選固件更新,在固件這欄刷入你要的 Rom

screencapture-192-168-1-1-upgrade-html-1512040580563.png

[PandoraBox]

檔名:PandoraBox-ralink-mt7620-xiaomi-mini-squashfs-sysupgrade-r1024-20150608.bin

下載位置

[Padavan (老毛子華碩第三方固件)]

檔名:RT-AC54U-GPIO-30-xiaomimini-128M_3.4.3.9-099.trx

下載位置

[OpenWRT]

檔名:openwrt-15.05.1-ramips-mt7620-xiaomi-miwifi-mini-squashfs-sysupgrade.bin

15.05.1下載位置

snapshots(開發版)下載位置

[LEDE]

檔名:lede-17.01.4-ramips-mt7620-miwifi-mini-squashfs-sysupgrade.bin

17.01.4下載位置

(下載連結均由網路搜尋而得,可能會失效,如有缺檔,請自行搜尋,小弟亦不補檔)

刷完手動重新整理,進入新韌體介面

這裡就留給大家動手玩玩各種韌體了

要注意,Breed 適用刷第三方 Rom,雖然也可以刷回小米官方韌體
但是 序號(SN) 會被洗掉不見,沒有序號就不能綁定小米帳號,也不能重新開啟 SSH 權限
如果要刷回原本官方韌體,要把原本備份下來的資料 (包含 Bootloader) 整個倒回去才行
如果成功的話,這時候應該會回到官方的開發版韌體

總結一下,小米路由器mini 這台其實沒有想像中的難刷機,刷了之後能用的功能就更多了,能調整的地方更細緻 第三方韌體穩定度蠻不錯的,適合中重度的玩家使用

參考資料

http://www.jianshu.com/p/111b6c1cbccf
http://eric0703.pentaxfans.net/2934
http://kyoko7384.blogspot.com/2017/03/mini-mod-iptv-rom-mod-padavan-rt-ac54u.html
https://leamtrop.com/2017/05/11/flash-openwrt-squashfs/
https://kirkhsutw.blogspot.tw/2017/06/mini.html
https://kknews.cc/tech/oyb2j3m.html
https://jingyan.baidu.com/article/c45ad29c24ee27051653e264.html
https://jingyan.baidu.com/article/3f16e003faa67e2591c10300.html
https://jingyan.baidu.com/article/215817f790b3ca1eda142333.html

[教學] Tomato 設定 OpenVPN 伺服器步驟 (以 RT-N16 為例)

有鑒於 OpenVPN 的 Server 設定官方文件又臭又長,常常望之卻步
小弟就自己的經驗做一個小小的分享,還有寫了一些方便自己的 Scripts
小弟使用的機器與資訊如下

硬體:Asus RT-N16
韌體:Advanced Tomato
Version 3.4-138    
K26USB-1.28.AT-RT-N5x-MIPSR2-3.4-138-AIO.trx
(OpenVPN version: v2.3.11)
設定使用的電腦:Mac

設定步驟

1. 下載檔案

首先先下載 easy-rsa

https://github.com/OpenVPN/easy-rsa/releases/tag/2.2.2

和小弟寫的 Scripts

https://github.com/j796160836/tomato-openvpn-setup

因為這版的 Tomato 使用的是 OpenVPN v2.3.11
所以搭配 easy-rsa  v2 做設定

然後解壓縮跟我的 Script 放在一起

2. 修改 vars 變數檔案

$ vi vars

把設些改成你要的內容

export KEY_SIZE=2048
export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="[email protected]"
export KEY_OU="MyOrganizationalUnit"
export KEY_NAME="EasyRSA"
export KEY_CN="CommonName"

3. 產生伺服器金鑰

generate-keys-server.sh  指令

$ ./generate-keys-server.sh

他會把剛剛的環境變數設定好,並清掉之前有產生的金鑰

產生一個預設名字的伺服器金鑰,最後印出來

如果你之前有跑過這個指令,就不要再跑第二次了

(如果要跑第二次,就要重新設定用戶端金鑰)

執行成功會出現類似這樣的東西

================================================================
Please paste it at Tomato's OpenVPN key config page
================================================================
[Certificate Authority]
-----BEGIN CERTIFICATE-----
MIIDhDCCAu2gAwIBAgIJAJ9a8dYhq73TMA0GCSqGSIb3DQEBCwUAMIGJMQswCQYD
Q6Xp2vd6068LHC7b9qTs1nWHfYbpdOv1GmzKONIGd3FDiuRFJu4J/g==
-----END CERTIFICATE-----
[Server Certificate]
-----BEGIN CERTIFICATE-----
MIID5jCCA0+gAwIBAgIBATANBgkqhkiG9w0BAQsFADCBiTELMAkGA1UEBhMCVFcx
TRmjwzCO84lz2LOYFDVlETjb6Mb76SysoHVb4zNPX7Bkrr2u3c8+vzaV
-----END CERTIFICATE-----
[Server Key]
-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQCy1Pwvi8bE0dTpNddzNBluQoKHdHQpa7mBuH7T0+fWLhs3HoEd
POvdTEVwh+G/2kce8xtOwJAkvyppXMWjY2WmSqimVP8=
-----END RSA PRIVATE KEY-----
[Diffie Hellman parameters]
-----BEGIN DH PARAMETERS-----
MIGHAoGBAN8PIYvlZy1rDghoF+K9wmMrCaN5DBi+3HPFemJEZK4wlyeXHLDOGYx+
5vtwBR2tPYXwTwdeMZItmqVMsVuIN4d0vEzDrbNihAU7OaaWzP+bAgEC
-----END DH PARAMETERS-----

(請你自己跑一次,不要直接照樣 copy,這裏的金鑰只是示意而已)

你就打開 Tomato 的 VPN > OpenVPN Sever > Keys 進入金鑰設定頁面

把金鑰對應地複製貼上到對的地方

1

如果它跑太快或者你不小心把結果清掉了,你可以再跑一次 print-server.sh 指令查看

$ ./print-server.sh

4. 抓取 Tomato 上的設定值

這裡有點 Tricky,我是直接讀取它的設定檔指令來做的

請使用 Tools > System Commands (System Shell) 來執行 fetch-server-config.txt 檔案裡面的指令

2

這個是 fetch-server-config.txt 檔案裡面的內容

#!/bin/bash
server_config="/etc/openvpn/server1/config.ovpn"
if [ ! -e $server_config ]; then
echo "File not found!: $server_config"
exit 1
fi
port=cat $server_config | grep "port" | awk '{print $2}'
public_ip=curl -s ipinfo.io/ip
#public_ip=curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//'
config_data="remote "$public_ip" "$port"n"$(cat $server_config | grep "proto|dev|cipher" | awk '{printf "%s\n", $0}')
echo "=================================================="
echo "Please paste this command in your easy-rsa folder"
echo "=================================================="
echo
echo "echo -e ""$config_data"" > server-config" 

執行之後會得到類似這樣的指令

3

==================================================
Please paste this command in your easy-rsa folder
==================================================
echo -e "remote 1.2.3.4 1194nproto udpndev tun21ncipher DES-CBCn" > server-config 

一樣,把剛剛產生出來的指令,貼回 Mac 的 Terminal 上,產生 server-config 這個檔案

5. 產生用戶端金鑰

這裡執行 generate-keys-client.sh 這個指令,並打入你要的名稱

$ ./generate-keys-client.sh Client01

這裡我打的是 Client01 做為名稱,你可以換成你要的,但不能重複

執行成功會得到類似這個訊息

Write out database with 1 new entries
Data Base Updated

就完成產生了

6. 產生用戶端OpenVPN設定檔

使用 print-client-config.sh  這個指令,帶入剛剛打的名稱,並寫入進一個 ovpn 檔案之中

$ ./print-client-config.sh Client01 > Client01.ovpn

他就會抓取金鑰跟剛剛 server-config  裡面的內容產生一個設定檔

接下來你只要把 OpenVPN 的用戶端安裝好,使用剛剛的 ovpn 設定檔就可以了

以 Mac 為例,

Mac 的 OpenVPN 用戶端使用 Tunnelblick

https://tunnelblick.net/

安裝完成,雙點 ovpn 檔案,再輸入電腦使用者的密碼就可以使用了

IOS 的話有 OpenVPN Connect 可以使用

https://itunes.apple.com/us/app/openvpn-connect/id590379981?mt=8

把 ovpn 檔案放在 iCloud drive 然後載入它,就可以了

 

祝設定成功!

 

 

 

 

 

 

 

 

 

[Mac/Linux] 在Mac使用usb轉RS232 (serial port / com port)

RS232是什麼?不解釋。
要的話自己去買一條
http://shopping.pchome.com.tw/?mod=store&func=style_show&SR_NO=DCAC16

===以下給有需要的人使用===

驅動部份找這家的晶片

http://www.prolific.com.tw

像我找到這個驅動
http://www.prolific.com.tw/US/ShowProduct.aspx?p_id=229&pcid=41
Screen Shot 2013-01-22 at 2.21.39 PM  

md_PL2303_MacOSX10.6_dmg_v1.4.0.zip

下載解壓縮,安裝完會重新開機

然後打開Applications > Utilities > Terminal (或是你喜愛的Terminal程式)

使用screen指令

screen /dev/cu.usbserial 115200

這個cu.XXXXXX可能會不一樣,我這邊是 cu.usbserial
(這個要安裝完驅動才有唷)
115200就是baud rate

這時會在現有的Terminal執行另一個「視窗」
字面解釋是視窗沒錯,應該說是文字模式下的多工(就像你在切換tty一樣)

到了screen模式底下,可以按control + A 加上 ?
看看help

—–

如果要結束這個對話框
請先按control + A 再按 control + \

(Linux 的話就是Ctrl + A 再按 Ctrl + \ )

如果不離開的話,這個serial可是會被佔用的喔

後來研究一下screen這個指令
其實還蠻好玩的

推薦看這篇

http://wiki.shsh.ylc.edu.tw/index.php/Screen

screen模式下按Ctrl + A 然後 D
儲存現有狀態
然後用screen -r 指令叫回來

Ctrl + A 然後 C 開新的「視窗」
也可以Ctrl + A 連按二次做視窗間切換

 

 

資料來源

http://www.mobile01.com/topicdetail.php?f=482&t=446370&p=1

http://www.rackaid.com/resources/linux-screen-tutorial-and-how-to/

http://wiki.shsh.ylc.edu.tw/index.php/Screen

 

http://pbxbook.com/other/mac-tty.html

http://forums.macrumors.com/showthread.php?t=1125800

 

[Java] Eclipse的偏好設定(操作習慣和好用技巧)

2012-11-15 15 55 03

實在不得不說,Eclipse真的是個很強大的IDE

有些好用快捷鍵在還沒有開始設定偏好設定前先分享一下
這些快捷鍵

Ctrl + Shift + F    自動排版(超好用

Alt + /                 開啟字彙選擇框(自動完成框)
Ctrl + D               刪除一行
Ctrl + /                註解/解除註解多行
Ctrl + B               建置專案
Ctrl + L               到指定行號(一般編輯器都是Ctrl + G)
Ctrl + 1               跳出修正建議框

 

 


其實這篇的產生因為重灌電腦,常常好多Eclipse好用的偏好設定都忘了設定上去
然後選項又超多,分類錯綜複雜 

除了做個備份,也一併分享給大家

這些路徑不用強記,可以憑印象打關鍵字,很多選項就會跳出來了唷

 

 

專案的編碼格式(Encoding)

這我不知為何,Eclipse它的預設值是ANSI

在還沒有專案的時候,可以像我一樣調整成utf-8

但是如果已有專案的話,文字有可能會變亂碼唷

這時候用convertz救援吧

 

路徑:General > Workspace

關鍵字:encoding

2012-11-15 15 57 41

Text file encoding 的地方,文字框打入 utf-8

另外,Build automatically 的地方,我喜歡把勾勾去掉

需要的時候手動按 Ctrl + B 建置專案

 

 

字體大小設定

我雖然沒有老花,但就是不喜歡字體小小的糊在一起,對Eclipse第一個開刀的一定是字體大小

字體大一點,自己看得也舒服

路徑:General > Appearance > Colors and Fonts

關鍵字:font

2012-11-15 15 59 51

在Basic裡的Text Font修改字體大小

如果只是程式碼,其實只要調Text Font就好,其他會跟著Text Font去調整

至於中文字嘛…預設的字型調過了之後,中文字還是很小
這時可能要調字型,至於字型…每個人的適應能力不同

通常是找每個字體間距相等的為佳,這部份留給大家自行嘗試摟 

 

 

自動格式化設定

路徑:Java > Code Style > Formatter

關鍵字:Format

Eclipse最強大的功能就是「自動格式化(Auto Format)」  (灑花)

在coding的時候可以按個快捷鍵 Ctrl + Shift + F

在凌亂的格式,都整得服服貼貼

 

 

因為受大學老師程式碼風格影響,大括弧「 { 」一定要換一行

所以我們就這樣對應調整

2012-11-15 16 03 46

Eclipse預設風格是不給調的,複製一份設定檔即可

按下New,打入一個喜歡的名字

2012-11-15 16 05 23

在Braces裡,除了最後一個之外,其它都設定成Next line
右邊有預覽窗格,可以邊調邊看效果 

 

 

自動完成框

不只是Eclipse,很多整合開發環境(IDE)都會提供自動完成框

尤其是Visual studio,打幾個字就跳出候選字選取框

就像你在用google一樣簡單

因為電腦CPU等等的條件影響,預設不是甚麼鍵都觸發之
但我們可以把他打開

 

路徑:Java > Editor > Content Assist

關鍵字:auto

2012-11-15 16 07 10

這個自動完成的功能,因為受到網路文章的影響

發現大為好用,故分享給大家

我就直接轉載了

 

勾選 "Enable auto-activation" 的選項
Auto activation delay 為提示出現的延遲時間,建議可以設為 0ms (預設是200ms)
Auto activation triggers for Java 為 IDE 遇到何種字元會自動啟動提示,預設只有 dot,請改為 .abcdefghijklmnopqrstuvwxyz(,
Auto activation triggers for Javadoc 在註解區塊中遇到何種字元會啟動提示,預設是 @ 及 #

 

這個Auto activation triggers for Java,如果CPU不夠力的時候,可以調回預設值:點點 「 .

手動按 alt + / 也是會跳出來啦

 

參考:

http://icercat.pixnet.net/blog/post/23671027

 

ADB連接逾時

這個選項是從這裡來的

http://j796160836.pixnet.net/blog/post/29108155

在開發Android,可以用wifi 來做打開除錯 (就像是連接USB一樣)

但這功能需要root

 

最近是遇到當網路環境不穩定時,連接常常逾時(timeout)

所以可以在這裡設定timeout的時間

路徑:Android > DDMS

2012-11-15 15 55 37

 

ADB connection time out (ms): 預設是5000

經由測試,大概改到80000足夠

 

 


將會不定時增加…

[RDP] 遠端桌面使用的常用快捷鍵

因為常常使用遠端桌面,太常忘記了要怎麼按

在遠端桌面按 Ctrl + Alt + Delete 了,就筆記一下

 

本機快速鍵 遠端桌面快速鍵 功能說明
CTRL + ALT + DEL CTRL + ALT + END

顯示 [Windows 安全性] 對話方塊

CTRL + ALT + BREAK

在視窗和全螢幕顯示模式間切換。

Win Key 或 CTRL + ESC

ALT + HOME

顯示 [開始] 功能表。

ALT + TAB

ALT + PAGE UP

從左到右切換視窗
SHIFT + ALT + TAB

ALT + PAGE DOWN

從右到左切換視窗
PrintScreen

CTRL + ALT + 數字鍵上的加號(+)

將遠端的整個螢幕畫面複製回本機。
ALT + PrintScreen

CTRL + ALT + 數字鍵上的減號(-)

將遠端的作用中的螢幕畫面複製回本機。

 

資料來源

http://blog.miniasp.com/post/2008/07/22/The-hotkey-usage-in-Remote-Desktop-environment.aspx

http://windows.microsoft.com/zh-HK/windows-vista/What-shortcut-keys-can-I-use-in-Remote-Desktop-Connection

瞭解JSON格式

這篇…我想就是給初次看JSON格式的人看的吧
如果懂了它的格式,不會太難

JSON全名叫做JavaScript Object Notation
就是在JavaScript之中,表示物件的一種格式

既然是格式,為何這麼多人愛用
可以好好瞭解一下

 

 

JSON格式簡單來說,就是這二句重點:


物件(object)用大括號 { }

陣列(array)用中括號 [ ]

先記住這概念


如果你看不懂JSON,可以用類似這種線上JSON格式化的網站

http://www.jsoneditoronline.org

幫助你瞭解

google搜尋一下:json format

就會有很多,這個網站我覺得做得不錯
我不是故意要打它的廣告,但這網站應該有助於JSON的學習


 

物件(object)

這裡說的object,不管你曾經在哪裡聽過這個名詞

他就是用key-value的方式儲存

來個範例吧!

{"subject":"Math","score":80}

這就是json裡的object

Screen Shot 2012-12-24 at 11.40.23 AM  

key-value就是指一個鍵值(key)對應一個值(value),跟變數很像

像是subject這個key有個值叫Math

score它的值為80

 

官方網站有個迷宮圖,有助於理解

object  

 


陣列(array)

陣列可能就比較熟悉些

例如

[0,4,5,2,7,8,3]

Screen Shot 2012-12-24 at 12.12.01 PM  

不難理解,就像是之前寫陣列一類似
這裡的範例是使用數字,但也可以是文字布林或者是陣列物件null。當然,混合就不用說了,絕對OK。

value  

 

文字(text)的例子

["Tom", "John", "Amy", "Ivy"]

Screen Shot 2012-12-24 at 12.32.54 PM  

布林(Boolean)

[true, true, false, false, true, true]

Screen Shot 2012-12-24 at 12.34.43 PM  

硬要用key-value的方式解釋的話
就是0,1,2,3的照順序的數字

array  

 

所以物件和陣列,某方面來說(不考慮資料損失),是可以互相轉換

若 物件 -> 陣列

就會損失鍵值(key)的資料,留下值(value)
或是程式到時候指定說,要鍵值陣列(key array),就會把所有的鍵值(key)合併一起成陣列

若 陣列 -> 物件

就可以將每個值編上數字

 

這裡注意一點
json object的鍵值(key),一定要用文字做鍵值

以下是錯誤的

{0:"Tom", 1:"John", 2:"Amy", 3:"Ivy"}  // error syntax

Screen Shot 2012-12-24 at 12.45.37 PM  

正確應改為

{"0":"Tom", "1":"John", "2":"Amy", "3":"Ivy"}

而整個JSON格式文件之中,是不能使用註解的

 

最後用這二個範例結束吧

成績單

[{"name":"Tom","lastname":"Chen","report":[{"subject":"Math","score":80},{"subject":"English","score":90}]},{"name":"Amy","lastname":"Lin","report":[{"subject":"Math","score":86},{"subject":"English","score":88}]}]

Untitled_Panorama1  

看起來很複雜,對吧?
其實不難

我們做成大家看得懂的表格

成績單1

姓名  Tom Chen 
數學 80 
英文  90 

成績單2

姓名  Amy Lin 
數學 86
英文 88 

 

剛剛也有提到這是個成績單
一開始用一個陣列 [] 包起來,然後是二個物件 {}

[{ …學生1… },{ …學生2… }]

學生資料內有姓名和成績

{"name":"Tom","lastname":"Chen","report": …成績資料… }

成績的部份,因為有很多成績資料,所以有用陣列 [] 包起來

{"name":"Tom","lastname":"Chen","report":[{ …成績1… },{ …成績2… }]} 

一個成績資料,也是個物件

{"subject":"Math","score":80}

全部拼起來就成那樣

 

如果用XML的格式寫就長這樣

<data>

    <student>
        <name>Tom</name>
        <lastname>Chen</lastname>

        <report>

            <subject>
                <name>Math</name>
                <score>80</score>
            </subject>
            <subject>
                <name>English</name>
                <score>90</score>
            </subject>

        </report>
    </student>

    <student>
        <name>Amy</name>
        <lastname>Lin</lastname>

        <report>

            <subject>
                <name>Math</name>
                <score>86</score>
            </subject>
            <subject>
                <name>English</name>
                <score>88</score>
            </subject>

        </report>
    </student>

</data>

應該不會太難

 

最後是網站上一開始附的範例

{"name":"John Smith","age":32,"employed":true,"address":{"street":"701 First Ave.","city":"Sunnyvale, CA 95125","country":"United States"},"children":[{"name":"Richard","age":7},{"name":"Susan","age":4},{"name":"James","age":3}]}

Screen Shot 2012-12-24 at 1.57.08 PM  

用XML可能會這麼寫:

<person>

    <name>John Smith</name>
    <age>32</age>
    <employed>true</employed>

    <address>
        <street>701 First Ave.</street>
        <city>Sunnyvale, CA 95125</city>
        <country>United States</country>
    </address>

    <childrens>

        <child>
            <name>Richard</name>
            <age>7</age>
        </child>

        <child>
            <name>Susan</name>
            <score>4</score>
        </child>

        <child>
            <name>Susan</name>
            <score>4</score>
        </child>

    </childrens>

</person>

比起XML,JSON的格式看起來是不是簡潔許多呢?

 


備註

在JSON的格式中,關於中文或其他非英文的部份

一定要用Unicode encode過

通常這個一般處理JSON的函式庫都會做掉

除非你自己print,自己兜出JSON格式

像是

我是中文  就會變成  u6211u662fu4e2du6587

類似這種 u開頭,接一串數字的東西

可以用這個工具做轉換(不過一般程式的library會做掉啦,這不用擔心)

http://www.htmlescape.net/stringescape_tool.html

 

另外有些字元在JSON不能直接打,需要做跳脫的(escape character) 在這
有些大家都很熟悉,就不細講了

"
\
/
b
f
n
r
t

這裡有些字碼表供參考

http://en.wikipedia.org/wiki/List_of_Unicode_characters

 

最後,練練英文,去JSON官方網站去看看吧

http://www.json.org

可以看到不同語言對於這個資料格式的實作
接下來也會提到實作的部分

 

參考資料:

http://zh.wikipedia.org/zh-tw/JSON

Macbook pro 13″使用至今的心得

我沒有品牌忠誠度,盡量中立的寫
主要注重在Mac & Windows差異的部分 

==散熱和電源方面==
Unibody用整塊鋁合金片製造,散熱還不錯,只會底下熱而已,鍵盤區不燙,也很有質感
風扇平時很少轉,除非跑即時聲音運算(EX: fl studio)或是圖形運算(EX: 星海II)的時候
風扇全開的時候會嚇到~哈哈,還好是轉一下就會降下來

 

 

i5處理器對我來說蠻夠用的,但好像是插著電源才會跑全速

Macbook pro的電池還蠻能撐的,號稱有6hr啦
實際一直玩它玩3hr不是問題
磁鐵接頭,接上去嚇一跳,Wow~

整體來說比我之前的12.5″的筆電(Acer TM3000)還要輕巧
但裝備一項都沒缺 (除了VGA頭之外啦,那外接線盒有點雞肋) 

 

==使用習慣==
control鍵,option(alt)鍵,command鍵 常常還是處於混亂狀態

在Mac底下:
control鍵還是control鍵
option鍵 = alt鍵
command鍵 = ctrl鍵

在Windows (跑Boot camp)底下:
control鍵 = ctrl鍵
option鍵 = alt鍵
command鍵 = window key……..=口=”

常常按錯不打緊,旁邊還有fn鍵來攪局,按錯頗正常
————————–
再來就是又愛又恨的Muti-touch
很多人搞不清楚,這跟Windows差異也最大
Lion這點做進控制台的觸控版設定頁面裡面,選項旁邊就是影片教學

雙指雙點 = 滑鼠右鍵 (這我最不能苟同,還好可以改成右下角)
雙指滑動 = 滑鼠滾輪 (這還蠻不錯的,不需局限筆電的右側邊)
三指按住窗框可移動視窗位置
四指向左右滑 = 切換不同的桌面 (還OK的項目)
四指向上滑 = 所有視窗和桌面的一覽
四指向下滑 = 相同類型的視窗(EX:瀏覽器) Expose打散
以上二個動作就是沒事做做手指運動XDD
找視窗還蠻順的,不致於說找不到,對於Dock上的工作列表的依賴性就降低了

四指抓取動作 = 打開啟動器,會有所有程式一覽 (類似iphone上的程式icon的放大版)
四指釋放動作(抓取的相反) = 關閉啟動器 or 顯示桌面 (這超難做到的,乾脆改成隱藏點比較快)

雙指縮放 & 雙指旋轉 (這支援的軟體真的不多,只有Apple出了才有效用)

Mac 雖然講求人性化,但還是需強記這些手勢和動作
看看apple要不要傳播給更多人知道這些小玩意兒
————————–
Vmware fusion和Boot camp實在絕配
Boot camp允許你在Mac上安裝Windows (我是裝Win7 x64啦)
而Vmware fusion又可以簡單的詢問你要不要設定Boot Camp虛擬機
轉換一下直接完成
打開虛擬機後就可以輕鬆的在Mac和Windows裡面切換了
當然剛剛的Muti-touch手勢,大部分都有幫你帶進來

沒事簡單的文書處理的時候可以開虛擬機
真正需要效能的時候開Boot Camp
虛擬機不慢,用起來像在用雙核電腦的感覺
這點我還蠻喜歡的

反倒是Boot Camp這就變成了一個缺點
他對於Windows的支援度整體就是失敗

剛剛的Muti-touch手勢全部廢掉
只剩最簡單的觸控版左鍵和右鍵
當然就沒有所謂的滾輪了,請慢慢拖曳Scroll bar吧

 

指令方面因為都是Unix-like所以一些Linux指令是通用的
還沒有用它寫過Windows程式,聽說會和其他的Windows不相容

可能是我對Mac軟體不熟吧,有沒有方便的文字編輯器? (EX: Notepad++或是Emeditor)
 

 

————————–
最後就是長時間在Mac筆電鍵盤打字,手腕和框邊一直磨擦,頗不舒服的 (可能大一點尺寸會改善吧)

delete鍵在哪裡…..原來是fn鍵+delete呀
沒有出名的Ctrl + alt + delete

到Mac底下要被改成  fn鍵 + control + option + delete
XDDD

Sony Ericsson Xperia X10 刷 2.3.3 + Root + xRecovery教學

Sony Ericsson Xperia™ X10 刷機教學整理

==================================================

 

Step1. 請於x10進入OS(操作系統) 做

設定->應用程式->開發->USB偵錯->打勾
設定->應用程式->開發->螢幕保持開啟->打勾
設定->應用程式->未知的來源->打勾

Step2. 下載並安裝Update Service
選擇X10

依照畫面指示 關閉你的手機

USB線接上手機,按住Back鍵不放並同時將USB線接上PC
進入刷機模式

Update Service抓到手機後會自動進行網路下載版本和更新的動作
然後最後會提示你拔除USB線,然後開機
這樣2.3.3就升級成功了

Step3. 進入OS(操作系統)之後確認為2.3.3
接下來,打開FlashTool

按下flash
點選X10_aZuZu_Kernel_Downgrade_Generic按下OK
依照畫面指示進入刷機模式 (請參考Step2)
刷機的Log直到出現turn on your usb debug就OK!!!

Step4. 拔除USB線,按電源鍵開機,當感到開機的時候的些微震動就可以接回USB線

在pc的FlashTool root鍵的位置會變成可按的,按下root。直到Root should be available after reboot!

Step5. 完成root時,手機不管有沒有自動reboot,把電池拔掉數分鐘。pc端USB拔除。

Step6. 刷入X10_aZuZu_Kernel_UpGrade_Generic,步驟相同請參考Step3

Step7. 點選 Ask Root Perms 之後請注意你的手機,他會問你是否接受root程序,請按「接受」

之後手機端會出現「Unknown已經獲得最高權限」的字樣
這時候FlashTool上的 xRecovery按鈕應該成為可點選了,然後按下xRecovery
並等待其安裝成功

==================如何進入X10的刷機模式==================
1. 關閉你的手機

(註:在還沒按住Back鍵之前,畫面上不能有Sony Ericsson字樣或者電池充電中的圖示。若有,可以拔電池約一分鐘再接回去,接上電池後等待約30秒左右,讓系統偵測完畢。也確定他為黑螢幕)

2. USB線接上手機,按住Back鍵不放並同時將USB線接上PC
進入刷機模式

3. 成功進入刷機模式的話,手機的右上角會亮綠燈
(綠燈亮了之後就可以放掉Back鍵,不用再按住Back鍵不放了)

而且PC上會多出一個叫SEMC USB Flash driver的不明裝置
那個驅動在FlashTool_0.2.9.1\drivers\X10_ADB_drivers.zip
解壓縮後的資料夾內

4. SEMC USB Flash driver的不明裝置,安裝完驅動會變成
Sony Ericsson sa0102 ADB Interface

================如何進入刷入後的xRecovery================
重新開機,看到Sony Ericsson的白字的時候,連續按返回鍵,不是按住喔,是一直連續0.5-1秒按放按放,之後會跑出Xrecovery模式
按音量的上下鍵選擇,右方的Back鍵就是返回,中間的Home按鍵則是進入,這時候電源鍵會變成無用

 

 =================================================

這次刷機有用到的文章

[教學] x10 2.3.3 root+Recovery完全教學
http://gphonefans.net/thread-59094-1-1.html

[教學] X10新手ROOT+安裝busybox,xRecovery刷2.2+變磚救機術
http://gphonefans.net/thread-34157-1-1.html

Flashtool軟體網站 (目前版本 Flashtool v0.5.3.0)
http://androxyde.github.com/Flashtool/

====================找到的一些教學====================

X10一鍵 解鎖/上鎖
http://www.mobile01.com/topicdetail.php?f=569&t=2062214

[RECOVERY image] {v2} X10 GB 3.0.1.G.0.75 [Prerooted + Fixed xRecovery]
http://forum.xda-developers.com/showthread.php?t=1192152&fb_source=message

===========自訂的ROM (朋友推薦的,不過沒用到就是了)===========

X10 Wolfs V7(Test V3)/ThGo2_v9.3 (畫面很順) (11/5)X10台灣版2.3.3官方版可一鍵root
http://www.mobile01.com/topicdetail.php?f=569&t=2288956&last=32340524

[分享] RT-N10+刷DD-WRT之後如何回復原廠設定

我的RT-N10+刷了DD-WRT剛好滿半年摟

 

已經買了第三台了

我真的蠻推這台的,蠻穩的

開BT也沒掛過

 

我最喜歡他的DD-WRT的

VPN功能,不過要搭配固定IP或是ddns使用會比較好用

DHCP Forward,這也是比一般的switch強大的地方

這真的要好好說一下

之前使用switch,直接向主要的分享器(DHCP功能)   去索取IP

當線路不穩定時,IP資訊就不見,網路就馬上斷線了

而且要回復連線時,還要重新去遠方索取IP,回復時間

 

 

但DHCP Forward的話,他會在機器上存份cache

當線路異常時,不會馬上移掉IP資訊,會改由次要分享器 索取IP資訊

(不知道我推論的對不對)

 

 

還沒有刷DD-WRT的看這裡

DD-WRT要看型號刷,不是每家分享器都可以這樣玩

http://j796160836.pixnet.net/blog/post/28819027

 

DD-WRT版本又更新摟 Build r17201  (2011-06-14)

路徑在

Path: Downloads › others › eko › BrainSlayer-V24-preSP2 › 2011 › 06-14-11-r17201 › Asus-RT-N10PLUS

 

 

————————————-

今天遇到設定Wifi Repeater的問題

DD-WRT也有提供Repeater的相關設定

但我可能設定不出來

 

 

想試試看原廠Rom的設定

但我的機器已經刷了DD-WRT怎麼辦?

 

請遵循以下步驟刷回原廠設定值  (這步驟原廠的說明書也有,我後來才找到   哈)

 

 

用筆尖戳Reset鈕數十秒,直到WPS燈到閃爍(半秒鐘亮、半秒鐘熄)

這時就已經進入了Recovery Mode了

 

這時候

你的電腦接上網路線,另一端接上

手動設定IP

IP: 192.168.1.2

Mask: 255.255.255.0

Gateway: 192.168.1.1

 

使用原廠的工具

Firmware Restoration軟體

 

解壓縮FW_RT_N10Plus_2016.zip得到RT-N10+_2.0.1.6.trx原廠韌體檔

指定路徑到  RT-N10+_2.0.1.6.trx  原廠韌體檔

按下Update

然後等待

 

之後在瀏覽器打

 

http://192.168.1.1/

 

預設帳號是admin密碼admin

 

就進的去了

 

 

 

參考文章

http://kururu6233.pixnet.net/blog/post/27817519-%E3%80%90%E8%B2%B7%E7%89%A9%E3%80%91asus-rt-n10%2B-%E7%84%A1%E7%B7%9A%E8%B7%AF%E7%94%B1%E5%99%A8

http://koukaipan.pixnet.net/blog/post/26909556#comment-29020862

http://tomatousb.org/forum/t-287762/build-53-bricked-asus-rt-n10  (這是給RT-N10用的,不過跟RT-N10+的步驟相同)

http://digiland.tw/viewtopic.php?id=1561   (RT-N10和RT-N10+的差異大比較,大概是N10+不能換天線N10可以,N10+的各個硬體配備比N10好,但比N10便宜,何樂不為?)

Desire HD 進入安全模式

不知道有沒有人跟我一樣

不小心進入HTC製作的安全模式?

 

進入方法如下

手機重開機,手機震動後

會出現白色畫面中綠色HTC字樣的畫面

這時,等待其載入到出現

小標題quietly brilliant的字樣

的附近

長按音量下鍵 (可以多按幾次,每次都長按即可)

如果成功進入的話,手機會震動一下

而且左下角會寫著安全模式

 

官方寫法是這樣

在安全模式中,所有協力廠商的應用程式都無法執行,所以您可以成功地啟動手機,以解除安裝最近安裝的應用程式,或可能導致手機無法正確啟動的應用程式。

我的解釋是,自行安裝的程式 (所有不是燒在Rom裡的程式),都無法執行

 

離開安全模式,只要重開機即可