サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
ドラクエ3
utahta.hatenablog.com
この記事はGo2 Advent Calendar 2017の8日目の記事です。 とある日、GAE/Goで書いたアプリのテストがなぜか途中で固まり、強制終了しないと戻ってこない現象に遭遇しました。 今回の記事は、その調査と原因をまとめたものです。 tl;dr Goのテストはパッケージ毎に並列で動き、すべての終了を待機する。 テストプロセスの子プロセスがpanicするとそのテストは終了を検知できない。 テスト、一生おわらない! 解決策はみつけられませんでした。 実行環境 macOS Sierra 10.12.6 $ gcloud version Google Cloud SDK 180.0.1 app-engine-go app-engine-python 1.9.63 $ goapp version go version 1.8.3 (appengine-1.9.63) darwin/amd
GitHub のヘルプ を参考に設定した。 プログラミング初心者な人に .gitconfig の設定を参考にしてもらおうと雑に渡したら user.name と email をそのまま使われてしまって、成りすましのようになってしまったことが発端。 どう防ぐのかいいか少し悩んだけど、僕の方で署名しておくのが妥当かなと思い至った。 設定したので Verified マークがついた図。 設定メモ gpg コマンドインストール $ brew install gpg GPG key を作成 日本語だと文字化けして何を言ってるんだお前は状態になったので、英語指定してる。 $ LANG=en_US.utf-8 gpg --full-gen-key $ gpg --list-secret-keys --keyid-format LONG Users/utahta/.gnupg/pubring.kbx ----
この1週間、Vue + Vuex + TypeScript の書き方を模索していた。 これといったデファクトはないっぽくて、結構大変かもという感想。 Anonyfox/vuex-store-module-example 版 色々ググった中で、まずは Vuex の Issue にあったやり方を試した。 state, getter, mutation, action の世界で型をつけるには良いけど、Component にマッピングするとき、ゆるふわで少し残念かも。 ここの繋がりがもう少し堅いと、コードベースが大きくなったときにリファクタリングしやすかったり、色々と便利そう。 src/store/modules/counter.ts src/components/Counter/index.ts @Component<Counter>({ methods: { ...mapActions(['i
様子 パッチ master をインストールしたら再現しなかったので、おそらく道中修正されたのだろうと思い、それっぽいコミットをパッチにして当ててみたところ再現しなくなった。 master を使い続ける選択肢もあったけど、tmuxしれっと設定周りなどに破壊的変更が入る印象なので、できれば穏やかにバージョンアップをしていきたい…。 ソースコード読みきれず他にもバグが含まれているかもしれないけど、いったん良しとした。 作業ログ patches for tmux 2.4 · GitHub homebrew を使っているので brew edit して以下のように patches を埋め込み再インストールした。 def patches [ "https://gist.githubusercontent.com/utahta/6f14dc33ec0700f3f2f224e0ce84c772/raw/fd
JavaScriptが必要なページをスクレイピングするにはどうしたらいいか調べた。 Selenium ブラウザを操作してウェブアプリのテストをするツール。 FireFox, Chrome, IEなど様々なブラウザに対応している。 実際にブラウザを立ちあげて色々行うのでやや遅い。 Rubyで書くとこうなる。 require "rubygems" require "selenium-webdriver" d = Selenium::WebDriver.for :firefox d.navigate.to 'http://example.com' puts d.page_source メソッド名がJavaScriptライク。 GUIのない環境で動かすときはXvfbをインストールし、headlessを使う。 require "rubygems" require "selenium-webdrive
さくらレンタルサーバ(スタンダード)から、さくらVPS 1GにWordPressブログを引越した。 目的は節約。元々レンタルとVPS両方借りてたんです。 構成は、nginx-1.0.15, php-5.4.10, php-fpm, mysql-5.5.28。 結果的にレスポンスが早くなった。 移行するときのインストールや設定が面倒だったので手順をメモしときます。 バックアップ・リストア BackWPupプラグインを使った。 WordPressのファイルとデータベースデータを丸ごとひとつにまとめてくれて、リストアもツールを使って簡単にできるのでおすすめ。 参考:今こそ安心できるWordPressバックアップを!復旧作業まで実際にやってみたWordPress丸ごとバックアップ法 VPSの環境構築 OSは、CentOS6.2。 # yum install nginx # yum install
株価やその他情報を取得するRubyライブラリJpStockをつくってみた。 ひととおり動いてることは確認済だけども、とりあえずアルファ版ぐらいの感じです。 Yahooファイナンスからデータを引っ張ってきてます。 日本株おんりー。 インストールと使い方は、GitHubのREADMEにチョロっと書いてあるけど、大体以下のような感じ。 興味ある方はみてみてください。 gemでインストール。依存ライブラリのNokogiriが一緒にインストールされる。 $ gem install jpstock いろいろirbで実行してみる。 まずはrequire。 > require 'jpstock' 現在の株価の取得。:codeに証券コードを渡してあげる。:code=>[‘4689’,‘3632’]のように配列を渡すことで複数件の取得も可能。 結果は証券コードをキーにしたハッシュが返る。 > JpStock.
pythonbrewをつくってみてはや1年と半年。思った以上のひとにWatchされ思った以上のひとに使われているみたいです。 Pythonのインストールが面倒くさいと思っている方や元々RVMやperlbrewを使っていた方々からの反応はわりと良かったように思います。 そんなpythonbrewですが、ずいぶん前から開発が滞っていて半ば放置気味になっています。 理由はいくつかありますが、ざっくり言うと開発に割く時間がなくなりました。 そんな中つい先日、pythonzという類似のプロジェクトが出来た模様です。 pythonbrewをForkしたものということで、一部機能は削いでいるようですが、PyPyのインストールをサポートしていたりpythonbrewにはない機能もあるようです。 今後はこちらがデファクトになっていくのではないかと期待を込めつつご紹介します。 pythonbrewの今後ですが
あけましておめでとうございます。 元旦早々からUstreamの配信開始のお知らせツールをつくってました。 ニコニコ生放送だと配信開始をメールでお知らせしてくれる機能が無料であるんですけど、Ustreamの場合、有料なんですよね。 お金を払って配信開始をお知らせしてもらうのもバカらしいから、いままで入ってなかったんですよ。 けど、去年の暮れにももクロが、年末だよ!全員集合配信を行ってたのに、全然気づかなくて。 アーカイブが残ってるかと思ったらそれもなくて。 結局、誰かがYouTubeにUPしてくれたので見れましたけど、もし見れてなかったら残念な気持ちで年越しをすることになってたわけで。 なので、もうそんなことがないように、自分でつくってみました。 それがこちらのust_notice。 自分は、さくらレンタルサーバに置きました。 移動するかもしれないのでアレですけど、とりあえず。 さくらレンタ
ここ最近、PyQtを使って以前公開した株価取得ライブラリのGUI化をやってたら思いの外楽しかったのだけど、インストーラーとかパッケージングとかそのあたりがまあ面倒くさくてまあダルい。 ごにょごにょいろいろ試してようやく動くっぽくなったので忘れないうちに書くけれども、深い理解まで至っていないので間違いがあるかも。 MacとWindowsの両方。 実行環境は、Mac OSX 10.6.8とWindows7。 Pythonのバージョンは2.7.2。当初は3.2でいこうとしていたのだけど、使用ライブラリが3系に未対応だったので2.7.2。 作ったアプリ ある銘柄の指定期間の株価(当日の高値, 安値, 終値, 出来高)をcsv形式でファイルに書き出すツール。 Mac版はこちら。 Windows版はこちら。 ソースコードはこちら。 レジストリとかは未使用。 SnowLeopardだと微妙にうまく動かな
PyCon JP 2011のセッションで見かけた「PyQtではじめるGUIプログラミング / Tutorial: GUI Programming with PyQt」がとっても良かったので、さっそくPyQtやろうと思って、Macで環境づくりした。 前提 homebrewとpythonbrewがインストールされているMac。 homebrewだけでいける気がするけど、どうせだからpythonbrewのとこに入れてみる。 PyQt Python3.2.1のインストール。 $ pybrew install -nv -j4 --framework 3.2.1 $ pybrew switch 3.2.1 Qtのインストール。 $ brew install qt PyQtの前にSIPのインストール。 $ wget http://www.riverbankcomputing.com/static/Dow
Yahoo!ファイナンスから株価や財務データをスクレイピングして取得するライブラリをPyPIに公開した。 名前は、jsmといってjapanese stock marketの略。 このプログラムは去年の12月ぐらいにぼんやり書いてそのまま放置していたブツなのだけど、わりとまじめに作ったわりにこのまま放置するのは、なんかもったいないような気がしないでもなかったので、とりあえず公開した。 使い方は簡単で、証券コードをAPIにわたすだけといった感じなのだけど、まぁ例で示した方が分かりやすいと思うので、インストールから株価データの取得までをコードで示す。 インストール PyPIにアップしたので、easy_installまたはpipでインストールするのが簡単。 $ easy_install jsm これでjsmの最新版とBeautifulSoupとhtml5libがインストールされる。 株価取得 あく
先日 Python で実装してみた VBCode の続き。 ここからダウンロードしたはてなのデータを実際に圧縮してみた。 準備 ダウンロードしたやつの中に入っている eid_tags.txt を使う。 $ curl -LO http://image.gihyo.co.jp/assets/files/book/2010/978-4-7741-4307-1/hugedatabook_samplecode.zip $ unzip hugedatabook_samplecode.zip $ du -h hugedatabook_samplecode/hgdata_example/06/eid_tags.txt 172M hugedatabook_samplecode/hgdata_example/06/eid_tags.txt 大きさは、だいたい172MBぐらいらしい。 フォーマットは、「はてなタ
よる年の瀬の最中、Web開発者のための大規模サービス技術入門という本を読んでる。 ソーシャルゲームが流行っている昨今、大規模サービスの運用論や方法論について、少しは学んでおくか的なノリで読んでる。 こいつは、株式会社はてなで行われたインターン実習が元になってて、負荷対策の基本等が分かりやすく実習形式で解説されてるオシャレな本だ。 OSのページキャッシュの仕組みとかデータの分散とか検索アルゴリズム等、もろもろ興味深いのだ。 今回は、整数データをコンパクトに持つ為の圧縮技術VBCodeをPythonで実装してみたメモり。(本の中ではPerl) はてなのインターン生に混じった気分で、疑似コードを参考に実装してたら、なんだかんだ1時間ぐらいかかった。 もっとさくっと組めたらいいのに。 つっかかった点は以下2点。 ・Pythonにおけるバイトコードの取り扱い(pack, unpack) ・128とい
Python + Flaskでサンプルアプリを書いてfluxflexにデプロイしてみたら、思いの外使い勝手が良かった。 fluxflex fluxflexとは、クラウドホスティングサービスのひとつ。 Platform as a Service、略してPaaSなどと呼ばれてるサービス。 競合するサービスにdotcloud, Heroku, GAEなどが存在してる。 複数の言語(いまのところPHP, Ruby, Python, Perl, Node.js, Haskell)が利用できて、フレームワークも好きなものが使えて、FastCGIで動く。 個人的な印象で言えば、dotcloudに近いものを感じる。 dotcloudは、規定のクライアントをインストールして、基本コンソールでデプロイしたりなんやかんやする形だけど、fluxflexは、Githubにソースコードが存在していたらボタン1つでデプ
その1はこちら。 pythonbrewってなんぞ?という人は、こちらも併せて見ると良いかもです。 その2では、pythonbrew-0.9で追加したbuildoutとvenvコマンドについて解説します。 概要 buildout : buildoutをラップしたコマンド。 venv : virtualenvとvirtualenvwrapperをラップしたコマンド。 buildout pythonbrewの管理下にあるPythonを使って、buildoutを実行するコマンド。 bootstrap.pyのダウンロードから./bin/buildoutまで、多少面倒な部分を代わりにやってくれます。 zc.buildoutを知っていれば、とりあえず使用例を見れば大体なにをやっているか分かると思います。 以下は、buildout.cfgの置いてあるディレクトリprojへ移動し、pybrew buildo
プログラミング書籍をソーシャル的に人気っぽい物から順位付けするランキングサイトをつくりました。 Amazon Social Book Ranking PHPやPerlやRubyやPythonやCやC++やJavaなどの有名どころっぽい言語をわしゃわしゃっとまとめてます。 使いどころなんてあってないようなもんですけど。 例えばですけど。 PHP本のランキングをチラ見すると、よくわかるPHPの教科書やパーフェクトPHP (PERFECT SERIES 3)が注目されているみたいです。 はてぶとかツイッターとかフェイスブックとかで、ですね。 注目されるには、なにか良かったり悪かったり、それなりに理由があるんだと思います。 それは、もしかしたらあなたがよりよい良書、もしくは悪書を見つけるときのヒントになるかもしれません。 (そしてわたくしにアフィが入る可能性が高まるのかもしれません…) これをもっ
最近、AmazonのProduct Advertising APIをPythonでごにょごにょするということをやっていて、ある程度やり方というかライブラリを見つけたりとかしたので、忘れないように書き残しておきます。 1.Product Advertising API への登録 ここから登録します。 登録が完了するとアクセスキーとシークレットキーが配布されます。 もしアクセスキーを忘れるなどして分からなくなったら、ここからアカウント→セキュリティ証明書と辿って確認できます。 2.Pythonライブラリ選択 Product Advertising APIをうまくラップしていつつ簡単に使えそうなライブラリとして、bottlenoseを選んでみました。 選んだ理由は、探した中で最もシンプルかつ実装の把握が容易で、さらに開発が比較的活発と思われたからです。 (他にもっといいのがあれば教えてください)
pythonbrewとvirtualenvを使ってPythonの開発環境を整えてみました。 ツールの詳しい説明は、リンク先を見てくださいということではぶきます。 続きました→ その2 対象 環境:LinuxやFreeBSDなど。Bourne Shell系(bash, ksh, zshは確認済み) 人:Pythonインタプリタのインストールを手動でしたくない上に複数のバージョンを切り替えて使いたい人。 1.pythonbrewのインストール ざっくり言って、Pythonインタプリタのインストールを楽にするツールです。 これがないと、このエントリの意味が分からないので、とりあえずインストール方法の解説からしていきたいと思います。 以下のコマンドを実行すると、pythonbrew一式がインストールされます。 $ curl -kL http://github.com/utahta/pythonbr
今更ながら「大規模サービス技術者入門」を読み返したんだす。 AhoCorasickのこと今までアホコラシックて読んでたけど、 正しくはエイホコラシック(Wikipedia調べ)だそうなんだす。 ソースコード -> pyahocorasick failure linkを作るところを理解するのに時間がかかった。 トライ木を構築した後、根から順繰りに次ぎのノードを見てって、最長接尾辞を決定するところ。 再帰でつくってみた。 最終的にこんな感じでテスト。 参考 Aho Corasick 法 - naoyaのはてなダイアリ
buildout を使って Flask + Google App Engine な環境を構築してみたメモ。 buildout とは、Pythonベースの環境構築ツール。 日本語による記事が少なくて非常にとっつきにくいですが、慣れると簡単便利です。 こちらが今回書いた物。一応、Linux(CentOS5), MacOSX10.6で動作確認済み。 flask-gae-template セットアップしてみる 以下のコマンドを入力する。 (gitがない場合、代わりに上記サイトのDownloadsからダウンロード&解凍すればOK) $ git clone https://github.com/utahta/flask-gae-template.git $ cd flask-gae-template $ curl -LO http://svn.zope.org/*checkout*/zc.buildo
Google App Engine 上で Flask を動かす用のスケルトンプログラムを作った。 git 使い専用。 buildout 以外のアプローチ。(buildout ややこしいんですもん) git clone して copy コマンドを叩くと、プロジェクトの雛形がつくられる。 使い方 $ git clone https://utahta@github.com/utahta/flask-gae-skeleton.git $ cd flask-gae-skeleton $ git submodule update --init $ python copy_skeleton.py -t /path/to/project_name /path/to/project_name下に雛形がコピられる。 自分の環境は Mac & GoogleAppEngineLauncher.app なので、 こ
node.js と websocket を使ってチャットサーバを書いてみたメモ。 さらっとブラウザ上で動作するリアルタイム通信処理が書けた。 以下、今回作ったチャットサーバのインストールや実行手順について。 環境構築 node.js をインストール。 $ git clone https://github.com/joyent/node.git $ cd node/ $ ./configure --prefix=/path/to/node $ make -j 4 $ make install node.jsパッケージ管理 npm をインストール。 $ curl http://npmjs.org/install.sh | sh 今回使用するパッケージをインストール。 $ npm install socket.io $ npm install express $ npm install jade
Python + FlaskでMVC的なサンプルをつくったメモ。 MVC的な記事まとめ ひとまずMVCについて言及されている記事をまとめ。 MVCはWikipediaが詳しい。 以下は調べた中でもわりと個人的にしっくりきた記事たち。 Web Applicationを綺麗に設計するためのMVACという考え方 - Dive into the Tech World! Re: @kazuho: handlersocket plugin や mycached を使えば memcached は不要か、それとも使うべきケースがあるか。考察せよ [10点] - blog.nomadscafe.jp Life is beautiful: Ruby on Railsの「えせMVC」の弊害 the { buckblogs :here }: Skinny Controller, Fat Model 共通して言われ
Flask 基礎を勉強中。 環境構築 OS:CentOS 5.4 Python-2.6.6 インストール。 $ pythonbrew install 2.6.6 $ pythonbrew switch 2.6.6 Flask インストール。 $ pip install Flask Hello Flask $ vi main.py from flask import Flask app = Flask(__name__) @app.route('/') def hello(): return 'Hello Flask.' if __name__ == '__main__': app.run() $ python main.py * Running on http://127.0.0.1:5000/ ルーティング&変数ルール from flask import Flask app = Flas
この1ヶ月、土日の休みを使いTUBELONGERってWebアプリをつくってました。 言語はPython。 Pythonは日本語の取り扱いが若干面倒だったりするけど、書いてて楽なので好き。 以下、PythonでWebアプリをつくるにあたって調べたり分かったりしたことのメモ。 構成 OS:さくらVPS CentOS 5.5 サーバ:Nginx + Gunicorn データベース:MySQL 当初はGoogle App Engineで開発を進めてたけど、データストアの使い方を調べるのにいちいち時間をとられたり、Cron的な動作に制限があったりといろいろ面倒くさかったので、途中からroot権限のあるサーバでいちから構築する方向に切り替えました。 やっぱりroot権限は自由度が半端じゃないです。 GAEがダメってわけではないです。 むしろ僕の知識が足りなすぎて学習コストが尋常じゃなかったのでまた今度
たまたま作る機会があった IRCボットを Python で実装してみたメモ。 環境は CentOS 5.4、Python 2.4 python-irclib IRCボットを簡単に作成できるライブラリ、python-irclib をインストールする。 $ wget http://sourceforge.net/projects/python-irclib/files/python-irclib/0.4.8/python-irclib-0.4.8.zip/download $ unzip python-irclib-0.4.8.zip $ cd python-irclib-0.4.8 $ python setup.py build $ sudo python setup.py install ソースコード 下のコードは、ある時間になったら挨拶するボットのサンプルコード。 #!/usr/bin/
GREEエンジニアブログのグリーの大規模分散ストレージ戦略(nanofs) Vol.2を見ていて、Apache の Request Counting ってなんぞやと思ったので、調べたメモ。 Request Counting アルゴリズムとは Apache の mod_proxy_balancer モジュールに組み込まれているロードバランサのスケジューラアルゴリズムの1つ。 やってきたリクエストが、各ワーカーにちゃんと分担されるようにというか詳細は、こちら。 リンク先に擬似コードが示されていたので、試しにいくつかの言語で実装してみた。 lbfactor が重み、lbstatus が優先度みたいなものっぽい。 Python #!/usr/bin/env python class Worker(object): def __init__(self, name, factor): self.nam
MacPortsを使うとPythonのバージョン管理がお手軽だってことを知ったのでメモっとく。 Python2.5, 2.6 まずMacPortsを使ってPython2.5と2.6をインストールする。 $ sudo port install python25 ... ---> Installing python25 @2.5.5_1 ---> Activating python25 @2.5.5_1 To fully complete your installation and make python 2.5 the default, please run sudo port install python_select sudo python_select python25 ---> Cleaning python25 sudo port install python25したらなんでかpy
次のページ
このページを最初にブックマークしてみませんか?
『utahta.hatenablog.com』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く