pretty code

2014年6月29日 星期日

stack frame

x86 intel gcc

stack 由高位元往低位元長
parameters
return address
ebp
local variables

2014年6月26日 星期四

查詢 MySQL table 空間 語法

SELECT table_name, table_rows,
       IF(Index_length=0, Data_length, Data_length*Index_length) AS 'Table Size'
FROM information_schema.tables
WHERE table_schema='mk'
ORDER BY 'Table Size', table_rows DESC;

1.  mk 是資料庫名
2.  IF是判斷式,如果Index_length是0

MySQL 自創欄位

也是之前面試回家才想到犯的錯誤

SELECT DNAME, '1st table' AS 'Table名' FROM DEPARTMENT
UNION
SELECT DNAME, '2nd table' AS 'Table名' FROM DEPARTMENT;

同一張表都多出來一個欄位,但欄位名稱不一樣
因為是字串,故記得加單引號

MySQL ROWNUMBER

之前面試答不出來的問題
今天突然想到解法

SET @rownum:=0;
SELECT LNAME, BDATE, (@rownum:=@rownum+1) AS '名次'
FROM EMPLOYEE
ORDER BY BDATE;

重點在 @rownum:=@rownum+1
會讓 @rownum 一直累加

如果沒有 SET @rownum:=0;
重複執行 SELECT 敘述 @rownum 會延續上一次 SELECT 後的值

2014年6月19日 星期四

看來我跟資料庫無緣

終於跟某家公司說了我的決定
那家是我第二想去的公司
可惜目前卡在第一想去的公司流程上
總不能讓人家一直等我
真的很抱歉

I am sorry

2014年6月18日 星期三

車輛機電問題紀錄

問題發生點:
打方向燈的瞬間,機電發生故障
(門鎖解除,無法打燈,空調失效)

猜測原因:
先從保險絲查起

備註:
買來10年次數約10次
上一次至少是半年前
都發生在夏天?

2014年6月17日 星期二

查詢 MySQL table 空間


1. SHOW TABLE STATUS

2. Data_length * Index_length

2014年6月16日 星期一

Garmin Vivofit Bug Fix

感覺要解決睡眠時間沒有上傳的問題
不過坦白說我也懶得試了
就讓他當個稱職的計步器吧

後來上網查了一下
國外的討論區有提到是因為 2.6 版本的關係
但台灣的討論區都沒有看到
看起來台灣沒什麼人拿來偵測睡眠狀態吧



2014年6月12日 星期四

刪除 Win8 的服務

之前安裝 MySQL 因為版本不一致無法順利安裝
也因為安裝不成功導致電腦管理的服務裡還殘存 MySQL

以前都是直接進 registry 去刪除
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\
但這招在 Win8 卻無法成功

有一個錯誤的訊息掛在服務裡看著也是礙眼

找了一下
只要直接下命令
sc delete [service name]
就可以順利的移除服務

2014年6月10日 星期二

機器週期

以下內容出自 教育部數位教學資源入口網 http://content.edu.tw/senior/computer/ks_ks/et/cpu/index.htm

我們從鍵盤鍵入一個命令、資料或用滑鼠從畫面中選取某個選項之後,電腦系統為了執行此一命令或處理資料時,會先翻成電腦內部看得懂的機械語言指令(Machine Language Instruction)。而處理每一個機械語言指令時,資料會傳送或來自記憶體或輸入/輸出單元。如此每一次的傳送或接收的動作稱為機器週期(Machine Cycle)。機器週期又可分為兩部份:指令週期(Instruction cycle,I-cycle)與執行週期(Execution cycle,E-cycle)。 在指令週期中,控制單元會從記憶單元取出下一待執行的指令。在執行週期(E-cycle)內所執行的工作包含:找出資料、執行指令,以及將結果存到累加器內。

指令週期

控制單元從主記憶體中提取下一個所要執行的指令。
控制單元從指令予以解碼(decode) 控制單元將指令中用來說明要執行什麼動作的這一部份,存入指令暫存器
控制單元將指令中用來說明相關資料所儲存之位置這一部份,存入位址暫存器。

執行週期

控制單元根據位址暫存器內的資訊,從主記憶體中讀啟所需的資料,並將其存入ALU的儲存暫存器內。
控制單元根據指令暫存的資訊,命令ALU去執行所需的運算。
ALU執行所需之運算,它會將發現於儲存暫存器以及累加器內的數值予以相加。
運算結果再存回累加器內,這個動作會清除累加器原先所儲存的數值。

2014年6月5日 星期四

CodeIgniter trace code 1

最近想嘗試了解 CI
想知道如何實現 MVC 的架構
故花 10 分鐘簡單的 trace 一下

程式入口點是 index.php -> core/CodeIgniter.php
裡面有 1 個 $OUT 變數會去 load CI_Output 的 class
最後會呼叫 __display 或是 _display_cache 的方法(視有無 catch 而訂)
至於在 __display 裡面會 echo $output
$output 便是網頁呈現的內容