common lispのdefconstantについての注意点
February 09, 2013 at 05:15 PM | categories: common lisp |sbclでdefconstantすると以下のようなエラーがおきたりおきなかったりして不思議に思っていた。
The constant CL-GEARMAN::+REQUEST-MAGIC+ is being redefined (from #(0 82 69 81) to #(0 82 69 81)) [Condition of type DEFCONSTANT-UNEQL] See also: Common Lisp Hyperspec, DEFCONSTANT [:macro] SBCL Manual, Idiosyncrasies [:node] Restarts: 0: [CONTINUE] Go ahead and change the value. 1: [ABORT] Keep the old value. 2: [TRY-RECOMPILING] Recompile protocol and try loading it again 3: [RETRY] Retry loading FASL for #<CL-SOURCE-FILE "cl-gearman" "src" "protocol">. 4: [ACCEPT] Continue, treating loading FASL for #<CL-SOURCE-FILE "cl-gearman" "src" "protocol"> as having been successful. 5: [ABORT] Give up on "cl-gearman" --more-- Backtrace: 0: (SB-C::%DEFCONSTANT ..) 1: (SB-FASL::LOAD-FASL-GROUP ..) 2: ((FLET SB-THREAD::WITH-RECURSIVE-LOCK-THUNK :IN SB-FASL::LOAD-AS-FASL)) 3: ((FLET #:WITHOUT-INTERRUPTS-BODY-88874 :IN SB-THREAD::CALL-WITH-RECURSIVE-LOCK)) 4: (SB-THREAD::CALL-WITH-RECURSIVE-LOCK ..) 5: (SB-FASL::LOAD-AS-FASL ..) 6: ((FLET SB-FASL::LOAD-STREAM :IN LOAD) ..) 7: (LOAD ..) 8: (SB-IMPL::%MAP-FOR-EFFECT-ARITY-1 ..)
先日公開したcl-gearmanでこれが発生していてしまい原因がわからずそのまま放置していたのだけど、以下のforumを発見した。
http://www.lispforum.com/viewtopic.php?f=33&t=4088
It's not a bug (in SBCL). The value in a DEFCONSTANT form is restricted to being something that's EQL to itself each time it's evaluated (that's horrible phrasing, I know), so using a vector is illegal (that is, you can use a vector, but you have to make sure you return the same vector each time -- so you can't use VECTOR or #(...) for the value).
DEFCONSTANTフォームの値はそれが何度評価されてもEQLになるようなものでなければならないらしい。 なので、vectorをDEFCONSTANTでバインドすることは可能だけど、DEFCONSTANTフォームの値の場所にVECTOR や #(...)で記述したフォームを書くことはできない。
CLtL2にもちゃんと書いてあった。
defconstantはdefparameterに似ているが、名前の値が固定されていることを前提としており、コンパイラは、コンパイルされるプログラムでの値について仮定を置くことが許されている。 (...中略...) コンパイラは置き換えたオブジェクトのコピーが定数の実際の値とeqlになるように注意しなければならない。たとえば、コンパイラは数のコピーは自由に作ってもよいが、値がリストであるときは十分に注意しなければならない。
なるほど。
Quicklinks 4
February 06, 2013 at 09:50 PM | categories: quicklinks |前回 から2ヵ月くらいあいてしまいました。古いブックマークはブックマークしたこと自体を忘れてしまうのでもうちょいまめにまとめたいです。
Q-Gears
FF7のゲームエンジンのクローンを目指したものだそうです。 LinuxやWindowsで動くようにクロスプラットフォームな設計になっていて、将来的にはsquareの他のゲームも動かすためのフレームワークとしても提供することも考えているようです。
この資料にはシステムの概要が書かれてます。リバースエンジニアリングして集めた情報と思われますが、読み物としてもおもしろそうです。
Riemann
Clojureで書かれたnetwork event stream processing systemとのこと。
ここのイラストと説明を見れば大体イメージはわくと思います。 コンセプト的にはfluentdに近い気がしますが、集める対象がログではなくイベントそれ自体なので守備範囲はちょっと違うようです。 Riemann自体が落ちたときにどうなるか、とか実際に運用するとなると色々気になるところはありそうですが試してみる価値はありそうです。
設定をClojureで書けるというのもとがってていいと思います。
whistlepig
Cで書かれた軽量なリアルタイム全文検索のためのライブラリです。 複数プロセスでも同時にインデックスを読み書きできるようで、なかなか便利そうです。今度詳細を調べてみようと思います。
Montezuma
こっちはFerretをCommon Lispに移植したもの。ちなみにFerretはLuceneをRubyに移植したものです。 これはこれで便利だと思います。
OpenRTB
広告業界ではread-time biddingが最近のトレンドのようなので、関係者はこれを読んで理解を深めましょう。
iOS Security Internals
jailbreakやったりする人がつくった資料のようです。 これもなかなか興味深いです。
UNREAL4
Unity3でも十分すごいと思いましたが、最近のゲームエンジンはどれもすごいですね。
- http://www.wmtdesigners.com/wordpress/game-2012-06-19
Leap Motion
xboxのkinect的なものですが、それよりはるかに上回る精度らしいです。プレオーダーしたので届いたら色々遊んでみます。
人気プログラミング言語ランキング(stackoverflow調べ)
February 05, 2013 at 11:00 PM | categories: programming |なんとなく気になったのでstackoverflowのでの人気プログラミング言語ランキングをつくってみました。(2013-02-05現在)
1. c# 411382pt 2. java 361120pt 3. php 337941pt 4. javascript 321791pt 5. c++ 175790pt 6. python 160796pt 7. html 145373pt 8. objective-c 119891pt 9. sql 115147pt 10. css 113039pt 11. c 83501pt 12. ruby 64350pt 13. xml 56444pt 14. regex 51670pt 15. vb.net 41260pt 16. html5 27217pt 17. linq 26200pt 18. actionscript-3 24286pt 19. perl 24092pt 20. r 23256pt 21. delphi 18866pt 22. tsql 18119pt 23. matlab 15289pt 24. xaml 14115pt 25. scala 13444pt 26. vba 12300pt 27. css3 11564pt 28. xslt 11032pt 29. haskell 9827pt 30. assembly 7580pt 31. razor 7385pt 32. actionscript 6440pt 33. excel-vba 6309pt 34. groovy 5551pt 35. vbscript 4926pt 36. c++11 4894pt 37. vb6 4886pt 38. xhtml 4675pt 39. plsql 4548pt 40. svg 4540pt 41. f# 4341pt 42. python-3.x 4229pt 43. awk 3481pt 44. wsdl 3249pt 45. lua 3183pt 46. erlang 3077pt 47. coffeescript 2754pt 48. c#-3.0 2615pt 49. latex 2570pt 50. lisp 2395pt 51. mathematica 2395pt 52. prolog 2317pt 53. scheme 2199pt 54. uml 2093pt 55. applescript 2092pt -- 次点 go 1648pt ocaml 1329pt d 877pt
補足
- stackoverflow APIを利用して調べました。stackoverflow公式のものではありません。
- ランキングは質問につけられたタグの件数順です。
- プログラミング言語のタグは、tag infoのエントリに/language/i がマッチするかどうかで抽出し、明らかにプログラミング言語じゃないものは手動で適当に除外しました。
- マークアップ言語とかバージョン違いで複数ある言語とか微妙なのはそのまま残しました。
- 次点以下の言語は、apiをしばらくクロールしてもでてこなかった言語のうち思いついたものを手動でしらべました。
所感
C#が1位なのはちょっと意外でしたがそれ以外は大体イメージ通りでした。 質問が多い順でもあるので、下位にある言語は質問が少なくて逆にイケてると言えなくもないですね。
D言語すばらしい。
ともあれ、stackoverflowのAPIは結構充実してるので色々遊べそうです。
About Me
mojavy |
Recent posts
95/5 Mbps とは
(August 30, 2015 at 04:22 PM)組み込み用プログラミング言語のパフォーマンス比較
(April 21, 2015 at 01:10 AM)最近読んだ本
(April 05, 2015 at 01:23 PM)Phabricatorを使ったワークフローについて
(March 02, 2015 at 08:55 PM)dnsimpleでダイナミックDNSをつかう
(December 23, 2014 at 08:02 PM)www2014のアドテク関連のResearch Trackメモ
(October 06, 2014 at 09:05 PM)flappymacs がMELPAに登録されました
(July 16, 2014 at 01:07 AM)EmacsでFlappy Birdっぽいもの書きました
(July 10, 2014 at 08:01 PM)
Recent Popular posts
Popular posts
Categories
- C (rss) (3)
- R (rss) (1)
- adtech (rss) (1)
- advent calendar (rss) (2)
- algorithms (rss) (2)
- android (rss) (2)
- aws (rss) (1)
- blog (rss) (2)
- blogofile (rss) (3)
- books (rss) (1)
- c++ (rss) (1)
- chef (rss) (4)
- common lisp (rss) (10)
- debian (rss) (2)
- dns (rss) (1)
- elasticsearch (rss) (1)
- elf (rss) (1)
- elisp (rss) (1)
- emacs (rss) (5)
- english (rss) (1)
- game (rss) (2)
- gearman (rss) (1)
- git (rss) (1)
- github (rss) (1)
- gitlab (rss) (1)
- golang (rss) (2)
- history (rss) (1)
- impress.js (rss) (1)
- internet (rss) (1)
- ios (rss) (3)
- jekyll (rss) (1)
- jenkins (rss) (1)
- linux (rss) (4)
- lisp (rss) (2)
- ltsv (rss) (1)
- lua (rss) (1)
- mac (rss) (3)
- mach-o (rss) (1)
- memo (rss) (2)
- mustache (rss) (1)
- note (rss) (1)
- objective-c (rss) (4)
- os (rss) (1)
- osx (rss) (2)
- others (rss) (1)
- paco (rss) (1)
- pdf (rss) (1)
- php (rss) (2)
- postfix (rss) (1)
- programming (rss) (12)
- project management (rss) (1)
- python (rss) (5)
- quicklinks (rss) (6)
- raspberry pi (rss) (2)
- redmine (rss) (1)
- reveal.js (rss) (1)
- ruby (rss) (10)
- sbcl (rss) (2)
- security (rss) (1)
- shell (rss) (2)
- smtp (rss) (1)
- solr (rss) (1)
- statistics (rss) (2)
- tips (rss) (10)
- tmux (rss) (3)
- toml (rss) (1)
- tools (rss) (1)
- twitter (rss) (1)
- ubuntu (rss) (1)
- unix (rss) (5)
- v8 (rss) (1)
- web (rss) (7)
- xcode (rss) (1)
- zeromq (rss) (2)
Archives
- August 2015 (1)
- April 2015 (2)
- March 2015 (1)
- December 2014 (1)
- October 2014 (1)
- July 2014 (3)
- March 2014 (6)
- February 2014 (4)
- November 2013 (3)
- October 2013 (4)
- September 2013 (2)
- July 2013 (2)
- June 2013 (2)
- May 2013 (1)
- April 2013 (6)
- March 2013 (3)
- February 2013 (8)
- January 2013 (5)
- December 2012 (1)
- November 2012 (6)
- October 2012 (7)
- August 2012 (1)
- July 2012 (9)
- June 2012 (1)
- April 2012 (1)
- December 2011 (2)
- November 2011 (2)