re:annkara

日々学んだことを書き留めておく。

パーフェクトPythonメモ

Amazon.co.jp: パーフェクトPython (PERFECT SERIES 5): Pythonサポーターズ, 露木 誠, ルイス・イアン, 石本 敦夫, 小田 切篤, 保坂 翔馬, 大谷 弘喜: 本

 

Pythonの勉強を再開しようと思って買ってみました。

とりあえず、言語仕様の部分まではさらっと読んでみて、

知らないとこ、分からないところをメモっとく。

 

  1. withというか、コンテキストマネージャとはなんぞや
  2. とりあえず、前処理・後処理てきなやつをやってくれるのか。
  3. クロージャ
  4. 関数内部で定義され、かつ、外側の関数のローカル変数を参照している関数のこと。 とりあえず、外側の関数抜けても内側の関数内の変数は残ってるよくらいの理解なので、 再度整理が必要かな。
  5. 高階関数
  6. 関数の引数に関数や、また、戻り値に関数を返す関数のこと。 関数の細分化が可能。 例えば、数値の集合から奇数のみを取り出して、リストにする際に、 奇数を判定する関数(評価関数)と、評価関数を用いてリスト生成する関数を作成するなど。
  7. 関数デコレータ
  8. これがイマイチ理解できてないので、後で整理。 記法はJavaアノテーションなんだけど、そもそもJavaアノテーションもわかってないから、 全く関係ないかも。
  9. 多重継承
  10. 個人的にはなんか厄介な気がするんだけど、なんで採用したんだろ??
  11. インスタンスアロケータ
  12. メリットというか、使いどころがイマイチ想像できない。
  13. ディスクリプタ
  14. セッターゲッター用のデコレータが準備されているみたいだけど、 それとの違いがまだ分かんない。
  15. クラスメソッド、スタティックメソッド
  16. Javaと混同するから整理必要。

とりあえずざっと読んでみて気になったので、明日調べなおします。

明日でお正月休みが終わりかーはやかったなー 今年の目標とかたてよう。

Heroku+bottleを使ってみた。

 

Python - Heroku×bottleを使って4分33秒でWebアプリを公開する - Qiita

 

リンク先を参考にやってみた。

さすがに慣れてない部分があったので、5分でできなかったけどすぐにリリースまでできた。

まじでHerokuすごい。

 

リンク先にも書いてあったけど、Webサービスをリリースするってだいぶハードルが下がってきているんだと実感した。

商用とかエンタープライズ用とかでも耐えられるのかはわからないけど、

個人レベルのWebサービスをリリースするんだったら、全然構わないんじゃないかな。

 

以下、ちょっと詰まったところのメモ

 

①bottleのインストール

②ソース編集

③依存ライブラリの一覧作成

 

という手順でやるべきところを、

 

①ソース編集

②依存ライブラリの一覧作成

という手順でやってしまったため、Herokuにデプロイしても、

application errorHello Worldが出力されなかった。

 

bottleをインストールして再度デプロイしてもまだだめだったので、

なんでかなーっと思ったら、③の依存ライブラリの一覧にbottleってあったっけ??

と思い確認。

bottleらしきライブラリの記述ないじゃん...とおもいつつ、

再度③の手順を実施して、再度デプロイしたら、見事できました。

 

 pip freeze > requirements.txt 

でやっていることとして、今の環境にインストールされているパッケージの一覧を取得して、txtファイルに保存している...って感じらしく、別の環境ではこのtxtファイルを参照して、ライブラリを準備するらしい。

 

まだまだ全然知らない事が多いので、Heroku、もっと勉強したいです。

 

www.amazon.co.jp


Gitを触ってみた。

Git入門:Git初学習者のための効率的な学習方法を考えてみた – PAYFORWARD

これに沿ってみて、学習している最中。

 

takanabe/introduction-to-git · GitHub

とりあえず、ここまでやってみた感想。

 

業務でCVSを触ったことがあって、そのときはEclipse経由でリポジトリとのやりとりをしていたから、コマンドラインからの操作はちょっと疲れた。

 

ただ、CVSでの操作をしていたときにわけもわからずやっていた操作が、

今となってみるとこういうことやっていたんだなーと理解できた。

マージとかなんでHEADに移って実行しないといけないんだ??とか。

 

個人的に、GitのHEADは単なるポインタで、今作業しているブランチを指している、

という説明には非常に納得を持てた。

 

今の職場はメインフレームで開発していて、コードのバージョン管理なんて無いに等しくて、マージなんて手打ちで実行している状況だから、メインフレームの世界でもこういうツールが導入されたら開発効率があがるんじゃなかろうか。

 

そういや、来年度あたりからSVNでソース管理するみたいなこといってたから、

案外近いうちに導入されるのかも。

まぁ、使いこなせるかどうかは人次第な部分はあるけど。

 

一気にやったので後半の複数人でのリモートリポジトリの操作とかざっと見になっちゃったので、また気が向いたら見直そう。

 

あとは、GitHubのアカウントも作ってみたので、何か作ったらそっちにあげてみよう。

 

最近、ツールとか環境構築周りのことばっかりやってるから、コードも書かんと。

 年末年始にまとまった休みがとれるから、その期間で何か作れたらなぁー

 

 

 

virtualenvとか、pythonzの整理

Djangoチュートリアルをやったときに使用したvirtualenvとか、pythonzについて整理しておく。 

virtualenvとは

異なるバージョンのpythonを用いて開発したい場合に、そのバージョン、パッケージ専用の開発環境を構築するためのツール

例えば、2.x系と3.x系のバージョンで開発したいときに、システムに両方をインストールして使用することはできないから、virtualenvを用いて、各バージョン毎の開発環境を構築する、みたいな使い方が可能。

 

ざっくりとした表現だけど、各バージョン毎のpythonを適当なディレクトリに置いておいて、自分の使いたいプロジェクトではこのpythonで、みたいなことをコマンドで指定して使うっていうイメージなのかな。

とりあえず、コマンド操作とか使い方さえ慣れてしまえば、非常に便利そう。

 

virtualenvの仕組み的なことを書いてるブログを備忘録として貼っておく。

今の自分には全てはわからないけど、これくらいは理解したい。

virtualenv - def __mopemope__(self, *args, **kwargs):

 

こっちは基本的な使い方とか

Python VirtualEnv - ArchWiki

  

pythonzとは

virtualenvが開発環境の仮想化を手出すけるものであれば、こっちはpythonのバージョン管理やインストールを簡単に実行できますよっていうツール

 

easy_installとかpipとかと一緒なのかな??

ここらへんのバージョン管理とかパッケージ管理とかの仕組みがよくわかってないから、時間あったらちょっと整理してみよう。

home_brewとかもよくわかってないし。

よくわかんないけど、ブログとか見てるとそうやってるからやっとけばいいだろうという状態を抜け出したい。

 

というわけで、参考になりそうな記事を。

Python パッケージ管理技術まとめ (pip, setuptools, easy_install, etc)

 

デュアルディスプレイ、作業とか快適なんだけど、

心なしか首とか目が疲れる。

 

慣れの問題であればいいんだけど。。。

 

Djangoチュートリアル(1)

  転職したい!!

→ Web周りやりたい!! 

→ でもCOBOLしか仕事してない!!

→ なんか作ってアピールできるものがあれば!! 

→ よくわからんけど、Herokuでアプリ無料であげられるっぽい!! 

→ 言語とかどうしよう!! 

→ pythonやってるし、pythonで!! 

→ フレームワークDjangoで!!

 

みたいな流れでDjangoチュートリアル始めました。

開発環境周りは下の参考サイト見て構築しました。

よくわかんない事してましたが、とりあえず開発できる環境までは構築できたので、

詳しい事は後々勉強していこうと思います。

 

インストールしたDjangoのバージョンが1.9とかだったので、チュートリアルは英語の方を見てやってます。

バージョンが異なると日本語訳の手順では上手くいかないところがあるので。

 

とりあえず、チュートリアルの2回目まではやってみた。

 

なんだかわかったような、わからないようなふわっとした感じ。

とりあえずの感想としては、DBを強く意識した作りになっていて、

python的な表現であまりSQLとか意識しない(させない??)作りだと感じた。

 

以前、業務でJSPサーブレット(いまどき珍しいと思うのだけど)でごりごり

DBとやりとりしてJSPで結果表示するWebページを作ったのだけど、そのときは

SQLをごりごり書いてたから、ちょっと不思議な感じ。

 

フレームワーク自体が楽にアプリ開発を進めるためのツール的な位置づけだと思うから、こういうのは慣れの問題なんだろうなぁ。

 

とりあえず、いったん今日はここまでで。

 

※参考にしたサイト

Mountain Lion環境への「virtualenv」と「pythonz」のインストール手順 + 利用方法 - Qiita

 

pythonz + virtualenv + virtualenvwrapper でPython開発環境を作ってみる on MacOSX10.8 | ふぃふメモ

 

Django

The Web framework for perfectionists with deadlines | Django