サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
掃除・片付け
matsu.teraren.com
概要 15年前ぐらいに設計、実装したシステムの設計と実装を公開します。 目的は、誰かに特許を取られてしまっても困るので。自分で特許を取るほどでもないので共有資産として残しておきます。特許というか、どちらかと言うと論文で発表するほうが向いていそうです。 航空会社のマイルで使われているポイント管理機能の実現方法です。このようなポイントシステムの要求はビジネスサイドではよくありそうですが、設計内容が公開されている事例を見つけられませんでした。 類似ポイントシステム JALやANAのマイルシステム まさにこれと同じ機能の実現方法です。 設計と実装が比較的難しいので、当時はこの機能を実現しているサービスは見つけられませんでした。 2022年の今となってはこのポイントの仕組みはメジャーになりつつあります。様々な大手ポイントサイトで使われています。設計と実装の難易度が高かかったり、ユースケースが限られて
概要 写真のバックアップを安価で安全に保存したいと10年ぐらい前からぼんやりと考えていました。この記事では、やっと満足の行くバックアップ方法を実現したので共有します。ファイルサーバをLinuxにしたことで柔軟なワークフローを構築できました。プロ写真家の場合は、この記事に書いてあるバックアップの期間の単位を1段階粒度を細かくして設定するとより頻度を高められて安全になると思います。 私の写真ファイル保存ワークフロー 私の写真の使い方をまとめておきます。 月に1回ぐらい、デジタル一眼レフカメラでRaw画像で撮影。データはカメラに挿入しているXDカードに保存。XDカードからLightroom経由でローカルPCに転送し、レタッチ、現像。良さそうな写真は現像してGoogle Photo, Facebook, iCloudなどにアップロードして共有。Lightroomからファイルサーバのディレクトリをs
概要 no space left on deviceは、日本語訳すると「空きディスク容量がありません」ということです。まずは、OS自体のディスク容量不足をまずはチェックします。 OSのディスク容量が空いているのに、no space left on deviceが表示された場合はDocker自体に割り当てられたディスク容量が枯渇したことが原因です。 例えば、Docker for Macは20GB分しか確保しないです。 普通にDockerを利用しているとゴミデータが溜まっていくので、不要なデータを消していきます。 下に行けば下に行くほど、重要なデータを消していくことになりますのでご注意ください。 0. 割当領域の拡張 macOSであれば以下のような設定画面から、割り当てているディスク容量の変更を行えます。設定を変更後はDockerの再起動が必要になります。 そもそも、自分が思っている以上にDo
概要 github上でmentionされても気づくのが難しい状態でした。メールはいろいろな通知が送られてくるし、githubのwebサイト上の通知欄は自分から見に行かないと行けないし、後ほどTODOとして未読に変更ができないので自分のタスク管理がしづらい状態でした。github-mention-to-slackというGithub Actionがあったので設定してみたところ、かなり快適でした。紹介されている設定では、運用に不十分なところが多かったので、ほとんどコピペでできるような設定をgistに置いておきます。 設定 githubのrepositoryまたはorganizationのSecretにSLACK_WEBHOOK_URL_FOR_MENTIONとうキーでSlackのwebhook URLを登録します。 (organizationに登録しておけば設定を使い回せるので楽です) 以下を実
背景 CTOA Advent Calendar 14日目の記事です。 CTOの役割や業務については他の素晴らしいCTOが書いてくださっているので、この記事では会社員エンジニアとして働きながら事業アイデアを仮説検証し、自社プロダクトのスタートアップを立ち上げるまでの話をしたいと思います。 一般的にスタートアップを立ち上げるのはハイリスクと思われているかもしれませんが、しっかりとリスクヘッジをすれば超低リスクにスタートアップを立ち上げることができると、実体験ベースで思いました。今回はリスクヘッジの要点を5つに絞ってそのコツをお伝えできればと思います。 概要 私の人生の目標のうち、一部を抜粋します。0からサービスとビジネスを作る。世の中を効率的、便利、公平にする。そのためには、スタートアップをやろうと20年前からの目標です。そのためにはITを使ったスタートアップを立ち上げるというアプローチが最適
背景 事業規模の拡大に伴いオフィスの移転がありました。それに伴い社内ネットワークインフラの構築を行いました。 中小ベンチャーのネットワーク構築の記事は5年前の@wadapさんの記事が詳しいです。まぁ、5年前なので細かいアップデートが色々あるので記事にしておきます。 要求定義 ゲスト用ネットワークの分離(インターネット回線、LAN回線) 将来のシステム監査で指摘されるであろうことなので。 トラフィックのQoS制御のため。 役割(部署)毎にLANの分離 ウィルス感染した場合に被害を減らすため。 重要情報を扱うエンジニアのネットワークを守るため。 安定 ストリーミングを扱うプロダクトを扱っているので安定性を高める。 特にWiFiは安定してほしい。 WiFiと有線を用意してL1レイヤの冗長性を確保しておく。 低レイテンシー 初期費用、固定費は安く。 20人ぐらい (平均3台/人で計算して60端末同
概要 「日本のインターネットの父」と呼ばれる慶応大環境情報学部教授の村井純さん(64)が定年を迎え、16日、最終講義があった。村井さんは「インターネットに国境はない。国や政府が分断したり規制しようとしたりする試みは続くだろうが、若い人たちで守ってほしい」と呼びかけた。 https://www.asahi.com/ 村井先生の最終講義。16年ぶりに村井先生の講義を聞いて懐かしくなりました。せっかく良いことをたくさんおっしゃっていたので人力で書き起こしをしました。(Amazonウィッシュリスト) 共同授業担当 佐藤特任准教授(以下教員): そろそろ始めましょうか。 村井: はい。それでは皆さん、こんにちは。インターネットの、2019年秋学期の最終回ということで集まっていただきましてありがとうございました。学生は、履修者があふれるはずだけど来てない。ハハハ。その代わり、なんか変な普段見慣れない人
背景 6000枚の画像を一括変換したかったので。普通にmogrifyを打つだけだと1プロセスなので1コアしか使ってくれないです。最近のPCは1コアの周波数を低めにして、多くのコアを積んで処理を並列に動かすことによって高速化を行うのが主流です。 アプローチ ちゃんと全てのコアを使い切って変換をする必要があります。xargsコマンドを使うと並行処理を簡単に行えます。-Pで並列数、-nで1コマンド辺りの引数の数を指定します。-nは無くても良いですが1コマンドの起動コストを減らすために指定してあげるのが良いです。ファイル名に半角スペースが入っている場合があるので、find側に-print0オプションと、xargs側に-0オプションを指定しています。 % find . -type f -print0 -name '*svg' | xargs -0 -n 5 -P 8 mogrify -format
■全ポートでギガビット(1000BASE-T)対応、スループット最大1Gbit/s、VPNスループット最大200Mbit/sを実現■地球温暖化対策(グリーンIT)に対応した省エネ性能・機能を強化、最大消費電力16Wを実現■携帯電話網(ワイヤレスWAN)との連携■次世代ネットワーク(NGN)への対応■RTXシリーズの機能... 問題 Soracom AIRは、利用しなくても月額300円かかり、あとは従量課金です。自宅用途で遊び使うだけなので躊躇していました。 ログインしてのactivationもちょっと面倒で放置してました。。。 ソリューション So-netが0 SIMという、月額固定費0円で、500MBまで使えるサービスを開始しました。 速攻申し込んで、SIMカードが届いたので、早速、RTX1200に設定してみました。 設定 ハードウェアのセットアップ FS01BUにnano SIM ->
概要 4年ほどメンテナンスしていなかった.zshrcをメンテナンスします。 1ヶ月前ぐらい、zshのplugin管理のためにantigenを入れたら、zshの起動に4秒くらいかかるようになってストレスフルだった。 しかし、便利なので我慢していた。重いのは初回起動時だけだし。。。 やっと重い腰を上げて調査と整理 見た目も色々変える。 見た目Before 見た目After やったこと zshのplugin管理にzplugを使うようにした かなり速い!すばらしい!オプションも多数!最高です。 iTerms2のカラースキーマを変更 https://github.com/altercation/solarized/blob/master/iterm2-colors-solarized/Solarized%20Dark.itermcolors 設定をダウンロードして、iTerm2にimport 設定後
概要 PHP 7がPHP 5.6と比べて2倍速いみたいな発表があったので試してみました。 このBlogはPHP7で動いています。 Changelogを見る感じだと、まだまだ大きなバグが出ているので運用環境で使うのは時期早々かと思いますが、PHP5系からPHP7系にするだけで本当に2倍速くなります。 測定環境 Wordpres4.4とZenCacheの環境です。 純粋に1プロセスの処理時間を計測するために並列数は1 運用環境に近い環境で測定したかったのでZenCacheは有効にした状態で計測 Mac OS X ページのテキスト量が多いのでgzip付きで。 測定コマンド % ab -n 1000 -c 1 -H "Accept-Encoding: gzip,deflate" https://matsu.teraren.com/blog/ PHP 5.5 + APCU Requests per
中小規模のネットワークに最適なギガアクセスVPNルーターです。ギガビットイーサネットインタフェース(10BASE-T/100BASE-TX/1000BASE-T)を合計10ポート備え、スループット値は最大1Gbit/s、VPNスループット値は最大200Mbit/sを実現しながら、今後ネットワーク機器に強く求められる地球... RTX1200の設定 今のところの設定内容は以下のようになってます。秘密の情報はxxxxxでマスクしてあります。ポート開放(静的NAT)は、フィルタの解放と連動していないので、手動でやる必要があります。 たまに、静的NATだけの説明しか書いていない場合がありますが。 # RTX1200 Rev.10.01.65 (Tue Oct 13 12:23:48 2015) # MAC Address : 00:a0:de:68:90:0c, 00:a0:de:68:90:0d
概要 マンションに携帯電話の基地局のアンテナを設置する工事をするらしく、1時間の計画停電があります。アンテナの施工会社に自宅サーバを運用している事を相談したら、UPSを貸してもらえることになりました。せっかくなので、記録しておきます。 製品 APC RS 400 [BR400G-JP]12,000円。安い。
概要 Payment Advent Calendar 2015 12月12日分です。 決済代行会社は世の中にたくさんあります。 業者選定時に見落とさないようにするためにもKPIをまとめておきます。 決済会社選定の際はこれらのKPIをマトリックスにして評価するのが良いと思います。 KPIベスト10 第1位:経済条件 が一番重要ですね。決済サービスの乗り換えはとても困難です。お互い持ちつ持たれつなので、長期的に良い関係を築けるところとおつきあいしましょう。 利用ブランドによっても金額が変わってきます。 決済手数料 トランザクション手数料 初期費用 月額費用 入金サイクル チャージバック手数料 第2位:API提供の可否 自社サービスの特性に合わせて選びましょう。 大きく分けて以下の3種類があります。 100%全部マーチャント側でユーザからの決済をproxy SPIKE, Stripe, Webp
概要 Let’s Encrypt を使って、無料サーバ証明書を発行して設置します。 手順通りやれば、10分程度で出来ると思います。 最近Facebookがゴールドスポンサーになって、盛り上がってきています。 12月3日にPublic Betaになりました。 今は3ヶ月分の証明書を取得出来ます(コマンド1発で、無料で更新可能) サーバ環境は、Mac OS X 10.10 + Nginx 1.8です。 おそらく、各種OS + Nginxなら同じ手順で行けると思います。 Google Chromeが、WebRTCを使うためにはHTTPSが必須になりました。 セットアップ cloneしてくる。ちょっと容量は重め。 % git clone https://github.com/letsencrypt/letsencrypt % cd letsencrypt 証明書取得 普通の証明書取得は、メアド確認
背景 Web API Advent Calendar 12月3日分@takurosさんの12月2日のSwaggerとは何か? を前提としています。 概要 swagger-docs を使ってRailsのREST APIをswaggerで表示出来るようにします。郵便番号検索APIのAPIを表現してみます。 手順 Gemfileにswagger-docsを追加します。 しかしながら、masterブランチにバグがあり、pathにスラッシュが付かないので、forkされたgemを使います。 gemをインストールします。 $ bundle swaggerの初期設定ファイルを作成します。 initializerをconfig/initializers/swagger_docs.rbに作成して、以下のようにAPIサーバの基本情報を書いておきます。 該当するControllerに、API仕様を追記します。 今
背景 Web API Advent Calendar 12月4日分です。 概要 金融機関コードを検索できるWeb APIが存在していませんでした。金融機関コードを検索するREST APIをRailsで作りました。 https://bank.teraren.com/ サンプル いくつかAPIの例を載せておきます。 銀行情報取得 JSON https://bank.teraren.com/banks/8457.json HTML https://bank.teraren.com/banks/8457 支店情報取得 JSON https://bank.teraren.com/banks/8457/branches/028.json HTML https://bank.teraren.com/banks/8457/branches/028 銀行名称から銀行一覧を取得する JSON https://
概要 Vagrantには、provisioningという仕組みがあり、Vagrant(VirtualBox)のVMライフサイクルとVMホスト上で動くVMやコンテナのライフサイクルを簡単に管理できる仕組みがある Provisioningを使わないでDockerを管理するとなると、VMのライフサイクル毎に、コンテナのビルドやスタート、クリーンナップを自分で書かなければいけない Provisioningを使うことで、必要最低限のコードを書くだけで済む。 コードはこちらに置いてあります。 https://github.com/matsubo/vagrant-docker-provisioning/ デモ こんな感じで、2回目以降の起動は30秒でコンテナが起動します。 おまけ ほぼ同等のインフラ構成を行う、boot2docker + Docker composeも作ってみました。 -boo2dock
概要 vagrant up 一発でRuby on Railsの開発環境を構築出来るようにしました。 ローカルのファイルシステムをDocker上のアプリケーションサーバから参照しているので好きなテキストエディタを使えます。 すぐにRailsで開発を行えます。カスタマイズしたい場合はForkして頂くのがいいと思います。 dockerあれば、chef使わなくて良いですね。 初期設定 VirtualBox用のVMイメージをダウンロードします。(任意) % vagrant box add precise64 http://files.vagrantup.com/precise64.box あとは、サンプルコードをcloneしてvagrant upするだけです。 初回は30分程度かかります。 Docker imageのダウンロードとimageの構築があるので。 これでも、Containerのベースは1
概要 dockerの良い感じの管理ツールがあると聞いて使ってみました。チュートリアルの動画が非常にわかりやすいので、時間がかかりますが一通り見るのが良いです。(英語ですが、たぶんわかると思います)まだUIやdockerの挙動が怪しい時がありますが、まぁ使ってみましょう。Dockerfileをがんばって書いていくより非常に簡単に1システムを構築できますよ!11人で1ヶ月で構築されたらしい。すごい! インストール % brew install http://download.panamax.io/installer/brew/panamax.rb ######################################################################## 100.0% ==> Downloading http://download.panamax.io/in
multitailが便利だった。 インストール % brew install multitail 使い方。パラメータにファイル名を渡すだけ。 % multitail *.log 縦に3分割して、それぞれに適当に割り当てる場合は、-sオプションを付ける。 % multitail -s 3 *.log デモ
最後の〆のために作った、天安門のページがお蔵入りになってしまって残念です。 IPを調べる こちらが、犯人がアクセスしたアクセスログ。 IPアドレスは126.7.173.196 Windows7で、Chromeを使っている模様。 (HTTPヘッダも取っておけば良かったなぁと反省) 126.7.173.196 - - [02/Jul/2014:22:43:48 +0900] "GET /static/webmoney.html HTTP/1.1" 200 272 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1" プロバイダはYahoo BBの様子。 % host 126.7.173.196 196.173.7.126.i
私は、1分ごとにcronで起動するように設定してあります。 * * * * * cd /path/to/bin/ && php main.php > /tmp/growthforecast.txt Mac OS XでCLIから温度を取得するために、Temperture Monitorをインストールしておきます。 GrowthForecastの設定 グラフはごとに、単位や係数を設定します。たとえば、小数は扱えないようなので、ロードアベレージは100倍して整数で数字を送っているので÷100します。 複数の指標を含めたグラフも作成できるので、ロードアベレージやディスク容量などの1つのグラフにまとめられる指標はまとめておきます。 Reverse Proxyの設定 Apacheの場合の設定はこちら。 <LocationMatch "/GrowthForecast/.*(edit|delete|add
RESTfulなHTTPリクエストでは、JSONでデータを返すのが一般的ですよね。 そんなJSONのスキーマが各社ばらばらで、統一感が無いけど、何かしらの仕様があるかと思って探したら、ありました。 JSON RPC 2.0 正常系なら、意識しないでデータを直接表現してしまえば良いと思いますが、エラーを表現するときにはある程度仕様に則っておいた方がクライアント・サーバの相互運用性が高まります。 2.0の仕様は2010-03-26に出ているし、1.0から長く運用されているようだし、様々なユースケースをカバーしているので、JSONをやりとりする場合は、使わない手は無いかと思います。 プロトコルの内容は以下のような感じで、すごい大枠だけ決まっているので、2分もあれば理解できるでしょう。 --> {"jsonrpc": "2.0", "method": "foobar", "id": "1"} <-
概要 1日目の「PHPのプロパティをStrictに定義する」に続きまして、PHP Advent Calendar 2013 2日目です今後、Composerベースでの記事が出来ると思うので、早めに解説しておきます!コピペで導入できるように心がけます。 Composerとは PHPのライブラリ依存管理のデファクトスタンダードなパッケージ管理ツールです。Rubyのgem,PerlのCPANにあたるツールです。PHPのライブラリ管理ツールとして、PEARやPEAR2などがありますが、昨今のライブラリの管理はComposerに統一されつつあります。また、PHPで自作したライブラリを他の開発者に利用してもらうためにも、Composerで導入出来るようにしておくと利用されやすくなります。対応環境は PHP 5.3.2+です 導入 Composerは、既存のプロジェクトなどにも簡単に導入できます。 アプ
"Raw data" format is TSV so you can copy and past the data to Excel directory or you can use the URL as web query source. Data is acquired every 2am JST. If you 'd like to add Facebook page to track, please add the setting to this config file and send me a pull request via github.
しかし、ifconfig.meがめちゃくちゃ遅い(10秒ぐらいかかる)ので、とりあえず自前で作りました。東京で運用しているので速いです。 http://kakunin.teraren.com/ IPv4とIPv6に対応しています。 % curl -4 kakunin.teraren.com 222.230.108.57 % curl -6 kakunin.teraren.com 240b:10:2120:f400:e895:161e:8622:1821 RESTfulで、いろいろな情報を取得できる。使い方は至って簡単。 単純に、curlでGETするだけで返してくれます。 サンプルコードはこんな感じで。 PHPでグローバルIPアドレスを取得 <?php $ip = trim(file_get_contents('http://kakunin.teraren.com/')); var_dump
概要 PHPの標準コーディングルール(コーディング規約)は、http://www.php-fig.org/によって、PSR-0からPSR-3までのドキュメントによって細かく決められています。 そのコーディングルールに準拠するように自動的にソースコードを修正してくれるスクリプトが以下です。 https://github.com/fabpot/PHP-CS-Fixer 使い方 composerの場合、composer.jsonへ以下を追記する。 + "fabpot/php-cs-fixer": "0.3.*@dev" + "sebastian/diff": "1.0.*@dev" % php composer.phar update して、 % vendor/bin/php-cs-fixer fix <target dirctory> --dry-run </target> すると、どのように
概要 RedisのSort SetのAPIが若干使いづらいので、ソーシャルゲームでのユースケースに即したAPIでラップしました。 https://github.com/matsubo/redis-ranking インストール Composer対応してあります。 composer.jsonに以下を書いて、php composer.phar updateしてください。 { "require": { "redis/ranking": "1.0.*" } サンプルコード <?php require __DIR__ . '/../vendor/autoload.php'; use Matsubo\Redis\Ranking; $redis = new \Redis(); $redis->connect('127.0.0.1', 6379); $ranking = new Ranking($key =
次のページ
このページを最初にブックマークしてみませんか?
『matsu.teraren.com』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く