タグ

ブックマーク / blog.utgw.net (23)

  • WEB+DB PRESS Vol.123『Perl Hackers Hub』に寄稿した #wdpress - 私が歌川です

    WEB+DB PRESS Vol.123 (2021/6/24 (明日!) 発売) のPerl Hackers Hubに「他言語のライブラリをPerlに移植する」というテーマで寄稿しました。twitter-textをPerlに移植した際に得られた知見をもとに、他言語で実装されたライブラリをPerlに移植する際のコツについて執筆しました。 Perlに限らず他言語であっても、使いたいライブラリやSDKが使いたい言語で実装されていない、ということはしばしばあると思います。そういった際にどのようにライブラリを移植するのか、気をつけるべきことは何か、について6ページにまとめています。特にPerlに移植する際に気をつけることを重点的に書いていますが、Perl以外への移植を目標とする際にも参考にできることが書けたと思います。 見誌をいただいたのですが、すごく読みごたえのある記事ばかりでした。ぜひお買い

    WEB+DB PRESS Vol.123『Perl Hackers Hub』に寄稿した #wdpress - 私が歌川です
  • CPANに上がっているモジュールが対応しているPerlの最小バージョンの統計情報 - 私が歌川です

    CPANに上がっているモジュールが対応しているPerlの最小バージョンの傾向が知りたくなったので、調査することにした。直感では、最低でもPerl 5.8に対応しているモジュールが最も多いと思っていた。 情報を取得する metacpanにはAPIがある*1ので、これを叩いて情報を取得する。 以下のコマンドで、この記事を書き始めた日までの1年間 (2020/5/4 - 2021/5/4) のリリースのうち、最新バージョンのリリースについて検索した。 $ curl -XPOST https://fastapi.metacpan.org/v1/release/_search -d @query.json > result.json query.json にはこういうクエリを書いた。Elasticsearchのクエリは普段あまり手書きしないのでちょっと苦労した。 { "query": { "bool

    CPANに上がっているモジュールが対応しているPerlの最小バージョンの統計情報 - 私が歌川です
  • Test::Moreで書いたPerlのテストコードを自動でTest2::V0に移行するツールをCPANizeした - 私が歌川です

    Japan.pm 2021で発表した、Test::Moreで書いたテストコードを自動でTest2::V0に移行するツールをCPANizeしました。 metacpan.org scrapbox.io ディストリビューションは App という名前空間以下なのに、Test2プラグインも同梱していて怒られないかヒヤヒヤしています。CPANizeしてから気づいたけど、変換対象のテストコードの例を eg ディレクトリに入れているのもよくなさそうな気がする?? 一瞬でTest2::V0対応する際にどうぞご利用ください。 2021/5/4 20:22 追記 ディレクトリ構成の整理をしたりテストコードを追加したり、ちょっとしたバグの修正もした 0.02 をリリースしました。 migrate-to-test2-v0 - Migrate your tests from Test::More to Test2::

    Test::Moreで書いたPerlのテストコードを自動でTest2::V0に移行するツールをCPANizeした - 私が歌川です
  • メモ: VSCode Remote (WSL) でgit commit時にGPG署名を行う - 私が歌川です

    WSLにgpgをインストールすればGPG署名ができるようになるけど、ttyにパスフレーズ入力ウィンドウが表示されるので、使うのにコツが要る。 code コマンドでVSCodeを起動したら、commit時には code コマンドを叩いた元のターミナルを開かないとパスフレーズが入力できない。ターミナルを閉じていたらcommit不能になる。 GUIでパスフレーズを入力できないと詰むので、Windows側にGpg4winをインストールして、同梱されているpinentry.exeを使うのがよい。 ~/.gnupg/gpg-agent.conf に以下を指定する。 /mnt/c 経由で直接pinentry.exeのパスを指定してやるとすんなり動く。 pinentry-program /mnt/c/Program Files (x86)/Gpg4win/bin/pinentry.exe こうするとCUI

    メモ: VSCode Remote (WSL) でgit commit時にGPG署名を行う - 私が歌川です
    anatofuz
    anatofuz 2021/03/30
    zshrcにtty=$TTY:t; export GPG_TTY=$(tty) みたいなのをつけたらいけたきがする(ただし一度ターミナルでパスフレーズは入れる必要がある...
  • 一度きりの作業やデータの処理をするときは何使ってますか? - 私が歌川です

    サークルのSlackの匿名投稿チャンネルで質問されていた。普段こうしてるつもりだけどあまり意識してないので違うこともやってるかもしれない。 ブラウザで開いてるwebページ上の情報を処理する 開発者ツールのconsoleにJSを書いて実行している。この要素のtextContentを列挙して copy() して貼り付ける、というのをたまにやる。JSでうまく書けないなと思ったら文字列をコピペするなどして ↓ に持ち込む。 ターミナルで処理する 当に単純な文字列置換ならsedを使う。最近はPerlを書くことが多いのでPerlでサッとやりがち。昔はこういうときよくPythonを使ってたと思う。ISUCON10予選でアクセスログを解析するときはPerlを書いた。

    一度きりの作業やデータの処理をするときは何使ってますか? - 私が歌川です
    anatofuz
    anatofuz 2020/11/30
    なんかsedコマンド覚えて無くてだいたいPerlでやってしまう....
  • twitter-textのPerl実装 Twitter::Text を公開した - 私が歌川です

    Twitter::Text - Perl implementation of the twitter-text parsing library - metacpan.org Perlでツイートをバリデーションしたいときに使うことができます。どうぞご利用ください。 いろいろ学びがあったので、実装方針などについて書いていきます。 動機 そもそも既存ライブラリはなかったのか、と思うのですが、どうやら9年前から存在しなかったようです。 ツイートを読んでPerlのデータ構造にするText::Twitterってモジュールを見た記憶があるんだけど、そんなものはCPANになかった。なにを見たんだろう……。— 栗林健太郎 (@kentaro) 2011年1月24日 GitHubtwitter text perl で検索すると、以下のリポジトリがヒットしますが、どれも要件を満たさなかったです。 GitHu

    twitter-textのPerl実装 Twitter::Text を公開した - 私が歌川です
    anatofuz
    anatofuz 2020/10/29
    rubyからの移植すごい!!!!
  • ISUCON10 予選突破した #isucon - 私が歌川です

    😇😇😇 (:innocent::innocent::innocent:) というチームで、 id:nonylene id:wass80 と参加して、24位でめでたく予選突破できました。学生枠を使わずに予選突破できたのは初めてです。チームメンバーのブログも読んでください。 nonylene.hatenablog.jp wass80.hateblo.jp 記録に残ってる最終スコアは2204点でした。 やったこと New Relic導入 まずNew Relicを入れて計測できるようにしよう、というのをやりました。echo向けにはechorelicっていうのがいいのか、と調べて導入しました。 github.com エンドポイントにかかった時間は計測できたけど、分散トレーシングとか、SQLにかかった時間が取れてない!!! なんでなの!! と言いながらechorelicのコードを読みに行きました

    ISUCON10 予選突破した #isucon - 私が歌川です
  • インターネット最新情報 - 私が歌川です

    使用中のインターネットの速度は: 750Mbps. お使いのインターネットの速度はどのくらいですか? https://t.co/eAGaSTMmoN— うたがわきき (@utgwkk) 2020年4月17日 インターネット回線の乗り換えが完了した結果、夜中の回線速度が3000倍になった。 utgwkk.hateblo.jp もともと、マンションにあった、工事不要の回線を契約して過ごしていた。ここ最近はずっと、夜中になると、回線速度が著しく低下するのに悩まされていた。このような状態では息が詰まる、ということで思い切って回線を切り替えることにした。 utgwkk.hateblo.jp 世界はこんなにも新鮮だったのか、という気持ちに近いものを感じている。

    インターネット最新情報 - 私が歌川です
    anatofuz
    anatofuz 2020/04/18
    回線速度3000倍
  • 沖縄 - 私が歌川です

    3/21-24の3泊4日で沖縄に行きました。沖縄に行った理由はとくにないです。 以下は雑多な観光日記です。 3/21 お昼ごはんに天一をべて関空に向かう。ぼんやりしてたらチェックイン締切20分前に着いてしまいやや焦る。 2時間ぐらい飛行機に乗ってて、通路側の席だったのでとくに景色は見てない。寝たりゆゆ式を読んだりして暇をつぶす。 そうこうしてたら沖縄に着く。寒くなく過ごしやすい天気で、雨も降ってなくて助かった。ゆいレールがSuica対応してて便利。 チェックインして荷物を置いたら国際通りに向かう。シークヮーサー泡盛を買って飲むけど量が多くて慌てて水も買うことにした。ああいった飲み物がカジュアルにコンビニに置いてあるのはすごい。 沖縄の標準的なカクテル獲得した pic.twitter.com/eAgoOIAjVx— うたがわきき (@utgwkk) 2020年3月21日 id:anatof

    沖縄 - 私が歌川です
  • nginx の $request_uri と $uri - 私が歌川です

    nginxの $request_uri と $uri は似ているけどちょっと違う。 $request_uri $request_uri full original request URI (with arguments) クエリパラメータ付きのオリジナルのURI $uri $uri current URI in request, normalized The value of $uri may change during request processing, e.g. when doing internal redirects, or when using index files. 正規化されたURI リクエストの処理過程で $uri の値は変わりうる クエリパラメータは付いてない どのように正規化されるのか locationディレクティブに書いてある。 The matching is

    nginx の $request_uri と $uri - 私が歌川です
  • はてなインターン2019で優勝した - 私が歌川です

    はてなという会社で1ヶ月インターンに参加していました。 はてなのサービスは普段使っているものが多く、じぶんが使っているものを便利にしたいなと思っていたことや、今年のインターンどうしようかなと思っていたところまだ応募できると聞いたことなどが応募・参加するきっかけでした。 要約すると、めちゃくちゃ充実した4週間が送れて最高でした。 やったこと 応募 インターンに参加するには応募をしないといけません。 応募するために、ポートフォリオを書いてROT13を実装しました。 よく手になじんでるPythonで実装したのですが、そういえばPythonの標準ライブラリにはROT13があります。 import codecs codecs.encode('hoge', encoding='rot13') # => 'ubtr' これでも確かに要件は満たしていたと思いますが、拡張性に乏しいのでこれは没にしました。

    はてなインターン2019で優勝した - 私が歌川です
  • YAPC::Tokyo 2019 参加した #yapcjapan - 私が歌川です

    今年もYAPCに参加しました.学生支援プログラムのおかげで気軽にYAPCに参加することができており,スポンサー企業の皆様やスタッフの皆様には頭が上がりません.次回もよろしくお願いします. Perl6チャレンジ トークの合間にGMOインターネット様のPerl6チャレンジに取り組んでいました. ふだんはPerl6とも正規表現とも遠い生活を送っており,Perl6の正規表現は初めて書きました. 記法に慣れないところもありましたが,なんとか午前の部でTシャツを入手することができてよかったです. Perlチャレンジ午前の部がクローズ! 速度チャレンジは @titsuki @ kawa. fm @utgwkk @sekai67 の4名の皆さん。 名回答賞は rfcまで意識された @dankogai さん。 皆さんおめでとうございます!! Tシャツをプレゼントしたいので、ブースまでお越しください!午後の部

    YAPC::Tokyo 2019 参加した #yapcjapan - 私が歌川です
    anatofuz
    anatofuz 2019/01/29
    懇親会で初めて正体が明らかになった際はブログタイトルの伏線が回収された感じがありました.ありがとうございます!!
  • カインドを用いたレコード多相 (record polymorphism) の計算体系とその実装 - 私が歌川です

    これは KMC Advent Calendar 2018 - Adventar と 言語実装 Advent Calendar 2018 - Qiita 4日目の記事です. 3日目はそれぞれ, id:nojima718 さんの ぷよぷよのプレイ動画を解析して棋譜を生成する - @nojima's blog (KMC) @yhara さんの Shiika進捗(2018) - yhara.jp (言語実装) でした. 自己紹介 id:utgwkk (うたがわきき) です.学部4回生になり,プログラミング言語に関する研究をすることになりました*1. KMC部員としての生活もついに4年目です.ふだんはお酒を飲んでいます. 概要 この記事では,大堀先生の多相レコード理論の論文[1] *2について,(数学的な議論は控えめに)どういうことをやっているのかについて紹介します. また,リファレンス実装のSML

    カインドを用いたレコード多相 (record polymorphism) の計算体系とその実装 - 私が歌川です
  • スライドPDFの1ページ目から発表タイトルを自動的に抜き出したい - 私が歌川です

    tl;dr pdftotext を使えばできる じぶんのスライドのbounding boxに着目すればだいたいうまくいく 動機 pdftotext は,PDFファイルからテキストの情報を抜き出すことができるコマンドである. これは単にテキストを抽出するだけでなく, -bbox-layout オプションを渡すことでbounding boxの詳細な情報も含めてXMLとして吐いてくれるのである. このXMLをうまく使えばPDFファイルから発表タイトルを抜き出せるのではなかろうか. 今回は自分のスライドについて考えることにした. 考察 たとえば,このスライドを pdftotext にかけた結果は次のようになる. gyazo.com <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR

    スライドPDFの1ページ目から発表タイトルを自動的に抜き出したい - 私が歌川です
    anatofuz
    anatofuz 2018/05/18
    pdftotext便利だった
  • KMCの春合宿で「画像検索・閲覧システムの実装と全文検索SQL」の話をした - 私が歌川です

    speakerdeck.com スライド中のURLを踏んだりSQLをコピーしたりすることができるようにPDFも用意しました. (追記: SpeakerDeckのページにPDFをダウンロードできるリンクがあるのでそっちを使いましょう.クールなURIは変わらないのでこちらのURLも残しておきます.) (追記: URLのフォーマットに一貫性を持たせるためにリンクを差し替えました.クールなURIは変わらないので前のURLも有効にしています) 内容 このブログでも度々言及している,自分用の画像保存・共有BOT,ならびに画像検索システム「救い」の話をしています. BOT部分の実装をざっと見たり*1,全文検索SQLを検索窓への入力から組み立てる方法について言及したりしました. また,似たようなことをやっている人の様子や今後の課題についても言及しました. 最後に,Twitter Streaming API

    KMCの春合宿で「画像検索・閲覧システムの実装と全文検索SQL」の話をした - 私が歌川です
    anatofuz
    anatofuz 2018/03/19
  • KMC の春合宿で Python の処理系の講座をした - 私が歌川です

    追記: dict の実装で出てくる図が間違っています*1.あとで修正します. スライドを差し替えました.変更点は次の2点です. dictの図を開番地(オープンアドレス)法のものに訂正 バイトコードについて追記(2バイトで1つの命令と引数を表す旨) 先日 KMC で春合宿があり,そこで Python の処理系に関する講座をしました. speakerdeck.com 内容 プログラミング言語を実行体系で分類すると,次の2つに分けられるのではなかろうかと思います*2. コンパイル言語 インタプリタ言語 また,型付けで分類すると,次の2つに分けられます. 静的型付け言語 動的型付け言語 C言語のコンパイラの実装に関する情報は巷に溢れており,また書籍も数多くあります. 一方で Python のインタプリタに関する詳細な情報は,もちろんあるのですが,気にせずに使っている人が大半かと思われます*3. そ

    KMC の春合宿で Python の処理系の講座をした - 私が歌川です
  • Twitterで画像付きツイートをいいねしたら保存しつつSlackに流すやつのGo版 - 私が歌川です

    こんにちは. アドベントカレンダーの記事から2週間ぐらいしか経過していませんが,「Twitterで画像付きツイートをいいねしたら保存しつつSlackに流すやつ」をGoで書き直しました*1. github.com utgwkk.hateblo.jp 概念はこちらとほぼ変わりません.RubyGoに置き換えたらだいたい通ります. 特徴 Goで書いてある 一連の流れを全て書き下してパブリックにしたの初では? ツイートをいいねする Slackにシェアする DBに情報を保存する サムネイルを生成する S3にアップロードする 書き直した理由 メモリリークしてた……. 原因は分かった気がするけど修正するのが大変だし,コードがごちゃごちゃになってきたし,動的型をエスパーするの難しいし,アー,となって,そういえば最近Go書いてないなーということでリハビリを兼ねてGoで書き直すことにしました. 「サムネイルを

    Twitterで画像付きツイートをいいねしたら保存しつつSlackに流すやつのGo版 - 私が歌川です
    anatofuz
    anatofuz 2017/12/21
    すごく便利そうだった
  • Twitterで画像付きツイートをいいねしたら保存しつつSlackに流すやつの現在 - 私が歌川です

    この記事は KMC Advent Calendar 2017 - Adventar 3日目の記事です.このカレンダーの内容は kyp (id:kypa) さんの尽力によって下の記事に逐一まとめられるので,良ければ参照してください.kyp (id:kypa) さん,がんばってくださいね. adventar.org 昨日の記事はkata(id:kaptambns)さんの ツイートで振り返る自転車で琵琶湖一周 - KMCアドベントカレンダー用のブログ でした. そんなワケで、明日の記事にはutgwくんのwizardryプレイ日記あたりを予想しておきます。よろしくお願いします。ツイートで振り返る自転車で琵琶湖一周 - KMCアドベントカレンダー用のブログ wizardryはプレイしたことないので,Twitterで画像付きツイートをいいねしたら保存しつつSlackに流すやつの話をします. こんにちは

    Twitterで画像付きツイートをいいねしたら保存しつつSlackに流すやつの現在 - 私が歌川です
    anatofuz
    anatofuz 2017/12/03
    なるほどS3で保存してるのか
  • ■ - 私が歌川です

    25周年おめでとうございます (@ EL LATINO in 京都市, 京都府) https://t.co/hNzAaYEb35— うたがわきき🔰💊 (@utgwkk) 2017年11月23日 NFに合わせてエルラに人間が集結した.最終的に30人ぐらい来て,なんとか全員座れた. 店にいる途中で記憶がなくなっており,気がつくと家のベッドにコアダンプしてたので,泣きながら処理した. トイレでコアダンプする習慣がないが帰宅することはできるので,次はトイレでコアダンプするようにすると完璧. 記憶がないとき何をやっていたのか不明で,OBの方の支払い分の1万円がズボンのポケットに入っているということもある. デレステの話をしていたところが最後のセーブポイント. どんどん二日酔い解消グッズとコアダンプ処理の知見が集結していく.まだ頭が痛い. 追記 酔っ払ってるときの自分の行動が不明なのでGoogle

    ■ - 私が歌川です
    anatofuz
    anatofuz 2017/11/24
    “気がつくと家のベッドにコアダンプ” おめでとうございます.575だ.
  • シェルで行ごとの数値の総和を取るとき paste と Arithmetic Expansion が使える - 私が歌川です

    tl;dr $ echo $((`paste -s -d+`)) で入力の各行の数値の総和が取れる. 入力ファイルを指定するときは次のように書く. $ echo $((`paste -s -d+ < [filename]`)) 負の整数も小数も計算できる.ただし小数は浮動小数であることに注意. 状況 たとえば, 100 200 300 400 みたいな入力があって,その各行の数値の総和をシェル上で取りたいというシチュエーションが訪れると思う. 私はこれまで awk で次のようなワンライナーを書いて計算していた. $ awk '{s += $1} END {print s}' # => 1000 実はもっと短く書けるし,shとcoreutilsで完結しているのでシェルスクリプトでも気軽に書ける.このように; $ echo $((`paste -s -d+`)) # => 1000 解説 pa

    シェルで行ごとの数値の総和を取るとき paste と Arithmetic Expansion が使える - 私が歌川です