床のはしごをしてきました
今年って夏ありましたっけ?
普段なら 8 月は淀川の花火に行って、流しそうめんを楽しんで、というところなんですが、今年は台風の影響で花火は中止、翌日に天橋立で宿を取ってたけどそれも電車が動かずにキャンセル、しかもその後もあまり気温が上がらずにそのまま 9 月で完全に秋模様...という淋しい感じでした。
でもまだ流しそうめんはやってるし、一緒に行く友達もゲットしたので、行ってきました。いつもお世話になってる「ひろ文」さんです。
流しそうめん | 京都貴船 料理旅館ひろ文
もっと暑ければ「ああ涼やか!」って思える川の流れと瀧です。川床最高!
そして去年は 13 時くらいに着いたら「3 時間待ち」という憂き目に遭い、鞍馬山を登って時間を潰してましたが、今回は気温が落ちていてしかも平日なのでこの通り!
どこで待てばいいかなって思ったらお店の人が「何番ですか?」って訊いてきたから番号を言うと「こちらへどうぞ」っていきなり案内されるというまさかの待ち時間ゼロ!
瀧を見ながらの流しそうめんは癒されるので、ぼくには必要ですね。良い意味で力が抜けます。
そうめんの疾走感!
やはり流しそうめん素晴らしい!
一番最後は、梅味の赤玉です。
帰りにはお参りをしに貴船神社に行きました。
御手水のところにかかってたコレは、もう少し考えた方がいいですね。「る」が可哀想です。
その後、三条へ行って、スターバックス川床をしてきました!これで上流の「かわどこ」と下流の「かわゆか」制覇です!
帰宅したら不在通知が届いてたので、速攻で連絡して配送してもらいました。iPhone 6。
来年もまた流しそうめんに行きます。必ず。
祇園祭 花傘巡行と後祭山鉾巡行
今年は 49 年ぶりに後祭が復活となりました。その間は先祭である 17 日に全ての山鉾が巡行していましたが、長時間での交通規制による弊害などがあって、大船鉾の再建に合わせて復活したそうです。見物客のぼくとしては、先祭の長時間が結構キツかったので、助かります。
なお、後祭での山鉾巡行が先祭へ統合された後に開催された花傘巡行も、24 日に変わらず行われました。ちなみにこの後祭というのは「後の祭り」の語源でもありますよ。
ちなみにこの日も山鉾休暇と称してガッツリ見物する予定でいて、その分前日深夜まで作業していたため、寝坊をしてしまい、起きたときには時間がない!と思ったけど、なんとか全部見終えました。
花傘巡行
花傘巡行旗
子供神輿列
神饌行列
神饌花車
児武者
花傘
八坂神社清々講社
八坂神社婦人会
花傘
コンチキ音頭
花傘
京都織物卸商業組合
花傘娘
織商鉾
花傘
宮川町お茶屋組合
花傘
祇園甲部お茶屋組合
花傘
鷺踊
万灯踊
更新したファイルに該当するタスクだけ走らせる Gruntfile
grunt-contrib-watch って便利なんですが、監視ファイルが多くなる=走る処理が多くなるとどうしても時間がかかってしまいます。それでなんだか効率が落ちてたりするわけなんですが、grunt-este-watch が幸せということを聞いて、ぼくも幸せになりたいと思いやってみました。
更新されたファイルに関係ないタスクが走るのが良くないわけで、ちゃんと個別にタスクを走らせたら良いわけですね。ということで、以下にサンプルを置いておきます。とりあえず便宜上なので、ファイル名に意味はありません。
やりたいこと
前提
監視対象のファイルは全て ./src/ に入ってるものとします。
利用するプラグイン
Gruntfile.coffee
module.exports = (grunt) ->
pkg = grunt.file.readJSON 'package.json'
grunt.initConfig
compass:
dev:
options:
config: 'config.rb'
environment: 'development'
force: true
prod:
options:
config: 'config.rb'
environment: 'production'
force: true
concat:
css:
files:
'css/styles.css': ['css/reset.css', 'css/common.css']
js:
files:
'js/functions.js': ['src/common-a.js', 'src/common-b.js']
cssmin:
common:
files:
'css/styles.min.css': ['css/styles.css']
mobile:
files:
'css/mobile.min.css': ['css/mobile.css']
uglify:
common:
files:
'js/functions.min.js': ['js/functions.js']
mobile:
files:
'js/mobile.min.js': ['src/mobile.js']
yaml:
functions:
files:
'js/functions.json': ['src/functions.yml']
settings:
files:
'js/settings.json': ['src/settings.yml']
esteWatch:
options:
dirs: ['src/']
sass: (file) ->
return if getTarget(file) is 'mobile' then ['compass:dev', 'cssmin:mobile'] else ['compass:dev', 'concat:css', 'cssmin:common']
js: (file) ->
return if getTarget(file) is 'mobile' then ['uglify:mobile'] else ['concat:js', 'uglify:common']
yml: (file) ->
return ['yaml:' + getTarget(file)]for t of pkg.devDependencies
if t.substring(0, 6) is 'grunt-'
grunt.loadNpmTasks tgrunt.registerTask 'w', ['esteWatch']
grunt.registerTask 'default', ['compass:dev', 'concat', 'cssmin', 'uglify']getTarget = (file) ->
return file.split('/')[1].split('.')[0]
これで grunt w で、css でも yaml でも該当タスクだけ走るので、劇的にスピードが変わりました。めでたしめでたし。
Path API を叩く PHP / Python / Ruby のサンプル
あけましておめでとうございます(遅
Path が API を公開してたので(気づくの遅い)、叩いてみました。
今までいくつかの API を叩いてきたけど、json で渡すのは初めてでした。
それぞれ下記を叩くことにします。
GET: /user/:id
https://path.com/developers/docs#get-user
POST: /moment/thought
https://path.com/developers/docs#post-moment-thought
PHP
GET
<?php
header('Content-type: application/json; charset=utf-8');$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://partner.path.com/1/user/self');
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Bearer YOUR API TOKEN'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);$response = curl_exec($ch);
curl_close($ch);echo $response;
POST
<?php
header('Content-type: application/json; charset=utf-8');$options = array('thought' => 'PHP Test', 'private' => 1);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://partner.path.com/1/moment/thought');
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Bearer YOUR API TOKEN', 'Content-Type: application/json'));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($options));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);$response = curl_exec($ch);
curl_close($ch);echo $response;
Python
GET
#!/usr/local/bin/python
# -*- coding: utf-8 -*-
print "Content-Type: application/json";import pycurl
c = pycurl.Curl()
c.setopt(pycurl.URL, 'https://partner.path.com/1/user/self')
c.setopt(pycurl.HTTPHEADER, ['Authorization: Bearer YOUR API TOKEN'])
c.perform()
POST
#!/usr/local/bin/python
# -*- coding: utf-8 -*-
import pycurl
import jsonoptions = {'thought': 'Python test', 'private': 1}
c = pycurl.Curl()
c.setopt(pycurl.URL, 'https://partner.path.com/1/moment/thought')
c.setopt(pycurl.HTTPHEADER, ['Authorization: Bearer YOUR API TOKEN', 'Content-Type: application/json'])
c.setopt(pycurl.POST, 1)
c.setopt(pycurl.POSTFIELDS, json.dumps(options))
c.perform()
Ruby
GET
#!/usr/local/bin/ruby
# encoding utf-8
print "Content-Type: text/html\n\n";require 'faraday'
require 'json'conn = Faraday::Connection.new(url: 'https://partner.path.com') do |builder|
builder.use Faraday::Request::UrlEncoded
builder.use Faraday::Response::Logger
builder.use Faraday::Adapter::NetHttp
endresponse = conn.get do |request|
request.url '/1/user/self'
request.headers = {'Authorization' => 'Bearer YOUR API TOKEN'}
end
POST
#!/usr/local/bin/ruby
# encoding utf-8
print "Content-Type: application/json\n\n";require 'faraday'
require 'json'options = {'thought' => 'Ruby Test', 'private' => 1}
conn = Faraday::Connection.new(url: 'https://partner.path.com') do |builder|
builder.use Faraday::Request::UrlEncoded
builder.use Faraday::Response::Logger
builder.use Faraday::Adapter::NetHttp
endresponse = conn.post do |request|
request.url '/1/moment/thought'
request.headers = {
'Authorization' => 'Bearer YOUR API TOKEN',
'Content-Type' => 'application/json'
}
request.body = JSON.generate(options)
end