網頁

2016年10月28日 星期五

Linux commands note

* w
* who

**generate password**
pwgen 15 3

**use wget sync web size**

2016年8月18日 星期四

OpenFoundry Projects 要關站了

OpenFoundry Projects 要關站了, 先Export Projects到自己身上了
https://github.com/wangaguo?tab=repositories

從Subversion轉換為Git參考方式

舊文件記錄~

在OpenFoundry的專案,VCS從Subversion轉換為Git,以下提供一個可行的方式,或您可使用其它更好的方式。若您使用Subversion,欲轉換為Git,可以使用git-svn進行clone,接著再將VCS切換為Git,進行後續的動作:

以下假定''testgit''專案,原本為使用Subversion,要轉換至Git。

1. 取出提交者的列表
這是為了提供Git的Author對應的email,先checkout一份從根目錄開始的工作複本,然後執行以下指令:


$ svn co https://www.openfoundry.org/svn/testgit /tmp/testgit-svn
$ cd /tmp/testgit-svn
$ svn log -q | awk -F '|' '/^r/ {sub("^ ", "", $2); sub(" $", "", $2); print $2" = "$2" <"$2">"}' | sort -u > authors-transform.txt
接著修改文字檔,填入提交者對應的電子郵件,如:
jwilkins = jwilkins
修改為
jwilkins = John Albin Wilkins



2. 複制Subversion版本庫至本地Git,使用git-svn


$ git svn clone https://www.openfoundry.org/svn/testgit --no-metadata -A /tmp/testgit-svn/authors-transform.txt --stdlayout /tmp/testgit-git
其中:
-A authors-transform.txt: 即為代入提交者的轉換資料。
--stdlayout:指的是使用慣例trunk; branches; tags為目錄架構。


3. 轉換svn:ignore為.gitignore
如果有使用svn:ignore屬性,可使用以下方式轉換。


$ cd /tmp/testgit-git
$ git svn show-ignore > .gitignore
$ git add .gitignore
$ git commit -m 'Convert svn:ignore properties to .gitignore.'


4. Push到新的git版本庫


先將專案VCS切換至Git,從“專案資訊->基本資料修改”,修改VCS為Git,等待約3分鐘,同步建置Git版本庫及權限。
版本控制->GitWeb,查看是否完成。
版本控制->存取方式,取得版本庫URL。https://www.openfoundry.org/git/[專案名稱].git

設定遠端版本庫:
$ git remote add origin https://www.openfoundry.org/git/testgit.git
將資料Push到專案的Git版本庫中
$ git push origin master


5. 查看及使用


版本控制->GitWeb,查看push後的記錄。
$ git clone https://www.openfoundry.org/git/testgit.git /tmp/testgit


此篇說明參考[http://john.albin.net/git/convert-subversion-to-git Converting a Subversion repository to Git]編寫。

2016年7月14日 星期四

Test transaction page performance

Usually we test web page performance. Maybe test 1000 with 5 concorrent.
If we test a transaction page performance. Will left many ugly transaction data.
So we can desgin a dryrun mode. below is ruby on rails sample.


  class PurchasesController < ApplicationController
    def create

      ActiveRecord::Base.transaction do
        # This do purchase
        raise ActiveRecord::Rollback if params[:dryrun] # when dryrun then rollback.
      end

    end
  end

2016年7月13日 星期三

Ruby method / block / yield / Proc / lambda 全面解釋

http://railsfun.tw/t/method-block-yield-proc-lambda/110

2016年7月12日 星期二

Nginx Reverse proxy from VirtualHost to VirtualHost

www.demo.com DNS is go to Server1. /and Reverse proxy to Server2 by server2.demo.com . But Server2 need to known www.demo.com. So we need set header by proxy_set_header.

**Server1**
```
server {
  listen 80;
  server_name www.demo.com;

  location / {
      proxy_set_header Host $host;
      proxy_pass http://server2.demo.com/;
  }
}

```


**Server2 server2.demo.com**
```
server {
    listen 80;
    server_name www.demo.comt;
    root /opt/www/;
    index index.html index.htm;
}
```

2015年5月4日 星期一

ffmpeg create thumbnail from local or remote video. with Ruby on Rails example.

ffmpeg create thumbnail from local or remote video.
Important point is -ss is before input file. If you place after input file And remote video. create thumbnail will very slow.

local video

$ ffmpeg -ss 5.3 -i "/home/ubuntu/video.mpg" -vframes 1 -f image2 "/home/ubuntu/thumbnail.jpg"

remote video

$ ffmpeg -ss 5.3 -i "http://example.com/video.mpg" -vframes 1 -f image2 "/home/ubuntu/thumbnail.jpg"

Ruby on Rails example

hr = %x[ffmpeg -loglevel error -ss #{m[:time_of]} -i \"#{input_file}\" -y -vframes 1 -vf scale='min(#{size}\\, iw):-1' -f image2 \"#{output_file}\" 2>&1]
  • -loglevel error: when error show message.
  • -ss: time offset. need before input file
  • -i: input file
  • -y: force overwrite output file
  • -vframe: Set the number of video frames to output. This is an alias for -frames:v
  • -vf scale='min(#{size}\\, iw):-1': set thumbnail output size.
  • -f image2: For extracting images from a video
  • "output_file": thumbnail output file
  • 2>&1: return error message