プログラミング環境構築2019

こんにちは
今回は北山研で生き残るための環境構築についてです.
プログラミングの時間始まるので記事にまとめます.
Windows環境前提です.

Python

プログラミングの時間ではPythonをお勉強します.
インストールしてください.
Welcome to Python.org
Downloads -> Download for Windowsのとこのボタンを押すとダウンロードできます.
インストールはこちらを参照
Pythonの開発環境を用意しよう!(Windows) | プログラミングの入門なら基礎から学べるProgate[プロゲート]

エディタ

個人の好きなものを使おう.
メモ帳は改行コードとか文字コードのトラブルがあるので使わないほうがいい.
特にこだわりがないならAtomが使いやすいと思います.
Atom

Git環境

研究室ではソースコードなどをGitHubで管理しています.
Gitってなんだよわかんねーよって方はこちらをサラッと読んでみてください
今さら聞けない!GitHubの使い方【超初心者向け】 | TechAcademyマガジン
Gitを使ったバージョン管理【Gitの基本】 | サルでもわかるGit入門【プロジェクト管理ツールBacklog】

それでは,早速アカウント登録を済ませましょう
Join GitHub · GitHub
無料のプランで十分です.

Git for Windowsというコマンドラインのツールを使ってもよいのですがとっつきにくいので,今回はクライアントとしてGitHub Desktopを使います.
GitHub Desktop | Simple collaboration from your desktop

インストールを終えたらProxyの設定を済ませておきましょう.
繋がりません.

C:Users[ユーザー名]に.gitconfigをというファイルに, 以下を記載します.

[http]
    proxy = http://cache.ccs.kogakuin.ac.jp:8080
[https]
    proxy = http://cache.ccs.kogakuin.ac.jp:8080

以上

広告

過去の遺産をうまく使いたい

daisuke-kitayama:

こんにちは.北山です.北山研では,過去の遺産をなるべく使いやすいように,アクセスしやすい(つまり検索しやすい)ように整備しているつもりなのですが,なかなか有効活用されてない感じがしています.さてどうしよう?というのが今日の本題です.

北山研にある主なアーカイブは以下です.

  1. ソースコード:GitHubで管理
  2. 読んだ論文の要約:Dropbox Paperで管理
  3. 写真:Google Photoで管理
  4. 発表資料や執筆論文:NASで管理

3.の写真は有効活用する機会もあんまりありませんし,必要に応じてで良い気がします.
4.の発表資料や執筆論文は活用機会が多いと思うのですが,「ここにあるよ」ということさえわかっていれば,必要な機会に見に行くでしょう.
問題は1.2.なのだと考えられます.

じつは2.の読んだ論文の要約はSlackとも連携していて(というかpaperと連携していて),slackから検索することができます.が,なかなか検索しようという気にはならないような気配を感じています.

大量の記事を抱えていて,それを埋もれないようにする工夫としては,WikipediaアンサイクロペディアのTopページがお手本になりそうです.具体的には,「選り抜き記事」という形で,記事をピックアップしたり,今日の日付に関係のある記事を表示したりということをしています.

研究室としても,「選り抜き論文報告」として,Slack上で前日に発言された単語頻度の高い語をそれなりに含む論文報告を自動的にSlack上に表示する.とか,「今日のpush」として,去年の今日の日付近傍にpushされたコードをピックアップしてSlack上に表示するなど,「存在をアピールする」工夫はあっても良いかもしれません.

単純に面白そうだから,実装しようかなぁ.誰か実装してくれないかなぁ(チラッチラッ).ということで,今日はこのあたりで.ではでは.

Pythonで少し便利になりそうな書き方

こんにちは、知見です。

予定より大分遅れての投稿となったなったことをここでお詫び申し上げます。

今回はPythonのコードを書く際に便利だと感じた書き方をまとめていきたいと思います。

for文、while文でのelse

例えば、要素として得点をもつscoreというリストが存在し、
この要素が合格最低ラインのborderを下回っていないか確認することを考えます。
このとき、自分はこれまで以下のように以下のように書いていました。

if __name__ == '__main__':
    score = [80, 100, 90]
    border = int(input())

    for i in range(len(score)):
        if score[i] < border:
            print("不合格")
            break
        elif i == (len(score) - 1):
            print("合格")

しかし、for文、while文のelseを用いると次のように書けます。

if __name__ == '__main__':
    score = [80, 100, 90]
    border = int(input())

    for s in score:
        if s < border:
            print("不合格")
            break
    else:
        print("合格")

お気づきでしょうか。

そう、for文の外にelse文があり、if文とインデントが異なるのです。

自分の感覚としてはif文、else文はインデントを揃えなければならない
イメージでしたが、Pythonではこのように書けます。
(他の言語でもこう書ける?)

このelse文、if文でbreakされた場合には実行されないのです。

つまり、if文でbreakされた場合はelse文を実行しないで次に進みますが、
if文でbreakされなかった場合はelse文の処理が実行されるということです。

一見書き間違いのように見えますが、余計な変数を用意したりしなくて済むのでオススメの書き方です。

for文を使わずにリストをprint

リストの要素を1つずつ表示したいとき、自分はいつもの癖で以下のように書いてしまうことが多いです。

if __name__ == '__main__':
    combo = ["シャチ!", "ウナギ!", "タコ!"]
    for x in combo:
        print(x)

しかし、「join」を使えばよりシンプルに書くことが出来ます。

if __name__ == '__main__':
    combo = ["シャチ!", "ウナギ!", "タコ!"]
    print("n".join(combo))

表示する際に以下のように手軽に形式を変更できるので、リストの表示のみを行う場合はなるべくjoinで行おうと思いました。

if __name__ == '__main__':
    combo = ["シャチ!", "ウナギ!", "タコ!"]
    print("+".join(combo))

今回は以上となります。何か間違いや意見など意見などがあればご連絡ください。