リポジトリの運用保守性とコードの可読性・メンテナンス性のバランスについて
こんにちは。 今日は、自分の周りではあまり聞かないのですが自分の中にはある、リポジトリの運用保守性について少し考えてみます。 ここで言う運用保守性とは、リポジトリの操作とそれに伴う本番環境への反映などを対象とし、その運用保守性を上げていく対応のことを指しています。 マスターブランチへのマージはrevert出来る状態にしていくブランチ運用で、 処理系変更は影響が出るのは当然なのでそこは除外し、処理系変更以外の、リファクタリング等によるrevert時のコンフリクトを極力なくす事を重視します。 そこを ...
少数精鋭チームにおけるコミット戦略 〜マイクロコミットのすすめ〜
少数精鋭チームとは? 各自が自分の裁量の範囲内で自走出来るチーム 必ずしも優秀なひとが集まっているわけではない メンバーのレベル感を合わせる コミュニケーションコストが低い 極力マネージメントしない 他のメンバーへのサポートを極力少なくする 悪い意味では無く、自走してもらっている分個別に動いてもらった方がパフォーマンスが上がる サポートが必要なメンバーが多いと、周りのパフォーマンスも落ちる =>自走しているとは言えない 相談が必要なところは遠慮無く相談 相談する側のスキルとして、パッとプルリクの ...
システム開発における式年遷宮(しきねんせんぐう)
こんにちは GENDOSUです。 今日は、普段システム開発をしていて、ふと思った事を書いてみます。 式年遷宮(しきねんせんぐう)とは 出典: フリー百科事典『ウィキペディア(Wikipedia)』 式年遷宮をやる主な想定される理由 建築様式を保存するため 神道の精神として、 常に新たに清浄であること (「常若(とこわか)」)を求めたため。 建物がいまだ使用可能の状態であっても、 老朽化することは穢れであり、 神の生命力を衰えさせることとして忌み嫌われたため 他にも色々あるが割愛 これ、システム開 ...
MacBookが無くても作業できる開発環境作り
悩み 普段Macで開発しているけれどローカルに開発環境作るのめんどくさい WindowsでRubyの開発環境作るのもっとめんどくさい Docker入れたら環境の共通化が出来るけど・・・Dockerのストレージドライバ、超遅い その辺の悩みを解決出来る環境をどのように作っているかを紹介します。 前提 Visual Studio Code AWS EC2などのサーバ1台参考スペック※AWS EC2の場合 t3.small(独自にswapを4GB追加) メモリは2GB + SWAP4GB構成。※SWA ...
SSHを使って自分だけの開発用サーバのwebアプリケーションに接続する
サーバにSSHでトンネルを作ってアクセス出来るようにする。 22番ポートしか空いていないようなサーバで3000番で開発環境を起動してアクセスしたい場合などに使用。 ssh -N -L 3000:localhost:3000 ubuntu@dev アクセスはとすれば、サーバ上のwebアプリケーションの3000番に接続出来る。
git管理したくないエディタの設定とか環境依存ファイルを一括で除外する
.gitignoreファイル 更新していますか? 扱うプロジェクトが多いと、エディタ変えたときとかプロジェクトディレクトリに設定ファイルを作ってしまうツール等を導入した場合に大変ですね。 今のチームではエディタは各自好きな物を選ぶ運用になっており AtomとかVSCodeとか使っていたりします。 プロジェクトもいくつかありますが それぞれのプロジェクトの.gitignoreに .vscode .atom と言った物を書くのがあまりうれしくないと思ってしまいます。 そんなときは、~/.gitign ...
awsのEC2でswap領域を指定する際のベストプラクティス
awsのEC2では、一部のインスタンスタイプを除いてswap領域が付いていません。 swap領域を設定する方法としては、swap領域用のイメージをファイルで作成してswaponする方法があります。 今回紹介する方法は、awsナイズした方法で、ボリュームを作成してswapとしてマウントさせる方法になります。 通常はストレージとしてのボリュームはボリュームタイプを標準のgp2に設定されていると思うので、それよりも早いプロビジョンドIOPS SSDというボリュームタイプでswapを作成します。 そうす ...
OpenAMをDockerで立ち上げる(俺俺認証編)
SSOやSAMLといった、主に大、中企業向けのID連携の話になります。
Redis Desktop Manager(rdm)をソースからビルドしよう(mac版)
ちょっと前、Redis Desktop Manager(rdm)はオープンソースで、バイナリも無料で配布されていました。 今は、有料プランになってしまいました。 Contributorプランがあるのは面白いですね。 プルリクエストを送って、マージされたら1年間使えるということのようです。 課金しても良いんですが エンジニア、せっかくなのでコントリビュートすることを目指して まずはビルドできる環境を作ってみましょう。 まずは公式のBuild from sourceを参照します。 手順が実に短いです ...
Dockerお掃除大作戦
こんにちは。gendosuです。 今回は前回のDocker関連ネタから少し時間もたち、Dockerも進化を続けているのでここ最近のDocker事情、MacbookのSSD圧迫問題を再度取り上げてみます。 相変わらずDockerをしばらく使っていると不要なイメージやコンテナがたまってしまいますね。 今回はこれらを「なるべく安全」にお掃除する手順を考えたいと思います。 まずは、何を掃除したら良いのか、と言う情報の出し方 docker system df コマンド $ docker help syst ...
es6でランダムに文字列を生成するロジックを考えてみる
es6では、Array.fromで、配列の数分ループを回せるので 回したい回数分の配列を作成して、Array.fromに渡します。 コールバックでは使用する文字列からランダムに 一文字を抽出する処理をループさせ、 出来上がった配列をjoinすれば ランダムな文字列が完成します。 let digit = 12; // 生成したい文字数 let alArray = ‘abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789’; // ...
gooseをdockerイメージにした話
gooseというgoで書かれたDBマイグレーションツールがあり、これだけを含んだDockerイメージを作った。 hub.docker.comにアップしてあるので run --rm -v `pwd`:/go gendosu/goose goose create example でという感じで実行出来る。
git cloneするときにブランチ指定して–depth指定する
よくチュートリアルのなどで git clone git checkout なんて感じでcloneして使うやり方を書いてあったりするけども 普通にgit cloneすると 他のブランチの情報とかも管理ディレクトリに持ってきている状態なので ディスク容量も食うし、cloneする時間もかかる。 そこで、特にgit的な操作は以後しないのであればgit shallow cloneするのが良い。 やり方は git clone —depth 1 —branch こうすると、ブランチの最新のリビジョンだけを持っ ...
herokuでMemory Quota Exceededと言うのが出るようになったので、puma_worker_killerを入れた話
最近、herokuで稼働させているRailsのアプリが「Memory Quota Exceeded」と言われる事が多くなり、定期的にワーカーの再起動をしたいと思ってました。 見る限り、swapも出てしまい、レスポンスも遅くなっているようです。 このような場合、heroku以外だと、unicornを使うので、unicorn_worker_killerを入れるのですが herokuだとpuma推薦なのでpuma使っていました。 で、pumaもuniconのようにworker killer系の物がある ...
consulとstretcherによるデプロイの検証
概要 consulのevent発行=>event watchの機能をフルに使ったデプロイになります。 event watchで起動されるデプロイツールがstretcherになります。 前提条件 オートスケーリングをする ソースgzとかしてS3においておく 各サーバがS3からソースをダウンロードして展開する(stretcher) オートスケーリングの仕組みは別途あるものとする 検証 consulの基本的な設定 webの場合 #/etc/consul.d/web.conf { "service ...
gitにExcelファイルあげちゃった。そして差分も見たいです。
gitにExcelファイルあげちゃった。そして差分も見たいです。 エンジニア以外にもgithubを使い出しているところが増えつつありますが、 このような要望が少なくありません。 エンジニアとしては、それはExcelがちょっと・・・という感じかもしれませんが 非エンジニアとしてはExcelが自分の仕事の表現手段、というか やはり操作感は他のツールとは別格かと思います。 そこにエンジニア目線で別のツールを押しつけるのもどうかと思ったりもします。 ※別のツールを提供した方が効率が上がるケースももちろん ...
Atomで特定のディレクトリの中でファイルを検索する時に使えるTips
Atom Editorで、プロジェクト内のファイルが多すぎてキーワード検索をかけると結果が多すぎて、そこからさらに検索かけたくなったりします。 そんな時に、例えばこのディレクトリは除外したい or このディレクトリ内だけ検索したい、なんて感じで条件が指定出来れば随分絞り込めると思います。 やり方は、 FindメニューのFind Project 普段、検索する時は こんな感じで検索画面が開くと思います。 この3段目、検索する場所を絞る設定になっています。 例えば、 lib配下だけを検索したい場合に ...
ベンチャー・中小企業における開発チームのあり方
どうも、GENDOSUです。 今回は今までの経験から、少しだけベンチャー・中小企業における開発チームについて思った事などを書きます。 ベンチャー・中小企業における開発チームで重要な事は 短期間で動くものを作る必要がある リーダー(CEO)の想像するものを理解し、形に出来る必要がある 時には体力勝負 開発メンバーは他のメンバーを信頼することが必要 まず 「短期間で動くものを作る必要がある」については、ベンチャーに限らずサービスを作っていく上で、競合よりも遅れてリリーする事は、その分野での先行優位性 ...
Mithril.js でちょっとはまった(いや、かなり)
Mithril.jsを始めてみて、早速というか、すごく初歩的な事かもしれないけど バーチャルDOMという事での罠にはまりました。 バーチャルDOMはバーチャルな訳ですよ。 バーチャル ということは、実際にリアルにはそこに無いわけで 何を言っているかわからないと思うが もう少し具体例を出すと Mithril.jsで動的にul・liのリスト構造を表示させる。 このul・liの各アイテムは、ドラッグ&ドロップ出来るようにする。 ドラッグ&ドロップは、sortable.jsという感じの別のjsライブラリ ...
Mithril.js 始めました
Mithril.js はじめました。 今回、社内で使う管理画面の一部に、動的な制御入れたいな~という要望があり その要望に対して自前で作ると データの流れとかを考えたときにかなりややこしくなりそうだなと思い それならクライアントサイドのjavascriptフレームワークを使おう、という事で React.jsとMithril.jsで比較検討しました。 比較内容としては、他のサイトでも出ていると思うので、それはググっていただくとして 今回自分がMithril.jsを選んだ理由 それは学習コストが低い ...