タグ

ブックマーク / blog.ymyzk.com (5)

  • PEP 561 に準拠した型ヒントを含むパッケージの作り方 – ymyzk’s blog

    この記事では Python 3.7 で採択された PEP 561 Distributing and Packaging Type Information について簡単に解説し,PEP 561 に準拠した,型ヒントを含むパッケージの作成方法について紹介します. PEP 561 以前の型情報の配布事情 PEP 561 以前は主に typeshed を通じて,標準ライブラリ・サードパーティーの型情報が配布されていました.typeshed にはパッケージの開発者が同意したパッケージの型情報しか登録できないという制限や,どのバージョンのパッケージの型情報かという情報が含まれていないという問題,typeshed のメンテナーによるレビューが必要なためスケールしづらいといった問題がありました. 詳細は割愛しますが,PEP 484 の “Storing and distributing stub file

    PEP 561 に準拠した型ヒントを含むパッケージの作り方 – ymyzk’s blog
  • 論文執筆を支える継続的インテグレーション: Git から Amazon S3 まで

    この記事は CAMPHOR- Advent Calendar 2017 8日目の記事です. 学位論文を書く季節になってきました.論文を書く際にはきちんとバックアップを取っておかなければならないなど,実際の執筆以外でも気を遣わなければならないことが多くあります.この記事では,ソフトウェア開発における継続的インテグレーション (CI) や継続的デリバリー (CD) の考え方を取り入れ,様々なツールを活用することで,論文の執筆に集中できる環境を整備する方法を紹介します. 対象読者 基的に TeX を使って論文を書く人を想定しています.(Word などで論文を書かざるを得ない環境にいる方には申し訳ない) 目標 この記事では以下のようなものを作っていく方法について説明します. GitGitHub でバージョン管理 CircleCI でコンパイルやスペルチェックを実行 生成された PDF ファ

    論文執筆を支える継続的インテグレーション: Git から Amazon S3 まで
  • WSGI ミドルウェアとして使えるラインプロファイラを作った話

    この記事は CAMPHOR- Advent Calendar 2016 の1日目の記事です. Python の WSGI ミドルウェアとして使えるラインプロファイラ wsgi_lineprof を作成しました. wsgi_lineprof は Django や Pyramid, Flask, Bottle などの WSGI 互換のアプリケーションやフレームワークと組み合わせて利用できるようになっています. 背景 Web アプリケーションを作成する際に, ボトルネックとなっている部分を発見するために, ラインプロファイラは有用です. Ruby での WSGI に対応する Rack には rack-lineprof というライブラリがあり, Rack の middleware として簡単にラインプロファイラを利用できます. ISUCON の参加記事等を見ていると, Ruby ユーザーはこのライ

    WSGI ミドルウェアとして使えるラインプロファイラを作った話
  • Python 2 と型ヒント (Type Hints) – ymyzk’s blog

    この記事では PEP 484 — Type Hints の更新によって提案されている Python 2 における型ヒントについての情報をまとめます. 型ヒントとは Python 3.5 から導入された型ヒント (Type Hints) はソースコードに型注釈 (型アノテーション) を記述する標準的な方法を定義するものです. この記法は mypy で利用されていたものの影響を強く受けており, Python 3.0 で導入された関数アノテーションを利用します. 型ヒントは次のように記述します: def add(x: int, y: int) -> int: """docstring here""" return x + y Python 3.5 は様々な型を記述するために typing モジュールが追加されました. この typing モジュールは Python 3.5 以前でもバックポートが

    Python 2 と型ヒント (Type Hints) – ymyzk’s blog
  • Swift でジェネレータを作ったり、遅延評価してみる

    Swift 1.2 を使ってジェネレータを作成したり, ジェネレータを使って遅延評価をしてみます. 同様のことをこれまでいくつかの言語で行っていますが, それについては以下を参照してください. これまでの流れ Ruby の Enumerator でジェネレータを作ったり、遅延評価してみる Python でジェネレータを作ったり、遅延評価してみる ECMAScript 6 でジェネレータを作ったり、遅延評価してみる Rust でジェネレータを作ったり、遅延評価してみる ジェネレータの基 Swift でのジェネレータは GeneratorType プロトコル (protocol) に適合している型として表されます. GeneratorType の定義は以下のようになります. protocol GeneratorType { typealias Element mutating func ne

    Swift でジェネレータを作ったり、遅延評価してみる
  • 1