2013年5月26日 星期日

[Windows] 製作 Windows 可開機安裝隨身碟 @ Windows 8

對 Windows 7 來說,有官方出的工具 Windows7-USB-DVD-tool 可以用,但用在 Win8 則失敗?在加上坊間大多都用其他第三方軟體製作,所以找資料時花了不少時間,還是把它記一下好了


準備工具:



  • 一支隨身碟

  • 正版 Windows 安裝光碟 ISO 檔

  • 使用 Windows 內建 diskpart 工具

  • 使用 Windows 安裝光碟 boot\bootsect.exe 工具


流程:


1. 準備一支隨身碟並格式化 (ctrl + r + diskpart)


Microsoft DiskPart 版本 6.2.9200
Copyright (C) 1999-2012 Microsoft Corporation.
DISKPART> list disk

磁碟 ### 狀態 大小 可用 Dyn Gpt
-------- ------------- ------- ------- --- ---
磁碟 0 連線 931 GB 0 B
磁碟 1 連線 14 GB 14 GB

DISKPART> select disk 1
磁碟 1 是所選擇的磁碟。

DISKPART> clean
DiskPart 成功地清理了磁碟。

DISKPART> create partition primary
DiskPart 成功地建立了指定的磁碟分割。

DISKPART> select partition 1
磁碟分割 1 是所選擇的磁碟分割。

DISKPART> active
DiskPart 已標記目前的磁碟分割為使用中。

DISKPART> format FS=NTFS
100 % 已完成

2. 建立可開機隨身碟,此例在 F 槽 (WIN8.iso\boot\bootsect.exe)


bootsect.exe /nt60 F:


3. 複製 ISO 光碟資料至隨身碟


直接用 7zip 解壓縮 ISO 到隨身碟即可


收工!


2013年5月25日 星期六

一人公司方案 - 使用 Google App Engine 和 Google Apps for business

  + 


之前花錢買的 domain 快過期了,就手癢買了另一個 XD 接著就想著該怎樣善用,於是就想到跟 Google App Engine 結合,接著還想到 email hosting 的問題,又想到 Google App for business 的部份,雖然從 namecheap 購買時有送一年免費的 email hosting 服務,但還是太陽春了(總空間好像才10MB)。


設定筆記:



  • Namecheap


    • 將指定的 domain 指向 ghs.googlehosted.com. (CNAME)

    • User (Mail Server's Host Name Required)


      • 指定 Google Apps Email 後儲存,接著就會自動帶出以下 MX


        • ALT1.ASPMX.L.GOOGLE.COM.

        • ALT2.ASPMX.L.GOOGLE.COM.

        • ASPMX.L.GOOGLE.COM.

        • ASPMX2.GOOGLEMAIL.COM.

        • ASPMX3.GOOGLEMAIL.COM.




  • Google App Engines


    • 建立一個 yourapp 後,可以綁定 domain 後,未來即可用指定 domain 連回 yourapp.appspot.com


  • Google Apps for business


    • 先用免錢的,有一個使用者帳號,如 user@domain,並以此登入 Gmail 中,綁定 domain 過程中會須驗證 domain 是否為你擁有的

    • 每個使用者都可以在設定 30 個 nickname ,也就是可以新增 ceo@domain, cto@domain, cfo@domain 一樣寄到 user@domain 的功能,一人公司也就完成雛形了 XDDD



如此一來,就可以用 Google App Engines 來經營自家公司網站了!除了省去自己租機器營運,也有可以印名片的 Email address 啦,後端可還是用 Gmail 的唷!未來若有其他網站服務,就一樣用 Google App Engines 去建立,在設定好 domain 來指定一切就完美了 XD


2013年5月19日 星期日

如何吸引客戶買單?

Nexus S & Pi


最近 ARM-based devices 盛行,搞硬體的都很黑皮很期待未來,覺得電腦越做越小越省電,我自己也跳入類似的產業,拿著客製化的板子將某些服務做在上頭。而最近開始遲疑一些事情:把一些服務都植入後,那然後呢?客戶買單嗎?很妙的,台灣大多還是那種硬體思維,肯花錢買軟體的少,故商品實體化也造就了硬派的永遠壓著軟派的走向,反而 mobile app 才看到一丁點軟派的舞台!


前幾天在茶水間跟業務聊上幾句,他再思考到底怎樣客戶才願意買單,說真的我也不知道 XD 但卻讓我開始多思考這類事情。


那些賣硬體的為了跟市面上的產品區隔,不外乎是低價促銷,不外乎想要再自家硬體加上更多不一樣的軟體,好讓人覺得這台裝置便宜又大碗!但問題出現了...裝置的規劃本身就是在特定情境下使用的,已經先 cost down 一次了,接著額外的軟體要再加上去,則容易出現系統不穩。更別說寫軟體的總希望記憶體越大越好,執行效率才會更加;賣硬體的,總希望硬體資源越小越好,裝置成品才會更低。


這樣身為軟體開發者,就會漸漸有種奇妙的心聲?非得靠這裝置才能凸顯自己的價值嗎?或是,乾脆從事 mobile app + service 就好?反正智慧手機當道,你家賣的硬體也沒智慧手機強甚至普及,通路更是要自己打,舉凡 iOS App Store 還是 Android Google Play 等,都讓大夥很快接近你家的軟體啊,那這樣繼續搭配指定硬體賣的理由是?不覺得別人當主體,軟派努力老半天則是個配角嗎?囧rz


像 Pi 一樣的設備很多,如 Pandaboard、BeagleBoard 等,這些都十足讓工程師感到興奮,但一般使用者呢?似乎還有好長的一段路要走,除了教學跟自爽外,很難請別人用這裝置 Orz 或許,裝置存在的價值都只是為那個 special case 而已,用它開個 open office 如何?給它加上電池、無線網卡甚是螢幕鍵盤滑鼠,它仍只是個特殊裝置,可以思考哪些不用高速運算的東西可以移植過來,但肯定不是什麼都適合移植,它的品質終究不是台個人 PC 啊。


[OSX] 查詢無線網路連線速度品質 (802.11 a/b/g/n) @ Mac 10.8.3

網路工具程式


應用程式 -> 工具程式 -> 網路工具程式 或 $ open /Applications/Utilities/Network\ Utility.app


最近 DIR-300 常常無緣無故連不上 XD 查了網路文章應該是熱當的現象,看來改天再來學神人加個風散看看好了 XD


2013年5月16日 星期四

Android 開發筆記 - 使用 mDNS 偵測裝置與 TXT record 處理方式 @ Mac 10.8


From: http://jmdns.sourceforge.net/

常摸 Apple 裝置的工程師,對 mDNS 應該不陌生,現在就來把玩一下如何在 Android 透過 mDNS 偵測裝置,所幸的已經有好人弄好 jmdns library 啦,且用起來也非常方便。

筆記一下項目:
  • 在 Mac 10.8 環境下使用 dns-sd 來註冊裝置偵測資訊
    • $ dns-sd -R DeviceName ServiceType ServiceDomain ServicePort TXTRecords
  • 如何用 jmdns 處理 TXT record
    • 可在 public void serviceResolved(ServiceEvent arg0) 裡透過 byte [] txt = arg0.getInfo().getTextBytes(); 取得資訊
    • 每一組 key-value pair 前一個 byes 代表此組長度
裝置服務註冊範例:

$ killall dns-sd
No matching processes belonging to you were found
$ dns-sd -R device1 _changyytcp._tcp local 9900 k1=v1 k2=v2 k3=v3
Registering Service device1._changyytcp._tcp.local port 9900 TXT k1=v1 k2=v2 k3=v3
DATE: ---Wed 15 May 2013---
20:50:08.084 ...STARTING...
20:50:08.279 Got a reply for service device1._changyytcp._tcp.local.: Name now registered and active

代表有一個裝置名叫 device1,並宣告有 _changyytcp._tcp 型態的服務,在 local 的 domain 與 9900 port 服務,且帶有 k1=v1, k2=v2, k3=v3 三個 key-value pair 的 TXT record 資訊

處理 TXT Record 片段程式碼:

@Override
public void serviceResolved(ServiceEvent arg0) {
    // TODO Auto-generated method stub
    System.out.println("serviceResolve:"+arg0.getName());
    byte [] txt = arg0.getInfo().getTextBytes();

    if (txt.length > 0) {
        for( int i=0 ; i < txt.length ; ++i ) {
           int len = ((int) txt[i] & 0xff); // first byte is length of the "key=value"
           int begin_at = i+1;
           i += len;
           System.out.println("TXT KeyValuePair:["+new String( txt, begin_at, len )+"]");
        }
    }
}

程式輸出:

I/System.out(#): serviceResolve:device1
I/System.out(#): TXT KeyValuePair:[k1=v1]
I/System.out(#): TXT KeyValuePair:[k2=v2]
I/System.out(#): TXT KeyValuePair:[k3=v3]

註:別忘了模擬器不支援,需用實機測試,更多程式碼可參考 https://github.com/changyy/android-mdns

2013年5月14日 星期二

[Raspberry Pi] 安裝 Raspbian “wheezy” @ Mac 10.8.3

Raspberry Pi


這東西其實跟我半年來的工作有很高度的相關,但過了那麼久才團購買了一個裸板,團購價不用 1100 台幣 :D


不多說,簡介一下快速裝法:



  1. 從官網下載官方 OS - Raspbian “wheezy”

  2. 解壓縮 img 出來,並輸出到 SDCard

  3. 開機,初次設定

  4. 重開機,享受 Window 介面


Raspberry Pi


此例在 Mac 10.8.3 操作與一張 8GB SDCard,可以留意最後的分割大小:


$ sudo diskutil list

/dev/disk1
  #: TYPE NAME SIZE IDENTIFIER
  0: FDisk_partition_scheme *7.7 GB disk1
  1: DOS_FAT_32 8GB 7.7 GB disk1s1


$ sudo diskutil unmountDisk /dev/disk1


$ sudo diskutil unmountDisk /dev/disk1s1
Unmount of all volumes on disk1 was successful


$ unzip ~/Downloads/2013-02-09-wheezy-raspbian.zip


$ ls -lh 2013-02-09-wheezy-raspbian.img
-rw-r--r--@ 1 changyy staff 1.8G 2 9 11:44 2013-02-09-wheezy-raspbian.img


$ sudo time dd bs=1m if=2013-02-09-wheezy-raspbian.img of=/dev/rdisk1
1850+0 records in
1850+0 records out
1939865600 bytes transferred in 381.258572 secs (5088058 bytes/sec)
381.28 real 0.00 user 1.14 sys


$ sync


$ sudo diskutil list

/dev/disk1
#: TYPE NAME SIZE IDENTIFIER
  0: FDisk_partition_scheme *7.7 GB disk1
  1: Windows_FAT_32 58.7 MB disk1s1
  2: Linux 1.9 GB disk1s2
$ sudo diskutil unmountDisk /dev/disk1


初始化後的分配狀況:


$ sudo diskutil list

/dev/disk1
#: TYPE NAME SIZE IDENTIFIER
  0: FDisk_partition_scheme *7.7 GB disk1
  1: Windows_FAT_32 58.7 MB disk1s1
  2: Linux 1.9 GB disk1s2


初玩 Raspberry Pi - 安裝 Raspbian “wheezy” @ Mac 10.8.3

Raspberry Pi


這東西其實跟我半年來的工作有很高度的相關,但過了那麼久才團購買了一個裸板,團購價不用 1100 台幣 :D


不多說,簡介一下快速裝法:



  1. 從官網下載官方 OS - Raspbian “wheezy”

  2. 解壓縮 img 出來,並輸出到 SDCard

  3. 開機,初次設定

  4. 重開機,享受 Window 介面


Raspberry Pi


此例在 Mac 10.8.3 操作與一張 8GB SDCard,可以留意最後的分割大小:


$ sudo diskutil list

/dev/disk1
  #: TYPE NAME SIZE IDENTIFIER
  0: FDisk_partition_scheme *7.7 GB disk1
  1: DOS_FAT_32 8GB 7.7 GB disk1s1


$ sudo diskutil unmountDisk /dev/disk1


$ sudo diskutil unmountDisk /dev/disk1s1
Unmount of all volumes on disk1 was successful


$ unzip ~/Downloads/2013-02-09-wheezy-raspbian.zip


$ ls -lh 2013-02-09-wheezy-raspbian.img
-rw-r--r--@ 1 changyy staff 1.8G 2 9 11:44 2013-02-09-wheezy-raspbian.img


$ sudo time dd bs=1m if=2013-02-09-wheezy-raspbian.img of=/dev/rdisk1
1850+0 records in
1850+0 records out
1939865600 bytes transferred in 381.258572 secs (5088058 bytes/sec)
381.28 real 0.00 user 1.14 sys


$ sync


$ sudo diskutil list

/dev/disk1
#: TYPE NAME SIZE IDENTIFIER
  0: FDisk_partition_scheme *7.7 GB disk1
  1: Windows_FAT_32 58.7 MB disk1s1
  2: Linux 1.9 GB disk1s2
$ sudo diskutil unmountDisk /dev/disk1


初始化後的分配狀況:


$ sudo diskutil list

/dev/disk1
#: TYPE NAME SIZE IDENTIFIER
  0: FDisk_partition_scheme *7.7 GB disk1
  1: Windows_FAT_32 58.7 MB disk1s1
  2: Linux 1.9 GB disk1s2


2013年5月4日 星期六

其實什麼都沒有


投入在新案子的時間已有四個月了,卻還滿常有空蕩蕩的回音,好像做了不少事,但回想起來又什麼都沒有。比較深刻的體驗倒是人事管理,在嘗試的過程中,才更明瞭彼此角色定位。角色啊,真的是非常關鍵的,且是最原始的起點,無論後來怎樣走都仍要記著這點,更讓我想起來去年長輩一直在慫恿我去創業的理由 XD 畢竟,人與人的互動,總會有看不慣的走法跟方向,那是一種目的地一致,但走法不一樣,真的沒有對錯,只有順不順眼的觀點而已。


最近發現周邊朋友,累積三五年經驗後,漸漸有強勢的觀點、試著說服別人的氣勢,如何在互動過程中不動肝火,真的越來越需要智慧了 cc 不然就真的只能選擇離開環境,尋找走向相似的朋友。(只是選擇離開環境,不代表問題解決,有一定的機會,未來又再次相逢)


2013年5月3日 星期五

[Linux] Dropbear with PAM & nonexistent user problem

最近把玩 Dropbear 當 SSH Server 方案,碰到想要用 PAM 的情境,試玩結果尚可,但是會碰到白名單的問題。


簡單的說,原先 PAM 就只處理帳號認證而已,應用服務常常會需要有白名單才能進行,例如 Mail Server 收信要白名單,非白名單的信件會丟掉,而在 Dropbear SSHD 方案上,則需要白名單來決定使用者登入後的 HOME、SHELL、UID、GID 等資訊,所以就手養改一下 dropbear ,讓它跑在 server mode 下,可以用一個參數來處理 nonexistent user,如 -c "root" 為例,代表使用 PAM 登入過程中,若該帳號不存在,則改用 root 權限代替。


完整的 patch 擺在 dropbear-2013.58-pam-nonexistent-user-handle.patch ,也順手丟去 maillist 問看看作者意思,除了變數名稱亂取外,程式邏輯應該算還ok吧? :P 看看會不會收到回音囉。