vagrant up でコケる

こんなんでたので。。


$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
[default] Setting the name of the VM...
[default] Clearing any previously set forwarded ports...
[default] Fixed port collision for 22 => 2222. Now on port 2200.
[default] Creating shared folders metadata...
[default] Clearing any previously set network interfaces...
There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.

Command: ["hostonlyif", "create"]

Stderr: 0%...
Progress state: NS_ERROR_FAILURE
VBoxManage: error: Failed to create the host-only adapter
VBoxManage: error: VBoxNetAdpCtl: Error while adding new interface: failed to open /dev/vboxnetctl: No such file or directory

VBoxManage: error: Details: code NS_ERROR_FAILURE (0x80004005), component HostNetworkInterface, interface IHostNetworkInterface
VBoxManage: error: Context: "int handleCreate(HandlerArg*, int, int*)" at line 68 of file VBoxManageHostonly.cpp



一度VirtualboxをSTOP


$ sudo /Library/StartupItems/VirtualBox/VirtualBox stop

再開


$ sudo /Library/StartupItems/VirtualBox/VirtualBox start


もう一度VagrantUPしたら起動した。

マウントポイントのサイズを大きくする方法

# mount -t tmpfs shmfs -o size=7g /dev/shm

システムを再起動してもこの変更が保持されるようにするには、/etc/fstabに次のようなエントリを追加します。

shmfs /dev/shm tmpfs size=7g 0

Oracleが立ち上がらなかったので。

ORA-00845: MEMORY_TARGET not supported on this system.  

ITを教えることの難しさ

ITっていうと範囲が広すぎてコンピュータサイエンスなのか、ネットワークテクノロジーか、またはプログラミング全般のかわからないけど。

うまく教えれる人が非常に少ない。

原因

先生にコミュ症が多い(=教えるのが下手)

コンピュータオタクが昇華してプログラマーシステムエンジニアになることが多かったので、当然といえる。(多分)

そうすると、自分の考えをうまく言葉にできなかったり、伝えきれなかったり、相手のわからないところを汲み取るのが難しい。

比率としては今後へっていきそうだけど。とにかく、技術がわかればいい、じゃなくって、教える技術も磨いて欲しいしそういう施設や機会が必要だ。

業界知識を教えない

これは教える側というか、シラバスを作る学校側の問題だと思うけど、IT系における世の中を教える人ってのは少ないんじゃないだろうか。

少なくとも、自分の周りにはそういうことを教える人は一人、二人くらいしかいなかった。

学校の卒業間際になり、そのときにゼネコンのピラミット構造を知ったし。

そういうことを知らないで、ただあこがれを持っている生徒が、孫請けのIT土方になったらどう責任をとるんだろう。

そうなったとしても、学べることもあるし、本人が決めたことならいいんだけど、選択肢を与えてあげるのが教える側の役目かと思う。

"IT系"とひとくくりに言っても、母体も業態も千差万別なのに。

現場知識を教えない

会社に入って知ったんだけど、ソース管理とかテスト手法とか、本当に習わなかった。

コンピュータサイエンスを学ぶ機会を与えるのもいいが、実際に仕事して食っていくために、プロとしてのエンジニアの最低知識を詰め込んでおくと、相当楽になると思う。

だって、情報工学専攻だった人も、実はまともにプロジェクトこなせないレベルだし。プログラムが書けないとかではなくて。

現場から教員になる人がほとんどいないからだろうな、とは思っている。

オブジェクト指向を教えるのが下手

実はこれは、最も言いたくて許せないことなんだけど。オブジェクトをなんでもかんでも現実世界のモノに置き換えるな!!!

動物クラス?そこから継承してネコクラス!?!?!?鳴くプロシージャ?食うプロシージャ????全然いみわかんねえぇよ!

この例えのせいと俺の頭の悪さのせいで、オブジェクト指向を理解するのにすっっっっごい時間がかかった。

これで教える人がいたら、即刻この例え方はやめてほしい。オブジェクトとは現実のものを指すわけでは、絶対にない。

じゃあ、何なのさ?ってことだが、この記事が逸脱で非常に勉強になる→ Part1 オブジェクト指向を正しく理解する | 日経 xTECH(クロステック)

そもそも、学生プログラミングをするときにオブジェクト指向は必要ない、というかむしろ邪魔。

例えば、オブジェクト指向のキモはいくつかあって、その一つに”再利用”があるが、授業で習うレベルであれば再利用しないケースの方がおおい。

カプセル化ポリモーフィズムだってその恩恵を感じることはできない。

だったら、いちいちインスタンスとか考える必要もないし、全て構造化プログラミングに従い、関数なんてオブジェクトで持たなくていい。

なので、そのデメリットがあるにもかかわらず、なぜ”オブジェクト指向を学ぶのか”ということを説明しなければならない。

オブジェクト指向が生まれた背景を、アセンブリ言語から説明し、命令型プログラミング言語を経て進化した構造化プログラミングの、どこに限界があったのか、そこを教えなければほんとに理解できない。

人間、不必要なことは覚えないもの。あと、関数型言語をおしえるとそこで頭角をあらわす生徒もきっと。

ひさびさに11g

mysqlのデータを11g(というかexadb)にのせるために、ほんとに久しぶりにoracleを触った。

全然覚えてなかったが、、、mysqlと同様、
行指向、トランザクション、インデックスなど、大体は同じだっていうのは分かるんだけど。。

DDLの作り方

orale to mysqlはよく見つかるんだけど、 mysql to oracleはなかなか見つからないのねw
oracle謹製のSQLDeveloperを使えばmysql, SQLServer, postgresなど移行できますが、
最初からmysqlのドライバはいってなかったし、DDLが欲しかったんだよね。インポートでなく。
(インポートしてからCREATE TABLE文だせばよいが、諸事情で先にインポートすることができなかった)

なのでSQLwaysっていうソフトを使って、MySQLDDLOracleDDLを生成した。
(今回は試用版を利用させてもらった)
http://www.ispirer.jp/products

INDEXの作成

INDEXも先に作成した。だが一点気になったのが、違うテーブルであっても同一のインデックス名(オブジェクト名?)が
利用できなかったこと。
MySQLだったら、
CREATE INDEX idx_user_id ON table_name(user_id);
みたいなのがいろんなテーブルに作れたが、Oracleでは無理だった。やり方がおかしかったのかな。

MySQLデータのexport

TSVでEXPORTしておく。

mysql -u(username) -p(password) (database) -B -N -e 'select * from (table);' > data.tsv

Oracleでimport

sqlldrをつかってインポートする
SQL*Loader(sqlldr)でデータをまとめてインポート | 渋谷生活


以上。今のところはうまくいった。。。


おぼえてないこと

  • sqlplus / as sysdba でログインしてつかってる。多分これはだめだろ、まぁローカルだからいいけど。
  • ユーザーの作り方、認証方法など(SQLServerみたいにOS認証があるぽいな。。そこらへん全然MySQLとは違う)
  • オブジェクトとか
  • テーブルスペース
  • データ型 (MySQLでよくやる tinyintとかintとかだめ。あとunsignedはどうなるんだろ)

mysql4.0インストールメモ

    1  2013-06-16 10:20:42  wget ftp://ftp.pbone.net/mirror/mirror.cheetaweb.com/MySQL/4.0/MySQL-server-4.0.24-0.i386.rpm
    2  2013-06-16 10:21:23  wget ftp://ftp.pbone.net/mirror/mirror.cheetaweb.com/MySQL/4.0/MySQL-devel-4.0.24-0.i386.rpm
    3  2013-06-16 10:21:47  wget ftp://ftp.pbone.net/mirror/mirror.cheetaweb.com/MySQL/4.0/MySQL-client-4.0.24-0.i386.rpm
    4  2013-06-16 10:22:08  wget ftp://ftp.pbone.net/mirror/mirror.cheetaweb.com/MySQL/4.0/MySQL-debuginfo-4.0.24-0.i386.rpm
    5  2013-06-16 10:23:21  wget ftp://ftp.pbone.net/mirror/mirror.cheetaweb.com/MySQL/4.0/MySQL-embedded-4.0.24-0.i386.rpm
    6  2013-06-16 10:23:39  ftp://ftp.pbone.net/mirror/mirror.cheetaweb.com/MySQL/4.0/MySQL-shared-4.0.24-0.i386.rpm
    7  2013-06-16 10:23:43  wget ftp://ftp.pbone.net/mirror/mirror.cheetaweb.com/MySQL/4.0/MySQL-shared-4.0.24-0.i386.rpm
    8  2013-06-16 10:24:03  wget ftp://ftp.pbone.net/mirror/mirror.cheetaweb.com/MySQL/4.0/MySQL-Max-4.0.24-0.i386.rpm
    9  2013-06-16 10:24:27  wget ftp://ftp.pbone.net/mirror/mirror.cheetaweb.com/MySQL/4.0/MySQL-bench-4.0.24-0.i386.rpm
   10  2013-06-16 10:24:55  yum install perl-DBI
   11  2013-06-16 10:25:53  rpm -ivh MySQL-server-4.0.24-0.i386.rpm
   12  2013-06-16 10:26:38  rpm -ivh MySQL-client-4.0.24-0.i386.rpm
   13  2013-06-16 10:26:46  rpm -ivh MySQL-devel-4.0.24-0.i386.rpm
   14  2013-06-16 10:26:54  rpm -ivh MySQL-Max-4.0.24-0.i386.rpm
   15  2013-06-16 10:27:03  rpm -ivh MySQL-embedded-4.0.24-0.i386.rpm
   16  2013-06-16 10:27:09  rpm -ivh MySQL-shared-4.0.24-0.i386.rpm

MacVimで、マルチディスプレイ間の移動がバグる

MacVimでマルチディスプレイ間の移動をすると、
描画がおかしくなる。(OS X MauntainLion)

そこで画面再描画キーマップを設定した。
.gvimrcに下記記述。ctrl + Dで画面が再描画される。

"マルチディスプレイ用redraw
nnoremap <C-D> :redraw! <CR>