kyのAPI違ってた

以下のバージョンで確認。

  • ky 0.15.0
  • ky-universal 0.3.0

sindresorhus/ky: 🌳 Tiny & elegant HTTP client based on window.fetch

ドキュメントでは以下のように書けることになっているんだけど、

await ky(uri).json()

これはダメで、

const res = await ky(uri)
const doc = await res.json()

のように分けないと動かなかった。

こんな超基本的な使い方の部分で間違わないでほしい…。pull-req 出そうにも範囲が大きいから絶対 reject でしょ、こんなの

UX Kanazawa Vol.4 に参加してきた

UX Kanazawa Vol.4 「プロトタイピングから始めよう」 長谷川恭久さん — UX Kanazawa

  • ペーパープロトタイピングをとても楽しみにしていた
  • フタを開けたら全部まかなえるはずがないぜ、オレがいちばん得意だと思う「アイディアレベルの共有」を促進する方法として使うぜ
  • そのためにはプロトタイプも大事だけどシナリオが大事だぜ

ということで

ペーパープロトタイプを勉強しに行ったらなぜかシナリオを練っていた

ぜ。

確かに根っこの部分を押さえるためには、道具がペーパーに変わってるとは言えいきなり見た目の話をするのは本末転倒。なるほどな。

であれば、

実はシナリオのメリットとか、そういう話もあったよかったんじゃないかなぁという気がしないでもない。

  1. シナリオを練る段階の注意
  2. レビュー時の注意
  3. ペーパープロトタイプの注意

比重的には 2, 3 が多く、これは今回のテーマには合致しているとは思う。しかしアイディアの共有に有用で、そのためにシナリオ段階から始まるのであれば 1 の段階のレクチャーがもっとあってもよかったんじゃないかなーという気もした。

と言ってもこれだけの段階ですでに時間的には厳しかった。ワークショップはやっぱり時間設計が難しいねー。

ところでなぜか懇親会の一次会では巻き上げレバーのあるデジカメの話とかテストの話をしていた。(いつものことか)。二次会は小林幸子の話をしていた。三次会の終わり頃に「なんでデザイナはIllustratorこそデザインだと思っているのか」みたいな、実はこの日最も大切だったはずの話をちょっとした。この店、めちゃくちゃ安かった。

四次会は久しぶりにお茶漬け食った。

懇親会面白かったなー。(本番はどうした)

Thunderbird + Nostalgy環境でフォルダペインが不意に消える

気づいてみれば話はごく単純で。

Nostalgy :: Add-ons for Thunderbird

Nostalgy で L がフォルダペインのトグルに割り当てられていた。

Nostalgy のデフォルトショートカットキー

Nostalgy は Thunderbird をキーボードで使いやすくしてくれる便利な拡張。ちなみにデフォルトで以下のようなショートカットが割り当てられている。

Save messageS
Save as suggestedShift S
Copy messageC
Copy as suggestedShift C
Go to folderG
Go as suggestedShift G
Save message and go thereB
Save message as suggested and go thereShift B
Hide folder paneL
Show messages with same sender/same subject`

なぜ L を押すのか

あとで気づいたけど、アサイチで

  • Trac をブラウザで開く
  • Thunderbird を立ち上げる

んだけど、ここで

Trac に Login しようとしてブラウザに L を送ったつもりで Thunderbird に入力してしまう

ことがあるらしい。

なぜ L を押すのかというと、

キーボード機能: Find As You Type

この機能を使っているから。Login のリンクをたどるのに L を押して Login にフォーカスを合わせて Enter を押すのが楽なわけ。

Nostalgy の L は殺すことにした

別にフォルダペインを消す必要がまったくないのでこの機能はなくてもいいや。

Ubuntu へ避難

twitter のログを使って過去の日記を書く術。

PowerBook G4 の調子が尋常じゃなく悪い。起動に10分以上とか平気で掛かるし、作業中もときどきジッと固まって何もできなくなる。しばらくすると帰ってくるんだけど、これはなんか昔ディスクが逝ってスローダウンした状況によく似ている。日に日に遅くなっていくのが分かる。

これは危険ということで、まだなんとか動くうちにとりあえず Ubuntu 8.04 を仕込んでおいた空き PC にお引っ越し。スペックは聞くと泣けるので聞いちゃダメ。

基本的には Mac と言っても Un*x 的に使っていたので、なくなって困るのは OmniGraffle くらい。あとは Firefox も Thunderbird もあるし、Emacs をはじめ terminal の環境は恐らく Mac よりも便利なものを素早く入れられるはず。1Mozilla アプリは Profile 丸ごと持ってくればたいていのものはそのまま動くし、ダメな extension でも入れ直せば動いたりする。環境設定はいじり直す必要あったりするけど。主に外部のツールやファイルを利用するもののパスの設定ね。あ、今回は Firefox 2 を 3 に上げるのでそこは新規に作り直すことにした。せっかくなので。今ごろかって? そうさ、OSX 10.3 は Fx 2 までしか動かないんだよ。

というわけで Ubuntu の方は ctrl <-> caps lock の設定をすればまずは普通に使える。cmd を ctrl に置き換えてしまえばとりあえずたいていの作業は支障なく行える。あとは最近教えてもらった

Twitter / はぎー: @wtnabe ブラウザのタブ切り替えはCtrl + …

タブ切り替えが炸裂すれば完璧だぜ!と思ったけど

 MacGnome
terminalでコピペcmd + c/x/vshift + ctrl + c/x/v
terminalのタブ作成 shift + ctrl + t

こんな感じで、一部のショートカットキーが予想に反していた。gnome-terminal だけ shift が必要なのね。ちょっと気付かなかった。2

あとはおいおい。

データのお引っ越しは rsync だけでなんとかなるかと思ったけど、日本語のファイル名もあるのでおとなしく samba を経由させた。さすがに遅いけど、あとで泣く可能性を考えるとじっと我慢の良い子なのであった。

  1. Mac では便利なものはたいていコンパイルして入れているけど、Ubuntu なら自分の使っているものはバイナリがまず間違いなくある。 

  2. OSX の Terminal は 10.3 ではタブはないのですT_T 

超自分用 Mozilla extension メモ

アドレス入力のダイアログは消さないでほしい

たいした内容じゃないんだけど。

最近のブラウザはアドレスバーに直接 URL を入力するじゃないですか。まぁそれが当たり前だと思っている人の方がたぶん圧倒的に多いですよね。かくいう私も「インターネット」を初めて体験したときに使った Netscape ではすでにそうでした。

ま、それはいいんですよ。問題は、このアドレスバーが見えなくなっていると URL を入力できないブラウザがあるっちゅーことなのです。例えば Firefox の場合は

  • ツールバー周りのカスタマイズでアドレスバーを非表示にしている場合は [ ファイル ] → [ URL を開く ] としたときにそれ用のダイアログを開いてくれる
  • しかしウィンドウ幅やツールボタンの関係でアドレスバーが実質的に使いものにならない場合は表示されているはずのアドレスバーにフォーカスが移るだけ

という動作をします。これはまだマシな方で、Opera ではそもそも [ ファイル ] → [ 開く ] の動作に URL を開くという機能がないし、Safari もアドレスバーを隠している状態で [ ファイル ] → [ 場所を開く ] とするとニョキっとアドレスバーが復活してしまいます。

※ IE 6 の場合は問答無用でダイアログを開くのですが、なんとなく IE 7 は最近のブラウザの傾向に合わせてきそうな予感。

いやまぁ、なんでそう思ったかっていうと、スクリーンショットを撮るときの都合で Opera のスモールスクリーンレンダリングを使って、さらにもうちょっと小さくして携帯っぽい雰囲気のスクリーンショットを撮ろうと思ったわけさ。そしたらアドレスの入力ができなくなっちゃってさ。あれーどうすんだコレと。時間ねーからまたウィンドウでかくしてアドレス入れ直してすでに作成してあるスクリーンショットの画像の上に重ねて目で同じ大きさに戻してスクリーンショットを撮って…って作業をやってたの。なんだかばかくさいなと思ったわけですよ。アドレスの入力さえできればウィンドウサイズを一生懸命大きくしたり小さくしたりする必要ないのに。

このときなぜ Firfox のスモールスクリーンレンダリングを使わなかったっていうと、フォームのボタンとかかっこよくないから。あーなに? 全部画像で作ればって? そんな時間ねーから自分でスクリーンショット撮ってんでしょうが。

あー、Camino にスモールスクリーンレンダリングできる拡張があればいちばんいいような気がしてきた。Camino に拡張なんてあんの?

slashcode が上がったら RSS がリッチになった

slashcode のバージョンアップのアナウンスはもう何日も前に見たんだけど、どこが変わったのか、あまり気にせずにいた。今日になってようやく RSS に本文も入っていることに気がついた。こりゃ便利だ。

MacOSX(10.3.x) で Zebedee を自動起動

自宅サーバへのトンネルをちょっと掘り直して Zebedee をもうちょっと便利に使うことにした。今まで ssh の多段 port forward だったので遅いうえに接続が面倒だったのだ。(その割にちゃんと朝の儀式になっていたのだけど。)

インストールと設定

しかし OS X で Zebedee を使ったことがなかったのでメモ。バージョンは 2.4.1A.

Zebedee の build は(個人的には何度もやってるってのもあるけど)とても簡単である。Zebedee のソース、ライブラリのソースを一カ所に落としてきてアーカイブを紐解き、

  • Zebedee 以外のものは make だけ

で済む。

Zebedee については思うところがあったので、Makefile で

76c76
< ROOTDIR = /usr
---
> ROOTDIR = /usr/local

と修正を加える。で、

make OS=macosx; sudo make OS=macosx install

としてインストールする。bash では

export MANPATH=/usr/local/man:$MANPATH

として man が引けるようにしておく。設定ファイルは FreeBSD 使いとしては

/usr/local/etc/zebedee

に置きたいんだけど、ここは

/usr/local/lib/zebedee

で我慢しとく。Zebedee の設定ファイルの書き方はその辺の Web を見てください。

自動起動の設定

最初は xinetd を考えていたんだけど、xinetd 自体がよく分かっていない1ので面倒だなと思っていたところ、/System/Library/StartupItems/IPServices/IPServices とか眺めると何やら inetd 互換で動いているようで、そうすると /etc/services とかいじる必要があるんだけど、Zebedee の listen port って一つじゃない2し、xinetd 使うのはかえって面倒な気がしてきた。

そこで、システム起動時にcannaserverを起動する を参考に、OSX の作法に則ることに方針変更。

/System/Library/StartupItems/Zebedee

を掘って、

/System/Library/StartupItems/Zebedee/StartupParameters.plist
/System/Library/StartupItems/Zebedee/Zebedee

を用意。中身は

Zebedee

#!/bin/sh

##
# Zebedee.
##

. /etc/rc.common

# host XXXX.XXX.XXX
# 環境にもよるけど、DDNS だと反映が遅くて朝イチのトンネル作成に失敗することが
# ある。キャッシュさせるために一度名前解決しておくとよい。

exec="/usr/local/bin/zebedee -f /usr/local/lib/zebedee/client.zbd"
# ↑ 自分の設定に書き換える。
# 最後に & を置かない場合はちゃんと設定ファイルの中で detached true しておく。
pid=`ps ax | \grep zebedee | \grep -v "grep zebedee" | awk "{printf(\"%i\",\$1)}"`

StartService ()
{
    if [ "${ZEBEDEE:=-NO-}" = "-YES-" ]; then
        ConsoleMessage "Starting Zebedee IP tunnel"
        exec $exec
    fi
}

StopService ()
{
    ConsoleMessage "Stopping Zebedee"
    kill -TERM $pid
}

RestartService ()
{
    if [ "${ZEBEDEE:=-NO-}" = "-YES-" ]; then
        ConsoleMessage "Restarting Zebedee"
        if [ -n $pid ]; then
            kill -HUP $pid
        else
            exec $exec
        fi
    else
        StopService
    fi
}

RunService "$1"

なんか pid ファイルについて考えるのが面倒くさくなったので stop や restart のところで ps から 始まって何度も外部のコマンドを呼ぶ、ださいスクリプトになったけど気にしない。

StartupParameters.plist

{
  Descrption = "Zebedee";
  Provides =("ZEBEDEE");
  OrederPreference="None";
  Messages =
  {
    start = "Starting ZEBEDEE";
    stop = "Stopping ZEBEDEE";
  };
}

最後に、

/etc/hostconfig

ZEBEDEE=-YES-

を書き足して完成。

しかし、OSX でのこの方法って Linux で言う /etc/rc.d/ や FreeBSD の /usr/local/etc/rc.d/ に当たるものなんだろうけど、面倒くせぇなぁ。

  1. RedHat系はほとんど使わないんで 

  2. 今回は一つじゃない設定にした 

ナベ(さん|ちゃん)?

76% の男性のワタナベさんはこう呼ばれているらしい。(from トリビア)

ちなみに私がこう呼ばれたのはあるバイト先に居たときの上司からのみでした。今も一部に呼んでる人は居るみたいだけど、基本的にこう呼ばれることはないですね。なんででしょう。まぁ今さらそんな呼び方されても困るんですが。

てゆーか man 通りじゃないじゃん

Debian の cron は毎分 crontab の内容は読まない。毎分起動はするが

  1. メモリに load されている内容を実行する
  2. ファイルが更新されていたら load する

のプロセスが別々に実行されているかあるいはこの順番で実行されているので、更新後すぐに実行させるという芸当はできない。cron の実行をテストするようなときにハマるな、これ。(現にハマっていた。)

crontab と cron.d

cron.d って Linux 系だけなのかなぁ? よく知らないけど。

/etc/crontab
/etc/cron.d/*

の両方から設定できるんだけど(daily とか hourly とかはとりあえず置いておく)、cron.d/ 方式はいたずらにファイルが分散してタスクが一覧できないから、どの辺で負荷が高そうか目で判断しにくいのがいやだなぁ。もちろん本当は負荷の高さはちゃんと計測して記録して分析すべきだろうけど、一目で分かりそうならその方が簡単だもの。

というか man にこの cron.d のことって書いてないんだけど、なんなんだろ、これ。はっきりしてほしい。BSD 派な自分は全部 crontab に書いてしまいたい。

bind のエラーをさらに低減

先日 bind を黙らせたつもりだったけど、まだこんなエラーが続出していた。

Oct 20 09:53:36.329 client 192.168.1.14#2273: update 'XXXXXX.XX.XXX/IN' denied
Oct 20 09:53:36.359 client 192.168.1.14#2278: update '1.168.192.in-addr.arpa/IN'

なんだーこれー?と思っていたらどうやら 2000 以降の Windows が軒並み DynamicDNS クライアントとして動いているようだ。たぶん目的は ActiveDirectory.

今回は local での運用の話なので、zone のところに

allow-update {
        192.168.1.0/24;
};

TCP/IP の詳細設定の DNS への登録を指示するチェックボックス

こういう記述を足して解決。ふむ。確かにしばらく放っておいたら Windows マシンの名前や IP アドレスが引けるようになった。なるほどねぇ。

あるいは Windows 側の設定で TCP/IP のプロパティで DNS のタブの、右のチェックを外しても対応可能らしい(スクリーンショットは 2000 のもの)が、これで解決するのはクライアント側の台数や設置場所によりますな。

外部に公開している DNS の場合はログにフィルタ掛けて update の失敗だけよけておいて、さらに外部からの update の失敗と内部からの update の失敗を分けて、、、というのがチェックしやすいログを作る方法なんだろうけど、今回は関係ないのでそんなことしてません。

参考 第4回 BINDでDynamic DNS環境構築 (@IT 連載 BINDで作るDNSサーバ より)

ISP の DNS のログってひっどいことになってるんだろなー。想像したくもない。

iTunes for Windows トラブる?

称賛から苦情まで– iTunes for Windowsへの反応はさまざま @CNET Japan

ZDNet でも似たような記事が出てたけど、うちは何の問題もないですなぁ。しかもお奨めしないとまで書かれている「英語版を日本語 Windows に入れてみている」のですが。

ただし、重いことを除けば。

と言っても体感的には Mac 版とほぼまったく変わらないぐらいの重さなのですが。Mac 版でも別に軽いアプリじゃないし。

About

例によって個人のなんちゃらです

Recent Posts

Categories

Tool 日々 Web Biz Net Apple MS ことば News Unix howto Food PHP Movie Edu Community Book Security Text TV Perl Ruby Music Pdoc 生き方 RDoc ViewCVS CVS Rsync Disk Mail FreeBSD Cygwin PDF Photo Zebedee Debian OSX Comic Cron Sysadmin Font Analog iCal Sunbird DNS Linux Wiki Emacs Thunderbird Sitecopy Terminal Drawing tDiary AppleScript Life Money Omni PukiWiki Xen XREA Zsh Screen CASL Firefox Fink zsh haXe Ecmascript PATH_INFO SQLite PEAR Lighttpd FastCGI Subversion au prototype.js jsUnit Apache Trac Template Java Rhino Mochikit Feed Bloglines CSS del.icio.us SBS qwikWeb gettext Ajax JSDoc Rails HTML CHM EPWING NDTP EB IE CLI ck ThinkPad Toy WSH RFC readline rlwrap ImageMagick epeg Frenzy sysprep Ubuntu MeCab DTP ERD DBMS eclipse Eclipse Awk RD Diigo XAMPP RubyGems PHPDoc iCab DOM YAML Camino Geekmonkey w3m Scheme Gauche Lisp JSAN Google VMware DSL SLAX Safari Markdown Textile IRC Jabber Fastladder MacPorts LLSpirit CPAN Mozilla Twitter OpenFL Rswatch ITS NTP GUI Pragger Yapra XML Mobile Git Study JSON VirtualBox Samba Pear Growl Mercurial Rack Capistrano Rake Win RSS Mechanize Sitemaps Android JavaScript Python RTM OOo iPod Yahoo Unicode Github iTunes God SBM friendfeed Friendfeed HokuUn Sinatra TDD Test Project Evernote iPad Geohash Location Map Search Simplenote Image WebKit RSpec Phone CSV WiMAX USB Chrome RubyKaigi RubyKaigi2011 Space CoffeeScript Nokogiri Hpricot Rubygems jQuery Node GTD CI UX Design VCS Kanazawa.rb Kindle Amazon Agile Vagrant Chef Windows Composer Dotenv PaaS Itamae SaaS Docker Swagger Grape WebAPI Microservices OmniAuth HTTP 分析基盤 CDN Terraform IaaS HCL Webpack Vue.js BigQuery Middleman CMS AWS PNG Laravel Selenium OAuth OpenAPI GitHub UML GCP TypeScript SQL Hanami Document SVG AsciiDoc Pandoc DocBook Develop Jekyll macOS Node.js Vite Heroku Transformer AI Data Cloud Wasm