トップ 最新 追記

ヨタの日々

2001|08|09|10|11|12|
2002|01|02|03|04|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|12|
2024|01|02|03|04|05|06|07|08|09|10|11|

2014-09-01 :-(

_ 読書メーター

2014年8月の読書メーター 読んだ本の数:5冊 読んだページ数:1826ページ ナイス数:9ナイス リーダーシップ入門 (日経文庫)リーダーシップ入門 (日経文庫) 読了日:8月25日 著者:金井寿宏
イシューからはじめよ―知的生産の「シンプルな本質」イシューからはじめよ―知的生産の「シンプルな本質」感想 課題を見つける、需要があるものをやる、優先度をつける、定量的に分析する 読了日:8月25日 著者:安宅和人
神楽坂G7 崖っぷちカフェ救出作戦会議 (集英社スーパーダッシュ文庫)神楽坂G7 崖っぷちカフェ救出作戦会議 (集英社スーパーダッシュ文庫)感想 しらび絵に釣られて買ったら著者が声優だったのか。ほんとに女性が書いたのかと思うくらいに若い男子の妄想が描かれているし戦隊モノを掴んでいる。あとがきも割りとアレ 読了日:8月20日 著者:水沢史絵
俺の教室にハルヒはいない (3) (角川スニーカー文庫)俺の教室にハルヒはいない (3) (角川スニーカー文庫)感想 順調に進み学園ラブコメのようになっている 読了日:8月9日 著者:新井輝
されど罪人は竜と踊る〈12〉The One I Want (ガガガ文庫)されど罪人は竜と踊る〈12〉The One I Want (ガガガ文庫)感想 ヨーカーンが全部持っていった/ガユスはどう見てもジヴに未練たらたらしてるので案の定 読了日:8月8日 著者:浅井ラボ
読書メーター

_ 午前

0530 起床

0700 食堂

0800 出勤 && デバッグし

_ 午後

1300 デバッグし

1615 退勤

1630 雑談@コメダコーヒー

DSC_0589.JPG

_

1900 MLがどうのこうの

2130 飯。カレー

_ [QuickML]QuickML を設置するなどしていた

現在の DNS コンテンツサーバーにテキトーに A レコードだけでっち上げて QuickML ( 横着プログラミング 第5回: QuickML: 超お手軽なメーリングリスト) を起動させて動作確認してみたら動作した。当たり前だ


2014-09-02 :-)

_ 午前

0600 起床 && 一日休み

0700 外出

0730 病院

0930 一時帰宅

1130 おひる。そば

_ 午後

1200 外出

1230 病院

1400 診察

1630 帰宅

_

1700 ぐったり

2100 飯

_ []膝が痛いので通院した

聖マリアンナ医科大学病院

膝の専門医が居るということで行ってきた。

結局 膝蓋腱炎(しつがいけんえん)だろうということだった。2 年前と状況変わらず。


2014-09-03 :-(

_ 午前

0530 起床

0700 食堂

0800 出勤 && 生産

_ 午後

1300 生産

1615 退勤

1630 雑談コメダコーヒー

DSC_0592.JPG

_

1900 読書

2130 飯


2014-09-04 :-(

_ 午前

0530 起床

0700 食堂

0800 出勤 && デバッグし

_ 午後

1300 デバッグし

1630 残業アワー

_

1815 退勤

2000 宿を探すなど

2130 飯。ブリの照り焼き

_ 好きです

IMG_6413

_ しょぼいアプリを Google Play Store にリリースしてみた

関東の中心で酒をくれと叫ぶ - Google Play の Android アプリ


2014-09-05 :-(

_ 午前

0530 起床

0700 食堂

0800 出勤 && 考古学

_ 午後

1300 考古学

1615 退勤

_

1800 読書

2130 飯。ゴーヤーチャンプル

_ はてぶで見かけても踏まないようにしているしブクマしないようにしている

  • はちま
  • やらおん

_ Linuxでネットワークの監視を行えるモニタリングコマンド20選 | 俺的備忘録 〜なんかいろいろ〜

たぶん 2014Q2 の pkgsrc

#!/bin/sh

pkg="
iftop
bmon
iptraf
nload
nethogs
speedometer
bwtop
slurm
tcptrack
vnstat
bwm-ng
cbm
pktstat
netwatch
trafshow
ifstat
dstat
nmon
glances
saidar
"

for p in ${pkg}; do
  p_dir=/usr/pkgsrc/net/${p}
  [ -d ${p_dir} ] && echo ${p_dir}
done
/usr/pkgsrc/net/iftop
/usr/pkgsrc/net/bmon
/usr/pkgsrc/net/nload
/usr/pkgsrc/net/slurm
/usr/pkgsrc/net/vnstat
/usr/pkgsrc/net/trafshow

_ [NetBSD][翻訳]hubertf's NetBSD blog NetBSD running on OpenRISK 1000 CPUs

Matt Thomas posted that he has updated the NetBSD toolchain and build system to build the userland for the OpenRISK 1000 CPU, and will work on the kernel next. From Wikipedia:

Matt Thomas は、 OpenRISK 1000 CPU 用にユーザーランドをビルドするための NetBSD ツールチェインとビルドシステムをアップデートしたと 投稿した 。次バージョンのカーネルで動作するだろう。Wikipedia から引用。

``OpenRISC is the original flagship project of the OpenCores community. This project aims to develop a series of general purpose open source RISC CPU architectures. The first (and currently only) architectural description is for the OpenRISC 1000, describing a family of 32 and 64-bit processors with optional floating point and vector processing support.''

OpenRISC は OpenCores コミュニティによる旗艦プロジェクトである。このプロジェクトはオープンソースの汎用的な RISC CPU アーキテクチャを開発することを目的としている。最初の( そして最新の )アーキテクチャ記述は OpenRISC 1000 向けのもので、これは浮動小数点やベクトル処理も可能な 32 ビット、64 ビットプロセッサファミリーを記述できる。

To start playing, use Qemu v1.2 or have a look at the available Javascript emulator.

Qemu v1.2 を使うか、Javascript emulator で遊べる。

Who's the first to give me an URL of the emulator running NetBSD in my webbrowser? :)

NetBSD エミュレーターはよ


2014-09-06 :-)

_ 午前

0930 起床 && 部屋掃除

1020 おひる。そば

1040 コーヒー

1100 アニメ消化

IMG_6414

_ 午後

1300 買い物

1500 散歩

こういう光を見ると脳内で「妖星乱舞」が再生される。

IMG_6419

虹なんですが見えますかね

IMG_6423

_

1700 アニメ消化

2130 飯。塩だらのグラタン

IMG_6427

_ [艦これ]艦これ

飛龍を改二にした。

夏イベントのときにドロップしまくった正規空母たちを使う。

任務やります「新編「第二航空戦隊」出撃せよ!」

念のため決戦支援だけ出しておく。

ボスS勝利

なおドロップは陸奥

天山一二型(友永隊)

彗星(江草隊)


2014-09-07 :-)

_ 午前

0900 起床

1020 おひる。カルボナーラ

1040 ご注文はコーヒーです

IMG_6431

IMG_6432

_ 午後

1200 アニメ消化

1500 買い物

_

1700 読書

2130 飯。鮭のムニエル

_ [艦これ]艦これ

龍驤を改二にした。

3-2-1 でひたすらレベリング。赤疲労になったら黄色まで待ってから出撃

さくっとステータス max


2014-09-08 :-(

_ 午前

0530 起床

0700 食堂

0800 出勤 && 考古学

_ 午後

1300 考古学

1630 残業アワー

_

1830 生産

2115 退勤

2230 飯


2014-09-09 :-(

_ 午前

0700 起床 || 頭痛が痛い || 連絡 || 全休

0800 朝飯

0900 寝る

_ 午後

寝る

_

2100 起床 || こしいたい

2130 飯

_ 頭痛が痛いのでひたすら寝ていた

体力が落ちたからなのかいろいろ耐性が落ちているからなのか。よく分からん。

_ 月が綺麗ですね

IMG_6434


2014-09-10 :-)

_ 午前

0530 起床

0700 食堂

0800 出勤 && デバッグし

_ 午後

1300 デバッグし

1615 退勤

_

1730 ちょっと休憩

1800 ビール

2030 ちょっと休憩

_ 筋肉会 0 次会

椿屋珈琲店 日比谷離れ

部下と一緒に

003.JPG

_ 筋肉会 1 次会

ドイツ居酒屋 JSレネップ

部下が車大好きということで以前の派遣先の別会社の方々と一緒にビールを飲むなどしてきた。

最近リッジ7 やらないんですかとか

グランツーリスモいいよねえとか

ロードスター は買いでしょうとか

004.JPG

006.JPG

007.JPG

008.JPG

011.JPG

014.JPG

015.JPG

_ 筋肉会 2 次会

椿屋珈琲店 日比谷離れ

019.JPG

ロイヤル コペンハーゲン だとか何とか。

017.JPG


2014-09-11 :-(

_ 午前

0530 起床

0700 食堂

0800 労働

_ 午後

1630 労働

_

2145 退勤

2230 飯


2014-09-12 :-(

_ 午前

0530 起床

0700 食堂

0800 労働

_ 午後

1615 退勤

1645 飯

_

2320 解散

_

こりゃうめぇ 下丸子店

お客さんと

ヨガはエロいとか

001.JPG

002.JPG

003.JPG

004.JPG

005.JPG

006.JPG


2014-09-13 :-)

_ 午前

1100 起床 && 部屋掃除

_ 午後

1200 おひる。そうめん

1300 買い物

1400 アニメ消化

_

1800 しましょしましょ

2130 飯

_ area51.gr.jp サーバーを移動させた

友人宅にハウジングしてるのは変わらないんだが物理計算機から仮想計算機へ移動させることになった。それに伴い IP アドレスも変更されるので何日か前から名前設定など諸々作業していた。

  1. 新しいサーバーへ OS (NetBSD) をインストール
  2. pkgsrc 等をインストール
  3. 旧サーバーからデータ( /etc/rc.conf やら /usr/pkg/etc やら /home 等) をコピー
  4. 新サーバーを諸々設定( web, mail ... )
  5. 新サーバーで quickml 動作確認( Aレコードをでっち上げて動作させた )

ここまでやった段階で最後の問題は DNS を移行させることにかなりビビっていたんだけど結局それほど大変でもなかった。

作業手順はここの通り DNSサーバーの引っ越し~トラブル発生を未然に防ぐ手順とポイント~ (PDF)

  1. 新サーバーのゾーンデータを新サーバーへ設定
  2. 旧サーバーのゾーンデータを新サーバーへ設定
  3. レジストラのゾーンデータを新サーバーへ設定

あとは DNS 浸透()するまで待つ。

_ quickml の safe_open で死んでいた

サーバー移行に伴い

2014-09-13T21:32:23: Unknown Session Error: SystemExit: exit
2014-09-13T21:32:23: ["/usr/pkg/lib/ruby/vendor_ruby/2.0.0/quickml/utils.rb:72:in `exit'"
"/usr/pkg/lib/ruby/vendor_ruby/2.0.0/quickml/utils.rb:72:in `rescue in safe_open'"
"/usr/pkg/lib/ruby/vendor_ruby/2.0.0/quickml/utils.rb:62:in `safe_open'"
"/usr/pkg/lib/ruby/vendor_ruby/2.0.0/quickml/core.rb:410:in `write_ml_config'"
"/usr/pkg/lib/ruby/vendor_ruby/2.0.0/quickml/core.rb:141:in `init_ml_config'"
"/usr/pkg/lib/ruby/vendor_ruby/2.0.0/quickml/core.rb:99:in `initialize'"
"/usr/pkg/lib/ruby/vendor_ruby/2.0.0/quickml/core.rb:987:in `new'"
"/usr/pkg/lib/ruby/vendor_ruby/2.0.0/quickml/core.rb:987:in `block in process_recipient'"
"/usr/pkg/lib/ruby/vendor_ruby/2.0.0/quickml/core.rb:986:in `synchronize'"
"/usr/pkg/lib/ruby/vendor_ruby/2.0.0/quickml/core.rb:986:in `process_recipient'"
"/usr/pkg/lib/ruby/vendor_ruby/2.0.0/quickml/core.rb:1006:in `block in process'"
"/usr/pkg/lib/ruby/vendor_ruby/2.0.0/quickml/core.rb:1005:in `each'"
"/usr/pkg/lib/ruby/vendor_ruby/2.0.0/quickml/core.rb:1005:in `process'"
"/usr/pkg/lib/ruby/vendor_ruby/2.0.0/quickml/server.rb:249:in `process'"
"/usr/pkg/lib/ruby/vendor_ruby/2.0.0/quickml/server.rb:266:in `block in _start'"
"/usr/pkg/lib/ruby/2.0.0/timeout.rb:66:in `timeout'"
"/usr/pkg/lib/ruby/2.0.0/timeout.rb:97:in `timeout'"
"/usr/pkg/lib/ruby/vendor_ruby/2.0.0/quickml/server.rb:265:in `_start'"
"/usr/pkg/lib/ruby/vendor_ruby/2.0.0/quickml/server.rb:278:in `start'"
"/usr/pkg/lib/ruby/vendor_ruby/2.0.0/quickml/server.rb:316:in `process_session'"
"/usr/pkg/lib/ruby/vendor_ruby/2.0.0/quickml/server.rb:298:in `block in accept'"]

ここの処理

class File
  def self.safe_open (filename, mode = "r")
    begin
      f = File.open(filename, mode)
      if block_given?
    yield(f)
    f.close
      else
    return f
      end
    rescue => e
      STDERR.printf "%s: %s\n", $0, e.message   <=ここ
      exit(1)
    end
  end
end

これ

% ls -l /var/quickml
-rwxr-xr-x  1 root     quickml  614 Sep  7 12:36 foo
-rwxr-xr-x  1 root     quickml   12 Sep  7 12:36 foo,charset
-rwxr-xr-x  1 root     quickml  146 Sep  7 12:36 foo,config
-rwxr-xr-x  1 root     quickml    6 Sep  7 12:36 foo,count

ダサい

% chown -R quickml:quickml /var/quickml

2014-09-14 :-)

_ 午前

0930 起床

1020 おひる。カルボナーラらしきもの

1040 コーヒー

1100 アニメ消化

IMG_6436

IMG_6437

_ 午後

1300 散髪

1400 買い物

_

1700 散歩

1800 しましょしましょ

2200 飯

_ [デジカメ][コンデジ][Cyber-shot][サイバーショット]SONY Cyber-shot DSC-TX30 を買った

@ヨドバシカメラ

コンデジを買ったのはずいぶん久しぶりだ。

IMG_6438

IMG_6439

IMG_6440

IMG_6443

IMG_6441

試しに撮ってみた。

DSC00008

B00BQ6VK7E

_ マツダ新型デミオ の試乗

近所のマツダに問い合わせたところ試乗可能なのは

  • ガソリン車は 10 月ころ
  • ディーゼル車は 11 月ころ

になりそうだとのことだった。

_ [艦これ]艦これ 3-5 北方AL海域

北方海域戦闘哨戒「北方海域に敵増援の動きがある。中規模の水上打撃部隊を派遣し、敵増援を捕捉、これを撃破せよ!」

9/12 のメンテナンスで実装された新海域。夏イベントの AL 海域ふたたび。

ここ基準で 【艦これ】3-5攻略/周回 明石/まるゆ掘り : 艦これ周回主義 ゲージ削りは下ルート。最後のトドメは上ルート。ケージ破壊可能になると下ルートのボス前に軽空母が編成されて重巡が昼戦連撃してくるようになるのでかなりツラい。

バケツ 50 個くらい消費したんじゃないか。

  1. BE 大破撤退 - 利根 五月雨 夕立 ヴェールヌイ 時雨 長波
  2. BG 大破撤退 - 夕張 五月雨 夕立 ヴェールヌイ 時雨 長波
  3. BGK S勝利 球磨
  4. BG 大破撤退
  5. B 大破撤退
  6. BGK S勝利 飛鷹
  7. BG 大破撤退
  8. BGK S勝利
  9. BG 大破撤退 重巡昼戦連撃
  10. B 大破撤退
  11. ADB 大破撤退 - 大井 川内 那珂 伊401 伊58 伊168
  12. ACFK S勝利 長良 クリア - 伊勢 比叡 金剛 伊401 伊58 伊168


2014-09-15 :-)

_ 午前

0930 起床

1020 おひる。うどん

1040 ご注文はコーヒーですか?

DSC00012

DSC00013

_ 午後

1200 アニメ消化

1400 散歩

1600 アニメ消化

DSC00016

_

1700 しましょしましょ

2130 飯。ゴーヤーチャンプルー

DSC00020

DSC00022

_ 買い物

iTunes Store

_ [μITRON][TOPPERS/JSP][コードリーディング]μITRON 実装 TOPPERS/JSP を読む

コードはこちら

TOPPERSプロジェクト/ダウンロード の 完全版 を貰う。

eclipse にインポートしてコードリーディング

なおダウンロードしたソースコードは文字エンコードが EUC-JP のようなので eclipse ではデフォルトだとデコードできず文字化けする。

プロジェクト - プロパティ - リソース - テキストファイルエンコーディングを EUC-JP と記入する suz-lab - blog: EclipseでEUC-JPを使うには

_ [セマフォ][μITRON][TOPPERS/JSP][コードリーディング]μITRON 実装 TOPPERS/JSP を読む - セマフォ

セマフォには

  • バイナリセマフォ
  • 計数セマフォ

の 2 つがある。

みんな大好き wdic より

セマフォ ‐ 通信用語の基礎知識

バイナリセマフォ

バイナリセマフォは0か1のどちらかの値しか持たないセマフォで、重要度の高い処理のブロックに用いられる。

フラグは初期化によって最初1はセットされ、特定のプロセスが処理開始時にAPIを呼びフラグをデクリメント(−1)し、処理の終了と共にAPIを呼びインクリメント(+1)する。
他のプロセスがこれを同時に処理しようとすると、フラグが0になっているためにデクリメントに失敗して処理がブロックされ、そのプロセスはOSレベルで休止状態にされる。後に処理が完了しフラグが1に戻ると、プロセスキューに溜められた休止中のプロセスがOSによって順にチェックされ、処理が再開される。

汎用セマフォ

汎用セマフォはカウンターであり、資源に一定の空き数がある場合に利用される。

基本的に値は資源の空き数に設定され、特定のプロセスが処理開始時に値のデクリメント(−1)を行ない、処理終了時にインクリメント(+1)を行なう。空き数を使い切り、デクリメントに失敗した場合のブロッキング処理はバイナリセマフォと同様である。

バイナリセマフォは同期処理によく使われる。

汎用セマフォは資源を独占処理するときに使われる。計数セマフォとかカウンティングセマフォなどともいう。

セマフォの実装 kernel\semaphore.c

この 3 つの処理を読む。cre_sem どこだよ

  • semaphore_initialize セマフォ初期化
  • wai_sem セマフォ獲得
  • sig_sem セマフォ開放

汎用セマフォだろうとバイナリセマフォだろうとセマフォの実装は同一である。セマフォカウンタ値の初期値によって汎用セマフォなのかバイナリセマフォなのかを切り替える。初期値が 1 ならばバイナリセマフォ。そうでなければ汎用セマフォ。たぶん。

しかし初期値をどうやって設定するのかが分からん。「コンフィギュレーション」とやらがあるらしいので TOPPERS/JSP をファームウェアとして利用するときにユーザーの環境ごとに何か設定するようだ。

doc/user.txt より

3.4 同期・通信機能

3.4.1 セマフォ

セマフォの最大資源数は,UINT型(unsigned int型に定義している)で表現で
きる数値の範囲内である.すなわち,unsigned int型が 32ビットの場合は 
(2^32 - 1),16ビットの場合は (2^16 - 1) = 65535 である.TMAX_MAXSEM は
定義していない.

(1) CRE_SEM                     セマフォの生成(静的API)

(2) sig_sem, isig_sem           セマフォ資源の返却

(3) wai_sem                     セマフォ資源の獲得
(4) pol_sem                     セマフォ資源の獲得(ポーリング)
(5) twai_sem                    セマフォ資源の獲得(タイムアウトあり)

cxx_sample2.cfg というファイルに以下の記述がある。たぶんこれが初期値として使われる?

CRE_SEM(1, { TA_TFIFO, 1, 1 });
CRE_SEM(2, { TA_TFIFO, 1, 1 });
CRE_SEM(3, { TA_TFIFO, 1, 1 });
CRE_SEM(4, { TA_TFIFO, 1, 1 });
CRE_SEM(5, { TA_TFIFO, 1, 1 });

セマフォのデータ構造を見ていく。

/*
 *  キューのデータ構造の定義
 */
typedef struct queue {
	struct queue *next;		/* 次エントリへのポインタ */
	struct queue *prev;		/* 前エントリへのポインタ */
} QUEUE;
/*
 *  セマフォ初期化ブロック
 */
typedef struct semaphore_initialization_block {
	ATR	sematr;		/* セマフォ属性 */
	UINT	isemcnt;	/* セマフォの資源数の初期値 */
	UINT	maxsem;		/* セマフォの最大資源数 */
} SEMINIB;
/*
 *  セマフォ管理ブロック
 */
typedef struct semaphore_control_block {
	QUEUE	wait_queue;	/* セマフォ待ちキュー */
	const SEMINIB *seminib;	/* セマフォ初期化ブロックへのポインタ */
	UINT	semcnt;		/* セマフォ現在カウント値 */
} SEMCB;
/*
 *  セマフォ管理ブロックのエリア(kernel_cfg.c)
 */
extern SEMCB	semcb_table[];

ここからがセマフォのコード。

セマフォ初期化。ここの isemcnt が↑で登場した CRE_SEM に指定した初期値だろう。

void
semaphore_initialize()
{
	UINT	i;
	SEMCB	*semcb;

	for (semcb = semcb_table, i = 0; i < TNUM_SEM; semcb++, i++) {
		queue_initialize(&(semcb->wait_queue));
		semcb->seminib = &(seminib_table[i]);
		semcb->semcnt = semcb->seminib->isemcnt;
	}
}

セマフォ獲得

SYSCALL ER
wai_sem(ID semid)
{
	SEMCB	*semcb;
	WINFO_WOBJ winfo;
	ER	ercd;

	// CPUによっては空っぽ
	LOG_WAI_SEM_ENTER(semid);

	// ディスパッチ保留状態でないかのチェック
	CHECK_DISPATCH();

	// セマフォIDが有効範囲内か確認
	CHECK_SEMID(semid);

	// セマフォテーブルからIDに該当するセマフォを取得
	semcb = get_semcb(semid);

	// CPUをロック。ここからの処理は不可分。CPUごとに実装が異なる。
	t_lock_cpu();

	// セマフォカウント値が 1 以上の場合はデクリメントするだけ
	if (semcb->semcnt >= 1) {
		semcb->semcnt -= 1;
		ercd = E_OK;
	}
	
	// セマフォ計数が 0 以下の場合は待機する
	else {
		wobj_make_wait((WOBJCB *) semcb, &winfo);

		// 最高優先度のタスクへディスパッチ
		dispatch();
		ercd = winfo.winfo.wercd;
	}
	t_unlock_cpu();

    exit:
	LOG_WAI_SEM_LEAVE(ercd);
	return(ercd);
}

セマフォの返却

SYSCALL ER
sig_sem(ID semid)
{
	SEMCB	*semcb;
	TCB	*tcb;
	ER	ercd;
    
	LOG_SIG_SEM_ENTER(semid);
	CHECK_TSKCTX_UNL();
	CHECK_SEMID(semid);
	semcb = get_semcb(semid);

	// CPUをロック。ここからの処理は不可分。CPUごとに実装が異なる。
	t_lock_cpu();

	// セマフォ開放待ちのキューがある場合
	if (!(queue_empty(&(semcb->wait_queue)))) {

		// キューの次のエントリを取り出す。ようするに deque している。
		tcb = (TCB *) queue_delete_next(&(semcb->wait_queue));

		// タスクの待機状態を解除。ディスパッチが必要な場合はタスクをディスパッチする。
		if (wait_complete(tcb)) {
			dispatch();
		}
		ercd = E_OK;
	}

	// 現在のセマフォカウント値が最大値を超えてなければカウントをインクリメント
	else if (semcb->semcnt < semcb->seminib->maxsem) {
		semcb->semcnt += 1;
		ercd = E_OK;
	}
	else {
		ercd = E_QOVR;
	}
	t_unlock_cpu();

    exit:
	LOG_SIG_SEM_LEAVE(ercd);
	return(ercd);
}

↑の関数で使われているマクロとかいろいろ

/*
 *  ディスパッチ保留状態でないかのチェック(E_CTX)
 */
#define CHECK_DISPATCH() {					\
	if (sense_context() || t_sense_lock() || !(enadsp)) {	\
		ercd = E_CTX;					\
		goto exit;					\
	}							\
}
#define CHECK_SEMID(semid) {					\
	if (!VALID_SEMID(semid)) {				\
		ercd = E_ID;					\
		goto exit;					\
	}							\
}
#define VALID_SEMID(semid) \
	(TMIN_SEMID <= (semid) && (semid) <= tmax_semid)
/*
 *  セマフォIDからセマフォ管理ブロックを取り出すためのマクロ
 */
#define INDEX_SEM(semid)	((UINT)((semid) - TMIN_SEMID))
#define get_semcb(semid)	(&(semcb_table[INDEX_SEM(semid)]))
/*
 *  同期・通信オブジェクトに対する待ち状態への移行
 *  
 *  実行中のタスクを待ち状態に移行させ,同期・通信オブジェクトの待ちキュー
 *  につなぐ.また,待ち情報ブロック(WINFO)の wobjcb を設定する.
 *  wobj_make_wait_tmout は,タイムイベントブロックの登録も行う.
 */
extern void	wobj_make_wait(WOBJCB *wobjcb, WINFO_WOBJ *winfo);
extern void	wobj_make_wait_tmout(WOBJCB *wobjcb, WINFO_WOBJ *winfo,
					TMEVTB *tmevtb, TMO tmout);
/*
 *  最高優先順位タスクへのディスパッチ(cpu_support.S)
 *
 *  dispatch は,タスクコンテキストから呼び出されたサービスコール処理
 *  内で,CPUロック状態で呼び出さなければならない.
 */

extern void     dispatch(void);

_ [イベントフラグ][μITRON][TOPPERS/JSP][コードリーディング]μITRON 実装 TOPPERS/JSP を読む - イベントフラグ

イベントの通知とその管理。イベントの種類をビットで管理する。

イベント個数が既知ならばこれで足りる。しかしイベント個数がユーザーでも拡張可能の場合(上限不明)はこれでは実現できない。たとえばフラグが 32 ビットだとすると高々 32 個ぶんのイベントしか管理できない。.NET の event 等のようなものと同じ機能であり、それをビットで管理している。

doc\user.txt より。1 つのイベントで複数タスクが待てないんだそうだ。

3.4.2 イベントフラグ

一つのイベントフラグで複数のタスクが待ち状態になれる機能はサポートして
いない.

FLGPTN型は,unsigned int型に定義している.よって TBIT_FLGPTN は,
unsigned int型が 32ビットの場合は 32,16ビットの場合は 16 になる.

(1) CRE_FLG                     イベントフラグの生成(静的API)

flgatr に TA_WMUL が指定された場合の機能(イベントフラグで複数のタスク
が待ち状態になれる)はサポートしていない.

(2) set_flg, iset_flg           イベントフラグのセット

(3) clr_flg                     イベントフラグのクリア

(4) wai_flg                     イベントフラグ待ち
(5) pol_flg                     イベントフラグ待ち(ポーリング)
(6) twai_flg                    イベントフラグ待ち(タイムアウトあり)

コードを読む kernel\eventflag.c

ソースファイル冒頭にデータ構造等がある。セマフォにあったデータ構造と処理に似ている。

イベントフラグがイベント ID ごとのテーブルになっており、イベントフラグごとにそのイベント待機するタスクキューがある。

/*
 *  イベントフラグIDの最大値(kernel_cfg.c)
 */
extern const ID	tmax_flgid;

/*
 *  イベントフラグ初期化ブロックのエリア(kernel_cfg.c)
 */
extern const FLGINIB	flginib_table[];

/*
 *  イベントフラグ管理ブロックのエリア(kernel_cfg.c)
 */
extern FLGCB	flgcb_table[];

/*
 *  イベントフラグの数
 */
#define TNUM_FLG	((UINT)(tmax_flgid - TMIN_FLGID + 1))

/*
 *  イベントフラグIDからイベントフラグ管理ブロックを取り出すためのマクロ
 */
#define INDEX_FLG(flgid)	((UINT)((flgid) - TMIN_FLGID))
#define get_flgcb(flgid)	(&(flgcb_table[INDEX_FLG(flgid)]))

/*
 *  イベントフラグ待ち情報ブロックの定義
 *
 *  flgptn は,waiptn および wfmode と同時に使うことはないため,union 
 *  を使えばメモリを節約することが可能である.
 */
typedef struct eventflag_waiting_information {
	WINFO	winfo;		/* 標準の待ち情報ブロック */
	WOBJCB	*wobjcb;	/* 待ちオブジェクトの管理ブロック */
	FLGPTN	waiptn;		/* 待ちパターン */
	MODE	wfmode;		/* 待ちモード */
	FLGPTN	flgptn;		/* 待ち解除時のパターン */
} WINFO_FLG;

初期化の処理。これもセマフォで見たコードだ。

void
eventflag_initialize(void)
{
	UINT	i;
	FLGCB	*flgcb;

	for (flgcb = flgcb_table, i = 0; i < TNUM_FLG; flgcb++, i++) {
		queue_initialize(&(flgcb->wait_queue));
		flgcb->flginib = &(flginib_table[i]);
		flgcb->flgptn = flgcb->flginib->iflgptn;
	}
}

フラグの型は以下のとおり。UINT は 32 ビット以上なので 32 種類のイベントを管理できる。

typedef	UINT		FLGPTN;		/* イベントフラグのビットパターン */

フラグセット。つまりイベント発火。

set_flg(ID flgid, FLGPTN setptn)
{
	FLGCB	*flgcb;
	TCB	*tcb;
	WINFO_FLG *winfo;
	ER	ercd;

	LOG_SET_FLG_ENTER(flgid, setptn);
	CHECK_TSKCTX_UNL();
	CHECK_FLGID(flgid);
	flgcb = get_flgcb(flgid);

	t_lock_cpu();

	// イベントのビットを立てる
	flgcb->flgptn |= setptn;

	// イベントを待っているタスクキューがある場合
	if (!(queue_empty(&(flgcb->wait_queue)))) {

		// イベントのタスクキューを取り出してそのタスクの待機を解除しディスパッチする
		tcb = (TCB *)(flgcb->wait_queue.next);
		winfo = (WINFO_FLG *)(tcb->winfo);
		if (eventflag_cond(flgcb, winfo->waiptn,
					winfo->wfmode, &(winfo->flgptn))) {
			queue_delete(&(tcb->task_queue));
			if (wait_complete(tcb)) {
				dispatch();
			}
		}
	}
	ercd = E_OK;
	t_unlock_cpu();

    exit:
	LOG_SET_FLG_LEAVE(ercd);
	return(ercd);
}

イベントフラグを待機する。

SYSCALL ER
wai_flg(ID flgid, FLGPTN waiptn, MODE wfmode, FLGPTN *p_flgptn)
{
	FLGCB	*flgcb;
	WINFO_FLG winfo;
	ER	ercd;

	LOG_WAI_FLG_ENTER(flgid, waiptn, wfmode, p_flgptn);
	CHECK_DISPATCH();
	CHECK_FLGID(flgid);
	CHECK_PAR(waiptn != 0);
	CHECK_PAR((wfmode & ~TWF_ORW) == 0);
	flgcb = get_flgcb(flgid);

	t_lock_cpu();

	// イベントのタスクキューが空でないとダメです
	if (!(queue_empty(&(flgcb->wait_queue)))) {
		ercd = E_ILUSE;
	}
	else if (eventflag_cond(flgcb, waiptn, wfmode, p_flgptn)) {
		ercd = E_OK;
	}
	else {
		winfo.waiptn = waiptn;
		winfo.wfmode = wfmode;

		// イベント待ち。現在のタスクを待機状態へ移行
		wobj_make_wait((WOBJCB *) flgcb, (WINFO_WOBJ *) &winfo);

		// 最高優先度のタスクをディスパッチ
		dispatch();
		ercd = winfo.winfo.wercd;
		if (ercd == E_OK) {
			*p_flgptn = winfo.flgptn;
		}
	}
	t_unlock_cpu();

    exit:
	LOG_WAI_FLG_LEAVE(ercd, *p_flgptn);
	return(ercd);
}

イベントのビットをクリア。& してるので操作するビットを間違えるとアウチなことになる。

SYSCALL ER
clr_flg(ID flgid, FLGPTN clrptn)
{
	FLGCB	*flgcb;
	ER	ercd;

	LOG_CLR_FLG_ENTER(flgid, clrptn);
	CHECK_TSKCTX_UNL();
	CHECK_FLGID(flgid);
	flgcb = get_flgcb(flgid);

	t_lock_cpu();
	flgcb->flgptn &= clrptn; 
	ercd = E_OK;
	t_unlock_cpu();

    exit:
	LOG_CLR_FLG_LEAVE(ercd);
	return(ercd);
}

_ [データキュー][μITRON][TOPPERS/JSP][コードリーディング]μITRON 実装 TOPPERS/JSP を読む - データキュー

1 ワードのデータを送受信するためのキュー。1 ワードだけどポインタを乗せれば何でもイケる。

コードはこれ kernel\dataqueue.c

データキュー初期化

void
dataqueue_initialize(void)
{
	UINT	i;
	DTQCB	*dtqcb;

	for (dtqcb = dtqcb_table, i = 0; i < TNUM_DTQ; dtqcb++, i++) {
		queue_initialize(&(dtqcb->swait_queue));
		dtqcb->dtqinib = &(dtqinib_table[i]);
		queue_initialize(&(dtqcb->rwait_queue));
		dtqcb->count = 0;
		dtqcb->head = 0;
		dtqcb->tail = 0;
	}
}

データキューへ送信

SYSCALL ER
snd_dtq(ID dtqid, VP_INT data)
{
	DTQCB	*dtqcb;
	WINFO_DTQ winfo;
	TCB	*tcb;
	ER	ercd;

	LOG_SND_DTQ_ENTER(dtqid, data);
	CHECK_DISPATCH();
	CHECK_DTQID(dtqid);
	dtqcb = get_dtqcb(dtqid);

	t_lock_cpu();

	// データ受信待ちのタスクキューがあれば送信する。最高優先度のタスクをディスパッチ
	if ((tcb = send_data_rwait(dtqcb, data)) != NULL) {
		if (wait_complete(tcb)) {
			dispatch();
		}
		ercd = E_OK;
	}

	// キューに積む
	else if (enqueue_data(dtqcb, data)) {
		ercd = E_OK;
	}

	// データ受信されるまでタスクを待機状態へする。最高優先度のタスクをディスパッチ
	else {
		winfo.data = data;
		wobj_make_wait((WOBJCB *) dtqcb, (WINFO_WOBJ *) &winfo);
		dispatch();
		ercd = winfo.winfo.wercd;
	}
	t_unlock_cpu();

    exit:
	LOG_SND_DTQ_LEAVE(ercd);
	return(ercd);
}

データキューから受信。最初の処理の意図が分からん。

SYSCALL ER
rcv_dtq(ID dtqid, VP_INT *p_data)
{
	DTQCB	*dtqcb;
	WINFO_DTQ winfo;
	TCB	*tcb;
	VP_INT	data;
	ER	ercd;

	LOG_RCV_DTQ_ENTER(dtqid, p_data);
	CHECK_DISPATCH();
	CHECK_DTQID(dtqid);
	dtqcb = get_dtqcb(dtqid);

	t_lock_cpu();

	// データキューがあれば
	if (dequeue_data(dtqcb, p_data)) {
		// データを受信
		if ((tcb = receive_data_swait(dtqcb, &data)) != NULL) {
			// またデータキューへ入れる?
			enqueue_data(dtqcb, data);
			if (wait_complete(tcb)) {
				// タスクディスパッチはいつもの流れ
				dispatch();
			}
		}
		ercd = E_OK;
	}

	// データ受信
	else if ((tcb = receive_data_swait(dtqcb, p_data)) != NULL) {
		if (wait_complete(tcb)) {
			dispatch();
		}
		ercd = E_OK;
	}

	// データ無ければ受信待ちキューへ入れて待機状態へ移行
	else {
		runtsk->tstat = (TS_WAITING | TS_WAIT_WOBJ);
		make_wait(&(winfo.winfo));
		queue_insert_prev(&(dtqcb->rwait_queue),
					&(runtsk->task_queue));
		winfo.wobjcb = (WOBJCB *) dtqcb;
		LOG_TSKSTAT(runtsk);
		dispatch();
		ercd = winfo.winfo.wercd;
		if (ercd == E_OK) {
			*p_data = winfo.data;
		}
	}
	t_unlock_cpu();

    exit:
	LOG_RCV_DTQ_LEAVE(ercd, *p_data);
	return(ercd);
}
本日のツッコミ(全4件) [ツッコミを入れる]

_ エモエモ [大学院受かったZE☆]

_ みわ [おめー]

_ 酔漢 [こんにちは rcv_dtqでコメントにクエスチョンマークが付いているところですが、これは「また入れている」訳ではあり..]

_ みわ [酔漢さん: 指摘ありがとうございます。receive_data_swait の定義に「送信待ちキューの先頭タスクから..]


2014-09-16 :-(

_ 午前

0530 起床

0700 食堂

0800 労働

_ 午後

1630 残業アワー

_

2145 退勤

2230 飯


2014-09-17 :-(

_ 午前

0530 起床

0700 食堂

0800 労働

_ 午後

1615 退勤

_

1800 支度

2130 飯

_ [メールボックス][ITRON][TOPPERS/JSP][コードリーディング]ITRON 実装 TOPPERS/JSP を読む - メールボックス

データへのポインタの線形リスト。受信前に再送信すると以前のデータは上書きされる。

データそのものではなく、データへのポインタをやりとりする。

doc\user.txt で機能を眺めてみる。

3.4.4 メールボックス

T_MSG型は下記のように定義されている.T_MSG型のサイズは,ターゲットプロ
セッサ/コンパイラのポインタのサイズに一致する.

        typedef struct t_msg {
                struct t_msg    *next;
        } T_MSG;

JSPカーネルでは,優先度別メッセージキューヘッダ領域は用いていない.
TSZ_MPRIHD は定義していないが,定義するとしたら 0 となる.

(1) CRE_MBX                     メールボックスの生成(静的API)

mprihd に NULL 以外が指定された場合の機能(優先度別メッセージキューヘッ
ダ領域の先頭番地を指定する)はサポートしていない.

(2) snd_mbx                     メールボックスへの送信

(3) rcv_mbx                     メールボックスからの受信
(4) prcv_mbx                    メールボックスからの受信(ポーリング)
(5) trcv_mbx                    メールボックスからの受信(タイムアウトあり)

コードはここ kernel\mailbox.c

メールボックス送信

SYSCALL ER
snd_mbx(ID mbxid, T_MSG *pk_msg)
{
	MBXCB	*mbxcb;
	TCB	*tcb;
	ER	ercd;
    
	LOG_SND_MBX_ENTER(mbxid, pk_msg);
	CHECK_TSKCTX_UNL();
	CHECK_MBXID(mbxid);
	mbxcb = get_mbxcb(mbxid);
	CHECK_PAR((mbxcb->mbxinib->mbxatr & TA_MPRI) == 0
		|| (TMIN_MPRI <= MSGPRI(pk_msg)
			&& MSGPRI(pk_msg) <= mbxcb->mbxinib->maxmpri));

	// リリカル不可分操作 始まります
	t_lock_cpu();

	// タスクキューが空っぽじゃない場合
	if (!(queue_empty(&(mbxcb->wait_queue)))) {

		// タスクをタスクキューへ追加
		tcb = (TCB *) queue_delete_next(&(mbxcb->wait_queue));
		((WINFO_MBX *)(tcb->winfo))->pk_msg = pk_msg;
		if (wait_complete(tcb)) {

			// 起きろ
			dispatch();
		}
		ercd = E_OK;
	}

	// 優先度付きキューならこっち
	else if ((mbxcb->mbxinib->mbxatr & TA_MPRI) != 0) {
		enqueue_msg_pri(&(mbxcb->head), pk_msg);
		ercd = E_OK;
	}
	else {

		// メッセージへのポインタをリストの末尾へ追加など
		pk_msg->next = NULL;
		if (mbxcb->head != NULL) {
			mbxcb->last->next = pk_msg;
		}
		else {
			mbxcb->head = pk_msg;
		}
		mbxcb->last = pk_msg;
		ercd = E_OK;
	}
	t_unlock_cpu();

    exit:
	LOG_SND_MBX_LEAVE(ercd);
	return(ercd);
}

メールボックス受信

SYSCALL ER
rcv_mbx(ID mbxid, T_MSG **ppk_msg)
{
	MBXCB	*mbxcb;
	WINFO_MBX winfo;
	ER	ercd;
    
	LOG_RCV_MBX_ENTER(mbxid, ppk_msg);
	CHECK_DISPATCH();
	CHECK_MBXID(mbxid);
	mbxcb = get_mbxcb(mbxid);
  
	// CPU不可分しまっせ
	t_lock_cpu();

	// メッセージボックスが空っぽじゃない場合
	if (mbxcb->head != NULL) {

		// リストの先頭のメッセージへのポインタを取得
		*ppk_msg = mbxcb->head;
		mbxcb->head = (*ppk_msg)->next;
		ercd = E_OK;
	}

	// メッセージボックスが空っぽの場合
	else {

		// タスクを待機状態へ移行
		wobj_make_wait((WOBJCB *) mbxcb, (WINFO_WOBJ *) &winfo);
		dispatch();
		ercd = winfo.winfo.wercd;
		if (ercd == E_OK) {
			*ppk_msg = winfo.pk_msg;
		}
	}
	t_unlock_cpu();

    exit:
	LOG_RCV_MBX_LEAVE(ercd, *ppk_msg);
	return(ercd);
}

_ [メッセージバッファ][ITRON][TOPPERS/JSP][コードリーディング]ITRON 実装 TOPPERS/JSP を読む - メッセージバッファ

メールボックスとは異なり、データのコピーを線形リストに繋げる。コピーするぶん遅いが上書きの心配はない。

しかしTOPPERS/JSP に実装が見当たらん。

include\kernel_debug.h にタスク状態の定数はあるんだが使っている箇所がない。うーん。

#define TTW_SMBF	0x0100u		/* メッセージバッファへの送信待ち */
#define TTW_RMBF	0x0200u		/* メッセージバッファからの受信待ち */

2014-09-18 :-)

_ [沖縄][宮古島]沖縄紀行 1 日目

宮古島へ行ってきた。

沖縄紀行 2014-09-18 - an album on Flickr

IMG_6451

勧誘された。

IMG_6452

初日の宿 ホテル日航那覇グランドキャッスル

IMG_6454

まずは夕飯。

IMG_6457

IMG_6458

IMG_6459

IMG_6460

IMG_6462

IMG_6463

今回は三脚を持参したのでライトアップされた首里城を見てきた。

IMG_6465

終了間際に行ったので客が少ない。

IMG_6485


2014-09-19 :-)

_ [沖縄][宮古島]沖縄紀行 2 日目

沖縄紀行 2014-09-19 - an album on Flickr

鍾乳洞を探検してきた おきなわワールド-文化王国

装備をととのえて出発する。

DSC00025

DSC00027

鍾乳洞の水は最初はまだ膝あたりだった。

DSC00047

徐々に胸元あたりまでくるようになる。

DSC00053

石にロープが結び付けられているのでこれを頼りに行く。

DSC00052

100年前だかに天井から落下した岩盤だそうな。石が成長してその重さに耐えられなくなり地震などの影響で落下するとか。この時に地震が発生したらどうなるんだろうかと戦々恐々としていた。

DSC00061

剥がれ落ちた部分。石がまた成長している。

DSC00066

鍾乳洞の最後に階段を登って地上へ出る。

DSC00073

こんとき脳内で「JUST ONE VICTORY」(TM NETWORK)が再生されていた。

DSC00078

暗く 長い洞窟を抜けだして見渡せば 永遠に生きるための勇気感じる その瞬間

{{

その後 旧海軍司令部壕 へ移動。この錨は、当初は卯月のものだったが盗まれてしまったので卯月の錨に似させて作ったものだそうだ。( 沖縄海軍慰霊之塔物語 )

IMG_6498

艦これでは彼女である( via 卯月改 - 艦隊これくしょん -艦これ- 攻略 Wiki* )

?plugin=attach&refer=%B1%AC%B7%EE%B2%FE&openfile=165b.png

移動して那覇空港の食堂でおひる。

IMG_6500

宿へ移動。ホテルブリーズベイマリーナ|宮古島

IMG_6502

部屋。

IMG_6506

外を眺める。

IMG_6507

2階なんだが2階のテラス( バルコニーか? )が最も広い。

IMG_6509

眺める。

IMG_6508

廊下には椅子などが退避してある。

IMG_6511

眺める。

IMG_6510

プライベートビーチ

IMG_6516

晩飯。ビフテキである。

IMG_6521

IMG_6522

IMG_6524

IMG_6526

IMG_6527


2014-09-20 :-)

_ [沖縄][宮古島]沖縄紀行 3 日目

沖縄紀行 2014-09-20 - an album on Flickr

朝焼け

IMG_6548

朝飯

IMG_6549

前浜ビーチ。まあ私くらいに訓練されていると お一人様海水浴くらいは出来るようになる。

DSC00082

来間大橋

IMG_6551

IMG_6552

おひる@古謝そば屋

IMG_6555

東平安名崎。灯台にのぼってきた。

IMG_6561

IMG_6562

IMG_6563

IMG_6564

IMG_6566

展望台

IMG_6569

宮古島メガソーラー実証研究設備 発電設備っていいよねー やっぱ見学してなんぼよね。いや眺めただけですが。

IMG_6599

晩飯。ビフテキである。昨日と同じ。

IMG_6610

IMG_6611

IMG_6612

IMG_6613

三脚を持参したので天の川撮影に挑戦した。必要な設定。

  • F3.5
  • TV 25秒
  • 天候

曇り気味だったんだが雲が途切れたときにすかさず撮影するなどしていた。

IMG_6631


2014-09-21 :-)

_ [沖縄][宮古島]沖縄紀行 4 日目

沖縄紀行 2014-09-21 - an album on Flickr

朝飯

IMG_6635

川満マングローブ。FF12 のようだ。

IMG_6640

砂山ビーチ。シュノーケリングじゃなくてもこれくらいは撮れる。

DSC00102

DSC00104

DSC00106

DSC00112

DSC00119

これこれ!こういうの撮りたかったんだよー

DSC00127

DSC00130

おひる@すむばり もずく丼だそうな。

IMG_6649

雪塩 製塩工場見学は日曜日は営業していなかったというか見学できても割りとガッカリスポットだった。

IMG_6650

池間大橋

IMG_6663

池間島

IMG_6658

IMG_6660

  • 周囲の道「PMが示した仕様」
  • 中央の道「顧客が本当に欲しかった物」

IMG_6655

島尻マングローブ

IMG_6666

IMG_6674

IMG_6678

海中公園

IMG_6680

海中を眺めるんだがあいにくの天気により視界不良(通常は20メートル先まで見れるが今日は5メートルまでだとか) 若干入場料が安かった。

IMG_6681

対岸から海中公園を眺める。波が荒れている。

IMG_6686

晩飯。ビフテキである。昨日と同じ。

IMG_6691

IMG_6693

IMG_6694

IMG_6697

IMG_6698


2014-09-22 :-)

_ [ストラトス・フォー][沖縄][宮古島]沖縄紀行 5 日目

沖縄紀行 2014-09-22 - an album on Flickr

伊良部島と下地島へ行ってきた。ストラトス・フォー の舞台である。

朝飯

IMG_6701

移動。

IMG_6705

伊良部大橋 の工事をしていた。

IMG_6710

IMG_6713

舞台

IMG_6708

IMG_6711

おひる@さしばの里 主人公たちのバイト先のモデルだったそうだ

IMG_6717

下地島空港

IMG_6722

通り池

IMG_6729

IMG_6730

IMG_6732

IMG_6734

IMG_6745

IMG_6754

島から帰り。

バナナケーキのモンテドール で買い物。

IMG_6767

ゲバラの額にバナナがある。

IMG_6768

晩飯。ビフテキである。昨日と同じ。従業員がビールをくれた。

IMG_6773

IMG_6777

IMG_6778

IMG_6779

IMG_6782

IMG_6783

ref.


2014-09-23 :-)

_ [沖縄][宮古島]沖縄紀行 6 日目

沖縄紀行 2014-09-23 - an album on Flickr

朝焼け見れず。

IMG_6784

「まあそんなときもあるさ」

IMG_6786

朝飯

IMG_6790

そして帰路へ。

宮古島から那覇へ。那覇空港でバスに乗った。

IMG_6792

IMG_6796

昼飯は那覇空港の食堂で買った弁当。

IMG_6799

観光箇所を複数まわるとただ淡々とまわるだけになったのであまり彷徨かないほうがいいのかもしれんなあ。

本日のツッコミ(全2件) [ツッコミを入れる]

_ エモエモ [ビフテキ食べ杉内]

_ みわ [ビフテキ充でした]


2014-09-24 :-(

_ 午前

0530 起床

0700 食堂

0800 労働

_ 午後

1615 退勤

1630 上司とグダグダ || 客先の教育が充実している件について

_

1800 探さないでください

2000 飯。豚肉の生姜焼き

_ 買い物

amazon

ちと暗いか

IMG_6808

B00JL5XLCY

_ [國府田マリ子][ムササビ][川原湯温泉]川原湯温泉

東京新聞:川原湯温泉駅 ずっと記憶に 八ッ場ダムに水没 24日で終業、移転:群馬(TOKYO Web)

國府田マリ子 の歌に「ムサ君のお引っ越し~川原湯温泉に捧ぐ~」という歌がありまして。川原湯温泉のムササビのことを歌ったうたなんですが、はるか昔 偶然にも國府田マリ子ファンだった俺たちは川原湯温泉へ行ってムササビのぬいぐるみを買ってきたのであった。いや行ったのは一人なんですが。

1998年8月27日の日記より。当時は学生だった。いまの飲み連中の國府田マリ子クラスタとも出会っていない時期だった。

8/27(金)
「折角の連休なんだから何処かに旅行に逝ってこいよ。」
先日、バイト先の社員に言われたので、川原湯温泉に逝ってみることにした。
國府田さんのアルバム「だいすきなうた」に入っている「ムサ君のお引っ越し~川原湯温泉に捧ぐ~」で知ったのだけど、
この地域は平成18年にダムに沈んでしまうそうだ。そうなる前に一度逝っておきたかった。
因みにNHK「ひるどき日本列島」でも取り上げられていたね。
当日は「祭だから(宿の)部屋は空いてないよ。」と言うので、日帰りにした。祭?
大宮~高崎迄を新幹線で移動しようとしたのだが、気付いたら「越後湯沢」?
駅の外にはNAEBAという文字が見えるなあ。新幹線に急行とか各駅停車が有るとは知らなかった。

流石に若者は少ない。っていうか居ない。
昼から温泉に入っている人間は珍しいのか、入浴料金を払うときに珍しいものを見る様な目で見られた。
温泉街なので他に何も無い。取り合えず有名らしい「王湯」に入る。
寝不足だったためか、風呂を出たら吐き気がする。
温泉の建物と同じ処に有るソバ屋で昼飯。おお。手作りなためか歯応えが違う。
その後ムサ君グッズが有るという山木館に逝く。
ここは夜になるとムサ君が来る(夜行性)というので、ここに泊まりたかったが上記の通り満室らしい。残念。
取り合えず風呂に入って、ムサ君のぬいぐるみと、あとちょこちょこ菓子を買った。
一人の方が行動するには楽なのだけど、拙者の場合、旅は一人じゃない方が良いらしい。
いつもATフィールドを張っているから。

当時買ったのがこれ

DSC_0646.JPG


2014-09-25 :-(

_ 午前

0530 起床

0700 食堂

0800 労働

_ 午後

1630 残業アワー

_

1800 退勤

1900 探さないでください

2100 飯。ブリの照り焼き


2014-09-26 :-(

_ 午前

0530 起床

0700 食堂

0800 労働

_ 午後

1615 退勤

_

1700 自社 || Androidアプリを見せあおう的な

1830 退勤

1930 探さないでください

2100 飯。カレー

2200 ニセコイ BD が未開封だったので開封して特典 CD をエンコードするなど

_ 買い物

amazon

4873115930

_ 買い物

iTunes Store


2014-09-27 :-)

_ 午前

0930 起床 && 部屋掃除

IMG_6812

_ 午後

1200 おひる。うどん

1300 買い物

1400 アニメ消化

_

1700 アニメ消化

2130 飯。たら鍋

_ 買い物

amazon

4906866964

4906866972

B00J4HFR6M

_ 買い物

ヨドバシカメラですが

B00KBLIF1Y


2014-09-28 :-)

_ 午前

0600 起床

0730 出発

1100 掛川

_ 午後

1330 撤収

1500 東名高速道路で渋滞に捕まるなど

1600 ナビ通りに一般道に降りてみたがやはり渋滞しているなど

_

2030 帰宅 (;´Д`)

2100 飯。鮭のムニエル

_ [氷菓][舞台探訪][加茂荘]氷菓 舞台探訪 加茂荘

そろそろ 氷菓 の舞台探訪せんとなあと考えてもょもょしていたときに手軽に行けそうな箇所を見つけた。加茂荘花鳥園 加茂花菖蒲園 と云う。千反田える の屋敷のモデルになったところ。

日々の園内風景 狙い目です

今の時期はお花が少なく、ご来園頂くお客様の数も多くないので加茂荘をほぼ独り占めできるんです。

というわけでオフシーズンだけど行ってきた。最盛期は梅雨の時期。

帰路を心配したのでとっとと帰ってきたんだけど、時間が許すならば本でも読みながら一日中この屋敷でのんびりしたい。これはダメになる空間だ。

道中

往路は東名高速道路と新東名高速道路でばびゅーんと 3 時間ほどで着いたんだが、帰路は渋滞につかまり結局 7 時間ほどかかった。うぇぇぇ

舞台探訪開拓者たちはいつもこんな生活してるのか。マネできないというか体力がモタん。

途中で休憩したモスバーガー

IMG_6894

加茂花菖蒲園

花鳥園

IMG_6817

フクロウが居る。

IMG_6880

花鳥園内。ここはシーズン中ならば食事ができるようだ。若干獣臭いけど

IMG_6892

外に出る。

シーズン中ならば人で賑わっているであろうテーブル。

IMG_6822

ここで軽食を食べられるらしい。シーズン中ならば

IMG_6821

ここに花菖蒲が咲くようだ。

IMG_6824

加茂荘

加茂荘へ移動。桶のなかに亀が居た。

IMG_6876

加茂荘に入ると入場券の半券でウェルカムドリンクが 1 杯貰える。休憩所で飲む。

IMG_6832

頂きます。

IMG_6835

休憩所の一角はこうなっている。えるたそ

IMG_6829

舞台

@lidges さんの所をなぞるだけの簡単な つればし 氷菓 舞台探訪(聖地巡礼) 第2回 -加茂荘 加茂花菖蒲園-

hyo040s.jpg

IMG_6881

hyo041s.jpg

IMG_6882

hyo043s.jpg

IMG_6883

hyo044s.jpg

IMG_6884

hyo045s.jpg

IMG_6885

hyo046s.jpg

IMG_6886

hyo047s.jpg

IMG_6887

hyo048s.jpg

IMG_6888

hyo049s.jpg

IMG_6827

hyo052s.jpg

IMG_6877

hyo053s.jpg

IMG_6843

hyo056s.jpg

IMG_6841

hyo057s.jpg

IMG_6844

hyo058s.jpg

IMG_6845

hyo059s.jpg

IMG_6864

hyo060s.jpg

IMG_6839

hyo062s.jpg

IMG_6865

hyo063s.jpg

IMG_6866

hyo066s.jpg

IMG_6838

hyo069s.jpg

IMG_6870

hyo070s.jpg

IMG_6852

hyo072s.jpg

IMG_6850

hyo073s.jpg

IMG_6849

hyo075s.jpg

IMG_6846

hyo076s.jpg

IMG_6848

hyo077s.jpg

IMG_6856

hyo078s.jpg

IMG_6854

hyo080s.jpg

IMG_6857

hyo081s.jpg

IMG_6859

hyo082s.jpg

IMG_6861

hyo087s.jpg

IMG_6862

hyo088s.jpg

IMG_6851

hyo089s.jpg

IMG_6872

_ 買い物

amazon

4047299537


2014-09-29 :-(

_ 午前

0530 起床

0700 食堂

0830 労働 || 先週でサマータイムブルース終了

_ 午後

1700 残業アワー

_

1830 退勤

1930 探さないでください

2130 飯。ゴーヤーチャンプルー

_ 買い物

amazon

B00M69J19O


2014-09-30 :-(

_ 午前

0530 起床

0700 食堂

0830 労働

_ 午後

1700 残業アワー

_

2000 退勤

2200 飯。ブリの照り焼き

2230 読書

_ IT名文書

JF なんてもうみんな読まないんだろうか。