投稿

ラベル(Python)が付いた投稿を表示しています

条件判定値を引数にそのまま流用できないかを考える

イメージ
自分向けのプログラミングTipsメモです。大した内容ではありません。 Gistにサンプルコードを書いてみたので、まずそれを貼りたいと思います。 コードは、AWSを操作するための Python版 AWS SDK(Boto3)を利用したプログラムの一部です。 仕事で書いているBoto3プログラムで、こういう場面がありました。 取得した配列のある要素の値がTrueかFalseかで後続で実行する関数の引数を変えたい。 関数の引数にはTrueかFalseを用いる 当たり前といえば当たり前ですが、条件判定しているTureかFalseを、そのまま関数の引数として与えれば、条件判定する必要がないんですよね。 こういう小さな省力化(短いコードで書く努力)を積み重ねることで、一個のサービスが出来上がった時に体感できるような差が生まれるのかなぁなどと思いました。 普段はサーバ管理みたいな仕事が多いので、こういう風にプログラミングに対して自分で「おっ、こうした方がいいじゃん?」みたいな思考ができたこと自体がなんだかとても嬉しくなりました。 こういう気持ちはたとえ小さくてもきちんと表現したり記録しておくことが精神衛生上、そして今後の技術力向上のモチベーション管理上も良いのかなぁと思って、ブログに書いておこうと思った次第です。 こういうTipsがまとまった本とか、あるのかな、普通にありそうだな。 プログラミングをもっと業務でできるようになりたいです。 スマートPythonプログラミング: Pythonのより良い書き方を学ぶ

AWS EC2 の インスタンスIDにマッチする正規表現が欲しかったので試行錯誤した結果

得られた正規表現 '^i-([a-zA-Z0-9A0-zZ9]{8}|[a-zA-Z0-9A0-zZ9]{17})$' 背景 今の勤務先ではAWS系インフラエンジニアとしてAWSの管理全般を行っています。 昨今のクラウド全盛期においては運用業務の各種自動化が大事ということで、Python + AWS SDK(Boto3)で、AWS管理自動化プログラミングを少しずつ進めています。 AWSの操作はEC2に関するものが多く、EC2のインスタンスIDを引数に与えるものが多くなっているので、インスタンスIDが正しく入力に与えられているかをバリデーションできたらいいなと思い、ちょっと探してみた結果、以下のような正規表現を得ることができました。もっといい案がありましたら教えてください。 数ヶ月前に、インスタンスID及びAMI IDの文字数拡張がアナウンスされています。なので、「i-(英数字8桁)」の場合と、「i-(英数字17桁)」の場合に対応する必要がありました。今回はそれに対応できるようになりました。 得られた正規表現をPythonで使いたい Pythonで使う時には、 標準で用意されている re というモジュールをインポート して、 search() を使うことで、与えられた文字列が正規表現にマッチしているかどうかを確認することができます。 「i-」の後ろが8桁の英数字か、17文字の英数字の時のみ、オブジェクトが返ってくるので、そのオブジェクトの存在を確認すれば、インスタンスIDが実在するかはどうであれ、少なくとも形式に沿った値であるということがわかります。 >>> >>> re.search('^i-([a-zA-Z0-9A0-zZ9]{8}|[a-zA-Z0-9A0-zZ9]{17})$', 'i-0') >>> re.search('^i-([a...

CentOS 6.2にTrac 0.12.3をインストール

CentOS release 6.2 にTrac 0.12.3を入れた時のメモ [必要なアイテム] ・Apache ・Python ・mod_python ・PostgreSQL ・Genshi ・Trac [Apacheについて] インストール時のパッケージ選択で入れた。(というか入る) CentOSでのApacheを取り扱う際に最低限知っておかないといけないことは (もっとあるだろうけど)以下に。 ・httpd.confの場所     /etc/httpd/conf/httpd.conf ・httpdの再起動     /etc/init.d/httpd restart ・Apacheモジュール用(mod_pythonとか)のconfファイルの場所      /etc/httpd/conf.d/ [Pythonについて] CentOSはデフォでPythonが入る。 CentOS6.2が持ってるPythonのバージョンは2.6 私のCentOSはPython学習用に3.1を入れて、普段はそちらを起動するようにしています。 で、システムでは2.6を使うし、今回のインストールにも2.6を使ったので、 バージョンの使い分けに気をつける必要がありそう。 [mod_pythonについて] 最後に対応したので最後に書く [PostgreSQLについて] まずはインストールされてるのかを確認した。 下のサイトを読んで、確認は「rpm -qa」コマンドで行った。 CentOS で PostgreSQL を使ってみよう!(1) http://lets.postgresql.jp/documents/tutorial/centos -------------------------------------------------------- rpm -qa | grep Posposgtrgre postgresql-contrib-8.4.9-1.el6_1.1.i686 postgresql-8.4.9-1.el6_1.1.i686 postgresql-libs-8.4.9-1.el6_1.1.i686 postgre...