ニシキヘビってかわいいよね、実際みたことないけど。

無職がいよかん国でプログラミングとかの備忘録を書いてます。 一日一食たまごかけごはん。

wgetコマンドでApacheのファイル一覧以下のファイルをダウンロード

wget -e robots=no -i server.list -nc -S -w 10 --random-wait -r -A pdf -np

以下、メモ書き。

-e: `.wgetrc'形式のコマンドを実行。 このコマンドでrobots.txtを読みに行かない。

-i:ファイルに書かれたURLよりダウンロードを行う。 ファイルは1行ごとにURLが書かれている。

-nc: 存在しているファイルを上書き保存しない。 再帰ダウンロード中に通信が切れても途中から再開できる。

-S: サーバーからの応答を表示。 エラーが出た時の確認用。

-w [秒数]: 待機秒数。

--random-wait: 待機秒数を 0.5*[秒数]〜1.5*[秒数]の間でランダムに変える。

-r: 再帰ダウンロードを行う。取得したHTMLのリンクをたどる。

-A [拡張子1[,拡張子2 ...]]: コンマ区切りでダウンロードしたいファイルの拡張子を指定。

-np: 親ディレクトリを取得対象にしない。これで「Parent Directory」を取得対象から外す。

ワンライナーでauth.logからsshdのアクセス元ip抽出

ちょっと用事ができたので。

grep -oP '.*sshd.*(\d{1,3}\.){3}\d{1,3}.*' /var/log/auth.log | sed -E "s/^.*sshd\[([0-9]+)\]:.* (([0-9]{1,3}\.){3}[0-9]{1,3}).*$/\1 \2/g" | uniq

grepでipが書かれてるっぽいsshdのログ行を抽出して、sedでログ番号とipアドレスっぽい部分を抽出、uniqでログ番号内で重複するipを消す。
sortは各ログ単位内に別のipアドレスはない(と思ってる)から省略。

Pythonで値の数え上げと速度比較

時間が空いたらやってみたかった自然言語処理100本ノックをしてます。
問83を愚直に実装して、処理速度とメモリ空間の消費に苦しみました()

その時の単語数の数え上げで、処理が早いのはどのような方法か気になったので調べてみました。

続きを読む

iptablesでログを保存せずに破棄しても良さそうなポートとかを調べてみた

引越前に一旦実家に帰って自分の部屋を見てみると、物置部屋化してました。さもありなん。
実家の部屋の掃除をしてると、VPSのログ掃除もしたくなりました。

今のiptablesの設定では、送信元が
* ブロードキャストアドレス
* マルチキャストアドレス
* マイクロソフト系の閉じたほうがいいポート(Sambaなど)
* DropBox LAN-Sync
以外で、Dropしたものをログにとっています。

ログは可能な限り残したいですが、
ありきたりな攻撃は攻撃元を追跡するにしても手間のほうが大きく、
ログ圧迫の原因になりますし、
なんせ見てても面白くないのでログを破棄しましょうと思うところで。

続きを読む

ボカロ楽曲の検索サービス(アルファ版)作りました。

VOCALOID MINING

NII・IDRで提供されているニコニコデータセットを利用した、ボーカロイド楽曲の検索サービスです。


大学3回生の時に自分で遊ぶ用、兼、卒業研究の受講資格用に作ったアプリを転職時の面接ネタのために公開したくなったので、すごい大雑把にですが、作りなおして公開してみました。

アプリは6月頭くらいからチマチマ書き直していたので今月はそんなにコード書いてなく、 サーバー周りの経験値が足りてないのでそのあたりで疲れました。

サーバー構築・運用は理論を少しかじってたくらいなので、これから痛い目にあって勉強することになりそうです。

機能の詳しいことは当該サイトの情報メニューに書いたのでそちらに任せます。

課題は山ほどありますが、特にコメント特徴量の可視化の部分と、いろいろ機能をオミットしているところが大きな課題ですね…

課題1: コメント特徴量の可視化

自分だけで使ってた頃は、検索結果のコメント特徴量のみをつかってIsoMapで可視化してました。 不特定多数のユーザーが利用するとなると、検索結果ごとに計算できるような贅沢な計算機も、それを借りるお金もないので、 事前に動画全体で埋め込み位置を計算するか、特徴量をクライアントに送信してクライアントサイドで特徴量埋め込みをする必要があります。

クライアントサイドの計算は、計算機の能力によってはかなりしんどそうなのでボツにしました。 (基本ライブラリ頼みなので、JavaScript機械学習アルゴリズムを書き直せるか不安というのもあります。)

で、IsoMapで約70,000動画について計算すると、メモリがウードッカーンしてしまいまして… メモリ消費が少なかったのと、流行りっぽい、そしてpythonラッパーがあるという雑な理由だけで Barnes-Hut t-SNE を使っています。

GitHub - dominiek/python-bhtsne: Python module for Barnes-Hut implementation of t-SNE (Cython)

データをぶっこんだだけで、チューニング等はしてません()

コメントの類似関係がうまく埋め込みできているかさっぱりです。要勉強ですねこれは…

課題2: オミットした機能の復活

マイニングをうたってるわけですし、このあたりは早く作り直したいです。

・検索結果から更にフィルタする機能(特定動画のプロット点色付けとか)

・タグの予測(アイテムベースのレコメンドとか。線形SVMみたいな比較的軽い学習器とか。)

・検索結果に対する簡単な統計出力

・マイリストとの比較


サーバーはVPSの高くないやつを借りたので、お金に余裕がでてきたらいいやつ借りて、簡単なコメント検索・分析機能を付け加えたいです。 あとはスマホ対応ですかな。デザインとかCSSとかも疎いもので…

いい勉強になるし、自分で自分のほしいものができるのは楽しいので、これからもこれほしいなと思った機能をパk…追加したいです。

ただ、しばらくは転職先探しになりそうです。南無三。


いままで一人で遊んでた理由ですが……

すでに上位互換なもっとやばいサービスがあるからです。

作る前には先行研究・開発のリサーチが大切ですね()

Songrium - つながりを用いた新しい音楽鑑賞を

Closure Compiler ADVANCED最適化のためのプロパティアクセス方法変更で忘れがちなところ

JavaScriptを外部公開するにあたって、TODOとか妙なコメントや若干怪文書めいてるJSDocを消したいわけで、そういうものがないか探していると、 それ以外にもファイル連結、コード圧縮や難読化を行うminifyと呼ばれることをするツールがあるようですね。

いろいろあるようですが、コマンドラインから実行できる手軽さと、超大手Googleのツールという安直な理由から、Closure Compilerをつかうことにしました。 このminifyツールではADVANCED最適化と呼ばれる、変数・プロパティ名変更やコードのインライン化を行うことで大胆な最適化をする機能があるようです。 使わないのはもったいないですし使いましょう。

だいたいのことは以下の記事に詳しく書かれており、参考にさせていただきました。

トップページ - Closure Compilerを使う! - アットウィキ

Closure Compiler の ADVANCED_OPTIMIZATIONS の使い方 - Qiita

JavaScriptをClosure CompilerのADVANCEDモードに完全対応させるその方法! - Cybozu Inside Out | サイボウズエンジニアのブログ

一通り読んで、頭ではわかったつもりで実際にやってみると、そんな行数のないコードのはずなのに手こずってしまいました。 苦労ってやってみて初めてわかりますね、うん。

続きを読む