2014年7月26日 星期六

moodle整合ntpc openid login

記錄下來,以免太久沒作又忘了 ^_^

1、裝好模組

2、依新北市所用欄位調整 auth/gauth/index.php

3、修改 moodle 登入表單( login/index_form.html ),加入 openid login 連結

4、修改 auth/gauth/allow_school.php,將允許登入之學校名稱(如:育林國中)加入陣列中

參考資料
http://plog.hlps.tc.edu.tw/post/1/9060

angularjs controller 之間的資料共享

1、 parent - child

parent 有而 child 沒有的,child 可透過繼承取得,也可透過 $scope.$parent 取得

2、獨立的 controller 之間可用 service 的方式達成

in service:

$rootScope.$broadcast('something' , args... );

字串 something 代表發生了某事件

args 為欲傳送之資料,可有多個,可有可無

in controller:

$scope.$on('something' , listener );

監聽某事件( something )

listener 為事件發生時的處理函式,格式為:

function(event, args...)

event 為一個物件,不知道怎麼用就沿用吧(我也不會用 ^_^)

args 接收 $rootScope.$broadcast 傳送過來的參數

參考資料:

http://www.ramandv.com/blog/angular-js-sharing-data/

https://docs.angularjs.org/api/ng/type/$rootScope.Scope

2014年7月25日 星期五

Angular Dialog Service 筆記

可以作到類似彈出式視窗的效果

筆記:

https://www.evernote.com/shard/s78/sh/9d190331-de13-4970-98eb-ebdcc74f4eab/98b9121841f7f59cad3b86df97dddb39

參考資料:

Redux: Creating an Application Dialog Service using AngularJS, Twitter Bootstrap & Angular UI-Bootstrap

https://github.com/m-e-conroy/angular-dialog-service

angularjs 之 $resource

透過 $resource,前端 angularjs 可以很方便的透過 api 與後端如 php 溝通,值得花時間了解一下。

官網文件

這篇文章關於 resource url 的規劃滿值得參考的,較有彈性。

Using RESTful Controllers In An AngularJS Resource

angular.forEach

迭代處理物件或陣列

angular.forEach(obj, iterator, [context]);

obj 要迭代處理的物件或陣列

iterator 為一個 function,用來迭代處理 obj。帶有兩個參數,第一個參數( value )為物件屬性值或陣列元素,第二個參數( key )為物件屬性名稱或陣列索引,沒用到的話可省略。

context 選擇性參數。若有(例如:tmp)則 iterator function 中 this 即代表 tmp

範例:從陣列中取出部份元素
http://jsbin.com/yesip/1/edit

官網文件

Javascript 常用的陣列(Array)操作大全

最近常需要操作 javascript array,找到一篇不錯的文章,中文的呦 ^_^

Javascript 常用的陣列(Array)操作大全

2014年7月24日 星期四

Checklist-model:AngularJS directive for list of checkboxes

可用來處理 checkbox 的複選。

angularjs 一個 checkbox 連結一個 ng-model,一個 model 對應到一個值;但實際使用時希望一個 model 可以儲存多個選項的值(通常以陣列形式)。

用法:

在 app 的宣告中注入相依。

ex:
var app = angular.module("app", ["checklist-model"]);

在 <input type="checkbox"> 中以屬性方式使用之。

以 checklist-model 取代 ng-model,以 checklist-value 設定要回傳的值。

ex:
<label ng-repeat="role in roles">
<input type="checkbox" checklist-model="user.roles" checklist-value="role"> {{role}}
</label>

其中 user.roles 為 user 物件的 roles 屬性,為陣列,儲存值的地方。

詳細範例見參考資料。

參考資料:

http://vitalets.github.io/checklist-model/

angular.copy

語法:

angular.copy( source, [destination] );

source 應該是物件或陣列,但也可以是基本物件、 null、undefined,copy 的來源。

destination 非必要,copy 的目的地。若未提供則產生新物件或陣列;若有提供,則必須與 source 相同類型,且既有的陣列元素或物件屬性會被刪除。

source 若不是物件或陣列(包含 null、undefined),則會直接回傳 source

若 source 和 destination 是同一物件,則拋出例外。

參考資料:

官方文件

javascript 遞迴處理陣列

陣列的 map 方法,以 callback function 遞迴處理陣列的每個元素,產生新的陣列。

參考資料:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map

2014年7月21日 星期一

用 vagrant 建置 Laravel 測試環境

vagrant box add ubuntu/trusty64

mkdir vagrant_laravel_project

cd vagrant_laravel_project

vagrant init ubuntu/trusty64

vi Vagrantfile

# config.vm.network "private_network", ip: "192.168.33.10"

去掉註解

config.vm.network "private_network", ip: "192.168.33.10"

vagrant up

vagrant ssh

sudo apt-get update

sudo apt-get install apache2 mysql-server php5 php5-curl php5-mcrypt

sudo a2enmod rewrite

sudo php5enmod mcrype curl

vi /etc/apache2/apache2.conf

AllowOverride None 改為 AllowOverride All

sudo service apache2 restart

sudo ln -s /vagrant/laravel_project/public /var/www/html/laravel

瀏覽器 http://192.168.33.10/laravel

vagrant 參考資料

這兩天測試了一下 vagrant,的確不錯啊!

不過有一點小問題,我的 host 是 ubuntu 14.04 x64,guest 是 ubuntu server 14.04 x64,在 guest 中/vagrant 下針對目錄執行 chmod 時似乎沒作用,要從 host 中對應的目錄下執行才有效。

Windows host 倒是沒這個問題,反而是 ssh 連線部份麻煩一點 ....

官網文件

[教學]使用Vagrant練習環境佈署

[教學] 客製化 Vagrant Box

用VM才是好的工程師-vagrant篇(入門版)

A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩

Vagrant tutorial

在 Windows 用 Vagrant 快速建立你的 Linux 環境

box list:


https://vagrantcloud.com/discover/featured

http://www.vagrantbox.es/

multi-machine 設定範例


解放開發環境建置之原罪

[教學]使用Vagrant練習環境佈署

官方文件

Windows 下 ssh 的設定:


http://docs-v1.vagrantup.com/v1/docs/getting-started/ssh.html

http://stackoverflow.com/questions/9885108/ssh-to-vagrant-box-in-windows

自製 box


官方文件

將現有的 vm 狀態打包成 box

如何制作一个vagrant的base box

shell scripts for provisioning


Vagrant debian shell

Installing MySQL, PHP and Apache

vagrant-shell-scripts(ubuntu only)

2014年7月10日 星期四

用 git 將本地端的 Laravel application 部署到 OpenShift

在 OpenShift 建好一台 vm for Laravel 4.2 application 之後,利用 git 部署上去很方便的。

1、先安裝好 RHC Client Tools

2、 git pull 專案,git_clone_url 請換成專案的 clone url
git remote add upstream -m master git_clone_url
git pull -s recursive -X theirs upstream master

3、 git push

稍等一下就好啦。

參考資料:

https://www.openshift.com/quickstarts/laravel-41-quickstart

https://www.openshift.com/developers/rhc-client-tools-install