但在使用Node.js去做連線時如果要在請求結束時,並不會自己釋放與MySQL的連線,或者連線斷線時也不會自己重新連線,所以要自己去控制所有的資料庫連線狀況。
我使用的Node.js的MySQL套件是node-mysql
npm install mysql@2.0.0-rc1
npm install felixge/node-mysql
npm install mysql@2.0.0-rc1
npm install felixge/node-mysql
sudo apt-get install nodejs若要使用apt-get安裝最新版的node.js,則需要更新套件庫在進行安裝,若原本已經使用apt-get安裝了舊版的node.js,也可以透過此步驟對node.js進行更新
sudo apt-get update
sudo apt-get install -y python-software-properties python g++ make
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs
git clone git://github.com/creationix/nvm.git ~/.nvm
echo ". ~/.nvm/nvm.sh" >> ~/.bashrc
source ~/.bashrc
nvm install 0.10.22
nvm use 0.10.22
nvm alias default 0.10.22
nvm ls
nvm ls-remote
sudo apt-get install memcached
sudo apt-get install php5-memcache
sudo /etc/init.d/apache2 restart
socket.broadcast.to(socket.room).emit('updatechat', msg);
socket.emit('updatechat', msg);
socket.to(socket.room).emit('updatechat', msg);
io.sockets.emit('updatechat', msg);
io.sockets.in(socket.room).emit('updatechat', msg);
$ php -i
$ php -i > phpinfo.txt
或
$ echo "<?php phpinfo(); ?>" | php > phpinfo.txt
/etc/apache2/apache2.conf
) 設定或加入ServerTokens Prod重新啟動Apache,然後你就會看到Response Header中顯示為 Server: Apache
ServerSignature Off
ServerTokens Value | Server Sends |
---|---|
Full (or not specificed) | Server: Apache/2.2.17 (Win32) PHP/5.2.17 |
Prod (or ProductOnly) | Server: Apache |
Major | Server: Apache/2 |
Minor | Server: Apache/2.2 |
Min (or Minimal) | Server: Apache/2.2.17 |
OS | Server: Apache/2.2.17 (Win32) |
/etc/php5/apache2/php.ini
) 設定或加入expose_php Off重新啟動伺服器,然後你就會看到Response Header中,原本的
X-Powered-By:PHP/5.3.2-1ubuntu4.21
這樣的訊息就不見了$ php -v
PHP startup mongo: Unable to initialize module
Module compiled with module API : 20090626
PHP compiled with module API : 20100525
These options need to match.
10 萬
筆資料要做查詢計算, 100 個
使用者做查詢就需要對 1000 萬筆(100 * 100000)
資料做查詢計算,這對於資料庫的運算是一個很大的負擔,而 MongoDB 有提供這類地理查詢的方法及優化。sudo add-apt-repository ppa:ondrej/php5-oldstable
sudo apt-get update
sudo apt-get install php5
$ php -v
PHP 5.4.19-1+debphp.org~precise+3 (cli) (built: Aug 27 2013 14:29:42)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
$ mongo
MongoDB shell version: 2.4.6
connecting to: test
>
use admin
db.addUser("帳號","密碼")
db.addUser("帳號","密碼" , true)
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10建立套件清單
echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | sudo tee /etc/apt/sources.list.d/10gen.list更新套件庫
sudo apt-get update安裝MongoDB,在安裝時可以在後面指定安裝的版本號碼,若不指定版本號碼會選擇目前最新的穩定版本
sudo apt-get install mongodb-10gen=2.4.6
內送郵件 (POP3) 伺服器 - 需要安全資料傳輸層 (SSL): | pop.gmail.com 使用安全資料傳輸層 (SSL):是 通訊埠:995 |
外寄郵件 (SMTP) 伺服器 - 需要 TLS 或安全資料傳輸層 (SSL): | smtp.gmail.com 使用驗證:是 TLS/STARTTLS 通訊埠:587 安全資料傳輸層 (SSL) 通訊埠:465 |
伺服器逾時: | 1 分鐘以上,建議設定為 5 分鐘 |
姓名或顯示名稱: | [您的姓名] |
帳戶名稱或使用者名稱: | 您的完整電子郵件地址 (包含 @Gmail.com 或 @<您的網域>.com ) |
電子郵件地址: | 您的電子郵件地址 (使用者名稱@gmail.com 或使用者名稱@您的網域.com) |
密碼: | 您的 Gmail 密碼 |
Sublime Text 2.0.2 x64\Data\Packages\User\Default (Windows).sublime-keymap
Sublime Text 2.0.2 x64\Data\Packages\User\Default (OSX).sublime-keymap
Sublime Text 2.0.2 x64\Data\Packages\User\Default (Linux).sublime-keymap
Tab
及空白
切換php artisan
後,可以看到migrate指令$ php artisan
migrate
migrate:install Create the migration repository
migrate:make Create a new migration file
migrate:refresh Reset and re-run all migrations
migrate:reset Rollback all database migrations
migrate:rollback Rollback the last database migration
指令 | 說明 |
---|---|
migration | 執行尚未執行的migration |
migrate:install | 在資料庫建立migration管理資料表 |
migrate:make | 建立新的migration檔案 |
migrate:refresh | 重設資料庫所有的migration,並重新執行所有的migration |
migrate:reset | 重設資料庫所有的migration |
migrate:rollback | 復原最後一筆migration紀錄 |
app/config/app.php
檔案中你會找到一組key的位置,這個key是一組32個字元的key,我們可以自己輸入想要的key,或者使用Laravel 4提供的Artisan命令列去自動亂數產生一組keyphp artisan
可以看到所有artisan支援的指令,你可以找到key:generate
可以產生一組亂數的key。$ php artisan
Laravel Framework version 4.0.0
Usage:
[options] command [arguments]
Options:
--help -h Display this help message.
--quiet -q Do not output any message.
--verbose -v|vv|vvv Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version -V Display this application version.
--ansi Force ANSI output.
--no-ansi Disable ANSI output.
--no-interaction -n Do not ask any interactive question.
--env The environment the command should run under.
Available commands:
clear-compiled Remove the compiled class file
down Put the application into maintenance mode
dump-autoload Regenerate framework autoload files
help Displays help for a command
list Lists commands
migrate Run the database migrations
optimize Optimize the framework for better performance
routes List all registered routes
serve Serve the application on the PHP development server
tinker Interact with your application
up Bring the application out of maintenance mode
workbench Create a new package workbench
asset
asset:publish Publish a package's assets to the public directory
auth
auth:reminders Create a migration for the password reminders table
cache
cache:clear Flush the application cache
command
command:make Create a new Artisan command
config
config:publish Publish a package's configuration to the application
controller
controller:make Create a new resourceful controller
db
db:seed Seed the database with records
key
key:generate Set the application key
migrate
migrate:install Create the migration repository
migrate:make Create a new migration file
migrate:refresh Reset and re-run all migrations
migrate:reset Rollback all database migrations
migrate:rollback Rollback the last database migration
queue
queue:listen Listen to a given queue
queue:subscribe Subscribe a URL to an Iron.io push queue
queue:work Process the next job on a queue
session
session:table Create a migration for the session database table
php artisan key:generate
Application key [2wgjsIpDDIJvc4AgMV6VV1QybWznB6nY] set successfully.
app/config/app.php
檔案中,找到key資料的位置,確認key是否以正確的產生即可。一個完全合格的 namespace (命名空間) 與 class (類別) 需要符合這樣的結構\<Vendor Name>\(<Namespace>\)*<Class Name> 。
\Doctrine\Common\IsolatedClassLoader => /path/to/project/lib/vendor/Doctrine/Common/IsolatedClassLoader.php
\Symfony\Core\Request => /path/to/project/lib/vendor/Symfony/Core/Request.php
\Zend\Acl => /path/to/project/lib/vendor/Zend/Acl.php
\Zend\Mail\Message => /path/to/project/lib/vendor/Zend/Mail/Message.php
每個 namespace 需要有一個頂層的命名空間 (“提供者名稱(Vendor Name”)。
如果需要的話,每個 namespace 皆可有多個子命名空間。
當 namespace 若是從檔案系統載入時,其使用的分隔符號皆要轉換成 DIRECTORY_SEPARATOR 。
類別名稱 (class name) 中,每個底線符號 (“_”) 皆要轉換成 DIRECTORY_SEPARATOR 。因為底線(“_”)在 namespace 中是沒有意義的。
從檔案系統所載入的合格 namespace 與 class 一定是 “.php” 結尾。
Vendors name、namespace 以及 class name 所使用的字母可以由大小寫組成。
檔案中一定 (MUST) 只能使用 <?php 以及 <?= 標籤。Files MUST use only UTF-8 without BOM for PHP code.
PHP 程式的檔案編碼,一定 (MUST) 要用 “無 BOM 之 UTF-8″ 格式。
檔案需要 (SHOULD) 在 宣告 symbols (classes, functions, constants, 等) 或是採用從屬效應(side-effects) (像是產生輸出,變動 .ini 的設定等) 中擇一處理,不需要 (SHOULD NOT) 二者都做。
命名空間以及類別一定 (MUST) 依循著 PSR-0 建議文件。
類別名稱一定 (MUST) 是採用 大寫開始的駝峰大小寫命名法(StudlyCaps) 來宣告。
類別中的宣告常數變數的名稱一定 (MUST) 是由全大寫字母以及底線符號組成。
函式名稱一定 (MUST) 是以 小寫開始的駝峰大小寫命名法(camelCase) 宣告。
程式碼一定 (MUST) 得依循 PSR-1。
程式碼的縮排一定 (MUST) 是用四個空白,而非 tab。
每行的字數長度需 (SHOLD) 得少於 80 字元;一定 (MUST) 要將相對限制(soft limit) 設定在 120 字元;必不要 (MUST NOT) 寫到絕對限制 (hard limit)。There MUST be one blank line after the namespace declaration, and there MUST be one blank line after the block of use declarations.
宣告 命名空間 (namespace) 之下一定(MUST) 要空一行,以及宣告 use 之下一定 (MUST) 也要空一行。
類別 (class) 所使用的成對花括號,一定(MUST) 要將開始的放在宣告的下一行,以及程式碼本體結束的下一行。
方法 (method) 所使用的成對花括號,一定(MUST) 要將開始的放在宣告的下一行,以及程式碼本體結束的下一行。
所有屬性或是方法的可視屬性(visibility)一定(MUST) 要宣告, abstract 以及 final 一定(MUST) 是宣告在可視屬性之前; static 則一定(MUST) 是宣告在可視屬性之後。
控制結構 (control structure) 的關鍵字一定(MUST) 要在其後加入一個空白;方法(Method) 與函式(Function)則一定不要(MUST NOT)。
控制結構的開始(左)花括號一定(MUST) 要在宣告啟始的同一行,而結束(右)花括號則一定(MUST) 要在其程式碼本體結束的下一行。
控制結構中,用到括弧時,其開始(左)括弧之後與結束(右)括弧之前一定不要(MUST NOT) 有空白。
名稱 | 用途 |
---|---|
form_tag | 產生表單 |
label_tag | label:<label> |
text_field_tag
text_field |
input text:<input type="text"> |
password_field_tag | input password:<input type="password"> |
hidden_field_tag | input hidden:<input type="hidden"> |
submit_tag | input submit:<input type="submit"> |
check_box_tag | input checkbox:<input type="checkbox"> |
radio_button_tag | input radio:<input type="radio"> |
text_area_tag | textarea:<textarea> |
search_field | input search:<input type="search"> |
telephone_field | input tel:<inputtype="tel"> |
url_field | input url:<input type="url"> |
email_field | input email:<input type="email"> |
select_tag | select:<select> |
options_for_select | option:<option> |
select_date | <select id="start_date_year" name="start_date[year]"></select> <select id="start_date_month" name="start_date[month]"></select> <select id="start_date_day" name="start_date[day]"></select> |
file_field_tag | input file:<input type="file"> |
名稱 | 用途 |
---|---|
add_column | 增加欄位 |
change_column | 變更欄位 |
remove_column | 移除欄位 |
rename_column | 重新命名欄位 |
create_table | 新增資料表 |
change_table | 變更資料表 |
drop_table | 丟棄資料表 |
add_index | 增加索引 |
remove_index | 移除索引 |
名稱 | 資料範例 | 用途 |
---|---|---|
:binary | 010101101011 | 二進制資料 |
:boolean | true / false | 布林值 |
:date | 2013-04-01 | 日期 |
:datetime | 2013-04-01 23:59:59 | 日期時間 |
:decimal | 3.141 :precision => 6 |
浮點數 |
:float | 3.141 :precision => 6 |
浮點數 |
:integer | 0,1,2,3... | 整數 |
:primary_key | 0,1,2,3... | 主鍵 |
:string | KeJyun | 字串 |
:text | KeJyun KeJyun KeJyun KeJyun... | 長字串 |
:time | 23:59:59 | 時間 |
:timestamp | 2013-04-01 23:59:59 | 使用時間欄位(created_at , updated_at) |
名稱 | 範例 | 用途 |
---|---|---|
:default | :default => 'default_value' | 預設值 |
:null | :null => false | 是否可以空值 |
:limit | :limit => 255 | 最大長度 |
# validates 欄位名稱 驗證規則
validates :email, :presence true,
:uniqueness { case_sensitive: true } ,
:length => {:in => 10..200 },
:format => {:with => /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/ , :message => 'Email格式錯誤'}
變數名稱 | 範例 | 用途 |
---|---|---|
:presence | :presence true | 一定存在這個欄位資料 |
:uniqueness | :uniqueness => { :case_sensitive => false } :uniqueness => true |
唯一值(條件) |
:length | :length => { :minimum => 2 } :length => { :maximum => 500 } :length => { :in => 6..20 } :length => { :is => 6 } |
資料長度 :minimum:最短長度 :maximum:最長長度 :in:長度範圍 :is:長度唯一值 |
:format | format: {:with=> /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/ , :message => 'Email格式錯誤'} | 正規表示式判斷 :with:正規表示式 :message:錯誤訊息 |
變數名稱 | 範例 | 用途 |
gem 'bootstrap-sass'安裝bootstrap-sass套件
bundle install在
app/assets/javascripts/application.js
檔案中加入//= require bootstrap引用 Twitter Bootstrap JS//= require jquery建立Twitter Bootstrap的scss檔
//= require jquery_ujs
//= require bootstrap
//= require_tree .
app/assets/stylesheets/bootstrap_and_overrides.css.scss
,並在檔案中輸入下列文字以引用Twitter Bootstrap@import "bootstrap";
body { padding-top: 60px; }
@import "bootstrap-responsive";
sudo service apache2 restart
# encoding: UTF-8
才有辦法正解析執行config.cache_classes = false
config.action_controller.perform_caching = false
# enable bash completion in interactive shells
# if [ -f /etc/bash_completion ]; then
# . /etc/bash_completion
# fi
# enable bash completion in interactive shells
if [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
備註:
Astrid已被Yahoo收購,在收購完成後的 90 天內,Astrid 服務將被關閉,在接下來的 3 個月內不接受新註冊用戶申請。雅虎收購 Astrid 究竟是人才收購還是想將 Astrid 的技術應用到自己的產品中來部署自己的移動戰略,現在還不得而知(雅虎收購任務管理應用Astrid,90天內關閉服務)