‘自分メモ’ タグのついている投稿

ぽっちゃり☆プリンセス買った。

2010年3月13日 イラスト, 雑記

わぁい。
いまダウンロード中〜。

ウォレットチャージなしで購入ボタン押したら、特別何の確認もなしに買えちゃったけど、どうなんだコレ。多分カード情報がPSP本体に保存されてるってことなんだよね・・・盗まれたり失くしたりしたら怖いな。持ち歩かないから少なくとも失くすってことはないと思うけど。

いつ登録したんだろうこれ・・・。

おまけ

Kindle用の画像zipを作ってくれるスクリプトが地味にヤバそうだったので直した。

2010年3月10日 Linux, スクリプト関連, 雑記

間違えてディレクトリの指定無とかで実行しちゃったときユーザルートのファイルが光の速さでお亡くなりになるのは正直アレ過ぎるのでディレクトリの指定が空だったり、解像度指定が空だったりしたときにエラーで終了するようにした。

追加したのは太字部分。
想定しているエラーの条件は以下の通り。

・ディレクトリの指定を忘れて解像度の指定のみ入れた場合 — この場合は当然exit。
・ディレクトリの指定、解像度の指定の両方を忘れた場合 — この場合は解像度指定の段階でexit。
・解像度の指定を忘れた場合 — この場合は解像度指定の段階でexit。
・存在しないディレクトリを指定した場合 — この場合はcdの実行失敗で$?に1が入っているはずなのでexit。

ホントは削除する前にお伺いを立てるようなのの方がやり方としてお行儀いい気もするけども、いちいち消すか消さないかっていうメッセージのところで処理が止められてるのも邪魔くさいのでそれはしない方向で。

使い方はそのまま。ディレクトリと対象機器(k2、kdx)を引数として付けて実行。

#!/bin/bash
case “$1” in
  k2 | kdx ) echo “err:ディレクトリが指定されていません。”
  exit 1
  ;;
  * ) cd $1 ;;
esac
case “$?” in
  1 ) echo “err:ディレクトリの指定が間違っています。”
  exit 1
  ;;
esac

#対象機器の解像度指定
##k2 — Kindle2
##kdx — Kindle DX
case “$2” in
  k2 ) rez=800 ;;
  kdx ) rez=1200 ;;
  * ) echo “err:対象機器が指定されていません。”
  exit 1
  ;;

esac
#拡張子を配列に
ext=( jpg JPG jpeg JPEG gif GIF png PNG )
for (( i = 0; i < 8; i++ ))
{
  #画像ファイルのみのリスト生成
  ls | grep .${ext[i]} >>zlist.lst
}
#リスト行数取得
p=`wc -l <zlist.lst`
for (( i = 0; i < $((p + 1)); i++ ))
{
  case “$i” in
    0 ) ;;
    * )
      #ファイルサイズ変更後、元ファイル削除
      val=`printf “%03d” $i`
      flname[i]=`sed -n “$i”p zlist.lst`
      convert -resize “$rez”x”$rez” “${flname[i]}” p”$val”.jpg
      rm “${flname[i]}”
    ;;
  esac
}
bn=`basename $1`
zip ../”$bn”.zip *.*
rm *.*
cd ..
rmdir “$bn”

例によって例のごとくインデントが全角です。

役に立ったならご褒美くらいくださってもよろしくってよ。
ホラこんな所にアマゾンのウィッシュリストが。

履歴書の角をちょっとだけとってみた。

2010年3月9日 雑記

コレとテーマデザインとKindleで出版の仕込みなどなどいろいろあって昨日はTwitterで何だかキモいことになっていたんだけども、その節はご迷惑をおかけ致しましたのココロ。
これは自分で使うためだけに作ってみたものなんだけども、外に出さずに持っとくのも勿体ないのでここにサンプル画像置いとく。
欲しい人がいたらTwitterとかメールとかでクレクレって言うと良い。

そうそう、角を取ったからといって本人の評価が上がるわけでもないので実際に使うのは止めといた方がいいと思うよ。受け取る側も気づかないだろうけどバレたらふざけたヤツだと思われるかもしれないし。
っていうかコレ一体誰が喜ぶんだw

履歴書画像

Kindle用の画像zipを作ってくれるスクリプト。

2010年3月5日 スクリプト関連, 雑記

とりあえずで【1】のスクリプトを書いたんだけど、
いちいちファイル名を整えて・・・とかやるのが面倒くさくなってきちゃったので、新しく【2】に書き直した。
使い方は実行の時にディレクトリと対象機器(k2、kdx)を引数として付けて実行するだけ。
実行すると実際にファイルが処理されようがされまいが最終的に指定ディレクトリ内のファイルが全て削除されるので、万一使うような場合はその辺気をつけて使ってください。

【1】

#!/bin/bash
cd $1
p=`ls | wc -l`
c=1
for (( i = 0; i < $((p + 1)); i++ ))
{
  val=`printf “%03d” $c`
  val2=”p””$val”
  convert -resize 800×800 “$val””.jpg” “$val2″”.jpg”
  rm “$val””.jpg”
  c=$((c + 1))
}

【2】

#!/bin/bash
cd $1
#対象機器の解像度指定
##k2 — Kindle2
##kdx — Kindle DX
case “$2” in
  k2 ) rez=800 ;;
  kdx ) rez=1200 ;;
esac
#拡張子を配列に
ext=( jpg JPG jpeg JPEG gif GIF png PNG )
for (( i = 0; i < 8; i++ ))
{
  #画像ファイルのみのリスト生成
  ls | grep .${ext[i]} >>zlist.lst
}
#リスト行数取得
p=`wc -l <zlist.lst`
for (( i = 0; i < $((p + 1)); i++ ))
{
  case “$i” in
    0 ) ;;
    * )
      #ファイルサイズ変更後、元ファイル削除
      val=`printf “%03d” $i`
      flname[i]=`sed -n “$i”p zlist.lst`
      convert -resize “$rez”x”$rez” “${flname[i]}” p”$val”.jpg
      rm “${flname[i]}”
    ;;
  esac
}
bn=`basename $1`
zip ../”$bn”.zip *.*
rm *.*
cd ..
rmdir “$bn”

地味に説明が面倒くさいのでとりあえず流れだけ説明。
・実行すると変数rezに解像度の値を代入、配列変数extに画像の拡張子を代入。
・画像ファイルのみのリスト生成、リスト行数取得。
・ファイルサイズ変更、ファイル名を連番にしつつ元ファイルを削除。
・変数bnに現在のディレクトリ名を代入、一つ上のディレクトリに書庫を作成。
・ファイル、ディレクトリ削除。

と言う流れ。気が向いたらそのうち詳しく説明するかもしれないけども期待はしない方が良い。
例によって例のごとくインデントが全角です。

役に立ったならご褒美くらいくださってもよろしくってよ。
ホラこんな所にアマゾンのウィッシュリストが。

ゼロ埋め再び。

2010年3月2日 Linux, スクリプト関連, 雑記

イマイチ納得が行かないので色々調べてみてたら、どうやらbashではprintfが使えるらしいことを知った。
これで、フォーマット付きの文字列を簡単に取得できる。

数値をn桁で表示し、空の部分を0で埋めて返すスクリプト。(n)は数字が入る。カッコは必要ない。

printf “%0(n)d” 数値

たとえば printf “%06d” 1234 と書いてやれば 001234 という具合に表示される。
うん。満足。

書き忘れ。この記事は以下のサイトを参考にしましたリンク。
bash で前ゼロ埋めする – ablog

Kindleで見れるファイル形式確認中

2010年2月27日 雑記

今現在で試したファイル形式は次のとおり。
zip(jpeg)、pdf(ラスター・ベクター画像)jpeg(生)、png(生)、gif(生)
これらを半角アルファベットでファイル名をつけてdocumentsディレクトリに投入。
試したファイルのうちzip、pdfはOKだった。生はダメ。とりあえずゴム付けろよと。

格納する画像は白黒である必要性は無くてカラーでも全然問題なし。
表示の際に16階調グレースケールに変換されて表示されるっぽい。ぽい。自信ない。

3月2日 追記
どうやら画像ファイルは生っぽくてもOKな模様。USB接続した時に見えるKindleディレクトリの中にpicturesというフォルダを作ってさらにその中に任意の名前(半角アルファベットが無難だと思う)でサブフォルダを作って入れてやるんだそうな。
※追加後はAlt+Zを押さないとリストに反映されない。picturesに直置きはダメ。
ゴム付きなのは変わらない気がする。

試してたのはdocumentsだけで何でダメなんだろうとか思ってたけど、これでスッキリした。マニュアルちゃんと読めという教訓。ググってもそれなりに出てきたので検索でも良いけど。

Kindleとどいたよー!

2010年2月27日 雑記

ずいぶん早い到着。
きっと国内にある程度在庫持ってるに違いないよ。

どうでも良いけどmp3とか聞けるらしいよ。まずは、色々試してみなくては。

シェルスクリプトでゼロ埋めいろいろ。

2010年2月26日 Linux, スクリプト関連, 雑記

2014/06/06 追記 :
この記事は車輪の再発明を試みた記事です。実際のスクリプトに組み込むのは不適切な内容になっています。
より簡単にゼロ埋めを実現する方法がありますので、組み込みの際はこちらの記事(ゼロ埋め再び。)を参照して下さい。

スクリプトに関して不明点等あるならメールかTwitterで直接質問してください。私はあなたのお友達ではありません。”内輪ノリ”を内輪以外に持ち出してはいけません。
お友達以外を相手に”内輪ノリ”でツッコミ記事を書いてリンクを貼るのは控えるべきです。記事が必要なら礼儀正しく丁寧に書くか、相手を特定しにくい形で書きましょう。事前に解決済みの案件ではないか、古い記事ではないかの確認も忘れずにしましょう。私はあなたのお友達ではありません。

ゼロ埋めの方法をいくつか考えてみた。
どれも引数で数値を与えてやると変数valにゼロ埋めされた数値が代入される。
個人的には四つ目が好き。

一つ目。

#!/bin/bash
if [ $1 -lt 10 ]
then
  val=`expr 000$1` #10未満
elif [ $1 -lt 100 ]
then
  val=`expr 00$1` #100未満
elif [ $1 -lt 1000 ]
then
  val=`expr 0$1` #1000未満
else
  val=`expr $1` #100以上
fi

二つ目。

#!/bin/bash
if [ $1 -lt 10 ]
then
  val=000$1 #10未満
elif [ $1 -lt 100 ]
then
  val=00$1 #100未満
elif [ $1 -lt 1000 ]
then
  val=0$1 #1000未満
else
  val=$1 #1000以上
fi

三つ目。

#!/bin/bash
case “$1” in
  ? ) val=000$1 ;; #10未満
  ?? ) val=00$1 ;; #100未満
  ??? ) val=0$1 ;; #1000未満
  * ) val=$1 ;; #1000以上
esac

四つ目。

#!/bin/bash
val=$1
for (( i = 0; i > $((4 – ${#1})); i++ ))
{
  val=0$val
}

一〜三つ目はどれもやり方としては同じなので四つ目だけ軽く説明。
といっても大したことはやってなくて、実行時の第一引数を変数valに代入して指定桁数から第一引数で与えられた値の文字数を引いた数の回数だけ0を追加するっていう操作。ちなみに太字部分が最終出力の桁数の指定。

今思いつくレベルではこれが一番スマートだと思う。コード的に。
キーを叩く回数も一番少ないし。

毎度のことながらインデントが全角になってます。もし万一使うような人がいるならタブか半角スペースに直して使ってください。

これで、おかたづけまで完璧だ。

2010年2月25日 Linux, スクリプト関連, 雑記

こうで、

ext () {
  rnmMt=`date -d ‘2 days ago’ ‘+%Y%m’`
  mv acl1.txt acl$rnmMt.txt
  mv acl1.html acl$rnmMt.html
  zip -5 acl$rnmMt.zip acl$rnmMt.txt acl$rnmMt.html
  rm acl1.txt acl$rnmMt.txt
  cp access_log acl1.txt
}

↓↓↓↓↓

ext () {
  rnmMt=`date -d ‘2 days ago’ ‘+%Y%m’`
  mv acl1.txt acl$rnmMt.txt
  mv acl1.html acl$rnmMt.html
  zip -5 acl$rnmMt.zip acl$rnmMt.txt acl$rnmMt.html ./daily/*.*
  rm acl1.txt acl$rnmMt.txt ./daily/*.*
  cp access_log acl1.txt
}

こう。

visitors -A -m 250 access_log >$ymd.html

↓↓↓↓↓

visitors -A -m 250 access_log >./daily/$ymd.html

※太字が追加部分。
これならファイルが増えすぎて泣くこともない。
【「Visitorsでアクセスログを読み(ry」を書き直し。】の差分。これでばっちり。

「Visitorsでアクセスログを読み(ry」を書き直し。

2010年2月25日 Linux, スクリプト関連, 雑記

【Visitorsでアクセスログを読みやすくしたりその他いろいろ。】のスクリプトをもっとスマートにできないものかと思って書き直してみた。
書き直しついでに日次ログも残すようにしてみた。使い方はそのまま。

なんかまたやらなきゃいけない処理が増えた気がするので日次処理しない方がいい気もしないでない。
これだと日次ログが雪だるま式に増えて行くことになるし・・・

#!/bin/sh
drv () {
  cat access_log >>acl$1.txt
  visitors -A -m 250 acl$1.txt >acl$1.html
}
ext () {
  rnmMt=`date -d ‘2 days ago’ ‘+%Y%m’`
  mv acl1.txt acl$rnmMt.txt
  mv acl1.html acl$rnmMt.html
  zip -5 acl$rnmMt.zip acl$rnmMt.txt acl$rnmMt.html
  rm acl1.txt acl$rnmMt.txt
  cp access_log acl1.txt
}
logs () {
  wget -P ‘/home/user/dir/logs’ ‘ftp://user:pass@server/dir/logname’
  visitors -A -m 250 access_log >$ymd.html
  drv 2
  Dt=`date ‘+%d’`
  case “$Dt” in
    #今日は2日です
    02 ) ext ;;
    #今日は2日ではありません
    * ) echo “通常処理” ;;
  esac
  drv 1
  case “$1” in
    0 ) echo “完了” ;;
    * ) epiphany $ymd.html acl1.html acl2.html ;;
  esac
  rm ‘access_log’
}
cd ‘/home/user/dir/logs’
ymd=`date ‘+%Y%m%d’`
case “$1” in
  0 ) logs ;;
  1 ) epiphany $ymd.html acl1.html acl2.html ;;
  * ) logs 0 ;;
esac