memorandum

IT技術の習得を記録します

エラー回避 rescue

rescueを使うことによって、エラーを回避して処理ができる
beginとrescueの間で実行する処理で何らかのエラーが発生しても処理を中断しないようになる

begin
  例外を発生させる可能性のある処理
rescue
  例外が起こった場合の処理
end

rescueに続けて変数名を指定、上がってきた例外が指定した変数に代入される

begin
  例外が起こる可能性のある処理
rescue => 例外オブジェクトが代入される変数
  例外が起こった場合の処理
end

raiseで意図的に例外を発生させてみる
raiceは検証に便利
数に型を渡さないと、 RuntimeErrorを発生させる
RuntimeError : 特定の例外クラスには該当しないエラー

begin
  raise 
rescue => e
  p "error"
end

結果

"error"

rescueのあとにクラスを指定すると、その例外のときのみ処理を中断しないようになる

begin
  raise StandardError
rescue StandardError => e
  p "StandardErrorが発生していますが処理は中断していません"
end

結果

"StandardErrorが発生していますが処理は中断していません"

指定した以外のエラーが発生すると

begin
  raise ArgumentError
rescue ZeroDivisionError => e
  p "ZeroDivisionErrorが発生していますが処理は中断していません"
end

結果

csv_test.rb:2:in `<main>': ArgumentError (ArgumentError)||<


例外オブジェクトからメソッドを呼んで、例外に関する情報を取得できる。

class ... 例外の種類
message ... 例外のメッセージ
backtrace ... 例外の発生した位置に関する情報($@ = $!.backtrace)

begin
  raise StandardError
rescue StandardError => e
  p "StandardErrorが発生していますが処理は中断していません"
  p e.class
end
"StandardErrorが発生していますが処理は中断していません"
StandardError

全角英数字を半角英数字に 半角カナを全角カナに nkfで変換

encode_halfwidth = NKF.nkf('-m0Z1 -W -w', "AABBBBBAAアアアああアアアアアアアアアアアア")

=>

AABBBBBAAアアアああアアアアアアアアアアアア 

-m[BQN0] MIME(電子メール用のフォーマット)を解読する

エンコーディングの変換のみをするならば以下を指定しておくべき

-m0 MIME の解読を一切しない。

-Z[0-3] X0208 のアルファベットといくつかの記号を ASCII に変換する

-Z -Z0 X0208アルファベットといくつかの記号を ASCII に変換する
-Z1 X0208空白(いわゆる全角空白)を ASCII の空白に変換する
-Z2 X0208空白(いわゆる全角空白)を ASCII の空白2つに変換する
-Z3 X0208の>、<、”、&、を '>', '<', '"', '&' に変換する

X0208(全角) ASCII(半角)

出力フォーマットの指定 -j -s -e -w -w16

-j ISO-2022-JP (7bit JIS) を出力する(デフォルト)
-s Shift_JIS を出力する
-e EUC-JP を出力する
-w UTF-8 を出力する(BOMなし)
-w 16 UTF-16 LE を出力する

入力フォーマットの指定 -J -S -E -W -W16

-J 入力に JIS を仮定する
-S 入力に Shift_JIS と X0201片仮名(いわゆる半角片仮名)を仮定する。-xを指定しない場合はX0201片仮名(いわゆる半角片仮名)はX0208の 片仮名(いわゆる全角片仮名)に変換される
-E 入力に EUC-JP を仮定する
-W 入力に UTF-8 を仮定する
-W16 入力に UTF-16LE を仮定する

mysqlで実行した命令文の出力結果をクリップボードにコピー

developmentというデータベースにlist.sqlを実行しre.csvに出力

mysql -u root development < list.sql > re.csv


以下で出力結果をクリップボードにコピー

pbcopy < re.csv

そのまま
スプレッドシートなどに貼りつけると、綺麗にペーストされる

git で管理する必要のないファイルは .gitignoreに記入する

$ cat .gitignore
*.csv
*.gem
*.rbc
/.config
/coverage/
/InstalledFiles
/pkg/
/spec/reports/
/spec/examples.txt
/test/tmp/
/test/version_tmp/
/tmp/

# Used by dotenv library to load environment variables.
# .env

## Specific to RubyMotion:
.dat*
.repl_history
build/
*.bridgesupport
build-iPhoneOS/
build-iPhoneSimulator/
#csvファイルはいらない
*.csv
# /.configフォルダは要らない
/.config

git 基本操作

ブランチを作ってそこにマスターから移動する

git checkout -b ブランチ名

addしてcommitしてpushをする

git add 追加したいファイル
git commit -m "コメントを書く"

リモートにはじめてあげるときは下記の通りにpushする

git push --set-upstream origin ブランチ名

2回目以降は

git push ブランチ名

ブランチを消す

git branch -d ブランチ名

ステータスの確認

git status

変更箇所の確認

git diff

addした後の変更箇所の確認

git diff —cached

mysql 複数の文字列の置換 replace / 文字列の結合 concat

下記の場合は、姓名をconcatで結合し、そこから空白文字(半角スペース・全角スペース・タブ)を置換している

replace(replace(replace(concat(last_name,first_name),' ',''),'\t',''),' ','') = '#{fullname}'