月: 2014年12月

AngularJSでsortableのサンプル

AngularJSでsortableのサンプル

最近ちょっとAngularJsを触りだしました。

まだ本家のチュートリアルドットインストール
やったくらいのレベル。

今後業務でsortableなリストとか作る
必要がありそうなので調査。

どうも「AngularUI」を使ってみるとイイっぽい。

■AngularUI
http://angular-ui.github.io/

以下のサイトでも紹介されています。

■AngularUIってどんなもの?
http://knightso.hateblo.jp/entry/2014/04/02/182924

「AngularUI」内の「UI-Modules」にある「ui-sortable」を利用して
作成してみます。

「ui-sortable」の使い方は以下。
angular-ui/ui-sortable
https://github.com/angular-ui/ui-sortable

で、実際にsortableなものを作ってみたのがこちら。

DEMO

一応ソース

<html ng-app="myApp">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
	<title>AngularJs sortable sample</title>
	<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.1.0/css/bootstrap.min.css"></link>
	<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
	<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.2/jquery-ui.min.js"></script>
	<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.1.3/angular.min.js"></script>
	<script src="http://cdnjs.cloudflare.com/ajax/libs/angular-ui/0.4.0/angular-ui.min.js"></script>
	<script>
		var app = angular.module('myApp', ['ui']);

		app.controller('myCtrl', function($scope) {

		// サンプルデータ
		$scope.items = [
		{'title' : 'aaaaa'},
		{'title' : 'bbbbb'},
		{'title' : 'ccccc'},
		{'title' : 'ddddd'},
		{'title' : 'eeeee'},
		{'title' : 'fffff'},
		{'title' : 'ggggg'},
		{'title' : 'hhhhh'},
		{'title' : 'iiiii'},
		];

		// jQueryUIのsortableのオプションが使える。
		$scope.sortableOptions = {
			axis: 'y'
		};

	});
	</script>
</head>
<body ng-controller="myCtrl">
	<div class="container" style="margin-top:20px;">
		<h1>AngularJs sortable sample.</h1>
		<div class="row">
			<div class="col-md-4">

				<div class="panel panel-default">
					<div class="panel-heading">
						↓並び替え
					</div>
					<div class="list-group" ui-sortable="sortableOptions" ng-model="items">
						<a class="list-group-item" href="#" ng-repeat="item in items">{{item.title}}</a>
					</div>
				</div>

			</div>
			<div class="col-md-8">
				<h3>↓データの状態</h3>
				<pre>{{items|json}}</pre>
			</div>
		</div>
	</div>
</body>
</html>

すっきりしてていい感じ。


ベビーバスチェア購入

IMG_4834_2

最近完全二重になった娘ちゃんです。

最近自分の帰りが遅いのでお嫁さんが頑張ってひとりで
お風呂に入れてくれているのですが、待ってる間に娘ちゃん
が号泣するということで、一緒に入れるバスチェアを購入しました。

お風呂広いわけではないので折りたためるのがいいですね。

実際に使ってみたところ大人しく待っててくれるみたいです。
そろそろ寒くなってきたので頻繁にお湯をかけてあげる必要はありますが、
外で号泣されるよりも断然安心みたいです。

本人も気にいってるようです。

IMG_0957_2

DDDリポジトリメモ

DDDリポジトリメモ

いつになってもDDDがしっくりはまらない。。
調べなおしたところをメモ。
リポジトリについて。

集約内部にあるどのオブジェクトもルートから
辿る以外の方法でアクセスすることは禁止されている。

トランザクションの管理はリポジトリが手を出さないほうが単純になる。
■リポジトリとファクトリの関係

ファクトリはオブジェクトのライフサイクルに
おける始まりを処理し、リポジトリは中期から
終わりを管理するのを助ける。

格納されたオブジェクトを再構成することは
新しい概念オブジェクトを生成することとは違う。

ファクトリ

新しいもの

リポジトリ

永続化したもの

リポジトリは既存のオブジェクトを再構築
するにあたってファクトリを使用する。

探してなければ生成する機能は実装してはいけない。
少し便利になるだけ。両者を透過的に組み合わせると
状況を混乱させてしまう。
新しいのか永続化されているのかははっきりわかったほうが都合が良い。

get_headersでhttpsにアクセスしたらエラーが出たのでcurlにしたメモ

get_headersでhttpsにアクセスしたらエラーが出たのでcurlにしたメモ

リンク切れチェックのためにget_headersでhttpsのページにアクセスしたら以下のエラーが出たのでその対処方法

PHP Warning:  get_headers(): Failed to enable crypto in ...

とりあえずget_headersをあきらめてhttpsのときはcurlを利用するように変更した。

以下完成形。

$url = 'https://example.com/aaa/bbb';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_SSLVERSION, 1);
if(curl_exec($ch) === false)
{
 echo 'Curl error: ' . curl_error($ch);
}

$info = curl_getinfo($ch);
echo $info['http_code'];
curl_close($ch);     

上記のコードでhttpsの場合のステータスコードが
取得できるようになった。

エラーを取得しておかないとなんでエラーになったか不明なので
以下のところが大事かも。

if(curl_exec($ch) === false)
{
 echo 'Curl error: ' . curl_error($ch);
}

あと、特定のURLにアクセスした際に以下のエラーがでました。

Curl error: Unknown SSL protocol error in connection to ...

これはPHPが自動で設定しているSSLプロトコルでは駄目と
いうことらしいので

curl_setopt($ch, CURLOPT_SSLVERSION, 1);

上記のように「TLSv1」を指定しました。

その他のCURLOPT_SSLVERSIONは以下のページに記載されてます。
curl_setopt
http://php.net/manual/ja/function.curl-setopt.php

Apacheのアクセスログ、エラーログを一般ユーザも閲覧できるようにする

Apacheのアクセスログ、エラーログを一般ユーザも閲覧できるようにする

やり方を忘れたのでメモ。

CentOSの場合デフォルトでは/var/log/httpdディレクトリまでの権限が
以下のようになっているはず。

■/var

drwxr-xr-x 22 root root  4096  3月  9  2012 var

■/var/log

drwxr-xr-x 10 root root  4096 12月  1 00:15 log

■/var/log/httpd

drwx------ 2 root  root     4096 11月 30 09:51 httpd

この状態で一般ユーザでアクセスするとこんな感じ

$ less /var/log/httpd/error_log                                                                                      
/var/log/httpd/error_log: 許可がありません

一般ユーザもログが見えるようにするには
/var/log/httpdに対して実行権限をつける。

# chmod o+x /var/log/httpd

参考サイト
「`/var/log/httpd/access_log’ を 読み込み用でオープンできません: 許可がありません」の対処法
http://dqn.sakusakutto.jp/2011/11/varloghttpdaccess_log.html