高速検索 the_silver_searcher を使ってみる

こんにちは、masm11 です。 たまには新しいツールでも導入して快適になってみましょう。 今回ご紹介するのは、高速検索ツール the_silver_searcher です。 検索の仕方の変遷 以前は grep を使ってましたよね。 grep foo *.rb これだとカレントディレクトリし…

tar で固める際に進捗を知る

こんにちは。masm11 です。 大きなディレクトリを tar で .tar.gz に固めることってありますか? 時々ありますよね。 最近は zip の方が多いのでしょうか? 私は tar を使っています。例えば以下のようにします。 tar zcf /bak/backup.tar.gz dir しかし、大き…

dovecot が起動してない?

どうも id:kizashi1122 です。 弊社が開発・運営している Re:lation というサービスの中のサーバではないのですが、とある用途で IMAP のサーバをAWSのEC2上に立てていました。ソフトウェアとしては dovecot を使っています。 Dovecot さて、社内の利用者よ…

割り算の余りは?

こんにちは、masm11 です。 突然ですが、今回は、負の整数を正の整数で割った時の余りは 0 以上なのか 0 以下なのか、 という話を書きたいと思います。 具体的には、-22 % 3 はいくつなのか、というお話です。 実は、言語によって違うのです… 2 になるものた…

Gmail API(Google OAuth) 利用承認取得記 - 完結編

こんにちは。Tedです。 いよいよ今回でGmail API利用にかかるGoogleからの承認の取得記のラストです。 これまでの記事はこちら。 blog.ingage.jp blog.ingage.jp 前回までで、Googleでの審査は一通り完了しました。いよいよセキュリティ評価です。 セキュリ…

Gmail API(Google OAuth) 利用承認取得記 - 続

こんにちは。Tedです。 今回はGmail API(Google OAuth)の承認を得るにあたって行ったこと・起こったことについて書きたいと思います。 前回の記事はこちら blog.ingage.jp 前回はGoogleへの申請までを書きました。今回は申請でどのようなことを行ったのか…

Gmail API(Google OAuth)利用承認取得記 - 思ったより大変でした

こんにちは。Tedです。 先日メール・LINE共有クラウドRe:lationにてGoogleからGmail API利用の承認を得ました。予想していたより大変であったので、備忘録的にここに記載しておこうと思います。 Google OAuth利用の声は高まっていた Re:lationではメールの送…

macOS Catalina の NFS 問題を解決する

こんにちは、masm11 です。 弊社では、macOS 上の Vagrant 環境内から、macOS のディレクトリを NFS で mount して、 開発しています。 仮想マシンとしては VirtualBox を使用しています。 この度、私に貸与された mac の macOS を Catalina に上げた ところ…

Ruby で backtrace を取得する

こんにちは、masm11 です。 Ruby で、「このコードのここに来た時、どこからどう呼ばれてきたのか知りたい!」ということは ありませんか? よくあると思います。 おそらく最近の IDE なら、問題なく、いつでも見られるのでしょう、きっと。 しかし私はそうい…

Terminator が起動しない原因を探る

こんにちは、最近趣味でいろんなものをデバッグばかりしている気がする masm11 です。 先日は scp の問題でしたね。 blog.ingage.jp 今回問題だったのは、ターミナルエミュレータ (端末) である Terminator です。 私はデスクトップ環境にボタンを配置し、そ…

@johtani さんと弊社サービスの Elasticsearch について話しました(実装編2)

前回のエントリでは、検索アルゴリズムとしては単純な、でも弊社のサービスにはマッチしている N-gram を採用しているということをお伝えしました 。また Elasticsearch ではどういう設定しているかもお伝えしました。 検索結果のハイライト(highlighting)…

複数行 UPDATE で発生するデッドロックを回避する

こんにちは、masm11 です。 今回は、RDBMS で複数行の UPDATE すると割と簡単に起きるデッドロックを回避する方法を探ります。 Rails を用い、RDBMS としては PostgreSQL を使います。 準備 まずは、Rails のプロジェクトを作ります。 rails new proj --skip…

2進数で循環小数してみる

こんにちは、masm11 です。 時々数学で遊んでみたくなりませんか? というわけで、今回は数学と戯れてみたいと思います。循環小数です。とは言え、ただ実証してみるだけですので、気楽にお付き合いいただければと思います。 循環小数とは まず、循環小数とは…

@johtani さんと弊社サービスの Elasticsearch について話しました(実装編1)

前回のエントリで、弊社サービス Re:lation が Elasticsearch をどういう感じで使っているのかを、主にインフラにまつわる部分を中心に書きました。 blog.ingage.jp 今回は実装に関わる部分を書いてみたいと思います。 前回の記事も含めて今回の記事につきま…

@johtani さんと弊社サービスの Elasticsearch について話しました

@kizashi1122 こと、永田です。 blog.johtani.info @johtani さんがツイートするもんだから、あいよっと返事してしまいました。 以下、@johtani さんに話したことも話してないこともツラツラと書いていこうと思います はじめに 弊社のサービスである「Re:lat…

scp コマンドにまつわる不思議な挙動を追う

こんにちは、masm11 です。 scp で大きなファイルを転送すること、ありますよね。 私も時々やるのですが、今回、ログアウトすると scp が通信しなくなる、 という妙な症状に見舞われましたので、ご紹介します。 症状 状況としては、まず、3台のコンピュータ…

ラズパイHomeKitカメラをUSBカメラに変更してみる

こんにちは。Tedです。 前回、下記のようにラズパイ4を使ってHomeKit対応カメラを作りました。 blog.ingage.jp 作成したシステムを使っていく内に、いくつか気になるところがでてきました。 気になる点 カメラの画角にて広角が足りない。 Mac, iPhoneなどか…

Rails のコネクションプールから接続を取り出す処理を追う

こんにちは、masm11 です。 弊社では PostgreSQL のデータベースを Amazon Aurora に移そうとしていますが、 フェイルオーバー時の処理が気になっています。 ググってみたところ、MySQL の情報はたくさん出てくるのですが、PostgreSQL の情報は 少なく、欲し…

UNIX ドメインソケットの接続対応表を作る

明けましておめでとうございます。masm11 です。 UNIX ドメインソケットってご存知ですか? 知らないけど実は使ってる (設定したことがある) 方も結構いらっしゃるかもしれません。 今回は、UNIX ドメインソケットをちょっとだけ便利にする自作ツールを一つご…

ラズパイ4でHomeKit対応見守りカメラを作ってみました

こんにちは。Tedです。 AppleのHomeKit対応製品は海外では充実していますが、日本ではまだまだ。そのために選択肢が少なく高価なのがネックです。 そこで今回はHomebridge + ラズパイを使って安価にHomeKitに対応した見守りカメラを作ってみました。 Homebri…

AWS で IPv6 を使う

こんにちは。masm11 です。 IP アドレスが枯渇したと何度も言われているにもかかわらず、IPv6 はなかなか広まりませんね。今回は AWS で IPv6 の設定をしてみたので、設定の手順について説明したいと思います。 前提としては、AWS アカウントがあって、VPC …

Ruby 関西にて inotify の話を発表してきました #rubykansai

永田 @kizashi1122 です。 昨日の第88回 Ruby 関西にて発表してきました。 デモは各 gem の README レベルの内容でした。 質疑応答 覚えている限り挙げておきますと、、、 常駐プログラムの監視はどうやっていますか? monit (https://mmonit.com/monit/ ) …

Emacs 上で Git を使おう!

こんにちは、masm11 です。 皆さん、Git 使ってますか? 使ってますよね? Git を使っている人はもう Emacs 人口を超えているのでは、と思っています。 一方で、Emacs ってご存知ですか? 高機能なエディタです。 ですが、最近はあまり人気がないらしいですね。…

エンコードされた国際化ドメイン名をデコードする

こんにちは。masm11 です。 国際化ドメイン名をご存知でしょうか? インゲージ.jp みたいなやつのことですね。 しかし、時々、xn--eck2as8usb.jp と表示されていることがあって、「これ、一体どこ??」 と思うことがあります。今回はこの文字列を元に戻す方法…

SFTP で chroot する方法

こんにちは、masm11 です。 実はつい先日まで SFTP で chroot ができることを知りませんでした。 そこで今回は、SFTP での chroot の設定方法についてまとめてみたいと思います。 FTP, FTPS, SFTP...? その前に、FTP にもいろいろ種類があって、混乱している…

Mix Leap Study 特別編 - レガシーをぶっつぶせ。現場でDDD! コラボカンファレンスに参加しました -- Ruby での開発に活かせるのか?

yahoo-osaka.connpass.com どうも永田(@kizashi1122)です。 このイベントに参加してきました。 参加のモチベーション 「DDD」という言葉は当然知っている。ただあんまりよくわかっていない。エリック・エヴァンスの本も読んでいない。 こんな状態で、「DDD…

自前 Redis から AWS Elasticache に移行した

どうも永田です。 弊社サービスの「リレーション」では、セッション管理やジョブキュー、一時的なデータ置き場として Redis を使っています。 最近、EC2 上に自前で構築していた Redis から AWS Elasticache に移行しました。 動機 自前で構築していた Redis…

bash スクリプトの罠

こんにちは、masm11 です。お久しぶりです。 今回は bash スクリプトの罠を一つご紹介したいと思います。 症状 以下のような bash スクリプトを作成します。 #!/bin/bash sleep 5 5秒間 sleep して終了するだけのプログラムです。 実行すると、 $ ./test.sh …

Ruby で Excel ファイルを作る

お久しぶりです。masm11 です。随分時間があいてしまいました。 以前、Python で Excel ファイルを作成する方法について書きました。 しかし弊社はやはり Ruby がメインなので、今回は Ruby で作成する方法について 紹介したいと思います。 Ruby で Excel フ…

Rails Developers Meetup 2019 に参加してきましたー

こんにちは。Re:lation のエンジニアの石田です。 先日行われた Rails Developers Meetup 2019 に行ってきました。 2日間で70近いセッションがあって、どれを選ぶかかなり迷いました。 ホント3日間にしてほしいです。。。 今回は、来月行われる Ruby Kai…