2015年11月7日土曜日

CommonLispでpackageとか名前空間とか コロン(:) について知ったこと

概要

  • Common Lisp の package について
    • 解説したリンクを集めた
    • package について説明を試みた
    • package について疑問に思ったことをまとめた

参照リンク集

CommonLispでの Packageとは?

  • Lispの関数名も変数名も シンボル として扱われることを納得しておく必要がある
    • 関数名、変数名、スペシャル関数名、マクロ名 etc
  • シンボルが 所属 する シンボルの管理単位
    • 一部の例外を除く(!)すべてのシンボルは パッケージに属している
    • 例外1:gensym で生成されたシンボルは どのパッケージにも属さない
    • 例外2:キーワード - キーワード(keyword)という 特別なパッケージに属している
  • Common Lisp の第一級オブジェクトである(後述)
  • CommonLisp が標準で持っている関数やマクロや変数(シンボル)は
    cl, common-lispという名前空間に属している
  • REPLで実行して一時的に作られた and/or
    特にパッケージを明示せず定義されたシンボルは
    cl-user, common-lisp-user という名前空間に属している
    • REPL のデフォルトの package である

シンボルは第一級オブジェクトである、とは?

なんでも定義・変更できる(?) Common Lisp の例にもれず、package も各種操作を受け付けるということ
  • パッケージ(という値)の定義、削除
  • パッケージの名前の定義、削除、変更、ニックネームの定義
    • やっぱりパッケージを表すシンボル なんだろうか。調べきっていない
  • パッケージの中身=シンボル、の追加、削除
  • パッケージの外側に公開(export)するシンボルの決定
  • 他パッケージに属するシンボルを自パッケージに包含する
  • 自他パッケージに属するシンボルを「隠す」「上書きする」
    • shadowing? ここがまだよくわかっていない、あるいは困るまで調べない
    • 関数のオーバーライドと呼ばれる機構に近いらしい
  • 現在のパッケージ を切り替える
  • 各種調査用関数

パッケージのシンボルに対するアクセス方法 … コロン(:) の意味

  • package-name:symbol-nameexport されているシンボルにアクセス
    • packageが読み込み済みである必要がある
    • ppcre:scan ql:quickload asdf:load-system など
    • あるライブラリが提供している関数を使うときはこの方法を使う
  • package-name::symbol-name で パッケージ内の任意のシンボルにアクセス
    • exportされていなくてもアクセス可能
    • private, friend, protected 、、、なんてものは存在しない、完全ノーガード
    • shadowingしたらどうなるんだろう?
    • この手段を使うのは冷静に考えて邪道

コロン(:) を使う特別なシンボル…キーワード について

  • :keyword のように、コロン(:)から始まるシンボルをキーワードという
    • 何もない名前空間を参照しているわけではなかった
  • キーワードは 評価するとシンボル自身を返す
    * :test
    
    :test
  • キーワードは、keywordパッケージに属する
    • という扱いらしい。

Common Lisp のソースを読んでいて浮かぶ疑問

  • defpackage ? in-package ? なにこれ?
    • defpackage のところに、パッケージ名が書かれています。
    • :export という項目があれば、それが公開されている 関数、変数の一覧です
    • in-package はそのあとに定義したシンボルをパッケージに所属させるための
      定型文ですので、自分でライブラリを書くのでなければ気にしなくてよいです
  • ライブラリの関数なんかは ライブラリ名 + : + 関数名、で呼べるんだね?
    • だいたいそうです。cl-ppcre:scan とか asdf:load-system とか。
    • ライブラリ名とパッケージ名が違う可能性があるので注意してください
    • ニックネームが提供されていることがかなり多いです。 cl-ppcreppcre でもOK。
  • (あるはずの関数・変数について)そんなものないって怒られるんですけど
    • asdf, quicklisp でライブラリの「処理の中身とシンボル定義」を読み込む必要があります。
      • 読み込んだ後から使えるようになります
    • 自分でパッケージを扱いだすと、もう少し複雑な「シンボルがない」状況に直面すると思います
  • defsystem, defgeneric, defmethod, def** ってちがうの?
    • defsystem はわりと関係あるんですが、、、わかってません。ひとまず ASDF に関連してます
    • defgeneric, defmethod は CLOS ですね。まだよくわかってません。
    • だいたい「**を定義するマクロ」だと思って間違いありません。

他言語から流れてきた人間として思う疑問

  • namespace, using (C++, C#, Java) とは違うの?
    • namespace はかなり package に近い、クラスや関数の所属先を決めている
    • 違いは CommonLisp では シンボルは、定義された瞬間のpackageに属する こと
    • in-package で定義される 現在のパッケージ に属する
    • シンボルをパッケージに所属させることを intern というが
      任意のパッケージを指定できる
    • using の代わりに、defpackage の :use や use-package関数を使う
  • require(ruby), import(python) とは違うの?
    • common lisp にも require はある、、、いろいろまずくて誰も使ってないけど
    • ライブラリをひとまとまりで読み込む標準の機能はない
    • それは quicklisp や asdf が手助けしてくれる
      • はよ言語標準にならんかな
    • 個別ファイルであれば load を使うことで可能
    • using の時に書いた defpackage の、、、などが、そのpackageにあるシンボルを
      パッケージ名省略して使います、という宣言になる

まとめ。他の言語がむしろ、一つの文に複数の機能を備えていると言えるのでは。

  • 名前空間の定義
  • (名前空間に属する機能の)プログラムやデータの一括読み込み機構
  • 関数名、変数名、クラス名について、名前空間の明示的な省略
そしてLisperはおもむろにマクロを定義するのであろう。

ひとこと

  • Common Lisp における package に調べだしたところ、
    それがなんであるかについてはイメージを持てたのだが、
    いざ説明を書こうとして説明が難しすぎてさじ投げた
    • 伝わる書き方というのが結局見えなくなった
    • 特に、他言語の例については、ある程度理解が進むとむしろ説明が難しい
    • 何がわかっていなかったかわからなくなる
    • 他言語の例は自分が知っている言語をさらしているだけのような気がする
  • 投げたさじを拾ってわかっていることだけまとめておいておくことにした
    • 伝わるように書くことをあきらめた
  • Quick Reference に載っている関数を一通り試したのだが、
    一部の関数が思ったように動いてくれない。使い方を勘違いしているのだろう。
Written with StackEdit.

StackEdit上の編集でXXを含む記事をBloggerに投稿する方法メモ

画像

Blogger はURLを指定して画像を記事に埋め込むことができる。StackEditはMarkdownの画像埋め込み機能を使ってそれを簡単に実現できる。
アップロードはどうせGoogleのサービスを使っているのだからGoogle+ がよいだろう。StackEdit のGUIに Google+の画像をImportしてくるというボタンもあるため、使いやすい。

アップロードテスト用の意味のない絵 タイトル
画像のをつける機能はないのである!

Markdownの記法としては

![<alt属性テキスト>](<ImageURL> "<title属性テキスト>")

Google+ の画像を使うときは、素直に StackEditの機能を使ったほうが良さそうである。URLが埋め込み専用のシンプルなものになっている。

アニメーションGIFもいける。

画像だからね。
ウゴツールで作成した特に意味のないGIF画像

2015年10月22日木曜日

Viscera Cleanup Detail 攻略 : センサー反応 そのほかtips

少しだけ:Viscera Cleanup Detailとは

怪物に襲われたゴミ処理場、何かの生物に襲われた?医療設備、何かあったらしい宇宙ステーションなどのさまざまな惨劇の舞台を清掃するゲームである。

Visceraとは臓物の意

ぶちまけられた血、反撃の後のと思われる銃痕、薬莢に銃、何よりバラバラになった人体と臓物、たおされた怪物の一部などなどのグロ要素
そこに馬鹿みたいに散りばめられた菓子の袋や紙コップ、中華料理のテイクアウト箱、缶。などの、なんで片付けねぇんだクソ、、と思わされる要素に満ち溢れた素敵なゲームである。

この記事はプレイしたことがある人を対象に書いている。ゲームの様子などはぜひ実況者さんのプレイを参照されたし。

センサーに反応するもの

センサーには二種類あることはプレイされた方であればご存知のことと思う。だが、何に反応するかは、割とわからなくなりがちであるので、まとめた。

緑のセンサー:物体反応

  • 薬莢
  • 銃痕、プラズマ銃的な攻撃の跡
  • 煤汚れ(プラズマ溶接銃や火薬ドラム破壊などで出る火の跡)
  • 菓子袋、紙コップなどゴミ
  • バケツ
  • 壊れたランタン

青のセンサー:生体反応

  • 肉片、臓物、未知の生物
  • 血液
  • バケツ

覚えておきたい

  • バケツは両方に反応
  • 銃痕、煤汚れは物体扱い
  • ドラム缶、何かの箱?ブロック?コンテナ?は清掃対象外
  • ステージごとに清掃対象外の物体は案外ある。みどりの植物体とか。

その他Tips

  • zero gravity のエレベーターは重力On時に稼働する
  • 無重力状態では、汚れたバケツをぶちまけても周りは汚れない!
    • ありがたいが、将来変更されても不思議ではない
  • バケツは水入りでも2段まで安定して重ねて運べる
    • 3つ以上はうまくいかないことが多いのでやらない
    • (追記)Shiftで歩いているときは3段安定らしい。
      • 私は3段持って走ると、段差を超えたときに大体吹っ飛ぶ。
  • 一番の敵は物理エンジンである。間違いない。
    • 特に薬莢はゴミ箱の中身をぶちまける原因になりやすい。
      薬莢を含むゴミ箱には、臓物をできるだけ入れないのがよい

ゲームについてのその他のこと

リアルタイム2時間を平気で食いつぶしてゆくゲーム。

ゲームにおける効率化の追求とミスをしない手際のよさの育成がされる(プレイヤーの。)

綺麗になった部屋を見てなんか満たされる感覚を味わえる

イラついたらプラズマ溶接銃で溶かしまくろう!

2015年10月14日水曜日

StackEditを使ってBloggerに記事を投稿する際に注意することのメモ

注意事項一覧

  • 記事名は原則としてファイル名
    • 後述の YAML Formatter を用いることでつけることが可能
  • タグはつけられない
    • 後述の YAML Formatter を用いることでつけることが可能
  • 投稿のID (PostID) は、記事編集ページのURLの中に含まれている
    • 記事を編集で開き、URLを確認する
    • 記事一覧ページで記事編集ページへのリンクURLを確認する
  • アップロード後に編集、そのあとに再アップロードすると、、、
    • タイトルは元に戻る
    • タグは元に戻る
    • 記事内容はアップロードしたものに戻される
    • とにかく全部元に戻るので、Stackedit の中で完結するようにしないといけない
  • 箇条書きは「前」と「後」の両方に空行がないとダメ
    • 「前」に空行がない場合は箇条書きと認識されない
    • 「後」に空調がない場合、箇条書きの一部とみなされ、組み入れられる

YAML Formatter によるメタ情報の記載方法

StackEditがBloggerにアップロードする場合、YAML Formatter によるメタ情報の埋め込みに対応している。記事テキストの冒頭に、次のようにメタ情報を記載する。

---
title: 記事タイトル
tags: タグ1,tag2,タグ3
---

利用可能と説明されているタグは

  • title : 記事公開用タイトル
  • tags : 記事のタグ, カンマで区切る
  • published : (未確認)
    • false で非公開状態でアップロード?
    • (追記) 2015-11-07 : false で下書き状態でアップロード。
  • date : (未確認)
    • 公開日設定をできそう
    • 公開予約もできる?

情報は2015-11-09現在。

スタイルや記事の書き方に関連する事項 (2015-11-09追記)

  • 記事タイトルと見出しレベル1を同じにしたら、同じ文章が大きく二つ並んで見苦しい
    • 見出しレベル1:#一つ, ===による区切り
    • Markdown の記事スタイルとして、見出しレベル1の要素を記事タイトルとして使う方法はとれない
  • 現在自分の 使用する Bloggerスタイルテンプレートは、見出しレベル2より、レベル3のほうが大きい。
    つまり、テンプレート次第では、見た目に影響が出てしまう。使用に注意が必要
    • できるだけ記事の論理性に一致するテンプレートを使いたいところ
    • h1 が一番目立つ、h2 が次、h3はそれより小さい、、、
    • スタイルシートのカスタマイズも手ではある

Written with StackEdit.

2015年9月26日土曜日

CommonLisp の標準機能における繰り返し処理の一覧

参考

Common Lisp Quick Reference

Land of Lisp (書籍) : 日本語訳10章にある Loopマクロ周期表が役に立つ

使用方法については次を参照。
- Lisp入門サイト(そのうちまとめる)
- Hyperspec
- 逆引きCommonLisp の 制御構造のページ

一覧

どれぐらい役割や使い方が簡単に理解でき かの順に並べている

  • dotimes, dolist
  • map系関数 : mapcar, mapc, etc…
  • xx-if, xx-if-not 系関数 : remove-if-not, substitute-if
  • loop (永久ループ)
  • do
  • loop (複雑なマクロ)
  • tagbody と go を用いたループ

これは、、、なかった

  • foreach, each : dolist, loop
  • for : 上記のうちからデータ構造に合ったものを選ぶ
  • foreach-range : OnLisp にある mapa-b など参照
  • while : do, loop で実装, 有志のマクロなども参照

補足

  • 少なくとも上を覚えておくと、ProjectEuler, HackerRank etc… などの回答系サイトでは困らない
  • 同じことを繰り返した結果、面倒になって、OnLispに載っていたマクロを使いだすこと請け合い
  • GoogleによるCL Coding Standard で半推奨的な位置にあるためか、loopマクロをよく見かける。
  • REPLのエラー表示でマクロ展開形にtagbodyが出てくることがある。マクロは自由である。
  • 実際のコードを見てどれが繰り返し処理かを見抜くことは,,,私には少なくとも難しい。
    • APIやデータ構造の把握が先に必要。
  • 書き漏れがあったらまた記事更新する
    • もっと伝わる書き方がわかったら記事更新する

書籍のご案内

Written with StackEdit.

2015年9月13日日曜日

BloggerにMarkdownで記事を書きたいんです

Blogger に Markdownで記事を書きたいんです!!楽なんです!

大切なことなので2回書いた。

StackEdit がその欲求を かなり 満たしてくれる。

特にソースが書きやすい。Blogger のソースコード対応は実際残念

(defun tarai (x y z)
  (if (< x y)
      y
      (tarai (tarai (1- x) y z)
             (tarai (1- y) z x)
             (tarai (1- z) x y))))

うまくいったらごかっさい!

覚書。

  • いきなり公開状態になるようである。要注意。
    • (追記:2015-11-10) YAML Formatter で published: falseを指定することで非公開でアップロード可能
  • タグは当然(?)つかない。つけ方あるかも。
  • 一度アップロードして、タグ付けして、再アップロードはタグに影響なし。
    • (追記:2015-09-26) タグ消えてた。YAML Formatter でつけるのが吉
    • (追記:2015-11-10) YAML Formatter でつければ付け替えも容易
  • 冷静に考えると、新しい記事としてアップロードされるわけではないのだな
    • (追記:2015-09-26) Bloggerの投稿済みページ管理からPostID を見つけ出して指定できる
    • (追記:2015-11-10) StackEdit 経由であれば自動的にID を認識して上書きしてくれる
  • なぜはてなにしなかったのかと今は思う
  • Dropbox との相互syncとあわせると記事管理がはかどる、、、ことを期待
  • markdownで改行すると、アップロードでも改行される。これは少し期待と異なるが許容範囲。

注意点をまとめた記事を書いた。

Written with StackEdit.

2015年8月26日水曜日

ASDF にかかわる右往左往

かかずにはいられない

ASDFに対する先入観がゆえに迷う

ASDFについてかつて聞いたことがあった、yum や apt-get のようなものと思っていた
そのことを知っていたがゆえに迷った。yumや apt-getで取得したプログラムがどこにおかれているか、普通は知らないようなもので、いったいどこにあるのか、ちょっと調べただけでは出てこなかった。

なお、正確には asdf-install が実際 yum や apt-get のような役割を果たしていた
現在はQuicklisp がその役割を担っている。

Quicklispは認証つきHTTP Proxy を超えられなかった。

Quicklisp 自体は Proxyなしの環境で動作することを確認した。手軽ですばらしい。

認証付のProxyについては?無理である。公式にも(今は)出来ないと書いてある。

じゃあ作ってやるぜ!と一瞬思ったが、
誰が使うんだろう?とか、自分なんかに、とか、
とりあえずやらない方向の感情が渦巻いたのでとどまった。

そんなことよりライブラリが動いてほしかった。

公式の説明にすべて書いてあった

  • ~/common-lisp フォルダ内にライブラリをフォルダごと置く
  • フォルダ名と 中にある .asd の名前が同じになるようにする
  • 大体のライブラリは .asd が提供されている
  • 自分で作ったライブラリでも同じようにできる
と書いてある。英語で。英語で。そしてすべてそのとおりにすることで結果的に動いたのであった。

公式の情報に気づいた時点で、古いasdf-install の日本語の情報にはあたったあとであり、Quicklisp は Proxyなしで普通に使う方法がわかっていたこともあってASDF についての調査がほぼ意地になっておりWindowsでは微妙に違うね、とかASDF 3.1.5 以降では、とかXDG_DATA_PATH とかわからないキーワードに引っかかってみたりなんとなくそうらしいところにフォルダをおいてみたりQuicklispのフォルダにおいてみたり環境変数を見てみたりパスを確かめる関数を探してみたりして片っ端から失敗して結果完全に頭に血が上っており要するに

本当にそうだと気づくまでに2日かかった。

SBCLの認識するホームディレクトリを確認する方法

次のコードを実行することでわかることを知った。
(truename "~")
もっとも、実行結果で偶然わかるのであって、処理自体はエラーになる。
わからないが用は足せる。というやつである。

Lispの情報の大半は英語である!

和訳情報もあるし、日本語で有用な情報を発信される方はこれが結構多い。
そして2chのLisp関連スレは意外なことに機能しているし、
困らないんじゃないか!と思ったが、これがこまる。
2chコワイ。そもそも何を聞いたらよいかわからないという。

丁寧な解説は基本的に英語であるというのは身もふたもない事実なので、
冷静に英語を読んだほうが良い結果になりやすい。と今回の件では思った。

Windows の SBCL で ASDF を使って ライブラリを読み込む

あるいは Windows でちょっと Lisp を使いたいんだけどライブラリを読み込む方法がわからないときに役立つ可能性のある記事。なお、すべてASDFの公式に書いてある手順である。

概要

Windows上のSBCLで、ASDFを使ってライブラリをREPLに読み込む方法を確かめた。

注意事項

2015現在、プロジェクトをREPLに読み込む標準的な方法は Quicklisp(https://www.quicklisp.org/beta/)です。
Quicklispに登録されているライブラリであれば、この方法を使うよりずっと楽です。

なぜ今回このようなことをするに至ったかというと、
QuickLispが認証あり HTTP Proxy を越えることが出来なかったためです。

それはそれとして、作りかけのおれおれライブラリを常用する場合などに備えて、知っておくとよい、、、かもしれません。

この記事ではやっていないこと

.sbclrc に書き込んで自動読み込み
SBCLを停止せずに再読み込み
ソースコードの置き場所を変更する

参考リンク

バージョン情報

  • 言語環境 : SBCL 1.2.13 (Windows, x64)
  • OS : Windows7, Windows8.1

重要な事柄

SBCLにはASDF が標準添付されています。
次の手順をREPLで実施することで、ASDFの機能を有効化できます。

(require 'asdf)
; あるいは
(require "asdf")

手順


  • ライブラリのソースコードをダウンロードします
  • 自分のドキュメントフォルダ (C:\Users\<ユーザー名>\Documents)を開きます
  • common-lisp フォルダを作成します
  • ソースコードを展開します。フォルダが出来ます
    • たとえば split-sequence-1.0 というフォルダ
  • フォルダの中に (ライブラリ名).asd というファイルがあることを確認します
    • これがASDFの認識するライブラリの情報ファイルです
    • ヘッダファイルのようななにか
  • common-lisp フォルダの中にソースをフォルダごと移動します
  • フォルダ名を (ライブラリ名) になるようにします
    • split-sequence のようにする
    • .asd ファイルのライブラリ名と同じである必要があります
  • SBCLを起動している場合は、一度とめる必要があります
    • とめない方法は未調査
  • REPLで ASDF を有効化(先述のとおり)
  • (asdf:load-system "(ライブラリ名)") を実行します
    • (asdf:load-system "split-sequence")
  • ライブラリの関数その他もろもろが読み込まれてライブラリが利用可能になります

感想

出来てみれば公式に書いてあったとおりであった。そうとは知らず右往左往した。

2015年8月15日土曜日

第05期のテーマはLispにしてみよう

Lisp(また)始めました

大学生のときに勢いでLispをして現実に流されたのだが、
今回は現実にさらされているので、もう流されても大丈夫

始める前から役に立たない記事ばっかり増えそうだ、、、
心構えは「恥をさらしてみよう」

問題は、ここに書かれている方法が「唯一で正しい方法だと思い込まれる」ことぐらい、、。

Lispは、今ちょっと試して調べて分かったこととしては、
ちょっとLispがわかってくるだけで3つぐらいの書き方が思いつき
そして違いは読みやすさとデータやスコープのまとめ方と速度。
速度が違いそうという気はするが、実際は?まだわからない。

なお、言語Common Lisp で、環境は SBCL (1.2.14) です。
Clojureに興味はある。だがまずは、古臭くてべたべたに書ける世界へ。初めての方には ClojureかSchemeを学ぶことを深くお勧めします。はい。

第05期の期間情報メモ

2015/08/15 開始を宣言。

その間にしていたこと
  • ドローンはあきらめた(お金)
  • ゲームをかなりしなくなった
    • とはいえFallout4 の発売まち
  • 投資は続けているが、新しいこともなし
  • vagrantとansibleと仮想化に少し詳しくなった
    • ネットに記事があふれているので書く予定なし

2015年4月13日月曜日

さようならPresto, こんにちはChronium.

Opera というブラウザがあります。

私はOpera に広告が乗っていた時代から使っている。Opera 8 だったと思う。IE6 がくそだくそだといわれつつも最大シェアを持っている時代を通り過ぎている。私のウェブ生活にはOpera が常に隣にあった。

バージョンアップを重ねるたびに「なんか前のと違う」と思いつつ、なんだかんだで手になじんでいったOpera。私が使っていた機能は
  • どのブラウザよりも手になじんで最小限で無駄のないマウスジェスチャ。
    • FirefoxでもChromeでもジェスチャプラグインを入れて使っている
    • 最も手になじんだ操作で無駄もないのはOperaだけ
  • 便利なブックマーク機能
    • ただし Opera 9 あたりが最強だった
    • ブックマークバーを出しやすい、ツリー方式で整頓しやすい,見渡しやすい
  • 上部ブックマークバー
    • といっても一般的な機能ではある、、、はず

Operaというブラウザは、一度終わっています。

OperaはかつてPrestoという独自のウェブブラウザエンジンを開発していた。そして、他のどんなブラウザよりずっと早く多くのページを表示することができた。W3Cの仕様に完全準拠していたためにIE6向けに最適化されたページのいくつかが壊れて表示される問題があった時代もありましたね、、、。そしてそれは v12.19 というバージョンで終わった。いつだったか。2年以上前だった気がする。そして、Webkit (Chromeと共通)エンジンに移行することを発表した。

OperaがWebkit(Chronium) エンジンに移行したとき、ひとまず試した。ところが、そのときのOperaは驚くほどChromeで、Chrome以外の何者でもなく、正直言って存在価値がなかった。詳細はWikipediaのOperaのページで。私はブックマーク機能を失うのがいやで移行しなかったし、その後の以降を検討しなかった。

一方で、どうしようもない問題も抱えていた
  • v12.19 (Presto最終版)は、WOW32モードで一定条件を満たすとOSごと落ちる
    • いまどき珍しいソフト起因のブルスク
    • 条件は:Operaでメモリを4GBまで使った状態で動画を再生する(Youtubeなど)こと
    • FlashPlayerにも一定原因はあるんだろうと思う
    • 動画を自動再生するページを開くだけでOSごと落ちるので大変気を使った
  • そもそもアップデートが止まっている。
  • いくつかのサイト(といっても主にYahoo)がサポート対象外とした
そして、さっきだ。決定的な出来事が発生した。調べ物のペースが乗ってきたときに、予期せず動画の含まれるページを踏んだ。プロバイダとかなんとかの宣伝動画だったんだと思う。そして、落ちた。ブルスクになった。賢者タイムでもここまで残念な気分にはなるまい。上司に今まで必死に作ったものの仕様をすべて否定されひっくり返されたときの悲惨な気分がよみがえってきた。、、、さすがにそこまでひどくはなかった。しかしだ。もうだめだ。これはさすがにもうだめだ。残念だが、お別れの時がきたのだ。

さようならPresto, こんにちは Chronium

かくして、Opera 28 をインストールした。案の定「貧弱なマウスジェスチャのついたChrome」に成り下がっていた。ちょっと操作をしてみて、失ったものに気づき、苛立ちを覚えた。それを捨てることに下Opera社を恨んだ。しかし、仕方ないのだ。お別れは済ませたのだ。振り返るわけにはいかないのだ。

幸い、我慢強き先人たちが拡張機能を切り開いてくださっていた。Chrome ベースなのでそうではないかと思ったが、実際あった。ありがたかった。

私にとって大体 v12.19 に近づけるためにしたことについて記す。
  • 失われたホイールジェスチャ,リンクジェスチャの復活 : MoreGestures
  • 殺意が芽生えるほど使いづらいブックマーク管理を多少マシに:Bookmarks
  • 幸いなことに、ブックマークとセッションは v12.19 のものを引き継ぐことが出来た
    • ただしセッションはブックマーク扱いである
残念ながらブックマーク管理機能は元には戻らなかったし、まだ不満が残っている。しかし、最低限度はクリアした。旧来の機能を捨てるという選択をしたOperaには許せない気持ちがいっぱいだが、それでもまだOperaというブランドとわずかに残る優位性を捨てずにがんばっていることについては、畏敬の念をもつ。だから私は結局Operaを使う。拡張開発者の裾野も広がっているのだろう。プラグインの作者様には無条件で感謝する。

悪いことばかりではない。Evernote Web Clipper がOpera でも使えるようになったのだ。Chrome に擦り寄ることもすべて悪いことではないのだ。(ちなみに Firefoxプラグインは使い物にならない。実体験済み)

そして私はまた悪くなった操作性に慣れ、失われた機能を忘れながら、Operaを使うのである


2015年3月18日水曜日

今使っている iPad のアプリ

前に iPad で入れたアプリのことを書いていた

そう。なんか微妙にアクセスがあるんだこれが。ひょっとして検索間違って吸っちゃってる?単に自分の好みを紹介しただけのつもりが、、、とも思うが、ただこのブログの趣旨が単に紹介するだけだったりとりあえず思ったら書いてみるだけのページだったりするのでその傾向は変わる予定がない

しかしまあ、せっかく時間がたったことだし、Before-After で今も生きているアプリとその理由についてメモをとっておきたいと。思ったわけだ

使わなくなったアプリ

  • ぷよぷよアプリ
    • Androidからアカウントを移動したが、やめることにした
    • ソシャゲ卒業、課金分はまだ若干残ってるけど、やめられて生活好転したのでよし
  • カルカソンヌ
    • とかいいつつ思い出したらプレイする。外出中の時間つぶしとか。いいゲームです。
  • その他ゲームアプリ全般
    • うん。やっぱり一過性だったね。実際新しいゲームもやってるしね。
    • 一番長生きしたのは音ゲー
      • Jubeat, GrooveCoaster, ぽっぷんリズミン
  • 体重コントロールアプリ
    • 体重に気を配らなくなったんやな、、、実際太った
  • クックパッド
    • 料理しなくなったなあ、、、orz、、、コンビニ万歳
    • 仕事が忙しくなると料理どころではなくなる法則
    • また料理気分が盛り上がってきたらお世話になるだろう。

新しく使っているアプリ

  • Keynote(プレゼン作成)
    • 割ときれいな図つきのメモが取れるという点に注目
    • プレゼン作成の練習にも
  • Forge (Adonit)
    • Adonit Jot Pro を実は買っていて、その流れで
    • ”前に書いた絵”からフォークできて、その流れを残せるという点が面白い
    • いくつかの案を残しておいて考慮。この発想が楽しい
    • プロジェクト1件のみであれば無料、わずか400円で無制限(?)にプロジェクト作成できる
  • iMindMap HD (ThinkBuzan Limited)
    • マインドマップ信者必見
    • 基本無料! マップ数も基本的に制限はない
    • ただし、無料だと「アプリケーションからまったく出せない」
    • 月額 300, 年額 2100 のサブスクリプション方式
  • Everclip
    • Evernote

なんだかんだでいまだに使っているアプリ

  • Wunderlist
    • ToDo管理はこれで十分。
    • あなたもお気に入りのToDoリストアプリを見つけると幸せになれる(布教)
    • 一時期リスト移動(Android版で重宝)がなくてなきそうだったが、今は入っている
  • Dropbox
    • 何がすごいって Windows, Android, iOS のすべてで使える
  • Kindle
    • 紙の書籍よりKindleのほうが入手性が高いものがいくつかありましてね、、、
    • 値段についてはいろいろ考え出すと悩ましいところ。安いとも高いとも。
    • なお、サービス停止が一番怖い
  • Evernote
    • iPad との連携の結果「これでいいじゃん」状態に。
    • 書いてない。読んでる。
  • Penultimate
    • Evernoteの「お絵かきメモ」アプリ
    • Evernoteのプレミアムアカウントを1ヶ月だけ購入することになった遠因
    • 画像でそのまま残せるという手軽さ
    • なお、文字がきれいにかけていれば検索も出来る模様
      • 自分はうまく動いたためしがない
    • なんで Forgeにしないのか自分。
  • BookRemark
    • 蔵書管理は”していない”むしろ”売ったり捨てた本の記録”になっている
  • SideBooks
    • Zip ! Zip ! Dropboxとのあわせ技で。
    • 何を見ているかについてはあえて言わないという方向で

最近遊んだゲーム

  • Alto's Adventure
    • スノボをテーマにしたアクションゲー?
    • 知っている人は「Route 60」というゲームに似ている?
    • タップしてジャンプする、長押しして空中回転
    • グラフィックがかっこいい、天候要素がある、ミニマムにそぎ落としたアート?
    • 岩をジャンプしてよける、、、レールジャンプ、、、谷を超える、、、
  • RETRY
    • 飛行機をタップすると前進
    • 前進の仕方が独特
    • タップゲーだがパズルゲー要素が強い
    • どっとまみれのアートワークがかわいらしいが、レベルはハード
    • うまくいかなくてなんかはまりだすタイプのゲーム
    • 課金要素については失敗している感
  • Help Me Fly
    • パズルゲー
    • 飛行機で飛ぶのかと思ったらそんなことはなかった
    • 電池と飛行機の間を、電気を通すピースでつないで電力をつなげる
なお、App Store のトップで紹介されていたゲームしか遊んでいない模様

ちなみに Windows 8 ストアに関して一言

Windows 8.1搭載 のパソコンかったんですよー、Hyper-V も使えるかと思いましてねー。Pro版ですよー。やー、デスクトップから始まるんですねー!実際求めているものはデスクトップアプリがうごくことですよねー!

あ、でも、あのころからもう時間もたったしアプストアもかなりましになったんじゃないかな!ゲームとか,アプリとかねー!

・・・・まるで成長していない・・・・

『トップ画面に出てくるアプリが、依然見たときから5割と変わっていない』そんな環境誰が使うかという話。完全に見放されてますわ、、、。

うん。こいつを私用のタブレット専用PCとして使うのは「全面的にあきらめたほうが良い」と思う。すぐ飽きる。業務用とかならともかくね。

Windows 10 には期待してますぜぇ(遠い目)
あ、でもゲームは買いやすくなったみたいだね(遠い目)

2015年3月14日土曜日

Vagrant, VirtualBox, Chef ってなんじゃの

で、何なの?

  • VirtualBox = 仮想化基盤 (Virtualization)
  • Chef = サーバーの環境を構築(Provisioning)
  • Vagrant = 仮想化基盤と環境構築を1コマンドで実行するまとめ役

仮想化基盤。

Vagrant は VirtualBox 向けが出身なんですよ。ええ。
他にはVMware, Hyper-V, Xen, Amazon EC2 (AWS ?) とか。他にもあったはずだ

とても雑な説明をすると
  • 1つのマシンにたくさんOSを入れられる
    • これを仮想OSと呼ぶ?たぶん。
  • 仮想化基盤が同じなら、仮想OSを移動させても普通に使えるように作ってある
    • うごいたままというのもあるらしい(Live Migration)
  • その代わり、仮想OSの動作は、若干性能が犠牲になる。HW本来の性能よりやや劣る
    • ハードを「劣化が気にならないぐらい良く」すればよい(雑)
    • そもそも「性能について問題ない」ようなシチュエーションに落としこんだので
      仮想化環境を使う

プロビジョナ。環境”自動”構築ツール

実はあんまり試してない。Chef。なので Chef を語ることは出来ないのだ、、。
昔は開発環境構築には「Chef-Solo」を使ったらしいが、今は「Chef-Zero」らしい?いや「Chef-ClientにChef-Zero機能が入っている?」うむむ、、、。

ああ、まあそれはおいといて。プロビジョナってじゃあ何かっていうと
  • スクリプトでどういうサーバーのアプリケーション構成にしたいかを書いておく
  • スクリプトの設定どおりにサーバーの環境を構築してくれる
  • 「完全に同じ」環境を作り出せる(冪等性?)という触れ込み
プロビジョナに相当するものは、シェルスクリプト(!)、Chef、Ansibleという名前が出てきた。yum, aptitude あたりで何とかなるなら、シェルスクリプトで構築してもよいかも、、、などと考える。うむ。スクリプトも試してないんだ、、、。

Vagrantはまとめ屋さん

VirtualBox のAPIをたたいて仮想OSの設定を作って仮想OSをインストール(VirtualBoxの場合はインポートであろう)して仮想OS内のいくつかの設定をしてプロビジョナを起動して、、。
そう。まとめるだけの仕事で、どういう感じにするかをスクリプトに書いておく。

そしてすべてを vagrant up にする

で、何がしたいんだっけ

なんか開発環境をスクリプトで簡単に組める(というか再現できる)って聞いて,,,。
それが出来たらなんか間違って環境壊してもすぐ戻せそうじゃないですかぁ。

手作業だと何をやるんだっけって考えてみたんだよ

  1. 仮想化基盤のインストール (VirtualBoxとかね。)
    • まあ、それぐらいはやったことあったよ
  2. 仮想OSを作る。というか仮想OS用の仮想HW設定をする
  3. 仮想OSをいざインストール。
    • そのためにインストールメディアをダウンロードしてさぁ、、、
  4. 仮想OS自体の設定をする
    • ネットワークとかね。面倒だよ、、、
  5. 仮想OSにアプリケーションを入れる
    • 開発環境だから git とか svn とか samba とか
    • あと開発環境自体、、、SDK ? IDE とか
  6. アプリケーションを適切に設定する
さて、やったことがある人はわかると思うが、大体一日費やすぐらいの労力がかかる。
Vagrant, VirtualBox, Chef でこれが、、、

環境構築が完了するとこうなる

> vagrant up

役割分担に関して

まあ、設定ですよ。何を設定したらいいんだろうという話

VirtualBox, Vagrant, ”プロビジョナ”の役割分担はこんな感じ
  • VirtualBox
    • ちゃんとインストールされていればOK (得にすることなし)
  • Vagrant
    • 仮想OS用イメージ(box) のダウンロード
      • Linux なら有志が作成した既製品がそろっていて楽!
      • インストールだけならBoxの時点で終わっているのが当たり前
    • 仮想OSの設定
      • ネットワーク設定が個人的には重要
      • 他はプロビジョナを起動することの指定とか
      • メモリ量の指定とか
      • コア数の指定とか
  • プロビジョナ
    • 仮想OSが立ち上がった後のアプリケーションのインストール
      • 基本的には BOX に「インストール済み」にしておくので必要ないのがよい
    • 仮想OS内のアプリケーションの設定
Linux系ならもうらくらく。いつもの手順でどうぞ。
WindowsOS でもやり方とライセンスの扱いさえ間違えなければ出来る。コツは必要
Mac ? 知らない子ですね、、、(出来る気がする)

仮想OSなら当然気にすべき事柄

マシン性能に比して仮想OSの性能は劣るということ。

これはベンチマークをとって確認するとよさげ。
劣化が著しく使い物にならない場合は、仮想OSの設定を間違っていないかを確認、それでも不十分なら、そもそも仮想化環境の実行環境であるマシンの性能を確認。

仮想OSに対するアクセス法。

Windowsで普段開発をしていると、コンソールでつなげて開発、という感覚が慣れなかったりする。という実体験。方法としては
  • 実画面をリモートで確認できたり(VMwareはそうだったなあ、、、)
  • GUIで確認できたり(VirtualBoxでGUIありならそうだよなあ、、、)
  • リモートデスクトップでつなげる(Windows)
  • コンソールでつなげる(Windows含めすべてのOS)
などなど。まあ、勉強がひつようと。

参考情報リンク

公式。

入門記事。
第一人者

終わりに

vagrant とその開発者、布教者、情報発信者のすべてに敬意を表する。
勉強してよかった。すばらしいソフトです(※私やあなたが使わなかったとしてもだ!)

2015年3月10日火曜日

ドローンFPVレースがしたい。したくてしかたない。

とりあえず意思表明だけしておこうと思って。

したい。したくてしかたない。ドローンで、FPVでレースがしたくて 仕方ない。

他にもFPVのムービーを見たが、かっこよすぎだろう。ありえないだろう、、、!!!やりたい!やりたい!

ああ、でも調べれば調べるほど今始めるのは周回遅れなんだなって思うのはある

いやそもそも訳知り顔で「FPV(First Person View)」とか書いてみても今まで知らなかったわけだし

アマゾンがドローン配達検討中とかいっていた記事を見てドローンの存在を知ったのだけれども、今でも現役の AR.Drone 2.0 (買った) は2012 年(前身の AR. Droneは2010年) 発売だったりして。

国内でもつい最近 室内レース競技会をやっていたらしい 、、、終わってますがな!(2015年1月開催) うむ。次はいつかな?

飽きる前にさ、FPVでかっ飛ばしたいわけですよ

FPVするだけなら普通の飛行機でもラジヘリでもいいじゃん!とか思ったりもしたが
  • 比較的安価(トライアンドエラーに向いている)
  • 操作がしやすいし、壊しづらい
  • 小回りがやたら利く(そりゃまあものによるが)
ということを考えてみたら、やっぱりドローン(マルチコプター)でやってみたい!

問題は山積みなんだけどね

  • 場所(ほんとこれ)
    • 安全に対する配慮の容易さ
    • 広さ
    • 無線混信に対する防衛
    • そこで遊んで楽しいか?繰り返し遊べるか?
      • そこは工夫次第か。
  • ラジコン電波到達距離
    • 遊び方しだいで気にしなくて良いかも?
  • 映像転送装置
    • 到達距離
    • 画質、、、は最低限とはいえロストは怖い
  • 機体制御の問題
    • 屋外だと風が!風が!
    • 慣れるまでの練習

誰かピンときたら一緒にしてみたい、、、な、、、なんて!

FPV自体情報が少ないですしなぁ、、、(※とても参考になるサイトは見つけている)

ドローン購入はしているので、いくらか試して慣れてきたらまたどこかのグループ、、、mixiとか?に参加してみたいですわ

という意思表明でした。そういう人が 2015年現在いるんだなってことでお願いします。

2015年1月27日火曜日

休止宣言

休止します。

第04期の最後の投稿が 2014年11月26日なので2ヶ月以上あいてしまった。

1ヶ月以内にやめると投稿するルールを結局守れていないという話

情報発信意欲というのは、一般的な会社員的には「自己満足」の世界でしかないわけでして、実利益を得るところまで到達するだけの労力をかけるのって大変。
会社の仕事が忙しくなったら、あるいは「あわただしくなったら」頻度が下がって休止してやがて飽きるしブログの情報も薄くなる

続けられる人は習慣化と自己満足継続の成果であろう。すばらしい。私はそこまでしない。へたれることにする。人生の重点のおき方は誰かに左右されたくないものである。

また情報発信意欲がわいてきたら再開する。もとい「仕事以外で調べて書きたくて仕方なくなったら発信する」

この間にしていたことノート

  • 仕事上の必要性から JavaScript, PHP を勉強したり調査したり
  • ぷよぷよ!クエスト で遊んでいたり(ホント ソシャゲは地獄だぜ! フゥハハハーハァー)
  • BorderLands2 が面白くて仕方なかったり
  • 開発チームの人が転職した。転職って大変なのかなと思って調べてみたりした。

休止期間開始メモ

第04期終了   : 2014/08/24
休止宣言(本日) : 2015/01/27
第04-休止期開始 の日数 : 156日

仮に再開するなら第05期である