セイコー ダイバーズの修理

実家に帰ったら父が昔着けていた時計(セイコーのダイバーズ)が放置されていた。 ゴム製のバンドがボロボロになり、電池が切れ、ペプシ柄のベゼルも傷と色あせでどうもあまり見栄えしない感じになっていた。 高級時計ではないが安い時計でもない。そこで引…

Snakeによる輪郭抽出を実装してみた

以下の本を読み始めた。 opluse.shop-pro.jp 第一章の動的輪郭モデルに関する話の冒頭で代表的な方法であるSnakeがでてきた。 アルゴリズムの説明があり、シンプルだったので自分で実装してみた。 こんな感じで動いた。 m570の動的輪郭追跡(gamma=0.7) gam…

GCPのdebianにsshするときにXの転送が失敗する場合の対処

GCPを使っているときにX転送して、画像をsxivで開いて確認したりしたくなることがある。 debianのインスタンスでsxivを実行しようとしたら、以下のようなエラーが出た。 @localhost $ ssh -Y gcphost @gcphost $ sxiv ... sxiv: Error opening X display よ…

OpenCVを使って点線を含めた縦棒を画像から削除する

以下のような画像から数字や横棒を残しつつ点線を削除したい。 方法はいくつか考えられるが、 一番最初に思いついたのはハフ変換を使って直線検出し、検出された線を画像から削除するという方法だった。 ただやってみると気づくのだが、検出された線の太さが…

JetsonのラインナップとPyTorchが使えるかの調査

Jetsonを検討していたので、その内容をメモる。自分にしか役に立たないかもしれない。 PyTorchしか実装できないマンなので、PyTorchをインストールできるか、動作は問題ないかあたりをWebを漁りながら確認する。 https://www.nvidia.com/en-us/autonomous-ma…

メカニカルキーボードのキートップを換装した

ARCHISSの87配列のメカニカルキーボードのキートップを換装した。キートップの表面が長年のタイピングによって研磨されツルツルになってカッコ悪いのと、シェル上の補完のためにタブキーを連打した結果キートップの根元が折れて外れるようになったためである…

Focal lossの実装(PyTorch)

Focal lossとは教師データに含まれるクラスごとのインスタンスが不均一であるときに学習がうまくいかないことを是正するために提案されたものだ。 One stageのObject detectionで背景クラスが大半を占めることで発生する問題に対して効果的に働くらしい。 仕…

np.isin()について

概要 np.where()を使って特定の条件を満たす項目を抜き出す処理は良く行う。 今回はその発展として、複数の値に一致する項目を抜き出してきたいという状況を考える。 そのような状況では、np.isin()を使えばよいという話。 詳細 具体的には以下のようなフル…

画像処理にエンジニア検定のエキスパートに合格した

概要 画像処理にエンジニア検定はCG-ARTS協会が行っている検定の一つ。 自分が受けた2018年後期の検定の合格率は40.4%だった。 https://www.cgarts.or.jp/kentei/result/passing.html 真面目に勉強していればまぁまぁ受かるレベルである。 得られたもの 当然…

MNISTとFashion-MNISTのPyTorchのデータローダ

概要 MNISTとFashion-MINISTを組み合わせて学習してみたかったが、既存のデータセットだと多分無理っぽかったので、自作してみた。(車輪のなんとやらではないという言い訳) ここでは組み合わせるところまでは書かず、一般的なMNISTのローダをどのように書…

OpenCVでconvexHullで穴埋めされた領域を取り出す

概要 Opencvで輪郭を取得して、更に凸包領域を取り出すのはとても簡単にできる。 以下の公式のとおりである。 領域(輪郭)の特徴 — OpenCV-Python Tutorials 1 documentation ところで、この凸包領域と元の輪郭の間にある凹み領域を入手したくなったので、入…

オープンソースカンファレンスでサイコロの認識を展示してきた

概要 以下の記事の続きである。 機械学習でサイコロの目をカウントするモデルを作成する - いわゆる備忘録 OpenCVでサイコロのでた目の数をカウントする - いわゆる備忘録 オープンソースカンファレンスでカタンを電子化したものを作って展示したので、それ…

np.uniqueの結果をカウントで並びかえる

np.uniqueを使うと、配列の中の重複する要素を一つにしてくれる(関数名からもわかるぐらい単純な動作) これだけでも十分なんだけど、要素の数をキーにして並び変えたいと思うことがあるはず。 shellならば以下でできる。 $ cat $FILE | uniq -c | sort -n …

機械学習でサイコロの目をカウントするモデルを作成する

最近機械学習が楽しい。時代の波に乗っているものというのは遊んでも仕事に使っても楽しいものだ。 先日サイコロをOpenCVでカウントするプログラムを作ってみたが、これを機械学習で実現してみたいと思ったのでやってみる。 kyudy.hatenablog.com 機械学習…

OpenCVでサイコロのでた目の数をカウントする

概要 OpenCVでサイコロのでた目の数をカウントしたくなった。 ボードゲームを少し電子化してよりゲームを面白くするために使いたいと思っている。 実装 条件 サイコロを上から見る場合に限定して実装する。(立体的にみてどの面が上になるのかを判定するのが…

Ansibleでファイルのバックアップを作成する

Ansibleでファイルをバックアップしたいことがある。 失敗することを考えるとバックアップは一度だけ実行したい。 シェル上ならばcpするときに -n を指定すれば2回め移行は上書きされないことを保証できる。 -n, --no-clobber do not overwrite an existing …

ansible iptables `state=absent` が動かない。

ansibleのモジュールiptablesで'state=present'が機能しない。 ansibleでiptablesをメンテナンスしようとおもい、以下のモジュールを利用したが、どうにも state=absent が動かない。 iptablesモジュールのソースを追ってみたところ、以下のようにchangedを…

css changes not synced for heroku django based app on virtualbox shared folder.

概要 virtualbox上でherokuのアプリを作っていたのだが、共有フォルダにソースを置いてホストOS上からCSSをいじるとなぜかうまく反映されないため困った。 Webサーバを再起動したりキャッシュっぽいファイルを手当たり次第に消したりしてみたが、いっこうに…

PostfixのmaillogのFromとToを結合する。

PostfixのmaillogのFromとToを結合する。 Postfixのログを調べるときに一つのメールの行方を追うだけならすごく簡単だが、 複数まとめて検索したいときに面倒くさいのはログ上のFromとToが別の行になっていることだろう。 Feb 9 17:32:04 server001 postfix/…

.ssh/configに記載されたホストをタブ補完する

.ssh/configに記載されたホストをタブ補完する 概要 ssh実行時に.ssh/configに記載されたホスト名を補完したいなぁとおもったのでやってみた。 同じことは他の方もやっていたので、それを参考にした。その結果ほとんどオリジナリティはない。 あくまで一例と…

abrtdを使用している時は `ulimit -c` は効かない

abrtdを使用している時は ulimit -c は効かない 背景 Postfixの認証を担っているsaslauthdがクラッシュしてコアを吐いたのだが、設定が悪く保存されなかった。 再発した時にちゃんとコアが保存されるように設定する過程でネットで調べた情報が一部自分の環境…

powerdns+dnsdistの構築

DNS

powerdns+dnsdistの構築 概要 もともとpdns(権威DNS)が動作していた環境にdnsdistを導入した。 以下のような構成。 + | 53/udp | +--------------+ | +----v-----+ | | | | | | | dnsdist | | | | | | | +----+-----+ | | | 10053/udp | +----v-----+ | | …

pylruをマルチスレッドで使うと「KeyError:」が発生する

githubにissueがないのでここに書く。 以下のような2スレッドで同時にlrucacheに書き込むとエラーが起きる。 test.py import pylru import threading import random cache = pylru.lrucache(1024) def f(): while True: key = 'key %s' % (random.randint(1,…

曖昧にならない後方参照の記述方法

pythonで正規表現を使って置換処理をするときに、後方参照で少し困ったことが起きた。 一般的に使われる「\1」のような後方参照の直後に数字を続けると当然だけど後方参照の数字がどこまでなのかわからなくなる、というものだ。 解決方法は簡単で「\1」では…

pdnsを適当にチューニング

pdnsのチューニングは以下のページが参考になる。 https://doc.powerdns.com/md/authoritative/performance/細かくやればきりがないと思うけど、receiver-threadsが一番効果がでそうなので、そこからやってみる。チューニングのきっかけとしては、バックエン…

pythonのsftpserverを試す

pythonで書いているバッチのテスト用にsftpサーバを簡単に立ち上げたかった。 探してみるとちょうどよいsftpseverというものを見つけたので使い方を含めてメモ。 GitHub - rspivak/sftpserver: A simple single-threaded SFTP server gist.github.com

ニフティクラウドのロードバランサをAnsibleから操作できるようにしてみた

AWSならbotoと連携するモジュールをAnsibleが正式に提供しているが、 ニフティクラウドのSDKがそもそもPythonに対応していないので、Ansible対応は難しい。ということでAnsibleに対応するために2点実装した。 (1)botoをニフティクラウド用に修正 (2)An…

implementation of smtpd always returning 500 error.

常に500エラーを返すSMTPサーバを実装した。テスト等に使えるはず。 gist.github.com工夫ポイント: エラーコードの返し方がsmtpdのドキュメントにはなかったので、ソースから特定した。

ログ監視ツール比較

ログ監視を行いたいが、どのツールがよいのか検討したので、簡単にメモする どのツールが良いかというのは、既存環境との組み合わせや、そもそも既存のツールで完結させたいとかそういう要望次第なのでなんとも言えない。 あくまで自分視点で比較をする。 調…

swatchをfluentdに連携させる

swatch(Simple Log Watcher)は昔からあるログ監視ツールらしい。詳細は置いておいて、このswatchの出力をfluentdに送りたい。なぜならばデフォルトでswatchが出力できるのはmailと標準出力なので、サーバの台数が増えてくると管理できなくなる(メール100通…