【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
Ruby CSVの書き込みと読み込み
Tips
CSVの読み書き
require 'csv' # 文字列への書き込み csv_string = CSV.generate do |csv| csv << [1,'Alice',18] csv << [2,'BoB',21] csv << [3,nil,nil] csv << [4,"",""] end # 文字列からの読み込み CSV.parse(csv_string) do |row| p row end puts "*" * 30 # ファイルへの書き込み arr_of_arrs = [[1,'Alice',18],[2,'BoB',21],[3,nil,nil],[4,"",""],[5,'Catherine',34],[6,'Diana',46]] CSV.open('output.csv','w') do |csv| arr_of_arrs.each do |arr| csv << arr end end # ファイルからの読み込み CSV.foreach('output.csv') do |row| p row end
NASAのデータを取り込んでみる
リファレンスマニュアルを読んで試してなんとなく動かせたので、先日知ったNASAのオープンデータをCSVで落として無駄に読み込んでみたくなりました。
いろんなデータがあって、どれが何だかよくわからなかったので最も人気がありそうな隕石落下データを使ってみることに。
https://data.nasa.gov/Space-Science/Meteorite-Landings/gh4g-9sfh
Excelで開いてみるとこんな感じ。名前、質量、落ちた年、緯度、経度。あとはなんだろ、よくわかりませんが隕石のデータですね。4万5千件ほどあります。
Meteorite Landingsとかクソかっこいいデータだけど、CSVでExportしてきて読み込むだけで申し訳ない。
やっぱり生のデータを使うとうまく行かないことが出てきますね。エンコーディングでハマり、nilのデータでハマり、ヘッダーの扱い方、関係ないけど文字列のフォーマット指定での日時変換などだいぶ寄り道しちゃいました。
require 'csv' require 'time' # 一度に読み込み csv_data = CSV.read('Meteorite_Landings.csv',headers: true,encoding: 'UTF-8') target = Time.parse("1925/01/01") puts csv_data.select{|row| unless row["year"].nil? Time.strptime(row["year"],"%m/%d/%Y") == target end }
実行してみると1925年の隕石情報が出ました!
NASAすごいです。