2012-01-01から1年間の記事一覧

perl のファイルテスト演算子

-X FILEHANDLE -X EXPR -X A file test, where X is one of the letters listed below. This unary operator takes one argument, either a filename or a filehandle, and tests the associated file to see if something is true about it. If the argumen…

コンフリクトファイルの一覧が表示するコマンド.

git

git で merge やら, pull した時に, 大量にコンフリクトが発生してしまった.. どこから手を付けていこうか, コンフリクトファイル一覧を参照しながら作業したい.そんな時はこのコマンド. git ls-files -u Ref. http://iiidevelop.blogspot.jp/2011/08/git.ht…

git には reflog という素晴らしいログ保持機能がついてます.

git

ブランチからマスターにcheckout で移ってきたあとに merge したらコンフリクトが起きたので, >> $ git reset --hard HEAD # 直前のコミット情報を取り消し $ git reset --hard HEAD^ # 2つ前のコミット情報を取り消し

map と grep の違い ~ 一目瞭然編 ~

my $array_ref = [ ^---{id => 1, name => 'hoge', atk => 5, def => 8, hp => 10}, ^---{id => 2, name => 'fuga', atk => 6, def => 9, hp => 13}, ^---{id => 3, name => 'foo', atk => 7, def => 10, hp => 18}, ^---{id => 4, name => 'aaa', atk => 8,…

perl のファイルハンドルをつかって, ファイルに値を書き込む.

open FH, ">data.dat" or die; print FH $data; close FH; 注意点は2点 1. or を使う. (|| では優先度が高すぎるので, ">data.dat"が真なら(この場合必ず真)dieしない.) 2. ">data.dat" という形式. (">", "data.dat" の場合, or はどこと比較していいかわ…

INSERT IGNORE, UPDATE IGNORE の意味.

多くのレコードの INSERT でキーワード IGNORE が指定されていると、テーブルの既存の PRIMARY または UNIQUE キーと重複するレコードはすべて無視され、挿入されない。IGNORE が指定されていない場合に既存のキー値を重複して持つレコードがあると、挿入処…

MySQL のSELECT のオプション指定のルール - メモ -

SELECT FROM WHERE ORDER BY LIMIT [offset,] rows この記述順は覚えておかねばなりません..

Perl の SUPER 擬似クラス - メモ -

SUPER擬似クラスは, ベースクラスのことを指すのだそうです. use base qw (Hoge::Fuga::Base);~~ ry) ~~sub new { my ($class, $args) = @_; ~~ ry) ~~ my $obj = $class->SUPER::new(\%new_args); ~~ ry) ~~} などとするときのSUPER::new は Hoge::Fuga::Ba…

C-c でロック, C-q でロック解除

shell をいじっているとき, Ctrl-c を押すと入力ロックがかかります. Ctrl-q でロック解除できます.

while とか for とか復習

while (条件式) 条件式が真なら常に実行. よって, while(1) while(@array) とかやると, ()内は常に真なので, 無限ループ. foreach () 配列全体やリスト処理をするためのもの. ()内から値のリストを受け取り, それぞれの値に対して一回ずつコードのブロックを…

否定演算子 ! のメモ

否定演算子 (!) は 0 とか undef が義, あとは真. defined は undef 以外は真.hash要素の存在確認は, exist exists $math_scores{$key} Ref. http://fleur.hio.jp/perldoc/mix/pod/perl5100delta.mix.html http://d.hatena.ne.jp/perlcodesample/20080213/12…

Perl の undef の取り扱いの注意 #1

use strict;$hoge = undef;if ($hoge == 0) { print "fuga\n"; }if ($hoge eq '') { print "foo\n"; } これ, use strict してても実行すると, fuga foo ってでます. $hoge が 数字とか文字とかと比較されると, Perl は勝手に気を使って, 数字っぽく ないしは…

MySQLでインデックスが効いているか確かめる方法

explain SELECT ~~ もしくは desc SELECT ~~ これで調べられる.possible_keys は候補の鍵, key は実際に使われている鍵. mysql> explain select id from data where id=10102 and flg!=2; + id select_type table type possible_keys key key_len ref rows E…

git commit の訂正など

git

コミット情報の削除は reset 使って, git show HEAD~1 , git show HEAD~2 とかやって確認したあと, 2つ前のコミットに戻したいなと思ったら, git reset HEAD~2とかする.でも, reset だけだとコミット情報を削除しますが, 作業ツリーは維持されます. コミッ…

とあるページングのロジック

FormValidator::Simple あたりで, { p => ['INT']} を受け取る. これはテンプレの href にページ数とともに送られてくる.こいつを受け取り, そのページ数にあったデータをテーブルから取ってくる.1ページあたりの表示件数は予め決めておき(今回は5件とする),…

Perlの三項演算子例

if (($inserted_hogehoge == 1) && $inserted_fugafuga == $NUMBER) { return 1; } else { return undef; } 三項演算子で書くと, return ($inserted_hogehoge == 1) && ($inserted_fugafuga == $NUMBER) ? 1 : undef;

画像収集とリネームと連番付けのスクリプト をメモしておきます.

いつか Perl で画像収集スクリプトを書きたいです. Perl だとワンライナーでいけるそうなので.[画像収集] - #!/bin/shif [ -z $1 ] then echo "検索キーワードをいれてください" echo "下記に例を示します" echo "\$ ${0} \"magic the gathering\"" exit fik…

git でゴミを push してしまったとき, それを消す方法.

git

ちょっと特殊な状況かもしれませんが, こんなことはございませんか.初めて使うリポジトリなんかで, 最初に clone してきた .git なんかを, 自分のワーキングディレクトリにコピーしてきて, 動作確認をしたいがために, git add . git commit -m '1st commit' …

複数のハッシュリファレンスを要素に持つ2つの配列を, それぞれ要素ごとにマージしたい時には, pairewiseが便利.

幾つかの要素を持つハッシュリファレンスを複数個要素に持つ配列リファレンス(ここでは $fuga1, $fuga2)を, 順番を崩さず各ハッシュリファレンス同士をマージしたい時, for文を使うとちょっと冗長になってしまいました. my $fuga_number = scalar(@$fuga1); …

git の使い方に関するメモ (一人 ver)

git

git add . したが, 不要ファイルも上げてしまった時#1. すべてのファイルをスナップショットから取り除く. [training@localhost hoge]$git reset HEAD #2. test.pl だけ, スナップショットから取り除く. [training@localhost hoge]$git reset HEAD :test.pl …

MyISAM と InnoDB では AUTO_INCREMENT 情報の扱いが異なるようです.

引用メモ. InnoDB と MyISAM では AUTO_INCREMENT 値の扱いに違いがあり、InnoDB は再起動するとインクリメント値が挿入されているレコードのIDの最大値になり、MyISAM では再起動してもインクリメント値は保持される。 "" 中略 "" 冷静に考えれば InnoDB は…

配列(@list)の要素数だけforeach でまわしたいときは "$#list"

Perl の配列, my @list = 'a' .. 'z'; があったとき, foreach my $i (0 .. $#list) で配列の要素数分まわせます. scalar は配列の要素数を返すのですが, こちらは配列要素に振られた番号の最大値を返すんですかね. Ref. http://www12.ocn.ne.jp/~kumo/allcom…

Internal Server Error がでたら.

Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request.Please contact the server administrator, root@localdomain and inform them of the time the error occurred, and anythi…

ハッシュのリファレンス同士のマージ.

ハッシュのリファレンス同士をマージさせるには, CPAN モジュールの Hash::Merge を使うと便利です.ただし, Hash::Merge を使わなくても数行でいけます. ## $hashref1 に $hashref1 をマージする. my $hash1 = +{}; my $hash2 = +{};my @array = keys %$hash…

XSS と CSRF のわかりやすい説明記事をメモ.

ockeghem(徳丸浩)の日記 がとても勉強になったので引用させていただき, その下に自分の(勝手な)解釈をメモ. XSSはブラウザ上でスクリプトが動き、CSRFはサーバー上でスクリプトが動く XSS が発生しやすい場所は確認画面. XSSは先の日記で書いたように, 表示…

linux の文字コード変更方法. メモ.

文字コード確認. $ echo $LANG 一時的に文字コード変更. $ export LANG=ja_JP.UTF-8 デフォルト値を設定するときは, /etc/sysconfig/i18n を変更. 例:LANG環境変数のデフォ値を ja_JP.eucjp に設定する。 $ sudo vi /etc/sysconfig/i18n して LANG="ja_JP.e…

パッケージ名を取得する __PACKAGE__

自分用に引用メモ. __PACKAGE__ は自分の属するパッケージのパッケージ名を取得できます. 例えばこんな感じ. __PACKAGE__->dbh_keys(+{ master => $_::DB_HOGE_W, slave => $_::DB_HOGE_R, slave_for_backup => $_::DB_HOGE_BAK, }); Ref. http://d.hatena.n…

"called with 10 bind variables when 0 are needed at" に対する対処法 [エラー]

MSG:DBD::mysql::st execute failed: called with 10 bind variables when 0 are needed at .. →原因は "(ダブルクオーテーション) と '(シングルクォーテーション) の違いです. 例えば, $hoge を "(ダブルクオーテーション)でくくると, $hoge の中身が展開…

sudo /etc/init.d/mysql restart 時のエラーに対する対処法

## sudo /etc/init.d/mysql restart 時のエラーに対する対処法 ## MySQLのバージョン 5.0.91 (/usr/lib/mysql) ## 問題 ##まず, mysqldの補完が効かない. sudo /etc/init.d/mysql restart すると, MySQL manager or server PID file could not be found! [失…

'上書きするには 'fenc' を空にしてください' みたいなエラーが出たら.

Vim

write error, conversion failed (make 'fenc' empty to override) こんな感じのエラーが出たら, :set fenc= でfencの中を空にしてやってから再度トライするといけたりする. Ref. http://heartachereborn.blogspot.jp/2008/08/vi.html