Time of Update: 2017-01-18
1.whenever首先,whenever是基於linux的cron服務的,所以,在windows平台上沒有直接的方法使用該gem。whenever嚴格來說應該算一個cron的翻譯器,將ruby代碼翻譯為cron指令碼,從而將週期性任務轉交給cron實際去完成。對於精通cron的shell程式員來說可能不值一提,但對rubyist卻不是。首先,我們可以使用ruby語言來書寫任務代碼,在ruby層面上控制碼,避免了和一些shell指令碼的切換;另外,cron命令很強大,但我總是記不住它的命令參數,
Time of Update: 2017-01-18
N+1問題N+1問題是資料庫訪問中最常見的一個效能問題,首先介紹一下什麼是N+1問題:舉個例子,我們資料庫中有兩張表,一個是Customers,一個是Orders。Orders中含有一個外鍵customer_id,指向了Customers的主鍵id。想要得到所有Customer以及其分別對應的Order,一種寫法是SELECT * FROM Customers;對於每一個Customer;SELECT * FROM Orders WHERE Orders.customer_id =
Time of Update: 2017-01-18
profile.rb是為Ruby程式準備的profiler,它可以統計並輸出各方法的已耗用時間,以便於找到程式執行的效能瓶頸。這次就用它來剖析指令碼的已耗用時間。使用方法很簡單,加上命令列選項-r profile就可以:ruby -r profile
Time of Update: 2017-01-18
首先給大家看一下 NewRelic 的報表最近 24h 的平均回應時間流量高的那些頁面 (Action)訪問量搞的幾個 Action 的情況:TopicsController#showUsersController#show (比較慘,主要是 GitHub API 請求拖慢)PS: 在發布這篇文章之前我有稍加修改了一下,GitHub 請求放到後台隊列處理,新的結果是這樣:TopicsController#indexHomeController#index從上面的報表來看,目前 Ruby
Time of Update: 2017-01-18
ruby -v #查看ruby 版本 ruby -e ''require"watir"; puts Watir::IE::VERSION'' #查看watir版本rvm list known #列出已知的ruby版本rvm install 1.9.3rvm use 1.9.3 | rvm use systemrvm use 1.9.3 --defaultrvm list #列出本地ruby版本rvm remove 1.9.2具體詳情見RVM實用指南
Time of Update: 2017-01-18
Ruby這個就不用多說了RVM用於幫你安裝Ruby環境,幫你管理多個Ruby環境,幫你管理你開發的每個Ruby應用使用機器上哪個Ruby環境。Ruby環境不僅僅是Ruby本身,還包括依賴的第三方Ruby外掛程式。都由RVM管理。Rails這個也不用多說,著名開發架構。詳細看 http://zh.wikipedia.org/wiki/Ruby_on_RailsRubyGemsRubyGems是一個方便而強大的Ruby封裝管理員( package
Time of Update: 2017-01-18
Rails徹底加快及簡化了Web應用的開發,不過它讓人覺得不夠成熟,特別是在高端企業級功能方面。另一方面,Java平台及其虛擬機器、庫和 應用伺服器的速度、穩定性和功能方面卻一直在提升,現在已被公認為是開發高端伺服器應用的領先平台。不過如果Java平台不與Ruby等新興語言聯絡在一 起,就有可能落後於流行趨勢。範例程式碼:require "java"include_class "java.util.TreeSet"include_class
Time of Update: 2017-01-18
最近有個需求,把數字顯示成固定的位元,位元不足的在前面以零補充比如 5 位:複製代碼 代碼如下:3 -> 00003292 -> 0029212422 -> 12422發現 Ruby 很容易就可以實現了複製代碼 代碼如下:irb> "%05d" % 12422"12422"irb> "%05d" % 22"00022"上面的方法基本上是標準作法。如果是直接處理字串,也可以用 String#rjust:"12422".rjust(5, '0')
Time of Update: 2017-01-18
一、字串操作字串插值1.#{}: 任意放置在#{}中的合法Ruby代碼都將被求值,並被替換為求值結果插入到原位置2.單引號與雙引號差別:雙引號允許字元轉義,單引號不允許轉義,裡是什麼字元,使用者看到的就是什麼字元單引號不允許字元插值字串拆分1.以空格拆分:string.split(' ')字串串連方法一、'Ruby' + 'Monk', stdout: RubyMonk方法二、"Monk".concat("Ruby") stdout: MonkRuby方法三、"Ruby" <<
Time of Update: 2017-01-18
Ruby做為物件導向語言,肯定要對對象進行相關的操作,這時候就涉及到方法了。調用方法 - 對象.方法名(實參1,實參2,...,實參n)方法的分類:1. 執行個體方法:顧名思義,就是由執行個體來調用的方法。例如,“10, 20, 30, 40”.split(",")2. 類方法:就是由類來調用的方法。當建立一個執行個體時,則需要調用類方法。複製代碼 代碼如下:a = Array.new #建立一個新數組File.rename(oldname, newname)
Time of Update: 2017-01-18
今天學習的是數組和Hash,數組在很多程式設計語言中都能常常用到。數組:數組是儲存資料的一種容器,在Ruby中,數組中儲存的資料可以是任何類型的資料;這和JAVA不同,在JAVA中,數組是儲存同一類型資料的結構。1. 在Ruby中如何定義數組呢?使用[ ]來框住元素,而元素之間則使用","間隔。如下,複製代碼 代碼如下:name = ["Windy", "Cindy", "Amee", "Tom"]name = [] #聲明了一個空數組,未定義的數組name = [1, "song"
Time of Update: 2017-01-18
條件判斷,在程式設計語言中都存在,而Ruby中的條件判斷和Java中類似,當然還是存在些許差別Ruby中條件判斷的條件:1) 可以使用 ==,<,>等比較運算來作為條件,比較運算可以返回true和false,這和java中的文法是類似的2) 一些其他的方法也可以用來作為判斷條件,比如,empty?方法,為空白則返回true,否則返回false3) 有些方法雖然不會返回true或false,但是也能作為條件判斷的條件,他們返回的對象,要麼是false或nil,要麼是意義的對象,
Time of Update: 2017-01-18
迴圈結構在程式設計語言中是不可或缺的,所以Ruby中的迴圈也有其自訂的規則。而我們關注迴圈結構,要知道兩個因素:1) 迴圈的條件;2) 迴圈執行的內容Ruby有一些方式來實現迴圈結構體:1. times方法在前面已經有提到過了,文法如下:複製代碼 代碼如下:迴圈次數.times do
Time of Update: 2017-01-18
JSON由於其資料結構簡單便利,已逐漸成為了互連網上的主流資料交換的資料格式。在討論嵌套對象(Nested Object)的JSON轉換方法之前,我們先看簡單的ruby JSON轉換。首先,ruby對象轉換為JSON字串:複製代碼 代碼如下:class Obj1 def initialize(var1) @var1 = var1
Time of Update: 2017-01-18
在Java語言中,提供了發射機制,通過發射機制可以通過字串構造出這個對象,可以擷取對象的所有方法(包括私人方法),可以調用私人方法,可以更改成員變數的值(包括私人的成員變數)。Ruby也是物件導向的進階語言,當然也提供了反射機制,今天我們討論通過類名稱構造類對象的功能。一、通過類名稱構造類對象我們先看普通的構造:複製代碼 代碼如下:module ModuleA #the class name, later we will use it to create
Time of Update: 2017-01-18
閉包(Closure),是指未綁定到任何對象的自由代碼,閉包中的代碼與任何對象和全域變數無關,只與執行此段代碼的上下文相關。今天我們簡要的看一下ruby中的閉包實現。Ruby中的閉包實現有:Block,Proc,Lambada。首先,我們來看Block。複製代碼 代碼如下:ary = [1,2,3,4]ary.collect! do |a| a*aendary.each do
Time of Update: 2017-01-18
1、阿里雲的一鍵安裝web全環境下載一鍵安裝web全環境 sh.zip 壓縮包上傳至伺服器,解壓、執行指令碼,具體步驟詳見這裡$ mv sh.zip /home/tmp/ & cd /home/tmp$ unzip sh.zip$ chmod -R 777 sh & cd sh# 任意選擇一種方法執行指令碼# 方法一$ ./install.sh# 方法二$ ./install_nginx_xxx.sh$
Time of Update: 2017-01-18
1、插入排序 複製代碼 代碼如下:seq = [3,4,9,0,2,5,9,7,1]1.upto(seq.length-1) do |i| if seq[i] < seq[i-1] tmp = seq[i] j = i-1 while(j>=0 && tmp<seq[j]) do seq[j+1] =
Time of Update: 2017-01-18
實現代碼:複製代碼 代碼如下:class Des require 'openssl' require 'base64' ALG = 'DES-EDE3-CBC' KEY = "mZ4Wjs6L" DES_KEY = "nZ4wJs6L" #加密 def encode(str)
Time of Update: 2017-01-18
最近陸續有不少用Rails開發微信項目的朋友在Github上開始使用weixin_rails_middleware、weixin_authorize,也不少人談到Ratchet,春節開始到現在,一直有做微信的開發,現在在論壇上發布出來,希望讓更多人知道這些gem的存在,更快速的完成你們手中的任務。1、一(兩)條命令搭建Rails微信版本按照最簡潔的速度,10分鐘可以跑起一個微信的項目:https://github.com/lanrion/weixin_rails_middleware自動驗證微信