pyfes 2012.11 もくもくメモ
2012-11-24 Saturdaypyfesにて、もくもく作業してた内容メモのみ。
@geeklatte_bot をつくった
JSON 読みこんで、ランダムで1つとってきて tweet する子です。 dev_appserver.py がなぜかどっかいってたけど Google App Engine SDK アップデートしたら戻ってきた。よくわからない Warning が出てるけど…。
以下、自分に忘れて欲しくないポイントだけ。
url 開く
import urllib2
data = urllib2.urlopen('http://geeklatte.com/geeklatte_all.json')
20.6. urllib2 — URL を開くための拡張可能なライブラリ
urllib2.urlopen(url[, data][, timeout])
URL url を開きます。 url は文字列でも Request オブジェクトでもかまいません。
この関数は以下の 2 つのメソッドを持つファイル類似のオブジェクトを返します: * geturl() * info()
ファイル類似のオブジェクト(file-like object)というのは、実ファイルじゃないけど.read()とかできるファイルっぽい何か、らしい。
JSON 読んで dict つくる
import json
dictFromJson = json.load(data)
Python 2.7ja1 documentation » Python 標準ライブラリ » 18. インターネット上のデータの操作 » 18.2. json — JSON エンコーダおよびデコーダ
json.load(fp[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, object_pairs_hook[, **kw]]]]]]]])
直列化された fp (.read() をサポートするファイル的オブジェクトで JSON 文書を収めたもの) の内容を Python オブジェクトに戻します。
Python オブジェクトって具体的になに!この場合は元が JSON だから dict と思ってていいのかな。
dict の中身にアクセス
photoset = dictFromJson['photoset']
思わず dictFromJson.photoset
って dot notation で書こうとしてた。ちがった…。
Python 2.7ja1 documentation » Python チュートリアル Python チュートリアル » 5.5. 辞書
@moonphase_botアップデートした
28日め = 0日めに「計算できなかったみたい」って tweet してたので直したのと、1周して飽きたので、月齢を □□□□ 表示にしてみた。テストとかしてないのでまた28日かけて動作確認する。
さらに、Tokyo の日の出と日没時間も tweet するようにした。
datetimeのフォーマット
sun['sunrise']
とか sun['sunset']
で返ってくる値が 2012-11-24 06:25:52+09:00
なんだけど、使いたいのは 06:25:52
のとこだけなんだよね。うーん。
で、re.sub しかけてたんだけど、そうじゃなくて datetime の方で好きなフォーマットにできるのだった。
str(sun['sunset'].strftime("%H時%M分%S秒"))
とか。
Python 2.7ja1 documentation » Python 標準ライブラリ » 8. データ型 » 8.1. datetime — 基本的な日付型および時間型
Cash Register Part II
2012-11-17 Saturdayひゃっほう!!Codecademy で Cash Register Part II おわったぜ!
Recursing on a list で index + 1
って書くべきところを index++
って書いてハマってた。まさにこの人と同じ間違い。
//bad! This should be inside an object. We'll fix that a bit later
var change = 0;
function howManyCoins (coinName, coinAmount, coinsSoFar) {
if (change < coinAmount) {
console.log(coinsSoFar + " " + coinName);
} else {
change -= coinAmount;
howManyCoins(coinName, coinAmount, coinsSoFar + 1);
}
}
var currency = [5.00, 1.00, 0.25, 0.10, 0.01];
var coinNames = ["five dollar bills", "one dollar bills", "quarters", "dimes", "pennies"];
function makeChange (coinNames, currency, index) {
if (index >= currency.length) {
// and this
return;
} else {
//and this
howManyCoins(coinNames[index], currency[index], 0);
// ここの3つめの引数を index++ にして無限ループしてた
makeChange(coinNames, currency, index + 1)
}
}
change = 18.94;
makeChange(coinNames, currency, 0);
なぜ ++
って書いてたかというと、codecademy の別のコースで出てきて、1減らしたいときここは --
とも書けるぜ。これちょっと自慢できるぜ。って書いてあったんだよなー。これ。
function makeRobots(robotsNeeded){
// Do we need any robots?
if(robotsNeeded>0){
// We do? Well lets make one
console.log("Robot "+ robotsNeeded+" Created");
// Removes 1 from robots Needed
// Also the same as saying robotsNeeded = robotsNeeded -1
robotsNeeded--;
// Calls makeRobots with the new number of robots needed
makeRobots(robotsNeeded);
}
}
makeRobots(2);
ここでは、robotsNeeded = robotsNeeded -1
と robotsNeeded--
は同じ、という話で、robotsNeeded -1
と robotsNeeded--
は同じではないのだけど、そこをカンチガイしていたのだった。
Knowing this will impress your programmer friends, and make you more attractive to people in general. とかいわれたら使ってみたくなるじゃんね!
よくわかんなくてぶつぶつ言ってたら Twitter で教えてもらった。pre-increment と post-increment ってどう違うの!サイ本の説明よくわかんなかった!
さださん(@sada_h) の https://gist.github.com/4088752 見て、実行してみて、理解した。
var i = 1;
// +1 される前の値が出力されるのが i++
console.log(i++) // 1
// そして次に呼び出すときには +1 されている
console.log(i) // 2
var j = 1;
// +1 された後の値が出力されるのが ++j
console.log(++j) // 2
console.log(j) // 2
そうか。index + 1 はOKだし、index = index + 1 でもよくて、++index もよいのだった。index++ がまずかったのね。
残り Build a Blackjack Game, Final だけなんだけど、OOPのとこ復習しないといけないのをひしひしとかんじています。
Jekyll 続き
2012-11-14 Wednesday上海小吃の豆腐の細切りを reproduce するべく干豆腐絲を探し求めて彷徨ったのち、料理してビアも飲んだし、さらに七尾旅人と U-zhaan の Ust も見ちゃったので本日 Codecademy はおやすみ。
Jekyll で気になってたところ見なおして直した。
jekyll+github pagesでブログを作る を読みなおした。
title どうやってつけるんだっけ
ファイル名に入っている日付以外の部分が title になってたのが気になってた。_posts の下に置くファイルのここに書くんだった。
---
layout: post
title: "Jekyll 続き"
category : selfstudy
tags : [selfstudy, jekyll, blog]
date: 2012-11-14
---
Syntax Highlight したい
pygments を入れただけの状態だったので、ちゃんと highlight するようにした。こういうの。
var chai = {
'ingredient' : ['fennel', 'large cardamon seeds', 'dried ginger', 'cassia', 'black pepper', 'green cardamon', 'star-anise', 'cloves'],
'gram' : 25
}
必要なのはこのみっつ。 1. $ easy_install pygments 2. https://github.com/mojombo/tpw/blob/master/css/syntax.css
- 該当部分を {% highlight perl %} と {% endhighlight %} で囲む
ちなみに、この template tag をエスケープする方法はここにあった。
Jekyll は Liquid という Ruby のテンプレートエンジンをつかってるのかー。へー。
- ← Previous
- 43 of 65
- Next →
Author
Yuko Honda Morita (yukop) : yukop.com
飯能→東京→シリコンバレー。夫と猫2匹と暮らしてます。作ったり学んだり踊ったりするのが好き。
Born in Japan, living in California with my husband and two cats. "A bit of a geek and a bit of a geek fan and a bit of an artist." ->
Latest Posts
Japanese
- 2016-02-20 » フロントバンパーの外し方メモ - SUBARU XV Crosstrek 2014
- 2016-01-19 » Singular they
- 2015-12-21 » San Joaquin River NWR
- 2015-12-20 » San Luis NWR
- 2015-11-22 » EAD(労働許可証)更新 その1
- 2015-11-08 » Burrowing Owl アナホリフクロウ
- 2015-10-31 » Tire Pressure Warning
English
- 2014-10-18 » Halloween Decorations
- 2014-08-01 » Cat Parasite
- 2014-07-29 » How to Make Dumplings From Scratch
- 2014-07-25 » Moving to an Unfamiliar Land That Speaks a Foreign Language
- 2014-07-23 » Going to See a Dentist
- 2014-07-22 » Agent Cooper's Favorite Cherry Pie
- 2014-07-19 » It's Nice Living with Two Kittens