taisablog

taisa's engineer blog

41XESD1MAEL._SX317_BO1,204,203,200_

投稿日:

-

執筆者:


comment

Your email address will not be published.

関連記事

Python Bottleのソースを読む テンプレート編

前回に続きPythonの軽量WebフレームワークBottleのソースを読む テンプレート編 Class Hierarchy ここの部分 Bottleのテンプレートについて Bottleのテンプレートは、Simple、Cheetah、Jinja2、Makoの4種類があり、BaseTemplateを継承しているPythonのテンプレートの種類(参考)http://www.cmscom.jp/blog/af0ga8 テンプレートの使い方 テンプレートの拡張子には以下が利用できる extensions = [‘tpl’, ‘html’, ‘thtml’, ‘stpl’] 例えばjinja2を使う場合は以下のように呼び出すことができる(jinja2をpip installする必要あり) @route(‘/’) def jinja2(): name = ‘text’ return jinja2_template(‘jinja2’, name=name) view {{ name }} テンプレート呼び出しの処理をみてみる 各テンプレートは以下のように設定されている。 functools.partialにfunc templateが渡されている mako_template = functools.partial(template, template_adapter=MakoTemplate) cheetah_template = functools.partial(template, template_adapter=CheetahTemplate) jinja2_template = functools.partial(template, template_adapter=Jinja2Template) jinja2_templateが呼ばれた時の処理 *argsにはjinja2が、**kwargsにはtemplate_adapter=Jinja2Templateが渡される def template(*args, **kwargs): 引数からjinja2テンプレート名を取得 tpl = args[0] if args else None Jinja2Templateを取得 adapter = kwargs.pop(‘template_adapter’, SimpleTemplate) テンプレートパスをlookup(パスは./views/か./) lookup = kwargs.pop(‘template_lookup’, TEMPLATE_PATH) Jinja2Templateをインスタンス化 TEMPLATES[tplid] = adapter(name=tpl, lookup=lookup, **settings) BaseTemplateのコンストラクタの最後のprepareでJinja2Templateのprepareが呼ばれる self.prepare(**self.settings) ここではじめてjinja2がimportされる from jinja2 import Environment, FunctionLoader テンプレートのrenderメソッドにてレンダリングしviewを返す return TEMPLATES[tplid].render(kwargs) BottleのテンプレートはBaseTemplateを継承しprepareとrenderを実装することで使える仕組みになっている def prepare(self, **options): “”” Run preparations (parsing, caching, …). It should be possible …

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円 = …

PyLadies Tokyo 3周年記念パーティーでLTしてきた

以前PyLadies Tokyo 3周年記念パーティーに参加してLTしてきたのでその参加メモ。基本的にこれから書く内容は以下の投稿とtogatterにまとまっている内容と似た内容になっているけど記録として書きます。 PyLadies Tokyo – 3周年記念パーティ に参加してきた PyLadies Tokyo – 3周年記念パーティ に参加してきた #pyladiestokyo – massa142’s blog PyLadies Tokyo 3周年記念パーティー Togatterまとめ PyLadies Tokyo 3周年記念パーティー PyLadies Tokyoとは? PyLadies Tokyo は,PyLadies の東京支部です。Pythonが好きな女性同士をつなぐために、よりPythonが好きになってもらえるように、活動しています。初心者の人が参加しやすい入門者向けイベントから熟練者がより楽しめるようなちょっと難易度の高いイベント、みんなでワイワイ発表するLT大会など、様々なテーマで毎月イベントを開催しています。どうぞお気軽にご参加下さい。 https://pyladies-tokyo.connpass.com/event/64367/ 普段は女性Onlyだけど今回は3周年記念イベントということで男性枠を設けてくれている。 PyLadies Tokyo – 3周年記念パーティ (2017/10/15 12:20〜) 参加動機 PyLadies Tokyoのメンバーと一緒にPyCon APAC 2017 in Malaysiaへ行って来たのがきっかけ PyCon APAC 2017 in マレーシア 参加レポ LTスライド PyConをきっかけに英語力を身につける New presentation (2017-10-14 21:18:42) 全体的な感想 この日は翌日にサービスローンチを控えているという状況だった為、会社から直行してLT終わって直帰するという非常に残念な状況だった。前半のLTしか聞けなかったけど、それでもLTは全部おもしろくてものすごく楽しめた。(お酒飲めなかったし食事もほとんどできなかったけど)スポンサーのRettyさん、Google Cloud Platformさんありがとうございました。

Nuxt.js v2.9のリリース情報とDiff

2019年8月20日にNuxt.jsのバージョンが2.8.1から2.9へがリリースされました。2019年9月19日時点ではバージョン2.9.2まであがっています。本投稿ではリリース内容と変更点が見れるように2.8.1から2.9.1のソースのDiffと変更されたファイル一覧を載せておきます。変更ファイル数は、examplesやtestを除くと約142ファイルでした。またバージョンが上がっただけ、関数にスペースが追加されただけのファイルも多く、それを除くともっと少なくなります。本リリースでの大きな変更はImportant Notesの中でもTypescript関連の変更が個人的には大きいと思います。Nuxt Typescriptの導入やMigrationはリリースノートにあるページの Setup、Migration from Nuxt 2.8 を見れば簡単に行えます。(本記事の一番下でも試しにやってみました。) リリースノート nuxtjs.orgDue to a known problem (webpack/webpack#8656, #4869, #4839) users of npm should either remove package-lock.json and reinstall before upgrade or use npm update acorn –depth 20 && npm dedupe after upgrading to 2.4.0. users should have no problems but removing yarn.lock still recommended before the upgrade process. Diff v2.8.1からv2.9.2のDiffをつくってみました。 v2.9.2 diff by taisa831 · Pull Request #1 · taisa831/nuxt.jsTypes of changes Bug fix (a non-breaking change which fixes an issue) New feature (a non-breaking change which adds functionality) Breaking change (fix or feature that would cause existing functionality to change) Description …

no image

Vue.js+TypeScriptで外部APIを使ったTODOリストを作ってみた

Vue.jsで外部APIを使ったTODOリストを作ってみた に続き、それのTypeScript版を作ってみました。TODOリスト用のAPIは以前書いたこちらのAPI「Go言語 GORM+GinでTODOリストのAPIを作ってみた」を利用します。CORSを全て許可しているのでどこからでも叩けるようになっています。TypeScriptを書くのは今回が初めてなので、誤っている箇所やもっとよい書き方などがあれば指摘して頂ければと思います。 できたもの できたものはこちらです。http://vuejs-ts.taisablog.com/todo <div class=”graybox”> <div class=”clearfix”><figure><a href=”http://52.196.213.4/wp-content/uploads/2019/08/063dff08aea69d0ee7c6cea19de29030.png”><img class=”alignleft size-full wp-image-1684″ src=”http://52.196.213.4/wp-content/uploads/2019/08/063dff08aea69d0ee7c6cea19de29030.png” alt=”” width=”600″></a></figure></div> </div> APIのエンドポイント APIのエンドポイントは以下としました。 URL http://gin.taisablog.com/api/v1/ GET /todo // 一覧表示 POST /todo // 新規作成 GET /todo/:id // 編集画面表示 PUT /todo/:id // 編集(今回未使用) DELETE /todo/:id // 削除 プロジェクト作成 vue-cliを使ってプロジェクト作成をしました。プロジェクト作成のコマンドを打つと、色々と聞かれますが、TypeScriptを利用する為にManually select featuresを選択し、TypeScriptをONにします。ここではRouterもONにしました。 % npm install -g @vue/cli % vue create my-project default (babel, eslint) ❯ Manually select features vue-cliでできたプロジェクトのsrc配下の構成は以下となっています。今回はそこにTodo.vueとTodoList.vueを追加して実装しました。views配下で実装するだけでも大丈夫ですが、今回はあえてviews/Todo.vueからTodoList.vueコンポーネントを呼び出す形としました。 . ├── App.vue ├── assets │   └── logo.png ├── components │   ├── HelloWorld.vue │   └── TodoList.vue ← 新規追加 ├── main.ts ├── router.ts ├── shims-tsx.d.ts ├── shims-vue.d.ts └── views ├── About.vue ├── Home.vue └── Todo.vue ← 新規追加 views/Todo.vue TodoList.vueコンポーネントを呼び出します。 …