c-bata web

@c_bata_ のメモ。python多め

python-prompt-toolkitをgolangに移植。kubernetesクライアント作った

Github Trendingに載ってから、予想以上に伸びました。ありがとうございます。 Wow... #githubhttps://t.co/ENQjRyqZmN pic.twitter.com/iqFx59ydcq— c-bata (@c_bata_) 2017年8月17日 python-prompt-toolkitをgolangでも使いたいなと前から思い移植していた…

2週間半のReact Nativeアプリ開発を振り返る

ここ2週間ちょっとReact NativeでiOSアプリ書いてました。 サーバサイドをメインでやってきた自分にとって面白い技術で、今後も趣味で使ってみたいなと思えているのでTipsや所感を残しておきます。 目次 選定理由 Tips エラーハンドリング・状態管理 入力欄…

Protocol BuffersをJSONに変換する

React Native + GoのProobuf API Serverの構成でアプリケーションを作っているのですが、次の条件でdeserializeができないことがわかってしまった。 [javascript] Failed to deserialize protobuf message which has other message types. · Issue #3098 · g…

asyncioがPOSIXスレッドを使っている原因を調べる

tokibito先生 (id:nullpobug) がオフィスに遊びにおいでと声かけてくれたので、オープンコレクターさんに遊びに行ってました。 aodag先生 (id:aodag) と3人で雑談してたんですが、ふと以前気になっていたことを思い出したので聞いてみた。 気になっていたこ…

2017年抱負(エンジニアリング)

今週のお題「2017年にやりたいこと」 あけましておめでとうございます。 今年やりたいことを書き出してみる。 nwpct1.hatenablog.com 2016年はインプットのかなり多い年だったので、今年はアウトプットを増やしたい。 卒論の提出と卒業: まずはちゃんと卒業…

2016年のふりかえり

2016年も終わりですね。大学院には進まずに都内のWeb系企業に就職するので、学生生活もそろそろ終わりみたいです。 3月頃から渋谷新宿あたりにいると思うので、またご飯行きましょう OSS活動 Write Code Every Dayには程遠いですが、昨年に比べてコードを書…

docker-composeにnginxのコンテナ追加したらRedirectでハマったのでメモ

自作のWSGIフレームワークKobinのExampleにおいて、手元でも静的ファイルをNginxで返すように変更を加えた。 ただしRedirectがうまくいかないので調査 & 雑にメモ (ところどころ英語)。 Problem GitHub - kobinpy/kobin-example: Example application using …

Core APIの概要とDjango REST Frameworkでの使い方

Django Advent Calendar 2016 - Qiita 18日目の記事です。 Django REST Frameworkは、DjangoでRESTfulなAPIを提供するときに非常に人気のあるフレームワークです。 既に使ってるよという方も多くいらっしゃるのではないでしょうか。 日経電子版さんも業務で…

rexecute: ファイルの更新を検知して指定したコマンドを自動実行するCLIツールつくった

そんなことより卒論書きなよって話ですが、texファイルの更新を検知して自動でビルドする仕組みを整備しました。 2年前に論文を書いていたときは、RubyのGuardを使っていたのですが久しぶりに試すと動かなくて、それを直すのも面倒だったので、少し汎用的に…

Released Kobin v0.1.0: Web Framework for Python3.

少し開発が停滞気味だったのですが、最近多くのアップデートを加えたので、v0.1.0をリリースしました。それに伴い、WSGIミドルウェアやWSGICLIの開発、ドキュメントの整備を行ったので紹介。 github.com Kobin Kobinの説明や使い方は、ドキュメンテーション…

Webフロント周りのパフォーマンスを計測・チューニングする

Github Pagesで公開しているポートフォリオサイトがそんなに色んな情報載せてる訳でもないのですが、遅くてあまり気持ちのいいものではないので、最適化していきます。 結論から書くと、2.87sぐらいかかっていた読み込みが1.57sぐらいになりました。 まだま…

h2load, apache benchによる負荷テスト

前回の記事で触れたApache JMeterやGatlingとは違って、今回試したのはシナリオとかもなくHTTPのリクエストを大量に投げて、スループットやレイテンシを計測してみたい時に便利なツール。 実際に試したのは次の2つ。他にも、wrkやvmbench、siegeが気になった…

Apache JMeterメモ

Website: http://jmeter.apache.org/ Apache JMeterを教えてもらったので、後で見返せるようにメモ。 気が向いたら今度、グラフとかレポートがリッチらしいGatlingも使ってみたい。 基本的な流れ 起動 最新のzipバイナリをダウンロード・解凍。 $ cd apache-…

AWS Lambda + API Gateway + Chalice(Python2)でLINE BOT

最近、AWS LambdaとかAPI Gatewayを触っていたのですが、 id:iktakahiro さんに教えてもらった chalice がよさそうなので試してみた。 ただサンプルを動かすだけというのも面白くないので、先日公開されたLINE BOT SDK for Pythonで遊んでみる。 AWS Lambda …

Electronでニコ動のコメントみたいにTweetを表示するアプリつくった

知り合いのエンジニア(rayさん)がGTK3で作っていた nsd というのがあるんですが、結構いい感じなのでMacでも動くものが欲しかった。 Electronで似たようなことが出来ないか調べてみると、GTK3とかに比べて簡単にできそうだったので作ってみた。 ポイントは:…

PIPEによるプロセス間通信とselect, poll, epollの話

先日、 tokibito 先生(id:nullpobug)と勉強していたpipe, select, poll, epollあたりについてメモ。 os.fork os.fork : 子プロセス(child process)をつくれる。 import os a = 0 print(a) os.fork() a += 1 print(a) 子は親の複製。親のデータ、ヒープ、スタ…

AWS LambdaのFunctionを開発するときのMakefile

AWS

自分用のメモ lambda-uploaderみたいなものもありますが、LambdaだけならAWS CLIで十分簡単に操作出来るのでMakefileを用意してみました。 API Gatewayに関しては、AWS CLIでやろうとすると1つのリソースあたり3個ぐらいコマンドを叩く必要があったり、AWS C…

AWS LambdaとAPI Gatewayを触ってみたのでメモ

PyCon JP スプリントの時に id:iktakahiro さんがLambdaの話をしていたのですが、Lambda + API Gatewayは覚えとくと便利そうなので試してみた。 Lambdaを触ってみる まずAPI Gatewayは考えずに、Lambdaを触ってみる。 調べてみたら、公式のドキュメントにも…

#pyconjp でWeb(WSGI)フレームワークの作り方について話してきました

昨年のPyConJPでは pandas-validator について話していたのですが、今回はトークセッションをしてきました。 Twitter見てると早速スライドを見ながら実装してくださってる方もいらっしゃって嬉しいかぎりです。 日本語のWSGIフレームワークの作り方の資料と…

PyCon APAC 2016 in KoreaでLTしてきた

昨年の台湾の開催につづいて、今年もPyCon APAC 2016 in Koreaに参加してきました。 PyCon APACについて PyCon APACは名前の通りアジア太平洋地域の人たちが集まるPythonのカンファレンスです。 昨年は台湾で開催されて700人ぐらいが集まりましたが、今年は…

Angular2のComponentライブラリ ng2-card を公開しました

Angular2の練習を兼ねて、ポートフォリオを書き換えていたのですがせっかくなので、↓のページのCard ViewのComponentをnpmに登録しました。 まだ結構雑な部分は残ってるのですが、とりあえず動くところまでできたのでAngular2のライブラリデビューです。 c-b…

Flask 0.11で追加されたコマンドラインインタフェースを追ってみる

本日ついに、Flaskのnew versionがリリースされました。めでたいですね! 前回のリリースが2013/06/14だったので、ほぼ3年ぶりです。 バージョンを1.0に上げるという話がありマイルストーンも立っていましたが、0.11としてリリースされました。 1.0にしなか…

Feedy(Python)でRSSフィードをいい感じに処理する

最近、RSSフィードをfetchしてゴニョゴニョ処理したいと思うことが多かったのですが、特に気にいるライブラリが無かった *1 のでFeedyというライブラリを作ってみました。 個人的には結構気に入っていて、便利に使えているので紹介します。 もともと欲しかっ…

Pythonを使ったデータ分析に関する内容をJupyter Notebookにまとめ始めました

研究をかれこれ2年半ぐらい続けてきたので、研究をする中で必要になった機械学習の手法について調べたりコードを書いたりしてきたのですが、まだまだ触ったことのない機械学習の手法も多く、研究で必要になる手法以外の知識も付けたくなってきたので、勉強し…

Golangでつくる検索エンジン(Webクローラ、MongoDB、Kagome、gin)

最近、Golangを書き始めたので勉強として、1年半ほど前にPythonで作っていたWebクローラと検索エンジンをGolangで実装してみた。WebフレームワークはFlaskの代わりにgin、Mecabの代わりにKagomeを使用、Datastoreは前回と同じくMognoDBを使ってます。 GitHub…

Python製WebフレームワークのURL DispatcherとType Hintsの活用について

少し前から趣味で実装してるKobinというWebアプリケーションフレームワークのURL Dispatcherの実装をする時に、BottleやDjangoを参考にしながら考えてみました。 これらの比較とType Hintsを利用したKobinのURL Dispatcherの実装についてまとめます。 (追記)…

就活終わりました

最後どこに行くか結構悩んでしまいましたが、就職先を決め内定承諾書を返送しました。 相談に乗っていただいた方々、ありがとうございます。 感じたこと 就職先を人で選ぶのが、意外と難しい 就活中にいただいたアドバイスの中で一番多かったのは 「どんな人…

iOSアプリの開発を始めた。2週間でやったこととかメモ

iOS

はじめに 2週間前ぐらいからiOSの勉強を始めた。自分にしては珍しくいいペースで覚えていけたので、やったこととかメモ。 やったこと XCodeとSwiftについて本を読む 今まで本を読まずにネットで調べながらやることが多かったけど、今回は本を読みながら始め…

あけましておめでとうございます。振り返りと2016年の目標

あけましておめでとうございます。 2015年は東京に行く機会が増えて、知り合いも増えて楽しく過ごせたかな。お世話になりました。 2015年やってよかったこと 更新少し遅いけど、ブログを続けたこと 初めてお会いした方からブログ見てますって言われるのかな…

SELinuxの設定でやったことメモ

SELinuxでPermission Deniedされるたびに、毎回ググり直してるので参考にしたサイトとか手順をメモ。 原因の確認 tail -f /var/log/audit/audit.log を見ながら、アクセスしてみてSELinuxが弾いているか確認 SELinux動作状態の確認 getenforce : 動作状態を…

Djangoのメール周りメモ

はじめに この記事は 2015 tech-yuruyuru アドベントカレンダー - connpass の18日目です メール周りの機能は基本的に↓のEmailのトピックページにまとまってはいるのですが、他のページに書いてある内容が必要になったりするのでその辺りのことも一緒にまと…

DockerでHerokuの環境を再現する

はじめに 2015 tech-yuruyuru アドベントカレンダー - connpass 13日目です。 PythonのWebアプリを開発するとき、Mac上でそのまま開発することが多いんですがHerokuに近い環境で動作確認もしたい。 Heroku-toolbeltの中にDockerfileを生成してくれるコマンド…

Pythonにおけるハッシュ計算

はじめに ADVENTARのPythonアドベントカレンダー 4日目 です。 今作っているもの で後々必要になるかなと思い調べていたハッシュ関数について書きます。 ハッシュ関数について ハッシュ関数は、任意長のデータ x を与えると固定長のビット列 y を返す関数で…

DockerでVPS上にgitlabとjenkinsサーバをたてる

はじめに 研究室で借りているさくらのVPSがあって、研究で使うアプリケーション以外にgitlabとかjenkinsを動かしている。Dockerをローカルでしか動かしたことが無かったので、リスクの低いこういうところで実際にDocker使ってみる。 これまでは AnsibleGalax…

PythonのWebアプリ動かす時にやったこととかメモ

はじめに ISUCONとかコンテスト系のイベントでPythonのWebアプリを出来るだけ早くセットアップしたい時があるので自分なりの手順とかメモ。自分が後で見返す用なのでまとまってないです。データベースに関しては別の記事に分けました。 nwpct1.hatenablog.co…

MySQLメモ

はじめに 下記の構成で色々やってた時のメモ。自分が後で見返す用なのでまとまってないです。 Python/Flask Flask-SQLAlchemy Flask-Migrate ローカルではSQLite3、プロダクションではMySQLを使用。 Flask-SQLAlchemyとかFlask-Migrateについては↓のページに…

Flaskの構成とかライブラリメモ

はじめに Flaskでいくつかアプリを作るのでメンバーに共有するために、使うライブラリとその説明とかをメモ。 ソースコードはGithubで公開しています。 github.com Flask-SQLAlchemy モデルの定義 from . import db from werkzeug.security import generate_…

PyCon JP 2015でLTしてきました

はじめに PyCon JP 2015おつかれさまでした。 スタッフとしては半年ぐらい前から少しずつ作業してたので、かなり長く関わったイベントでした。 Lightning Talk youtu.be PyData界隈の人からも予想外に良い反応が帰ってきて、やったかいがありました。 Github…

ビープラウドでのアルバイトを終わりました

このブログには技術ネタ以外書かないつもりだったけど、かなりお世話になったので振り返りとお礼のエントリ。 ちょうど半年間ぐらいビープラウドでアルバイトをしていたのですが、それも昨日で終わりました。 BPのみなさんありがとうございました。 ビープラ…

クラス内のフィールドが定義された順番を保持する(Python・メタクラス)

colanderはメタクラスを作って `id`, `name`, `age` と定義された順番を把握しているとのこと。 [colanderのソースコード](https://github.com/Pylons/colander/blob/master/colander/__init__.py) を見ながら、どのように `id`, `name`, `age` の定義された…

pandasのvalidationライブラリを公開しました

はじめに pandasのDataFrameはかなり便利ですが、その構造を明示的に定義できないので変な値が混ざってることに気づきにくいです。 研究で使ってるプログラムで変な値が混ざってないかチェックしたい所があったのですが、validatorについて調べてみても特に…

Travis CIを使ったDjangoプロジェクトの継続的インテグレーション

はじめに 以前,Djangoのテスト(ユニットテスト)の書き方について勉強したことがありました. Djangoのテストの書き方について勉強したのでまとめる - Programming Log Djangoのテストの書き方について勉強したのでまとめる - Programming Log 今回は↑の記事…

Webサービスをリリースして遭遇した不具合とその対処

はじめに 3日ほど前にいつかリストというWebサービスをリリースしました. DjangoでWebサービスつくってみた - c-bata web リリースすると、知り合いやブログ記事を読んでくれた方々に使っていただき、いくつかのバグ報告をもらいました. どれも実際に公開…

DjangoでWebサービスつくった

Djangoを触りだして1ヶ月ちょっと経ちましたが、忙しいって言いながらあんまり勉強できてなかったので短期間集中してWebサービスの開発をやってみました.とりあえず人に見せられるところまで来たのでHerokuで公開しています. http://itukalist.herokuapp.c…

Djangoのユーザ認証まとめ

Djangoでユーザ認証をしたかったので調べてみると,DjangoではUserモデルがはじめから用意されているらしい.そこでDjangoの提供する機能をそのまま使ってログイン・ログアウトを実装してみた. さらに調べてみるとpython-social-authというライブラリを使え…

Python pandas テストの書き方についてメモ

はじめに pandasやnumpyとかを使ってデータ分析のようなことをしてると、実行結果が数値だったりしてバグに気づきづらい。結果がおかしいことに気づかないまま論文を書いてしまうのは怖いのでユニットテストを書いておく。 普段、Pythonによるデータ分析入門…

Djangoのテストの書き方について勉強したのでまとめる

はじめに この記事はPython Advent Calendar 2014の12日目の記事です. 昨日は「SushiYasukawa」さんによる(Pythonによる簡単なLispインタープリタ実装方法(四則演算編)) - Python, web, Algorithm 技術的なメモでした. 最近Djangoで何か作ったという記…

Pythonでつくる検索エンジン(Webクローラ, Mecab, MongoDB, Flask)

はじめに Webサービスのプログラミングに必要なことのだいたいは、スクレイピングに学んだ - Line 1: Error: Invalid Blog('by Esehara' ) この前↑の記事をみかけました。クローリングやスクレイピングは、色々と応用が効きそうなのでしっかり勉強したい。 P…

pymongo使い方まとめ(Python, MongoDB)

はじめに MongoDBやpymongoについては以前基本的な事を勉強した(Python/FlaskからMongoDBを扱うpymongo勉強内容メモ - Programming Log)ので、Webアプリを開発する場合の事を意識して触ってみる。 DBスキーマ 最近、達成日と達成コメントを残せるTodoリスト…

PyCharmで開発する手順メモ(Git, Virtualenv)

はじめに この前PyCharmのProfessionalを入れたので、PyCharmの使い方を確認しながらプログラム書いてみる。この記事は、今後PyCharmで開発を行うときにスムーズに開発するためのメモなので僕以外には分かりにくいかもです。ちなみにPyCharmの設定や機能につ…