taisablog

taisa's engineer blog


comment

Your email address will not be published.

関連記事

Python Bottleのソースを読む 起動編

Pythonの軽量WebフレームワークBottleのソースを読む 起動編 Bottleとは Bottle is a fast, simple and lightweight WSGI micro web-framework for Python. It is distributed as a single file module and has no dependencies other than the Python Standard Library. Pythonの軽量Webフレームワークで、特徴はシンプルで早く、Pythonの標準ライブラリにも依存していないWebフレームワークであることとフレームワーク本体が1ファイルで構成されていることである Class Hierarchy Doxygenを使って出力した図Bottleは1ファイルながら中でそれぞれのクラス、主にServer、Templateが継承関係にあるのがわかる(コード量は4000行位)。ServerやTemplateクラスはたくさんあるが実際はその中のどれかを選択して利用する形となる 起動 Bottleの起動はrun()を呼び出す方法とコマンドラインインターフェースを使う方法が用意されている run()を使う方法 以下のように記載し起動することでサーバが立ち上がる from bottle import run, route @route(‘/’) def index(): return ‘Hello World’ run(host=’localhost’, port=8000, debug=True) コマンドラインインターフェースを使う場合 以下のコマンドで起動可能 # コントローラを指定 python -m bottle ‘package.controller’ # 説明は省略するが明示的にアプリを指定することも可能 python -m bottle ‘package.controller:app’ controller.py # runは不要 from bottle import ,route @route(‘/’) def index(): return ‘Hello World’ 起動処理を確認する コマンドラインインターフェースを使う場合 mainが2箇所あるが、これはサーバアダプダに必要なライブラリを必要としているからで、1つ目のmainでまずサーバアダプタに必要なライブラリを読み込み2つ目のmainでサーバが起動される仕組みになっている run()でサーバを起動する run()では、渡された引数の値をそれぞれ読み込んだあと最後にServerAdapterのrun()を呼び出している。Bottleでは多くのサーバをServerAdapterを継承することでサポートしており、指定されたサーバを起動するようになっている。指定しない場合はwsgirefがデフォルトで呼ばれる。また、appパラメータは特別指定しなければ、内部で自動的にdefaultが使われるので特別指定する必要はない。 サーバをロードするまで処理を追ってみる まず、Bottleでサポートしているサーバは以下のように宣言してある。 server_names = { ‘cgi’: CGIServer, ‘flup’: FlupFCGIServer, ‘wsgiref’: WSGIRefServer, ‘waitress’: WaitressServer, …

no image

2018年の英語振り返り

毎年英語力向上を目指して何かしらやったりやめたりしていますが、今年の英語はどうだったかなと振り返ってみます。そもそも海外で働く予定もなく日々英語でコミュニケーションを取るという状況にはすぐにはならないのでゆるゆるとやっています。とはいえ年1で海外に行った時に簡単なコミュニケーションくらいはできるようになりたいというのが今年の目標でした。 PyCon APAC 2018の参加の為シンガポールへ 今年は5月にシンガポールへ行きました。PyCon APACへの参加は去年のマレーシアに続き二年目です。マレーシアに行った時はひたすら英語を聞き続けるのに疲れ果て、コミュニケーションもままならなかったのですが、今年は比較的余裕を持って聞いたりコミュニケーションをすることができた気がします。ただそれは話している人の英語の癖がたまたま少なかったからとかそういうのもあったかもしれないのでなんとも言えません。それでも今年は gihyo.jp に参加レポートを寄稿することができたのはよかったです。 「PyCon APAC 2018 in Singapore」参加レポート 2018年5月31日(木)~6月2日(土)にかけて行われた「PyCon APAC 2018 in Singapore」。後半の2日間に行われたカンファレンスデイの様子やセッション以外の現地滞在の様子などを,当日参加したメンバーが2回にわたってお届けします。 DMM英会話 DMM英会話は、去年マレーシア行った後に来年のシンガポールに向けてと思いはじめました。はじめは普段できない英語でのコミュニケーションができるというのがあって、ある程度時間をさいてやってましたが、通勤時間が長い、仕事がある程度忙しくなる、子供が2人になるというのがありシンガポール行った後に退会しました。ただそのおかげもあってか上記の通りシンガポールには比較的リラックスして望むことができました。 Podcast 今年もPodcastは「Talk Python To Me」だけ通勤中にだらだらと聞いていました。ここはスクリプトを全文公開してくれるので嬉しいです。来年は他の技術系Podcastも聞いてみようと思っています。 Talk Python To Me Podcast Talk Python To Me is a podcast for developers who are passionate about Python. Learn about the language and related technologies. 語彙力 語彙力アップにはDuo 3.0を選びました。同期としてはCDがついてて例文を移動中に聞き流すことができるから。これまで色々試してみたけど単語帳で単語を覚えるのは日常的に英語を使わない人間にとっては厳しいものがあるのがわかったのでこれもだらだら聞き流せるものをチョイスしました。 DUO 3.0 / CD復習用 英語ブログ コミュニケーションをする機会がなくインプットばかりになってしまうので書くことで英語に慣れる為に英語でちょっとしたことを書くことをはじめました。これはほとんど書けていないので来年はもうちょっと書いていこうと思います。 たいさのライフログ – taisa’s life log I’m Masaki Sato. 34 years old.I’m a engineer of cocolive.inc for about 4 years. It&#8217 … まとめ 英語を使わない環境で英語を頑張るってのは無理があることがここ数年で分かってきたので、なんとなくモチベーションが湧いた時に少しずつ楽しみながらやっていき来たる将来に向けての準備をしていけたらなと思っています。

no image

申告と節税について整理した。税率?青色?白色?扶養控除?など

フリーランスではないけど確定申告する機会があったりと税金のことを考える機会が増えたので大分昔に買った「フリーランスを代表して 申告と節税について教わってきました。」という本を読み返しました。かなり昔の本ですが大きくは変わっていないと思うのでまだ大丈夫かなと思っています。ただ間違いがある可能性もあるのでその点はご注意ください。指摘も大歓迎です。税金については、その時理解した気になってもすぐ忘れてしまうので大事なところだけメモとして残しておきます。 フリーランスを代表して 申告と節税について教わってきました。 Amazonより 最終的な納税額はどのように決まるか 最終的な納税額は次のように決まります。 年の稼ぎ 売上(収入)- 経費 = 所得 税金の対象 所得 – 各種控除 = 課税所得 最終的な税額 課税所得 × 所得税率 = 納付税額 所得税の速算表 課税される所得金額 税率 控除 以下 超 195万円 5% 0 195万円 330万円 10% 97,500円 330万円 695万円 20% 427,500円 695万円 900万円 23% 636,500円 900万円 1800万円 33% 1,536,000円 1800万円 40% 2,796,000円 ここで初めて知ったのが、所得に応じて税率はあがっていきますが、限度額を超えた分だけがその税率で納税する対象になるという仕組みでした。つまりそれが「控除」に該当するもの。少し控除はあるものの課税所得の限度額を超えたら全ての所得がその税率で計算されると思ってました。どういうことか具体例をあげてみます。 課税される所得金額が200万円の場合 5%までの金額を計算 195万円 × 5% = 97,500円 10%になった分の金額を計算 5万円 × 10% = 5,000円 5%までのと10%分の金額を足す 97,500円 + 5,000円 = 102,500円 所得金額が200万円の場合は、195万円を超えた5万円分んだけ税率が10%になり、納税額は102,500円となります。これは単純に以下のように控除額を引く計算方法でやっても同じ結果となります。 単純に計算して後から控除額を引く 200万円 × 10% – 97,500 = 102,500円 じゃあ税率があがった場合はどうなるの?というのが疑問になったので同じように計算してみました。 課税される所得金額が340万円の場合 順番に計算した場合(10%の控除額を引く) 330万円 × 10% + 10万円 * 20% – 97,500円 = 252,500円 単純に計算して後から控除額を引いた場合 340万円 × 20% – 427,500円 = …

AWS Summit Tokyo 2017:Day3 参加レポ

前回に引き続きAWS Summit Tokyo 2017 Day3の参加レポ 基調講演 基調講演会場は相変わらず広くて豪華 昨日に引き続き来た 今日は確かDJ #AWSSummit pic.twitter.com/1ui1017Hla — たいさ (@taisa831) June 1, 2017 オープニング Day3のオープニングはDJだったけど前日の生ライブと比べたらまぁ普通に音楽流してるのとなんら変わらん感じで特に感動はなし AWS Summit Tokyo スペシャルバンドによる演奏でAWS Summit Tokyo 2017 Day2 基調講演がはじまりました!#AWSSummit pic.twitter.com/SMkfuUfRIG — アマゾン ウェブ サービス (@awscloud_jp) May 31, 2017 Amazon.com CTO Werner Vogles オープニングのDJが終わるとAmazon CTOのWerner Voglesが出てきた。身体がでかくいかにも貫禄があっていい感じ。スピーチもさすがという感じで各所にAWSをスーパーパワーという表現で伝えていて聞いていてワクワクしてくるような内容だった。 メモ このカンファレンスはセールスではなく教育である Cisco、IBM、HPEはマイナス成長。古い保守派の企業は成長してない(オンプレミスはおわってる) ストックホルム、中国、大阪ローカルリージョン追加 ワールドワイドなリージョンの運用が可能 この辺の話は前日とだいたい同じ ゲストスピーカー/ソラコム 安川健太 メモ デバイスを直接クラウドに接続する(インターネットを経由しない) キャリアと連携して直接AWSにアクセスする網を作った awsを活用してapiを使ってmicroservicesで構成している DynamoDB使ってる 疎結合化と非同期化 kinesis+lambda functionを使ってる awsをフル活用することで小さなスタートアップでもすごい速度でサービス開発ができている Werner Voglesに戻る 2014年にクラウドが明確に当たり前になった 今は進化の過程のどこにいるのか? プロダクションの中心(IT自体が差別化にはならない) 検索などはできなければならない、できなければ他よりも劣るだけ AWSはスーパーパワーを与えた 超音速(スーパーパワー) AWSを使って利用社はプロダクトをユニークにすることだけに集中すればいい AWSが開発の制約になってはいけない(利用者の目標を達成してもらう為にやっている) ゲストスピーカー/NTT東日本 中村 浩 CloudGateway (re:connect)の紹介(もともと社内で使ってたものをサービス化した) コスト・セキュリティ・アジリティを重要視 企業の基幹システムでクラウド利用が進まない状況 NTTがAWSと直結するサービスとし安く、すぐに、セキュアに使いたい分だけ使えるように Werner Voglesに戻る 目に見えないスーパーパワー(サーバレス) 常に可用性が高い AWS Lambdaを使えば簡単にアプリを実行できる Finraの例 常にマーケットイベントを処理しているがそれらはLambdaを活用して稼働できている 複数の関数を使う場合は? AWS Step Functionsを使うことが可能 いろんな枝分かれしたものでもAWS Step FunctionsでLambda実行利用可能 AWS X-Ray 分散型の情報のトレーシングができる Amazon DynamoDB 他のNoSQLにはコンフィグがたくさんあって大変だが、そもそもやりたいことというのは一貫したパフォーマンスが必要だということだけ …

no image

AWS LightsailでVirtual Hostするメモ

AWS Lightsailにwordpressを移行して、LightsailでVirtual Hostを利用したいと思ったけど、bitnami、Apacheということでどこになにがあるかわからず調べたのでメモ。 bitnamiのApache設定 /opt/bitnami/apache2/conf/bitnami/bitnami.conf この中で bitnami-apps-vhost.conf が Include されている Include “/opt/bitnami/apps/wordpress/conf/httpd-vhosts.conf” /opt/bitnami/apache2/conf/bitnami/bitnami-apps-vhosts.conf には wordpress の httpd-vhosts.conf が Include されている Include “/opt/bitnami/apps/wordpress/conf/httpd-vhosts.conf” wordpressのprefixにはDocumentRootが記述されている Include “/opt/bitnami/apps/wordpress/conf/httpd-vhosts.conf” /opt/bitnami/apps/wordpress/htdocs/sampleのようにhtdocsの配下にディレクトリを作成してindex.htmlを置き、sample.taisablog.com ドメインにDNS設定を追加してあげればとりあえず、VirtualHostが追加できる <VirtualHost *:80> ServerName sample.taisablog.com DocumentRoot “/opt/bitnami/apps/wordpress/htdocs/sample” Include “/opt/bitnami/apps/wordpress/conf/httpd-app.conf” </VirtualHost> Apache再起動 sudo /opt/bitnami/ctlscript.sh restart apache