Hatena::Diary

guccyonikki このページをアンテナに追加 RSSフィード

2010-05-22

Ubuntu 10.04 LTSでemobile D11LCを使う

Ubuntuの10.04 LTSでemobileを使用できるようにした。

環境は以下の通り。


PC: IBM Thinkpad X60

OS: Ubuntu 10.04 LTS

Emobile: D11LC


USBモデムとして認識させる

そのままD11LCをUSB接続すると、モデムとして認識されない。

なのでUSB ModeSwitchをインストールしてモデムとして認識できるようにする。


9.10までは配布サイトより

ソースコードを落としてきてコンパイルする必要があったのだが、

現在はubuntuリポジトリにあるようなのでaptインストールする。

sudo apt-get install usb-modeswitch

特に設定なども必要なさそう。


ダイヤルアップ接続

GUIppp接続の設定を行えるよう gnome-pppインストール

sudo apt-get install gnome-ppp

gnome-ppproot権限で実行する必要があるので、アプリケーションメニューのアイコンの設定を変更する。

パネルのシステム>設定>メインメニューを実行。

インターネットにあるgnome-pppプロパティでコマンドを以下のように変更

sudo gnome-ppp

sudoとして実行すると起動時にパスワードの入力を求められるが毎回、入力するのは面倒なので visudoの最下行に以下の記述を追加。

(sudo visudoで実行)

%admin ALL=NOPASSWD: /usr/bin/gnome-ppp

gnome-pppを起動する。

入力欄に以下を入力

Username: em
Password: em
Phone number: *99***1#

Setupを開き、各タブセクションに以下を入力。

この時、ModemのDeviceの選択はDetectボタンを押して検索する。

正しくUSBモデムとして認識されていたら自動で設定される。


[Modem]
Device: /dev/ttyUSB0
Type: USB Modem
Speed: 460800
Phone Line: Tone
Volum: Off

[Options]
Dock in notification area: On
Auto reconnect: On
Check carrier line: On
Check default route: On
Ignore terminal strings(stupdi mode): On

あとはConnectで接続完了。


非常に簡単だった。9.10の頃はモデムとして認識させるのにいろいろ設定を書いたり、コンパイルに失敗したり、繋がっても別のユーザーに変えると繋がらなかったりと大変だったが、今回はサクっと繋がった。Linuxもバージョンを重ねるたびに徐々に使い易くなってきていて素晴らしいね。

2010-01-29

Appleのタブレット


やっと発表されましたね。「iPad」。

半年ほど前に、根も葉もない噂から勝手に名前を予想してtwitterでもつぶやいていた自分的には感動もひとしおといったところです。


で、実際に買うかというと・・・


とりあえず少し様子を見ようかなと思っています。

なんだそりゃ!ってところですが。


今回の内容に基本的には満足しています。

まずデザインが素晴らしい。


それに本当は欲しいのにiPhoneを持ってない私としては、まさにiPhoneに足りなかった文章(書籍やネットの記事)を読むために必要な大画面があります。

私は文章を読むときに何度も上へいったり下へいったりするのである程度の視認性は不可欠。

iPhoneではそれが難しいなという理由でiPhoneを躊躇していました。

それがiPadにはあります。


他の機能要件的にはiPhoneiPadに大差はない感じです。

携帯性は確かに違いますが現在でも1年のうち300日以上のペースでMacBookemobileを携帯しているのでiPadのポケットに入らない大きさ苦にはなりません。

欲を言えばもう一回りだけ小さくあってほしかった。

淵の黒い部分を除いたサイズくらいが理想。淵はいるので画面を小さくする感じ。プライベートで出かける時に使っているウエストバッグに入りそうにないのが残念。

まぁ鞄くらいは買えばいいだけだし。


とまぁそれなりに納得しているわけです。


では何故、様子見か?

理由は以下のとおり。


カメラがない

外でほとんど撮影をする事はないので不要っていや不要なんですが、やっぱあれば便利ですよね。

つけるとしたらどっち側がいいかだろう。

あの画面だとフロント側にレンズをつけてSkypeビデオチャットみたいに使えそうだし、また背面側につけて会議中など文書をさっと撮影して取り込めたら会議録を一元電子化できて便利そう。


結局、両面に必要という事になりますがそうなるとアクセサリーとしてケーブル付きのカメラになるんでしょうか。

あまりケーブルは持ち歩きたくないなぁ。


WiMAX非対応

3Gは通信速度が遅いのと契約が面倒臭い。

流行りそうで流行らないWiMAXは普及してしまえばある程度の速度が期待できます。

また次世代の通信規格としては一番有力候補だと思うので。

まぁ3Gがしばらく主流になるならそれでも良いですけど。


マルチタスクでない

マルチタスクだと思ってましたがどうやらシングルタスクのよう。

使い方を工夫すれば気にはならないんでしょうけど。



気になる点はこのあたり。

とりあえず半年くらい様子をみて次バージョンでカメラが付きそうとかWiMAX対応しそうみたいな話が出てこなければ購入しようと思います。



久しぶりにブログを更新して、こんなどうでもいい記事を書くあたりが我ながら好きなんやなぁと思います。

2009-10-08

社内で『実践コーディング勉強会』を開催した


昨日の業務後、社内で勉強会を開催しました。

内容は一つのお題を制限時間内に参加者全員でコーディングをするというもの。

使用するプログラミング言語は参加者の自由です。


制限時間終了後は何人かのプログラムをピックアップしてプロジェクターに映し、発表およびレビュー。


お題はネット上の

どう書く.org, anarchy golf, Project Euler

などの問題集サイトから適当に拾ってきたものを使います。


第1回目となる今回のお題は以下の2問。

入力された行列の転置行列を求めなさい。
「入力例」

1 2 3
4 5 6
7 8 9

「出力例」
1 4 7
2 5 8
3 6 9


出展元
http://vipprog.net/wiki/exercise.html

次のような書式で与えられた「あみだくじ」があります。
(あみだくじはコード中に埋め込んでも、標準入力や
外部ファイルから読み込んでも、書きやすい方法でかまいません)

A B C D E
| | |-| |
|-| | |-|
| |-| |-|
|-| |-| |
|-| | | |

このあみだくじをたどって
A B C D E
| | |-| |
|-| | |-|
| |-| |-|
|-| |-| |
|-| | | |
B D C A E
のように結果を表示させるプログラムを作ってください。


出展元 どう書く?org
http://ja.doukaku.org/

どちらも面白い問題でした。

短いプログラムではありますが、頭の体操にもなるし、何より楽しいので今後も定期的に続けていこうと思います。


参加者の中にはActionScriptを使って実装してる人もいてGUIを作るのに一番苦労してたみたいです。

そこに意味はあるのでしょうか。。。



ちなみに私がコード書いたコードは以下

続きを読む

2009-09-19

MacからWindowsで共有されたプリンタを使う

Windowsドメインに参加しているWindowsマシンがあって、そのマシンに接続されている共有プリンタをMacから使う場合の手順。

Macのバージョンは10.6。


まずは普通に「システム環境設定」から「プリントとファクス」を選び+アイコンでプリンタを追加する。

プリンタ追加ダイアログのWindowsタブを選択し、下に表示されているドメインとワークグループリストの中から対象のドメイン、対象のマシンを選択する。すると認証ダイアログが出てくるのでドメインユーザー名とパスワードを入力して接続する。


この時、ユーザー名は「ドメイン名/ユーザー名」というように指定。

Windowsから接続する時のようにファイルパスの部分を「\」(円マーク)とすると、プリンタはゲストユーザーでも接続できる為、認識されるが実際のプリント時に「NT_STATUS_LOGON_FAILURE」となり正しく動かない。


共有プリンタの名前が表示されたら選択してドライバに「プリンタソフトウェアを選択...」を選び、対象のプリンタのドライバを選択。

かなりの量のドライバが搭載されているようなので市販されてるようなものなら問題なく動くんじゃないだろうか。

私の場合は3,4年前に買ったCanonのPIXUS ip4100という機種だが普通に選択肢に表示されていた。



ログインの時のユーザー名の指定が肝だが、これはMacからプリンタというよりSambaのファイル共有の話なのでLinuxからの場合も同様だろう。

2009-09-14

VBAのメモ

ここ一ヶ月ほど業務でExcelマクロを組んでいて、VBAを触る必要があった。

VBAについてはしっかりと勉強をした事がなかったのだけど、触っていてハマったポイントなんかを書き留めておく。



論理演算子は必ず両辺を評価する

AndやOr演算子は左辺で条件が確定しても両辺を評価するようだ。

Sub test()
    If isA Or isB Then
        Debug.Print "true"
    Else
        Debug.Print "false"
    End If
End Sub

Function isA() As Boolean
    Debug.Print "A"
    isA = True
End Function

Function isB() As Boolean
    Debug.Print "B"
    isB = False
End Function

例えば上記のコードだと、Javaなどで考えると isA がTrueの場合、isBは評価せずにIf文の条件式は「真」となり実行されるが、VBAで実行してみると出力結果は

A
B
true

と表示されて両辺が評価されている事がわかる。


逆の And の場合も同様で左辺が False でも両辺を評価する。

なので And で2つの重めの処理の評価結果で分岐したい場合は、きっちりと分けて書かないと無駄に重たい処理を実行する事になる。

If isA Then '重めの評価
    If isB Then '二つ目の重めの評価。この場合、isAがFalseならisBは評価されない
        Debug.Print "true"
    End If
End If


また類似の処理ではVB版3項演算子 IIfの場合もそう。

    hoge = IIF(isA, getFoo, getBar)

この場合、isAの結果によらず getFoo, getBar が共に評価される。


getFoo, getBar が重たい処理の場合、面倒でも

If isA Then
    hoge = getFoo
Else
    hoge = getBar
End If

と書く必要がある。

まぁこれはVBAの関数が先行評価型である事を考えれば、当然なんだけど。三項演算子とは呼ばない方が良い気がする。



Private変数のスコープはプロシージャ内

プロシージャ内で宣言した変数はプロシージャ内であれば、どこからでも参照できる。For文の内側で宣言してFor文の外側からアクセスできる。つまり以下も問題なく動く

Sub test()
    For i = 0 To 5
        Dim a as String 'For文内でプライベート変数を宣言
        a = "hoge"
    Next

    Debug.Print a
End Sub

まぁこれはJavaScriptあたりと同様だ。


但し、JavaScriptみたいに以下のようには書けない。

Sub test()
    Debug.Print a '宣言前に参照
    For i = 0 To 5
        Dim a as String
        a = "hoge"
    Next
End Sub

For文内での変数宣言前に参照すると、その時に変数に値がバインドされて、For文内では2重宣言と見做されてしまうようだ。


そして少しハマったのが以下のケース。

Sub test()
    For i = 0 To 5
        Dim col as New Collection
        col.add i
    Next

    Debug.Print col.Count
End Sub

上記を実行すると6と表示される。

VBAの参照型変数は宣言時にNewを付けてオブジェクトの生成を行えるが For文内で書いた場合、最初の一回目でオブジェクトが生成されて2回目からは生成済みのものを使うよう。

なので上記の場合はコレクションに値を6回追加する事になる。


For文でループ毎にオブジェクトの生成を行いたい場合はSet を使って明示的に生成する必要がある。

Sub test()
    For i = 0 To 5
        Dim col as Collection
        Set col = New collection
        col.add i
    Next
    Debug.Print col.Count '1と表示される
End Sub


配列はindexが0から、コレクションは1から始まる

思わず、え??と聞き返しそうになるが。。。

Sub in_Collection_Case()
    Dim col as New Collection
    col.add "hoge"
    col.add "foo"
    ' コレクションの場合、indexは1から始まる
    For i = 1 To 2
        Debug.Print col(i)
    Next
End Sub

Sub in_Array_Case()
    ary = Array("hoge", "foo")
    ' 配列の場合は0始まり
    For i = 0 To 1
        Debug.Print col(i)
    Next
End Sub

まぁ実際は配列の場合でも

Sub in_Array_Case()
    Dim ary(1 To 2) As String
    ary(1) = "hoge"
    ary(2) = "foo"
    For i = 1 To 2
        Debug.Print ary(i)
    Next
End Sub

として1始まりで使うんだけど。


Arrayが0からって仕様が凄く不思議。




いろいろと厄介な仕様だったり、デバッガは使いにくいし、型を指定してるのに実行時まで型違いのエラーを

見つけてくれなかったりとイライラする事も多いけど、結構いろいろな事ができるので頑張ればvbaマクロだけでそこそこのシステムを作れそうな気がする。

非同期でHTTP通信とかもできるんだろうか。