2015/09/27

Common Lisp で css を書く時

Common Lisp で css を書く時に #000 などどう書けばいいか悩んでいたけど、バックスラッシュでエスケープすればいい、という結論にたどりついた。

そんなわけでやっと書けた。 https://github.com/quek/info.read-eval-print.css

(in-package :info.read-eval-print.css)

(with-output-to-string (*css-output*)
 (css
   `((\#foo :color \#ccc
            (.bar :margin 1px 2px 0 0 :font-size 12px))
     (a\:hover :color yellow))))
;;⇒ "#foo{color:#ccc;}
;;   #foo .bar{margin:1px 2px 0 0;font-size:12px;}
;;   a:hover{color:yellow;}"

2015/06/20

今日から二人暮らし

女房に逃げられた。

今日から娘と二人暮らし。ネコもいるけど。

料理の腕をみぎきたい。

2015/04/19

デスクトップ PC 買った

先日、新しいおもちゃ買った。

  • GALLERIA ZG Windows 8.1 モデル
  • Windows 8.1 Update 64bit
  • i7-4790K
  • メモリ 32GB DDR3 SDRAM(PC3-12800/8GBx4/デュアルチャネル
  • SSD Crucial 250GB(BX100シリーズ)
  • SATA3 2TB HDD (SATA6Gb/s対応)
  • マザーボード インテル Z97 チップセット ATXマザーボード
  • NVIDIA GeForce GTX980 4GB JetStreamFAN

2015/04/04

icomplete-mode

Emacs に "Package iswitchb is obsolete!" と言われたので icomplete-mode にかえた。

;; バッファの切り替え
;;(iswitchb-mode 1)
(icomplete-mode 1)
(define-key icomplete-minibuffer-map [?\C-i] 'minibuffer-force-complete)
;(define-key icomplete-minibuffer-map [?\C-m] 'minibuffer-force-complete-and-exit)
(define-key icomplete-minibuffer-map [?\C-s] 'icomplete-forward-completions)
(define-key icomplete-minibuffer-map [?\C-r] 'icomplete-backward-completions)

この設定であまり違和感なく使えるようになった。

Slime みたいにもって適当に入力しても補完してくれるといいんだけどね。

2014/09/28

Stumpwm の contrib がなくなっと思ったら

Stumpwm の contrib がなくなっと思ったら、別リポジトリになってたのね。

quicklisp には入ってないようなので、自分で git clone する。

cd ~/quicklisp/local-projects
git clone https://github.com/stumpwm/stumpwm-contrib.git

~/.stumpwmrm に次を追加。

(setf stumpwm::*contrib-dir* (pathname "~/quicklisp/local-projects/stumpwm-contrib/"))
(init-load-path stumpwm::*contrib-dir*)

2014/09/23

AngularJS のコントラーロを CoffeeScript の class で書く

Angular.js CoffeeScript Controller Base Class - Devign に書いてあるとおり。

inject や initialize のとこをちょこっと変えて、こんな感じになった。

AuthedCtrl を継承していれば $scope にログインユーザが自動的にセットされる。本番は mixin 自にやりたいけどそれはまた今度で。

class @BaseCtrl
@register: (name) ->
name ?= @name || @toString().match(/function\s*(.*?)\(/)?[1]
angular.module('ngappApp').controller name, @

@inject: (args...) ->
@$inject ?= ['$scope']
@$inject = @$inject.concat args

constructor: (@scope, args...) ->
for key, index in @constructor.$inject[1..]
@[key] = args[index]

for key, fn of @constructor.prototype
continue unless typeof fn is 'function'
continue if key in ['constructor', 'initialize'] or key[0] is '_'
@scope[key] = fn.bind?(@) || _.bind(fn, @)

@initialize()

initialize: ->

class @AuthedCtrl extends BaseCtrl
@inject 'AuthService'

initialize: =>
super()
@AuthService.user (user) =>
@currentUser = user
@scope.currentUser = user

class VacationsCtrl extends AuthedCtrl
@register()
@inject 'Vacation'

initialize: =>
super()
@scope.vacations = @Vacation.query()
@scope.vacation = new @Vacation

create: =>
console.debug(@scope.vacation)
@scope.vacation.$save (v) =>
console.debug(v)
@scope.vacations.push(v)
@scope.vacation = new @Vacation

いまさらながら AngularJS をさわってみたけど、 C と VB で書いてたむかしながらサーバクライアントアプリみたいで、ちょっと楽しい。

あるいは継続を使った web フレームワークのサーバ処理がごっそりクライアントサイドに移った感じ。

2014/07/27

Using SSL for Erlang Distribution

http://www.erlang.org/doc/apps/ssl/ssl_distribution.html に書かれているとおり。

/usr/lib/erlang/releases/17 にあるファイルをネタに次のファイルを作成。

start_ssl.rel

{release, {"Erlang/OTP","17"}, {erts, "6.1"},
[{kernel,"3.0.1"},
{stdlib,"2.1"},
{sasl, "2.4"},
{asn1, "3.0.1"},
{crypto, "3.4"},
{public_key, "0.22"},
{ssl, "5.3.5"}
]}.

boot ファイルを作成

systools:make_script("start_ssl",[]).

/home/ancient/letter/erlang/ssl/erlserver.pem にはサーバ証明書と鍵を書いておく cat pem key > erlserver.pem なイメージ

起動

erl -boot /home/ancient/letter/erlang/ssl/start_ssl -proto_dist inet_tls -ssl_dist_opt server_certfile "/home/ancient/letter/erlang/ssl/erlserver.pem" -ssl_dist_opt server_secure_renegotiate true client_secure_renegotiate true -sname ssl_test
erl -boot /home/ancient/letter/erlang/ssl/start_ssl -proto_dist inet_tls -ssl_dist_opt server_certfile "/home/ancient/letter/erlang/ssl/erlserver.pem" -ssl_dist_opt server_secure_renegotiate true client_secure_renegotiate true -sname ssl_test2

(ssl_test2@yarn)8> net_kernel:connect_node(ssl_test@yarn).
true
(ssl_test2@yarn)9> nodes().
[ssl_test@yarn]

ふと気付いた。ssl じゃなくて ssh でやりたかった。