linuxサーバ関係のTips

機械学習をサーバで行うにあたって,毎回調べている気がするのでここに書いておく.
サーバを複数人で共有していると,各ユーザにsudo権限が与えられていないことも多い(そうしないとみんながパッケージを好きにインストール入れて環境を壊してしまうので).そういう場合にも対処できるtipsです.

vimに慣れていない人にも易しい,サーバ上のファイルがブラウズ&管理できるアプリ

Cyberduckおすすめです..bashrcとかいじる時も,あらかじめ設定したエディタで編集できて,保存したらそのままサーバにアップしてくれます.
cyberduck.io

サーバ上のフォルダにインストーラからインストールしたい時

例えばanacondaなどだと,pip install condaでインストールされるものと,スタンドアロンアプリでインストールされるものには違いがある.サーバが遠隔にあって直接インストールできない場合には以下のようにすればOK.
wget https://repo.anaconda.com/archive/Anaconda3-2018.12-Linux-x86_64.sh
sh Anaconda3-2018.12-Linux-x86_64.sh
Anaconda3-2018.12-Linux-x86_64.sh は消去しておく

sudo権限なしで特定のパッケージをインストールする

pipの場合は,
pip install --user package_name
aptの場合は
apt-get download package_name
dpkg -x package_name.deb install_folder_name

sudo権限なしでシンボリックリンクを張る

sudo権限がないとlnコマンドが使えないので困る..でも,Cyberduckから,対象のフォルダに行って"New Symbolic Link"を選択するとなぜかできた.

アメリカでインターネットを契約する

留学中(一年間)のインターネットをアパートに引いた時のメモです.
使用期間は2019-2020年でした.

どこのインターネットにしたか?

Xfinity(Comcast)の,Performance Internetというプランにしました.
下り60mbpsです.おそらくこれが2019年時点では最もメジャーなプランかと思います.

なぜXfinityにしたか?

  • 住んでいる地域のインターネットプランをサイト(https://www.whistleout.com/)で比較したところ,Verisonのfios(光ファイバー)か今回契約したComcastのXfinityが12ヶ月以内しか使わない前提だと一番安い,かつ2年縛りとかもないので,この時点で2択に
  • fiosの対応モデムとルーター(接続に必要な機器です)を持っていなかった.買っても良いけど$200程度するのがネックだった.そして,一人暮らしでノートPC+スマホぐらいしか接続しないので,光ファイバーはオーバースペックかもと思いました.
  • 知り合いにいただいたComcastの対応モデムとルータを持っていた(本当ありがたい)ので,Comcastにすれば金額的ネックがないのが一番の決めてでした.
  • ちなみに,チャットで色々教えてもらえて超助かりました.まだ来たばかりでホテルに滞在していた頃,時差ボケで眠れなくてふとネット契約しよう!と思い立ち,現地時間の真夜中にダメ元でチャットを投げたら,普通に返事がきて驚きました..

トータルいくら必要だったか?

  • 月々のインターネット料金は$34.99
  • 家にきてセッティングしてくれるオプションをつけたのでそれに$29.99(つけなくてもできるのかもしれませんが,自分の場合は急いでいたので来ていただきました)

1年間使ってみて

複数デバイス(ノートPC,スマホ等)で使いましたが全く不自由ありませんでした.研究室のサーバーへ接続,ビデオ会議,youtubeなどの動画鑑賞でも使いましたが特に大きな不具合は起きず快適に使えました.

3ヶ月以上の滞在ならおそらくこれが最適?アメリカ留学中のスマホのsimカード

アメリカは国土が広く設備にお金がかかるから(?)なのか意外とインフラが高いことに驚きつつもそれも仕方ないかなぁと思ったりしています.
特に携帯は予想以上に高いし契約とか面倒..実際,自分の懸念点は以下でした.

  • verisonとかsprintなどの名前聞いたことあるなーってところで契約しようとすると,二年契約とかにしても一月当たり$30-50ぐらいして高い
  • SSN(Social Security Number)を取得しない場合,比較的高額なdepositを契約時に支払う必要があるものも
  • 1年間の滞在なので,2年縛りとか契約できない
  • ..ってゆうか日本語で聞いても複雑な携帯の契約はできれば避けたかった

そんな中,おそらく契約に割く労力的にも,金銭的にも最適解の一つと思われるものを見つけましたので,備忘録として書いておきます.これから留学,駐在等で滞在される方のお役に立てば幸いです.

この記事が参考になりそうな方

  • アメリカに3ヶ月以上(プランの関係で3の倍数の月(3, 6, 9, 12ヶ月)だと良い感じ)滞在される方
  • T-mobileの回線が入るsimフリースマホをお持ちの方(自分のスマホが適応しているかwebで簡単に調べられます!後述します)

結論から先に書くと,Mint MobileのSIMを購入しました

  • Mint Mobileとは,T-mobileの回線を利用したMVNOです.
  • プリペイド式なので店舗に行く必要がないです
  • $15/月で,月3GBのLTE回線,テキスト・アメリカ国内通話無制限(安い!)
  • 7日間無料返品可能.ネットワークはT-mobileのものなので,よほど郊外でない限り問題ないとは思いますが,もしうまく電波入らなくても返品できます.

どういう経緯でMint Mobileにしようと思ったか?

  • 周りの留学中の人に聞くと大抵VerisonやT-mobileなど大手を使っていて,みんな月に$50前後払っていると聞き,高いなぁと思いました..まぁ日本でも大手キャリアはそれぐらいか.
  • 最近日本でもMVNOのsimが流行ってきたので,アメリカでもそういうのないのかなぁと思い,このサイト(https://www.whistleout.com/)で自分の滞在する州で使えるプランを比較しました.(自分の場合は端末を既に持っていて,自分の州を入れて月に3GB, 通話・テキストありで検索しました.ご自身の環境に合わせて検索てください)
  • そしたらMint mobileが一番安かったので,amazon usのレビューや他の方の体験記をブログで見て,大丈夫そうだなぁと思い購入に踏み切りました.

自分のスマホが対応しているかはどうやったらわかる?

めっちゃ簡単です.以下のサイトに自分のスマホのIMIE(大抵,*#06#をダイヤルすると出てきます)を入れるだけです.
www.mintmobile.com

自分の滞在しているところの電波状況を調べるには?

ここを見ればわかります.まぁ,よっぽど山地に行ったりしない限りは大丈夫かと思います.州外も含めて出かけた際に繋がらなかったことはありませんでした.(でも,この通りらへんは電波弱いなってことはたまにあります.Mint mobileに限った話ではないと思います)
www.mintmobile.com

購入&使用開始の記録

  • 途中で番号が変わるのも面倒かなぁと思い,公式サイトから12ヶ月プランをクレジットカードで買おうとしたけどなぜかエラーで買えなかった.(同様のレビューは多々ある.カードの認証の問題?)
  • おそらくこれはAmazon USで購入したところで,プランを購入する際に同じ問題にぶち当たるはずなので,Amazonも却下.
  • よく見たら支払い方法にカードの他にpaypalがあったので,そっちで決済したらいけました.
  • まだ引越し前だったのでホテルに届けてもらうことに.Mint Mobileの公式サイト上では購入日の4日後でよければ送料無料でした.お金払えば速達便にもしてもらえます.

注意点

  • 購入時に,"Auto Recharge"にチェックボックスが入っていたら,外した方が良いと思います.自動的に契約期間延長されてしまうと思うので.
  • $15/月なのは初回購入時だけだと思います.なので,6ヶ月の滞在で3ヶ月プランを2回購入した場合には割引が効かないかと思います.私の場合は思い切って12ヶ月分を最初に買ってしまいました.(7日間返品できるし..).もしそういう買い方をしたい場合は,Amazon USのレビューなど見て,よく調べてから購入いただければと思います.

1年間使ってみて

- 何ら問題ありませんでした.結構しっかりエリア化されているようで,他の州に行っても快適に使えました.ただ,私は山奥などに行っていないので,電波の届きにくい地域で多用する予定の方はちゃんとエリアマップを確認されたほうが良いと思います!

Settings for new mac

New MacBook Pro settings notes for High Sierra (10.13.1)

1. Short cut for switching input language

Default short cut for [Command + Space] calls Spotlight. So I changed the short cut for switching input language.

【OSX El Capitan】OSXアップグレードしたら、[Command+スペース]のショートカット割当が変わってたので自分用に変更した件 - itkhoshi.com

2. Installing Homebrew

Installing Xcode is a must. Install from AppStore (It took several hours..) After install Xcode, run following command to install command line developer tools

|| $ xcode-select --install ||<

Then, copy and paste a command from following URL to install homebrew.

macOS 用パッケージマネージャー — macOS 用パッケージマネージャー

Do not forget open Xcode.app to agree to the license.

To confirm whether homebrew is installed, run

|| $ brew -v Homebrew 1.4.1 ||<

3. Python

http://graphbooth.com/2017/05/31/pythonmac.html

First of all, install pyenv, that is a package to manage python3

|| brew install pyenv ||<

Then, prepare shell file to save settings for python 3.X

|| $ ls -la ||< In case ".bash_profile" does not exist, run touch .bash_profile vi .bash_profile export PATH="$HOME/.pyenv/shims:$PATH" source .bash_profile echo $PATH

To install python 3.X, run

|| $ brew install python3 ||<

or

|| $ pyenv install -l #check available version $ pyenv install 3.6.3 # install desirable version ||<

Then switch python 2.X to 3.X

|| pyenv global 3.6.3 ||<

4. JavaScript

Java install
$ brew cask install java
$ java -version
java version "9.0.1"
$ javac -version
javac 9.0.1
Maven install
$ brew install maven
$ mvn -v

4. Atom settings

futonguards.hatenablog.com

Atomのセッティング備忘録

Atomを自分好みにカスタマイズしているのですが,PCを変えるたびに設定した内容を忘れるので備忘録です.随時更新していきます.

ATOMとは

みんな大好きgithubが開発したオープンソースのエディタです. 様々なプログラミング言語に対応したパッケージが配布されており,カスタマイズ性が高いので超お気に入りのエディタです!

プログラミング言語に応じた文字のハイライトはもちろん,プレビュー機能などもパッケージをインストールするだけで簡単に使えます. 私はTex, python, C, C++, JavaScript, HTMLなどは去年ぐらいからAtomで書いています.

しかし,そのカスタマイズ性の高さから,インストールするパッケージも多く自分が何をインストールしたか忘れてしまうので,PCを変えた時用にここに備忘録として書いておこうと思います. 上記言語を使う方ならこの記事を見ていただければ簡単に快適な環境がつくれるはず!

ATOM-IDE

2017年9月にATOM-IDEがリリースされました. まだ言語は限られているものの(2017.12時点でTypeScript&JavaScript, Flow, C#, Java, PHPのみ),これまでエディタ機能のみだったATOMIDEとしても使えます.

Windows端末ではもっぱらVisual StudioなのですがmacではC, C++IDEで気に入ったものがなかったので,今後C, C++も対応されると嬉しい...

インストールは以下の2Step

  • atom-ide-uiをインストール

  • 各言語のパッケージをインストール

各言語のパッケージは以下のATOM IDE公式ページから

https://ide.atom.io/

言語依存でない共通の設定

Atomパッケージのインストール

以下のパッケージをインストール

atom-beauty (整形用)

autopep8のインストールが必要.

pip install autopep8

autocomplete-path

linter (構文チェック用)

highlight-selected (選択文字ハイライト)

言語ごとの設定

Python

Atomパッケージのインストール

以下のパッケージをインストール

autocomplete-python

HTML

Atomパッケージのインストール

以下のパッケージをインストール

atom-html-preview

ATOMでコードを編集しながら,リアルタイムにページをプレビューさせることができます.いちいちブラウザに切り替えて表示させるのはすごく手間なので,超便利! ただ,ウィンドウを開いたりアラートを出したりするコード書く時は,何度も出てきてしまったりするので注意が必要です.

Ctrl + Shift + H

で実行できます.

linter-htmlhint

HTMLの構文エラーをリアルタイムにチェックしてくれる.インストール時にlinter, linter-ui-defaultもインストールする必要がある.Requirmentはポップアップで出てくるのでそれをインストールすればOK. UIはlinter-ui-defaultとDiagnosticsが選べた.今回はDiagnosticsを選択.どちらが良いかはわからない.

JavaScript

Atomパッケージのインストール

以下のパッケージをインストール

linter-javac

構文チェック用.

Java

ide-java

ATOM IDE用のパッケージ,"ide-java"をインストール.インストール数が少なくてちょっと不安になる...

TEX

macTexのインストール

brew cask install mactex

ちょっと時間かかります.

Atomパッケージのインストール

以下のパッケージをインストール

latex

language-latex

pdf-view

Atomパッケージの設定

パッケージlatexのsettingsに行き,

  • Engineをuplatexに変更

  • Openerをdefaultからpdf-viewに変更

以前はもうちょいセッティングが必要だった気がするのですがこれで動きました.デフォルトのコマンドだと,

Ctrl + Alt + b

コンパイルされ,pdfが画面の右に出てくるはずです.

  • spell-checkのsettingsのGrammarsに
text.tex.latex

を追加

C, C++

必要な外部ライブラリなど

clang

Atomはただのエディタなので,VisualStudio, Eclipseのように関数の予測変換・補完などがデフォルトではできません.この後その補完などを実現するパッケージを入れますが,それの動作に必要なのがこれです.macには標準で入ってます.バージョン確認方法は以下.

clang++ --version

Atomパッケージのインストール

以下のパッケージをインストール

language-c

参考にさせていただいたページ

Atomで楽しくC,C++開発をする個人的設定まとめ - Qiita

また何か追加したら書き足そうと思います.

jQuery UIを使ってみる

jQuery 初心者です.とりあえず使ってみます.

jQuery UI インストール,その前に

そもそもjQueryをインストールしていない場合は以下のサイトからインストール. (今回は2018.1月現在最新版の uncompressed, development jQuery 3.2.1 をインストール)

jquery.com

jQuery UI インストール

執筆時点で最新バージョンの jQuery UI 1.12.1 を以下からダウンロード.一緒にダウンロードするプラグインは選択式ですが一応全部ダウンロードしておきます.

jqueryui.com

コード編集

導入はとても簡単でheadタグ内に二行書くだけ.

<script src="path to jquery/jquery-3.2.1.js"></script>
<script src="path to jquery/jquery-ui.js"></script>

"path to jquery"にはファイルを保存した場所を入れてください.よくリンクをそのまま貼って使っているコードを見るけど,あれって方々からアクセスされてサーバに負荷かかってたりしないんだろうか..ちょっと心配なので,私はローカルに保存して使ってます.

jQuery UIで画像を並び替え,その順番をファイル出力

jQuery UIを使って複数枚の画像をドラッグ&ドロップで並び替え,その順番をファイル出力できるようにした時の記録です. 例として,3枚の画像の並び替えを行うコードを書きます.

jQuery UIインストール

導入は簡単で二行書くだけ."path to jquery"には保存先を入れてください.

<script src="path to jquery/jquery-3.2.1.js"></script>
<script src="path to jqueryjquery/jquery-ui.js"></script>

ダウンロードの手順などは,こちらにもう少し詳しく書いています.

html側

<body >
<div id="item_images">
    <div id="1"><img src="画像名1" width="300" alt=""></div>
    <div id="2"><img src="画像名2" width="300" alt=""></div>
    <div id="3"><img src="画像名3" width="300" alt=""></div>
</div>
<p>取得した並び順 : <span id="sorted"></span></p>

<br>

<div id = "myForm">
    <a id="download-link" href="#">Click here to download score data.</a>
</div>
</body>

JavaScript

<script>
    $(function()
    {
        $('#item_images').sortable
        ({
            opacity: 0.5,
            update: function(event,ui)
            {
                // convert sorted order to text
                $('#sorted').text($('#item_images').sortable("toArray"));
            }
        });
    });

  // for score data download 
  var $id = function(id) { return document.getElementById(id); }
  window.onload = function()
  {
    $id("download-link").addEventListener("click", function()
    {
      var href = "data:application/octet-stream,";
            for(var i=0; i<3; i++)
            {
                var value = $('#item_images').sortable("toArray")[i];
                href = href + encodeURIComponent(value) + ",";
            }
      this.setAttribute("href", href);
    }, false);
  }
    
</script>

挿入位置を可視化したい場合

例として黒の波線を挿入位置に表示するコードを載せておきます. 以下の関数内にplaceholder: "mark"を追加.

<script>
    $(function()
    {
        $('#item_images').sortable
        ({
            opacity: 0.5,
            placeholder: "mark",
            update: function(event,ui)
            {
                // convert sorted order to text
                $('#sorted').text($('#item_images').sortable("toArray"));
            }
        });
    });
</script>

そして,html側でスタイルを定義

<style>
.mark{
    border: dotted 2px black;
}
</style>

意外と簡単にできてよかった...!