Lumenで簡単なAPI作ってみた

lumen-test

yterajima/lumen-test

LumenLaravel 系統の小さなフレームワークとして開発されているものらしい。routes.php の書き方を見る限りでは SilexSlim と同じようなものに見えます。

ちょうど Laravel5 を使った案件に対応しているタイミングだったので少し気になって動かしてみました。

続きを読む

agatsuma.survive#05(きのこる会)を開催しました

入場口画像

agatsuma.survive#05(きのこる会)を開催しました。スピーカーを含め計12名での開催となりました。

3月に @sugimoto1981 さんと飲んでいた時に「やろうやろう」という話から始まって開催となりました。当日はゲストに @sugimoto1981さん, @ahomu さん, インスパイアデザイン の家富さんにスピーカーをしていただきました。

(生)きのこるというふわっとしたテーマで不安があったもののスピーカーの皆さんのお話がしっかりとしており面白かったです。私自身もスピーカーとして少し話ましたがどんな内容を話したかは少しアレな内容なので内緒です。

「みんないろいろ考えて仕事してるんだなぁ」というところが実感できて良かったです。懇親会も含め普段はなかなかしない突っ込んだ話ができました。

参加者の皆さん, スピーカーの皆さんご参加ありがとうございました。次は多分ビアガーデンにいくよくわからないイベントを夏にやります。

golangでsitemap.xmlのページ情報を取得する

開発中のあるツールの処理を golang で書き直せないかと思ったので試しに書いてみました。golang は手元のちょっとしたツールを書いてみたりしていた程度だったのですが, なかなか便利でよいですね。

お作法的なものとかまだよく分かっていないのでもう少し書けるようになりたいです。

package main

import (
    "encoding/xml"
    "fmt"
    "io/ioutil"
    "net/http"
    "os"
)

type Page struct {
    Loc     string `xml:"loc"`
    LastMod string `xml:"lastmod"`
}

type Sitemap struct {
    XMLName xml.Name `xml:"urlset"`
    Pages   []Page   `xml:"url"`
}

func main() {
    url := "http://www.e2esound.com/sitemap.xml"
    sitemap := GetSitemap(url)
    for _, page := range sitemap {
        fmt.Println(page.Loc, page.LastMod)
    }
}

func GetSitemap(url string) []Page {
    response, err := http.Get(url)
    checkErr(err)

    XMLdata, err := ioutil.ReadAll(response.Body)
    checkErr(err)

    var sitemap Sitemap
    xml.Unmarshal(XMLdata, &sitemap)
    return sitemap.Pages
}

func checkErr(err error) {
    if err != nil {
        fmt.Println(err)
        os.Exit(1)
    }
}

参考: Tutorial on how to read XML file in Go. – SocketLoop

e2esound.com をリニューアルしました

e2esound-2015

e2esound.com: http://www.e2esound.com

リニューアルの理由

  • 前回リニューアルしてから 2 年以上経過しており業務内容と記載された内容齟齬が出てきた
  • 昨年6月に新しい作業場を開設したが, そういった情報が追加されていなかった
  • Google が 4/21 からスマホ対応されたサイトを優遇表示するらしいとの発表があった

続きを読む

agatsuma.survive#05(きのこる会)を開催します

agatsuma.survive#05

久しぶりに勉強会を開催します。

agatsuma.survive#05(きのこる会) – connpass

開催情報

  • 日時: 2015/04/18(土) 13:30 – 16:30 (開場・準備13:00, 閉場17:00)
  • 会場: イノウエビル 第2会議室(群馬県高崎市八島町265)
  • 人数: 25名
  • 参加費: 1000円(学生無料)
  • ゲスト:
    • sugimoto1981さん
    • ahomuさん
    • 家富正幸さん

続きを読む

itamaeを使ってvagrant上のUbuntuをよしなにする

開発環境の管理に chef-solo をいじってしばらく使っていましたが, chef-zero がどうとかという話になり段々とついていけなくなっていました。少し前に目にした itamae が簡単そうだったので使ってみました。Ubuntu 上でパッケージをあれこれ試す場合のベースになる box を作ることが目的です。

repos: yterajima/vagrant-itamae-ubuntu

使ってみて

  • 私に必要なのは chef ではなく itamae だった感
  • ファイル全体の見通しがいいので気が楽
    • chef でいじっていた時は利用しないディレクトリとか良くわからないまま使っていたファイルがあったが, なくなった
  • 普通に書けた(特に難しくはなかった

続きを読む

Middlemanでwikiっぽいことができたら便利だなと思ったからmiddleman-tansu v0.1.0をリリースした

tansu top

静的サイトのwikiっぽくページ間リンクをアレする何かを作っている | e2esound.com業務日誌

リンク先の記事の中で使っていたものを昨年中に update して, 1月中にだらだらとライブラリ化, そして 1/20 くらいから gem 化。先週の時点ですでに v0.0.1 以上を公開していました。それに手を加えて v0.1.0 をリリースしました。Middleman のプロジェクトテンプレートとして作られているので init する時に指定して使うことができます。

$ middleman init PROJECT --template tansu

その他の事項については README と init した後にサーバを立ち上げると細かい話が書かれています。現在 Middleman v4 beta に向けて開発が進んでいますが, 残念ながら今のところ v3 系限定の対応です。

tansu sample page

続きを読む

Middleman で絵文字を使うために middleman-gemoji を作った

middleman-gemoji

middleman-gemoji

実はすでに絵文字を実現できるらしい gem は公開されていたのですが, あまりメンテナンスされていないらしいこと, 絵文字画像のインストール処理をコマンドで追加したかったりといったところがあって新しく作ってみました。

絵文字の処理と絵文字画像については github の gemoji に依存しています。

続きを読む

Mac の Middlemanでbuild&deployしたページにアクセスできないトラブル

  • ファイルの生成は MacBook Air 上の Middleman 環境
  • 環境は さくらVPS + nginx 環境の web サーバ
  • middleman-deploy の rsync モードでデプロイ
  • http://hogehoge.com/パーフェクトRoR/1章.html のような URL にアクセスすると 404
  • それ以外のページは問題があったり, なかったりする

原因

デプロイしたファイルに日本語ディレクトリや日本語ファイル名が含まれる場合, UTF-8-MAC の文字コードの影響で 404 になってしまっていました。例えば「パ」が含まれると UTF-8 と UTF-8-MAC では異なる情報になるため, ファイルが探し出せず 404 となる。

対応

Middleman + SinatraでALOHA FISHMANSのサイトをリニューアルしました – blog.katsuma.tv の「濁点問題」のところにあるように rsync で --iconv=UTF-8-MAC,UTF-8 を渡すと手っ取り早く解決できるようです。

middleman-deploy の rsync モードには flags に rsync のオプションが渡せるので指定する。

# config.rb
activate :deploy do |deploy|
  deploy.method = :rsync
  deploy.host   = 'www.example.com'
  deploy.path   = '/srv/www/site'
  deploy.flags  = '--iconv=UTF-8-MAC,UTF-8 -avz'
end

これで問題なくアクセスできるようになりました。middleman-deploy 以外の場合には after_build でファイル名変換, 文字列変換する必要がありそうですね。