Technology

diffを使って、片方のファイルしかない部分、共通部分を出力する

こんな内容のoldというファイル $ cat old A 1 B C 2 3 D とnewというファイルが $ cat new a 1 2 b c 3 d あったとする。このoldにしかないない部分を取り出したいなら $ diff --old-line-format='%L' --unchanged-line-format='' --new-line-format='' old new A B C D newにしかない部分を取り出したいなら $ diff --old-line-format='' --unchanged-line-format='' --new-line-format='%L' old new a b c d 共通部分を取り出したいなら $ diff --old-line-format='' --unchanged-line-format='%L' --new-line-format='' old new 1 2 3 とすれば取り出せる。 ここで%Lは %L 行の内容を意味する。行末尾の改行があればそれも含む。 行に改行がなければ、改行はないままになる。 を意味する。

Coursera Mahcine Learning

Machine Learning - Stanford University | Coursera Week2 Multivariate Linear Regression Gradient Descent For Multiple Variables パラメータが適切にスケーリングされてないと、コスト関数の等高線が細長い楕円になって、最急降下法を使った収束に時間がかかる。 Computiong Parameters Analytically Normal Equation 線形回帰の Normal Equation(正規方程式)について - Qiitaに導出方法が書いてある。 最急降下法の計算量がO(kn^2)、正規方程式の計算量がO(n^3)。 特徴量nが1万を超えたら最急降下法を使ったほうがよい。 Week4 Programming Assignment 1.4 One-vs-all Classification 手書きの数字の分類。データのyには1から10の数字が入っている。 コスト関数を計算する時は、例えばy == 1を使って、1が入っているデータは1、それ以外は0のデータセットを作る。 2 Neural Networks ここでは与えられたシータを使って、予測しているだけ Week5 Cost Function neural networkのコスト関数 $$ \begin{gather*} J(\Theta) = - \frac{1}{m} \sum_{i=1}^m \sum_{k=1}^K \left[y^{(i)}_k \log ((h_\Theta (x^{(i)}))_k) + (1 - y^{(i)}_k)\log (1 - (h_\Theta(x^{(i)}))_k)\right] + \frac{\lambda}{2m}\sum_{l=1}^{L-1} \sum_{i=1}^{s_l} \sum_{j=1}^{s_{l+1}} ( \Theta_{j,i}^{(l)})^2\end{gather*} $$ Week6 Using Large Data Sets It’s not who has the best algorithm that wins.

Twitter APIを使うのに参考になったぺーじ

Post PHPからTwitterツイート(2015年2月版) - Qiita OAuth 【PHP】新TwitterOAuthでログイン機能を実装する - Qiita TwitterOAuth.php(138) Desktop applications only support the oauth_callback value 'oob' /oauth/request_token のようなエラーが出た場合はsettingsの「Callback URL」を設定する。

Hugo

Hugo :: A fast and modern static website engine WordPressだと、記事を書くためにサイトに行かないといけないのがわずらわしくて、Hugoに移行した。 同様のものとしてJekyllがあるが、Jekyllはサイト生成が遅いらしく、Hugoに移行している例があったのでHugoにした。 仕組みとしてはMarkdownで記事を書いた後、hugoのコマンドでHTMLに変換後はGitHub Pagesなどにpushする。 Quickstart Hugo - Hugo Quickstart Guide とりあえずここを読んで感覚をつかむ。 Wordpressからの移行 変換 SchumacherFM/wordpress-to-hugo-exporterを使うとhugoの形式に変換してくれる。 リダイレクト Wordpressからはてなブログへの移行 - リダイレクトの設定 「Redirection」プラグインの設定 - ほるひーとの日記を参考にして、リダイレクトの設定をする。 正規表現で以下のようにした。 /blog/([^/]+)/([^/]+)/(.*).html$ https://tmsanrinsha.net/post/\1/\2/\3 code部分の変更 [python] ... [/python] は以下の置換で変更する %s/\[\(.*\)\]\n\s*\(\_.\{-}\)\s*\n\[\/\1\]/```\1\2```/gc GitHub Pages Mardownなどのサイト作成に必要な部分はPrivateリポジトリで管理して、作成されたサイトのコードをGitHub Pagesで公開する。PrivateリポジトリでもGitHub Pagesはpublic。 具体的にはdocsというディレクトリ以下にファイルを置くとGitHub Pagesで公開できる設定があるのでそれを使う。以下参照。 GitHub Pagesの新機能、ソース設定が地味にいい | To Be Decided Simpler GitHub Pages publishing Hugoで作成するとpublicディレクトリにサイトのコードが吐かれる。このディレクトリをdocsに変更するオプションはないっぽいので、publicをdocsのシンボリックリンクにすることにする。 $ ln -s public docs 逆にするとGitHub Pagesが出来ないので注意。

Google Cloud PlatformでCloud Shellを使わずローカルな環境から操作する

Webデザイナー/プログラマのためのDocker超入門 – Docs.com 上の資料はGoogle Cloud PlatformのCloud Shell上で、dockerのイメージを作成して、アップして、コンテナを起動したり、クラスタを作ったりしている。 Cloud Shellはブラウザ上で使えるシェルで、その環境では作業に必要なGoogle CloudやDocker関連のコマンドが使えるようになっている。 また、Google Cloudへの認証はデフォルトで設定されている。 tmuxが使える状態になっていて、キーバインドはデフォルトらしいのだが、自分が試したことろ反応しなかった。キーバインドが使えるようにChrome拡張をいれたのだが・・・。 詳しい環境についてはこちら。 Features | Cloud Shell | Google Cloud Platform Cloud Shellはすぐ始められるという利点はあるが zshがない 256色がサポートされてない metaが使えない 制御シーケンスがサポートされていない デフォルトでtmuxの中での作業になるが、escape-timeが長い。 ブラウザで設定したキーバインドとバッティングする などの問題があるので、PC上にGoogle Cloud用の設定、dockerコマンドの設定をしてローカルで作業をすることにする。 ちなみにCloud Shellの環境は$HOME以下以外のディレクトリは1時間非アクティブな状態になると状態がなくなってしまうらしい。 $HOME以下は保たれるので$HOME以下にzshなどのコマンドをインストールすれば消えずに残る。 こちらのシェルスクリプトを使えば、$HOME/local/bin以下にzshをインストールすることは可能だ。 以下、Macを前提とする。 Macだと以下に従って、Google Cloud Platformに必要なものをインストールしていけばよい。 Quickstart for Mac OS X | Cloud SDK Documentation | Google Cloud Platform これで、必要なコマンドと認証が設定される。 kubectlを使おうとすると、さらにコマンドが必要で、 $ gcloud components install kubectl でkubectlをインストールした。さらに認証が必要らしく $ kubectl get nodes error: google: could not find default credentials.

Ruby

print, puts, p 【Ruby】表示メソッドについて(print,puts,p) – TASK NOTES gem GitHubからインストールする specific_installを使う rdp/specific_install $ gem install specific_install でインストールして $ gem specific_install -l https://github.com/<user>/<repo>.git または、ブランチを指定して $ gem specific_install -l https://github.com/<user>/<repo>.git -b <branch> git cloneしてbuild $ git clone https://github.com/<user>/<repo>.git $ cd repo $ gem build <repo>.gemspec $ gem install <repo>-<versoin>.gem gem install --source gemsというディレクトリをつくり、その中にgemファイルを置くとインストールできるらしい Githubで私的に公開している野良gemをgem installコマンドでインストールする方法 - 今日もスミマセン。

macでログローテーション

newsyslogを使う。 Macでログローテートするならnewsyslog – ノイズビン 【Mac OS X】newsyslogを使ってログローテートする | blog.remora.cx /etc/newsyslog.d以下にファイルを追加する。 sudo newsyslog -nvで挙動をチェックする。

vimのerrorformat

errorformatについて(入門編) – Qiita main.go:9:14:warning: error return value not checked (pi not declared by package math) (errcheck) こういうのはこう。 %f:%l:%c:%t%*[^:]: %m,%-G%.%#

tcpdump

HTTPパケットキャプチャあれこれ – Qiita -i インターフェースをしているオプション。指定しないとインターフェイスのリストから 最も小さい番号で有効になっているもの(ループバック(127.0.0.1)を除く)が選ばれる。 なので、localhost上のパケットを見たい場合はifconfigでループバックのインターフェースを調べて、-i lo0などで指定する。 Man page of TCPDUMP

UserScript

Greasemonkey Firefoxでuserscriptを使うならこちら。 Greasemonkey :: Add-ons for Firefox Tampermonkey Google Chromeでuserscriptを使うならこちら。 Tampermonkey • Home metadata block Metadata Block – GreaseSpot Wiki Tampermonkey • Documentation 書いておいたほうが良さそうなの // ==UserScript=== // @name userscriptの名前 // @namespace スクリプトをダウンロードできるページのURLにしておくと、Tampermonkeyではリンクされるので良さそう // @description userscriptの説明 // @include https://hoge.com/* // @version 1 // @grant none // ==/UserScript== @version GreasemonkeyもTampermonkeyも定期的にversionをチェックしているようで、ダウンロードしたURLのスクリプトのversionが上がっているときは自動的にアップデートしてくれる。 @include Include and exclude rules – GreaseSpot Wiki アスタリスク(*)は空の文字列を含む、任意の文字列にマッチする。