基本的にWindowsは使ってないんだけど、身内がWindows7でパスワード忘れたわーわーってなってたので、久しぶりにOphcrackでパスワードリセットしたのでメモ。
なんか、LiveCDのisoをusbメモリに書き込んでbootさせたんだけど、なんかXがうまく立ち上がってくれなかったので、コマンドラインで実行してみた。
対象環境
Windows 7
流れ
1. ここ(http://ophcrack.sourceforge.net/download.php?type=livecd)から
「ophcrack-vista-livecd-3.6.0.iso」をダウンロード
2. ここ(http://ophcrack.sourceforge.net/tables.php)から「Vista free」をダウンロード
3. 1をbootableな形式でusbメモリに書き込む。2もusbメモリに書き込む(別のusbメモリにするか、別パーティションにするとよい)
4. 3で作ったusbメモリで作業対象のPCをboot(BIOSでboot順序を変えておく)
5. Xが起動せずにシェルが起動した場合はsuしてrootになっておく(公式サイトによれば、suのpasswordは"root")
6. 2のvista freeのテーブルディレクトリをマウントしておく
例)# mount /dev/sdb2s2 /mnt
7. こんなコマンドを実行。おしまい
例)# ophcrack -g -t /mnt/table -w /media/sda3/Windows/System32/config
オプションの意味
-g : GUIを起動しない
-t : テーブルファイルの置き場を指定。今回は6でマウントした場所になっている
-w:windowsのCドライブをマウントしているところを指定して、System32のconfigを指定
まぁ、tableファイルいろいろあるけど、そんな長くないパスワードだったらVista Freeのテーブルだけで、5分ぐらいでいけると思う
( ´ー`)フゥー...
2015年2月27日金曜日
2015年2月24日火曜日
Rのチートシート
RとRubyによるデータ解析入門
http://www.amazon.co.jp/dp/4873116155
2章を参考に。
環境周り
Rの導入(macportsで)
sudo port install R
ファイルをコマンドラインから実行
R --vanilla --slave < hoge.R
--vanilla : Rがこれまでに保存していたオブジェクトを読み込まない
--slave : 標準出力に表示を出さない
パッケージのインストール
install.packages('tree')
インストール済パッケージ一覧
installed.packages()
パッケージのアンインストール
remove.packages('hoge')
パッケージの使用
library(tree)
Rのシンタックス
コメント#
代入演算子
x <-1
or
1 -> x
or
mean(x = 1:10)
=はトップレベルでのみ使うことができて、関数内で使った場合はスコープが関数内になる。
x <- 1:10
とすると関数外でも使うことができる。
関数定義
my_function <- function(x,y) {
}
関数作成時に初期値を設定するには下記のようにする
my_function <- function(x,y=5) {
}
関数呼び出し
my_function(1,2)
引数に初期値がある場合は、すべての引数を指定しなくても良い
my_function(1)
条件文とループ
条件文の例
x <- 10
if (x > 20) {
print("x is greater than 20")
} else {
print(x is less than 20")
}
ループ3つ
repeat {}
breakないと止まらないお
while () {}
for ( x in 1:10) {}
データ構造
ベクトル(1次元配列)
// 結合関数cでつくる
> height <- c(1,2,3)
// :演算子でつくる
> 1:10
// seq関数でつくる
> seq(0,100,by=10)
// ベクトルの長さを取る
> length(height)
// ベクトルにアクセス
> length[1]
ベクトルのインデックスは0からではなく、1からはじまる
// 複数要素を取ることもできる
> length[2,3]
リスト
// key/value的な感じ
> peater <- list(name='Peter', age=30, glasses=TRUE)
// 参照は、位置もしくは、名前
> peater[1]
> peater['name']
// exact=FALSEにすると、名前の部分一致でもアリらしい
> petaer['na',exact=FALSE]
行例
> m <- matrix(1:20,nrow=5,ncol=4)
// デフォルトは列方向につくられるので、行方向につくりたいとき
> m <- matrix(1:20,nrow=5,ncol=4,byrow=TRUE)
アクセス
// 10番目、の意
m[10]
// 位置
m[3,4]
// 行列3~5行目,2~3列目
m[3:5,2:3]
配列
ベクトルを2次元以上へ拡張したもの。array()で作成する。
行列を複数つくる感じ
> a <- array(1:24,c(2,3,4))
ファクタ
値には、名義値、順序値、連続値がある。
名義値と順序値をつくりたいためのファクタ。
> colors <- c('green', 'red', 'blue')
> factor(colors)
[1] green red blue
Levels: blue green red
デフォルトではabc順。factor作成時に順序指定することもできる。
> factor(colors, order=TRUE, levels=colors)
データフレーム
名前のついた複数のベクトルからなるリスト
ちょい書きかけ...
2015年2月22日日曜日
MacOSXでの複数Java環境の管理
yosemiteにて
export JAVA_HOME=`/usr/libexec/java_home -v 1.8.0_25`
みたいなversion指定で切り替えられるんだけど、個人的には、
ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home /usr/local/java8
みたいにソフトリンクのほうが、
共存させててるときにわかりやすいなのでなんとなくそうしてる
インストールされているJava一覧
$ /usr/libexec/java_home -V Matching Java Virtual Machines (2): 1.8.0_25, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home 1.7.0_40, x86_64: "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk/Contents/Home/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home
いまのJavaHome
$ /usr/libexec/java_home /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home
余談
JavaHomeの切り替えなんだけど、export JAVA_HOME=`/usr/libexec/java_home -v 1.8.0_25`
みたいなversion指定で切り替えられるんだけど、個人的には、
ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home /usr/local/java8
みたいにソフトリンクのほうが、
共存させててるときにわかりやすいなのでなんとなくそうしてる
2015年2月20日金曜日
MySQLでデッドロック検知したときに、とりあえず見るところ
お手本はこちら。
http://d.hatena.ne.jp/sh2/20090618
これはただの自分用のメモです。
5.5 later想定
デットロックが監視にひっかかったら!!
http://d.hatena.ne.jp/sh2/20090618
これはただの自分用のメモです。
5.5 later想定
デットロックが監視にひっかかったら!!
- 心を落ち着かせる
- show full process list;
- 今流れてるクエリを眺める
- show engine innodb status\G
- LATEST DETECTED DEADLOCKのあたりを見よう
- select * from information_schema.INNODB_TRX order by trx_id;
- limitとかwhereとか適当に効かせて
- ロックを引き起こしてる輩:information_schema.INNODB_LOCKSをみる
- ロックで待たされちゃってる輩:information_schema.INNODB_LOCK_WAITS
- ( ´ー`)フゥー...
2015年2月6日金曜日
2015年やること
1月中、いろんなことを調べたり、試したりしていて、今年やることを(今更)決めたので、残しておこうと思う。これはただのチラ裏。
いろいろ考えていたのは、今年というか、30代のテーマどうしようかなーと思っているのがあって、なかなかもやもやしていたのだった。
やることってか、学ぼうリストみたいな感じですね(言ったからにはやろうというか)
今年やること
英語
いい加減Google翻訳に頼る生活辞めたい。普通にTOEICの勉強しようと思う。
数学(統計)
ECサイトにいることもあって、手元にデータなんかいろいろあるので、いっちょセクシィなアウトプットを目指す。
Ruby
仕事は相変わらずJavaを書いてる気がするんだけど、趣味のものはなるべくRuby使おうかな、と。もう少し慣れたい。Rubyで仕事をしたいかというと特にそういうのもないんだけど。
関数型言語(Haskell ?)
最近、情報が多いのがHaskellなので、これかなー
今年やるかも?
Go
swiftはたぶんやらない
ほか、仕事で必要になった知識は別途是是非でやっていくということで。
人生上の大きなイベントが昨年から今年にかけて多いので、勉強の時間取るのをうまくやっていかないとね。
おしまい
2015年2月2日月曜日
固定長リストへ循環アクセスするサンプル
タイトルまま
コード
コード
package hoge; import java.util.Arrays; import java.util.List; import org.junit.Test; public class TestTest { @Test public void test1() { List実行結果list = Arrays.asList("a","b","c","d","e","f","g"); for(int i=0;i< 10;i++) { System.out.println(list.get(i % list.size())); } } }
a b c d e f g a b c
2015年1月16日金曜日
【補足あり】JavaCVでPixel操作サンプル
さて、昨日つくった環境で
http://blogger.shase.info/2015/01/javacv.html
公式のサンプル(といっても結局c++なんだけど…)っぽいことをしてみる。
https://code.google.com/p/javacv/wiki/OpenCV2_Cookbook_Examples_Chapter_2#Accessing_Pixel_Values
ここにある、Accessing Pixel Values ってやつ。
元画像
CvMatのgetとputがduplicatedってどーゆーことー ?_?
【補足】
get,putの代わりにcvGet2Dとか、cvSet2Dとかあるのでこれでよいですね。
と、ここまで、やって、OpenCV使うにしてもJavaCVいろいろ微妙なんじゃないかな、と思い始めた俺ががいる。
http://blogger.shase.info/2015/01/javacv.html
公式のサンプル(といっても結局c++なんだけど…)っぽいことをしてみる。
https://code.google.com/p/javacv/wiki/OpenCV2_Cookbook_Examples_Chapter_2#Accessing_Pixel_Values
ここにある、Accessing Pixel Values ってやつ。
元画像
加工後
コード
package hoge; import org.junit.Test; import static org.bytedeco.javacpp.opencv_core.*; import static org.bytedeco.javacpp.opencv_imgproc.*; import static org.bytedeco.javacpp.opencv_highgui.*; public class HogeTest { @Test public void test1() { IplImage image = cvLoadImage("abc.jpg"); CvMat cvMat = new CvMat(); cvGetMat(image, cvMat); int div = 100; int nbElements = cvMat.rows() * cvMat.cols() * cvMat.channels(); for (int i = 0; i < nbElements; i++) { double v = (int) cvMat.get(i); double newV = v / div * div + div / 2; cvMat.put(i, newV); } IplImage image2 = new IplImage(cvMat); cvSaveImage("abc2.jpg", image2); cvReleaseImage(image); } }
CvMatのgetとputがduplicatedってどーゆーことー ?_?
【補足】
get,putの代わりにcvGet2Dとか、cvSet2Dとかあるのでこれでよいですね。
と、ここまで、やって、OpenCV使うにしてもJavaCVいろいろ微妙なんじゃないかな、と思い始めた俺ががいる。
MacOSでJavaCVが動かなくて悲しい思いをした
環境は、Mac OS
OpenCVやりたいー。
Javaだから、JavaCV使って見ようと思って、pom.xmlに追加するじゃないですか。
https://github.com/bytedeco/javacv
公式サイトの通り。
で、公式サイトの通りテストプログラムを書いてみる。
悲しい。 結論から言うと、コイツ、いろんなjarが足りないらしい。ひどい! で、それらの足りないものを補ってくれるものが公開されてます。
ずばりここに書いてあった。
Making Computer Vision actually work
http://marellbox.marell.se/?p=687
で、書いてある回避用リポジトリをpom.xmlに追加すると動いたー。
( ´ー`)フゥー...
OpenCVやりたいー。
Javaだから、JavaCV使って見ようと思って、pom.xmlに追加するじゃないですか。
https://github.com/bytedeco/javacv
<dependency> <groupId>org.bytedeco</groupId> <artifactId>javacv</artifactId> <version>0.10</version> </dependency>
公式サイトの通り。
で、公式サイトの通りテストプログラムを書いてみる。
import org.junit.Test; import static org.bytedeco.javacpp.opencv_core.*; import static org.bytedeco.javacpp.opencv_imgproc.*; import static org.bytedeco.javacpp.opencv_highgui.*; public class HogeTest { @Test public void test1() { IplImage image = cvLoadImage("/Users/hoge.jpg"); if (image != null) { cvSmooth(image, image); cvSaveImage("/Users/hoge2.jpg", image); cvReleaseImage(image); } } }でもこんなエラーになるわけです。
java.lang.UnsatisfiedLinkError: no jniopencv_core in java.library.path at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1860) at java.lang.Runtime.loadLibrary0(Runtime.java:845) at java.lang.System.loadLibrary(System.java:1084) at org.bytedeco.javacpp.Loader.loadLibrary(Loader.java:535) at org.bytedeco.javacpp.Loader.load(Loader.java:410) at org.bytedeco.javacpp.Loader.load(Loader.java:353) at org.bytedeco.javacpp.opencv_core.(opencv_core.java:10) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:264) at org.bytedeco.javacpp.Loader.load(Loader.java:385) at org.bytedeco.javacpp.Loader.load(Loader.java:353) at org.bytedeco.javacpp.opencv_highgui. (opencv_highgui.java:13) at jp.co.cyberagent.dokusho.service.HogeTest.test1(HogeTest.java:17) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229) at org.junit.runners.ParentRunner.run(ParentRunner.java:309) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) Caused by: java.lang.UnsatisfiedLinkError: no opencv_core in java.library.path at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1860) at java.lang.Runtime.loadLibrary0(Runtime.java:845) at java.lang.System.loadLibrary(System.java:1084) at org.bytedeco.javacpp.Loader.loadLibrary(Loader.java:535) at org.bytedeco.javacpp.Loader.load(Loader.java:401) ... 31 more
悲しい。 結論から言うと、コイツ、いろんなjarが足りないらしい。ひどい! で、それらの足りないものを補ってくれるものが公開されてます。
ずばりここに書いてあった。
Making Computer Vision actually work
http://marellbox.marell.se/?p=687
で、書いてある回避用リポジトリをpom.xmlに追加すると動いたー。
<dependency> <groupid>org.bytedeco</groupid> <artifactid>javacv</artifactid> <version>0.10</version> </dependency> <dependency> <groupid>se.marell</groupid> <artifactid>opencv-macosx-x86_64</artifactid> <version>2.4.10-0.10</version> <scope>runtime</scope> </dependency> ... <repository> <id>marell</id> <url>http://marell.se/nexus/content/repositories/releases/</url> </repository>
( ´ー`)フゥー...
2015年1月14日水曜日
JavaでVarnish用のHttpMethod BANを発行してみる
いわゆる独自メソッドを定義したいという話。
やりたいことは、
curl -X BAN http://localhost/hogehoge
最初SpringのrestTemplateで考えていたんだけど、これ独自メソッドにどうやってやるんやろ?ってしばらく悩んだ結果、諦めてApacheのHttpClientにしてみた。。。
やりたいことは、
curl -X BAN http://localhost/hogehoge
これ。
Javaでやると、こんなんなった。
最初SpringのrestTemplateで考えていたんだけど、これ独自メソッドにどうやってやるんやろ?ってしばらく悩んだ結果、諦めてApacheのHttpClientにしてみた。。。
2015年1月10日土曜日
rbenvでruby2系の環境をつくる
CentOS 6系で試したメモ
#事前に入れておく yum install -y git gcc openssl-devel #rbenvを拾ってくる git clone https://github.com/sstephenson/rbenv.git ~/.rbenv # pathを通す echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile echo 'eval "$(rbenv init -)"' >> ~/.bash_profile #上記の読み込み exec $SHELL -l #rbenvの動作確認 rbenv -v #ruby-buildの導入 git clone https://github.com/sstephenson/ruby-build.git~/.rbenv/plugins/ruby-build cd ~/.rbenv/plugins/ruby-build #install 可能リスト rbenv install --list #2.1.2のinstall rbenv install -v 2.1.2 #再読み込み rbenv rehash #設定 rbenv global 2.1.2 #確認 ruby -v
2015年1月9日金曜日
Sinatraでechoサーバー
rubyが入ってるmacにて。
sinatraの仕様はこちらを参考にしました
http://qiita.com/mechamogera/items/9c620155e669b394d513
5分でできますね。(^^)
sinatraのinnstall
gem install sinatra --no-ri --no-rdoc -V
echo.rb
require 'sinatra'
get '/hoge' do
http_headers = request.env.select { |k, v| k.start_with?('HTTP_') }
p "#{http_headers}"
起動コマンド
ruby -rubygems ./echo.rb -o 127.0.0.1 -p 10000 &
動作確認
http://127.0.0.1:10000/hogeにGETでアクセス
sinatraの仕様はこちらを参考にしました
http://qiita.com/mechamogera/items/9c620155e669b394d513
5分でできますね。(^^)
2015年1月6日火曜日
Macで、apache + phpの環境をつくる
MacPortsでちょーざっくり
他必要なものがあったら入れる
(sudo port list php53-* ででてくるものとか)
phpとapacheとhandler入れる
sudo port install php53 apache2
sudo port install php53-apache2handler
他必要なものがあったら入れる
(sudo port list php53-* ででてくるものとか)
apacheにモジュール読み込ませる
cd /opt/local/apache2/modules
sudo /opt/local/apache2/bin/apxs -a -e -n php5 mod_php53.so
httpd.confに追加
#phpのtypeを追加
AddType application/x-httpd-php .php
Include conf/extra/httpd-vhosts.conf
Include conf/extra/mod_php53.conf
DirectoryIndex index.html index.php
httpd-vhosts.confに最低限の設定を
<VirtualHost *:80>
DocumentRoot "/opt/local/apache2/htdocs"
ServerName localhost
</VirtualHost>
php.iniを環境にあわせて編集
sudo ln /opt/local/bin/php53 /opt/local/bin/php
sudo cp /opt/local/etc/php53/php.ini-development /opt/local/etc/php53/php.ini
sudo vim /opt/local/etc/php53/php.ini
適当に
apache起動
sudo /opt/local/apache2/bin/apachectl start
動作確認
sudo vim /opt/local/apache2/htdocs/info.php
$ cat /opt/local/apache2/htdocs/info.php
<?php
phpinfo();
?>
ブラウザで、 http://localhost/info.php
2015年1月5日月曜日
PHPはじめてなJava屋のチートシート
コメント
- /
- /** ~ */
メソッド
- private メソッドの名前
- アンダースコアからのキャメル
- ex) _buildHoge() { }
演算子
- ::(ダブルコロン)
- static,定数,オーバーライドしたクラスのプロパティやメソッドに対してアクセス
- ->(アロー演算子)
- オブジェクトのメンバにアクセス
- ex) $this->(メソッド) // 自クラスのメソッド、変数にアクセス
- ===(厳密な比較)
- .(文字列結合)
- .= (文字列結合代入)
- $hoge = "aaa";$hoge .= "bbb!"; // $hoge は、"aaabbb" となる
モジュール
- defined()
- 指定した定数が存在しているかの確認
- ex)bool defined ( string $name )
- 定義するのは、define("A_B_C","className");
TIPS
- フィールドへのアクセス等は$this->
- private $_hoge = '';
- $this->_hoge = "aaa";
- とか
- new クラス名してないのになんか使われてるっぽい
- new ReflectionClass(クラス名)になってた
- error_log() : 標準のエラーログ関数
- ドコに吐かれるかは、php.iniで定義
参考にしてみたもの
Zend Framework PHP 標準コーディング規約
http://framework.zend.com/manual/1.12/ja/coding-standard.html
ほかGoogle先生
2014年12月10日水曜日
MacOS X LionにOpenStack Swiftのclientを入れる
だんだんLionのままにしてるの恥ずかしくなってきたけど…
// pipがなかったのでいれる $ sudo easy_install pip // swiftのclient入れる $ sudo pip install python-swiftclient // 怒られる $ swift Traceback (most recent call last): File "/usr/local/bin/swift", line 7, infrom swiftclient.shell import main File "/Library/Python/2.7/site-packages/swiftclient/__init__.py", line 20, in from .client import * File "/Library/Python/2.7/site-packages/swiftclient/client.py", line 34, in from swiftclient import version as swiftclient_version File "/Library/Python/2.7/site-packages/swiftclient/version.py", line 27, in import pbr.version ImportError: No module named pbr.version // 足りなそうなもの入れる $ sudo pip install pbr // 違う理由で怒られる $ swift --version Traceback (most recent call last): File "/usr/local/bin/swift", line 7, in from swiftclient.shell import main File "/Library/Python/2.7/site-packages/swiftclient/__init__.py", line 20, in from .client import * File "/Library/Python/2.7/site-packages/swiftclient/client.py", line 34, in from swiftclient import version as swiftclient_version File "/Library/Python/2.7/site-packages/swiftclient/version.py", line 28, in version_string = str(pbr.version.VersionInfo('python-swiftclient')) File "/Library/Python/2.7/site-packages/pbr/version.py", line 39, in __str__ return self.version_string() File "/Library/Python/2.7/site-packages/pbr/version.py", line 78, in version_string for part in self.release_string().split('.'): File "/Library/Python/2.7/site-packages/pbr/version.py", line 70, in release_string self.release = self._get_version_from_pkg_resources() File "/Library/Python/2.7/site-packages/pbr/version.py", line 62, in _get_version_from_pkg_resources return packaging.get_version(self.package) File "/Library/Python/2.7/site-packages/pbr/packaging.py", line 870, in get_version raise Exception("Versioning for this project requires either an sdist" Exception: Versioning for this project requires either an sdist tarball, or access to an upstream git repository. Are you sure that git is installed? // このwaringあやしい $ pip list (略) Warning: cannot find svn location for setuptools==0.6c12dev-r85381 // upgradeしてみる $ sudo pip install --upgrade setuptools // ちゃんと動いた $ swift --version swift 2.3.1
2014年11月1日土曜日
MySQLのUNIQUE KEYにおける備忘録3つ
環境はMySQL 5.x、innodbを想定している。
備忘録的に。
1. text型にはUNIQUE KEYをそのまま設定できない
※ご指摘頂きました。
blobのため、そのままでは設定できない、というのが正しいです。 代わりにvarcharでも使うことにしよう。
なお、textにインデックスを貼りたいときは、リファレンスにもある通り、こうすればOK
BLOB または TEXT カラムにインデックスを張る場合、インデックスに対して接頭辞長を指定しなければなりません。
例 : CREATE TABLE test (blob_col BLOB, INDEX(blob_col(10)));
接頭辞は、最大 1000 バイト長 (InnoDB テーブルに対しては 767 バイト) まで可能です。接頭辞の最大長はバイトで評価されます。
一方、CREATE TABLE ステートメント内の接頭辞長は文字数として解釈されます。マルチバイトキャラクタセットを使用するカラムに対して接頭辞長を指定するとき、このことを考慮に入れなければいけません。
4.4.2. カラムインデックス
2. keyのlengthは最大で767byteまで
たとえば、UTF-8のとき、3byteで計算すると、varchar(256)はだめで、256*3=768byteになってしまう。(だから、varchar(255)をよく見かけるんだよね)。
あと余談。これ、UTF-8が3byte計算ならいいんだけど、MySQL 6系から今UTF8mb4と呼ばれている4byteUTFが標準のUTF-8になるらしく、そうなった場合、varchar(255)でもあふれることになるんだよね。
UTF8mb4のなにが嬉しいかというと、個人的には絵文字系がそのまま扱えるのが嬉しいかなw
3. NULLはいくらでも入る
nullの定義上、すべてのnullはユニークってことらしいので、nullはいくらでも入る。
カラムにdefault nullを定義するのもOK
2014年9月9日火曜日
MySQLでERROR:1093を回避する
まー些細なことなんですけどね。
エラーになる(as tmpが意味をなしてない)
こんなエラー
リファレンスマニュアルより
http://dev.mysql.com/doc/refman/5.1/ja/subquery-errors.html
ではどうするかというと、いっこ別に fromでtmpを受け取ってあげれば実はOK
うまくいく
エラーになる(as tmpが意味をなしてない)
update hoge set code = 0 where id IN (select id from hoge as tmp where id = 1 group by id order by id) ;
こんなエラー
ERROR 1093 (HY000): You can't specify target table 'hoge' for update in FROM clausemysqlって同じテーブルに対するサブクエリからの操作ができないんですよね。
リファレンスマニュアルより
http://dev.mysql.com/doc/refman/5.1/ja/subquery-errors.html
サブクエリは、SELECT ステートメント同様 UPDATE と DELETE ステートメント内で正当なので、UPDATE ステートメント内で、割り当ての為にサブクエリを利用する事ができます。しかし、同じテーブルを(この場合、テーブル t1)サブクエリの FROM 条項と更新ターゲットの両方に対して利用する事はできません。
ではどうするかというと、いっこ別に fromでtmpを受け取ってあげれば実はOK
うまくいく
update hoge set code = 0 where id IN ( select id from (select id from hoge where id = 1 group by id order by id) as tmp ) ;
2014年6月30日月曜日
ImageMagickのコマンドラインツールで画像の情報をさくっと見てみる
環境はCentOS 6系
ImageMagick入れる
$ sudo yum install ImageMagickidentifyコマンドでチェック
$ identify -verbose newwindow.png Image: newwindow.png Format: PNG (Portable Network Graphics) Class: DirectClass Geometry: 11x9+0+0 Resolution: 72x72 Print size: 0.152778x0.125 Units: Undefined Type: PaletteMatte Endianess: Undefined Colorspace: RGB Depth: 8-bit Channel depth: red: 8-bit green: 8-bit blue: 8-bit alpha: 1-bit Channel statistics: red: min: 117 (0.458824) max: 255 (1) mean: 207.97 (0.815567) standard deviation: 58.2078 (0.228266) kurtosis: -1.58905 skewness: -0.506753 green: min: 0 (0) max: 255 (1) mean: 170.879 (0.670113) standard deviation: 108.467 (0.425361) kurtosis: -1.28129 skewness: -0.68968 blue: min: 0 (0) max: 255 (1) mean: 170.879 (0.670113) standard deviation: 108.467 (0.425361) kurtosis: -1.28129 skewness: -0.68968 alpha: min: 0 (0) max: 255 (1) mean: 167.424 (0.656566) standard deviation: 121.088 (0.474855) kurtosis: -1.56516 skewness: 0.659425 Image statistics: Overall: min: 0 (0) max: 255 (1) mean: 159.326 (0.624807) standard deviation: 111.088 (0.435638) kurtosis: -1.49685 skewness: -0.508195 Alpha: rgba(255,255,255,0) #FFFFFF00 Histogram: 16: (117,117,117,255) #757575 grey46 24: (153, 0, 0,255) #990000 rgba(153,0,0,1) 34: (255,255,255, 0) #FFFFFF00 rgba(255,255,255,0) 25: (255,255,255,255) #FFFFFF white Rendering intent: Undefined Gamma: 0.45 Interlace: None Background color: white Border color: rgba(223,223,223,1) Matte color: grey74 Transparent color: none Page geometry: 11x9+0+0 Dispose: Undefined Iterations: 0 Compression: Zip Orientation: Undefined Properties: date:create: 2014-06-30T19:11:35+09:00 date:modify: 2014-06-30T19:11:35+09:00 signature: 2c79c5cc4298064485707a3e8c1e0ceba9f7241dd7366ff9a9dcb505a8b14936 Software: Adobe ImageReady Artifacts: verbose: true Tainted: False Filesize: 220b Number pixels: 99b Version: ImageMagick 6.5.4-7 2014-02-10 Q16 OpenMP http://www.imagemagick.orgずらーっとでてくる 例えば色空間(RGBとかCMYKとか)だったら
identify -verbose newwindow.png |grep Colorspace Colorspace: RGBColorspaceを見ればよいね。
2014年6月24日火曜日
jmxtermで手軽にJMX経由でmbeanの値を見てみる
ちょっと凝ったことをしたいときは、Javaだったり、JRubyなんかでスクリプト書いたほうがいいと思うんだけど。。。
単純に特定の値を見たい、そんなときはコマンドラインでカジュアルにチェックできると嬉しいよね、ってことで、jmxtermです。
ちなみに、グラフとか見たい時はJConsoleもいいけど、VisualVMのほうが見た目がよいね。最近のJavaならJAVA_HOME/bin配下にjvisualvmってのがあるから、そいつです。
(閑話休題)
というわけで、チートシート風に。例では、hazelcastの値を取っていますが、別にhazelcastでなくてももちろんかまいません。
JMXを有効にするには、最低4つJVMの起動パラメータに追加してください。
(あたりまえだけど、外に晒される環境でああれば、適切なアクセス制限してください)
で、JVMを起動させたら、繋いでみる。
インタラクティブシェルとして操作もできるけど、パイプからコマンド投げたほうがなにかと便利。
javaが実行できる環境で叩いてください。これはMacで使用している例。
単純に特定の値を見たい、そんなときはコマンドラインでカジュアルにチェックできると嬉しいよね、ってことで、jmxtermです。
ちなみに、グラフとか見たい時はJConsoleもいいけど、VisualVMのほうが見た目がよいね。最近のJavaならJAVA_HOME/bin配下にjvisualvmってのがあるから、そいつです。
(閑話休題)
というわけで、チートシート風に。例では、hazelcastの値を取っていますが、別にhazelcastでなくてももちろんかまいません。
JMXを有効にするには、最低4つJVMの起動パラメータに追加してください。
(あたりまえだけど、外に晒される環境でああれば、適切なアクセス制限してください)
-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=適当に -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
で、JVMを起動させたら、繋いでみる。
インタラクティブシェルとして操作もできるけど、パイプからコマンド投げたほうがなにかと便利。
javaが実行できる環境で叩いてください。これはMacで使用している例。
// ドメイン一覧 echo domains | java -jar ./jmxterm-1.0-alpha-4-uber.jar -l host:port // bean一覧 echo beans -d com.hazelcast | java -jar ./jmxterm-1.0-alpha-4-uber.jar -l host:port // info取得 echo 'info -b instance=sessions,name=hoge,type=IMap -d com.hazelcast' | java -jar ./jmxterm-1.0-alpha-4-uber.jar -l host:port // 対象の値全部 echo 'get -b instance=sessions,name=hoge,type=IMap -d com.hazelcast *' | java -jar ./jmxterm-1.0-alpha-4-uber.jar -l host:port // 特定の値 echo 'get -b instance=sessions,name=hoge,type=IMap -d com.hazelcast localHeapCost' | java -jar ./jmxterm-1.0-alpha-4-uber.jar -l host:port // keyは要らんからvalueだけ echo 'get -b instance=sessions,name=hoge,type=IMap -d com.hazelcast -s localHeapCost' | java -jar ./jmxterm-1.0-alpha-4-uber.jar -l host:portらくちんですなー
2014年6月16日月曜日
2014年5月16日金曜日
Excelからのcsvをjava.nioで読んだらMalformedInputException
環境
- Mac OS X Lion
- Java 7
- 元ファイルは素性のしれないxlsx
- Excel 2011
経緯
素性のしれないxlsxをExcelでcsvにした
こんな読み込みをしていて
こんな例外が
こんな例外が
java.nio.charset.MalformedInputException: Input length = 1
元のファイルを見てみる
$ file --mime fuga.csv
fuga.csv: text/plain; charset=unknown-8bit
unknownとかいっちゃってる。
sublime Textで、UTF-8 で保存しなおす。
$ file --mime fuga.csv
fuga.csv: text/plain; charset=utf-8
わーい。
これで読み込めた。
追記
そもそもなんだけど、Excelでcsv出力すると、S-JIS(固定)らしい。
別件で、InputStream扱うときに
BufferedReader br = new BufferedReader(new InputStreamReader(hoge.getInputStream(), "SJIS"));
List<String> stringList = new ArrayList<>();
while(br.ready()) {
stringList.add(br.readLine());
}
br.close();
とかで読み込みできた。
ちなみに、hogeはSpringのMultipartFileです。
2014年4月30日水曜日
SpringMVCのform:selectだけど、optionのlabelが使いたい
結論から言うと、妥協してるのでいい方法があったら教えて欲しい。
元のやつ
<form:select class="hoge-form" items="${hogeMap}" path="hogeId" required="required">
<select id="hogeId" name="hogeId" class="hoge-form" required="required">
<option value="1">リスト1</option>
<option value="2">リスト2</option>
</select>
このoptionのところにlabelをつけたいんだけど、form:selectだとどうにもうまくいかなくて妥協したのがコレ
生成されるのはこんなん
<select id="hogeId" name="hogeId" required="required">
<option value="1" label="0.リスト1" class="hoge-form"></option>
<option value="2" label="1.リスト2" class="hoge-form"></option>
</select>
元のやつ
<form:select class="hoge-form" items="${hogeMap}" path="hogeId" required="required">
hogeMapはSpringMVCのControllerで定義されているMap<Integer,String>である。
上記のようなタグは、実行されるとこんな感じになる。
<select id="hogeId" name="hogeId" class="hoge-form" required="required">
<option value="1">リスト1</option>
<option value="2">リスト2</option>
</select>
このoptionのところにlabelをつけたいんだけど、form:selectだとどうにもうまくいかなくて妥協したのがコレ
<select id="hogeId" name="hogeId" required="required">
<c:forEach var="hoge" items="${hogeMap}" varStatus="hogeStatus">
<option value="${hogeMap.key}" label="${hogeStatus.index}.${hoge.value}" class="hoge-form" />
</c:forEach>
</select>
生成されるのはこんなん
<select id="hogeId" name="hogeId" required="required">
<option value="1" label="0.リスト1" class="hoge-form"></option>
<option value="2" label="1.リスト2" class="hoge-form"></option>
</select>
びみょ
追記
別途modelMapになにかのmodelがあって、form:selectのpathに指定したやつがmodelMapのmodelのプロパティにあると勝手にそれをselectedにしてくれる機能を使ってる場合は別途、<option>にこんな指定が必要です。
追記
別途modelMapになにかのmodelがあって、form:selectのpathに指定したやつがmodelMapのmodelのプロパティにあると勝手にそれをselectedにしてくれる機能を使ってる場合は別途、<option>にこんな指定が必要です。
${(model.hogeId eq hoge.key)?'selected="selected"' : ''
2014年4月22日火曜日
Basic認証ついてるAPIをSpringのRestTemplateでPOSTするサンプル
タイトルまんま。例えばcurlで
こんな感じで使えるAPIをRestTemplateで使おうと思った時はこんなコードでOK
こちら参考にしました(リンク先はGETの例)
http://springinpractice.com/2013/10/02/quick-tip-basic-authentication-with-spring-resttemplate
curl http://example.com/hoget -X POST -u shase:p@$$w0rd
こちら参考にしました(リンク先はGETの例)
http://springinpractice.com/2013/10/02/quick-tip-basic-authentication-with-spring-resttemplate
2014年4月10日木曜日
骨の折れる話
案外インターネット上に情報が少なく感じたので、親指の骨折(母指基節骨骨折)から治療までの記録を簡単に残しておこうと思います。
今丁度2回目の手術(固定ワイヤーの抜針)が終わったところです。
ま、ふつーのことなんですが。。。
こっから語り入ります。
こけた時に、思わず左手をついてしまったらしく、親指の付け根のあたりから腫れていて、突き指をしたような痛みがありました。
痛みはあったものの、そんな大したこともないかな〜という感じで、自力で下山してその日は新幹線で東京の自宅に帰りました。
翌日、市販の湿布をして寝て起きて、それでもやはり腫れが引いておらず、これはヒビでも入ってるかなぁ、と思い、ネットで調べて家から近い整形外科のA診療所に向かいました。
そこで撮ったレントゲンを見ながら
「折れてますねー。これは手術しないとだめですねー」
という、宣告を受けたのでした。
ひと駅隣に、手の専門医がいる病院があるとのこと。
特に手の外科手術をしてくれそうな病院に心当たりがなかったので(普通無いですよね)、紹介状を書いてもらい、午後の診察に間に合わせる感じで、その専門医のいるB病院に行ったのでした。
「明日は祝日だから、明後日手術できます?」
という話になり、ずーん、と落ち込んだのを覚えています。
なんでもやっぱり手術以外の解決方法がないとのことで、放置しておくと握力無くなる、という話でした。
セカンドオピニオンも一瞬だけ考えたんですが、最初に行ったA診療所の先生が、
「ウチでは手の骨折はこの病院を毎回紹介しているし、このへんの病院の間でも手ならB病院だね」
なーんてゆってたので、めんどくさくなってじゃあ明後日手術します。ということになりました。
その日は手術の為の血液検査とか、事前のブリーフィングとかして帰りました。
人生で手術なんてしたことなかったのでガクブルだったんですが、事前の説明で
ということだったので、まぁ、そこまででも無いのかなぁ、と思いました。
実際やってみるとしんどかったんですが。
日帰り手術なので、まず、入院して、手術着に着替え、熱を測ったり、血圧を測ったりします。
時間は結局前の患者さんの手術が押したりするとズレするので、だいたいO時ぐらい、という感じです。
ガクブルしながら暇を潰します。
そして、いざ呼ばれると、まぁ、手以外は元気なので、徒歩で手術室に向かいます。
手術室に入ると、まず患部を洗うように言われます。これも看護師さんに言われながら自分で洗います。
その後、手術台に横たわり手術。。。という流れなのですが、わたしが行った手術室では東京FMがずーっと手術中も流れていました。
手術の流れとしては、麻酔〜執刀〜縫合、って感じでしょうか。
全身麻酔ではないので手術されている間意識があるんですが、金属製のワイヤーとかを扱っている関係で、
キーン、とか、バチッ(ニッパーで切る)とか金属加工音
がいちいち気になりますが、どうしようもないですよね。。。
都合2時間ほどかかったのですが、憔悴してるわたしに先生が一言
「靭帯も切れてたから縫っておいたよ」
と軽い感じで言われたのが印象的です。骨折に加えて靭帯も切れていたみたいでした(靭帯はレントゲンに映らないので開けないとわからない)。
この手術では結果ワイヤーを4本埋め込む事になりました。
麻酔が切れた途端、激しい痛みが押し寄せました
ま、切ってるから当たり前なんですが、耐えかねて痛み止めを2回分飲んだんですがそれでも痛くて、その夜は悶絶しながら寝ました。
ちなみに、処方された薬は、
でした。これを5日ぐらい飲み続けます。痛みは2〜3日目からずいぶん良くなりました。
この時はギブス固定されています。
ワイヤー1本は外に露出してる
という状態でした。それをペンチでエイヤーって抜く感じですね。これはこれで痛い。
このタイミングでギブスも外れました。
リハビリ(指を動かせ)と言われるのもこの辺りから。
今丁度2回目の手術(固定ワイヤーの抜針)が終わったところです。
時間のない人向けまとめ
- スノーボードは油断するとすぐ怪我をするので気をつけよう
- 手の外科は専門性が高いので、「手外科専門医」がいる病院を選ぼう
- やっぱり保険は大切
- 手術室のBGMは先生の趣味
ま、ふつーのことなんですが。。。
こっから語り入ります。
骨折〜診断
2月のとある日曜日に、会社の同僚とスノボに行き、誰も見てないところでふつーにこけました。こけた時に、思わず左手をついてしまったらしく、親指の付け根のあたりから腫れていて、突き指をしたような痛みがありました。
痛みはあったものの、そんな大したこともないかな〜という感じで、自力で下山してその日は新幹線で東京の自宅に帰りました。
翌日、市販の湿布をして寝て起きて、それでもやはり腫れが引いておらず、これはヒビでも入ってるかなぁ、と思い、ネットで調べて家から近い整形外科のA診療所に向かいました。
そこで撮ったレントゲンを見ながら
「折れてますねー。これは手術しないとだめですねー」
という、宣告を受けたのでした。
ひと駅隣に、手の専門医がいる病院があるとのこと。
特に手の外科手術をしてくれそうな病院に心当たりがなかったので(普通無いですよね)、紹介状を書いてもらい、午後の診察に間に合わせる感じで、その専門医のいるB病院に行ったのでした。
手外科専門医さて、その病院に行き、レントゲンを撮って、速攻で
あとから知ったのですが、手という器官はとても難しいらしく、整形外科の中でも、更に専門性が高いそうです。
手外科学会というところが、「手外科専門医」認定制度を行っていて、そこに登録されている人は一応手外科の専門医として、認められているそうです。
こちらにリストがあります。
http://www.jssh.or.jp/ippan/senmon/senmoni-meibo.html
首都圏には多い気がしますが、やっぱり地方には少ないですよねぇ。
この話もずいぶん後になってから知ったんですが、わたしを担当していただいた先生もリストにいました。
「明日は祝日だから、明後日手術できます?」
という話になり、ずーん、と落ち込んだのを覚えています。
なんでもやっぱり手術以外の解決方法がないとのことで、放置しておくと握力無くなる、という話でした。
セカンドオピニオンも一瞬だけ考えたんですが、最初に行ったA診療所の先生が、
「ウチでは手の骨折はこの病院を毎回紹介しているし、このへんの病院の間でも手ならB病院だね」
なーんてゆってたので、めんどくさくなってじゃあ明後日手術します。ということになりました。
その日は手術の為の血液検査とか、事前のブリーフィングとかして帰りました。
手術
人生で手術なんてしたことなかったのでガクブルだったんですが、事前の説明で
- 日帰り手術
- 麻酔は左腕一本(伝達麻酔?)
- 時間は1時間ぐらい
ということだったので、まぁ、そこまででも無いのかなぁ、と思いました。
実際やってみるとしんどかったんですが。
日帰り手術なので、まず、入院して、手術着に着替え、熱を測ったり、血圧を測ったりします。
時間は結局前の患者さんの手術が押したりするとズレするので、だいたいO時ぐらい、という感じです。
ガクブルしながら暇を潰します。
そして、いざ呼ばれると、まぁ、手以外は元気なので、徒歩で手術室に向かいます。
手術室に入ると、まず患部を洗うように言われます。これも看護師さんに言われながら自分で洗います。
その後、手術台に横たわり手術。。。という流れなのですが、わたしが行った手術室では東京FMがずーっと手術中も流れていました。
手術室のBGM
これもあとから知ったんですが、手術室のBGMって、先生の趣味、らしいですね。
先生によってはお気に入りのBGMを持ち込む人もいるとか、いないとか。。。
開腹のようなガチの奴はBGM無しだったりもするようです。
手術の流れとしては、麻酔〜執刀〜縫合、って感じでしょうか。
全身麻酔ではないので手術されている間意識があるんですが、金属製のワイヤーとかを扱っている関係で、
キーン、とか、バチッ(ニッパーで切る)とか金属加工音
がいちいち気になりますが、どうしようもないですよね。。。
都合2時間ほどかかったのですが、憔悴してるわたしに先生が一言
「靭帯も切れてたから縫っておいたよ」
と軽い感じで言われたのが印象的です。骨折に加えて靭帯も切れていたみたいでした(靭帯はレントゲンに映らないので開けないとわからない)。
この手術では結果ワイヤーを4本埋め込む事になりました。
術後
手術した当日の夜がしんどかったです。麻酔が切れた途端、激しい痛みが押し寄せました
ま、切ってるから当たり前なんですが、耐えかねて痛み止めを2回分飲んだんですがそれでも痛くて、その夜は悶絶しながら寝ました。
ちなみに、処方された薬は、
- 鎮痛剤
- 抗生物質
- 胃薬
でした。これを5日ぐらい飲み続けます。痛みは2〜3日目からずいぶん良くなりました。
この時はギブス固定されています。
抜糸
術後一週間ぐらいで、抜糸が行われます。ハサミでチョキチョキってかんじです。まだギブスは取れません。ワイヤーを1本抜く
術後三週間ぐらいで、1本ワイヤーを抜きました。といっても手術ではなく、ワイヤー1本は外に露出してる
という状態でした。それをペンチでエイヤーって抜く感じですね。これはこれで痛い。
このタイミングでギブスも外れました。
リハビリ(指を動かせ)と言われるのもこの辺りから。
保険について
手術の費用としては、3割負担のおかげで、1回数万円程度でした(痛い出費ですが。。。)
スノーボード用の簡易な保険とかに入っておくのも良いかも、と今回の事件を振り返って思いました。
旅行代理店のパック旅行中の怪我だったので、通院が終わって総額が算出され次第、保険適用の申請をする予定です。
最初に通院した時に、旅行代理店に電話したところ、「事故発生報告」のような書類の提出を求められ、返信すると、各種手続きの書類が送られてきました。
通院時の領収書等を残しておいたほうが良いとの事だったので、一応全部残してあります。
再手術の日程決まる
術後六週間ぐらいで、そろそろ再手術できるかな、という話になりました。指にワイヤー3本残っており、それを撤去する手術になります。
ちょうど年度初めにかぶっていたので、わたしは1周間だけずらしました。
再手術
術後八週間ぐらいで、再手術と相成りました。今回の手術も
- 日帰り手術
- 局部麻酔(今度は腕ではなく、手だけ)
- 時間は1時間ぐらい
という話でした。
基本的な流れは前回の手術と一緒なんで、端折りますけど
- 時間はすぐ終わった(手術時間自体は10分程度)
- 手だけの麻酔なので逆に痛い(麻酔の注射自体の痛みとか、腕に感覚があることによる痛みとか)
- やっぱり手術室は東京FMだった
という感じで、とりあえず無事終わりました。
術後の痛みも前回に比べれば全然マシでした。でも、やっぱり憔悴してはいます。。。
最後に
今後の流れとしては
- 抜糸
- リハビリ
- 術後1ヶ月ぐらいに先生の最後のチェック
- 終了
という感じだそうです。(もちろん、予後次第というのはありますが)。
今回のことで、多くの人にご迷惑をお掛けして申し訳ないと思いつつ、また多くの人に心配して頂いて感謝の気持ちでいっぱいでした。
一気には難しいかもしれませんが、ちょっとずつ恩返しができたらなぁ、と思っています。
2014年4月3日木曜日
Springockitoのメモ(一部だけMockitoのモックに)
要旨
Spring+Mockitoを使った環境で、DIしてテストしたいときに、一部だけMockitoのモックに置き換えたい、という話。Mockito単体だとなんかうまくいかなくて。
もしかしたら、Mockitoでも、やりかた間違ってんのか、もしくは、PowerMockとか使えばいけんのかも。
説明
このコードは、Service1の中で、Service2のメソッドが呼ばれています。で、Service1のテストをしたいんだけど、Service2のメソッドだけモックにしたい。 しかし、Service1の他の処理はモックにしたくない。
そんなとき。
こんなコードで動くかなーと書いてみます。 残念ながら、このコードは動きません。
ここで、Springockitoです。
https://bitbucket.org/kubek2k/springockito/overview
こんな書き方ができます。
使い方
Mavenの人はpomにこんな感じで追加しといてください。Javaでテストと言えばコレ
2014年3月23日日曜日
vimチートシート(書きかけ)
導入
tmux.confの設定
ln -s ~/Dropbox/dotfiles/.tmux.conf ~/.tmux.conf
vimの設定
mkdir -p ~/.vim
mkdir -p ~/.vim/bundle
ln -s ~/.vimrc ~/Dropbox/dotfiles/.vimrc
git clone https://github.com/Shougo/neobundle.vim ~/.vim/bundle/neobundle.vim
:NeoBundleInstall
でOK
参考にしました
http://www.karakaram.com/vimfiler
http://qiita.com/hide/items/b0087bc0bbc36d0f91fb
neobundle
参考にしました
参考にしました
http://vim-users.jp/2011/10/hack238/
http://qiita.com/puriketu99/items/1c32d3f24cc2919203eb
コマンドチートシート
- 大文字小文字変換
- ~
- 行番号の表示非表示
- set number / set nonumber
2014年3月4日火曜日
2014年1月9日木曜日
Eclipseでメソッドをオーバーライドした際に、@inheritDocコメントを入れる
Eclipseにて
[環境設定] -> [Java] -> [Code Style] -> [Code Templates] -> [Comments] -> [Overriding methods]
こいつをEditして、下記の感じに編集
[環境設定] -> [Java] -> [Code Style] -> [Code Templates] -> [Comments] -> [Overriding methods]
こいつをEditして、下記の感じに編集
/**
* {@inheritDoc}
*/
OKしてapply
下の方の、Automatically add comments for new methods and types
にチェックをいれればおしまい。
あとは、オーバーライドすると勝手に上記のコメントが挿入されるようになります。
登録:
投稿 (Atom)