読者です 読者をやめる 読者になる 読者になる

日記

日々のことと、Python/Django/PHP/Laravel/nodejs などソフトウェア開発のことを書き綴ります

uWSGi で Django Channels を動かす

はじめに ちょっとしたお仕事で Django Channels を uWSGI 上で動かそうとしたら、色々と uWSGI 以外のプロセスも起動していく必要がありました。 ぐぐっても 開発環境や使い方の説明はあるものの、デプロイ時の How to があまり見つからなかったので備忘的…

ansible で systemd 配下のサービスを扱う

ansible で管理する systemd サービス ubuntu 16.04 になってから、サービス管理は systemd に変わって、ansible の service モジュールだけでは管理できなくなりました。 どう書けばいいのか忘れがちなので備忘的に記事を残します。 ansible 2.1 以前 uWSGI…

let's encrypt で複数ホスト名対応な証明書を作る

let's encrypt で複数ホスト名対応な証明書を作る タイトル通りですが、割と簡単に複数のホスト名に対応した証明書が取得できるので、やってみました。 今回は ansible playbook のおまけ付きです。 let's encrypt の困った問題 let's encrypt ではワイルド…

正式版になった let's encrypt を試す

let's encrypt 正式版がリリースされました。 2016 年 4 月に let's encrypt は beta が取れて正式版となりました。(今更感がありますが…) クライアントの letsecnrypt コマンドも 0.5.0 になり、さらに certbot と名前を変えています。 そんなわけでサラ…

フリーランスになって、1年が過ぎた

去年、会社を辞めて1年以上が過ぎ、確定申告も無事に終わったのでフリーランスの生活の振り返りと近況をまとめます。 tnamao.hatenablog.com 退職、休暇、フリーランス活動の経緯 前述の退職エントリを書いたけど、2013年終わりから2014年に掛けて体調が悪か…

let's encrypt の証明書発行モードを変更してみた

let's encrypt の証明書更新 この前の記事で、 let's encrypt の証明書更新を試しました。 しかし、standalone モードでの証明書の更新だったため、本来ホスティングしている Web サーバを止める必要があったりとイケてない状態でした。 証明書を Web サーバ…

let's encrypt の revoke とドメイン管理

前回の続きで、もう少し let's encrypt tnamao.hatenablog.com 証明書の破棄 前回のエントリで作成した証明書の破棄を試してみたいと思います。 証明書を破棄するときも、letsencrypt-auto コマンドを使います。 破棄する証明書がある $ sudo supervisorctl …

let's encrypt の証明書を作ってみた

let's encrypt ってなに? HTTPS 通信に必要な証明書を無料かつ、半自動で取得できる仕組みです。 無料で本当に使えるの? ちゃんと使えます。 ただ、古いブラウザやガラケー()のサイトに使うのは時は注意が要ります。 特にガラケーは引っかかると思います…

Windows 10 のタブレット (ASUS TransBook T90 Chi) を買ってみた

ASUS TransBook T90 Chi ってなに? 8.9 インチの Windows 10 のタブレット PC です。タブレットと言いつつ、キーボード分離型の 2in1 ですけどね。 CPU に Atom Z3775 (1.46GHz up to 2.39GHz) 、メモリは 2GB 、ストレージは 64GB (eMMC) が基本スペックで…

Anzu と Momo を使って Raspberry Pi 2 から映像を配信をしてみた

Anzu と Momo Anzu と Momo は時雨堂という会社から発表されたサービスで、この二つを組み合わせるとラズパイから映像配信が出来てしまうらしい。 と言うことでやってみた。2016 年 2 月 15 日までは無料ですし。 Raspberry Pi 2 の構成 OS: RASPBIAN JESSIE…

Otto 入門記 その2

前回で、開発環境の構築とアプリケーションのビルドとデプロイが出来たので続いては、本番インフラの構築です。 教材は、このあたり ottoproject.io Infrastructure Otto はインフラ構築も自動的に行います。 Otto で標準サポートされているのは、AWS 上での…

otto 入門記 その1

実際に otto を動かしながら入門してみたいと思います。 教材はこれ ottoproject.io インストール Otto はバイナリが配られているので、Mac / Linux では zip を展開して出来る otto ファイルを適当なパスの通っている場所に置くだけ。 El Capitan の場合は …

Otto イントロダクション

まずは ↑の意訳っぽくなっちゃうけど書いていきます。 Otto って何? クラウドプラットフォーム上のアプリケーションがどうやって開発・デプロイするのか Otto は単一の特定のワークフローを持って全てをコントロールして、チームに最大限の生産性を提供しま…

Ansible と導入障壁などの悩み

説明とか導入とかを説明するときに、うーん。と思うことがあったので、つらつら書いていきます。取り留めの無い話になっちゃったので、時間を捨てても良い人だけ読んでね。 Ansible の導入方法や、チュートリアルなどについては書いてません。下記の記事とか…

Laravel 5.1 入門記 その15 (Eloquent リレーション編)

今回は何気なくすっ飛ばしていた、Eloquent のリレーション定義の回です。 オフィシャルドキュメントではこちら。 Eloquent: Relationships - Laravel - The PHP Framework For Web Artisans リレーションの種類 Laravel で用意されているリレーション定義は…

Laravel 5.1 入門記 その14(Form Request とメッセージのカスタマイズ編)

今回は Eloquent からはちょっと離れて、Request とメッセージリソースのことを。 Validation - Laravel - The PHP Framework For Web Artisans Localization - Laravel - The PHP Framework For Web Artisans オフィシャルドキュメント的には、明確にココと…

Laravel 5.1 入門記 その13 (トランザクション編)

今回は簡単に。トランザクション制御です。 Database: Getting Started - Laravel - The PHP Framework For Web Artisans Database Transactions Laravel というか PHP の場合?宣言的にトランザクション制御を行う簡単な方法も無いため、Closure スタイルの…

Laravel 5.1 入門記 その12 (Eloquent 論理削除編)

Laravel 5.1 入門記 その10 (Eloquent SELECT 編) - 日記 Laravel 5.1 入門記 その11 (Eloquent 更新編) - 日記 Eloquent がサポートしている論理削除 (Soft Deletes) についてです。 今回も教材はこちら。 Eloquent: Getting Started - Laravel - The PHP F…

Laravel 5.1 入門記 その11 (Eloquent 更新編)

久々なので立て続けに。 前回同様に教材はこちら。 Eloquent: Getting Started - Laravel - The PHP Framework For Web Artisans 今回は簡単な内容なので、さくさくと。 データの新規登録と更新 前回使っていた Flight クラスを使ってデータを新規登録する例…

Laravel 5.1 入門記 その10 (Eloquent SELECT 編)

超久々に書きます。 Eloquent: Getting Started - Laravel - The PHP Framework For Web Artisans 題材はこれ。 Eloquent Eloquent は Laravel の OR Mapper で、Rails ActiveRecord の PHP 版みたいな位置づけで、モデルがデータベースのテーブルに 1 対 1 …

Laravel 5.1 入門記 その9(Blade Templates 編)

今回は Blade Templates に入ります。 Blade Templates - Laravel - The PHP Framework For Web Artisans ちらちらサンプル的なものが見えてたので、簡単なシンタックスシュガーは飛ばしていきたいところ。 Introduction Blade テンプレートファイルは resou…

Laravel 5.1 入門記 その8(Views 編)

今回は Views です。 Views - Laravel - The PHP Framework For Web Artisans Basic Usage やっとテンプレートの話に突入。 コントローラからプレゼンテーションロジックを分離するために view を使います。 view は resources/views に配置します。では早速…

Laravel 5.1 入門記 その7(Response 編)

では Responses に入門します。 HTTP Responses - Laravel - The PHP Framework For Web Artisans Basic Responses Laravel でルーティングに設定された action (Controller のメソッドや closure) は、文字列か、Illuminate\Http\Response を返すようになっ…

Laravel 5.1 入門記 その6(Request 編)

今回は Requests のセクションを進めます。 HTTP Requests - Laravel - The PHP Framework For Web Artisans Accessing The Request 前回出て来た内容がそのままでした。Request クラスはコンテナから設定され、Illuminate\Http\Request を type-hint として…

Laravel 5.1 入門記 その5(Controller 編)

今回はコントローラ。なんか基盤部分の話から一個レイヤーが上がった感じ。 laravel.com Introduction 単一の routes.php ファイルにロジックを書くわけでは無く、Controller クラスに処理を分解して委譲できる。一般的には Controller クラスは app/Http/Co…

Laravel 5.1 入門記 その4(Middleware 編)

今回は middleware について。 laravel.com Introduction middleware はアプリケーションにリクエストが届く手前でフィルタリングするような処理を実装できるとのこと。例えば認証とか、ロギングとか…。 前回の CSRF Protection で出て来た CSRF トークンを…

Laravel 5.1 入門記 その3(URL Routing 編)

Routing から再開。 HTTP Routing - Laravel - The PHP Framework For Web Artisans Basic Routing URL のルーティングは、 app/Http/routes.php に書いていくらしい。この route.php はApp\Providers\RouteServiceProvider が読み込むらしい。よくわかんな…

Laravel 5.1 入門記 その2(Config 編)

laravel.com このページの Environment Configuration から再開。 Environment configuration 実行環境によって、設定値を変えたいことがある場合は、DotEnv という仕組みで簡単に変えられるらしい。 Laravel Create-Project したときに生成された .env.exam…

Laravel 5.1 入門記 その1(セットアップ編)

本業のお仕事に時間を取られて、なかなか取りかかれなかったけど、 Laravel 5.1 にこれから入門してみたいと思う。 とりあえず攻略本としては、これ laravel.com オフィシャルなドキュメントを元に粛々と基本的なことを試していくつもり。 自分用の備忘録な…

PHP 5.6 on Mac

PHP

色々はまったのでメモ。 phpenv + php-build で、PHP 5.6.10 phpenv + php-build は元々インストールしてあって、前に PHP 5.3 をビルドした環境だったから、問題無くいけるかなと思ったら、結構ハマった。 php-build の master の HEAD を取得すれば、以下…

PHP Composer を使ってみた

PHP

PHP も最近はパッケージ管理ツールがあるらしく Composer というものらしい。 諸事情で使わないといけなくなったため、導入から利用までを簡単にまとめてみたいと思う。 完全に自分用の備忘録ですが…。 インストール Mac 上でやろうと思ったけど、現状の環境…

Beats studio wireless を買ってもらった

退職時の wishlist に Beats studio wireless を入れておいたら、贈っていただけると言う奇跡が起こったので、1週間ほど使ってみての使用感を簡単にレビュー。 どんな製品 Bose QuietConfort 25 の日本限定カラーのことをつぶやいていたら、 これ良いよとオ…

オムロンの体組成計を買ってみた。

はじめに 無事に無職になって通勤とか無くなり、快適に生活できている反面、運動しなくなったので体重や体脂肪率の増加は気になるところです。そんなわけで、今月初めから体組成計を導入してみました。 選んだ基準とか、導入の注意点、使ってみた後の印象な…

退職しました。

2年くらい放置してたか…。ビックリだ。 まず、お前だれよ?(追記しました) 昔 SIer に8年弱ほど居て、主に Java でプログラミングとシステム設計、技術コンサルティング () をやってました。コンサルは ID とセキュリティでした。メインのお仕事は、ライブ…

Subversion で COPY のエラー

etc

Error: Server sent unexpected return value (502 Bad Gateway) in response to COPY SVNの実サーバではなく reverse Proxy 経由で HTTPS アクセスしている時に上記の COPY のエラーが出たら、SVN の実サーバ上の VirtualHost 設定に Destination 変更の設…

buildout自身のバージョン指定

いつも忘れちゃうのでメモ。 $ python bootstrap.py --version 1.5.2 -d init みたいな感じで。

RuntimeError: instance.__dict__ not accessible in restricted mode

表題のエラー「RuntimeError: instance.__dict__ not accessible in restricted mode」という感じで Tracがエラーを出す時は、TracのLocation配下に以下の設定が必要だと、ぐぐると出てくる。 PythonInterpreter main_interpreterしかし、この設定は Tracを…

GIFをSWFのDefineBitsLossless2に変換するコードが無かったから書いたった。

PHPのコードばかりで、あれだったのでPythonで書いたった!Gitにしようかと思ったけど、Macbook Airにmac portsなど入れていなかったから、はてな日記にぺたぺた。xml2swfで出力したXMLに埋め込む前提なので、SWF内のタグ定義とかヘッダーは、バッファに書き…

ぬぅ

Pythonのデバッガ pdb のことを書こうかと思ったが、文章にするのが難しい。習うより慣れろとは、このことか。

Pythonのプログラムをプロファイリングする

TwitterやFacebookばかりで、めっきりと更新が止まってました。 久々に更新ということで、今回は仕事でバッチ処理を書いたときに処理時間を調べるために使った Pythonの cProfileの使い方を書き残しておきたいと思います。 Pythonのプロファイラー Pythonは…

意外と良書?

かなり前に買って積んどいたgihyoの「Python ポケットリファレンス」が意外と良い。 ちょっと初心に戻って、と思って読んでいるんだけど、必要な事が簡素にまとまっているし、本も重くないし良い。あと、説明がクドくないのが特に良い。あんまりリファレンス…

jQuery Mobile (その2)

前回は1つのHTMLの中で、複数ページを構成してリンクを作りました。 今回は、複数のページに分けてみます。

jQuery Mobileをいじくってみた。(その1)

社内失業まっしぐらで、首元がスースーしてきました。(誰か職か仕事をください!) ま、良い機会だと思い jQuery Mobileをいじってみました。ケータイ白書2011 を見てみると日本の3大キャリアの機種別シェアTOP10にスマートフォンが入ってきているようなの…

自作PC、mini-ITXのすすめ。

たまには趣向を変えて。 自作PCの醍醐味 自作PCの醍醐味は、軸を決める事でメーカーPCには無い、特徴のあるPCを決まった予算の中で作れる事かなと思います。 また細かくパーツを決められるのもよいところですよね。 PCを作る時に、マザーボードのサイズ別に…

zipfile を使って ZIP ファイルを生成する

データを圧縮するときに ZIP 圧縮をプログラムから行う事は、遭遇することが割と多いと思います。普通に圧縮だけをしてもつまんないサンプルになってしまうので、仕事でちょっとしたチューニングしたことを織り交ぜつつ、 Python の ZIP 圧縮をしてみたいと…

psycopg2 を使って PostgreSQL に接続する

Djangoを使っていると Model フレームワークからデータアクセスするため、普段は意識しないですが、直接データベースコネクションを使ってデータを取得することも割と簡単です。今回はその方法を。 事前準備 以下の環境で接続を試しています。 PostgreSQL 8.…

Model その3

サボりすぎて自分もあんまり覚えてませんが(笑) Modelの三回目です。 リレーションシップ Django の Model でも当然ながら、外部キーを使ったテーブル間の連携にも対応しています。ではありがちの会社と所属する社員で、サンプルを書いてみます。 from djang…

辞書型のキーと値をクラスのプロパティに設定する

色々と難しい方向に探してしまったのでメモメモ。 setattr(target_instance, 'property_name', property_value)まさか組み込み関数にあると思わなかった。リフレクションでクラスインスタンスを作る場合は classname = "C" clazz = globals()[classname] obj…

Model その2

前回に続いてModelです。今回は、データの問い合わせ方法とテーブルとフィールド名のカスタマイズをやってみます。 データを問い合わせる 前回登録したデータを、Modelクラスを通して取得してみます。Djangoのシェルを起動して、次のようにします。 from app…

Model その1

かなり間があいてしまいました。ようやくですが、Modelのことをざっくり書いていきます。 Modelってなに? Djangoが用意しているModelは、データ永続層にアクセスするコンポーネントです。要は、O/Rマッパーでクラスとテーブルが1対1でマッピングされ、1イン…