タグ

ブックマーク / naruse.hateblo.jp (8)

  • How to accelerate Ruby development; Provide real world use case - なるせにっき

    The history of decentralization of Ruby, and what you can do for the future The history of Ruby development is also a history of transferring and separating the power of Ruby's decision from Matz. Many years ago all Ruby development was done by only Matz. But in the year 1999, Matz1 built a CVS server and allow some people to commit their changes into the repository. They fixes trivial bugs and ma

    How to accelerate Ruby development; Provide real world use case - なるせにっき
    mrkn
    mrkn 2019/01/22
  • 観察日記 2018-02-14 - なるせにっき

    配列の全ての要素が等しいか否か mrkn 配列の全ての要素が等しいことはどう確認したら良いんだろう。 `ary.all? {|e| e == ary[0] }` これかな usa ary.uniq.size == 1 mrkn なるほど > uniq usa all?でブロック引数より速そうな予感 いやでもaryがでかくてかつ全然要素が等しくなかったらそうでもないか。 mrkn `ary.all? {|e| e.foo == ary[0].foo }` の場合はどうでしょう。map.uniq.size がいいかな usa all?は全て等しい時に遅いが、序盤で違うとわかったら速い mrkn 確かに > 序盤で違うとわかったら速い usa この辺は予想される集合の傾向で判断するしかないですかねえ。 map.uniq.sizeはmapの結果としての一時配列を作らないようにするには、えーと En

    観察日記 2018-02-14 - なるせにっき
    mrkn
    mrkn 2018/02/14
    ちなみに、ちゃんとベンチマークとったら lazy.map.uniq.take(2).count より all? の方が速かった。
  • 2017年のruby-mswin事情 - なるせにっき

    おしらせ 以下に最新版があります。 qiita.com 序 WindowsRubyを使うのは難しいようで簡単なようで難しいことです。 ただインストールするだけならばインストーラがあるので簡単です。公式サイトのダウンロードページから探しましょう。 ……ここでいきなり迷うであろうのが、"mswin"と"mingw"という語です。Unix系のOSではABIは通常一環境に一つです。しかし、Windowsではたくさんあります。64bitWindowsでは32bitのバイナリも動かすことが出来るのと、最近までVisual Studioはバージョンアップの度にABIを変更していたため、2017年現在では以下のようなABIが存在します。 i386-mswin32 i386-mswin32_70 i386-mswin32_71 i386-mswin32_80 i386-mswin32_90 i386-m

    2017年のruby-mswin事情 - なるせにっき
    mrkn
    mrkn 2017/10/03
    すげー勉強になる。
  • SEGV探偵が往く - なるせにっき

    人は誰しも108つの夢を持つと言いますが、読者の皆さんにも探偵を夢見た人は多いことでしょう。実際問題として探偵業をやろうと思ったら地道な聞き込み&張り込みの日々でしょうし、逆に派手な探偵業は陰謀&殺人で恐ろしい。わたしも自分の命は大事ですからどうするか。そう、探偵ごっこをするわけですね。 というわけでSEGV探偵です。死ぬのはプロセスなので安心。Rubyを使っていればSEGVなんて見慣れたものですが、いざ捜査しようと思うと意外とその辺には転がっていないもの。(むかしはつかみ取り出来るくらいいたそうですよ)とはいえ今でもいわゆる「バグ鉱脈」みたいなものはありまして、その一つが「最新のコンパイラでビルドしてみる」です。 今日はGCCの開発版であるGCC8を試してみましょう。FreeBSDだとsudo pkg install lang/gcc8-develで簡単に入れられるのですが、他の環境だと

    SEGV探偵が往く - なるせにっき
    mrkn
    mrkn 2017/09/02
    すごく良かった。るびまとか WEB+DB PRESS とかに載って拡散されて欲しい。
  • MS ゴシックの文字幅 - なるせにっき

    こんな場末の日記をわざわざ見に来る方は UAX #11: East Asian Width なんかは当たり前に読み込んでいると思うんですが、読み込んだ人はきっと気づくと思うんです、このドキュメントはあてにならないことに。じゃあどうすればいいかってなるんですが、端的には融通の効かない奴に合わせるわけですな。それはアプリ側のこともフォント側のこともあるんですが、今回はフォント側の事を考えることにします。フォント側のことを考えるってことは、要するにフォントは不動と考えるってことで、そういうフォントって要するにMS ゴシックのことなので、これを測ることにするわけです。 さて、どうやって測るかというと、実際に描画して測るわけです。TextRenderer.MeasureTextとかでも行けそうに思えるんだけど、グリフがない場合に fallback しちゃうんでうまくいかない。 using Syste

    MS ゴシックの文字幅 - なるせにっき
  • 円記号問題とウェブブラウザ - はてなるせだいあり

    起源 円記号問題の始まりは1960年代にまで遡ります。1967 年に文字コード最初の国際規格である ISO R 646 が制定されましたが、その規格では 0x5C をはじめとして一部の文字が置き換え可能になっていました。アメリカの制定した ASCII では 0x5C に対して REVERSE SOLIDUS を割り当てました。一方、日版である JIS X 0201 では YEN SIGN を割り当てました。 問題の拡大 7bit では扱いきれない文字を扱うため、世界で ISO 646 系のコードを拡張した文字コードが生まれました。日ではシフトJIS、日語 EUC、いわゆる JIS コードの三種類の文字コードが現れ、それぞれに多くの亜種が生まれました。では、それぞれの文字コードの 7bit 領域は ASCII と JIS X 0201 のどちらだったのでしょうか。 日語 EUC 日

    円記号問題とウェブブラウザ - はてなるせだいあり
  • 「プログラマのための文字コード技術入門」書評 - はてなるせだいあり

    珍しく書評です。まだ書きかけなんですが、完成を待つと忘れそうなのでとりあえず。 断片的に見た感じとして、現在ある文字コードでは最高峰なんじゃないでしょうか。人に勧める文字コードとしては*1、長らく文字コード超研究がベストだったと思うのですが、今後はこれでしょう。 Ruby 1.8/1.9 ざっと見た限りでは誤りを見つけられませんでした。と、いうわけでこれはよい記述だと思います。 UCS-2 下記で引用を交えつつ紹介していますが、UCS-2は「文字集合」ではなく「文字符号化方式」でしょう。ISOの文書自身でもUCS-2を文字集合であるかのように扱っている記述があるのがアレなんですが、定義を見ればISO/IEC 10646を見てもUnicodeを見ても文字符号化方式だと解釈するのが妥当です。 http://d.hatena.ne.jp/nurse/20090325 http://d.hat

    「プログラマのための文字コード技術入門」書評 - はてなるせだいあり
  • Ruby 1.9 で絵文字変換 - なるせにっき

    浅草 jpmobile 会議 なる場で、Ruby 1.9 で絵文字変換したいときはどうすることになるのか説明せよというので、資料として書く。 利用者側がどう使うかは Ruby M17N の設計と実装 や るりま の String#encode や Encoding、Encoding::Converter クラスあたりを見てください。 で、実装の話です。 Encoding を司るのは encoding.c 各Encoding の体は enc/*.c 変換器を司るのは transcode.c 各変換器の体は enc/trans/*.trans 各変換テーブルは enc/trans/*-tbl.rb つまり、 各ケータイ文字コードに対応する encoding のファイルを作る (実は CP932 や UTF-8 のレプリカで良い (ENC_REPLICATE)) それぞれの encoding

    Ruby 1.9 で絵文字変換 - なるせにっき
  • 1