タグ

ブックマーク / blog.shibayu36.org (20)

  • 挫折しないための英語勉強 - $shibayu36->blog;

    最近また英語の勉強をしている。僕自身は全く英語の勉強が続いたためしがなくて、毎回はじめてから1~2ヶ月くらいたつと英語の勉強に飽き、挫折してしまう。けれど今回は何とかして続けたいと思って、いつもとは全く違うアプローチで英語の勉強を続けたところ、今のところ6ヶ月くらい英語を続けられている。 今日はどんな感じで英語勉強してきたか軽く書いてみたい。 挫折しないために決めた方針 これまでは毎回英単語を勉強したり、英語を読んだり、英語のニュースを聞いてリスニングの勉強をしたり、といういわゆる英語の勉強をやってきた。でもこれだと自分は挫折するということが分かった。 今回は海外の人と友だちになれればモチベーション維持できるのではと考えて 海外の人と友だちになってチャットしたり会話したりを勉強の中心にする チャットや会話を円滑にするための勉強をする という方向性でやってみた。 効果的だったもの 効果的

    挫折しないための英語勉強 - $shibayu36->blog;
  • carton化を進めています - $shibayu36->blog;

    OrePAN的なやり方でモジュール管理していたプロジェクトのcarton化を進めているので、進捗をメモしてみる。 整合性が取れるまでcarton installを進める 現状のモジュールのバージョンを完全に固定したままで、carton installしたらあまりうまく行かなかった。プロジェクトにはテストがかなりあるので、まあ全部バージョン上がっても良いとして、carton installする。テストを走らせてみて、バージョンを固定しないと動かないようなモジュールはcpanfileに記述していった。 $ carton install $ # なんかおかしかったらcpanfileを編集 $ carton install cpanfileには以下の様な形でモジュールを固定していった。 requires 'HTTP::Message' => '<= 6.02'; またinstallが終わった後はc

    carton化を進めています - $shibayu36->blog;
  • AWS, chef, Cinnamon等を使った無停止デプロイ(PrePAN carton 1.0化の裏側) - $shibayu36->blog;

    最近PrePAN uses carton 1.0 now! - $shibayu36->blog;でも書いたとおり、PrePANのcarton 1.0化を進めていました。 通常であれば変更点をアプリケーションサーバにデプロイし、サーバを再起動すれば良いのですが、cartonを0.9から1.0に上げるというまあまあ大きな変更を加えるため、事前に動作確認を行い、無停止でデプロイしたいと考えました。そこでAWSを使って無停止デプロイを試してみたのでそれについて書こうと思います。 PrePANのサーバ構成やデプロイ手順の検討 無停止デプロイの説明の前にPrePANのサーバ構成を紹介しておきます。 現状はELB 1つに対し、EC2が2台ぶら下がっているという状態で運用しています。そしてEC2に対してはそれぞれapp-1, app-2という名前でタグがついています。 開発メモ#2 : AWS でのホス

    AWS, chef, Cinnamon等を使った無停止デプロイ(PrePAN carton 1.0化の裏側) - $shibayu36->blog;
  • PrePANのローカル開発環境をchefとvagrantで整えられるようにしました - $shibayu36->blog;

    最近PrePANのcarton 1.0化を進めていたのですが、その過程でvagrantでローカル開発環境をちゃんと作れるようになったので手順を書いていきます。結果として簡単なperlのwebアプリを動かすための、小規模なchefのrecipeの例の一つが出来たと思うので参考にどうぞ。 必要なrepositoryをclone まずGitHub - metacpan/prepan-cookbooksとGitHub - metacpan/prepanの両方が必要なのでcloneします。 $ git clone https://github.com/CPAN-API/prepan.git $ git clone https://github.com/CPAN-API/prepan-cookbooks.git 利用するライブラリのインストールと設定 詳しくはREADME.mdに書いてありますが、va

    PrePANのローカル開発環境をchefとvagrantで整えられるようにしました - $shibayu36->blog;
  • knife-soloを0.2.0から0.3.0にした時の話 - $shibayu36->blog;

    この前vagrantに対してchefを適用しようとした時にハマった話です。 問題 PrePANはvagrantでローカル開発環境を作ることができ、vagrantでVMを作った後、それに対してknife-soloを使ってchefを適用するということをしています。先日Carton 1.0化を進めるかと思いやってみたところ、一度目のchefの適用は出来るのですが、二度目以降はknife solo cookが全く動かなくなりました。 その時出たエラーとしては、rsyncをしていて/tmpのpermission errorが起こっているというものでした。knife-solo 0.2.0 で rsync エラーによって苦しまないためのたったひとつの方法 - Hack like a rolling stoneが参考になります。 修正 まあ解決策としてはknife-soloを0.3.0にあげるということな

    knife-soloを0.2.0から0.3.0にした時の話 - $shibayu36->blog;
    koba04
    koba04 2013/08/14
  • Test::Moreのsubtestで困っていること - $shibayu36->blog;

    最近はperlでテスト書く時はTest::Classを使うようにしている。その理由の一つとして、subtestだけのテストだと少しだけ困ることがあるからだ。 具体的には以下の事がある。 subtestは書かれている順に実行されるため、前のテストの状態に依存したコードが書かれがち 特定のsubtestだけを実行するのが面倒 前のテストの状態に依存したコードが書かれがち 僕の中では、テストが前のテストの状態に依存しないようにすべきと思っている。各テストの依存度が増えると、その後テストを追加したいときにコードの見る範囲が増え、テストが書きづらくなってしまうからだ。 しかし、subtestは単に書かれた順にテストが実行されるので、前のテストの状態に依存したコードが書きやすいと思っている。例えば以下の様なコードが書かれがち(少し極端な例だが)。 use Test::More; # insert_en

    Test::Moreのsubtestで困っていること - $shibayu36->blog;
  • CPANモジュールに含まれるファイルについて調べた - $shibayu36->blog;

    おそらくはそれさえも平凡な日々: CPANモジュールのパッケージングの歴史 の話を見ていて、興味が湧いたというのと、CPANモジュールを作ってもそういうところは無視してしまっていたので、これは良くないと思い少しだけ調べた。 lib, bin, t, xt README, Changes, LICENSE Build.PL, Makefile.PL MANIFEST, MANIFEST.SKIP META.yml, META,json MYMETA.yml, MYMETA.json blib パッケージの歴史 先程も書いたけど、おそらくはそれさえも平凡な日々: CPANモジュールのパッケージングの歴史に非常によく説明されているので、これを見るのが一番手っ取り早い。 かなり適当にまとめると makeでビルドしよう ExtUtils::MakeMakerでMakefileを作ろう でも簡単なこと

    CPANモジュールに含まれるファイルについて調べた - $shibayu36->blog;
  • 「入門Chef Solo」を読んでChefに入門した話 - $shibayu36->blog;

    これまでChefとか全くやったことなかったのだけれど、PrePANとかで必要になったのとなんとなく興味もあったので、naoyaさんが最近出した入門Chef Soloを読んでみました。 入門Chef Solo - Infrastructure as Code 作者:伊藤直也伊藤直也Amazon 読んでみた感想としては非常によくまとまっていて分かりやすいけど、全くChefをやったことない人にとってはChefの実行を試すフェーズが少しやりづらい印象を受けました。理由としてはAWS環境を持っていない場合、2,3章のChefを試す章ができず、さらにそのあとにvagrantでローカルに仮想環境を作るのを学んだとしても、その仮想環境を使って試す部分が少ないためです。 そこで僕は全くchefをやったことない人はまずvagrantでの実行環境を作れるようになってから、を読み始めるとより知識が深まるのではな

    「入門Chef Solo」を読んでChefに入門した話 - $shibayu36->blog;
  • 職業プログラマーなら必ず読むべき「Code Complete」 - $shibayu36->blog;

    Code Completeの上下巻を読んだ。 CODE COMPLETE 第2版 上 完全なプログラミングを目指して 作者:スティーブ マコネル日経BPAmazonCODE COMPLETE 第2版 下 完全なプログラミングを目指して 作者:スティーブ マコネル日経BPAmazon 読んだ感想としては、職業プログラマーなら必ず読むべきだなと感じた。 このではソフトウェアコンストラクションに関する話題を扱っている。このの中でソフトウェアコンストラクションとは、詳細設計、コーディングやデバッグ、単体テストなどなど、要求定義が終わった後、ソフトウェア製作に必要なプロセス全般のことを指している。 主なテーマとして、どうやってソフトウェアにおける複雑さを減らすことが出来るのか、について書かれている。そのテーマをいろいろな観点から説明されている。例えば以下の様な観点がある。 上流工程の欠陥による

    職業プログラマーなら必ず読むべき「Code Complete」 - $shibayu36->blog;
  • Kansai.pmに行ってCinnamonというデプロイツールについて発表しました - $shibayu36->blog;

    http://www.zusaar.com/event/476003 に参加して来て、前作ったデプロイツールであるCinnamonについて発表して来ました。 発表したこと 以前capistranoの奥深さに毎回ハマっているのを怒りを覚えて、もっとシンプルなデプロイツールであるCinnamonをantipopさんと一緒に作ったのでその発表をしてきました。それなりに好印象っぽかったので、発表してよかったです。 スライド Cinnamon - simple deploy tool from Yuki Shibazaki デモで使ったサンプルコード https://github.com/shibayu36/cinnamon-deploy-sample 簡単に紹介すると CinnamonはMinimumというのと、Role x Taskというのを思想として持っている Minimum : デプロイの方

    Kansai.pmに行ってCinnamonというデプロイツールについて発表しました - $shibayu36->blog;
  • 自分の開発アイディアの出し方から手を動かすところまで - $shibayu36->blog;

    最近自分の開発環境を整えるとか、趣味でちょっとしたものを作るとか、そういうことをしているのですが、今日は自分の開発アイディアの出し方から実際に手を動かすまでについてちょっとだけ書いていきたいと思います。 僕は開発アイディアみたいなのを、ひたすらブレストして思いつくみたいなのは苦手なので、思いついた時にさっと書き留めるというふうにしています。そして書き留めたアイディアの中から、実際にやることを決めるというふうにしています。実際の流れは次のようにしています。 思いついたことはとりあえずEvernoteのアイディアノートみたいなのに書いておく 思いついたアイディアはとりあえず置いておいて、少し溜まってきたら一度見返してみる 見返してそれでも良いと思ったアイディアはTrelloというTODO管理サービスのNewに投げ込む TrelloのNewに入っているものを見ながら実際に手を動かしてみる ただし

    自分の開発アイディアの出し方から手を動かすところまで - $shibayu36->blog;
    koba04
    koba04 2013/01/31
    Trelloよさそう
  • 自分とはてなダイアリーを振り返って - $shibayu36->blog;

    はてなダイアリー10周年おめでとう!キャンペーンがいい機会なので、はてなダイアリー・はてなブログと自分を振り返ってみる。 はてなダイアリーでブログを始めだしたのは、2010/2/16だった。ダイアリーのタイトルは「Dive into the Tech World」。記念すべき最初の記事はPHPセキュリティ - $shibayu36->blog;(既にはてなブログにインポートしてしまったのでブログの記事になってます)。スターもブクマも何もついていない。多分アクセス数も一桁台だと思う。 この頃はプログラミングをちゃんとやり始めた時期で、自分のやった技術的な内容をメモがてらブログに書き出しておこうという感じだった。人に見せようとか何も考えてなくて、ただ自分用のメモとして。symfonyのデータベースモデルで配列処理をする場合 - $shibayu36->blog;とか、さくらインターネットにg

    自分とはてなダイアリーを振り返って - $shibayu36->blog;
    koba04
    koba04 2013/01/17
    すばらしい
  • DBIのconnect_cachedのいろいろ - $shibayu36->blog;

    最近DBへの接続をリクエスト単位ではなくリクエストを処理するプロセス単位(Starmanのworkerプロセス単位)でキャッシュしたいということがあって、DBIのconnect_cachedを使うことになった。Scope::Container::DBIでももしかしたら出来るのかもしれないけど、とりあえずconnect_cachedで実装した。そこでいろいろはまったのでメモ。 connect_cachedについて perldocに connect_cached is like "connect", except that the database handle returned is also stored in a hash associated with the given parameters. If another call is made to connect_cached wit

    DBIのconnect_cachedのいろいろ - $shibayu36->blog;
  • MySQLをさらに理解するために読んだ記事まとめ - $shibayu36->blog;

    最近MySQLの勉強をしていました。実践ハイパフォーマンスMySQLを読むべきという話を聞いていたのですが、かなり網羅的に書かれていて、今の知識ではどれが重要なのかわからない状態でした。そこで色々調べてみて、参考になる記事をいくつか見つけたので、少しまとめてみようと思います。 今回まとめた記事を読んで、大体以下のことが理解できました。 インデックスの使われ方とその構造(MyISAMとInnoDB) EXPLAINの詳しい使い方、見方 InnoDBの特性 ALTER TABLEの特性 レプリ遅延 まず最初に Webエンジニアのための データベース技術[実践]入門 (Software Design plus)posted with amazlet at 12.06.02松信 嘉範 技術評論社 売り上げランキング: 9767 Amazon.co.jp で詳細を見る 松信さんの書いた「Webエンジ

    MySQLをさらに理解するために読んだ記事まとめ - $shibayu36->blog;
    koba04
    koba04 2012/06/04
  • ssh port forwardingsとtsocks - $shibayu36->blog;

    今日はsshのport forwarding周りとtsocksについて調べてみた。そのメモ。 ssh port forwards http://www.turbolinux.co.jp/products/server/11s/user_guide/x9016.htmlらへんが分かりやすかった。簡単に言うと「あるhost:portへのアクセスを、別のhost:portへ転送する」という感じでしょうか。 sshで以下のような感じにすると転送できる。 # localhostの1080番をhost.mydomainの22(SSH)に飛ばせる ssh -L 1080:host.mydomain:22 host.mydomain 実際にlocalhostの1080番にsshでアクセスすると、host.mydomainのsshdにつながります。 ssh -p 1080 localhost ssh dyn

    ssh port forwardingsとtsocks - $shibayu36->blog;
    koba04
    koba04 2012/03/25
  • Qudo, daemontools, capistranoを使ってWorker処理の仕組みを作る - $shibayu36->blog;

    最近PrePANの開発を手伝っていて、Workerの仕組みをQudoで作りました。初めてWorkerの仕組みを一から作ったのでメモしておきます。 Worker処理に必要な部品、それぞれのQudoでの実装、Workerプロセスを管理するためのdaemontools、capistranoでのdeployという順番で書いていきます。 Workerとは ざっくり言うと非同期に色々実行するための仕組みです。perlだとTheSchwartz、Qudo、Jonkとかがあります。 Worker処理に必要な部品 今回作ってみて、Worker処理は大きく分けて次の三つくらいのものが必要だと分かりました。 ApplicationからJobをinsertする部分(Qudo) 実際のJobの処理(Qudo::Worker) Jobの実行を管理して、Jobに処理を委譲する部分(Qudo, Qudo::Paralle

    Qudo, daemontools, capistranoを使ってWorker処理の仕組みを作る - $shibayu36->blog;
  • debianでメールからperlスクリプトを自動起動する - $shibayu36->blog;

    メールを受け取ったら自動でperlスクリプトを実行するまでの環境構築のメモ。 postfixのインストール 次のコマンドを実行 sudo aptitude install postfix virtualの設定 postfixを複数ドメインで使い分けるには、virtualの設定が必要です。 まず/etc/postfix/main.cfに以下を追記。 virtual_alias_maps = hash:/etc/postfix/virtual 次に/etc/postfix/virtualに以下を追加。この設定をすることで@test.example.com宛のメッセージがtestuserに配送されるようになります。 test.example.com anything @test.example.com testuser 最後にvirtualの反映 sudo postmap /etc/postfi

    debianでメールからperlスクリプトを自動起動する - $shibayu36->blog;
  • 補足 - Web Applicationをきれいに設計するためのMVACという考え方 - $shibayu36->blog;

    Web Applicationを綺麗に設計するためのMVACという考え方 - Dive into the Tech World! では、様々な意見をいただきありがとうございました。コメントを見る限り、うまく伝えきれていないなという部分がいくつかあったため、補足としてまとめたいと思います。 前提 前回の記事は一応前提として、以下のようなものがあります。 Web Application設計の新しい手法を提案したわけではない 昔からある手法の理解が自分の中で深まったので、まとめてみたわけです もらった意見とその補足 MVCにおけるMの定義がおかしいのでは Mの定義がおかしいから、Aがある データモデルがMと思うと失敗する これに関しては、「MにSkinnyを」などというように、記事の書き方が少し良くなかったのではないかなと思いました。Mに関しては、DBへのインターフェイス、オブジェクトの層、ロジ

    補足 - Web Applicationをきれいに設計するためのMVACという考え方 - $shibayu36->blog;
    koba04
    koba04 2011/03/08
    前回のものとあわせて読む
  • Web Applicationを綺麗に設計するためのMVACという考え方 - $shibayu36->blog;

    【2016/03/04追記】以前まとめたこのMVACという名前の設計は既に古くなっており、今はこのようなアーキテクチャで設計していません。 こんにちは。最近ははてなでMVACというアーキテクチャに則って開発をしているのですが、ようやく意味を理解できてきました。そこで今回は「Web Applicationを綺麗に設計するためのMVACという考え方」について、サンプルを交えながら説明していこうと思います。かなり長くなってしまったので、時間があるときにでもどうぞ。 MVACって? データソースやロジックを扱う「Model」、表示・出力を管理する「View」、複数のModelとControllerをつなぐApplication、ユーザのリクエストなどを受け取りViewやApplicationを制御する「Controller」の4つの要素を組み合わせてシステムを実装する方式。MVCをさらに抽象化した

    koba04
    koba04 2011/03/03
    うーん、あとでちゃんと読もう。
  • Mojolicious + Xslate + SkinnyでMVC開発環境 - $shibayu36->blog;

    Perlには非常に多くのフレームワークがあります。非常に大きいものにはCatalystやJifty、小さいものにはMojolicious、CGI::Application、HTTP::Engine、Dancerなどがあります。今Perlではフルスタックのフレームワークを使うよりも、小さいものを組み合わせてWebアプリケーションをつくっていくほうが流行っていると思うので、「小さいものを組み合わせ」ながらMVCで開発できるような環境を考えてみました。 今回はWAFとしてMojoliciousを、テンプレートエンジンとしてText::Xslateを、O/RマッパーとしてDBIx::Skinnyを用いて、MVCでWebアプリケーションを作る方法について順を追って解説します。 それぞれの簡単な説明 Mojoliciousとは SimpleなMVCのWebフレームワーク。軽いプロジェクトならMojol

  • 1