ギア周りの清掃
2010.2.8 月曜日

チェーン交換のついでに、チェーンリングとスプロケをバラして洗浄しました。
まず、クランクをBBから抜くには、8mmのアーレンキーとコッタレス抜き「SHIMANO TL-FC10」、あとモンキーレンチを使います。右のクランク(チェーンリング側)がありえないぐらい固くて、二の腕がつりそうになり、ちょっと諦めかけました。
チェーンリングのギア固定ボルトを外すには、「パークツール CNW-2C チェーンリングナットレンチ」と5mmのアーレンキーを使います。ペグレンチはモンベルで745円。チェーンリングはボルト自体か、受けのネジ山の精度がダメっぽく、取り付ける時に2本も千切れたり欠けたりしました。
というわけで、アウターリングとセンターリングを止めるボルトは「SHIMANO FC-7701(DURA-ACE)」に交換しました。近くのモンベルにたまたま在庫があり1,744円。無駄に1個当たりが5g→2gで全体で15gの軽量化です。
スプロケを外すのには、451ホイールに交換した時に買った工具を使います。スプロケ「SRAM PG-970」は11Tと12Tはそのまま外れ、残りの7枚は細いボルト1本で固定されているので、これを弛めれば全てバラバラになります。たしか1mmのアーレンキー。
Posted by tmdf|Cycle Gaap|comments (0)
チェーン交換
2010.2.7 日曜日

走行距離も4,000kmを超えたので、チェーンを交換しました。チェーンは1%以上伸びると交換時期らしいです。測っていませんが、たぶん伸びているでしょう。
新しいチェーンはDURA-ACEグレードの「SHIMANO CN-7701」。家の近所のモンベルで2,936円。当たり前すぎて書いてないと思うのですが、コネクトピンは1個同梱されてます。交換に必要な工具はチェーンカッターだけで「SHIMANO TL-CN27」をAmazonで2,460円で購入。
古いチェーンを外すときに、テンションがかかっているので、勢い良く外れるので注意して下さい。取り付ける際は一人で引っ張りながらコネクトピンを入れるのがちょっと面倒。でも難しい作業ではありません。Gaap Streetのリンク数は112でした。
交換すると、スピードには影響しないであろうレベルでペダリングがスムーズになりました。チェーンとギアがしっかりはまっている感じがします。
Posted by tmdf|Cycle Gaap|comments (0)
mtdf.net 更新
2010.1.13 水曜日
mtdf.net のFlashを2010年度版に更新しました。去年と同じくFlickrにアップしている自分のPhotosetの写真を表示するだけですが、元画像を表示する前のドットパターンは、元画像に数段階のJPEGエンコードを行い生成しています。
Posted by tmdf|comments (0)
トルクレンチ購入
2010.1.11 月曜日

自転車のメンテナンス用にgrunge「コンパクトトルクレンチ」を去年の暮れに購入しました。これからはちゃんとトルク管理します。とりあえず現状の締め付けトルクを測ってみると、ブレーキは少し締めすぎで、ディレイラーはちょっと緩めでした。
このトルクレンチは測定可能な範囲が2~24N/mと自転車向けに作られているので、BBやスプロケなど専用工具が必要な箇所や、その他の40N/m以上など高トルクが必要な箇所以外の取り付けには、一通り事足りるはずです。
使い方は簡単で、最初にグリップを回してトルクを設定、普通のラチェットレンチと同じように締め、設定トルクに達すると「カッチッ」と反応が返ってきます。値段も約7,000円と他のトルクレンチと比べてかなり安く、取替可能なソケットがコンパクトな1/4インチタイプで、私が今まで使っていたソケットも使えているので経済的。トルクレンチを持ってないならお薦め。
Posted by tmdf|Cycle|comments (0)
フロントライト購入
2010.1.10 日曜日

以前買った「KNOG BEETLE」では、真っ暗闇の中を帰宅しているとちょっと不安だったので、前回書いたサングラスと一緒にWiggleで「KNOG TOAD(ブラック)」も買ってみました。値段は£15.99で2,400円くらい。
ライト自体は5LED(50,000mcd)とかなり明るく、常時点灯で使えばけっこう暗い道でも安心して走れると思います。ただしハンドル径がロード用のドロップハンドルに多い28.6mmに適しているみたいで、オーバーサイズの31.8mmの場合、かなりキツイ装着感(ハマりきらない)になります。そのせいでボタンの反応もシビアで、走行中の操作はまず無理。
引っ張りまくってシリコンを伸ばしてから取り付けると、少しマシになります。
Posted by tmdf|Cycle|comments (0)
サングラス購入
2010.1.9 土曜日

ユニクロのセールで買った780円のスポーツ用偏光サングラスを、いつの間にか1年ぐらい使い続けていたので、2009年最後の買い物はサングラスに決定。「Rudy Project RYDON Matt Black impact X Photo Clear」を買いました。
レンズは紫外線に反応して濃さの変わる調光タイプで、透過率が18~78%(※100%が透明)に変化します。上の写真の状態が78%、十分すぎるほどクリアなので、朝から晩までレンズ交換することなく使えて便利。室内(車のようにUVカットガラスが使われている空間なども)に置いておくと、昼でも数分でクリアになります。逆に濃くなるまではもっと早く、冬の晴れている日差しで1,2分くらい、かけたままだと気づかないうちに暗くなっています。夏だとかなり早いはず。
何かの記事で、調光レンスは性能が徐々に悪くなる(反応が鈍くなる)っていうのを読んだことがあるので少し心配ですが、2,3年持てばまぁいいんじゃないでしょうか?レンズの素材も衝撃耐性のある特別なものを使っているらしいです。
サングラス自体はかなり軽く、太めの針金を曲げる感じでテンプルの角度調整と、ノーズピースの調整ができるので、フィッティングもしっかりしています。選んだのはMatt Blackですが、見た感じはほとんど濃いグレー。全体的に素材の質感、各パーツの精度もしっかりしていて高級感があります。
値段はWiggleのクリスマスセール?のクーボン£20を使って£92.76で13,800円くらい。今回は12/20注文で、正月に帰省している間(たぶん12/28とか?)にポストに郵便物扱いで無理やり入っていました。
Posted by tmdf|Cycle|comments (0)
A HAPPY NEW YEAR
2010.1.1 金曜日
あけましておめでとうございます。
今年は自転車とAS3以外の記事も追加していこうと思っています。
今年もよろしくお願いします。
Posted by tmdf|comments (0)
XREAでrep2
2009.12.27 日曜日
記事の内容を最新の「rev.101010.2210」に直しました。
XREA Plus(XREA Freeでも同じ?)に rep2「rev.101010.2210」を設置するメモです。自動ポップアップが表示できなくてハマリました。rep2の設置はXREAの規約に違反するかもしれないので自己責任でお願いします。
1. ダウンロード
まず「rep2expack ダウンロード」から「依存ライブラリ込み」をダウンロードします。ダウンロード後、解凍してできる「rep2」フォルダ内のいくつかのファイルを下記のように直します。
2. アクセス解除
自分のPCからrep2にアクセスできるようIPアドレスを登録にします。自分のアドレスが分からない場合は「グローバルIP 確認」でググれば色んなサイトが引っかかります。
conf/conf_hostcheck.php
36行目を変更
‘custom’ => 1,
50行目に追加
‘XXX.XXX.XXX.XXX’ => 24, //調べた自分のIPアドレスを追加
3. プライバシー対策
プライバシー(セキュリティ)が気になる人は、「public_html」ど同階層などにデータ保存フォルダのディレクトリ位置、ディレクトリ名を変更します。
conf_admin.inc.php
14,17,20,23行目を変更
$_conf['data_dir'] = “./data”; // (“./data”)
$_conf['dat_dir'] = “./data”; // (“./data”)
$_conf['idx_dir'] = “./data”; // (“./data”)
$_conf['pref_dir'] = “./data”; // (“./data”)
$_conf['db_dir'] = “./data/db”; // (“./data/db”)
4. レス修正
XREAサーバー経由だと公開プロクシ判断されレスできないので、直接スレをブラウザで開いて、レスができるように変更。
conf/conf_admin.inc.php
87行目を変更
$_conf['disable_res'] = 1; // (0)
5. PHP対策 1
PHPバージョンが推奨より古いためバージョンチェックを回避。
conf/conf.inc.php
193行目を変更(コメントアウト)
//p2_check_environment(__LINE__);
6. PHP対策 2
私がどこにあるのか分からずにハマったのはこの部分。レス番号の自動ポップアップ、URLの自動リンクが動作しないので、コメントアウトされている機能を動作するように変更。
lib/ShowThread.php
840行目と847行目を削除
/* と */ です。
7. PHP対策 3
PHPをCGIとして動作させるため、rep2フォルダ直下に「.htaccess」ファイルを作成し、テキストエディタなどで下記の文を書いて保存。
AddHandler application/x-httpd-phpcgi .php
8. アップロード
以上で一通りのファイル修正が完了です。rep2のフォルダをFTPソフトで自信のXREAサーバーにアップロードし、ユーザー名とパスワードを設定(初アクセス時)して使いましょう。
Posted by tmdf|rep2|comments (0)
AS3で最近調べたこと
2009.12.26 土曜日
最近、ActionScript3で調べたことの参考サイトと自分なりのまとめ。
NUTSU 「2次ベジェ曲線の交点」
任意の2次ベジェ曲線同士の交点は、むりやり求めるしかない。かなりCPUに不可がかかるので、交点が100個以上とかある場合、毎フレーム実行させると処理落ちが発生する。また、上記リンク先で公開しているライブラリでは、ベジェ曲線を内包する短形が計算のベースになっているので、短形を描けない直線(コントロールポイントが2点の間にある)の場合は、別のスクリプトを書く必要がある。
memo 「ArgumentError: Error #2015: BitmapData が無効です。エラーの謎」
#2015のエラーが起こる場合、原因はnew BitmapData() によるメモリ不足が考えられるので
不要になったBitmapDataはdispose()で開放してあげなければいけない。それでもエラーが無くならない場合、PCのスペックを超過している恐れがある。しかし、ムービプレビューでエラーが起きても、デバッグモードやコンパイルした場合にはエラーが起きないこともあるので、限界ギリギリのパフォーマンスを求めるなら試してみる。
Posted by tmdf|ActionScript|comments (0)
基準点以外で拡大・回転
2009.12.23 水曜日
自分が昔ハマったことのあるプログラムですが、Flashではシンボル化されたオブジェクトの基準点を中心に、回転やスケール変更を行います。オブジェクト(ステージ上)の任意の点を中心に拡大したい場合には、プログラムに少しコツが必要です。
下記の参考スクリプトの2つの関数、RotateA()とRotateB()は、結果は同じになりますが、アプローチが少し違います。どちらの関数も引数は「操作したいオブジェクト、基準点の座標、相対回転角度」になっています。
RotateA()が、いつも自分で使っている方法。まず、回転させる直前と直後に指定したオブジェクトの親視点で基準点の位置を取得。この差分だけ回転した直後にオブジェクトを移動し位置を補正します。
RotateB()はオブジェクトの基準点自体を移動させる方法。最近読んだ_level0.KAYAC 「getBounds + Matrixで、もう基準点にはこだわらない。」を参考にしました。Matrixを使っているあたり、こっちの方がプロっぽいです。cellfusion blog 「DisplayObject.transform.matrix」でもほぼ同じ方法を紹介しています。
この2つの方法以外にも、オブジェクトを入れ子にして操作する方法がありますが、あまりスマートではないので省略します。
package {
import flash.display.Graphics;
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.KeyboardEvent;
import flash.geom.Matrix;
import flash.geom.Point;
import flash.geom.Rectangle;
public class Main extends MovieClip {
//オブジェクト
private var Sample_mc:MovieClip;
private var Point_mc:MovieClip;
//動作タイプ
private var check:Boolean;
public function Main():void {
//オブジェクト(グレーの四角)を描画
Sample_mc = new MovieClip();
this.addChild(Sample_mc);
Sample_mc.x = 200;
Sample_mc.y = 150;
var g:Graphics = Sample_mc.graphics;
g.beginFill(0x999999, 1);
g.drawRect(-10, -10, 200, 150);
//基準点を描画
Point_mc = new MovieClip();
this.addChild(Point_mc);
//初期値
check = true;
//リスナー登録
this.addEventListener(Event.ENTER_FRAME, Update);
stage.addEventListener(KeyboardEvent.KEY_DOWN, Change);
}
//動作タイプを変更
private function Change(e:Event):void {
//更新
check = !check;
}
//表示更新
private function Update(e:Event):void {
//回転
if (check) RotateA(Sample_mc, new Point(200, 200), 1);
else RotateB(Sample_mc, new Point(300, 150), -2);
}
//回転
private function RotateA(_object:MovieClip, _p:Point, _rotation:Number):void {
//基準点を描画
Draw(_p);
//基準点をステージ上の座標で設定
var p:Point = _object.globalToLocal(_p);
//変更前の座標を取得
var a:Point = _object.localToGlobal(p);
//回転
_object.rotation += _rotation;
//変更後の座標を取得
var b:Point = _object.localToGlobal(p);
//差を補正
var c:Point = a.subtract(b);
_object.x += c.x;
_object.y += c.y;
}
//回転
private function RotateB(_object:MovieClip, _p:Point, _rotation:Number):void {
//基準点を描画
Draw(_p);
//現状のマトリクスを取得
var mx:Matrix = _object.transform.matrix;
//オブジェクトの領域を取得
var r:Rectangle = _object.getBounds(_object.parent);
//基準点を任意の座標に変更
mx.translate(-_p.x, -_p.y);
//回転
mx.rotate(_rotation / 180 * Math.PI);
//基準点を初期位置に戻す
mx.translate(_p.x, _p.y);
//反映
_object.transform.matrix = mx;
}
//基準点を描画
private function Draw(_p:Point):void {
//赤点を描画
var g:Graphics = Point_mc.graphics;
g.clear();
g.beginFill(0xFF0000, 1);
g.drawCircle(_p.x, _p.y, 5);
}
}
}
Posted by tmdf|ActionScript|comments (0)