2014年11月19日 星期三

JavaScript 去除空格與換行

記錄用

去除換行
str.replace(/\r\n|\n/g,"");
去除空格
str.replace(/\s+/g, "");

Nginx 1.6 configure

 記錄用
sudo ./configure --prefix=/usr/share/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/lib/nginx/tmp/client_body --http-proxy-temp-path=/var/lib/nginx/tmp/proxy --http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi --http-uwsgi-temp-path=/var/lib/nginx/tmp/uwsgi --http-scgi-temp-path=/var/lib/nginx/tmp/scgi --pid-path=/var/run/nginx.pid --lock-path=/var/lock/subsys/nginx --user=nginx --group=nginx --with-file-aio --with-ipv6 --with-http_ssl_module --with-http_spdy_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_image_filter_module --with-http_geoip_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_stub_status_module --with-http_perl_module --with-mail --with-mail_ssl_module --with-pcre --with-google_perftools_module --with-debug --with-http_stub_status_module --add-module=/home/ec2-user/nginx-upstream-fair --with-http_perl_module --with-ld-opt=-Wl,-E



ec2

yum install gcc pcre-devel openssl-devel libxml2-devel libxslt-devel gd-devel perl-devel perl-ExtUtils-Embed geoip geoip-devel google-perftools google-perftools-devel


sudo make
sudo make install



EC2 掛載 S3 空間作為備份磁區


須安裝 s3fs


s3fs -o use_cache=/media/xxxx/tmp_cache backup /mnt/s3-backup

C++ boolean to string

備份用
libjingle on android  印 Log



inline const char * const BooleanToString(bool b)
{
  return b ? "true" : "false";

 __android_log_print(ANDROID_LOG_ERROR, "Tag: ", "Text: %s", BooleanToString(a));

2013年8月23日 星期五

jQuery 檢測綁定事件列表

一切都是龜毛惹的禍

需要偵測是否有重複綁定事件

$._data($('body').get(0), "events").keydown.length

如此可列出 keydown 事件綁定了幾次

進階一些可以再綁定事件時
加入 namespace
以利在多人協作開發時, 正確判斷出自己綁定的事件

$._data( $('body').get(0), 'events').keydown

    1. 0:{
      1. dataundefined
      2. guid6
      3. handlerfunction (e) {
      4. namespace""
      5. needsContextundefined
      6. origType"keydown"
      7. selectorundefined
      8. type"keydown"
      9. }
  1.     }
  2. delegateCount0
  3. length2

2013年7月19日 星期五

[離職 Day 3] Heroku On Linux 安裝

Heroku 是提供雲端運算的平台
方便讓不想自行架設伺服器或是管理server的人

國內大多的空間都提供 PHP + MySQL
對於目前想找 Ruby or Python 甚至是當紅的 Node.js
是不太好找到合適的空間來放

老牌的 Heroku 支持 Ruby, Node.js, Clojure, Java, Python, and Scala.
這篇是基礎的安裝教學

要使用 Heroku 一定要預先安裝 Heroku Toolbelt
才可以開始使用他的服務


Linux Mint:

首先連結至 https://toolbelt.heroku.com/debian

wget -qO- https://toolbelt.heroku.com/install-ubuntu.sh | sh

這段 script 將會新增 heroku 的 repository 以及 key 至您的 apt 來源,並安裝 heroku 以及 foreman 套件。 heroku client 將會被安裝至 /usr/local/heroku 並將 /usr/local/heroku/bin 新增至您的 PATH 環境變數內

Linux Fedora 17

https://toolbelt.heroku.com/standalone

wget -qO- https://toolbelt.heroku.com/install.sh | sh
echo "$ echo 'PATH=\"/usr/local/heroku/bin:\$PATH\"' >> ~/.bashrc"


第一行的安裝 script 將會下載 heroku client 的 tarball 檔 並將他安裝至 /usr/local/heroku
第二行則是將 heroku 的路徑加入至 PATH 環境變數中


在 Terminal 裡面輸入上面的指令

這是什麼呢?
  • Heroku client - 建立或管理 Heroku apps 的 CLI tool
  • Foreman - 簡易快速在 Local 端運行你的 apps
  • Git -版本控制及更新至 Heroko


開始動手玩

安裝完畢後, 你可以在 Terminal 中輸入 heroku 指令, 登入使用你在 Heroku 建立帳號時所使用的 email 及 密碼.
(中途會問您是否要建立 SSH 的 public key , 這是要)

$ heroku login
Enter your Heroku credentials.
Email: adam@example.com
Password:
Could not find an existing public key.
Would you like to generate one? [Yn]
Generating new SSH public key.
Uploading ssh public key /Users/adam/.ssh/id_rsa.pub

現在可以開始建立 Heroku app 囉

$ cd ~/myapp
$ heroku create
Creating stark-fog-398... done, stack is cedar
http://stark-fog-398.herokuapp.com/ | git@heroku.com:stark-fog-398.git
Git remote heroku added

2013年7月18日 星期四

[離職Day 2] Express.js: Session for Production

Express.js Production Mode 啟動後會收到以下訊息
Warning: connection.session() MemoryStore is not designed for a production environment, as it will leak memory, and obviously only work within a single process.
避免造成 Memory Leak 方案如下
  1. no sessions - fast (438 req/sec)
  2. cookieSession: requires no external service, minor speed impact (311 req/sec) - fastest, sessions will expire with the cookie (customised by maxAge)
  3. connect-redis: requires redis server, large speed impact (4 req/sec with redis2go and redisgreen) - faster than mongo, sessions will be deleted after a while (customised by ttl)
  4. connect-mongo - requires mongodb server, large speed impact (2 req/sec with mongohq) - slower than redis, also has no way to remove sessions with no maxAge, requires manual clear_interval to be set to cleanup sessions

這邊我選用了 MongoDB 來作為解決方案

使用 connect-mongo 

INSTALL

  
$ npm install connect-mongo
  
mongoStore = require('connect-mongo')(express);
app.configure(function(){
    ...
    app.use(express.session({
        secret: "@#$TYHBVGHJIY^TWEYKJHNBGFDWGHJKUYTWE#$%^&*&^%$#",
        store: new mongoStore({
            host: setting.mongo.host,
            port: setting.mongo.port,
            db: 'examOnlineSessions',
            collection: 'sessions'
        })
    }));
    ...
})
With connect:
var connect = require('connect');
var MongoStore = require('connect-mongo')(connect);