海外出張終わります

海外出張がいよいよ終わりです。

180日間のイギリス生活は特に嫌な思いもせず終わりました(仕事はアレでしたが)。


アニメはクランチロールで大方は押さえられるし、マンガもキンドルで補えていたのでオタク生活もそこまでは困らずと言ったところです。一部マンガ(最近だと苺ましまろ)はキンドルになく、少し悔しい思いもあります。マンガは今年になってからちょうどキンドルに移行し始めれいたのですが、運が良いのか悪いのか、お陰で読みたいマンガもすぐ入手できるようになったのがよかったポイントです。


治安が日本と変わらないくらいだったのが良いところです。ちょくちょくテロがあるとは言え遭遇することはなかったり、怖い思いも特にしませんでした。小旅行でドイツのミュンヘンにも行きましたがこっちも治安はそこまで悪くなく。

次海外行くときは油断しそうでそっちの方が心配ですね。


日の長さも驚きでした。夏は21時まで明いので遅くまでふらふらできます。冬の日照時間は日本(関東)より1時間くらい短いくらいでしょうか。秋は日に日に短くなるにが感じ取れて面白い経験でした。


食べ物は噂では美味しくないといわれ続けてましたがそんな事はほとんどなく。どうしても食べられないと言うものは数えるくらいでした。美味しくなさそうなものは”traditional”など名前に付いているので回避は難しくないです。他にもイタリア料理インド料理など美味しいものたくさんあるので基本的に困りませんでした。ビールは控えめに言っても日本の25倍以上の種類があり、毎日違うビールを探して飲むのが趣味の1つに(中には美味しくないものも)。


休日はだいたい博物館巡りを楽しんでいました。長期出張とは言え荷物を全部自分で持ち帰らないと行けないのでショッピングできなかったことも関係していますが。住んでた街オックスフォードにもアシュモレアン博物館、自然史博物館、ロンドンなら大英博物館、自然史博物館(こっちの方が大きい)など。他には鉄道博物館、航空博物館、戦車博物館など、日本と段違いの規模の博物館が多く大変羨ましいかぎりです。

教会やお城も良いですね。石造り、レンガ造りの大きな建物がドーンと建っていて、中も凄く幻想的な雰囲気。日本だと長崎くらいにしか無いですね。神社仏閣だとほとんどが茶色くて小さくて。それはそれで趣があって好きですが。


長期出張なのに車が借りれなかったのが残念なところです。ふらっと車出せは、30分でコッツウォルズに行ける場所に住んでたのに、電車バスで90分以上かかってしまいました。良い観光スポットなのに交通網が悪くて断念するって場所が何ヶ所かありました。また電車・バスのダイヤは常に乱れていて、出かけるときは常にそれを意識して動かないと移動に凄く時間がかかります。乗ろうとしていた電車が来なくて駅で1時間待ちぼうけも良くありました。


日本食はどうしても食べたいってところまではなりませんでした。日本でもお惣菜・コンビニ弁当ばかり、社食も美味しくなかったので、特にここ数年では思い入れもなく。会社の独身寮も狭くてやってられないので途中で帰りたいという気分にもあまりならず。むしろイギリスで住んでいるアパートが広くて快適なので、あの狭い寮に帰りたくない気持ちの方がおおきいです。


日本に帰ったら温泉入りたいですね。車も回収してドライブもしたいです。まずは温泉旅館でしょうか。雪を見ながらの露天風呂、美味しい日本料理が久しぶりに食べたいです。それと引っ越しもしたいですね。狭いし人が呼べないし、共同キッチンも嫌です。それと溜まりに溜まった写真を整理してブログに上げなければ。



ロンドン・ヒースロー空港 ビールを飲みながら


もうちょっと英語喋れるようになりたかったな。

Go 言語はじめました

三日坊主にならないように宣言しておきます(何

今まで自作のかんたんなスクリプトRuby で書いていたのですが、
他の言語をやっておかないとという衝動に駆られました。

一番の理由は、RubyRoR ばっかりで、他で使われている場面を
あまり見ないことでしょうか(ぱっと思いつくのは Mac の Homebrew くらい?)。

Ruby の比較対象といえば Python なのですが、こっちを触る前に
最近人気になってきている Go を始めています。
最近のホットは静的型付けらしいです。最近と言いつつも2年くらい前なのですでに
時代に取り遅れてる感はあります。

さて静的型付け言語ですが、特に Go は暗黙の型変換を許していないお陰で死ぬほど
苦労しています。例えば時間を待つ場合。

package main

import (
    "fmt"
    "time"
)


func main() {
    for {
        t := time.Now()
        mils := time.Second -
            t.Nanosecond()*time.Nanosecond
        time.Sleep(mils * time.Nanosecond)

        /* 何か処理 */
    }
}

これだとコンパイルが通りません。理由は mils という変数を作っているところで、
t.Nanosecond() と time.Nanosecond の型が違うからです (もともとはどちらも数値なのですが)。
ここは 「time.Duration(t.Nanosecond())*time.Nanosecond」とします。
慣れてないからか調べるのも地味に大変で今のところは以下のようにやってます。


  • 何らかの方法で触ろうとしている型を調べる
    • コンパイルエラーの内容を読み解く
    • reflect.TypeOf() を使って実際に型を print する
  • 肩を変換する方法を調べる
    • とりあえずキャストしてみる
    • ライブラリのドキュメント or ソースコードを追いかける

(どうやるのが近道なのか。。。)

Ruby なら標準ライブラリやよくメンテナンスされたライブラリなら
よくやる四則演算は何も考えなくてもやってくれるのですが。。。

10年前の抱負


rubyやってます - hijouguchiのブログ


約10年前に ruby 始めるってブログに書いてます。
当時は他にも言語触りたいって書いてました。
現状はどうなったかというと、、、

  • C よく使う
  • C++ あまり使わない
  • C# 全く使わない
  • Cocoa Mac/iPhone のアプリケーション自体作らない
  • java 全く使わない
  • Ruby よく使う

ということで当時あげていた言語のうち、結局2種類しか使いませんでした。
今思うと使ってない言語は、自分の用途では使う場面がない or 他の言語で代用できる
ので覚えなくても別に良かったのかなと思っています(逃げ
ここにあげてないもので使っているものは Verilog/SystemVerilog くらいでしょうか。
あとは一瞬 javascript も覚えようとしましたね prototype.jsjQuery 全盛期の頃に。

直近の覚えたい言語
Go 特に理由がなければメインをこれにしたい
Python Go で書くのめんどくさいときにこっちを使う
Rust かじっておきたいくらい
javascript いい加減 Node.js を覚えておきたい
SystemVerilog 仕事で使ってるが、細かいところまで理解できていない。UVM複雑すぎて投げたい

海外出張中です

 

これまでずっと英語を避けた生活をしていたはずだったのですが、
なぜか英語圏に半年くらいの出張を命じられてしまいました。
# すでに出張が始まってます

半年あればなんとなく喋れるようにはなると思っているので言語の壁は特に
気にしてはないのですが、生活面とか、アニメ見れるかとかが心配でした。

アニメは海外の専門サイトがあってそれが充実しています。それで補えない
ものは日本に立てているプロキシを経由してアマゾンプライムなどを活用す
れば対応できます。

生活面はなんかもうよくわかんないことだらけです。水が日本と違い硬水で、
これに縛られて水回りは(洗濯機、食洗機など)日本と異なります。なんとか
なるだろうと思って何も調べずに来ましたが割りと困ってます。
# とはいえネットで検索すればほとんどが出てくる時代なのでそれに助けられてます

あと緯度の違いにも悩まされてます。北海道よりさらに北の位置にある国で、
今は21時になってもまだ明るいって世界です。日本ではすでに真っ暗のはず

なのに、体の感覚はまだ15時くらいみたいになっていて気をつけないと体調

崩しそうでした。
冬は逆に日の入りが早いのでそっちも治安の面で不安ですね。

PC買い替えたい

ブログ移行したにもかかわらず、全く更新してなかったのでネタを。

今使っている PC ですが、どれも5年近く (5年以上) 立っていてそろそろ買い替えたいです。スペック上は特に困ってない(というか、学生時代に比べて触る頻度がめっきり落ちた)のですが、パーツには寿命と言うものがあって、それに引っかかってこないかが不安要素になっています。

買い替えたいパーツは何個もあるのですが、まずは
1. MacBookPro Mid 2012
2. 自作PC (2011~)
の2つを変えたいですね。

自作PC自体は、ほぼ録画サーバ兼ストレージサーバ用途で、HDD さえ潤沢に積んでおけばある意味なんでも良いのですが、問題は Mac の方です。

かつて iMac '27 と MacBookAir '11 を使ってた時期があって、その時が一番便利だったなと思っているので、その頃に倣って2台体制に戻したいなと考えてます。

とはいえ、今は部屋が狭いので iMac '27 は置くのが厳しい。とはいっても今の Mac Mini はあまり買いたいとも思えないのでデスクトップ側が悩みどころです(流石に MacPro は予算オーバー)。

ラップトップは MacBook でいいかなと思ってます。気になるのは USB-C 1本しか無いところですが、用途としては特に困らないかなと思います。使用用途としては写真整理ですが、写真自体はカメラの Wifi 機能で転送してしまえば良いので。

置く場所とかの問題よりもっと致命的な話があって、PC 買い換える予算を作ってないってところもあるんですけどね。来年度こそは買い替えたいので予算を準備します(あと引っ越したい)。

今日はこのくらいで。

納車一年経ちました

納車から1年経ちました。

 

車を買ってよかった点がたくさんありまして、中でも特に大きいのが

行動範囲が比べものにならないほど広がった点があります。

よく「交通網が発達してるから車なんて入らない」言いますが、そんな物は嘘だと思ってます。
住んでるところが発達してても出かけたい場所がそうで無かったら、結局行かないですよね。
また、知らない街の交通網事情なんて調べないと分からないので、行き当たりばったりで
出かけるのは勇気がいると思います。

車ならとりあえずナビセットして行ってしまえばダイヤ気にせずどんどん進めちゃいますね。
(駐車場があるかどうかはちゃんと考えないとダメですが)

IMG_1020.jpg
IMG_8602.jpg
IMG_1081.jpg
IMG_8330_2.jpg

#気がつけば周りは ND ばかりに。。。いいなぁ。。。

 

また買った車がオープンカーな事も良かった点のひとつです。天気が良い時や、さらに星空が見えてるときに屋根を開けてドライブしてるときのあの開放感は一度経験するとやめられないです。気分が沈んでるときも一瞬で忘れてしまいます。

1年でおよそ 14000km だったので、月平均で見ると 1150km でしょうか。
最近仕事が忙しくなかなか帰してくれなくて、仕事終わりのドライブが無く
なってしまったり、休日も何かとどうでもいい理由付けて出かけなくなったり
で少しずつ乗る距離が減ってきてしまってます。。。
車に乗る・乗らないは別として、積極的におでかけしたいですね。とはいえ漫画・
アニメや、プログラム・電子工作にあてる時間もとりたいので中々悩みどころで
はあります。

納車時の目標は年間 15000km だったので、少し届きませんでした。2年目はこれを

再度目指してドライブしたいです (自転車も乗りたいのでバランス良く)

 

ちなみに、年間で車にかかった費用は、

  • 駐車場代 16万円
  • 保険 12万円
  • ガソリン 8万円
  • 高速代 10万円
  • 雑費 4万円

※ 軽自動車、燃費 20km/L(レギュラー)
とおよそ年間50万円くらいかかる計算です。
これを高く見るか安く見るかは皆さんのご判断で

年明け+ブログ引っ越しました

今年もよろしくお願いします。


もうはてなダイアリーは古いかなぁと思っていたので、引っ越して
はてなブログに移行しました。

ダイアリーから記事をインポートしましたが、プログラムのソース
コードが入ってる記事が見にくい感じになってるので今後は貼り付
け方を変えようと思います。
#プログラミング系の記事書く書かないを含めて検討

一昨年の年末から zaim と、garmin connect でのアクティビ
ティトラッキングを始めていて、家計簿と運動(主に自転車)のト
ラッキングが出来るかぁなという感じです。
家計簿の方は食費がどうとか、旅行しすぎたとか、あるいは漫画・
BD 買いすぎたとかが一目で分かるようになったのでどこを切り詰
めないと行けないかなどの課題の洗い出しが容易になりました。
また一昨年車を買いましたが、それのおかげで家計には相当ストレス
がかかってます。それは別の記事で書こうと思います。

自転車は去年は 555.61km しか乗れてないようです。年間2000km
くらいは乗りたいなと思っていたのですが、1/4しか達成できてませ
んね。これはひどい
そろそろ garmin connect からワークアウトを設定して毎週自転
車に乗らざるを得ないような状況を作っておこうかなと思います。
そうでもしないと運動すらしなくなってしまいそうなので。


去年は良いこと以上に悪いことが多かった気がするので、
今年は悪いことが減って欲しいですね。
とはいえ仕事の方も暗雲が立ちこめてるのでしばらくは
良くないことが起きそうなので我慢が続きそうです。

 

適宜ガス抜きしながらやっていきたいと思います。

PSoC で C++ を使う その2

前回の続きです。
PSoC5LP では C++ がわかったので、ラッパクラスが作れないか見てみました。

方針としては
1. PSoC Creator が自動生成する関数を struct でまとめる
2. ラッパクラスに (1) を登録して宣言する
3. read(), write() など、よく使うと思われる関数のみ対応
といったところです。
(割り込みは今のところ使う予定が無いので後回しです)

struct の宣言が面倒なのでマクロもあわせて作ってます。

#include <stdint.h>

/* --------------------------------------------------------------------------
 * PSoC SPIM Wrapper Class
 * --------------------------------------------------------------------------
 *
 *  Usage
 *
 *  pdev_spi_t dev = CREATE_PDEV_SPI_T(INSTANCE_NAME);
 *  PSoC_SPIM  spi(&dev);
 *
 *  spi.write(0xXX);
 *  while(!(spi.dev->ReadTxStatus() & spi.STS_BYTE_COMPLETE));
 *  spi.read();
 */

typedef struct {
  void    (*Start)(void);
  uint8_t (*ReadTxStatus)(void);
  uint8_t (*ReadRxStatus)(void);
  void    (*WriteTxData)(uint8_t);
  uint8_t (*ReadRxData)(void);
} pdev_spi_t;

#define CREATE_PDEV_SPI_T(instance_name) { \
  .Start        = instance_name ## _Start, \
  .ReadTxStatus = instance_name ## _ReadTxStatus, \
  .ReadRxStatus = instance_name ## _ReadRxStatus, \
  .WriteTxData  = instance_name ## _WriteTxData, \
  .ReadRxData   = instance_name ## _ReadRxData \
}

class PSoC_SPIM {
  public:
    const pdev_spi_t * const dev;
    static const uint8_t STS_SPI_DONE           = 0x01;
    static const uint8_t STS_TX_FIFO_EMPTY      = 0x02;
    static const uint8_t STS_TX_FIFO_NOT_FULL   = 0x04;
    static const uint8_t STS_BYTE_COMPLETE      = 0x08;
    static const uint8_t STS_SPI_IDLE           = 0x10;
    static const uint8_t STS_RX_FIFO_FULL       = 0x10;
    static const uint8_t STS_RX_FIFO_NOT_EMPTY  = 0x20;
    static const uint8_t STS_RX_FIFO_OVERRUN    = 0x40;

    PSoC_SPIM(pdev_spi_t * _dev) : dev(_dev)
    {
      if(dev->Start) dev->Start();
    }

    inline void    write(uint8_t data) { dev->WriteTxData(data);   }
    inline uint8_t read(void)          { return dev->ReadRxData(); }
};