2014年9月28日 星期日

Laravel 如何接住沒有連上 Redis 的 Error

如果沒有連上 Redis 理當的確會顯示 error message,我還為了測出這個 Error 刻意把 Redis 停掉,不過這是必要的,因為網站放到 Server 之後,也是必須考慮會有 Redis 未開的情況。

這是 Error Message,當在 database 有設定連線 Redis 時,因為連不上 6379 Port:



我的解法其實也沒什麼特別的,雖然有用 try,但是並不打算把 catch 到的 expection 接起來,畢竟把 error 丟給 user 看,沒什麼太大的意義,撈不到 redis 資料就看不到畫面,也不是很合理 :P 那就讓撈不到 Redis 時,直接從 Database Query 出資料吧 :)

我的寫法並不高深,也不會很炫,但至少不會給 User 難看的錯誤訊息畫面...


try {
    // 先嘗試 Redis 連線,連到的話測試使否拿的到要的 Key
   $app = app();
   $redis = $app['redis']->connection();
   $your_data = json_decode($redis->get('YOUR_KEY'));
   //echo '從 Redis 取得';
   
   if ($your_data == "") {
      // 如果 Redis 要不到資料,那就先跟資料庫拿,拿完之後打入 Redis
      //echo '跟資料庫要';
      $data_from_db = Model::orderBy('createdAt','desc')->get();
      $redis->set('YOUR_KEY', json_encode($data_from_db));
      $your_data = json_decode($redis->get('YOUR_KEY'));
   }else{
      $your_data = Model::orderBy('createdAt','desc')->get();
   }
} catch(Exception $e) {
   // 連不到 Redis 那就直接跟資料庫拿
   //echo '跟資料庫要';
   $your_data = Model::orderBy('createdAt','desc')->get();
}


2014年9月27日 星期六

Laravel4 使用 Redis 出現 Call to undefined method Redis::connection() 錯誤

以下次錯誤訊息:


Symfony \ Component \ Debug \ Exception \ FatalErrorException
Call to undefined method Redis::connection()



本來的連線方式是:
$redis = Redis::connection();

後來改用:
$app = app();
$redis = $app['redis']->connection();

參考:
stackoverflow Laravel 4 : Call to undefined method Redis::connection()

2014年9月11日 星期四

解決 Fatal: Unable to create '.... /.git/index.lock': File exists. 錯誤

git commit 時一直出現 index.lock 的狀況,導致檔案無法加入 commit 的項目:

解法就是砍掉 .lock

rm -f ./.git/index.lock

就可以 commit,不知道有無更好的解法 :)

Lazy Line Painter (具有做 SVG 描線動畫的 JS 產生功能)


前陣子找到的工具,因為在研究如何做出描線的動畫,而且畫質要好,第一個想到的就是 SVG,但是我對 SVG animation 也不熟,後來就找到這個工具了。

首先呢,他不能畫塊狀的東西,你要畫的,要是『線』。

Then? 準備好你的 SVG 檔案,拖到網站下方的這個框框,就會幫你產出 JS。
至於有些基本的 Config,你可以再額外調整,像是線條寬度/ 線條的顏色等等。

是不是很 Easy 呀~ 喜歡嗎? 喜歡就還是要多利用時間了解 SVG animation 比較實用哦,工具畢竟是工具,了解背後的原理似乎比較 high :)


老實說我也不常用,但是常常就會遇到想要用的時候忘記哪時候見過他 XD

臺北的生活


每天晚上,如果無聊,就是打電腦⋯  
下班後的扣打是電腦的充電量用到 20% 就可以洗洗睡、發呆,
好處是學什麼速度都加快,缺點就是容易被別人覺得宅
(因此才會常常往咖啡店走 xd)
不過⋯這也不是很重要的事xd
台北對我而言,就是工作的地方,
這裡沒有親情,
亦不是家鄉,
哎⋯有時候難免還是會想家,
甚至懷念大學刻木頭的日子⋯(那種當學生的感覺真的很好,一切都單純)
但是就是沒辦法,這很現實。
除非我有經濟上的自由,否則很難為所欲為,就算有經濟上的自由,也很難為所欲為。

一轉眼來台北也兩年了⋯ 我得到了什麼,也留下了什麼,當然也失去了什麼,習慣就好,開心生活很重要~。我常在心中告訴自己,過去的美好是很好的回憶,但不能一直活在過去,現在當下的自己,也會是以後的過去,回憶是很兩極的事情,不好的回憶,想起來會是心裡的疤,丟臉的, 難過的, 羞愧的都有,所以之後就會避免留下疤痕,You know :)


發這篇不是因為中樂透還是發票,也不是明天有颱風,只是突然想打字,
一如往常,
明天照常上班 :D




2014年8月31日 星期日

就這樣偶爾放肆的過吧

『 就這樣偶爾放肆的過吧。』
我的這個程式相關的 Blog,荒廢了許久,好久沒寫了...

不過,今天不聊技術,不講 Js ...,讓我偶爾廢話一下,自己的生活吧。



差一點我都要忘記以前常寫文章的自己,是如何在下班後,窩在房間,狂飆文字的人生是怎麼過的。只能說,今年發生了好多好多事,各種挫折/憂心/難過/怪怪的事,好像都在今年發生了,讓我重新的看待自己的人生,好像到了另一個層次,也越來越了解,自己想要的東西是什麼。


2014年7月8日 星期二

安裝 elasticsearch-head 界面

elasticsearch-head  是 A web front end for an elastic search cluster,簡單來說裝了之後能夠提供一個界面來顯示 elasticsearch 叢集(cluster),說是界面,其實就是利用 port (9200),但是網址是 /_plugin/head,在 browser 跑這個畫面,可以直接透過  elasticsearch-head 做搜尋,安裝方式非常簡單,首先可以在 github 下載。

如果不習慣 curl ,或是需要一個同時可以查看 cluster 狀態, 搜尋 index 等操作的功能,

安裝方式
提供兩種方式給你安裝:

1. 安裝在 node 的環境下
如果有使用 node 的朋友,你的選擇就是 clone 這個專案,然後 npm install,最後用 grunt server 去跑。



2. 以 plugin 的方式安裝在 elasticsearch 的 plugin 資料夾,並且啟動它 (本文使用這種)
真實的路徑要看你把 elasticsearch 裝在哪裡...
sudo elasticsearch/bin/plugin -install mobz/elasticsearch-head
安裝完成
➜ elasticsearch-1.2.1  sudo bin/plugin -install mobz/elasticsearch-head
Password:
-> Installing mobz/elasticsearch-head...
Trying https://github.com/mobz/elasticsearch-head/archive/master.zip...
Downloading .......................................................................................................................................................................................................................................................................................................................................DONE
Installed mobz/elasticsearch-head into /Users/win/elasticsearch-1.2.1/plugins/head
Identified as a _site plugin, moving to _site structure ...

下指令開啟瀏覽器,或是直接開瀏覽器連到 http://localhost:9200/_plugin/head/
open http://localhost:9200/_plugin/head/

畫面:
首頁是可以一覽所有 cluster 的界面,真悲哀,我目前還沒有東西可以玩,不知道怎麼介紹 xddd ,等我把工具們研究一番之後,再來玩一下...  Orz



切換到 Browser 頁籤,可以依照 index 查看 type,甚至單筆資料


 elasticsearch-head  只是 ES 的工具之ㄧ,主要用來看資料的部分,不過要小心,透過這個界面,是可以直接刪除一個 index 的,小心手滑。



還有其他的工具需要在研究,目標放在日誌 (log),跟分析的工具,待續...。

2014年7月7日 星期一

使用 elasticsearch-river-jdbc 匯入 MySQL 到 elasticsearch

Github Repo: Elasticsearch-river-jdbc

(本文若有用到 ES,用來代表 elasticsearch 這個詞)

為什麼要用 Elasticsearch-river-jdbc?
因為我想知道怎麼把 MySQL 的資料轉進去,但是,Elastic Search 原生並不支援 MySQL,所以我們需要用一些特殊的方式,去觸發 Elasticsearch 去 reindexing (重新建立 index),而 elasticsearch-river-jdbc 正好是其中一種選擇。



Elasticsearch River
在 elasticsearch 中,river 這個字代表的是一個資料的來源,也是其他資料庫同步資料到 ES 的方法,通常他是以一種 plugin 或是說外掛的方式,裝在一個 ES 上的服務,透過讀取 river 中的資料並且把它 index 到 ES,像是現在官方有提供的 river 有 couchdb, rabbitmq, twitter, wikipedia。


下載與安裝方式
./bin/plugin --install jdbc --url http://xbib.org/repository/org/xbib/elasticsearch/plugin/elasticsearch-river-jdbc/1.2.1.1/elasticsearch-river-jdbc-1.2.1.1-plugin.zip

2014年7月6日 星期日

Elasticsearch 第一發 - 入門筆記

是說....,你是否有搜尋過,單字的 『Elastic』 是什麼意思嗎 :P


Elasticsearch 是一個開源的資料搜尋分析系統,它可以解決現在 Web 去做資料庫的搜尋的種種問題,嚴格來說也不只是 web,(有可能是為了撈資料的效能,或是 schema free,  real-time 等等)。

Elasticsearch 的目標就是為了解決這些問題,甚至是更多 (做分析等等)。能夠做到類似事情的分析系統除了它之外,也有一套叫做 Solr,兩種都是 Apache Lecene 的骨子。

Elasticsearch 的優點像是安裝簡單, Model 是基於 JSON, Schema free (自由的搜尋模式) and Document Oriented,透過 HTTP 使用 JSON 索引資料,實現多租戶 (Multi Tenant) ,以及分佈式可以對搜尋做 cluster 等等...。

想到 Elasticsearch 的話,就是開源 / RESTful 的搜尋引擎 / Distributed (分佈式的),一言以蔽之,就是 A Distributed RESTful Search Engine。

可以透過以下的 git repo 跟網址了解更多關於 Elasticsearch:




Getting Start
剛開始研究 Elasticsearch 時會有很多專有名詞的疑惑,在來是使用 Elasticsearch 要搭配 Java 的環境。


2014年5月13日 星期二

[IOS] 使用 FacebookSDK 實作 Facebook 登入 (二)

延續 [IOS] 使用 FacebookSDK 實作 Facebook 登入 (一) 的內容,上一篇我們做了這些事:

  • 建立 App 以及申請 Facebook 的 App
  • 加入 FacebookSDK 到專案裡面
  • 設定 .plist

這篇我們會按照 Facebook Login for iOS 這篇的教學,繼續進行製作 Facebook Login 的功能 (使用 Facebook Login 的按鈕)。



1. 增加 Facebook 的 Login UI Control

在你需要置入 Facebook Login 按鈕的 controller 的 .h 檔案 (以我的例子來說,我是在我的 rootViewController 加上 Facebook Login Button ) 把 FacebookSDK import 進來: (同樣的事情也請在 AppDelegate.h 做一次)
#import <UIKit/UIKit.h>
#import <FacebookSDK/FacebookSDK.h>

@interface rootViewController : UIViewController

@end


接著在該 controller 的實作檔 (.m),初始化一個 FBLoginView: (通常我都是放在 
viewDidLoad 裡面)

2014年5月12日 星期一

[IOS] 使用 FacebookSDK 實作 Facebook 登入 (一)


這篇文章會有時效性的問題,請注意 xcode 版本跟 Facebook Login for iOS 的版本,若有更新則本篇的參考價值不大。

最近剛好在研究如何實作 IOS 的 Facebook 登入 (我的開發環境為 Xcode5.1.1)
由於我對 IOS 是新手,如果你也是,以下先提供幾個必要的參考連結,我已經按照觀看順序排列 :) 如果錯誤,歡迎糾正><

2014年5月11日 星期日

[IOS] 筆記 Todo App + Core Data Use

這是最近在學習 IOS 的一些筆記,但為了求快速,後面都暫時用英文寫了,只是過程記錄,請小心服用,完整的 hackpad 網址。不過因為我沒有完整的貼 code 過來,建議看 github repo 的 diff 去看,會更明瞭些。

2014年5月1日 星期四

安裝 CocoaPods + import AFNetworking

其實這邊文章主要是要寫如何使用 AFNetworking,但是因為我看文件後發現,使用 AFNetworking 要用 CocoaPods,所以也就跟著做了,原文出處為此: Getting Started with AFNetworking。

(本來以為 CocoaPods 很複雜,一直沒有裝,沒想到裝了之後覺得還蠻好裝的xd,每次這種要一步一步安裝的事情,我都希望一切順利...)


安裝 CocoaPods 的主要步驟如下

  • Step 1: 使用 gem 安裝
  • Step 2: 建立一個 Podfile
  • Step 3: 建立環境
  • Step 4: 安裝相依性套件
  • Step 5: 在需要使用 AFNetworking 的 class #import AFNetworking


Step 1: 使用 gem 安裝 CocoaPods
$ sudo gem install cocoapods



Step 2: 建立一個 Podfile
你的相依性套件管理需要一個 Podfile 作為管理,而 Podfile 要放在跟 Xcode project(.xcodeproj) 同一個目錄下。
$ touch Podfile

編輯 Podfile
platform :ios, '7.0'
pod 'AFNetworking', '~> 2.0'



Step 3: 建立環境
跑 pod setup 指令,建立 CocoaPods 環境給這個 Project
$ pod setup

pod setup 完成後會出現這樣的 log:
Setting up CocoaPods master repo
Setup completed (read-only access)




Step 4: 安裝相依性套件
使用 pod install 指令:
$ pod install
Analyzing dependencies
Downloading dependencies
Installing AFNetworking (2.2.3)
Generating Pods project
Integrating client project

[!] From now on use `mosquitoSpace.xcworkspace`.

注意,跑完 pod install 之後這個 project 就改使用 .xcworkspace,不使用 .xcodeproj。



Step 5: 在需要使用 AFNetworking 的 class #import AFNetworking
#import <AFNetworking/AFNetworking.h>



參考連結




2014年4月23日 星期三

heroku 遇到 Push rejected, no Cedar-supported app detected 問題

因為我傳了一個純靜態頁面的網站上去,所以在 git push heroku master 時遇到了這個問題:
!     Push rejected, no Cedar-supported app detected


原因是因為我少了幾個關鍵的檔案,
(我上網查過其他人為什麼會遇到這樣的原因,不過我只是其中一種可能)

所以 heroku 無法判斷我的 app 是什麼樣的類別
(heroku 支援很多種開發環境,ex: node, Java, Ruby, PHP... 等等),

所以我在猜想是不是因為我純靜態的頁面沒有一些主要的檔案讓他猜測我是要哪一種環境?!
果然多 touch 一個 index.php 就成功了 push 上去了。
$ git push heroku master
Fetching repository, done.
Counting objects: 5, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 629 bytes | 0 bytes/s, done.
Total 3 (delta 2), reused 0 (delta 0)

-----> PHP app detected
-----> Bundling mcrypt version 2.5.8
-----> Bundling Apache version 2.2.25
-----> Bundling PHP version 5.3.27
-----> Discovering process types
       Procfile declares types -> (none)
       Default types for PHP   -> web

-----> Compressing... done, 22.7MB
-----> Launching... done, v4
       http://YOUR_APP_NAME.herokuapp.com/ deployed to Heroku

所謂的關鍵檔案就是類似:
開發環境是 php 那就要給 index.php
開發環境是 python 那就要給 requirements.txt
開發環境是 ruby 那就要給 Gemfile...等等。 

我倒是第一次遇到這個問題,雖然純靜態網站用 heroku 有點浪費,但是 deploy 真的很快,也不用額外申請外面的免費空間,帶來一堆沒必要的廣告。xd

結論就是呢... 有問題的是我 :P

查詢用 WordPress 做的網站所使用的 Theme (Template)

使用 WPThemeDetector 反查 WordPress 的 Theme

因為要幫忙朋友查看網站使用哪個 Template (Theme),但我不熟 WordPress,還好找到了這個好工具,只要輸入網址,就可幫你看該網站是使用哪個 Template (Theme)。
(但一定要是用 WordPress 做的網站哦 )

http://www.wpthemedetector.com/


Vue multiselect set autofocus and tinymce set autofocus

要在畫面一進來 focus multiselect 的方式: 參考: https://jsfiddle.net/shentao/mnphdt2g/ 主要就是在 multiselect 的 tag 加上 ref (例如: my_multiselect), 另外在 mounted...