2015年05月14日

BitnamiでModxを使ってみた

以前、BitNamiで手軽にModxインストールという記事で、ローカルでLAMP環境を簡単に構成できるBitnamiでModxをインストールする方法を書いた。その後、Web関係の作業をすることがなかったので(サイトの作成はWeeblyのようなお手軽サイトでやってしまっていたので)、この方面は放置していたのだけれど、少し事情があって再びModxを触る必要が出てきた。こういうときにはやっぱりローカルにインストールできるBitnamiが便利なので、久しぶりにBitnamiのサイトに行ってみたら、あれこれ工夫しなくても、Modxのパッケージがダウンロードできる。これはもうお手軽もいいところで、ダウンロードしてインストーラーを走らせればそれだけでModxがローカルにインストールできてしまう。
ということで、記事を書くようなことは何もないのだけれど、実際にはいくらかやらねばならないことがあったので、その備忘に。

まず、パッケージでインストールされるModxは、Revolution系列だということ。ModxにはEvolutionとRevolutionの2つの系列がある。で、私が使いたかったのはEvolutionなので、こちらをインストールしなおさなければならなかったというのがまず一点。そのインストールは、以前の記事でWordpressのhtdocsにModxのファイルを解凍して実行したのと同じように、ただ今回は~/apps/Modx/htdocs/にルートがあるということだけがちがう。これはこれで問題ない。
ところが、そのModxで作業をしていたら、どうもリンクがうまく通らない。相対パスが本来のルート(//~:8080/)を基準にしているのに、この~/apps/Modx/htdocs/という場所は、そこからひとつ下の//~:8080/Modx/を基準にしている。だから、同一サイト内のリンク先にパスが通らなくなってしまう。これでは、ローカルで検証したデータをそのままWebサーバーにアップロードするという作業手順がうまくいかない。
そこで、//~:8080/のルートがどこにあるのかと調べてみたら、~/apache2/htdocs/がそこだということがわかった。そこでこのhtdocsにModxのパッケージを展開してインストールしようとしたがうまくいかない。いろいろ試行錯誤してみたら、結局は~/apps/Modx/htdocs/と~/apache2/htdocs/ではアクセス権限の設定が異なることがわかった。公開サーバーであればこんなところはいじるべきではないのだろうけれど、ここはローカルの非公開の場だから、まあいいかとアクセス権限を変更。あとは簡単にインストールできた。

Modxを使う作業はすぐに終わったので、今後また当分、使う必要はないだろう。けれど、何年後かに必要になれば、また同じように簡単に設定できるはず。こういうのは非常に助かる。
posted by 松本 at 19:59| Comment(0) | TrackBack(0) | Ubuntuのアプリケーション | このブログの読者になる | 更新情報をチェックする

2015年04月27日

Ubuntu 15.04にアップグレードした

アップグレードの通知が来た。普段ならしばらくは放っておくのだけれど、ちょうどこのタイミングでNautilusの調子が悪くなった。具体的には、ファイル名の変更にキーボードが効かなくなってしまった。とりあえず別のファイルマネージャ(Thunar)を使えば用は足せるのだが、ちょっと不便だなあ、どうにかしなければと思っているタイミングだったから、思い切ってアップグレードをかけた。ほんの1時間ほどでシステムが新しくなり、期待通りバグも消えた。これは嬉しい。
posted by 松本 at 22:25| Comment(0) | TrackBack(0) | 総記・雑記 | このブログの読者になる | 更新情報をチェックする

2015年03月25日

Playon Linuxではまる

今回、起動トラブルに伴って(そして14.10へのアップデートに伴って)環境が一新されたので、アプリケーションの追加インストールを行った。ただ、Ubuntuの場合これは楽なもので、定番のアプリをソフトウェアセンター(というか、私の場合は使い慣れたSynpaticパッケージマネージャ)から選択してOKのボタンを押すだけだ。Ubuntuを使い始めた頃には必要なことが多かった特殊な環境の構成は、いまではまず不要だ。
ただ、Wineでインストールしていたいくつかのアプリが動作しなくなった。これについては、(調整の仕方もあるのだろうけれど)、一からインストールしてやるほうが早いだろう。

以前の経験から、WineへのアプリケーションのインストールはPlayon Linuxを使うほうが簡単かつ確実だということを学んでいた。たとえばMS Office 2010のインストールにはいくつかのMS純正のプログラムを(正規に)追加インストールしなければならないのだが、これをwinetrickから実行するのは結構面倒で、おまけに失敗するケースもままあった(これはもちろんwinetrickのせいではなく、私のミスであるわけだけれど)。Playon Linuxならこのあたりが自動化されていて気楽に進めることができる。以前、驚くほど簡単に進んで拍子抜けしたことがあった。それ以来、必ずwineのフロントエンドであるPlayon Linuxを使うようにしている。

Playon Linuxを使う際には、前もってPlayon Linuxのインストールとともにwineのインストールをパッケージマネージャから実行しておく。Playon Linuxは必要なバージョンのwineを自分でダウンロードして構成してくれるスグレモノなのだが、そのインストールでは依存関係にあるwinbind(だったと思う)がインストールされない。パッケージマネージャ(ソフトウェアセンター)からwineをインストールしておけば依存関係は全て満たされるので、そうしておく必要があるわけだ。

さて、Playon Linuxを起動し、追加インストールのアイコンを押す。通常、ここからインストール可能なソフトの一覧を読み込んで作成するので、通常でも次の操作に移れるようになるまでかなりの時間を要する。ただし、その間でも進行状況を示すパーセント表示が出るので、どの程度待てばいいのかは把握することができる。
ところが、今回Playon Linuxを走らせてみると、いつまでも読み込みを続けて、進行状況が不明なままだ。そして、いつまでもソフトの一覧があらわれない。つまり、インストールに進むことができない。

これはかなり悩んだ。特に、以前は問題なく進行した手順だけに、理解ができなかった。設定ファイルを削除してみたりPlayon Linuxを最新バージョンにアップグレードしてみたりしてみたが、なにをやってもここで止まってしまう。
最終的な解決は、単純なことだった。システム設定の言語サポートから、言語環境を英語に変更してやり、いったんログアウトして再ログイン。これで環境が英語環境になるから、ここからPlayon Linuxを起動。そしてインストールに進むと、難なくソフトの一覧が表示され、そしてもちろん、そこから必要なソフトのインストールが可能になった。手続き後に日本語環境に戻して再ログインしておけば、それで全て完了。

英語の記事では問題なく使えるLinuxアプリケーションが日本語の記事ではたいそう難しいように書いてあることがたまにある。そういう場合はたいていは言語環境の問題だ。日本語で使うためにはそれなりの設定が必要な場合も少なくはないのだが、Playon Linuxのように一過的に使えばそれで十分というような場合には、言語環境を英語に変更して乗り切ることができる。そういえば以前にもこんなことがあったなあと、懐かしく思ったことだった。
posted by 松本 at 10:04| Comment(2) | TrackBack(0) | Ubuntuでの失敗・トラブル | このブログの読者になる | 更新情報をチェックする

2015年03月23日

大騒ぎして元通り

ちょうど1週間前、徹夜仕事が終わってホッとしたタイミングで、1年あまり愛用しているAcer V5-131の起動がおかしくなった。はじめのうちは「あれ、どうしたのかな?」程度の不具合で、再起動をやり直したらうまく起動する程度のものだった。前日にアップデートが入りカーネルが新しくなったので、その関係の不具合かとも思った。いろいろインストールしているうちにgrubの自動更新がうまくいかなくなっていたので、ここしばらく手動で更新している。そのあたりで手順を間違えたかなとも思った。
けれど、起動時にgrubで旧カーネルを選択しても、不具合は続く。そのうちに、完全に起動しなくなった。
これはUbuntuの再インストールかな、と思って、念のためにデュアルブートにしてあるWindowsを立ち上げようとしたら、そっちも起動しない。bootイメージを見つけられないようすだ。
このマシンは、導入時になぜかUEFIからのインストールがうまくいかず、BIOSでUEFIとLegacy BIOSを切り替えて、UEFIにWindows、Legacyの方にUbuntuという変則的なデュアルブートにしてある(詳しくはこちら)。だから、UbuntuのカーネルアップデートのミスがWindowsの起動に影響するわけはない、と考えた。
だとしたら、これはハードウェアの問題にちがいあるまい。USBからUbuntuを起動すると問題ないから、ハードディスクの問題だろうと見当をつけた。幸いにもUSBから起動して本体のハードディスクを読みにいったら問題なく読めるから、バックアップはできる。バックアップを取り、新たなハードディスクを購入して、さて、ハードディスクの換装を試みた。
ハードディスクの交換そのものは、特に困難はない。ところが、交換して、まずはWindowsをと思って以前につくってあったリカバリ用のUSBドライブを挿入してみると、なぜだかドライブの初期化はできるけれど、Windowsは復活しない。何かが抜けているようなのだが、よくわからない(実のところ、この問題はいまだに解決できていない)。ただ、過去1年間でWindowsを必要とした機会はごく数えるほどしかなかったので、「それはそれでかまわない」と割りきって、Ubuntuのインストールに進んだ。今回は、なぜだか前回うまくいかなかったUEFIからのインストールがすんなりと実行できた。このあたり、謎は深まるばかり。
ともかくも、Ubuntuがうまくインストールできたので、今度は古いハードディスクを外付けドライブとして接続し、診断してやると、特に不具合はないようす。それならWindowsのリカバリディスクをもう一度作り直せないかと欲が出て、再度ディスクを交換してもとに戻し、とりあえず電源を入れたら、今度はWindowsの自動修復がかかってなぜだかWindows 8.1のログイン画面になった。
理由がわからないのは気持よくないが、ともかくこれでリカバリディスクを作り直し、またもハードディスクを交換して今度こそWindowsを新しいハードディスクに回復しようとしたら、やっぱりできない。結果は同じことになる。そして、Ubuntuにログインしようとしたら、今度は起動ディスクが見つからないとのエラー。どうやら、いっぺん外付けディスクで読み込んだときにUEFIが誤認識するような何かが起こったのではないかと推測。このあたりも実態は不明。
特別にWindowsを使いたいわけではないけれど、もとのハードディスクにも特に不具合はないようだし、だったら元に戻したほうが早いと気がついて、またもハードディスクを交換。交換のたびにWindowsは自動修復をかける。このあたりもやっぱりUEFIの親切、というか、ありがた迷惑な仕様なのだろう。
ただ、このままではUbuntuからの起動ができない。こういうときには、USBディスクからGrubに入ってオプションをつけてハードディスク上のブートイメージを指定してやればハードディスクのUbuntuから起動することができる。昔使ったそういう手段を思い出してしのごうかとも思ったが(いったんハードディスク上のUbuntuから起動すれば、Grubの修復でたいていはうまくいく)、そういえば14.04からアップデートしていなかったので、アップデートを兼ねて14.10のディスクからOSの再インストールを選択してやる。個人データはいじらないから、これでアップデートとGrubの修復の両方がいっぺんにできるという算段だ。

ということで、最終的に大騒ぎの末に、元の木阿弥に落ち着いた。昔はよくこういうトラブルがあったなあと思う。久しぶりだった。



posted by 松本 at 11:52| Comment(0) | TrackBack(0) | Ubuntuでの失敗・トラブル | このブログの読者になる | 更新情報をチェックする

2014年08月16日

Kdenliveで字幕入れ

短い動画の翻訳の案件があった。英語の音声を拾い、それを翻訳し、日本語の字幕をつける。通常、こういうのはけっこう大仕事だ。以前に扱った案件では、

  動画音声からの文字起こし → タイムラインの作成 → 英和翻訳 → 翻訳校閲
    → タイムラインへの割付 → 割りつけた日本語の文字数調整 → 文字校正
    → 字幕挿入とレンダリング → 最終校正

というような流れで進んだと記憶している。とにかく手がかかる。

で、こういう流れに沿って進めていくためのツールは、ひととおりUbuntuのリポジトリに揃っている。たとえば音声の聞き取りにはVLCが便利だ。というのも、これは再生速度を任意に設定できるからで、聞き取りにくい早口もこれでほぼ漏れなく聞き取ることができる。そして、字幕挿入には、Subtitle Editorというツールがある(この他にもいろいろある)。これは、テキストファイルをそのままインポートして開始時間、終了時間を動画を見ながら設定していくことができる。そうやって字幕を挿入したら、そのまま動画に書き出すこともできるようだし、.assとか.ssaとかいった字幕用のファイルに書き出すことができる。字幕用ファイルは、たとえばArista Transcoderというようなツールを使えば、簡単に動画に挿入することができる。

とまあ、ツールは揃っているわけだが(揃っていることは確認したが)、結局、これらは使わなかった。なぜなら、動画がごく短いもので、予算も限られていたため、上記のような本格的な正しい流れの作業をする必要も、またその余裕もなかったからだ。

安直に字幕をつけるのなら、定番の動画編集ソフトkdenliveが便利だ。まず大まかな翻訳までを済ませておいた上で、kdenliveを起動する。元の動画をクリップに読み込んでタイムラインの「Video2」にそのまま配置したら、クリップに「タイトル・クリップの追加」で文字を入れる。これをタイムラインの「Video1」に適宜配置していく。このとき、配置する場所と表示されている時間は動画を見ながらWYSWYGで操作すればいいから(ついでに文章の微調整もここですればいいから)、作業は一気に進む。最後にレンダリングすればそれでOK。

もちろん、レンダリング後にチェックしたら、「ここはもう少しこうしたい」というような点が出てくる。ときには字幕文字のフォントや大きさを全部変更したい場合だってあるだろう。こういう場合、「タイトル・クリップ」はkdenliveのファイルにxml形式で保存されているから、.kdenlive形式のファイルをテキストエディターで開き、テキストファイルを直接編集すればほとんど手間をかけずに変更ができる(もちろん変更前にはバックアップはとっておく)。そして、変更後のファイルを再びkdenliveで開いて再度レンダリングすればいい。

非常に手軽な方法だが、この方法は今回のように5分程度の短い動画だからこそ有効だったのだろうと思う。長くなるとひとつひとつの字幕画面を「タイトル・クリップ」で管理するのは(いくらテキストエディターで加工できるとはいえ)効率がよくない。いちいちレンダリングするのも時間がかかるし、レンダリングすることによる画質の低下もあるようだ(このあたりは私の設定が下手なだけかもしれない)。とはいえ、実際にこうすることで、作業時間は着手から完了まで含めて5時間程度で済んだ。これを計算すれば、1分の処理に1時間を要したことになるから、たとえばこれが50分の動画だったとしたら、とても割に合わないだろう。しかし、5分の動画だから、最初にあげたようなおおげさな流れにしないことで、相当な時間短縮ができている。

Ubuntuのおかげ、というか、オープンソースなソフトウェアたちのおかげで、ほんとに、仕事が助かっている。




posted by 松本 at 20:07| Comment(0) | TrackBack(0) | Ubuntuのアプリケーション | このブログの読者になる | 更新情報をチェックする

2014年07月02日

mineoでスマホを使っている - その2

前回mineoでスマホを使っているというエントリで、このk-opticomのMVNOのサービスに接続するときにエラーが出るということをチラッと書いた。端末を初期化したらそれは解決したというようなことも書いたのだけれど、その後、またこの症状が再発するようになった。具体的には、「高度な設定」の「設定を有効にする」をクリックしたあと、エラーが出て接続できないというものだ。もちろん、Wi-fiを切っておいた上で再起動してみたり、手順を最初からやり直してみたり、常識的に考える対応は全てやった上で、エラーが出て接続できないというものだ。それもどうしようもないレベルのものならともかく、ひたすら同じことを根気よくやっていると諦めた頃につながるというのだからかえってやっかいだ。「こういうときにうまくいってこういうときはダメ」というのなら問題の切り分けができるのだが、「たまたまうまくつながる」ではどこに問題があるのかわからない。
ただ、Webを検索してみると、けっこう同じような事例があるようだ。ということは、サービス側でもエラーの原因を把握しているかもしれないと思い、サポートに問い合わせてみた。その結果、上記のような常識的な対応の他に、「データローミングをONにし、データローミング設定を日本/海外(自動)にする」という対処方法を試してみるようアドバイスを頂いた。やってみると、これが一発で効いた。
ただ、「データローミング」は、よく(海外で使った場合)高額な料金の請求が来てトラブルのもとになると聞いたことがある。そこで改めてその件についてサポートに問い合わせたら、国内で使う分には別途の料金は発生しないとのことだった。
ということで、端末の機種とかいろいろ条件はあるのだろうけど、接続がうまくいかないときには、この「データローミングをON」という方法を試して見る価値はあるのかもしれない。
posted by 松本 at 22:29| Comment(2) | TrackBack(0) | 総記・雑記 | このブログの読者になる | 更新情報をチェックする

2014年06月30日

mineoでスマホを使っている

とりあえずUbuntuとは関係ないのだけれど、この6月からk-opticomのmineoというサービスでスマホを使い始めた。その報告。

もともと私はスマホを使う必要もなかったのだけれど、3年ほど前、仕事の都合から携帯の電話番号がひとつ余分に必要になり、といってiPhoneやキャリアのAndroidoはもちろん、ガラケーの契約さえ余分に増やす余裕はなかったので、ちょうどサービスを始めていたb-mobileのイオンSIMでAndroidを使うことにした。中古で1万円弱のIDEOSを入手しておけば月額1,500円弱で(音質的にはかなり問題はあったが)050の番号が持てたので、これはこれで助かった。

そうこうするうちに各社でMVNOや付随のサービスがはじまり、面白いのでIIJとDTIのSIMを試してみたら、IIJのが気に入ったので、イオンは解約し、IIJのSIMとFusionのIP-Phone SMARTを併用することで050の番号を確保することにした。この組み合わせはけっこうよく、月額980円で運用できるのも助かった。そうこうするうちに3,000円で中古のXperia SO-01を入手したので、ようやく運用がスマホらしくなった。

ここにきて、MVNOのSIMを利用する理由が、「安い電話番号」から「スマホ利用」へとシフトするようになった。といっても主な用途は
  • Googleのナビでカーナビの代用
  • 出先でテザリングしてモバイルルーターの代用
  • 050の電話の受発信
  • Googleのカレンダーでのスケジュール管理
  • 音楽再生
  • 写真・動画の撮影
といった程度で、たいしたスマホユーザーではない。
それでも、そうやってスマホを使うようになると、だんだん5年も前の古いXperiaだと使いづらさを感じるようになる。上記のようにヘビーユーザーではないからかまわないといえばかまわないのだけれど、けっこう気軽に持ち歩いている端末なのであちこち傷んできてもいる。そろそろ買い替えかなあと思っていたところにk-opticomがMVNOのサービスを始めるというニュースがあった。

ここ数年、この手のニュースはひきもきらない。その度に競争があって私の愛用していたIIJのサービスが向上するので、それはそれで嬉しいのだが、といって乗り換えを検討するようなものでもないと感じていた。ところが、今回注目したのは、それまでMVNOは基本的にDocomoの電波を使うものばかりだったのが、k-opticomはKDDI(au)の電波を使うのだという。

どっちの電波がいいのかは、私にはわからない。都会で使うならどっちでも同じだろうし、田舎で使うならそれはその地方によってどっちがいいかは一概にはいえないはずだ。ただ、スマホを買い換えることを考えていた私にとっては、auであることの意味は大きい。というのは、Docomoのスマホは基本的にはどれでもMVNOのSIMが使えるので、中古品でもそこそこの値札が付いているからだ。一方のauのスマホは、MVNOのSIMが対応しないから買い手がau内での乗り換えに限られ、市場が小さいせいで同クラスの機種が数割安い。中古のスマホを検討しているうちにそんなことに気がついていたから、「これはオトクじゃないだろうか」と考えた。おまけにk-opticomのmineoという名のこのサービスは、先行割引キャンペーンをやっていたので、最終的に初期手数料分以上の割引が発生するからIIJから乗り換えるにもそれほど惜しいことはない。

ということで、適当な端末を中古で購入し、mineoに乗り換えた。購入したのは京セラ製のUrbano L01。買ってから気がついたのだけれど、世界的なメーカーであるSonyEricsonのXperiaとちがって、圧倒的に情報が少ない。「スマホなんてどれでも同じ」と思っていたけれど、いろいろいじることを考えたらメジャーなモノのほうが有利なのかもしれない。とはいえ、あとのまつりなので、これはこれで使うことにする。

さて、使ってみた感想だが、正直、XperiaをIIJのSIMで使ったときに比べてトラブルが多い。これは端末のせいなのかmineoのサービスのせいなのか、はたまたauの仕様のせいなのか切り分けが全くできないのだけれど、けっこう「あれ?」と思わされることが多い。IIJ-Xperiaのときは全く迷うことがなかったのに比べれば、ずいぶんとちがう。

まず、SIMをセットしたとき、なかなか「高度な設定」をオンにできなかった。何度やってもエラーになる。つまり、電波は受信しているのにサービスが利用できない。SIMカードを挿しなおしてみたり再起動してみたりと、いろいろやってもうまくいかず、諦めかけたときにようやくつながった。なにがなんだかわからない。それから、自動車の運転中にトンネルに入るなどしていったん接続が切れると、再接続しない。手動で接続をやり直す必要がある。テザリングをしようとするとすぐに切断され、設定をデータ通信のみにしてやらないと使えない。などなど、「ちょっとこれはどうしよう」というような不具合が続出した。それを何とか運用で乗り切ろうといろいろアプリを試しているうちについにシステムのようすがおかしくなった。しかたないと、諦めて初期化してみると、「あれ?」と意外だったんが、上記の問題がほとんど解決したことだ。いまでは再接続もちゃんとしてくれるし、設定を切り替えなくともテザリングもできる。ただ、なぜ初期化する必要があったのかを含め、原因がさっぱりわからない。

と、いろいろ文句もあるのだけれど、やっぱり(比較的)新しい端末は使いやすい。旧式のXperiaではうまく運用できなかったFusion IP-Phoneの公式アプリもうまく使えるし、Googleの各種サービスも使いやすくなった(ただナビだけは古いもののほうが使い慣れていてよかったのだけれど)。そしておそらくアプリの運用がうまくいっているせいだろうけれど、1GBある月間の通信量のほとんどを使い残して6月は終わった。IIJのときは月間500MBでかつかつだったことを思えば、かなりの余裕だ。

それなりに利用価値が高いから当分これでいってみることにしよう。とにもかくにも、税金入れても月額千円ちょっとなのだから。

posted by 松本 at 15:48| Comment(0) | TrackBack(0) | 総記・雑記 | このブログの読者になる | 更新情報をチェックする

2014年06月26日

Openboxでゲーム用のランチャーを作成した

以前、Openboxログイン時間制限用のスクリプトを書いたという記事で息子がゲーム(Minetest)をするのに時間制限を加えるためのスクリプトを作成した件を書いた。ゲーム専用のアカウントを用意し、そこでスクリプトを自動起動させ、1週間の制限時間を超えたら強制的にログアウトするように設定したものだ。これに関しては、毎週月曜日に制限がリセットされるようにしていたのを毎週日曜にするよう息子から要望があった程度で、まあ順調に作動している。
さて、このスクリプト作成の伏線は「MinecraftもどきのMinetestに息子がはまった」という件だったわけだが、その後、Mincraftが課金型ゲームだというのは私の誤解だったことがわかり、また、当初に支払うアカウント作成のための料金約3000円を息子が自分で負担することを約束したので、Minecraftで遊ばせることを承認した。その際、Minetestはどうするかと尋ねたら、そっちはそっちで引続き遊びたいという。別々に制限をかけたらややこしいので、まとめて制限をかけたい。それならば、以前、Minetest専用に作成したアカウントでMinecraftも遊ばせるようにすればいい。

Minetestを専用アカウントで使用するようにしたのは、もともとはUbuntuの場合、英語環境のアカウントでなければUIが崩れてしまうというバグがMinetestにあったからだ。それを逆手にとったとも言える。通常のアカウントから起動したのでは遊べないから、専用アカウントに行かねばならず、そこで時間制限を受けるという算段だ。Minecraftに関しては、以前はLinux環境へのインストールにそれなりの手数が必要だったようだが、いまではリポジトリにMinecraftを自動でインストールしてくれるプログラムが用意されている。だからソフトウェアセンターなりパッケージマネージャなりからクリックひとつでインストールできるのだが、そうやってしまうと全てのアカウントからMinecraftが遊べてしまう。

それでは困るので、ここは手作業でMinecraftの公式サイトからLinux用のパッケージをダウンロードし、それをスクリプトから起動してやることにした。こうすれば、それ相応の知識がない限り、他のアカウントからはMinecraftが起動できない。どうしても専用アカウントに縛られるから、そこで時間制限を逃れられなくなるはずだ。

そういう方針を立てたとき、ここで必要になるのはOpenboxで起動するように設定してある専用アカウントにランチャーを用意してやることだと気がついた。専用アカウントにログインすると、自動でランチャーが立ち上がる。そのランチャーからはMinetestかMinecraftが選べるようになっていて、どちらかを起動して遊ぶ。それ以外の起動方法はわからなくしておけば、息子はこのルートをとらざるを得ないから、制限時間以上には遊べないだろう。

ということで適当なランチャーを探したのだけれど、たかがゲーム2つを起動するためだけの最小限の機能のランチャーなんて、かえって見つからない。それならばPythonで書いてやろうと、また素人のプログラミングをやったのが下記のスクリプトだ。
#!/usr/bin/python
# coding: UTF-8

import os;
import ConfigParser
from Tkinter import *

if __name__ == "__main__":
    inifile = ConfigParser.SafeConfigParser()
    inifile.read("/home/~/config.ini")
totaltime = int(inifile.get("int","totaltime"))

if totaltime > 299:
    elapsedtime = "今週の残り時間はありません。"
else:
    elapsedtime = str(totaltime/60)+"時間"+str(totaltime -
int(totaltime/60)*60)+"分過ぎました。残り" + str(4-totaltime/60)+"時間"+str(59 -
(totaltime - int(totaltime/60)*60))+"分です。"

def craft():
    os.system( "bash /home/~/mclaunch.sh")

def mtest():
    os.system( "minetest")


class MyApp:
  def __init__(self, parent):
    self.myParent = parent
    self.myContainer1 = Frame(parent)
    self.myContainer1.pack()

    button_name = "MineCraft"
    self.button1 = Button(self.myContainer1,
      command=self.buttonHandler(button_name, 1, "MineCraft"))

    self.button1.configure(text=button_name, padx=80, pady=20, command=craft)
    self.button1.pack(side=LEFT,padx=50, pady=50)

    button_name = "MineTest"
    self.button2 = Button(self.myContainer1,
      command=self.buttonHandler(button_name, 2, "MineTest"))

    self.button2.configure(text=button_name, padx=80, pady=20, command=mtest)
    self.button2.pack(side=LEFT,padx=50, pady=50)


  def buttonHandler(self, arg1, arg2, arg3):
         print ""

  def buttonHandler_a(self, event, arg1, arg2, arg3):
         print ""

root = Tk()
root.title(elapsedtime)
myapp = MyApp(root)
root.mainloop()
息子の要望で、残り時間が表示されるようにしておいたが、これは以前の制限スクリプトで用意したconfig.iniという初期設定ファイルを読み込むことで対応している。再読み込みはしていないので表示される残り時間はログイン時点でのものだが、それでも十分だろう。なお、例によって素人のプログラムなのでサンプルから取り込んだ際に不要になった行もいくつか残っている。その他にも恥ずかしい間違いは多々あると思うが、何にしても一応は動くので、公開しておく。なお、スクリプト中のmclaunch.shというのはMincraft起動用のスクリプトである。

ゲームを制限したら、今度はYouTubeにはまりだした。一応こちらも制限はかけているのだけれど、なかなかうまく運用できていない。その話はまた別の機会に書くことにしよう。
posted by 松本 at 12:24| Comment(0) | TrackBack(0) | Ubuntuのアプリケーション | このブログの読者になる | 更新情報をチェックする

2014年05月27日

CUPSのアップデートでプリンタが使えなくなった

今回はじめて起こったわけではないのだが、というか、最近になって何度か起こったようなので気になって書くのだが、ソフトウェアアップデートでCUPSのアップデートがあったあとにプリンタが使えなくなっていた。対処方法は非常にベーシックなもので、設定からプリンタに行っていったんプリンタを削除し、改めてインストールすればOK。このとき接続先の選択を間違えて最初うまく行かなかったが、私のところの環境どおりにUSB接続を選択したら問題なかった。
CUPSはCommon UNIX Printing System、つまりプリントサーバーなので、そのアップデートで一時的な不具合が発生するというのは理解できる。ただ、今回の件は、たまたまその直前のアップデートにCUPSが含まれていたことを覚えていたからあっさり片付いたけれど、覚えていなかったらもうちょっと解決に時間がかかったかもしれない。

Ubunutのアップデートはほとんど自動化されていてアップデートマネージャのダイアログが出たら「はい」とクリックすれば済むようになっている。そこでいきおいいい加減になるのだけれど、やっぱり何が更新され何が新たにインストールされるのかのチェックは怠ってはならないと改めて思い知らされた。それと、できれば履歴が簡単に把握できるSynapticパッケージマネージャを使ったほうが安全かもしれないとも思った。楽ができるようになったとはいえ、やっぱりこれはLinuxなんだから。
posted by 松本 at 19:57| Comment(0) | TrackBack(0) | Ubuntuでの失敗・トラブル | このブログの読者になる | 更新情報をチェックする

2014年05月14日

MicrosoftのOfficeがWineで使えなくなった

Ubuntuを使っている以上、基本的にオフィス系のソフトはLibre Officeということになる。これはこれで何の不足もないし、使い慣れてしまえばそれなりに便利なのだが、不便を感じないことが全くないのかというとそうでもない。それは主に一般に普及しているMicrosoftのOfficeとの互換性の問題だ。どうしてもレイアウトは崩れるし、特にOffice 2007以降もうすっかり標準として定着した.docx形式の互換性がよろしくない。ある程度はだいじょうぶなのだけれど、たとえばコメントの再現性とか図形の処理なんかで情報が失われる場合がけっこうあったりして痛い。
まあ、そのあたりも誤魔化し方をある程度は会得してきたわけだけれど、やっぱり本来のMS Officeでどう見えるのか、確認する手段は必要だ。ずいぶん前には仮想環境のXP上の古いオフィスを使ったし、Microsoftが無償配布していたビューワーも利用できた。ただし、このビューワーはずいぶん古いもので、最近のファイルは互換性の問題がある。困ったなあと思っていたら、MS Office 2010の試用版がビューワーとして利用できることがわかった。これはMicrosoft自身が認めていた使用法なのだが、試用版の1ヶ月の使用期限が過ぎたものは、文書の保存、編集などはできないが、閲覧は可能になっている。これをビューワーとして使用できると説明されていた。そして、このMS Officeは、Ubuntu上でWineを利用して走らせることができる。フォントさえ共通させておけばレイアウトもWindows上での表示とほぼ変わらない。これは便利だ。
ということで、ここ数年はUbuntu上でOffice 2010の試用版をビューワーとして使用してきたのだけれど、これができなくなってしまった。

というのは、Office 2013の登場に伴って、MicrosoftがOffice 2010の試用版の配布をやめてしまったからだ。これは当然のことだろう。それならばOffice 2013の試用版を使えばいいかというと、これがWine上では走らない。インストーラーがネットワーク利用になっていることが要因だと思うのだが、インストールさえできない。
これには困ってしまった。もちろん、デュアルブーになっているWindowsの方に入ればOffice 2013を起動することはできるのだが、Ubuntu上で気軽にチェックすることができなくなってしまった。
解決方法としては、Office 2010の正式版を入手できるうちに入手することだろうか。インストールできることはわかっているし、正式版を購入したらどこにインストールしようが遠慮することもないだろう。しかし、普段使うわけでもなく、ただ確認用にたまに起動するだけのソフトにお金をかけるのも悔しい。
とりあえずはOffice Onlineでしのぐのだけれど、これはこれで使い勝手がよくないし、レイアウトの再現性も「本当に大丈夫なの?」と思ってしまう(確認する手段がいまはないのでなんともいえないのだけれど)。こんなことなら、Office 2010の試用版のインストーラーをどこかに保存しておけばよかったとも思うが、やっぱり配布元が配布をやめたようなソフトは使うべきはないだろうし。
posted by 松本 at 00:21| Comment(0) | TrackBack(0) | Ubuntuでの失敗・トラブル | このブログの読者になる | 更新情報をチェックする

2014年04月21日

Openboxログイン時間制限用のスクリプトを書いた

前回「MinecraftもどきのMinetestに息子がはまった」と書いたが、ゲームにはまって抑制が効かなくなるのも困るので、親子の間で時間制限をかけることに合意した。1日30分とか2日で1時間とか、いや1日1時間はしたいとか、いろいろ攻防があった挙句(もともとテレビは見ないし、Wiiもやめるという前提で)、1週間に5時間ということで落ち着いた。ただし、これをいちいち手作業で管理していたら大変だから、1週間に5時間しかつかえないように設定したい。Mintestそのものにはそういう機能はないので、外部からペアレンタルコントロールをかける必要がある。これはシステムのレベルでも行えないことはないのかもしれないけれど、たまたま他の必要からMintest専用アカウントをつくったので、このアカウントへのログイン時間を制限すればいい。となると、以前作成した「lxdeでペアレンタルコントロール」のスクリプトを改造すればいいのではないかと考えた。
けれど、考えはじめてみると、1週間の時間制限というのは案外難しい。Pythonで書くとして、経過時間を外部ファイルに書き出して記録するのが実際的だなと考えた。そして、週のはじめにその経過時間をゼロにリセットする。曜日を整数として取得すると月曜日が0だから、これを利用すればいいんだろうと考えた。
けれど、よく考えたら、必ずしも毎日アカウントにログインするとは限らない。「月曜日ごとにリセットする」というスクリプトでは、たとえば初回のログインが水曜日だったら数値はリセットされない。最終のログインが週末とも限らないから、「前回のログイン曜日よりも小さなログイン曜日になったらリセット」というのも使えない。全く使わない週も可能性としてはあるわけで、そこまで考えたら、やっぱり日付を取得してきっちりと週のはじめを読んでやらないといけない。
ということで、次のようなスクリプトを書いた。例によって基本がわかっていない私は、あちこちから拾ってきたサンプルのつぎはぎである。公表するのも恥ずかしいようなものだが、私はプログラマではないので、プログラマにとって恥ずかしいようなことでも恥と思わずにできる。素人の強みだ。


#!/usr/bin/python
# coding: UTF-8

import datetime
from datetime import date
import time
import ConfigParser
import os;
import locale
import pynotify


if __name__ == "__main__":

    inifile = ConfigParser.SafeConfigParser()
    inifile.read("./config.ini")

lastdate = inifile.get("int","lastdate")
totaltime = int(inifile.get("int","totaltime"))

lastyear = int(lastdate[0:4])
lastmonth = int(lastdate[5:7])
lastday = int(lastdate[8:10])
d = datetime.date.today()
d0 = date(lastyear, lastmonth, lastday)
days = d - d0
dayow = d0.weekday() - d.weekday()

if int(days.days) > 6:
        totaltime = 0
else:
        if dayow >0:
                totaltime = 0
        else:
                totaltime = totaltime

while totaltime < 360:
        time.sleep(60)
        totaltime = totaltime +1
        st = """[int]"""+ "\n" +"""lastdate        =        """+ str(d) + "\n" + """totaltime        =        """ + str(totaltime)
        f = open('config.ini', 'w')
        f.write(st)
        f.close()

pynotify.init( "1週間の制限5時間です" )
n = pynotify.Notification("制限時間になりました。", "また来週!", "dialog-warning")
n.show()

time.sleep(60)
os.system( "openbox --exit") 


別にconfig.iniという初期設定ファイルを作成しておく。内容は、

[int]
lastdate=2014-04-16
totaltime=0

という感じだ。これをOpenbox環境のアカウントでautostartに仕込んでおく。ただし、ここで重要なのは、スクリプト中に指定してある初期設定ファイルの場所を絶対パスに書き換えておくこと。あるいはcdでディレクトリを変更しておけばいいのかもしれないが、相対パスだと自動起動がうまく働かなかった。しばらく悩んでしまった。

1分毎に設定ファイルを書き換えるスクリプトなので、うるさいといえばうるさいのだけれど、ゲームの終了時のイベントを読んで設定ファイルを記録するスクリプトを書けなかったので、しかたない。これでとりあえずは十分に役に立っているようだ。現在のところこのスクリプトでわかるように制限時間を経過すると1分だけ時間猶予を与えてから強制ログアウトするようになっている。なんだか息子はこれを逆手に取って制限時間後にログインし、1分だけ遊ぶというおかしなことをやっているようだから、ここは10秒ぐらいに短縮したほうがいいのかもしれない。

「どうやって制限しているの?」と尋ねられたので、上記のような大まかな構造だけは説明した。息子はその設定ファイルがどこにあるのかを探し出したいらしいが(もちろん書き換えたいのだ)、それは秘密にしてある。もしもそれを探しだし、書き換えるぐらいの力量がついたら、ペアレンタルコントロールなんか不要になるんだろう。いつかそんな日が来ることを願っている。
posted by 松本 at 10:56| Comment(0) | TrackBack(0) | Ubuntuのアプリケーション | このブログの読者になる | 更新情報をチェックする

2014年04月18日

MinecraftもどきのMinetestに息子がはまった

小学生とパソコンをどうつき合わせるかというのはなかなか悩ましい問題だ。近頃のパワフルなパソコン、特にオープンでたいていのアプリケーションがそろってしまうUbuntuなんかを使ったら、たいていのことができる。創造力を育むには絶大な力をもったツールだ。だから、そういう世界を味わってほしいし、そのためには早くからパソコンを与えたい。けれど、いったん与えたら、それは動画再生装置かゲームマシンにしかならない。こちらが期待したような使い方を決してしてくれないのが小学生というものだ。

それがわかっていたから、最初はブラウザを隠し、ワープロぐらいしかつかえないようにしたパソコンを与えていた。そのうちにアニメーションに興味をもつようになり、アニメ制作ソフトや画像制作ソフトをインストールした。さらに初歩のプログラミング用の環境も整えたが、これはさすがに手に余ったようだ。適切な指導者がいればそうでもないのだろうが、私にはそういったことはできないのだし。

そうやってそれなりにコントロールをかけてきたつもりではあるのだけれど、そのうちに表面から消えているブラウザの起動のしかたを覚えてしまった。しかたないのでペアレンタルコントロールをかけて検索ぐらいはできるようにしていたのだけれど、そうなると情報がどんどん入ってくる。今年にはいって、「マインクラフトをやりたい」と言いはじめた。

それがゲームだというぐらいの知識は私にもある。調べてみたらLinux環境でもできるようだし、classicであれば対戦のようなこともなく、ひたすらものを作っていくだけのことらしいので、それはそれでありかなとも思った。その後いろいろあって、結局、ゲーム機(Wii)を卒業するのであれば、その代わりにMinecraftをやってもいいということにした。ただし、週5時間以内という制限をかけるという条件だ。

さて、このMinecraftだが、基本的には課金型のゲームのようだ。ただ、自分でサーバーを立てるつもりならその必要もないようすではある(ちがうかもしれない)。小学生というビギナーがネットのトラブルにまきこまれないためにも、できたらここはパブリックなサイトではなく、ローカルでちまちまとやりたい。サーバーを立てて稼働させるというのがよさそうだと考えた。

とはいえ、私はプログラマではないサーバー構築は以前書いたようにBitNamiを使って試みたことはあるが、やっぱりあやふやだ。研究するにも時間がかかるが、あいにくとここのところ少し忙しい。もうちょっと手軽にできないかと考えていたら、MinecraftもどきのMinetestというゲームに行き当たった。これならUbuntuのリポジトリにも入っているから、数クリックで手軽に導入できる。Minecraftよりもシステム要件は低いし、とりあえずローカルではじめられるし、中身はだいたいMinecraftだし、ま、これでもいいかという気になった。試しに息子にやらせてみたら、気に入ってくれた。ただし、やっぱり本物のMinecraftの方がいいようで、これで数カ月の猶予をくれる、というだけの話のようだけれど。

ただ、ちょっと現行版のMinetestには問題があって、日本語環境ではメニューがおかしなことになってしまう。いったん使い方がわかってしまえばさほど問題ではないのかもしれないが、試しに動かしてみた私にはさっぱりだった。これはシステム環境を英語にすれば問題がなくなる。しかし、小学生の普段使いの環境は、やっぱり日本語のほうがいいだろう。

ここで思いついた。どうせ使用時間の制限をかけなければいけない。だったら、Minetest専用のアカウントをつくり、そこにログインする時間に対して制限をかければいい。個別のアプリケーションの稼働時間のログをとってそれに対して制限をかけるのはちょっと私の手に余るなあと思っていたのだけれど、特定のアカウントに対する制限ならPythonのスクリプトで書けそうだ。

ということで、英語環境の専用アカウントを用意し、ここにはOpenBoxでログインさせることにした。Minetest実行以上の機能は不要だから。そしてどんなスクリプトを書いたのか、それは次回にとっておこう。あまり長い記事を書くのも辛いので。
posted by 松本 at 13:44| Comment(2) | TrackBack(0) | 総記・雑記 | このブログの読者になる | 更新情報をチェックする

2014年03月24日

Trusty Tahr(Ubuntu 14.04)の印象

LTSに甘えて、というわけでもないのだけれど、メインマシンのUbuntuを12.04からついにアップデートせずに最後まできた。元のASUS UL20Aを購入したのが2010年の年の暮れ。インストールしたのはMaverick Meerkatだった。確か次のNattyにアップグレードし、Oneiricはパスして(ただし出先のマシンでは愛用した)、LTSであるPrecise Pangolinをインストールしたのが2年近く前、そこからアップグレードをサボり続けてきた。もちろん、最新の動向に完全に無関心だったわけではなく、息子に与えたサブマシンや出先で使ったよそのマシンにはそれぞれの時点での最新のUbuntuを導入してきた。ただ、その際の印象がPreciseと大差ない感じだったので、あえて面倒なアップグレードを避けてきたというのが正直なところだ。アップグレードのメリットを感じなかったと言ってもいいかもしれない。

とはいいながら、メインマシンを新しいAspire V5に替えてインストールするUbuntuに古いものを選ぶ手はない。そしてどうせインストールするのなら、もう1ヶ月もすればリリースになる予定なのだからLTSの14.04(Trusty Tahr)を、少々気が早いけれど、プレリリースのDaily Buildで導入しよう、というのが自然な流れだったわけだ。

さらに、旧メインマシンのASUS UL20AにもTrustyを導入した。これは息子に譲るつもりだから、やっぱり最新のものにアップグレードしておきたい。手順としてはインストール用のUSBを作成し、そのインストーラーからアップデートする方法をとった。この方法のほうがアップデートマネージャでアップグレードするより早いようだ。ただ、過去にインストールしたアプリケーションはすべて失われたようなので、これは一からインストールする必要があるようだ。各種設定は保存されていた。

ということで2台のマシンがTrustyになったので、その印象。ひとこと「どこが変わったの?」

Ubuntuがすっかり安定したということなのだろう。あるいは、旧バージョンもアップデートで最新版に近い対応がとられるようになったことが関係しているのかもしれない。細かなUIのちがいなどあることはある。デフォルトも少し以前と変更されているような気がする。けれど、大きな変化は感じられない。以前よりどこか洗練された感覚はある。だが、どこがどうとはっきりわからない。ともかくも、うまく動く。使っていて不具合はない。それで十分、というか、それ以上でも以下でもない。

強いていうなら、インプットメソッドを管理するiBusの仕様が少し変わったのかもしれない。あるいはプレリリースのバグなのかもしれないが、日本語入力以外のインプットメソッドにするとキーボード配列が変わってしまう。以前はアプリケーションごとに設定されていた入力メソッドの切換が(そうするオプションはあるのに)、システム全体で共通してしまっている。これは以前のものに慣れていた身としてはちょっとやりにくい。

あと、これはTrustyの問題ではないのだけれど、半年ぐらい前からGoogleのChromeの動作がやたらと重くなって困っている。これが解消するかと思ったら、まるで変わらない。ちょっとガッカリだ。以前はChromeはとにかく速い、というイメージがあったのだけれど、ここのところやたらとひっかかる。これはひょっとしたらChromeの問題でさえなく、訪問先のサイトの問題であるのかもしれない。広告表示のためにやたらと外部サイトへのアクセスが増えているのが原因のような気がするのは気のせいだろうか。広告のない個人運営のサイトなどで引っかかることがほとんどないので、そんな気がするのだけれど。

デフォルトでマシンに入っていたWindows 8を見ると、MicrosoftはOSを新たな方向に進化させようとしているようだ。Ubuntuはその数年前からUnityで新たな方向への進化を遂げたのだけれど、これはMSの採用した方向性と全くちがう。スタートラインではよく似ていた両者がだんだんと離れていくのをみるのも感慨深いものがある。私はすっかりUnityになじんでしまった。便利だ。とにもかくにも。
posted by 松本 at 11:28| Comment(0) | TrackBack(0) | 総記・雑記 | このブログの読者になる | 更新情報をチェックする

2014年02月27日

新しいマシン、新しいUbuntu

事情があって新しいマシンが必要になり、愛用のASUS UL20Aとほぼ同じ大きさ・形のAcer V5 131-Mを入手した。で、いろいろ細かいことはあるのだけれど、とにもかくにもUbuntuをインストールした。ただ、このインストールが実に奇妙な方法でやってしまったので、これは一例報告ものかなと。

普通、Windows 8の入った最近のPCはUEFIからブートするため、以前よりもデュアルブートでのインストールがやりにくくなっている。ただ、この方法は概ね確立されてきたようすで、あちこちにステップバイステップの方法が掲載されている。だから大丈夫だろうとタカを括って購入したわけだが、やってみるとどうもうまくいかない。セキュアブートもオフにしたし、起動ドライブの順番も変更したし、F12キーもアクティブにした。もちろんそれ以前にWindows側の高速起動をオフにすると、回復ディスクを用意するとか、ひと通りのことももちろんやった。だが、何度トライしてもUSBドライブに導入したライブイメージからの起動ができない。そもそも起動ドライブとして認識してくれないのだ。
これは、ひょっとしたらUSBメモリの仕様の問題かもしれない。2本ほど試してみたけれど、両方とも同じような安物だから。あるいは、なにか単純なミスなのだろうか。あるいはまだ正式リリースされていない14.04のイメージを使ったからだろうか。ともかくも、USB起動ができない。

ただし、UEFIをオフにしてレガシーBIOSにしてやると、簡単に起動する。インストールだってできる。ただし、インストールしても、もともとMBRの存在しないところにGRUBがインストールできないせいなのか、BIOSからUbuntuが起動できない。起動ドライブが見つかりませんというメッセージでさっぱりダメ。

そもそも、デュアルブートにしようと思ったら、UEFIからUbuntuのライブ起動を行わなければならないらしい。UEFIから起動してインストールしてやればそのUbuntuはUEFIから立ち上がるようになる。つまりWindowsとのデュアルブートができる。BIOSから起動してインストールしたら、BIOSからしか立ち上がらない。よってUEFIは利用できず、デュアルブートもできない、というのが、私がWebの情報から読み取ったところだ。

さて、困った。困ったけれど、せっかく買ったPCを使わないわけにいかない。そして、使うならUbuntuだ。だったらもう、Windowsは諦めるかとも思った。どうせ年に数回しか起動しないのだから、どうしても必要になれば古いマシンを引っ張り出せばいい。実用的にはなんの問題もない。けれど悔しい。

それならば、WindowはUEFIで起動することにし、UbuntuはBIOSから起動することにして、起動時にF2でUEFI(BIOS)設定を呼び出して切り替えることでデュアルブートができないだろうかと考えた。常識的に考えたら無理だ。UEFIとGRUBがコンフリクトするだろう。だいたい、GRUBはディスクのトップにもってこなければいけないのに、ディスクのトップはUEFI関連の起動用パーティションで予約され、変更ができない。

しかし、「最悪Windowsは捨てればいいや」と思ってるから、気楽なもの。まず、Ubuntuのライブ起動で立ち上げて、Gpartedを起動する。これで、本来は変更してはならないWindowsのインストールされた領域を縮小し(警告が出るのは無視)、さらにはその領域の前の部分を後ろにずらして、ディスクの前の方、UEFIが使うらしい領域のすぐ後ろに空き領域をつくってやる。これをBIOS用の予約領域に指定してやり、UbuntuをWindows領域を削って作ったパーティションにインストール。そして、再起動すると、見事にUbuntuが立ち上がった。そして再起同時にF2でBIOSをUEFIに切り替えると、無事にWindows 8が立ち上がった。

こんな変則的なことをやってる人は、まずいないだろうなと思う。そして、くれぐれも、真似はしないようにと書いておく。Windowsを捨てても惜しくないと思ったからこそできたことで、ちょっとの環境の違い、ちょっとの手順の違いで、たぶんWindowsとは永遠におさらばという結果になる方法だと思うから。

そうまでしてUbuntuを使いたいのかと言われれば、胸を張って「そうだ」と答えよう。すべての仕事がこれでできる。ごく最近も、奇跡のように短期間で1冊の本をUbuntuで編集できた。ほんと、これのおかげで生きていけるんだから。
posted by 松本 at 23:43| Comment(2) | TrackBack(0) | 総記・雑記 | このブログの読者になる | 更新情報をチェックする

2013年10月12日

タッチパッドの有効・無効を切り替えるツール

息子に使わせている古いDellのInpiron mini 12の話なのだが、「タッチパッドに手が触れて文字が消える」と苦情がきた。実際、このマシンはタッチパッドが大きめで、それはそれで使いやすくもあるのだけれど、誤動作も多い。必要に応じてタッチパッドの有効・無効が切り替えられれば便利だろうとは思う。
で、これはUbuntuの通常ならシステム設定のマウスの設定でごく簡単に行える。ただし、このマシンはスペックの関係でLXDEを使っている。そして、LXDE上ではタッチパッドの設定を変更する手軽なGUIのツールが見つからない。
もちろん方法がないわけではなく、Synclientというコマンドで簡単に無効化することができる。とはいえ、小学生の子どもにいちいち端末を開いて設定させるのも考えものだ。
そこで、PythonでGUIツールを書いてみることにした。Synclientの使い方はこちらにあるので、そこに記載された
$ synclient TouchpadOff=1
をボタンを押すことで実行するようにすればいい。有効にする場合はこの1を0にすればいいから、そちらもボタンをつくっておく。GUIの設計なんて複雑なことはできないから、ここはそこらに転がっていたサンプルコードを流用。こんな具合になった。
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import pygtk
import gtk
import os;

class Application():
 
    def __init__(self):
        self.window = gtk.Window()
        self.window.set_title("タッチパッド設定")
 
        self.create_widgets()
        self.connect_signals()
 
        self.window.show_all()
        gtk.main()
 
    def create_widgets(self):
        self.vbox = gtk.VBox(spacing=20)
 
        self.hbox_1 = gtk.HBox(spacing=20)
        self.button_1 = gtk.Button("タッチパッドを有効にする")
        self.hbox_1.pack_start(self.button_1)
        self.button_2 = gtk.Button("タッチパッドを無効にする")
        self.hbox_1.pack_start(self.button_2)
 
        self.hbox_2 = gtk.HBox(spacing=10)
        self.button_exit = gtk.Button("終了")
        self.hbox_2.pack_start(self.button_exit)
 
        self.vbox.pack_start(self.hbox_1)
        self.vbox.pack_start(self.hbox_2)
 
        self.window.add(self.vbox)
 
    def connect_signals(self):
        self.button_1.connect("clicked", self.callback_1)
        self.button_2.connect("clicked", self.callback_2)
        self.button_exit.connect("clicked", self.callback_exit)
 
    def callback_1(self, widget, callback_data=None):
        os.system( "synclient TouchpadOff=0" )
 
    def callback_2(self, widget, callback_data=None):
        os.system( "synclient TouchpadOff=1" )

    def callback_exit(self, widget, callback_data=None):
        gtk.main_quit()
 
if __name__ == "__main__":
    app = Application()
これにたとえばtouchpad_config.pyのような名前をつけてやり、ダブルクリックで動作するようにデスクトップファイルを設定してやる。たとえばこんな感じ。
[Desktop Entry]
Encoding=UTF-8
Name=タッチパッド設定
Comment=configure touchpad
Exec=python /(パス)/touchpad_config.py
Icon=
Terminal=false
Type=Application
Categories=
これを息子のデスクトップに置いていた。便利に使ってくれているようだ。
posted by 松本 at 19:46| Comment(0) | TrackBack(0) | Ubuntuのアプリケーション | このブログの読者になる | 更新情報をチェックする

2013年10月11日

PulseAudioを削除した

小学生の息子に与えたDellのInspiron mini 12なのだが、動画を再生したときに音がひどいのが気になっていた。YouTubeを見たい息子からも苦情がくる。もともとスペックの貧弱なネットブックだし、「Poulsboの呪い」というやつでビデオのドライバが十分ではなく、動画は決してなめらかとは言いがたい。音がひどいのもその関係だろうと思っていた。
ただ、ハードウェア的な故障ではない。たとえばスピーカーのコーンが破れているのなら、イヤホンで聞いたときはまともな音になるはずだ。以前はそれなりに音も出ていたのだから、やはりこれはOSのアップグレードにともなうソフトウェア的なトラブルだろうとは見当をつけた。ならば、どうにかなるのではないか。

サウンド設定の問題、ドライバの問題、カーネルのレイテンシの問題など、いろいろ情報を探してみたのだが、どうもピッタリとくるものがない。諦めかけたところで、PulseAudioによる遅延を指摘しているブログ記事を見つけた。実はこれも疑ってはいたのだけれど、対処方法がわからなかった。ところが、どうやらPulseAudioは削除してしまえばいいらしい。

もちろん不要なプログラムがデフォルトで含まれているわけはないので、PulseAudioを削除することによるマイナスはあるようだ。ただ、少なくともYouTubeの動画をブラウザで再生する分には、PulseAudioを経由しなくても音は出る。ということで、パッケージマネージャを開いてPulseAudioを削除してやった。関連ファイルがいくつか同時に削除されるが気にしない。再起動すると、嬉しいことに以前よりも音がだいぶマシになった。

非力なマシンだからこその対応だが、こんなふうに工夫することで使い物になるのだから、やっぱりUbuntuはありがたい。改めて思った。
posted by 松本 at 08:23| Comment(0) | TrackBack(0) | Ubuntuでの失敗・トラブル | このブログの読者になる | 更新情報をチェックする

2013年10月07日

lxdeでペアレンタルコントロール

古いDellのInspiron 12にUbuntuを入れて数年前から息子に与えているのだが、小学生にあまりネットの世界をウロウロさせるのもどうかと思ってメーラーもブラウザも、もちろんその他のSNS系のアプリケーションも表面からは隠してあった。ちなみにこのInspiron12、13.04にアップグレードしてからはグラフィックの描画がつらくなってきたので、デスクトップ環境をLXDEで運用するようにしている。LXDEの場合、メニューバーからメニューを削除しておけば、一見したところどんなアプリも起動できない。それでは何もできないので、こちらが許可したアプリ、たとえばワープロだとかお絵かきソフトだとかはショートカットのアイコンをデスクトップに置いてある。これでだいたいはことが済む。Synfigなんてアニメのアプリも、本人の希望に応じて使えるようにした。ただ、Web関係だけは許可しなかった。

けれど、本人はもちろん、ネットでいろいろと情報を仕入れたい。ウチにはテレビがないので、友だちとのあいだで話題になるアニメ関係の情報とか、DVDを借りてきて観る映画の情報(特にハリー・ポッターだ)、あるいは友だちとやるゲームの関係の情報とかを検索したり、YouTubeで見たりしたいらしい。
こちらはそれは禁止しておきたいのだが、ある日、うっかり私が彼のパソコンで調べ物をしようとしたところを見られてしまった。もちろん私はブラウザを立ち上げるわけだが、その手順を秘密にしておきたいので、わざわざ端末を開いてFirefoxと入力して起動している。そこを一瞬見られたわけだ。すると彼は、端末にアプリケーション名を入れれば起動できるのだということを悟ってしまった。それでも私は、「やれるもんならやってみろ」と大きく構えていたが、ついにある日、Firefoxの正しいつづりを見つけてしまった。

こうなったら、放置するわけにはいかない。それまではパソコンは使いたいときに使えというかっこうで任せていたのだけれど、それは、ワープロで文章を書くとか画像ソフトで絵を書くとかは、小学生にとってそうそう根気の続く作業ではないからだ。放っておいても何時間もパソコンにかじりつく心配はない。ほんの30分もやったら飽きてしまう。ところが、Webの世界をぼんやり眺めていたら、いくらでも時間が過ぎる。いわゆるペアレンタルコントロールをすべきタイミングだ。

ペアレンタルコントロールは、大きく分けて2種類の対策を施せばいいだろう。1種類は有害サイトのフィルターリングで、これはFirefoxのアドオンを使えばいい。具体的にはFoxFilterというので間に合いそうだ。無償版はロックがかけられないのだけれど、英語を理解しない小学生に設定の変更は難しかろうから、しばらくのあいだのしのぎにはなる。

もう1種類は、PCそのものの使用時間を制限することだ。夜遅くまでパソコンにかじりつかれてはかなわないから、夜8時半にはシャットダウンしてほしい。学校が遠く朝早い関係で、できれば夜9時には床につかせたいからだ。これに関しては、Gnome Nannyというのがよさそうなのだが、あいにくなことにこれはGnome環境でなければ動かず、LXDEでは論外だし、仮にGnome環境に変更するにしても最新のUbuntuではバグが出て使い物にならないらしい(もちろんアップデートにより動くようになるのは遠くないだろうが)。ともかくも、これは諦めるべきだ。

ただ、このGnome Nanny、Linux-PAMというモジュールを操作するものらしく、したがってLinux-PAMを直接設定してやればパソコンの使用可能時間をコントロールすることができそうだとわかった(このあたりとか)。ただ、けっこう高度な設定らしく、何度かトライしたけれど失敗。どこがどうなっているのかよく理解できないのにあまり深追いしても傷を負いそうなのでいいかげんなところで諦める。

ということで困ってしまったのだが、調べていると同じような悩みを解決するためにシェルスクリプトを書いたという記事があった。なるほど、一定時間を経過したらスクリプトで強制的にログアウトさせてやればいいわけだ。つまり、
#!user/bin/bash
sleep 33m
killall -9 lxsession
というスクリプトをたとえばlogout.shというような名前で保存し、LXDEなのでLXDEの設定のAutostartフォルダ内に
[Desktop Entry]
Encoding=UTF-8
Name=Auto Log Off
Comment = Will automatically log individual off after a set period of time
Exec=bash (パス)/logout.sh
Terminal=true
というような内容でデスクトップファイルをつくっておく。すると、ログイン時に「33分後にログアウトする」というスクリプトが自動スタートするわけで、つまり1回のログインで33分までしか使用ができないという制限になる。

ただし、いきなりログアウトするとデータが失われる可能性があるので、やはり警告は必要だろう。警告も同じシェルスクリプト内に書けばいいのだけれど、そこまでプログラミングに詳しくないので、以前ちょっとかじったPythonを使って、警告のスクリプトを次のように書いた。
#!/usr/bin/env python
# -*- coding:UTF-8 -*-

import pygtk
pygtk.require('2.0')
import gtk
import datetime
import time

time.sleep(1800)

d = datetime.datetime.today()

class HelloWorld:
    def __init__(self):
        self.window = gtk.Window()
        self.window.set_title('時間です!')
        self.window.connect('destroy_event', self.end_application)
        self.window.connect('delete_event', self.end_application)

        self.label_show = gtk.Label()
        self.label_show.set_markup('<span size="24000">\n\n<b>きみがコンピュータを使いはじめて30分がたちました。\nいったん休憩してください。\n3分後に自動的にシャットダウンするので、\nすべてのファイルを保存してください。\nわかったら、「わかりました」ボタンを\nクリックしてください。\n\n</b></span>')

        self.button_hw = gtk.Button()
        self.button_hw.set_label('もうちょっと使いたい')
        self.button_hw.connect('clicked', self.set_hw_txt)

        self.button_gn = gtk.Button()
        self.button_gn.set_label('いま何時?')
        self.button_gn.connect('clicked', self.set_gn_txt)

        self.button_quit = gtk.Button()
        self.button_quit.set_label('わかりました')
        self.button_quit.connect('clicked', self.end_application)

        self.vbox = gtk.VBox()
        self.vbox.add(self.label_show)
        self.vbox.add(self.button_hw)
        self.vbox.add(self.button_gn)
        self.vbox.add(self.button_quit)

        self.window.add(self.vbox)

        self.window.show_all()

    def set_hw_txt(self, widget, data=None):
        self.label_show.set_markup("\n\n<big><b>いったんパソコンを終了して休憩してください。\nそれからもう一度起動すれば使えますよ。</b></big>\n\n\n\n\n")

    def set_gn_txt(self, widget, data=None):
        self.label_show.set_markup("\n\n<big><b>時計を見てください!\nただちにコンピュータをシャットダウンしてください。</b></big>\n\n\n\n\n")

    def end_application(self, widget, data=None):
        gtk.main_quit()
        return False

def main():
    hw = HelloWorld()
    gtk.main()

if __name__ == '__main__':
    main()
このPythonスクリプトも、やはり同じようにAutostartにデスクトップファイルをつくって自動起動させる。そうすると、強制ログアウトになる3分前に警告メッセージが出るという寸法だ。なお、変なダイアログがいっぱいあるのは、コードをもらってきた先のサンプルに合わせなければいけなかったからで、このあたり、Pythonのことを何も理解していないのがバレバレだろう。

とはいえ、これでは再ログインすればまた33分使えてしまう。最大の課題は夜8時半以降は使わせないことだから、夜8時以降はログインできないようにしなければならない。これもやはりPythonのスクリプトで制御する。つまり、
#!/usr/bin/python
# coding: UTF-8

import time
import os;
import datetime
import locale
import pynotify

d = datetime.datetime.today()

t= d.hour
h = float(t)
if h > 19 :
pynotify.init( "午後8時を過ぎています" )
n = pynotify.Notification("午後8時を過ぎています", "パソコンをすぐにシャットダウンしてください。", "dialog-warning")
n.show()

time.sleep(10)
os.system( "killall -9 lxsession" ) 

というスクリプトをたとえばtimeup.pyとかいうファイル名で保存しておき、それをやはりAutostartでログイン時に起動するようにしておく。すると、datetime関数で時刻を取得し、それが19時より大きい(つまり20時以降)であれば警告を出して10秒後にログアウトするしくみだ。実際、これでやってみると20時以降のログインはあっさりと弾かれる。24時を過ぎるとログインできてしまうのだけれど、さすがに小学生、そんな時間まで起きていないので、これはこれでいいだろう。

なんとも始末のわるいことに自動起動のスクリプトを3つも使ってしまっている。もちろん少しでもプログラミングのわかっている人なら、これを1つにまとめることなど造作もないだろう。それはそう思うのだけれど、とりあえず素人としては、用が足りれば十分。これでしばらくしのげそうだ。
posted by 松本 at 00:13| Comment(0) | TrackBack(0) | Ubuntuのアプリケーション | このブログの読者になる | 更新情報をチェックする

2013年07月17日

synfig studioでアニメ制作

しばらくエントリを書かなかったのは、Ubuntuを使わなくなったのではなく、新しいことを試す時間がなかったからだ。この春からメインの仕事に新たな分野が加わったのだけれど、これがなかなか手強く、時間をとられている。相変わらず文書をつくったり印刷物をつくったりと、Ubuntuの助けなければやっていけない毎日だけれど、それはこれまで積み上げてきたものでだいたい片付く。新たな技術や新たなアプリを必要とするものではない。Ubuntuそのものも安定してきていて、困ることもあまりない。したがって、ネタもない。あったとしても書く時間がない。

そんな毎日なのだけれど、数日前、小学5年生の息子が「アニメを作りたい」と言ってきた。パソコンでできないかという。彼には以前の私の愛機Inspiron mini 12を渡してあるので、「かんたんなものならできるはずだ」と請け合った。

以前、やはり息子のリクエストでpencilを試している。このときは、お世辞にも成功とはいえなかった。だが、原理はそのときにだいたい把握している。他のアプリもあるかもしれない。

探してみると、synfig studioがよさそうだとわかった。さっそく自分のマシンで試してみると、そこそこわかりやすい。そこで、息子のInspiron mini 12にも入れてみることにした。

その前に、システムのアップデート。なにせあんまり使っていないマシンだから、大量にアップデートがある。その後再起動したら、起動しない。ここはpoulsboの呪いだ。すっかり忘れていたが、アップデートは慎重にしないとこういうことになる。調べてみたら12.10以降では改善しているようなので、いっそ新規インストールと考えた。ここからのことは長くなるので、余力があれば別エントリにしよう。

ともかくも、アップデートが終了し、synfigのインストール。13.04ではリポジトリにも入っているようだが、ここは公式サイトからダウンロードしたdebファイルを使用。リポジトリのものはなぜか動作しなかった。ひょっとしたらなにか勘違いかもしれないが。

さて、このsynfig、ベクターグラフィックをタイムラインにそって、いくつかのキーフレームで移動させれば、その間のコマを自動で補完してくれるというすぐれもの。ごく基本的な操作だけネットの情報を頼りに把握してそれを息子に伝えたら、1日で(ほんの4秒間だけだけれど)、「不死鳥が炎のあいだを舞う」動画を完成したのには驚いた。いまどき、小学生の方がカンが優れているのかもしれない。

Synfigは基本的にベクター画像を扱う。ビットマップも描けるようだが、ビットマップに関しては別途描画用のソフトで用意する方が賢いようだ。それをインポートして背景にし、その上でベクターを移動させるとうまくいく。息子がもう少し上達したら、技を盗んでやろうかと思う。


posted by 松本 at 13:04| Comment(0) | TrackBack(0) | Ubuntuのアプリケーション | このブログの読者になる | 更新情報をチェックする

2013年04月18日

LibreOfficeで数式を組む

先日から子ども向けの数学の問題をつくっているのだけれど、これが案外と厄介だ。一つ前のエントリでフォントの問題を書いたが、実はフォントだけではない。もともとワープロは数式を組むようにはできていないので、きれいに組み上げることがなかなかできない。たとえば分数なんかは、OpenOfficeそのままでやろうとおもったら図形文字を利用するしかないだろう。文字枠の中に数字を入れて2行にし、上の行の文字に下線を修飾しておいてからその行間を75%程度にすればそれっぽくなる。これを必要な場所に持っていけば、なんとかゴマカシがきく。けれど、しょせんごまかしでしかない。何箇所もそういうごまかしをしていると、手間がかかる上に仕上がりがだんだんと醜くなる。これはよろしくない。

同じワープロソフトでもMS Wordには数式のエディタがある。LibreOfficeにも数式エディタはあるのだけれど、これは出力がPDFで、ワープロに数式を埋め込むことができない。かといって数式エディタをワープロとして使うには、文字の書式指定の能力が不足する。いまひとつ、役に立たない。

なにかいい方法はないかとリポジトリを調べていたら、Abi Wordに数式のプラグインがあることがわかった。Abi WordはGnomeの公式ワープロソフトで、LibreOfficeに比べれば知名度はいまひとつだけれど、歴史のあるワープロだ。私もUbuntu移行直後には何度か試用した。ただ、LibreOffice(当時はOpenOffice)の完成度がどんどん上がってきたので、その後、特に注目もしないできた。だが、数式がきれいに組めるのなら、使ってもいいかもしれない。

インストールしてみると、たしかにメニューの「自動テキスト」のEquationから数式を組むことができる。ただ、このダイアログに出てくるボックスには、Latexのフォーマットで数式を流しこむ。つまり、数式の処理自体はLatexでやってしまい、それを画像としてワープロ上に表示してしまえということらしい。

ちなみに、Latexは私なんかが解説を加えるまでもない伝統的な組版に特化したマークアップ言語で、理科系の学生の中にはこれでひいひいいわされる人びとが毎年一定数発生する、というものらしい。Latexの基礎となるTexについて私が初めて聞いたのはもう20年も前になるから、相当古いものであるのはまちがいない。組版技術としては相当のものらしいが、ページレイアウトの利便性ではWYSIWYGのDTPソフトにはかなわず、理数系の学術分野以外では常にマイナーな位置に置かれてきた。だから私も、使ったことがない。
言い方を換えれば、Latexがわかるぐらいなら、最初からLatexで数学のテキストをつくっているわけで、わからないからワープロソフトで組もうとして苦労している、といっていい。とはいえ、いまさらLatexを勉強するのも鬱陶しい。マークアップ言語でタグをゴリゴリ書いていくのは、たとえそれがHTMLでも勘弁願いたい世界だ。ちょっとなあと思う。

けれど、試しにごくかんたんな数式をそのままボックスに入れてみると、思いの外きれいな結果が得られた。ちょっと複雑なものに関しては特殊な記法があるようだが、これはWebを検索すればすぐに出てくる。やってみると、必要な分はどうにかなりそうだ。

ただし、Abi Wordは、やっぱりワープロとしてはLibreOfficeにかなわない。どうかなわないかというと、インライン変換ができない。ここにあるような方法をとればインライン変換もできるようになるらしいが、ここでふと気がついた。オープンソースな世界だから、Abi WordでできることはLibreOfficeでもできるように誰かががんばってくれているかもしれない。そこで調べてみると、TexMathsというプラグインを導入すれば、同様にLatex形式の数式をワープロ文書中に挿入できることがわかった。早速ダウンロードして適用。

ただし、そのままでは使えない。依存関係があって、Latexとdvipngというプログラムを予めシステムにインストールしておかなければならない。これはどちらもリポジトリにあるものそのままでOKなようだ。

ということで、LibreOfficeできれいな数式が組めるようになった。ワープロ編集画面中の数式の表示はたぶんAbi Wordはフォントがベクターデータなので、きれいだ。LibreOfficeはpngのビットマップデータなので、美しくない。けれど、プリンタで出力すればちがいはわからない。十分だろう。

どちらのワープロソフトも、Latexのデータを一方通行で画像データにしているので、一旦作成した数式の再編集はできないようだ。これはちょっと不便だが、その都度、Latex形式のデータをコピーしておくという運用で乗り切ることができる。これでずいぶんと、作業が楽になった。
posted by 松本 at 22:31| Comment(0) | TrackBack(0) | Ubuntuのアプリケーション | このブログの読者になる | 更新情報をチェックする

2013年04月17日

数学の問題作成にStixフォント

数日前、子ども向けの数学の問題をつくろうと思った。中学生の数学で、xとかyの文字が出てくる。こういう変数は伝統的にイタリック体で表すことになっている。ただし、数学の教科書に出てくるイタリック体は、一般の欧文書体のイタリック体に比べてやや特殊だ。なかなかぴったりくるフォントがない。

それなら適切なフォントをダウンロードすればよかろうと、数式用のフォントで検索をかけると、Stixというオープンなプロジェクトのフォントがあることがわかった。公式サイトから入手ドできるようなので、早速ダウンロードした。そして、この圧縮ファイルを解凍してフォントフォルダに突っ込んでやったが、なにも起こらない。

よくよく見てみたら、どうやらフォントファイルの形式がUbuntuで扱えるものとはちがっている。とはいえフォントデータそのものはあるわけだから、なにか適切なプログラムで変換できるだろうと見当をつけた。ローカルで使うだけなら、それで問題はないはず。

けれど、フォント作成・変換のツールを探し始める前に気がついた。データの形式がちがうために壁にぶち当たったユーザーは私だけではないはずだ。オープンソースの強みは、その私以前の誰かをあてにできることだ。ずっと以前に誰かがこのStixフォントのデータをUbuntuで扱える形式、たとえばOTFに変換してくれているかもしれない。

そこでまずは手はじめにとリポジトリ内を検索してみたら、あっさりとotf-stixというプログラムが見つかった。これをインストールすることで、あっさりと問題解決。

このStixフォント、イタリック体の形式がいいだけでなく、組版で頭を悩ませるもととなる二倍カッコ、三倍カッコなどにも対応している。分数の組みはそのままでは対応していないようだが、カッコや積分記号などは不細工にそこだけフォントサイズを変えるというのではなく、そのまま書体だけ指定すればうまくいってしまう。これはなかなかいいかもしれない。
posted by 松本 at 08:24| Comment(2) | TrackBack(0) | Ubuntuのアプリケーション | このブログの読者になる | 更新情報をチェックする