2013年3月21日 星期四

智慧型手機 THL-S5 Root

長江 THL-S5 Root 心得紀錄一下

在大陸應該是叫 "THL-W1 雙核",內部SD Card (內部儲存) 只有 2GB,想要安裝導航地圖都不夠,只好冒險 Root,原廠不保固喔!

有了 Root 權限,就能將擴充 SD Card 與內部互換,達到 32GB,沒辦法,誰叫這些大型 APP 都不認 SDCard2 呢!

先用 "91助手" 取得與手機的連線後(藉助它的驅動程式,可移除應用),關閉 "91助手",不然會干擾取得 Root 的 Script。


胡亂測試一些針對 W1 的在線 Root 都沒用
http://www.thl.cc/forum.php?mod=viewthread&tid=185

仔細觀察發現是權限問題,Shell 無權移走 tmp,剛開始以為是手機防毒軟體造成,後來證實不是...
http://android.stackexchange.com/questions/39045/how-do-i-get-permission-to-create-this-file-in-an-android-shell

後來找到這篇,不用移走 tmp,而是利用一個假的還原動作駭入的,成功!
http://www.thl.cc/forum.php?mod=viewthread&tid=18784&reltid=4774&pre_thread_id=0&pre_pos=1&ext=CB
過程中,手機會出現 "還原資料" 的畫面,只需按"還原",不用輸入密碼。
還有,電腦防火牆干預之下,連線容易中斷,需要Task manager砍掉 adb.exe 再重來。

這個過程很有趣,這篇分析得很棒:
http://changyy.pixnet.net/blog/post/29026097-%5Bandroid%5D-root-%E5%8E%9F%E7%90%86%E8%88%87%E6%89%8B%E5%8B%95-root-%E8%A9%B3%E7%B4%B0%E9%81%8E%E7%A8%8B-@-nexus-one

Root 過程都靠這個 adb.exe ( Android Debug Bridge ),有篇解說:
http://vantienhuang.blogspot.tw/2011/06/android-sdk-adbexe.html

最後要把擴充 SD 改為內部,以解決導航地圖的空間需求:
Root 成功之後,修改 /system/ect/vold.fstab,將兩個 SDCard 互換,可參考...
http://bbs.ydss.cn/thread-133640-1-1.html

不過,這樣一來,插拔 SD 卡就要小心,因為沒有 "卸載" 這個功能可用!!

2012年2月25日 星期六

接案風險之一

個人覺得接案有個風險,那就是模糊的規格。
像是某個條件成立時,就發通知信的功能,看似清楚,其實還很多模糊空間:
  • 萬一條件不成立有別的作法?
  • 通知信的標題格式?
  • 通知信的內容格式?
  • 發信的間隔時間?
  • 只發給一個人?
真是沒完沒了! 也許根本沒有完美的詳細規格。

事實上,在簽約前大家都只是講重點而已,誰也沒料到有這麼多細節,就算有想到,一一提出來似乎會破壞溝通氣氛,陷入吹毛求疵的技術細節去了!

可是一旦收了訂金,所有增加的細節變成時間的成本, 在客戶那邊無法加價,頂多延長交期,真是越做越心酸啊~

最怕的是那種越測試越激發創意的客戶,那麼驗收也就遙遙無期了。
我遇過預計三個月寫完,結果十個月也難結案的狀況。
更早期還遇過,預計四個月,結果一年下來也都驗收不過。
這些"慘案"到最後都是雙輸。

客戶的驗收標準似乎是一點一滴地在改變,感覺不出有大改,一次可能三十分鐘內可改完,但是我這邊走走停停的,回憶舊程式與新舊程式除錯測試將花去五倍的時間,然後等待客戶再驗收的時間,已經是遠大於三十分鐘。
累積幾次的小修改,其實已經等於是大改的時間成本,可惜發現時,也只能摸著鼻子苦幹,祈禱這個"慘案"能早日結束。

如何在簽約前預知,即將要陪客戶"練功"呢 ?
如果知道他要練功,可能轉成"計時制"嗎 ? (變成員工給他操也比較划算)

我想大概都很難吧。
目前只能消極的提高簽約金比例,然後祈禱了!

P.S. 我還有個不得已的方法,那就是累積修改點,再一次全改,以減少轉換的時間成本。只是客戶那邊就要安撫一下,請他再多耐心測試了! 這樣累積也比較有利於談判,像是延長工期 (最好能加價)

2011年11月11日 星期五

Flash 使用 Google Spreadsheet Form 在 AS2 出問題

Flash 使用 Google Spreadsheet Form
試了兩天,AS2 還是不行,前半段是遇到網頁空間不支援 curl 模組,傳回的訊息是傳送 OK,害我以為是 Google Apps 權限問題。
後半段開始與原作者網頁的問題訊息相同,把AS2程式裡面的 php 亂改,訊息也沒變....XD

想放棄 AS2改用AS3,但是 AS3 的程式無法直接拿來AS2的Project用,無奈只好放棄。

另外值得一提的是:其實這個 Flash 並不需要執行 Local 的 php,作者也是用另一網頁空間的。

參考:
http://bp.51donate.com/2011/04/google-spreadsheet1.html
http://blog.ouseful.info/2009/05/18/using-google-spreadsheets-as-a-databace-with-the-google-visualisation-api-query-language/
http://www.open-electronics.org/how-send-data-from-arduino-to-google-docs-spreadsheet/

2011年11月9日 星期三

變更公司名稱 SEO 問題

客戶換公司名,網址跟著換,因為 SEO 關係,只得慢慢轉換...現在內含關鍵字是半新半舊。
虛擬主機那邊是用"網站替身"(網站別名)來設定新的網域名。
結果登記 google site map 出問題,狀態顯示黃三角驚嘆號圖示,大神認為那是轉址,不列入索引。

現在只好反過來,舊名字是替身,驚嘆號果然不見了!
看來大神認為替身(別名)跟轉址是一樣的 XD

對於Google 來說,還是得按照他的規則,就網域用 301 轉到新網域,新舊網域都是指向同一空間的話,那就需要在起始頁作一下程式判斷舊網域,然後跳到新網域,可參考...

http://www.yes-seo.tw/2011/04/html-301-redirect/
http://blog.miniasp.com/post/2008/02/10/How-Do-I-Get-Paths-and-URL-fragments-from-the-HttpRequest-object.aspx

遷移網站

    protected void Page_Load(object sender, EventArgs e)
    {
        if (Request.Url.Host == "www.舊網域")
        {
            Response.Status = "301 Moved Permanently";
            Response.AddHeader("Location", "http://www.新網域");
        }
    }

題外話:
無意間,剛剛發現虛擬主機有啟用 DNS,這樣不就跟網域名稱設定"代管"模式相沖了嗎?
竟然相安無事一年多......可能是兩者都者向相同IP位址的關係。

2011年10月17日 星期一

XP 加速

  • 無意間發現 jqs.exe 會定時存取磁碟,週期大約是15秒。原來是 Java 的快速啟動...可參考:關閉自私的 Java Quick Starter。 Open office 也有類似的程式,不過他不是偷偷進行的,比較容易發現。

2011年9月26日 星期一

學習 Flash,官網文件混亂

找說明文件當然是以 中文 pdf 為佳,結果官網太複雜,新舊不一,pdf 檔不多見。
只好記一下線上文件位置...期望官網別再改位置了!!

說明 ActionScript 2.0 和 3.0 的不同

ActionScript 2.0 語言參考增補內容

程序迁移到Adobe ActionScript 3的重要概念

2011年9月25日 星期日

在Blogger 使用 SyntaxHighlighter 3.0

測試一下...
SyntaxHighlighter.autoloader(
'applescript http://alexgorbatchev.com/pub/sh/current/scripts/shBrushAppleScript.js',
'actionscript3 as3 http://alexgorbatchev.com/pub/sh/current/scripts/shBrushAS3.js',
'bash shell http://alexgorbatchev.com/pub/sh/current/scripts/shBrushBash.js',
'coldfusion cf http://alexgorbatchev.com/pub/sh/current/scripts/shBrushColdFusion.js',
'cpp c http://alexgorbatchev.com/pub/sh/current/scripts/shBrushCpp.js',
'c# c-sharp csharp http://alexgorbatchev.com/pub/sh/current/scripts/shBrushCSharp.js',
'css http://alexgorbatchev.com/pub/sh/current/scripts/shBrushCss.js',
'delphi pascal http://alexgorbatchev.com/pub/sh/current/scripts/shBrushDelphi.js',
'diff patch pas http://alexgorbatchev.com/pub/sh/current/scripts/shBrushDiff.js',
'erl erlang http://alexgorbatchev.com/pub/sh/current/scripts/shBrushErlang.js',
'groovy http://alexgorbatchev.com/pub/sh/current/scripts/shBrushGroovy.js',
'java http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJava.js',
'jfx javafx http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJavaFX.js',
'js jscript javascript http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js',
'perl pl http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPerl.js',
'php http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPhp.js',
'text plain http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPlain.js',
'py python http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPython.js',
'ruby rails ror rb http://alexgorbatchev.com/pub/sh/current/scripts/shBrushRuby.js',
'sass scss http://alexgorbatchev.com/pub/sh/current/scripts/shBrushSass.js',
'scala http://alexgorbatchev.com/pub/sh/current/scripts/shBrushScala.js',
'sql http://alexgorbatchev.com/pub/sh/current/scripts/shBrushSql.js',
'vb vbnet http://alexgorbatchev.com/pub/sh/current/scripts/shBrushVb.js',
'xml xhtml xslt html http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js'
);
SyntaxHighlighter.config.bloggerMode = true;
SyntaxHighlighter.all()


參考來自:
http://novathinking.blogspot.com/2011/04/blogger-syntaxhighlighter-30_471.html
可以選用的著色語法:
http://alexgorbatchev.com/SyntaxHighlighter/manual/brushes/