読者です 読者をやめる 読者になる 読者になる

write ahead log

ロールフォワード用

tputコマンド[POSIXコマンド]

POSIXコマンドを淡々と試しているけど,いい加減飽きてきている. tputは制御コードシーケンスを出力するためのコマンド. 制御コードシーケンスはターミナル毎に違うのでターミナルデータベースから情報を持ってきて,それを利用する必要がある. が,面倒. それ…

pwdコマンド[POSIXコマンド]

絶対オプションが無いだろうから一覧だけ更新しようと思ってたのにあった. なんでも調べてみるものだなぁ. pwdは現在のディレクトリの絶対パスを返すコマンド. オプションはcdコマンドにあるものと同じだった. オプション オプション 内容 -L 論理的な現在の…

ctagsを使ってみる[POSIXコマンド]

ソースコード解析補助ツール. ぶっちゃけGNU Global使ったほうが良い気がする. が,POSIXコマンドでviでも(Emacsも?)デフォルトでサポートしてることを考えると知っといて損はない気もする. そんなわけで試してみる. インストール ubuntuだと入ってたけどね. …

cflowを使ってみる[POSIXコマンド]

相変わらずPOSIXコマンドをずっと見ている.(若干飽きてきた) cflowというソースコード解析ツールがあるらしい. POSIXコマンドっぽいのだが,Ubuntuだとそもそも入っていない. それほど高機能でも無いようだけど,コールグラフが出せるらしい.試してみる. イン…

echoコマンド[POSIXコマンド]

POSIXの記載だとマジで1行出力しか出来ないっぽい. GNUとかだとオプションがあるけど,それもシンプル.ただどれも結構便利. オプション オプション 内容 -n テキストの最後に改行を出力しない -e バックスラッシュによるエスケープを解釈する -E バックスラ…

whoコマンド[POSIXコマンド]

サーバシャットダウン前に一応確認するために使うアレ. オプションはこちらが詳しいが使うのは以下くらいではないか. オプション 内容 -m (または who am i) 自分自身の情報を表示する -q ログインしているログイン名と人数のみを表示する -H ヘッダを付けて…

readコマンドを使う[POSIXコマンド]

readコマンドはシェルスクリプト書くなら基本っぽい. 基本的に行指向で取り込んで,区切り文字ごとにフィールドで分けて勝手に変数に取り込んでくれる. read [1フィールド目を入れる変数] [nフィールド目を入れる変数] ... といった感じ. 区切り文字は特殊変…

bcコマンドを使ってみる[POSIXコマンド]

使ったことがなかったので試してみた. まぁ,便利な事もあるのかもなぁ,と言った感じ. 慣れてくると電卓アプリとか起動するより楽で良いかも. 詳細はこちらが詳しい. The Open Groupの説明には文法までちゃんと書いてある. 標準入力を計算するのでお気楽に試…

commコマンド[POSIXコマンド]

commコマンドは2つのファイルを行単位で単純比較します. 単純比較なので事前ソートが必須です. #サンプル用ファイル1 $ cat text1.txt 1 2 3 4hoge 5 #サンプル用ファイル2 $ cat text2.txt 1 2foo 3 4 5 上記2ファイルに対して実行すると $ comm text1.txt …

waitコマンド[POSIXコマンド]

waitコマンドは他のプロセスやジョブの完了を待つためのコマンド. $ sleep 5 & [1] 3775 $ wait $! # $!はバックグラウンド実行された直前のプロセスのプロセス番号を持つ [1]+ 終了 sleep 5 これだけだとなんの有り難みもないが,シェルスクリプト内で同期処…

sleepコマンド[POSIXコマンド]

sleepコマンドは指定時間(秒)動作を停止します. $ sleep 1 # => 1秒何も起きない $ POSIXだとこれだけみたいです. POSIX外だと以下の指定方式が使えるようです. s(秒),m(分),h(時間),d(日) $ sleep 1m # => 1分何も起きない $ 単体だとまず使いませんが,シェ…

cmpコマンド[POSIXコマンド]

cmpコマンドは1byte単位でファイルを比較できるコマンドです. 例 例として下記の様なファイルを用意します. $ cat greeting1.txt Hello, World. $ cat greeting2.txt hello,world 比較してみます. $ cmp greeting1.txt greeting2.txt greeting1.txt greeting…

vimで文字コードを指定してファイルを開きなおす

vim

:e ++enc=文字コード 文字コードでよく使うのは cp932(shift JIS?) utf-8 くらいだろうか

basenameコマンド[POSIXコマンド]

basenameコマンドはフルパスからファイル名だけを取り出してくれるコマンドです. 例 twinbird@:~/text$ basename /home/twinbird/text/edit.txt edit.txt また,suffixを指定するとファイル名末尾から取り除いてくれます. 例 twinbird@:~/lab$ basename /home…

catコマンド[POSIXコマンド]

catは超基本でオプションもいっぱいあると思っていたんだけど,POSIXだとuオプションしかなかった. しかも存在意義がない..... 使い方 catはファイルをつなげたり表示したりするのに使うコマンドです. 以下の様に単純にファイル内容を表示するのによく使いま…

cdコマンド[POSIXコマンド]

cdコマンド. 必ず使うコマンドだけど,意外と知らないこともあった. オプション オプション 内容 -L 指定ディレクトリがシンボリックリンクの場合,シンボリックリンクのターゲットへ移動 -P 指定ディレクトリがシンボリックリンクの場合,シンボリックリンクへ…

calコマンド[POSIXコマンド]

calコマンドはカレンダーを表示します. (今となっては使うシチュエーションがあまり浮かびませんが...まぁ,シェルスクリプトとかで...いやぁ,date使うなぁ...) 基本 twinbird@:~$ cal 3月 2016 日 月 火 水 木 金 土 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16…

unaliasコマンド[POSIXコマンド]

unaliasコマンドはaliasコマンドで登録した別名を解除するためのコマンドです. 指定した別名の解除 aliasコマンドを実行して解除するものを確認した後に解除する,というのが一般的かなと思います. twinbird@:~/lab$ alias alias ll='ls -alF' alias logwatch…

aliasコマンド[POSIXコマンド]

aliasコマンドはコマンドに別名をつけるコマンドです. aliasの登録 alias 割当て名='コマンド' という形式で使います. 例 twinbird@:~$ alias logwatch='tail -f' twinbird@:~$ logwatch commands.txt val vi wait wc aliasの一覧 引数なしで実行すると登録…

vimで複数行の行頭,行末に文字列を入れる

vim

いつも行末の方を忘れる. 'A'ってあんまり使わないんだよなぁ...意識して使えば便利なのかもしれん. 行頭に入れるとき 矩形選択モードになる(Ctrl-v) 先頭に入れる行を選ぶ 'I'で挿入モードに 挿入するテキストを入力する ESCで抜ける いい感じに入る 行末に…

vimでコピペするとグチャグチャになるあれ

vim

回避方法があった. もう10年近く使ってるけど,一向に使いこなせる気がしないぞこのエディタ. 以下を使ってから貼り付ける. :set paste 解除は :set nopaste

POSIXコマンド一覧

The Open Group こんなにあるんだって感じ. 使ったやつから埋めていこう. [追記] ubuntu15.10でのデフォルトインストールの有無を追記した. 結構入ってない....POSIXって.... コマンド名 説明 ubuntuデフォルト admin sccsの管理ファイルを作るコマンドらし…

cutコマンド[POSIXコマンド]

ここを見るとPOSIXコマンドだけで結構な量があることがわかる. POSIXは基本どこでもある程度動くので便利だ. なにせWindowsでさえMSYSなどを入れればそれなりに動く.SUAもあるし. 面白いので知らないコマンドを試してメモしていくことにした. cutコマンド タ…

UbuntuでcapsLockをctrlにする

いつも安い中古PCにLinux入れて使ってるので、CapsLockがうざったい. Macはいいよなぁ. 以下の設定でCapsLockをCtrlに割り当てれます. $ sudo vi /etc/default/keyboard (下記を) XKBOPTIONS="ctrl:nocaps" 設定後はXの再起動がいるので、おとなしくOSごと再…

Windows で Caps LockキーをCtrlキーに割り当てる

MSYS2を使うようになるとどうしてもUnixキーバインドの癖が出るようになって,CapsLockをCtrlにしたくなる. (特にEmacsを使う人はしんどいと思う) いいのないかなぁ,と思っているとまさかのMicrosoftのドメインで見つかった. Ctrl2cap Windows7ではちゃんと動…

MSYS2のパッケージアップデート方法

1.最低限のパッケージをアップデート $ update-core 実行後msys2のウィンドウを再起動 2.その他のパッケージを更新 $ pacman -Su

Ubuntuにgo-langを入れる

多少古くてもバージョンが気にならない方は以下で. $ sudo apt-get install golang 若い言語だし,一応最新で試してみたかったので公式のバイナリを入れた. 1.公式からダウンロード 2.展開して配置 $ sudo tar -C /usr/local -xzf go1.6.linux-amd64.tar.gz 3…

DotLangViewerの使い方

DotLangViewerというDot言語(Graphviz)で書いたファイルを Chrome上でグラフ表示するChrome拡張を作りました. 「動かない」,という話になりがちだったので, 使い方を書いておきます. とはいえ,使い方自体は至極簡単です. ハマりポイントはChromeのセキュリテ…

Graphvizの使い方を例題で覚える

Graphvizとは GraphvizはDot言語という記法で書かれたテキストファイルをグラフ図に変換するツールです. とりあえずwikipediaを. AT&Tが開発し,公開しています. 環境作成 コマンドラインからがお好みの方は # mac $brew install graphviz # ubuntu $sudo apt…

msys2でシンボリックリンクが作成できない

msys2上でシンボリックリンクを作ろうとしても失敗する. どうも設定が必要らしい. 「C:¥msys64¥msys2_shell.bat」の下記部分の「REM」を外し,有効にして上書き保存します. REM set MSYS=winsymlinks:nativestrict 上書きした「C:¥msys64¥msys2_shell.bat」…

Gitで間違えてブランチではなくmasterにコミットしてしまったのでなんとかする

Git

今のところ一番きれいに感じたやり方は以下. そろそろresetちゃんと理解しないとやばい. git checkout -b foo git checkout master git reset origin/master --hard

gitで管理対象にするけどローカルでは管理対象しない方法

Git

リポジトリ全体としては管理したいけど,各個人のローカルでは変わるファイル(IDEだと多い気がする)の扱いにいつも困る. ※.gitignoreは一度管理対象に入ったものは無視できない. 今はとりあえず $ git update-index --skip-worktree 無視したいファイル名 を…

ソース内のスペース4つをタブに置き換える.もしくはその逆

スペースとタブの入り混じったソースがあって絶望. とりあえずタブ側に寄せようということでsedでも書くかと思ったら,専用のコマンドがあって驚いた. ちょっとしたスクリプト書くとうまくいった. さすが歴史が長いだけあっていろいろ揃ってるなぁ. #!/bin/sh…

ローカルにmasterからブランチを作ってリモートへ入れる

Git

毎日使うのに毎回忘れてググるのでいい加減メモる. git checkout master # masterへカレントブランチを移動 git checkout -b demo # demo branchを作成し,カレントブランチを変更 git branch # 変わったか確認 git push origin demo # リモートへpush

Cで可変長引数のマクロを作る

C

Cで可変長引数のマクロを作れるらしい.(但し, C99以降) 知らなかったのでメモっとく. 要点 ...はVA_ARGSで置き換えられる. ちょっとした例 よくあるマクロ (組み込みとかでありがち.ふつうは#ifdefとかで囲む) char buf[1024]; //適当なサイズ,名前のバッフ…

Windows7のmsys2環境にtmuxを入れる

超簡単だった. $ pacman -S tmux 設定ファイルを少し変える $vim ~/.tmux.conf set -g prefix C-t # PrefixキーをCtrl-tに unbind C-b # PrefixキーCtrl-bをやめる tmuxを再起動するとうまく動かないという記事があったけど、 自分の環境では発生しなかった.…

CentOS7にRedmineを構築する

個人的には機能が多すぎると思うのだけど,それでもRedmineは便利な道具です. CentOS7が用意出来たので、設定してみます. ちなみに大筋Redmine公式の通りでよいのですが えらくハマるポイントがあって試行錯誤した結果が以下になります. 最も困ったのがRubyの…

CentOS7にGitlabを構築する

仮想マシンが用意できたので、CentOS7上にGithubクローンのGitLabを構築した. 入れたのは古いバージョンだけど, 新しいGitLabでもそれほど変わらないんじゃなかろうか. バックアップスクリプトなんかも用意されていてとても便利だ. 完全にSubversionから乗り…

CentOS7にApacheとvsftpdで簡易サーバを作る

Windowsが大多数でSambaが使える状況なら、絶対Sambaのほうがいい. しかし、FTPにも利点はあって,なんと言ってもルータ超えが容易い. それにクライアントコマンドがどんなOSにも装備されているので(標準ではないかもしれないけど), バックアップの自動化なん…

CentOS7にApacheとSambaで簡易テストサーバを作る

Webサイトを扱う、けどWeb屋さんほどバリバリ扱いはしない.(要するに地方のSIerだよ言わせないでくれ) そんな会社だと,ファイルコピペですぐ確認できる環境がほしいという状況が多い. 大体皆さんWindowsしか使えないので必然的にファイルサーバにHTTPサーバ…

CentOS7にKVMをインストールして仮想ネットワークを構築する

小さい企業や自宅での簡易サーバを立てたりしている場合、仮想化は本当に便利だ. ネットで安い仮想化機構を備えたCPU入りのPCを買えば、開発環境や運用環境を何台も構築できる. そんなわけで会社で使うための調査としてKVMをインストールした. NICは3枚.仮想…

lexを使う

少し前に構文解析プログラム入門の定番である電卓でも作ってみようかなとRubyで書いた. わかったことはとにかくめんどくさい. 電卓程度なので手抜きをたくさんできるんだけど、実際、+をAddに変更しようかと思うと、もっとちゃんとした字句解析も必要になる.…

CentOS7にVNC環境を構築する

CentOS7上に環境構築する必要が出てきたのでしばらくそのメモが続きます. sudoの設定とかは基本なんで飛ばしていいかな. VNCの設定 以下、アカウント名をvncuserとして進めます. インストール $ sudo yum -y install tigervnc-server $ vncpasswd # カレント…

CentOS6にUSB外付けHDDをつなげる

サーバ内のディスクがやばい状況で、何が何でもデータを退避する必要がある. そんなときに限ってLinuxに接続できるディスクがなかったりする. つまり手持ちのディスクが全てNTFSフォーマットだった. 困り果てたが、以下のようになった.結局あきらめと力技で…

真面目に電卓を作った

電卓を作る.簡単そうで難しい. 情報系大学出身者なら誰でもできそうなもんだけど、案外大変だった. 未熟だなぁ、と思った. 出来たのは以下.バグもあるかもしれない.(まぁ、あるだろうね)テストも途中から手抜き気味. github.com 動かすと下記のような感じ. t…

rubygemsで特定のバージョンのgemだけ入れる/消す

UbuntuでRubyのテスト書いて走らせたらWarningになった. Warning: you should require 'minitest/autorun' instead. Warning: or add 'gem "minitest"' before 'require "minitest/autorun"' From: /usr/lib/ruby/2.1.0/test/unit.rb:1:in `<top (required)>' test.rb:1:in `<main></main></top>…

シーケンス図を作るChrome拡張を作った

以前にDot言語でグラフを作成するChrome拡張を作ったらとても便利でいい感じ. ただ、仕事をしているとシーケンス図も必要になる場合が多いことに気づく. (UMLは好きじゃないんだけど、シーケンス図は割と普通に誰でも作る気がする) GraphvizのDot言語みたい…

object SVGSVGElementを文字列に変換する

SVG要素を文字列として得てBlob化したかったんだけど、うまくいかなかった. 以下で出来た. var serializer = new XMLSerializer(); var serialized_svg = serializer.serializeToString(svg); ちなみにChromeアプリでダウンロードするコードは以下. var seri…

iPadキーボードでかな入力切替ができない

会社支給はラップトップじゃなくてiPadなので地獄. やむなしでiPad向けキーボード買ったけど言語切替できない.最悪. なんでやーと思ってたらどうもiOSバージョンアップでショートカットキーが変わっているらしい. そういうことで下記をやった. キーボードを…

再帰下降構文解析をやってみる

ここが簡潔に説明されていてよかったので、書いてみた. サクッとやりたかったのでRubyで. class Program attr_accessor :read_ptr attr_reader :code def initialize(code) @code = code @read_ptr = 0 end def char return @code[@read_ptr] end def next @…