Ubuntu16.04でCapsLockとCtrlを入れ替える

自宅のPCをUbuntuにしたので環境整え

調べながらやったら結構面倒だったので備忘

参考 http://d.hatena.ne.jp/aaa555/touch/searchdiary?word=*%5BLinux%5D
http://blog.cnu.jp/blog/2014/05/12/use-xkb/

設定ファイルの雛形を準備

$ mkdir -p ~/.xkb/keymap ~/.xkb/symbols
$ setxkbmap -print > ~/.xkb/keymap/mykbd

.xkb/keymapディレクトリと.xkb/symbolsディレクトリを作成
現在システムに設定されているkeymap(?)をmykbdという名前で~/.xkb/keymapに配置する
setxkbmapコマンドにprintオプションをつけると現在値を標準出力してくれるらしい

変更するキーバインドの設定

$ vim ~/.xkb/symbols/myswap

やりたいことはCapsLockと左Ctrlの入れ替え
myswapに以下のように記述する

partial modifier_keys
xkb_symbols "swapkeys" {
    replace key <LCTL> { [ Caps_Lock ] };
    replace key <CAPS> { [ Control_L] };
};

上記設定をmykbdに反映する

$ vim ~/.xkb/keymap/mykbd

雛形は準備されているので+myswap(swapkeys)の部分を追加します

xkb_keymap {
    xkb_keycodes  { include "evdev+aliases(qwerty)" };
    xkb_types     { include "complete"  };
    xkb_compat    { include "complete"  };
    xkb_symbols   { include "pc+jp+us:2+inet(evdev)+myswap(swapkeys)"   };
    xkb_geometry  { include "pc(pc105)" };
};

システムに設定を追加する

このままだと日本語入力に切り替えたタイミングで設定が戻ったりしてしまうので、システムに反映します

$ vim ~/.bashrc

以下を末尾に追加する

xkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd $DISPLAY 2> /dev/null

作成したmyswapファイルをシステムのほうにコピーする

sudo cp -i ~/.xkb/symbols/myswap /usr/share/X11/xkb/symbols/

/usr/share/X11/xkb/rules/evdev の末尾に次の1行を追加

$ vim /usr/share/X11/xkb/rules/evdev

以下を末尾に追加する

mysetting:swapkeys = +myswap(swapkeys)

gnomeのシステム設定に反映させる

$ gsettings set org.gnome.desktop.input-sources xkb-options "['mysetting:swapkeys']"

再起動すればちゃんと設定が保持されます

GITサーバを新たにたちあげたので、既存のリポジトリを移動

「新しいGITサーバ作ったからこっちを使ってねー」と連絡を受けたので、 今までのリポジトリを移行しました。

SourceTreeを使用していたので、SourceTreeの「ターミナル」をつかって以下の操作をしました。

移行前リポジトリhttp://oldgitserver/git/repo
移行後リポジトリhttp://newgitserver/root/repo

$ mkdir workDir
$ cd workDir
$ git clone --mirror http://oldgitserver/git/repo
$ cd repo.git
$ git push --mirror http://newgitserver/root/repo.git

タグやらブランチやらも含めて移行できました。

最初から

$ git clone --mirror http://oldgitserver/git/repo.git

とすればよかったのかも。

ORACLE デフォルト表領域を変更する

やったこと

  • 表領域を作成
  • ユーザのデフォルト表領域を変更

開発環境を調査していたところ SYSTEM表領域にテーブルが作成されているのを発見。

SYSTEM表領域で性能テストとかヤバイので、新たな表領域を作成しました。

表領域の作成

  • NEWTABLESPACEという名前
  • 100Mのデータファイル
  • 自動拡張500K
  • 最大サイズ1G

で表領域を作成

SQL> CREATE TABLESPACE NEWTABLESPACE
SQL>  DATAFILE 'newtablespace01.dbf' SIZE 100M AUTOEXTEND ON NEXT 500K MAXSIZE 1024M;

Tablespace created.

NEWTABLESPACEという名前の表領域が作成されました。

確認してみます。

SQL> select TABLESPACE_NAME,BYTES,MAXBYTES from dba_data_files where tablespace_name = 'NEWTABLESPACE';

TABLESPACE_NAME                     BYTES   MAXBYTES
------------------------------ ---------- ----------
NEWTABLESPACE                   104857600 1073741824

104857600 Byte = 100MByte
1073741824 Byte = 1GByte

です。

できた。

ユーザのデフォルト表領域の変更

ユーザのデフォルト表領域を変更します。

まず現状を確認

SQL> SELECT USERNAME, DEFAULT_TABLESPACE FROM dba_users where username = 'HOGE';


USERNAME                       DEFAULT_TABLESPACE
------------------------------ ------------------------------
HOGE                           SYSTEM

変更

SQL> ALTER USER HOGE DEFAULT TABLESPACE NEWTABLESPACE;

User altered.

そして確認

SQL> SELECT USERNAME, DEFAULT_TABLESPACE FROM dba_users where username = 'HOGE';


USERNAME                       DEFAULT_TABLESPACE
------------------------------ ------------------------------
HOGE                           NEWTABLESPACE

変更されました。

めでたし、めでたし。

HHKでWindowsをロックする

HHKだとWindowsの画面ロックができぬ

HHK

Windowsのロックとは「Windowsキー」+「L」のショートカットでやるあれです。

離席するときにはやりなさいよっていうあれです。

困ったことにHHKでは上記ショートカットが使えません。

Windowsキー」はFunctionキーとの組み合わせで実現します。

そしてFunctionを押すと「L」のキーは「Page Up」になります。

その結果キーボードショートカットでロックが出来なくなります。

メインメニューからもできるが、面倒。

標準ショートカットの変更はレジストリを書き換える必要があるそうです。

それはしたくない。

解決策 バッチを作ればいいの

HHKでキーボードショートカットを実現するためには、新たなショートカットを作ればいいという結論に達しました。

  1. ロックをかけるバッチを作る
  2. バッチへのショートカットを作る
  3. ショートカットにショートカットキーを割り当てる

バッチの中身

rundll32.exe user32.dll,LockWorkStation

割り当てたショートカットキー

Ctrl+Alt+Page Up

これで「Fn」+「Alt」+「Ctrl」+「Page Up(L)」でロックができるようになりました。

もっと楽なやり方はありますか?

mysql2インストール時に怒られちゃうので回避する方法

  • mysql2インストールしようとして怒られる

railsの環境構築をしていました。 OSのインストールからしていまして、Ubuntu14.04です。 適当に用意した後、rbenv・bundlerごしにgemのインストールをしていたとき、 mysql2のインストール中に以下のとおり怒られました

Installing mysql2 0.3.18 with native extensions

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    /home/unkoyaro/.rbenv/versions/2.2.2/bin/ruby -r ./siteconf20150720-20331-1mx9hf3.rb extconf.rb
checking for ruby/thread.h... yes
checking for rb_thread_call_without_gvl() in ruby/thread.h... yes
checking for rb_thread_blocking_region()... no
checking for rb_wait_for_single_fd()... yes
checking for rb_hash_dup()... yes
checking for rb_intern3()... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lm... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lz... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lsocket... no
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lnsl... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lmygcc... no
checking for mysql_query() in -lmysqlclient... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.

Provided configuration options:
    --with-opt-dir
    --without-opt-dir
    --with-opt-include
    --without-opt-include=${opt-dir}/include
    --with-opt-lib
    --without-opt-lib=${opt-dir}/lib
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --ruby=/home/unkoyaro/.rbenv/versions/2.2.2/bin/$(RUBY_BASE_NAME)
    --with-mysql-dir
    --without-mysql-dir
    --with-mysql-include
    --without-mysql-include=${mysql-dir}/include
    --with-mysql-lib
    --without-mysql-lib=${mysql-dir}/lib
    --with-mysql-config
    --without-mysql-config
    --with-mysql-dir
    --without-mysql-dir
    --with-mysql-include
    --without-mysql-include=${mysql-dir}/include
    --with-mysql-lib
    --without-mysql-lib=${mysql-dir}/lib
    --with-mysqlclientlib
    --without-mysqlclientlib
    --with-mlib
    --without-mlib
    --with-mysqlclientlib
    --without-mysqlclientlib
    --with-zlib
    --without-zlib
    --with-mysqlclientlib
    --without-mysqlclientlib
    --with-socketlib
    --without-socketlib
    --with-mysqlclientlib
    --without-mysqlclientlib
    --with-nsllib
    --without-nsllib
    --with-mysqlclientlib
    --without-mysqlclientlib
    --with-mygcclib
    --without-mygcclib
    --with-mysqlclientlib
    --without-mysqlclientlib

extconf failed, exit code 1

Gem files will remain installed in /home/unkoyaro/work/test/testapp/vendor/bundle/ruby/2.2.0/gems/mysql2-0.3.18 for inspection.
Results logged to /home/unkoyaro/work/test/testapp/vendor/bundle/ruby/2.2.0/extensions/x86-linux/2.2.0-static/mysql2-0.3.18/gem_make.out
An error occurred while installing mysql2 (0.3.18), and Bundler cannot continue.
Make sure that `gem install mysql2 -v '0.3.18'` succeeds before bundling.
  • 回避法

参考サイト

$ sudo apt-get install libmysqld-dev

で「libmysqld-dev」をインストールすれば大丈夫です。

要はライブラリが足りてなかったわけです。

しらんがな・・・

そんなこんなで回避できます。

以上

SVNリポジトリのサーバが変更になった際のEclipse 側の設定変更

SVNリポジトリサーバの引越し

リポジトリサーバが変更になった時のEclipse の設定変更に関してです。
サーバの変更とはサーバのIPアドレスが変更された場合を想定しています。

設定変更

  1. SVNリポジトリエクスプローラを開きます。
  2. 対象のリポジトリを右クリック
  3. コンテキストメニューからプロパティダイヤログを開きます。
  4. サーバURLを変更します。
以上

切り替えとは

ちなみに
プロジェクトエクスプローラ(だったかな?)で右クリック→「チーム」→「切り替え」もそれっぽいものに見えます。
が、これはブランチを変えたりするときに使うものだそうです。
「開発用のブランチ切ったからこっち使ってねー」とか言われた時はこの「切り替え」を使用します。
つまりサーバが変わってない(IPアドレスが変わってない)時ということです。

たぶん。

てことはサーバ側でリポジトリにしてるディレクトリのパスが変わった時とかも最初のリポジトリエクスプローラからの方でやらないといけないんでしょうね。
ミドルウェアでの変更か否かってことが判断基準って言い方でいいんですかね。

rbenvの導入

まだ記事がありませんを回避するためとりあえず。
evernoteのメモから引っ張り出します。

rbenvのインストール方法。

2年前の話なんで試したのはUbuntu12.04.2上

参考サイト
rbenvで複数のバージョンのrubyを使用する環境を整える - memo.yomukaku.net

rbenvのインストール

gitでドン

$ git clone git://github.com/sstephenson/rbenv.git ~/.rbenv

そしてパス通し.

$ echo 'export PATH=$PATH:$HOME/.rbenv/bin' >> ~/.bashrc
$ echo 'eval "$(rbenv init -)"' >> ~/.bashrc
$ source ~/.bashrc

ruby-buildのインストール

rbenvはバージョンの切り替えをするだけなので
rubyのインストールをします。

rubyのビルドもします。

大変なのでプラグインを使います。ruby-buildです。

$ git clone git://github.com/sstephenson/ruby-build.git
~/.rbenv/plugins/ruby-build

必要ライブラリのインストール

たぶん必要。
ないとgemのインストールで怒られるかと。

$ sudo apt-get install build-essensial
$ sudo apt-get install openssl
$ sudo apt-get install libreadline-dev
$ sudo apt-get install zlib1g-dev
$ sudo apt-get install libssl-dev
$ sudo apt-get install libxml2-dev
$ sudo apt-get install libxslt-dev
$ sudo apt-get install ncurses-dev

rbenvでRubyのインストール

rubyのインストールを行います.
rbenvコマンドの使い方は以下のようになります.

インストール

インストールは以下のコマンドで実行します。

$ rbenv install 1.9.3-p392
$ rbenv rehash

rbenv rehashをしないといけないらしい。
このrbenv rehashはgem install ***のあとも必須です。

Rubyのバージョンを指定

$ rbenv global 1.9.3-p392

これでruby 1.9.3-p392バージョンのrubyを使えるようになります.

最後に

今もこの方法でできるんでしょうか?
次までの課題とします。

To be continued