タグ

ブックマーク / keens.github.io (13)

  • その正規表現エンジン、インタプリタで満足してる?! | κeenのHappy Hacκing Blog

    # その正規表現エンジン、<br /><span class="narrow"><span>イ</span><span>ン</span><span>タ</span><span>プ</span><span>リ</span><span>タ</span></span>で<ruby>満足<rp>(</rp><rt>サティスファイ</rt><rp>)</rp></ruby>してる?! ---------------------- [Regex Festa - connpass](https://opt.connpass.com/event/140566/) === # About Me --------- ![κeenのアイコン](/images/kappa.png) * κeen * [@blackenedgold](https://twitter.com/blackenedgold) * Git

    sh19910711
    sh19910711 2022/10/29
    2019 / "Q: インタプリタからコンパイラって作れないの > A: 実際にできるかは知らないけどそれっぽい原理ならあるよ / 多段階計算: マクロと違って式から式への変換しかできない"
  • 構文解析にまつわる小話たち | κeenのHappy Hacκing Blog

    # 構文解析にまつわる小話たち ---------------------- [#peg_study](https://twitter.com/search?q=%23peg_study&src=typd&vertical=default&f=tweets) === # About Me --------- ![κeenのアイコン](/images/icon.png) + κeen + [@blackenedgold](https://twitter.com/blackenedgold) + Github: [KeenS](https://github.com/KeenS) + サイバエージェントの新卒エンジニア + Lisp, ML, Shell Scriptあたりを書きます === # ウォームアップ === # 構文解析はバッドノウハウ -----------------------

    sh19910711
    sh19910711 2021/12/08
    "プログラム言語を使っているなら既にパーサはある + 目の前のパーサを使え + そうでなくても内部DSLを考えろ + 内部DSLで解決出来ないときだけ構文解析 / 最初にASTを考える。そして文法を考える"
  • 論文メモ: Mison: A Fast JSON Parser for Data Analytics | κeenのHappy Hacκing Blog

    L. Yinan, N. R. Katsipoulakis, B. Chandramouli, J. Goldstein, D. Kossmann. “Mison: A Fast JSON Parser for Data Analytics,” Proceedings of the VLDB Endowment, Volume 10 Issue 10, June 2017, p1118-1129. を読んだメモ。 当にただのメモなので内容を知りたければ論文を読むように。 Apache Spark や Apache Drill などいわゆるビッグデータを処理するソフトウェアでJSONをパースするのに無視できないコストが掛かる。 特に、JSONにクエリを投げるのに一旦パースしてからクエリを処理するのにはかなり無駄が多い。Parquetなどのフォーマットもあるが、MisonはJSONのまま処理

    論文メモ: Mison: A Fast JSON Parser for Data Analytics | κeenのHappy Hacκing Blog
    sh19910711
    sh19910711 2021/03/06
    "JSONの構造に興味があるので着目するのは {, }, : など。: を見つければ直前がキーだし、 { や } を見つければネスト関係が分かる。 なので : の位置をビットマップで保持すると簡単にキーが見つかる"
  • お薦めのコンパイラの本とか | κeenのHappy Hacκing Blog

    κeenです。たまにお薦めコンパイラの教えてなどのやりとりをTwitterで見かけるのでまとめておきます。 私の主観が入っているので他の方の意見も参考にして下さい。 普通の入門書三書 よく挙げられるのは通称「ドラゴンブック」、「タイガーブック」、「中田先生の最適化なんちゃらの」です。 このうちのどれかを読むと良いでしょう。 こういう教科書系のによくあることですが、だけでなく挙げられている参考文献の情報も重要なので読み終わっても売らないで棚に残しておくことをお薦めします。 コンパイラ[第2版]~ 原理・技法・ツール ~ いわゆるドラゴンブックです。結構古くからあるです。前半が構文解析の理論で、後半でコンパイラ関連の技法などが載っています。 割と技法の紹介が多く、幅は広いですがそれぞれの説明に割かれた紙面は小さいです。 章分けが雑なので目次だけで内容を判断せず、手にとって確かめたほ

    お薦めのコンパイラの本とか | κeenのHappy Hacκing Blog
  • async/awaitと合成可能性 | κeenのHappy Hacκing Blog

    κeenです。async/awaitって実装の都合と利便性の良い所取ってるよなーと常々思ってるのを言語化してインターネットに放流します。 何度か似たようなことを言ってるのですがスライドであることが多くてあまり情報量を詰め込めなかったのでブログにまとめます。 非同期処理と継続 非同期処理は時間のかかる処理を待ち合わせずに別の処理をし、時間のかかる処理が終わってから元の処理を継続する仕組みです。 let url = "http://example.com" let html = fetch url (* この結果を待たずに別の計算をする *) (* fetch urlが終わったあとでここに戻ってきて後続の処理をする *) print html 「継続」や「後続」などのキーワードが出てきているとおり、継続の影がチラチラ見えます。 継続とはいってもスレッドのようなタスク単位で分割したいのでフルの継

    async/awaitと合成可能性 | κeenのHappy Hacκing Blog
  • 私がコードを書くときテストは書かない | κeenのHappy Hacκing Blog

    ちょっとポエムというか自分語りを。会社の同期と話してて少し刺激されたので。あとはソースコードって実際のところどういうふうに書いていますか?|Rui Ueyama|noteにも刺激されて。 発端は同期が最近は何か書いてもイケてなくて後で丸っと書き直すことが多くてつらい、という話を始めたこと。 自分は、そんなの普通だろと返した。少なくとも自分の中では当たり前だった。 ふと考えてみたらそうじゃない人も沢山いる気がした。当たり前じゃない人に、自分の当たり前を喋ってみたら面白そうということで自分がコードを書くときにやることを語る。 コードを書き始めた時点では仕様は完全には固まっていない。アプリケーションの構成とかは決まってるけど、ソフトウェアの中身はほとんど何も決まっていない。 まずは手を着けやすそうな所から始める。最初は必ずHello Worldから。そしてmainの中にPoCを書いてイメージを掴

    私がコードを書くときテストは書かない | κeenのHappy Hacκing Blog
    sh19910711
    sh19910711 2020/08/16
    “人間先を読むには想像力が足りなすぎる。目の前に現物がないと気付けないことが多い。だから先に実装する / 一度目でアタリを付ける。二度目で実線を書く。作って、壊して、また作る”
  • 最小限のELF | κeenのHappy Hacκing Blog

    κeenです。 先日の記事で言及した最小限のELFが需要ありそうだったので解説してみます。 コンパイラを作るときの参考にしてみて下さい ELFはExecutable and Linkable Formatを表わし、Linuxなどで標準の実行可能ファイルのフォーマットとなっています。 なんらかの形でこのファイルを生成するのがコンパイラの最終目標となります。 一般にはアセンブラまで吐いて外部のアセンブラやリンカにELFファイルの生成を任せることが多いのですが、自作するなら最後までやりたいという人向けにとっかかりになる最小限のELFファイルを解説します。 まずはこのファイルを生成するのを目指して、後から色々追加していけばインクリメンタルにできるよね、という訳です。 一部、「どうしてかは分からないけどこうしたら動く」みたいな箇所もあるので詳しい人がいたら教えて下さい。 全体構成 プログラムそのもの

    最小限のELF | κeenのHappy Hacκing Blog
  • 独学のプログラミング | κeenのHappy Hacκing Blog

    誰向けなのか分からない。多分5年後くらの初心を忘れた自分が読めば良いと思う。あるいは、独学でプログラミングを始めようとしてる人が参考にするのかもしれない。 私はプログラミングを独学で学んだ。 初めて触ったのは中学生のとき、ネットゲームのギルドのホームページを作ろうとなってHTMLCSSJavaScriptという存在を知った。イヌでもわかるJavaScript講座を見てメモ帳で書いた20行くらいのスクリプトが当時の最高傑作だった。 それから名前の訊いたことのあったC言語を学ぼうとしたが、Vijuaru Stajioのインストールが出来なくて挫折した。CとC++とC#の違いも分ってなかった。 その後、ネットゲームもしなくなり高校の間は全くプログラミングに触れずに大学に入った。 1年夏学期の情報の授業でシェルを知った。最初は慣れなかったが次第に使えるようになって、家でもコマンドプロンプトを使

    独学のプログラミング | κeenのHappy Hacκing Blog
    sh19910711
    sh19910711 2020/03/06
    "就活でプログラミング課題が出たときにJavaを書きたくなくてLispを実装してLispで解いた。初めてのLisp処理系だった"
  • 分散VCSのモデル、あるいはPijulについて | κeenのHappy Hacκing Blog

    先日、Pijulという分散VCSについて知って、それについて調べてみたら少し面白かったのでメモ。 DVCSで一番有名なのは間違いなくGitだろう。あれは分散グラフ理論木モデルに基いているらしい。ベースになったモデルがあることに驚いたが、調べても出てこなかった。 Gitは高速で信頼性が高い一方、コミット同士をチェーンのように繋げてしまうので柔軟性を欠き、例えばCherry Pickなんかがやりづらい。 あるいはリモートのmasterを取り込まずにローカルのmasterにコミットすると互いに独立した変更であっても一旦remote masterをマージしないとプッシュ出来ず、コミットグラフが汚れてしまう。 また、CUIが直感的でなく、理解しづらいという声もある。それはこういう皮肉にも現れている まあ、言われてみれば私もこのスライドを見てようやく理解した。 他のVCSにも色々特色はあって、歴史は神

    分散VCSのモデル、あるいはPijulについて | κeenのHappy Hacκing Blog
  • イマドキと言われる言語機能について | κeenのHappy Hacκing Blog

    # イマドキと言われる言語機能について ---------------------- [第60回プログラミングシンポジウム](http://www.ipsj.or.jp/prosym/60/60program.html) === # About Me --------- ![κeenのアイコン](/images/kappa.png) * κeen * [@blackenedgold](https://twitter.com/blackenedgold) * Github: [KeenS](https://github.com/KeenS) * [Idein Inc.](https://idein.jp/)のエンジニア + 情報科学の教育は受けていない純粋なエンジニア * 実際に仕事で使った(ている)のはJava, Scala, Rust === # 最近っぽい言語 ------------

  • Apache Drillの不自然な挙動 | κeenのHappy Hacκing Blog

    sh19910711
    sh19910711 2017/11/09
    “シェルで手持ち無沙汰にlsやpwdを打つようにSQLプロンプトでSELECT 1;を打つ訳ですが、Apache Drillはこれを受け付けてくれません。”
  • rust初心者へのガイド | κeenのHappy Hacκing Blog

    シルバーウィークの進捗が芳しくなかったので雑な記事書いてお茶を濁しとく。rustをそれなりに(といっても1000行くらい)書いて溜まった知見をとりあえず出す。rust1.3時点。 最初の方で熱く語ってるが多くの人にとって欲しい情報は下の方にあると思う。 どんな言語 公式から持ってくるとこんな感じ。 zero-cost abstractions C++くらいの性能と思えばいい。 move semantics 他にはない難しい概念。しかしこれのおかげで様々な機能を教授出来る。 guaranteed memory safety move semanticsにより安全でない操作はコンパイル時に弾ける。 threads without data races move semanticsその他により安全でない操作は(ry trait-based generics 継承ベースとは違って開いている。型を定

    rust初心者へのガイド | κeenのHappy Hacκing Blog
  • Rustのパッケージをcrates.ioに登録する | κeenのHappy Hacκing Blog

    κeenです。技術の話題を書くのは久し振りですね。今日初めてRustのパッケージのセントラルレポジトリ、crates.ioにパッケージを登録したのでその流れを共有します。 登録したいパッケージを用意する file_loggeを作りました。 しばらく前に(Advent Calendar向けに)それっぽく動くところまで作って放置してたやつですね。これを整形していきます。 (任意)ドキュメントを生成する Rustには素晴しき cargo doc があります。 $ cargo doc --no-deps でドキュメントを生成しましょう。ドキュメントを書いてないならこちらを見ながら書きましょう(すいません、私の奴は全然書いてないです…)。 target/doc 以下に生成されたドキュメントがあるので適当に gh-pages ブランチに放り込みましょう。 尚、--no-deps オプションがないと依存

    Rustのパッケージをcrates.ioに登録する | κeenのHappy Hacκing Blog
  • 1