2014年12月16日 星期二

解決透過Putty連線Amazon EC2卻發生"Server refused our key"的問題

最近為了想玩Web Framework,又想省掉一筆買Server的錢,就先找上Amazon EC2,因為它有免費一年的好康。

網路上的相關文章很多,以下是我找到並根據步驟一步一步操作的。


正當一切都很正常,準備要用Putty連上Server的時候,卻卡關了。

正當我百思不得其解的時候,突然發現直接用ssh command,一切都正常可以連線。看來問題就出現在Key了。

原來是在使用PuttyGen,想要將*.pem轉成*.ppk的時候,預設的"Number of bits in a generated key"值為2048,可是Amazon instance key-pair卻是1024

只需要將這裡改為1024,然後再重新將*.pem轉成*.ppk,再試一下,就可以正常連線啦。

對了,另外一個值得注意的,登入的帳號名稱跟你選的instance所安裝的AMI有關喔。

  • 如果你選的是Amazon Linux AMI,請輸入ec2-user
  • 如果你選的是RHEL5 AMI,請輸入root或是ec2-user
  • 如果你選的是Ubuntu AMI,請輸入ubuntu
  • 如果你選的是Fedora AMI,請輸入fedora或是ec2-user
  • 如果你選的是SUSE Linux,請輸入root
  • 如果ec2-user和root都無效,就得連絡AMI provider了


2014年12月8日 星期一

解決"Can't start Eclipse - Java was started but returned exit code=13"

今天要打開Eclipse卻突然出現以下的錯誤訊息,還真是讓人傻眼。

仔細看,卻發現所用到的Java位置在C:\ProgramData\Oracle\Java\javapath\javaw.exe。此時在Windows commander輸入"java -version"則發現Java的版本是1.8版。

不過Android並不支援Java 1.8阿

找了一下,原來是因為PATH被加了C:\ProgramData\Oracle\Java\javapath\,把這串移除掉以後,就沒問題啦。

此時再試著在Windows Commander輸入"java -version",則會顯示1.7喔,這就正確了。



2014年11月25日 星期二

解決"Conversion to dalvik format failed with error 1"

[Coding][Android] 如何Release Android APK這篇文章的最後其實就有提到,有時候Release APK的時候就會跳出"Conversion to dalvik format failed with error 1"的錯誤訊息。

之前每次都是透過Projects -> Clean All,然後再做一次就可以解決了,可惜爛招用不了太久,還是遇到失敗的一天。以下就來說明該怎麼正確的解決這個問題吧。


概念其實很簡單,就是將Library project獨立放在自己的folder當中,不要放入主要Project的目錄下,像是以下的放置方式,就是有可能會有問題的方式

修改方式很簡單,把所要用到的Library project,移出主要Project的目錄,改為放置到自己的目錄下,如下:

之後再把這些Library project重新Import進來,問題就解決了。

當然網路上還有很多方法,我自己試過有用的就只有Clean build和上面這個方法,大家就當做多一個選擇吧。

2014年11月21日 星期五

[科技新知][Android] Android 5.0 (Lollipop) 帶來的新功能以及如何調整

即使在今年的Google I/O中,就已經引進了Material Design,也有很多App開始進行一些調整,也感受到改變;但是在升級到5.0以後,那整体的視覺改變,還是帶來不小的衝擊。以下就來說說我個人看到最驚訝的功能吧!

1. 一觸即通

一直以來Google的backup、restore功能都是被大家詬病的,雖然Android 5.0還是沒有徹底改善這個問題,不過倒是引進了一個新功能。只要透過NFC,就可以將現有手機中所有的資料,全部都直接還原到新的手機上。

這對於要換手機的人來說,還真是有夠方便。直接手機背對背擁抱,就可以搞定了。可惜,這對於升級手機的人來說,就沒多大用處了。不過,還是算是一個不錯的想法。

2. 還原應用程式和資料

雖然無法用上一觸即通,Google還有個法寶,就是只要你是透過Google Play所下載、安裝的App,都可以直接幫你重新還原安裝完畢。

其實也沒多神奇,就是利用Google Play最後一次記住你手機上已經安裝了哪些App的資訊,將其還原而已。App裡面的資料還是無法還原 (唉...我的遊戲紀錄阿...)。

3. 新的Notification頁面

這個算是蠻大的改動,也有很多小技巧可以用喔。
如果單純只有一隻手指往下拉,就可以看到所有的Notification

此時,可以再下拉一次,就可以出現快捷控制台。除了UI Layout換了以外,這次新增了閃光燈的開關,等於就不用再安裝手電筒程式啦。

最炫的是,如果你有仔細注意看到,右上角除了以外的設定的圖示以外,還多新增了一個人像圖示。點下去,就會進入切換使用者的介面喔。這代表允許多人共用手機,使用上可以專門新增一個給小朋友使用的帳戶,只顯示一些兒童相關的APK即可,個人認為還蠻實用的。

4. 音量控制介面

在音量模式控制上這版本做了蠻大的改變。以前長按電源鍵,除了可以關機、切換到飛航模式,還可以快速切換靜音(Silient)、震動 (Vibrate)和正常模式。

這版本中,長按電源鍵就只剩下關機的功能。
只剩下關機功能
切換飛航模式已經移到快捷控制台中;那音量模式呢?

在音量模式上,Android 5.0則改由不同的呈現方式,按下音量鍵就可以知道啦!

可以發現,有別於以往的音量,現在還多了"無"、"優先"和"全部"。

所謂的"無"、"優先"和"全部"指的是現在所設定的音量是要什麼時候才可以發出干擾。如果選的是"無",那麼表現就會和以前的靜音(Silent)模式一樣,完全不會有聲音和震動

如果選擇的是"全部",則是指全部的提示都會套用一樣的方式 (聲音音量)喔。舉凡:來電、簡訊通知、新訊息或者是其他的提示訊息...等等。如果設定音量最小的話,那就是所有的提示都會變成震動,如果有聲音的話,那所有的提示都會以所設定的音量大小呈現。

所以如果選擇"全部",並將音量調整到最小的話,那就是跟以前的震動模式一樣啦

在說明優先之前,先停下來思考一下。如果你曾仔細想過,以前的音量模式雖然簡單設定,但是卻給了所有的App提示都是一致的優先權,指定設定好模式以後,所有的提示都是用一樣的方式提醒使用者。然而,對某些人而言,也許會希望來電的提示和Facebook的交友通知,所收到的提醒是不同的。

而"優先"就是在這個需求下產生,當選擇"優先"時,就只有被列為優先干擾,可以按照音量的設定發出提醒。

那怎麼設定哪些是優先干擾呢? 只需要按下右邊、中間的設定圖示,就可以進入設定的頁面啦。按照下圖的設定,則可以發現只有活動和提醒可以按照音量設定發出聲音(或震動),其他通話和訊息都是靜音的。

5. 新的Lock Screen頁面
在Android 5.0的Lock Screen也算是改變挺大的,包括:

  • 提供方便的快速撥號、拍照、快捷控制台進入操作
    只要手指往右、左、下、上,就分別可以進入撥號介面(右)、拍照(左)、快捷控制台(下)和解鎖(上)
  • 直接顯示Notification
  • 顯示剩餘多久可以充飽電池
這些改動可以說是把整個螢幕都充分利用了;尤其是新增加上下左右的快速操作,可以更快打電話、拍照,都是很棒的改動。

倒是顯示Notification就真的是見仁見智了,畢竟這可是涉及個人隱私,好險這功能還是可以關掉的,只需要進入設定 > 音效通知 > 將裝置鎖定時的設定由原本的"顯示所有通知內容"改為"完全不顯示通知"。

  

以上,大致是目前為止看到的改變。UI操作雖然變快了,但是整體上還需要點時間習慣。分享給大家參考參考囉。

解決升級Android 5.0 (Lollipop)遇到的問題 (For Nexus5)

每當看到有人手機收到Lollipop的OTA通知,心中總是羨慕不知道何時可以輪到自己。就在今天早上,願望終於實現了,終於收到了OTA,卻是一連串災難的開始。

OTA下載的檔案在哪裡?


首先,遇到的第一個問題就是TWRP;是的,在上一篇[科技新知][Android] 如何Root Nexus5 (以版本號碼: KTU84P為例)中,就已經把手機的Recovery換成TWRP。

當按下重新啟動並安裝之後,重開機看到TWRP的時候就傻了,因為得要自己選擇要安裝的zip檔案。查了很久,才終於知道OTA下載的檔案都會放在/cache目錄下。當然,你得要Root才看的到。

選了該檔案安裝以為就可以順利了嗎? No no...非經一番寒徹骨、哪得梅花撲鼻香。就讓我們繼續看下去...

TWRP error flashing zip file....


關於這個問題,網路上說是因為SuperSU造成的問題,也提供解法,不過我測試倒是一直失敗。山不轉路轉,就改成手動安裝吧。


注意:按照以下方式會把手機上的資料都刪掉,操作前,請一定要先備份重要資料。

手動安裝Lollipop


首先,請先到這裡下載安裝包,MD5 checksum為761667f1ddaf4e38d4792136df4ab927,點選Link就開始下載囉,檔案名稱為hammerhead-lrx21o-factory-01315e08.tgz

下載完成後,請按照以下步驟

  1. 將檔案解壓縮至adb以及fastboot的相同目錄,預設應該是{Android_SKO}/platform-tools
  2. 手機開機到bootloader (先關機後,同時按Volume - (減少)和電源鍵)
  3. double-click flash_all.bat即可

當然世界沒那麼美好,此時有可能會遇到以下的錯誤訊息
target reported max download size of 1073741824 bytes
archive does not contain 'boot.sig'
archive does not contain 'recovery.sig'
failed to allocate 1005154516 bytes
error: update package missing system.img


解決"failed to allocate 1005154516 bytes"


還好,天無絕人之路,請將目錄下的image-hammerhead-lrx21o.zip,解壓縮在相同目錄,裡面應該包括:android-info.txt、boot.img、cache.img、recovery.img、userdata.img和system.img。

之後,修改flash_all.bat,原始內容如下:
@ECHO OFF
:: Copyright 2012 The Android Open Source Project
::
:: Licensed under the Apache License, Version 2.0 (the "License");
:: you may not use this file except in compliance with the License.
:: You may obtain a copy of the License at
::
::      http://www.apache.org/licenses/LICENSE-2.0
::
:: Unless required by applicable law or agreed to in writing, software
:: distributed under the License is distributed on an "AS IS" BASIS,
:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
:: See the License for the specific language governing permissions and
:: limitations under the License.

PATH=%PATH%;"%SYSTEMROOT%\System32"
fastboot flash bootloader bootloader-hammerhead-hhz12d.img
fastboot reboot-bootloader
ping -n 5 127.0.0.1 >nul
fastboot flash radio radio-hammerhead-m8974a-2.0.50.2.21.img
fastboot reboot-bootloader
ping -n 5 127.0.0.1 >nul
fastboot -w update image-hammerhead-lrx21o.zip

echo Press any key to exit...
pause >nul
exit

修改如下:
@ECHO OFF
:: Copyright 2012 The Android Open Source Project
::
:: Licensed under the Apache License, Version 2.0 (the "License");
:: you may not use this file except in compliance with the License.
:: You may obtain a copy of the License at
::
::      http://www.apache.org/licenses/LICENSE-2.0
::
:: Unless required by applicable law or agreed to in writing, software
:: distributed under the License is distributed on an "AS IS" BASIS,
:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
:: See the License for the specific language governing permissions and
:: limitations under the License.

PATH=%PATH%;"%SYSTEMROOT%\System32"
fastboot flash bootloader bootloader-hammerhead-hhz12d.img
fastboot reboot-bootloader
ping -n 5 127.0.0.1 >nul
fastboot flash radio radio-hammerhead-m8974a-2.0.50.2.21.img
fastboot reboot-bootloader
ping -n 5 127.0.0.1 >nul
fastboot flash system system.img
fastboot reboot-bootloader
ping -n 5 127.0.0.1 >nul
fastboot flash userdata userdata.img
fastboot flash recovery recovery.img
fastboot flash boot boot.img
fastboot erase cache
fastboot flash cache cache.img
fastboot reboot 

echo Press any key to exit...
pause >nul
exit

最後,再次雙擊flash_all.bat,應該就搞定啦。接著就可以好好享用棒棒糖啦。

2014年11月20日 星期四

解決git status無法顯示有多少commit尚未push的問題

如果你有注意,可以發現有時候git status會回給你蠻有用的資訊,像是:""Your branch is ahead of 'origin/master' by 1 commit";有些則沒有。

要解決這個問題可以參考以下的方式:

以下是可以正常顯示額外資訊的git repository中,其.git/config當中的某一段
[remote "origin"]
	url = https://github.com/RyanChouTw/PicStream.git
	fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
	remote = origin
	merge = refs/heads/master

以下則是相同git repository,但是不會顯示額外資訊
[remote "origin"]
	url = https://github.com/RyanChouTw/PicStream.git
	fetch = +refs/heads/*:refs/remotes/origin/*

可以發現,有問題的版本就是少了一段,你可以自己手動修改.git/config,也可以透過以下的命令解決喔。
$ git config branch.master.remote origin
$ git config branch.master.merge refs/heads/master

以上提供參考。

[科技新知] 破解Hinet小烏龜 (I-0040W)的方法

最近把家中Hinet的網路升速到100MB/40MB,而原本使用的數據機也得跟著升級到光纖版本FTTH,就是這次要介紹的I-0040W。

這台不說不知道,除了可以當Hinet數據機以外,還可以當作Wireless AP(無線基地台),它本身就具備自動撥號PPPoE、DHCP server的功能以及WiFi AP的功能。

因此,只要打開這些功能就可以讓家中立刻少一台AP喔,甚至可以讓原本使用的AP變身為增加WiFi覆蓋率的好方案 (請參考: [疑難雜症] 如何讓Wireless AP變身為單純的Wireless Hub (無線集線器),以TL-WR740N和DIR-636L為例)。

那麼要怎麼打開這些功能呢?

首先,先接一條網路線連接PC和Hinet數據機,然後在PC上的瀏覽器網址列輸入:http://192.168.1.1 (Hinet數據機預設IP)。

此時就可以看到畫面出現輸入帳號密碼的地方。預設沒有修改的話,帳號是:  cht
密碼則依照北中南地區不同有三種可能:
北部可能是 chtngpon
中部可能是 chtcgpon
南部可能是 chtsgpon


輸入帳號密碼登入後,畫面如下


=====寫在前頭=====
經過實驗,這台數據機的功能還不是很多,尤其NAT之類的功能都沒有,如果有NAT的需求就不合使用了;另外,穩定性和效能都不是很好,開啟太多功能的結果可能造成數據機容易當機,大家自己謹慎為之。
=====寫在前頭=====

1. 開啟自動撥接

首先點選左側的[Advanced Setup],然後再選擇[WAN Connections],進入以下畫面

此時在點選Wan1 PPPoE 模式 的 [EDIT],就可以進入

輸入Hinet的帳號密碼後,按下下方的[SAVE]

返回上一層之後,再點[Reconnect]就好了


2. 啟動DHCP Server (動態IP配發)

點選左側的[Advanced Setup] >> [LAN Settings],將DHCP Server 設成 Enable

IP動態分配區間就看個人了:
例如: 192.168.1.100~200
DHCP Starting IP Address : 192.168.1.100
DHCP Ending IP Address : 192.168.1.200

3. 啟動Wireless AP (無線基地台)

點選左側[Wi-Fi Setup] >> [Wi-Fi Settings],進入後將[Wi-Fi Enable] 勾選起來,就可以啟動了。其他設定就看個人設定,可以參考下圖的設定,最後頁面往下捲,點下 [Apply Changes]儲存變更設定!


同在Wi-Fi Setup下,還有個[Wi-Fi Security]則是選擇安全連線的模式,請記得一定要更改密碼,否則就等於開放隔壁鄰居侵入你家電腦的機會喔。

以上,就是破解I-0040W的方法,提供大家參考。

不過實際測試過以後,其實沒那麼好用。像是基本的NAT也不支援,除非你只是單純要一台可以DHCP的Wi-Fi AP,那就可以省下來一筆小錢了。