日本語WordNet(sqlite版)の中身メモ
タイトルのまんまです。
続きを読むiptablesでログを保存せずに破棄しても良さそうなポートとかを調べてみた
引越前に一旦実家に帰って自分の部屋を見てみると、物置部屋化してました。さもありなん。
実家の部屋の掃除をしてると、VPSのログ掃除もしたくなりました。
今のiptablesの設定では、送信元が
* ブロードキャストアドレス
* マルチキャストアドレス
* マイクロソフト系の閉じたほうがいいポート(Sambaなど)
* DropBox LAN-Sync
以外で、Dropしたものをログにとっています。
ログは可能な限り残したいですが、
ありきたりな攻撃は攻撃元を追跡するにしても手間のほうが大きく、
ログ圧迫の原因になりますし、
なんせ見てても面白くないのでログを破棄しましょうと思うところで。
ボカロ楽曲の検索サービス(アルファ版)作りました。
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…追加したいです。
ただ、しばらくは転職先探しになりそうです。南無三。
いままで一人で遊んでた理由ですが……
すでに上位互換なもっとやばいサービスがあるからです。
作る前には先行研究・開発のリサーチが大切ですね()
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】
【conf.d以下について】
autoindex.conf
ディレクトリリスティングの見栄えを良くするコンフィグ
使わないなら削除か拡張子のリネーム推奨userdir.conf
Linuxユーザーのディレクトリをwebに公開できる
UserDir disabled を確認する
使わないなら削除か拡張子のリネーム推奨welcome.conf
インストール直後にルートディレクトリを表示させると出てくるあれの設定
コメントアウトするとあれが表示されなくなる
使わないなら削除か拡張子のリネーム推奨php.conf
特に変更不要?phpMyAdmin.conf zabbix.conf などのwebインターフェースの.conf
それぞれのwebインターフェースに関わる.conf
必ずRequireで信頼するホストのみの設定ができているか確認すること