しがない電通大生の生活日記

プログラミングのれんしう

今回は短記事.

↓が超絶手っ取り早いと思ってる(思ってるだけ).

onlinejudge.u-aizu.ac.jp

会津大学のオンラインジャッジサイト.(β版と古い版があるけどUI以外は同じ)

情報領域演習第一を履修した人は分かるだろうけど同じノリ.

解答を標準出力に吐くソースコードを記述して投げてサーバーから結果が帰ってくるまで待つだけ.ACが出れば正解.WAはバグが埋まってる.TLEは時間切れ.MLEはメモリ切れ.REはPOSIX signal.

ここのCourseの問題はHello WorldからFenwick木やらLeast Common Ancestor等のデータ構造,グラフ理論の問題がばら撒かれててしゅごい.

使える言語がいっぱいあって,(様々な理由から最新のバージョンではないものが多いけど)利用可能なのも嬉しい.

但し一部明らかにC++に寄せてある(元々C++を多用する競技プログラミングの過去問とか置いてるサイトなので多少はね).

新しい言語に手を付ける時の練習台にしたい.(できてないから現状C/C++Pythonしか使えないんだぞ自分)

UECの開発環境について

概要

UECの開発環境についてお話します 超長いので雑に読むか必要なとこだけ読みましょう 大きく分けて以下の3点です

  • なんでこの記事を書いたか
  • UECのPC環境
  • 作業環境の確保
  • まとめ

注意点として

  • 2018年度の内容です.遠い未来の話は知りません.
  • 校正していません.スペリングミス等があればご指摘お願いします
  • 既出ネタ有無の調査はしてません
  • 一部ヤバい内容が含まれている可能性があります
  • 読者は学部1年生~2年生程度を想定していますが若干偏った内容を含みます

ということです

なんでこの記事を書いたか(01/08追記)

UECでは様々な場所で様々な環境でソースコードを書くことになったりならなかったりしますが,環境構築について講義等で触れられることはことI専攻の私は一度も経験しませんでした.そこで,

  • とりあえず知っておくべきUECの環境
  • その上でUECのPC環境にうまく適応するためのTips

をまとめようと思った次第です.

UECのPC環境

UECのパソコンで自由に使えるPCは大きく分けて

  • 情報基盤センター
  • CED
  • IED

に属しています(らしいです)

自分は所属の都合上情報基盤センターとCEDの環境しか取り扱ったことがありません. とりあえずそれらについて話をします.

情報基盤センター

CentOSWindowsが選べます 特に指定がなければCentOSがいいと思ってます 理由は

  • 起動が早い(大事)(01/08追記)
  • なれればこっちがいい
  • コンパイラを使うのにただのターミナルからいける (WindowsXming+Puttyとかいう変てこりん環境でアクセスするけどハッキリいって糞)
  • 仮想ディスプレイなどが使える

ですね

まぁそもそも情報基盤センターで作業なんてしないんですがね

CED

なんとGPUが積まれました しかも全台に(悪用,独占しないように) 中身はQuadro K620あたりだったはず まぁないよりはマシ あとそれに合わせてDeepLearning周りによく使われるパッケージがちらほら

OSはCentOSUbuntuです これは良しあし分かれるところです(若干入ってるパッケージが違うらしいので授業での指定には従いましょう

なんでかUbuntuだけAtomが入ってたり,CentOSにしか実験用のアプリケーションが入っていないなどあります

自分は家でWindowsUbuntu,研究室でCentOSMacOSを殴る人間なのでなんでもいいです

好みがある方はご自由に

あとCentOSではデフォルトのデスクトップ環境がGNOMEですが,KDE Plasmaなんかも入ってます 刺激が欲しい方はどうぞ

作業環境の確保

ディレクト

さて,まずはディレクトリ周りの話をしましょう CEDの$HOME(以下便宜上$CED_HOMEとします)は情報基盤センターの$HOMEから見てどこかといいますと,

$CED_HOME=$HOME/.ced_<distribution>

<distribution>centosubuntuです というわけでCEDと情報基盤センターの間でファイルは自由に操作が出来ます 情報基盤センターにSSHアクセスできればCEDで作業したファイルは書き換えたりSCPでおうちに持ち帰ったり,逆に送り付けたりできる,というわけです

エディター

これは宗教的内容を含みます. エディターは皆さん色々お好きなものがあると思います. 色々ありますが電通大の環境において常に触ることができるのは

くらいでしょう.(調査不足の可能性があります) (01/08追記 IEDにはVimがないとの情報がありました.)

Vim, Emacsは共に古のエディタですがCUI環境しかないSSH上でのソースコードの編集などには欠かせません.最低限のホットキーくらいは覚えておきましょう.

見た目が嫌い,という人は.emacsとか.vimrcをいじると幸せになれますよ

もしくは全ての科目にノートPCを持ってきて手元環境で全てを終わらせるか…実際のところこれは一概に悪いアイデアではありません.10時間くらいバッテリー稼働する軽量なノートPCがあればベストプラクティスになりえます.

あとこれは余談なんですが,Emacsでインデントを「↓ → Tab」連打でやる人などを見ますが「Ctrl+x → h → Tab」で全行一括でインデントできます

インデントはしましょう(絶対に)

git

この単語を知らない人が時々居るので簡単に説明すると,ファイルのバージョン管理をするシステムです.バージョン管理をweb上で行うgithubやgitlabが使えると作業のロールバックやブランチによる分岐などが家,大学どっちからでもサクっと出来ます.特に何個か前の保存状態に戻したいという時の為に全部の差分を手作業で分けて持つ必要がなくなって非常に楽になります.

使いましょう.いつ始めても損はないです.

おそらく情報基盤センター,CED共に使えます.

qiita.com

電通大生は入学時にuec.ac.jpドメインのメールアドレスを貰えるので,Github Educationに登録するとプライベートリポジトリが無料で作れるようになります.

課題のtexソースコードの管理にプライベートリポジトリを使っていきましょう.

# ディレクトリの管理を開始する為の初期化をする(.gitが作成される)
git init
# このディレクトリをリモート管理する(先にGitHubでリポジトリを作成する)
git remote add origin git@github.com:<username>/<reponame>.git
# ディレクトリ直下の全てを管理対象に加える
git add .
# 変更を確定する(-m "comment"で短いコメントを残すかオプションなしで長いコメントを残す)
git commit
# 変更をリモートに送る
git push 

などが基本的なコマンドですが色々「github」などで調べるとわんさか出るしエラーが出てもエラー文ごとGoogle検索すればいい具合に回答が得られるくらいには情報もあるので是非使いましょう

(01/08追記)gitはUEC外と通信するのでプロキシ設定が必要です.初めて使う際に

git config --global http.proxy http://proxy.uec.ac.jp:8080/
git config --global https.proxy http://proxy.uec.ac.jp:8080/

を叩いておきましょう

tmux

SSH上で何か時間のかかる作業をしたいけど,何かの拍子に閉じてしまったりして最初からやり直し,という経験がある人におすすめしたいのがコレ ターミナルをいくつも開く必要がなくなり,しかもSSHを切っても作業内容がSSH先のサーバーが再起動されない限り保持されます

qiita.com

これ見ながら使ってみてください.幸せになれるかもしれません

但しCED,情報基盤センターが毎日定時に再起動している点に注意して下さい.

まとめ

電通大生の作業環境,すごく便利環境を整え切った猛者も居ればほぼメモ帳とコンパイラだけで戦ってる控えめにいって非効率的な人も居ます.

ある程度整えると絶対に学生生活を楽に出来るはずなので楽にしていきましょう