Skip to content

Instantly share code, notes, and snippets.

@esehara
esehara / gist:2523056
Created April 29, 2012 01:03
好きな言語とその理由

Python

 個人的には、一番好きな言語。好きな理由としては、Pythonが、 簡潔さと解法の一意性 を求めているからだ。どういうことかといえば、例えばPythonにはSwitchらしいものはない。Switchを実現したければ、elseifを連呼するしかない。そういう意味では、Pythonという言語は「不便な言語」ではある。しかし、その代償に、Pythonは「読みやすくなる」。こう考えてみよう。switchを連打したら、そもそも何の関数を比較しているのかわからなくなるでしょ?ただ、やはりPythonには不満がある。まず一つに、そのマルチバイト文字処理が未成熟であったこと。これは、日本に住んでいる私たちにとっては痛いことである。Python3になってから、文字列はUnicodeで扱うようになったため、この問題は解決する予定ではあるものの、しかしPythonよりもRubyが選ばれるのは、このへんの事情もあるように思う。

PHP

 嫌われ率No.1の言語ではあるが、個人的には嫌いではない。そして、それは個人的に使う限りにおいてだ。PHPの好きなところというのは、その節操の無さだ。必要な機能は何でも詰め込む。それは、機能が膨張し、汚くなりがちではあるものの、そういう割り切り方は嫌いではないし、その部分は周辺言語と比較して突き抜けている。また、ドキュメントがちゃんと日本語化されていたりという点も好印象。問題は、その緩さ。Warning出しまくっていようが、何だろうが、なんとなーく動いてしまう点とかその辺り。PHP5.3あたりになってから、Classなんかが書けるようになったのは良かった点ではないでしょうか。

@esehara
esehara / atkin.rb
Last active May 19, 2018 16:12
アトキンのふるい
class SieveHelper
def initialize(limit, x, y)
@limit = limit
@x = x
@y = y
end
def invalid?
(@x ** 2) + (@y ** 2) >= @limit
end
@esehara
esehara / file0.txt
Created July 3, 2013 14:39
はてなブックマークで該当のURLがブックマークされるまで調べ続けるスクリプト ref: http://qiita.com/esehara@github/items/ea0f403fb4b14c30688c
if previous != user:
os.system('notify-send -u critical "ブックマークされました" "%d users"' % user)
previous = user
time.sleep(600)
@esehara
esehara / socket.clj
Last active October 16, 2017 04:18
Clojureでソケットプログラミング
(ns example-socket.core
(:import (clojure.lang LineNumberingPushbackReader))
(:use [clojure.contrib.server-socket]
[clojure.java.io]))
(var *in*)
(var *out*)
(def broadcast-output [])
@esehara
esehara / yawaraka.md
Last active October 16, 2017 04:18 — forked from udzura/LICENSE
やわらかClojure -- Porting やわらかRuby to Clojure

Clojure をインストールする

演習

  • lein replで対話型コンソールが立ち上がることを確認しよう

(他未定)

# coding: utf-8
def dict_to_format(log_dict):
u"""
辞書型のデータを、ロギングできるフォーマットに変更する
>>> dict_to_format({"foo": 1, "bar": 2})
'foo:1\\tbar:2'
"""
@esehara
esehara / mem_test.py
Created May 26, 2014 17:38
memcacheがTIME_WAIT地獄になる件について
# coding: utf-8
from bottle import route, run
import memcache
# こっちだとたまらない
# c = memcache.Client(["memcache.test:11211"])
@route('/')
def index():
# ここで開放されずにTIME_WAITしまくる!!!
@esehara
esehara / yaruki.lisp
Created March 22, 2015 06:15
やる気出るCommon Lisp
(let ((*standard-output* (make-broadcast-stream)))
(ql:quickload :cl-ansi-text))
(import 'cl-ansi-text:with-color)
(defun random-get-from-list (lst) (nth (random (length lst)) lst))
(defun string-repeat (n target) (format nil "~v@{~A~:*~}" n target))
(defvar *separaters*
(list "="))
@esehara
esehara / file0.txt
Last active October 16, 2017 02:44
emacs24でフォントサイズをキーバインドから変更できると便利なのでそうした ref: http://qiita.com/esehara@github/items/858379483d9235d0df49
(defconst FONT_FAMILY "Ricty")
(defun font-size-change(x)
(set-frame-font (concat FONT_FAMILY "-" (format "%s" x))))
(defun present-mode ()
(interactive)
(font-size-change 24))
(defun big-font-mode()
@esehara
esehara / qsort.rkt
Last active October 16, 2017 02:41
クイックソート(『はじめてのLisp関数型プログラミング』(p.120))
#lang racket
(require rackunit)
(define (qsort l)
(if (null? l)
l
(qsort2 (car l) (cdr l) '() '())))
(define (qsort2 p l left right)