サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
アメリカ大統領選
blog.teraren.com
背景 CTOA Advent Calendar 14日目の記事です。 CTOの役割や業務については他の素晴らしいCTOが書いてくださっているので、この記事では会社員エンジニアとして働きながら事業アイデアを仮説検証し、自社プロダクトのスタートアップを立ち上げるまでの話をしたいと思います。 一般的にスタートアップを立ち上げるのはハイリスクと思われているかもしれませんが、しっかりとリスクヘッジをすれば超低リスクにスタートアップを立ち上げることができると、実体験ベースで思いました。今回はリスクヘッジの要点を5つに絞ってそのコツをお伝えできればと思います。 概要 私の人生の目標のうち、一部を抜粋します。0からサービスとビジネスを作る。世の中を効率的、便利、公平にする。そのためには、スタートアップをやろうと20年前からの目標です。そのためにはITを使ったスタートアップを立ち上げるというアプローチが最適
Ruby on Rails, Web Services, Software Development, Startups 概要 「日本のインターネットの父」と呼ばれる慶応大環境情報学部教授の村井純さん(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
問題 Soracom AIRは、利用しなくても月額300円かかり、あとは従量課金です。自宅用途で遊び使うだけなので躊躇していました。 ログインしてのactivationもちょっと面倒で放置してました。。。 ソリューション So-netが0 SIMという、月額固定費0円で、500MBまで使えるサービスを開始しました。 速攻申し込んで、SIMカードが届いたので、早速、RTX1200に設定してみました。 設定 ハードウェアのセットアップ FS01BUにnano SIM -> SIMアダプタを噛ませて挿入します。 Soracomと違い、Webでのアクティベーションなどは一切不要でした。届いたらそのまま使えます。 0 SIMのWeb管理画面にログインしても設定出来る項目は、支払い方法の変更ぐらいでした。 RTX1200に差し込むと、ビービーと音が鳴りますが、すぐに鳴り止みます。 FS01BUのLED
概要 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://blog.teraren.com/ PHP 5.5 + APCU Requests per second
概要 ルータをBuffaloのWiFiルータからRTX1200に置き換えました。(定価 125,000円(税抜き)) 今は中古5,000円ぐらいで買えますもともと、WiFiルーターは1,2ヶ月に1回、勝手に再起動して接続が切れるときがあります。今まで10台くらいいろいろなメーカーのルータを使ってきたけどどこも同じ。もう、家庭用ルーターには耐えられない! さすが、Gbps対応なので、ポテンシャルが高いですね。自分のOUTのグローバルIPのルーティングもしてくれるから楽。 同じLAN内で、外向きのDNSサーバを運用していると、Buffaloのルータがルーティングしてくれなくて、不便でした。(=LANから自分の外側のグローバルIPアドレスのルーティングが行われない) RTX1200の設定 今のところの設定内容は以下のようになってます。秘密の情報はxxxxxでマスクしてあります。ポート開放(静的N
概要 マンションに携帯電話の基地局のアンテナを設置する工事をするらしく、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
Ruby on Rails, Web Services, Software Development, Startups 概要 dockerの良い感じの管理ツールがあると聞いて使ってみました。チュートリアルの動画が非常にわかりやすいので、時間がかかりますが一通り見るのが良いです。(英語ですが、たぶんわかると思います)まだUIやdockerの挙動が怪しい時がありますが、まぁ使ってみましょう。Dockerfileをがんばって書いていくより非常に簡単に1システムを構築できますよ!11人で1ヶ月で構築されたらしい。すごい! インストール % brew install http://download.panamax.io/installer/brew/panamax.rb #################################################################
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
概要 Adventに空きがあったので、Perl Advent Calendar 2013の22日目を書きます。@kazeburoさんのGrowthForecastでMac OS X 10.9 (Mavericks)のリソース監視をする方法を書きます。結果としては以下のようになります。 デモ(リソース監視): https://matsu.teraren.com/GrowthForecast/list/host/teraren デモ(通貨ログ): https://matsu.teraren.com/GrowthForecast//list/currency/rate-exchange?t=sh
RESTfulなHTTPリクエストでは、JSONでデータを返すのが一般的ですよね。 そんなJSONのスキーマが各社ばらばらで、統一感が無いけど、何かしらの仕様があるかと思って探したら、ありました。 JSON RPC 2.0 正常系なら、意識しないでデータを直接表現してしまえば良いと思いますが、エラーを表現するときにはある程度仕様に則っておいた方がクライアント・サーバの相互運用性が高まります。 2.0の仕様は2010-03-26に出ているし、1.0から長く運用されているようだし、様々なユースケースをカバーしているので、JSONをやりとりする場合は、使わない手は無いかと思います。 プロトコルの内容は以下のような感じで、すごい大枠だけ決まっているので、2分もあれば理解できるでしょう。 --> {"jsonrpc": "2.0", "method": "foobar", "id": "1"} <-
Ruby on Rails, Web Services, Software Development, Startups 概要 1日目の「PHPのプロパティをStrictに定義する」に続きまして、PHP Advent Calendar 2013 2日目です今後、Composerベースでの記事が出来ると思うので、早めに解説しておきます!コピペで導入できるように心がけます。 Composerとは PHPのライブラリ依存管理のデファクトスタンダードなパッケージ管理ツールです。Rubyのgem,PerlのCPANにあたるツールです。PHPのライブラリ管理ツールとして、PEARやPEAR2などがありますが、昨今のライブラリの管理はComposerに統一されつつあります。また、PHPで自作したライブラリを他の開発者に利用してもらうためにも、Composerで導入出来るようにしておくと利用されやすくなりま
しかし、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 =
Ruby on Rails, Web Services, Software Development, Startups コードはこちら:https://github.com/matsubo/devise_sample deviseの公式の手順書が分かりづらいので、シンプルな認証を実現するための要点を整理してみました!細かい設定とか、自分のサイトにあった設定はこれを元にオプションを変更していただければと思います。1手順ごとにコミットを分けてあるので、変更点が明確に分かるようになっています。 一部、手順が前後しても大丈夫なところがあるので間あり神経質にならなくても大丈夫です。 railsアプリケーション作成 % rails new devise_smaple scaffoldで適当なページを作る % rails generate scaffold Post name:string title:
Ruby on Rails, Web Services, Software Development, Startups https://github.com/visionmedia/git-extras生のgitをより便利にするためのサブコマンド集。 リリース管理も出来ちゃう。 いっぱいあるので抜粋。 reset --hard HEAD~xのalias % git undo % git undo 3 容量の大きいファイルを間違って追加してしまったっ際に、過去のリビジョンからも存在を消去したいとき。 過去のリビジョンIDが書き換わるので要注意。 git obliterate secrets.json Rewrite e814bdf6e24c3468fba1b7185a135d5bb9273758 (125/126)rm 'History.md' Rewrite 8e4a332bbea3aa8
これは、tmuxとtmux-powerlineを使って実現しています。 以下に、導入方法を書きます。 0. (強く推奨)powerline用のフォントをインストール まず、大なり、小なりのフォントを使うための設定をします。これをインストールした方が、すごい見栄えがかっこよくなります! パッチを当てたフォントをインストールして、ターミナルなどでそのフォントを使って表示するようにします。 この記事で使われているスクリーンショットのフォントは、AdobeのSource code proにパッチを当てたフォントを使っています。 その他のフォントはこちら。 https://gist.github.com/qrush/1595572 自分でパッチを当てる場合はこちら。 https://github.com/fncll/vimstuff/tree/master/powerline-fonts 1.tmu
概要 最近、無駄にSingletonが使われているプログラムをメンテナンスする機会があり、非常に残念な思いをしているので、このつらさを世の中に広めないために書きます。 他にもSingletonが使われていることによって残念な思いをしている人を探してみましたが、日本語では見当たりませんでした。海外の記事は見つけました。 全く同じ理由でSingletonのつらさを感じていたのでそのまま訳します。 1) Singletonはグローバルスコープからの呼び出しによく使われる 正しい。 しかし、何のためにでしょうか? singletonパターンはあるシステム上で明確に1つだけしか存在しない呼び出しを提供する。よって、サービス内でオブジェクトの参照を持ち回る必要がなくなる。 しかし、そのような使い方は、グローバル変数と何が違うのか?(ご存じの通り、グローバル変数って良くないよね?) Singletonで
Ruby on Rails, Web Services, Software Development, Startups 疑問 crontabへ同時刻に実行するコマンドを書いたときに、各コマンドの終了を待って次に実行するのか?それとも、サブプロセスで実行するのか? ひと言で言えば、同期実行か非同期実行でコマンドを実行するのか? 答え 非同期実行 補足: 同期実行させたいときは、こんな感じ。 33 17 * * * /home/matsu/sleep.sh ; /home/matsu/sleep.sh 検証 実行するファイルの中身。sleep.sh #!/bin/sh sleep 60 crontabに記述 [matsu@dev ~]% crontab -l # m h dom mon dow command 33 17 * * * /home/matsu/sleep.sh 33 17 * *
概要 Ubuntu 19.04でrtl88x2buをインストールの続編です。以前に買ったWiFiアダプターの謳い文句に「1200Mbps出る」と書いてありますが実際は全然速度が出ません。そこで今回はWiFi6対応のArcher TX3000...
次のページ
このページを最初にブックマークしてみませんか?
『Matsubo Tech Blog』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く