「Amazon Web Services 基礎からのネットワーク&サーバー構築 改訂版」をBoto3とAnsibleで写経してみた

社内ではAWSが普通に使われているため、常々基礎からきちんと学びたいと考えていました。 そんな中、書籍「Amazon Web Services 基礎からのネットワーク&サーバー構築 改訂版」の社内勉強会が開催されることになりました。 Amazon Web Services 基礎からのネ…

Robot Frameworkにて使える時間のフォーマットについて調べてみた

Robot Frameworkでは、 sleep 1 seconds のように、数値 + 単位で時間を表現できます。 ただ、サイトによって seconds やsが使われるなど、単位のフォーマットが異なっていました。 そこで今回、どういうフォーマットが使えるのか調べてみました。 環境 Mac …

Robot Framework + Selenium2Libraryで、「Go To」を使う時はURIスキームを付ける

Selenium2Libraryでは、 Go To キーワードを使って引数のURLに移動します。 Go To | Selenium2Library 今までのサンプルでは、localhostへの移動はURIスキームを省略した localhost:8084 みたいな値を引数として渡していました。 しかし、通常のChromeとHead…

Robot Framework + Selenium2Library + robotframework-requestsで、静的ファイルが本当にあるのか確認する

以前、Robot Framework + Selenium2Libraryで、静的HTMLをテストしてみました。 Robot Framework + Selenium2Libraryで、静的HTMLをテストする - メモ的な思考的な その時、 <img id="img_200" src="/static/image/a.png" alt="あの字" title="画像タイトル"> というHTMLに対し、 page should contain image jquery=img[alt='あの字'] という…

Robot Framework + Selenium2Libraryで、HTML + JavaScriptまわりをテストする

前回、Robot Framework + Selenium2Libraryで、HTMLのフォームまわりをテストしてみました。 Robot Framework + Selenium2Libraryで、HTMLフォームまわりをテストする - メモ的な思考的な 今回は、Robot Framework + Selenium2Libraryで、HTML + JavaScript…

Robot Framework + Selenium2Libraryで、HTMLフォームまわりをテストする

前回、Robot Framework + Selenium2Libraryで、静的HTMLをテストしてみました。 Robot Framework + Selenium2Libraryで、静的HTMLをテストする - メモ的な思考的な 今回は、Robot Framework + Selenium2Libraryで、HTMLフォームまわりをテストしてみます。 …

Robot Framework + Selenium2Libraryで、静的HTMLをテストする

以前、Robot FrameworkとSelenium2Libraryを使ってみました。 Robot FrameworkでHeadless Chromeを使ってみた - メモ的な思考的な Robot Framework + Selenium2Library + ImageMagickで、スクリーンショットの差分を確認する - メモ的な思考的な 今回は Robo…

Heroku CLI を使わずに、BottleアプリをHerokuへデプロイする

通常、Heroku CLI (以前のHeroku Toolbelt)を使ってHerokuにデプロイしています。 Heroku CLI | Heroku Dev Center ただ、Heroku CLIを使わずにデプロイする方法があるのか気になったため、その方法を調べた時のメモです。 目次 環境 Bottleアプリまわりの作…

libsass-pythonを使って、IntelliJ + File WathersプラグインでSassをコンパイルする

IntelliJで書いているPythonアプリにて、Sassを使おうと考えました。 Sassのサイトを見たところ、Rubyが必要そうでした。 Sass: Install Sass 他の方法がないかを探したところ、LibSassがありました。 Sass: LibSass 速いsass、libsassについて超簡単な説明 …

Robot Framework + Selenium2Library + ImageMagickで、スクリーンショットの差分を確認する

Robot Frameworkを使ってWebサイトの検証をする中で、Webサイトの修正による差異はどこなのかを知りたいことがありました。 何か方法がないかを調べると、ImageMagickを使うのが良さそうでした。 ImageMagick - 2枚の画像を比較! - mk-mode BLOG MiniMagic…

Robot FrameworkでHeadless Chromeを使ってみた

Robot FrameworkにはSelenium2Libraryという、Seleniumと連携するためのライブラリがあります。 robotframework/Selenium2Library: Web testing library for Robot Framework | GitHub Selenium2Library Selenium2Library ドキュメント和訳 — Selenium2Libra…

受け入れテストのフレームワークRobot Frameworkで、組込機能であるBuiltin Libraryを使ってみた

Python製の受け入れテストのフレームワークとして、Robot Frameworkがあります。 Robot Framework User Guide Robot Framework 和訳・日本語ドキュメント集 — RobotFramework和訳・日本語ドキュメント集 当初、ドキュメントが充実しているのでテストコードが…

#pycamp #glnagano #nseg Python Boot Camp in 長野にTAとして参加しました

6/10にギークラボ長野で開催された「Python Boot Camp in 長野」にTAとして参加しました。 PyCon JP Blog: 「Python Boot Camp in 長野」開催決定のお知らせ Python Boot Camp in 長野 - connpass Python Boot Camp Text — Python Boot Camp Text 2016.04.28…

Docker + Alpine3.5 + Apache2.4 + Python3.xで、mod_pythonをソースコードからインストールしてみた

以前、Docker + Alpine3.5 + Apache2.4 + Python2.7で、mod_pythonをソースコードからインストールしてみました。 Docker + Alpine3.5 + Apache2.4 + Python2.7で、mod_pythonをソースコードからインストールしてみた - メモ的な思考的な その時はPython2.x…

初めてのOSSへのプルリクとマージ

会社のまわりの人たちが普通にプルリクを送ってるのを見ていいなーと思いつつ、プルリク未体験で過ごしてきました。 そんな中、ようやく初めてのプルリクとマージを体験できたので、メモしておきます。 目次 作成したプルリク 見つけた経緯 プルリクの作成 G…

Docker + Alpine3.5 + Apache2.4 + Python2.7で、mod_pythonをソースコードからインストールしてみた

今までPython3.x & Apache2.4.xを使って、CGIをひと通り試してきました。 次は、CGIを別のものに置き換えてWebアプリケーションを作りたくなりました。 PythonのWebアプリケーションというとWSGIが思い浮かびます。ただ、CGI以降WSGI以前に登場したものを使…

Pythonで、日本語をCookie値へ設定する方法を調べてみた

以前、PythonでCGIのCookieを使ってみました。 Docker + Alpine3.5 + Apache2.4 + Python3.6で、CGIのCookieを使ってみた - メモ的な思考的な その時は日本語をCookie値へ設定する方法が気になっていたものの、深入りしませんでした。 そこで今回、以下を参…

Python + astモジュールを使ってソースコードを解析し、メソッドブロックや関数ブロックの定義行と最終行を取得する

Pythonソースコードを解析して、メソッドブロックや関数ブロックの定義行と最終行を取得することがありました。 Pythonでは標準モジュールのastを使ってソースコードを解析できるため、試した時のメモです。 32.2. ast — 抽象構文木 — Python 3.6.1 ドキュメ…

Docker + Alpine3.5 + Apache2.4 + Python3.6で、CGIのCookieを使ってみた

前回、CGIのリダイレクトを使ってみました。 Docker + Alpine3.5 + Apache2.4 + Python3.6で、CGIのリダイレクトを使ってみた - メモ的な思考的な 今回はCGIのCookieを使ってみます。 目次 環境 PythonのCookieまわりの標準モジュールについて CookieのExpir…

Docker + Alpine3.5 + Apache2.4 + Python3.6で、CGIのリダイレクトを使ってみた

以前、SSIを使ってみました。 Docker + Alpine3.5 + Apache2.4 + Python3.6で、SSIを使ってみた - メモ的な思考的な 今回はCGIのリダイレクトを使ってみます。 目次 環境 Locationヘッダを使ったリダイレクト NPHスクリプトによる、Locationヘッダを使ったリ…

Google I/O 2017 Extended Live Viewing 信州に参加しました

5/17の深夜に開催された、Google I/O 2017 Extended Live Viewing 信州に参加しました。 久しぶりの参加であり、長野県でGoogle I/O 2017 Extendedが毎年開催されるのはありがたいと感じています。 Google I/O 2017 Extended Live Viewing 信州 - connpass G…

Docker + Alpine3.5 + Apache2.4 + Python3.6で、SSIを使ってみた

前回、フォームのデータをcgiモジュールを使って受け取りました。 Docker + Alpine3.5 + Apache2.4 + Python3.6で、フォームのデータを標準モジュールcgiで受け取ってみた - メモ的な思考的な 今回は、ApacheのSSI(Server Side Include)を、公式チュートリア…

Docker + Alpine3.5 + Apache2.4 + Python3.6で、フォームのデータを標準モジュールcgiで受け取ってみた

前回、フォームのデータをCGIのPythonスクリプトでsys.stdin.read()とos.environを使って受け取りました。 Dockerで、Alpine3.5 + Apache2.4 + Python3.6の環境を作って、フォームのデータをCGIで受け取ってみた - メモ的な思考的な 今回は標準モジュールcgi…

Dockerで、Alpine3.5 + Apache2.4 + Python3.6の環境を作って、フォームのデータをCGIで受け取ってみた

以前、DockerでCGIを動かしてみました。 Dockerで、Alpine3.4 + Apache2.4.25 + Python3.6.0の環境を作って、CGIを動かしてみた - メモ的な思考的な 今回は、Dockerで、Alpine3.5 + Apache2.4 + Python3.6の環境を作って、フォームのデータをPythonのCGIで受…

Pythonで、unittest.mock.patchを使ってデコレータを差し替える

同僚と話している中で、unittest.mock.patchを使ったデコレータの差し替えに関する話題が出ました。 そういえばデコレータは差し替えたことがなかったため、試してみたことをメモします。 なお、「テストファイル群に、デコレータを差し替える/差し替えない…

オープンハードカンファレンス2017 Naganoに参加しました

4/22にギークラボ長野で開かれた「オープンハードカンファレンス2017 Nagano」に参加しました。 オープンハードカンファレンス2017 Nagano – OSHWC 物理的な不器用さ*1から、相変わらず物理レイヤーについて学ぶことがあまりできていません… ただ、以前GDG信…

第8回 SQLアンチパターン読書会に参加しました

4/20にギークラボ長野で開かれた「第8回 SQLアンチパターン読書会」に参加しました。 第8回 SQLアンチパターン読書会 - connpass O'Reilly Japan - SQLアンチパターン 今回は 11章 ファントムファイル(幻のファイル) 12章 インデックスショットガン(闇雲…

Pythonで、Werkzeug.testを使って、WSGIサーバを起動せずにWSGIアプリのテストをする

以前、WebTestやwsgi-interceptを使ってWSGIアプリのテストをしました。 Pythonで、WebTestを使って、WSGIサーバを起動せずにWSGIアプリのテストをする - メモ的な思考的な Pythonで、wsgi-interceptを使って、WSGIサーバを起動せずにWSGIアプリのテストをす…

Pythonで、RequestのCookieを使ってみた

以前、wsgi-interceptを使った時に、PythonのHTTPライブラリとして、Requestsを使いました。 Requests: HTTP for Humans — Requests 2.13.0 documentation 使っている中で、RequestのCookieの使い方について迷ったことがあったため、メモを残します。 環境 M…

Python3で、リテラルのエスケープシーケンスに見える非リテラルの文字列を、Unicode文字へと変換する

Python3で、リテラルに改行コードなどを含めたい場合、エスケープシーケンスを使います。 2.4.1. 文字列およびバイト列リテラル | 2. 字句解析 — Python 3.6.1 ドキュメント 例えば、「Hello(改行) world」としたい場合、 $ python Python 3.6.1 (default, A…

#stapy #glnagano みんなのPython勉強会リモート中継 in GEEKLAB.NAGANO#16 に参加しました

4/12にギークラボ長野で開かれた「みんなのPython勉強会リモート中継 in GEEKLAB.NAGANO#16」に参加しました。 みんなのPython勉強会リモート中継 in GEEKLAB.NAGANO #16 - connpass 「みんなのPython勉強会 #23」の東京会場を中継する形での勉強会でした。 …

Pythonで、wsgi-interceptを使って、WSGIサーバを起動せずにWSGIアプリのテストをする

以前、WebTestを使ってWSGIアプリのテストを行いました。 Pythonで、WebTestを使って、WSGIサーバを起動せずにWSGIアプリのテストをする - メモ的な思考的な 他にもテストツールがないかを探したところ、wsgi-interceptがありました。 cdent/wsgi-intercept:…

Python + Bottleで、フォームやCookieに日本語を設定したら文字化けした

Python + Bottleで、フォームやCookieに日本語を使ったら文字化けしたため、メモを残します。 目次 環境 フォームやCookieに設定した値の取得について 日本語の文字化けと対応について その他 ソースコード 環境 Python 3.6.1 Bottle 0.12.13 フォームやCook…

Python + modulefinder + collections.Counterで、モジュールがimportされた回数を調べる

複数のPythonスクリプトを対象に、モジュールがimportされた回数を知りたくなりました。 ロードされているモジュールはsys.modulesなどが使えますが、これではimportされた回数が分かりません。 調べてみたところ、標準ライブラリmodulefinder + collections…

Pythonで、os.walk()を使って、特定のディレクトリを除いたファイル一覧を取得する

Pythonで、特定のディレクトリを除いたファイル一覧を取得することがあったため、メモを残します。 目次 環境 os.walk()の動き ファイルの一覧を取得 特定のディレクトリを除いたファイルの一覧を取得 スライス(dirs[:])で差し替え remove(dirs.remove('hoge…

Pythonで、WebTestを使って、WSGIサーバを起動せずにWSGIアプリのテストをする

Pythonで、「WSGIサーバを起動せずにWSGIアプリをテストする」方法を探してみたところ、ライブラリWebTestがありました。 Pylons/webtest: Wraps any WSGI application and makes it easy to send test requests to that application, without starting up a…

Python + pytestにて、pytest.raisesを使って例外をアサーションする時の注意点

Python + pytestにて、「pytest.raisesを使って例外をアサーションする」テストコードを作成する機会がありました。 ただ、書き方を誤りうまくアサーションできなかっため、メモを残します。 目次 環境 状況 原因 対応 ソースコード 環境 Python 3.6.0 unitt…

#stapy #glnagano みんなのPython勉強会 in 長野#1に参加しました

3/18にギークラボ長野で開かれた「みんなのPython勉強会 in 長野 #1」に参加しました。 みんなのPython勉強会 in 長野 #1 - connpass 資料も上記ページにまとまっています。 会場が参加者で埋まり、さらに各プレゼンでも質問のやり取りが行われるなど、熱気…

Pythonで、モックに差し替えたメソッドが呼ばれた回数や呼ばれた時の引数を検証する

Pythonにて、「モックに差し替えたメソッドが呼ばれた回数や呼ばれた時の引数を検証する」テストコードを作成する機会があったため、メモを残します。 目次 環境 状況 対応 メソッドが呼ばれた回数を検証 メソッドが呼ばれた時の引数を検証 メソッドが呼ばれ…

Pytnonで、unittest.mock.patch.objectのautospecとside_effectを使って、テスト対象の属性(self.attr)を更新する

Pythonにて、「メソッドを差し替え、テスト対象オブジェクトの属性を更新する」テストコードを作成する機会があったため、メモを残します。 なお、良いタイトルが思い浮かびませんでしたので、mock.object(autospect=True)のサンプルとして考えてください… …

Dockerで、Alpine3.4 + Apache2.4.25 + Python3.6.0の環境を作って、CGIを動かしてみた

以前、httpd:alpineのApacheを使ってみました。 Docker for Macにて、httpd:alpineのApacheを使ってみた - メモ的な思考的な 今回は、DockerでAlpine3.4 + Apache2.4.25 + Python3.6.0の環境を作って、CGIでPythonスクリプトを動かしてみます。 目次 環境 Do…

#jawsdays JAWS DAYS 2017に参加しました

3/11にJAWS DAYS 2017へ参加しました。 JAWS DAYS 2017 会場はTOC五反田メッセ(東京)でした。 TOC GOTANDA MESSE 会社ではAWSを使っているのですが、ほとんどお任せな状態です。ただ、今後のことを考えると、実際にAWSを触ったり色々と作りたいと考えていま…

#stapy #glnagano 第15回みんなのPython勉強会リモート中継 in GEEKLAB.NAGANO に参加しました

3/8にギークラボ長野で開かれた「【音質・画質UP】みんなのPython勉強会リモート中継 in GEEKLAB.NAGANO #15」に参加しました。 【音質・画質UP】みんなのPython勉強会リモート中継 in GEEKLAB.NAGANO #15 - connpass 「みんなのPython勉強会 #22」の東京会…

Pythonで、MagicMockのreturn_valueを使って、モックから別のモックを返してみた

Pythonにて、「モックから別のモックを返す」テストコードを作成する機会がありました。 そこで、以下を参考に作成した時のメモを残します。 26.6. unittest.mock — 入門 — Python 3.6.0 ドキュメント Pythonの万能モック MagicMockと戯れる #Pistatium 目次…

Python + pytestで、monkeypatch.setattr()を使ってみた

pytestでは、monkeypatchを使ってmockを作成できます。 Monkeypatching/mocking modules and environments — pytest documentation モンキーパッチ/モックのモジュールと環境 今回は、monkeypatch.setattr()を使って、 プロダクションコードのメソッドや関…

Macにrabbitをインストールし、プレゼンテーマを自作してみた

Macにプレゼンツールのrabbitをインストールし、プレゼンテーマを自作した時のメモを残します。 公式サイト:Rabbit - はじめに 目次 環境 rabbitの動作環境を構築 rbenvのインストール rbenvを使ったRubyのインストール Bundlerを使ってrabbitをインストー…

デブサミ2017の二日目に参加しました #devsumi

2/17にデブサミ2017に参加しました。 Developers Summit 2017 エンジニアとして生きる、技術の先にある現実に踏み出す セッション資料は以下で公開されています。 デブサミ2017、講演関連資料まとめ:CodeZine(コードジン) ここでは自分の感想やメモを残し…

Python2で、type()関数を使うと<type 'instance'>が返ってきた

Python2でprintデバッグをした際、インスタンスの型名が知りたくなりました。 type()関数を使ったところ、<type 'instance'>が返ってきたので、これは何だろうと思って調べた時のメモです。 type() | 2. 組み込み関数 — Python 2.7.x ドキュメント 環境 Python 2.7.13 結果 Py</type>…

Docker for Macにて、httpd:alpineのApacheを使ってみた

初めてDockerをインストールし、Alpine Linux版Apacheイメージを使ってみた時のメモです。 今回は以下の記事が参考になりました。ありがとうございました。 Dockerコマンドメモ - Qiita 目次 環境 Docker for Macのインストール Visual Studio CodeでDockerf…

PythonのReportLabで、表(TableやTableStyle)について調べてみた

ReportLabでpdfに表を描いてみたところ、悩んだところがあったため、メモを残しておきます。 なお、詳細はReportLabの公式ドキュメント中の「ReportLab PDF LibraryUser Guide」のp77〜にも記載があります。 ReportLab Documentation - ReportLab.com (pdf注…