Skip to content

Instantly share code, notes, and snippets.

@esehara
esehara / aozora_to_epub.py
Created July 23, 2011 05:29
Aozora Author to Epub
# -*- coding:utf-8 -*-
import urllib
import urllib2
from BeautifulSoup import BeautifulSoup
import re
import os
import zipfile
"""
@esehara
esehara / accounts.pl
Last active August 21, 2022 10:23
Prolog de Kakeibo
% it is fiction!!
accounts(給料, 200000).
accounts(家賃, 60000).
accounts(借金, 10000).
% vim: set syntax=prolog:
@esehara
esehara / gist:3160352
Created July 22, 2012 17:21
良い Commit Messageを書きましょう(翻訳)

by https://github.com/erlang/otp/wiki/Writing-good-commit-messages

良いコミットメッセージは、重要な役割が、少なくとも三つあります。

  • レビューするプロセスをスピードアップする。
  • 良いリリースノートを書く手助けになる。
  • 将来、Erlang/OTPのメンテナンスを手助けするため(もしかしたら君かも!)。それは五年後の未来において、なんでコードの中で特定の変更が加えられたのか、あるいは特定の機能が追加されたのか見つけるため、ということ。
type results = {
ys: list(list(int)),
xs: array(int),
};
let sum_xs_ys = (line, r) => {
let y_list = Str.split(Str.regexp(" +"), line) |> List.map(int_of_string);
let y_simple_sum = List.fold_left((+), 0, y_list);
{
ys: r.ys @ [List.map((s) => y_simple_sum - s, y_list)],
@esehara
esehara / file0.py
Created June 28, 2013 16:45
はてなブックマークのお気に入りユーザーで、既にアクティヴではないユーザーを調べる ref: http://qiita.com/esehara@github/items/d595c89c52a81052bf42
# -*- coding: utf-8 -*-
from bs4 import BeautifulSoup
import sys
import urllib
def _init():
if len(sys.argv) == 1:
print "usage: lastbookmark.py user_name"
sys.exit(1)
@esehara
esehara / gist:5925390
Last active April 2, 2020 10:53
ORDER BY RAND() 使うな ---- Original by: “Do not use ORDER BY RAND()” or “How to get random rows from table?” http://www.titov.net/2005/09/21/do-not-use-order-by-rand-or-how-to-get-random-rows-from-table/

SELECT quote FROM quotes ORDER BY RAND() LIMIT 1

テーブルからランダムの行を手に入れる為のSQL文だが、これはとても悪いアイデアだ。貴方が欲しいものがどんなものであれ、巨大なテーブルを持っていて、たった50-100行を取り出すであったとしてもね。

貴方がこのクエリーを走らせるたびにどんなことが起きているのだろう? 10000行を持つテーブルの上で、このクエリーを走らせてみよう。すると、SQLは10000の乱数を発行し、一番小さい数を調べて、その行を与える。乱数を作ることは、比較的には大変な操作であり、それらの一番小さな数をを見つけてくること自体はとてもはやい(例えば、貴方が LIMIT 10にしていたら、それらで小さい順に10個の数を取ってくるーーもし、このテキストの引用が遅いなら、それはたぶんできるだけ早くするためにサイズを何らかの形であわせているからだ。たぶん、テンポラリーテーブルを作る必要があるから、とか)。

で、どうやってこんなオーバーヘッドを起こさずに、ランダムな行を取ってくればいいんだろう?簡単に置き換えることはそう簡単ではない。次のようなことは、できる。

SELECT COUNT(*) AS cnt FROM quotes

@esehara
esehara / oogiri.py
Created April 25, 2015 04:40
メカ大喜利マン ver 0.1
# -*- coding: utf-8 -*-
from gensim.models import word2vec
import MeCab
import random
model = word2vec.Word2Vec.load("oogiri_gensim.model")
tagger = MeCab.Tagger("-Ochasen")
def word_and_kind_parse(line):
line_word = line.split("\t")
if len(line_word) < 2:
@esehara
esehara / gist:1088146
Created July 17, 2011 22:12
社会学評論の過去掲載分を一気にダウンロードするスクリプト
# -*- coding:utf-8 -*-
# 社会学評論・過去アーカイヴ Downloader
# http://www.journalarchive.jst.go.jp/japanese/jnltop_ja.php?cdjournal=jsr1950
import urllib
import urllib2
from BeautifulSoup import BeautifulSoup
import re
class System_html(object):
@esehara
esehara / yapac.md
Last active March 28, 2019 04:31
[WIP] プログラミング言語処理入門以前レジュメ

プログラミング言語処理入門以前 -- Unlispについて

自己紹介

お前誰だ

  • esehara shigeo
  • プログラミング言語オタク
  • 近況については悲しいことがあり、飛ばします(現時点では無職です)
@esehara
esehara / 1.1.1.markdown
Last active March 3, 2019 18:37
『計算機プログラムの構造と解釈』一章一節読書メモ

普通の四則演算として考えると次のように表せる。

1 + 2 * 3 + 4 / 2

これは、下のようにまとめることが可能だ。

1 + (2 * 3) + (4 / 2)