Skip to content

Instantly share code, notes, and snippets.

View morika-t's full-sized avatar

Takeshi Morikawa morika-t

  • NTT TechnoCross Corporation
  • Tokyo, Japan
View GitHub Profile

このgistは Cloud Foundry Advent Calendar 2013 の16日目の記事です。

はじめに

現在、CloudFoundryのComponentsはGo化しつつあります。それにより、Rubyで実装されていたものに対して性能向上していたり、ソースが読みやすくなっていたりする(こちらは主観ですが・・)半面、開発者にとっての課題も生まれています。その課題のひとつが__依存パッケージ管理__です。まずはRubyの外部パッケージ管理について簡単に振り返りつつ、Goのそれを見ていこうと思います。

依存パッケージ管理(Ruby)

Rubyでは外部パッケージはGemファイルとなっており、大抵の場合、Bundlerで管理します。また、最新版が動くとは限らないため設定ファイルにバージョンを指定してそれを使用します。Gemファイル自体はRubyGems.orgに置かれており、ここからダウンロードされます。

依存パッケージ管理(Go)

Goではソースコード中のimport句でパッケージを指定します。設定ファイルは使いません。以下に例を示します。

@morika-t
morika-t / cloud-foundry-advent-calendar-20131220.textile
Last active December 31, 2015 19:29
Cloud Foundry Advent Calendar 2013 12月20日(金) cf-acceptance-testsを使ってみる

cf-acceptance-testsを使ってみる

CATとは

  • google groupsの投稿によると「New integration tests for CF」用のツール
  • BOSHのテストのBATのようにCATと略すらしい
  • go実装のcfコマンドgcfとcurlを使う
  • goのBDD風なテストのフレームワークの「Ginkgo」利用している

参考URL: https://groups.google.com/a/cloudfoundry.org/forum/#!topic/vcap-dev/2daJJklWTOY

#!/usr/bin/env ruby
require 'nokogiri'
require 'open-uri'
require 'prawn'
url = "http://www.slideshare.net/nippondanji/db-engineerstudyanim"
charset = nil
html = open(url) do |f|
package main
import (
"bufio"
"code.google.com/p/go.net/websocket"
"github.com/kr/pty"
"io"
"flag"
"fmt"
"log"
# DOCKER-VERSION 0.4.8
# am facing issue
# https://github.com/dotcloud/docker/issues/1123
FROM ubuntu:12.04
MAINTAINER Deepak Kannan "deepak@codemancers.com"
RUN apt-get -y install python-software-properties

GitHub Flow

31 Aug 2011

git-flowの問題点 (Issues with git-flow)

私は人々にGitを教えるためにあちこちを飛び回っているが、最近のほぼすべてのクラスやワークショップで git-flow についてどう思うかを尋ねられた。私はいつも、git-flowは素晴らしいと思うと答えている。何百万ものワークフローを持ったシステム(Git)を提供し、ドキュメントもあるし、よくテストされている。フレキシブルなワークフローは、実に容易なやり方で多くの開発者の役に立つ。標準的なものになりつつあり、開発者はプロジェクトや企業の間を移動しつつこの標準的なワークフローに馴染むことができる。

Docker 虎の巻

何故Dockerを使うべきか

Why Should I Care (For Developers)

"Dockerが面白いのはシンプルな環境に隔離性と再現性をもたらしてくれることだ.ランタイムの環境を一度作れば、パッケージにして別のマシンでも再利用することできる.さらに,すべてはホスト内の隔離された環境で行われる(VMのように).最も素晴らしい点は,シンプルかつ高速であることだ."

# MySQL. Versions 4.1 and 5.0 are recommended.
#
# Install the MySQL driver:
# gem install mysql2
#
# And be sure to use new-style password hashing:
# http://dev.mysql.com/doc/refman/5.0/en/old-client.html
development:
adapter: mysql2
encoding: utf8
# SQLite version 3.x
# gem install sqlite3-ruby (not necessary on OS X Leopard)
development:
adapter: sqlite3
database: db/development.sqlite3
pool: 5
timeout: 5000
# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".