Skip to content

Instantly share code, notes, and snippets.

@kwatch
kwatch / entity-role-example.js
Last active August 29, 2015 14:05
EntityクラスとRoleクラス
function Company(name, addr) { // Entityクラス
this.name = name;
this.addr = addr;
//
this._entity = this; // 姑息な方法
}
function Supplier(company) { // Roleクラス
this.__proto__ = company;
this.products = []; // 商品一覧 (Role固有のデータ)
@kwatch
kwatch / indented.py
Last active August 29, 2015 14:05
問題5:入れ子になっているリストを、インデント幅2の文字列に変換する関数 indented(arr, width=2) を定義してください。
# -*- coding: utf-8 -*-
##
## 問題5:入れ子になっているリストを、インデント幅2の文字列に変換する関数 indented(arr, width=2) を定義してください。
## 例:
## nested = [1, [2, [3, 4], 5, [6]]]
## string = indented(nested)
## print(string)
## #=> 1
## # 2
@kwatch
kwatch / flatten.py
Created August 14, 2014 09:15
問題4:入れ子になっているリストを、入れ子を外すような関数 flatten(arr) を定義してください。
# -*- coding: utf-8 -*-
##
## 問題4:入れ子になっているリストを、入れ子を外すような関数 flatten(arr) を定義してください。
## 例:
## nested = [1, [2, [3, 4], 5, [6]]]
## arr = flatten(nested)
## print(arr)
## #=> [1, 2, 3, 4, 5, 6]
##
@kwatch
kwatch / group_by.py
Created August 14, 2014 08:24
問題3: シーケンスseqと関数keyを受け取り、要素のリストを値とするような辞書を返すような関数 group_by(seq, key) を定義してください。
# -*- coding: utf-8 -*-
##
## 問題3: シーケンスseqと関数keyを受け取り、要素のリストを値とするような辞書を返すような関数 group_by(seq, key) を定義してください。
## 例:
## seq = [ {'id': 1, 'name': "Haruhi", 'gender': "F"},
## {'id': 2, 'name': "Mikuru", 'gender': "F"},
## {'id': 3, 'name': "Yuki", 'gender': "F"},
## {'id': 4, 'name': "Ituki", 'gender': "M"},
## {'id': 5, 'name': "Kyon", 'gender': "M"},
@kwatch
kwatch / index_by.py
Created August 14, 2014 08:16
問題2: シーケンスseqと関数keyを受け取り、要素を値とする辞書を返すような関数 index_by(seq, key) を定義してください。
# -*- coding: utf-8 -*-
##
## 問題2: シーケンスseqと関数keyを受け取り、要素を値とする辞書を返すような関数 index_by(seq, key) を定義してください。
## 例:
## seq = [ {'id': 1, 'name': "Haruhi", 'gender': "F"},
## {'id': 2, 'name': "Mikuru", 'gender': "F"},
## {'id': 3, 'name': "Yuki", 'gender': "F"},
## {'id': 4, 'name': "Ituki", 'gender': "M"},
## {'id': 5, 'name': "Kyon", 'gender': "M"},
@kwatch
kwatch / each_slice.py
Created August 11, 2014 10:54
問題1: シーケンスを受け取り、N個ずつの配列にして返すような関数 each_slice(seq, n, default=None) を定義してください。
"""
問題1: シーケンスを受け取り、N個ずつの配列にして返すような関数 each_slice(seq, n, default=None) を定義してください。
例:
seq = [10, 20, 30, 40, 50, 60, 70]
for item in each_slice(seq, 3):
print(item)
## 結果:
[10, 20, 30]
[40, 50, 60]
@kwatch
kwatch / gist:32eb6ab7bdecb5b4daaa
Last active August 29, 2015 14:04
http://cache.ruby-lang.org/pub/ruby/ にアクセスすると、「Accept-Encoding: gzip」をつけてないのに gzip 圧縮して送られてくる。とても困る。
~$ telnet cache.ruby-lang.org 80
Trying 103.245.222.184...
Connected to fallback.global-ssl.fastly.net.
Escape character is '^]'.
GET /pub/ruby/ HTTP/1.0
Host: cache.ruby-lang.org
HTTP/1.1 200 OK
Server: nginx/1.2.1
Content-Type: text/html
@kwatch
kwatch / example.sql
Last active August 29, 2015 14:03
how to aggregate row data or complex type data?
--
-- data
--
psql=> select * from users;
id | name
----+-------
1 | Bob
2 | Alice
3 | John
(3 rows)
@kwatch
kwatch / ex-heredoc2.rb
Created July 9, 2014 16:42
ヒアドキュメントとBabyErubisの組み合わせ例。テンプレート内のエラーでも、正確なファイル名と行番号が表示されることに注目!
# -*- coding: utf-8 -*-
require 'baby_erubis'
erb = BabyErubis::Html.new.from_str <<'END', __FILE__, __LINE__+1
<html>
<body>
<ul>
<% (1..3).each do %>
<li><%= x %></li>
@kwatch
kwatch / ex-heredoc.rb
Created July 9, 2014 16:35
ヒアドキュメントとERBとを組み合わせた例。欠点は、テンプレート内でエラーがあっても、ファイル名と行番号がうまく表示されないこと。
# -*- coding: utf-8 -*-
require 'erb'
erb = ERB.new <<'END'
<html>
<body>
<ul>
<% (1..3).each do %>
<li><%= x %></li>