Thinkpad T450sのHDDをSSDに換装する

普段からネットサーフィンに大活躍している僕のメインPC、lenovoのノート、Thinkpad T450sのHDDをSSDに換装した。 その顛末をいくらか文章化しておこうと思う。僕も事前の調査でググったけど、いくつか不明点があったので、後に続く人のお役に立てればと思いますし。 先に大雑把に書いちゃうと、 SATA SSDなら何でもいいんじゃないか。7mmでも9.5mmでもいいみたい。 lenovoの保守マニュアルは一応見といてね。 僕はクローンせずに再インストールした。時間はそんなにかからない。 そもそも、初めからSSDを載せたPCを買いたかったけど、当時たしか512GBのしかなかったし、仮に1TBのがあったら高かっただろうな。メーカーPCはパーツをアップグレードしたら、パーツ代では済まないくらい金額が跳ね上がるのは何でだろう。やめてほしいな。 もともと内蔵されていたHDDはHGST 541010A9E680、まあ普通のSATAの1TBのHDD。なのでSATAのSSDから適当に物色する。かつてCrucialのSSDを使ってトラブルなしだったので、今回もCrucialに目をつけてた。MX500という新しいシリーズが出たし。Samsungや東芝にしたい人はそれでいいと思う。中華の良く分からないメーカーもあるけど、SSDは本質的にむつかしい部分があるから、著名メーカーから選ぶのが無難と思う。 結局買ったのはCrucialのCT1000MX500SSD1、面倒はいやなので日本正規版をAmazonで購入。ジワジワ安くなっていま25000円くらいと思うけど、この間のセールで23000円で売ってたから、即購入した。いずれこの価格帯に落ちるとは思うけど。パーツ類は3万円を超すと高くて買えないけど、2万円台だと買えるのは、我ながら良く分からない。 事前の準備としては、 保守マニュアルの入手 MSのメディア作成キットでUSBブートメディアを作っておく(たぶん8GB以上のUSBメモリがいる) データのバックアップ といったところでしょうか。 それらを済ませたら、換装します。換装手順は、lenovoのハードウェア保守マニュアルを見てね。内蔵バッテリーの無効化とか、たぶんやった方がいいし。とりあえず底面のふたを開けると、HDDにはすぐアクセスできる。 ねじを一つ外しただけで、HDDは取り外せる。そおっとね。 HDDの周りは、専用のゴムパーツで固定されているんだけど、この内側に突起があって(見えにくいかな)、それが2.5インチHDDやSSDの側面のねじ穴に食い込むようになってる。このHDDは9.5mm厚だから、9.5mm厚のSSDならピッタリだと思うけど、7mm厚のSSDでも空間ができるだけで、このねじ穴の部分で固定はされてる。なのでCrucialのSSDについてきたスペーサーは使わなかった。だから、たぶんSSDの厚みは気にせずに買ったらいいと思います。 ゴムパーツをSSDに取り付けて、HDDの位置に差し込む。あとは固定して、ふたを閉じて。 さて再インストール。実はUSBメモリで起動するって初めてなんですよね。うまくいくのかなあと思ってましたが、メモリをさして、起動時にEnter→F12かな。ところがUSBから起動というのが表示されない。うーんと思いながらUSBポートを変えたり再起動をかけてたりすると、なんだか認識された。この点は今一つ良くない感じがした。これこれ、このUSB HDDというのを選んで起動をかける。 あとはWindows10のインストール。こういうことやる人は、ここから先は好きにやるでしょう。 換装結果、あらゆる操作が爆速になったので、このThinkpadも当面のネットサーフィンに耐えそうです。良かった良かった。

2018年7月21日 · 1 分

古いパソコンの無料回収について

もう使わなくなった古いパソコンを回収してもらった。 それだけ、と言えばそれだけなのだけど、備忘録を兼ねて色々書いていこうと思う。 パソコンは2台、どちらもノートパソコン。Thinkpad R50eとT43。型番だけで古さが分かる人もいるかな。前者はPentiumM 1.6GHz、後者はPentiumM 2.0GHz。 R50eは奥様が大学の時に買ったもので、研究とか卒論、修論とかも全部これで書いたのだと思う。T43は僕が在学中に買った。とくに僕はパソコン依存症なので、半端ではなく酷使したと思う。 2台とも、もう現代のOSは入らない。Windowsはもちろん、Ubuntuもダメ。CPUにPAEというのがないらしい。ごまかすオプションもあるらしいけど、ダメだった。Debian9は入った。偉いぞDebian。もしかして、もっと古いパソコンでも、Debianなら動くかも。 R50eは光学ドライブが死んでいる。あと電源スイッチに難があって、電源を入れるのにコツがいる。さらに液晶との配線がガタガタで、画面が映ったり映らなかったり。でも初代Centrinoだし、たぶん結構省エネにできている。電源を入れっぱなしでもファンは静かなものなので、Debian9を入れて、メイン使いのVPSとのrsync専用機・死活監視機としてずっと使ってた。 T43は全体的に死んでいる。時々ブルースクリーンになる。メモリが悪いとかだけなのかもしれないけど、トラブルシュートする気にもならない。あと、Radeonか何かを内蔵している関係か、何もしてなくても結構ファンが回ってうるさい。こちらはR50eが壊れた時の控えとして、置物にしていた。 そんなこんなで、たぶん10年以上使ってきたけど、もうどこがどう壊れてもおかしくないし、常時動かしていて不在時に火災でもおこしたら目も当てられない。自宅のノートパソコンの代わりに、調べた中で最も安いVPSを契約して、そちらに移行した。そのVPSについても書きたいことがあるけど、今回はそこには触れない。 そういうわけでお役御免となった2台、しかし長年使うと愛着がでるもので、しばらく置いていたけど、やっぱり邪魔なので処分することにした。 大津市のページを調べてみると、以下の記事を見つけた。 「宅配便を利用した使用済みパソコン・小型家電の回収サービスを行っています」 なんと、PCを送料まで無料で引き取ってくれるらしい。そんなうまい話があるのか。それは絶対に使おう。その会社についても、少し調べてみた。 【国認定】パソコン無料回収・処分・廃棄ならリネットジャパン 今年の9月末まで、パソコンの無料回収(送料も)をやっているらしい。あちこちの自治体とも連携しているみたい。それなら、ちゃんと回収ルートに乗せてくれるのかな。 そこのページに書いてあるのだけど、パソコンだけではなく、CRTだのパーツだの、およそパソコンまわりのあらゆるものをついでに送っていいらしい。せっかくの機会だから、PCMCIAのカードとか、PCIだのAGPのカードだとか、一生使わないようなものも、目いっぱい梱包して回収してもらった。これでかなりの断捨離になったので、気分がスッキリした感じがした。 あと、HDDのデータは有償で消去してくれるのと、自分でツールを落として消去する(無料)のと、HDDをそもそも引っこ抜いて送るのと選べた。もしかしたらHDDくらい売れるんじゃないかとバカなことを考えて、HDDだけは手元に残しておいた。 そういうわけで、いま不要なパソコンが眠っていて、どうしようか迷ってる方、9月末までですよ。急いだほうがいいですよ。

2018年7月2日 · 1 分

PHPテンプレートエンジンSkinnyについて

最近行ったサーバの移行。 Ubuntu12.04からUbuntu16.04にしたので、それに伴い、PHPも5.3.10から7.0.18に変わった。想定されることだけど、PHP4時代から使っていたスクリプトの一部が動作しなくなった。細かいことは色々あるけど、一番大きかったのはそれまで使っていたテンプレートエンジンがまるっきり非互換の塊になってしまったこと。 テンプレートエンジンをガリガリ書き直して使い続けても良いんだけど、それはそれでなかなか不安もあったので、何か良いものはないかなと探していて、Skinny(http://skinny.sx68.net/)というのを見つけた。 これもいわゆるテンプレートエンジンで、ビューだけを切り離す用途に特化していて、僕のニーズにバッチリ合うものだった。ビュー層(テンプレート)はSmarty互換らしく、それならそれなりに今後も安心感があるかな、と思えた。 テンプレートエンジンの差し替えを行ったものの、ロジックの8割くらいは流用できたので、非常にスムーズに移行できたと思う。 作者さんに感謝。

2017年6月20日 · 1 分

Ubuntu16.04にfmlを入れる

新しいサーバ(Ubuntu16.04)でも、これまで使ってきたfmlをなんとかして使いたい。 しかしこれは太古のパッケージを現代のディストリビューションで使う、というやばい話なので、避けられる人は避けた方が良い。 まず、Debian 4くらいに入っていたdebパッケージを入手する(としか書かない)。 とりあえずインストール。 sudo dpkg -i fml_4.0.3.dfsg-2_all.deb すると、エラーがでてインストールはできない。 Can’t use ‘defined(@array)’ (Maybe you should just omit the defined()?) at /var/lib/dpkg/info/fml.postinst line 229. なので、-iはあきらめて、unpack&configureする。 sudo dpkg –unpack fml_4.0.3.dfsg-2_all.deb 以下は修正箇所と修正内容。基本的には配列とかhashのdefinedを消すだけ。 sudo vi +229 /var/lib/dpkg/info/fml.postinstで - if (defined @entry) {+ if (@entry) {+238 で同様に- $key ne “$package” && $key ne “DB” && defined %entry+ $key ne “$package” && $key ne “DB” && %entry+243 で同様に- (defined %entry) &&+ (%entry) &&これでpostinstは修正完了、configureする。間違っていたら再度修正して繰り返し。 sudo dpkg –configure fml それから、以下のパッチを当てる。 [debian-users:55112] Re: fmlのDebianパッケージ にあるように、 — libkern.pl.old 2010-12-30 08:12:13.000000000 +0900+++ libkern.pl 2010-12-30 08:12:18.000000000 +0900@@ -616,8 +616,8 @@ ### Header Fields Extraction $s = $Envelope{‘Header’}."\n";- $* = 0; # match one line- if ($s =~ /^From\s+(\S+)/i) {+ # $* = 0; # match one line+ if ($s =~ /^From\s+(\S+)/is) { # XXX NO REACH HERE (1999/10/27 by fukachan) # $Envelope{‘UnixFrom’} = $UnixFrom = $1; $s =~ s/^From\s+.*//i;をパッチとして当てたら良い(これは確かめてないけど、たぶん当てないと動かないんでしょう)。 その後、色々動作しなかったが、MLのユーザをlistグループに追加し忘れていたり(移行なら意外とはまる穴かも?)、 # sudo adduser mluser listmakefmlの文法エラーも出た。fmlのテスト機能というのがあるので、 $ makefml test mlnameとやってみると、色々とエラーが出る。要領はおんなじ。 Can’t use ‘defined(@array)’ (Maybe you should just omit the defined()?) at /usr/share/fml/makefml line 6246. $ vi +6246 /usr/share/fml/makefml- if (defined @entry) {+ if (@entry) {次、 Can’t use ‘defined(%hash)’ (Maybe you should just omit the defined()?) at /usr/share/fml/makefml line 6257. - $key ne “$package” && $key ne “DB” && defined %entry+ $key ne “$package” && $key ne “DB” && %entry次、 Can’t use ‘defined(%hash)’ (Maybe you should just omit the defined()?) at /usr/share/fml/makefml line 6260. - (defined %entry) &&+ (%entry) &&すると、次は、 Unescaped left brace in regex is deprecated, passed through in regex; marked by <– HERE in m/$config{ <– HERE 'ML'}/ at /usr/share/fml/makefml line 7003. Can’t locate getopts.pl in @INC (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.22.1 /usr/local/share/perl/5.22.1 /usr/lib/x86_64-linux-gnu/perl5/5.22 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.22 /usr/share/perl/5.22 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base .) at /usr/share/fml/makefml line 139. (正規表現のエラーが出てるがそれはおいといて)おお、getopts.plがないのか。初情報。少し調べて、以下のパッケージを入れると良いのかも。 sudo apt-get install libperl4-corelibs-perl なんとこんな名前(perl4ってw)のパッケージが実在することに多少驚きながら、早速入れてみる。すると、fmlがようやく動いた!! 試行錯誤した内容をまとめていますので、不足等あるかもしれませんがご容赦下さい。 2017/6/1追記 上記設定だけでは流れないMLが発生した。 まず、fml.plにlibkern.plと同様の箇所があってエラーが出るので、同じような修正を行った。 — fml.pl.orig 2017-05-26 20:31:48.000576211 +0900+++ fml.pl 2017-05-26 20:33:04.256837661 +0900@@ -677,8 +677,8 @@ sub GetFieldsFromHeader ### Header Fields Extraction $s = $Envelope{‘Header’}."\n";- $* = 0; # match one line- if ($s =~ /^From\s+(\S+)/i) {+ # $* = 0; # match one line+ if ($s =~ /^From\s+(\S+)/is) { # XXX NO REACH HERE (1999/10/27 by fukachan) # $Envelope{‘UnixFrom’} = $UnixFrom = $1; $s =~ s/^From\s+.*//i;さらに/usr/share/perl5/jcode.plまでも修正してしまう。これはパッケージlibjcode-perl内のファイルなので、ubuntuに連絡をした方が良いかも。 — jcode.pl.orig 2017-06-01 17:30:16.708268955 +0900+++ jcode.pl 2017-06-01 17:30:54.168279228 +0900@@ -681,7 +681,7 @@ sub __z2h_jis { sub z2h_euc {</d iv>&nbs p; local(*s, $n) = @;- &init_z2h_euc unless defined %z2h_euc;+ &init_z2h_euc unless %z2h_euc; $s =~ s/($re_euc_c|$re_euc_kana)/ $z2h_euc{$1} ? ($n++, $z2h_euc{$1}) : $1 /geo;@@ -690,7 +690,7 @@ sub z2h_euc { sub z2h_sjis { local(*s, $n) = @;- &init_z2h_sjis unless defined %z2h_sjis;+ &init_z2h_sjis unless %z2h_sjis; $s =~ s/($re_sjis_c)/$z2h_sjis{$1} ? ($n++, $z2h_sjis{$1}) : $1/geo; $n; }ここまででMLは動作しました。まあこんな感じなので、fmlの機能を深く使っているほど、修正箇所が増える感じかもしれません。

2017年5月8日 · 2 分

CanoScan LiDE 60がWindows7(64bit)だとうまく動かない(解決済み)

以前から使っているキヤノンのスキャナ、CanoScan LiDE 60がWindows7(64bit)だとうまく動かない。これまではWindows XPのPCにつないで利用していたけど、それはやめたいので、調べてみた。 まず、スキャナをつなげる前に、キャノンのサポートページから以下のソフトをインストールする。 ・ドライバー(ScanGear CS Ver 11.1.1.1a_64)・アプリケーション(CanoScan Toolbox 4.9.4.2) これらをインストールした後スキャナをつないで動かそうとすると、以下のようなエラーが出る。(TWAINソースをオープンできません。接続を確認し、Toolboxを再起動してください。)  以前はこれで諦めていたのだけど、このメッセージを元に調べてみると、このエラーはキヤノンも認識している様子で、以下のページに記載がある。 http://cweb.canon.jp/e-support/faq/answer/canoscan/73841-1.html 「環境変数アップデートツールを実行し、正常にスキャンができるかを確認してください」とある。なんだそれ、と思いながらも指示通りにダウンロード。 ・環境変数アップデートツール(sgup.zip) あとはこのzipを展開して、exeを起動し、対象のスキャナのモデルを選ぶだけ。どうやらドライバの中の CISDS.DS というファイルを差し替えているだけの様子。 そういう不具合があるなら、はじめからドライバの中身を差し替えておいてくださいよ、キヤノン様。 CanoScan Toolboxも、使っていると頻繁に落ちるようなクオリティなので、あんまりやる気は感じられない。

2014年9月19日 · 1 分

IrfanView4.36をむりやり日本語化してみる

IrfanView4.36に、Japanese.dllが出ていなくて(日本語化できない)、がっかりしている人も多いのではないでしょうか。私もそう。 とりあえず英語のままで利用してるけれど、一部だけでも日本語が出たらいいなということで、4.35用のJapanese.dllの、バージョンの部分をむりやりバイナリエディタで4.36にしてみたら、とりあえず使えています。 具体的にはStirlingを使ってJapanese.dll開いて、Unicodeにして文字列検索で4.35の箇所を全部4.36にしたら良いです。 あとは誰かがこれを元に4.36用のdllを出してくれれば最高なんだけども(お前やれよ、とか言われそう)、これけっこう大変な作業量っぽいので、気軽に「やる」、とは言えないですね。

2013年11月19日 · 1 分

Windows XPのWindows Updateを成功させる

まず、XPでWindows Updateをかけると、とても高負荷になってしまい、全然先に進まない。これはIEの累積パッチが悪いと、日本のWSUSの公式ブログに記載があった。 つまり、Windows Updateの前に以下のインストールを行っておくことが必要となる。IE8を入れる。ただし更新は入れない。IE8の累積パッチを入れる。2013/11地点ではKB2888505になる。次に、Windows Updateの中で「Windows Genuine Notification」とやらがいつまでたっても終わらない。なので、とりあえずこのパッチだけはダイアログがでるので飛ばしてしまい、後ほどゆっくり対応するのが良いと思う。 なお、上記パッチは、実行時に以下の2つのサービスを止めるとうまくいく、という記載をどこかのページでみて、実際にやってみるとその通りであった。 Automatic Updateの停止DHCPの停止なんだよそれ、と思うが、まあうまくいけば何でも良いので、細かくは追求しない。理由を知っている人がいれば教えて欲しい。 これら2つをやることで、無事にXPのSP3直後くらいから、現在の最新にUpdateすることが可能になった。

2013年11月17日 · 1 分

サーバとのお別れ

2005年3月、就職をきっかけに専用サーバを借りました。 2013/3/31をもって運用終了し、本日ログイン出来なくなりました。途中、ディスクのクラッシュなどがありましたが、概ね8年間、動き続けてくれました。 実機は見たことはありませんが、永年使っていると何となく愛着がわきます。なので、なんだか寂しい気もします。これまでありがとう。お疲れさま。 このサーバで動かしていたものは全てVPSに移行しました。昔の専用サーバより、今時のVPSの方が速いくらいです。ただし負荷が集中すると、遅くなる時もある感じです。共用なので仕方がないですね。 CPUだと、専用サーバはNorthwoodのCeleron2.0GHzでしたが、VPSはWestmere(Nehalem)のXeonなので、隔世の感があります。(すでに一世代前のプロセサですが、そう大きく変わらないでしょう。) いまのOS(Ubuntu 12.04LTS)のサポートが切れる2017年には、また移行を考えないといけません。 その頃はどんな感じになっているでしょう。今とあまり変わらず、Haswellの次世代くらいのXeon+仮想化でしょうか。それとも、ARM高集積サーバが主流になってたりするでしょうか。そういうことを考えると楽しいですね。

2013年4月1日 · 1 分

tmpl2.class.incが最近のPHPでNotice(Undefined offset)を吐くので修正した

私の管理しているサイトで利用している、PHPのテンプレートクラス(PHP4テンプレートクラスライブラリ)が、サーバ移行でPHPのバージョンが上がったためか、Noticeを吐くようになったので、対処したメモ。もしかしたら、参考になる人もいるかもしれないので、公開します。 上記のテンプレートクラスについて簡単に書いておくと、PHP上でテンプレート的なものを簡単に実現してくれる仕組み。PerlでいうHTML::Templateに似てます。 かなり規模の小さいページであっても、ロジックとビューは切り離した方が、メンテナンスする際には便利。というわけで、上記のライブラリは大変便利に利用させて頂いております。 今回の問題は、サーバを更新した際に起こりました。PHPのバージョンが変わったことに起因していると思います。もしかしたら設定で変えられる範囲内かもしれないけど、そこまでは見ていません。 移行前の環境: Ubuntu8.04LTS(PHP 5.2.4-2ubuntu5.27)移行後の環境: Ubuntu12.04LTS(PHP 5.3.10-1ubuntu3.6)移行後の環境で上記のテンプレートクラス(tmpl2.class.inc)を走らせると、以下のようなNoticeが出ます。 PHP Notice: Undefined offset: n in /var/www/virtualhosts/domain/tmpl2.class.inc on line nnn 配列の範囲外参照が起こっているようです。 Noticeは画面には出ないみたいで、気づかない場合も多いでしょう。コマンドライン(php-cli)で動かしたりすると見えます。これも設定次第でしょうが。 そのライブラリのソースを見てみると、一番分かりやすいのがこの部分。 for ( $j = 0 ; $loopbuf[$j] ; $j++ ) ループの継続条件として、配列の範囲外を参照したときに「偽」になる、という動きに依存したコードになっています。 CとかJavaで育った人は、おそらくこういうコードは書かない(範囲外で例外が飛んだりするし)と思うのですが、PHPでこれまで何も問題なく動いていたということは、PHPの文化として許容範囲のコードだったのでしょう。かつては。 私が知る限り、PHP4の時代から、後方互換性についてはあんまり意識されていないメンテナンスが多かったように思います。もちろんプログラミング言語なんて、多かれ少なかれそういう物なのですが、「ちょっとそこを変えないでよ」という問題で頭をかかえたり、PHPを捨てて他の言語に移った人も少なくないでしょう。今回の問題もその一環だと想像しています。 この問題を修正することはそう難しくありません。例えば以下のように修正すればよいです。 for ( $j = 0 ; $j < count($loopbuf) ; $j++ ) これで、配列の範囲外への参照はなくなります。 あと、もう一カ所直しました。基本的には同じ感じで修正しています。(ただし、これはちょっと言語依存的なやり方です。評価の短絡をしているものと信じて&&でつなげています。) 修正前 for ( $i = 0 ; is_array( $this->loopitem[$loopmode][$i] ) ; $i++ ) 修正後 for ( $i = 0 ; $i < count($this->loopitem[$loopmode]) && is_array( $this->loopitem[$loopmode][$i] ) ; $i++ ) 利用の仕方によっては、他にも直す箇所がでてくるかもしれませんが、私の利用している範囲ではこの2カ所に手を入れることで、上記のNoticeが出なくなりました。

2013年3月26日 · 1 分

Javaプログラム内でCPU利用時間を取得する

Linux上のJava1.5以降なら、OperatingSystemMXBeanを使うと、プログラムのCPU利用時間(ナノ秒単位)を取得できる。 OperatingSystemMXBean osBean = (OperatingSystemMXBean) java.lang.management.ManagementFactory.getOperatingSystemMXBean();System.out.println(“CPU Time: " + osBean.getProcessCpuTime() / 1000000000 + " secs”); こんな感じ。Windowsで動くかどうかは試してません。

2013年3月1日 · 1 分