Hatena::Groupsubtech

NaN days

ブログを移転しています。最新の記事は motemen.hatenablog.com へどうぞ

2011-08-23

テキストエリアの文字数をカウントするユーザースクリプトを書きました

| 20:55 | テキストエリアの文字数をカウントするユーザースクリプトを書きました - NaN days を含むブックマーク はてなブックマーク - テキストエリアの文字数をカウントするユーザースクリプトを書きました - NaN days

f:id:motemen:20110823204845p:image

巷に溢れていると思いますが自分で書きたくなったので書きました。テキストエリアをダブルクリックすると原稿用紙 (20×20) でのカウントと切り替えられて便利です (あまり正確さに自信がないです)。禁則処理の実装を途中で諦めているのが特徴といえば特徴です。

https://gist.github.com/1164160

ゆりゆららららゆるゆり大事件メーカーを作りました

20:50 | ゆりゆららららゆるゆり大事件メーカーを作りました - NaN days を含むブックマーク はてなブックマーク - ゆりゆららららゆるゆり大事件メーカーを作りました - NaN days

no title

no title

f:id:motemen:20110823203535p:image

ということができます……

最終的に JS でもよかったのですが 1 ファイルの簡単 PSGI アプリです。バックエンドは StarmanUNIX ドメインソケットを使って nginx でプロキシしていて、daemontools で監視。

http {
    # ...
    server {
        server_name yurarara.tokyoenvious.net;
        access_log  /var/log/nginx/yurarara.tokyoenvious.net.access.log;
        proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Request-Uri    http://$host$request_uri;
        location / {
            proxy_pass http://unix:/var/www/yurarara/app/App-Web-Yurarara/.sock:/;
        }
    }
}
.
├── Capfile
├── app.psgi
└── svc
    ├── log
    │   └── run
    └── run

2 directories, 4 files

デプロイは capistrano で。便利ですね。

default_run_options[:pty] = true
set :ssh_options, { :forward_agent => true }

set :deploy_to,  ''
set :repository, ''
set :service,    ''
set :access_log, ''

role :production, ''

task :update do
  git.pull
end

task :restart do
  svc.hup
end

task :deploy do
  update
  restart
end

namespace :svc do
  task :setup do
    run "#{sudo} ln -s #{deploy_to}/svc /etc/service/#{service}"
  end

  task :hup do
    run "#{sudo} svc -h /etc/service/#{service}"
  end
end

namespace :git do
  task :fetch do
    run "cd #{deploy_to} && git fetch"
  end

  task :pull do
    run "cd #{deploy_to} && git pull && git submodule update --init"
  end

  task :init do
    run "mkdir -p #{deploy_to} && cd #{deploy_to} && git clone #{repository} ."
  end
end

namespace :log do
  task :app do
    stream "tail -F #{deploy_to}/svc/log/main/current | tai64nlocal"
  end

  task :access do
    stream "tail -F /var/log/nginx/#{access_log}"
  end
end