SSHのプロキシ

たまにはブログ書くかな〜とか書いておきながら1ヶ月以上放置してました。

右上の通知によると、なんと1月はアクセス数が1000を超えたらしいのですが、簡易アクセス解析だと月ごとのアクセス数って見れないっぽいですね。2月になってしまったので1月の合計数が確認できず...。Googleアナリティクスと連携したりするといいんだろうけど。
相変わらず以下のUbuntuのフリーズ対処の記事のアクセスが多くて、みんなフリーズしてるんだなあと思う今日この頃です。

ちなみに自分のUbuntuは最近安定してますね。

SSHのプロキシ

SSHアクセスを特定のIPアドレスのみに絞ってるサーバーがあるんですが、自宅は固定IPじゃないのでアクセスできない。自分で借りてるVPSIPアドレスからはアクセスできるようにしてるので毎回VPSにログインして操作してたんですが面倒なんですよね。
主にやりたいことはGitの共有リポジトリとのソースコードのpull/pushだったので、取得したソースコードをさらにローカルマシンに持ってくるという訳の分からないことになってまして...

それで、なんとかローカルから直接目的のサーバーにログインできないかと思って「SSH プロキシ」とかでGoogle検索してたんですが、上のほうに出てくるのがポートフォワーディングの話なんですね。ポートフォワーディングとかよく知らないのでこれでやりたいことが実現できるのかと思って難しい話を読んだりしてたんですが、どうも違ったようで時間を無駄にしてました。

やりたいことは単に踏み台サーバーを経由したSSHアクセスなんですよね。
で、最終的に以下のページの「多段SSH」の方法で実現できました。ありがたや。

sshコマンドに -W っていうオプションがあったんですね〜
これは便利。というか、sshコマンドめちゃくちゃ多機能だな。
日本語マニュアルページのリンク貼っときますね。

SSH (1)

これでローカルマシンから直接 git pull とか出来るようになりました。
すばらしい...

月間100PV到達

ブログ放置してました。
本日、他のはてなブログ見てるときに、はてなの通知があることに気づきました。
「ブクマコメントにスターでもついたかな?」とか思って確認すると、ブログの月間PVが100に到達したとのこと。

f:id:hatekun33:20141205164223p:plain

アクセス解析はこんな感じになってました。
Ubuntuのフリーズの記事がよく見られてるっぽい。

アクセス解析とかはじめて見たけど、これ便利だなあ。
最近はQiitaによく投稿してたけどたまにはブログも書くかな~

Ubuntuがフリーズしたときの対処

Ubuntuを使っていますが、意外とよくフリーズします。
大体ひとつのアプリが固まって何もできなくなるパターン。
Windowsだとアプリが固まっても全体に影響することは稀なので、LinuxGUIはその点ではまだ弱いかなあと思いますね。

以下、フリーズした場合の対処方法。

固まったアプリを強制終了する

  1. Ctrl + Alt + F2 で仮想コンソールを切り替えます
  2. いつものユーザーでログイン
  3. top コマンドで過負荷になっているプロセスを特定してPIDを確認
  4. kill [PID] でプロセスを強制終了
  5. Ctrl + Alt + F7 でGUIに戻る


固まったプロセスが特定できる場合はこれで。
特定できない場合や、それっぽいプロセスを終了しても直らない場合は仕方ないので以下の方法でPCを再起動します。

PCを安全に再起動させる

  1. Alt+PrintScreen を押しながら R -> S -> E -> I -> U -> B


参考:
UbuntuTips/Others/MagicSysRq - Ubuntu Japanese Wiki

Rubyで先頭からの文字数を指定して文字列を2分割する

Ruby勉強中です。
CodeIQのアルゴリズム問題を考えてるときにタイトルのような処理がしたいと思いました。
(先頭からの文字数を変えながら分割して、分割後の前後の文字列を比較するみたいな処理がしたかった。)

こんな感じ。

"1234567" を先頭3文字抽出
=> ["123", "4567"]

以下のような記事を読んだのですが、微妙に違う。

文字列の一部を取得する - 文字列(String)クラス - Ruby入門
文字列の抽出だけでなく残りの文字列もArrayにいれた状態でほしい

Ruby 文字列を任意の文字数に分割する - Qiita
すべてを分割するのではなく先頭数文字だけ抽出したい。

微妙に違いましたが、2つ目の記事が近い感じです。
どうやら String#split のセパレータに正規表現を使ってやるとうまくできそう。

実験。

pry(main)> "1234567".split(/\A(.{1,3})/, 2)
=> ["", "123", "4567"]

ふむ。1要素目に空文字列が入ってますが、分割はうまくいきました。
1要素目に空文字列が入るのは正規表現をセパレータとして使ってるからですね。
空文字列はいらないので除去。

pry(main)> "1234567".split(/\A(.{1,3})/, 2)[1..-1]
=> ["123", "4567"]

うむ。これで目的は達成できました。
Rubyメソッドは柔軟につかえて素晴らしい。

Ubuntu14.04のrbenv環境でpryが実行できなかったので対処した

最近ちょこちょこRubyをさわってます。
スクリプト言語Perlをメインでやってましたが、すべてがオブジェクト指向な言語って便利ですよね。

さて、簡単な処理のテストとかはirbがとても便利だなあと思って使ってたんですが、irbって直前に実行したコマンドの再実行ができないんですね。(上キーとか押してもきかない)
これはとても不便。
調べたところpryっていうのが便利らしいです。
Rubyistよ、irbを捨ててPryを使おう - TIM Labs

さっそくインストール。
Ruby環境はrbenvで作ってます。

$ rbenv version
2.1.2 (set by /usr/local/rbenv/version)
$ sudo gem install pry pry-doc
$ sudo rbenv rehash

で、実行。

$ pry
Sorry, you can't use Pry without Readline or a compatible library.
Possible solutions:
 * Rebuild Ruby with Readline support using `--with-readline`
 * Use the rb-readline gem, which is a pure-Ruby port of Readline
 * Use the pry-coolline gem, a pure-ruby alternative to Readline

お?エラーが。
解決策も出てるようですがよくわからないのでエラーメッセージで検索。
以下の記事が近いかなと。Ubuntuだし。
Ruby Gems suddenly stopped working on ubuntu 12.04 - Stack Overflow

sudo apt-get install libreadline-dev

このコマンドを実行すれば良いようですね。

ちなみに自分の場合は他の記事に書いてあったRubyの再インストールもやったので以下の手順を実行しました。

$ sudo rbenv uninstall 2.1.2
$ sudo apt-get install libreadline-dev
$ sudo rbenv install 2.1.2
$ sudo gem install pry pry-doc
$ sudo rbenv rehash

これでようやくpryが使えるようになりました。
直前のコマンドの再実行とかシンタックスハイライトされるのが便利ですね。

Twitterクライアントmikutterを導入した

Twitterをはじめて2ヶ月ほどたちました。
エンジニア界隈のすごい人たちが普通につぶやいていてとても刺激になりますね。
もっと早くに始めておけば良かったと後悔しています。

炎上しているアカウントとかを見ていて、すべてのつぶやきが公開されるっていうのに抵抗があったんですよね〜。
あと、何度かアカウント作成してみようと思ったんですが、いいアカウント名が思いつかずトップページで固まってしまうというのもありまして。
でもアカウント名って後から変更できるんですね。ホント早くアカウントつくっておくべきでした。
だいぶ時代に乗り遅れてる感があります。

で、いままではブラウザで普通に使ってたんですが、たまに何かのキーワード("Ubuntu"とか)に反応して
お気に入り登録されることがあったのでどうやって捕捉してるんだろうと不思議でした。
あと複数アカウントを作成することもできるらしく、どうやって管理するのかとか。

どうやらTwitterクライアントというものがあるらしく、それを使うとこれらのことが便利に実現できるのかな〜と思いました。
そんなわけでUbuntuで使えるTwitterクライアントを検索して一番上に出てきたのがmikutterです。
mikutter

インストールはUbuntuだとソフトウェアセンターから簡単にできました。
パッケージ管理システムって素晴らしい。
起動してみると右側にタブが並んでます。
なるほど、返信とか検索結果とかをタブで分けて見れるんですね。
これは便利かも。

mikutterはプラグインで拡張が可能とのこと。
以下のページでプラグインが紹介されています。
Plugin - mikutter Wiki

以下のプラグインを導入してみました。
moguno/mikutter-kininarimasu · GitHub
これはとても便利!
タイムラインに指定したキーワードを含むTweetを混ぜて流してくれます。
たとえば"B'z"をキーワードに指定しておくと全国のB'zファンのつぶやきがたくさん流れてきます。
こんなにたくさんの人に愛されて、やっぱりB'zってすごいなあという気分になりましたね。

ただ、これはリアルタイムで捕捉しているわけではなさそうですね。
しばらくするとキーワードを含んだTweetは流れてこなくなるようなので、起動直後にキーワード検索してる感じ?
リアルタイムで捕捉する場合は以下のページとかが参考になりそう。
[iOS]Twitter検索を自動化、ヒットしたツイートをリアルタイムにプッシュ通知する設定

「デザイナー哀の劇場」Kindle版を購入した

今朝起きたら「独身OLのすべて」の作者まずりん氏(@muzzlin)がこんなツイートをされていた。
独身OLのすべて/まずりん - モーニング・アフタヌーン・イブニング合同Webコミックサイト モアイ




うーむ。たしかに頑張って書いた漫画を誰でも無料で読めてしまうのは複雑ですよね。
と思いまして、Kindle版を購入しました。
500円くらいかな?と思ってamazonのサイトに行ったところなんと120円!安い!
迷わず1クリック購入しました。

しかしこれで利益でるのだろうか...と思ったらやはりほとんどまずりん氏には入らない模様。



↑面白い!

でもWebで公開されてたからこそまずりん氏の漫画に出会えたので無料公開はいいことなんではないかと思うんですよね。
結果的にファンになってTwitterでフォロー→Kindle版購入という流れになりましたし、同じような人はたくさんいるはず。
フリーミアムってやつなんではないかと。

CDが売れないのにライブに行く人は増えているっていうのも聞くし、そういう時代なんでしょうな。
ソフトウェアに関しても完全にそういうビジネスモデルが定着してきてるし、複雑だよなあ。

なんにしてもまずりん氏の漫画は面白いのでこれからも応援していきたいと思った朝でした。