Fei3939の戯言

忘備録とかいろいろ愚痴ったりとか

更新

久しぶりに更新しました。
体調は良くないですがなんとか生きています。

Tera Termとtmuxとクリップボード

TeraTerm上でtmux使ってる時にペイン分割しまくって作業してるんだけど、
ターミナルの出力をさかのぼってコピペしたい時がある。
ペイン数が1つだけならマウスで範囲選択なり何なりできるんだけど
複数分割してるとそうも行かない。

でコピーモード

キーバインドEmacsとviから選択できて、デフォルトはEmacsだそうで。

Prefix(デフォルトはC-b)+[ : コピーモード開始
範囲選択
C-w : 選択範囲をコピーしてコピーモードを抜ける

ここまででターミナル上のクリップボードのバッファには格納されている。
が、他のエディタにペーストするにはWindows側のクリップボード
書き込まれていないとNG。
そこで、TeraTermの[設定]>[その他の設定]>[制御シーケンス]から
リモートからのクリップボードアクセスを無効→書込のみへ。
これでOK。

SLP KBIT Advent Calendar 2014 -23日目-

この記事は

の23日目の記事だよ!

内容が無いよう(´・ω・`)…

最近流行りのクラウド上の負荷分散について書くよ
(当社比)

有名ドコロ

とか最近耳にすると思う。
特にEC2とかは「○○をEC2上に構築する」とか「EC2のインスタンス使って~」という
内容の記事も目にする機会が非常に多くなった。

詳しくはAmazon EC2(スケーラブルなクラウド上の仮想サーバー) | アマゾン ウェブ サービス(AWS 日本語)とか読もう。

で、本題

ソシャゲとか周りでやってる人も多いし、イベントの時によく鯖が重いとか耳にする。
これはみんな同時にアクセスしに行ってて鯖の処理が追いついていない状態。
こういう大量のアクセスを捌くことを負荷分散と称してあれやこれやしている。

最近の主流

AmazonEC2(特にELB)とかを見てる限りでは、DNSとロードバランサを組み合わせて負荷分散をしている。どういうことかというと、ロードバランサ単体では、ロードバランサ自体にアクセスが集中してしまい、そこで重くなってしまう。DNSラウンドロビン単体だといろいろとまずい面がある。(詳しくはここを読もうDNSラウンドロビン - Wikipedia)

イメージ
                            ┌―→|AP|
ユーザ  →   |   |   ┌→|LB|→ ┤
ユーザ  →   |DNS| →+        ├─→|AP|
ユーザ  →   |   |   └→|LB|→ ┤
                            └―→|AP|

LB:ロードバランサ
AP:アプリケーションサーバ

_人人人人人人_
> 見づらい <
 ̄Y^Y^Y^Y^Y ̄

ユーザがURLを踏む
DNSに「このURLのIP何?」って聞きに行く
DNSが「xxx.xxx.xxx.xxx」とサーバのIPを返す
→ ユーザのPCがxxx.xxx.xxx.xxxにアクセスしに行く
→ LB「ばかめ!かかったな!振り分けてやる!」

という事になっている

実際の運用

実際はこれに加えて、サーバ側でマシンの台数を変化させたりする。(オートスケール)
実運用時には、アプリケーションサーバの後ろにいるDBについても冗長構成にしてロードバランスするケースもある。その辺はサービスの形態や状況に応じていろいろなケースが見られる。

もっともこういった冗長構成を作るときには、きちんと障害検知なりをして、生きているサーバに振分けられることが保証されていないとマズイ。

おわり

バイト前にそういや今日だったことに気づいてめちゃ雑に書いてる\(^o^)/

SLP KBIT Advent Calendar 2014 -6日目-

アアアアアアアアーーーーーーーーーーー

バイトが午前中からで昨日は早寝してて投げるの忘れてました。

なんか増えてる

今年も無事枠が埋まったようで何より(あれ?なんか一番後ろが空いてるぞ?

本題

学校のファイルサーバにおいてある資料を取ってくるときにsambaを使うけど、
大体Windowsの人なのでWindowsキー+r→アドレスって感じでやってるはず。
(え?スタートメニューからアクセサリ→ファイル名を指定して実行とかしてる人はいないよね?)

Linuxの場合

Linuxをクライアントマシンで使ってる人はどうしてるのかという話です。
Windowsから移ってきてマウスを使ってあれこれするのに慣れてしまってる人は
戸惑うどころかあばばばっばな状態かと思います。

そこで、smbclientを使いましょう。(もしくはマウントしてね)

smbclient

そのまんまなもので、sambaに接続するためのコマンドで、入ってない場合パッケージから入れましょう。(以下例はDebian)

$ sudo apt-get update
$ sudo apt-get -y install smbclient

試しに使う。(詳しい内容が知りたい人はこ↑こ↓*1を見よう)

# 接続先のsambaのディレクトリを確認する
$ smbclient -L //接続先のドメイン/接続先のディレクトリ名 -U ユーザー名(指定しないとカレントユーザー)

# 対話処理で操作する(sftpみたいな感じ)
$ smbclient //接続先のドメイン/接続先のディレクトリ名 -U ユーザー名

セッションの接続に成功すると

smb: \>       # 対話処理開始。tabキーを2回押すと

..              case_sensitive  du              help            lock            mkdir           posix_mkdir     pwd             reget           showacls        unlock          
?               cd              echo            history         logon           more            posix_open      q               rename          showconnect     volume          
allinfo         chmod           exit            iosize          lowercase       mput            posix_rmdir     queue           reput           stat            vuid            
altname         chown           get             l               ls              newer           posix_unlink    quit            rm              symlink         wdel            
archive         close           geteas          lcd             mask            open            print           rd              rmdir           tar             
blocksize       del             getfacl         link            md              posix           prompt          readlink        setea           tarmode         
cancel          dir             hardlink        listconnect     mget            posix_encrypt   put             recurse         setmode         translate       

# 使えるコマンド一覧がでる

# ファイルを取得する場合
lcdでローカル(自分のマシン)上のディレクトリを移動
cdでsamba上のディレクトリを移動してgetで特定のファイルをローカルに転送する。
そのディレクトリ以下のすべてのファイルを転送する場合はmget。

やっつけだよね

ものは試しなので自分のマシン上にVMでもたてて試してみましょう。

SLP KBIT Advent Calendar 2014 -1日目-

あれあれ?おっかしーなー参加者がすくないぞ???

去年は枠がすぐに埋まってあぶれた人がいたような気がしたのだが…

とりあえず

__________
    <○√
     ∥ 
     くく
しまった!ここは2014/12/01だ!
オレが止めているうちに別日に登録するんだ!
早く!早く!オレに構わず翌日以降の枠を埋めるんだ!

本題

サークルのアドベントカレンダーなので思いつきです。

code golf

code golfという単語を聞いたことがあるだろうか。
1年生や2年生で聞いたことがあるという人はそっとブラウザのタブを閉じてエディタを起動しよう。
そうでない人はとりあえず読んでみてくれると書いた手間が報われるかもしれないようなきがするよ。

実例

説明するより実例がいいですね。C言語でやりますよ。
1年生にとってはプログラミングの授業が始まってリアルタイムな話かもしれない。
新しいプログラミング言語を勉強するときに、とりあえず動かすサンプルとして

_人人人人人人人_
> hello world <
 ̄Y^Y^Y^Y^Y^Y ̄

と出力させるケースはよくある。

実際にC言語でやると

#include <stdio.h>

int main(void) 
{
    printf("hello world\n");

    return 0;
}

となる。

これをcode golfすると………

main(){puts("hello world");}

となる。

お分かりいただけただろうか

つまり、code golfとは、目的の出力をするプログラムをいかに小さく作るかということです。
わかりやすく言うと、可読性をガン無視してとにかく行数を(もっと言うと文字数も)抑えるということです。
授業では、改行やインデントを入れて自分だけでなく他の人が見ても読みやすいように書くことを教わると思います。
正しいのは授業なので、授業等で提出するソースコードは綺麗に綺麗に仕上げてください。
コメントもしっかり書きましょう。

次は誰が書くのかなー?

snmpで遊ぶ

snmp(Simple Network Management Protocol)

最近はやりのZabbixとか統合監視ツールで実際の生データを収集してる偉い奴。

何がどうなの

CPU使用率とかロードアベレージとか取ってこれるよ!

とりあえず遊んでみた

  • ubuntu14.04
# install
$ sudo apt-get install snmp snmpd
# 起動していなければ /etc/init.d/snmpd start

# 動くかチェック
$ snmpwalk -v 1 -c public localhost 

実は

データはMIBツリーを参照して取得している。
こいつを参照するのにRedhat系のディストリ(CentOSとか)だと

UCD-SNMP-MIB::laLoad.1 = STRING: 0.00
UCD-SNMP-MIB::laLoad.2 = STRING: 0.01
UCD-SNMP-MIB::laLoad.3 = STRING: 0.05

となるのがUbuntuではならなかった。ので解決方法調べに。

解決

  • snmp-mibs-downloder
$ sudo apt-get install -y snmp-mibs-downloder
$ sudo download-mibs

としておいて、/etc/snmp/snmp.conf

mibs:
↓
# mibs:
$ /etc/init.d/snmpd restart

で解決。めでたしめでたし。

TeraTermで多段ssh

構造

接続したいサーバが外部に公開されていないため、踏み台で多段sshをかける。
認証は公開鍵認証で自動化。

TeraTermの設定

TeraTermマクロでポートフォワード&踏み台サーバ経由での公開鍵認証を試みる | Tera Term(テラターム)の便利な使い方
まんまこの通りでいいんだけど、unlinkだと中間サーバとのsessionを残した状態で
画面が消えるはずが消えてくれない(そんなものかもしれない)

方法変更

手順の自動化。
接続元サーバ: host
中間サーバ: s1
対象サーバ: s2

  1. hostからs1にssh
  2. s1からs2にssh

これをマクロ化してTeraTerm起動時に読み込む

結果論

; hostから中間サーバへの接続コマンドの生成
COMMAND = '"<ttermpro.exeフルパス>" ' <中間サーバのIPorホスト名>:<ポート番号(sshだと22)> /ssh2 /auth=publickey /user=<ユーザー名> /keyfile=<公開鍵のフルパス>'

; 接続(host→中間サーバ)
connect COMMAND

; プロンプトを待つ($はbashなので)
wait "$"

; コマンド送信
sendln "ssh <ユーザー名>@<対象サーバ>"

; プロンプトを待つ
wait "$"

; 画面のクリア
sendln "clear"

おまけ

このマクロをデスクトップとかからショートカットで呼び出す。
さっき作った.ttlをフルパスで呼び出したttpmacro.exeに投げつける。

結論

めんどくさ