サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
iPhone 16
www.hexacosa.net
autopep8は初版であるバージョン0.1 をリリースしてから7年程経過していて、 2018年09月現在のバージョンは1.4 である。 Pythonのオートフォーマッタ界隈は割と戦国時代で、autopep8の他にも、 非公式だがGoogle傘下のyapf 、 ここ最近急速に人気を博してきている Black なんかがある。 GitHubスター数でいくとyapfもBlackもautopep8を遥かに凌駕している。 yapf 初期コミットは2015年頃。 autopep8にも一時期コミットしていただいてたメンバーがいて面白い。確かグーグラーのはず。すげぇ。 autopep8の動作に嫌気が差したのかもしれない。 どちらかというとPEP8にフォーマットするというより、定義したスタイルにフォーマットするという用途の模様。 yapfのREADMEを見るとgofmtっぽいとも書いている。 Black 初
残念ながら ISUCON6 では Rust の参考実装は提供されないのですが、 「おれ、どうしてもRustでISUCONに参加したいんだよね」という方や 「なんか他のチーム出し抜く最終兵器的なのないかなぁ」という方のために、 Pixivさんの社内ISUCON2016 用のRust参考実装を書いてみました。 https://github.com/hhatto/pixiv-isucon2016-rust これをベースにすればRustでISUCONに参加することも夢ではないと思います。 ただし、ベンチマーカーでのテストはfailがでないことを確認済みですが、 一部手抜き実装があり他の参考実装の通りの機能要件は満たせていないと思いますので、 その点はご容赦を。 パフォーマンス t2.microインスタンスでベンチマーカーとアプリを全て動かして測定した結果は以下の通りです。 go -- {"pass
最近会社のエンジニアでも Rust を使っている方がいてモチベーションさらに上がってきました。 近くで話せる人がいるというのはいいですね。といっても大阪と東京で離れてはいますが。 で、本題ですが、 boom-rust というabライクなツールを書いてみました。 もともと Python実装のboom と Go実装 があり、Rustで実装したらでどれくらいパフォーマンス違うのかなというのを比較できるかなと思い書いてみた次第です。 モチベーション 今自分の中でRustについていろいろ調べたり知見ためているところで、 小さなツールとかからプロダクション環境に投入していきたいなと考えてるところです。 その知見ためる一環として実際のツールなりライブラリをいろいろ書いていこうというのがあり、 boom-rustもそういうモチベーションで書きました。 今そういったツールは主にGoで書いてたりするので、 特
使い方 $ go get -u -v github.com/hhatto/gocloc $ gocloc . ------------------------------------------------------------------------------- Language files blank comment code ------------------------------------------------------------------------------- Go 8 97 16 810 Bourne Shell 9 65 161 270 Markdown 1 20 0 144 YAML 1 2 0 8 -----------------------------------------------------------------------------
タイトルどおりですが、GoのreStreucturedText実装を作ってみました。 https://github.com/hhatto/gorst 以前 GoでMarkdown live previewerのftcatってのを作った のですが、 リリースしたあとくらいに reStructuredText でも使いたいよなーって思ってました。 よしGoのreSTパーサ作ろうと思って 10月下旬にGitHubに空のリポジトリだけ作って 、 どこから手をつけたらいいのやらってグダグダ考えてほったらかしになっていたのですが、 2月に入ってちびちびと余暇の時間を使って進めて、やっと公開できるレベルになって公開したのが先日2/18でした。 使い方 現在はreSTからHTMLへの変換のみ対応しています。 現状はHTML以外のフォーマットに対応させる予定はありません。 $ go get github.c
去る1/24, 25にGoのオンラインハッカソン Gopher Gala に参加しました。 私がGopher Galaで何を作ったのかというと、 Kindle PaperwhiteのハイライトテキストをWWWで見れるようにする個人的なツール を作りました。 純正のまとめページ的なものはある のですが、 なんかしっくり来ないので自分が見やすい形で表示できるようなツールにしました。 主にはGoと BitTorrent Sync を使っていて、 Webのフロントエンドを Goji, pongo2 で作成し、 Kindleのハイライトテキストをパースするために klip パッケージを作成しました。 Project Page : https://github.com/gophergala/gogo7188 ローカルのiMacにKindleを接続して、 /Volumes/Kindle あたりを Bit
Go言語の練習にMarkdownファイルをブラウザ上でリアルタイムで閲覧できるツール moo / meow を Goで書き直してみました。 Server-Sent Events を使ってリアルタイムで処理します。 Faster Than CAT で ftcat という名前にしています。 大好きなゲーム FTL をもじりました。meowがネコの鳴き声でmeowよりは速いってことで。 ftcat - https://github.com/hhatto/ftcat モチベーションと得られた知識 作り始めた当初はあまり意識していなかったのですが、 今回は結果的にGoroutineとChannelの練習になりました。 fsnotify でMarkdownファイルの変更を待ち受け(Goroutine)て変更があればChannel経由で通知、 eventsource でサーバからServer-Sent-
1年くらい前からはてブとかredditとかからPythonの人気記事を集めて来て、 1週間に1度メールするアプリをつくって使っていたんですが、 それの Go 版が欲しくなったのでWebアプリで実現してみました。 goz 最近話題になっていた Gin というWebアプリケーションフレームワークがおもしろそうだったので、 それを使ってみました。その他使用したモジュールは以下の通りです。 goquery (HTMLパース) gorm , go-sqlite3 (ORM) feeds (RSSフィード) strftime goz のソースコードは以下においてあるので、興味ある方は見てみてください。 ツコッミもあればどぞ!! https://bitbucket.org/hhatto/goz/src Go言語でWebアプリ書いてみた感想 Goの特徴であるgoroutineとかほとんど使ったことないので
私はコピーアンドペースト(いわゆるコピペ)に起因するいくつかのエラーが 起こる事を学びました。 似たようなコードブロックの最後の行でプログラマがよくミスをするのを確信しました。 プログラミング書籍内でこの現象について書かれていた記憶が無いので、私が書く事にしました。 この現象を “ラストライン効果(last line effect)” と呼びます。 はじめに¶ 私の名前はAndrey Karpovです。私は少し変わった仕事をしています。 具体的には、静的解析ツールを使用して様々なアプリケーションのコードを解析し、 エラーや欠陥について詳細をまとめています。 私は実用的かつ金銭的理由でこれを行なっています、なぜなら 私たちの会社のツールであるPVS-StudioとCppCatの広告のひとつとしてこれを行なっているのです。 これらの仕組みはとてもシンプルなものです。私がバグを発見します。それを
Hacker Newsあたりに流れてておもしろそうだったので、Pythonで書いてみました。 元の記事は以下です。 Simple recommendation system written in Ruby Jaccard(ジャッカード)指数は サンプル群間の類似度を比較するためのものとのこと 。 A集合とB集合で、AとBの両方に出現ものを分子、AとBのどちらかに出現するものを分母として算出します。 Pythonを使うと set.intersection と set.union で表現できます。 日本語の単語抽出には mecab を使いました。 # coding: utf-8 import re import MeCab class Book(object): def __init__(self, title): self.title = title # original #self.wor
About jc JenkinsのJSON API をたたいてステータス等をいい感じに出力するツール jc をリリースしました。 2014年はGo言語を勉強すると決めたので、Goでつくりました。 インストールしてコマンド起動すると各ジョブの状況が表示されます。 $ go get github.com/hhatto/jc $ jc conf http://jenkins.mydomain.com/ $ jc jobs もう少しオプション増やしたり、表示をブラッシュアップしていきたいです。 Internal jc コマンドラインアプリのベースに codegangsta/cli 、 カラー表示に昨年つくった hhatto/nanairo を使っています。 その他、 jingweno/gh 、 tsenart/vegeta 、 mattn/go-treasuredata あたりを参考にして実装しま
Markdownパーサ hoedown 。 hoedownのPythonバインディング python-hoedown を書きました。中身はCythonです。 コードベースは misaka なので、書いたというよりポーティングって感じです。 Thanks, Frank Smit. misaka作者のフランクさんが忙しいらしく、 misakaのメンテできていないみたいで misakaのプロジェクトページからリンクはるかもって言ってました。 Benchmark misaka で使われてるベンチマークスクリプトを使って測定してみたのが以下。 $ python benchmark.py Parsing the Markdown Syntax document 50000 times... Misaka: 18.8812s Misaka (classes): 17.7065s hoedown: 18.
Invoke は簡単に言えばMakeやRake的なものです。 まだベータ的な感じですが、今後 Fabric にも 取り入れられていくみたい です。 同じような用途に pynt とかもあります。今日はさわりだけ。 Usage 以下のようなMakefileがあったとして、Invoke用に置き換えてみます。 all: python setup.py build .PHONY: test test: nosetests example: make clean; easy_install -ZU . cd examples && python store.py && python search.py && python remove_and_search.py pypireg: python setup.py register python setup.py sdist upload clean:
Installation $ bash < <(curl -s https://raw.github.com/moovweb/gvm/master/binscripts/gvm-installer) .zshrc (or .bashrc, .profile, etc...) とかに以下の設定を追加。 export PATH=$PATH:$HOME/.gvm/bin [[ -s "$HOME/.gvm/scripts/gvm" ]] && source "$HOME/.gvm/scripts/gvm" Usage gvm経由でGoをインストールしてみる。 listall でインストールできるバージョン確認して install で実際にインストールする。 $ gvm listall gvm gos (available) go1 go1.0.1 go1.0.2 go1.0.3 go1.1 go
以前紹介した markdownファイルをリアルタイムプレビューできるツール moo 。 現在はJavaScriptをベースにしたツールに変わってしまったため、 reStructuredTextファイルも変換できるようにしたPython版をフォークして meow としてリリースしました。 mooの作者とのやり取りは このあたり 。 Python3でも動作します。 コードはGitHubにあげています 。 インストールと使い方 インストール $ pip install meow 起動。 $ meow REST.rst Preview on http://127.0.0.1:7777 Hit Ctrl-C to quit. 2013-06-22 00:37:21 INFO detected file change Ctrl+Cで停止します。 一度使ってみてください。では。
タイトルのとおりですが、 folium というPythonライブラリが便利げ。 Leaflet.js というインタラクティブな地図を表現できるJavaScriptライブラリがあり、 そのPythonインターフェースみたいなかたちで使用できます。 実際には Leaflet.js を使ったHTMLファイルを書き出すようになっています。 さっそくインストールして使ってみましょう。 インストール Jinja2 と pandas が必要です。pandasはrequirements.txtに記載されてないので、明示的に。 $ pip install pandas $ pip install folium 大阪駅周辺の地図を書き出してみる import folium # osaka osaka_location = [34.702, 135.4951] mapobj = folium.Map(locat
使い方 インストール $ pip install plop プロファイルする。 $ python -m plop.collector autopep8.py autopep8.py $ ls /tmp/plop.out -rw-rw-r-- 1 hattori hattori 40397 5月 12 22:41 plop.out デフォルトだと /tmp/plop.out にプロファイルデータがダンプされる。 コールグラフ表示してみる。 $ python -m plop.viewer --port=8911 --datadir=/tmp ブラウザから /tmp/plop.out をクリックすると以下のようなコールグラフが表示されます。
ドキュメントあります が、インストールメモを。 $ wget "http://btsync.s3-website-us-east-1.amazonaws.com/btsync_i386.tar.gz" $ tar tzvf btsync_i386.tar.gz -rwxrwxr-x sync_build/sync_build 3241548 2013-05-08 22:54 btsync -rw-rw-r-- sync_build/sync_build 155 2013-05-07 23:16 LICENSE.TXT $ tar xzf btsync_i386.tar.gz btsync btsync がバイナリ。 --dump-sample-config オプションで設定ファイルのテンプレートを 表示することができます。それを参考に設定ファイルを作成します。 私の場合は以下のような設定に
Foreman はProcfileベースのプロセス管理ライブラリで、 honcho はそのPythonポーティングです。 便利そうなので使ってみます。 honchoの最新リリースバージョンは0.4.0 です。 インストールから起動まで インストール $ pip install honcho 今回はbottle.pyを使ったWebアプリを2つ起動してみます。 # app.py import sys from bottle import run def main(): run(port=int(sys.argv[1])) if __name__ == '__main__': main() # Procfile web1: python app.py 8081 web2: python app.py 8082 設定ファイルをチェックして起動してみます。 $ honcho check INFO:
最近 jubatus を触る機会があり、コマンド叩くのでZsh補完関数書きました。 _jubaconv と _jubaseries ファイルを所定のディレクトリに格納してください。 よければドゾ。 https://github.com/hhatto/zsh_completions
moo はmarkdown形式のファイルをブラウザ経由でリアルタイムプレビューできるツール。 sundown ベースの misaka モジュールを使用し、 サーバまわりは Flask を使っている。 Server-Sent Events を使ってリアルタイムプレビューを実現している。 インストールと使い方 インストール $ easy_install -ZU moo 使い方は moo コマンドをファイル指定で実行するだけ。 ポート5000番が開く。 $ moo FILENAME.rst * Running on http://127.0.0.1:5000/ * Restarting with reloader シャットダウンはDELETEリクエストを投げればおけ。 $ curl -X DELETE http://127.0.0.1:5000/ rstファイル形式に対応 便利なのでmarkdo
Rubyで簡単にIRCボットつくれないかなーってことでたどり着いたのが Cinch 。 10秒間隔でNOTICEメッセージをしゃべる例 require 'cinch' class HelloPlugin include Cinch::Plugin timer 10, method: :say_hello def say_hello Channel("#pgmagick").notice "hello world" end end bot = Cinch::Bot.new do configure do |c| c.nick = "cinch_timer" c.server = "irc.freenode.org" c.channels = ["#pgmagick"] c.plugins.plugins = [HelloPlugin] end end bot.start
from subprocess import Popen, PIPE import json import requests iwlist = Popen('iwlist wlan0 scan'.split(), stdout=PIPE) grep = Popen('grep Address:'.split(), stdin=iwlist.stdout, stdout=PIPE) awk = Popen(['awk', '{print $5}'], stdin=grep.stdout, stdout=PIPE) mac_address = awk.communicate()[0].splitlines() query = json.dumps( {'version': '1.1.0', 'host': 'maps.google.com', 'request_address': True,
C向けのMarkdownライブラリ libupskirt とか upskirt とか Discount とか PEG-Markdown とかがあります。 なんでこんな名前にしたかは知りません。。 Python向けのMarkdonモジュール Pure-Pythonモジュールである Markdown 、 libupskirtから派生した upskirt のソースを使用している pantyshot 、 libupskirtから派生しつつ upskirt とか異なるソースとなっている cMarkdown 、 Discountをラップした python-discount が使えます。 pantyshotとか悪乗りしてますね。。 PEG-Markdown用のラッパーは無かったので、作ってみました。 (結局速度が遅かったので、githubにだけあげています。 python-pegmarkdown ) ベ
pyresって pyres は Redis をバックエンドに使った、ジョブキューサービスを 提供するPythonモジュールです。 ワーカに実行させたいジョブをあらかじめ登録しておき、 実行したい時にエンキューして使います。 同じような用途のモジュールには Celery なんかがあります。
$ sudo add-apt-repository ppa:mattn/growl-for-linux $ sudo apt-get update $ sudo apt-get install growl-for-linux # coding: utf-8 import gntp from gntp.notifier import GrowlNotifier notifier = GrowlNotifier("python script", ["TEST"], hostname="0.0.0.0") notifier.debug = True notifier.register() # only once notifier.notify("TEST", "タイトルふぉー", "本文ふぉー\n2行目フォー")
jpegtranは libjpeg に含まれる無劣化(lossless)で画像処理が行えるツールです。 プログレッシブJPEGへの変換や、回転、反転等が行えます。 python-jpegtranはその名の通りjpegtranのPythonバインディングです。 $ wget http://www.ijg.org/files/jpegsrc.v8c.tar.gz $ tar xzf jpegsrc.v8c.tar.gz $ ls $ jpeg-8c $ wget http://ebiznisz.hu/python-jpegtran/python-jpegtran-0.1.tgz $ tar xzf python-jpegtran-0.1.tgz $ cd python-jpegtran-0.1 $ vim Makefile # 下記のdiff参照 --- Makefile.org 2006-1
前々から軽量な監視デーモン+変更時にコマンド実行見たいなツールが欲しくて 探していたのですが、 PyPIでnosierというモジュール を見つけたので紹介します。
他人のふんどしでばかり相撲をとってすみません(´Д`。) pgmagick でもできるか試してみたかったので、以下2つの記事をなぞってみました。 2枚の画像のdiff(差分)を超簡単に調べる方法 - 床のトルストイ、ゲイとするとのこと 本当は速いImageMagick: サムネイル画像生成を10倍速くする方法 - 床のトルストイ、ゲイとするとのこと from pgmagick import Image from pgmagick import CompositeOperator as co img_a = Image('a.jpg') img_b = Image('b.jpg') img_c = Image('c.jpg') print img_a.compare(img_b) print img_a.compare(img_c) #img_a.composite(img_b, 0, 0,
次のページ
このページを最初にブックマークしてみませんか?
『www.hexacosa.net』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く