タグ

ブックマーク / hiratara.hatenadiary.jp (17)

  • macOS Big Surでマウスポインタと違うところがクリックされる問題の解消 - Pixel Pedals of Tomakomai

    ゴミ箱 を macOS Big Sur にアップグレードをしたら、クリックした時にマウスカーソルが指している場所と全然違う部分がクリックされるようになって、詰みかけた。 guest アカウントでログインすると発生しないので、ハードウェア的な問題ではなさそう。 30 分以上格闘した後、マウスポインタをシェイクして見つける の機能で、カーソルが大きくなっている時は正しい場所を指し示していることがわかった。 その後さらに試行錯誤を続けて、ようやく関連している設定を見つけた。 Accessibility の Zoom の項目にある、 「Use scroll gesture with modifier keys to zoom」 を有効にしていると、この問題が発生するようだ。 昔、プレゼンをする際に、 ライブコーディングなどでエディタや端末を拡大するために ズーム機能を使っていた人は多かったのではな

    macOS Big Surでマウスポインタと違うところがクリックされる問題の解消 - Pixel Pedals of Tomakomai
    YAA
    YAA 2021/04/29
  • Amon2のソースを読む(5) - Pixel Pedals of Tomakomai

    今日はAmon2-2.49のDSL周り。これで最後。 Amon2::Declare $c じゃなくて c() 使えたらいいよねって話。内容物の中では、t/ 内のExtended::V::MT::Context にて、テンプレからcを呼び出せるようにするために使っている。 Amon2::Lite Sinatra-ish な書き方ができるようにするもの。Amon2::Lite::_child_N という名前でコンテクストクラスを作る。Nは連番なので、package名さえ分ければ複数箇所から利用が可能*1。 use 元にはルーティングに必要な関数をエクスポートする。2.49 の実装では Router::Simple::Sinatraish は使わずに自前で実装している。さらにコンテキストにはdispatch と create_view が必須なのでこれらを実装。create_view では__D

    Amon2のソースを読む(5) - Pixel Pedals of Tomakomai
    YAA
    YAA 2011/09/22
  • Amon2のソースを読む(4) - Pixel Pedals of Tomakomai

    今日はAmon2-2.49のTriggerとPluggin。 Amon2::Trigger クラスに対してもインスタンスに対してもフックがかけられ、それぞれ@Class::_trigger と $obj->{_trigger} を使って保存される。get_trigger_code を呼ぶと関連するハンドラを全て取得できるが、インスタンスに対して呼んだ場合はインスタンスに紐づくハンドラとそのクラスの継承ツリー上のクラスにぶら下がる全てのハンドラを得られる。ハンドラは親→子の順に並んでいる。厳密な順序に関しては、mro::get_linear_isa を使っているので現在設定されているmroの影響を受ける。 Amon2::Plugin::Web:: プラグインは $c->add_trigger でトリガを仕掛けたり、$c にメソッドを生やしたりしてYourProject::Web クラスを拡張

    Amon2のソースを読む(4) - Pixel Pedals of Tomakomai
    YAA
    YAA 2011/09/22
  • Amon2のソースを読む(3) - 北海道苫小牧市出身の初老PGが書くブログ

    今日はAmon2-2.49のscaffoldとDispatcher。--flavor=Basic が基なんで、それを読む。 概要 scaffold 内のPerl関連のファイルはapp.psgiとYourProject.pmとYourProject::Webと YourProject::Web::Dispatcher だけ。実際のユーザ側の処理は YourProject::Web::Dispatcher がディスパッチした先に書くことになるので、Dispatcher.pm に直接書くか、YourProject::Web::C 以下のクラスに書くことになる。 YourProject::Web::Dispatcher を書くために Amon2::Web::Dispatcher::Lite と Amon2::Web::Dispatcher::RouterSimple が提供されているので、これも

    Amon2のソースを読む(3) - 北海道苫小牧市出身の初老PGが書くブログ
    YAA
    YAA 2011/09/22
  • Amon2のソースを読む(2) - Pixel Pedals of Tomakomai

    今日はAmon2-2.49のコンテキスト周りで、具体的には Amon2、Amon2::Web、Amon2::WebRequest、Amon2::WebResponse、ついでにAmon2::Config::Simple 。Dispatcher はこれらと粗結合なので、次回以降。他残っているのは、scaffoldのコードと、トリガーとプラグイン周り。 Amon2::Web と Amon2 の関係 Amon2::Web はAmon2(コンテキスト) を継承しておらず、コンストラクタも持っていない。YourProject::Web ではAmon2 と Amon2::Web の双方を継承して使う。という構造を考えると、Amon2::Web はAmon2 のサブクラスに対する Mix-in として働いていると見た方がわかりやすい。 Amon2::Web scaffoldの YourProject/a

    Amon2のソースを読む(2) - Pixel Pedals of Tomakomai
    YAA
    YAA 2011/09/22
  • Amon2のソースを読む(1) - Pixel Pedals of Tomakomai

    今日は Amon2-2.49 のscaffoldの作成まで。具体的にはAmon2::Setup:: 名前空間の部分。 amon2-setup.pl script/amon2-setup.pl がscaffoldの作成スクリプトだが、これは各フレーバーをnew->runしてるだけ。フレーバはAmon2::Setup::Flavor:: という名前空間に置かれるが、+指定で好きな名前空間のものも読めそう。 Amon2::Setup::Flavor Amon2::Setup::Flavor はフレーバーのスーパークラスで、ファイルを特定のPATHに吐き出す write_file などを提供する。write_file に渡すファイル名は、<<hoge>>の形式で変数を利用可能。ファイルの内容はXslateで解釈されるが、タグは <% hoge %> の形式。 Amon2-2.49のコアパッケージに

    Amon2のソースを読む(1) - Pixel Pedals of Tomakomai
    YAA
    YAA 2011/09/22
  • どんな環境でも動くPerlスクリプトを作る時の小道具 - Pixel Pedals of Tomakomai

    cpanmのように素のPerlだけで余裕で動くぜっていう配布物を作る時に便利な小道具×2です。 App::FatPacker App::FatPackerとは、依存モジュールを全て1つのファイルに押し込んでパックしてくれるライブラリです。 1枚のスクリプトに全てをまとめてくれるApp::FatPacker Module::CoreList CGI の配布や、アプリケーションの配布のときに、どのモジュールがどのバージョンから 標準添付になったのかを知りたくなります。 Module::CoreList - 標準添付ライブラリかどうかを調べる 後はHTTP::Tiny だとかText::MicroTemplate とかPurePerl で小粒なモジュールを集めれば、レトロでCPANモジュールがメンテされてない環境でも動作するスクリプトを、割とモダンな構成で作れて大変気分が良くなります。 ちなみに

    どんな環境でも動くPerlスクリプトを作る時の小道具 - Pixel Pedals of Tomakomai
    YAA
    YAA 2011/04/09
  • 今日はYAPC::Asia Tokyo 2010の最終日です - Pixel Pedals of Tomakomai

    今日はYAPCの2日目です。昨日と同様に、gihyo.jpさんの特集にもレポートを掲載しますので、完成をお楽しみに! Chia-liang Kaoさん「AnyMQ, Hippie and the real-time web」 電車遅延のため、開始が10分遅れるそうです。 Plack/PSGI → アロンアルファ Streaming Interface がある CGI.pm は使うべきでない AnyEvent 様々なイベントループのサポート POEは面倒 AnyMQ - Tatsumaki::MessageQueueをインスパイア Mooseを利用 topicを作り、 new_listener でリスナを作り、pollで監視。publishで発火。 キューバインディングを増やしてくれる人募集 Comet 色々なとこで使われている 色んなハックで成り立っている → MXHR, iframe,

    今日はYAPC::Asia Tokyo 2010の最終日です - Pixel Pedals of Tomakomai
    YAA
    YAA 2010/10/18
  • 今日はYAPC::Asia Tokyo 2010の初日です - Pixel Pedals of Tomakomai

    今日からが当のYAPCです。まもなく、東京工業大学大岡山キャンパスに向けて移動します。 昨日と同様に、gihyo.jpさんの特集にもレポートを掲載しています。gihyo.jpさんにはもう一人 @usuihiro さんもレポートを書かれていますので、そちらも合わせて会場の雰囲気を感じて頂ければと思います。 Daisuke Makiさん「Welcome, Perl!」 Future, Past, Present Perls ゲスト → Larry, Jesse, Purple Master みんなにPerlを広めたい 今回は非エンジニアが企画した (941さん++) 518人の参加者 → 世界で一番大きなYAPC タグは #yapcasia で トークの投票をやる → 優秀者にはMacBook Pro 懇親会は19時より2,000yen android, iPhone の YAPCアプリがあ

    今日はYAPC::Asia Tokyo 2010の初日です - Pixel Pedals of Tomakomai
    YAA
    YAA 2010/10/18
  • 今日はYAPC::Asia Tokyo 2010前夜祭の日です - Pixel Pedals of Tomakomai

    YAPCは2006年から出ているので今年で5回目になります。今夜東京工業大学大岡山キャンパスで開催される前夜祭に出席します。 なお、去年に引き続きgihyo.jpさんの特集にレポートを掲載させて頂けることになりました! このブログとgihyo.jpさんの方と両方にメモとりますので、合わせてご覧下さい。 yusukebeさん「イントロダクション」 Ustreamはやってません。自分の回線で勝手にやるならOK。 PerlCasualとは 意図 → 「カジュアルに」利用者としてPerlを使う 三度活動した 今日のテーマ → WAF Plack/はてPSGI PSGI の developer = WAF作成者 Plackで直接Web Applicationを作りたくなりがちだが、違う。WAFを使うべき 今日のLTは初めての人もいる 岡田有花さんとの対談もおたのしみに! WAF作者+利用者の集い n

    今日はYAPC::Asia Tokyo 2010前夜祭の日です - Pixel Pedals of Tomakomai
  • git rebaseとgit mergeはともだち こわくないよ - Pixel Pedals of Tomakomai

    例えば、以下のようなコミット履歴があるとします。 A---B---C---D masterここで git rebase -i HEAD~3 をして、 コミットB を E に書き換えたくなったとします。このとき、rebase -i によって履歴を書き換えてしまうと、以下のようにリポジトリからB〜Dのコミットは消滅してしまうと思っている人も居るのではないでしょうか。 A---E---C'---D' master確かに、Gitがこのような動作をするのであれば、rebase後に元の状態へ戻すことは到底困難であるように見えます。しかし、正確に書けば、実際のレポジトリの状態は以下のようになります。 E---C'---D' master / A---B---C---D実はコミットA〜Dの一連のコミットは手つかずで残っており、「master」というラベル*1が新たな枝に付け替えられただけなのです。よって、

    git rebaseとgit mergeはともだち こわくないよ - Pixel Pedals of Tomakomai
    YAA
    YAA 2010/06/29
  • 今日は Yokohama.pm #5 の日です - Pixel Pedals of Tomakomai

    19:00 にスタートです。詳細はこちら。 出ますので、いつものようにメモをまとめる予定です。ustreamはこちららしいです。 モダンコマンドラインツール - xaicronさん cpanminus CPAN::Shellの代替 Plackのリリースが伸びる原因に!? cpan の問題点 起動、メモリ Bundle::CPANを入れるのが大変 コードがカオス CPANPLUS 5.10 からコア入りしているけど・・・ 重過ぎる miyagawaさんが40分くらいで作った 特徴 単一のPerl Script 高速、省メモリ プラガブル インストール → ダウンロードしてchmod +x か、普通にインストール コマンドは cpanm デフォルトでは表示をほとんど捨ててる。Y/Nが必要な時は --interactive Pluginは17個 backpan とか 今のとこは開発者向け。自己責

    今日は Yokohama.pm #5 の日です - Pixel Pedals of Tomakomai
    YAA
    YAA 2010/03/08
  • Gitリポジトリ中のサブディレクトリを別のリポジトリにする - Pixel Pedals of Tomakomai

    clone して filter-branch を使うと、サブディレクトリを別のリポジトリにできます。 例えば、/tmp/hoge にあるリポジトリに hoge と subdir/foo と言うファイルがあって、ログが以下とすると、 % git log -p --pretty=oneline ac27f0a1f18108cd81be52634b07228c6bb95a0b Added foofoo diff --git a/subdir/foo b/subdir/foo index 257cc56..b4c9d55 100644 --- a/subdir/foo +++ b/subdir/foo @@ -1 +1,2 @@ foo +foofoo a6cc83ca5cec477444f0d63359ef12dede648eb5 Added hogehoge diff --git a/hoge

    Gitリポジトリ中のサブディレクトリを別のリポジトリにする - Pixel Pedals of Tomakomai
    YAA
    YAA 2009/12/03
  • PSGIを勉強したメモ(2) (PSGI 1.03でのストリーミング) - Pixel Pedals of Tomakomai

    PSGI Specificationが1.03に更新されています。新しく psgi.streaming が追加されました (Tatsumakiでも使ってる)。 最初にとても大事な注意 このエントリはPSGI 1.03の仕様について勉強したことを書いてます。PSGIの仕様はまだ流動的なので、かならず最新の仕様を見て下さい。 psgi.streaming とは PSGIアプリの戻り値は配列リファレンスですが、 psgi.streaming が有効になっているサーバではコールバック関数を返せます。 コールバック関数には返答用の関数が渡ってくるので、そこにいつもの配列リファレンスを返します。 sub { my $env = shift; $env->{'psgi.streaming'} or die; return sub { my $respond = shift; my $t; $t = AE

    PSGIを勉強したメモ(2) (PSGI 1.03でのストリーミング) - Pixel Pedals of Tomakomai
    YAA
    YAA 2009/10/30
  • PSGIを勉強したメモ(PlackとかMiddlewareとか)

    Tatsumakiを触ってみたいなあと思ったらなんかPSGI/Plackの迷路に入ってしまい、つぶやいてたらid:miyagawaさんが色々教えて下さったので、せっかくなのでまとめておきます。 教えてもらってない自分で調べたことも書いてるので、間違ってたらごめんなさい! PSGIとは WEBアプリとWEBサーバ間の仕様です。仕様はここ。WSGIやRackのPerl版です。レガシーな分け方で言えば、CGI(or mod_perl or FastCGI)の仕様の層になります。 Plackとは PSGIの仕様に関するリファレンス実装群です。 Plack(特にPlack::Server) PSGIサーバのリファレンス実装。レガシーな分け方で言えば、これはApache等の層。 Plack::Request(と、Plack::Response) PSGIアプリケーション用のユーティリティ。レガシーな分

    PSGIを勉強したメモ(PlackとかMiddlewareとか)
    YAA
    YAA 2009/10/30
  • JSDeferredの動きを追ってみた - Pixel Pedals of Tomakomai

    JSDeferredを使ってみたメモです。動きがわかれば、使うときに気をつけなきゃならないツボがわかるようになります。 なお、詳しい解説は家をどうぞ。 JSDeferredはどんなもの? チュートリアル的ではなく、このフレームワークの基中の基を最初に見ておきます。 JSDeferredでは、処理を数珠つなぎにして実行できます。以下、実用的にはまったく役に立ちませんが、このフレームワークの基中の基となります。 // Deferredを作る var d1 = Deferred(); // 処理をつないでいく var d2 = d1.next(function () { alert("d2"); }); var d3 = d2.next(function () { alert("d3"); }); // 発火すると全部走る d1.call(); ただ、これではまったく非同期性がありませ

    JSDeferredの動きを追ってみた - Pixel Pedals of Tomakomai
  • Moose::RoleはJavaのInterfaceなんかじゃない - Pixel Pedals of Tomakomai

    Moose::RoleはJavaのInterfaceと似たような物だと思ってたんですが、大きな誤解でした。 モダンPerlの世界へようこそを読んで、Moose::RoleはTraits: Composable Units of Behaviorの概念の実装らしいことがわかったので、この論文を読んでみました。*1。非常に面白い内容でした。P.12 の a) と b) を見るだけでも、この概念の面白さが伝わるんじゃないかと。要は、指定した振る舞い(requires)から新しい振る舞い(provides)を作るものが、Traitsってことです。(ただし、ここで言う振る舞いにはアクセサを含みます。) 誤解していたこと Moose::RoleをTraitsとして見なすとすれば、JavaのInterfaceの性質である以下の2点は誤解です*2。 Moose::Roleは、単なるインタフェース(API)

    Moose::RoleはJavaのInterfaceなんかじゃない - Pixel Pedals of Tomakomai
    YAA
    YAA 2009/04/07
  • 1