タグ

ブックマーク / blog.64p.org (123)

  • 最近またLinux用の日本語IMEを作っている - tokuhirom's blog

    最近またLinux用の日語IMEを作っている 件は mozc の ut がどうこうとかは関係なくて、ふと linux desktop を使おうと昨年末に思いまして、昨年末からちまちまやってます https://github.com/tokuhirom/akaza かな漢字変換って作るの難しいのかなぁ、と思ったので作ってみている。これはまさに Just for Fun でやっている。 わりと普通に自分で常用してる分には困らないかな、というところまできている。 以下は、思ってることの垂れ流しという感じで、まとまってないですが。 「日本語入力を支える技術」というが 2018年に出ていて、このの内容を読めば、だいたいエンジン部分は実装できる。Amazon のレビューではこのよんでも実装できないって書いてあるけど、変換エンジン自体は実装できます。 UI が辛い。けど。 エンジンは、ビタビア

    sugyan
    sugyan 2023/01/16
    知見なくて全然わからないけど、何だか楽しそう
  • Jet Brains Night 行ってきた - tokuhirom's blog

    Yahoo! Japan さんのオフィスで Jet Brains Night というミートアップイベントがあったので行ってきた。 大きめのセミナールームを2個ぶち抜いた感じで、スクリーンが前面4面とサイド2面あってとにかく広くてきれいな開場でした。 IntelliJ の tips とか一個ぐらい学べればいいなーと思って行ったけど結構いろいろあって良かったです。 JetBrains 製品全般の紹介という感じで良かった。 JS については以下の tips 知らなかった! なるほどなー。 IntelliJ に typescriptの型定義ファイル読んで補完させるとかできるのか…… #jbnight — tokuhirom (@tokuhirom) November 22, 2016 File watchers プラグインで eslint かけるのが便利か。なるほどなあ。 #jbnight — t

  • undertow と graceful shutdown と - tokuhirom's blog

    undertow を利用する予定は特にないのだが、undertow だと graceful shutdown はどのように実現可能なのだろうか、ということが気になったので調べてみました。 ここでいう graceful shutdown は listen socket を close したうえで、処理をすべて正常に終了し、終了後にプロセスを exit するようなものを指しています。 いくつかハマりどころがあるので注意。 undertow はドキュメントが貧弱 どうも、貧弱ですね。。ソース読めないと厳しい。ソースか javadoc 眺めて探すとかしないと見つからない。利用方法ものってないからテストから探すとかしないといけない。 DeploymentManager.stop() を呼ばないと Servlet#destroy が呼ばれない これは、Java EE になれた人だと常識なんだろうけど、

  • Perl5 での Plack に当たる Crust をみんなで作った話 - tokuhirom's blog

    この記事は Perl 6 Advent Calendar 2015 の1日目です。 Perl 6 は、2015年のクリスマスにリリースされることになっており、我々としてはそれを待ち受ける必要があると考えました。 Perl6 がリリースされた暁には、いろいろ遊ぼうかなという気持ちをみなさんお持ちだと思います。 Perl6 には夢が詰まっており、様々な機能が含まれている夢の言語です。 そういった、夢の機能については今後、クリスマスまでの間に、語られていきますが、稿では、現実的な話をします。 今年のクリスマスに Perl6 がリリースされるぞ、という宣言がでたわけですが、そうなってくると、Perl6 をクリスマスから早速遊びたいなと思うわけですよね。 そして、私は web engineer なので、 Perl6 が出たら早速 web application を書きたいと思うわけです。 しかし、

  • WebSocket with Perl6 - tokuhirom's blog

    Yay, I released WebSocket.pm on ecosystem. You can write a WebSocket server very easy! Here is an example chat server in Perl6. https://github.com/tokuhirom/p6-WebSocket/blob/master/eg/chat.pl6 use v6; use HTTP::Server::Tiny; use WebSocket::P6SGI; sub MAIN(Int :$port=80) { my $html = $=finish; $html ~~ s:g/'<<<PORT>>>'/$port/; my $supply = Supply.new; my $s = HTTP::Server::Tiny.new(port => $port);

  • Shipped full featured Plack clone for Perl6 named `Crust` - tokuhirom's blog

    Hi, i'm tokuhirom, one of the core developer of Plack. During the past few weeks, I've been hack the Perl6. This is to celebrate the Christmas in the best mood. I'm a minimalist, and I love a software built on clean and well tested parts. I mean tokuhirom loves CPAN. To write the practical web applications in Perl6, it has released some of the library. HTTP::Server::Tiny - IO::Socket::Async based

  • [mac][osx][java][mysql] JDBC で mysql につなごうとしたら "Communications link failure" のエラーが出るとき - tokuhirom's blog

    gradle でテストを動かしていたら、途中で JDBC が "Communications link failure" と言って死ぬ場合がある。 これは com.mysql.jdbc.exceptions.jdbc4.CommunicationsException のメッセージだが、このメッセージ自体は、socket を connect することにしたということを示すのみで、それ以上の情報が無い。ただこのエラー自体は、OS レベルでエラー返して発生することがほとんどなので、strace -f とかして調べればよいですね。 ありがちなのは bind-address を 127.0.0.1 に設定しているのに他のサーバーからアクセスしたとからしい。 一方で、テストの実行途中でこのエラーが出る場合は、リソースが枯渇している可能性がある。 つまり、テストケースの中でリソースがリークしている可能性

  • Java 8 の DateTimeFormatter の曜日等のフォーマットについて - tokuhirom's blog

    DateTimeFormatter を利用して曜日などのフォーマットを行おうとすると、実際どういうふうにフォーマットされるのかよくわからんということになる。 https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html をちらっと見ると、以下のように書いてあって、各シンボルが何を表すのかよくわからない。 Symbol Meaning Presentation Examples ------ ------- ------------ ------- G era text AD; Anno Domini; A u year year 2004; 04 y year-of-era year 2004; 04 D day-of-year number 189 M/L month-of-year n

  • GS Collections Kata をひと通りやった - tokuhirom's blog

    GS Collections というゴールドマン・サックスさんが出してる Java 用のコレクションライブラリがある。 Java Day Tokyo/JJUG CCC 2015 Spring で知ったのだが、これは以下のような利点を持っているようだ。 使いやすいインターフェース メモリ使用量が標準のコレクションよりもよい場合がある Multimap や sortedbag などの標準にはないコレクション GS Collections には GS Collections Kata という、チュートリアルがある。これは junit test case の形式をしていて IDE で読みこめばすぐに試せる。 順番に指示通りにやっていけば試せるんで、なかなか良い。 例も Company, Order, Supplier, LineItem など具体的で、わかりやすい。結構手間かかってるな、という印象

  • jetty で vhost でいい感じにアプリケーション動かしていく - tokuhirom's blog

    jetty で vhost 使う方法みたいな話が、意外と情報ない。 例えば、web 画面と admin 画面があるようなサイトで、実際には vhost を利用して運用したいという場合、一般的な ide や servlet container の想定では PATH_INFO でアプリケーションを切り替えて頑張る、みたいなのが多いのだが、こういったアプローチはあまり現代的ではないと思う。 named vhost でやりたいよ!! 最近、以下のような構造のでアプリケーションを構築している。 - pom.xml + common ← jar - pom.xml + admin ← war - pom.xml - src/main/webapp/WEB-INF/web.xml + web ← war - pom.xml - src/main/webapp/WEB-INF/web.xml このような状

    sugyan
    sugyan 2015/04/10
  • [perl] Error in tempfile() using template /tmp/XXXXXXXXXX: Have exceeded the maximum number of attempts (1000) to open temp file/dir at hoge.pl line 14. のようなエラーが発生した場合の対処方法 - tokuhirom's blog

    File::Temp を使っていると、表題のようなエラーが発生することがある。 これは一件すると、ファイルを開く処理が失敗した用に見えて、ファイル開き過ぎとかかなあと思うんだけど、実際はそういうことではないようだ。 File::Temp の実装はこのへんになっていて、要するに EEXIST が発生した場合に 1000 回ファイル名を変えてリトライして、その結果としてダメだったというときにいい感じにあがる例外である。 https://github.com/Perl-Toolchain-Gang/File-Temp/blob/master/lib/File/Temp.pm#L602 ここを見れば分かる通り、EEXIST の時だけしか次のループにいかないので、OS 的な問題ではない。 https://github.com/Perl-Toolchain-Gang/File-Temp/blob/ma

    sugyan
    sugyan 2015/03/23
  • LL から Java に移行した人がはまりがちなこと - tokuhirom's blog

    こんにちは。Java 初心者です。 Java 初心者、得に LL から Java に来た人にありがちな問題について社内向けに書いたものをオープンアンドシェアさせていただきます。 前提として、我々は Java 8 でガンガン攻めているということをご承知おきください。 また、自分がこの数ヶ月で「うわー。こうしとくべきだったのかー」と気づいたやつをドヤ顔で語っているということにもご注意ください。 【追記】 対象は中規模 B2C の場合です(中規模というのは facebook より小さいという程度の意味です) 例外を握りつぶさないようにしよう Eclipse が生成する以下のようなコードをそのまま残しているケース。 これは言うまでもなく良くないですね。デバッグが困難になります。 try { } catch (IOException e) { e.printStackTrace(); } Perl

    sugyan
    sugyan 2014/10/01
  • js-xlsx で js で excel のファイルを生成する - tokuhirom's blog

    Excel ファイルの生成、めんどくさいですよね。CSV の生成めんどくさいですよね。HTML を出力した上でさらにやるのはだるい、というわけで、HTML の DOM を解析して JS で XLSX 生成してダウンロードさせたらいいんじゃね?と思ってそういうのやれるやつ探したら、js-xlsx ってのがあった。 これをつかって、HTML のレポートから XLSX を生成するコードを書いた。なかなかうまく動く感じしてる。 http://tokuhirom.github.io/js-xlsx-demo/ td タグに class を指定すると数字カラムになる、みたいな感じになってるのがいいかんじです。 js-xlsx で生成したXLSXは、FileSaver.js で保存させてます。 デモで利用している JS は以下のようなものである。簡単でしょ。 "use strict"; var data

  • Web Application の validation はどのレイヤーでかけるべきか - tokuhirom's blog

    数年前にも同じことかいた気がするけど、最近の状況にあわせてかいてみる。 途中で面倒になってきて説明が雑になっている点をご容赦ください。 言いたいことは「結局、昔はサーバサイドで懇切丁寧なエラーメッセージを出すためにModelではなくControllerでバリデーションに関する知識が必要だったけど 今はJavaScriptでやるから不要だよね111」ってことです。 この表題は、よく話題にあがるところなのだが、理想論としては Model, Controller, Client side のいずれにおいてもきっちりと validation を行うことがのぞましい。 しかし、実際にはなかなか面倒である。ということで、どこをはぶくかというと Controller における Validation であろう。 ユーザーに対する親切なメッセージは JS の側でだすのが理想的。model の validat

  • Perl5 において chomp() とはなにをするものか - tokuhirom's blog

    えてして、プログラミングにおけるバグの発生源は、使い方をまちがえていることに起因するものも多い。 を電子レンジでかわかす人がいるように。 そもそも chomp() という組み込み関数はなぜ必要なのか。 Perl5 では、データを行単位で処理するということが重視されたインターフェイスになっている。これは一般的なテキスト処理の頻出パターンだからだ。 while (<>) { chomp; say if /foo/; } これは、入力データを行ごとにとりだし、改行をとりのぞき、/foo/ という正規表現にマッチする行だけを表示するというプログラムだ。 Perl5 を知っている人なら、だれもが簡単に理解できる。 ここで $/ という変数が問題となる。$/ は、行の区切りがはいっている特殊なグローバル変数で、awk でいうところの RS にあたるものだ。 この $/ を変更することにより「行」の区

    sugyan
    sugyan 2013/11/18
  • HTTP::Session2 has been released. - blog.64p.org

    English document is available on metacpan! Following document is written for non-english speakers. HTTP::Session2 を作成した。主に Amon2 で使用することを想定しているが、広く一般につかえるものと思う。 特徴 必要なときに必要なだけ Set-Cookie ヘッダを発行する 必要なときだけストレージにアクセスする クライアントサイドストレージとサーバーサイドストレージの両方をサポート XSRF トークンの管理をセッションライブラリ側に内蔵 AngularJS フレンドリー 上記が、重要なことである。 弊社のようなハイトラフィックなサービスを運営している場合には、できるだけリソースをケチりたいので、そういう思想なものが必要となった。通常の用途では Plack::Session

  • Devel::NYTProf で Starlet/Starman (Plack) でうごくウェブアプリケーションのプロファイリングをおこなう方法まとめ - tokuhirom's blog

    Devel::NYTProf は Perl5 の世界でもっとも人気があるプロファイラである。表示が美麗であるし、ステップごとの処理速度が簡単にわかるのでとても便利だ。 そんな Devel::NYTProf であるが、Starlet/Starman のようなプリフォーク式のサーバーでうごくウェブアプリケーションとくみあわせる場合の方法論として、わかりやすい資料がみあたらなかったのでここに記すものである。 環境変数 NYTPROF を設定する Devel::NYTProf は環境変数で挙動を変えられる。 plack とくみあわせる場合には、以下のようにするとよい。 NYTPROF=sigexit=int:savesrc=0:start=no sigexit=int 通常、Devel::NYTProf は END { } ブロックでデータのファイナライズ処理をおこなうのだが、SIGNAL によっ

  • Check Text-Xslate-2.0010 if you are using Data::Section::Simple with Xslate - tokuhirom's blog

    Text::Xslate 2.0010 contains serious issue fix around 5.18 incompatibility. Perl 5.18+ does not allows "Wide characters" as PerlIO::scalar's input string. It says Strings with code points over 0xFF may not be mapped into in-memory file handles. Older Text::Xslate using PerlIO::scalar for processing vpath. vpath is mostly using with Data::Section::Simple. And so, if you are using Data::Section::Sim

  • Amon2 にStandalone フレーバーが追加された - tokuhirom's blog

    Amon2 4.04 から、EXPERIMENTAL ではありますが Standalone フレーバーが追加されました。 これにより、CPAN にすぐあげられる状態のウェブアプリケーションが生成されるようになった、つもりです。 ちょっとまだ荒削りだけど、うごいているので、おためしください。 このモードでつくったアプリケーションはグローバル変数など一切つかってないので、複数を単一プロセスでうごかしても綺麗に動作します。

    sugyan
    sugyan 2013/10/03
  • Amon2 4.00 released - tokuhirom's blog

    Amon2 が久々のメジャーバージョンアップをはたしました。 主な目玉としては、 Teng をデフォルトの O/R Mapper として採用 bootstrap 3 に対応 の二点です。 ご査収ください。