如何調整 MySQL 上傳資料庫檔案大小限制 [紀錄]
php 預設都會有檔案上傳大小、傳輸時間等等限制
雖然一般資料庫都是由DBA負責維運,但有時在維護特殊的專案時,
也可能需要用到匯入測試,進而需要調整一些設定,
所以直接把常用的參數記錄起來,也可方便於日後查詢
Continue ReadingMarketing, SEO, Web trends, Programming tutorial, Web design, and Life event...
php 預設都會有檔案上傳大小、傳輸時間等等限制
雖然一般資料庫都是由DBA負責維運,但有時在維護特殊的專案時,
也可能需要用到匯入測試,進而需要調整一些設定,
所以直接把常用的參數記錄起來,也可方便於日後查詢
Continue Reading本篇主要參考 Essential Skills for Landing a Test Automation Job in 2018 內容整理而成。
Test Automation Engineers (測試自動化工程師) 在業界的需求有不斷持續的增加的趨勢,從去年 34% 已成長到 40%


強大的編輯器,可以讓工程師更快更有效率的開發,目前介紹的VSCode 是目前公認最強大的編輯器之一,並且擁有相當廣泛的擴充套件及功能,這裡將陸續整理相關套件。
未來,將預計陸續依照各種開發類型推薦套件組合。
首先,前往官網下載 VSCode 安裝檔
安裝完畢後,就能直接從左邊功能選項開啟套件擴充選單

只要輸入下方關鍵字就能找到相關套件
這裡列出的是自己安裝的列表 Auto Close Tag Auto Rename Tag AutoFileName Beautify Bootstrap 3 Snippets cdnjs Chinese Translation Debugger for Chrome Font-awesome codes for css Font-awesome codes for html Git History (git log) HTML Bolierplate HTML Snippets Node Debug 2 Open Folder Context Menus for VS Code Open folder in new instance PHP Debug PHP Extension pack PHP InstalliSense PHP-Autocomplete Preview on Web Server React Native Tools SCSS IntelliSense Vetur
Continue Reading一般對於數字應用上,多數還是以整數為主
實際應用時,通常會先考量數字長度,並且通常都不會有問題
但是遇到與金融交易時,常常會牽涉到小數點的問題,也就是這裡要談的議題 - 定點數與浮點數
浮點數
具有小數點,插入的資料若小數點超過預設長度,則會實施四捨五入 在MySQL中,float, double( or real) 都可以用來儲存浮點數
在使用時,可能會有誤差的問題
定點數
字串形式存放數值,若插入的數值長度超過預設長度,會回報錯誤 (在SQLMode 預設情況仍會四捨五入後,插入資料)
在 MySQL 中,decimal (or numberic) 都可以用來儲存定點數
對於精確度要求較高的資料,都要使用定點數來儲存
我們直接來建立一個浮點數及定點數的資料表
MariaDB [example]> CREATE TABLE float_and_decimal(flo float(10,2), deci decimal(10,2));
Query OK, 0 rows affected (0.07 sec)
接下來,插入三筆資料
MariaDB [example]>INSERT INTO float_and_decimal VALUES(0.3456, 0.3456);
MariaDB [example]>INSERT INTO float_and_decimal VALUES(0, 0);
MariaDB [example]>INSERT INTO float_and_decimal VALUES(131072.32, 131072.32);
查看結果,前兩筆資料都能符合預期,但是第三筆資料,131072.32 會因為浮點數誤差而產生差異 原因是 float 浮點數在±131072(65536×2)以內的時候,仍會保持精確,但是超出範圍就會開始有偏差 (詳細原因可以參考這裡)
MariaDB [example]> select * from float_and_decimal;
+-----------+-----------+
| flo | deci |
+-----------+-----------+
| 0.35 | 0.35 |
| 0.00 | 0.00 |
| 131072.31 | 131072.32 |
+-----------+-----------+
3 rows in set (0.00 sec)
這裡紀錄如何透過PHP來取得目前網址的相關方式
假設目前有一個網址: http(s)://www .example.com/site/contact.php?uid=123456&class=3
在 PHP 取得網址相關的方式有以下幾個:
<?php
$_SERVER['HTTP_HOST']; // www.exampe.com
$_SERVER['REQUEST_URI']; // /site/contact.php?uid=123456&class=3
$_SERVER['PHP_SELF'];// site/contact.php
$_SERVER['QUERY_STRING'];// uid=123456&class=3
檢視表是一個虛擬的資料表,從MySQL 5.0.1 版本即開始支援
在使用時,設計者可自行將多個表格進行關聯、篩選,製作成一份獨立的檢視表
使用上,具有以下優點
CREATE OR REPLACE VIEW user_view AS SELECT * FROM user;
Query OK, 0 rows affected (0.01 sec)
DROP VIEW user_view
Query OK, 0 rows affected (0.00 sec)
SELECT * FROM user_view;
+-------+------------+
| names | join_date |
+-------+------------+
| a | 2018-01-01 |
| adam | 2018-02-01 |
| adam | 2018-02-01 |
+-------+------------+
3 rows in set (0.00 sec)
檢視表對於更新資料有諸多限制, 在一般單純 SELECT 的檢視表,可執行 UPDATE 功能 但是有用到 sum, min, max,count, distinct, group by, having, union…. 等函式,都無法執行更新
在這裡還是建議,檢視表盡量僅用於檢視功能,如果需要進一步的操作,應該使用其他方式
UPDATE user_view set names='aa' WHERE names='a';
Query OK, 1 row affected (0.00 sec)
SELECT * FROM user_view;
+-------+------------+
| names | join_date |
+-------+------------+
| aa | 2018-01-01 |
| adam | 2018-02-01 |
| adam | 2018-02-01 |
+-------+------------+
3 rows in set (0.00 sec)
SHOW TABLE STATUS LIKE 'user_view' \G
*************************** 1. row ***************************
Name: user_view
Engine: NULL
Version: NULL
Row_format: NULL
Rows: NULL
Avg_row_length: NULL
Data_length: NULL
Max_data_length: NULL
Index_length: NULL
Data_free: NULL
Auto_increment: NULL
Create_time: NULL
Update_time: NULL
Check_time: NULL
Collation: NULL
Checksum: NULL
Create_options: NULL
Comment: VIEW
1 row in set (0.00 sec)
在MySQL 檢視表的定義存在一些限制,包括 FROM 之後不能有子查詢,使用 sum, min, max,count, distinct, group by, having, union…. 等函式,都無法執行更新..等
Continue Reading安裝 GraphQL Server 教學
這裡會紀錄 GraphQL 也稱 GraphCool 的操作
首先,用管理員權限開啟 cmd,安裝graphcool
npm install -g graphcool
接著,前往專案資料夾,建立 local 端的graphcool管理初始化
graphcool init
安裝完畢後,會看到選項 graphcool deploy, 將你的Graphcool server發布在線上 graphcool local up, 開始你的本地端Graphcool graphcool add-template facebook-auth, 加入facebook 驗證
我們先選擇線上發布
graphcool deploy
接著,會自動開啟瀏覽器,前往 https://console.graph.cool/graphql/schema 這時,開啟本地端的 types.graphql 會發現裡面的 schema 已經被發佈到線上

現在,新增一個 Test types.graphql
type User @model {
id: ID! @isUnique
name: String
dateOfBirth: DateTime
# Uncomment below - you can declare relations between models like this
# posts: [Post!]! @relation(name: "UserPosts")
}
type Test @model {
id: ID! @isUnique
namesss: String
dateOfBirth: DateTime
# Uncomment below - you can declare relations between models like this
# posts: [Post!]! @relation(name: "UserPosts")
}
再輸入發布指令
Continue ReadingMySQL 5.0 之後的版本支援的儲存引擎包括 MyISAM, InnoDB, MEMORY, CSV …等
其中 InnoDB 屬於交易安全表(支持交易,行級鎖定,外鍵和表加密)
MyISAM、MEMORY、CSV則屬於非交易安全表。
將目前支援的儲存引擎列出來,就能看到個引擎的支援狀況:
> SHOW ENGINES \G
...
*************************** 2. row ***************************
Engine: InnoDB
Support: DEFAULT
Comment: Percona-XtraDB, Supports transactions, row-level locking, foreign keys and encryption for tables
Transactions: YES
XA: YES
Savepoints: YES
*************************** 3. row ***************************
Engine: MEMORY
Support: YES
Comment: Hash based, stored in memory, useful for temporary tables
Transactions: NO
XA: NO
Savepoints: NO
*************************** 4. row ***************************
Engine: MyISAM
Support: YES
Comment: MyISAM storage engine
Transactions: NO
XA: NO
Savepoints: NO
...
8 rows in set (0.00 sec)
在 MySQL 5.5 之前,預設的儲存引擎是 MyISAM
Continue Reading
React 是一個 View 框架,主要的用途有幾個:
在開始之前,請預先安裝 webpack + babel + react依賴環境
接下來,會一步步來說明:
Continue Reading
Webpack 是一個 module 整合工具,用來將javascript 打包成一支讓瀏覽器能夠運行的 bundle.js。
看似簡單,但其實功能非常強大
webpack 的功能:
此外,還有一些 plugin 可以使用
例如 common-chunks-webpack-plugin - 可以將一些要再多地方共享的模組拆分成獨立的 bundle extract-text-webpack-plugin - 可以將 bundle 中的 CSS 另外存成一支 app.bundle.css html-webpack-plugin - 可用來動態產生HTML內容,並且會自動將打包過的js整合再一起 i18n-webpack-plugin - 可製作多國語系 compression-webpack-plugin - 壓縮內容
Continue Reading
ES2015 是在2015年6月正式發布的一項重大更新
但是在命名方面有點混亂,很容易讓人產生誤解, 所以,還是必須先來認識一下:
ES2015 == ECMAScript 2015 == ES6 == ECMAScript 6
並且,ECMA委員會決定,每年6月都來發布新版本,並以該年作為版本標記 所以 2016年,發布了 ECMAScript 2016 (ES2016) 可視為ES6.1版本,僅小幅新增如 includes 方法及指數運算等功能
但普遍仍會以 ES6來描述 ES2015
所以,懂了嗎?以後聽到有人在說 ES2015或ES6,那都是在講同一個事情
Continue Reading
本文是依據 Babel 官網及網路參考資料逐步學習記錄的內容
Babel 這個壞男孩(發音似 Bad boy) 喜歡追求新潮的東西,同時內心是個文青,熱愛老東西。所以,當他接觸到新的內容,就會想盡辦法與舊事物融合~ 只能說個性實在完美
每當有新的javascript語法(例如ES2015-ECMAScript 6)出現,都只能靜待瀏覽器支援才能決定是否採取行動。 為了解決這樣的痛點,Babel就出現了。
Continue Reading
本文是依據 Browserify 官網及網路參考資料逐步學習記錄的內容
Browserify 讓我們可以在瀏覽器中使用Node.js 風格的模組,不管是 AMD / CMD / ES6 …..風格的模塊化,它都能認識,並且編譯成瀏覽器認識的JS。
Browserify 運作的方式,會先在代碼中以靜態分析(static analysis)搜尋有調用 require()的內容,彙整出調用依賴關係圖(dependency graph),並且將關鍵字解析成路徑,然後根據路徑找到檔案, 接著,檔案會被打包(bundle)成單一獨立的 javascript 檔案,讓你可以直接在網頁中直接使用。 並且,打包的檔案預設都會使用嚴格模式 ```use
接下來,開始介紹 Browserify 安裝方式及用法說明:
Continue ReadingGUID (Globally Unique Identifier) 是由微軟所提出實現UUID的一種作法, 早期包含了MAC地址、硬體序號、網卡相關參數,當地時間等,來建立起的唯一字串, 但是因為會有暴露MAC的安全疑慮,因此, 後來衍伸的版本則有陸續做不同的調整, 總而言之,目的都是用來建議唯一辨識字碼, 普遍來說,GUID 字串長度為 32個16進位(0-9,A-F),如:{12AB3456-7AAAA-1010-A2EE-12345B67899D} (本質是屬於128位元的二進位整數)。
在PHP5.0 ~ 5.4.4 的版本,windows都可以直接透過 com_create_guid() 來取得GUID, 但是在Linux以及5.4.5之後的版本則預設不支援 com_create_guid(), 會發生錯誤訊息:
Fatal error: Uncaught Error: Call to undefined function com_create_guid() ...
(windows 環境中,php5.4.5以上版本需添加com拓展才能使用) 雖然不一定能使用com_create_guid(),還是可以自行生成GUID 當系統不支援com_create_guid() 就能透過自行生成的方式取代,
網路上已有人提供產生guid的寫法,如下:
Continue ReadingENUM 列舉陣列 與 SET 集合 非常類似
底下分別說明兩者類型,以及舉例說明:
ENUM 最多可預設 65535 個成員
1-255個成員 (佔1位元) 255-65535個成員 (佔2位元)
存取資料時,只允許從預設的成員之中,挑選其中單一值
也可以用數字代表,1就代表第一個成員..以此類推
範例:
> CREATE TABLE enum_demo (name VARCHAR(10), gender ENUM('M','F'));
回應:
Query OK, 0 rows affected (0.05 sec)
接下來我們插入多筆資料,並且試著插入
> INSERT INTO enum_demo (name,gender) VALUES ('jenny','F'), ('joe','M'), ('way',0), ('grown',1), ('bang',2), ('rown',100), ('honer',NULL), ('tank',''), ('show','F,M');
回應:
Query OK, 9 rows affected, 4 warnings (0.00 sec)
Records: 9 Duplicates: 0 Warnings: 4
從回應來看,可以看到插入9筆資料,但有3筆警示
檢查內容如下:
> SELECT * FROM enum_demo;
回應
+-------+--------+
| name | gender |
+-------+--------+
| jenny | F |
| joe | M |
| way | |
| grown | M |
| bang | F |
| rown | |
| honer | NULL |
| tank | |
| show | |
+-------+--------+
9 rows in set (0.00 sec)
SET 預設值最多可以包含 64個成員
Continue Reading在使用 nodejs ,時常遇到版本無法支援的狀況,導致會出現找不到相關模組的情況
例如: Cannot find module ‘github-url-from-git’
處理的方式分別有以下幾種
Continue Reading最新推薦給設計師30個高質感免費字型,適用於大標題、Logo、T恤、標籤、海報、徽章等用途。每一個字型都是經過精挑細選,讓你可以用來創造更具有個人風格的設計專案,並且這些字型都能免費提供個人或商業用途,非常值得蒐藏。
Continue ReadingMd5 已經公認為危險的加密方式, 而SHA-512也能以每秒4600萬次計算進行破解, 儘管被破解的速度較慢,但是仍有安全上的疑慮。
通常駭客如果取得了大量的加密字串,需要先猜測出你使用的是哪一種SALT, 如果所有的密碼都採用相同的SALT,那麼一但破解第一組,代表其他密碼也就能順而進行破解
現在,PHP提供的 password_hash 可以達到隨機生成處理 SALT, 因此就連開發者也不會知道每次加密會使用甚麼SALT, 這樣當駭客想要進行破解,成本就當然會更高
Continue Reading