「WEB+DB PRESS」を含む日記 RSS

はてなキーワード: WEB+DB PRESSとは

2021-05-12

IPv1、IPv2、IPv3規格は存在する!!!

ってWeb+DB PRESS vol.122 p.14に書いてあるんだけどデタラメだよな?

2017-09-01

田舎の)フリーランスプログラマに送る、ヤバい地雷クライアント

ヤバいといっても、見た目の特徴のことじゃない。

普通の見た目なのに、「なんでこんな人が社会で生きていけるの?」という人は確実にいる。

そんな人がクライアントになることはある。絶対に避けられないし、事前には見抜けない。

そして、人は慣れる。

慣れたときに「あなたを大切にしない人のことを、大切にする必要はない」といわれても、判断するのは難しい。

そこでチェックリストを用意した。

以下のチェックリストに3つ以上当てはまったら、次の仕事は断った方がいいだろう。


いくつかわかりにくい箇所があるので説明しよう。

"相場を知らない"、"値切られた"あたりは論外なので説明しない。

仕事を頼まれる前に値切られたことがあり、値切り前の相場が半値だった、という地獄のケースもある。

あなた地方在住の普通フリーランスプログラマなら、4500円/時×あなた地元最低賃金 / 東京都最低賃金相場だ。)

"昔プログラマ/Webデザイナーなどだった"は異論があると思う。私がいいたいことは、半可通はヤバいということだ。

とにかく意味のないところにこだわって、その割に品質が低いので「これ私が作りました」と言いづらい。

それに、勝手に社内で仕様を決められていたこともあった。

"契約書がない"、"仕事の進め方が決まっていない"あたりも論外だ。

ただし、社内にIT担当者がいないのでIT仕事の進め方がわからない、といった場合は別だ。

(なお契約書がない場合契約書を作っても契約内容を守らない輩が多い。)

"締め切りがない"というのは、請負なのに事前に見積もりできない案件だ。

「何を作るのか決まっていないが、金額は固定で最終的な納期ASAPで」という案件は実際にある。

こんな仕事を知人だからというだけで請けてしまったら、次からは断ろう。

"仕様がよく変わる"は悪いこととは限らない。そのたびにお金がもらえるのなら。

もし「仕様が変わったので直してほしい」と言われたら、「いくら出す?」と聞こう。そして、メールや音声は証拠としてとっておこう。

——これは最悪なケースだが——過去クライアントの社内メールシステムでやりとりしていたら、プロジェクト終了時にアカウントごと消された例があるのでNDAに気をつけつつ証拠はとってほしい。

"顧客第一主義"というのは、顧客に振り回されてあなたの都合を大切にしない主義のことだ。

顧客と折衝できない担当者は、あなたとも折衝できない。

ましてフリーランスなのだからスケジュールを押さえずに「ちょっと待って」を繰り返されたら、他の仕事もとりづらくなる。

"誤字脱字が多い"も、相手あなたを大切にしていないポイントだ。

他にも"収入印紙を2枚とも買いに行かせる"、"レベニューシェアを持ちかけられる"、"常に電話で返信される"、

"返信に3日以上かかる"、"仕様追加をバグ修正といって無料で済まそうとする"などがある。

説明は以上だ。

ところでこれは、WEB+DB PRESS Vol.100の"あのとき自分へ"へのリスペクトだ。

文中の「あなた」は5年前の私のことだ。

タイトルに(田舎で)と入れたのは、関東田舎起業した自分最初出会ったのがこのタイプの人だから

業界は狭いし信用は大切だから、請けた仕事は完遂する。

でも続けるかどうかは、あなたが選べる。相性が悪ければ、穏やかに断ろう。

この文章関東田舎にいた5年前の自分と、中部地方田舎にいる知人のフリーランスプログラマーに送る。

お前は他人を大切にしすぎるから自分という他人も大切にしてくれ。

(あと遠慮してないで、仕事くださいって言え。)

おっさん自分を大切にしたので8月は全休してイカのゲームやってました 🦑)

2015-12-03

レジンキャストミルク (電撃文庫) 藤原

スペインユダヤ人 (世界史リブレット) 関 哲行

キリスト教歴史 (講談社学術文庫) 小田垣 雅也

帰ってきたヒトラーティムール ヴェルメシュ

社会福祉思想歴史魔女裁判から福祉国家の選択まで (MINERVA福祉ライブラリー) 朴 光駿

☆ザ・フェデラリスト (岩波文庫) A.ハミルトン

インフォメーション―情報技術人類史 ジェイムズ グリック

アメリカ文学史のキーワード (講談社現代新書) 巽 孝之

異端審問 (講談社現代新書) 渡辺 昌美

シルバー事件 アスキー

絶対に解けない受験世界史 (大学入試問題問題シリーズ) 稲田義智

筋と義理を通せば人生はうまくいく 高須 克弥

99歳ユダヤスーパー実業家が孫に伝えた 無一文から大きなお金成功を手に入れる習慣 矢吹 紘子

女子マネージャーの誕生とメディアスポーツ文化におけるジェンダー形成 高井 昌吏

世界一即戦力な男――引きこもり非モテ青年音速で優良企業から内定をゲットした話 菊池

愛についての感じ 海猫沢 めろん

借金底なし沼で知ったお金の味 25歳フリーター借金1億2千万円、利息24%から生還記 金森 重樹

猫背を伸ばして 新装版 (フレックスコミックス) 押切蓮介

こんな上司が部下を追いつめる―産業医ファイルから (文春文庫) 荒井 千暁

棟梁―技を伝え、人を育てる (文春文庫) 小川 三夫

石井直方筋肉まるわかり大事石井 直方

フルーツ果汁100% 第1巻 (白泉社文庫 お 3-1) 岡野 史佳

☆「個性」を煽られる子どもたち―親密圏の変容を考える (岩波ブックレット) 土井 隆義

読書の方法―なにを、どう読むか 吉本 隆明

予備校なんてぶっ潰そうぜ。 花房 孟胤

海洋堂創世記 樫原 辰郎

世界堂書店 (文春文庫) 米澤 穂信

コーディングを支える技術 ~成り立ちから学ぶプログラミング作法 (WEB+DB PRESS plus) 西尾 泰和

☆九月、東京路上1923年関東大震災ジェノサイド残響 加藤 直樹

大東亜戦争の実相 (PHP文庫) 瀬島 龍三

そこに僕らは居合わせた―― 語り伝える、ナチス・ドイツ下の記憶 グードルン・パウゼヴァン

クリスマス少女は還る (創元推理文庫) キャロル オコンネル

江戸のハローワーク (双葉新書) 山本 眞吾

Three Essays on the State of Economic Science Tjalling C. Koopmans

The Elements of Style, Fourth Edition William Strunk Jr.

ザ・フォール/落下の王国 特別版 [DVD] リー・ペイス

アメリカめっちゃスゴい女性たち 町山 智浩

☆船に乗れ!〈1〉合奏と協奏 藤谷 治

ちょー美女と野獣 (コバルト文庫) 野梨原 花南

11/22/63 上 スティーヴン キング

システム×デザイン思考世界を変える 慶應SDM「イノベーションのつくり方」 前野隆司

追われ者―こうしてボクは上場企業社長の座を追い落とされた 松島

劣化国家 ニーアル ファーガソン

ブラック企業経営者本音 (扶桑社新書) 秋山 謙一郎

創価学会研究 (講談社現代新書) 玉野 和志

グロースハック 予算ゼロビジネスを急成長させるエンジン 梅木 雄平

女のカラダ、悩みの9割は眉唾 (講談社+α新書) 宋 美玄

To Repair the World: Paul Farmer Speaks to the Next Generation (California Series in Public Anthropology) Bill Clinton

社会心理学講義:〈閉ざされた社会〉と〈開かれた社会〉 (筑摩選書) 小坂井 敏晶

Making the Modern World: Materials and Dematerialization Vaclav Smil

高校教育アイデンティティー総合制と学校づくりの課題 (「教育」別冊 (9)) 小島 昌夫

☆名作はこのように始まる〈1〉 (ミネルヴァ評論叢書・文学の在り処) 千葉 一幹

グラミンフォンという奇跡 「つながり」から始まるグローバル経済の大転換 [DIPシリーズ] ニコラス サリバン

単純な脳、複雑な「私」 (ブルーバックス) 池谷 裕二

天涯武士幕臣小栗上野介 (1之巻) (SPコミックス時代劇画) 木村 直巳

秋葉原事件 加藤智大の軌跡 (朝日文庫) 中島岳志

ぐいぐいジョーはもういない (講談社BOX) 樺 薫

LEAN IN(リーン・イン) 女性仕事リーダーへの意欲 シェリル・サンドバーグ

鬼畜のススメ―世の中を下品のどん底に叩き堕とせ!! 村崎 百郎

男性学の新展開 (青弓社ライブラリー) 田中 俊之

闘争領域の拡大 ミシェル ウエルベック

実録 ドイツ決闘した日本人 (集英社新書) 菅野 瑞治

男性ECCE HOMO (文春新書 934) ヤマザキ マリ





正統と異端 - ヨーロッパ精神の底流 (中公文庫) 堀米 庸三

魔女狩り (「知の再発見」) ジャン・ミシェル サルマン

図説 魔女狩り (ふくろうの本/世界歴史) 黒川 正剛

魔女狩り (岩波新書) 森島 恒雄

異端審問 (文庫クセジュ) ギー・テスタス

剣豪将軍義輝〈上〉鳳雛太刀 (徳間文庫) 宮本 昌孝

2015-08-25

IT関係ないサラリーマンコミュニティサイト作っちゃいました。

私ごとですが、この度コミュニティサイト作成いたしました。

私の持てる知識を絞り出してなんとか完成しました。

**************************************************************************************

完成したサイトがこちらです。

LapyNetニュース

http://lapynetz.net/

**************************************************************************************

私は普段webとは関係ない仕事してます。なんとか休日を利用して、

webサービス作成しました。

メインのコードはこんな感じ

----------------------------------------------------------------------------------------------------------------------



App::uses('Sanitize', 'Utility');
class RssfeedsController extends AppController {

public $helpers = array('Html','Form','Session','Number','Cache');

public $uses = array(
'Rssfeed',
'Tweet',
'Wadai',
'Rank',
'Oracle'
);
 **************************************************************************************
public function index() {

$title_for_layout = "LapyNetニュース";
$content = "Hello World!!";

$this->set(compact('title_for_layout','content'));
if(date("G")>0 and date("G") < 7){
$today = date("Y-m-d", strtotime('-1 day'));
}else{
$today = date("Y-m-d");
}

$params = array(
'conditions' = > array(
'and' = > array(
'Rssfeed.time' = > $today,
)),
'order' = > 'tweets desc',
'limit' = > '50'
);
$this- >set('posts',$this- >Rssfeed- >find('all',$params));

$paramz = array(
'order' = > 'Rssfeed.id desc',
'limit' = > '10'
);
$this->set('posts2',$this->Rssfeed->find('all',$paramz));

$paramz = $this- >Rssfeed- >query('SELECT id,title FROM rssfeeds order by id desc limit 10');

$this->set('posts2', $paramz);

$parapara = $this- >Oracle- >query('SELECT id,title FROM oracles order by id desc limit 10');

$this- >set('postx', $parapara);

$funking = $this- >Rank- >query('SELECT id,frank FROM ranks where creation=(select max(creation) from ranks)');

$this- >set('funking', $funking);


}

 **************************************************************************************
public function mizuno() {
$parapara = array(
'order' => 'Oracle.id desc',
'limit' => '30'
);
$recent_posts = $this->Oracle->find('all',$parapara);
return $recent_posts;

}


 **************************************************************************************
public function wadai() {
if(date("G")>0 and date("G") < 7){
$today = date("Y-m-d", strtotime('-1 day'));
}else{
$today = date("Y-m-d");
}

$params = array(
'conditions' => array(
'and' => array(
'Rssfeed.time' => $today,
'Rssfeed.kubetu' => 4
)),
'order' => 'tweets desc',
'limit' => '100'
);
$this->set('posts',$this->Rssfeed->find('all',$params));





$this->set("title_for_layout","2CHニュース-LapyNetニュース");


$paramz = array(
'order' => 'Rssfeed.id desc',
'limit' => '10'
);
$this->set('postyy',$this->Rssfeed->find('all',$paramz));

$parapara = array(
'order' => 'Oracle.id desc',
'limit' => '10'
);


$this->set('postyx',$this->Oracle->find('all',$parapara));

$funking = $this->Rank->query('SELECT * FROM ranks where creation=(select max(creation) from ranks)');

$this->set('funking', $funking);



}
 **************************************************************************************
public function hot() {
if(date("G")>0 and date("G") < 7){
$today = date("Y-m-d", strtotime('-1 day'));
}else{
$today = date("Y-m-d");
}

$params = array(
'conditions' => array(
'and' => array(
'Rssfeed.time' => $today,
'Rssfeed.kubetu' => 3
)),
'order' => 'tweets desc',
'limit' => '20'
);
$title_for_layout = "LapyNetニュース";
$this->set("title_for_layout","ニュース-LapyNetニュース");
$this->set('posts',$this->Rssfeed->find('all',$params));

$parapara = array(
'order' => 'Oracle.id desc',
'limit' => '10'
);
$this->set('postxx',$this->Oracle->find('all',$parapara));

$paramz = array(
'order' => 'Rssfeed.id desc',
'limit' => '10'
);
$this->set('postsxxx',$this->Rssfeed->find('all',$paramz));

$funking = $this->Rank->query('SELECT * FROM ranks where creation=(select max(creation) from ranks)');

$this->set('funking', $funking);


}

 **************************************************************************************
public function newnew() {
if(date("G")>0 and date("G") < 7){
$today = date("Y-m-d", strtotime('-1 day'));
}else{
$today = date("Y-m-d");
}

$params = array(
'conditions' => array(
'and' => array(
'Rssfeed.time' => $today,
'Rssfeed.kubetu' => 2
)),
'order' => 'tweets desc',
'limit' => '20'
);
$this->set("title_for_layout","エンタメニュース-LapyNetニュース");
$this->set('posts',$this->Rssfeed->find('all',$params));

$paramz = array(
'order' => 'Rssfeed.id desc',
'limit' => '10'
);
$this->set('postszz',$this->Rssfeed->find('all',$paramz));

$paramz = $this->Oracle->query('SELECT id,title FROM rssfeeds order by id desc limit 10');

$this->set('postszz', $paramz);

$parapara = $this->Oracle->query('SELECT id,title FROM oracles order by id desc limit 10');

$this->set('postzy', $parapara);


$funking = $this->Rank->query('SELECT * FROM ranks where creation=(select max(creation) from ranks)');

$this->set('funking', $funking);



}
 **************************************************************************************
public function top() {
if(date("G")>0 and date("G") < 7){
$today = date("Y-m-d", strtotime('-1 day'));
}else{
$today = date("Y-m-d");
}
$params = array(
'conditions' => array(
'and' => array(
'Rssfeed.time' => $today,
'Rssfeed.kubetu' => 1
)),
'order' => 'tweets desc',
'limit' => '20'
);
$this->set('posts',$this->Rssfeed->find('all',$params));

$param = array(
'conditions' => array('times > current_timestamp + interval -600 minute and Kubetu = 4'),
'order' => 'tweets desc',
'limit' => '30'
);
$this->set('posts2',$this->Rssfeed->find('all',$param));
}


 **************************************************************************************
public function view($id = null ) {
$this->Rssfeed->id = $id; //驥崎ヲ√↑荳譁・i縺励>
$user = AuthComponent::user();

$TwimStatus = ClassRegistry::init('Twim.TwimStatus');


$TwimStatus->getDataSource()->setToken(AuthComponent::user());

$statuses = $TwimStatus->tweet();
$rairai = $this->Rssfeed->read(title,$id);
$alcol = $this->Rssfeed->read();
$this->set('post', $alcol);

$this->set('post2', $user);
$this->set('post3', $statuses);
$this->set("title_for_layout",$rairai[Rssfeed][title]."-LapyNetニュース");

$paramz = array(
'order' => 'Rssfeed.id desc',
'limit' => '20'
);
$this->set('postszz',$this->Rssfeed->find('all',$paramz));

$parapara = array(
'order' => 'Oracle.id desc',
'limit' => '30'
);
$this->set('postzy',$this->Oracle->find('all',$parapara));

}
 **************************************************************************************
public function add() {

if($this->request->isPost()){
if($this->Tweet->save($this->data)) {
$this->Session->setFlash('seikou');
$this->redirect(array('controller'=>'rssfeeds','action'=>'view',$contents11));

}else{
$this->Session->setFlash('sipai');
$this->redirect(array('controller'=>'rssfeeds','action'=>'view',$contents11));
}
}
}
 **************************************************************************************
public function delete($id = null) {
$this->Rssfeed->id = $id; 
$this->set('set', $this->Rssfeed->read());
$this->redirect(array('controller'=>'tweets','action'=>'delete',$this->data['tweet']['rssfeed_id']));


}
 **************************************************************************************
public function oracle() {
if($this->request->is('post')) {

$user = AuthComponent::user();

$TwimStatus = ClassRegistry::init('Twim.TwimStatus');


$TwimStatus->getDataSource()->setToken(AuthComponent::user());

$contents1 = $this->request->data['Rssfeed']['contents'];
$contents2 = $this->request->data;
$statuses = $TwimStatus->tweet($contents1);


if($this->Rssfeed->save($contents2)) {
$this->Session->setFlash('成功です。');
$this->redirect(array('controller'=>'rssfeeds','action'=>'view',$contents11));
$this->redirect($this->referer());
}else{
$this->redirect(array('controller'=>'rssfeeds','action'=>'view',$contents11));
$this->Session->setFlash('失敗です。');
}
}


}
 **************************************************************************************
public function makelist() {
$rssfeeds = $this->paginate();
if ($this->request->is('requested')) {
return $rssfeeds;
} else {
$this->set('rssfeeds', $rssfeeds);
}
}

}

----------------------------------------------------------------------------------------------------------------------

rssフィードはこんな感じです。
----------------------------------------------------------------------------------------------------------------------

#!/usr/bin/php
<?php

header('Content-type: text/html; charset=UTF-8');


require_once ('/var/www/html/s/magpierss/rss_fetch.inc');


define('MAGPIE_CACHE_AGE', 60*5);

define('MAGPIE_CACHE_DIR', '/var/www/html/s/cache/');

define('MAGPIE_OUTPUT_ENCODING','UTF-8');


$urls = array(
'*********************************');

$items = getRssList($urls);

echo '<ul>';
foreach ($items as $item) {

$href = mb_convert_encoding($item['link'], "UTF-8", "auto");

$title = mb_convert_encoding($item['title'], "UTF-8", "auto");
$description = mb_convert_encoding($item['description'], "UTF-8", "auto");
$megami = mb_convert_encoding($description, "UTF-8", "auto");

 

 **************************************************************************************


$all = 'http://urls.api.twitter.com/1/urls/count.json?url='.$href;
$Rits = file_get_contents($all);
$Olfe = mb_convert_encoding($Rits, 'UTF-8', 'auto');
$data = json_decode($Olfe);
$tweets = $data->count;

 **************************************************************************************

$checkman = db_check_urls($href);
$checkman2 = db_check_pr($title);

$nowtimes = date('Ymd');

 


if($checkman == 0 && $checkman2 == 0){
#$hrefs = urlencode($href);
db_put_urls($nowtimes,$href,$title,$description,$tweets);
echo "<li><a href=$href>$title</a><br>$megami<p>$tweets</p><p>$checkman</p></li>";
}else{

}


}
echo '</ul>';

 

 

 **************************************************************************************
function getRssList($urls)
{
$rssitems = array();
foreach ($urls as $url) {
$obj = fetch_rss($url);
$rssitems = array_merge($rssitems, $obj->items);
}
return $rssitems;
}

 **************************************************************************************
function db_check_pr($japanese){

$moji = mb_substr($japanese,0,2);
if($moji == 'PR'){
return 1;
}else{
return 0;
}
}
 **************************************************************************************

function db_check_urls($href){

require '/var/www/html/s/database_conf.php';

try {

$db = new PDO($dsn, $dbUser, $dbPass);
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);


$sql = 'SELECT count(*) AS count FROM rssfeeds WHERE urls = :language';
$prepare = $db->prepare($sql);


$languages = array($href);
foreach ($languages as $language) {

$prepare->bindValue(':language', $language, PDO::PARAM_STR);
$prepare->execute();

$result = $prepare->fetchColumn();
if ($result > 0) {
return true;
}else{
return false;
}
}

} catch (PDOException $e) {
echo 'エラーが発生しました。内容: ' . h($e->getMessage());
}

function h($var) 
{
return htmlspecialchars($var, ENT_QUOTES, 'UTF-8');
}
}

 **************************************************************************************
function db_put_urls($nowtimes,$href,$title,$description,$tweets){
require '/var/www/html/s/database_conf.php';
try {

$db = new PDO($dsn, $dbUser, $dbPass);
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sikibetu = 5;
$moto = "アニゲー速報VIP";

$sql = 'insert into rssfeeds (id, time,urls,title,contents,tweets,times,kubetu,teikyo) values (?, ?, ?, ?, ?, ?, ?, ?, ?)';

$prepare = $db->prepare($sql);

$prepare->bindValue(1, 0, PDO::PARAM_STR);
$prepare->bindValue(2, $nowtimes, PDO::PARAM_STR);
$prepare->bindValue(3, $href, PDO::PARAM_STR);
$prepare->bindValue(4, $title, PDO::PARAM_STR);
$prepare->bindValue(5, $description, PDO::PARAM_STR);
$prepare->bindValue(6, $tweets, PDO::PARAM_STR);
$prepare->bindValue(7, 'cast( now() as datetime)', PDO::PARAM_STR);
$prepare->bindValue(8, $sikibetu, PDO::PARAM_STR);
$prepare->bindValue(9, $moto, PDO::PARAM_STR);
$prepare->execute();

} catch (PDOException $e) {
echo 'エラーが発生しました。内容: ' . h($e->getMessage());
}
}
?>

---------------------------------------------------------------------------------------------------------------------

**************************************************************************************

参考にした書籍

CakePHP2 実践入門 (WEB+DB PRESS plus)

CakePHP2 実践入門 (WEB+DB PRESS plus)

作者: 安藤祐介,岸田健一郎,新原雅司,市川快,渡辺一宏,鈴木則夫

出版社/メーカー: 技術評論社

発売日: 2012/09/29

メディア: 単行本ソフトカバー

購入: 5人 クリック: 165回

この商品を含むブログ (9件) を見る

Webアプリ開発を加速する CakePHP2定番レシピ119

Webアプリ開発を加速する CakePHP2定番レシピ119

作者: 長谷川智希,デジタルサーカス

出版社/メーカー: 秀和システム

発売日: 2013/09/28

メディア: 単行本

この商品を含むブログ (1件) を見る

**************************************************************************************

一番難しいところはtwitterログインwebサイト連結でした。

cakephp直感できに操作できていいです。

素人のわたしでも操作できましたので。

cakephpを使用しています

webからニュース収集してきます

ツイート数でランキングしてますネット話題を見つけられます

twitterアカウントログインできます

ニュースに対するコメントもできるし、

自分記事投稿できます。(画像も可)

デザインはよくわからないので、

ホームページビルダーを使用しています

今のホームページビルダーは昔と違って高機能ですね。

テンプレートも何種類もあって今はすごいです。

アマゾンawsを使用してます

サーバーWebサーバーデータベースサーバmysql)

に分かれています

今更cakephpを使っている人は少ないかもしれませんが、

データベースとの接続などは楽でした。

twitterアカウントあるといつでも参加できますので、

ニュースを通してコミュニケーション目的としたサイトを目指します。

2014-03-11

[][][][][][]

Ansible

Ansible

Playbooks — Ansible Documentation

railsbox - Fast and easy Ruby on Rails virtual boxes

Ansible入門 (全15回) - プログラミングならドットインストール

Amazon.co.jp: 入門Ansible eBook: 若山史郎: Kindleストア

Amazon.co.jp: Ansible Configuration Management 電子書籍: Daniel Hall: Kindleストア

Red HatがITオートメーションのAnsibleを$150Mで買収へ…OpenStackデプロイをDevOpsのために簡易化

Git Clone (スタートアップスクリプトID:112600117316)

指定Gitリポジトリをcloneし、指定の実行ファイル自動的に実行します。

拡張子が .yml のものは Ansible Playbook として解釈されます

パブリックスクリプト | さくらのクラウドニュース



terraform

https://github.com/philc/terraform

fog

fog - The Ruby cloud services library

https://github.com/fog/fog

virtualbox

Oracle VM VirtualBox

packer


vagrant

Vagrant

A list of base boxes for Vagrant - Vagrantbox.es

Discover Vagrant Boxes | Atlas by HashiCorp

itamae

https://github.com/ryotarai/itamae

Itamae - Infra as Code 現状確認会 // Speaker Deck

chef

All about Chef — Chef Docs

Amazon.co.jp: Chef実践入門 ~コードによるインフラ構築の自動化 (WEB+DB PRESS plus): 吉羽 龍太郎, 安藤 祐介, 伊藤 直也, 菅井 祐太朗, 並河 祐貴: 本


berkshelf

Berkshelf

berkshelf/berkshelf · GitHub

docker

Docker - Build, Ship, and Run Any App, Anywhere

Dockerにまつわる誤解 infoQ

Dockerにまつわる誤解

[翻訳] Dockerについてよくある勘違い | TechRacho

Salt



sunzi

kenn/sunzi · GitHub

puppet

Puppet Labs: IT Automation Software for System Administrators

fabric

http://www.fabfile.org/

http://www.slideshare.net/chikaram/fabric-rails-42153324

 
ログイン ユーザー登録
ようこそ ゲスト さん