偏った言語信者の垂れ流し

2015-01-31

[]CentOS 6.4にPostgreSQL 9.4をインストールして使うところまで

PostgreSQLを使う必要があって手順を調べていたのでメモしておく。

インストール

yumインストールできる。手順はpostgresqlWikiに書かれている。

YUM Installation - PostgreSQL wiki

1. /etc/yum.repos.d/CentOS-Base.repoの [base] と [updates] のセクションにexcludeを追記

exclude=postgresql*

2. pgdgをインストールする

sudo yum localinstall http://yum.postgresql.org/9.4/redhat/rhel-6-x86_64/pgdg-centos94-9.4-1.noarch.rpm

3. postgresql9.4をインストールする

sudo yum install postgresql94-server

データディレクトリの作成

サーバーを起動する前に初期化する。

sudo service postgresql-9.4 initdb

サービスを起動

sudo service postgresql-9.4 start

ロールの設定とDB作成

postgresユーザーでpsqlをまずは起動

sudo su - postgres
psql

tokibitoロールをパスワード無しで作成。権限はCREATEDB。

postgres=# CREATE ROLE tokibito WITH LOGIN CREATEDB;

tokibitoユーザーでシェルからcreatedbコマンドでデータベース作成

createdb tokibito

これでtokibitoユーザーでpsqlコマンドでtokibitoという名前のDBを使える。

参考

ロールの作成 - ロール(ユーザー)の作成 - PostgreSQLの使い方

2014-12-31

[]2014年振り返り

去年のはこれ。

2013年振り返り - 偏った言語信者の垂れ流し

今年は簡単に。

  • 研修の講師の業務が増えた。今のところ事業としては順調なので良かった。
  • 業務用のフレームワーク開発というのを経験出来た。どういう点を重視するかなど学びが多かった
  • リモートワークをもう少しうまく使っていきたい
  • Ingressを積極的にプレイするようになった
  • 後輩の育成のために時間を少し使えた。効果はまだ確認できていないが、来年も続けたい

去年に比べると、主にIngressで歩いたり走り回ったりしてる分、体は健康的。ただし、時間をかけすぎて他のことがおろそかになりがちだった。

来年はもう少しうまくバランスを取っていきたい。

2014-11-24

[][]$scopeをng-controllerの外から参照する

メモ。AngularJSの$scopeをng-controllerの外から参照する方法。

angular.elementを使ってDOMをラップしたオブジェクトを取得し、scopeメソッドを呼ぶ。

AngularJS: API: angular.element

試したのはAngularJS 1.2.27。

test.html

<!DOCTYPE html>
<html>
<body>
<button type="button" onclick="test()">test</button>
<div ng-app="myApp">
  <div ng-controller="myController" id="myElement"></div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.27/angular.min.js"></script>
<script>
var myApp = angular.module('myApp', []);
myApp.controller('myController', ['$scope', function($scope) {
  $scope.foo = "Hello!";
}]);

function test() {
  var element = document.getElementById("myElement");
  // jQueryかjqLiteが有効な場合はセレクタを使える
  // var $scope = angular.element('#myElement').scope()
  var $scope = angular.element(element).scope()
  alert($scope.foo);
}
</script>
</body>
</html>

testボタンをクリックすると「Hello!」という文字列が表示される。

2014-10-28

[][]北海道で #ingress をプレイした感想

出張で10月の後半2週間ほど北海道北見市(北見駅の近く)に滞在してました。

滞在中にIngressをプレイしていました。

平日は基本的に仕事をしていたので、実質プレイしてたのは8日ぐらいでした。

北海道(主に道東や道北)の2014年10月の状況と、行ってきた感想など書いておきます。

もともと3年ほど北海道にいたので地理などは少しわかってる状態です。

北海道気候

北海道は広いので、地域によって寒暖や風の強さ、積雪量などにかなり差があります。

滞在していた北見市の市街地では、昼が10度前後、夜が-4度前後と昼夜の温度差が結構ありました。

季節の変わり目は特に天気が不安定です。最高気温が20度近くある日の翌日に雪が降ったりとか。

峠のほうは降雪してました。帰宅した日(10/28)には札幌でも雪が降ったようです。

外を出歩くにしても、夕方から夜にかけて急激に気温が下がるので、季節問わず服装には注意が必要です。

北海道のポータル

ポータル間の距離は札幌の中心地であれば100m〜200m間隔ぐらいですが、今回行った道東や道北のほうだと1km〜50kmくらい開くことが多かったです。

f:id:nullpobug:20141028203452p:image:h360

申請すればポータルになりそうなものはたくさんあるので、どんどん申請すると良いと思います(いっぱい申請してきました)。

高レベルエージェントも少ないようで、札幌以外では、LV7、LV8のポータルはほとんどなく、LV4〜LV6ぐらいのものが多いです。

そのため、X7とX8の補給は期待できません。道外から行くのであれば、あらかじめ武器は多目に用意しといたほうがいいです(X8を500個ちょっと持って行きましたが使いきった)。

また、北海道では積雪の時期(11月ごろ)になると、春まで通行止めになる道や、閉鎖になる施設が多数あります。

北海道地区 道路情報

一部のポータルはこの閉鎖されるエリアにあり、取り返すことが困難(ほぼ不可能)です。閉鎖の期間は積雪が始まる11月ごろから、雪が溶ける4月、5月ごろまでの約半年になります。

そのため、場所を選べばGuardianの実績は比較的狙いやすいと思います。

低レベルのエージェントでは、一人で構築したポータルから都市間を結ぶリンクを作ろうとしても、リンク可能距離より遠くなることがあるので、LinkAmpを使う必要性があるかもしれません。

私は滞在中に1回だけLinkAmpを使いました(225kmのリンク)

人口が少ないので、大きなCFを作っても関東に比べてMUは極端に少ないです。

f:id:nullpobug:20141028203453p:image:w360

f:id:nullpobug:20141028203454p:image:w360

移動手段

ポータル間距離があるため、徒歩や自転車では厳しいです。エンジン付きの乗り物がメインになります。

私はオートバイで移動してました。東京から仙台まで陸路で移動して、フェリーで苫小牧に渡りました。

f:id:nullpobug:20141011093022j:image:h360

10月の後半は、雪が降っても晴れれば解けるぐらいの時期ですが、夜間早朝は路面が凍結することもあります。

町と町の間が20〜30km程度離れていることが多く、中心地以外は信号がほとんどありません。雪が降ってない時期は道幅が広いので走りやすいです。

f:id:nullpobug:20141028203456j:image:w360

夜間は街灯がない道が多いので、真っ暗な道を走るのが苦手な人にはおすすめできません。

10月末の今の時期だと、日が落ちるのが16時すぎで、17時ごろには真っ暗になります(道東地域は特に早い)。

鹿の飛び出し注意の標識が多く、実際に道の真ん中にいることもあります(一回遭遇した)。熊がいる可能性もあります。

通信環境が悪い

国道沿いでもキャリアと通信方式によってはインターネット接続や通話不可な場所が多数あります。

電柱や街灯がまったくない道が数十キロ続くところもあります。

f:id:nullpobug:20141025144438j:image:w360

ポータルの近くまで行ったのに通信不可、ということもありました(150km移動して行った場所だったので悔しい)

f:id:nullpobug:20141028203458p:image:h360

手持ちがb-mobileのU300のSIMとY!MobileのPocketWifi(GL10P)だったのですが、PocketWifiのほうは市街地以外ではほとんど圏外でした。

また、当然ながら通信手段がない場所で、事故や車両の故障などがおきると助けがなかなか来ない可能性があります。

戦略

リンク作成、CF作成の戦略にも工夫が必要です。ポータル間距離があるため、何度もポータルを往復してポータルキーを集めるのが困難です。

できるだけ移動距離を少なくし、構築できるよう、あらかじめ移動ルートと取得するキーの数を決めておいたほうがいいです。

構築したポータルは熱心なエージェントが近くにいない限り、すぐに取替されるということはそんなに無いです。

物理的に距離が離れているので取り返すにしても時間がかかります。

移動時間を考慮した戦略をとる必要があります。

まとめ

北海道気候が厳しかったりポータル間距離があります。また通信環境が悪いことも多いです。

Ingressを快適にプレイできるかというとそうでもないんですが、観光ついでに楽しむのもいいですし、北海道ならではの戦略もなかなかおもしろいと思います。

というわけで、北海道に行ってお金使ってください。

f:id:nullpobug:20141028203501j:image:w240

f:id:nullpobug:20141028203500j:image:w240

f:id:nullpobug:20141028203459j:image:w240

ごはんもおいしかったよ。

以上。

2014-09-22

[][]Django1.7の管理サイトでアプリケーション名を変更する

Django1.6以前のバージョンでは、管理サイトで表示されるアプリケーション名を変更する方法は通常の使い方では提供されていませんでした。

変えたいのはこの「Myapp」という部分。

f:id:nullpobug:20140922221155p:image

Django1.7ではアプリケーションごとの設定が抽象化、再利用可能な仕組みが導入され、アプリケーション名を設定できるようになりました。

ソースコード

django.apps.AppConfigクラスを継承して、アプリケーション設定のクラスを作成し、アプリケーション名を設定します。

作成したアプリケーション設定のクラスを、アプリケーションデフォルトにします。

試したバージョンはPython3.4, Django1.7です。

myapp/models.py

モデルはいつも通り。

from django.db import models


class Item(models.Model):
    name = models.CharField(max_length=50)
    price = models.PositiveIntegerField(default=0)
    created_at = models.DateTimeField(auto_now_add=True)

    class Meta:
        verbose_name = verbose_name_plural = "商品"
myapp/apps.py

Django1.7で追加されたAppConfigを使います。nameには他のアプリケーションと被らないようにアプリケーションの識別名を代入します。とりあえずはモジュール名で大丈夫です。

verbose_nameにアプリケーションの表示名を代入します。これが管理サイトで表示されます。

from django.apps import AppConfig


class MyAppConfig(AppConfig):
    name = 'myapp'
    verbose_name = "私のアプリケーション"
myapp/__init__.py

default_app_config変数文字列アプリケーション設定のクラスを指定します。

default_app_config = 'myapp.apps.MyAppConfig'

実行結果

「Myapp」の部分を「私のアプリケーション」という表示に変更できました。

f:id:nullpobug:20140922221156p:image

参考

Applications | Django documentation | Django

Django 1.7で追加されるAppConfigの紹介 - 偏った言語信者の垂れ流し