Time of Update: 2017-01-13
一,問題及思路最近在用 rails + react + mysql 基本架構寫一個cms + client的項目,裡面涉及到了圖片的上傳及顯示,下面簡單說說思路,至於這個項目的配置部署,應該會在寒假結束總結分享一下。rails中圖片上傳及顯示要解決主要問題是:圖片存在哪?圖片格式大小?用戶端怎麼顯示圖片?因為這是個小項目,估計最多1000張圖片,最多佔用空間1G,所以採取相對簡便的方法: 圖片儲存在rails的public檔案夾裡(也就是儲存在部署該項目的主機中)
Time of Update: 2017-01-13
大部分 Ruby 程式,它們的設計,邏輯,動作,都是圍繞著對象進行的。寫一個 Ruby 程式,主要的工作就是去建立對象,然後給它們能力,讓它們可以去執行動作。Ruby 是 OOP
Time of Update: 2017-01-13
類與執行個體2016年9月5日 下午7:35 ***一個類裡面會定義一些方法,類存在的理由就是要被執行個體化,也就是去建立一個類的執行個體得到一個對象。一個執行個體化的動作,像這樣:obj = Object.newObject 是 Ruby 內建的一個類,在類上使用點形式,就是 Object 與 new 之間的那個點。你就是發送了一個資訊給類。類會對這個資訊做出響應,就像對象可以響應資訊一樣。類也是對象。new 方法是一個構造器,也就是類裡面的可以加工與返回新執行個體的方法。使用 class
Time of Update: 2017-01-13
介紹一種跟類相似的構造:模組(module)。在設計程式的時候,我們會把大的組件分割成小塊,你可以混合與匹配對象的行為。跟類差不多,模組也捆綁方法與常量。不一樣的是,模組沒有執行個體。你可以把擁有特定功能的模組放到類或某個特定的對象裡使用。Class 這個類是 Module 類的一個子類,也就是所有的 class 對象應該也是一個 module 對象。上午10:26 ***建立與使用模組上午10:26 ***module MyFirstModule def
Time of Update: 2017-01-13
有些東西在任何時間任何地方表示的意思是不變的,比如整數,你看到的就是它表示的東西。關鍵詞也一樣,你不能使用 def,class 這些關鍵詞作為變數名,所以當你看到它們的時候,你可以很容易知道它們是做什麼的。不過還有很多東西的意思取決於它們所處的情境,也就是它們在不同的時間不同的地方的意思可能是會有變化的。self 表示的是當前或者預設的對象,在程式啟動並執行時候每次它都會表示一個特定的對象。永遠都只會有一個 self
Time of Update: 2017-01-13
之前我們見過方法的調用,它會讓程式從調用方法的地方跳到方法的定義主體那裡。程式並不是按直線啟動並執行,執行的順序會受到一些規則還有一些被稱為控制流程的程式設計結構的影響。Ruby 的控制流程有下面這些:條件執行(Conditional execution)— 根據運算式的真實性執行。迴圈(Looping)— 一塊兒重複執行的代碼。迭代(Iteration)— 調用方法的時候給它提供一塊兒代碼,方法在它執行的時候可以多次調用這塊代碼。異常(Exceptions)
Time of Update: 2017-01-13
Ruby 的字面構造器Ruby 大部分的內建類可以使用 new 來執行個體化:str = String.newarr = Array.new有些類不能使用 new 來執行個體化,比如 Integer 類。有些內建類可以使用字面構造器,就是不需要使用 new ,可以使用一種特別的形式來建立類的執行個體。內建類的字面構造器String:使用引號, —— "new string",'new string'Symbol:冒號在前,——&
Time of Update: 2017-01-13
數組(array),散列(hash)。array 裡的項目有順序,你可以用索引號得到對應的項目。hash 裡的項目是成對的,一對裡有個 key 還有個對應的 value。得到項目的 value 可以使用項目的 key 。任何的 Ruby 對象都可以作為 hash 的 key 或者 value ,不過注意 key 在 hash 裡一定是唯一的。hash 在其它的語言上也叫 dictionaries 或者 associative arrays 。array 與 hash
Time of Update: 2017-01-13
Ruby Regex的字面構造器://試一下:>> //.class=> Regexp模式比對有兩個部分組成,一個Regex(regexp),還有一個字串。Regex預測字串,字串要麼滿足預測,要麼不滿足。看看是不是匹配可以使用 match 方法。做個實驗:>> puts "匹配!" if /abc/.match("the alphabet starts with abc.")匹配!=> nil>>
Time of Update: 2017-01-13
Ruby 對待檔案與 I/O 操作也是物件導向的。Ruby 的 I/O 系統IO 類處理所有的輸入與輸出資料流。IO 類IO 對象表示可讀可寫的到磁碟檔案,鍵盤,螢幕或裝置的串連。程式啟動以後會自動化佈建 STDERR,STDIN,STDOUT 這些常量。STD 表示 Standard,ERR 是 Error,IN 是 Input,OUT 是 Output。標準的輸入,輸出,還有錯誤流都封裝到了 IO 的執行個體裡面。做個實驗:>> STDERR.class=> IO>&
Time of Update: 2017-01-13
Ruby 裡面主要的可調用的對象是 Proc 對象,Lambdas,方法對象。Proc 是獨立的代碼序列,你可以建立,儲存,可以作為方法的參數,你願意的話,也可以使用 call 方法執行它。Lambdas 跟 Proc 對象很像,Lambda 其實就是 Proc 對象,不過稍有不同。Proc 對象用 Proc.new 建立一個 Proc 執行個體:pr = Proc.new { puts "inside a proc's block" }上面的代碼塊就是 Proc
Time of Update: 2017-01-13
在users/index視圖中,僅僅通過一句代碼就能自動產生分頁連結:<%= will_paginate %>我並未告訴它改對哪個目標數組進行分頁,然而它能智能定位到@users變數。太神奇了,忍不住好奇,看了下代碼def will_paginate(collection = nil, options = {}) . . . collection ||= infer_collection_from_controller .
Time of Update: 2017-01-13
用 logstash 的人都知道在 http://grokdebug.herokuapp.com 上面調試 grok Regex。現在問題來了:翻牆技術哪家強? 頁面中用到了來自 google 網域名稱的 js 檔案,所以訪問經常性失敗。所以,在終端上通過命令列方式快速調試成了必需品。其實在 logstash 還在 1.1 的年代的時候,官方 wiki 上是有一批專門教大家怎麼通過 irb 互動式測試 grok 運算式的。但不知道為什麼後來 wiki 這頁沒了……
Time of Update: 2017-01-13
我試圖通過 rbenv 安裝 Ruby,但失敗了,錯誤如標題所示。Ruby-build 上有人報告類似的錯誤,作者也在 wiki 上給出相應的環境要求說明。但裡面並沒有提到 openSUSE 系統。依他們的思路,我尋找了 openSUSE 下的相應 openssl 包:$ zypper se openssl找到的有 libopenssl-devel 等,$ sudo zypper in libopenssl-devel之後再通過 rbenv 安裝:$ rben install 2.0.0-p35
Time of Update: 2017-01-10
標籤:精通 基於 rails china net html lan linux系統 實戰 由於工作任務重,時間緊,沒有太多學習的時間,大致找了些線上學習資料,這裡做個整理,希望對同樣準備學習的朋
Time of Update: 2016-12-29
標籤:失敗 tab pap 分享 版本 開發 blog 卸載 情況 rvm是ruby的版本管理工具 還可對ruby進行 安裝 卸載 等 1、安裝 curl#
Time of Update: 2016-12-26
標籤:sample gns iss memcached vts pid xdp os x dht Chapter4: Starfish
Time of Update: 2016-12-26
標籤:log 時間 not sep 簡單 ima 互動 ati word http://ruby-doc.org/stdlib-2.3.3/libdoc/optparse/rdoc/Option
Time of Update: 2016-12-26
標籤:todo opd rem tdd cin apm 完全 kvo call Part III Distributed Message Queues
Time of Update: 2016-12-21
標籤:var class 編程 初步 object 子類 使用 原則 環境 Ruby中的類變數,很多文章都是不太建議使用的,主要原因在於他的一些特性容易導致犯一些錯誤,尤其在廣泛使用元編程的時候