Linux(Process)

執行 Process

將 Process 在背景執行加上 &

查看目前背景 Process 輸入 jobs

1
2
3
4
5
# ./A &
# ./B &
# jobs
[2]+ Running ./B
[1]- Running ./A

將背景程式喚回前景,使用 fg 後面加序號或 PID

如果要再放回背景按下 Ctrl+Z

1
2
# fg %2
./B

Linux(I2C)

格式

i2c 分兩種格式: 7bit & 10bit

1
2
3
4
5
6
7
(M) = Master to Slave
(S) = Slave to Master
# Write 格式
S(M) + Slave Address(M) + W = 0(M) + A(S) + DATA(M) + A(S) + DATA(M) + A(S) + P(M)

# Read 格式
S(M) + Slave Address(M) + R = 1(M) + A(S) + DATA(S) + A(M) + DATA(S) + A(M) + P(M)

Linux(Ram)

Linux

Linux Kernel 通常放在 Ram 開頭 1 MB 的位置

利用 mmap 和 /dev/mem 來直接使用實體 ram

可利用 devmem 指令確認是否正確讀寫實體 ram

/dev/kmem : kernel virtual address (0x0 - 0xFFFFFFFF(4GB) )

/dev/mem : physical address (0x0 - 0x7FFFFFFF(2GB) )

特定 process 的 VMA(Virtual Memory Areas),可從 /proc/pid/maps 看到

以下欄位分別對應 vm_area_struct() 結構

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# cat /proc/1/maps
#start-end perm offset major:minor inode imagename
00008000-000a7000 r-xp 00000000 00:01 141 /bin/busybox
000af000-000b0000 rw-p 0009f000 00:01 141 /bin/busybox
000b0000-000b1000 rw-p 00000000 00:00 0
00dd5000-00dda000 rw-p 00000000 00:00 0 [heap]
b6eb9000-b6f0f000 r-xp 00000000 00:01 17 /lib/libuClibc-0.9.33.2.so
b6f0f000-b6f17000 ---p 00000000 00:00 0
b6f17000-b6f18000 r--p 00056000 00:01 17 /lib/libuClibc-0.9.33.2.so
b6f18000-b6f19000 rw-p 00057000 00:01 17 /lib/libuClibc-0.9.33.2.so
b6f19000-b6f1d000 rw-p 00000000 00:00 0
b6f1d000-b6f23000 r-xp 00000000 00:01 83 /lib/ld-uClibc-0.9.33.2.so
b6f28000-b6f2a000 rw-p 00000000 00:00 0
b6f2a000-b6f2b000 r--p 00005000 00:01 83 /lib/ld-uClibc-0.9.33.2.so
b6f2b000-b6f2c000 rw-p 00006000 00:01 83 /lib/ld-uClibc-0.9.33.2.so
bec5e000-bec7f000 rw-p 00000000 00:00 0 [stack]
ffff0000-ffff1000 r-xp 00000000 00:00 0 [vectors]

Linux(Semaphore)

Semaphore(System V)

目前 Semaphore 有兩種版本 1.POSIX 2.System V

以下為 System V 範例

System V Sem 流程如下

1.Create Sem

2.不同 Process 取得 Sem

3.取得 Sem 後執行 P() FUNC,等於拿走 Sem,其他 Process 只能等

4.執行完 Critical Section 後執行 V() FUNC,釋放 Sem

舉例

範例檔案

XCode Error

Q:CpResource CopyPNGFile can’t find file
A:參考

Q:bundle format unrecognized, invalid, or unsuitable Command /bin/sh failed with exit code 1
A:rm-rf (~/Library/Developer/Xcode/DerivedData)

Q:前面小圖示
A:參考

Q:requires a development team. Select a development team in the project editor.
A:參考

Laravel Study(Route)

基本路由

Route 意思為路由,簡單說就是設定你輸入什麼網址,他會顯示什麼頁面而已

設定的檔案位置在 app\Http\routes.php,目前只有設定一個 Route 規則

1
2
3
Route::get('/', function () {
return view('welcome');
});

除了 get 之外還可以使用

1
2
3
4
5
6
Route::get      ($uri, $callback);  // 讀取
Route::post ($uri, $callback); // 新增(會多新增一個)
Route::put ($uri, $callback); // 新增(如果存在則覆蓋,不存在新增一個)
Route::patch ($uri, $callback); // 更新
Route::delete ($uri, $callback); // 刪除
Route::options ($uri, $callback);

Laravel Study(Package)

開始

之前有說 vender 底下都是放模組,這些模組都是別人寫好的

你可以去以下網站查詢有哪些模組可用

packagist

packalyst

選好需要的模組就可以用 composer 安裝

以下示範安裝兩個模組

1
2
"filp/whoops": 出現錯誤訊息時,畫面更漂亮
"barryvdh/laravel-debugbar": 畫面底部出現 debug 工具列,方便開發時 debug

首先在 composer.json 修改

1
2
3
4
5
6
"require": {
"php": ">=5.5.9",
"laravel/framework": "5.2.*",
"filp/whoops":"~1.0",
"barryvdh/laravel-debugbar": "^2.0"
},

Laravel Study(使用 Laravel )

開始

伺服器及相關工具安裝自行建立,在伺服器跟目錄下

有兩種方式建立 Laravel 專案,這裡使用 composer 建立專案

使用 composer 要在 PHP 5.3.2 以上才能使用

composer 簡單說就從 packagist 網站抓檔案下來

而 packagist 裡面的檔案其實會連結到 github 上面

  1. 用 Laravel 工具,速度快,因為先下載一份到本機,建立專案時直接 copy

  2. 用 composer 工具,較慢,建立專案時都會上網抓