最近ローソンでお菓子をたくさん買った田中です。 近頃読んで面白かった論文を紹介したいと思います。 A Play on Regular Expression 今年のICFPでFunctional Pearlとして発表されたものです。ICFP(International Conference on Functional Programming)というのは、関数プログラミングに関する国際学会で、Functional Pearlというのは、エレガントでためになる、関数プログラミングのテクニック集です。 この論文ではまず、正規表現マッチャを関数型言語(Haskell)でいかにエレガントに記述できるかが示されます。それから、エレガントさを保ったままの線形時間実装へ改良し、その実装がC++によるプロフェッショナルな実装(具体的にはGoogle re2)に匹敵するパフォーマンスを示すことが示されます。さら
A Play on Regular Expressions 最後まで読みました. 対話的に書かれていて読みやすかったのと, ソースコードがほとんどそのまんま動いたため楽しかったです. 正直言って, 正規表現のエンジン書いたのは初めてでした. この論文の素晴らしい所は, そんなぼくでも, ACT1を読むだけで, 取り敢えずなんか動くエンジンが作れてしまうことですね. ただ, 指数関数的にメモリーを食うからがんばろうって言ってACT2に続くわけですが... ACT2からもすごく良かった. Semiringを使って正規表現の返す値を一般化する方法は, とても美しく, 気持よかったです. そして, 最終章のLazinessにきた時, 興奮が収まりませんでした. 少しコード貼っておきます. 最初に出てくる, 正規表現を表すデータ型はこんな感じです. data Reg = Eps | Sym Char
ドメインとは、「CIO.go.jp」のように、インターネット上の住所のようなものです。 「.go.jp」で終わるサイトは、政府機関が保有するサイトですが、それ以外にも政府機関では様々なドメインを運用しています。 このページでは、政府機関の持つ公開しているドメインおよび各ドメインの代表的なサイト一覧を提供しています。 また、各ドメインを関係する産業や分野別に分類した資料もあわせて提供しています。 » 政府機関が公開するドメイン一覧(ホワイトリスト) (平成31年4月1日時点) » 政府機関が公開するドメイン一覧(業務分類別)(平成31年4月1日時点) ※ブラウザでファイルを直接開けない場合には、名前を付けて保存したうえで、開いてください。
「英語じゃないのよ、映画よ。最初からそれしかない。映画が好きだから英語を勉強したわけで、英語そのものが好きな人間ではないのです。ボーナスで英語を勉強したっていうだけ。映画がすべての始まりでした」 映画字幕翻訳者の戸田奈津子さん(80)の名前を、洋画のエンドロールで一度は見たことがあるのではないだろうか。 『E.T.』『タイタニック』『ジュラシック・ワールド』など、これまで1500本超える作品の翻訳を手掛けてきた戸田さん。 字幕翻訳の夢が叶うまで20年も掛かったにもかかわらず、あきらめなかったのはなぜか。誤訳批判について思うこととは。BuzzFeed Newsは40年間、字幕翻訳の第一線で活躍している戸田奈津子さんに話を聞いた。 「ただの映画ファン。ミーハーよ、しかも」意外なことに、戸田さんは大学を出る直前まで「字幕のことなんか考えたことはない」と話す。 「ただの映画ファン。ミーハーよ、しか
ロンドン(CNNMoney) 北欧フィンランドで今月から2000人を対象に保証収入を支給する制度を試験的に導入する試みが始まった。 今月から始まったプログラムは、ユニバーサル・ベーシックインカム(UBI)の実効性をテストする最初の取り組みの1つだ。対象者には収入や資産、雇用状況にかかわらず、毎月一律560ユーロ(約6万8000円)が支給される。 この制度は、技術の進歩とともに人間による労働の必要性が低下する中、UBIが労働者により大きな保障を提供するというものだ。この制度では失業者が給付を受けながらパート労働を行うことも可能になる。 この最初のプログラムは、2年間の期間限定で実施される。対象者はランダムに選ばれるが、失業手当か所得補給金を受給していたことが条件だ。また、このプログラムを通じて支給される保証収入は非課税となる。 このプログラムがうまく行けば、フィンランド人の成人全員に対象が拡
プログラミング言語C/C++における、1文字の数字から1桁の整数値へ変換するイディオム ch - '0' について。 C/C++言語仕様では、数字の文字コード'0'〜'9'がその並び順で連続かつ隣接すると保証する。このため変換元文字chから数字0の文字コード'0'を減算する下記処理は、処理系やソースコードの文字集合によらず正常動作する。*1 int ch = /*...*/; assert(isdigit(ch)); // chは任意の数字 int n = ch - '0'; // 数字から数値へ変換 C99 5.2.1/p3より一部引用(下線部は強調)。 3 Both the basic source and basic execution character sets shall have the following members: (snip) the 10 decimal dig
スキャナで書籍を自炊すると、閉じ方向やページレイアウトに不満が残ります。 それを修正する方法を備忘録として紹介します。 TL;DR スキャナで書籍を自炊したPDFを加工するには、 今のところ以下の方法が良いとの結論に達しています。 PDFtk で栞(しおり)を挿入する Perl + PDF::API2 で右綴じ&見開きを設定する 背景 少し前に入手した ScanSnap iX500 でのスキャンにも慣れてきて、 幾つか漫画もスキャンしたのですが2つほど大きな不満がありました。 1つは栞が設定できないことで、 特定のエピーソードを読むのに先頭から順にページ送りするのは、 なんともダルい作業です。 もう1つは見開きのためのページレイアウト。 一般に漫画は右綴じなのですが、 iX500 に付属のソフトは左綴じしか出力できません。 作者渾身の見開きページがまったく再現できずに残念なことになってしま
パリティビット (英: parity bit) は、コンピュータと通信において、与えられた二進数に対して全体の偶奇性を保つために与えられる一桁の二進数(つまり 0 か 1)である。パリティビットは最も単純な誤り検出符号である。 パリティ機構を使用するにあたっては、奇数(odd)か偶数(even)かを指定しなければならない。パリティ(奇偶性)がevenであるというのは、与えられた二進数の中に 1 が偶数個存在することを意味し、そうでなければoddである。多くの場合oddパリティが用いられる。even パリティは巡回冗長検査 (CRC) の特殊ケースであり、1ビット CRCは x+1 という多項式から生成される。 パリティビットを用いた誤り検出を「パリティチェック」と呼ぶ。 パリティビットも含めて奇数個のビットが転送中に変化した場合、パリティビットは正しくないことになり、転送中に誤りが発生した
作成日:2004.05.04 修正日:2012.09.01 このページは 2003年の9/11、9/28 の日記をまとめて作成。 はじめに PowerPC 系や Alpha などには population count と呼ばれるレジスタ中の立っているビット数を数える命令が実装されている。 集合演算を行うライブラリを実装したい場合などに重宝しそうな命令である。 職場でこの population count 命令について話をしているうちにビットカウント操作をハードウェアで実装するのは得なのか?という点が議論になった。 CPU の設計をできるだけシンプルにするためには、複雑で使用頻度の低い命令は極力減らした方がよい。 例えば SPARC は命令セット中にビットカウント演算があるが、CPU 内には実装しないという方針をとっている(population 命令を実行すると不正命令例外が発生し、それを
デジタル回路入門:3 of 3 デジタル回路入門3回目となる今回は、「順序回路」とその動作の要となるフリップフロップについて解説します。 前回学んだ「組み合わせ回路」は、現在、どのような信号が入力されているかにより、出力が1つに決まる回路でした。 言い換えると、過去の入力に現在の出力が左右されない回路、過去の入力状態を現在の出力に反映することができない回路とも言えるでしょう。 今回解説する「順序回路」は、「組み合わせ回路」ではできない、現在の入力に加えて、過去の入力により出力を決定する論理回路です。 「順序回路」が、過去の入力を現在の出力に反映させるために必要とするものは何でしょう。それは、私たち人間が、過去に基づいて行動するために要するもの・・・記憶です。この記憶の機能を実現するものをフリップフロップと呼びます。 フリップフロップは、構造と機能によってRS型、JK型、D型、T型といった種
あけましておめでとうございます。 新年早々ですが、先生、みなさんに言いたいことがあります。 pythonコードで、if __name__ == '__main__'の下にコードをダラダラと書く人、挙手しなさい。 こんな感じに、if __name__ == '__main__'の下にコードを書く人です。 #! usr/bin/python # -*- coding: utf-8 -*- from __future__ import unicode_literals, print_function, absolute_import import sys def say_args(kind, data_list): print("kind:", kind, " data:", data_list) if __name__ == '__main__': args = sys.argv[1:] as
正規表現とオートマトンを取り上げ始めたキッカケは、Catyの型システムに正規表現型(regular expression type)を導入しよう、って話です。配列の項目パターンを正規表現で書きたいということですね。正規表現といえば、そりゃまーオートマトンでしょ。 配列以外の型には、オートマトンを使わない検証方式を使い続けることもできます。ですが、どうせやるなら、どんな型も一律にオートマトンで処理したほうがスッキリするでしょう。そこで、オートマトンを使ってJSONオブジェクト型の妥当性検証をする方法を紹介します。 内容: 準備:JSONオブジェクトのリストっぽい解釈 有向グラフと状態遷移 基本的な型に対応するオートマトン 簡単な例 JSONオブジェクト型に対応するオートマトン 複雑な例 準備:JSONオブジェクトのリストっぽい解釈 オートマトンは、文字列、リスト、ストリームのようなシーケンス
概要 田中哲さん(@tanaka_akr)が以前提案された「非包含オペレータ」というものを(実験的に)鬼雲に実装しました。これを使うと例えば C 言語のコメントにマッチする正規表現などが簡単に書けるようになります。 ここでは、非包含オペレータとは何か、また今後の見通しなどについて説明します。 非包含オペレータとは? 非包含オペレータは田中さんが約 9 年前に発表された、正規表現の拡張です。理論的背景と実装例は以下のスライドと論文に示されています。 正規表現における非包含オペレータの提案 Absent Operator for Regular Expression 従来の正規表現では、「特定の文字以外の 1 文字にマッチする正規表現」は文字クラスの否定を使って [^x] のように書くことができますが、それに対して「特定の文字列を含まない文字列にマッチする正規表現」は簡単に書くことはできません
『るびま』は、Ruby に関する技術記事はもちろんのこと、Rubyist へのインタビューやエッセイ、その他をお届けするウェブ雑誌です。 Rubyist Magazine について 『Rubyist Magazine』、略して『るびま』は、Rubyist の Rubyist による、Rubyist とそうでない人のためのウェブ雑誌です。 最新号 Rubyist Magazine 0063 号 バックナンバー Rubyist Magazine 0063 号 Rubyist Magazine 0062 号 Kaigi on Rails 特集号 RubyKaigi Takeout 2020 特集号 Rubyist Magazine 0061 号 Rubyist Magazine 0060 号 RubyKaigi 2019 直前特集号 Rubyist Magazine 0059 号 Rubyist
今年の4月に、「すごいグラフ処理ライブラリNetworkXの使い方」という記事を書きました。メモ編にもいくつかNetworkX関係のメモが残っています。 https://m-hiyama-memo.hatenablog.jp/search?q=networkX NetworkXとGraphVizの組み合わせは、グラフの操作・解析・描画に便利なんですが、グラフを表現するデータ形式が色々あって頭がこんがらかる時があります。実装に依存しない一般論を一回整理しておいたほうがいいようです。ライブラリ固有のネイティブ形式ではなくて、JSONで表現できるデータ形式の話をします。 例題は次のようなグラフだとします。 頂点(ノード)は、a, b, c, d, e の5つがある。 辺は次の4本: a → b b → c c → a c → d 内容: 単純な有向グラフ dict-of-lists形式 頂点/辺
現代のスーパーコンピューターでは何千年もかかると言われる極めて複雑な計算を、わずか数時間で解くという、夢の超高速コンピューター「量子コンピューター」の実現に向けて、東京大学のグループが世界的に注目されている「量子テレポーテーション」と呼ばれる現象をめぐり、重要な成果を得たことがわかりました。超高速コンピューターの実現に欠かせない、情報の瞬間移動を無制限に繰り返せるようにする新たな技術の開発の成功で、グループではことしから大規模な計算を精度高く行うための研究を本格化させることにしています。 量子とは、物質のもとになる原子や光子などのことで、古澤教授はカリフォルニア工科大学の客員研究員だった1998年に、離れている二つの量子の間で情報を瞬時に伝える量子テレポーテーションと呼ばれる現象を起こすことに世界で初めて成功し、注目を集めました。 この量子テレポーテーションについて、古澤教授のグループが実
はじめに 本記事は、他人の書いたソフトウェアのバグに遭遇したときにどうするかという流れを、実例を基にして、ストーリー仕立てでなるべく具体的に書きました。このようなときの対処に不慣れな人に、実際のデバッグ、バグレポート、および修正案の提出までの流れを掴んでもらうことが目的です。 バグに遭遇 筆者も参加していたLinux Advent Calendar 2016に、ある日シェルスクリプト(Bash)で作るTwitterクライアントという記事が投稿されました。twitter APIの認証に使われているOAuth1.0aとshell芸に興味があったことより、この記事を読んでみることにしました。 そこで紹介されているtweet.shというbash製twitterクライアントを試そうとしたところ、出力は次のようになりました。 いきなり何かがおかしいです。自分のtwitterアカウントに関するJSON形
自前で用意したもの 以下のものについては自前で持っている、他の機器の余ったものを流用する、などを想定しています。 USBキーボード(Raspberry Piセットアップ用) HDMIケーブル(Raspberry Piセットアップ用) HDMI入力が表示できるディスプレイ(Raspberry Piセットアップ用) USB micro-bのケーブルと電源(Raspberry Pi用) MicroSDに読み書きができる&有線LANが使えるPC(Raspberry Pi、TP-Link TL-SG108E、BUFFALO BBR-4MGのセットアップ用) 環境構築 最終的にこういう構成になります。ネットワーク構築に慣れている方だとこの図を見ただけで何をすればいいのかについて察しがつくかもしれませんが、今回はなるべく広くITエンジニアの方を対象としたいので細かい設定方法を「TP-Link TL-SG
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く