2015年4月30日木曜日

AngularJSで、XMLHttpRequestの「$http」サービス

AngularJSで、XMLHttpRequestの「$http」サービスです。jQueryでいうところの「$.ajax」ということになるのかなと思います(?)。慣れれば、なんとかなるさと信じて、深く考えずに進むことにしましょう(笑)。

var phonecatApp = angular.module('phonecatApp', []);

phonecatApp.controller('PhoneListCtrl', ['$scope', '$http', function($scope, $http) {
  $http.get('json/phones.json').success(function(data) {
    $scope.phones = data;
  });

}]);

実際に設定してみたサイトがこちら



参考サイト
$http(AngularJS)
XMLHttpRequest(Wikipedia)
DI 猿でも分かる! Dependency Injection: 依存性の注入(Qiita)

2015年4月29日水曜日

Nginx 1.9.0 がリリース

Nginx 1.9.0 がリリースされました。ずいぶん早いリリースだなと思ったら、mainline(新機能版)stable(安定版)の違いで、2枚看板でメンテナンスされているわけですね。



参考サイト
Nginx 1.9.0 がリリースされました(マイナビニュース)
どのバージョンのnginxを使うべきか?(考える人、コードを書く人さん)
NGINX 1.8 and 1.9 Released.(Nginx blog)

2015年4月28日火曜日

AngularJSで、並べ替え(orderBy)

AngularJSで、並べ替え(orderBy)です。検索に加えて、並べ替えもできるようになりました。

<select ng-model="orderProp">
  <option value="name">名前順▲</option>
  <option value="-name">名前順▼</option>
  <option value="age">発売順▲</option>
  <option value="-age">発売順▼</option>
</select><p>

<ul class="phones">
  <li ng-repeat="phone in phones | filter:query | orderBy:orderProp">
    <span>{{phone.name}}</span>
    <p>{{phone.snippet}}</p>
  </li>
</ul>

実際に設定してみたサイトがこちら



参考サイト
orderBy(AngularJS)

2015年4月27日月曜日

AngularJSで、繰り返しループでフィルター(Filtering Repeaters)

AngularJSで、繰り返しループでフィルター(Filtering Repeaters)です。簡易的な検索機能が実現できるというもの。

検索キーワード
<input type="text" ng-model="query" placeholder="Search">

<ul class="phones">
  <li ng-repeat="phone in phones | filter:query">
    {{phone.name}}
    <p>{{phone.snippet}}</p>
  </li>
</ul>

実際に設定してみたサイトがこちら



参考サイト
filter(AngularJS)
ngRepeat(AngularJS)

2015年4月26日日曜日

Nginx 1.8がリリース

Nginx 1.8がリリースされています。シェアも伸びてきていますね。
Netflix、WordPress、GitHubなど多数のサイトで利用されており、Netcraftが発表した2015年4月のWebサーバーシェアは14%となっている。

参考サイト
「Nginx 1.8」リリース、多くの新機能を追加(SourceForge.JP Magazine)
April 2015 Web Server Survey(Netcraft)

2015年4月24日金曜日

AngularJSで、テンプレート(Angular Templates)

AngularJSで、テンプレート(Angular Templates)です。案の定、わからなくなりましたので、初歩の初歩に立ち返って、基本的なところから、コツコツ行こうと思います(笑)。AngularJSは、MVWのJavaScriptフレームワークということで、一番わかりやすそうな、テンプレートからです。

実際に設定してみたサイトがこちら



参考サイト
AngularJSのMVWパターンを理解する(Qiita)

2015年4月23日木曜日

AngularJSで、コントロールの追加

AngularJSで、コントロールを追加してみました。サンプル通りなので動いていますが、ちょっと応用して変更を加えると、たちどころに動かなくなります。覗いてはいけない、深い井戸を覗いてしまった気分。先が長そう。

実際に設定してみたサイトがこちら

2015年4月22日水曜日

AngularJS、はじめの一歩

AngularJSで、はじめの一歩を踏み出してみました。何もわかっていませんが、とりあえず、サンプルのチュートリアルだけ手を付けてみようと思います。

実際に設定してみたサイトがこちら
MOGOKさんにお世話になっている意味があまりなく、全く使いきれていません(笑)。

2015年4月21日火曜日

MOGOKにPHPをデプロイ

MOGOKにPHPをデプロイしてみました。PHP 5.6.2が利用できます。感動です。また何か、お馬鹿プロジェクトを始めたい気分(笑)。

実際に設定してみたサイトがこちら。まだ何もないです。



参考サイト
PHPアプリケーションを作成・ビルドするチュートリアル(MOGOK)

2015年4月20日月曜日

オンラインでグラフ作成&共有「Plot.ly」

オンラインでグラフ作成&共有「Plot.ly」 多くのグラフ形式に対応していて、サンプルも数多く用意されています。すぐに使いこなせますが、高機能な故、すべてをマスターするには、ちょっと時間がかかるかもしれません。しかしながら、非常に美しい仕上がりのグラフを描画できます。同じデータでも説得力が違うでしょう(笑)。

2015年4月19日日曜日

Scientific Linux 7.1がリリース

Scientific Linux 7.1がリリースされています。CentOSに負けじと競い合ってくれるニュースを耳にするのは嬉しいものです。

フェルミ国立加速器研究所(Fermilab)や欧州原子核研究機構(CERN)といった研究機関や大学がそれぞれ進めていた研究用途向けのLinux開発の取り組みをまとめたもので、Red Hatが公開するコードをベースにパッケージを追加し、研究用途向けのディストリビューションを目指す。プロジェクトはフェルミ国立加速器研究所の出資を受けている。


参考サイト
RHEL 7.1互換の「Scientific Linux 7.1」リリース(SourceForge.JP Magazine)

2015年4月18日土曜日

Laravelから軽量ライトウェートフレームワーク「Lumen」

Laravelから軽量ライトウェートフレームワーク「Lumen」 正直なところ、Laravelは立派になりすぎたかなという印象がありましたので、コレは素晴らしい一手だなと思います。さすがはLaravel、抜かりなし。

2015年4月17日金曜日

jQueryで処理を遅らせる「setTimeout」

jQueryで処理を遅らせる「setTimeout」です。いわゆるスリープ機能。どうしても必要なときには便利です。

setTimeout(function() {
  // 2秒後に、遅らせて起動させたい処理
}, 2000);

参考サイト
jQueryでsetTimeoutを使ってfunctionの実行を遅らせる方法(BlackFlagさん)
JavaScriptの繰り返し処理におけるsetIntervalとsetTimeout(Morizotter Blogさん)

2015年4月16日木曜日

Djangoで、URLの存在チェック

Djangoで、URLの存在チェックです。httplibを利用すると、httpクライアントのような操作を行えます。

from urlparse import urlparse
import httplib

url = "http://www.example.com/images/sample.jpg"
o = urlparse(url)
conn = httplib.HTTPConnection(o.netloc)
conn.request("HEAD", o.path)
res = conn.getresponse()

# URLが見つかれば、200、存在しなければ、404のステータスコードが返ってきます。
print res.status

参考サイト
Django: check if an image exists at some particular url(Stack Overflow)

2015年4月15日水曜日

Djangoで、テンプレートの継承「extends」

Djangoで、テンプレートの継承「extends」です。共通するデザインを一箇所にまとめて管理できる、よくあるテンプレート機能です。やはり便利。

/templates/base.html(共通部分)
<body>
  <div class="container">
      {% block content %}
      {% endblock %}
  </div>
</body>

/templates/item/index.html(個別のデザイン部分)
{% extends 'base.html' %}

{% block content %}
  {% for item in items %}
  <div class="item">
    <h1>{{ item.name }}</h1>
    <p>{{ item.price }}</p>
    <p>{{ item.detail|linebreaks }}</p>
  </div>
  {% endfor %}
{% endblock content %}

2015年4月14日火曜日

Djangoのテンプレートで、URLの作成

Djangoのテンプレートで、URLの作成です。ドメイン名なしの絶対パスURLを作成してくれます。

urls.py
('^item/(\d+)/$', 'views.item', name='item_detail')
/templates/item/detail.html
{# view指定の場合 #}
<a href="{% url 'views.item' item.id %}">{{ item.name }}</a>

{# name指定の場合 #}
<a href="{% url 'item_detail' item.id %}">{{ item.name }}</a>

参考サイト
DjangoでのURL⇔view関数の正引き・逆引き(orangain flavorさん)
URL dispatcher(Django documentation)

2015年4月13日月曜日

jQueryのscrollイベント制御

jQueryscrollイベント制御です。まずはじめに、.scroll()のイベントは、ちょっとでもスクロールしてカーソルの位置が動けば、常にイベントが発生します。こんな初歩的なことがわかっていないために、しばらく悩みました(笑)。それさえ抑えておけば、あとは力技でも何とかできるでしょう(笑)。

$("#div1").scroll(function() {
  // スクロールすると、イベントが発生し続ける
});


参考サイト
Scroll Function Keeps Triggering: Only Once Please(Stack Overflow)

2015年4月12日日曜日

C++で書かれた将棋電王戦FINAL出場の将棋ソフト「Apery」

C++で書かれた将棋電王戦FINAL出場の将棋ソフト「Apery」 GitHubでソースコードが公開されています。最高に素晴らしいです。USI(Universal Shogi Interface)プロトコルなんてのがあるんですね。非常に勉強になります。



参考サイト
将棋電王戦FINAL出場の将棋ソフト「Apery」のソースコードが公開(窓の杜)
USIプロトコルとは(将棋所さん)

2015年4月11日土曜日

jQueryで、要素のサイズが変わった際にイベントを拾える「jquery.ex-resize」

jQueryで、要素のサイズが変わった際にイベントを拾える「jquery.ex-resize」 jQueryのresize() ではwindowサイズ変更しか検出することができないようなので、ハマりました(笑)。jquery.ex-resizeは、divなどの要素のサイズ変更も拾ってくれます。ありがたい。



参考サイト
jquery.ex-resize(GitHub)

2015年4月10日金曜日

Djangoで、外部キーのリレーションを追跡「select_related()」

Djangoで、外部キーのリレーションを追跡「select_related()」です。非常に便利。
自動的に外部キーのリレーションを「追跡」し、クエリを実行したときにリレーショ ン先のオブジェクトも加えて選択するような QuerySet を返します。 これはパフォーマンスを向上させるための機構で、クエリは (ときに非常に) 巨大 になりますが、以後の外部キーへのリレーションでデータベースクエリが必要なく なります。
サンプルのモデル
class City(models.Model):

class Person(models.Model):
  hometown = models.ForeignKey(City)

class Book(models.Model):
  author = models.ForeignKey(Person)
クエリー部
# select_related()の場合
b = Book.objects.select_related().get(id=4)
# データベースを操作しません。
p = b.author
# データベースを操作しません。
c = p.hometown

# 通常の場合
b = Book.objects.get(id=4) 
# データベースを操作します。
p = b.author
# データベースを操作します。 
c = p.hometown

参考サイト
QuerySet API リファレンス( Django documentation)

2015年4月9日木曜日

jQuery「.one()」 1度だけイベント処理させたい場合

1度だけイベント処理させたい場合の、jQuery.one()」です。

要素のイベントにハンドラを接続し、ハンドラは、要素ごとに1度だけ実行されます。

というわけで、1度だけイベント処理させたいときに、便利です。今まで、よくわかっていませんでしたが、ようやくわかったような気がします(笑)。

$("#div1").one("click", function() {
  alert("1度だけ実行されます");
});

参考サイト
.one()(jQuery API Documentation)

2015年4月8日水曜日

jQueryで、divのボトムにスクロール移動

jQueryで、divのボトムにスクロール移動です。簡単にできそうですが、結構、ややこしいんですよね。

$('#div1').scrollTop($('#div1')[0].scrollHeight);

$("#div1").animate({ scrollTop: $('#div1')[0].scrollHeight}, 1000);

参考サイト
Scroll to bottom of Div on page load (jQuery) (Stack Overflow)

2015年4月7日火曜日

Pythonで、リストから重複するデータを削除

Pythonで、リストから重複するデータを削除です。

set()で、重複を省き、
list()で、再びリスト化する

といった具合です。set()だけだと、オブジェクトとして返ってくるので、再びリスト化しているということのようです。

duplicate = [1, 2, 3, 1, 2, 5, 6, 7, 8]
unique = list(set(t))

参考サイト
Python removing duplicates in lists(Stack Overflow)

2015年4月6日月曜日

Djangoのテンプレートで、ループカウンター

Djangoのテンプレートで、ループカウンターです。知っていれば、どうということはありませんが、最初は慣れが必要かもしれません(笑)。

{% for item in items %}
  {{ forloop.counter }}
  {{ forloop.revcounter }}
  {{ item.name }}
  {{ item.price }}
{%endfor%}

参考サイト
iterate number in for loop of a template(Stack Overflow)
Built-in template tags and filters(Django documentation)

2015年4月5日日曜日

RHEL 7.1ベースのCentOS Linux 7(1503)がリリース

RHEL 7.1ベースのCentOS Linux 7(1503)がリリースされたとのこと。ISOイメージ以外に、AWS向けクラウドイメージや、Dockerレジストリも用意されています。

2015年4月4日土曜日

Django 1.8がリリース

Django 1.8がリリースされました。Django 1.8は、長期サポート版(LTS)で、最低でも今後3年間はセキュリティとバグフィックスのサポートが提供されるとのこと。



参考サイト
PythonによるWebアプリケーションフレームワーク「Django 1.8」がリリース、長期サポート版として提供(CodeZine)

2015年4月3日金曜日

Djangoで、json形式データのパース

Djangoで、json形式データのパースです。json.load()を利用すると、リストやディクショナリ型のデータのように、データを扱うことができます。

import json

j = [{"status": "ok", "id": 123}]
obj = json.load(j)

for jo in obj: 
    print jo['status']
    print jo['id']

参考サイト
How to parse json data python django?(Stack Overflow)
Pythonの基礎 ファイル(JSON)の読み込み編(Pythonの学習の過程とかさん)

2015年4月2日木曜日

Pythonで、連続する日付のリスト

Pythonで、連続する日付のリストです。これぞ、Python的な書き方だなと、しみじみとしてしまったのでメモです。美しい(笑)!

$ python manage.py shell
Python 2.7.6 
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> import datetime
>>> from datetime import timedelta
>>> start_date = datetime.datetime(2015,4,1,0,0,0,0)
>>> day_count = 10
>>> for single_date in (start_date + timedelta(n) for n in range(day_count)):
>>>     print single_date

2015-04-01 00:00:00
2015-04-02 00:00:00
2015-04-03 00:00:00
2015-04-04 00:00:00
2015-04-05 00:00:00
2015-04-06 00:00:00
2015-04-07 00:00:00
2015-04-08 00:00:00
2015-04-09 00:00:00
2015-04-10 00:00:00

参考サイト
Iterating through a range of dates in Python(Stack Overflow)

2015年4月1日水曜日

Pythonで、URLを分解して、各要素にパース

Pythonで、URLを分解して、各要素にパースする方法です。urlparseを利用すると、簡単に処理できます。

$ python manage.py shell
Python 2.7.6 
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)

>>> from urlparse import urlparse
>>> o = urlparse('http://example.com/aaa/bbb?ccc=ddd')

>>> print o
ParseResult(scheme='http', netloc='example.com', path='/aaa/bbb', params='', query='ccc=ddd', fragment='')

>>> print o.netloc
example.com

>>> print o.path
/aaa/bbb

>>> print o.query
ccc=ddd

参考サイト
urlparse — URL を解析して構成要素にする(Python documentation)