Just another Ruby porter,

〜2013年12月下旬〜


<Prev(,) | Next(.)> | Recent(/)>> | RDF

2013-12-21 (Sat)

rotate counterclockwise

休みに入ったので久し振りに挑戦。とはいうもののこれってtransposeなのでちょっと変更すればいけてしまう。
とりあえずBashで。とか考えてるうちにtransposeのほうが縮んだ。


2013-12-22 (Sun)

傾けるのが面倒な人へ

これをわざわざNexus7で見たわけだけど、
いまいちなんだかわからないのでなんとかしてみる。
傾けて見るってことはその方向を縮小すればいいわけで、convertですよ。

% convert https://pbs.twimg.com/media/BcFeA0HCIAAMG1b.jpg -resize 100%x10% x:
% convert https://pbs.twimg.com/media/BcFeA0HCIAAMG1b.jpg -resize 10%x100% -rotate -90 x:

結果を書くような無粋なまねはしないので実際に実行してご確認ください。


2013-12-23 (Mon)

やっと家のPCをUbuntu 13.10へ上げた

例のGUIが上げられるぜと催促してきたので上げたはいいが、途中でハングしてしまった。
psしてみると4時間ぐらい何もしてないようだったので、GUIを閉じてみたら無反応だった。
それを強制的に閉じてもaptなんちゃらがまだ残ってたのでそれもkill。
sudo do-release-upgradeすると何も言わずに終了する。
普通にaptitude safe-upgradeすると指示されたのでそれに従う。

% sudo aptitude safe-upgrade --full-resolver
E: dpkg は中断されました。問題を修正するには 'sudo dpkg --configure -a' を手動で実行する必要があります。
W: キャッシュファイルにロックをかけられません。これは通常、dpkg や別の apt ツールが既にパッケージをインストール中だとい>う意味です。読み取り専用モードで開いています。パッケージの状態を変更してもそれは保存されません!
E: dpkg は中断されました。問題を修正するには 'sudo dpkg --configure -a' を手動で実行する必要があります。
% sudo dpkg --configure -a
<snip>
update-initramfs: Generating /boot/initrd.img-3.11.0-14-generic
処理中にエラーが発生しました:
 antlr
% sudo dpkg --configure -a
dpkg: 依存関係の問題により antlr の設定ができません:
 antlr は以下に依存 (depends) します: libantlr-java (= 2.7.7+dfsg-5) ...しかし:
  パッケージ libantlr-java はまだインストールされていません。

dpkg: antlr の処理中にエラーが発生しました (--configure):
 依存関係の問題 - 設定を見送ります
処理中にエラーが発生しました:
 antlr

antlrがどうにもならないようで。purgeしてみる。

% sudo aptitude purge antlr
Processing 4 removed doc-base files...
Registering documents with scrollkeeper...
処理中にエラーが発生しました:
 libantlr-java
E: Sub-process /usr/bin/dpkg returned an error code (1)
パッケージをインストールできませんでした。復旧を試みています:

現在の状態: 依存関係破損が 0 個 [-1], 更新が 681 個 [-11], 新規が 55591 個 [-16]。

やっぱだめっぽい。このlibantlr-javaを何とかしないといけない。
強制的に削除してみる。

% sudo dpkg --force-remove-reinstreq --remove libantlr-java
dpkg: 警告: --force が有効なので、問題を無視します:
 パッケージが非常に矛盾した状態に陥りました。
削除を行う前にこのパッケージを再インストールすべきです。
(データベースを読み込んでいます ... 現在 398562 個のファイルとディレクトリがインストールされています。)
libantlr-java を削除しています ...
% sudo aptitude safe-upgrade --full-resolver

これでやっと通った。
antlrはたぶん必要ないよな。
groovyが巻き添えを食ったがまあ必要になったら入れよう。

uim-skk使いなので日本語入力周りは何も変わらない。
ああ、そういえば言われてたrubyのtest-allがエラーになるようなったな。


2013-12-24 (Tue)

convertで例の画像を作ってみた

先日の画像をconvertで解けるなら作ることもできるわけでやってみた。

400x400へresizeしてcompositeするだけ。

% convert -font ipagp-mona.ttf -pointsize 30 \
  \( label:"2013年クリスマスおめでとうございます" -crop 0x70%+0+5% +repage -resize 400x400\! \) \
  \( label:"2014年あけましておめでとうございます" -crop 0x70%+0+5% +repage -resize 400x400\! -rotate 90 \) \
  -compose Multiply -composite -type grayscale -depth 3 foo.png

文言が見えちゃってるのであれだけど、結果はこんな感じ。
ところどころ読めちゃうねえ。


2013-12-25 (Wed)

クリスマスツリー

Perl版をBashに移植した。

#!/bin/bash

STAR=$' \u2605'
FSLASH=$'\uFF0F'
BSLASH=$'\uFF3C'
ORNAMENTS=(0069 0020 0020 0020 0020 0020
    0020 0020 0020 0020 0020 0020
    0020 2E1B 2042 2E2E 0026 0040 FF61)
ORNAMENT_COLORS=(21 33 34 35 36 37)
HAT='^'

tree() {
    h=$1
    printf "\n%${h}s\e[33m${STAR}\n"
    m=$((h * 2 - 1))
    eval set {1..$h}
    for l; do
        o=$((l * 2 - 2))
	s=$(((m - o) / 2 + 1))
        printf "%${s}s\e[32m${FSLASH}"
	for ((j=0; j < o; j++)); do
            or=${ORNAMENTS[${#ORNAMENTS[@]}*$RANDOM/32767]}
            oc=${ORNAMENT_COLORS[${#ORNAMENT_COLORS[@]}*$RANDOM/32767]}
            printf "\e[${oc}m\u$or"
        done
        printf "\e[32m${BSLASH}\n"
    done
    h1=$((h - 1))
    spaces=$(printf "%*s" $h1)
    hats="\e[32m${spaces// /$HAT}"
    printf " ${hats}|  |${hats}"
    if (($h > 10)); then
        printf "\n $spaces|  |$spaces"
    fi
    printf "\n\n"
}

tree 20

https://gist.github.com/eban/8121851

RANDOMのあたりは最初shuf -n1 -e的な処理だったが、
数が多くて遅すぎるのでRANDOMを使うようにした。


2013-12-26 (Thu)

コマンドラインからCygwinをsetup

setup-x86(_64)はコマンドラインからも使えるようになっていて、
いろいろオプションを指定すれば何も入力することなく更新可能になる。

% ./setup-x86 -h
Starting cygwin install, version 2.831
User has backup/restore rights

Command Line Options:
 -D --download                     Download from internet
 -L --local-install                Install from local directory
 -s --site                         Download site
 -O --only-site                    Ignore all sites except for -s
 -R --root                         Root installation directory
 -x --remove-packages              Specify packages to uninstall
 -c --remove-categories            Specify categories to uninstall
 -P --packages                     Specify packages to install
 -C --categories                   Specify entire categories to install
 -p --proxy                        HTTP/FTP proxy (host:port)
 -a --arch                         architecture to install (x86_64 or x86)
 -q --quiet-mode                   Unattended setup mode
 -M --package-manager              Semi-attended chooser-only mode
 -B --no-admin                     Do not check for and enforce running as
                                   Administrator
 -h --help                         print help
 -l --local-package-dir            Local package directory
 -r --no-replaceonreboot           Disable replacing in-use files on next
                                   reboot.
 -X --no-verify                    Don't verify setup.ini signatures
 -n --no-shortcuts                 Disable creation of desktop and start menu
                                   shortcuts
 -N --no-startmenu                 Disable creation of start menu shortcut
 -d --no-desktop                   Disable creation of desktop shortcut
 -K --pubkey                       URL of extra public key file (gpg format)
 -S --sexpr-pubkey                 Extra public key in s-expr format
 -u --untrusted-keys               Use untrusted keys from last-extrakeys
 -U --keep-untrusted-keys          Use untrusted keys and retain all
 -g --upgrade-also                 also upgrade installed packages
 -o --delete-orphans               remove orphaned packages
 -A --disable-buggy-antivirus      Disable known or suspected buggy anti virus
                                   software packages during execution.
Ending cygwin install

たとえば

% ./setup-x86 -q -n -N -d -R c:/cygwin -s ftp://ftp.iij.ad.jp/pub/cygwin -l c:/cygwin/download

とすれば全パッケージの更新ができるし、cpioをインストールしたければ-Pで指定すればいい。
途中経過は例のGUIが出るが自動で進む。

% ./setup-x86 -q -n -N -d -R c:/cygwin -s ftp://ftp.iij.ad.jp/pub/cygwin -l c:/cygwin/download -P cpio
Starting cygwin install, version 2.831
User has backup/restore rights
Current Directory: c:/cygwin/download
Could not open service McShield for query, start and stop. McAfee may not be installed, or we don't have access.
root: c:/cygwin binary system
Selected local directory: c:/cygwin/download
net: Direct
Loaded cached mirror list
get_url_to_membuf http://cygwin.com/mirrors.lst
getUrlToStream http://cygwin.com/mirrors.lst
site: ftp://ftp.iij.ad.jp/pub/cygwin
get_url_to_membuf ftp://ftp.iij.ad.jp/pub/cygwin/x86/setup.bz2 getUrlToStream ftp://ftp.iij.ad.jp/pub/cygwin/x86/setup.bz2 ftp > 220 IIJ FTP server ready (IPv4 client). ftp > 230 Login successful. ftp > 200 Switching to Binary mode. ftp > 227 Entering Passive Mode (202,232,140,144,57,107). ftp > 150 Opening BINARY mode data connection for /pub/cygwin/x86/setup.bz2 (395212 bytes). ftp > 226 Transfer complete. get_url_to_membuf ftp://ftp.iij.ad.jp/pub/cygwin/x86/setup.bz2.sig getUrlToStream ftp://ftp.iij.ad.jp/pub/cygwin/x86/setup.bz2.sig ftp > 227 Entering Passive Mode (202,232,140,144,248,25). ftp > 150 Opening BINARY mode data connection for /pub/cygwin/x86/setup.bz2.sig (72 bytes). ftp > 226 Transfer complete. Added manual package cpio Changing gid back to original Visited: 280 nodes out of 3066 while creating dependency order. Dependency order of packages: base-cygwin <snip> Changing gid to Administrators Ending cygwin install % rehash % type cpio cpio is /usr/bin/cpio

複数のパッケージをインストールしたいときはcpio,bcのようにカンマで区切ればok。


2013-12-27 (Fri)

awkの引数で変数代入

たしか POSIXにあると以前見た記憶があったが、やはりあった。順番も決まっていた。
RSをいじるのは 以前にも使っていた。

順番とは何かというと引数の間にも代入は入れることができて、たとえば

% awk '{print flag, $0}' flag=1 <(date) flag=2 <(sleep 1;date)
1 Sat Dec 28 02:24:43 JST 2013
2 Sat Dec 28 02:24:44 JST 2013

こんなことも可能。flagの値を途中で変えられる。
かと言って、まあ、あまりこれを積極的に使うケースは思いつかないけど。


2013-12-28 (Sat)

忘年会

馬場のShakey'sでピザとパスタの毎年恒例の忘年会。大体10周年記念らしい。
@koichiroさんが体調悪く残念ながら不参加。

ハーフってこんなでかかったっけ?
ruby -run -e httpdの話。epub追加しちゃうか。
marshalの仕様とか。amarshal。yaml。ActiveRecordがどーのこーの。
30分15000円。コンサルは占い。時間で金取れ。
きちんと働かせるにはどうしたらいいか。
公開内緒話やや多め。SAMLってなんやねん。
irbとopensslだけ使ってる人。
bz2もやめてxzでいいんじゃね。
という話ならtkを。
gem化はどうなってるのか。
cdnとかherokuとか。
Rubyのほうから来ました。消火器じゃないんだから。
rvmのトラフィックがばかにならない。
バイナリをruby-lang.orgに置いてくれとの要望もあるらしい。
cdnに乗るまでは大元が必要。
ストレージをどこかに移したい。
金。
グラント?
電話は家に置きっぱなし。
着信履歴から適当に電話しないように。
家を建てた。屋上があるらしい。川の向こうはあっち。そろってあっち。
口は災いの元。 猫しか撮らない。4匹に増えた。
iPadって写真撮れるんだ。
pserverだったわけよ。
svnを知らない子供たちさー。
git?
revision番号とか、単調増加するhash値を探すやつとか。
それすげー時間かかりそう。
そもそもcvsのときはrevision番号なんてなかった。
説得してほしい。人任せ。
方向性だけでテストもせずにコミットしない。だれもわかってくれないから。
転職。
英語大事。
品川駅は何かあるとすぐ人が溢れるのはなぜか。
最後はチョコピザでしょ、マシュマロ。
バイキングは飲み放題つきだと1時間半で1人3000円ぐらいだけど、
バンキングではなくぐだぐだと4時間半いて1人3000円に収まっている。
今度は鍋でも。
思い出したら追記。

@eban,@gotoyuzo,@hemge,@hsbt,@nahi


2013-12-29 (Sun)

蛍光灯ペンダント

外側の32Wがついにつかなくなったのでamazonで適当に安いのを発注。
発注する際に物の名前がわからなくてちょっと難儀した。
最初は「蛍光灯 丸型」で検索したら蛍光灯そのものがずーっと続いたが、
何ページも送っていると写真入りで「洋風ペンダント」とか出てきた。
つまり「蛍光灯ペンダント」が正解のようで。
一昨日頼んだら昨日の夜にはもう着いていた。
この立て込んでる時期にしてはやけに速いな。

最近のは1回引っぱっても外側が消えるわけじゃなくて、
全体的にちょっと暗くなるようで。70%と説明書には書いてあった。
省エネモードか。はっきり言ってあまり変わらないので常に省エネモードでいい感じだ。
豆球は使わないので、常に2回引っぱればいいわけだな。


2013-12-30 (Mon)

1時から24時に対応したつもりがいけてない

例のアメダスのRSSの件だけど、2回同じものが出てくることがあって不思議だったが、
こんなケースがあった。
まずアメダスの情報は毎時10分すぎぐらいに更新される。
Yahoo! Pipesの巡回がたまたまその10分よりも前の5分とかに来ると、
時間がずれるというのは気づいてたのでこれは対処できた。
しかし夜中の0時だけは日付が変わってしまうので対処できない。
それもこれもアメダスの情報がなぜか0時から23時じゃなくて、
1時から24時になっているからだ。
24時ってことは翌日なわけでここだけNOWで時刻を拾ってしまうとずれてしまう。
そこで、JSTじゃなくてGMT+0800にしたわけだけど、
どういうわけか最近夜中の0時台に来ないで1時台にずれこむことが多い。
まあ、そうなると結局日付がそこで変わるので同じことになってしまう。

根本的には日付をNOWじゃなくてHTMLから拾う必要があるが、
まあ、そこはrowspanの扱いが難しすぎてXPathでなんとかできるのかどうか。


2013-12-31 (Tue)

お・も・て・な・し

いろいろ集めてみた。

% echo おもてなし | sed 's/\B/・/g'        
お・も・て・な・し
% echo おもてなし | gawk 'gsub(/\B/, "・")'     
お・も・て・な・し
% echo おもてなし | ruby -ple 'gsub(/\B/, "・")'     
お・も・て・な・し
% echo おもてなし | perl -CIO -Mutf8 -ple 's/\B/・/g'
お・も・て・な・し
% echo おもてなし | bash -c 'set $(grep -o .);IFS="・";echo "$*"'
お・も・て・な・し
% echo おもてなし | zsh -c 'read a;echo ${(j:・:)${(s::)a}}'
お・も・て・な・し

これって普通に

% echo おもてなし | grep -o . | paste -sd"・"

でいいんじゃないかという気がするが、
pasteの-dはマルチバイト対応してないので、
泣き別れになってしまう。


<Prev(,) | Next(.)> | Recent(/)>> | RDF


WWW を検索 jarp.does.notwork.org を検索

わたなべひろふみ
Key fingerprint = C456 1350 085F A320 C6C8 8A36 0F15 9B2E EB12 3885
Valid HTML 4.01!