2006年12月アーカイブ
見ている方々にとっては特に関係ないことかと思いますが、このblogに使用しているMovable Typeのバージョンを3.3から3.33にアップグレードいたしました。
Movable Typeというのは世界中で使用されているblogソフトウェアです。おそらく最も有名なソフトウェアなのだと思います。今ではblogに当たり前のように搭載されているトラックバックという機能は、こちらのソフトウェアが最初に搭載したものだそうです。
旧バージョンを使うことによる不具合は特になかったのですが、まあ、長く使うつもりなので早い段階のうちにアップグレードを試してみたかったんです。
もしかしたら自分で気づいていない不具合があるかもしれないですが、一応うまくいったつもりでございます。
役に立つかはわからないですが、その際の手順を覚え書きの意味も込めて掲載いたします。
マニュアルを熟読せず進めた作業結果です。
以下の通りにアップグレードしてうまくいかなかったからといって責任は追及しないようにお願いいたします。
Movableタイプはblogを構築するモジュール(アプリケーション)とblog内容が別のフォルダに格納されます。
この記事ではそれぞれを「blogモジュール格納フォルダ」「blog記事格納フォルダ」と記載しています。
その1.バックアップの保存
実際にはとったバックアップはプラグインファイル一つしか使用しなかったのですが、念のためにです。
管理ページのユーティリティより「読み込み/書き出し」を選択し、エントリーの書き出しを行いました。
ちなみにこのユーティリティはIEで行うとうまくいかないことがあるそうなので、Mozilla系のFirefoxを使用しました。
また、blogのモジュールを格納しているフォルダの直下にある全ファイル及び後々必要になりそうな「default_templates」「plugins」「search_templates」フォルダをダウンロードしておきました。「db」フォルダについてはmtdbのみバックアップしました。
blogの記事を格納しているフォルダもすべてバックアップしました。管理ページのユーティリティであるエントリーの書き出しではエントリーやコメント、トラックバックの内容のみしかバックアップできないらしかったので(画像やCSS等はバックアップされません)。
その2.mt-config.cgiの書き換え
mt-config.cgiの内容をサーバ設定に合わせて変更いたしました。
パス等です。
その3.既存ファイルの削除
blogモジュール格納フォルダの中身をdb以外すべて削除いたしました。本当にすべてを削除する必要があったのかはわからないですが、古いモジュールが残ってバージョンアップした意味がなくなるのが嫌だったので。
ちなみにdbフォルダを削除しなかったのは、格納されているのがインストール後に作成されるもののため、バージョンには無関係と判断したからです(関係あることが判明したら削除の上でやり直そうと思いました。実際やり直さなかったですが)。
その4.ファイルのアップロード
ダウンロードしたver3.33のファイルをすべてサーバのblogモジュール格納フォルダにアップロードいたしました。
ffftpを使用して、バイナリモードでのアップロードです。
その5.cgiファイルの属性変更
モジュール格納フォルダ直下にあるcgiファイルの属性をすべて755に変更いたしました。
その6.mt-check.cgiにアクセス
ブラウザにてmt-check.cgiにアクセスし、システムチェックを行いました。
その7.mt-check.cgiの削除
mt-check.cgiを削除いたしました。
その8.pluginの追加
トラックバックに関するプラグインmt-pingedentry.plを使用していたので、そのファイルをpluginsフォルダにアップロード。
その9.blogが正常動作していることの確認
手順としては以上です。
システムメニュー上のバージョンも3.33-jaになっていますし、とりあえずちゃんとアップグレードできたつもりですが、不具合がありましたらご連絡いただければ幸いです。
手順でまずい点がございましたらそれもご指摘いただけると嬉しいです。
一昨日、コンポーネントの拡大と縮小の説明の際に、拡大と縮小の一定ではない変化を実現するコードを記載しました。
その点についてちょっと詳しい説明です。
別にわたしが思いついたわけではないアイディアなので、わたしが偉そうに説明するものではないですが、応用が色々とききそうな考え方ですのでご紹介です。
たとえば、nowxという変数値が最初100で、それを0に近づけたいとします。
以下のコードはnowxを10ずつ0に近づけていきます。
実際はif文の処理はこのコードではちょうど0で止まるため必要ないです。
//コードここから
var nowx:Number = 100;//変数nowx
var nextx:Number = 0;//nowxの終値
var diffx:Number = 10;//nowxの変化値
//nowxをdiffxずつnextxに近づけるループ
for( ; nowx > nextx ; nowx -= diffx){
if(nowx < nextx)nowx = nextx;//nowxがnextxより小さくなった際にnextxに戻す
}
//コードここまで
前回の拡大縮小のコードでは、一定間隔の変化ではなく、変化値を減らしていきたかったため、以下のようなコードを使用しました。
if文の条件でnxtxに1をプラスしているのは、最後の方の細かい変化はただの負荷にしかならない場合が多いかと思ったからです(細かい変化を求める場合には不要かもしれないですね)。
//コードここから
var nowx:Number = 100;//変数nowx
var nextx:Number = 0;//nowxの終値
var diffx:Number = 2;//nowxの変化分
//nowxとnextxの差を1/diffxずつ狭めるループ
for( ; nowx > nextx ; nowx -= (nowx - nextx) / diffx){
if(nowx < nextx + 1)nowx = nextx;//nowxがnextx+1より小さくなった際にnextxに戻す
}
//コードここまで
上記のコードではnowxが
100
50
25
12.5
6.25
3.125
1.5625
0
というように変化します。nowxとnextxの差が半分ずつ(つまり1/diffxずつ)に縮まっていっているということです。
diffxの値を3にするとnowxの変化が
100
66.6666666666667
44.4444444444444
29.6296296296296
19.7530864197531
13.1687242798354
8.77914951989026
5.8527663465935
3.90184423106234
2.60122948737489
1.73415299158326
1.15610199438884
0
というように緩やかになります。差が1/3ずつになっているからです。
ありがちなのかどうかわからないですが、個人的によく使用するアルゴリズムです。
スクロールを表現するとき、見た目的に自然な減速になるので。
スクリプトなりプログラムなり、言語経験のある人には誰だって「会心のソース」みたいなものがあると思います。
美しい数式を見たときのような感動を覚える自らの生み出したソースです(過去に他の人がすでに思いついていることがほとんどだとしても)。
わたしはこれまでにいくつかの言語に触れてきました。Basic、VisualBasic、C、C++、Visual C++、Java、HTML、CSS、JavaScript……。
そんな学習の中で心震えたソースについて書いていってみようかななんて思いました。
自己満足が大半だとしても、人の役に立つことがけっこうあるかなとも考えましたので。
このblogにも書きましたが、ことしの夏~秋、MdN出版の「プロとして恥ずかしくないFlashの大原則」の執筆を行いました。全体の9ページではありますが。
自分の書いたソースが人の注目を集める形で世に出るということは、恐くて、でも、同時にすごく嬉しかったです。
その中でコンポーネントの拡大と縮小を取り上げました。
Flashではインスタンスにマウスカーソルが乗ったときにそれを察知するメソッドが用意されていますが、すべてのコンポーネントに対応しているわけではありません(わたしが知る限りはですが、そういう前提でソースを書きました)。
そこで、あらかじめコンポーネントのx座標とy座標を取得して、その位置にマウスカーソルが来たら拡大するというソースを書いてみました。
以下、そのソース(省略版)です。
form1というムービークリップ上にコンポーネントを乗せています。
各コンポーネントはcomp1~comp4というインスタンス名です。
//ソースここから
var compArray:Array = new Array();//コンポーネント格納配列
var compNumber:Number = 4;//コンポーネント数
var bigScale:Number = 150;//コンポーネント拡大時スケール(%)
var mcx:Number = form1._x;//ステージから見たformのx座標
var mcy:Number = form1._y;//ステージから見たformのy座標
//全コンポーネントの配列への格納とx座標y座標の取得
for(var i =1 ; i <= compNumber ; i++){
if(i <= compNumber1) compArray[i] = eval("form1.comp" + i);//配列への格納
compArray[i].nextScale = 100;//通常時は100、拡大時は150
compArray[i].x1 = compArray[i].x + mcx;
compArray[i].x2 = compArray[i].x + mcx + compArray[i].width * bigScale / 100;
compArray[i].y1 = compArray[i].y + mcy;
compArray[i].y2 = compArray[i].y + mcy + compArray[i].height * bigScale / 100;
}
//コンポーネント上にマウスが乗った際の拡大表示
_root.onEnterFrame = function():Void{
for(var i = 1 ; i <= compNumber ; i++){
if(_root._xmouse>compArray[i].x1 && _root._xmouse
compArray[i].nextScale = bigScale;//上にマウスがある場合はnextScaleを150にする
}
else{
compArray[i].nextScale = 100;//上にマウスがない場合はnextScaleを100にする
}
//表示スケールをnextScaleに近づけていく。差を2で割ることによって一定ではない拡大縮小を実現する
compArray[i].scaleX += (compArray[i].nextScale-compArray[i].scaleX) / 2;
compArray[i].scaleY += (compArray[i].nextScale-compArray[i].scaleY) / 2;
}
}
//ソースここまで
ソースは以上です。
自分では良いと思っていても人からすれば欠点だらけのソースかもしれないので、意見等いただけると嬉しいです。
Wikipedia ActionScript
Wikipedia プログラム言語
プロとして恥ずかしくないFlashの大原則 MdN出版該当ページ
プロとして恥ずかしくないFlashの大原則 Amazon該当ページ