Threepenny-gui とは

Haskell で Rover Mini の ECU データを拾うプロジェクト,ぼちぼち進めています。

開発は MacBook Air 11” でやっていますが,実際の稼働ではラズパイなどワンボードの小型PCでやろうかと。Haskell はあちことのプラットフォームで動くのでいいのですが,問題はGUI。

Real World Haskell などは汎用GUIライブラリの呼び出し例なども掲載されていますが,macOS で他のプラットフォームと共通のデザインだとものすごい違和感を感じます。また,GUI の世界では最近,Functional Reactive Programming という新しい考え方に基づく実装例も増えてきています。そのものずばりの名前の本(Functional Reactive Programming , Manning Publications )も2016年に出版されたので,計算機科学分野の英語の復習の意味も含めて電子ブックを買い求めて読み進めています(ちなみに最近,書店店頭で翻訳本を見かけましたが,意味が読み取りにくい翻訳となっている箇所が多数あったため,購入は見送りました)。

そこで今回のブログ記事では,Haskell の GUI 環境の中でも FRP が使え,ラズパイ でも macOS でも使えそうな Threepenny-gui ライブラリについて調べてみることにしました。

以下はHaskell wiki Threepenny-gui より。2018年1月17日15:00 (JST) 閲覧した際の記述内容に基づいたもの。

1. Threepenny-gui とは

Threepenny-gui とはウェブブラウザーをディスプレイとして見立てた GUI (Graphic Interface Library; グラフィックユーザーインターフェース) のフレームワークである。

以下の機能を持つ:

  • 容易な設置 いまどきは誰でもブラウザをインストールしている。従い、threepenny-gui ライブラリを hackage からインストールするだけでよい。このライブラリは多数のプラットフォームで動作する。
  • HTML + JavaScript ユーザインタフェースを作成する際、HTMLの機能をすべて使用することができる。これは素晴らしいことではあるが、うっかりするとはまり込んでしまうことにもなりかねない。それゆえ、このライブラリには、CSSを使用しなくてもユーザインタフェースを素早く構築できるよう、レイアウトコンビネータが含まれている。またFFI(Foregin function interface; 他言語接続機能)を利用してブラウザの中でJavaScriptを走らせることも可能である。
  • FRR ( Functional Reactive Programming ) により、ユーザーとのやりとりのプログラミングでイベント駆動式のスタイルを伝統的な手続き型言語で構築するときに陥りがちなスパゲッティコードを避けることができる。Threepenny は FRP ライブラリを持っているが、それを使うか否かは自由である。便利と思えばFRPを利用してもよいし、袋小路にはまり込んだと思ったら FRP を使わなくてもよい。

2. Threepenny-gui ができないこと

  • ウェブのフロントエンドではない。サーバはローカルホストで稼働することを想定している。(ネットを経由する)ウェブアプリとして使用するには遅延が問題となるだろう。つまり、ローカルネットワークの多数のユーザーを想定した場面には向いているということ。サンプルコードの Chat.hs example を参照。
  • JavaScript や HTML のライブラリではない。Threepenny-gui は Haskell の API を備える GUI フレームワークであり、ドキュメント・オブジェクトモデルについて様々なことを抽象化している。Threepenny-gui を使うにあたっては、 HTML については多少の知識が必要だが、JavaScript の知識は必要ではない。もっとも、外部クライアントライブラリを活用とする場合はその限りではないが。

ウェブアプリを作ろうとしているなら、他のプロジェクト(たとえばFay, GHCJS, Haste など)を参照のこと。Threepenny の API はこれらのプロジェクトにいくらか影響を与えている、もしくは将来与えることになるかもしれないが、現時点ではそこ(ウェブアプリ開発向きの機能)に焦点はあたっていない。

3.開発経緯

現在、活発に開発が行われいる状況であり、主要なAPIについても将来の版では改訂されているかもしれない。このプロジェクトの目標はGUI プログラミングをできるだけ簡素にすることにある。そのためにやや実験的に様々な挑戦を行っている。

  • 2017.04.29 threepenny-gui-0.8.0.0 公開
  • 2016.09.16 threepenny-gui-0.7.0.0 公開
  • 2015.05.15 threepenny-gui-0.6.0.2 公開
  • 2015.05.13 threepenny-gui 0.6.0.1 公開
  • 2014.10.04 threepenny-gui 0.5.0.0 公開
  • 2013.11.21 threepenny-gui 0.4.0.0 公開
  • 2013.09.07 threepenny-gui 0.3.0.0 公開

4. 応用例

Threepenny を使って書かれたアプリケーションの例

5. 現況と参考資料

Hackage からのダウンロード threepenny-gui

参考資料

フィードバック先および連絡先

github 上のソースコード

Haskellメモ というか,High Sierra と FTDI USB Serial メモ

以前からぼちぼち開発しているRoverMiniコンピュータデータ取扱用のプログラム,ので本日はその原因究明と対策実施。

現象

  • macOS X を High Sierra にしたら,FTDIのUSBシリアル変換機がマック上ではttyデバイスとして認識されなくなった。
  • 同じハードで仮想マシン上のWindows10では同変換器を検出し,正常にECUと通信できるので,マック上のドライバの問題と想定。
  • メーカー(FTDI社)の最新ドライバなどをインストールしてみたが,状況は変わらなかった。
  • High Sierra ではセキュリティ強化のため,場合によっては「システム環境設定」のセキュリティとプライバシー設定で,明示的に権限許可を与えないと動作しない機能拡張があるが,現時点では許可催促の表示は出ていない(ただし,当該催促は最初にその機能拡張が動作しようとしてから一定の時間以内にのみ表示され,その後は消えてしまうとのことなので,OSアップデート後にケーブルを初めて挿入した際,これを見逃した可能性はある)。

原因探索

ネットで検索した所,以下のことがわかり,ドライバが複数あって,衝突して不具合となっている可能性があるものと思われた。

  • Appleは,しばらく前(少なくとも Marverics )から,自社のFTDIチップ用ドライバを mac OS に含めて提供している。
  • 幾つかのサイトでは,FTDI社のドライバとApple社のドライバの切り替えを行って問題が解決したことを報告している。(例1例2例3例4
  • 両ドライバとも,kext形式で提供されている。
  • kextとは,加除可能なOS機能追加モジュールであり,sudo kextstatで現在使われているモジュールの確認ができる他,sudo kextload xx.kext でモジュールを追加することができる。
  • 当該ハードには,OSバージョンアップ前からFTDI社のドライバが入れてあり,機能していたが,こうした場合,High Sierraのインストールでは,(クリーンインストールであっても?)サードパーティー提供のドライバが新たな権限許可を与えずとも動作するようになっている模様。

対策

ドライバを一つにする。Apple社提供のものでまずは実験してみて,その上で,FTDI社のものを実験してみるかを判断することにした。実際の作業としては,以下の通り。

  • 存在しているドライバの確認。→/System/Library/Extentions にAppleUSBFTDI.kext 2017/08/25 14:20 6.0.0 がある。また,Library/Extentions に FTDI社のドライバ D2xxHelper.kext 2015/11/09 2.0.0 があった。
  • kextstat | grep FTDI で動作している機能拡張を確認。今回の場合はなかった(両方共読み込み失敗の様子)。
  • FTDI社のドライバを削除の上,マックを再起動。
  • 手動でAppleのドライバを読み込み(cd /System/Library/Extentions  -> sudo kextload AppleUSBFTDI.kext)
  • kextstat で機能拡張が読み込まれているかを確認。この時点では読み込まれていない。
  • ケーブルを接続。kextstatで状況確認→ドライバが読み込まれている。
  • /dev/ を確認。無事,認識され,/dev/tty.usbserial-DJ0… として表示された。

まとめ

  • 今回のトラブルの原因は複数の機能拡張(ドライバ)を設置したことによる競合。
  • 純正とメーカー製の二種類のドライバで機能・性能が違いそうなので,今後,機能・性能で不審な点があった場合,ドライバを変えてみるという策をとってみる必要がある。

以上

 

Haskellメモ Haddock

この説明は,Haskellの公式サイトの記述を魚野が自分のメモとして部分的に日本語化したもの。
詳細は下記サイト参照。
http://haskell-haddock.readthedocs.io/en/latest/markup.html

1 Haddockとは

Haddockとは,プログラミング言語,Haskellのソースファイルにコメントを記述することで,
自動的に参考用の文書を作成するシステムのこと。

2 Haddockの記法

2-1 トップレベル宣言

・トップレベル(関数の型署名や方宣言,クラス宣言等)での記述。
・「--|」という句で書き出すと,それ以降の部分はその直後の宣言に関する説明となる。

-- | The 'square' function square an integer
square :: Int -> Int
square x = x * x

・トップレベルとは
トップレベルの関数の型署名
型署名のないトップレベルの関数の定義
data 宣言
newtype 宣言
type 宣言
class 宣言
data family または type family 宣言
data instance またはtype instance 宣言
・別の宣言が続いた時は,後の宣言はHaddockに無視される。
・宣言の後にコメントを書くことも可能。

square :: Int -> Int
-- ^ The 'square' function square an integer
square x = x * x

2-2 宣言の一部分へのコメント

・クラスメソッド トップレベル宣言に同じ(「-- |」 や「--^」を使う)。
・コンストラクタ,レコードフィールド 同上

2-3 関数の引数

・「--^」を使う。

f :: Int -- ^ The 'Int' argument
-> Float -- ^ the 'Float' argument
-> IO() -- ^ the return value

2-4 モジュールの説明

・モジュールの説明は記述が多岐にわたることが多い。

{-|
Module : W
Description : Short description
Copyright : (c) Some Guy, 2013
Someone Else, 2014
License : GPL-3
Maintainer : sample@email.com
Stability : experimental
Portability : POSIX

Here is a longer description of this module, containing some
commentary with @some markup@.
-}

・各フィールド全てを記述する必要はない。重要度の順で記述すること。
・各フィールドの中身が二行以上になる時は,フィールドのラベル終了位置よりも右方から記述する。
・但し,冒頭に「--」を記述した際は例外(詳細は冒頭のURL参照)

2−5 モジュールの説明要素

・Module モジュール名
・Description モジュールの概説。
・Copyright, License, Maintainer, Stability できるだけ明示すること
・Portability OSの制約や必要なGHC拡張が記述されることが多い。

3 ドキュメントの構造

・各モジュールが輸出(エクスポート)している要素のみ説明文作成の対象とされる。
・輸入(インポート)されたモジュールで輸出されている場合も説明文作成の対象となる。
・3つの構造がある:セクション頭書,名前付記述,モジュール全体の再輸出

3-1 セクション頭書

・Class, Typeなどは同位のセクション,Type, A data type などはセクションの下位化
・「-- *」,「-- **」などで書き始める。*数はセクションの下位化

3-2 名前付記述

・名前付記述 二個目の「-- $XXX」以降の記述は一個めの「-- $XXX」の部分に置かれる。
XXXは名前)

3-3 ハイパーリンクと要素再輸出

・Haddockは説明文書作成の際,クラス名などを全てハイパーリンクつきにする。

サイトにssl証明導入

ブログ程度の運用しかしていない小さなサイトに必要性があるかどうかはわかりませんが,世の中の情報セキュリティ対策強化の動きに合わせ,一応,SSL証明書を入手し,設置することにしました。http://www.kuono.net だけでなく,https://www.kuono.net でもアクセスできるようになります(現在手続き中)。

導入したのは,ドメインの証明,つまり,このドメインがなりすましサイトにあるわけではないよという内容の証明なので,kuono.net がどこの会社・組織の所有なのかといったようなことは証明されているわけではありません。こういう証明書の発行手数料は,結構値段の張るものです。行政など公的機関がやってくれたらいいのにと思わないわけでもないですが,現在はセコムだとかシマンテックだとかの,大手民間事業者が発行してます。利用しているのは一番価格の低いランクのもので,大手IT関係組織の方あたりには証明にもならないよと笑われそうですが,サイトを利用したサービスをやっているわけでもないので,IT業界の流れをおっかけているという意味では,まぁこれでよいかと。

最近は,支援先の公式サイトのメンテナンスや記事追加支援ばかりで自分のサイトの更新を怠ってきましたが,大学での後期の講座も始まったことですし,6次産業化や認定支援機関としての経営改善計画策定支援など,関わっている業務でもいろいろ情報がたまってきていますので,ぼちぼち記事を追加していきます。

Haskellメモ inkey$を実現する

難しいことを簡単にし,簡単なことを難しくする,などといわれる純粋関数型言語 Haskell。かつてBasic 言語でプログラミングをしていた際によくつかったinkey$関数の実現方法を調べてみた。

inkey$関数とは実行されたときに押されている一文字からなる文字列を返す関数。キーが押されていないときは””が返ってきたはず(30年以上前の記憶なのでうろ覚え)。

以下のコード〜raspberry pi で動けばいいので,とりあえずはこんなコードで〜を macOS で動作確認したところ,おおむね期待通りに動作した。Windows でどうなるかは不明。

import Data.ByteString as BS
import System.IO

main :: IO ()
main = do
 hSetBuffering stdin NoBuffering -- set non buffering mode 
 keyscaned <- BS.hGetNonBlocking stdin 1 -- ::IO ByteString
 if keyscaned == BS.empty
 then main
 else do
 print keyscaned
 main

Haskell メモ MyECU

Haskell の習作として Rover Mini の ECU (MEMS)モニタソフトを作りかけている。以下はそのために試行錯誤した際のメモ。順次追記予定。

  1. 16進数表記の文字コードを入力し,文字を得る。
    
     do
       charcode <- readLn :: IO Int
       let command = chr charcode
     

    ECUコマンド発行用。ECUコマンドは基本的に1バイト文字。符号なし1バイト整数を意味する Word8 をこの時点から使おうかと思ったが,chr 関数にWord8を引数とさせる方法を調べるのが面倒だった(多分,こちらの記事が役に立つ。あとで調べる。)ので,とりあえず Int で入力させることを決め打ちにしてこのようなコードに。コンパイラオプション({-# LANGUAGE OverloadedStrings #-}ghc -XOverloadedStrings )を活用する方法を使わなかったのは,単に使うオプション類をできるだけ少なくしたいというコーディングスタイルの趣味の問題。

  2. macOS 機または Raspberry Pi での動作を前提とし,USBシリアル変換ケーブル経由のデータのやりとりをデバイスファイル経由で行う。
    
    result 

    ByteString 内の hPut や hPutNoBuffring では,文字を書き込んでも制御が戻ってこない。下層の Unix システムコールを Haskell で使う Posix.IO の wirteFd あたりを使う必要があるか。Haskell の問題というよりは Unix の使い方の知識の問題。
    【2017.05.30 追記】結局,serialPortモジュールを使うことで解決。初期化やデータのやりとりができるようになった。protocol.c では初期化コマンド送出の途中に ping を入れているので,この仕組も取り入れた。

  3. コンソールで入力した16進の文字コードをECU側に発行し,その反応を,時刻付きでコンソールに表示する。
  4. コンソールに表示した時刻と反応のセットを,第二引数で指定したファイルに書き込む。
  5. シリアル通信が途切れたときのための例外処理の追加。

Microsoft のアプリ・サービスの使い勝手に困ったこと二件

ここのところマイクロソフト社のアプリ・サービスで使い勝手が悪くて時間を取られてしまったことが二件続いているので,自分のための覚書として記しておく。ひとつめの問題は,出先で使っていた共用パソコンでうっかり Office 365 のサービスにサインインしてしまい,サインアウトの方法がわからなくてその共用パソコンから離れられなくなったこと,そしてもうひとつは,Mac 用の One Drive for Business アプリが初回の同期が終わらずにアプリが落ちまくるというものである。

問題の背景:当事務所の情報処理環境

当事業所は事務用品・環境にアップル製品を多用しているのだが,公文書に官公庁とのやりとりも多く,止むを得ず MS Office や Windows などを使用してきた。事務所となるアップルのモバイルパソコン 11’ Mac Book Air 2015 (香港で買い求めたもの),デスクトップがわりに使っている 13’ Mac Book Air 2013 (外部ディスプレイを二つ接続し,蓋を閉じた状態で使用)の両方に,Mac OS X と Mac 用の MS Office が入っており,そこに仮想ソフト VMWare Fusion をいれて,それぞれ Windows 7 と Windows 8 ,さらに Windows 用の MS Office が入っている。

進行中のプロジェクトの業務用ファイルはオンラインストレージサービスを利用している。最近はファイルをオンラインに置いておくクラウドサービスが普及してきており,当事務所も多様な環境でファイルを参照したり編集したりすることから,これまで Dropbox, Evernote, SugarSync, iCloud など様々なサービスを利用してみたが,Office ソフトで編集できるという点が決め手となり,現在は Microsoft 社の One Drive for Business というサービスを利用している。これは,Office 365 の一部という位置付けのサービスである(契約類型によっては使えない場合もある)。Office 365は,一見オフィスソフトのサブスクリプションサービスのような体裁だが,要はクラウド・グループウェア・オフィスアプリというちょっとわかりにくいが,最新のオフィスソフトが複数台のパソコン・スマホ・タブレットなどで使えるという贅沢なサービスだ。また,One Drive にファイルが存在していると,オンラインサービスの Excel や Word で簡単に編集・印刷ができる。

発生した問題

その1 Office 365 のサインアウト問題

講義のため大学には週に一回出勤するが,そこではBYOD不採用,すなわち個人のパソコンなどは大学のネットワークには接続できず,そのかわり共用パソコンが使え,Officeも使えるようになっている。自宅で作業していた講義用資料の校正・印刷を行おうとすると,今まではUSBファイルで持ち運んだり,自分宛のメールに添付してそのファイルをダウンロードしたりする必要があったが,今回,何の気なしにブラウザでオンライン編集をしようとした。しかし,個人情報が含まれているため,こうしたファイルにはパスワードをかけてある。オンライン版 Excel や Word はパスワードがかかっているファイルは編集できず,パソコンにインストールされているアプリ版の Word や Excel で編集しろと促されたので,指示通りにした。このとき,Office 365 にサインインしてしまう。

ひととおり,編集・印刷がおわり,はて,このままログアウトすればサインアウトも自動でされるのかと,ふと不安になり,実験してみると,サインアウトされない。つまり,共用パソコンなのに個人名や個人ファイルが見えている状態になっているわけだ。Excel や Word をたちあげると,ファイルを開けるためのウインドウが開き,そこにはサインインした魚野のアカウントや直前まで編集していたファイルが見えている。ところがそのウインドウにはサインアウトするボタンもメニューもない。ウインドウを閉じるとアプリも閉じてしまうため,たちあげると,またアカウント・ファイルが見える。処置無しである。

その2 OneDrive for Business の初期設定が終わらない問題

OS X 用は β版ということでやむを得ない面はあるかもしれないが,OneDrive for Business アプリが異常に不安定である。大量のファイルを含んだフォルダー(ディレクトリ)を同期させようとすると,エラーを大量に吐き,しまいにアプリが落ちてしまう。ビジネス向けサービスとして喧伝されているわりには,堅牢性に欠ける。エラーを吐くのはやむを得ないとしても,それでアプリが落ちてしまうのはいただけない。セキュリティ上の重大なリスクともなりうる。

問題の所在とその解決方法

その1 Office 365 のサインアウト問題

わかってしまえばなんてことはないだが,Office ソフトでのサインアウトは,アプリがファイルを編集しているメインウインドウのアカウントアイコンからおこなう。先ほどのファイルをあけるためのウインドウを閉じるのではなく,隠す(右上の棒状のメニューでウインドウをたたむ)ことをすれば,メインウインドウがあらわれるので,そこで操作すれば良い。

根本的問題は,最初に表示される画面にサインアウトのメニューなどがないことだ。それを見つけるにはファイルを開けるためのウインドウを隠すという操作をしなければならないが,そういったことを思いつくためのとっかかり,ヒントがないため,おそらく一般ユーザーはほとんどたどりつけないだろう。

なぜ Microsoft はこんなヘンテコなインターフェースを考えつくのだろうか。

その2 OneDrive for Business の初期設定が終わらない問題

エラーの原因のひとつは,ファイル名の命名規則がWindows のファイル・ディレクトリ命名規則を前提にしていることだった。例えば全角のコロンが含まれているだけでエラーを発するようだ。Macやスマホなども含んだ多様な環境での使用を前提にしているにもかかわらず,である。また,一部の不可視ファイル(ドットで始まるファイルは,OS X のような Unix ベースの OS では通常は見えにくいようにしてある)でかっこが使われていたりするのもエラー原因となるようだ。これは根本原因を思いつかない。

ともかく,エラーの出ないファイル・フォルダのみ同期させ,そのあと,すこしづつ追加してみて,エラーが出たら原因を推測して試行錯誤してみる,エラーが消えれば追加続行,という地道な作業を続けるしかなさそうである。

結語

Office 365 は契約類型によってはオンライン会議システムやファイル同時編集,ひとりあたり1TBものオンラインストレージ,きめ細かなアクセス制御など,便利な機能が豊富で,最新の MS Office が複数台のパソコン・スマホ・タブレットで使え,なおかつひとりあたり月額千円強と,かなりコストパフォーマンスのよい中小企業向け,士業向けのサービスだが,まだまだ使い勝手が洗練されていない。スマホかスマートウオッチが鍵となり,席に着くと簡単に情報にアクセスでき,席を離れるとアクセスできなくなるというような仕組みが,目で見えるかたちで提供されないと,不安全・不安となる。MSのみならず,アップルやグーグル,フェイスブックが今後どのような解決方法を提案してくるか,興味深い。

仕事のメインマシンとして使うMacBook Air その2

前回同じテーマの記事を投稿してから約二年経過したが,いまだにMacBook Airをメインマシンとして使うというキーワードでこのサイトにたどり着く人達がいる。そこで,現況やその後の環境変化への対応内容を記述しておく。

魚野はいわゆるノマドワーカー,つまり,自宅だけでなく,出先のカフェや図書館,学校などを仕事場としている自由業の社会人である。中小企業診断士6次産業化プランナーという資格,あるいは大学の非常勤講師という肩書きで,主に製造業・農林水産業者さんの支援や,学生の啓発という仕事を行なっている。

業務上,事業者さんとの打ち合わせをもとに調べもの,物書き,役所や他の事業者さんとの調整をすることが多いが,こうした業務は,インターネット接続環境の他,オフィス系のソフトを利用できることがどうしても必要だ。

現状,業務のために構築してあるIT環境は以下のとおり:

  • メインマシン…MacBook Air (11-inchi Mid 2011/4GB/128GB) + Mac OS X 10.8.3
  • クラウド…
    • SugarSync…デスクトップフォルダを設定することで進行中のプロジェクトのフォルダを保管。パソコンを持っていなくても,iPhoneさえあれば仕事のファイルを見ることが出来る。無料で使える容量がDropboxよりも多いので,現在はこちら。
    • DropBox…ホーム内のDropBoxフォルダを共有することで個人的なデータを保管。1Password, TextExpander などソフトによってはDropbox経由でデータを一元管理してくれる。
    • Google Drive…スキャナで取り込んだ書籍など参考資料を保管。自動でpdfファイルなどの文字認識をし,検索可能にしてくれる。MBA内蔵SSDではディスク容量が足りないので,外部HDDに保管し,外出時は持ち歩く。自宅Windows環境では大容量HDDがつながっているので,HDD内に。
    • Evernote…新聞記事,名刺を保管。こちらも自動でpdfファイルなどで文字認識をして検索可能にしてくれる。名刺はいちいち住所や名前,所属を入力しなくても,ほぼ100%検索できる。
    • GMail…いくつかあるメールアカウントは自動転送でgmailに集中。また,カレンダーもGoogleカレンダーにて一括管理。
    • RSSリーダー…Feedly(Google Readerがサービスを停止するとのことなので,暫定的に移行)。
    • xmarks…業務上必要なサイトのアドレスは,ブラウザの種類やOSの違いを乗り越えられるxmarksにて管理。
    • 1Password…パスワード関係。dropboxで一元管理。
  • Windows環境…
    • MBA内…VMware Fusion(Windows7), CrossOver
    • 自宅…HP製の中古機 (Windows 7)
  • 業務用ソフト…
    • Keynote…発表用資料はPowerPointを使わずもっぱらKeynoteで作成,使用する
    • Microsoft Office (Mac OS X用,Windows用)
    • LibreOffice
  • インターネット回線
    • 自宅…WiMAX(固定電話をそろそろ廃止したいので)
    • 外出時…テザリング
  • 電子書籍リーダー
    • Kindle…Kindle PWの他,iPhone, MBAにもKindleソフトを入れてある。いわゆる電子書籍のほか,参加する研究会のテキスト自炊本などを放り込んである。
  • 主催する研究会などの活動をささえる環境
    • 基本はFacebook
    • 一部,ChatWorks, サイボウズLive

前回から異なる点といえば,インターネット回線の種類が若干変更されたことと,電子書籍リーダーが増えたこと。

MBAをメインマシンとして使う要諦は,クラウドを使うことと,資料的データ・プロジェクトデータを分けて保管管理すること,そして大口のUSBハブ。魚野の場合,書籍自炊資料や大量に保管してある音源(語学関連のラジオ講座や哲学・経営学・食関係の放送大学の講義),写真はモバイルハードディスクに入れてあり,自宅ではUSBケーブルを1本MBAにつなぐことで,外部ディスプレイ,キーボード,マウス,くだんのモバイルハードディスク,バックアップ用ディスク,ドキュメントスキャナ,プリンタなどが一発でつながる。

サイト構成ファイル更新の覚書

WordPressのアップグレードに伴って変更されてしまったところを放ってあったのだが,一部の環境・表示設定を元に戻した。

以下,本日の作業で行ったこと:

  • footer.phpのdiv id=”site-generator”のところにautocopyrightのコードを追加。
  • こちらの外部サイトを参考に,トップページのサイドバーを表示するようにした。
  • header.phpの</head>の直前にGoogle Analyticsのコードを再度挿入。
  • header.phpの</head>の直前に<link rel=”author” href=”https://plus.google.com/109361309944069123112/” />を挿入。
  • トップページの最新投稿一覧が消えてしまったのはまだ未対応。

現時点の環境はCMS: WordPress 3.4.2 テンプレート:twenty eleven

あとはWordPressの公式サイト内の情報を参考に,トップページに最新投稿表示を復活させることが残った。

2012/04/18 の魚野のつぶやき

  • 組織の国際化指標はたくさん見つかるが,人そのものの国際化指標というものは存在するのだろうか。誰かがやっていそうだが,工業系の人材でそんな指標を開発してみたい。唯一参加している学会の中日教育研究協会で発表できるかな。 posted at 06:02:10
  • 月額300円でMacでもWindowsでもスマートフォンでもATOKが使えると聞いて期待したのだが,iOS 対応版がない。300円は安いとは思うが,MacとiOSで使えたらと思ったのになぁ。Just Systemのサイト-> http://t.co/D64P0fWs posted at 11:53:04