ついさっきFirefoxの検索バーに日本語を入れたら、なぜかbaidoに関する証明書のエラーダイアログが表示された。そして、明らかに中国語っぽい語句が候補として表示された。驚いて検索バーの設定をFirefox組み込みのgoogle-jp.xmlに切り替えてみると(自分は既定の検索エンジンをmycroft.mozdev.orgで公開されているgoogle.comものにしている)、中国語っぽい語句は候補から消えた。
検索プラグインの内容が腐っているのかと疑いsearchpluginsの中のgoogle-us.xmlを覗いてみたけども特にbaidoを指しているようなことはなかった。
Firefoxの検索バーではなく、google.comの検索窓で日本語を入力しても同様だった。google.comでは漢字が入力されるとbaidoから検索候補を拾うようにしているのか?
それにしても今までずっとこの設定で使ってきたけども証明書のエラーなんか見たのは初めてだし、中国語っぽい語句が表示されたこともなかった。ついさっきGoogleが何か変えた?
とりあえずgoogle-us.xml内の検索候補取得URLをgoogle-jp.xmlのものに書き換えて事なきを得ようとしたがダメだった。なぜだ。仕方がないのでgoogle-jp.xmlを使うことにする。
(2011/11/27 0:09追記)
google.comの設定で、表示言語をJapaneseにすると解消(google-jp.xmlの結果と同じになった)された。Firefoxの検索バーはそれでもダメだけど。証明書のエラーが出なくなってしまったので、未だbaidoに繋ぎにいっているかは不明。
愚痴だけで終わらせるのもなんなのでまとめました。
Mac OS X Snow Leopard*1付属のlibiconvは一般的なlibiconvとシンボル定義(関数名)が異なるため、MacportsやらHomebrewやら自前やらでlibiconvとiconv.hを入手してそれを使うべき。
これでハマって貴重な日曜日の自由時間が3時間ほど失われた。その無念を込めて記す。
日本語ファイル名を含むZIPファイルを扱うシェルスクリプトを書こうとして、unzipコマンドにファイル名のエンコーディングをよしなに扱ってくれるパッチを当てようとしていたときのこと。unzipのソースをとってきて、パッチを当てて、普通にmakeして終わりかと思いきや、下記のようなエラーに遭遇。
Undefined symbols:
"_iconv_close", referenced from:
_charset_to_intern in unix.o
"_iconv_open", referenced from:
_charset_to_intern in unix.o
"_iconv", referenced from:
_charset_to_intern in unix.o
ld: symbol(s) not found
あー、libiconvが見えてないのね、と理解して、-liconvが付与されるようにMakefileを修正*2して再makeしても状況変わらず。なんでだー!? としばらく悩むこと小1時間。
Leopard に PHP5.2.6 をインストールするによれば、configureスクリプトの--with-iconvを--with-iconv=shared,/usrに変更すればよいとのことだが、今回の都合には合わず断念。_iconv_closeなどをlibiconv_closeなどに修正すれば直ったとの記載もあるので、要はMax OS X付属のiconv.hがなんかおかしいんだろ、と思い、homebrewでlibiconvをインストール*3して、-I/usr/local/includeと-L/usr/local/libが付与されるようMakefileを修正したらうまくビルドできた。
これで無事Windowsで作った日本語ファイル名のファイル入りZIPファイルとかがMax OS Xで文字化けせずに展開できるようになったわけだが、本来作りたかったスクリプトを作る時間はもうないのだった。だるい。
フルサポートコースは端末を購入してから2年間の使用が前提となっており、2年以内にシンプルコースへの変更を行うと、「フルサポート解除料」として結構なお金を取られてしまう。
それを避けるには、端末を購入してから2年ちょうど経過したときにシンプルコースに変更すればよい。契約期間の計算方法は下記URLの通りなのだが、具体的にいつ契約変更手続きをとればよいのかわからない。そこで、サポート窓口に問い合わせてみた。
曰く、フルサポート解除料の金額については、変更後の契約が実際に有効になる月が何ヶ月目であるかによるとのこと。
つまり、今月が24ヶ月目だとすると、今月に変更手続きをして問題ないということになる(実際に変更後の契約が有効になるのは翌月(25ヶ月目)だから)。
ちなみに今月が何ヶ月目かは、「お客様サポート」の「契約情報照会」の「端末契約情報」のページで確認できる。
auのガンガンメールというサービス(料金プランE)は基本料金だけでメールの送受信にかかるパケット代が無料になるという素晴らしいサービスだ。だが対象はあくまでメールだけで、残念なことにWebサイト閲覧にかかったパケット代は無料にならず、ダブル定額スーパーライト相当の扱いを受けてしまう(すなわち、使えば使うほど料金がかかり、最大で4410円に達してしまう)。
メールを連絡手段程度にしか使っていない自分としては、メールよりもWeb閲覧が無料になってくれた方がうれしい。そこで、Webブラウザを一切使わずにメール機能だけでWebのコンテンツにアクセスできるようなシステムを作れば、無料でWeb閲覧ができるのではないかと考えた(操作性はかなり悪いだろうけれど)。
システムの仕様案は次の通り。
システムの実現方式案は次の通り。
考えられる課題など。
過去にfonやらWIRELESS GATEやらホットスポットなどの公衆無線LANのサービスを導入していた時期があったけど、思ったより役に立たなかったので今はすべて解約してしまっている。
そもそも自分がこの手のサービスを必要とした理由は、家であらかじめiPod touchのBylineにキャッシュしてきたRSS新着を朝の通勤電車ですべて読み終えてしまい帰りの電車で読むものがなくなって暇だから帰りの電車に乗る前に再度キャッシュし直したい、というもの。
でも、
などの理由で、RSSのキャッシュが終わるまでの数分間、何をするわけでもなく電柱の下(AP)でぼけっと突っ立ってなきゃいけないのが気まずく。何の変哲もない道ばたの電柱の下だったりするので目立つんですよこれが。
というわけで、公衆無線LANはカフェとかに数時間こもって何かをやる人向けであり、自分のように移動しながら何かをする人には向いていないんじゃないかと思った。たぶん携帯電話会社の各種3Gデータ通信サービスとかが適切なんだろうけど、家に引いている光回線とは別に追加で5000円程度払うのは未だに受け入れられず、帰りの電車はゲームとかして適当につぶしているのでした。ああもったいない。
CodeIgniter の URL : CodeIgniter ユーザガイド 日本語版の設定を、mod_userdirで設定されたユーザディレクトリ以下に設置されたCodeIgniterに対してうまく実現する方法のメモ。なお、PHPはmod_fcgidでCGI版を動作させている。モジュール版PHPを使っている場合はまた事情が違うかも。
たとえば、http://example.com/~username/myapp/hoge/fugaのようなURLをhttp://example.com/~username/myapp/index.php/hoge/fugaへのアクセスに変換したい。このような場合、次のような設定をするとよい。
RewriteBaseなし(デフォルト)だと、/がprefixとして扱われるため、書き換え後のURLがhttp://example.com/index.php/hoge/fugaのようになってしまう(/myapp/~userdir/が抜けている)。
RewriteBase /~username/myapp/
のように設定することで、想定通りのURLへリダイレクトされる。
URLの書き換えは前述の設定でうまくいくが、今度はmod_fcgidにて「No input file specified.」なエラーになってしまう。有名な問題らしく少し検索したらいろいろと出ていたが、時間もないのでこのように対応。config.phpのURI Protocol設定を
$config['uri_protocol'] = "QUERY_STRING"
のようにし、.htaccessのRewriteRuleを
RewriteRule ^(.+)$ index.php?$1 [L]
のようにした(index.phpの直後の/を?に変えた)。
とりあえずはこれで解決。
諸事情によりIDEなしでEJB2+Servlet+JSPなEnterprise Applicationを構築したりする必要があったのでメモ。
Web Browser <---> JSP <---> Servlet <---> EJB(Stateless Session Bean) <---> DAO(POJO) <---> DB
DB用意するのが面倒なのでDAO以降は省略。EJB使っているわけではなく単なるPOJOなので調べる必要なし。
アプリケーションサーバにはWebLogic 9.2MP3を利用。ちょい古めのバージョンだが諸事情のため。
EAR(Enterprise Archive)ファイルは下記のようなディレクトリ構造を持つZIPファイル*1。jarコマンドで作成する。application.xmlファイルが含まれるMETA-INFディレクトリと複数のWARファイルおよび複数のEJB-JAR(EJBを使っている場合)ファイルで構成される。
/
META-INF/
application.xml
weblogic-application.xml
hello.war
hello.jar
application.xmlファイルにはEARファイルに含まれるWARファイルとEJB-JAR ファイルの名前を定義する感じ。ここでWARファイルに対してコンテキストルートを定義すると、WARファイル内のweb.xmlで定義されたコンテキストルートは上書きされる*2。
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE application PUBLIC '-//Sun Microsystems, Inc.//DTD J2EE Application 1.2//EN' 'http://java.sun.com/j2ee/dtds/application_1_2.dtd'> <application> <description>Hello Enterprise Application</description> <module> <ejb>hello.jar</ejb> </module> <module> <web> <web-uri>hello.war</web-uri> <context-root>hello</context-root> </web> </module> </application>
weblogic-application.xmlファイルはWebLogic用のapplication.xmlファイル。最小構成においては特に書くことない。一応用意する。
<?xml version="1.0" encoding="ISO-8859-1"?> <wls:weblogic-application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wls="http://www.bea.com/ns/weblogic/90" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/j2ee_1_4.xsd http://www.bea.com/ns/weblogic/90 http://www.bea.com/ns/weblogic/90/weblogic-application.xsd"> </wls:weblogic-application>
EJB-JAR(EJB Java Archive)は下記のようなディレクトリ構造を持つZIPファイル。jarコマンドで作成する。ejb-jar.xmlファイルが含まれるMETA-INFディレクトリとEJBのclassファイル(Homeインタフェース、Remoteインタフェース、Beanクラス)で構成される。
/
META-INF/
ejb-jar.xml
weblogic-ejb-jar.xml
net/
jibunstyle/
hello/
ejb/
Hello.class
HelloBean.class
HelloHome.class
ejb-jar.xmlファイルには作成したEJB関連クラスのFQCNとBeanの種類などを定義する。
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE ejb-jar PUBLIC '-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN' 'http://java.sun.com/dtd/ejb-jar_2_0.dtd'> <ejb-jar> <enterprise-beans> <session> <ejb-name>Hello</ejb-name> <home>net.jibunstyle.hello.ejb.HelloHome</home> <remote>net.jibunstyle.hello.ejb.Hello</remote> <ejb-class>net.jibunstyle.hello.ejb.HelloBean</ejb-class> <session-type>Stateless</session-type> <transaction-type>Bean</transaction-type> </session> </enterprise-beans> </ejb-jar>
weblogic-ejb-jar.xmlはWebLogic用のejb-jar.xmlファイル。EJB名とそのJNDI名を定義しておく。weblogic-application.xmlやweblogic.xmlでは何も記載いらなかったのでこれも同様である気がするが調べるのが面倒なのでとりあえず。
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE weblogic-ejb-jar PUBLIC '-//BEA Systems, Inc.//DTD WebLogic 6.0.0 EJB//EN' 'http://www.bea.com/servers/wls600/dtd/weblogic-ejb-jar.dtd'> <weblogic-ejb-jar> <weblogic-enterprise-bean> <ejb-name>Hello</ejb-name> <jndi-name>Hello</jndi-name> </weblogic-enterprise-bean> </weblogic-ejb-jar>
以下、EJB関連のクラス。
package net.jibunstyle.hello.ejb; import javax.ejb.EJBObject; import java.rmi.RemoteException; /** * Remoteインタフェース */ public interface Hello extends EJBObject { public String say(String to) throws RemoteException; }
package net.jibunstyle.hello.ejb; import java.rmi.RemoteException; import javax.ejb.SessionBean; import javax.ejb.SessionContext; /** * Beanクラス */ public class HelloBean implements SessionBean { public String say(String to) { return "Hello, " + to; } public void setSessionContext(SessionContext sc) {} public void ejbCreate() {} public void ejbRemove() {} public void ejbActivate() {} public void ejbPassivate() {} }
package net.jibunstyle.hello.ejb; import java.rmi.RemoteException; import javax.ejb.CreateException; import javax.ejb.EJBHome; /** * Homeインタフェース */ public interface HelloHome extends EJBHome { public Hello create() throws RemoteException, CreateException; }
WAR(Web Application Archive)は下記のようなディレクトリ構造を持つZIPファイル。web.xmlファイルやlibディレクトリ、classesディレクトリが含まれるWEB-INFディレクトリ、JSPやHTMLなどのコンテンツファイルで構成される。
/
WEB-INF/
web.xml
weblogic.xml
lib/
classes/
net/
jibunstyle/
hello/
servlet/
HelloServlet.class
hello.jsp
web.xmlファイルにはWARに含まれるServletの定義と、そのServletにアクセスするためのURLマッピング情報などを記載する。
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <servlet> <servlet-name>HelloServlet</servlet-name> <servlet-class>net.jibunstyle.hello.servlet.HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloServlet</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping> </web-app>
weblogic.xmlファイルはWebLogic用のweb.xmlファイル。特に何も記載しなくてもよい。
<?xml version="1.0" encoding="ISO-8859-1"?> <weblogic-web-app> </weblogic-web-app>
libディレクトリには参照する共通ライブラリを、classesディレクトリにはServletのclassファイルを格納する。以下、ServletとJSPのソース。
package net.jibunstyle.hello.servlet; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.Properties; import javax.naming.Context; import javax.naming.InitialContext; import net.jibunstyle.hello.ejb.*; public class HelloServlet extends HttpServlet { public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Properties prop = new Properties(); String msg = ""; prop.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory"); prop.put(Context.PROVIDER_URL, "t3://localhost:8001"); Context ctx = null; try { ctx = new InitialContext(prop); } catch (Exception ex) { ex.printStackTrace(); } HelloHome home = null; Hello hello = null; try { home = (HelloHome)ctx.lookup("Hello"); } catch (Exception ex) { ex.printStackTrace(); } try { hello = home.create(); } catch (Exception ex) { ex.printStackTrace(); } String to = request.getParameter("to"); try { msg = hello.say(to); } catch (Exception ex) { ex.printStackTrace(); } request.setAttribute("to", to); request.setAttribute("result", msg); request.getRequestDispatcher("hello.jsp").forward(request, response); } }
<html> <head> <title>Hello Enterprise Application</title> </head> <body> <h1>Hello Enterprise Application</h1> <form action="/hello/hello" method="POST"> <div>Say hello to ... <input type="text" name="to" value="<%= request.getAttribute("to") %>"></div> <div><input type="submit" value="Say"> <div>Result : <%= request.getAttribute("result") %></div> </form> </body> </html>
できあがったEARファイルをWebLogicのautodeployフォルダにドロップすれば簡単にデプロイされる。あらかじめConfiguration Wizardで適当に作成した新しいドメインmydomainにデプロイする。autodeployディレクトリの場所は以下。
C:\bea\user_projects\domains\mydomain\autodeploy
Webブラウザを起動して、 http://localhost:8001/hello/hello.jsp にアクセスする。なお、ポートはmydomain作成時に8001を指定した。
今までIDEにやらせていて詳しく理解できていなかった部分がクリアになった気がした。
作業ディレクトリ構成とバッチファイル。なお、JRockitのbinディレクトリにパスが通っている前提で書かれている。
myear
│ hello.ear
│
├─hello.ear.folder
│ │ hello.jar
│ │ hello.war
│ │ mkear.bat
│ │
│ ├─hello.jar.folder
│ │ │ mkjar.bat
│ │ │
│ │ ├─META-INF
│ │ │ ejb-jar.xml
│ │ │ weblogic-ejb-jar.xml
│ │ │
│ │ └─net
│ │ └─jibunstyle
│ │ └─hello
│ │ └─ejb
│ │ Hello.class
│ │ HelloBean.class
│ │ HelloHome.class
│ │
│ ├─hello.war.folder
│ │ │ hello.jsp
│ │ │ mkwar.bat
│ │ │
│ │ └─WEB-INF
│ │ │ web.xml
│ │ │ weblogic.xml
│ │ │
│ │ ├─classes
│ │ │ └─net
│ │ │ └─jibunstyle
│ │ │ └─hello
│ │ │ └─servlet
│ │ │ HelloServlet.class
│ │ │
│ │ └─lib
│ └─META-INF
│ application.xml
│ weblogic-application.xml
│
└─src
│ buildejb.bat
│ buildservlet.bat
│
└─net
└─jibunstyle
└─hello
├─ejb
│ Hello.java
│ HelloBean.java
│ HelloHome.java
│
└─servlet
HelloServlet.java
@ECHO OFF SET CLASSPATH=C:\bea\weblogic92\server\lib\weblogic.jar SET DEST=..\hello.ear.folder\hello.jar.folder javac -d %DEST% net\jibunstyle\hello\ejb\*.java
@ECHO OFF SET CLASSPATH=C:\bea\weblogic92\server\lib\weblogic.jar;..\hello.ear.folder\hello.jar SET DEST=..\hello.ear.folder\hello.war.folder\WEB-INF\classes\ javac -d %DEST% net\jibunstyle\hello\servlet\*.java
jar -cf ..\hello.jar *
jar -cf ..\hello.war *
jar -cf ..\hello.ear *.jar *.war META-INF
ExcelではShift+Spaceで行選択できる*1のは皆様ご存じの通り。私もShift+Space→Ctrl+Plusで行挿入とかShift+Space→Ctrl+Minusで行削除とかを多用しまくっています。
この便利なShift+Spaceなんですが、MS-IMEのショートカット(空白挿入)とモロかぶりしているために、日本語入力ON時にShift+Spaceすると期待しない全角スペースが入力されてしまってムキー!とかなるわけです。
じゃあMS-IMEのショートカットキーの設定を無効にしてやればいいのではと、Shift+Spaceのキー設定を削除しても何も変わらないという。これはひどい。俺はExcelで行挿入/削除をするたびに今のMS-IMEの状態を確認してONだったらOFFにしてやるなどの余計な手間をかけ続けなければならないのか・・・!
と、昨日までは思っていたのですが、それの回避方法を今日発見してハッピーになれたのでメモ。
その方法は、MS-IMEのShift+Spaceの設定を残したまま、左から2番目の列(カラム名忘れた)の設定をなし(「-」)にするというもの。
これでIMEがONだろうがOFFだろうが気にせずShift+Spaceできて私は非常にハッピーです。
ちなみにATOKでは設定を変えることなくShift+Spaceできるので職場のPCでATOKが使える幸運な人はその幸せをかみしめるべきですよ。
*1:ちなみに列選択はCtrl+Space
ここ1週間、息子(9ヶ月)が頻繁に咳をしている。おっぱいを飲んでいる最中も咳を止められず、何度もむせてしまって最後まで満足に飲めていないようだ。
離乳食は割としっかり食べているので食事という観点では特に問題ないと言えなくもないのだが、やっかいなのが寝かし付けの時である。
おっぱいを飲みながら眠りにつくのが彼のスタイルなのだが、最近は途中で咳き込んでしまうためになかなか眠ることができない。本人はそれでもおっぱいを飲みたがるので、乳飲む→咳き込む→泣く→乳飲む→咳き込む→泣く、のループに陥っている。そのうちに乳が底をつき、乳首もすり切れてヒリヒリじんじん、それでもおっぱいを求める息子に妻はすっかり憔悴してしまう。
そんなときは私が息子を抱いて、妻のいない別室へと移動して寝かしつけるようにしている。もちろん、突然母親から引き離されたことで息子はよりいっそう大きな声で泣きわめき、何とか私の手から逃れ母の元に戻ろうと暴れ始めるのだが、もともと眠たかったこともあって、数十分もするとすとん、と眠りに落ちるのだ。
妻が同じ方法で寝かせようとしても、難しい。なぜなら、彼女にはおっぱいがついており、息子もそれを知っているからだ。それがある以上、息子は求め続けてしまう。
息子が産まれて数ヶ月の頃。1時間以上揺すり続けても息子を寝かしつけられなかった私は、おっぱいを使ってあっさりとそれをやってしまう妻を見て、親としての(努力では埋めることのできない)絶対的な能力の差のようなものを感じ、劣等感に悩んだことがあった。
しかし、今は逆におっぱいがついていないことが有利に働いている。いまこの状況下では妻よりも自分の方がうまく息子を寝かしつけることができる。子育てにおいて男は女に絶対勝てない、敵わないと諦めてしまっていたのに、それをあっさりとひっくり返す現実があってなんとも不思議な気分だ。
思えば最近、男女の違いをいいわけにして無意識のうちに子育てを妻に押しつけがちだったような気がする。——男は子育てに根本的に向いていない、向き不向きがある、自分は働いて稼いでくるから息子のことは頼む、みたいな。
男でも、子育てのすべてに向いていないわけじゃない。だからせめて諦めてしまうのだけはやめようと、そんなことを思った。
個人趣味レベルでWebサービスを一般公開する場合、自宅サーバの維持メンテを嫌って格安レンタルサーバーを借りることがよくあると思います。わずかな費用と引き替えに何となく24時間365日近く動き続けてくれるので楽なのですが、格安レンタルサーバーはデータの保証をしていないところが多いため、ユーザーが蓄積してくれたデータを守るためにはバックアップが必要不可欠です。
というわけで先ほど、次から述べるところの2番を作ってみました。ついでなので私のバックアップの一連の流れを紹介してみたりします。
下記スクリプトをcronで毎朝5時に実行し、MySQLのDBダンプをレンタルサーバ上の非公開ディレクトリに保存します。
#!/bin/sh /usr/local/mysql/bin/mysqldump --default-character-set=eucjpms -uユーザー名 --opt データベース名 -pパスワード > /virtual/アカウント名/mysqlbackup/mysql_`date +%w`.sql
ちなみに借りているレンタルサーバーはCORESERVER.JPです。XREA.COMの上位版ですね。cronやSSH接続が許可されているので重宝しています。
ここが今日作った部分です。すなわち、昨日まではレンタルサーバー上でDBダンプをとるだけにとどまっており、バックアップとしては全く体をなしていなかったわけですから恐ろしい話です。
下記バッチファイルを自宅サーバ(Windows Home Server)のWindowsタスクスケジューラに登録して、1.で取得したDBダンプファイルを毎週月曜朝4時にFTP取得します。
CALL backup.bat backup.ftpcmd D:\Backup\mysqlbackup
@ECHO OFF REM REM DBダンプファイルをFTP取得 REM SET RETVAL=0 IF "%1" == "" GOTO invalidargs IF "%2" == "" GOTO invalidargs SET NEWDIRNAME=%DATE:/=% MKDIR %2\%NEWDIRNAME% >> backup.log 2>&1 IF ERRORLEVEL 2 GOTO mkdirfailed ftp -s:%1 >> backup.log 2>&1 IF ERRORLEVEL 1 GOTO ftpfailed MOVE *.sql %2\%NEWDIRNAME% >> backup.log 2>&1 IF ERRORLEVEL 2 GOTO movefailed MOVE *.log %2\%NEWDIRNAME% > NUL 2>&1 GOTO end :invalidargs SET RETVAL=1 ECHO 引数が不正です。 backup.bat FTPスクリプト バックアップ先 GOTO end :ftpfailed SET RETVAL=2 ECHO FTPに失敗しました。 GOTO end :mkdirfailed SET RETVAL=3 ECHO バックアップ先ディレクトリ作成に失敗しました。 GOTO end :movefailed SET RETVAL=4 ECHO ファイルの移動に失敗しました。 GOTO end :end EXIT /b %RETVAL%
今読み返してみると、FTPを先にやってからディレクトリ作った方がいい感じですね。面倒なのでこのまま放置ですが。
ftp.exeの-sスイッチにFTPコマンドを羅列したテキストファイルを与えると、その通りにFTPを実行してくれます。
OPEN ホスト名 ユーザー名 パスワード PROMPT PASV BINARY CD mysqlbackup MGET *.sql CLOSE QUIT
はじめにPROMPT OFFしておかないとMGETで入力待ちになってしまい、バッチが終わりません。また、自宅のネットワークはファイアウォールを兼ねるルーターによってほとんどのポートが閉じられているのでPASVモードにしています。
個人のデータは作業用のPCのローカルディスクではなく、自宅サーバー(Windows Home Server)の共有フォルダに入れています。先ほどFTPで取得したDBダンプファイルもこの共有フォルダに入れています。このステップでDBダンプファイルを含む共有フォルダのファイルを毎週月曜朝5時にバックアップ専用のハードディスクへミラーリングします。
Linuxサーバー時代はcronでrsyncしてましたが、WindowsならBunBackupを使うのが手軽でよいと思っています。
以上です。たまたまうちはWindows Home ServerでFTPとかしていましたが、別にWindows Home Serverの機能は何一つ使っていませんので、普通のWindows PCであれば何でもOKですよ。
ご参考になれば幸いです。
:Aptana Studio:自サイトの開発・運用・保守のため。Pleiadesも同時にインストール。→すこし凝ったことをやろうとするととたんに不便になるので、最近は普通にeclipseを使っている。ApacheやPHPを別にインストール&設定しなければならないのが面倒だが。
:Movist:シンプルながらたいていの動画形式に対応していて、かつ連続再生用途にも。本当はQuickTimeで済ませたいのだが、Flip4Macの使い勝手が悪すぎ、WMVをみるのが不便すぎて断念。定番のVLCやらMPlayerやらは動画ウィンドウのほかに制御用のウィンドウが出てしまうのが気に入らない。→Movistではみれない動画があり、最近は仕方なくVLCを使っている。VLCはVLCで一部の動画が正しく見れなくて困るのだが。。
参考:Microsoft IntelliPoint 7.01 For Mac 不具合?
参考リンク先が消失しているようなので、内容を思い出せる範囲で。結局のところ7.01には問題があるのでそれ以前のバージョンに戻せばよいという話なのだが、7.01をアンインストールしてから古いバージョン(6とか)のインストーラを起動すると「すでに新しいバージョンが入っています」的なメッセージが出て困った事態に。下記ファイルを手動で削除する必要があるのでした、という話。
/private/var/db/receipts/com.microsoft.keyboard.installer.bom /private/var/db/receipts/com.microsoft.keyboard.installer.plist /private/var/db/receipts/com.microsoft.mouse.installer.bom /private/var/db/receipts/com.microsoft.mouse.installer.plist
各種ソフトウェアのリンクを追加した。
たまには自分で何か作りたいSIerのSE、あるいはひ弱な一児のパパ。