モブプロだった人のブログ

モブプログラミングに魅了されたエンジニアのブログ

Python

Flask(Python) 標準の session と Flask-Session の違い

本日、同僚のエンジニアとハッカソンみたいなことをやってきました。 なかなか盛り上がったのですが、その中で「Flask 標準の session と Flask-Session ってどんな場面で使い分けるの?」をしっかり理解できていないと感じ、いろいろ勉強したのでまとめてお…

Python で get や set メソッドよりも素のままの属性を使う

「Effective Python」を久しぶりに読み返して、当時は特に何も思わなかった箇所に引っかかったのでメモを残しておきますシリーズ第7弾。 Effective Python ―Pythonプログラムを改良する59項目作者: Brett Slatkin,石本敦夫,黒川利明出版社/メーカー: オライ…

Flask + Flask-SQLAlchemy のチュートリアルを日本語で (Relationships 編)

チュートリアル関連記事 はじめに 今回は、既存の Model(User) に Relationships を追加してみたいと思います。 本格的にやるには、もっと色々考慮するポイントがありますが、まずはざっくりと Relationships を追加してみます。 追加する Model ですが、ユ…

Python の Type Hints を今更ながら勉強してみる

最近、開発環境をより便利にするために色々調査していて、今更ながら Type Hints が気になってきたので勉強してみることにしました。 Type Hints とは Python 3.5 から導入されたものです。 業務で扱っている Python が 2 系のため、そもそも対象外と考えて…

Python で a == 1 and a == 2 and a == 3 が True になるやつ、の補足

先日の記事を見たチームの人から、 「わけわからん!」 と指摘を受けてしまったので、少し補足します。 先日の記事とは↓のことです。 Python で a == 2 and a > 3 and a < 4 を True にしてみる コードで見た方が分かりやすいと思うので、先日とは違う感じで…

Python で a == 1 and a == 2 and a == 3 が True になるやつ

Twitter を眺めていたら、何やら面白そうな記事があったので、Python で真似てみることにします。 class A: def __init__(self, start): self.number = start def __eq__(self, target): if self.number != target: return False self.number += 1 return Tr…

Python で unittest ですべてをテストする

「Effective Python」を久しぶりに読み返して、当時は特に何も思わなかった箇所に引っかかったのでメモを残しておきますシリーズ第6弾。 Effective Python ―Pythonプログラムを改良する59項目作者: Brett Slatkin,石本敦夫,黒川利明出版社/メーカー: オライ…

Python で リストを返さずにジェネレータを返すことを考える

「Effective Python」を久しぶりに読み返して、当時は特に何も思わなかった箇所に引っかかったのでメモを残しておきますシリーズ第5弾。 Effective Python ―Pythonプログラムを改良する59項目作者: Brett Slatkin,石本敦夫,黒川利明出版社/メーカー: オライ…

Python で try/except/else/finally の各ブロックを活用する

「Effective Python」を久しぶりに読み返して、当時は特に何も思わなかった箇所に引っかかったのでメモを残しておきますシリーズ第4弾。 Effective Python ―Pythonプログラムを改良する59項目作者: Brett Slatkin,石本敦夫,黒川利明出版社/メーカー: オライ…

Python で 可変長位置引数を使って、見た目をすっきりさせる

「Effective Python」を久しぶりに読み返して、当時は特に何も思わなかった箇所に引っかかったのでメモを残しておきますシリーズ第3弾。 Effective Python ―Pythonプログラムを改良する59項目作者: Brett Slatkin,石本敦夫,黒川利明出版社/メーカー: オライ…

Python で map や filter の代わりにリスト内包表記を使う

「Effective Python」を久しぶりに読み返して、当時は特に何も思わなかった箇所に引っかかったのでメモを残しておきますシリーズ第2弾。 Effective Python ―Pythonプログラムを改良する59項目作者: Brett Slatkin,石本敦夫,黒川利明出版社/メーカー: オライ…

Python で for ループの後の else ブロックは使わないこと

「Effective Python」を久しぶりに読み返して、当時は特に何も思わなかった箇所に引っかかったのでメモを残しておきます。 Effective Python ―Pythonプログラムを改良する59項目作者: Brett Slatkin,石本敦夫,黒川利明出版社/メーカー: オライリージャパン発…

Flask + Flask-SQLAlchemy のチュートリアルを日本語で (unittest 編)

チュートリアル関連記事 はじめに 今回は、unittest によるテストを書いてみたいと思います。 本格的にやるには、もっと色々なロジックを追加する必要がありますが、今回は軽くトップページを表示するところまで進めます。 各ファイルの作成 Python ファイル…

Flask + Flask-SQLAlchemy のチュートリアルを日本語で (Bootstrap 編)

チュートリアル関連記事 はじめに 今回は、番外編として見た目を整えたいと思います。見た目がそれなりにキレイだと、プログラミングもやる気が出ますよね!(個人差は確実にあります。) それでは、Bootstrap を使っていきます。 各ファイルの作成・修正・削…

Flask + Flask-SQLAlchemy のチュートリアルを日本語で (ユーザ削除機能編)

こんにちは、kaorr です。 一人アドベントカレンダー14日目です。 チュートリアル関連記事 はじめに 今回は、ユーザ削除機能を追加することにします。 これで追加、表示、変更、削除の一通りの機能を実装したことになりますね! 各ファイルの修正 Python フ…

Flask + Flask-SQLAlchemy のチュートリアルを日本語で (ユーザ名変更機能編)

こんにちは、kaorr です。 一人アドベントカレンダー13日目です。 チュートリアル関連記事 はじめに 今回は、ユーザ名変更機能を追加することにします。 現状の仕様ですと、一度登録したユーザの名前が変更できず、不便ですよね。 各ファイルの修正 Python …

Flask + Flask-SQLAlchemy のチュートリアルを日本語で (記事まとめ)

こんにちは、kaorr です。 Flask + Flask-SQLAlchemy のチュートリアル記事が段々と多くなってきたので、1つの記事からまとめてリンクするように変更しました! チュートリアル関連記事

Flask + Flask-SQLAlchemy のチュートリアルを日本語で (ユーザ情報表示機能編)

こんにちは、kaorr です。 一人アドベントカレンダー12日目です。 チュートリアル関連記事 はじめに 今回は、ユーザ名変更機能を追加することにし・・・と思ったのですが、そもそも各ユーザの情報を表示するページ(機能)がないことに気がつきました。なので…

Flask + Flask-SQLAlchemy のチュートリアルを日本語で (ユーザ登録機能編)

こんにちは、kaorr です。 一人アドベントカレンダー11日目です。 チュートリアル関連記事 はじめに 今回は、ユーザ登録機能を追加することにします。 前回は手動で登録しましたが、画面上から登録できるようになることで、Web サービス感が増してきますね!…

Flask + Flask-SQLAlchemy のチュートリアルを日本語で (ユーザ表示機能編)

こんにちは、kaorr です。 一人アドベントカレンダー10日目です。 チュートリアル関連記事 はじめに それでは、ユーザ表示機能を追加していきましょう!(ユーザ登録機能は次の記事の予定。) ココからいよいよ、Flask-SQLAlchemy も登場します。 各ファイルの…

Flask + Flask-SQLAlchemy のチュートリアルを日本語で (Hello World! 編)

こんにちは、kaorr です。 一人アドベントカレンダー9日目です。 チュートリアル関連記事 はじめに Python で Web サービスを開発したいとき、皆さんは何のフレームワークを使いますか?? Django? Flask? Pyramid? とりあえず、私は Flask が大好きです! D…

PySpark の DataFrame で Case-sensitive を有効にしたい!!

こんにちは、kaorr です。 一人アドベントカレンダー8日目です。 はじめに 先日構築した PySpark の検証環境、実は1つだけ問題があるのです。 なんと、Case-insensitive なんです!! サンプルデータの作成と要件 これまでとだいたい同じですが、こんな感じ…

PySpark の DataFrame で CASE 式を書いてみた (SQL 編)

こんにちは、kaorr です。 一人アドベントカレンダー6日目です。 はじめに 先日構築した PySpark の検証環境を使って、DataFrame の CASE 式を書いてみようと思います。(その2) 今回は、SQL を使います。 サンプルデータの作成と要件 前回とほとんど同じです…

PySpark の DataFrame で CASE 式を書いてみた

こんにちは、kaorr です。 一人アドベントカレンダー5日目です。 はじめに 先日構築した PySpark の検証環境を使って、DataFrame の CASE 式を書いてみようと思います。 サンプルデータの作成と要件 # createDataFrame でデータフレームを作成する df = spar…

AWS Glue スクリプトの検証環境が欲しくて、PySpark 環境を構築してみた

こんにちは、kaorr です。 一人アドベントカレンダー4日目です。 はじめに AWS Glue のスクリプトを作り込むことになったんですが、毎回 AWS コンソール上でスクリプト作ってたらいつまで経っても検証が終わらないです・・・。 そこで、『完全再現は難しくて…

Pandas で JOIN して複数カラムを乗算する話

こんにちは、kaorr です。 一人アドベントカレンダー3日目です。 はじめに SQL 使えない場面で Python で頑張るシリーズです。 今回は、標準ライブラリではなく、Pandas を使う話です。 Pandas 可愛いよ Pandas。 前提 データ(テーブル)は2つ。 社員ごとのベ…

Docker + Selenium でスクリーンショットとってみる

こんにちは、kaorr です。 一人アドベントカレンダー2日目です。 はじめに Web サービス開発をやっていると、定期的にスクリーンショットを取得、比較して、異常が発生していないかをチェックする場面があると思います。 手動で出来るレベルの量なら手動でや…

Python の itertools.groupby の使いどころが何となく分かった話

こんにちは、kaorr です。 一人アドベントカレンダー1日目です。 はじめに itertools.groupby とは↓のことです。 10.1. itertools — 効率的なループ実行のためのイテレータ生成関数 — Python 3.6.3 ドキュメント 過去に一度だけ役立つ場面があったので、改め…

Amazon Athena に Boto 経由でアクセスし、良い感じにデータを取得してみた

こんにちは、kaorr です。 はじめに Amazon Athena は便利です。 マネジメントコンソール上でクエリを叩けるし、結果も見れるし。 Athena と出会った時の気分(くらい爽快な青空) とはいえ、コマンドラインで良い感じにしたい、って気分の時ももちろんありま…