[學習心得] Ruby 跟 Rail 研究心得 (2) - 利用Ruby 把一些基礎問題的改寫

為了達到練習與熟悉Ruby的目的,我找了幾個常用到(也比較簡單的)問題來練習

 

Quicksort (快速排序法)

 

這裡沒有什麼特別語法~主要也確認了~Ruby的參數傳遞的方式,參考http://stackoverflow.com/questions/1872110/is-ruby-pass-by-reference-or-by-value 

 

Fibonacci (費式數列)

 

似乎C++也可以一行搞定~主要是確認ruby也是可以跑遞迴(recursive)

 

中序表示式轉後序或是前序 (Infix -> Prefix, infix -> Postfix)

 

有幾個要注意的,主要是有用到ruby在字串裡面比較強大的應用

  •  “+-/“.include? (op) 這代表著檢查 字元 op 是不是 +-/

  • 在前面有宣告型別 [] 或是 “” 可以避免operator « 錯誤

  • 宣告型別也可以避免 method<=>’ for nil:NilClass (NoMethodError) 的發生

 

 

[學習心得] Ruby 跟 Rail 研究心得 (1)

緣起:

最近開始要找時間研究一些新的程式語言,主要是要讓我自己的程式在server端back-end的一些處理
有些前輩推薦我使用Heroku,主要原因如下:

  • 支援的程式語言相當的多 (Ruby/Golang)

  • 只要是跑一個process之下,基本上算是免費

Ruby on Rails 網路上的資源並不少,不過這一個算是我找到比較齊的,也很適合初學者來學習.

 

 

關於程式語言Ruby:

如同每一個最近產生的程式語言一樣,Ruby有著比較方便的用途與預先設定好的一些API

在此整理一下,個人所認為相當方便與特別的地方:

  • 關於變數型別

    • 是所謂的[強型別]

      • 物件無法了解其型別

      • 無法直接轉換數字與浮點數需要自行轉換

    • 字串轉數字,數字轉字串原本就有提供   .to_s  to_i

    • 大寫是constant 小寫是變數 (類別class名稱要用constant)

    • [注意] Symbol 是記憶體位置固定的但是變數記憶體位置不固定

    • 讓我比較覺得特別的是 除了 nil 與 false  其餘都是true包含

      • if (0)

      • if (“ “)

  • 關於資料結構: 陣列,雜湊表

    • 陣列限制,可以[0] 是字串,但是[1]自數字
  • 關於走訪與iterator

    •  提供許多方便的traversal 或是interator的方式

      • .each do (這很基本)

      • .delete_if { x x >20}
      • .map { x x+”ss”} 來轉移或是轉變array
      • .inject 是取出兩兩成對~我認為這個真的很好用

關於inject 我提出一個範例出來比對C++與 Ruby 字串處理的差異

題目: 找出一個字串列中最大的N個字串,比如說 [“1”, “22”, “333”] 找出前兩長為 “333”, “22”

C++結果如下

Ruby利用inject 結果卻短的個不行

 

最後把我所有的sample code放上來

參考資料:

[學習心得]使用SRC建立一個一件復原系統的步驟

緣起:

對於不會使用電腦的人而言,常常會把系統弄到一堆病毒導致必須要重灌系統.
我弟弟與妹妹就是如此的人,其實網路上已經有出Hiren’s bootcd Tool已經算是相當簡單了
但是他們對於這種Norton Ghost系統依舊不會使用,於是去網路上找了一個方式可以一鍵恢復系統的方法

安裝方式:

其實這一篇教學(SRC F2 一鍵還原for Win7/winxp教學)已經相當清楚了,所以在這裡不詳述安裝的方法.
只是寫一些注意事項:

  • 可能必須重灌你目前的系統,因為partition 無法去除系統的100M

  • 如果要重灌系統,務必注意你的驅動程式與相關使用工具的備份

 

使用過後

相當的方便,不過由於當初要找驅動程式.花了不少時間.
在此比較推薦 DriverEasy這個工具,可以幫助我弄好不少驅動程式的問題

 

相關資源:

 

 

[學習] RaspberryPi 嵌入式電腦研習營 01/24

參考資料:


第一堂課:


** **

What is Raspberry Pi:

  • 只需要very low poet

    • Model#B 700ma(3.5W)

    • Model#A 500ma(2.5W)

    • USB only output 500ma

  • Pi —> Python as major programming language.

其他的Embedded System Board相關資源:

About Hardware in Raspberry Pi (model#B)

  • ARMv6 (ARM11)

  • GPU

    • OpenGL 2.0

    • 1080p 30fps H264/MPEG4

  • 512M main memory

  • TP2 could help to check if problem happen, check if it is 5V.

  • OS:

燒錄OS到Raspberry Pi SD卡


第二堂課


Raspberry Pi開機/設定

  • 開機流程:

    • GPU啟動,載入bootcode.bin

    • [bootcode.bin]啟動快取與記憶體 載入start.elf

    • [start.elf] 讀取config.txt cmdline.txt 劃分記憶體

    • 載入作業系統 kernel,img (畫面開始出來)

  • 開機選單後,先選取第一個選項讓OS分割區占滿整個記憶卡(原本只占2.8G)

  • 多語言選項

    • en_US.UTF-8 UTF8

    • zh_TW BIG5

    • Locale 記得選 en_US.UTF-8

  • 鍵盤選項記得改成”美式鍵盤”

    • Generic 105-key (Intel) PC

    • Other

    • English (US)

  • 超頻建議:

    • 到900Mhz其實還好~其他可能需要小心
  • 預設帳號:

    • ID: pi

    • PW: raspberry (可以修改)

  • 如果需要重新設定 sudo raspi-config

第三堂課


Unix 基本(只記錄忘記的)


GPIO

  • 需要先設定好每個腳位是輸出腳位還是輸入

    • sudo gpio -1 mode 11 out

    • sudo gpio -1 mode 13 in

  • 輸出電源

    • sudo gpio -1 write 11 1

    • sudo gpio -1 write 11 0


XBMC

[Android]關於手機 Galaxy Nexus Root 在Mac OS上Root

由於要練習FireFox OS跟 Ubuntu OS於是還是做了點小投資買了一檯二手的Android Galaxy Nexus來刷
(由於在FFOS 與 Ubuntu OS 的device list找到比較便宜與容易購買的就是這個)

使用心得:
由於我自己習慣使用iPhone跟設計iPhone的App,其實很不習慣Android的“上一頁”實體按鍵.不過多使用幾次之後其實也還好了. 也發現Android沒有iOS的一些方便的功能如下:

  • Tab bar: 也就是下方的Tab按鍵,這是Android App RD要花心思去搞定的.

  • Storyboard: Android 使用Activity設計概念並且用Intent來溝通,但是沒有StoryBoard的階層觀念.

其他細節等到我其它文章再寫..

 

關於Root 手機

  • 打開Development mode. [開發人員選項]

    • 打開[設定] -> [關於手機] -> 選到[版本號碼] ( 大概點個七下) 啓動  (這是什麼怪東西?)
  • 進入 [設定]->[開發人員選項]-> [USB 偵錯]  啓動

  • 要Root 前,必須要先解開Boot loader lock的限制才能夠Root

  • 解開後,手機的OS會重灌

  • 一樣的步驟

    • 進入 [設定]->[開發人員選項]-> [USB 偵錯]  啓動

    • 進入 [FASTBOOT Mode] 

  • 下載 [Root kit] http://downloadandroidfiles.org/download-updated-galaxynexusroot-gsm-verizon-sprint-zip/

    • 執行先解開 [Boot Loader Lock]

    • 開機 -> 設定 -> USB 偵錯

    • 按下enter繼續跑

    • 選擇(1)  GSM ClockworkMod Recovery (Version 6.0.2.3)

    • 利用 [音量鍵] 改到 [Recovery mode] -> 電源鍵執行

    • 選擇 install from SD card 

    • 安裝位於 目錄 0/UPDATE-SuperSU-v1.45.zip

    • 安裝跑完最後選擇No

    • 重開機

  • 開機完 看到應用程式裡面有 [SuperSU] 代表你Root 成功.

參考資料:

Evernote SDK (2) with Android 2014/01/16

Slide: http://goo.gl/RPbGVn

 

About Evernote SDK API trick or experience discussion: (for iOS/Android.)