sgykfjsm.github.com

DjangoをTango with Djangoで学ぶ - 3 -

DjangoをTango with Djangoで学ぶ - 2 -の続き。今回はモデルの基礎の話。

Webアプリケーションでデータを保存・参照・更新・削除という、いわゆるCRUD操作を行う場合はデータベースを利用するのが一般的で、特にリレーショナル・データベース(RDB)が利用される。RDBに対する操作はSQLを用いられる。これはまぁ一般常識。フルスタックWebアプリケーションの場合、SQLで操作するデータをModelとして定義し、それをORM(Object Relational Mapper)を使って、Modelとデータ(データベースの中にあるテーブル定義)と対応させる。Djangoでもこういった機能を提供しており、今回はこれを学習する。

モニタリングについて思うこと

色々思うところがあって、こんな文章を書いたけど、途中で考えが整理できなくなった。でもまぁ、脳内の考えを一旦吐き出しておいて、いつか気が向いたら、改めて書き直そうと思う。

最近、SRE(Site Reliablity Engineering)だとかなんとかでモニタリングが流行っている気がする。流行っているというか、今までもモニタリングをやっていたんだけど”SRE”という言葉が流行って行く中で、モニタリングの責任が明らかになって、より一般的になったというべきか。また、ポジションとしてのSRE(Site Reliablity Engineer)が確立し、職責として「だれがモニタリングを行なうべきか」ということも明確になったし、DataDogやMackerelなどのようにモニタリングがビジネスとして成立するようになってきたという背景もモニタリングの重要性を高めているのだと思う。あとはGrafanaなんかが提供するダッシュボードがカッコイイというのもあるかな。

Goの正規表現とReplacerを比較した

なんとなく色んな人のISUCON6の記事を読んでたら、Goの正規表現が遅くて苦労した、という話を多く見受けられた。そもそも一般的に正規表現自体が遅いとされており、だからこそ各言語では正規表現エンジンが色々実装されてたりするんだけど、Goではあまりそういう話を聞かない。自分が知らないだけでどこかで話題になっているかもしれないけど。

で、KLabの人の記事では、

まずGoの正規表現は遅いので strings.Replacer を使ってキーワードからリンクへの変換をします。

とあり、なるほどGoで単語の置き換えをするならstrings.Replacerが早いのか、ということを知った。じゃあ、どのくらい早いんですかっていうのを確認してみた。

結論から言うと、strings.Replacerのほうが圧倒的に早い。

DjangoをTango with Djangoで学ぶ - 2 -

DjangoをTango with Djangoで学ぶ - 1 -の続き

これまでは表示するHTML(ただのテキストだけど)をviews.pyに直接記載していたが、Djangoでも他のWebフレームワークと同様にテンプレートシステムを備えている。

テンプレートシステムとは簡単に言うと、独自のシンタックスとHTMLを混ぜておきて、独自シンタックスの部分をサーバーサイドで指定された文字列などに置き換えたりすることだ。場合によっては多少の制御構文を備えており、ループ文やIF文を提供するテンプレートシステムも多い。

GoでSSL証明書の情報を取得したい

タイトルの通り。GoでSSL証明書の検証を行う簡単なコードを書く必要が出てきたので、それを実現するための検証の記録を残す。

ここでいう「検証」というのは、有効期限が現在より未来かどうかを調べるやり方を意味する。

Dockerコンテナの中でsystemdを操作したいの注意点

Dockerコンテナを使ってAnsibleのPlaybookをテストする際に、Playbookでsystemctlを実行しようとして以下のようなエラーが発生した。

1
Failed to get D-Bus connection: Operation not permitted

TR;DL

以下の様にコンテナを起動しておいて、それからdocker execsystemctlを実行すればよい。

1
$ docker run --rm --privileged -d -it --security-opt seccomp=unconfined -e "container=docker" centos:7 /sbin/init

DjangoをTango with Djangoで学ぶ - 1 -

仕事でDjangoアプリケーションを扱うことになったのでDjangoについて勉強を始めた。参考書としてTango With Djangoを購入した。古いバージョンなら無料で入手できるっぽいけど大して高価な本というわけでもないし購入したほうが良いかなと思って買った。

さて、最初は環境の準備を行い、それからViewの基本とURLマッピングについての学習だ。

GoでJSON APIを書く Part2

前回の続き。全体的にちょっとアレなところが多いので、もう少しリファクタリングを行なう。今回のリファクタリングの元ネタは以下。元ネタのほうが説明が簡潔だしコードが綺麗なので、元ネタを読めばコレを読む必要は無い。