サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
セキュリティ
blog.teraren.com
きっかけ 自宅サーバでWordPressを2サイト運用している。PaaS基盤にはCoolifyを使っていて、データベースにはMariaDB 11.7を採用している。 ある日、コンテナのメモリ使用量を確認したところ、MariaDBが約400MBも消費していることに気づいた。格納しているデータは合計わずか5.1MB。WordPressのブログ2つだけで、アクセス数もそこまで多くない。データに対してメモリが80倍近い。明らかにもったいない。 でも、MariaDBのチューニングパラメータは数が多く、どれをどこまで下げれば安全なのか判断するのが面倒。そこでClaude Codeに丸投げしてみました。 環境 項目 内容 DB MariaDB 11.7 (Docker) PaaS Coolify 用途 WordPress 2サイト 実データ量 5.1MB(3データベース合計) サーバメモリ 32GB チ
概要 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端末同時接
{/* textlint-disable */} 概要 「日本のインターネットの父」と呼ばれる慶応大環境情報学部教授の村井純さん(64)が定年を迎え、16日、最終講義があった。村井さんは「インターネットに国境はない。国や政府が分断したり規制しようとしたりする試みは続くだろうが、若い人たちで守ってほしい」と呼びかけた。 朝日新聞デジタル 村井先生の最終講義。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
背景 自宅ネットワークはRTX1200で構築してあります。 http://blog.serverworks.co.jp/tech/2015/11/25/soracom-air-and-rtx1200/ を2014年の11月に見つけて、自宅でもやりたいと思ってました。 FS01BUとSoracom Airは買ってありました。 ::amazon{asin="B001G79VGK"} ::amazon{asin="B015J4WVEO"} ::amazon{asin="B01G1GSYHW"} 問題 Soracom AIRは、利用しなくても月額300円かかり、あとは従量課金です。自宅用途で遊び使うだけなので躊躇していました。 ログインしてのactivationもちょっと面倒で放置してました。。。 ソリューション So-netが0 SIMという、月額固定費0円で、500MBまで使えるサービスを開始
概要 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
概要 <!-- textlint-disable ja-technical-writing/ja-no-successive-word --> ルータをBuffaloのWiFiルータからRTX1200に置き換えました。(定価 125,000円(税抜き)) <!-- textlint-enable ja-technical-writing/ja-no-successive-word --> 今は中古5,000円ぐらいで買えます もともと、WiFiルーターは1,2ヶ月に1回、勝手に再起動して接続が切れるときがあります。今まで10台くらいいろいろなメーカーのルータを使ってきたけどどこも同じ。もう、家庭用ルーターには耐えられない! さすが、Gbps対応なので、ポテンシャルが高いですね。 自分のOUTのグローバルIPのルーティングもしてくれるから楽。 同じLAN内で、外向きのDNSサーバを運用してい
概要 マンションに携帯電話の基地局のアンテナを設置する工事をするらしく、1時間の計画停電があります。 アンテナの施工会社に自宅サーバを運用している事を相談したら、UPSを貸してもらえることになりました。 せっかくなので、記録しておきます。 製品 APC RS 400 [BR400G-JP] 12,000円。安い。 ::amazon{asin="B01N30S30G"} テスト ちゃんと動くかテストします。 Macbook Proに繋げて、商用電源を切ったりして、停電時の挙動を確認します。 なんと、65Wとか食ってます。ノートPC恐るべし。 設置 Mac miniとHDD4台が入ったRaidボックスをUPSに接続します 付属のUSBケーブルを使って、UPS管理のためにMac Miniに接続します。 OSの起動時は10W程度でしたが、安定期に入ると5Wでした。 UPSのフロントパネルにあるボタ
概要 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月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 GrowthForecastのインストール こちらを参考に行います。Mac OS Xでもほとんどこれの通りにインストール出来ました。 http://qiita.com/harukasan/items
RESTfulなHTTPリクエストでは、JSONでデータを返すのが一般的ですよね。 そんなJSONのスキーマが各社ばらばらで、統一感が無いけど、何かしらの仕様があるかと思って探したら、ありました。 JSON RPC 2.0 正常系なら、意識しないでデータを直接表現してしまえば良いと思いますが、エラーを表現するときにはある程度仕様に則っておいた方がクライアント・サーバの相互運用性が高まります。 2.0の仕様は2010-03-26に出ているし、1.0から長く運用されているようだし、様々なユースケースをカバーしているので、JSONをやりとりする場合は、使わない手は無いかと思います。 プロトコルの内容は以下のような感じで、すごい大枠だけ決まっているので、2分もあれば理解できるでしょう。
概要#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は、既存のプロジェクトなどにも簡単に導入できます。 アプリを
しかし、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へ以下を追記する。
次のページ
このページを最初にブックマークしてみませんか?
『カテゴリ一覧 | hot-buzz知恵袋』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く