「open」を含む日記 RSS

はてなキーワード: openとは

2008-11-29

iTunes再生回数Top25を意味もなく晒してみる+晒させてみたい。

タイトルアーティスト再生回数
ブラックアウト東京事変566
アララトWHITE-LIPS522
R.O.D.やなぎなぎ490
強引niマイYeah〜大槻ケンヂと絶望少女達483
NowhereFictionJunction YUUKA448
空想ルンバ大槻ケンヂと絶望少女達445
God knows...平野綾387
メロスのように -LONELY WAY-AIRMAIL from NAGASAKI376
だから涙をふいて佐倉沙織376
赤橙ACIDMAN368
未来への咆哮JAM Project featuring Kageyama Hironobu, Endoh Masaaki, Kitadani Hiroshi & Fukuyama Yoshiki332
明日へのBrilliant RoadAngela304
Do you feel loved?KOTOKO296
Born On Judgment DayHelloween292
鏡の中のアクトレス中原めいこ288
Days of promiseSHIHO283
PEARLSSeatbelts271
metamorphose高橋洋子268
STORMJAM Project260
雪、無音、窓辺にて長門有希260
El Alma feat. SHINJI TAKEDADragon Ash252
まるい月fau.249
飛光ACIDMAN248
未完成協奏曲 (ロングヴァージョン)錦織健247
パノラマ -Panorama-水樹奈々246

この表を作る方法は以下のとおり。Macユーザならすぐ出来る。

1.まず、デフォルトスマートプレイリストのTop25を表示する。そしてiTunesでの情報表示を、上のバーを右クリックしてタイトルアーティスト再生回数のみにチェックする。

2.全体を選択。iTunes.txtというファイル名で保存する。UTF-8で。

3.次のソースコードコピペして、iTunes_list.rbという名前iTunes.txtを保存したのと同じフォルダに保存する。

f = open("iTunes.txt")

printf "|*タイトル|*アーティスト|*再生回数|\n"

f.each{|str|
  str = str.gsub(/\t/, "|")
  str = str.chop
  printf "|"+str+"|\n"
}

4.ターミナルを立ち上げ、cdと打ち込んだ後にスペースを空けて、iTunes.txtとiTunes_list.rbが入っているフォルダを、ターミナルウインドウドラッグアンドドロップする。その後returnキー。

5.ruby iTunes_list.rbと打つと、はてな記法で表組されたテキストが出てくるので、これをはてダコピペすればおk。

もしアルバム名なども表示したかったら、まずiTunesで表示したいヤツを出して選択してiTunes.txtにコピペ。そして最初のprintfのところを適宜書き換えればいい。

WinユーザRubyを動かせる環境がそろってる人なら、すぐに出来ると思う。

さあ、みんなも再生回数晒してみようぜ。

2008-11-25

http://anond.hatelabo.jp/20081125092141

いまさらなんだけど。

javascript:t=document.title;l=location.href;c=prompt('make a memo:\n'+t+'\n'+l,' ');if(typeof c != 'object')window.open('http://anond.hatelabo.jp/<ここを自分idにする>/edit?mode=confirm&title='+escape(l)+'&body=:'+escape(t)+':'+escape(c));undefined;

自分ID入れるのを忘れないように。

2008-10-20

バグ報告をした

毎週なんらかの動きのあったライブラリプロジェクトに、英語でいっしょうけんめいバグ報告をした。

10日経過したが、俺の報告だけずっとopenで時が止まってる。

毎週定期的にあったリポジトリへの追加も、俺が報告した頃から止まってる。

やはり、How do you do? から始めなかったのがまずかったのだろうか。

ガイジンさんは気難しいのう。

2008-10-18

real street angels から mechanize を使って動画を取ってきてEmacsで見てみるよ

せっかく書いたから匿名でのせてみるよ

使い方は

  • 動画を取ってきたいよ
    • config.yamlユーザとかを設定するよ
    • ids.txt に取ってきたいIDを書くよ
    • sangels.bat を実行するよ
  • Emacs動画を見たいよ
    • sangels.el を load するよ
    • M-x sangels だよ

必要なものを gem で取ってくるにはこうすればいいよ

  • gem install -r log4r
  • gem install -r -v 0.6 hpricot
  • gem install -r mechanize

長すぎてelispが消えたから続きがあるよ

sangels.bat - 起動用バッチファイル

@echo off
setlocal
set WD=%~dp0
cd /d %WD%

ruby get_movies.rb
ruby get_images.rb
ruby create_m3u.rb

ruby

config.yaml - 設定ファイル
user: ユーザID
password: パスワード
ids_file: ids.txt
done_file: ids_done.txt
movies_dir: movies

log4r_config:
  pre_config:
    global: INFO
  loggers:
    - name: app
      type: Log4r::Logger
      level: INFO
      outputters:
        - STDOUT
        - FILE
  outputters:
    - name: STDOUT
      type: Log4r::StdoutOutputter
      formatter:
        type: Log4r::PatternFormatter
        pattern: "%d [%l] %C - %M"
        date_pattern: "%H:%M:%S"
    - name: FILE
      type: Log4r::FileOutputter 
      filename: "#{LOGDIR}/sangels.log"
      formatter:
        type: Log4r::PatternFormatter
        pattern: "%d [%l] %C - %M"
        date_pattern: "%Y-%m-%d %H:%M:%S"
get_movies.rb
require 'fileutils'
require 'logger'
require 'mechanize'

BASEDIR = File.dirname($0)
require "#{BASEDIR}/util"
require "#{BASEDIR}/sangels"

$config = load_config(BASEDIR)
prepare_logger(BASEDIR)
$log = new_logger("get_movies")
WWW::Mechanize.log = new_logger("mechanize")
WGet.log = $log

class IDFile
  def initialize(file)
    @file = file
    unless File.exist?(@file)
      Fileutils.touch(@file)
    end
  end

  def ids(contains_comment = nil)
    File.open(@file) {|io|
      io.to_a.map {|x|
        x.chomp
      }.select {|x|
        if x.empty?
          nil
        elsif contains_comment
          true
        else
          not /^\s*\#/ =~ x
        end
      }
    }
  end

  def add(id)
    ids = ids(true)
    unless ids.any? {|x| x == id}
      write(ids + [id])
    end
  end

  def delete(id)
    ids = ids(true)
    if ids.any? {|x| x == id}
      write(ids - [id])
    end
  end

  def write(ids)
    File.open(@file, "w") {|io|
      ids.each {|x| io.puts x}
    }
  end
end


$log.info("BEGIN #{$0} ================")
exit_code = 0
begin
  ids_file = IDFile.new($config.ids_file)
  done_file = IDFile.new($config.done_file)
  movies_dir = $config.movies_dir
  wget = WGet.new

  sangels = SAngels.new
  sangels.login($config.user, $config.password)
  ids_file.ids.each {|id|
    begin
      movies = sangels.movies(id)
    rescue SAngels::Movies::InvalidMoviesError
      $log.warn("invalid movie id: #{id}")
      next
    end
    dir = File.expand_path(id, movies_dir)
    movies.each {|link|
      wget.retrieve(link.href, dir)
    }
    expected = movies.movie_links.map{|x| File.basename(x.href)}
    actual = Dir.glob("#{dir}/*").map {|x| File.basename(x)}
    if (expected - actual).empty?
      done_file.add(id)
      ids_file.delete(id)
    end
  }
rescue => e
  $log.error(e)
  exit_code = 1
end

$log.info("END #{$0} (#{exit_code}) ================")
exit exit_code
get_images.rb
require 'fileutils'
require 'logger'
require 'mechanize'
require 'ostruct'

BASEDIR = File.dirname($0)
require "#{BASEDIR}/util"
require "#{BASEDIR}/sangels"

$config = load_config(BASEDIR)
prepare_logger(BASEDIR)
$log = new_logger("get_images")
WWW::Mechanize.log = new_logger("mechanize")
WGet.log = $log

$log.info("BEGIN #{$0} ================")
exit_code = 0
begin
  movies_dir = $config.movies_dir
  sangels = SAngels.new
  sangels.login($config.user, $config.password)
  thumbnails = sangels.thumbnails

  Dir.glob("#{movies_dir}/*").each {|dir|
    next unless File.directory? dir
    id = File.basename(dir)

    url = thumbnails.url(id)
    unless url
      $log.warn("#{id} is not found")
      next
    end
    path = File.expand_path("00_thumbnail#{File.extname(url)}", dir)
    next if File.exist? path

    $log.info("retrieving #{url}")
    thumbnail = thumbnails.get_file(id)
    File.open(path, "wb") {|io| io.write(thumbnail)}
  }
rescue => e
  $log.error(e)
  exit_code = 1
end

$log.info("END #{$0} (#{exit_code}) ================")
exit exit_code
create_m3u.rb
BASEDIR = File.dirname($0)
require "#{BASEDIR}/util"

$config = load_config(BASEDIR)
movies_dir = $config.movies_dir
Dir.glob("#{movies_dir}/*") {|dir|
  next unless File.directory? dir
  name = File.basename(dir)
  files = Dir.glob("#{dir}/*.wmv").sort

  File.open("#{movies_dir}/#{name}.m3u", "w") {|io|
    files.each {|file|
      io.puts "#{name}/#{File.basename(file)}"
    }
  }

  File.open("#{dir}/00_movies.m3u", "w") {|io|
    files.each {|file|
      io.puts "#{File.basename(file)}"
    }
  }
}
sangels.rb
require 'mechanize'
require 'hpricot'

BASEDIR = File.dirname($0)
require "#{BASEDIR}/util"

class SAngels
  HOST = "real2.s-angels.com"
  LOGIN_URL = "http://#{HOST}/member/"
  INFO_URL = "http://#{HOST}/teigaku/item.php"
  THUMBNAILS_URL = "http://#{HOST}/teigaku/"
  THUMBNAIL_URL = "http://#{HOST}/images/default/thumb/"

  def initialize()
    @agent = WWW::Mechanize.new
  end

  def login(user, password)
    login_form = @agent.get(LOGIN_URL).forms.find {|form|
      form.fields.any? {|field| field.name == "frmLoginid"}
    }
    login_form.frmLoginid = user
    login_form.frmPw = password
    @agent.submit(login_form)
  end

  def movies(id, no_validate = nil)
    Movies.new(@agent, id, !no_validate)
  end

  def thumbnails
    Thumbnails.new(@agent)
  end

  class Thumbnails
    def initialize(agent)
      @agent = agent
      doc = Hpricot(@agent.get_file(THUMBNAILS_URL))
      elems = doc.search("div[@class=realthum]/a")
      @links = Hash(
        elems.map {|elem|
          href = elem["href"]
          id = $1 if /ID=(.+)/ =~ href
          url = elem.search("img")[0]["src"]
          [id, url]
        })
    end

    def get_file(id)
      @agent.get_file(url(id))
    end

    def url(id)
      @links[id]
    end

    def exist?(id)
      url(id)
    end
  end

  class Movies
    class InvalidMoviesError < StandardError
    end

    def initialize(agent, id, no_validate)
      @agent = agent
      @id = id
      if !no_validate &amp;&amp; !valid?
        raise InvalidMoviesError
      end
    end

    def info_page_url
      "#{INFO_URL}?ID=#{@id}"
    end

    def info_page
      @agent.get(info_page_url)
    end

    def movies_page
      @agent.click(info_page.links.find {|link| /P=10/ =~ link.href})
    end

    def movie_links
      movies_page.links.select {|link|
        /wmv$/ =~ link.href
      }.sort {|a, b|
        File.basename(a.href) <=> File.basename(b.href)
      }
    end

    def valid?
      info_page.uri.to_s == info_page_url
    end

    def each(&amp;block)
      orig_links = movie_links
      orig_links.each {|orig_link|
        link = movie_links.find {|l| File.basename(l.href) == File.basename(orig_link.href)}
        block.call(link)
      }
    end
  end
end
util.rb
require 'log4r'
require 'log4r/yamlconfigurator'
require 'singleton'
require 'fileutils'
require 'ostruct'

def Hash(a)
  Hash[*a.flatten]
end

def load_config(basedir)
  OpenStruct.new(File.open("#{basedir}/config.yaml") {|io| YAML.load(io)})
end

def new_logger(name)
  Log4r::Logger.new("app::#{name}")
end

def prepare_logger(basedir, logdir = nil)
  logdir ||= basedir
  Log4r::YamlConfigurator["LOGDIR"] = logdir
  Log4r::YamlConfigurator.load_yaml_file("#{basedir}/config.yaml")
end

class NullObject
  include Singleton
  def method_missing(message, *arg)
    NullObject.singleton
  end
end

class WGet
  class << self
    attr_accessor :log
    def initialize
      super
      @log = NullObject.singleton
    end
  end
  
  def log
    self.class.log
  end

  def retrieve(url, dir)
    FileUtils.mkdir_p(dir)
    file = File.expand_path(File.basename(url), dir)
    if File.exist?(file)
      log.info("already retrieved #{url}")
      return true
    end

    tmp = "#{file}.part"
    log.info("retrieving #{url}")
    ret = system("wget", "-c", "-O", tmp, url)
    if ret
      log.info("retrieving succeeded #{url}")
      File.rename(tmp, file)
    else
      if $? == 0x020000 # Ctrl-C
        exit($?)
      else
        log.error("retrieving failure #{url} (#{$?})")
      end
    end
    return ret
  end
end

2008-10-12

[][]Grass

Table of Contents: ||||||

オープンソースソフトウェアGISOpen Source software and GISOpen Source software and GIS 1 (6)
オープンソース概念Open Source concept1 (2)
オープンソースGISとしてのGRASSGRASS as an Open Source GIS3 (2)
ノースカロライナサンプルデータセットThe North Carolina sample data set 5 (1)
この本の読み方How to read this book5 (2)
GIS概念GIS conceptsGIS concepts 7 (14)
一般的なGIS原理General GIS principles 7 (6)
地理空間データモデルGeospatial data models 7 (4)
GISデータシステムの構成Organization of GIS data and system11 (2)
機能functionality
地図投影法と座標系Map projections and coordinate systems 13 (8)
地図投影原理Map projection principles13 (3)
一般的な座標系とdatumsCommon coordinate systems and datums 16 (5)
GRASSをはじめようGetting started with GRASSGetting started with GRASS 21 (32)
第一歩First steps21 (16)
GRASSダウンロードインストールDownload and install GRASS 21 (2)
データベースコマンド構造Database and command structure 23 (3)
GRASS6のためのグラフィカルユーザインタフェイス: Graphical User Interfaces for GRASS 6: 26 (1)
QGISgis.mQGIS and gis.m
ノースカロライナを用いてGRASSを開始Starting GRASS with the North Carolina 27 (3)
データセットdata set
GRASSデータディスプレイ3D可視化GRASS data display and 3D visualization30 (4)
プロジェクトデータ管理Project data management34 (3)
新しいプロジェクトGRASSを開始Starting GRASS with a new project37 (7)
aのための座標系の定義Defining the coordinate system for a 40 (4)
新しいプロジェクトnew project
空間投影されていないxy座標系Non-georeferenced xy coordinate system 44 (1)
座標系の変換Coordinate system transformations44 (9)
座標系のリストCoordinate lists 45 (2)
ラスタベクトル地図投影Projection of raster and vector maps 47 (1)
GDAL/OGRツールで、再投影Reprojecting with GDAL/OGR tools 48 (5)
GRASSデータモデルデータの交換GRASS data models and data exchange53 (30)
ラスタデータRaster data54 (16)
GRASS2Dの、3DラスタデータモデルGRASS 2D and 3D raster data models 54 (2)
領域の統合と境界Managing regions and boundaries raster map resolution
ジオコードされたラスタデータインポートImport of georeferenced raster data58 (8)
スキャンされた歴史地図インポートとジオコーディングImport and geocoding of a scanned66 (3)
ラスタデータエクスポートRaster data export 69 (1)
ベクトルデータVector data70 (13)
GRASSベクトルデータモデルGRASS vector data model70 (3)
ベクトルデータインポートImport of vector data73 (5)
xy CAD描画のための座標変換Coordinate transformation for xy CAD drawings 78 (2)
ベクトルデータエクスポートExport of vector data80 (3)
ラスタデータを使うWorking with raster data 83 (86)
ラスタ地図を表示、管理Viewing and managing raster maps 83 (22)
ラスタデータの表示と、カラーテーブルの割り当てDisplaying raster data and assigning a color table 83 (3)
ラスタ地図に関するメタデータを管理Managing metadata of raster maps 86 (2)
ラスタ地図クエリプロファイルRaster map queries and profiles88 (2)
ラスタ地図統計Raster map statistics90 (1)
ラスタ地図ズームと、部分集合の生成Zooming and generating subsets from91 (1)
簡単なラスタ地図の生成Generating simple raster maps92 (2)
再分類と再スケーリングReclassification and rescaling of94 (3)
ラスタ地図raster maps
ラスタ地図タイプの記録と値の置換Recoding of raster map types and value replacements 97 (2)
カテゴリベルの割り当てAssigning category labels99 (4)
マスキングとノーデータ値の取り扱いMasking and handling of no-data values 103(2)
ラスタ地図の計算Raster map algebra 105(10)
整数と浮動小数点データInteger and floating point data107(1)
基本的な計算Basic calculations 108(1)
“if"状態を使うWorking with ``if'' conditions109(1)
r.mapcalcのNULL値の取り扱いHandling of NULL values in r.mapcalc 110(1)
r.mapcalcでMASKを作成Creating a MASK with r.mapcalc 111(1)
特別なグラフ演算子Special graph operators112(1)
相対的座標での近傍演算Neighborhood operations with relative coordinates113(2)
ラスタデータの変換と内挿Raster data transformation and interpolation 115(11)
離散的ラスタデータ自動ベクトルAutomated vectorization of discrete raster data115(3)
連続フィールドの等値線の描画を生成Generating isolines representing continuous fields 118(1)
ラスタデータのリサンプリングと内挿Resampling and interpolation of raster data 119(5)
ラスタ地図オーバーレイマージOverlaying and merging raster maps 124(2)
ラスタデータの空間分析Spatial analysis with raster data126(29)
近傍分析とクロスカテゴリー統計Neighborhood analysis and cross-category statistics126(7)
ラスタフィーチャのバッファリングBuffering of raster features 133(2)
コストサーフェイスCost surfaces135(5)
地勢と分水界分析Terrain and watershed analysis 140(13)
ランドスケープ構造解析Landscape structure analysis 153(2)
ランドスケーププロセスモデリングLandscape process modeling 155(11)
文学的、地下水モデルHydrologic and groundwater modeling155(3)
浸食と宣誓証言モデルErosion and deposition modeling158(8)
ラスタベースモデルと解析に関するまとめFinal note on raster-based modeling and analysis166(1)
ボクセルデータを使うWorking with voxel data166(3)
ベクトルデータを使うWorking with vector data 169(94)
地図の表示とメタデータ管理Map viewing and metadata management169(4)
ベクトル地図を表示Displaying vector maps 169(3)
ベクトル地図メタデータ維持Vector map metadata maintenance172(1)
ベクトル地図属性管理とSQLサポートVector map attribute management and SQL support173(14)
GRASS6でのSQLサポートSQL support in GRASS 6 174(7)
サンプルSQLクエリ属性変更Sample SQL queries and attribute modifications 181(4)
地図再分類Map reclassification 185(1)
複数の属性があるベクトル地図Vector map with multiple attribute tables: layers 186(1)
ベクトルデータデジタルDigitizing vector data 187(5)
位相データデジタル化の一般原理General principles for digitizing topological data187(2)
GRASSでの対話的なデジタイジンInteractive digitizing in GRASS189(3)
ベクトル地図クエリ統計Vector map queries and statistics192(4)
地図クエリMap queries192(2)
ベクトルオブジェクトに基づくラスタ地図統計Raster map statistics based on vector objects194(2)
ポイントベクトル地図統計Point vector map statistics196(1)
幾何学操作Geometry operations196(20)
位相的な操作Topological operations 197(6)
バッファリングBuffering203(1)
フィーチャの抽出と境界のディゾルブFeature extraction and boundary dissolving204(1)
ベクトル地図を修理Patching vector maps 205(1)
ベクトル地図インターセクディングとクリッピングIntersecting and clipping vector maps206(3)
ベクトル幾何の変換と3Dベクトルの作成Transforming vector geometry and creating 3D vectors 209(2)
点からのコンベックスハルとトライアンギュレーションConvex hull and triangulation from points 211(1)
同じ位置の掘り出し物の複数のポイントFind multiple points in same location212(2)
一般的な多角形境界の長さLength of common polygon boundaries214(2)
ベクトルネットワーク分析Vector network analysis216(11)
ネットワーク分析Network analysis 216(5)
直線的な参照システム(LRS)Linear reference system (LRS)221(6)
ラスタへのベクトルデータ変化Vector data transformations to raster227(3)
空間的な内挿と近似Spatial interpolation and approximation230(19)
内挿方法を選択Selecting an interpolation method230(5)
RSTによる内挿と近似Interpolation and approximation with RST 235(2)
RSTパラメタの調整: テンションスムージングTuning the RST parameters: tension and smoothing 237(4)
RSTの精度を評価Estimating RST accuracy241(3)
セグメント化処理Segmented processing 244(3)
RSTとのトポグラフィー分析Topographic analysis with RST247(2)
ライダーポイントクラウドデータを使うWorking with lidar point cloud data249(8)
ボリュームに基づくは内挿Volume based interpolation 257(6)
3番目の変数の追加: 高度のある降水量Adding third variable: precipitation with elevation 258(3)
ボリュームとボリューム-時間内挿Volume and volume-temporal interpolation 261(1)
地球統計学とスプライGeostatistics and splines262(1)

2008-10-11

ぼくのかんがえたロフトプラスワンイベント

ラノ漫ナイト vol.1 -売れる漫画法則。話題になる同人誌法則。-

出演:多摩坂(フリー編集者)、岩井喬(ライター)、オオツカマヒロ漫画家)、笹倉綾人漫画家)、他シークレットゲスト

司会:地球まんだらけ/OFFICE.M)

OPEN 18:00 START 18:30??(ALL NIGHT)

第一部は、多摩坂氏のこれまでの業績報告を中心としたフリートーク

ただし、第一部終了後、しゃあ(漫画家)・高遠るい漫画家)・なさけむよう(同人作家)・中村公彦(コミティア代表)・里見英樹デザイナー/編集者)などなどの豪華シークレットゲストが、出演者に一切事前告知なしのまま突如登場!

同時に出口を朝まで完全武力封鎖! イベント会場は、10年前のプラスワンを思わせる不穏な空間へと変貌する……

2008-09-13

これはひどい

http://kago.in/portal/index.php?url=<>

Warning: file_get_contents(http://api.pathtraq.com/pages?url=&lt;&gt;&amp;m=popular) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request in /virtual/kago/public_html/portal/index.php on line 25

Warning: file_get_contents(http://api.search.yahoo.co.jp/ImageSearchService/V1/imageSearch?appid=_DG85xqxg66_I.XOwI8HXsFIoVCrj7wuyv4HstVVzMq.Eq5NFShOxteUK6FlXyPB9BFCYw--&amp;query=&lt;&gt;&amp;results=50) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request in /virtual/kago/public_html/portal/index.php on line 32

Warning: file_get_contents(http://www.2chsearch.net/api/list?q=&lt;&gt;&amp;mode=html) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 500 Internal Server Error in /virtual/kago/public_html/portal/index.php on line 42

2008-08-31

24時間テレビ2008年走行ルート8/30 2:30

http://42.195km.net/jogsim/

<kml xmlns="http://earth.google.com/kml/2.1"><Document><name>Jogging simulator</name><open>1</open><Style id="linestylered"><LineStyle><color>7f0000ff</color><width>4</width></LineStyle></Style><Placemark>

<name>2008/8/31</name>

<styleUrl>#linestylered</styleUrl><LineString><extrude>1</extrude><tessellate>1</tessellate>

<dist_elev>

0,0

94,0

85,0

100,0

502,0

204,0

227,0

247,0

147,0

54,0

56,0

208,0

81,0

114,0

121,0

19,0

45,0

46,0

136,0

144,0

37,0

149,0

100,0

65,0

51,0

94,0

52,0

134,0

153,0

148,0

104,0

378,0

144,0

108,0

47,0

392,0

337,0

69,0

109,0

28,0

144,0

63,0

103,0

82,0

41,0

77,0

71,0

192,0

120,0

78,0

70,0

41,0

185,0

57,0

85,0

133,0

173,0

115,0

21,0

34,0

167,0

90,0

92,0

98,0

251,0

126,0

107,0

114,0

142,0

26,0

189,0

210,0

366,0

100,0

153,0

217,0

171,0

424,0

205,0

163,0

108,0

87,0

62,0

33,0

98,0

80,0

89,0

71,0

27,0

434,0

199,0

205,0

290,0

105,0

235,0

159,0

110,0

210,0

162,0

450,0

63,0

96,0

154,0

97,0

491,0

374,0

53,0

61,0

95,0

201,0

73,0

76,0

33,0

35,0

175,0

43,0

36,0

68,0

24,0

55,0

24,0

35,0

13,0

95,0

20,0

101,0

54,0

97,0

23,0

65,0

24,0

40,0

39,0

61,0

41,0

23,0

37,0

40,0

101,0

153,0

136,0

116,0

132,0

103,0

41,0

44,0

88,0

74,0

48,0

38,0

265,0

98,0

152,0

86,0

140,0

84,0

23,0

110,0

26,0

69,0

113,0

137,0

150,0

143,0

93,0

194,0

103,0

67,0

136,0

104,0

116,0

201,0

178,0

199,0

116,0

89,0

71,0

60,0

254,0

64,0

127,0

114,0

149,0

32,0

55,0

88,0

95,0

126,0

70,0

396,0

283,0

178,0

335,0

100,0

242,0

376,0

717,0

259,0

211,0

80,0

36,0

32,0

38,0

30,0

28,0

489,0

278,0

46,0

254,0

81,0

68,0

220,0

64,0

431,0

93,0

148,0

126,0

222,0

222,0

227,0

152,0

172,0

138,0

219,0

180,0

177,0

110,0

538,0

161,0

117,0

120,0

777,0

189,0

269,0

182,0

92,0

168,0

158,0

42,0

53,0

59,0

35,0

111,0

78,0

82,0

54,0

18,0

64,0

518,0

119,0

529,0

95,0

121,0

113,0

107,0

111,0

480,0

88,0

241,0

209,0

232,0

151,0

275,0

76,0

61,0

51,0

37,0

45,0

77,0

52,0

157,0

25,0

238,0

413,0

268,0

227,0,

63,0,

141,0,

</dist_elev>

<visited_place>

,,

,,

,,

</visited_place>

<coordinates>

139.63037252426147,35.18771434049862

139.6301257610321,35.186898880828714

139.6309196949005,35.18730222749469

139.63167071342468,35.18795985363517

139.63409543037415,35.19201071329039

139.63593006134033,35.19307161935013

139.63775396347046,35.194465681456606

139.64007139205933,35.19562299786218

139.64163780212402,35.19595440818654

139.64189529418945,35.19639277951902

139.64178800582886,35.196883752602936

139.64200258255005,35.198742409538866

139.64230298995972,35.199426244312825

139.6424102783203,35.20044321871356

139.6435260772705,35.201039370200796

139.64359045028687,35.20119717427379

139.64335441589355,35.20154784889382

139.64371919631958,35.201828387499695

139.64401960372925,35.203020665763816

139.64534997940063,35.20372199774286

139.64539289474487,35.20405512831116

139.6465301513672,35.205019445937246

139.6470022201538,35.20582595733999

139.64708805084229,35.20640453667283

139.64764595031738,35.20647466722091

139.6473240852356,35.20728116417065

139.6468734741211,35.20756168297117

139.645414352417,35.20742142369205

139.64423418045044,35.20840323355815

139.64389085769653,35.20970060695813

139.6442985534668,35.21057719887122

139.64728116989136,35.212943949762256

139.6478819847107,35.21413606482221

139.6479892730713,35.21510026272678

139.64771032333374,35.21545087730718

139.6439015865326,35.217091733388784

139.64099407196045,35.21896745775251

139.6406614780426,35.21952841362797

139.64028596878052,35.22045748826842

139.64056491851807,35.22056792472205

139.64037716388702,35.22185633906688

139.64052200317383,35.222408510381754

139.6403932571411,35.22332878755783

139.64070439338684,35.22401679748617

139.64039862155914,35.22428411187213

139.64077413082123,35.22490638129421

139.64128375053406,35.22538403557113

139.6426409482956,35.226707429981815

139.64331686496735,35.227636422435864

139.6432203054428,35.22832877781907

139.64323103427887,35.22895539816757

139.64289844036102,35.22920516856592

139.64419662952423,35.23048906391726

139.64443266391754,35.23096230349543

139.64511930942535,35.23147497658997

139.6465677022934,35.23165024869969

139.64845061302185,35.23140048582869

139.64967906475067,35.23116211492625

139.6494671702385,35.231225651354805

139.64964419603348,35.231497323798344

139.6512696146965,35.232189646234715

139.65178191661835,35.232881962762875

139.65204745531082,35.2336772431284

139.65270459651947,35.23437173778668

139.6551775932312,35.23337578241781

139.65656161308289,35.233314438527294

139.65765595436096,35.232972664573865

139.65810656547546,35.23392787534491

139.658203125,35.23519855113892

139.65833187103271,35.23540886797109

139.65907216072083,35.2369949898497

139.6603488922119,35.23857231786453

139.66199040412903,35.24157791910687

139.66269850730896,35.242261393057

139.66373920440674,35.243339167197576

139.66395378112793,35.24528438182719

139.6650266647339,35.246546117717116

139.66514468193054,35.25035749231099

139.66588497161865,35.25210102693307

139.66530561447144,35.25348531414836

139.66552019119263,35.254440283321436

139.66533780097961,35.25520775496638

139.66469943523407,35.25541363939197

139.66435611248016,35.25551439115435

139.6632832288742,35.25550124962722

139.66244101524353,35.25569837231032

139.6625965833664,35.25648685824873

139.66287553310394,35.25708697851668

139.66305255889893,35.25728409734326

139.65897023677826,35.25930344259883

139.65691030025482,35.25990792228293

139.65496838092804,35.2608365344634

139.65259194374084,35.262579843685224

139.65155124664307,35.262995954663744

139.6489655971527,35.263105457197696

139.64743673801422,35.26379750978935

139.64679837226868,35.2646384771354

139.64592933654785,35.266381704564445

139.64587569236755,35.26783494943115

139.64685201644897,35.271794230515624

139.64729189872742,35.27223219220043

139.6482789516449,35.27253000479355

139.6491265296936,35.27373000326553

139.64948058128357,35.27455334959795

139.65195894241333,35.27846850965091

139.65227007865906,35.281822959319406

139.6517014503479,35.281920174966054

139.65117037296295,35.28225736351309

139.65034425258636,35.28172749516593

139.64833796024323,35.28096552964672

139.64753329753876,35.280974287911825

139.64679300785065,35.281289584824215

139.64642822742462,35.281289584824215

139.64605808258057,35.28118886511065

139.64541971683502,35.282668994381474

139.64511394500732,35.28237559812567

139.6449476480484,35.282086579879035

139.644513130188,35.28159174321329

139.64425027370453,35.28159612231207

139.64376747608185,35.28130272216894

139.6435958147049,35.28146912835075

139.643252491951,35.28161801780251

139.64311838150024,35.281644292383234

139.64330077171326,35.28248507446485

139.6431827545166,35.28263396204861

139.64356362819672,35.28348392974092

139.6432739496231,35.2839108807827

139.64257925748825,35.28325184258908

139.64232712984085,35.28327373763183

139.6418336033821,35.283694121304364

139.64205890893936,35.28379921688149

139.64225471019745,35.28412545019985

139.64259535074234,35.28434220852351

139.6428018808365,35.284867680839

139.6426945924759,35.28522237272412

139.64259535074234,35.28541066531569

139.6425873041153,35.28574564989031

139.6428206562996,35.28604560222215

139.64264899492264,35.286938884335825

139.6430405974388,35.28827222092029

139.64410811662674,35.28913482763547

139.6445855498314,35.29010470187369

139.64542508125305,35.29107675378499

139.64553773403168,35.29199406233845

139.64569866657257,35.29233777670865

139.6456155180931,35.29272308535028

139.64639872312546,35.293193772395284

139.6465301513672,35.293845286365624

139.64622974395752,35.294195560500974

139.64582204818726,35.29424810149053

139.6429681777954,35.29374020382943

139.64189529418945,35.2938628001084

139.64028596878052,35.29423058783114

139.6393847465515,35.29447577871785

139.63788270950317,35.294178046830204

139.63728189468384,35.29360009356897

139.6370244026184,35.29360009356897

139.6359086036682,35.29398539620167

139.63569402694702,35.29382777261908

139.63526487350464,35.29331987232042

139.63402032852173,35.29340744156481

139.63268995285034,35.29398539620167

139.6315312385559,35.294948644758904

139.63088750839233,35.29612204114941

139.6307373046875,35.29694515980801

139.62977170944214,35.29850380837487

139.6297287940979,35.29943197809182

139.6290421485901,35.29965964073617

139.62880611419678,35.30086974447647

139.6297287940979,35.3014301337228

139.63011503219604,35.30241956151048

139.63161706924438,35.303750454142175

139.6329179406166,35.30494473650507

139.63504761457443,35.305380329980835

139.63613122701645,35.30592317685907

139.6368795633316,35.30643318693823

139.6370592713356,35.307057014637834

139.63687419891357,35.307574897464406

139.63496446609497,35.30923840383023

139.6350073814392,35.309816245404804

139.63571548461914,35.310796815600966

139.6355438232422,35.31181239363021

139.6360158920288,35.313090603025756

139.6363377571106,35.313213169988664

139.63650941848755,35.31368592653426

139.63706731796265,35.31433377360878

139.63760375976562,35.31506916129673

139.63820457458496,35.31608468568258

139.63822603225708,35.31671500474969

139.633891582489,35.31713521473183

139.63078022003174,35.317312052419815

139.6289563179016,35.31673426439491

139.62537288665771,35.31601640079532

139.62493300437927,35.31683931707012

139.62274432182312,35.318082430031566

139.6206521987915,35.32100104417254

139.62007820606232,35.32742617587357

139.62111622095108,35.329590384931535

139.6212449669838,35.33148319975148

139.62037861347198,35.331378166102226

139.6199843287468,35.3314175537367

139.61993604898453,35.33170420760937

139.61999773979187,35.33203900054002

139.61999505758286,35.33231252314687

139.61986631155014,35.33254446959218

139.61979389190674,35.336935134045376

139.62048053741455,35.33936821123701

139.6203088760376,35.33975329587599

139.61902141571045,35.34178371180497

139.61829721927643,35.34220204112146

139.61866199970245,35.342731513456684

139.61660206317902,35.34376419331703

139.61593687534332,35.343956725390434

139.61129128932953,35.344731224777654

139.61041688919067,35.345163540994

139.6093225479126,35.34614368252144

139.6084749698639,35.347036301065934

139.60789561271667,35.34897027407597

139.6069622039795,35.350816693787074

139.6068549156189,35.352855582153644

139.606693983078,35.35421189569119

139.6068549156189,35.35575194022067

139.60676908493042,35.356985704705835

139.60623264312744,35.358901939828456

139.6061897277832,35.36052064182823

139.60673689842224,35.362043067067724

139.60736989974976,35.362883013532

139.61206912994385,35.365822757339565

139.61312055587769,35.36698637635618

139.6134102344513,35.368009997262035

139.61307764053345,35.36904935292668

139.61015939712524,35.37561063259531

139.60919380187988,35.37711527753762

139.60623264312744,35.37704529467405

139.60445165634155,35.3762947246194

139.60386157035828,35.375621130188655

139.60379719734192,35.37411645738611

139.60410833358765,35.37271673656808

139.60407614707947,35.37234055745931

139.60367918014526,35.37199062183042

139.60302472114563,35.37200811864791

139.60278868675232,35.37226182207509

139.60188746452332,35.37158819398145

139.60111498832703,35.37127324904777

139.60028886795044,35.3709845484456

139.59980607032776,35.370704595360294

139.5996129512787,35.37065210404869

139.59943056106567,35.37120326111783

139.5940661430359,35.369628516649065

139.59286451339722,35.36919983088999

139.58793997764587,35.36666266447924

139.58701729774475,35.36625146103402

139.58571910858154,35.366015236830954

139.58447456359863,35.366050233052796

139.58334803581238,35.36633895130417

139.58226442337036,35.36680264815291

139.57830548286438,35.36965476264197

139.5775008201599,35.37009219460078

139.5751190185547,35.371054536565204

139.5730483531952,35.371885640845875

139.57077383995056,35.37283921310886

139.56947565078735,35.373687795464576

139.56740498542786,35.37548990983999

139.56669688224792,35.37513123979827

139.5662248134613,35.37473757572232

139.56590294837952,35.37436140603325

139.5657742023468,35.37404997117641

139.56576079130173,35.3736497406537

139.56597536802292,35.372978311220415

139.56588953733444,35.372516836937635

139.5649641752243,35.37132049084614

139.56483274698257,35.37112802400542

139.56393957138062,35.369119342724375

139.56031322479248,35.36687963909665

139.55790996551514,35.365479792771474

139.55679953098297,35.3636538316989

139.55610752105713,35.363592586482675

139.5546966791153,35.36306325089201

</coordinates>

<jogsiminfo>

18,139.5536881685257,35.36369407851664,1,1,0,0,1.4,0,0,0

</jogsiminfo>

</LineString></Placemark></Document></kml>

2008-07-22

[]関連エントリーのツリーをたどれるグレモン

結局概要表示機能追加した。unsafeWindow使いまくり大丈夫かいな。

// ==UserScript==
// @name	Hatena Bookmark Tree Expander
// @namespace	http://anond.hatelabo.jp/
// @include	http://b.hatena.ne.jp/entry/*
// ==/UserScript==
// <div class="info">
//   <ul id="similar_entries" class="bookmarklist">
//     <li></li>
//   </ul>
// </div>
// <div class="info">
//   <ul id="referred_entries" class="bookmarklist">
//     <li id="referred-entry-\d+"></li>
//   </ul>
// </div>
// <div class="info">
//   <ul id="relation_diary" class="bookmarklist">
//     <li id="diary-{id}-\d+"></li>
//   </ul>
// </div>
(function() {

function main() {
	loadBookmarkCommentViewer();
	similar.prototype.rootAppend();
	referred.prototype.rootAppend();
}

function HBTM(target) {
	this.target = target;
	this.targetXPath = "//ul[@id='"+target+"']/li";
	this.targetRegExp = new RegExp('<ul id="'+target+'"(.|\\s)*?</ul>');
}
HBTM.prototype = {
	openIcon:
		'<img width="15" height="15" class="icon" style="opacity: 0.6" src="http://anond.hatelabo.jp/images/common/open.gif"/>',
	closeIcon:
		'<img width="15" height="15" class="icon" style="opacity: 0.6" src="http://anond.hatelabo.jp/images/common/close.gif"/>',
	loadingIcon:
		'<img width="13" height="13" class="icon" src="http://anond.hatelabo.jp/images/common/loading.gif"/>',
	commentIcon: function(url) {
		return '<img class="hatena-bcomment-view-icon" src="http://r.hatena.ne.jp/images/popup.gif" onclick="iconImageClickHandler(this, \''+url+'\', event);">'
	},
	create: function() {
		this.comment = document.createElement("span");
		this.comment.innerHTML = this.commentIcon($X("string(descendant::a/@href)", this.node).value());
		this.open = document.createElement("a");
		this.open.href = "javascript:void(0)";
		this.open.innerHTML = this.openIcon;
		this.close = document.createElement("a");
		this.close.href = "javascript:void(0)";
		this.close.innerHTML = this.closeIcon;
		this.close.style.display = "none";
		this.loading = document.createElement("span");
		this.loading.innerHTML = this.loadingIcon;
		this.loading.style.display = "none";
		this.node.appendChild(this.comment);
		this.node.appendChild(document.createTextNode(" "));
		this.node.appendChild(this.open);
		this.node.appendChild(this.close);
		this.node.appendChild(this.loading);
		this.open.addEventListener("click", bind(this.openAct, this), false);
		this.close.addEventListener("click", bind(this.closeAct, this), false);
	},
	openAct: function() {
		this.open.style.display = "none";
		if (this.tree) {
			this.tree.style.display = "block";
			this.close.style.display = "inline";
		} else {
			this.loading.style.display = "inline";
			this.load();
		}
	},
	closeAct: function() {
		if (this.tree) {
			this.tree.style.display = "none";
			this.close.style.display = "none";
			this.open.style.display = "inline";
		}
	},
	load: function() {
		var url = $X("string(descendant::a[starts-with(@href, '/entry/')]/@href)", this.node).value();
		GM_xmlhttpRequest({
			method: "GET",
			url: "http://b.hatena.ne.jp"+url,
			onload: bind(this.loadCallback, this)
		});
	},
	loadCallback: function(result) {
		var match = result.responseText.match(this.targetRegExp);
		if (match) {
			var sandbox = document.createElement("div");
			sandbox.innerHTML = match[0].replace(this.target,"");
			this.tree = sandbox.firstChild;
		} else {
			this.tree = document.createElement("ul");
		}
		this.append();
		this.loading.style.display = "none";
		this.close.style.display = "inline";
	},
	append: function() {
		this.tree.style.backgroundColor = "transparent";
		this.tree.style.listStyleType = "circle";
		this.node.appendChild(this.tree);
		$X("li", this.tree).each(function(n) {
			var a = $X("a",n).node();
			var c = $X("count(//li/a[@href='"+a.href+"'])").value();
			if (c > 1) n.parentNode.removeChild(n);
		});
		$X("li", this.tree).each(bind(function(node){new this.constructor(node)}, this));
	},
	rootAppend: function() {
		$X(this.targetXPath).each(bind(function(node){new this.constructor(node)}, this));
	}
};

function similar(node) {
	this.node = node;
	this.create();
}
similar.prototype = new HBTM("similar_entries");
similar.prototype.constructor = similar;

function referred(node) {
	this.node = node;
	this.create();
}
referred.prototype = new HBTM("referred_entries");
referred.prototype.constructor = referred;

function loadBookmarkCommentViewer() {
	var head = document.getElementsByTagName("head")[0];
	var script = document.createElement("script");
	script.type = "text/javascript";
	script.src = "http://b.hatena.ne.jp/js/BookmarkCommentViewerAllInOne.1.2.js";
	head.appendChild(script);
	var css = document.createElement("link");
	css.rel="stylesheet";
	css.href="http://d.hatena.ne.jp/css/base.css";
	css.type="text/css";
	css.media="all";
	head.insertBefore(css, head.firstChild);
	window.addEventListener("load",function(){
		var BCV = unsafeWindow.BookmarkCommentViewer;
		BCV.options['screenshot'] = true;
		var asyncCommnetView = BCV.asyncCommnetView;
		BCV.asyncCommnetView = function(url, onCompleteCallback) {
			var div = asyncCommnetView(url, function(){
				onCompleteCallback.apply(this, arguments);
				new unsafeWindow.Ten.XHR("http://b.hatena.ne.jp/entry/rss/"+url, {}, function(result) {
					if (! result.responseText.match(/<description>(.*?)<\/description>/))
						return;
					if (! RegExp.$1)
						return;
//					var desc = document.createTextNode("desc: "+RegExp.$1);
					var desc = document.createElement("li");
					desc.appendChild(document.createTextNode("desc: "+RegExp.$1));
					div.lastChild.insertBefore(desc,div.lastChild.getElementsByTagName("li")[0]);
				});
			});
			return div;
		};
		BCV.asyncCommnetView.origin = asyncCommnetView;
	}, false);
}

function bind(f,o) {return function() {return f.apply(o, arguments)}}

function $X(xpath, context) {
	if (!(this instanceof $X))
		return new $X(xpath, context);
	this.xpath = xpath;
	this.context = context || document;
}
$X.prototype = {
	evaluate: function() {
		var result = document.evaluate(this.xpath, this.context, null, this.type, null);
		switch (result.resultType) {
			case XPathResult.STRING_TYPE : return result.stringValue;
			case XPathResult.NUMBER_TYPE : return result.numberValue;
			case XPathResult.BOOLEAN_TYPE: return result.booleanValue;
			case XPathResult.FIRST_ORDERED_NODE_TYPE: return result.singleNodeValue;
		}
		return result;
	},
	node: function() {
		this.type = XPathResult.FIRST_ORDERED_NODE_TYPE;
		return this.evaluate();
	},
	value: function() {
		this.type = XPathResult.ANY_TYPE;
		return this.evaluate();
	},
	each: function(func) {
		this.type = XPathResult.ORDERED_NODE_SNAPSHOT_TYPE;
		var result = this.evaluate();
		for (var i=0; i<result.snapshotLength; i++)
			func(result.snapshotItem(i));
	}
};

main();

})();

2008-07-18

vimperator最高

ほんとにもう最高。

楽したい人間+ハマり性な人間には、こーゆーカスタマイズがしがし出来るツールが最高なのよ。

オレ流ブラウザ環境整備できるのももうタマラン。

エディタならvimemacsでもいいけど、あんまり詳しくない。

他のツールはカスタマイズ性で見劣りする。

こだわりのない人間にはどんなツールでもオッケーなんだろうね。

オレはこだわるところはこだわる。

ちょっとした不便に気づかないか気づいても甘受してしまうような人間と、今はクリアできなくともなんとか今後の課題にしたいと考える人間。

そこの違いだね。

どっちが得かというのはわからんけどね。

優劣とか損得の問題じゃなく、ただオレはそういう人種だってこと。


追記

ブクマありがとう

vimperatorrcねえ。特筆すべき点はないけど、あえて一部抜粋すれば、こんな感じ。

inoremap <C-1> <Esc>1gt
inoremap <C-2> <Esc>2gt
inoremap <C-3> <Esc>3gt
inoremap <C-4> <Esc>4gt
inoremap <C-5> <Esc>5gt
inoremap <C-6> <Esc>6gt
inoremap <C-7> <Esc>7gt
inoremap <C-8> <Esc>8gt
inoremap <C-9> <Esc>9gt
noremap <BS> H
noremap <S-BS> L
noremap ,b <Esc>:bmarks -tags=
noremap u :o<Space> " ldrc+ldrでoで:open出来ない問題を解決
" wildoptions=auto時に一瞬補完が表示されてウザいmapがある - Dis Communication - 符号無し
" http://unsigned.g.hatena.ne.jp/Trapezoid/20080620/1213961754
javascript <<EOM
[
    [',a',':dialog addbookmark'],
    [',c',':viewSBMComments -t h'],
    [',C',':viewSBMComments -t hdl'],
    [',d',':pindownload'],
    [',ld',':set ldrc'],
    [',p',':mb clear-pin'],
    [',q',':toggleldrc'],
    [',R',':so ~/_vimperatorrc'], 
    [',r',':res'],
    [',v',':!vim ~/_vimperatorrc'], 
    ['\\s',':scrapbook'],
    ['\\S',':scrap'],
    ['\\f',':firebug'],
    ['\\d',':dialog downloads'],
    ['\\p',':tabopen chrome://browser/content/places/places.xul'],
    ['!',':set invum'],
    ['B',':ls!'],
    ['\\a',':addons'],
    ['\\e',':errorconsole'],
    ['\\F',':firebugwindow'],
    ['\\d',':dialog downloads'],
    ['\\g',':oepnGMpanel'],
    ['\\G',':toggleGM'],
    ['e',':note'],
    ['<F11>',':fullscreen'],
    ['\\P',':placesnewwin'],
    ['\\H',':historynewwin'],
    ['<C-j>',':togglebookmarksidebar'],
    ['<C-k>',':togglehistorysidebar'],
    ['<C-l>',':addtoldr'],
    ['<C-S-Right>',':removerighttabs'],
    ['<C-S-Tab>',':previousfirebugtab'],
    [',o',':openselectedlinks'],
    [',3',':copy titleAndURL'],
    [',ig',':imageGet'],
    [',io',':imageOpen'],
    ['w',':submit'],
    [',lo',':logout'],
    // nicontroller.js
    [',ni',':nicoinfo'],
    [',np',':nicopause'],
    [',nm',':nicomute'],
    [',nv',':nicommentvisible'],
    [',nz',':nicosize'],
    [',ns',':nicoseek'],
].forEach(function([key,command]){
    liberator.mappings.addUserMap([liberator.modes.NORMAL], [key], "User defined mapping",
        function () { liberator.execute(command); }, {rhs: key, noremap: true});
});
EOM

javascript <<EOM
[
    ['<C-j>',':togglebookmarksidebar'],
    ['<C-k>',':togglehistorysidebar'],
].forEach(function([key,command]){
    liberator.mappings.addUserMap([liberator.modes.INSERT], [key], "User defined mapping",
        function () { liberator.execute(command); }, {rhs: key, noremap: true});
});
EOM
javascript <<EOM
// nicontroller.js plugin
// [N]-
// N 秒前にシークする。
// 指定なしの場合 10 秒前。
liberator.mappings.addUserMap(
    [liberator.modes.NORMAL],
    ['-'],
    'seek by count backward',
    function(count) {
        if(count === -1) count = 10;
        liberator.execute(':nicoseek! ' + '-' + count);
    },
    { flags: liberator.Mappings.flags.COUNT }
);

// [N]+
// N 秒後にシークする。
// 指定なしの場合 10 秒後。
liberator.mappings.addUserMap(
    [liberator.modes.NORMAL],
    ['+'],
    'seek by count forward',
    function(count) {
        if(count === -1) count = 10;
        liberator.execute(':nicoseek! ' + count);
    },
    { flags: liberator.Mappings.flags.COUNT }
);
EOM

Vimperatorで;bでリンクを新しいバックグラウンドのタブに開くようにする。

http://anond.hatelabo.jp/20080709195527

も俺の仕業なんだけど、これvimperator本体に実装してくれないかな。

気になる点・これからの課題

窓の杜 - 【NEWSFirefox 3のスマートロケーションバーに対応した「XUL/Migemo

http://www.forest.impress.co.jp/article/2008/07/07/xulmigemo0105.html

余談

Index of /

http://vimperator.driftaway.org/

に上がるのはたいてい朝の07:30になっているので、いつからかチェックするのが朝の習慣になった。

2008-07-17

犯行予告ジェネレータ

サーバーサイドでマジメに作ったら逮捕されるんだろうか…?けーさつこわいから悪用とかしないでね><

ところで2chのどっかの板の名前欄って人名と地名がランダム表示されるけど、どうやってリストを作成してるんだろ?

<html><head><title>反抗予告ジェネレータ</title><script type="text/javascript"><!--

var safe_mode = 1;
var date, place, object, action;

date = get_date();
object = get_object();
action = get_action();
httpRequest("http://ja.wikipedia.org/wiki/%E6%97%A5%E6%9C%AC%E3%81%AE%E5%A4%A7%E5%AD%A6%E4%B8%80%E8%A6%A7");

function get_date() {
	var now = new Date();
	now.setTime(now.getTime() + Math.floor(Math.random()*1000*60*60*24*30));

	if (safe_mode != 0) { now.setTime(now.getTime() + 1000*60*60*24*(365*3+366)/4*100); }

	return now.getYear()+"年"+(now.getMonth()+1)+"月"+now.getDate()+"日"+now.getHours()+"時"+now.getMinutes()+"分"+now.getSeconds()+"秒";
}

function get_object() {
	var b = ["小女子", "増田", "ひろゆき", "ぬこ"];
	return b[Math.floor(Math.random()*b.length)];
}

function get_action() {
	var b = ["投", "SATSUGAI", "なでなで", "もふもふ"];
	return b[Math.floor(Math.random()*b.length)];
}

function httpRequest(target_url) {
	try {
		if(window.XMLHttpRequest) {	httpObj = new XMLHttpRequest(); }
		else if(window.ActiveXObject) {	httpObj = new ActiveXObject("Microsoft.XMLHTTP"); }
		else { return; }
	} catch(e) { return; }

	httpObj.open("GET", target_url, true);
	httpObj.onreadystatechange = DataRead;
	httpObj.send("");

	return;
}

function DataRead() {
	if (httpObj.readyState == 4 &amp;&amp; httpObj.status == 200) {

		var res = httpObj.responseText;
		var b = new Array();
		b = res.match(/>([亜-熙]+)大学/g);
		place = b[Math.floor(Math.random()*b.length-1)].replace(">","");

		if (safe_mode != 0) { place = place.replace("大学", "○○"); }

		document.body.innerText = date+"に"+place+"あたりで"+object+"を"+action+"します…!";
	}
}

// --></script></head><body style="color:red; background-color:black; font-size:30px; text-align:center;"></body></html>

2008-07-08

はてなナツ100

青空文庫についたブックマークから選別。

ドグラ・マグラ http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000096/card2093.html

瓶詰地獄 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000096/card2381.html

創作人物の名前について http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000096/card2138.html

少女地獄 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000096/card935.html

江戸川乱歩氏に対する私の感想 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000096/card2128.html

懐中時計 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000096/card46823.html

探偵小説の真使命 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000096/card2135.html

黒死館殺人事件 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000125/card1317.html

科学者とあたま http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000042/card2359.html

ジャーナリズム雑感 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000042/card2492.html

電車の混雑について http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000042/card2449.html

科学上における権威価値と弊害 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000042/card42693.html

量的と質的統計的と http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000042/card2350.html

アインシュタイン http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000042/card43074.html

化け物の進化 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000042/card2346.html

アインシュタイン教育http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000042/card43075.html

ニイチェに就いての雑感 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000067/card1766.html

純情小曲集 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000067/card1788.html

桜の樹の下には http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000074/card427.html

檸檬 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000074/card46349.html

山月記 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000119/card624.html

悟浄歎異 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000119/card617.html

李陵 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000119/card1737.html

名人http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000119/card621.html

セロ弾きのゴーシュ http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000081/card470.html

ツェねずみ http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000081/card1949.html

やまなし http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000081/card472.html

グスコーブドリの伝記 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000081/card1924.html

銀河鉄道の夜 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000081/card456.html

民芸術概論綱要 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000081/card2386.html

注文の多い料理店 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000081/card43754.html

夢十夜 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000148/card799.html

こころ http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000148/card773.html

草枕 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000148/card776.html

道楽職業 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000148/card757.html

吾輩は猫である http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000148/card789.html

私の個人主義 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000148/card772.html

田山花袋君に答う http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000148/card2370.html

蟹工船 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000156/card1465.html

老妓抄 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000076/card447.html

狂童女の恋 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000076/card986.html

人間失格 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000035/card301.html

小説の面白さ http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000035/card1604.html

如是我聞 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000035/card1084.html

トカトントン http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000035/card2285.html

お伽草紙 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000035/card307.html

女生徒 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000035/card275.html

駈込み訴え http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000035/card277.html

斜陽 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000035/card1565.html

グッド・バイ http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000035/card258.html

http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000035/card2288.html

走れメロス http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000035/card1567.html

侏儒の言葉 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000879/card158.html

河童 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000879/card69.html

藪の中 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000879/card179.html

文芸的な、余りに文芸的な http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000879/card26.html

あばばばば http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000879/card14.html

蜘蛛の糸 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000879/card92.html

夜長姫と耳男 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/001095/card42614.html

堕落論 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/001095/card42620.html

桜の森の満開の下 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/001095/card42618.html

不良少年キリスト http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/001095/card42840.html

推理小説http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/001095/card43189.html

教祖文学 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/001095/card42864.html

阿部定さんの印象 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/001095/card42883.html

深夜は睡るに限ること http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/001095/card43159.html

青春http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/001095/card42624.html

風と光と二十の私と http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/001095/card42615.html

日本文化私観 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/001095/card42625.html

勉強http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/001095/card42623.html

博士 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/001095/card42616.html

「いき」の構造 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000065/card393.html

少女http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000214/card1098.html

蒲団 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000214/card1669.html

セメント樽の中の手紙 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000031/card228.html

  • 桑原隲蔵

支那人食人肉風習 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000372/card4270.html

支那人間に於ける食人肉の風習 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000372/card42810.html

最終戦争論・戦争史大観 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000230/card1154.html

十八時の音楽http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000160/card865.html

音楽の反方法論序説 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000059/card374.html

手袋を買いに http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000121/card637.html

あたらしい憲法のはなし http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/001128/card43037.html

尾崎放哉選句集 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000195/card974.html

僕の読書http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000040/card46359.html

大阪の憂鬱 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000040/card46499.html

読書子に寄す http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/001119/card42753.html

小さなメディアの必要 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000117/card611.html

死者の書 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000933/card4398.html

平安朝時代の漢文学 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000284/card3340.html

公開書架(Open-shelf-system)につきて http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/001227/card46210.html

善の研究 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000182/card946.html

絶対矛盾自己同一 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000182/card1755.html

一握の砂 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000153/card816.html

役人学三則 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000922/card43242.html

言語体の文章と浮雲 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000051/card1446.html

在りし日の歌 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000026/card219.html

ルバイヤート http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000288/card1760.html

阿Q正伝 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/001124/card42934.html

伽藍とバザール http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000029/card227.html

あのときの王子くん http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/001265/card46817.html

まざあ・ぐうす http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000000/card546.html

ラプンツェル http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/001091/card42309.html

アメリカ独立宣言 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/001189/card45257.html

ガリバー旅行記 http://mgw.hatena.ne.jp/?url=http://www.aozora.gr.jp/cards/000912/card4673.html

ケータイで読もう!QRコードはこちら↓

http://d.hatena.ne.jp/barcode?str=http://anond.hatelabo.jp/20080708184613

2008-05-03

答えはいらない。ただ、今は、僕が何かになれればいいのかな。だめだ。

I wish I was a neutron bomb, for once I could go off

I wish I was a sacrifice but somehow still lived on

I wish I was a sentimental ornament you hung onThe christmas tree,

I wish I was the star that went on top

I wish I was the evidence,

I wish I was the grounds For 50 million hands upraised and open toward the sky

I wish I was a sailor with someone who waited for me

I wish I was as fortunate, as fortunate as me

I wish I was a messenger and all the news was good

I wish I was the full moon shining off a camaros hood

I wish I was an alien at home behind the sun

I wish I was the souvenir you kept your house key on

I wish I was the pedal brake that you depended on

I wish I was the verb to trust and never let you down

I wish I was a radio song, the one that you turned up

2008-04-28

はてなブックマーク常連

http://www.dan.co.jp/~dankogai/ldr-hbc/ より

1http://www.itmedia.co.jp/ITmedia
2http://japan.cnet.com/CNET Japan
3http://itpro.nikkeibp.co.jp/ITpro総合
4http://gigazine.net/GIGAZINE
5http://www.asahi.com/asahi.com
6http://www.atmarkit.co.jp/@IT
7http://www.itmedia.co.jp/bizid/ITmedia Biz.ID 最新記事一覧
8http://blog.livedoor.jp/dqnplus/痛いニュース(ノ∀`)
9http://journal.mycom.co.jp/マイコミジャーナル
10http://plusd.itmedia.co.jp/ITmedia +D 最新記事一覧
11http://blog.livedoor.jp/dankogai/404 Blog Not Found
12http://phpspot.org/blog/phpspot開発日誌
13http://internet.watch.impress.co.jp/INTERNET Watch
14http://www.itmedia.co.jp/enterprise/ITmedia エンタープライズ 最新記事一覧
15http://www.mainichi-msn.co.jp/MSN-Mainichi INTERACTIVE
16http://www.popxpop.com/popxpop
17http://japanese.engadget.com/Engadget Japanese
18http://portal.nifty.com/デイリーポータルZ:ヘッドライン
19http://alfalfa.livedoor.biz/アルファルファモザイク
20http://slashdot.jp/スラッシュドットジャパン
21http://allabout.co.jp/All About[オールアバウト]
22http://www.forest.impress.co.jp/窓の杜
23http://www.nikkei.co.jp/NIKKEI NET
24http://www.ideaxidea.com/idea*idea
25http://e0166.blog89.fc2.com/ホームページを作る人のネタ帳
26http://news4vip.livedoor.biz/【2ch】ニュー速クオリティ
27http://japan.internet.com/Japan.internet.com
28http://www.gizmodo.jp/Gizmodo Japan(ギズモードジャパン
29http://netafull.net/[N]ネタフル
30http://www.designwalker.com/DesignWalker
31http://www.nikkeibp.co.jp/nikkei BPnet ニュースコラム一覧
32http://pc.watch.impress.co.jp/PC Watch
33http://guideline.livedoor.biz/日刊スレッドイド
34http://news.livedoor.com/livedoor NEWS - 主なトピック
35http://jp.techcrunch.com/TechCrunch Japanese
36http://labs.unoh.net/ウノウラボ Unoh Labs
37http://web-tan.forum.impressrd.jp/Web担当者Forum
38http://plusd.itmedia.co.jp/mobile/+D Mobile 最新記事一覧
39http://bb.watch.impress.co.jp/BB Watch
40http://www.100shiki.com/100SHIKI
41http://k-tai.impress.co.jp/ケータイ Watch
42http://k-tai.impress.co.jp/ケータイWatch
43http://satoshi.blogs.com/life/Life is beautiful
44http://www.j-cast.com/J-CASTニュース
45http://www.moongift.jp/MOONGIFT
46http://www.future-planning.net/x/FPN
47http://wiredvision.jp/news/WIRED VISION NEWS
48http://www.ringolab.com/note/daiya/情報考学 Passion For The Future
49http://kengo.preston-net.com/Going My Way
50http://blog.goo.ne.jp/ikedanobuo池田信夫 blog
51http://www.excite.co.jp/News/bit/ExciteBit
52http://d.hatena.ne.jp/finalvent/finalvent日記
53http://hotwired.goo.ne.jp/news/WIRED NEWS
54http://d.hatena.ne.jp/fromdusktildawn/分裂勘違い劇場
55http://google-mania.net/Google Mania - グーグルの便利な使い方
56http://d.hatena.ne.jp/naoya/naoyaのはてなダイアリー
57http://d.hatena.ne.jp/umedamochio/My Life Between Silicon Valley and Japan
58http://urasoku.blog106.fc2.com/ハムスター速報 2ろぐ
59http://dain.cocolog-nifty.com/myblog/わたしが知らないスゴ本は、きっとあなたが読んでいる
60http://finalvent.cocolog-nifty.com/fareastblog/極東ブログ
61http://lifehacking.jp/Lifehacking.jp
62http://jibun.atmarkit.co.jp/@IT自分戦略研究所
63http://www.geekpage.jp/Geekなぺーじ
64http://d.hatena.ne.jp/amachang/IT戦記
65http://d.hatena.ne.jp/kanose/ARTIFACT@ハテナ系
66http://opentechpress.jp/Open Tech Press
67http://d.hatena.ne.jp/essa/アンカテ(Uncategorizable Blog)
68http://imihu.blog30.fc2.com/イミフwwwうはwwwwおkwwww
69http://zen.seesaa.net/メディアパブ
70http://cyblog.jp/シゴタノ! - シゴタノ!
71http://labs.cybozu.co.jp/blog/akky/秋元@サイボウズラボプログラマーブログ
72http://rikunabi-next.yahoo.co.jp/tech/Tech総研
73http://d.hatena.ne.jp/jkondo/jkondo日記
74http://markezine.jp/MarkeZine:新着記事
75http://takagi-hiromitsu.jp/diary/高木浩光@自宅の日記
76http://www.nikkeibp.co.jp/style/biz/nikkei BPnet ビジネススタイルコラム一覧
77http://akihitok.typepad.jp/blog/POLAR BEAR BLOG
78http://trendy.nikkeibp.co.jp/nikkei TRENDYnet(日経トレンディネット
79http://blog.tatsuru.com/内田樹研究室
80http://www.akibablog.net/アキバBlog秋葉原ブログ
81http://www.goodpic.com/mt/Goodpic
82http://www.excite.co.jp/News/odd/Excite世界びっくりニュース
83http://gitanez.seesaa.net/DESIGN IT! w/LOVE
84http://blog.livedoor.jp/lalha/小野和俊のブログ
85http://d.hatena.ne.jp/hatenadiary/はてなダイアリー日記
86http://la.ma.la/blog/最速インターフェース研究会
87http://www.chikawatanabe.com/blog/On Off and Beyond
88http://d.hatena.ne.jp/mkusunok/雑種路線でいこう
89http://takekuma.cocolog-nifty.com/blog/たけくまメモ
90http://neta.ywcafe.net/Web屋のネタ帳
91http://www.h-yamaguchi.net/H-Yamaguchi.net
92http://caramel-tea.com/caramel*vanilla
93http://enterprise.watch.impress.co.jp/Enterprise Watch
94http://d.hatena.ne.jp/starocker/sta la sta
95http://www.sem-r.com/SEMリサーチ
96http://www.bounce.com/bounce.comニュース
97http://www.yukan-fuji.com/夕刊フジBLOG
98http://blog.livedoor.jp/ld_directors/livedoor ディレクター Blog
99http://d.hatena.ne.jp/secondlife/川o・-・)<2nd life
100http://japan.zdnet.com/news/ZDNet Japan ニュース
101http://r25.jp/R25.jp ランキンレビュー
102http://deztec.jp/design/備忘録
103http://kirik.tea-nifty.com/diary/切込隊長BLOGブログ
104http://www.akiyan.com/akiyan.com
105http://blog.mf-davinci.com/mori_log/MORI LOG ACADEMY
106http://shinta.tea-nifty.com/nikki/R30::マーケティング社会時評
107http://www.simplexsimple.com/simplexsimple.com
108http://sinseihikikomori.bblog.jp/真性引き篭もり
109http://column.chbox.jp/home/kiri/archives/blog/main/切込隊長BLOGブログ
110http://d.hatena.ne.jp/higepon/ひげぽん OSとか作っちゃうかMona-
111http://d.hatena.ne.jp/brazil/実用
112http://www.drk7.jp/MT/Free CGI / アフィリエイト支援 CGI 提供サイト :: Drk7jp
113http://blog.bulknews.net/mt/blog.bulknews.net
114http://www.lucky-bag.com/Lucky bag::blog
115http://d.hatena.ne.jp/Hamachiya2/ぼくはまちちゃん!(Hatena)
116http://2xup.org/2xup.org
117http://artifact-jp.com/ARTIFACT ―人工事実―
118http://jp.reuters.com/ Reuters: トップニュース
119http://chalow.net/たつをの ChangeLog
120http://bogusne.ws/bogusnews
121http://coolsummer.typepad.com/kotori/小鳥ピヨピヨ(a cheeping little bird)
122http://www.barks.jp/BARKS - News
123http://www.nikkeibp.co.jp/news/flash/nikkei BPnet 最新ニュース
124http://www.otsune.com/diary/void GraphicWizardsLair( void ); //
125http://hail2u.net/blog/hail2u.net - Weblog
126http://googlejapan.blogspot.com/Google Japan Blog
127http://d.hatena.ne.jp/TomoMachi/ベイエリア在住町山智浩アメリカ日記
128http://www.web-20.net/Web2.0ナビ
129http://www.tez.com/blog/isologue - by 磯崎哲也事務所
130http://www.yasuhisa.com/couldcould
131http://mitaimon.cocolog-nifty.com/blog/[mi]みたいもん!
132http://naoya.g.hatena.ne.jp/naoya/naoyaの日記
133http://d.hatena.ne.jp/kowagari/おれはおまえのパパじゃない
134http://www.narinari.com/Narinari.com
135http://www.milkstand.net/fsgarage/F's Garage
136http://www.ariel-networks.com/blogs/tokuriki/ワークスタイルメモ
137http://blog.myrss.jp/a++ My RSS 管理人ブログ
138http://www.rubyist.net/~matz/Matzにっき
139http://kotonoha.main.jp/絵文録ことのは
140http://www.socialnetworking.jp/SNS,ソーシャルネットワーキング.jp
141http://blog.livedoor.jp/kensuu/ロケスタ社長日記
142http://mojix.org/Zopeジャンキー日記
143http://d.hatena.ne.jp/yomoyomo/YAMDAS現更新履歴
144http://x51.org/X51.ORG : Occult News for Nerds, Truth is Out There
145http://xtc.bz/音楽配信メモ
146http://d.hatena.ne.jp/michikaifu/Tech Mom from Silicon Valley
147http://0xcc.net/blog/bkブログ
148http://d.hatena.ne.jp/m-hiyama/檜山正幸のキマイラ飼育
149http://kokogiko.net/ここギコ!
150http://adinnovator.typepad.com/ad_innovator/Ad Innovator
151http://level.s69.xrea.com/mozilla/えむもじら
152http://d.hatena.ne.jp/antipop/antipop
153http://as-is.net/blog/Ogawa::Memoranda
154http://blog.livedoor.jp/insidears/【2ch】ニュー速VIPブログ(`・ω・´)
155http://nanigashi3.blog40.fc2.com/となりのインテリア
156http://www.radiumsoftware.com/Radium Software
157http://blog.goo.ne.jp/kitanotakeshi55債券・株・為替 中年金融マン ぐっちーさんの金持ちまっしぐら 
158http://d.hatena.ne.jp/kusigahama/いぬビーム
159http://yaplog.jp/strawberry2/しょこたん☆ぶろぐ
160http://kenmogi.cocolog-nifty.com/qualia/茂木健一郎 クオリア日記
161http://www.asks.jp/users/hiro/ひろゆき日記オープンSNS。
162http://sho.tdiary.net/ただのにっき
163http://www.mediologic.com/weblog/mediologic.com/weblog
164http://abcdane.net/ABC(アメリカン・バカコメディ)振興会
165http://www.hyuki.com/d/結城浩日記
166http://ohnishi.livedoor.biz/大西 宏のマーケティングエッセンス
167http://blog.livedoor.jp/nipotan/にぽたん研究所
168http://d.hatena.ne.jp/habuakihiro/もうすぐ初夏だよはぶにっき
169http://www.mynewsjapan.com/MyNewsJapan
170http://d.hatena.ne.jp/kurimax/俺のターン
171http://d.hatena.ne.jp/yaneurao/やねうらおよっちゃんイカを買いに行ったついでに電子部品を買い漁る男
172http://3ping.org/3ping.org
173http://www.cyzo.com/日刊サイゾー
174http://subtech.g.hatena.ne.jp/miyagawa/Bulknews::Subtech
175http://d.hatena.ne.jp/reikon/tapestry::reikon
176http://lifehacker.com/Lifehacker
177http://blog.nomadscafe.jp/blog.nomadscafe.jp
178http://d.hatena.ne.jp/higayasuo/ひがやすを blog
179http://blog.zikokeihatu.com/俺と100冊の成功本
180http://www.inside-games.jp/iNSIDE
181http://www.aivy.co.jp/BLOG_TEST/nagasawa/[モ]Modern Syntax
182http://kikko.cocolog-nifty.com/kikko/きっこのブログ
183http://yohei-y.blogspot.com/yohei-y:weblog
184http://blog.tokuriki.com/tokuriki.com
185http://d.hatena.ne.jp/gatonews/ガ島通信
186http://japan.cnet.com/blog/kenn/島健太郎 / Kenn's Clairvoyance
187http://www.gmail-maniacs.net/Gmail Maniacs
188http://hatena.g.hatena.ne.jp/hatenatech/はてな技術発表会日記
189http://mala.nowa.jp/辛辣インターフェース評議会
190http://furukawablog.spaces.live.com/古川ブログ
191http://rebecca.ac/milano/mt/Milano::Monolog
192http://d.hatena.ne.jp/hyuki/結城浩はてな日記
193http://d.hatena.ne.jp/softether/登 大遊@筑波大学情報学類の SoftEther VPN 日記
194http://tdiary.ishinao.net/いしなお!
195http://d.hatena.ne.jp/textfile/www.textfile.org
196http://alpha.mixi.co.jp/blogmixi Engineers' Blog
197http://www.kanzaki.com/memo/The Web KANZAKI - ちょっとしたメモ
198http://d.hatena.ne.jp/wlj-Friday/山形浩生 の「経済トリセツ」  Formerly supported by WindowsLiveJournal
199http://www.bebit.co.jp/memo/ユーザビリティ実践メモ
200http://booklog.kinokuniya.co.jp/紀伊國屋書店:::書評空間
201http://blog.livedoor.jp/markzu/F1通信
202http://kakutani.com/角谷HTML化計画
203http://www.yuichiro-itakura.com/板倉雄一郎事務所
204http://d.hatena.ne.jp/hyoshiok/未来のいつか/hyoshiokの日記
205http://kimuratakeshi.cocolog-nifty.com/blog/週刊!木村剛 powered by ココログ
206http://www.bloglines.com/BloglinesNews
207http://bb.watch.impress.co.jp/stapa_blog/スタパブログ
208http://gachapin.fujitvkidsclub.jp/ガチャピン日記
209http://ameblo.jp/argv/悪態プログラマ
210http://googleblog.blogspot.com/Official Google Blog
211http://blog.kokokukaigi.com/広告会議広告×インターネット
212http://ameblo.jp/shibuya/渋谷ではたらく社長アメブロ
213http://kusanone.exblog.jp/ネット新聞を殺すのかblog
214http://pitecan.com/blog/ユビキタス街角
215http://www.st.ryukoku.ac.jp/~kjm/security/memo/セキュリティホール memo
216http://manabekawori.cocolog-nifty.com/blog/眞鍋かをりのココだけの話 powered by ココログ
217http://ma-to-me.com/まとめ.com
218http://d.hatena.ne.jp/itokoichi/伊藤浩一のW-ZERO3応援団
219http://blog.livedoor.jp/staff_reader/livedoor Reader 開発日誌
220http://blog.goo.ne.jp/hwj-sasaki佐々木俊尚の「ITジャーナル
221http://blog.goo.ne.jp/clean110特殊清掃「戦う男たち」
222http://uva.jp/dh/mt/dh memoranda
223http://blog.livedoor.jp/kawase_oh/為替王
224http://shibuyajs.org/Shibuya.js
225http://d.hatena.ne.jp/rubyco/rubyco(るびこ)の日記
226http://www.zaeega.com/ザイーガ
227http://ameblo.jp/wakatsuki/若槻千夏ブログ『マーボー豆腐は飲み物です』 Powered by アメブロ
228http://www.kumagai.com/【クマガイコム】GMOインターネット社長 熊谷正寿ブログです
229http://blog.livedoor.jp/hirox1492/元祖しゃちょう日記
230http://i.loveruby.net/d/青木日記
231http://minami.typepad.com/blogcabin/B-log Cabin TP
232http://joi.ito.com/Joi Ito's Web - JP
233http://kenshimura.livedoor.biz/ken's blog
234http://blog.livedoor.jp/warata2kki/ワラタ2ッキ
235http://secure.ddo.jp/~kaku/tdiary/オレンジニュース
236http://shiraishi.seesaa.net/がんばれ、生協の白石さん
237http://japan.cnet.com/blog/takawata/渡辺隆広のサーチエンジン情報館
238http://d.hatena.ne.jp/taquet/街でみかけた書体
239http://indigosong.net/となりの801ちゃん
240http://blog.hbkr.jp/hbkr : ハバカリ
241http://www.29man.net/blog/29man(ニクマン)
242http://japan.cnet.com/blog/watanabe/渡辺聡・情報化社会の航海図
243http://www.watch.impress.co.jp/internet/INTERNET Watch
244http://b.hatena.ne.jp/videoはてなブックマーク - 注目の動画
245http://buy.livedoor.biz/激安★超特価商店街
246http://blog.livedoor.jp/yinlingofjoytoy/インリン・オブ・ジョイトイ日記
247http://greasemonkey.blog67.fc2.com/Greasemonkeyで快適Web生活
248http://b.hatena.ne.jp/naoya/naoyaのブックマーク
249http://b.hatena.ne.jp/hotentry?はてなブックマーク 最近の人気エントリー
250http://blog.livedoor.jp/aoi_sola/蒼井そら今日のSOLA模様 公式ブログ
251http://weblogs.nikkeibp.co.jp/topics/本日の必読記事
252http://www.ceonews.jp/近江商人JINBLOG
253http://blog.livedoor.jp/koi_to_taikutsu/峯田和伸の★がぶがぶDIEアリー
254http://q.hatena.ne.jp/list人力検索はてな - 質問一覧
255http://heartattack507.blog84.fc2.com/Heart Attack
256http://b.hatena.ne.jp/entrylist?url=http%3A%2F%2F&sort=hotはてなブックマーク - 注目エントリー一覧
257http://www.tdb.co.jp/tosan/jouhou.html帝国データバンク 大型倒産速報
258http://japan.cnet.com/blog/lessig/Lessig Blog (JP)
259http://www.kabujouhou.com/証券新報ダイジェスト
260http://headline.2ch.net/bbynews/2ちゃんねる ヘッドライン

2008-04-16

http://anond.hatelabo.jp/20080415182703

実行してみたら出力に変化がなかった。アルェー?

おっと、バグが。ちゃんとテストしてなかった。すんまそん。

# tree -pugs | perl -e '@line=<>; $max=(sort {$b<=>$a} map {/^(.*?)\[/; length($1)} @line)[0]; map {s/^(.*?)\[/$1 . " "x($max-length($1))."\["/e} @line; print @line'

毎回正規表現考えるのも面倒かなーとかとか。

理想を語ると出力形式指定できれば最強だなーとか妄想してた。

この辺は、ファイルにして ~/bin に放りこんで、自分好みに育て上げる、ってのがエロゲ^H^H^Hギーク楽しみ方かと。

雛型的には↓かなぁ。どうだろ。弾・monger・コーガイ氏が登場したら……滅多切りさるかもw

#!/usr/bin/perl
use strict;
use warnings;
use Getopt::Std;
use vars qw($opt_t);

# オプション処理
getopts('t');
# $opt_tがセットされていたらタブ処理、ということにする。

# コマンド起動
# 引数処理とかシグナルとか面倒なところは……
open TREE, "tree -pugs ".join(" ",@ARGV,"|") or die;
my @line = <TREE>; # 富豪的にいく
close TREE; # ここで子プロセスの処理だっけ?
# それともwaitするんだっけ?

# ツリー表示部分の最大長を求める。
my $max=(sort {$b<=>$a} map {/^(.*?)\[/; length($1)} @line)[0];
# 色々やる時はユーザ名とかグループ名とかファイル名とかの最大長がいるかも

foreach (@line) {
        if ($opt_t) {
                # タブ(\t)で位置をそろえるとか……
        } else {
                s/^(.*?)\[/$1 . " "x($max-length($1))."\["/e;
        }
        print;
}

treeへのオプションの与え方とか、それによる出力の変化とか考えると、結構面倒だけど、自分用に決め打ちしとけば何とかなるでしょう。

あと、「[%p<>%u<>%g<>%s]」みたいなのはCPANに転がってたりしそうな気もするので、それを使うとか。

そんなところでなかろうか。

[追記]

http://search.cpan.org/~darren/String-Format-1.14/Format.pm というのがあった。

2008-04-06

[]新年度なので、これからよくわかりたいOpenIDについて

##はじめに

 →OpenIDが仮に広まった未来には、サービス事業者がユーザ個人情報をどれだけ持つのが適正なのかを考えられるようになりたいよ

  • 今回整理している内容が事実と違ってることがあったら、速効おしえてちゃん!!

##OpenIDを利用したサービスは、将来オープンOpenIDプロバイダを受け入れることができる?

OpenIDを受け入れる、ということは「特定ではないIDプロバイダによって認証」されたユーザサービス事業者は受け入れるということになるよ。

※以下サービス事業者の例を、わかりやすくするために京都発のWebサービス提供会社はてなさん(以下はてな)にするよ

ここでいう「特定ではないIDプロバイダによって認証」というカッコ書きについて整理しておくね。

これ、逆に言うとこれまでのサービスって、はてなも勿論そうだけど「特定されるIDプロバイダによって認証」が行われていたんだということになるよね。

例えば、はてなというサービスにエンドユーザ増田が、はてなIDパスワードでもってログインを行う場合は、

増田はてなサービスはてな会員管理システム(これもはてなの一部だけど)の3者関係で考えると、

増田はてなサービスを利用するためにログインすると、はてなサービスは、はてなの会員管理システムに僕が僕であるためのIDパスワードを問い合わせして

はてな側に僕だよ、っていうことを認証、そしてサービス利用の許可(認可)していたわけだよね。

これまでの

はてなサービスはてなの会員管理システムで認証する、というお決まりのやり方を

はてなサービス→「特定ではないIDプロバイダによって認証」もOKにしちゃう!

っていうのがOpenIDの基本的な考えだと思ってるよ。

つまり、はてなに対してみんな大好きなmixi渋谷区)のゆるふわIDパスワードOpenID認証しちゃえ!ていう感じ。

OpenIDと呼ばれるもののコアなところって、この自分じゃない余所様でログインをさせるにあたっての

通信の決まり・振る舞い方についての仕組みとかのことなんだね。

認証機能の委譲、なんて難しい言葉で言われてもバカな僕にはわかんなかったから、とりあえずこんな感じで整理してみたよ。

でもね。増田自身がはてなの立場になって考えてみるとこう思うよきっと。

他所のプロバイダさんに認証をお願いしたら、、、

「コノ人確カニ○○○君!ザッツヒム!イッツOK!!」ていう怪しげな応答があったとしてもさ

「うちは京都サービスさかいに、妙ちくりんな英語まじりのプロバイダさんの言うことなんか信用できまへんなー」

自然と思ってしまうよきっと。これがひいてはOpenIDプロバイダの評判問題ってやつにつながる話だね。

あと、じゃあOpenIDプロバイダの認証結果は信じることにしたとしてでも今度は

「まーmixiさんところが認証OKてゆなら確実でっしゃろう?遠いところからよくきはりました。

どれ、アンタうちでもサービス使わせてやるさかい...あれれ?君、うちでいうところのid:誰くんでしたっけ?」

なっちゃうねーやっぱり。。これが認証と認可(属性情報交換)に関わる問題てやつだよ。

うーん、ちょっと自分自身にとってもムツカシくなってきたなぁ。もう少しわかりやすく書くね。

上の話ははてな子ちゃんが自分の会員管理システムログインさせない(外の会員管理システムログインする)ことにより、

自社のサービス提供では当たり前にできていたことができない、という問題が2つ出てきたねーということだよね。

1. 「あなた(Openプロバイダ)の認証、あ、あたし。信じていいの?ゴクリ・・・」

という信頼関係について。

2. 「あなた(エンドユーザ)は彼(OpenIDプロバイダ)に認められた人だから、アタシも、が、がんばって信じる!…けど、○○○君(エンドユーザ)のことをもっと知る必要があるの。。。」

という(エンドユーザの)認可・(OpenIDプロバイダからの)属性情報の受入(交換)について。

うー、あれ?

はてなスターではこの2つの問題をどうしているの?って思う人は多いよね。

たぶんはてなスターOpenID対応しているっていうのを聞いたことがあっても、実際にやったことある人は少数派じゃないかなまだ。。

じゃあこっからははてなスターを例にとって説明するよ!

詳しくは下のリンクの説明通りなんだけど、

http://www.hatena.ne.jp/info/openid

今回増田が問題としている2つについてはてなスターの機能はどーなってるの?ていうのを整理すると

1.「OpenIDプロバイダとの信頼関係について」=「フレンドプロバイダのみ認証OK!」(いわゆるホワイトリスト

2.「(エンドユーザ)認可・(OPとの)属性情報交換」=OpenIDユーザ名でスターがつく

という対応をしているみたい。

※ちなみにこの記事書くにあたって増田ははじめてOpenID経由ででスターつけてみたよ!!

つまり、

1.の信頼関係については、Livedoorなど数社のOpenIDプロバイダのみを受入OKにしているし、

2.の属性情報については、OpenID認証を行う際に必要なOpenIDプロバイダ側の「ユーザ名@OP名」でスターがつくだけ

  →なので属性情報交換などはほぼゼロだよね、って感じだったよ。

1.は、

「なーんだ。Open何とか言っておきながら内輪でのID連携かよ。うちも一応OpenIDプロバイダたててんだよ?え?無理?うちみたいなチンケなプロバイダは無視ですかそーですか」

みたいな中小企業のボヤキが聞こえてくるくらい全然Openじゃなくすることで一方での

はてな子ちゃんにとっての問題=「あなた(Openプロバイダ)の認証、あ、あたし。信じていいの?ゴクリ・・・」問題を回避しているということになるよね。

2.についてははてなスターはほぼガン無視を決め込んでいるのが今回よくわかりました!

今回増田がためしにOpenID認証経由でスターをつけてみたんだけど、

あのー、、増田も一応こうして増田をやっているので一応はてな市民であって、「あいでぃー:xxx」みたいな立場ではあるじゃないですか。

なのに、LivedoorIDでスターつけちゃったら「あいでぃー:xxx」でスターつけたことにならない><!(※)ので、

うーん、、ちょっとこれは深刻な機能不足だなーと思った次第ですー。いや?いいのかこれでOpenIDとしては。微妙だなぁ・・

(※)

だって、増田idhttp://s.hatena.ne.jp/xxx/starsでスターが反映されない

あと<増田のLivedooeのアカウント名>@livedoor のスターのカウント(上のhatena/user/starsに相当するページね)はどこにいったのだろう??

でもさぁ、

はてな子ちゃんの立場はそれはそれでよくわかるのよね。

いまいまのOpenIDセキュリティレベルでは、どこの馬の骨ともわからん奴にあなたのことについて

情報の連携を行ったりとか危険すぎるしね。しょうがないよね?

※ほんとは、はてなの「あいでぃー:xxx」とLivedooridがSocialに結びついてくれて、

自動的にhatenaidでスターをAddしたことになればいいんだけどねー。でもそれじゃあはてなIDログインしろってことと変わらんかー。

とも思うし難しいなぁこの辺。

こういう問題があるOpenID界隈では、でもこれらの問題について色々知恵を出し合って解決しようとしている

人もいるみたい。サイボウズのzigorouさんとか、他にもいっぱいいらっしゃるけど、皆さんすごいがんばってるみたい!すごい!

増田個人は、

1.については各OpenIDプロバイダIDを利用するサービス(Ryling Party)それぞれのホワイトリスト

Socialに連携/公開されてグラフになってエンドユーザが利用できる・できないの仕組みになるのがいいのかなー、

と思っていたりするよ。DNSみたいな公開されて相互利用できるよな仕組みがあればいいのかなー。

2.については属性情報の仕組みとしてはAXとかsregとかあるけど、要は使い方でリバティ・アライアンスの頃からしきりと言われているらしい

「串刺しにした」サービスの連携のためにどう属性情報流通させるのか?SSO連携が肝だよねー。とか。

また属性情報流通させるにあたってのその情報粒度は?っていう話を詰めなきゃいけないんだろうなー、というレベルぼんやり中です。

もう少し↑について知識・考えついてきたら、またまとめてみたいです。じゃあまたね!!

2008-03-19

[]3,601 lines of code/Lovd By Less - A Rails-Based Open Source Social Networking System

Total | 3601

http://lovdbyless.com/notes.html

Ruby On Rails ピチカート街道 - 統計で丸裸にされそう。ぃゃぁん rake stats -

demo

http://try.lovdbyless.com/

http://lovdbyless.com/

Interesting Rails Tidbits #5

Lovd By Less - A Rails-Based Open Source Social Networking System

http://lovdbyless.com/

such as photo galleries,

profiles, user following / friending,

messaging,

user blogs,

and Flickr and YouTube integration.

All of this checks in at an amazing 3,601 lines of code, including tests!



Convention over Configuration 設定より規約

Convention over configuration - Wikipedia, the free encyclopedia

Ruby on Rails 15分で Blog(ブログ) を作成する - Creating a Weblog in 15 minutes

Ruby の基本文法

Railsでブログを作ろう!(Creating a Weblog in 15 minutes) - hp12c Screencasts of Ruby on Rails

Ruby on Railsで一行掲示板を作成する (山本隆の開発日誌)

Book:JavaからRubyへ

JavaからRuby以下略』の「1章 はじめに」全文が見本PDF(16ページ)として公開されてます。

ftp://ftp.oreilly.co.jp/download/JavaRuby_01_sample.pdf

2008-03-15

妹がマンダム

先週の日曜日、妹が家に彼氏を連れてきた。

頭にタオルを巻いて、白い生地にワッペンがついた帽子を上から被って、あご髭がDQNでダンディーな彼氏は推定20歳。

一方妹は今年春に短大入学を迎える18歳。髪の毛は程よく額から天辺まで30センチ(推定)はあろうかという明るい茶色の巻き巻き頭。人工的に3センチ(推定)ほど延ばした睫毛と人工的に濠を巡らした卑小なお目目は、最早人のモノではない。

彼氏『こんちゃーっす。"妹"さんと仲良くさせてもらってますっ。』

顎を前に出して、帽子も脱がずに、お前より(おそらく)5年も長く生きているお兄様に向かって"こんちゃーっす"とは何事だ。おまえが俗にいうゆとり世代日本代表か。横柄にもほどがある。

起きっぱなしのパジャマで食卓に座って朝ご飯のロールケーキを頬張っていた俺に母から怒号が飛ぶ。

母『あんた。働きもせんと、昼まで寝よってからに…。春の決算不良債権処理されたなかったら、二人にお茶いれてあげるとか、なんもせーへんねやったら、二階の自分の部屋戻っとり!』

母よ、俺は何か、焦げ付いた債権か。もうちょっと暖かくなったら本気出すゆうてんのがわからんのか。

裾を引きずって階段を上る背後で、妹の楽しそうな声が聞こえる。フライパンの上で母が焼くベーコンのはじける音が聞こえる。二年前から壊れっぱなしの風呂場の外窓から風の抜ける音が聞こえる。二言目には"マヂッスか"と母の言うことに相づちを入れる彼氏の声が聞こえる。

妹よ、そんな彼氏の何処がいいのだ。

歳を取って疎遠になってきたが、今でもかわいい妹だ。このあいだも、郵便受けに入っていた俺宛のAmazonからの箱を勝手に開けて、中に入っていた限定版らきすたDVDを手に取って俺の目の前に差し出して、

妹『おい、秋葉系。こんなDVDに何千円も出して、アホちゃうか。絵の女にうつつぬかさんと、現実見んかい変態。』

と、かわいい声で俺を罵ってくれたじゃないか。

妹よ。ピンクでふりふりのついたあんなにかわいいパンツをもっている前が、ダイソー(推定)で買ったタオルを頭に巻いている男とつき合っているなんて…。

部屋で二度寝していると、妹とDQN彼氏が俺の隣の妹の部屋に戻ってきた。笑い声の混じった、恋人然とした会話が聞こえてくる。

妹『"彼氏"君絶対…私そんなんゆーてへん……だから…』

彼氏『この前難波行った時…横の席でお前が寝ぼけとったから…』

しばらくすると、耳をそばだてていても聞こえにくいぐらいに二人の声が小さくなっていった。

妹『あかんって、そんなとこさわらんといて…。』

彼氏今日はちゃんと持ってるから…大丈夫。』

ぅぉぃ、妹。そんなとこってどんなとこやねん。あかんってなにがあかんねん。あと、開けたばっかりのティッシュの箱どこやねん。

妹『あっ…あっ…あっ…。"彼氏"君…やさしく…』

聞いた事の無いような妹の声が聞こえた。壁越しに、女の吐息が聞こえた。

興奮すると同時に、底知れない、胸を締め付けるような寂しさを感じた。

妹『"彼氏"君そんなん好きなん…?ぁっ…。きもちい…』

彼氏『かわいいやん。ご主人様、て素直なとこが。』

どうやら、コスプレの話しのようだ。妹が、巻き髪で、ツインテールで、男のナニナニして如何して。けしからん。

興奮しすぎた俺は、盗み聞きの体制を整えるために足を一度組み替えようとした直後、壁にど頭をぶつけた。ゴン、と音がした。

彼氏『何今の?』

妹『わからへん…。気持ち悪いなぁ。でも、ここやと家族おるから落ち着かへんし、駅前のラブホ行かへん?』

俺の大失態で二人のラブゲームの第一セットは終了した。あぁ妹よ。おそらく、今の男の他にも何人にも抱かれている妹よ。お兄ちゃん、下着だけじゃ寂しいです。

そして昨日、友人宅で"徹夜モンハンナイト!"の準備のために洗面所で身支度をしていた俺に母からまたもや怒号が。

母『"増田"!もう12時やから、"妹"おこして!』

Don't openと書かれた札を横目に、おもむろにドアを開けて、妹に"朝やぞ"と声を掛けようとしたら、ベッドの奥にある開いたままのクローゼットが目に飛び込んだ。真っ先に目についたのは、他の服から少し離れたところでハンガーにかかっている白のふりふりがついた、所謂メイドさんコスチューム

"お前その服…"と声を掛けようとした瞬間、茶色い髪をかき乱して妹が

妹『な、何勝手に入ってきてんねん。あ、そ、その服は、あ、あんたのために買ったんとちゃうんやから!か、感違いすんなアホ兄貴!!』

うーん、マンダム

2008-03-01

open("hoge.txt").hoge.mage とか

http://anond.hatelabo.jp/20080301083224

File.read("hoge.txt").display

は、OK。

しかし、

open("hoge.txt").each{|line| print line}

あのさあ。こういうコードまき散らすのやめないか?

初心者勘違いするから、せめて、closeかブロック使えっての。

動くからいいとかいってんじゃねーよ。

リソース解放GCにまかせればOK

だっておwwww

AA記法使ったら化けた

2008-02-19

Open Source が最近になって怖くなってきた

数年前オープンソースプロダクトを積極的に製品サービスに取り込んでいこうという動きの波が一度あって、そのころは個人的にはインフラミドルウェアどんどん置き換わってるけどビジネスアプリケーション世界にまでは影響を及ぼしてこないだろうと思って楽観していた。年がたつにつれオープンソースプロダクトは浸透してきたのだけど、最近ちょっと思うところあっていろいろ調査してみるとここの所のオープンソースソフトウェアは分野が恐ろしく多岐にわたってて(しかもそれなりに品質がいい)、BからCまでリーチしそうな勢いだ。OSSコミュニティの開発力がどれほどのものかは未知数なんだけども、そこらのパッケージベンダーがちまちま年次予算とって開発なんて仕事してたんじゃおっ付かなくなり始めているんじゃないかとちょっと怖い。

しかし国内のOSSものは開発者支援ツールばっかりでカスタマーにアピールできるプロダクトってもんがなかなか無い様な気がするんだけど、どうなんだろ。

2008-02-13

キサマ等のいる場所は、我々が既に4ヶ月前に通過した場所だッッッ!

アマゾンURLがわからない。

http://anond.hatelabo.jp/20080213191913

ググれ。google:amazonのurl

ググってまぁ増田が出るんだが。

同じ悩みの人はもういるよ。

http://anond.hatelabo.jp/20070416190523

http://anond.hatelabo.jp/20071009113829

(ちなみにここにもhttp://blog.livedoor.jp/unknownmelodies/archives/50744331.html

解決としてのブックマークレットはこっち↓

javascript:l=location;w=window;u=l.pathname;(function(){wd='/product/';st=u.indexOf(wd);if(st==-1){wd='/ASIN/';st=u.indexOf(wd);}if(st==-1){wd='/dp/';st=u.indexOf(wd);}if(st!=-1){asin=u.substring(st+wd.length,st+10+wd.length);if(prompt('Shortest Amazon URL and this open with Hatena','http://www.amazon.co.jp/dp/'+asin)){w.open('http://d.hatena.ne.jp/asin/'+asin,'_blank','');}}else{w.alert('no asin info');}}());

http://anond.hatelabo.jp/20071009203351

ブックマークレットが無いときによくやるのは、書影右クリックリンクURLコピーで、

http://www.amazon.co.jp/gp/product/images/4757122004/ref=dp_image_0/503-3074938-9845545?ie=UTF8&n=465392&s=books

/imagesと/ref=以下を削除とか

http://www.amazon.co.jp/gp/product/4757122004/

dp式やasin式の方が短いけど、まあ充分でしょ。

2008-01-04

はてなブックマークブックマークされてるページを開くやつ

記事を見て、「この記事読んでる人の感想とか、タグどんなのつけてるんだろ」って時に使えるような気がする。

javascript:window.open('http://b.hatena.ne.jp/entry/'+escape(location.href),'_blank','');undefined;

ウィンドウポップアップで出てくるのは嫌いだからタブで開かれます。

2007-12-19

javascript:var d=document,w=window,e=w.getSelection,k=d.getSelection,x=d.selection,s=(e?e():(k)?k():(x?x.createRange().text:0)),f='http://www.tumblr.com/share',l=d.location,e=encodeURIComponent,p='?v=3&amp;u='+e(l.href) +'&amp;t='+e(d.title) +'&amp;s='+e(s),u=f+p;try{if(!/^(.*\.)?tumblr[^.]*$/.test(l.host))throw(0);tstbklt();}catch(z){a =function(){if(!w.open(u,'t','toolbar=0,resizable=0,status=1,width=450,height=430'))l.href=u;};if(/Firefox/.test(navigator.userAgent))setTimeout(a,0);else a();}void(0)
ログイン ユーザー登録
ようこそ ゲスト さん