コグノスケ


link 未来から過去へ表示(*)  link 過去から未来へ表示

link もっと前
2014年1月19日 >>> 2014年1月6日
link もっと後

2014年1月19日

大回り乗車

Facebookに「路線がループしているときの運賃の扱いがよくわからん」的なことを書いたら「大回り乗車」を教えていただいたので、ちょっと調べてみました。

電車の基本ルールとしては、乗る時に使った切符の範囲外に行ってはいけません。例えば、下記路線でB → Cの切符で乗りDまで行った場合、C → Dの運賃を追加で払う必要があります。


A - B - C - D

しかし途中に環状線が入ってたらどうなるでしょう?下記路線でB駅からD駅に行く切符で、B → A → E → F → G → C → Dと乗る場合です。一見するとB駅からG駅までの運賃も払う必要がありそうです。


A - B - C - D
|       |
E - F - G

ところがこの場合、ある条件を満たせばB駅からD駅の切符で乗車できます。これがいわゆる「大回り乗車」です。

大都市圏近郊区間

路線がループしている大都市圏には、運賃計算の特殊ルールが存在します。JRの説明によると「実際に乗った経路に関わらず、最も安い経路で運賃が計算される」というルールです。

このルールを逆手にとって、1駅分の切符を購入し、出発駅→目的の駅→出発駅の隣接駅、と乗ること(大回り乗車)が可能です。条件としては、

  • 圏内を出てはならない
  • 同じ駅を2度通れない(交差はダメなのか??)
  • 途中下車できない
  • 定期券は使えない
  • (条件ではないが)駅員に乗車経路を聞かれることがある

です。駅から出ない乗り方、例えば電車や駅の写真を撮りたい人、電車に乗るのが好きな人に向いていますね。駅の外に出たい場合には使えませんけどね。

鉄道関連の法律

ちなみに、不正乗車の罰については、鉄道営業法という古い法律(明治三十三年施行)に述べられているようです。罰則を述べていそうなところを摘んでみると、

第十八条の二
有効ノ乗車券ヲ所持セス又ハ乗車券ノ検査ヲ拒ミ又ハ取集ノ際之ヲ渡ササル者ハ鉄道運輸規程 ノ定ムル所ニ依リ割増賃金ヲ支払フヘシ
第二十九条
鉄道係員ノ許諾ヲ受ケスシテ左ノ所為ヲ為シタル者ハ五十円以下ノ罰金又ハ科料ニ処ス
第四十二条
左ノ場合ニ於テ鉄道係員ハ旅客及公衆ヲ車外又ハ鉄道地外ニ退去セシムルコトヲ得

要は、運賃チョロまかすなんてナメた真似しようもんなら「割増料金を取る」「罰金刑」「電車から叩きだす」ぞ、わかったかこの野郎。ということですね。

個人的には、罰金50円(※)の辺りに時代を感じます。さすが明治施行の法律です。

(※)罰金50円なら超安いしw余裕wwってのは思い違いで、実際には1万円か2万円になるようです(罰金等臨時措置法)。
JRの割増料金も洒落にならないし(鉄道運輸規程 第十九条)、不正乗車はやめた方が良いですねー。

編集者:すずき(2014/01/20 03:13)

コメント一覧

  • hdkさん(2014/01/20 23:12)
    大回り乗車、東京から埼玉、栃木、茨城、千葉を回って東京に戻るのをやったことがあります。何時間もかけて大回りすると、途中でちょっと改札の外に出たくなりますねw
    http://www.e-hdk.com/diary/d201010a.html#02
  • すずきさん(2014/01/21 00:51)
    >hdk さん
    うは、すごい大回り。良いですね。
    私もせっかく大都市圏(大阪)に居るので、景色の良い季節に環状線でやってみようかな。
open/close この記事にコメントする



2014年1月16日

エンジニアなら

エンジニアを成長させる、たった6つの指針。|クックパッドCTO橋本健太に訊く![前編]

一番わかりやすいコミュニケーションは、「動くもの」と「数字」。エンジニアならば、「これだよ」と作って見せてみる。
(記事中「議論のための議論はしない〜動くものと数字で示す」より引用)

エンジニアなら、ほんとこれしかないと思います。「本番で動くモンはこれ、どう?便利でしょ?」って見せるんです。

ここがダメなら、どんな資料も説明も意味無いでしょう?だってテメーの商品のことはわかった、だが気に入らん、と言われてるに等しいのだから。

メモ: 技術系?の話はFacebookから転記しておくことにした。

編集者:すずき(2014/03/17 00:39)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2014年1月12日

Intelと組み込み系

Intelは組み込みで勝っているとは言えないけど、なぜだろう。

  • CPUの性能が合わないから?
  • IP売りしてないから?
  • PC/ATじゃないから?

性能?

Atomは電力/性能比はイマイチかもしれないけど結構速い。多くのSoCベンダが採用する省電力プロセスのARM Cortex A9ならいい勝負らしい。

ARM社のデュアルコアCortex-A9、低消費電力版でも性能はAtomを上回る

IP売り?

Atomは以前IP売りしたみたいだけど、売れた様子はない。

元麻布春男の週刊PCホットライン - IntelとARMが目指す、それぞれの隣の芝生

PC/AT?

次世代機のPS4, XBox Oneはx86かつPC/ATではない組み込み機器だけど、勝ったのはIntelじゃなくてAMD だった。

PS4もXbox OneもAMDはいってる:2013年末、いよいよ“新生AMD”が新たなステージへ

単純な問題ではないのだろうなあ…。

メモ: 技術系?の話はFacebookから転記しておくことにした。

編集者:すずき(2014/03/17 00:36)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2014年1月11日

さすがIntel

【イベントレポート】IntelのSDカード型コンピュータ「Edison」の詳細が判明 〜512KBメモリ、2GBストレージ、無線機能などを詰め込む - PC Watch

Quarkが去年発表したモデルから2倍くらい速くなってることと、実際にSDカードサイズのボードを作ってしまう辺りが流石Intel って感じ…。

メモ: 技術系?の話はFacebookから転記しておくことにした。

編集者:すずき(2014/03/17 00:28)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2014年1月10日

Gitのformat-patchとamでハマった

Gitで相手に変更を取り込んでもらいたいとき、git format-patchで作成したパッチをメールなどで送って、相手にgit amで取り込んでもらう、という方法をよく使っています。

変なコミットメッセージを書いてしまってgit format-patchとgit amで思わぬ罠にハマったので紹介しておきます。

format-patch, amの概要

自分から別の人にパッチを送る時の流れを紹介します。まず自分側のリポジトリにて、

  • git init: リポジトリを作る
  • git commit: コミットを行う
  • git log: どのコミットのパッチを作るか確認(必要あれば)
  • git format-patch: パッチを作る
  • E-mail, FTP, etc...: パッチを相手に送る

パッチを送られた相手は、

  • E-mail, FTP, etc...: パッチを受け取る
  • git am: パッチを適用する

とします。

コミット(git commit)はできる

変なコミットメッセージを付けたときのformat-patch, amの動きを見ます。自分のリポジトリはgit_test1にあり、パッチを受け取った相手のリポジトリはgit_test2 にあるものとします。

初めにgit initで自分のリポジトリ(git_test1)を作り、まずは普通のコミットメッセージを付けてコミットします。

Gitのバージョン
$ git --version
git version 1.7.10.4
自分のリポジトリを作る
$ mkdir git_test1
$ cd git_test1
$ git init
Initialized empty Git repository in /home/katsuhiro/git_test1/.git/

$ touch a
$ git add a
$ git commit

(...略...)
普通のコミットメッセージでコミット
$ touch file1
$ git add file1
$ git commit

----------------------------------------------------------------------
Add: Normal commit

Normal commit message.

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       new file:   file1
#
----------------------------------------------------------------------
".git/COMMIT_EDITMSG" [変換済] 12L, 297C書込み
[master 9ec38a3] Add: Normal commit
 0 files changed
 create mode 100644 file1

次に変なコミットメッセージを付けてコミットします。

変なコミットメッセージでコミット

$ touch file2
$ git add file2
$ git commit

----------------------------------------------------------------------
Add: Abnormal commit

Abnormal commit message.

From 0000000000000000000000000000000000000000 Mon Jun 1 00:00:00 2000

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       new file:   file2
#
----------------------------------------------------------------------
".git/COMMIT_EDITMSG" [変換済] 14L, 372C書込み
[master c4e8588] Add: Abnormal commit
 0 files changed
 create mode 100644 file2

コミットメッセージ中にある、
「From 000000(=SHA1-IDっぽいもの) Mon Jun 1 00:00:00 2000(=日付)」
という行が「変な部分」ですが、コミットの時点では特に何も起きません。

パッチ作成(git format-patch)もできる

どのコミットのパッチを作れば良いか確かめるため、git logでコミットログを確認します。

コミットログの確認
$ git log

commit c4e85884f643c0e8b107ad0f3e3b0c9fa917409b
Author: Katsuhiro Suzuki <katsuhiro@katsuster.net>
Date:   Sat Jan 11 12:24:17 2014 +0900

    Add: Abnormal commit

    Abnormal commit message.

    From 0000000000000000000000000000000000000000 Mon Jun 1 00:00:00 2000

commit 9ec38a315e964241f69897728b11f2451eafd700
Author: Katsuhiro Suzuki <katsuhiro@katsuster.net>
Date:   Sat Jan 11 12:22:49 2014 +0900

    Add: Normal commit

    Normal commit message.

commit f3e44926c8f50c557841a157fda89f3fab4aaab3
Author: Katsuhiro Suzuki <katsuhiro@katsuster.net>
Date:   Sat Jan 11 12:22:21 2014 +0900

    Init.

f3e449...(Init), 9ec38a...(Normal), c4e858...(Abnormal) というログになっていますので、Initから後にあるNormalとAbnormal、2つのコミットのパッチを作ります。

パッチ作成
$ git format-patch f3e44926c8f50c557841a157fda89f3fab4aaab3
0001-Add-Normal-commit.patch
0002-Add-Abnormal-commit.patch
Normalの方のパッチ

From 9ec38a315e964241f69897728b11f2451eafd700 Mon Sep 17 00:00:00 2001
From: Katsuhiro Suzuki <katsuhiro@katsuster.net>
Date: Sat, 11 Jan 2014 12:22:49 +0900
Subject: [PATCH 1/2] Add: Normal commit

Normal commit message.
---
 0 files changed
 create mode 100644 file1

diff --git a/file1 b/file1
new file mode 100644
index 0000000..e69de29
--
1.7.10.4
Abnormalの方のパッチ

From c4e85884f643c0e8b107ad0f3e3b0c9fa917409b Mon Sep 17 00:00:00 2001
From: Katsuhiro Suzuki <katsuhiro@katsuster.net>
Date: Sat, 11 Jan 2014 12:24:17 +0900
Subject: [PATCH 2/2] Add: Abnormal commit

Abnormal commit message.

From 0000000000000000000000000000000000000000 Mon Jun 1 00:00:00 2000
---
 0 files changed
 create mode 100644 file2

diff --git a/file2 b/file2
new file mode 100644
index 0000000..e69de29
--
1.7.10.4

こんなパッチができます。

だがパッチ適用(git am)ができない

パッチ適用の前に、パッチを受け取った相手のリポジトリを作ります。

相手のリポジトリの作成
$ mkdir git_test2
$ cd git_test2
$ git init
Initialized empty Git repository in /home/katsuhiro/git_test2/.git/

パッチを受け取った相手はgit amでパッチ適用します。

パッチを受け取った
$ mv ../git_test1/000* ./
Normalのパッチ適用、成功
$ git am 0001-Add-Normal-commit.patch
Applying: Add: Normal commit
applying to an empty history

順調です。しかし変なコミットのパッチを適用しようとすると、

Abnormalのパッチ適用、失敗
$ git am 0002-Add-Abnormal-commit.patch
Patch is empty.  Was it split wrong?
If you would prefer to skip this patch, instead run "git am --skip".
To restore the original branch and stop patching run "git am --abort".

このように止まってしまいます。

なんでこんなことした?

Gitで開発しているオープンソースプロジェクトでは、メーリングリストにgit format-patchのパッチを貼りつけてあることが良くあります。

あるソフトAに最新バグフィクスをバックポートする際に、コミットメッセージを自分で書く代わりに、ソフトAの開発プロジェクトのメーリングリストの文面をコピペしたんですね。

このときformat-patchのヘッダ、つまりFrom 00000... の部分までコミットログに貼り付けてしまったがために、本来はコミットメッセージであるはずの部分をgit amがパッチファイルのヘッダと勘違いして、パッチが変だ、中身が無いよ!と怒っているようです。

編集者:すずき(2014/01/11 12:52)

コメント一覧

  • たけうちさん(2014/01/17 22:34)
    今日、この問題にハマって困っていたところ、
    このページに助けられました!
  • すずきさん(2014/01/18 00:16)
    >たけうちさん
    お役に立てて良かったです。
    気づけば当然なのですが、意外と気づかないです…。
open/close この記事にコメントする



2014年1月8日

ポケモン恐るべし

「ポケモンバンク」配信を一時停止 アクセス殺到による接続障害緩和のため

クリスマス × ポケモン = 鯖落ち。

ポケモンは恐しい子!

メモ: 技術系?の話はFacebookから転記しておくことにした。

編集者:すずき(2014/03/17 00:28)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2014年1月7日

日記システムのコメントがスパム攻撃で書けなくなった

目次: 自宅サーバー

日記にコメントが書けない状態になっていましたが、復旧させました。原因はコメント投稿内容の確認を行う際に、一時的にコメントの下書きを保存するファイルが多数のスパムにより肥大化したこと、のようです。

肝心の下書き保存ファイルが肥大化するとなぜコメントが書き込めなくなるのか?を解析しないうちに直してしまったため、真因まで追えていません。真因が不明なままなので再発の可能性は残りますが、おそらくかなり先のことでしょう。たぶん…。

編集者:すずき(2024/01/13 16:57)

コメント一覧

  • すずきさん(2014/01/07 23:34)
    コメントのテスト、その 2。
  • すずきさん(2014/03/14 23:06)
    てすと
  • すずきさん(2014/03/14 23:12)
    また書き込めなくなった…。
  • すずきさん(2014/03/14 23:30)
    これでどうだろう。
open/close この記事にコメントする



2014年1月6日

Scalaでバイナリ解析

ScalaにてBooleanのリストをビット列に見立てて、任意のビット数を上位ビット〜下位ビットにOR演算し、Intのリストとして返すという処理をやりたいのです。

ビット列 (0, 1, 0, 0, 1, 1, 0, 0, 0) に対して、(1ビット取る, 3ビット取る, 5ビット取る) という処理を行って、結果として (0, 4, 24) が返る、そんなイメージです。

いきなり作るとコケたときショックがデカいので、まずは単純化して必ず8ビットずつ取る処理で考えてみます。入力、出力は下記の通りです。

やりたいこと

(入力)
List(
  true, false, false, true, true, false, true, false,
  true, true, true, false, true, false, true, true
)

(出力)
List(154, 235)

やりたいことはシンプルなのですが、あまりスマートな書き方が思いつきません。

foreachで書く

まず思いついたのがforeachです。

foreachの場合

val a = List(
  true, false, false, true, true, false, true, false,
  true, true, true, false, true, false, true, true
)
var acc = 0
var p = 0
var b: List[Int] = List()

a.foreach { it =>
  acc <<= 1
  if (it) acc |= 1
  p += 1

  if (p >= 8) {
    b = b :+ acc
    acc = 0
    p = 0
  }
}

println(b)

動くには動きますが、8ビット読むごとにリストのコピー処理が走るという、富豪プログラミングの限界に挑戦しているようなプログラムです。

map関数で書く

次に思い浮かぶのはmap関数ですが、基本的にforeachと変わらないように思います。変換前と変換後が1:1対応するなら簡単に書けますが、n:1対応させると一時変数の隠蔽が必要になり面倒です。

mapの場合

object BooleanToByte {
  def apply(): (Boolean => Option[Int]) = {
    val o = new BooleanToByte()
    o.mapper
  }
}

class BooleanToByte() {
  private var v = 0
  private var p = 0

  def mapper(b: Boolean): Option[Int] = {
    v <<= 1
    if (b) v |= 1
    p += 1

    if (p >= 8) {
      val result = Some(v)
      v = 0
      p = 0
      result
    } else {
      None
    }
  }
}


val a = List(
  true, false, false, true, true, false, true, false,
  true, true, true, false, true, false, true, true
)

val b = a.map(BooleanToByte()).flatten

println(b)

ひとまず見た目をa.map(f) の形に近づけるためだけに頑張りました。コードがダサいというか、Scala初心者感が丸出しというか。もっとスマートに書けるはずですが、今の私のレベルではなんとも…。

ちなみに最後のflattenはSomeオブジェクトを展開して中身の値を取り出すために使っています。ついでにNoneも消してくれるナイスな奴です。

iteratorはどうか?

最後にリストの要素を列挙するもう一つの手段、イテレータが思いつきました。foreachと異なりn:1対応に融通が利きます。いや…融通が利くというより、自由に記述できてしまうが故にn:1だろうとn:mだろうと、もはや何でもアリと言った方が正しいですね。

iteratorの場合

val a = List(
  true, false, false, true, true, false, true, false,
  true, true, true, false, true, false, true, true
)
val it = a.iterator
var b: List[Int] = List()

while (it.hasNext) {
  var acc = 0
  var p = 0

  while (p < 8) {
    acc <<= 1
    if (it.next()) acc |= 1

    p += 1
  }
  b = b :+ acc
}

println(b)

先ほどのforeachやmapのような、無理やり頑張った感はなくなったように思いますが、今度は変換元に8未満の要素数が残っているとき、例外がスローされてしまうという欠点もあります。

これがforeachを差し置いてベストか?と言われると、何とも言い難い、難しいですね。

編集者:すずき(2014/01/07 08:56)

コメント一覧

  • よしださん(2014/01/08 01:48)
    ふむふむ。。
    私はRubyで考えてみます!
  • すずきさん(2014/01/11 14:05)
    (いけじからの Facebook コメント転記)
    val b = List(false, true, false, false, true, true, false, false, false)
    val c = List(1,3,5)
    に対して、case ((i,o),n)=>(i.drop(n),i.take(n)::o)._2.reverse.map{bs=>bs.map{b=>if(b) 1 else 0}.fold(0){(i,b)=>i*2+b}}.toList\nとかやりたいんですが、色々汚ないですね。
  • すずきさん(2014/01/11 14:06)
    (Facebook コメント転記)
    やりたいことはなんとなくわかりますが、かなりゴチャゴチャしますね。
    やはりイテレータでがんばるか。
  • すずきさん(2014/01/11 14:06)
    (いけじからの Facebook コメント転記)
    整理してこんな感じです。
    https://gist.github.com/anonymous/9d3cf430f76293b8b36c
  • すずきさん(2014/01/11 14:07)
    (Facebook コメント転記)
    print入れまくってやっと意味がわかりました。
    foldLeftってタプル返せるんですね。応用が利きそうです。
  • すずきさん(2014/01/11 14:31)
    >よしださん
    どの言語でも、速くて読みやすい、を目指すと難しそうですね。
  • IKeJIさん(2014/01/11 17:11)
    Rubyで、int,short,longしか出てこないなら、
    pack、unpackだけでできないかな。
open/close この記事にコメントする



link もっと前
2014年1月19日 >>> 2014年1月6日
link もっと後

管理用メニュー

link 記事を新規作成

<2014>
<<<01>>>
---1234
567891011
12131415161718
19202122232425
262728293031-

最近のコメント5件

  • link 21年9月20日
    すずきさん (11/19 01:04)
    「It was my pleasure.」
  • link 21年9月20日
    whtさん (11/17 23:41)
    「This blog solves my ...」
  • link 24年10月1日
    すずきさん (10/06 03:41)
    「xrdpで十分動作しているので、Wayl...」
  • link 24年10月1日
    hdkさん (10/03 19:05)
    「GNOMEをお使いでしたら今はWayla...」
  • link 24年10月1日
    すずきさん (10/03 10:12)
    「私は逆にVNCサーバーに繋ぐ使い方をした...」

最近の記事20件

  • link 23年4月10日
    すずき (11/15 23:48)
    「[Linux - まとめリンク] 目次: Linux関係の深いまとめリンク。目次: RISC-V目次: ROCK64/ROCK...」
  • link 24年11月6日
    すずき (11/15 23:47)
    「[Ubuntu 24.04 LTS on ThinkPad X1 Carbon Gen 12] 目次: Linux会社ではTh...」
  • link 24年11月11日
    すずき (11/15 23:26)
    「[Pythonのテストフレームワーク] 目次: Python最近Pythonを触ることが増えたのでテストについて調べようと思い...」
  • link 24年11月2日
    すずき (11/15 23:25)
    「[Python - まとめリンク] 目次: Python一覧が欲しくなったので作りました。 スクリプト言語始めました(Pyth...」
  • link 20年5月10日
    すずき (11/15 23:24)
    「[Pythonの文字置換APIは変な名前] 目次: PythonPythonの文字列置換は "string".replace(...」
  • link 24年2月7日
    すずき (11/15 23:23)
    「[複数の音声ファイルのラウドネスを統一したい] 目次: PythonPCやデジタル音楽プレーヤーで音楽を聞いていると、曲によっ...」
  • link 13年7月2日
    すずき (11/15 23:22)
    「[スクリプト言語始めました(PythonとRubyでNクイーン問題)] 目次: ベンチマーク目次: Pythonスクリプト言語...」
  • link 23年9月18日
    すずき (11/15 23:22)
    「[一覧の一覧 - まとめリンク] 一覧の一覧、まとめのまとめが欲しくなったので作りました。OS、アーキテクチャ系。目次: An...」
  • link 13年10月1日
    すずき (11/15 23:21)
    「[JetBrains PyCharm 3.0リリース] 目次: PythonPyCharmがメジャーアップデートされ PyCh...」
  • link 22年7月8日
    すずき (11/08 23:28)
    「[マンガ紹介 - まとめリンク] 目次: マンガ紹介面白かった漫画の紹介です。知名度はあまり気にせず紹介します。5作品乙女ゲー...」
  • link 24年10月31日
    すずき (11/04 15:17)
    「[DENSOの最終勤務日] 最終勤務日でした、入門カードや会社のPCを返却してきました。在籍期間はNSITEXE(品川のオフィ...」
  • link 24年10月30日
    すずき (11/02 20:33)
    「[マンガ紹介] 目次: マンガ紹介お気に入りのマンガ紹介シリーズ。最近完結した短めの作品を紹介します。マイナススキル持ち四人が...」
  • link 19年3月28日
    すずき (11/02 13:27)
    「[マンガ紹介] 目次: マンガ紹介お気に入りのマンガ紹介シリーズ。こわもてかわもて(全2巻、2019年)(アマゾンへのリンク)...」
  • link 21年6月20日
    すずき (11/02 13:22)
    「[読書一生分が93万円?] 目次: マンガ紹介書籍通販のhontoがこんなキャンペーンをやっています。honto読書一生分プレ...」
  • link 17年10月27日
    すずき (11/02 13:11)
    「[異世界&最強系漫画の種類] 目次: マンガ紹介少し前にアニメ化されて盛り上がって(おそらく負の方向に…)いた「...」
  • link 24年10月28日
    すずき (10/30 23:49)
    「[Linuxからリモートデスクトップ] 目次: Linux開発用のLinuxマシンの画面を見るにはいろいろな手段がありますが、...」
  • link 24年10月24日
    すずき (10/25 02:35)
    「[ONKYOからM-AUDIOのUSB DACへ] 目次: PCかれこれ10年以上(2013年3月16日の日記参照)活躍してく...」
  • link 24年7月25日
    すずき (10/25 02:24)
    「[OpenSBIを調べる - デバイスツリーの扱い(別方法)] 目次: LinuxOpenSBIのブート部分を調べます。Ope...」
  • link 24年8月7日
    すずき (10/25 02:23)
    「[Debian独自の挙動をするQEMUとbinfmt_misc] 目次: Linux前回はbinfmt_miscの使い方や動作...」
  • link 24年9月9日
    すずき (10/25 02:22)
    「[GDBの便利コマンド] 目次: LinuxGDBは便利ですが、少し使わないでいるとあっという間にコマンドを忘れます。便利&使...」
link もっとみる

こんてんつ

open/close wiki
open/close Linux JM
open/close Java API

過去の日記

open/close 2002年
open/close 2003年
open/close 2004年
open/close 2005年
open/close 2006年
open/close 2007年
open/close 2008年
open/close 2009年
open/close 2010年
open/close 2011年
open/close 2012年
open/close 2013年
open/close 2014年
open/close 2015年
open/close 2016年
open/close 2017年
open/close 2018年
open/close 2019年
open/close 2020年
open/close 2021年
open/close 2022年
open/close 2023年
open/close 2024年
open/close 過去日記について

その他の情報

open/close アクセス統計
open/close サーバ一覧
open/close サイトの情報

合計:  counter total
本日:  counter today

link About www.katsuster.net
RDFファイル RSS 1.0

最終更新: 11/19 01:04