タグ

ブックマーク / r7kamura.hatenablog.com (36)

  • MastodonをAWSでシュッと動かすやつ - ✘╹◡╹✘

    MastodonAWS で動かしたい人のために、https://github.com/r7kamura/mastodon-terraform というのをつくった。簡単に動かすという目的以外に、MastodonAWS で動かすために必要な設定をコードで表現することで、どういうインフラが必要になるのかを共有しようというねらいもある。 使い方 https://github.com/r7kamura/mastodon-terraform を fork する CircleCI と連携する 適当な環境変数を与えてビルドする マストドン動く ✌(‘ω'✌ )三✌('ω’)✌三(✌'ω')✌ 別に必ず fork しないといけない訳ではなくて、copy して使ったり terraform module として参照したりしても良い。 構築される環境 ┌---------------┐ | Web B

    MastodonをAWSでシュッと動かすやつ - ✘╹◡╹✘
    honeybe
    honeybe 2017/04/20
    シュッ
  • amakan の React コンポーネント設計 - ✘╹◡╹✘

    説明用の図 例として、amakan anime のトップページ https://anime.amakan.net/ の構造を挙げながら説明する。(ところで amakan anime は今月中に完成予定のサービスで実験的に公開している状態なので、まだまだ至らないところが多々あります…) 登場するコンポーネント一覧 React.Component クラスを継承したクラスをコンポーネントと呼ぶ。主に登場するコンポーネントは以下の通り。 Header Layout Router VideoPrograms Router コンポーネント 最上位のコンポーネントとして、Router コンポーネントが存在する。このコンポーネントを利用して、ページごとにどのコンポーネントを表示すべきかを分岐させる。amakan anime のトップページでは VideoPrograms コンポーネントを描画し、amaka

    amakan の React コンポーネント設計 - ✘╹◡╹✘
    honeybe
    honeybe 2017/03/15
  • awesome-fantasy - ✘╹◡╹✘

    FFスタックでの実装を楽にするために r7kamura/awesome-fantasy というのをつくった。Final Fantasyライクな命名がなされており、かつある程度GitHubでスターが付いているようなツール、ライブラリ、フレームワークなどを蒐集してある。めちゃくちゃ曖昧。何か良さそうなのがあれば雑に教えてもらえると追加するやも。 Rebuild: 105: Fullstack Final Fantasy Framework (Naoya Ito) r7kamura/awesome-fantasy

    awesome-fantasy - ✘╹◡╹✘
    honeybe
    honeybe 2015/08/26
  • Qiitaのトップページのフィードの設計 - ✘╹◡╹✘

    @ainame user.articles.preload(:comments, :stocks_count) みたいにstocks_countのようなassociationを生やしており、stocks_countの内部実装はPreloaderが弄られていてIDだけ取ってる— 内製フレームワーク (@r7kamura) 2015, 8月 23 @ainame これを抽象化するために、Article.has_many(:stocks, counter: true) みたいにすると、article.stocksとarticle.stocks_countがほぼ同じSQLで同時に定義されるようになってる— 内製フレームワーク (@r7kamura) 2015, 8月 23 @ainame それを実現している実装がこれです / k0kubun/activerecord-precount https:

    Qiitaのトップページのフィードの設計 - ✘╹◡╹✘
    honeybe
    honeybe 2015/08/24
  • LambdaとAPI Gateway用のWAF - ✘╹◡╹✘

    https://github.com/r7kamura/fluct 昨日 LambdaAPI Gatewayまとめて管理するやつ - ✘╹◡╹✘ で言ってたライブラリをつくりはじめた。概念的にはRailsとCapistranoが組み合わさったようなツールをつくることになりそうで、とりあえず rails new と rails generate 相当の部分からつくりはじめてる。

    LambdaとAPI Gateway用のWAF - ✘╹◡╹✘
    honeybe
    honeybe 2015/08/07
    期待
  • Amazon Lambdaにまとめてアップロードするやつ - ✘╹◡╹✘

    https://github.com/r7kamura/api-gateway-lambda-example Amazon API GatewayAmazon Lambdaを一緒に管理できるようなツールをつくろうとしてて、とりあえずサンプルアプリをつくりながら徐々にツールに切り出していこうという方針でやってみている。 . |-- README.md |-- functions | |-- function1 | | |-- package.json | | `-- src | | `-- index.js | `-- function2 | |-- package.json | `-- src | `-- index.js |-- gulpfile.js `-- package.json サンプルアプリは手短に言うと上のようなファイル構成になっていて、作成したいAmazon Lambda

    Amazon Lambdaにまとめてアップロードするやつ - ✘╹◡╹✘
    honeybe
    honeybe 2015/08/04
  • Node.jsでAWSのAPIで認証するやつ書いた - ✘╹◡╹✘

    https://github.com/r7kamura/aws-signer-v4 Amazon API GatewayのREST APIを利用したかったんだけど、Node.js用のaws-sdkにはまだその機能が入っていないこともあり、自分で認証するためのライブラリを書いた。リクエストのメソッド、URL、ヘッダ、ボディ、AWSのAccessKeyID、SecretAccessKey、リージョンを、決められた手順に従って加工し、Authorizationリクエストヘッダに入れることで認証が通るようになる。その決められた手順を実装した。詳しい仕様は AWS Signature version 4 のページに記載されているがほとんどの人間は読む必要は無い。自分でこのロジックを実装したいなら、JavaScriptの場合は aws-sdk-js/lib//signers/v4.js にAWSのSD

    Node.jsでAWSのAPIで認証するやつ書いた - ✘╹◡╹✘
    honeybe
    honeybe 2015/07/31
  • API Gateway用にRubyでSwagger触るやつ書いた - ✘╹◡╹✘

    r7kamura/swagger_parser Amazon API GatewayAmazon Lambdaで雑にWebアプリ開発できるような環境をつくろうかと思って、何を思ったか週末の朝から海辺に来て夕方までSwaggerのパーサを書いていた。 Amazon LambdaというのはNode.jsやJava 8用の事前に用意しておいたコードを何らかのイベントを契機に実行させられるというもので、Amazon API Gatewayという最近出てきた怪しいサービスと組み合わせるとHTTPリクエストを契機にコードを実行してその結果を返せるようになる。SwaggerというのはRESTful APIのインターフェースを定義するスキーマの一種で「この GET /recipes というエンドポイントはOAuth2による認証認可が必要でRecipeの配列を返します」みたいな内容を記述できる。似たような

    API Gateway用にRubyでSwagger触るやつ書いた - ✘╹◡╹✘
    honeybe
    honeybe 2015/07/27
    「そこで鎌倉まで来て海見ながらSwaggerのパーサを書くに至ってる」
  • コード読むとき - ✘╹◡╹✘

    コード読むとき普段どうやってるんですか、って今日聞かれた。そのときは喫茶店でお茶飲みながらiPhoneGitHubのページ開いてぼーっと見ているような感じで、特にツールとかなくてlib/vagrant/bundler.rb とか lib/vagrant/pre-rubygems.rb とか見てた。ページ遷移するときにまた見たいファイルのときは必ず次のタブで開いていって履歴を視覚的に残す的な小賢しい細工は適宜やっていっているかも。コードジャンプする機能とかは使ったことなくて、雑にファイル開いたり閉じたりしながら見てることが多い。ボトムアップに読むほうなので、CLIツールだったら実行ファイルとか、Webアプリだったらリバースプロキシとの通信部分から処理の順序にしたがって読んでいくことが多い。あまりツールを使わない方なので、逆に命名規則が統一されていないとか、ファイル名とクラス名の対応が取れて

    コード読むとき - ✘╹◡╹✘
    honeybe
    honeybe 2015/04/15
  • デザイン変更するときキャプチャ撮りまくると捗る - ✘╹◡╹✘

    これまではどちらかと言うとDBやWeb APIみたいな開発作業が多かったけど、最近はHTML/CSSを触るようないわゆるWebデザイン的な作業をする機運が高まってきた。あんまりちゃんとやったことが無いために年始から色々と考えてて、まあその結実としてキャプチャ撮ると捗るという体験があったので書き残しておく。ちなみにキャプチャは無い。あとでデザイン変えたやつ公開したら過程を整理して紹介できると良いと思う。 過程を残すと意見をもらいやすい 『藤村龍至 プロトタイピング-模型とつぶやき』というの中に、プロトタイプとして建築模型をつくっていく過程の話がある。与えられた条件を元にまず最もシンプルな状態から始め、課題を見つけながら少しずつ改善を加えていく様子が実例とともに紹介されている。この作業を反復しながら適用していくことで、模型の状態を都度更新していく。この方法には、設計者以外の人でも設計過程を見

    デザイン変更するときキャプチャ撮りまくると捗る - ✘╹◡╹✘
    honeybe
    honeybe 2015/01/23
  • 『The Essential Web Design Handbook』読んだ - ✘╹◡╹✘

    Rafal Tomalの書いた『The Essential Web Design Handbook』というを読んだ。初心者のためにWebデザインの基となる知識を広く紹介している。構成としては、筆者がWebデザインを行うときのプロセスをまず最初に紹介し、その各段階を追っていきながら、「この作業は無視されがちだけどこういう点で効率的だからやった方がいい」「これを考えるときにはこういう知識を使う。今回の例ではこうやって考えた」という具合に進んでいく。 プロセス 筆者が推奨するWebサイトのデザインプロセスは次の通り: 調査して計画をつくる 発想を膨らませる スタイルガイドをつくる ワイヤーフレームを組む モックアップをつくる コードを書く 調査と計画 調査するというのは、明確なクライアントがいる場合は要求を聞くことであったり、競合サイトの様子を調べてくることであったり、使えそうな資料を広範に

    『The Essential Web Design Handbook』読んだ - ✘╹◡╹✘
    honeybe
    honeybe 2015/01/21
  • 『ソフトウェアテスト技法ドリル』読んだ - ✘╹◡╹✘

    ソフトウェアテスト技法ドリル―テスト設計の考え方と実際 作者: 秋山浩一出版社/メーカー: 日科技連出版社発売日: 2010/10メディア: 単行購入: 7人 クリック: 153回この商品を含むブログ (19件) を見る 『知識ゼロから学ぶソフトウェアテスト』読んだ - ✘╹◡╹✘ を書いたところ、知り合いのテストエンジニアにこれオススメだよと勧めてもらい『ソフトウェアテスト技法ドリル』を読んだ。読みながら、どこでテストを書くのを満足すれば良いのか、このトレードオフはどんな条件下でどういう状態になるのか、テストについて常に信じられるものは何なのか、ということを考えていた。 なんでテスト書いてるのか まあ四年前のなのでググればレビューも沢山出てくるしとりあえずのことは置いといて、テスト書くときにいかに雑な仕事してるかという話でもしたい。日々コードを書いていると、たまに「なんでテスト書い

    『ソフトウェアテスト技法ドリル』読んだ - ✘╹◡╹✘
    honeybe
    honeybe 2015/01/16
  • 権限管理を実装するときの地味な話 - ✘╹◡╹✘

    「あるユーザがXをYできるかどうか」というメソッドを定義したいとき、Userに実装するよりも、Xに実装した方がうまくいくことが多かった。例えば「ユーザが投稿を編集できるか」という、ブログの共同編集のような機能で使うやつで考える。つまり、User#can_edit?(entry) みたいなやつにするか Entry#editable_by?(user) みたいなやつにするかという話になる。 後者の方でうまくいった理由は、Webアプリだとログイン中のユーザが存在しない場合というのがあるが、後者ではuserがnilの場合でも対応できたというのと、Userクラスが長大にならなかったという点 (Abilityクラスとかを全ての場所で統一して使えている場合はそれで良いので各自適当にやっていってほしい)。あとメソッドの命名規則の問題があって、名詞形 (例:User#name) か、xxx?で終わるメソッド

    権限管理を実装するときの地味な話 - ✘╹◡╹✘
    honeybe
    honeybe 2014/12/08
  • リモートワークの地味な知見 - ✘╹◡╹✘

    華やかなところはまあググれば出てくるんで、地味なところに触れる。 日報にまとめておく リモートワーク中は、毎朝10:10 - 10:20の間、Google+ ハングアウトのビデオ通話を利用して進捗・問題共有しているんだけど、慣れてないと共有過多で時間が長くなりがち。8人居て、1人5分とかになると重い。いま取り組んでいる実装の話とかを始めてしまったり、あと会議参加者に対して「これどうですかね?」と質問する内容が含まれていたりすると、特に時間が長くなりがち。この辺は、事前にQiita:Teamの日報に前日やったことや翌日やることをまとめておいて、詳しくは日報に書いたんで見てくれという風に改善されたりした。日報、リモートワークで特に役に立つ。では日報を書いておけばミーティングは不要になるのではないかという話になるかもしれないが、この先は君の目で確かめてくれ。 情報の倍率を変えられるようにしておく

    リモートワークの地味な知見 - ✘╹◡╹✘
    honeybe
    honeybe 2014/12/08
  • 大失職Nightの様子 - ✘╹◡╹✘

    同居人の発案により、大失職Nightというイベントが自宅で行われました。当日は東亜飯店から取り寄せられた貴重な料理を頂いたり、同居人の誕生日に送った冷凍マグロを解凍して寿司を握ったりしました。蓋を開けてみれば集まった退職者の人数は二桁にのぼり、人はいつか必ず職を失うのだ、いやいや、君はある重大な事実を見逃している、働かなければ職を失うこともないだろう、などとお互いの知見や感情を少しずつ交換しました。

    大失職Nightの様子 - ✘╹◡╹✘
    honeybe
    honeybe 2014/10/09
    「いやいや、君はある重大な事実を見逃している、働かなければ職を失うこともないだろう」!真理!
  • 「オブジェクト指向でなぜつくるのか」を読んだ - ✘╹◡╹✘

    オブジェクト指向でなぜつくるのか 第2版 作者: 平澤章出版社/メーカー: 日経BP社発売日: 2014/03/05メディア: Kindle版この商品を含むブログ (2件) を見る TL;DR 多くの人の「このを読むべきかどうか」という関心事に先に回答しておくと、「万人が読んでおいて損は無いとまでは言い切れないけれど、オブジェクト指向に興味があって元気もあるという奇特な人間は読んでも良い」です。 オブジェクト指向とは何か 平澤 章さんが書いた「オブジェクト指向でなぜつくるのか」というを読みました。オブジェクト指向を「難しいソフトウェア開発を楽に行うための総合技術」と表現しながら、「オブジェクト指向とは何か」という問いに対して現実的な解を与えようという一貫した姿勢に親しみを覚えました。 保守や再利用を目的とした技術 目的という側面では「オブジェクト指向はソフトウェアの保守や再利用をしやす

    「オブジェクト指向でなぜつくるのか」を読んだ - ✘╹◡╹✘
    honeybe
    honeybe 2014/10/09
    野崎まど推しまで読んだ。
  • 世界線を超える - ✘╹◡╹✘

    開発環境のRailsは、監視対象のファイルが更新されるたびに定数空間を再生成する。ファイルを更新するたびに新たな世界線に遷移すると言っても良い。全ての定数が再読込される訳ではなく、Rails.configuration.autoload_paths に登録され、autoload経由で読み込まれた定数のみが対象になる。このとき、監視対象外の空間から、監視対象の定数を参照していたらどうなるか。例えばlibディレクトリをautoload_pathsに登録していたとして、libディレクトリ内で読み込まれるrack middlewareをRailsのrack middleware stackに追加していたらどうなるのだろうか。 2つの世界 現在の世界で同名の定数が新しく読み込まれようとしたとき、運が良ければ、この現象を検知する仕組みが働いて例外が発生する。しかし運が悪ければ、2つの同名の定数が同じ世

    世界線を超える - ✘╹◡╹✘
    honeybe
    honeybe 2014/09/30
  • 完全に忘れてた - ✘╹◡╹✘

    親が「はてブで見たけどマジか〜〜」ってメールしてきたことに驚いて完全に忘れてた。

    完全に忘れてた - ✘╹◡╹✘
    honeybe
    honeybe 2014/09/18
    !?
  • ストリーム表現とその変換 - ✘╹◡╹✘

    データをストリームとして表現する方法と、ストリームを変換する方法を紹介する。 ストリームはメッセージが流れる川である Pub/Subメッセージングモデルでメッセージを流すためのオブジェクトのことをストリームと呼ぶことにする。ストリームにはメッセージをPublishでき、またメッセージを受け取ったときの処理をSubscribeできる。例えばキーボードからの入力をPublishして、内容をコンソールに出力するような処理をSubscribeできる。 kamo.jsでストリームを表現する ストリームについて説明するために、kamo.jsというストリームを表現するためのライブラリをつくった。kamo.jsは、ストリームを作成するためのkamo.Streamというコンストラクタ関数を提供する。このコンストラクタ関数から作成されたオブジェクトは、publishとsubscribeというメソッド(※プロパ

    ストリーム表現とその変換 - ✘╹◡╹✘
    honeybe
    honeybe 2014/08/21
  • ■ - ✘╹◡╹✘

    何か自分が役に立つWebサービスをつくろうとしたとき、すぐに他の人も使えてスケールするものをつくろうとしてしまって、結果的に他の人も使えてスケールする仕組みは無理だからやめてしまおうという考えに至ってしまう。最初から自分だけが使うようにしてとりあえず作っていればやめることも無かった。

    ■ - ✘╹◡╹✘
    honeybe
    honeybe 2014/08/13
    うむうむ。