タグ

pythonに関するy_nishimura_728のブックマーク (9)

  • DjangoORMでウィンドウ関数を使おう - mizzsugar’s blog

    この記事はDjango Advent Calendar 2019の記事です。 Django Advent Calendar 2019 - Qiita そして私の初のアドベントカレンダーです! 最近仕事でBigQueryで分析関数を使うことが多いので、 そのなかでもウィンドウ関数をDjangoORMでも使えないかなと思い調べてみました。 ウィンドウ関数とは データベース製品よっては分析関数と呼ぶところもあればウィンドウ関数と呼ぶところもあります。 この記事ではPostgreSQLを使います。PostgreSQLでは分析関数をウィンドウ関数と呼んでいるのでウィンドウ関数で統一します。 PostgreSQLの公式ドキュメントには下記のように説明されています。 ウィンドウ関数は現在の行に何らかとも関係するテーブル行の集合に渡って計算を行います。 これは集約関数により行われる計算の形式と似たような

    DjangoORMでウィンドウ関数を使おう - mizzsugar’s blog
    y_nishimura_728
    y_nishimura_728 2019/12/04
    Django ORMでSQLのウィンドウ関数を使うための手順。順位や平均を出すのにとでも便利そう。
  • DjangoマイグレーションをWebアプリが無停止のまま安全に反映する方法 - Make組ブログ

    Djangoはデータベースマイグレーションの機能を持っています。 ですが、 実際、Djangoマイグレーションってどう使うの? という疑問が多いかと思います。 docs.djangoproject.com この記事では、 マイグレーションを稼働中のアプリケーションに、無停止でどう反映すれば良いのか を説明します。 前提としてWebアプリ、データベースは番環境に1系統づつあるとします。 基的に無停止でマイグレーションを実行するのは 絶対に安全という方法ではないので、動作確認などをして慎重に反映する必要があります 。 無停止でマイグレーションを反映する基 マイグレーションを 無停止で行う場合、「マイグレーションとアプリのリリースはどちらを先にすべきか」 という話になります (マイグレーションをするということは、アプリケーションの変更も必要になります)。 マイグレーションを先に実行して、ア

    DjangoマイグレーションをWebアプリが無停止のまま安全に反映する方法 - Make組ブログ
    y_nishimura_728
    y_nishimura_728 2019/11/01
    Djangoアプリのマイグレーションについて、Webアプリケーションの停止の有無、Webアプリリリースとマイグレーションのどちらを先行の作業にするかの解説。近い方式のWebフレームワークならかなり流用可能なのでは。
  • Python 3.8 の概要 (その8) - Did you mean "=="? - atsuoishimoto's diary

    さて、質問です。 a = 1.0 a is 1.0 上記の処理で、a is 1.0 の結果は True となるでしょうか、それとも False となるでしょうか? True と答えたあなた、不正解です。反省してください。 False と答えたあなた、同じく不正解です。猛省してください。 正解は 「わからない」 です。 Pythonインタープリタを起動して、対話的に実行してみましょう。 >>> a = 1.0 >>> a is 1.0 False False ですね。a に代入した float オブジェクトと、a is 1.0 で比較している float オブジェクトは、同じ値ですが異なるオブジェクトです。 でも、ちょっと書き換えて、同じ処理を関数の中で実行するとどうでしょう? >>> def test(): ... a = 1.0 ... return a is 1.0 ... >>> t

    Python 3.8 の概要 (その8) - Did you mean "=="? - atsuoishimoto's diary
  • Python 3.8 の概要 (その7) - ちょっと便利そうな機能追加 - atsuoishimoto's diary

    math.prod() リストなどのイテレータの要素の積を計算する math.prod() が追加されました。 sum() の掛け算版ですね。 >>> import math >>> math.prod([1,2,3,4]) 24 正規表現が \N{名前} 記法をサポート reモジュールで、正規表現に文字の名前を指定する \N{名前} を使えるようになりました。 >>> re.match(r'\N{LATIN SMALL LETTER A}', 'a') <re.Match object; span=(0, 1), match='a'> >>> re.match(r'\N{GRINNING FACE WITH SMILING EYES}', '😁') <re.Match object; span=(0, 1), match='😁'> 文字の名前は、unicodedata.name()

    Python 3.8 の概要 (その7) - ちょっと便利そうな機能追加 - atsuoishimoto's diary
  • Pythonで始めてみよう関数型プログラミング

    Migrating From Spring Boot 2 To Spring Boot 3 - What's Jakarta EE Got To Do with It?

    Pythonで始めてみよう関数型プログラミング
  • Python 3.8 の概要 (その2) - Positional-only parameters - atsuoishimoto's diary

    Python 3.0 以降では、関数を定義するときに、キーワード専用引数 を指定できるようになりました。 def func(a, b, *, c=1, d=2): return a+b+c+d こんなのですね。引数のリストに * がある関数を呼び出すとき、* の後ろにある引数の値は、かならずキーワード引数として指定しなければいけません。 ↑の関数だと、引数 c はキーワード引数で指定すればちゃんと動きます。 >>> func(1, 2, c=10) 15 しかし、キーワードなしで呼び出すとエラーになります。 >>> func(1, 2, 10) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: func() takes 2 positional arguments but 3

    Python 3.8 の概要 (その2) - Positional-only parameters - atsuoishimoto's diary
  • Python 3.8 の概要 (その1) - Assignment expressions - atsuoishimoto's diary

    古来、Pythonでは「代入は文であるべき!」と一貫して主張してきました。 C言語などでは、代入は足し算や掛け算と同じ、値を計算する「式」で、たとえば a = (b=100) / 2; と書くと、b には 100 を代入し、a に 100/2=50 を代入します。1+1 は 2 という値になる 式 ですが、b=100 も同様に値が 100 となる 式 なのです。 Pythonでは、代入は式ではないので、こういう書き方はできません。 Pythonの代入は、足し算などの演算子の仲間ではなく、if や for のような制御文の仲間で、あまり自由な書き方は出来ないのです。 Python FAQ では、その理由として Python の式中での代入を許さない理由は、この構造によって起こる、他の言語ではありがちで見つけづらいバグです: if (x = 0) { // error handling } e

    Python 3.8 の概要 (その1) - Assignment expressions - atsuoishimoto's diary
  • Webからのデータ収集の入門書としておすすめ「Pythonクローリング&スクレイピング[増補改訂版]」 - Sansan Tech Blog

    こんにちは。 DSOC R&D グループの高橋寛治です。 つい先日に同僚の加藤が執筆した書籍「Pythonクローリング&スクレイピング[増補改訂版]―データ収集・解析のための実践開発ガイドー」の改訂版が発売されました。 gihyo.jp 私が業務でPythonを用いたクローリングおよびスクレイピングに取り組んでいることもあり、改訂版のレビューをさせていただきました。 実は、初版は読んで実践させていただいていたため、レビュー依頼を受けた際には感激しました(当にお世話になっているです)。 読んでいて私自身非常に勉強になった点が多く素直に良いだと思ったため、書籍の紹介をさせていただきます。 書籍の概要 Unix コマンドによるクローリングの基礎から始まり Python を用いた実践的なクローリング・スクレイピングなど様々なトピックに関して、豊富なサンプルコードとともに解説されています。

    Webからのデータ収集の入門書としておすすめ「Pythonクローリング&スクレイピング[増補改訂版]」 - Sansan Tech Blog
    y_nishimura_728
    y_nishimura_728 2019/08/28
    scrapyを自前で少しだけ触ったことがあります。多機能ですが、フレームワークなので最初は中々ハードルが高いですね。
  • Python: ユニットテストを書いてみよう - CUBE SUGAR CONTAINER

    ソフトウェアエンジニアにとって、不具合に対抗する最も一般的な方法は自動化されたテストを書くこと。 テストでは、書いたプログラムが誤った振る舞いをしないか確認する。 一口に自動テストといっても、扱うレイヤーによって色々なものがある。 今回は、その中でも最もプリミティブなテストであるユニットテストについて扱う。 ユニットテストでは、関数やクラス、メソッドといった単位の振る舞いについてテストを書いていく。 Python には標準ライブラリとして unittest というパッケージが用意されている。 これは、文字通り Python でユニットテストを書くためのパッケージとなっている。 このエントリでは、最初に unittest パッケージを使ってユニットテストを書く方法について紹介する。 その上で、さらに効率的にテストを記述するためにサードパーティ製のライブラリである pytest を使っていく。

    Python: ユニットテストを書いてみよう - CUBE SUGAR CONTAINER
  • 1