トップ 最新 追記

Route 477



2012-10-08

[mac] 白MacBookのバッテリが膨張したけど無償交換はやめたらしいです

2008年に買った白MacBookのバッテリ、前回膨張した際はGenius Barで無償交換してくれたんだけど、 最近また膨張してきて、心斎橋のApple Storeに持ち込んだところ、有償交換になるとのこと。 有償になったという噂は聞いてたので期待はしてなかったけど、13インチの新MacBookはやく出してくれないと本格的にヤバい。 非純正バッテリを買って延命する必要があるかも。

無償交換をやめた理由は聞かなかったけど、「リチウムイオン電池の特性によるものだから」ってことなのかな。 電源ケーブルをつなぎっぱなしで使うことによる過充電(+熱?)が原因なので、そういう使い方を避けるように(という空気感をスタッフさんが出していた)。 残量見ながら外したり繋いだりするのは面倒すぎるなと思ったけど、月イチで外すくらいならまあいいかなぁ。

[web] タブをたくさん開く人におすすめなChrome拡張「Session Buddy」

最近、Session BuddyというChrome拡張を愛用している。 ボタンひとつで「現在開いているウィンドウのURL一覧」を保存できるというもの。

Chromeを使っていて、

  • タブをたくさん開く傾向がある
  • けっこう頻繁にChromeを再起動する
  • そのため、再起動時にいっぺんに多くのサイトにアクセスしに行って重くなるので困っている

という条件に当てはまる人におすすめ。

FirefoxだとBarTabというページの読み込みを遅延する拡張がある。 Session Buddyは方向性が異なるけど、同じ用途に使える。

複数のセッションをマージできたり、セッション内のウィンドウをマージできるなど、「URLリストマネージャ」として細かいところに手が届くのも便利。

[ruby] Net::IMAPでsubjectをデコードする

subjectが日本語の場合、Net::IMAPのenvelopeには、MIMEでエンコードされた文字列が入っている。これは、require 'nkf'で

 NKF.nkf("-mw", envelope.subject)

みたいにしてデコードできると教えてもらった。

場合によっては、以下のように#subjectメソッドを置き換えてしまうのが便利だと思う(これがやりすぎな場合は、#utf8_subjectという名前にするとか)。

class Net::IMAP::Envelope
  alias raw_subject subject
  def subject
    NKF.nkf("-mw", self.raw_subject)
  end
end

2012-10-19

[biwascheme] BiwaScheme, aobenchで32x32の画像出力に成功

4e038473eb292c9bb9d2b3e76b77198e.png やりました!

元のJS版をNode.jsで動かしたのが0.144秒で、scm版をbiwasで動かしたのが559秒(9分台)なので、今のところ4000倍くらい遅いことが分かった。 てかV8があまりに速いので、4000倍遅くても実用的な何かが書けてしまうという感じですかね…。

ソース

一応ソースを上げましたが、足りない関数を手元で追加した分(vector-push!とか)が未リリースなのでまだ僕の手元でしか動きません。

バイナリデータを出力する部分はNode.jsの機能を呼び出してますが、R6RSにbinary portの仕様があるのでそのうち実装したいですね。

(10/30 追記)

js/jsx のaobenchクソ速いなーと思ってソース見たらsubsamplingすっ飛ばしてる。...

[https://twitter.com/Yubeshi/status/261678935300005888より引用]

ということで、JS版が他言語と比べてえらい速いのはパラメータが違っていたようですorz ブラウザでのデモということでそうしてるのかも知れないですね。 BiwaScheme版はJS版の移植なのでそっちの比率には変化はないです。


2012-10-24

[lisp][event] International Lisp Conference 2012 Kyoto に行ってきた

International Lisp Conferenceが京都に来るというので、せっかくなので参加してみました。

普通の「学会」よりも若干カジュアルな感じですが、RubyKaigiみたいなコミュニティベースのカンファレンスともやはり違います。両者の間(の学会側寄り)といった感じでしょうか。

感想ですが、みんな好き好きに好きなことをしてるので、僕も好きなことをしなければという気持ちになりました。 BiwaSchemeをなんのために作っているのか?みたいなことを考えたんですが、「規格に書いてある機能を1つずつ実装していくのが楽しい」ので、 誰にも褒められなくても多分やるのかなぁと思いました。ペンシルパズル類をやるのと同じようなものでしょうか?

以下はメモを貼りつけただけ。これだけでは内容はわからないと思いますが、とにかくLispに関係する多岐にわたる分野の発表があった雰囲気でも伝われば。

あとはTwitter検索 (#ILC2012)が参考になると思います。

On Lisp extensibility, and its impact on DSL implementation|http://international-lisp-conference.org/2012/tutorials.html#sec-1

DSL vs GPL。General Programming Languageかな?

What is the best language for compiler writers

某ゲームのために、LispによるCコンパイラを…(省略されていますが、表示する方法はありません)

Programming AllegroGraph in Lisp

  • dataとsemantics(意味)の両方をもつDB
  • NOKIA: 携帯会社、スリッパのメーカー (違うものに同じ名前)
  • 中銀=中国銀行=Bank of Chine (同じものに複数の名前)
  • Louvre(subject) located_in(predicate) Paris(object)
  • 新しいpredicateを追加するときにスキーマの変更が不要
  • one-to-manyが中間テーブルなしで直接表現できる
  • ...
  • billions of triplesに対してms単位でクエリーが返る
  • 推論ができる
  • tripleは数値のベクタとして保存している #(2 4 5 6)

Fifty Years of a Lisp User

  • Topdown or bottomup? Hardest first
% cal 9 1752
      9月 1752
日 月 火 水 木 金 土
       1  2 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
  • M式で書かれたKSLIPプログラム
  • LISPマシン
  • GCのアニメーション化
  • 紙テープをハードウェアなしで復元するには?
    • スキャンして画像処理
  • GCの可視化のデモ

A Class-based Object-oriented Programming Framework Based on CLOS

  • CLOS/Class-Based (CLOS/CB)
  • CLOS上に実装
  • Javaのように、メソッドがクラスに属しているモデル
  • 単一継承のみ

Scheme to C++ Simple Translator:Scm2Cpp

Generating Probability Random Numbers using Common Lisp

  • simple API && best speed optimization

Lisp: a language of freedom

  • Lisp liberates us from ... Rigid way of thinking
  • TAO on Lisp
  • 3rd TAOは論理プログラミングの要素も備えていた
  • 回文
    • Never odd or even.
    • Was it a car or a cat I saw?
  • 真ん中に「(or 0」を持ってくることで回文Lispプログラムができる
  • tarai
  • lispのためのベンチマーク関数
 t(x,y,z) = if x<=y then y else t(t(x-1,y,z),t(y-1,z,x),t(z-1,x,y))
 O(n^n)
  • ビジービーバー
  • tak(x,y,z): ジョン・マッカーシーのtypoが広まった版 (then yがthen zになっている。計算量はずっと低い)
  • 竹内関数は実数に対しても同様に振る舞う
  • 竹内関数音楽 by Keisuke Ai
    • フルバージョンは4日間かかる
  • カレンダー
  • 任意の天体に対して、「日」「月」「季節」とはどのように定義できるか?
  • 「週」は、「最初の年」は?
  • Lisp motivates and inspires a liberal way of thinking even on worn-out problems

Ralph - A Dylan dialect that compiles to JavaScript

motivation

  • アプリ開発
  • Web技術
  • JSのみサポート
  • なぜJSか
    • desktop/mobile/server dynamic/functional/oop
    • 言語機能に不満(collecitons/conditions/modules/macros)
  • coffee dart typescript

goal

  • performance/features/expressiveness
  • inspired by dylan

dylan

  • Apple / Based on scheme/CL / lisp-1, CLOPS / ALGOL-like syntax / Hygienic rule-based macro

features

  • s-exp / dylan special forms, functions / hygenic procedual macro / module system
  • simplefied collections/condition system/numerical tower
  • interop
    • <object> => Object
    • <array> => Array
  • procedual hygienic macro (inspired by Clojure)
    • 例えば、マクロの中で+をtuka

future work

  • more optimizations / type cheking/inference / multiple dispatch

メモ

Plumber - A Higher-Order Data Flow Visual Programming Language in Lisp

  • DFVPL
  • GUI上で作ったデータフローの図がLispプログラムにコンパイルされるっぽい
  • 「+」は2入力だが、片方を空けておくことで「カリー化された+」を表現する

Xcrypt in Lisp: A Scripting System for Job Level Parallel Programming in Lisp

  • いろんなスパコン用のジョブスクリプトを生成するシステム
  • Lispインターフェイス
  • コールバック(:before, :after, :before_in_job, :after_in_job等)
  • jmapcar: job level map

Revisiting CLOS MOP

  • CLOS: generic func/多重継承/declarative method combination/MOP
    • CLの型が統合されている
    • No data encapsulation

LIL: CLOS reaches higher-order, sheds identity, and has a transformative experience

  • Lisp Interace Library
  • CLのための?データ構造ライブラリ
  • Interface Passing Style?
 (assoc   map key)
 (gethash key map)
  • Polymorphism
 (lookup obj key)  ; objはmap, hash等
  • IPS
 (lookup <interface> obj key)
 例
 (lookup <alist> '((2009 . "BOS") (200 . "RNO")) 2010)
    • <alist>はinterface object
  • pure:insertとstateful:insertは違うインターフェイス(mutability)
  • pure:lookupとstateful:lookupは同じ

Parametric interface

  • <alist>は、厳密には(<alist> <eql>)のように比較関数が必要
(lookup (<alist> <case-insensitive-string>) '((...

このスタイルを使って、いろんなコンテナに対しpolymorphicなメソッドが書ける。

(demethod sum-values ((<i> pure:<map>) map)
  ...
  (nth-value 1 (first-key-value <i> map))
  ...
  (lambda (m) (sum-values <i> m))

複数のinterfaceをとるメソッドも書ける(頻度は多くないが)

 (convert <dest> <orig> object)

定義

 (define-interface <foo> ...)
 (defmethod bar ((<i> <foo>))
   ...)

Managing Complex Structured Data In a Fast Evolving Environment

  • LispでDSLを書いた

Along Hop

  • http://hop.inria.fr/ multi-tier programming language for the Web 2.0 and the so-called diffuse Web
  • Lisp in Small Piecesの著者でもある

歴史

  1. Static HTML
  2. CGI
  3. XHTML (html + css)
  4. サーバ側の複雑化(web MVC)
  5. JavaScript (DOM、クライアントサイドプログラミング)
  6. XMLHttpRequest
  7. クライアントサイドMVC
  • 一部の計算はクライアントで、一部の計算はサーバで行われる
  • 一つのプログラミング言語に融合したい
    • 言語というか、それ自身がWeb app frameworkみたいな感じですね
  • 3-tiers (1DB、1Server、N Client)

Hop

  • Schemeをベースにした言語
  • symmetric (HTMLが1st class、サーバ側でもDOMを触れる)
  • 構文「$」と「~」で、明示的にserver-side/client-sideを指定できる
 (<TD> :onclick ~(alert "1"))
  • Esterel
  • HipHop - embedded Esterel within Hop

Enabling Practical Reconfigurable Computing Through Domain Specific Compilers

BABAR: Wikipedia Knowledge Extraction

講演者が飛行機を逃したため、LT枠に。

  • ルービックキューブ
  • 全部のマスに数字を振る (8x6)
  • ある2つのマスを入れ替えることはできるか、とか
  • cl-permutation

Author Name Disambiguation System for Academic and Research Papers

  • 名寄せ(ある2つの名前が同じ人を指すのかどうか)
  • 400万レコード
  • 機械学習
  • CiNii (サイニィと読むらしい)
  • (質疑) メールアドレスを使うと精度高いのでは
    • 昔の論文にはメアドがないので
  • 日本人の名前は、複数の書き方があり得るか?
    • 漢字なら同じ
    • いや、codepointの制限が…
    • 「普段は簡単な方の渡辺を使ってる」みたいなことありそう

Automatic and Tunable Multi-Level Locality Improvement with a Lisp Garbage Collector

-- 手記はここで途切れている --

本日のツッコミ(全2件) [ツッコミを入れる]

zick [GPLはGeneral Purpose Languageと言っていたと思います。]

yhara [でしたか。ありがとうございます。]