2014年3月29日 星期六

ruby- block , Proc ,lambdas ,Methods

來源 http://rubyer.me/blog/917/

節錄

Procs vs Block
什麼時候用blocks而不用Procs呢?
1、Block:方法把一個對象拆分成很多片段,並且你希望你的用戶可以與這些片段做一些交互。
2、Block:希望自動運行多個語句,如數據庫遷移(database migration)。
3、Proc:希望多次復用一段代碼。
4、Proc:方法有一個或多個回調方法(callbacks)。

lambdas vs Procs
Ruby中的Procs是代碼片段(code snippets),不是方法。因此,Proc的return就是整個方法的return。
但lambdas就像是單獨的methods(只不過是匿名的),所以它要檢查參數個數,且不會覆蓋整個方法的返回。
因此,最好把lambdas當作另一種methods的寫法,一種匿名的方式。
square不是Proc,而是Method。Method與lambda用法相同,因為它們的概念是一樣的。不同的是Method是有名字的method,而lambda是匿名method

2014年3月25日 星期二

rails - call coffeescript from view

來源 http://stackoverflow.com/questions/11464057/coffeescript-function-created-in-app-assets-javascript-not-found


To make coffeescript accessible from outside , all you need to do is add an '@' in front . This will attach the function to the window object

ruby , each vs map vs collect

來源 http://stackoverflow.com/questions/9429034/what-is-the-difference-between-map-each-and-collect

each is different from map and collect , but map and collect are the same

each performs the enclosed block for each element in the receiver
[1,2,3,4].each {|n| puts n*2}
# Outputs:
# 2
# 4
# 6
# 8
map and collect produce a new Array containing the results of the block applied to each ekenebt if the receiver
[1,2,3,4].map {|n| n*2}
# => [2,4,6,8]

2014年3月19日 星期三

Shell Script - grep , awk

來源 http://ithelp.ithome.com.tw/question/10136126

grep 的主要目的是從文件中找關鍵字,接者再把有關鍵字的那一整行給列印出來。而 awk 列印的可就不是一整行,是可以選擇性的列印一整欄


所謂的 pipe (|) 就是把第一個指令處理的結果直接當成參數給第二個指令當成輸入來處理

比如說下面有一個表格:
編號 / 名稱 / 序號
A001 腳踏車 AEADDDEE9931
A002 機車 FDEAEDFJK3394
A003 火車 FJDKE3AK34940
A004 超機車 FFJJEEE99300
A005 飛機 AIRP33333900
A006 坦克 TANK00000001

grep "車" Day19TestData.txt | awk {'print $2" - "$3'} 

2014年3月17日 星期一

full_calendar change event color , dynamic

來源 https://code.google.com/p/fullcalendar/issues/attachmentText?id=1029&aid=10290002000&name=default-mouseover-test.html&token=I-fs6pDL4KnpKKk1UdvvOZJzJ1U%3A1395050354329

 eventMouseover: function(calEvent, jsEvent, view) {
       savBg = $(this).css("background-color");
       savClr = $(this).css("color");
       $(this).css( { color:'#ffff00', backgroundColor:"#006" } );
       $("#test").css( { color:'#ffff00', backgroundColor:"#006" } );
       $(this).fadeTo('slow',.5);//.css(text-align,'right');
       },
 eventMouseout: function(calEvent, jsEvent, view) {
       $(this).css( { color:savClr, backgroundColor:savBg } );
       $("#test").css( { color:savClr, backgroundColor:savBg } );
       $(this).fadeTo('slow',1);
                        },

SQL - select where count >0

http://stackoverflow.com/questions/11722245/mysql-select-where-count-1

SELECT COUNT(col3) as countCol3
FROM table
GROUP BY col3
HAVING countCol3 > 1



2014年3月16日 星期日

full_calendar scroll to current time

full_scroll to current time

http://stackoverflow.com/questions/3317940/making-fullcalendar-scroll-to-the-current-time

var firstHour = new Date().getUTCHours() - 5;
$('#calendar').fullCalendar({
  firstHour: firstHour;
});

getUTCHours --> UTC time is the same as GMT time.  台灣要加八小時

rails - display time format



In Rails you can use the to_time function on a string to convert it into a Date object

'2012-11-14 14:27:46'.to_time.strftime('%B %e at %l:%M %p')

#=> "November 14 at 2:27 PM"
 interactive reference guide, refer to http://www.foragoodstrftime.com/

2014年3月15日 星期六

rails turbolinks

Questions from useing turbolink

https://github.com/rails/turbolinks/

because , if we use the turbolinks gem , it will make our application behave like a page javascript application .

So , if we use $(document).ready() on different page , it will not work .


how to fix it :

use gem https://github.com/kossnocorp/jquery.turbolinks

of reference
http://stackoverflow.com/questions/17600093/rails-javascript-not-loading-after-clicking-through-link-to-helper?rq=1
change code
$(document).on('page:load', function() {
    // your stuff here
});

ar ready = function() {
    // do stuff here.
};

$(document).ready(ready);
$(document).on('page:load', ready);

another issue : if you use turbolinks , you should put your script inside the head .
Otherwise , if you put your script inside the page body ,you will got an javascript have been loaded error
if you really need to put inside the body
do the following
http://stackoverflow.com/questions/20684846/turbolinks-causing-a-jquery-ujs-has-already-been-loaded-error
<script type="text/javascript" data-turbolinks-eval=false>
  console.log("I'm only run once on the initial page load");
</script>

rails devise return to previous page

用devise這個gem時

當想要再登入等動作後 回到之前的那一頁

可以如此做
https://github.com/plataformatec/devise/wiki/How-To:-Redirect-back-to-current-page-after-sign-in,-sign-out,-sign-up,-update



In ApplicationController write following:
after_filter :store_location

def store_location
  # store last url - this is needed for post-login redirect to whatever the user last visited.
  if (request.fullpath != "/users/sign_in" &&
      request.fullpath != "/users/sign_up" &&
      request.fullpath != "/users/password" &&
      request.fullpath != "/users/sign_out" &&
      !request.xhr?) # don't store ajax calls
    session[:previous_url] = request.fullpath 
  end
end

def after_sign_in_path_for(resource)
  session[:previous_url] || root_path
end
如果之前已經有在 before_filter :authenticate_user! 你的ApplicationController 裡面
要把before_filter :store_location 放在更上面


2014年3月14日 星期五

jboss 設定系統變數讀取

web需要讀取系統變數時

可在jboss上面設定






















而程式的部分為
String dbgwip=System.getProperty("DBGW_IP");

2014年3月13日 星期四

shell 讀檔案 及檢查檔案是否存在


突然需要檢查一些檔案是否存在
很少在寫shell 因此紀錄如下


1.開啟一txt檔
2.一行一行檢查
3.每一行的前三字元 會決定其所在的資料夾
4.移到他的目錄檢查對應的檔案是否存在

#!/bin/bash
filename='/home/cdrs/temp/ilake/nomoj.txt'
exec < $filename  #執行打開檔案
while read line    #讀檔案內容
do
        #echo ${line:0:3}   取每一行的前三個字元
    cd /home/cdrs/backup/response/${line:0:3}/              #移到此目錄  
    if [ -e $line.pgp ];then                      #檢查此內容檔案是否存在
       echo $line exists >>/home/cdrs/temp/ilake/nomojcheck.txt
    else
       echo $line does not exist >> /home/cdrs/temp/ilake/nomojcheck.txt
     fi
done

2014年3月11日 星期二

rails ajax - do javascript after submit

碰到一個問題是
form submit 之後還需要執行一個javascript

本來很簡單的直接用
<%= simple_form_for [@goal ,@schedule] ,:html => { :id => 'event_form' }, :remote => true do |f| %>
<div>
<%= f.input :title %>
<%= f.input :description %>
<%= f.button :submit , :class => "btn btn-success" ,:onclick => "refetch_events_and_close_dialog()" %>
</div>
<% end %>
:remote => true  ajax
:onclick => "refetch_events_and_close_dialog()" submit後直接呼叫我要叫的javascript function
我的refetch_events_and_close_dialog 是要refresh 一些資料
剛好是這個submit更新完後的資料

但卻不可行refresh的資料還是舊的
我猜測大概是submit 和我onclick是同時的 所以導致我refresh的是還沒更新的資料

因此就改成
$(document).ready(function(){
  $('#desc_dialog').on('submit', "#event_form", function(event) {
    event.preventDefault();
    $.ajax({
      type: "POST",
      data: $(this).serialize(),
      url: $(this).attr('action'),
      success: refetch_events_and_close_dialog,
      error: handle_error
    });
    function handle_error(xhr) {
      alert(xhr.responseText);
    }
  });
});
$(document).ready就定義說#event_form這個如果submit的話
所觸發的function
用ajax成功後執行refetch_events_and_close_dialog

2014年3月8日 星期六

html object embed images

images

<img src="smiley.gif" alt="Smiley face" width="42" height="42" title="ilake">
alt 當圖片因為被刪掉或網路等問題 無法顯現時所會出現的文字 (alternate text)
title 當滑鼠指標移到圖片時 顯現的文字

object , embed



通常一起使用,為了要兼顧瀏覽器
因為之前IE 很多不支持embed 只支持object
參考連結

html dl dt dd



dl 的意義是 Definition List,中文是「定義清單
dt 的意義是 Definition Term,中文是「定義項目」。
dd 的意義是 Definition Description,中文是「定義描述」。


<dl>
  <dt>Coffee</dt>
  <dd>Black hot drink</dd>
  <dt>Milk</dt>
  <dd>White cold drink</dd>
</dl>

效果如下


Coffee
Black hot drink
Milk
White cold drink

2014年3月7日 星期五

html text


簡單的幾種html text tag的格式

<em>Emphasized text</em><br>
<strong>Strong text</strong><br>
<dfn>Definition term</dfn><br>
<code>A piece of computer code</code><br>
<samp>Sample output from a computer program</samp><br>
<kbd>Keyboard input</kbd><br>
<var>Variable</var><br>
<q>test</q><br>
<address>address<address><br>

效果如下


Emphasized text
Strong text
Definition term
A piece of computer code
Sample output from a computer program
Keyboard input
Variable
test
address

可以維持輸入的格式<pre></pre>
Text in a pre element               
is displayed in a fixed-width
font, and it preserves
both      spaces and
line breaks
Text in a pre element
is displayed in a fixed-width
font, and it preserves
both      spaces and
line breaks

<abbr title=“ilake”>  amy </abbr> ->滑鼠指標移過去時會顯示ilake

2014年3月6日 星期四

SCP和SFTP不用輸入密碼的公鑰方法



一.client端
  1.進入home目錄
     建立.ssh資料夾
# ll –a     查看有沒有.ssh
# mkdir .ssh  建立.ssh
  2.
#cd .ssh      進入.ssh
#ssh-keygen -t rsa  執行創建密鑰命令
3.
把.ssh目錄下的公鑰文件:/當前用户home目路/.ssh/id_rsa.pub文件傳輸到server上
#scp/home/ap/ilake/.ssh/id_rsa.pub ilake@28.192.141.129:/ilake/.ssh
#ssh-keygen 


二.server端

1.通過檢查home目錄的權限必須是755
2.
# cd /.ssh                      進入到.ssh目錄  .ssh權限必须是755或者700
# cp id_rsa.pub authorized_keys 第一次添加時將公鑰重命名為authorized_keys
# chmod 644 authorized_keys     公鑰文件的權限必须是644
如果有多個client,依次将client公鑰附加到server的authorized_keys文件内即可。

# cat /tmp/id_rsa.pub >> authorized_keys

測試時 直接輸入
# sftp ilake@ip    成功的話就可以直接登入
若只輸入sftp ip 則扔然要有密碼


來源 http://jingyan.baidu.com/article/e5c39bf56245ae39d7603331.html

Unix權限的基本概念


檔案的權限有三組,分別歸屬於Owner,Group,Everyone





















 755 就是代表:Owner可以讀寫執行(7)、Group只能讀取跟執行(5)、其他的人只能讀取跟執行(5)。


來源http://hiraku.tw/2010/03/227/