アナログCPU:5108843109

ゲームと音楽とプログラミング(酒と女とロックンロールのノリで)

('ω') < イザユケエンジニャー

とりあえずローカルでWordPressを動かしてみる

Windowsでxampp使って動かしてみます。

xamppをインストールして使える状態にする

本筋と違うので省略。
たぶんPHPMySQLが動けばOK。

WordPress(zip版)をダウンロードして解凍する

以下からzip版をダウンロードし、解凍します。
https://ja.wordpress.org/download/

解凍後はお好みの場所に設置します。
xamppやhostsの設定ができるなら設置した上で設定を行い、
設定できない・したくないならxamppのルートディレクトリに置きます。

設定方法は前に書いたことがあるので貼っておきます。
複数プロジェクトの開発環境構築 - アナログCPU:5108843109

使用するデータベースと、そのDBに対して全権限を持つユーザーを用意する

こんな感じで。
phpMyAdminとか使うなら、ユーザー作成時に「同名のデータベースを作成してすべての特権を与える」にチェックを入れるだけでOKですが、作成したデータベースの照合順序には注意)

CREATE USER 'test_wp'@'localhost'
IDENTIFIED BY 'testpass';

GRANT USAGE ON *.* TO 'test_wp'@'localhost'
REQUIRE NONE WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;

CREATE DATABASE IF NOT EXISTS `test_wp`;
GRANT ALL PRIVILEGES ON `test\_wp`.* TO 'test_wp'@'localhost';

ALTER DATABASE `test_wp` DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci;

データベースの情報をWordPressに設定

解凍したWordPressディレクトリの中にある「wp-config-sample.php」を複製し、「wp-config.php」にリネームします。

リネームしたら、テキストエディタWindows標準のメモ帳はNG)で必要な部分を編集します。

define('DB_NAME', 'test_wp');      // DB名
define('DB_USER', 'test_wp');      // ユーザ名
define('DB_PASSWORD', 'testpass'); // パスワード
define('DB_HOST', 'localhost');    // サーバ(今回はローカルなのでlocalhost)
define('DB_CHARSET', 'utf8mb4');   // 文字セット

// 以下はユニーク値であれば何でもOK?
// https://api.wordpress.org/secret-key/1.1/salt/ で自動生成してコピペするのが早い
define('AUTH_KEY',         '?.Pf3]H-SFj9G3...');
define('SECURE_AUTH_KEY',  'Oyb-?x|s[H8v#T...');
define('LOGGED_IN_KEY',    'jK%+*2~$;;<HBw...');
define('NONCE_KEY',        'a62P|l?5v%N^l0...');
define('AUTH_SALT',        'ED~c+EzNPt|jl/...');
define('SECURE_AUTH_SALT', '0VM/Ba{O,l1q+h...');
define('LOGGED_IN_SALT',   'F~Cy$H*Je[6v7-...');
define('NONCE_SALT',       '>XF[la.LJGOu?k...');

インストールする

/wp-admin/install.php にアクセスします。

自分の場合は

http://testwp.localhost/wp-admin/install.php

でした。

アクセスすると以下のようなフォームが表示されますので、
必要事項を入力し「WordPressをインストール」を押せば完了。

f:id:honey8823:20190412122740p:plain

ここで、パスワードが脆弱だと先に進めません。
ローカル環境だから晒すけど
「hogehogefoo」だとダメで
「hogehogefooo」だと普通になり(これなら登録OK)
「hogehogefooooo1234」は強力と言ってくれるのでこれで登録しました。
「hogehogefoo1234」も普通だそうです。
単純な文字数や種類だけでなく、一般的な単語かどうかなども見ているようで
「applicatio」はOKなのに「application」はNGでした。

また、「後から変えられますよ!」みたいなこと書いてますけど、ユーザー名は変えられませんでした。なんでや。(アカウント追加はできるのでどうしてもという時は乗り換えられるけど…)

表示確認する

「/wp-admin/」で管理画面、「/」で表側の画面が確認できます。
これでとりあえず動かしてみる段階まで完了です。

既存メールアドレスでgoogleアカウントを使えるようにする

これ常識なのかしら…

会社のメールアドレスでgoogleアカウントを使いたい、ということもままあるのですが
今までは設定された状態で入社して「これ使ってね」か、もしくはgoogle禁止だったのでしらなかった。

googleアカウント作るときに「代わりに現在のメールアドレスを使用」をクリックすると
そこにアドレスを入れられるようになるので、そのまま画面の指示に従って手続きを進めるだけ。以上。
f:id:honey8823:20190228155854p:plain

メールそのものをgmailで使うには更に設定とか必要だと思いますが、
スプレッドシートやらドライブやらを使うならこれだけで充分。

Twitterのタイムラインを設置する

↓こういうやつ。意外と簡単でした。

作り方

公式でツールを用意してくれています。
これに従って進めて、出来上がったHTMLを貼り付けるだけ。

詳しい使い方はヘルプページにあります。
タイムラインを埋め込む方法

補足

…とだけ書くのも何なので。

指定ユーザーのツイートだけでなく、
特定のツイートのみ・リスト・モーメント・ハッシュタグ…など、いろいろな指定が可能です。
最初のURL入力時にもこのようにサジェストしてくれます。
f:id:honey8823:20190222120057p:plain

また、URLと表示形式を指定するだけで完成しますが、少しだけデザインを調整できます。
f:id:honey8823:20190222121101p:plain
①をクリックで調整画面が出てきます。(②で完成したHTMLをコピーできます)

この調整では横幅縦幅をpx指定する必要がありますが、
後からHTMLを直接いじればパーセンテージだろうがemだろうが好きにできますので、
そういう調整をしたい場合はとりあえず適当な値を入れればOKです。
ただ注意が必要なのは、横幅に応じてツイートの文字サイズが変わること。
おそらくjsやcssなど駆使すれば調整は可能ですが…

Atomエディタの初期設定

PHPでの開発作業用のエディタとしてずっとEclipseを使っていたのですが、
(前の会社での指定がそれだったこともあり)
自前のPCに入れるにはちょっと重いので、試しにAtomに乗り換えてみます。

まだ試している途中なので、何かあったら追記します。

やること一覧

  • インストールする(公式サイトからダウンロードしたexeを実行)
  • 起動後、出てくる青いメッセージボックスを消す(「No, Never」を押す)
  • 日本語化する(File>Settings の設定内「Install」から日本語化パッケージをインストール)
  • 「Telemetry Consent」タブを再表示されないようにする(YesかNoの好きな方を押す)
  • 「Welcome」「Welcome Guide」タブを再表示されないようにする(Welcomeタブのチェックをオフにしてから閉じる)
  • スペルチェックを無効化する(spell-checkパッケージを無効にする)
  • ファイル末尾に改行を自動で加える設定をオフにする(whitespaceパッケージのEnsure Single Trailing Newlineをオフにする)
  • タブ幅や見え方を設定する(設定画面の「エディタ設定」内を調整)

以下、それぞれについてごちゃごちゃ書いているだけです。

インストールする

公式サイトはこちら。

Windowsの場合、ダウンロードしたexeを実行するだけでインストール完了。

よくわからないメッセージを消す

f:id:honey8823:20190213135901p:plain

さっそく起動すると、こんなメッセージが出てきます。
なんやねん。

メッセージの意味がよく分からない。
直訳すると

現在、Atomは「atom://」URIのデフォルトハンドラとして設定されていません。 Atomに「atom://」URIを処理させますか?

か。
意味がわからない。
ぐぐってみると、みんな「No, Neverを押しましょう!」って書いてる。
まあそれで問題なさそうに見えるので押した。

日本語化する

英語アレルギーは早くも心が折れそうだったので日本語化できないのか調べたら大丈夫だった。

File>Settings で設定メニューを開き、
「Install」内で日本語化してくれるやつを探してインストール。
f:id:honey8823:20190213141040p:plain
どうやらこれはアドオン的なものらしい。他にも便利なものはあるだろうからまたそのうち使いそう。

不要なタブをデフォルトで開かないようにする

なんかごちゃごちゃとよくわからんタブがいっぱいあるので、全部閉じて一旦再起動してみましたが…
さっき自分で開いた設定タブ以外は復活してきました。

そしてコレ、よく見たら左右で別々のタブを開けるようになっているんですね。

まずは左側、「Telemetry Consent」タブ。
これはよくある「利用状況を開発チームに送信してもいいですか?」みたいなやつですね。
YesかNoの好きな方を選ぶまでは出続けるようです。
自分の場合は「Yes」を選択して一度再起動してみると、確かにこのタブは出なくなりました。
(新規タブがさっきまで左側に出ていたのが、何故か右側に出るようになりました)

そして同じく左側、「Welcome」タブ。
「ヘルプを見るといいよ!」みたいなことが書いてあるようです。
よく見るとチェックボックスがあり、「Atom起動時にWelcomeGuideを表示する」みたいなことが書いてあります。
このチェックを外してからタブを閉じて再起動すると、左側の「Welcome」と右側の「Welcome Guide」が出なくなりました。

ちなみにWelcome Guideをもう一度見たい場合、
メニューの、ヘルプ>ウェルカムガイド を選択するとまた開いてくれます。
要約するとこんな感じですね。

  • プロジェクトを開くと左側でツリービューが見れるよ
  • git/githubと連携できるよ
  • 「Teletype」を使って、リアルタイムでチームメンバーと作業できるよ
  • パッケージをインストールすると好きなようにカスタマイズできるよ
    • さっき日本語化したアドオンみたいなやつですね
  • テーマをインストールすると好きなデザインにできるよ
    • パッケージインストールのところに「Themes」ってあった気がするからたぶんそれ
  • CSSでスタイルを好きに変えられるよ
  • Atomの起動時の動作をJavaScriptCoffeeScriptで変更?できるよ
    • メニューの、ファイル>起動スクリプト でそれらしいのが開けました
  • スニペット機能を使うと、数文字入れるだけでコードブロックを出してくれるよ
    • メニューの、ファイル>スニペット でそれらしいのが開けました
  • Ctrl+Shift+pでコマンド一覧が見れるよ

スペルチェックを無効化する

試しに適当な文章を日本語で書いてみたら、ほぼ全文に赤線が…。
なんじゃこりゃと思って調べてみると、どうやらスペルチェックが働いている模様。

これはオフにできました。

メニューから、ファイル>環境設定 で設定画面を開きます。
パッケージ内にある「spell-check」をdisableにすればOK。
f:id:honey8823:20190213145201p:plain

ファイル末尾に改行を自動で加える設定をオフにする

最後に改行が入っていない状態で保存すると勝手に改行を追加されて困惑したのですが、
そういう設定項目がありました。

これをオフにするには、
メニューから、ファイル>環境設定 で設定画面を開きます。
パッケージ内にある「whitespace」の「Ensure Single Trailing Newline」をオフにすればOK。
f:id:honey8823:20190213155538p:plain

タブや見えない文字の処理を調整する

タブ文字の幅や、空白・タブ文字などの見えない文字について調整します。

メニューから、ファイル>環境設定 で設定画面を開きます。
エディタ設定内にある項目を調整します。
今回は「不可視文字を表示」をオンにし、「ソフトタブ」をオフにし、
さらに「タブ幅」を4に変更しました。
f:id:honey8823:20190213160054p:plain

(今後)参考(にしたい)記事


かなり膨大なので随時チェックしようと思う。

データ復旧業者のこと

先日、surfaceSSDが壊れて復旧(?)するまでの流れを書きましたが

surfaceのSSDが突然死した話 - アナログCPU:5108843109

最後に、データ復旧業者についてちょっとだけ触れていたのをもう少し掘り下げておきます。

最初に依頼した「スマホドック24」さん

公式サイト
https://www.smaphodock24.jp/

最初はデータ復旧というより修理を考えていたので、復旧業者とはちょっと毛色が違うかもしれませんが。

メールのやりとりで詳しく相談に乗っていただき、最初から安心できました。
症状から考えられる原因をいくつか提示してもらえましたし、
発生しうる追加費用や所要日数なども明示されていました。
surfaceならではの諸々の問題もきちんと把握されていて、さすがプロだなーという印象。
また、この時点では「診断と見積りをして、実際に修理やデータ復旧を行うかを決めてもらうことができる。そこでやめる場合は診断料のみかかる」と聞いていました。

数日後店舗に持ち込んだときには、メールくださった方とは別の店員さんによる対応で、
「あらかじめメールでご相談させていただいているのですが…」と言っても一切確認しようとせず
改めて説明し直すハメになったところには不安がありましたが、
その方の話す内容自体には特に変なところもなく、本体を預けてきました。
4~5日くらいで報告できる、ということで待つことに。

少し早い2~3日後に電話があり、「結構厳しいのでさらに1週間くらい見たい」と。
予定より延びることを少し早めに連絡いただけたのは好感が持てました。

で、さらに1週間後、「SSDの物理障害で復旧も修理も無理。診断料は不要」と連絡をいただきました。
えっ???成果が出なかったとはいえ、何日も調査してもらったのに無料???

何も改善しないまま10日ほど経ったわけで、確かに一切プラスにはなっていないのですが、それでも好印象の業者さんでした。
もし次に何かあったらまたお願いしようと思いました。

次に依頼しようとした「デジタルデータリカバリー」さん

公式サイト
https://www.ino-inc.com/

こちらには結果的に問い合わせしただけなのですが、印象はめちゃめちゃ悪かったです。

まず公式サイトから問い合わせると、「メールでのやりとり希望」も「電話できる時間帯」指定も全く無視しての電話。
これだけで充分「うわっ…」という感じでした。

しかも、向こうから電話をかけてきたにも関わらず、
こちらが問い合わせで送った内容を読んでいないかのような言い回し。
さらに技術的な知識も怪しそう。
事前に自分で試した内容などを説明したりしても、なーんか理解してなさそうな受け答えだし。
こちらがプロに相談する立場のはずなのに、なんで詳しく解説して差し上げなきゃならんのだ?
わざわざ先に機種とか症状とか送ったんだから、せめて理解できる人が電話してくればいいのに…。

surfaceだつってるのに、分解する場合のリスクについて触れもしないし、
BitLockerの回復キーが必要とも言ってこない。
スマホドックさんは両方とも最初のメールに書いてくれてたんですけど。
何も言わないなら回復キーなんて教えないですけど本当に大丈夫??
それともsurface使いなら当然知ってるから言わなくていいよねってこと?いやーまさかね。

本当になんでわざわざメールじゃなくて電話してきたのかって感じの内容でした。
何故か「復旧したいのはどのファイルですか」と聞かれて(何故なのかは後で知ったので後述)
困って「できる限り多く」としか答えられなかったんですが、
ファイルパスなんて口頭でやりとりする内容じゃないでしょ…。
そもそも技術的にだいぶ怪しい感じのする人相手に「hostsと、xamppのhttpd.confと…」とか言っても通じなさそうな気しかしないし。

その情報必要?少なくとも口頭でやりとりする必要ある?つーかお姉さん理解できてる?と言いたくなるようなやりとりをひたすら続け、10分以上取られました。勘弁してくれ。
しかも期間や費用など具体的な話には全く至らず、唯一の具体的な結論は「○月○日の○時に持ち込み予約」だけ。

さすがに不信感が大きすぎたのでググりまくったら案の定悪評もぼちぼち見つかるし、それ以上に怪しい擁護サイトもちらほらあるし。
(ちなみに擁護サイトは特徴がありすぎてバレバレだと思う…一周回って逆に同業他社の嫌がらせのような気すらしてくる…)
あーやっちまったかーと思いましたが、それでもとりあえずその時点ではひとまず診断と見積りはお願いするつもりでした。
今回はそもそもダメ元だったし。

…が。
申し訳ないことにその後自力で解決したので、結局キャンセルすることに。
それで予約確認メールに返信する形で連絡すると、なんと無視。えぇ…(ドン引き)
予約日過ぎても電話がかかってきたりするわけでもなかったので、おそらくキャンセル処理はされているのでしょうけど。

こちらも技術力の高さは分かりませんし、もしかすると完全復旧してくれた可能性も…なくは…ないですが…
(うぶんつ作戦が完全失敗してる以上、たぶん可能性は限りなくゼロ)
こういう窓口対応の態度に目をつぶれるほど心が広くないので、恐らくもう問い合わせすることもないでしょう。

…と、ガチで問い合わせしかしてない感想だけなのもアレなので、
実際に依頼して復旧成功している方々のレビューも貼っておきます。
【悪評判ガチレビュー】デジタルデータリカバリーでデータ復旧!費用も公開!
デジタルデータリカバリーにデータ復旧依頼して失敗したと感じた – とあるへたれ。

問い合わせする前に読むべきだったね!

悪徳業者も多い業界らしい

2社とも、「窓口になっていただいた方々と話した感想」にしかなっておらず
(偶然やりとりしたのがその方々だっただけで、他のスタッフさんと当たっていたら印象が変わっていた可能性はありますね)
悪徳かどうかまではちょっと判断つきませんが、アレな業者が多い業界ではあるようです。
いくつか見かけたのを貼っとく。

「データ復旧率90%以上」を疑え、社名変えながら荒稼ぎする悪質業者をデータ復旧業界歴23年の本田氏が指摘 - INTERNET Watch
悪徳データ復旧業者に注意!成果報酬型 | ファイル復元業者@比較
SSDがクラッシュ! 初めて痛感した「データ復旧」の難しさ【前編】 - 日経トレンディネット
悪徳業者にご用心!信頼できるデータ復旧業者の探し方 | データ復旧大図鑑 – 自分で解決!ファイル復元

まあ、そうですよね。そんなもんですよねー。

何故か「復旧したいのはどのファイルですか」と聞かれて(何故なのかは後で知ったので後述)

これについては貼った記事の中にもありますが、
「指定のファイルが復旧できたかどうかで成功報酬が変わるから」
ということのようですね。
それならそうと言ってくれればって感じなんですが。
…あ、でもそれだと「絶対に存在しないファイルを1点だけ」指定されたりしたら困るから、とかですかね。
こちらとしては「復旧したいファイル??言ったものしか納品されないのは困るし全ディレクトリ構造覚えてるわけじゃないし…」と思って「できる限り多く」とか言うしかなかったんだけど。
何にも具体的な説明をしてくれないお姉さんだったので料金系のルールもわかりませんでしたし。

2度目の転職から8か月経ちました

過去の転職エントリのようなものはこのへん
転職エントリ(再現) - アナログCPU:5108843109
退職が決定しました - アナログCPU:5108843109

今は、2~3年という期間限定の約束でSESしてる最中です。
(SES:システムエンジニアリングサービス。IT系の準委託契約。お客様先に常駐して開発作業とかやる)
先週、入社から8ヶ月入っていた初現場を卒業して別のところに移ったのと、
新卒で入った会社の同期会をやってきたので、ちょっとした区切りとしていろいろ書き残しておきます。

SESも悪くないかも

そもそもSESという存在自体賛否両論ですし(※下記記事参照)
自分としても最初の会社での経験からやや敬遠してはいましたが、意外と悪くないかもと思いました。

日本のIT業界のためにSESは消滅するべきだと思う - 株式会社アクシア
IT業界でSESがクソって言われるのに対して実体験を元にした反論|あれっくす / 株式会社マンハッタンコード|note

何が良かったかというと、
いろんな会社を一人で移りながら働けるのは武者修行感があります。
自社に腰を据えて、というスタイルよりも引き出しの増える速度が上がります。
技術的なことだけでなく、業種ごとの知識とか、アイデアとか、働き方とか。
(もちろん、社内で多種多様な仕事ができる場合もありますし、SESでも数年単位で契約が続く場合もあるでしょうから、一概には言えませんが)
最初の会社では部署単位で常駐してたので上司フィルターがかなり大きかったのだな、と分かりました。

極度の人見知りなので新しい環境に移るのは億劫ではありますけど、
人間関係については割り切って働けるというのはプラスでもあります。

ただ…
SESの営業さんや現場プロパーさんに
よく「それだけできるならフリーランスでもやっていけますよ!」と言っていただけますが
自社という後ろ盾がないのにいつ切られるかわからないフリーランスSESは精神的にキツそうだなと思います。
不況にめちゃくちゃ弱いので、それでも選んでもらえるかもしくはすぐにでも転職できるような自信と腕がないと。
ベーシックインカムがあればフリーランスでいいかなと思うけど…。

前の現場はヤバかった

なんか、何やっても炎上する会社でした。不思議なことに。
単純な人月計算で進めるn次請けプロジェクトの末路とでも言うべきでしょうか。
度重なる仕様変更とそれを受け入れる営業、無茶な仕様変更に対する突貫実装、ソースコードのバージョン管理が下手くそでデグレするやつ、スケジュールに間に合わせるための人員追加、人員の追加削減を繰り返すことで何故かいつの間にか完全に入れ替わっているメンバー、そして赤字…
絵に描いたような炎上をほとんどのプロジェクトでやっていて結構意味が分からなかった。学習しろよと。
契約終了も突然告知されました。「この間契約延長のお願いしたけどやっぱナシ、金銭的に厳しいから来月で終了ね!」と連絡が来たそうで。行き当たりばったりかよ。

いや、SESとして入る分には「とりあえずいろんなことができるから勉強になる」で済みますし、そんだけ炎上する割には雰囲気もゆるゆるで楽ちんだったのですが
絶対に社員にはなりたくない系の会社でした。ヤバかった。

SESを何人も入れてましたけど、入れ替わりもまあまあ激しく、8ヶ月のわたしは長い方だったようです。
(最終日にはベテラン社員の退職かっていう勢いでプレゼントもらったり何人にもお見送りいただいたりしました…)

次の現場は…

久しぶりの8時間労働+炎上がデフォルトの環境にちょっとうんざりしていたので
稼働は安定しててできれば8時間未満の現場を探してもらいました。
おかげで「7時間労働・残業ほぼなし(今のところ自称)」の現場に拾ってもらっています。
通勤時間もあんまり変わらないし、もちろんスキル的にもマッチしてそうなところ。

価値観の相違はストレス

最初の会社はやっぱり価値観の違いが激しすぎたんだなーと今でも思います。
転職への後悔が未だに皆無。

この間同期会をしてきて…といっても3人飲み、うち1人はまだ在職で。
「前の会社も次の現場も7時間労働だよ~」という話をしたら、在職同期が「えっ、7時間じゃ仕事終わらなくない?」と。
その時は何言ってんだコイツと思って咄嗟に何も切り返せずだったんですが、
あの会社はあくまで「既に決まっている仕事を納期までに片付ける」という考え方だったんだなーと思いました。
一方、前の会社は「1日の労働時間を大前提としてスケジューリングした仕事をする」という考え方だったのでもちろん7時間で終わるし、仮に終わらなければ普通はリスケしてたわけです。定時を過ぎると「それほんとに今日やらなきゃだめ?」が合言葉。
どっちが正しいかは置いといて、この差はストレスになるだろうなーと思います。
個人的には理解できないですが「毎日ほどほどに残業するくらいがちょうどいい」という人もいるようですので、お互いに。
当の同期も、数年前も先日も「毎日ダラダラ1~2時間残業してる」と発言していて、「ダラダラ」という表現をしつつもその状況を脱しようとはしないので、毎日2時間くらいの残業が普通という雰囲気のあの会社には合っているのでしょう。煽りとかじゃなくてマジで。

だらだら働く人たち
だらだら働くことは悪なのか|えとみほ(江藤美帆)|note

二度目の転職もたぶん成功

前の会社がかなり居心地の良いぬるま湯だったので後悔しないか心配はありましたが、結局なんやかんやでスムーズにやっています。
自分でも意外なことに、戻りたいともそんなに思わないし。
やっぱり居心地(価値観のズレの小ささ)は重要だな。

surfaceのSSDが突然死した話

2016年に購入し、ついこの間の修理交換を経て使い倒してきたSurface pro4ですが

ついに壊れました。

結論としては元通りにはなりませんでしたが、
他の人や今後の自分の参考になるかもしれないので色々残しておきます。

症状

電源を入れるとこんな感じになりWindowsが起動しない。

f:id:honey8823:20190131120506j:plain:w300

試したこと一覧

  • データを残して修復
  • 自力でデータをサルベージして本体を初期化
  • データ復旧業者に調査を依頼
  • 以前の修理交換時のデータ移行に使用した外付けHDDのデータ復旧
  • DVDに焼いたUbuntuを起動し、そこからファイルをサルベージ
  • データ削除を伴う初期化

まあ、成功したのは外付けのデータ復旧だけなんですけどね。

試したこと その1

まずは「データを残して修復」みたいな項目があったのでそれを試してみました。

「無理やったわ!なんも変更してないから勘弁してや」みたいなメッセージが表示されて終わり。

しゃーないな。

試したこと その2

次は「自力でデータをサルベージして本体を初期化」を目指しました。
コマンドプロンプトと外付けHDDでなんとかする作戦です。

コマンドプロンプトを起動しようとすると回復キーなるものが必要と言われたので調べてゲット。
スマホからMicrosoftアカウントで見れたのでスクショ撮って保存。

クソ長い回復キーを入力するとコマンドプロンプトが無事起動。
ところが…

まずCドライブへ移動しようとすると

cd /D c:

こんなエラーが。

The volume does not contain a recognized file system. Please make sure that all required file system drivers are loaded and that the volume is not corrupted.

ファイルシステムがないよ」だそう。
いやいやまさか…。

まあとにかくこの方法はダメそう。

ついでにチェックディスクをしてみると

chkdsk c:

The type of the file system is RAW. CHKDSK is not available for RAW drivers.

……
未フォーマットになってる?
そんなまさか…。

試したこと その3

ここで、「とにかくデータの復旧が第一」と考え、データ復旧業者を調べて調査を依頼しました。
Surfaceは分解が極めて困難なのは知ってたので、まあダメ元です。
とりあえず預けて1週間ほど待ったところ、「SSDの物理障害のためデータ復元・修理不可」との回答。
調査費用は不要というめちゃめちゃ親切な対応には感謝しつつ、端末を引き取って振り出しに戻りました。

本筋とは全く関係ないんですが、ここで実はこの端末がSurface pro5だったことが判明。
以前の故障交換時に5に変わった模様?

試したこと その4

セカンドオピニオンを求めて往生際悪く別の業者にも持ち込みの予約をしつつ、
改めて自力でなんとかできないかいろいろ調べている途中、ふと思いつきました。
「以前の修理交換時に外付けHDD経由でデータ移行したので、そちらを復旧すればよい」と。

そもそも外付け側に残してあったデータも多いですし、
移行時に外付けから移動してしまったデータさえ復旧すれば、交換前のデータはすべて揃うことになります。
しかも交換~故障までは約2か月。
その間の惜しいデータもいろいろありはしますが、これに成功すれば精神的ダメージはものすごく少ないです。
これ思いついてよかった。

しかも、データ復元ソフトってだいたい有料なので「失敗したら無駄じゃん」と思うのですが、
復元できるファイルを見る+少量の復元なら無料のソフトがありました。

ということで、正常に稼働しているPCを使って以下手順で復元を試みました。

  • EaseUSをインストール
  • ソフトを起動して外付けを接続、スキャン開始
    • 数時間かかりました…放置して寝た
  • スキャン完了後、必要なファイルを選んで復元開始
    • 数十分~1時間くらい?かかりました…放置して出勤した
    • 結構なサイズの復元を試みたので課金しました
  • 復元したファイルをチェックして問題なければ完了

全部チェックしたわけではありませんが、見た感じではほとんどのファイルが復元できたようです。
(どういう理屈なんだろう…)
ファイル名が変わっているものや何故か重複しているものもあるようで、改めて整理するのは骨が折れそうですが、もうそんなことどうでもいい。神か。

もうこれでデータ復旧関連の悩みはほぼ解決です。
予約していた業者にはキャンセルの連絡入れました。

試したこと その5

もちろん、本体交換後に新しく作ったデータや復元に失敗した数少ないデータをサルベージできればそれに越したことはありません。
ということでもう一つ試してみました。
「DVDに焼いたUbuntuを起動し、そこからファイルをサルベージする」という方法です。

参考
起動しないパソコンからUbuntuを利用してデータを救出 | データ復旧大図鑑 – 自分で解決!ファイル復元

用意するもの

  • DVD-R
  • ISOイメージをDVDに焼けるPC
  • UbuntuのISOイメージ(ダウンロードするだけ)
  • Surfaceにつなぐための外付けDVDドライブ
  • USBハブと外付けストレージ、もしくはネット環境など、ファイルを移せる用意
    • ひとつしかないUSBポートがDVDドライブに取られるため

手順

  • 正常動作するPCから、UbuntuのISOイメージをDVD-Rに焼く
  • 故障したSurfaceで、DVDのUbuntuを起動できるよう設定する
    • ボリュームの上ボタンを押しながら電源ボタンを押して起動(ボリュームの上ボタンはそのまましばらく押しっぱなし?)
    • UEFIBIOSみたいなの)が起動するので、以下設定を変更
      • Security > Secure Boot configuration をNoneにする
      • Boot configuration にて USB StorageのみONにする
  • USBから外付けDVDドライブをつないで再起動
  • Ubuntuが起動するのを待つ
    • USB経由だからか、そこそこの時間がかかりました
    • もし「インストール」か「お試し」かを尋ねられたら「お試し」を選ぶそうです(尋ねられませんでした)
  • 必要なファイルがあれば任意の方法でサルベージする

どうやっても目当てのファイルは一切見つからず。
ちなみにファイルを探すには以下サイトあたりを参考にするとよいかもしれません。

参考
UbuntuのHDD管理 その1 - HDDの管理方法 - kledgeb

試したこと その6

データ復旧はここまでで諦めました。
そりゃ元通りが理想ですが、復元業者に何万~何十万も払うほどではなくなったので。
外付けHDD内の削除済みデータを復元できただけで大収穫です。
ということで、次は本体。

再度普通に起動して「データ削除していいので完全初期化」をしようとしましたが、あっさり失敗。
以上。

今後どうするか

本体はまた修理交換に出すか、もしくは新しいsurfaceでも検討するか…と思い、
microsoftに電話相談するため、microsoftアカウント内でシリアルコードを確認したく開いてみると。

f:id:honey8823:20190131145053p:plain

…?
保証…期間内…?
どこから数えて1年なのかはさっぱりですが。
(そしてほんとにpro5だ…)

なんとWEB上で交換を申し込めてしまうので、さくっと申し込みました。
あとは前回の交換と同じ流れになりそうです。やったぜ大勝利。

<追記>交換完了です

無事に交換品を受け取れました。
f:id:honey8823:20190205100256p:plain
また保証期間がちょっと残ってる。もしかして3か月つけてくれてるのか。
ぼちぼちセットアップしていきます。

1/16 故障発覚・データ復旧業者に問い合わせ
1/19 データ復旧業者に本体持ち込み
1/26 復旧・修理不可との連絡をもらう
1/28 死亡宣告された本体を引き取り
1/29 外付けから削除したやつ復元すればいいじゃんと思いついて実行
1/30 サルベージ成功・うぶんつ作戦試して失敗・初期化も失敗
1/31 本体が保証期間内であることに気付いて交換申し込み
2/1 本体をmicrosoft宛に郵送
2/5 交換品が自宅に郵送されてきた

microsoftの対応早すぎワロタ
2/2~3が土日だし2/5の朝8時台に届いたので、2/4に受取~発送の処理全部やってくれたっぽい。

ということで

今回は「本体は無料で交換」「データはまあまあ復旧」というほどほどの結果に落ち着きました。
まだ交換はできていませんがとりあえずめでたしめでたし。

復旧にあたっては以下が幸運ポイントでした。

  • ごく最近本体の交換を行っていたこと
    • おかげで本体の保証期間内だった
    • 無に帰したデータは本体交換後~故障の期間の分なので、期間が短い分ダメージが少なかった
  • 本体交換にあたってデータ移行に外付けHDDを使っていたこと
    • クラウドを介して、とかだと消したデータの復旧は難しそう
  • しかもその外付けHDDは本体交換後は全く使っていなかったこと
    • データを繰り返し書き込んだり消したりしていると復旧が難しくなっていくので

逆に以下は反省すべきポイントです。

  • そもそもデータのバックアップはもう少しきちんと取っておくべき
  • 安易にデータ復旧業者に頼まない方が良かった
    • 今回は何も起きませんでしたし実際に依頼したところはごく普通でしたが、依頼後に調べてるとなかなか闇の深い業界だったようで…
      • 2軒目の業者がなかなか悪名高かった上に、キャンセル連絡に返答すらよこさないんですがこれは…
    • 結局どこの業者なら信頼できるのか、口コミ見ても大変分かりづらい業界だなーと思いました
    • あと復旧費用めちゃめちゃ高い

スペース文字を無視して検索する(力技)

※書き方はMySQL前提です

たまーに、DBに登録されているデータのスペース文字を無視して検索を行いたい場合があります。

速度を求める必要がある場合は、検索用カラムを別途用意しておくのがよいのですが、
そうでもない場合(手作業で一時的に検索したいだけ、など)は以下のようなクエリで全半角スペースを無視して検索できます。

SELECT * FROM `テーブル`
WHERE REPLACE(REPLACE(`カラム`, ' ', ''), ' ', '') = '検索ワード'

単純にREPLACE関数を用いて、
「「対象カラムの半角スペースを空文字に置換した文字列」に対して、さらに全角スペースを空文字に置換した文字列」
と比較しているだけです。
もちろん同様の方法でスペース以外の特定文字を無視することもできますし、LIKE検索で部分一致検索も可能です。

対象カラムにインデックスを張っている場合でも全く効きませんので、レコード数が多い場合は時間がかかる可能性があります。

要素の表示・非表示を切り替える

個人的に開発作業をするときは、
非表示用のクラスを定義しておいて、そのクラスを追加削除することで対応しています。

CSS ※AdminLTEなんかだと、同様の定義が元から含まれています

.hidden {
    display: none;
}

HTML

<div class="hidden">
  ここは表示されない
</div>
<div>
  ここは表示される
</div>

jQuery

// 対象の要素をobjとして…
var obj = $(" ... ");

// 非表示にする
obj.addClass("hidden");

// 表示する
obj.removeClass("hidden");

// 非表示・表示を切り替える
obj.toggleClass("hidden");

// 表示か非表示かの判定
if (obj.hasClass("hidden")) { /* 非表示である */ }
else { /* 非表示でない */ }


最初はこういうの↓を参考にしていたのですが、クラスの追加削除で済ませる方がシンプルだなと思いまして…。
jQueryで要素の表示・非表示を判定する方法: 小粋空間


まとめていて気付きましたが、
jQuery部分は共通関数にしてしまってもいいかもしれませんね。

function displayOn(obj){
    obj.addClass("hidden");
}
function displayOff(obj){
    obj.removeClass("hidden");
}

// 呼び出すときはこんな感じで済む
displayOn($(" ... "));

WinSCPとWinMergeを連携する

特に複数人で開発する際、FTPで直接ファイルをアップロードするとき、作業がぶつかって困ることがありました。
(つーか複数人でFTPでっていうのが…そもそも…うん…)

簡単にファイルの差分を比較する方法はないのかと思い調べてみたら、WinSCPWinMergeが連携できました。
やったぜ。

  • WinSCPWinMergeがなければインストールする
  • WinMergeのインストール先フルパスをメモする
  • WinSCPツールバーから、「オプション」>「環境設定」を開く
  • 開いたウインドウ内の「コマンド」から「ファイルの比較」を編集
  • コマンドを書き換える(※後述)
  • 必要に応じてショートカットキーを割り当てる
  • 「OK」で保存
  • ツールバー上の適当なところで右クリックし、「カスタムコマンド」を有効にする

以上。

書き換えるコマンドはこんな感じ。パスはWinMergeのものにします。

"C:\Program Files\WinMerge\WinMergeU.exe" "!^!" "!"

ローカル側とサーバー側でそれぞれファイルを選び、「ファイルの比較」を押すか設定したショートカットキーでWinMergeが起動します。
あとはWinMerge側で編集・保存することもできます。

参考(というか「詳細はこちら」レベル)
WinSCPとWinMergeを連携して差分アップデートを楽にする | PC ウェブログ