Swift AutoLayout

開始

AutoLayout 可以動態計算所有的 view 物件的 size(大小)position(位置)

這是利用 constraints 這個功能,另外 AutoLayout 並非只能用在 App ,桌面程式一樣可以使用

外部改變(External Changes)

當 superview 發生改變時,你需要調整你的 view 到適當的位置

以下舉出幾點 superview 發生改變的例子

● 比如使用者調整視窗大小

● 使用者使用或離開 Split View 功能

● 當裝置旋轉時(例如手機直向或橫向)

● 當 audio recording bars 出現或消失時

● 你想支援不同大小的螢幕或 size classes

Firefox Add-on SDK(Context Menu Item)

介紹

官方文件

請先看基本 Add-on 製作方法

Context menu 讓你能在右鍵新增選單,你要使用 context menu 模組

首先 index.js 程式碼如下

1
2
3
4
5
6
7
8
9
10
11
12
var contextMenu = require("sdk/context-menu");
var menuItem = contextMenu.Item({
label: "Log Selection",
context: contextMenu.SelectionContext(),
contentScript: 'self.on("click", function () {' +
' var text = window.getSelection().toString();' +
' self.postMessage(text);' +
'});',
onMessage: function (selectionText) {
console.error(selectionText);
}
});

Firefox Add-on SDK(Log)

介紹

製作 Add-on 時需要使用 Log 測試,測試 Log 有兩種方式

第一種使用 console.log('Message');

不過使用 console.log 需要用 jpm run,訊息會顯示在 cmd 當中

第二種使用 console.error('Message');

當你用 jpm xpi 建立 xpi 檔案安裝後,你可以打開瀏覽器控制台看 Log

注意是瀏覽器控制台(Ctrl+Shift+J),不是網頁主控台(Ctrl+Shift+K)

開啟瀏覽器主控台之後,打開”紀錄”欄位即可看到 log

Firefox Add-on 製作

介紹

Linux 開發

Windows 開發

注意 Windows 開發要安裝 Python 2.X 版本,3.X 版本不能用

另外以下使用 cfx 指令,不過之後推薦改用 jpm,jpm 指令需要用 npm 安裝,所以你要先安裝 nodejs

下面分別示範 cfx 和 jpm

使用 cfx 開發

此篇記錄 Linux 開發實作內容,首先建立資料夾 mozilla

然後下載 Add-on SKD 放進去解壓縮,此時結構如下

1
2
addon-sdk-1.17/
jetpack-sdk-latest.zip*

設計模式 Swift(策略模式)

閱讀大話設計模式心得,使用 Swift Ver. 3.0 (Jun 6, 2016)

Swift API Doc

商場收銀系統

目標:根據客戶所買的單價和數量來收費

1
2
3
4
5
6
var total = 0.0
func addProduct(price:Double, num:Double) {
let totalPrice:Double = price * num
total = total + totalPrice
}
print("total = \(total)")

PHP curl

介紹

PHP API 使用

PHP 支援使用 libcurl,此 Lib 讓你可以使用不同 protocol 來通訊

目前支援的協定在下面,此功能要 PHP 4.0.2 以上才可以使用

1
http, https, ftp, gopher, telnet, dict, file, ldap, HTTP POST, HTTP PUT, FTP

要要確認主機有沒有開啟這個功能可以使用 phpinfo(INFO_MODULES); 檢查

範例

curl_setopt 有非常多的選項可以設定,詳細設定參考這裡

curl_setopt 設定第三個欄位型態要正確,有些要填字串,整數或布林值

例如 CURLOPT_HTTPHEADER 就要填入一個陣列

另外不同 PHP 版本或 curl 版本也會影響這些參數設定,使用時要注意

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// 參數
$url = "www.google.com.tw";
$header = array(
"content-type: application/x-www-form-urlencoded",
"charset=UTF-8"
);


// curl 初始化和設定
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER,$header);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// 執行 curl
$output = curl_exec($ch);
echo $output;

// 關閉 curl
curl_close($ch);

PHP Composer Plugin 製作

步驟

首先建立資料夾 Composer-plugin,並且 git init

在資料夾中建立 composer.json 檔案,內容如下

composer.json 內容是以 JSON 格式儲存,寫好之後記得驗證是否格式正確

更簡單的方式是使用 composer init,他會自動幫你產生 json 檔案

因為我們要使用 PHP namespace 功能,而此功能要 5.3 以上才有支援

autoload 的 classmap 表示會把 lib 中的所有檔案都掃過一次

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{
"name": "jasonchiucc/firebase-php",
"description": "Firebase Realtime Database PHP Client Lib",
"license": "MIT",
"version": "0.0.1",
"authors": [
{
"name": "JasonChiuCC",
"email": "JasonChiuCC@gmail.com"
}
],
"require": {
"php": ">=5.3.0"
},
"autoload": {
"classmap": ["src"]
}
}