しぃぶろぐ。

仕事とか技術関係のこと。他色々

2017年10月のWindowsUpdateはお祭りだったよ!

もちろんよくない意味のほうのお祭りです……。

今現在も対応中で、今起動待ちの時間でこれを書いております。

何があったか

詳細は省略しますが、マイクロソフトさんがWSUS(WindowsUpdateを組織で管理できるやつ)に間違った配信情報を流してしまったとのことです。

なので、今回被害にあったのはWSUSを使うような組織=企業ユーザーのみですね。 一般の方はご安心ください。たぶん大丈夫です。たぶん。

どういう風に壊れたか

単純に言えば、Windowsが起動しない。です。

セーフモードも起動しない。

システムの復元も復元できないです。

どうやって対応してるか

自動修復に失敗した画面からメニューを進んでいくと、コマンドプロンプトにたどりつけます。

あの黒い画面でいろいろやりました。

最初は詳細が出ていなかったので(原因のKB番号(WindowsUpdate毎のIDみたいなやつ)もわからんかった)、とにかく復元させるために WindowsAppsをリネームさせてました。

c:
cd Program Files
attrib WindowsApps -h
rename WindowsApps WindowsApps.old
exit

リネームさせた後に通常通り復元、です。

1日目の大半はこれで乗り切れました。

が、2日目はより深刻になって戻ってきます。

なんと、もう一度起動に失敗し、なおかつ復元ポイントが無いのです(どーーーーん)

同じチーム内の同僚がまさにこれ。

システムエンジニアからパソコン奪ったら何もできません。無能です。

無事だった私がググりますと、公式方面に情報が載っていました。

2017 年 10 月にリリースされた Windows 10 1607 / 1703 向け更新プログラム適用後に OS 起動不可になる問題について (WSUS) – Japan WSUS Support Team Blog

↑のページの一番下の方の内容です。

コマンドプロンプトでインストール待ちになっている該当のWindowsUpdateを消し去る方法です。

同僚はこれで無事に復帰しました。無能時間は一時間くらいで済みましたよ。よかったよかった。

で済めばよかったのですが……。

さらに何があったのか

続いて持ち込まれたのがBitlocker付の端末。

BitlockerでWindowsドライブが常に暗号化されてるよ!セキュアだね!

でも暗号化されているからcドライブに移動できないよ!!どうしようね!!!

さすが先人は偉大です。コマンドプロンプトでちゃぁんとBitlocker解除できました。

manage-bde -unlock c: -rp <回復キー>

他にも色々というか、弊社首都圏中心に拠点散らばってるんで、どうしようもないところに旅にでたりとか、拠点で使ってるパソコンは何故か回復処理中は英字キーボードになってくれてて記号がまともに打てなかったりとかいろいろありましたけど、私は元気です。

夏休み終わってるよ!

生存報告です。

放置しているうちに、溜め込んどいたネタがすっかり消費期限過ぎてしまったのでしょんぼりしております。

最近はslackで雑談してたーのしー!してます。雑談も飲み会も楽しいです皆さんありがとうございます。

実はマストドンインスタンスも立ててみました。ゲーム専用インスタンスとか作れたら楽しいなぁと思いつつ開発止まっています。くすん。

てわけで小ネタメモをまとめて放出。

Cakephp関連

FormHelperで生成されるLabelにStyleを直書きする

echo $this->Form->input('gakunen', array(
                    'label' => array('text'=>"学年",'style'=>"width:25px;"),
                ));

labelをArrayにする。label文字列はtextで渡す。

findByの後ろに項目を入れることで複数条件検索ができる

http://bashalog.c-brains.jp/07/12/18-161125.php

その他

二段階認証を有効にしているGoogleアカウントからのメール送信

アプリ用パスワードを発行する。

https://myaccount.google.com/security

のアプリパスワード>

から新しいパスワードを発行。

発行されたパスワードをパスワード欄に貼り付け。

コマンドラインからのVM操作

ヘッドレス起動
$ "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" startvm "開発用" --type headless
シャットダウン
$ "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" controlvm "開発用" poweroff

起動中のVM確認
$ "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" list runningvms

gitでリモートのブランチ削除

$git push --delete origin ブランチ名

他の人が消したブランチ情報を同期するには
$git fetch --prune

createrUpdateしようと思ったら某業務用ソフトのせいでWindowsが壊れた話

お久しぶりの生存報告です。

最近はslackでうぇーいたーのしー!してます。

雑談も飲み会も大好きですみなさんありがとうございます。

原因まとめ

ポケモンターミナル試すためにCreaterUpdateしてみたら

sky○○○がまだ対応していなくてあぼーんしちゃった。

症状

Windowsのログイン画面までは正常に動くが、

ログイン後すぐに画面が真っ暗になり、マウスポインタだけが表示されている状態。

Ctrl+Alt+Deleteは有効だが、タスクマネージャーやコマンドプロンプトを起動しようとしても

GUIが死んでいる(様子)なのでログオフくらいしかできない。

回復への道

原因判明までに試したこと

セーフモードで起動

そもそもこの時点で軽く詰む。

私が知ってたWindows10のセーフモード起動方法は、msconfigからか設定からかコマンドプロンプトからかの み。

どれもログイン後にGUIが使えないとできない。

今回はログイン画面までたどり着けるので以下でセーフモード起動できた。

「 Shiftキーを押しながら再起動 」

(こんなん知らなきゃわかるわけないよぉ!)

セーフモードでサービスとかスタートアップ系を殺す

とりあえず全部黙らせた後に通常起動するも討ち死。

よくわかんないけどログイン後におかしくなるんだから別ユーザーログインしてみるべ?

これは良くなかった……やるんじゃなかった……

結論から言うともちろんNG。

しょうがない、一回戻すか

起動オプションで前のバージョンのWindows10に戻そうとしたものの戻せない。

この段階では原因不明。

表示上は「なんかエラーったからできないよ。初期化してちょ」ぐらいなものだった。

初期化なんてできるかバーロー。なので原因をググる。

原因は SKY○○○ だった!!!

こんちくしょう。

とりあえずSKY○○○を黙らせた

とりあえずセーフモードで某ソフトのインストールディレクトリパスをまるっと変更。

その後通常起動。

起 動 し た ! ヽ(=´▽`=)ノ

Updateをなかったコトにする

この状態で設定から回復させようとすると、「Update後に作ったアカウントあるでしょ。先にアカウント削除してからじゃないともとに戻せないよ」と言われる。

ぁーん?んなもの作った覚えはないし、設定のユーザー一覧にもそんなもん無いぞ?

と思ったけど一応一緒に表示されていたIDっぽい文字列をレジストリエディタで検索。

メインで使っているADのユーザーとほぼ同一の文字列……あれ、もしかして……

あれだ。別ユーザーでログインしたからそのアカウント情報が(変な具合に)残ってるんだ……っ!

が、見えないものをどうやって消したら……?

たしかこれで消した。

www.atmarkit.co.jp

コンパネ>システム>システムのプロパティ>詳細設定タブ>ユーザープロファイルの設定

不明なアカウントを削除!

再度無かったことにする。

今度こそなかったコトにできた。

某ソフトを再び有効に

退避させたファイルを正常なパスにコピー。

この時システム権限じゃないとできないような仕様になっていたので、Admin権限でもOKなようにフォルダ権限い じった気がする。

最後の確認

最後にもう一回再起動させて無事にログインできて某空を見るソフトも正常に起動していることを確認。

ていうのを6月末辺りにやってました。 ちなみに某ソフトは未だに対応したという情報を聞かないのですがまだですかねぇ……。 そろそろFallCreatersUpdateきちゃいますよ…?

日本でアジャイルが流行るには。

コメしたらコメ返信いただきました。

ledsun.hatenablog.com

コメ欄では長くなりそうなので、こちらにて失礼致します。

id:ledsun さんの返信コメを読んでから(業務中に)真剣に考えてみました。

どうやったら日本でアジャイルが流行るのか。

そもそもどうしたら発注側が「アジャイルで!」と言ってくれる方向になるのか。

三匹目を産んでからは、SIer業界からはちょっと離れてしまったので、

いま現場にいる方とはまた感覚が違うかもしれません…。見当違いだったらすみません。

前半はよくわからない人向けに(自分の考えもまとめつつ)書きました。

よくわかっている人は後半からお読み下さい。

アジャイルってそもそも何なん?(システム開発のことがよくわからない人向け)

システム開発の進め方というか、スタンスのことですね。

対極にあるのが「ウォーターフォール」モデルと言われています。

イメージとしてはビル建設ですね。

用地確保しつつ設計図書きつつ予算と人員を確保したら、(システムでは要件定義段階)

土地を更地にして基礎工事をして(基本~詳細設計段階)

建物建てて(実装段階)

内装とか外装とかエクステリア整えたりとか(単体テスト

で納品(受け入れテスト:UserAcceptanceTest)

の流れです。

一度設計図と予算に合意が得られたら、まぁ、内装段階で「この階のここ吹き抜けにして~」なんてことは無いんですよ。

が、システム屋さんの世界ではよくある話なんですよね。

UAT段階で要件定義が要望と違ってたとか。(わーいデスマデスマ

んで、それってナンセンスじゃない?ってのがアジャイル開発ですよ。

細かいことは抜きにすると、小さく作って大きく育てる、みたいな感じです。

今日はここのココ変えよう!よし終わった、じゃあ次だ!みたいな。

小さなサイクルをガンガン回してちょっとずつ進めます。

日本で流行らない理由(これもよくわからない人向け)

日本ではむかーしからウォーターフォールモデルでのシステム開発がメインで、

発注側がそっちに慣れてしまっている、というのが一番の問題。

「予算こんなでこんなん作って」→「いいよー」な世界なわけです。

適当にお願いすると、適当にそれっぽいものが出来上がってくる。

備品買うのと同じノリでシステムを作ってもらえるわけですよ(ウォーターフォールモデルならね!)

いくら受注側が「アジャイルのほうが…」と内心思っていても、

発注側は手軽で管理もしやすい(お金渡せばモノが手に入る)方を選んでしまうわけです。

ちなみに、自分たちのシステムを自分たちで作っているような会社では、

とっくの昔にアジャイルになっております。(ウォーターフォールのがめんどいもん)

じゃぁ、どうしたらいいんよ?(本題)

発注側が主体性をもってプロジェクトをコントロールしてくれるなら、

ウォーターフォールよりアジャイルのほうが適しています。

そして、自分たちのシステムをどうしたいか一番わかっているのは自分たちのはずです。

自分たちでコントロールするようしむけ…げふげふ…啓蒙しましょう。

受発注両側のトップで話がつけばいいんですけどねー。

話がつくようならこんなSIer丸投げなんて無いですよねー。

どうやって啓蒙するか。発注側メリットは何か

スピード感

ウォーターフォールでは発注段階~受け入れまで数ヶ月~数年の期間がかかる。

その間に環境は変化するが、システム側はそれを吸収できない。

が、アジャイルだと(たぶん基本的に)単一の課題解決だけに焦点を絞るので、

発注~受け入れまでのタイムラグが少ない。環境の変化に適応していきやすい。

予算管理もスコープ管理も視点を変えてしまおうよ

各課題解決ごとに、規模・時期・予算を小分けにできる。

発注側で優先順位をつけて、これは急ぎで、これは来年まわし、などのコントロールができる。

以下つぶやき開始:

この辺は受発注側でどういう契約になるかにもよるけれど、

例えば官公庁とかだと年度予算で今年度はここからここまでの案件をやりましょう、みたいな話ならできるんじゃないのかな?どうなんだろう?(バウチャー型契約)

官公庁だと大きなシステム全体で入札にかけるわけだけれども、プレゼン・見積もり段階で小分けにわけてしまえないかな?乏しい経験によると、年度毎に予算がでてて、各年度でここまで出来ている、というようなざっく りとしたポイントはあるわけで(無いなら作ろうよおかしいよ無いの)、それを担当者と合意のものさらに細分化するんだよー。できないかなぁ?

内製みたいに人×期間で今期分を決めてみたりとか(人月常駐型契約)

契約規模を小さく細かくする(全体でまとめたりしない!)のがポイントな気がする。

けど、大きなプロジェクトのプロマネは未経験だからなんとも言えない!どうしよう!

:つぶやき終了

途中経過を把握できる

都度都度細かく受け入れを行うから、今自分たちの持ち物がどうなっているのかが把握できる。

UATのようにまとめてガッツリ時間をいただくこともない。

範囲が小さいから確認も全体がわかりやすく・小さくなる。

引き継ぎも多分楽

プロジェクト単位が細かくなれば、引き継ぎも楽な上に資料もたくさん残るわけで。

そもそもプロジェクト途中で担当者変更とかわけのわからないことにはならないよね!

(全体が大きなシステムなら、細かくわかれたプロジェクトを管理するモノは別途必要。でもそういうのは開発側は日常的にやってる。受注側は発注側に提供なり紹介なりすれば良いんじゃないかな)

課題解決=ビジネスに集中できるよ?

発注側が本当に求めているのはシステムではなく、それによってビジネスの課題が解決できることです。

システムを理解・管理する必要は発注担当者にはあまりないんですよ。

自社のビジネスと業務さえ理解していて、課題を見つけられるひとならいいんですよ。

解決法はSIerに任せればいいじゃない。プロなんだから。

(中にはロクでもないSIerさんもいるけど、小さい課題単位でプロジェクト組むならそこまで誤差ないと思う。むしろ大きなプロジェクトにするからわけがわからなくなる)

発注側は今の課題は何なのか、課題を解決することに注力できるわけです。

(経営者視点もしくは業務担当者視点をシステム担当者が持ってくれると割りと話が早いですよねー)

つれづれ

完全に受託するのではなく、ヒアリング段階から発注担当者を啓蒙できると、

「納品後はノータッチ」なことにはならないんじゃないかなーみたいなー。

なんかここまで書いていて思った。

結局大手SIerがちゃんとコンサルの立場に立ってないんじゃない…?

それに中小SIerが振り回されているんじゃない?

うーん。

発注側SE(やとわれ)→フリーランス→自社内開発な立場ばっかりだったので

受注側SE/PL/PMは横からしか見ていなかったしなぁ。

システムわからん、とにかくつくれってお客さんには、

わりとヒアリング段階でシステム的に重要なところは説明しちゃってたしなぁ。

というかその前段階でラポール積み上げるようにしてたしなぁ。

SIerの多層構造(子うけ孫うけひ孫うけ)はまた話が別だしなぁ。

まとめ。

結局のところ「発注側が主体性を持ってもらえるように啓蒙しよう。」が一番の解決策です。

発注者側のメリットは上記の通り。業務中に思いついたまま書いたから他にもあると思う。

アジャイルの説明に関するポイントは「小さく作って大きく育てる」です。

今の流行りからすると、「最近の加速するビジネス環境の変化についていけるシステム開発手法」です。

発注側のシステム担当に業務担当者や経営者視点が無い(まだそこまで育っていない)のなら、

受注側がコンサルとして内部に切り込んでいくしかない(そして手法を見せて育てる)のかなぁ。

相手が話きいてくれない・理解してくれないなら、ラポール積み上げて育てるしかないよねぇ。

お金にならないわ手間もかかるわだけど、そのほうが結果的に気持ちよく仕事できそうだしな。

ぉぉっと。まとめでもつれづれってしまったのでこの辺で。

全然まとまってなくてすみません。

jQueryUIのdraggableなdivがoverflowを乗り越えられなかったの。

いきなり何のことやらと思われます。

が、今日はこのままぶっちぎりなのでご注意ください。

 

現象

jQueryUIのdraggableなdiv*1が、

親divから出ると消えてしまう(消えるというよりも、どうも裏側に回っている:z-indexがマイナスな感じ)。

 

ちょっと愚痴を含めた詳細な経緯

jQueryUIのdraggableなdivが、枠div(仮に枠A)と枠div(仮に枠B)の間を行き来します。

今までは枠Aと枠Bにはoverflowが無かったのですが、今回の修正で追加しました。

(余談:今まで固定幅だったものを可変にし、overflowつけてはみ出したらスクロールで枠Aと枠Bで連動させてます。
これも苦労しましたが、こっちは日本語情報が一応あったので今度時間があった時にします)

今までは枠間を行き来してもドラッグ中のdivが消えることは無かったのですが、

overflowをつけた途端に、もともとあったところから少しでもはみ出すと消えてしまうようになってしまいました。

 

で。Google先生にききまくり。

でも、「draggable 消える」みたいな検索語だと、使い方みたいなページしか教えてくれない。

jQueryUIのAPIも見て(基本だよね!)zindexの設定とか、!importantつけてみたりとか、containmentとかいろいろ設定しましたが全部ダメ。

初心に帰ろうとおもって「draggable overflow hidden」で検索したら、

stackoverflowがでて一発でした…なんてこったい。

 

http://stackoverflow.com/questions/811037/jquery-draggable-and-overflow-issue

 

日本語以外言語と認めない方、もしくは解決策だけ知りたい方向けに、

今回の件は以下で解決します。

クローンだして親を消しとくとか、そんな発想なかったです。

そもそも親が下に入り込むとかやめていただきたい。

クローンなら最前面になるとかも意味がわからない…。くそう。私の5時間を返せ。

*1:ドラッグアンドドロップできるdiv要素のこと

Windows10に入れた各種ソフト

人柱も落ち着いてきました。

エキスプローラーが二重起動したりデスクトップがよく黒くなるのは継続中ですが。。。

なもんで、より安定性を求めて今までとランチャー変えてみたりしてみました。

 

Wox

Windows10対応のコマンドランチャー。Executorは開発が止まっているので、こちらにしてみました。Everythingの仲間なんですかね?
ホットキーも問題なく動作してくれています。Win+* でなくても、1つのキーに割り当てできるので、無変換キーに割り当てました。便利。

他にもプラグインでいろいろできるようです。が、下手なプラグイン入れると固まったり落ちたりしたので、入れる際はひとつずつが良さそうです。

希望を言えば、リストを右クリックしないでもフォルダを開くとか管理者で開くのメニューがでてくればいいのになぁと。

Wox

Listary

こちらはコマンド型エクスプローラーとでも言えば良いのでしょうか。使い勝手はWoxと同じですが、こちらは「ファイルを開く」ことに特化しております。右クリックメニューもキーボード操作で出てきてくれます。素敵。

本当はホットキーをひらがなにしようと思っていたのですが、うまくいかないため「Win+F」にしました。「ひらがな」キーを認識しないのかな。

Listary - Fabulous search utility | Keep files at your fingertips

Rainmeter

Rainmeter自体はランチャーでもはありませんが、上記2つはキーボードからの操作なので、マウスから起動する用に導入しました。

Rainmeter, desktop customization tool

 

皆様すてきなWindows10ライフを!

(※アップグレードする際は、クリーンインストールを強く推奨します!!!by人柱より)

conohaにDockerでslackクローンを立ててみた。

ひとことで言うと、楽そうだなと思いつつやってみたらあっという間にできちゃったという話です。

 

もろもろ検証用にconohaのサーバーを個人でもっておりまして。

まぁchatOpsしてみたいなーと思ったんですよ。社内で。

そのためにはまずslack(クローン)でしょ!というわけで、立ててみました。

 

とにかく簡単に試してみたいだけだったので、dockerで立てればいいやと。

で、dockerfileが用意されてるもの&簡単にbuildできそうなものを選んでやってみました。

今回選んだのはMattermostです。

 

まずはConohaにログイン

まずは入らないことにはサーバーも立てられません!

サーバーを追加

適当なLinuxの上にDockerを導入して云々を自分でしてもよかったのですが、今回は何よりも「楽に」作りたかったので以下のようにしてみました。

  1. サーバーを追加
  2. イメージタイプをアプリケーションに変更
  3. アプリケーションのその他をクリック
  4. Dockerをクリック
  5. 適当にrootパスワードを入力
  6. SSHKeyやら許可ポートやらを設定
  7. 追加!

コンソールにログイン

作成したサーバーを起動させ、コンソールを表示、rootでログインします

コマンドたたくよ!

docker pull mattermost/platform

docker run --name mattermost-dev -d --publish 8065:80 mattermost/platform

 

ブラウザから接続するよ!

今回は本当に動作させることだけが目的だったので、IPv4+ポートで接続しました。

http://[IPアドレス]:8065/

IPv6を割り当てmattermostのDockerを起動すると、同じDockerサーバー上にいろいろサービス起動できそうだけどやっていません。

ポートも上のコマンドで適当に変更しましょう。

初期設定して運用開始だよ!

とりあえずbotも何もない状態で仲良しさん呼んで開始してみました。

今のところこれでちゃんと動いています。

 

参考にしたサイト

qiita.com

qiita.com

 

思い立ってから2、3時間。

他のサービスとか試していた時間を除いたら1時間もかからずに(30分もあれば十分そう)できました!

なんて素晴らしい時代になったんでしょう。。。