文章

目前顯示的是 2014的文章

html5 之 viewport 與 X-UA-Compatible

自從接觸 bootstrap 以來,一直對 viewport 與 X-UA-Compatible 這兩個 meta 設定不是很清楚,找了兩篇文章,終於搞清楚囉。

Viewport標籤優化 – 響應式網頁設計

【HTML教學】X-UA-Compatible設置IE兼容模式

Angular Datetime Picker

Home Page and Demo

最近需要用到日期時間的挑選器,試了一下 HTML5 的 input type="datetime",效果不滿意,找到這個 for angularjs 的 directive,還算可以接受啦,使用上也不會太複雜....

1. 下載 moment.js,多國語系應該是靠它啦,我是下載 moment+locales 的 min 版本

官網

2. 載入 css 與 js
<link href="libs/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<link href="libs/angular-bootstrap-datetimepicker/css/datetimepicker.css" rel="stylesheet">

<script src="libs/angular-bootstrap-datetimepicker/js/moment-with-locales.min.js"></script>
<script src="libs/angular-bootstrap-datetimepicker/js/datetimepicker.js"></script>
3. angular.module DI 加入 ui.bootstrap.datetimepicker

4. view 加入 directive

細節可以參考 github

ubuntu 14.10 安裝 ionic

1. 安裝java sdk
sudo add-apt-repository ppa:webupd8team/java sudo apt-get update sudo apt-get install oracle-java8-installer
確認版本
java -version
 2. 安裝 Apache Ant

http://ant.apache.org/bindownload.cgi

下載後解壓縮至家目錄,原資料夾名稱太長,所以更名為 apache-ant

3. 安裝 Android SDK

http://developer.android.com/sdk/index.html

下載後解壓縮至家目錄,原資料夾名稱太長,所以更名為 adt-bundle-linux

4. 設定 PATH

vim .profile ,在最後一行:
ANDROID_HOME="$HOME/adt-bundle-linux/sdk" PATH="$HOME/apache-ant/bin:$ANDROID_HOME/platform-tools:$ANDROID_HOME/tools:$PATH"
存檔後執行:
source .profile
5. 安裝nodejs

原套件庫中的版本較舊,改從 PPA 安裝
sudo add-apt-repository ppa:chris-lea/node.js sudo apt-get update sudo apt-get install nodejs
6. 安裝 cordova
sudo npm install -g cordova
如果有問題,執行:
sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0
7. 安裝 ionic
sudo npm install -g ionic
8. 執行 eclipse,開啟 Android SDK Manager,安裝 Android 4.4.2(API 19)(ionic 預設採用)

如果執行 eclipse 時遇到 libstdc++.so.6 cannot open shared object file 的問題,試著執行:
sudo apt-get install lib32stdc++6 lib32z1 lib32z1-…

ionic + laravel 實作 android gcm 推播

圖片
這次實作 android 部份使用 ionic + cordova + ngCordova,gcm server 部份使用 laravel 4.2 + MySQL,話說這還是我第一次使用 ionic 呢........
ionic的部份:
新增一個空白專案
ionic start gcm-client blank
cd gcm-client
ionic platform add android
安裝 Push Notification Plugin for iOS and Android
cordova plugin add https://github.com/phonegap-build/PushPlugin.git
下載 ngCordova ,解壓縮後將 ng-cordova.js 或 ng-cordova.min.js 放到 www/js/ 下,並在 www/index.html 中引入(cordova.js 之前)
<script src="js/ng-cordova.min.js"></script>
<script src="cordova.js"></script>

hybridauth in laravel:Facebook與Google篇

圖片
前一篇新北市NTPCOpenID provider是額外新增的,Facebook與Google之provider已內建在hybridauth中,只需啟用並填入申請到之 app id 和 secret 即可,連至Facebook與Google認證之URL query string中provider改為facebook與google(例如:http://your_site_url/login/social?provider=facebook或http://your_site_url/login/social?provider=google)

hybridauth in laravel:新北市OpenID篇

hybridauth支援許多第三方帳號,如很多人用的Google、Facebook,以及各縣市使用的OpenID,這篇文章示範如何整合新北市的OpenID當作帳號來源。
Demo:
http://oyanix.com/opensource/hybridauth/social_hub/login.php
環境:

composer
Laravel 4.2
hybridauth 2.3.0-dev
laravel專案名稱為hybridauth-test,並在web server建立hybridauth-test連結到hybridauth-test/public

開工啦!

win7 下建立符號連結

mklink /D C:\abc D:\source
建立 C:\abc 目錄指向 D:\source 目錄

參考資料:
http://www.dotblogs.com.tw/chhuang/archive/2012/09/10/74700.aspx

ui-router查詢當前的state name

currentStateName = $state.$current.self.name;

currentStateName = $state.current.name;

$state.$current 物件包含的內容較詳細,除了 self 為當前 state 的物件之外,還包含了其上層 state 物件,應該是從根 state 開始,其中 $state.$current.path.length 為當前 state 之深度。console.log 輸出如下:
I {self: Object, resolve: Object, toString: function, parent: I, data: undefined…}
data: undefined
includes: Object
locals: I
navigable: I
ownParams: Array[0]
params: Array[0]
parent: I
path: Array[2]
resolve: Object
self: Object
toString: function (){return this.name}
url: n
views: Object
__proto__: Object


$state.current 物件只包含當前 state 物件而已,colsole.log 輸出如下:
Object {url: "/home", templateUrl: "partial/home.html", controller: "HomeCtrl", name: "index.home"}

CSS 讓圖片自動縮放

.container > img {
width: auto;
height : auto;
max-height: 100%;
max-width: 100%;
}
用一個 div ( class="container" ) 包住一個 img,可視需要加入min-width、min-height,除百分比也可以用像素。

參考資料:http://miko2.cglandmark.net/115/keep-image-correct-ratio-in-html-with-css/

另一篇的方法應該也可以:[CSS]讓圖片自動適應div大小

教具:找因數與質因數

http://192.168.1.200/~t301000/math/find-prime/

操作方式:輸入正整數,按下enter鍵,就醬!

教具:百數表-找100以內的質數

接下來要用到,本來要用 AMA 作,因為物件太多,所以改用 angular 寫,果然用程式控制方便多了.....

http://192.168.1.200/~t301000/math/100prime/

數字 1~100 點一下可以突顯該數字,再點一下(和前一下隔久一點)取消突顯,連點兩下可隱藏該數字,再連點兩下又可顯示該數字

利用 .desktop 檔開啟終端機執行指令後維持終端機開啟

有夥伴問我,如何在利用 .desktop 開啟終端機執行指令之後,使終端機維持開啟狀態,不會自動關閉?拜了一下 google 大神,找到一個方法。

http://askubuntu.com/questions/436891/create-a-desktop-file-that-opens-and-execute-a-command-in-a-terminal

方法說穿了其實很簡單,在要執行的指令之後再執行 $SHELL 即可。例如:
Exec=gnome-terminal -e "bash -c 'echo hello;$SHELL'"
雙引號內有兩個指令,一個是原來要執行的指令,利用分號( ; )串接 $SHELL 就搞定啦!!其實就是基本的 command line 連續執行指令的用法而已啦。

了解AngularJS的$apply()與$digest()

一直搞不清楚$apply()和$digest()這兩個東東,看完下面這篇文章總算有點頭緒了。

http://www.sitepoint.com/understanding-angulars-apply-digest/

Laravel 中新增額外的例外處理

Laravel 4.2

狀況:

利用 id 找 model 時,找不到時會拋出 ModelNotFoundException 的例外
$user = User::findOrFail($id);
想針對此例外做處理,如回應自訂錯誤訊息給前端顯示。

作法:

為了方便,新增 app/errors.php 存放想要新增的例外處理程序,可以免除在各個 controller 中 try catch 的麻煩。

加入下列程式碼,注意 name space 的路徑
/**
* 處理找不到 model 的例外
*/
App::error(function(Illuminate\Database\Eloquent\ModelNotFoundException $exception, $code)
{
Log::error($exception); // 記錄到 log 檔
$result = array('status' => 'error', 'msg' => 'model not found');
return Response::json($result);
});
在 app/start/global.php 中引入(我是加在檔尾)
// 引入額外的例外處理
require app_path().'/errors.php';
參考資料:
http://laravel.tw/docs/4.2/errors#handling-errors
http://stackoverflow.com/questions/23938061/using-modelnotfoundexception

phpmyadmin 在 win8 下無法查看資料表結構的暫時解法

在 win8 下(聽說 win7 也是),只要一查看資料表結構,就會出現「javascript 發生嚴重錯誤」的訊息,查了一下,找到一個暫時解決的方法。

修改檔案:

phpMyAdmin\libraries\Util.class.php

搜尋
return strftime($date, $timestamp);
應該只有找到一個,註解掉,改成
return date("Y-m-d: H:i:s" , $timestamp);
存檔收工!

看來又是編碼惹的禍,微軟啊,還要堅持 big5 嗎?

參考資料:
http://www.pigo.idv.tw/archives/2466

laravel 中重導向到外部網址

環境:Laravel 4.2

要重新導向到 laravel app 之外的外部網址

因為我是在 controller 中處理,因此在 controller 中加入 away 函數:
public function away($path, $status = 302, $headers = array())
{
return $this->createRedirect($path, $status, $headers);
}
在需要重導向時:
Redirect::away('external_url');
external_url 為欲導向前往的目標網址

參考資料:

http://stackoverflow.com/questions/18626492/laravel-4-redirect-to-a-given-url

解決 autofocus 失效的問題

最近發現在 view 中設定為 autofocus 的文字輸入框,常常只有在第一次時有作用,找了幾天終於找到解法,目前看起來是OK了

html:
<input type="text" autofocus="autofocus" />
angularjs controller:
angular.element(document).ready(function() {
$('input[autofocus]:visible:first').focus();
});
資料來源:
http://devblog.com/archives/195

$timeout 與 $interval

$timeout( functionA ,  5000 );
5秒後(5000 ms)執行 functionA,只執行一次
$interval( functionA , 5000 );
每5秒執行一次 functionA,持續執行
$interval( functionA , 5000 , 10 );
每5秒執行一次 functionA,執行 10 次

---------------------------------------------------------------------------

兩者均會回傳一個 promise,可用來取消
var promise = $timeout( functionA ,  5000 );
$timeout.cancel( promise );
取消與傳入之 promise 有關的工作,結果會回傳一個 boolean,如果該工作尚未被執行且成功取消,則回傳 true
var promise2 = $interval( functionA , 5000 );
$interval.cancel( promise2 );
取消與傳入之 promise2 有關的工作,結果會回傳一個 boolean,如果該工作成功取消,則回傳 true

---------------------------------------------------------------------

官方API文件:

$timeout

$interval

angular-modal-service

除了這一篇的dialog service之外,又一個似乎也蠻容易使用的 modal service,有空再來研究一下。

https://github.com/dwmkerr/angular-modal-service

建立private git server

Server 端(Ubuntu)操作:

1. 安裝 git-core
sudo apt-get install git-core
2. 新建 bare repository 目錄(假設位於 /home/user/ 下)
mkdir /home/user/myproject.git
cd /home/user/myproject.git
git init --bare
user 必須可以 ssh 進入 server

開發者端操作:

假設本地端的專案目錄是 myproject

1. 新建(或重建)本地端 git repository
cd myproject
git init

會在 myproject 下新增 .git 目錄

2. 設定 git user 資訊,此步驟非必要
git config --global user.email "電子郵件信箱"
git config --global user.name "姓名"
--global 代表全域設定,如果省略 --global ,則每個專案都要設定一次

3. 加入 remote 設定
git remote add origin user@192.168.0.1:/home/user/myproject.git
192.168.0.1 為 server ip,user 為 server 的使用者帳號,視實際狀況替換之

origin 為一識別名稱,習慣上常用 origin

4. 將目前專案的檔案納入 git 進行版控
git add .
5. 提交變更
git commit -m "說明文字"
6. 將本地端 repository 送到 git server
git push origin master
master 為 branch 名稱

第二次以後 git push 即可

------------------------------------------------------------------

以上只簡單列出流程,方法不只一種,有興趣進一步了解的可以參考 git 官方手冊或 google 一下教學囉

英文版
中文版

sublime text 3 可以安裝相關 package:

Git
GitGutter
SideBarGit

從既有的資料庫轉成Laravel的migration

Laravel的migration很方便,可是相關語法不熟的情況下,先在phpmyadmin產生資料庫與資料表結構,再轉成Laravel的migration應該是比較好的方式。

http://laravelsnippets.com/snippets/convert-existing-mysql-database-schema-into-a-laravel-migration-file

https://github.com/barryvdh/laravel-migration-generator

https://github.com/Xethron/migrations-generator

20 Impressive CSS3 Techniques, Libraries and Examples

有些東西真的不錯,以後有空再好好研究

20 Impressive CSS3 Techniques, Libraries and Examples

moodle整合ntpc openid login

記錄下來,以免太久沒作又忘了 ^_^

1、裝好模組

2、依新北市所用欄位調整 auth/gauth/index.php

3、修改 moodle 登入表單( login/index_form.html ),加入 openid login 連結

4、修改 auth/gauth/allow_school.php,將允許登入之學校名稱(如:育林國中)加入陣列中

參考資料
http://plog.hlps.tc.edu.tw/post/1/9060

angularjs controller 之間的資料共享

1、 parent - child

parent 有而 child 沒有的,child 可透過繼承取得,也可透過 $scope.$parent 取得

2、獨立的 controller 之間可用 service 的方式達成

in service:

$rootScope.$broadcast('something' , args... );

字串 something 代表發生了某事件

args 為欲傳送之資料,可有多個,可有可無

in controller:

$scope.$on('something' , listener );

監聽某事件( something )

listener 為事件發生時的處理函式,格式為:

function(event, args...)

event 為一個物件,不知道怎麼用就沿用吧(我也不會用 ^_^)

args 接收 $rootScope.$broadcast 傳送過來的參數

參考資料:

http://www.ramandv.com/blog/angular-js-sharing-data/

https://docs.angularjs.org/api/ng/type/$rootScope.Scope

Angular Dialog Service 筆記

angularjs 之 $resource

透過 $resource,前端 angularjs 可以很方便的透過 api 與後端如 php 溝通,值得花時間了解一下。

官網文件

這篇文章關於 resource url 的規劃滿值得參考的,較有彈性。

Using RESTful Controllers In An AngularJS Resource

angular.forEach

迭代處理物件或陣列

angular.forEach(obj, iterator, [context]);

obj 要迭代處理的物件或陣列

iterator 為一個 function,用來迭代處理 obj。帶有兩個參數,第一個參數( value )為物件屬性值或陣列元素,第二個參數( key )為物件屬性名稱或陣列索引,沒用到的話可省略。

context 選擇性參數。若有(例如:tmp)則 iterator function 中 this 即代表 tmp

範例:從陣列中取出部份元素
http://jsbin.com/yesip/1/edit

官網文件

Javascript 常用的陣列(Array)操作大全

最近常需要操作 javascript array,找到一篇不錯的文章,中文的呦 ^_^

Javascript 常用的陣列(Array)操作大全

Checklist-model:AngularJS directive for list of checkboxes

可用來處理 checkbox 的複選。

angularjs 一個 checkbox 連結一個 ng-model,一個 model 對應到一個值;但實際使用時希望一個 model 可以儲存多個選項的值(通常以陣列形式)。

用法:

在 app 的宣告中注入相依。

ex:
var app = angular.module("app", ["checklist-model"]);

在 <input type="checkbox"> 中以屬性方式使用之。

以 checklist-model 取代 ng-model,以 checklist-value 設定要回傳的值。

ex:
<label ng-repeat="role in roles">
<input type="checkbox" checklist-model="user.roles" checklist-value="role"> {{role}}
</label>

其中 user.roles 為 user 物件的 roles 屬性,為陣列,儲存值的地方。

詳細範例見參考資料。

參考資料:

http://vitalets.github.io/checklist-model/

angular.copy

語法:

angular.copy( source, [destination] );

source 應該是物件或陣列,但也可以是基本物件、 null、undefined,copy 的來源。

destination 非必要,copy 的目的地。若未提供則產生新物件或陣列;若有提供,則必須與 source 相同類型,且既有的陣列元素或物件屬性會被刪除。

source 若不是物件或陣列(包含 null、undefined),則會直接回傳 source

若 source 和 destination 是同一物件,則拋出例外。

參考資料:

官方文件

javascript 遞迴處理陣列

陣列的 map 方法,以 callback function 遞迴處理陣列的每個元素,產生新的陣列。

參考資料:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map

用 vagrant 建置 Laravel 測試環境

vagrant box add ubuntu/trusty64

mkdir vagrant_laravel_project

cd vagrant_laravel_project

vagrant init ubuntu/trusty64

vi Vagrantfile

# config.vm.network "private_network", ip: "192.168.33.10"

去掉註解

config.vm.network "private_network", ip: "192.168.33.10"

vagrant up

vagrant ssh

sudo apt-get update

sudo apt-get install apache2 mysql-server php5 php5-curl php5-mcrypt

sudo a2enmod rewrite

sudo php5enmod mcrype curl

vi /etc/apache2/apache2.conf

AllowOverride None 改為 AllowOverride All

sudo service apache2 restart

sudo ln -s /vagrant/laravel_project/public /var/www/html/laravel

瀏覽器 http://192.168.33.10/laravel

vagrant 參考資料

CSS 動畫參考文章

CSS 版面配置參考文章

用 git 將本地端的 Laravel application 部署到 OpenShift

在 OpenShift 建好一台 vm for Laravel 4.2 application 之後,利用 git 部署上去很方便的。

1、先安裝好 RHC Client Tools

2、 git pull 專案,git_clone_url 請換成專案的 clone url
git remote add upstream -m master git_clone_url
git pull -s recursive -X theirs upstream master
3、 git push

稍等一下就好啦。

參考資料:

https://www.openshift.com/quickstarts/laravel-41-quickstart

https://www.openshift.com/developers/rhc-client-tools-install

PHP 查詢 extension 是否啟用

要查詢某個 extension 是否已啟用,可於 command line 執行:

php --ri extension_name

例如:查詢 gd

php --ri gd

如果未啟用,可執行以下指令啟用之:

sudo php5enmod extension_name

例如:啟用 gd

sudo php5enmod gd

snapper 列出快照與修改快照

列出快照:

snapper list

snapper -c 組態檔 list

清單中第二個欄位為快照編號,編號 0 代表目前檔案系統狀態

修改快照:

常用的應該是修改快照描述吧....

snapper modify -d "快照描述" 快照編號

snapper -c 組態檔 modify -d "快照描述" 快照編號

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

詳細說明請自行 man 一下囉~~

snapper 建立快照

以下參數說明只列出較可能用到的,完整說明請自行 man 囉

snapper 全域參數 create 指令參數

選用之全域參數:

-c 組態檔 ==> 指定組態檔

-v ==> 增加詳細度

選用之指令參數:

-d "描述" ==> 對於快照之描述

-p ==> 顯示建立之快照編號

--command 指令 ==> 建立 pre 與 post 快照,之間執行指令

snapper 概念筆記

以下只紀錄我目前理解的部份:

支援之檔案系統為 btrfs、ext4、lvm,一般常用的是 ext4,但 ubuntu 目前的 kernel 似乎不支援,所以我採用的是 btrfs
快照似乎是以分割區為單位,每個分割區要先建立組態檔才能執行快照的操作,組態檔存放路徑在 /etc/snapper/configs 目錄下
操作 snapper 指令時,要以 -c 指定組態檔,沒有的話則是針對 root(/)分割區進行操作
快照分為三種類型:pre、post、single。pre 與 post 是成對的,分別代表變更檔案系統 之前 與 之後 的快照;single 則是獨立的快照,與其他快照沒什麼關聯。對於檔案系統而言,三種類型並無差別
除了手動快照外,還可以自動快照(每小時),組態檔中的 TIMELINE_CREATE="yes",配合快照自動清理機制可保留一定數量的快照
3種自動清理機制,依據組態檔之設定於 daily cron-job 中執行

number:達到一定數量後刪除舊快照
timeline:刪除舊快照,但保留一定數量的hourly、daily、monthly、yearly 快照
empty-pre-post:刪除 pre / post 沒有差異的成對快照


過濾器(filter):不被還原的檔案清單,/etc/snapper/filters 目錄下檔案中每行代表一種檔案樣式(pattern)。已執行過快照的檔案或目錄不會排除。(20140427測試時自訂清單沒有效果)

參考資料:

http://snapper.io/manpages/snapper.html

http://snapper.io/manpages/snapper-configs.html

http://snapper.io/tutorial.html

https://kuther.net/blog/using-opensuses-snapper-archlinux-manage-btrfs-snapshots

https://www.suse.com/documentation/sles11/singlehtml/book_sle_admin/book_sle_admin.html#cha.snapper

snapper 安裝與組態檔管理

snapper為 linux 下的檔案系統快照工具,ubuntu 14.04 已收錄於套件庫中

官網:http://snapper.io/

測試環境:

ubuntu 14.04 x64,/ 與 /home 為獨立分割區,filesystem 均為 btrfs

安裝:

apt-get install snapper

ubuntu 下解決 Sublime Text 3 無法輸入中文的問題

OS:ubuntu 14.04 x64

sublime text 3 build 3059

https://www.sinosky.org/linux-sublime-text-fcitx.html

sublime-imfix(內含 sublime-imfix.c 及編譯完成之 libsublime-imfix.so)

下載解壓縮,執行 fix.sh

(Add@2018.01.01) lyfeyaj/sublime-text-imfix: Fix Sublime Text 3 Input method problem (CJK words) under Ubuntu

PS: 下面這個是由 deepin 內商店版本抽出來的檔案

sublime-fix-get-from-deepin.zip

9年級數學習題

二次函數開口大小、平移

Ubuntu 13.10 (x64) 下安裝 Juniper Network Connect

圖片
新北市的 VPN client 採用的是 Juniper Network Connect,似乎只能在32位元版的 linux 下安裝,我在 Ubuntu 13.10 64位元版下安裝失敗,找了一下,雖然找到解決方法,不過實測後發現還是有些小問題啦....

OS:Ubuntu 13.10 x64

桌面:Unity

參考資料:

http://imsardine.simplbug.com/note/juniper-networks/network-connect.html

新北市的 Realm 是 TPC_LDAP_Realm

問題:

1. 中斷 VPN 連線之後要重新啟動網卡,否則網路會不通

2. 重啟網卡時建議使用 GUI 界面,我測試時從終端機下指令會當
停用網卡

啟用網卡


--------------------------------------------------------

相關網頁:

解決瀏覽器無法執行JAVA的問題

http://wdpsestea.blogspot.tw/2013/12/java.html

轉換 tod 檔為 mpeg 檔

手上有一些影片是用 JVC 的 DV 錄下來的,格式為 tod,在 ubuntu 下要匯入 openshot 時,有出現警告訊息,大意是建議先轉成其他格式,雖然不轉檔一樣可以剪輯,可是匯出的 mp4 檔怪怪的,像是快轉一樣。

試了幾種方式,效果比較好的有以下兩種:

(1) FF Multi Converter:GUI 界面,有中文
sudo add-apt-repository ppa:ffmulticonverter/unstable
sudo apt-get update
sudo apt-get install ffmulticonverter
官網:https://sites.google.com/site/ffmulticonverter/home
(2) tod2mpeg:終端機下執行,優點是速度較快,配合 tod2mpeg-multi 可批次轉檔,似乎也可以用來轉 mod 檔
下載:http://www.mattgrill.com/2009/03/convert-jvc-tod-to-mpeg-video-tod2mpeg/
其實都是透過 ffmpeg 轉檔的啦!

圓心角、弦、弧

http://sdrv.ms/1dvFT5G

點切圓作圖

http://sdrv.ms/1dvFDnp

圓周角

http://sdrv.ms/1dvFoIW

圓冪性質

http://sdrv.ms/1dvF8tg

弦切角

http://sdrv.ms/1dvERqv

圓內角與圓外角

http://sdrv.ms/1dvECvn

多邊形的外心

http://sdrv.ms/1dvEsEe

圓內接四邊形

http://sdrv.ms/1gKtdpE

多邊形的內心

http://sdrv.ms/1gKsR2i

公切線

http://sdrv.ms/1gKsipn

外心

http://sdrv.ms/1gKrEYY

內心

http://sdrv.ms/1gKq895

執行時檢查系統版本

PHP 解析 JSON Data

最近在研究如何整合新北市的OpenID,找了一下如何以 PHP 解析傳回的JSON data

使用的 php library 為 LightOpenID

JSON 的一些參考資料

最近剛好需要用到 JSON,所以就找了一些資料參考參考囉。

什麼是JSON?基本教學!

瞭解JSON格式

JSON Editor Online

Android解析JSON資料範例教學