IE8とIE11で空文字Cookieの戻り値が違う
事象
Internet Exploerer(以下IE) 8用のイントラサイトが規定のブラウザがIE11になったことで表示が乱れたとユーザより連絡を受けたので、さっそく原因を調査してみました。
原因
JavaScriptで値が空文字のcookieを取得したときのブラウザ間の違い | かたつむりくんのWWW
Cookieの空文字の扱いが違うだと?!なにそれハゲる。
IE8では値が空文字のCookieはundefined、IE11では空文字は空文字となる違いがあり、Cookieの値が空文字だった場合以下のようなJavaScriptのコードの動きが違ってしまい大爆死。
if (cookie != null) { //とある処理 }
あ、ちなみにこのコードはわたし^o^が書きました。
つまり、こうなるってわけですね。
undefined != null // => false "" != null // => true
イントラサイトは規定のブラウザで動けばオッケーイで楽なんだけど、ブラウザ間の差異に気付きにくいのは弊害だなぁ。
【CentOS 7】 Visual Studio Codeが起動できなくなった
概要
たしか1.7に上げた頃、VS Codeがエラーメッセージを吐いて起動できなくなりました。そのときは時間もなく面倒くさかったので放置してましたが、思い出したのでなんとかしてみる回です。
環境
CentOS 7
Visual Studio Code 1.7.2
エラー内容
起動しようとすると怒られました・・・。なにもしてないんだけどなぁ。
$ code .
/usr/share/code/bin/../code: error while loading shared libraries: libXss.so.1: cannot open shared object file: No such file or directory
とりあえずアップデート
ひとまず最新に上げたら直っているんじゃないかという淡い期待を抱き、アップデートするもダメ>.<
sh-yoshida.hatenablog.com
エラーメッセージを読む
英語だからってそっと閉じない。大切。
error while loading shared libraries: libXss.so.1: cannot open shared object file: No such file or directory
libXss.so.1ライブラリがないと怒られているらしいので、ライブラリ名を調べていると似たような事象を発見!
CentOS - GitKrakenがCentOS7で起動できなくなりました。(45627)|teratail
libXScrnSaverをインストールしてあげればいいのかなっつーことでやってみます。
$ sudo yum install libXScrnSaver 読み込んだプラグイン:fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: ftp.iij.ad.jp * extras: ftp.iij.ad.jp * updates: ftp.iij.ad.jp 依存性の解決をしています --> トランザクションの確認を実行しています。 ---> パッケージ libXScrnSaver.x86_64 0:1.2.2-6.1.el7 を インストール --> 依存性解決を終了しました。 依存性を解決しました ================================================================================ Package アーキテクチャー バージョン リポジトリー 容量 ================================================================================ インストール中: libXScrnSaver x86_64 1.2.2-6.1.el7 base 24 k トランザクションの要約 ================================================================================ インストール 1 パッケージ 総ダウンロード容量: 24 k インストール容量: 40 k Is this ok [y/d/N]: y Downloading packages: libXScrnSaver-1.2.2-6.1.el7.x86_64.rpm | 24 kB 00:00 Running transaction check Running transaction test Transaction test succeeded Running transaction インストール中 : libXScrnSaver-1.2.2-6.1.el7.x86_64 1/1 検証中 : libXScrnSaver-1.2.2-6.1.el7.x86_64 1/1 インストール: libXScrnSaver.x86_64 0:1.2.2-6.1.el7 完了しました!
そもそもlibXss.so.1ってなんだろう。スクリーンセーバー関係?
復活!
ナルホド無事VS Codeは起動しました!
と喜んだのも束の間。Gitのバージョンが古い(ノ ゜Д゜)ノ ==== ┻━━┻
Codeは2.0.0以上のgitで最適に動作します。
Gitのインストール
yumでは古いバージョンがインストールされるとのことで、こちらを参考に最新のGitをCentOS 7にインストールしてみます。
現時点で最新は2.10.2。
手順に従い進めていきます。
$ sudo yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel $ cd /usr/local/src/ $ sudo wget https://www.kernel.org/pub/software/scm/git/git-2.10.2.tar.gz $ sudo tar xzvf git-2.7.2.tar.gz
ぐぬぬ、makeでエラーが。
$ sudo make prefix=/usr/local all (省略) /usr/bin/perl Makefile.PL PREFIX='/usr/local' INSTALL_BASE='' --localedir='/usr/local/share/locale' Can't locate ExtUtils/MakeMaker.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at Makefile.PL line 3. BEGIN failed--compilation aborted at Makefile.PL line 3. make[1]: *** [perl.mak] エラー 2 make: *** [perl/perl.mak] エラー 2
↓こちらを参考にエラーに対処。
$ sudo yum install perl-ExtUtils-MakeMaker
もう一度makeコマンドを実行したらうまく行ったぁぁぁあ
$ sudo make prefix=/usr/local all $ sudo make prefix=/usr/local install
Gitも最新になって、VS Codeも文句なし☆彡
$ git --version
git version 2.10.2
RobocopyでSharePointのドキュメントライブラリを移行する
概要
久しぶりに仕事の話です。
ひょんなことからSharePointのデータ移行をやることになりました。
SharePointとは
マイクロソフトが提供する、ウェブブラウザをベースとしたコラボレーションやドキュメント管理を行うプラットフォームの総称である。
https://ja.wikipedia.org/wiki/Microsoft_SharePoint
ドキュメントライブラリというデータを別のサーバへ移行するだけの簡単なお仕事です。エクスプローラー上でコピペでもいいのですが、ここでRobocopyです。
ネットワークドライブへ接続
まずは、コピー元とコピー先のネットワークドライブへ接続します。今回はそれぞれXとYドライブに割り当てました。
> net use X: <コピー元ネットワークドライブパス> > net use Y: <コピー先ネットワークドライブパス>
元と先を逆にしちゃうと大惨事になるのでしっかり確認します。確認ホント大事。
> net use
Robocopyでネットワークドライブ上のファイルをコピー
コピー元とコピー先ドライブを指定し、以下のオプションを選択しました。
オプションのお品書き
- /Z 再起動可能モード
- /E 空のディレクトリも含めてサブディレクトリもコピー
- /is 同一ファイルを含む(上書きコピー)
- /XA:SH 隠しファイルとシステムファイルは除外
- R:0 リトライ回数を0に
- W:0 リトライの待ち時間を0に
- /log+: ログファイルを追記形式で出力
- /tee ログファイルと同時にコンソールにも表示する
> robocopy X: Y: /Z /E /is /XA:SH /R:0 /W:0 /log+:<log file> /tee
完全に呪文ですね。初見で死ぬ。
その他のオプションはこちら↓
Robocopy