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

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

ワンライナーで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 | サイボウズエンジニアのブログ

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

続きを読む

apacheやっつけ設定

CentOS 7.2, Apache2.4.6

httpd.conf】

  • ServerAdmin にメールアドレスを書いておく
  • /var/www/html以外で「Require all granted」 となっているところがあったら一旦全部コメントアウト
  • /で 「Require all denied」 が設定されていることを確認
  • ディレクトリリスティング機能を無効化するために Options の Indexes を全削除
  • 「AllowOverride None」 を確認
  • トレースメソッドの無効化 「TraceEnable off」を書き込む
  • クリックジャッキング対策 以下2行を書き込む
    1行目はロード済みなら不要(/conf.modules.d/00-base.confを確認)
LoadModule headers_module modules/mod_headers.so
Header append X-FRAME-OPTIONS "SAMEORIGIN"
  • サーバー情報表示の無効化 以下2行を書き込む
ServerTokens ProductOnly
ServerSignature off
  • 403の偽装 以下2行を書き込む
    (wiresharkとかのパケットキャプチャからはバレるので気休め程度)
ErrorDocument 403 "Mot Found"
ErrorDocument 404 "Not Found"
  • 403の偽装 phpが使えるならヘッダも偽装
    端末で
sudo mkdir /var/www/html/error
echo '<?php header("HTTP", true, 404);print("Not Found");' | sudo tee /var/www/html/error/error.php

実行後以下を書き込む

<Directory "/var/www/html/error">
    AllowOverride None
    Require all granted
</Directory>
ErrorDocument 403 /error/error.php
ErrorDocument 404 /error/error.php

php.ini】

  • 場所がわかんなかったら locate php.ini
  • phpの情報を喋らせないようにするため expose_php = Off を設定

【conf.d以下について】

  • autoindex.conf
    ディレクトリリスティングの見栄えを良くするコンフィグ
    使わないなら削除か拡張子のリネーム推奨

  • userdir.conf
    Linuxユーザーのディレクトリをwebに公開できる
    UserDir disabled を確認する
    使わないなら削除か拡張子のリネーム推奨

  • welcome.conf
    インストール直後にルートディレクトリを表示させると出てくるあれの設定
    コメントアウトするとあれが表示されなくなる
    使わないなら削除か拡張子のリネーム推奨

  • php.conf
    特に変更不要?

  • phpMyAdmin.conf zabbix.conf などのwebインターフェースの.conf
    それぞれのwebインターフェースに関わる.conf
    必ずRequireで信頼するホストのみの設定ができているか確認すること