技術

2012年08月29日

windowsでは秀丸、ubuntuではgeditをキーバインドをカスタマイズして使っているが、OS Xでメインとするテキストエディタを決めかねていた。
mi(みみかきエディタ)をしばらく使っていたが、ほんのわずかにキーバインドが合わないで、困っていた。
プログラムを書く時はvimでいいのだが、日本語での文章書きにvimを使うと、日本語のON/OFFとインサートモードとコマンドモードのON/OFFを二重に行うのが面倒だった。

で、textmate2やらvicoやらを調べていて見つけた、この情報。


日本語のOFF/ONの手間が軽減されれば、vimでも文章扱う常用テキストエディタになるのではないか。
ということで、このブログを書いてみた。
なかなかいい感じ。

ただ、ぼくは英数キーをcommandキーに置き換えて使っているのだが、terminal内だけはcommandキーに置き換えできなくなるのが、ちょっとおしい。
このあたりは、また何か別の手を考える。

追記:
ちゃんと使えました。


sylphide_ffr31mr at 23:51コメント(0)トラックバック(0) 

2012年06月20日

OSとしてのwindowsは、MS-Office専用機のようになりつつある。
surfaceがOfficeを使うためのマシンとして有効であれば、会社で買ってほしい。

タッチデバイスにキーボードをつけると、画面に手を伸ばすのが面倒なので、マウスやタッチパッドのようなポインティングデバイスが必要になることは、iPad+Apple keyboardで体験済み。
 surfaceの薄型キーボードはタッチパッドがあるようなので、そこは期待。

あとは、書類作成で10インチは狭いので、せめて13インチほしいかな。


sylphide_ffr31mr at 15:54コメント(0)トラックバック(0) 

2012年03月10日

Macbook Airを会社で買ってもらった。私物化している。
はじめてのMacOSである。MacOS X 10.7のLionさんである。

アプリケーションの起動やwindow操作から、ディレクトリ構成、キーボードショートカットなど、わからないことだらけ。
手になじむまではしばらくかかるだろうが、とても刺激的である。

特に、マルチタッチパッド。
マルチタッチでの画面スクロールや、デスクトップの移動は、iPadの手に吸い付く感じがそのままで、とてもいい。

二本指で上下に滑らせると、スクロールする。はじめ、スクロール方向が従来のマウスと逆向きになるので(上に指を滑らせると、下にスクロールする)、何度も間違えたが、それもすぐに慣れた。
スクロールは、マウスのホイール回転イベントを発生させるらしく、リモートデスクトップでwindowsを使っていても機能する。これは嬉しい。

そして、三本指で左右にスワイプすると、デスクトップの切り替え。ubuntuではALT+←→でやっていたが、それでもできる。

問題はキーボードとタッチパッドの位置関係である。
キーボードの手前にタッチパッドがあるので、キーボードのホームポジションに手を置いたままでは、親指でマウスカーソルを操作することが精一杯。
二本や三本指でタッチパッドを操作するためには、ホームポジションから手を動かさなければならない。
この手の導線の切断は、iPadにキーボードを付けた時の違和感と同じ感じがする。

そこで、Appleさんに提案なのだが。
キートップを全部タッチパッド化してしまい、キーボードの上で指を滑らせると、タッチパッドの動作をするようにしてはいかがだろうか。
キーを押した場合の文字入力と、キーの上に指を滑らせた場合での二次元的な操作を、手の位置を変えないで行えるようにするのである。
ついでに、キートップをすべて透明アクリルにしてしまい、その下に液晶を埋め込み、キーボードに捉われない操作コンソールも同時に提供する。
こんなハードウェアもAppleのデザイン工学の技があれば、実現できそうな気がするのである。



sylphide_ffr31mr at 20:23コメント(0)トラックバック(0) 

2012年01月21日

前回は、ただdotcloud上にファイルを置いただけなので、もう一歩進んで、dotcloudでrubyの実行環境を作る。
自分ひとりが使う動作環境なので、フレームワークは小規模向けのsinatraを使う。
sinatraでhello worldをするまでの手順をまとめておく。
けっこうはまった。ポイントは以下3点。

  • requireするRubyファイルをディレクトリ指定しないと、みつけてくれない。
  • アプリケーションをpushしているときに、CTRL+Cして止めると、その後のrsyncに失敗し、pushができなくなる。対処策がわからないので、アプリケーションを一度destroyして、再createする。
  • Gemfileで指定したライブラリが、ちゃんとインスタンスにインストールされたか確認する。手動でgem installを実行することもできる。

手順は以下。

1. 作業用ディレクトリ(プロジェクト)を作り、アプリケーション定義ファイルを作る。

$ mkdir maarui
$ cd maarui
$ cat dotcloud.yml
# dotcloud.yml
www:
  type: ruby
  approot: s1

2. アプリケーションrootディレクトリを作る。

$ mkdir s1
$ cd s1

3. アプリケーションを作る。最低限作るファイルは、以下の3つ。

$ cat Gemfile
# Gemfile
source :rubygems
gem 'rack'
gem 'sinatra'

$ cat config.ru
# config.ru
require File.expand_path(File.dirname(__FILE__)) + '/'+ 'app.rb'
run Sinatra::Application


$ cat app.rb
# app.rb (sample)
require 'rubygems'
require 'rack'
require 'sinatra'

get '/' do
  'Hello world!'
end

4. rackの実行に必要な2つのディレクトリを作る。

$ mkdir public
$ mkdir tmp

5. 以下のようなファイル配置になる。

~/maarui/
    +----dotcloud.yml
    |
    +----s1/
          +----Gemfile
          |
          +----config.ru
          |
          +----app.rb
          |
          +----public/
          |
          +----tmp/

6. dotcloud内にアプリケーションを作る。

$ dotcloud create maarui
Created application "maarui"

7. アプリケーションを配信(push)する。

$ dotcloud push maarui .
# upload /home/maarui ssh://dotcloud@uploader.dotcloud.com:4\
43/maarui
# rsync
building file list ... done
s1/

sent 378 bytes  received 15 bytes  71.45 bytes/sec
total size is 841  speedup is 2.14
12:58:10 ---> Deploy of "maarui" scheduled for revision rsync-123123123123 at 2012-01\
-20 12:58:10 12:58:10 ---> Building the application... 12:58:10 [www] Build started for revision rsync-123123123123 (clean build) 12:58:29 [www] Fetching source index for http://rubygems.org/ 12:59:02 [www] Installing rack (1.4.0) 12:59:02 [www] Installing rack-protection (1.2.0) 12:59:02 [www] Installing tilt (1.3.3) 12:59:03 [www] Installing sinatra (1.3.2) 12:59:03 [www] Using bundler (1.0.10) 12:59:03 [www] Your bundle is complete! Use `bundle show [gemname]` to see where a bun\ dled gem is installed. 12:59:04 [www] Build completed successfully. Compiled image size is 1MB 12:59:04 ---> Initializing new services... (This may take a few minutes) 12:59:04 [www.0] Initializing... 12:59:10 [www.0] Service initialized 12:59:12 ---> All services have been initialized. Deploying code... 12:59:12 [www.0] Deploying build revision rsync-123123123123... 12:59:15 [www.0] Running postinstall script... 12:59:19 [www.0] Launching... 12:59:21 [www.0] Waiting for the service to become responsive... 12:59:22 [www.0] Re-routing traffic to the new build... 12:59:22 [www.0] Successfully deployed build revision rsync-123123123123
12:59:22 ---> Deploy finished Deployment finished. Your application is available at the following URLs www: http://maarui-ID.dotcloud.com/

8. gemのインストール状況を確認する。

$ dotcloud ssh maarui.www
# $SHELL
dotcloud@maarui-default-www-0:~$ gem list

*** LOCAL GEMS ***

bundler (1.0.10)
daemon_controller (0.2.5)
fastthread (1.0.7)
file-tail (1.0.5)
passenger (3.0.2)
rack (1.4.0, 1.2.1)
rack-protection (1.2.0)
rake (0.8.7)
rubygems-update (1.6.2)
sinatra (1.3.2)
spruz (0.2.2)
tilt (1.3.3)

dotcloud@maarui-default-www-0:~$ exit

9. ブラウザで表示を確認する。

"hello world"が出力されれば成功。



sylphide_ffr31mr at 00:03コメント(0)トラックバック(0) 

2012年01月19日

dotCloudは、さまざまな言語の実行環境を提供するPaaSである。

Google AppEngineと比べると、遥かに多様な言語、データベース、フレームワークが提供されている。 その多様性が最大の優位点であるが、さらに以下の特徴がある。

  • IaaSとPaaSの中間的な機能
  • 操作がシンプル

1つ目の特徴は、このサービス自体がAmazonEC2のIaaS上で動作していることからきている。
GAEでもherokuでも、実行マシンはサービスに隠蔽されており、自分で作ったプログラムが動作しているOSのについて意識する必要がなかった。
それが、PaaS本来の目的でもあるからだ。
dotCloudでは、アプリケーションをdeployすると、EC2でインスタンスが作られ、その上でアプリが実行される。そして、そのインスタンスへのsshが許可されている。
そのため、ログの確認や、実行環境が自分の想定通りであるかなどを確認することができる。

もう一つの特徴が、dotCloudサービスの操作の簡単さである。 dotCloudを扱うコマンドは、基本的にただひとつ。dotcloudコマンドである。

インストールから、静的コンテンツのhello worldは、以下のとおり。

dotcloudコマンドのインストール

$ sudo apt-get install python-setuptools
$ sudo easy_install pip && sudo pip install dotcloud
Searching for pip
Reading http://pypi.python.org/simple/pip/
Reading http://pip.openplans.org
Reading http://www.pip-installer.org
Best match: pip 1.0.2
Downloading http://pypi.python.org/packages/source/p/pip/pip-1.0.2.tar.gz#md5=47ec6ff3f6d962696fe08d4c8264ad49
Processing pip-1.0.2.tar.gz
Running pip-1.0.2/setup.py -q bdist_egg --dist-dir /tmp/easy_install-XTv7r8/pip-1.0.2/egg-dist-tmp-aqFwSr
warning: no files found matching '*.html' under directory 'docs'
warning: no previously-included files matching '*.txt' found under directory 'docs/_build'
no previously-included directories found matching 'docs/_build/_sources'
Adding pip 1.0.2 to easy-install.pth file
Installing pip script to /usr/local/bin
Installing pip-2.7 script to /usr/local/bin
Installed /usr/local/lib/python2.7/dist-packages/pip-1.0.2-py2.7.egg
Processing dependencies for pip
Finished processing dependencies for pip
Downloading/unpacking dotcloud
  Downloading dotcloud-0.4.3.tar.gz
  Running setup.py egg_info for package dotcloud
    
Downloading/unpacking dotcloud.cli==0.4.3 (from dotcloud)
  Downloading dotcloud.cli-0.4.3.tar.gz
  Running setup.py egg_info for package dotcloud.cli
    
Installing collected packages: dotcloud, dotcloud.cli
  Running setup.py install for dotcloud
  Running setup.py install for dotcloud.cli
    changing mode of build/scripts-2.7/dotcloud from 644 to 755
    changing mode of build/scripts-2.7/__dotcloud_git_ssh from 644 to 755
    
    changing mode of /usr/local/bin/dotcloud to 755
    changing mode of /usr/local/bin/__dotcloud_git_ssh to 755
Successfully installed dotcloud dotcloud.cli
Cleaning up...

APIキーを設定する

dotcloudコマンドを実行すると、APIキーが設定されていない場合に尋ねられる。
dotcloudのAPIキーは、wwwページにログインし、settingのページで表示される。
dotcloudコマンドでsetupサブコマンドを指定すると、再設定もできる。

$ dotcloud
Warning: /home/USERID/.dotcloud/dotcloud.conf does not exist.
Enter your api key (You can find it at http://www.dotcloud.com/accounts/settings): XXXXXXXXXXXXXXXXXXXXXXXXXXXXX

アプリケーション定義ファイルdotcloud.ymlを作る

$ cat dotcloud.yml 
www:
  type: static

同じディレクトリにHTMLファイルを作る

$ cat index.html 
<html>
  <head>
    <title>Hello World!</title>
  </head>
  <body>
    Hello World!
  </body>
</html> 

dotCloud内にアプリケーションを作る

$ dotcloud create helloworldapp
Warning: /HOME/.dotcloud/dotcloud.conf does not exist.
Enter your api key (You can find it at http://www.dotcloud.com/accounts/settings): ABC123.......................789XYZ <--API keyは、wwwでログインし、dashboardのsettingで表示される

Created application "helloworldapp"

HTMLをインスタンスへpushする

$ dotcloud push helloworldapp
# upload /DIRECTORY/dotcloud/maarui ssh://dotcloud@uploader.dotcloud.com:443/helloworldapp
# rsync
building file list ... done
./
dotcloud.yml
hw.html

sent 262 bytes  received 53 bytes  48.46 bytes/sec
total size is 122  speedup is 0.39
09:21:11 ---> Deploy of "helloworldapp" scheduled for revision rsync-1326532870687 at 2012-01-14 09:21:11
09:21:11 ---> Initializing new services... (This may take a few minutes)
09:21:11 [www.0] Initializing...
09:21:15 [www.0] Service initialized
09:21:17 ---> All services have been initialized. Deploying code...
09:21:17 [www.0] The build started
09:21:18 [www.0] Fetched code revision rsync-1326532870687
09:21:22 [www.0] Reloading nginx configuration: nginx.
09:21:22 [www.0] The build finished successfully
09:21:22 ---> Deploy finished

Deployment finished. Your application is available at the following URLs
www: http://helloworldapp-ID.dotcloud.com/

これで、表示されるURLにアクセスすると、ちゃんとHTMLが表示される。

その他の操作

アプリケーションの詳細情報は、以下のように取れる。
例は、wwwサービスだが、DBサービスをcreateすると、そのDBへの接続情報などもここで出るそうだ。

$ dotcloud info helloworldapp.www
aliases:
- helloworldapp-ID.dotcloud.com
build_revision: rsync-123456
config:
    path: /
created_at: 1326532871.811918
datacenter: Amazon-us-east-1b
image_version: exxxxxxxxxx8 (latest)
ports:
-   name: ssh
    url: ssh://dotcloud@helloworldapp-ID.dotcloud.com:6908
-   name: http
    url: http://helloworldapp-ID.dotcloud.com/
state: running
type: static

アプリケーションの動作状況

$ dotcloud status helloworldapp.www
#  sudo /etc/init.d/nginx status 
 * nginx is running

sshすると、こんなふうになる

$ dotcloud ssh helloworldapp.www
# $SHELL
dotcloud@helloworldapp-default-www-0:~$ 
dotcloud@helloworldapp-default-www-0:~$ ls
code  current  environment.json  environment.yml  rsync-1326533061883  static
dotcloud@helloworldapp-default-www-0:~$ cd current
dotcloud@helloworldapp-default-www-0:~/current$ ls
dotcloud.yml  index.html
dotcloud@helloworldapp-default-www-0:~/current$ exit

アプリケーションの削除

$ dotcloud destroy helloworldapp
Please confirm destruction [yn]: y
Destroy for "helloworldapp" triggered.

消えたことを確認

$ dotcloud status helloworldapp.www
error: "helloworldapp" not found.

この操作のシンプルさは気に入った。 herokuがいまいちだったので、しばらく、これで遊んでみようと思う。



sylphide_ffr31mr at 00:18コメント(0)トラックバック(0) 

2011年12月10日

if this then thatは、各種webサービスを自動で連携してくれるサービス。
予め設定しておけば、iftttのサーバサイドで各種連携をやってくれるので、あるwebサービスを使うときに、連携を意識したクライアントソフトを選ばない。
ifttt

iftttは、定期的にwebサービスをポーリングし、条件に合うアイテムをみつけたときに、設定されたアクションをするという仕組みのようだ。
たとえば、google readerでRSSチェックをしていて、スターをつけたものを、自動的にevernoteに保存してくれたりする。
iftttサーバは、google readerのアカウントを定期的にチェックし、新たにスターがついたアイテムを見つけると、それを読み込み、evernoteアカウントを使ってノートを作成保存するAPIをコールする。

ポーリング間隔は15分がめどらしいので、即時反映は望めないが、そんな間隔なら実用には十分だ。

詳しい設定方法とかは、以下の記事に詳しい。

ブロガーハックBusidea

Evernote News

ifttt内では、世の中のwebサービスを"Channel"という。
Channel Aに対して、何かをすると、Channel Bに対して何かをするというルールを設定しておく。
きっかけとなるChannel Aに対して、なにかする、ということを"Trigger"という。
Triggerに応じて、Channel Bで何かすることを、"Action"という。
このTriggerとActionを関連付けた、ひつのルールを"Task"という。

TriggerとActionは一対一対応で、Taskとなるが、一つのTriggerではじまるTaskを複数作れば、あるChannelでの行った行動が、複数のサービスに影響をさせることができる。
例えば、Twitterでツイートにスターをつけると、そのツイートをEvernoteに保存し、かつfacebookにつぶやき、そしてtumblrに書きこむといった動作を定義できる。

channelはどんどん増えていくだろうし、使うwebサービスはどんどん複雑化していく。
webサービスを横断する中間的なツールもいろいろあるが、iftttはそれらのwebサービスを実にうまく抽象化しているのがすばらしい。


sylphide_ffr31mr at 20:45コメント(0)トラックバック(0) 

2011年11月19日

iPhoneを使っていると、bluetoothwpOFF/ONしたり、画面ロックを無効にしたいことがままある。
設定画面からメニューを辿っていくのが煩わしいと常々思っていた。
iPhoneアプリで、画面ロックをワンタッチで切り替えるることができないかと探してみたりもしたのだが、URIスキーマという機能を使うと、設定画面をダイレクトに呼び出すことができることがわかった。
iOS5からの新機能である。
SafariのURL欄にURIスキーマを入力すれば、通常のHTMLアンカーと同じじように動作する。

設定画面からのURI schemeリストをリンクで用意した。以下のページをiPhoneで読み込んで、リンクをタップすると、設定画面に飛ぶことができる。

URI scheme List


URIスキーマのリストは、こちらのページからいただいた。

[UPDATE6]iPhoneの設定画面をサクッと開く方法 -『Touch Icon Creator』でURLスキーム対応アイコンを簡単に作る


しかし、そのスキーマで画面にジャンプする前のURLリンクをホーム画面にアイコン登録するのが難しい。
PCのように、デスクトップにショートカットがをおいて、プロパティでURL(この場合URI scheme)に書き換えればいいとは単純にはいかない。
safariにしかホーム画面にアイコンを登録できる機能はないし、アプリをのAPIでもその機能をは提供されていないようだ。

その問題を解決するアプリが、touch iconというアプリのようだ。


iOS5でWi-Fiなどの設定画面を一発で開けるアイコンを作れることが判明


このページの手順で、簡単にホーム画面に設定アイコンを設定できた。

はたして、touch iconではどのように登録しているのか?

リバースエンジニアリングっぽく調べてみた。

safariのURL欄に、直接javascriptを埋め込む形で実行しており、そのjavascriptごとホーム画面アイコンにしているようだ。
URLから飾りの部分を削除して、仕組みの部分のみを抽出すると、以下のようになる。

data:text/html;charset=UTF-8,<head>
<title>WIFI</title>
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
</head>

<body>
<a id="link" href="prefs:root=WIFI"></a>

<script type="text/javascript">
  if (window.navigator.standalone) {
    var e = document.getElementById("link");
    var ev = document.createEvent("MouseEvents");
    ev.initEvent("click",true,true);
    e.dispatchEvent(ev);
  }else {
    document.write("このページをホーム画面に追加してください。<br />");
  }
</script>
</body>

上記を一行にまとめたものが、以下である。
data:text/html;charset=UTF-8,<head> <title>WIFI</title> <meta name="apple-mobile-web-app-capable" content="yes" /> <meta http-equiv="content-type" content="text/html;charset=utf-8" /> </head> <body> <a id="link" href="prefs:root=WIFI"></a> <script type="text/javascript"> if (window.navigator.standalone) { var e = document.getElementById("link"); var ev = document.createEvent("MouseEvents"); ev.initEvent("click",true,true); e.dispatchEvent(ev); }else { document.write("画面下のボタンをタップして、このページをホーム画面に追加してください。<br />"); } </script> </body>

これをコピペして、タイトルとURLスキーマの部分を書き換えて、メールでiPhonenに送り、それをsafariで開いて、その画面をホーム画面に登録をすると、設定画面に一発で飛べるアイコンを作ることができる。
アイコンイメージは登録できないので、あくまで実験としてお使いください。

上記リンクの作者様、情報ありがとうございます。
そして、touch iconの作者さんは、すごいことを考えたものです。
便利なツールをありがとうございます。




sylphide_ffr31mr at 00:53コメント(1)トラックバック(0) 

2011年11月09日

エプソンからヘッドマウントプロジェクタが発売された。
シースルータイプというのが、実にそそられるが、メディアプレイヤー的な扱いなので、少しぼくが望んでいるものとは異なる。

部屋の中でじっくりと映像を見るというよりは、外で行動しながらオンラインでいられるデバイスを期待したい。
ブラザーの単眼ディスプレイのほうがイメージに違い。
いわゆるスカウタータイプのものだ。

ふだんiPhoneとbluetoothヘッドフォンを使っていると、iTune操作も耳元のスイッチ類でできて、ちょっとしたウェアラブルコンピューティング感を味わえる。
これに、入力デバイスと出力デバイスであるスカウターがあれえばいいのにと妄想をする。
以下がそんな妄想である。

1.ヘッドマウントディスプレイ
 
通話、IM、Web閲覧などのオンライン活動を、屋外などオフラインの行動の妨げにならないように行いたい。そのため、頭からヘルメットのように被るタイプは重すぎる。
単眼のシースルータイプのディスプレイで、できるだけ小型なものにする。
網膜投影が理想。耳にかけて支えられ、ヘッドフォンとマイク付きとなる。
視線入力をするためのカメラを付けたいところだが、それは欲張りすぎか。

2.入力デバイス
 
手のモーションを感知して操作をするにしても、グローブをはめるのは大袈裟である。
基本的なマウス程度の操作であれば、指輪程度の大きさのタッチパッドで十分。
人差し指にタッチパッドリングをはめて、指の側面がセンサー部分とする。親指の腹で、そのセンサー平面をなでることで、十分マウスのかわりになるであろう。
それを両手にはめれば、マルチタッチにもなる。

もう少しし複雑なコマンド、例えば文字入力などでは、親指を除く4本の指に、指サック的な指輪をはめる。
第一関節と第二関節の曲げ伸ばしで、そうとう複雑なモーションができる。
これらの指輪には、加速度センサーを組み入れて、腕の振りや傾きに意味を持たせることもできる。

-------------------
2011/11/18追記
サンワサプライから、指輪型のマウスというのは出てました。
あまりかっこよくないけど。
http://direct.sanwa.co.jp/ItemPage/400-MA031
-------------------

3.本体
 
本体は、iPhoneなどの既存のスマートフォンでよい。上記のようなデバイスを、bluetoothで接続できれば、胸のポケットにしまっておくだけだ。


一番難しいのは、入力デバイスの特性に応じたモーションの意味付けの設計だろう。
こうした新しい入力デバイスで、人間のモーションに対して、自然な反応を返せるシステムとするには、工学だけの問題ではないからだ。



sylphide_ffr31mr at 23:13コメント(0)トラックバック(0) 

2011年11月01日

emacsにもだいぶ慣れてきた。
calender機能があるのだが、今いち使い道がないと思っていたが、google calendarに登録したイベントが 読み込む方法がわかったので、俄然使える機能になった。
ブラウザを起動せず、emacsを終了しなくても、スケジュール確認、登録・削除ができる。
これはすばらしい。
cal1

設定方法は、以下を元ネタにしている。
http://code.google.com/p/emacs-google/wiki/googlecalendar

2 インストール方法

  1. iCalendar.elは、emacsのelispディレクトリに置く
    $ cp icalendar.el ~/.emacs.d/
  2. google-emacsもemacsのelispディレクトリに置く
    $ cp -r google ~/.emacs.d/
  3. gdataは、pythonでインストール 展開したディレクトリで、
    $ sudo python setup.py install

3 設定ファイル

~/.emacsに以下を追記する


;; 1) icalender.elの読み込み
(setq load-path (append (list (expand-file-name "~/.emacs.d/icalendar")) load-path))
(require 'icalendar)
;----
;; 2-1) google calender関連elispの読み込み
(setq load-path (append load-path (list (expand-file-name "~/.emacs.d/google"))))
(require 'google-calendar)
;----
;; 2-2) google calendarの設定
(setq google-calendar-user           "GOOGLE USER ID")         ;;; GOOGLE USER
(setq google-calendar-code-directory "~/.emacs.d/google/code") ;;; PATH TO THE PYTHON CODE
(setq google-calendar-directory      "~/tmp")               ;;; TEMPORARY DIRECTORY
(setq google-calendar-url            "https://www.google.com/calendar/ical//…../basic.ics")  ;;; URL TO YOUR GOOGLE CALENDAR
(setq google-calendar-auto-update    t )                    ;;; DEFINE IF THE CALENDAR IS DOWNLOADED AFTER EVERY MODIFICATION

GOOGLE USER IDは、@gmail.comの@マーク前の単語を書いておく。
code-directoryとcalendar directoryは、適宜書き換える。~/tmpとしたら、忘れずに~/tmpを作っていくこと。 google-calendar-urlは、対象のgoogleカレンダーの設定画面で、以下の限定icalのURLを貼り付ける。

ical_link

 

.emacsに以下を書いておくと、emacsの起動のたびにカレンダーイベント情報がダウンロードされる。 そのため起動は遅くなる。

(google-calendar-download)

4 使い方

主たるキーは以下のとおり。

M-x calenderカレンダーバッファを作成しカレンダー表示
M-x google-calendar-downloadカレンダーイベントのダウンロード
C-c C-g d同上
C-c C-g q quick event add
C-c C-g adetail event add
M-x google-calendar-delete-eventevent delete
dその日の予定を表示
m予定の入っている日を色付けする


sylphide_ffr31mr at 23:07コメント(4)トラックバック(0) 

2011年10月28日

以前のエントリーで、xwindowのキーマップを変えて、Apple wireless keyboardの「英数キー」を「alt」に変更する方法を書いた。
ubuntu 11.10にしたら、このxmodmapを読み込んでくれなくなってしまった。
手動で再読み込みさせると無事反映されたので、対処療法として個人環境の自動で起動するアプリにコマンドを書くことにした。
右上のギアマークをクリックして「自動起動するアプリケーション」に以下を登録する。

xmodmap /home/<userid>/.xmodmaprc

.xmodmaprcのパス指定でホームディレクトリを表すチルダを使うとうまくいかないので、ご注意。

sylphide_ffr31mr at 18:36コメント(0)トラックバック(0) 
記事検索
最新コメント
プロフィール

やすき

月別アーカイブ
  • ライブドアブログ