タグ

ブックマーク / shinh.hatenablog.com (15)

  • 2012-12-10 ■ Hello golf in Malbolge - 兼雑記

    Esolang Advent Calendar 2012 用のエントリです。 Esolang 的な自己紹介としては、今年は ICFP のコンテストのために巨大な befunge プログラムを書きました。 Malbolge 概要 ご存じの人が多いかと思いますが、 Malbolge という超難解言語があります。この言語の難解さは brainfuck などがかわいく見える、というか、私の感覚では ruby と brainfuck くらいの差が brainfuck と malbolge の間には存在しています。いや、もっと広いかもしれず。 Malbolge について一言で紹介すると、「抜群のバランス感覚で適当に設計された神クソゲー」という感じ。ざっくりとした説明としては、 A,C,D の3進10ケタ(つまり0-59048の値を持てる)レジスタと、 59049 個の 0-59048 の値が持てるメモ

    2012-12-10 ■ Hello golf in Malbolge - 兼雑記
  • PEP 703 - 兼雑記

    https://peps.python.org/pep-0703/ Python の GIL 外す話。これすごく楽しい読みものでした。参照カウントのところが一番人気だと思うのですが、他のところも色々良い。こういう、「んーこういうことするとこういう問題が起きない?」と思ったら次の章くらいでそれが説明される、みたいな読みものは大変好きです 参照カウント: オブジェクトっていうのは作ったスレッドが解放するというのがほとんどなんだから、その場合はロックをいらなくする、他に渡ったら普通の参照カウントぽくする、という話。 Swift に 2018 年に導入された 話らしい。他のスレッドに渡された後で DECREF すると他スレッド用の参照カウントが負になりうるのだけど、その時に queue に入れるということをして、ややこしいので、なんかこれ無しですむ方法はないのかなぁ……と Immortalize

    PEP 703 - 兼雑記
  • ELVM Compiler Infrastructure について - 兼雑記

    はじめに 言語実装 Advent Calendar 2016 用です。 ELVMは、コンパイラをフロントエンドと中間言語とバックエンドにわけて、多言語多CPUに対応しよう……というようなLLVMの考え方を、パロディと言っていいレベルにまで単純化したものです。結果として実用性は全くないが、C言語から他言語へのトランスレータを極めて簡単に書け、 Brainfuck などのような難しい言語のコードもC言語を書くだけで生成できる、というようなことを主目的としています。 当は ELVM のバックエンドを一つ足して、 Brainfuck とかのような難しいターゲットでなければ、こういう感じで手軽に足せますよーということを書こうかと思っていました。しかし、ありがたいことにそういう趣旨だったり、あるいはもっと難しいターゲットについても、既にあれこれと書いていただいたのでした。例えば Perl: http

    ELVM Compiler Infrastructure について - 兼雑記
    yhara
    yhara 2016/12/22
    「Cコンパイラを実装しました」がバズワード化するという、間違いなくEsolang史(?)に残る一件
  • bflisp.bf - 兼雑記

    https://github.com/shinh/bflisp Lisp インタプリタを作りました。 Brainfuck で。 だいたい sedlisp や beflisp や makelisp と似たようなことができます。ちょっとバグあるみたいですが。 Malbolge は実装不能だと思うので、これ以上なくキツいターゲットじゃないかと思っています、ので Lisp シリーズはこれで最後でないかと。というか現世的な速度で動くとは思ってなかった。月なみですが、今のパソコン速いですねー。 実現は簡単な 16bit ハーバードアーキの CPU を定義して、魔改造した 8cc で lisp.c をその CPU のアセンブリにコンパイル、そのアセンブリなどから Brainfuck を生成、という感じになってます。実行は最適化機能つきの 8bit Brainfuck インプリタでやってます。ある程度最適

    bflisp.bf - 兼雑記
    yhara
    yhara 2016/02/29
    “8cc にしたのは Brainfuck 上で C コンパイラ自体を動かすという夢があるからです”
  • Glen 2009-08-12 - 兼雑記

    Linux Chrome にちょっとおもしろいバグがあったので書いてみます。ある日、 Linux Chrome の閉じるボタンが (Glenさんという) 人の顔になるという change がコミットされました。何が起きてるかは以下のスクリーンショットが大変わかりやすいです。 http://www.flickr.com/photos/yanbe/3792080316/ それに対してみなさんがバグを登録。みんなヘンなオッサンとか魅力的な女性の方が良かったとか言いたい放題です。 http://code.google.com/p/chromium/issues/detail?id=18385 http://code.google.com/p/chromium/issues/detail?id=18397 http://code.google.com/p/chromium/issues/detail

    Glen 2009-08-12 - 兼雑記
    yhara
    yhara 2009/08/12
    IEがしいたけなら、ChromeはGlen
  • 更新履歴兼雑記 - dumper-0.1.0

    http://shinh.skr.jp/binary/dumper.tgz C で使える Kernel#p 作りました。マジメにやってみると結構面倒だったです。 http://d.hatena.ne.jp/shinichiro_h/20051207#1133881740 の続きです。 libdwarf が必要なので、なんとなく適当な rpm パッケージも作りました。 Debian はパッケージがあるみたいですね。 http://shinh.skr.jp/binary/libdwarf.spec http://shinh.skr.jp/binary/libdwarf-20051201-1.i386.rpm typedef struct TestDump_ { short s; int i; long l; size_t st; unsigned long long ll; char c; c

    更新履歴兼雑記 - dumper-0.1.0
    yhara
    yhara 2009/05/12
    "C で使える Kernel#p"
  • buzziness - 兼雑記

    ビジネス用語は難しいです。例えば適当に拾ってきた下記記事。 http://it.impressbm.co.jp/e/2008/11/15/245 ITホールディングスグループのTISとEDI(電子データ交換)ソフトウェアでのトップシェアを誇るDAL(データ・アプリケーション)は11月14日、女性下着などを中心としたアパレルメーカー大手ワコールの「流通BMS」に対応したEDIシステムの通信環境をDALのACMSで構築したと発表した。 一体どれが固有名詞でどれが一般名詞なのやらわかりません。正直わかる単語は女性下着くらいです。ちょっと下の方まで読んでみると、例えば ACMS は Advanced Communication Management System の略らしいです。依然としてよくわかりません。 このままでは昨今の大不況を乗り越えられない気がするので、ビジネス用語を次々と表示してくれる

    buzziness - 兼雑記
    yhara
    yhara 2009/01/25
    戦闘力つけて戦い合わせたい。
  • Quine いろいろ - 兼雑記(2008-11-02)

    Quine の難しい点はたぶん、 自分自身を出力しようとして永久に書き終わらないよギャース クォート文字列中にクォート文字を入れられないよギャース という2点じゃないかなぁと思います。前者は変数を使えば簡単です。後者はクォート文字をエンコードできるようにしてやる、っていうのがまぁ基的な考えかたではないかと思いますが、これは色々方法があります。一般的な作り方としては以下とかがすごくわかりやすかったです。 http://d.hatena.ne.jp/KeisukeNakano/20070814/1187070401 format 系 多くの言語で手軽に書ける…と思う。 %s で自分自身を出力できる && クォート文字列は %c で、っていうのが基的な発想。 Ruby だと、 printf a="printf a=%c%s%c,34,a,34",34,a,34 とかが基形。いくつか短くする

    Quine いろいろ - 兼雑記(2008-11-02)
  • fizzbuzz.gif こたえ - 2008-10-12 - 兼雑記

    http://b.hatena.ne.jp/entry/http://d.hatena.ne.jp/shinichiro_h/20081011%231223722332 http://d.hatena.ne.jp/shinichiro_h/comment?date=20081011#c やった解答してくださる方がいた! それはともかく答えは "Fizz Buzz" と書かれた GIF (末尾に 3B ゴミがついているという意味で少し不正) Ruby (1.8) で書かれた Fizz Buzz Perl で書かれた Fizz Buzz ゴルフ場の z80 で書かれた Fizz Buzz x86 & MS-DOS の COM で書かれた Fizz Buzz x86 & PC/AT互換機の MBR に書くと Fizz Buzz が走る起動イメージ (だから 512B) でした。最後のは qemu

    fizzbuzz.gif こたえ - 2008-10-12 - 兼雑記
    yhara
    yhara 2008/10/12
  • binspect - 兼雑記

    http://shinh.skr.jp/dat_dir/binspect.tgz ずっと放置するよりは…と思って出すことに。JVM Golf をやった時に作った、汎用バイナリフォーマット解析コマンド&ライブラリ、を作りたかったものです。 binareal 見て 1 年後にちょっと作ってみたものを 2 年してから出すというようなそういう。 % ./binspect.rb hello.gif hello.pなどとすると Ruby の pp で GIF をダンプしたものが出力されます。 [[:fileHdr, [[[:signature, "GIF"], [:version, "89a"]]]], [:logicalScreenDescriptor, [[[:width, 35], [:height, 100], [:packed, 128], [:bgcolor, 1], [:aspect_r

    binspect - 兼雑記
    yhara
    yhara 2008/09/28
    Rubyからバイナリを扱うライブラリ。
  • 2008-05-25 - 兼雑記 - Yajit

    ふと思い立って YARV からの JIT コンパイラを Xbyak で書き始めてみました。 x86 と x86_64 を両方サポートするつもりだったけど、とりあえず適当にやりすぎて x86_64 に依存しまくってしまったのでとりあえず現状そっちだけ。今度 x86 対応はちゃんとやる。あと WindowsMacOSX もたぶんまだだめ(調べられる環境すらない)。 http://shinh.skr.jp/tmp/yajit.tgz YA なのはなんか他にやってた人いるみたいだし、私の記憶が確かなら YARV にも昔そういう最適化フラグあったような。実装されてたかは知らんけど。 とりあえず動くコードもあれば動かんコードも…って感じです。速いかというと…遅い気がする。とりあえずブロック呼び出しごとに mprotect してるとかがあまりに問題外すぎる気がする。とりあえずこんなとても恣意的なベ

    2008-05-25 - 兼雑記 - Yajit
    yhara
    yhara 2008/05/26
    なんかわからんけどすごげw
  • Gauche night - 兼雑記

    Gauche 歴とかを考えると全くもって部外者と言って問題ないけどつい魔が差して参加させてもらった。いろいろ面白かった。 10秒でわかる Gauche と僕 http://shinh.skr.jp/geister/geister.scm 総計150行とかあまりにひどい…とさくらの中漁ったら出てきた! http://shinh.skr.jp/testsprite/testsprite.scm 全く記憶にないんですが、しかしでも自分で書いたらしい。 http://shinh.skr.jp/m/?date=20060527#p03 しかし依然として総計250行。 まぁそれはいいんですが、 Scheme という言語のファンはどうやらミニマルで美しいものの上に積み上げられたものがちゃんと実用になる、というようなあたりに魅かれてるのかな、と理解しました。 でそういうノリの言語で知っているものとして I

    Gauche night - 兼雑記
  • 2008-01-03 - SSL - 兼雑記

    ずっとある程度まとめて勉強したことが無かった、 SSL について軽く調べてみた。あんま深く調べてないので真に受けんで下さい。

    2008-01-03 - SSL - 兼雑記
    yhara
    yhara 2008/01/04
  • 行動記録 - 兼雑記

    自身の行動記録を取るという計画は何度か考えて適当に挫折とか色々してるわけですが、どう使うかとか、どういう情報が残ると嬉しいか、などは特に考えず、とりあえずなんでもかんでもログを残してみて、それから何ができるかを考えるのが大事なんじゃないかなぁと思ってそういうシステムを自分用に作ることにしました。 def self.report(type, cont, from) # ... end Ruby で上記みたいに、ログの種類(type)、内容(cont)、どのマシンか(from)という3つの情報を渡す関数を作って、それの CUI コマンド版とかサーバクライアントだとかを作りました。 例えば self.report('test', 'hoge', 'machine') とかだと、 db/test/2008/0102 というファイルに、 17:49:32 machine hoge とかいう記録が残り

    行動記録 - 兼雑記
    yhara
    yhara 2008/01/02
    超おもしろそう
  • ■ - 兼雑記

    ゴルフタグ作ろうじゃないか。

    ■ - 兼雑記
  • 1