<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>技術ブログ &#124; 株式会社クラウディア &#187; インフラ</title>
	<atom:link href="https://cloudear.jp/blog/?cat=23&#038;feed=rss2" rel="self" type="application/rss+xml" />
	<link>https://cloudear.jp/blog</link>
	<description>クラウド専門の業務システム・社内ツール開発</description>
	<lastBuildDate>Fri, 12 Nov 2021 05:00:35 +0000</lastBuildDate>
	<language>ja</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=4.0.1</generator>
	<item>
		<title>AWS超速アプリケーション起動 (ElasticBeansTalk編)</title>
		<link>https://cloudear.jp/blog/?p=1837</link>
		<comments>https://cloudear.jp/blog/?p=1837#comments</comments>
		<pubDate>Sun, 01 Nov 2015 01:06:16 +0000</pubDate>
		<dc:creator><![CDATA[hayato]]></dc:creator>
				<category><![CDATA[AWS]]></category>
		<category><![CDATA[インフラ]]></category>
		<category><![CDATA[サーバー]]></category>

		<guid isPermaLink="false">https://cloudear.jp/blog/?p=1837</guid>
		<description><![CDATA[みなさんこんにちは。 今日はElasticBeansTalkを起動します。 下の説明に沿って流れるように超速で起動しましょう。 &#160; マネジメントコンソールよりElasticBeansTalkを選択  Elast [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>みなさんこんにちは。</p>
<p>今日はElasticBeansTalkを起動します。</p>
<p>下の説明に沿って流れるように超速で起動しましょう。</p>
<p><span id="more-1837"></span></p>
<p>&nbsp;</p>
<p><span style="font-size: 18.6667px;"><b>マネジメントコンソールよりElasticBeansTalkを選択</b></span></p>
<p><img class="alignnone size-full wp-image-1841" src="https://cloudear.jp/blog/wp-content/uploads/2015/10/1.png" alt="1" width="1258" height="573" /></p>
<p><span style="font-size: 18pt;"> <span style="font-size: 14pt;"><b>ElasticBeansTalk画面</b></span></span></p>
<p><a href="https://cloudear.jp/blog/wp-content/uploads/2015/10/2.png"><img class="alignnone size-full wp-image-1842" src="https://cloudear.jp/blog/wp-content/uploads/2015/10/2.png" alt="2" width="1244" height="504" /></a></p>
<p>プラットフォームを問われるので適当にphpを選択。</p>
<p>下の今すぐ起動をクリック。</p>
<p>&nbsp;</p>
<p><a href="https://cloudear.jp/blog/wp-content/uploads/2015/10/31.png"><img class="alignnone size-full wp-image-1845" src="https://cloudear.jp/blog/wp-content/uploads/2015/10/31.png" alt="3" width="1244" height="552" /></a></p>
<p>&#8220;今すぐ作成しましょう&#8221;をクリック 。</p>
<p><a href="https://cloudear.jp/blog/wp-content/uploads/2015/10/4.png"><img class="alignnone size-full wp-image-1846" src="https://cloudear.jp/blog/wp-content/uploads/2015/10/4.png" alt="4" width="1243" height="515" /></a></p>
<p>&#8220;ウェブサーバーの作成&#8221;をクリック。</p>
<p><a href="https://cloudear.jp/blog/wp-content/uploads/2015/10/5.png"><img class="alignnone size-full wp-image-1847" src="https://cloudear.jp/blog/wp-content/uploads/2015/10/5.png" alt="5" width="1245" height="452" /></a></p>
<p>プラットフォームをphpと選択。※お好みで</p>
<p>環境タイプは単一インスタンス及び負荷分散、AutoScalingを選択。</p>
<p>次へをクリック。</p>
<p>&nbsp;</p>
<p>※負荷分散、AutoScalingとはElasticBeansTalkでアプリケーションを生成するとEC2インスタンスが立ち上がります。</p>
<p>そのインスタンスに負荷がかかると別のインスタンスを自動的に立ち上げてそちらへ流してくれます。</p>
<p>平たく言えばサーバーダウンしそうになるとサーバーの数を増やして負荷を分散してくれます。</p>
<p>ElasticBeansTalkではそのAutoScalingの設定をある程度勝手にやってくれちゃう強者です。</p>
<p>&nbsp;</p>
<p><a href="https://cloudear.jp/blog/wp-content/uploads/2015/10/6.png"><img class="alignnone size-full wp-image-1848" src="https://cloudear.jp/blog/wp-content/uploads/2015/10/6.png" alt="6" width="1242" height="599" /></a></p>
<p>デフォルト値のまま次へをクリック。</p>
<p>※ここで既存のアプリケーション等を挙げたい場合はzipにして独自のアップロードからアップロードしましょう。</p>
<p><a href="https://cloudear.jp/blog/wp-content/uploads/2015/10/7.png"><img class="alignnone size-full wp-image-1849" src="https://cloudear.jp/blog/wp-content/uploads/2015/10/7.png" alt="7" width="1250" height="386" /></a></p>
<p>環境名に適当な名前をつけます。</p>
<p>この名前は立ち上げるアプリケーション（サーバー）名と思えばいいです。</p>
<p>また環境URLは立ち上げるアプリケーションのURLとなります。</p>
<p>使用可能かチェックして使用できれば次へをクリック。</p>
<p>※説明はアプリケーションに対してのコメントで、なくても大丈夫です。</p>
<p><a href="https://cloudear.jp/blog/wp-content/uploads/2015/10/8.png"><img class="alignnone size-full wp-image-1850" src="https://cloudear.jp/blog/wp-content/uploads/2015/10/8.png" alt="8" width="1246" height="418" /></a></p>
<p>2つのチェックボックスは無視して次へをクリック。</p>
<p>※RDSはAWSが提供するデータベースサービスであれこれ面倒な設定をせずにすぐさまmysqlやらpostgreSQLが使えます。</p>
<p>※VPCについては<a href="https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/AWSHowTo-vpc.html?console_help=true">https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/AWSHowTo-vpc.html?console_help=true</a></p>
<p><a href="https://cloudear.jp/blog/wp-content/uploads/2015/10/9.png"><img class="alignnone size-full wp-image-1851" src="https://cloudear.jp/blog/wp-content/uploads/2015/10/9.png" alt="9" width="1241" height="493" /></a></p>
<p>ここまで決めてきたことへの詳細が決められますがデフォルトのまま画面右下の次へをクリック。</p>
<p>※インスタンスタイプはt1.microとしましょう。</p>
<p>サーバーのスペックみたいなもので後から変更可能なのと無料枠の対象です。</p>
<p>EC2のキーペアはssh等で必要になる鍵のこと。既存にあればそれを選択しても可。</p>
<p><a href="https://cloudear.jp/blog/wp-content/uploads/2015/10/10.png"><img class="alignnone size-full wp-image-1852" src="https://cloudear.jp/blog/wp-content/uploads/2015/10/10.png" alt="10" width="1254" height="502" /></a></p>
<p>後少しです。次へをクリック。</p>
<p>環境タグは無視しても大丈夫です。</p>
<p>※環境タグについて<a href="http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/Using_Tags.html">http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/Using_Tags.html</a></p>
<p><a href="https://cloudear.jp/blog/wp-content/uploads/2015/10/11.png"><img class="alignnone size-full wp-image-1853" src="https://cloudear.jp/blog/wp-content/uploads/2015/10/11.png" alt="11" width="1246" height="493" /></a></p>
<p>次へをクリック。</p>
<p>※ロールとインスタンスプロファイルについて<a href="https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/concepts-roles.html?console_help=true">https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/concepts-roles.html?console_help=true</a></p>
<p><a href="https://cloudear.jp/blog/wp-content/uploads/2015/10/12.png"><img class="alignnone size-full wp-image-1854" src="https://cloudear.jp/blog/wp-content/uploads/2015/10/12.png" alt="12" width="1245" height="502" /></a></p>
<p>これまでの設定に対する確認画面です。</p>
<p>いよいよ起動です。</p>
<p>画面右下の起動をクリック。</p>
<p><a href="https://cloudear.jp/blog/wp-content/uploads/2015/10/13.png"><img class="alignnone size-full wp-image-1855" src="https://cloudear.jp/blog/wp-content/uploads/2015/10/13.png" alt="13" width="1244" height="540" /></a></p>
<p>&nbsp;</p>
<p>起動中の画面。</p>
<p><a href="https://cloudear.jp/blog/wp-content/uploads/2015/10/14.png"><img class="alignnone size-full wp-image-1856" src="https://cloudear.jp/blog/wp-content/uploads/2015/10/14.png" alt="14" width="1245" height="519" /></a></p>
<p>ヘルスが緑なれば完了！</p>
<p>お疲れ様でした。これでelasticbeanstalkによってアプリケーションが立ち上がりました。</p>
<p>&nbsp;</p>
<p><span style="font-size: 14pt;">アプリケーションをデプロイする</span></p>
<p>せっかくなのでデプロイして画面で見てみよう！</p>
<p>ほんとにすぐに出来るのかと、、</p>
<p><a href="https://cloudear.jp/blog/wp-content/uploads/2015/10/15.png"><img class="alignnone size-full wp-image-1858" src="https://cloudear.jp/blog/wp-content/uploads/2015/10/15.png" alt="15" width="1243" height="526" /></a></p>
<p>アップロードとデプロイを選択。</p>
<p><a href="https://cloudear.jp/blog/wp-content/uploads/2015/10/16.png"><img class="alignnone size-full wp-image-1859" src="https://cloudear.jp/blog/wp-content/uploads/2015/10/16.png" alt="16" width="507" height="553" /></a></p>
<p>以下のソースコードをindex.phpで保存し、圧縮してindex.php.zipとする。</p>
<pre class="lang:default decode:true">&lt;html&gt;
&lt;head&gt;
&lt;title&gt;&lt;?php echo 'test'?&gt;&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;&lt;?php echo 'Hello!! ElasticBeanTalk'?&gt;&lt;/h1&gt;
&lt;p&gt;AWS？簡単よ！&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>ファイルを選択よりindex.php.zipをアップロード。</p>
<p>過去のバージョンに戻ることが出来たりするのでバージョンラベルにはバーションがわかるように命名しましょう。</p>
<p>そしてデプロイをクリック！</p>
<p><a href="https://cloudear.jp/blog/wp-content/uploads/2015/10/17.png"><img class="alignnone size-full wp-image-1860" src="https://cloudear.jp/blog/wp-content/uploads/2015/10/17.png" alt="17" width="1234" height="557" /></a></p>
<p>&nbsp;</p>
<p>デプロイ中。</p>
<p><a href="https://cloudear.jp/blog/wp-content/uploads/2015/10/18.png"><img class="alignnone size-full wp-image-1861" src="https://cloudear.jp/blog/wp-content/uploads/2015/10/18.png" alt="18" width="1230" height="539" /></a></p>
<p>&nbsp;</p>
<p>ヘルスが緑になったらデプロイ完了！</p>
<p>URLへアクセスしてみると、、、</p>
<p><a href="https://cloudear.jp/blog/wp-content/uploads/2015/10/19.png"><img class="alignnone size-full wp-image-1862" src="https://cloudear.jp/blog/wp-content/uploads/2015/10/19.png" alt="19" width="1253" height="562" /></a></p>
<p>見事！しっかりアプリケーションをデプロイできました！</p>
<p>いかがでしたでしょうか？</p>
<p>実際の開発では本番用、テスト用など即座に同じ環境をたちあげられるので大変便利です。</p>
]]></content:encoded>
			<wfw:commentRss>https://cloudear.jp/blog/?feed=rss2&#038;p=1837</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>今さら聞けないAWS環境構築（EC2編）</title>
		<link>https://cloudear.jp/blog/?p=1489</link>
		<comments>https://cloudear.jp/blog/?p=1489#comments</comments>
		<pubDate>Wed, 07 Oct 2015 01:34:01 +0000</pubDate>
		<dc:creator><![CDATA[hayato]]></dc:creator>
				<category><![CDATA[AWS]]></category>
		<category><![CDATA[インフラ]]></category>
		<category><![CDATA[サーバー]]></category>

		<guid isPermaLink="false">https://cloudear.jp/blog/?p=1489</guid>
		<description><![CDATA[みなさんこんにちは。今日はいまさら聞けないAWS環境構築というテーマで、もっとも基本のコンピュートノードであるEC2の作り方、初期設定の方法をご紹介したいと思います。今でこそデファクトスタンダードとなったAWSですが、ま [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>みなさんこんにちは。今日はいまさら聞けないAWS環境構築というテーマで、もっとも基本のコンピュートノードであるEC2の作り方、初期設定の方法をご紹介したいと思います。今でこそデファクトスタンダードとなったAWSですが、まだ触ったことがないという方の一助になれば幸いです。</p>
<p><span id="more-1489"></span></p>
<p>&nbsp;</p>
<p><span class="hcss1" style="font-size: 14pt;"><strong> まずはAWS用アカウントを作成する</strong></span></p>
<p><a href="http://aws.amazon.com/jp/register-flow/">amazon公式サイト</a>にて丁寧に説明しているので、そちらを参考に作成してください。<br />
<span style="color: #ff0000;">通販サイトのamazon.comアカウントとは別に必要です！</span></p>
<ol>
<li style="text-align: left;"><strong>認証で使う電話番号</strong></li>
<li style="text-align: left;"><strong>クレジットカード</strong></li>
</ol>
<p>が、必要になりますので準備しておいてください。</p>
<p>&nbsp;</p>
<p><strong class="hcss1" style="font-size: 14pt;"> EC2インスタンス作成してみる</strong></p>
<p>もっとも基本的な仮想サーバーを立てます。</p>
<p><span style="color: #ff0000;">※リージョンを東京にするのを忘れずに！</span></p>
<p><a href="https://cloudear.jp/blog/wp-content/uploads/2015/09/81ee991f77c93ed88bf9ebfe56d6076e.png"><img class="alignnone size-full wp-image-1504" src="https://cloudear.jp/blog/wp-content/uploads/2015/09/81ee991f77c93ed88bf9ebfe56d6076e.png" alt="ec2クリック" width="928" height="510" /></a></p>
<p>サービスのEC2をクリック</p>
<p><a href="https://cloudear.jp/blog/wp-content/uploads/2015/09/3b7cf70f9ba5a0825cfdda5db7b85f64.png"><img class="alignnone size-full wp-image-1507" src="https://cloudear.jp/blog/wp-content/uploads/2015/09/3b7cf70f9ba5a0825cfdda5db7b85f64.png" alt="インスタンス作成" width="962" height="513" /></a></p>
<p>インスタンスの作成をクリック</p>
<p><a href="https://cloudear.jp/blog/wp-content/uploads/2015/09/59521020e2c698ffcc446ac6a53bfbe1.png"><img class="alignnone size-full wp-image-1510" src="https://cloudear.jp/blog/wp-content/uploads/2015/09/59521020e2c698ffcc446ac6a53bfbe1.png" alt="OS選択" width="1206" height="450" /></a></p>
<p>OSを選択。ここではamazon linuxを選択。</p>
<p><a href="https://cloudear.jp/blog/wp-content/uploads/2015/09/c6dd2c2ae09cca3bc6acff37bbc6475a.png"><img class="alignnone size-full wp-image-1513" src="https://cloudear.jp/blog/wp-content/uploads/2015/09/c6dd2c2ae09cca3bc6acff37bbc6475a.png" alt="インスタタイプ選択" width="1247" height="484" /></a></p>
<p>インスタンスのタイプを選択し確認、作成。ここでは無料枠のt2.microを選択</p>
<p><a href="https://cloudear.jp/blog/wp-content/uploads/2015/09/fca4d164f44c0eea93737dd57ae5a52d.png"><img class="alignnone size-full wp-image-1516" src="https://cloudear.jp/blog/wp-content/uploads/2015/09/fca4d164f44c0eea93737dd57ae5a52d.png" alt="キーペア作成" width="1248" height="504" /></a></p>
<p>確認画面で作成を押すとキーペアについて聞かれます。既に持っている場合は飛ばして構いません。持っていない場合はキーペアを作成しダウンロード。そしてインスタンス作成を押して下さい。するとインスタンスが立ち上がります。インスタンスの作成には数分かかります。</p>
<p>&nbsp;</p>
<p><span class="hcss1" style="font-size: 14pt;"><strong> 作ったEC2へSSH接続する</strong></span></p>
<p>作成したキーペア(*.pem)のパーミッションを変更</p>
<pre class="code">$ chmod 400 *.pem</pre>
<p>&nbsp;</p>
<p>sshで接続</p>
<pre class="lang:default decode:true ">$ ssh -i *.pem ec2-user@ec2-xx-xx-xxx-xx.ap-northeast-1.compute.amazonaws.com
(中略)

       __|  __|_  )
       _|  (     /   Amazon Linux AMI
      ___|\___|___|

(中略)
[ec2-user@ip-xxx-xx-xx-xxx ~]$</pre>
<p>これでEC2への接続完了です。</p>
<p>&nbsp;</p>
<p><strong class="hcss1">  <span style="font-size: 14pt;">EC2の最初にやるべき設定</span></strong></p>
<p>&nbsp;</p>
<p>1) インストールされているパッケージのバージョンアップ</p>
<pre class="lang:default decode:true">$ sudo yum update -y</pre>
<p>&nbsp;</p>
<p>2) タイムゾーンを変更<br />
<span style="font-size: 10pt; color: #ff0000;">初期状態ではUTCになっているのでJSTに変えましょう。これをやらないと、DB周りとかでハマります。</span></p>
<p>/etc/localtimeの設定変更をします。</p>
<pre class="lang:default decode:true">$ sudo ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime</pre>
<p>&nbsp;</p>
<p>以下、設定の確認</p>
<pre class="lang:default decode:true">$ date
2015年  9月  3日 木曜日 21:51:00 JST</pre>
<p>&nbsp;</p>
<p>JSTに変わってれば大丈夫です。しかし、このままだとyum updateするとタイムゾーン戻ってしまいます。<br />
なので、、、/etc/sysconfig/clockの設定変更</p>
<pre class="lang:default decode:true ">$ sudo vi /etc/sysconfig/clock</pre>
<p>&nbsp;</p>
<p>viで編集</p>
<pre class="lang:default decode:true">ZONE="Asia/Tokyo"
UTC=false</pre>
<p>&nbsp;</p>
<p>3) EC2 サーバー再起動</p>
<pre class="lang:default decode:true ">$ sudo reboot</pre>
<p>&nbsp;</p>
<p>4) ec2-userを削除<br />
セキュリティ的に ec2-userのままでいることは好ましくないので新しいユーザーを作成しec2-userは消します。<br />
新規ユーザーの作成</p>
<pre class="lang:default decode:true">$ sudo adduser newuser</pre>
<p>&nbsp;</p>
<p>newuserにsudoを使えるようにする。wheelグループに所属させるとsudo使えます。</p>
<pre class="lang:default decode:true ">$ sudo usermod -G wheel newuser</pre>
<p>&nbsp;</p>
<p>確認</p>
<pre class="lang:default decode:true">$ grep wheel /etc/group
wheel:x:10:ec2-user,newuser</pre>
<p>&nbsp;</p>
<p>/etc/sudoersの設定でもできます。</p>
<pre class="lang:default decode:true">$ sudo visudo</pre>
<p>newuser ALL=(ALL) NOPASSWD: ALLを追加しましょう。</p>
<p>&nbsp;</p>
<p>5) 次にec2-userの<code>authorized_keys</code>をnewuserの.sshディレクトリにコピーしてからパーミッションの設定を行う。</p>
<pre class="lang:default decode:true ">$ sudo rsync -a ~/.ssh/authorized_keys ~newuser/.ssh/
$ sudo chown -R newuser:newuser ~newuser/.ssh
$ sudo chmod -R go-rwx ~newuser/.ssh</pre>
<p>&nbsp;</p>
<p>確認</p>
<pre class="lang:default decode:true">$ sudo ls -al ~newuser/.ssh
合計 12
drwx------ 2 newuser newuser 4096  9月  3 22:18 .
drwx------ 3 newuser newuser 4096  9月  3 22:18 ..
-rw------- 1 newuser newuser  390  9月  3 19:04 authorized_keys</pre>
<p class="p1">newuserにsudo権限があるかを確認</p>
<pre class="lang:default decode:true ">$ sudo su - newuser
</pre>
<p>&nbsp;</p>
<p>6) ec2-userの削除</p>
<pre class="lang:default decode:true ">$ sudo userdel ec2-user</pre>
<p>ec2-userを残したいという場合は/etc/ssh/sshd_configの設定でec2-userのsshログインを禁止するなど でもいいと思います。</p>
<p>&nbsp;</p>
<p>今日はAWSを初めて使う方向けに、最初の一歩を踏み出す手順をまとめてみました。みなさんのAWSライフの一助にしていただければ幸いです。</p>
]]></content:encoded>
			<wfw:commentRss>https://cloudear.jp/blog/?feed=rss2&#038;p=1489</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>個人的によく使うVimテクニック5選</title>
		<link>https://cloudear.jp/blog/?p=1352</link>
		<comments>https://cloudear.jp/blog/?p=1352#comments</comments>
		<pubDate>Sun, 19 Jul 2015 13:22:07 +0000</pubDate>
		<dc:creator><![CDATA[masa]]></dc:creator>
				<category><![CDATA[インフラ]]></category>
		<category><![CDATA[エディタ]]></category>
		<category><![CDATA[プログラム]]></category>

		<guid isPermaLink="false">https://cloudear.jp/blog/?p=1352</guid>
		<description><![CDATA[みなさんこんにちは masa です。今回はエディタネタの中でも Vim テクニックを取り上げてみたいと思います。普段、コンパイラ系の言語を書く場合は IDE を使いますが、それ以外の言語やシェルスクリプトを書く場合は V [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>みなさんこんにちは masa です。今回はエディタネタの中でも Vim テクニックを取り上げてみたいと思います。普段、コンパイラ系の言語を書く場合は IDE を使いますが、それ以外の言語やシェルスクリプトを書く場合は Vim でちゃっちゃっとやることが多かったりします。</p>
<p><span id="more-1352"></span></p>
<p>今回はノーマルの Vim で使えるもので、個人的によく使うテクニックをご紹介。</p>
<p>&nbsp;</p>
<p><span class="hcss1" style="font-size: 14pt;"><strong>　ここからここまでコピー or 切り取りしたい</strong></span></p>
<p>なんといっても一番使う行コピーと行切り取りです。いえいえ <strong>5yy</strong> とか<strong> 10dd</strong> とかじゃないですよ！</p>
<p>5行など行数が少なければ目測で 5yy とかできますが、コピーしたい行数が 127行だったりしたら大変ですね。<br />
あまり Vim に慣れていない方は :set nu で行数を表示して、コピーしたい行を引き算してヤンクするというのを見掛けます。<br />
これは効率が悪いですし、計算違いで関係ない行までコピー or 切り取りしてしまう可能性もあります。</p>
<p>そんなときは以下を使いましょう。</p>
<pre class="theme:dark-terminal lang:default decode:true ">ここは1行目ですよ。    //この行でmsと打つ
ここは2行目ですよ。 
ここは3行目ですよ。
ここは4行目ですよ。
（中略）
ここは126行目ですよ。
ここは127行目ですよ。  //この行でy'sもしくはd'sと打つ</pre>
<p>上の例ではコピーをしたい始めの行でmsと打ち、コピー終わりの行でy&#8217;sと打つと、1~127行がヤンクされます。（d&#8217;sだとヤンクではなく切り取りになります）</p>
<p>これだと始点と終点でコマンドを打つだけなので間違いもないし簡単ですね。知らなかった方はレッツトライ！</p>
<p>&nbsp;</p>
<p><span class="hcss1" style="font-size: 14pt;"><strong>　大文字と小文字を切り替える or どちらかに統一する</strong></span></p>
<p>シェルスクリプトの変数や PHP の定数などは大文字で書くのが慣習ですが、そうなっていないものを直したりするときに使えます。</p>
<p>選択した文字を大文字⇔小文字にトグルさせる場合は~（チルダ）で、選択した文字をすべて小文字に統一したい場合はu（小文字）、大文字に統一したい場合はU（大文字）でできます。</p>
<pre class="theme:dark-terminal lang:default decode:true ">//まずは ctrl+v で対象文字を選択します

this is komoji   //左の文字すべてを選択した状態でUと打つと大文字へ変換されます

THIS IS OMOJI    //左の文字すべてを選択した状態でuと打つと大文字へ変換されます

ThIs Is KoNGoU   //左の文字すべてを選択した状態で~を打つとすべての大文字と小文字が反転します</pre>
<p>&nbsp;</p>
<p><strong><span class="hcss1" style="font-size: 14pt;">　一文字づつもしくは複数文字をリプレイスする</span></strong></p>
<p>わざわざ挿入モードに入らずに1文字だけ修正したいとか、この単語だけ修正したいとかあると思いますが、その際はコマンドモードで以下を実施してください。</p>
<pre class="theme:dark-terminal lang:default decode:true ">understanf   //fの上にカーソルを移動してr、そのまま変換したい文字(d)を入力

disk  //dの上にカーソルを移動してR、そのまま変換したい文字を打ち、最後にESC</pre>
<p>&nbsp;</p>
<p><strong><span class="hcss1" style="font-size: 18.6666660308838px;">　マクロを組んで同じ操作をワンキーで繰り返す</span></strong></p>
<p>なにやら難しい感じですが、めちゃくちゃ簡単です。 Vim では操作を記録して実行するマクロ機能がありますが、それを.（ドット）で繰り返すだけです。</p>
<pre class="theme:dark-terminal lang:default decode:true ">//qaと打ち記録を開始　qの後ろは任意の覚えやすい文字で結構です

This is Macro Test!  //左のように記録したい操作をやりきります　
    1234567          //今回は簡単ですが3行の文字入力をしました
  Test is End

//qと打ち記録を停止します

//@aと打つと1回マクロを実施しますが、.（ドット）だけでも実施できます。

This is Macro Test!
    1234567
  Test is End

//回数指定でマクロを実行したい場合は7@aと押すと7回実行できます</pre>
<p>上の例だとコピーしたほうが早いですが、複雑な操作を再実行したい場合はマクロのほうが良いですね。</p>
<p>&nbsp;</p>
<p><strong><span class="hcss1" style="font-size: 18.6666660308838px;">　大文字小文字に関係なく検索</span></strong></p>
<p>地味ですが検索時は必須ですね。わざわざ大文字で検索して、次に小文字で検索してとやっている人を見掛けました。検索文字列の後ろに\cとつけるだけでOKですw</p>
<pre class="theme:dark-terminal lang:default decode:true ">banana BaNANA Apple
Grape Banana ORANGE
orange PEAR peAR GRAPE

//（スラッシュ）を押して検索文字列banana\cと打つとすべてのバナナが引っ掛かります</pre>
<p>&nbsp;</p>
<p>いかがでしたか？今回はノーマルの Vim で使えるテクニックをご紹介しました。みなさんの作業効率を高める一助にしていただければ幸いです。</p>
]]></content:encoded>
			<wfw:commentRss>https://cloudear.jp/blog/?feed=rss2&#038;p=1352</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>デッドロックを回避するために</title>
		<link>https://cloudear.jp/blog/?p=1335</link>
		<comments>https://cloudear.jp/blog/?p=1335#comments</comments>
		<pubDate>Sun, 12 Jul 2015 11:42:05 +0000</pubDate>
		<dc:creator><![CDATA[masa]]></dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[インフラ]]></category>
		<category><![CDATA[データベース]]></category>
		<category><![CDATA[プログラム]]></category>

		<guid isPermaLink="false">https://cloudear.jp/blog/?p=1335</guid>
		<description><![CDATA[みなさんこんにちは masa です。今日はデータベースにおいて致命的なバグであるデッドロックについて取り上げます。プログラマーや DBA な方以外にも聞いたことがあるワードなのではないでしょうか。 開発の流れにおいて、き [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>みなさんこんにちは masa です。今日はデータベースにおいて致命的なバグであるデッドロックについて取り上げます。プログラマーや DBA な方以外にも聞いたことがあるワードなのではないでしょうか。</p>
<p><span id="more-1335"></span></p>
<p>開発の流れにおいて、きちんとトランザクション設計、リソースアクセス順序の設計がされていればデッドロックは理論上は発生しないはずなのですが、オープンソースのソフトウェア基盤なんかを使用している場合、世界中のエンジニアがバラで開発してる宿命というもあり、普通にデッドロックしたりしますｗ</p>
<p>デッドロックは同じタイミングでリソースを確保しにいった際に発生するものなので、リリースするまで発覚しなかったというケースもあります。</p>
<p>&nbsp;</p>
<p><span class="hcss1" style="font-size: 14pt;"><strong>　そもそもデッドロックとは何なのかおさらい</strong></span></p>
<p>まずは問題ないアクセスについて図を描いてみましたのでみてみてください。トランザクション＝スレッドと捉えてもらっても構いません。</p>
<p><a href="https://cloudear.jp/blog/wp-content/uploads/2015/07/deadlock1.png"><img class="alignnone size-full wp-image-1337" src="https://cloudear.jp/blog/wp-content/uploads/2015/07/deadlock1.png" alt="deadlock1" width="600" height="400" /></a></p>
<p>（解説）上の図では各処理が同じ順番でテーブルへアクセスするため、仮に同タイミングで書き込みをしようとしてもどちらか遅れたほうが、相手の処理が終わる（＝ロック解放）のを待つだけです。</p>
<p>&nbsp;</p>
<p>では次は問題のある処理の図です。</p>
<p><a href="https://cloudear.jp/blog/wp-content/uploads/2015/07/deadlock2.png"><img class="alignnone size-full wp-image-1344" src="https://cloudear.jp/blog/wp-content/uploads/2015/07/deadlock2.png" alt="deadlock2" width="600" height="400" /></a></p>
<p>&nbsp;</p>
<p>（解説）上の図では各処理がテーブルへアクセスする順番が逆になっています。この場合にロックと次の処理が <strong>&#8220;たすき掛け&#8221; </strong>の状態になりますので、これ以上処理は進まず停止してしまいます。問題ない処理と決定的に違うのは、<strong>待ち時間が発生するのではなく、永久にストップするという点です。</strong></p>
<p>&nbsp;</p>
<p><strong><span class="hcss1" style="font-size: 14pt;">　どうすればデッドロックを無くせるのか？</span></strong></p>
<p>これは実は非常に難しい質問だと思います。デッドロックはバグそのものですので、ソフトウェアの規模が大きくなれば大きくなるほど潜在的に増えていきます。小さいシステムならまだしも、数百万ステップに及ぶプログラムにおいて、人間ですから設計図がまちがっているかもしれませんし、プログラマーがうっかり実装を手誤ってしまうかもしれません。</p>
<p>個人的にはデッドロックはゼロに近づける（＝減らす）努力はできても、完全にゼロにすることはほぼ不可能であるという立場にいます。ソフトウェアにおいてバグをゼロにすることは不可能であるという考えそのものですが、少しでもデッドロックが起きないように以下のことに気を付ける必要があります。</p>
<ol>
<li><span style="font-size: 12pt; color: #f55858;"><strong>トランザクションからアクセスするテーブルの順番を一貫する</strong></span></li>
<li><span style="font-size: 12pt; color: #f55858;"><strong>不必要にトランザクションを長くしない</strong></span></li>
<li><span style="font-size: 12pt; color: #f55858;"><strong>不必要に FOR UPDATE でロックを掛けない</strong></span></li>
<li><span style="font-size: 12pt; color: #f55858;"><strong>可能な限り行ロックする</strong></span></li>
</ol>
<p>以上のことに気を付けて設計、実装が出来れば限りなくデッドロックを排除できると考えます。</p>
<p>&nbsp;</p>
<p><span class="hcss1" style="font-size: 14pt;"><strong>　それでもデッドロックが起きたときはどうすればいいのか</strong></span></p>
<p>これは実装でカバーしましょう。トランザクションの処理にタイムアウトもしくはリトライ回数を準備しておき、どちらかの処理がロックを解放するようにします。</p>
<p>&nbsp;</p>
<p>いかがでしたか？今日は発見が遅れがちなバグであるデッドロックについて取り上げました。あえて名前は挙げませんが世界的に有名なソフトウェアでもデッドロックは起きています。「デッドロック起こすのは初心者！」などとおごらずに慎重にプロジェクトを進めるよう常に意識したいものです。</p>
]]></content:encoded>
			<wfw:commentRss>https://cloudear.jp/blog/?feed=rss2&#038;p=1335</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>.htaccess でよくやる処理まとめ</title>
		<link>https://cloudear.jp/blog/?p=1304</link>
		<comments>https://cloudear.jp/blog/?p=1304#comments</comments>
		<pubDate>Sun, 28 Jun 2015 12:37:27 +0000</pubDate>
		<dc:creator><![CDATA[masa]]></dc:creator>
				<category><![CDATA[インフラ]]></category>
		<category><![CDATA[サーバー]]></category>
		<category><![CDATA[フロントエンド]]></category>
		<category><![CDATA[プログラム]]></category>

		<guid isPermaLink="false">https://cloudear.jp/blog/?p=1304</guid>
		<description><![CDATA[みなさんこんにちは masa です。今日はサーバー側の話です。よく .htaccess でリダイレクトしたり、wwwあり・なし統一などやりますが、よくやり方を忘れて都度調べ直してしまうことがあります。 今日はよく使う . [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>みなさんこんにちは masa です。今日はサーバー側の話です。よく .htaccess でリダイレクトしたり、wwwあり・なし統一などやりますが、よくやり方を忘れて都度調べ直してしまうことがあります。</p>
<p><span id="more-1304"></span></p>
<p>今日はよく使う .htaccess の処理をまとめてみます。</p>
<p>&nbsp;</p>
<p><span class="hcss1" style="font-size: 14pt;"><strong> URLをwwwありに統一</strong></span></p>
<pre class="theme:dark-terminal lang:default decode:true">RewriteEngine on
RewriteCond %{HTTP_HOST} ^hoge\.jp
RewriteRule (.*) http://www.hoge.jp/$1 [R=301,L]</pre>
<p>&nbsp;</p>
<p><span class="hcss1" style="font-size: 14pt;"><strong> URLをwwwなしに統一</strong></span></p>
<pre class="theme:dark-terminal lang:default decode:true">RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.hoge\.jp
RewriteRule (.*) http://hoge.jp/$1 [R=301,L]</pre>
<p>&nbsp;</p>
<p><span class="hcss1" style="font-size: 14pt;"><strong> http → httpsリダイレクト(301)</strong></span></p>
<pre class="theme:dark-terminal lang:default decode:true">RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://hoge.jp/$1 [R=301,L]</pre>
<p>&nbsp;</p>
<p><strong><span class="hcss1" style="font-size: 14pt;"> co.jp → jpリダイレクト(301)</span></strong></p>
<pre class="theme:dark-terminal lang:default decode:true ">RewriteEngine On
RewriteCond %{HTTP_HOST} ^hoge.co.jp
RewriteRule ^(.*) http://hoge.jp/$1 [R=301,L]</pre>
<p>&nbsp;</p>
<p><span class="hcss1" style="font-size: 14pt;"><strong> Basic認証</strong></span></p>
<pre class="theme:dark-terminal lang:default decode:true ">#vim .htaccess
--------------------------
AuthUserFile     /var/www/html/.htpasswd   //絶対パス
AuthName     "IDとパスを入れてね"  //メッセージ表示
AuthType     Basic
require     valid-user
--------------------------

#htpasswd -c /var/www/html/.htpasswd hogeuser  //ユーザー名を末尾に入れる
任意のパスワードを2回入力</pre>
<p>&nbsp;</p>
<p><strong><span class="hcss1" style="font-size: 14pt;">UserAgentにより振り分け </span></strong></p>
<pre class="theme:dark-terminal lang:default decode:true ">RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_USER_AGENT} (iPhone|Android)  //iPhoneとAndroidからのアクセスを振り分け
RewriteRule ^$ /iphone/ [R]   //上記のユーザーは /iphone/ のコンテンツを見せる</pre>
<p>&nbsp;</p>
<p><strong><span class="hcss1" style="font-size: 14pt;"> CGI実行許可</span></strong></p>
<pre class="theme:dark-terminal lang:default decode:true ">RewriteEngine on
Options +ExecCGI
AddType text/html cgi
AddHandler cgi-script cgi</pre>
<p>&nbsp;</p>
<p>いかがでしたか？簡単ではありますが、よく使う .htaccess の処理をまとめてみました。ちょっと備忘録的になりましたが、みなさんの一助になれば幸いです。</p>
]]></content:encoded>
			<wfw:commentRss>https://cloudear.jp/blog/?feed=rss2&#038;p=1304</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jenkinsでレポート出力　Cobertura &amp; Findbugs &amp; CheckStyle</title>
		<link>https://cloudear.jp/blog/?p=1171</link>
		<comments>https://cloudear.jp/blog/?p=1171#comments</comments>
		<pubDate>Sun, 31 May 2015 11:45:50 +0000</pubDate>
		<dc:creator><![CDATA[masa]]></dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[インフラ]]></category>
		<category><![CDATA[フロントエンド]]></category>
		<category><![CDATA[プログラム]]></category>

		<guid isPermaLink="false">https://cloudear.jp/blog/?p=1171</guid>
		<description><![CDATA[みなさんこんにちは、masa です。今回は Jenkins でカバレッジレポートと静的解析レポートを出力する方法を取り上げてみたいと思います。まだ Jenkins が入っていないよという方は以前の記事を参照に入れてみてく [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>みなさんこんにちは、masa です。今回は Jenkins でカバレッジレポートと静的解析レポートを出力する方法を取り上げてみたいと思います。まだ Jenkins が入っていないよという方は<a title="Jenkins のインストール方法" href="https://cloudear.jp/blog/?p=765" target="_blank">以前の記事</a>を参照に入れてみてくださいね。</p>
<p><span id="more-1171"></span></p>
<p>みなさんは Jenkins を使う目的は何ですか？おそらく大多数の方は <strong>git pull → ビルド→ サーバーへデプロイ</strong>  というサイクルで使用されているのではないでしょうか。</p>
<p>Jenkins にはプラグインが数百とあるので他にもできることはたくさんあるのですが、<strong>レポートを出す機能を使うことでプロダクトコードの品質を高める一助になります。</strong></p>
<p>&nbsp;</p>
<p><strong><span class="hcss1" style="font-size: 14pt;"> そもそもカバレッジとか静的解析レポートってなに？</span></strong></p>
<p>カバレッジレポートというのは全体のコードに対してテストがどれくらい完了したか、テスト進捗を表すものです。<br />
静的解析というのはソース中にバグを発生させるようなコードや、非効率な書き方がないかなどを調べて、コードを強化するためのものです。</p>
<ul>
<li><strong>Cobertura</strong> (<span style="font-size: 8pt;">コベルトゥーラ)     </span>：　カバレッジレポート</li>
<li><strong>FindBugs              　        </strong>：　静的解析レポート（バグチェック中心）</li>
<li><strong>CheckStyle                      </strong>：　静的解析レポート（コーディング規約チェック中心）</li>
</ul>
<p>&nbsp;</p>
<p><span style="font-size: 14pt;"><strong>Cobertura 画面</strong></span><a href="https://cloudear.jp/blog/wp-content/uploads/2015/05/jenkins-3.png"><img class="alignnone size-full wp-image-1184" src="https://cloudear.jp/blog/wp-content/uploads/2015/05/jenkins-3.png" alt="jenkins-3" width="1363" height="685" /></a></p>
<p><strong><span style="font-size: 14pt;">FindBugs 画面</span></strong><br />
<a href="https://cloudear.jp/blog/wp-content/uploads/2015/05/jenkins-5.png"><img class="alignnone size-full wp-image-1185" src="https://cloudear.jp/blog/wp-content/uploads/2015/05/jenkins-5.png" alt="jenkins-5" width="1363" height="681" /></a></p>
<p><strong><span style="font-size: 14pt;">ChechkStyle 画面</span></strong><br />
<a href="https://cloudear.jp/blog/wp-content/uploads/2015/05/jenkins-4.png"><img class="alignnone size-full wp-image-1186" src="https://cloudear.jp/blog/wp-content/uploads/2015/05/jenkins-4.png" alt="jenkins-4" width="1363" height="679" /></a></p>
<p>&nbsp;</p>
<p><strong><span class="hcss1" style="font-size: 14pt;"> 早速 Jenkins のレポート機能を追加する</span></strong></p>
<p>3つのレポートですが、<span style="text-decoration: underline;">Jenkins からプラグインを入れればすぐに使えるというわけではありません</span>。まずは Mavenプロジェクトの pom.xml に以下を追記して各プラグインをインストールします。</p>
<p><strong><span style="font-size: 14pt;"><span style="font-size: 12pt;">pom.xml</span>  </span></strong>※各プラグインのバージョンは適宜変えてください</p>
<pre class="lang:default decode:true">    &lt;build&gt;
        &lt;plugins&gt;
            &lt;plugin&gt;
                &lt;groupId&gt;org.codehaus.mojo&lt;/groupId&gt;
                &lt;artifactId&gt;cobertura-maven-plugin&lt;/artifactId&gt;
                &lt;configuration&gt;
                    &lt;formats&gt;
                        &lt;format&gt;html&lt;/format&gt;
                        &lt;format&gt;xml&lt;/format&gt;
                    &lt;/formats&gt;
                    &lt;instrumentation&gt;
                    &lt;/instrumentation&gt;
                &lt;/configuration&gt;
            &lt;/plugin&gt;
        &lt;/plugins&gt;
        &lt;pluginManagement&gt;
            &lt;plugins&gt;
                &lt;plugin&gt;
                    &lt;groupId&gt;org.codehaus.mojo&lt;/groupId&gt;
                    &lt;artifactId&gt;cobertura-maven-plugin&lt;/artifactId&gt;
                    &lt;version&gt;2.6&lt;/version&gt;
                    &lt;configuration&gt;
                        &lt;executions&gt;
                            &lt;execution&gt;
                                &lt;phase&gt;package&lt;/phase&gt;
                                &lt;goals&gt;
                                    &lt;goal&gt;cobertura&lt;/goal&gt;
                                &lt;/goals&gt;
                            &lt;/execution&gt;
                        &lt;/executions&gt;
                    &lt;/configuration&gt;
                &lt;/plugin&gt;
                &lt;plugin&gt;
                    &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
                    &lt;artifactId&gt;maven-checkstyle-plugin&lt;/artifactId&gt;
                    &lt;version&gt;2.14&lt;/version&gt;
                &lt;/plugin&gt;
                &lt;plugin&gt;
                    &lt;groupId&gt;org.codehaus.mojo&lt;/groupId&gt;
                    &lt;artifactId&gt;findbugs-maven-plugin&lt;/artifactId&gt;
                    &lt;version&gt;3.0.0&lt;/version&gt;
                    &lt;executions&gt;
                        &lt;execution&gt;
                            &lt;phase&gt;compile&lt;/phase&gt;
                            &lt;goals&gt;
                                &lt;goal&gt;findbugs&lt;/goal&gt;
                            &lt;/goals&gt;
                        &lt;/execution&gt;
                    &lt;/executions&gt;
                &lt;/plugin&gt;
            &lt;/plugins&gt;
        &lt;/pluginManagement&gt;
    &lt;/build&gt;
    &lt;reporting&gt;
        &lt;plugins&gt;
            &lt;plugin&gt;
                &lt;groupId&gt;org.codehaus.mojo&lt;/groupId&gt;
                &lt;artifactId&gt;findbugs-maven-plugin&lt;/artifactId&gt;
                &lt;configuration&gt;
                    &lt;effort&gt;Max&lt;/effort&gt;
                    &lt;xmlOutput&gt;true&lt;/xmlOutput&gt;
                &lt;/configuration&gt;
            &lt;/plugin&gt;
            &lt;plugin&gt;
              &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
              &lt;artifactId&gt;maven-checkstyle-plugin&lt;/artifactId&gt;
              &lt;version&gt;2.14&lt;/version&gt;
              &lt;reportSets&gt;
                &lt;reportSet&gt;
                  &lt;reports&gt;
                    &lt;report&gt;checkstyle&lt;/report&gt;
                  &lt;/reports&gt;
                &lt;/reportSet&gt;
              &lt;/reportSets&gt;
            &lt;/plugin&gt;
        &lt;/plugins&gt;
    &lt;/reporting&gt;</pre>
<p>&nbsp;</p>
<p>次に Jenkins の管理画面から各プラグインをインストールします。</p>
<p><strong>Jenkinsトップ＞Jenkinsの管理＞プラグインの管理＞利用可能タブ＞フィルター</strong></p>
<p>以下を検索してインストール</p>
<ul>
<li>cobertura</li>
<li>findbugs</li>
<li>checkstyle</li>
</ul>
<p><a href="https://cloudear.jp/blog/wp-content/uploads/2015/05/jenkins-6.png"><img class="alignnone size-full wp-image-1189" src="https://cloudear.jp/blog/wp-content/uploads/2015/05/jenkins-6.png" alt="jenkins-6" width="1363" height="685" /></a></p>
<p>&nbsp;</p>
<p><span class="hcss1" style="font-size: 14pt;"><strong> 各レポート機能を有効にする</strong></span></p>
<p><strong>1．プロジェクトの中の「設定」からビルド方法を指定する</strong></p>
<ul>
<li>ビルド＞ゴールとオプションに以下を入力<br />
clean cobertura:cobertura</li>
</ul>
<p><a href="https://cloudear.jp/blog/wp-content/uploads/2015/05/goal_option.png"><img class="alignnone size-full wp-image-1235" src="https://cloudear.jp/blog/wp-content/uploads/2015/05/goal_option.png" alt="goal_option" width="910" height="334" /></a></p>
<p>&nbsp;</p>
<p><strong>2．プロジェクトの中の「設定」から以下を変更する</strong></p>
<ul>
<li>Checkstyle警告の集計にチェック入れる</li>
<li>FindBugs警告の集計にチェックを入れる</li>
<li>ビルド後の処理&gt;Cobertura カバレッジ・レポートの集計&gt;Cobertura XMLレポート パターンに以下を入力<br />
**/target/site/cobertura/coverage.xml</li>
</ul>
<p><a href="https://cloudear.jp/blog/wp-content/uploads/2015/05/jenkins-7.png"><img class="alignnone size-full wp-image-1190" src="https://cloudear.jp/blog/wp-content/uploads/2015/05/jenkins-7.png" alt="jenkins-7" width="979" height="673" /></a></p>
<p>&nbsp;</p>
<p>以上でプロジェクトがビルドされるとレポートを見るリンクが現れて、ビルドに対する各レポート結果が見れるようになります。<br />
<a href="https://cloudear.jp/blog/wp-content/uploads/2015/05/jenkins-2.png"><img class="alignnone size-full wp-image-1191" src="https://cloudear.jp/blog/wp-content/uploads/2015/05/jenkins-2.png" alt="jenkins-2" width="1363" height="681" /></a></p>
<p>&nbsp;</p>
<p>いかがでしたか？今日は Jenkins の便利なレポート機能について導入方法をご紹介しました。個人的にオススメは FindBugs です。日本語で自分のコードの欠点がすぐに確認できるのは楽しいです。みなさんもプロダクト品質向上の一助にレポート機能を追加してみてください。</p>
]]></content:encoded>
			<wfw:commentRss>https://cloudear.jp/blog/?feed=rss2&#038;p=1171</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>さくらの VPS でコピペで使える iptables</title>
		<link>https://cloudear.jp/blog/?p=1149</link>
		<comments>https://cloudear.jp/blog/?p=1149#comments</comments>
		<pubDate>Sun, 24 May 2015 13:12:26 +0000</pubDate>
		<dc:creator><![CDATA[masa]]></dc:creator>
				<category><![CDATA[VPS]]></category>
		<category><![CDATA[インフラ]]></category>
		<category><![CDATA[サーバー]]></category>

		<guid isPermaLink="false">https://cloudear.jp/blog/?p=1149</guid>
		<description><![CDATA[みなさんこんにちは、masa です。今日はインフラネタの中でも、VPS を取り上げたいと思います。AWS や Azure などのクラウドサービスだと画面上から「セキュリティグループ」を設定すれば必要最低限のセキュリティ設 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>みなさんこんにちは、masa です。今日はインフラネタの中でも、VPS を取り上げたいと思います。AWS や Azure などのクラウドサービスだと画面上から「セキュリティグループ」を設定すれば必要最低限のセキュリティ設定はできるのですが、VPS の場合はサーバーにログインして iptables を設定しなくてはいけないことが多いです。<br />
<span id="more-1149"></span>ということで、手っ取り早くコピペで設定する方法をご紹介します。</p>
<p>まずはサーバーに SSH でログインしてください。<br />
次に以下のコマンドで iptables ファイルを開きます。</p>
<pre class="theme:dark-terminal lang:default decode:true"># vim /etc/sysconfig/iptables</pre>
<p>&nbsp;</p>
<p>以下を貼り付けてください。</p>
<pre class="theme:dark-terminal lang:default decode:true "># Generated by iptables-save v1.4.7 on Wed Mar  4 20:57:21 2015
*filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [4:528]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
-A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP
-A INPUT -i lo -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 110 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 587 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
COMMIT</pre>
<p><strong>7行目： データがないパケットの接続を破棄<br />
8行目： SYNflood（接続をあぶれさせる）攻撃の接続を破棄する<br />
9行目： ステルススキャン（足跡を残さずに空いているポートをスキャンしに来る）接続を破棄する<br />
10行目：localhostからの通信を許可<br />
11行目：Ping通信を許可<br />
12行目以降：各サービスの接続を許可 (SSH, HTTP, POP3, SMTP, SUBMISSION, HTTPS)</strong></p>
<p>必要最低限のものは上で空いています。他にも空けたいポートがある場合は、同じように追記してみてください。</p>
<p>次に、上記設定を iptables へ反映させるため iptables を再起動します。</p>
<pre class="theme:dark-terminal lang:default decode:true "># /etc/sysconfig/iptables restart</pre>
<p>&nbsp;</p>
<p>実際に設定が反映されたか確認してみます。</p>
<pre class="theme:dark-terminal lang:default decode:true"># iptables -L
Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED 
DROP       tcp  --  anywhere             anywhere            tcp flags:FIN,SYN,RST,PSH,ACK,URG/NONE 
DROP       tcp  --  anywhere             anywhere            tcp flags:!FIN,SYN,RST,ACK/SYN state NEW 
DROP       tcp  --  anywhere             anywhere            tcp flags:FIN,SYN,RST,PSH,ACK,URG/FIN,SYN,RST,PSH,ACK,URG 
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     icmp --  anywhere             anywhere            
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ssh 
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:http 
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:pop3 
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:smtp 
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:submission 
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:https 

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination</pre>
<p>&nbsp;</p>
<p>いかがでしたか？今日は VPS で必要最低限な iptables をする方法をご紹介しました。契約したまま何も設定していないの、裸でゲットーを歩いているのと同じですので すぐに対処してくださいね。</p>
]]></content:encoded>
			<wfw:commentRss>https://cloudear.jp/blog/?feed=rss2&#038;p=1149</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tomcat &amp; Apache 連携で80番ポートアクセス</title>
		<link>https://cloudear.jp/blog/?p=1124</link>
		<comments>https://cloudear.jp/blog/?p=1124#comments</comments>
		<pubDate>Sun, 17 May 2015 11:55:29 +0000</pubDate>
		<dc:creator><![CDATA[masa]]></dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[インフラ]]></category>
		<category><![CDATA[サーバー]]></category>
		<category><![CDATA[プログラム]]></category>

		<guid isPermaLink="false">https://cloudear.jp/blog/?p=1124</guid>
		<description><![CDATA[みなさんこんにちは、 masa です。今日は Tomcat をインストールして Apache と連携させることで、アクセスポートを 8080 から 80 へ変更する方法をご紹介します。 まずは yum でTomcat,  [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>みなさんこんにちは、 masa です。今日は Tomcat をインストールして Apache と連携させることで、アクセスポートを 8080 から 80 へ変更する方法をご紹介します。<br />
<span id="more-1124"></span>まずは yum でTomcat, open-jdk (Javaの開発環境) 等を入れます。</p>
<p>（環境 CentOS 6.6）</p>
<pre class="lang:default decode:true">yum install tomcat java-1.7.0-openjdk-devel java-1.7.0-openjdk</pre>
<p><a href="https://cloudear.jp/blog/wp-content/uploads/2015/05/tomin1.png"><img class="alignnone size-full wp-image-1128" src="https://cloudear.jp/blog/wp-content/uploads/2015/05/tomin1.png" alt="tomin1" width="441" height="166" /></a></p>
<p>これで Java 開発環境と　Tomcat7 が入りました。</p>
<p>&nbsp;</p>
<p>念のため、ajp モジュールが入っているか確認してください。</p>
<pre class="lang:default decode:true"># httpd -M | grep ajp
proxy_ajp_module (shared)</pre>
<p>&nbsp;</p>
<p><strong><span class="hcss1" style="font-size: 14pt;">Tomcat のアクセスポートを 8080 から 80 へ変更する</span></strong></p>
<div>1. /etc/tomcat7/server.xml を以下のように編集<br />
※AJP コネクタの待ち受けポートを 8080 から 8009 へ変更</div>
<pre class="lang:default decode:true">------------------------------
&lt;!--
    &lt;Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" /&gt;
--&gt;

    &lt;Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /&gt;
------------------------------</pre>
<p>&nbsp;</p>
<p>2. /etc/httpd/conf.d/httpd-proxy.conf を作成し、以下のように記載する</p>
<pre class="lang:default decode:true ">------------------------------
&lt;Location /hoge&gt;  #アクセスしたいURLを入力　例）http://ホスト名/hoge 
    ProxyPass ajp://localhost:8009/hoge-file  #/var/lib/tomcat7/webapps/ 直下のディレクトリ
&lt;/Location&gt;
                  //以下の通り複数設定可能
&lt;Location /hoge2&gt;  #別のURLを作成して同じディレクトリを見せることも可能
    ProxyPass ajp://localhost:8009/hoge-file
&lt;/Location&gt;
------------------------------
</pre>
<p>&nbsp;</p>
<p>最後に httpd と tomcat を再起動</p>
<pre class="lang:default decode:true ">/etc/init.d/httpd restart
/etc/init.d/tomcat7 restart</pre>
<p>これで http://ホスト名/hoge にアクセスすると webapps に展開している Javaアプリケーションが見えるはずです。</p>
<p>いかがでしたか？この他にも iptables で 8080 → 80 へポートフォワードする方法もあります。その方が都合が良い方は調べてみてくださいね。</p>
]]></content:encoded>
			<wfw:commentRss>https://cloudear.jp/blog/?feed=rss2&#038;p=1124</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>シェルスクリプトで引数を受ける方法</title>
		<link>https://cloudear.jp/blog/?p=228</link>
		<comments>https://cloudear.jp/blog/?p=228#comments</comments>
		<pubDate>Sun, 23 Nov 2014 11:25:45 +0000</pubDate>
		<dc:creator><![CDATA[masa]]></dc:creator>
				<category><![CDATA[インフラ]]></category>
		<category><![CDATA[サーバー]]></category>
		<category><![CDATA[シェルスクリプト]]></category>

		<guid isPermaLink="false">https://cloudear.jp/blog/?p=228</guid>
		<description><![CDATA[シェルスクリプトを作るときに処理を簡単に分岐できてグンと使いやすくなる、そんな引数を受け取る方法をご紹介。 まず、今回登場していただくのは『getopts』というもの。これを使うことで簡単にユーザーが打った引数を受けるこ [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>シェルスクリプトを作るときに処理を簡単に分岐できてグンと使いやすくなる、そんな引数を受け取る方法をご紹介。<br />
<span id="more-228"></span><br />
まず、今回登場していただくのは『getopts』というもの。これを使うことで簡単にユーザーが打った引数を受けることができます(｀・ω・´)<br />
<strong>何はともあれ基本形を超シンプルに書いてみました↓</strong></p>
<pre class="lang:default decode:true ">#!/bin/bash

while getopts e: OPT #OPTの部分は何でもOK
do
  case $OPT in       #上で指定した変数名を指定
    e) num=$OPTARG   #ここは決まりで$OPTARGで受け取ることが出来る
       ;;
  esac
done

echo $num            #-e の後ろに指定された値が入る</pre>
<p>3行目の『e:』の意味は、『hoge.sh -e』で引数を受けますよという宣言。6行目は普通のcase文ですが、引数として『-e &#8220;ココ&#8221;』が入ってくるとその値が $OPTARG に格納されます。</p>
<p><strong>実行結果↓</strong></p>
<pre class="nums:false lang:default decode:true">./hoge.sh -e "うひょ"
うひょ</pre>
<p><strong>実際、上記のような使い方は意味がないので、『-e 1』とかそれっぽく引数を取り、処理を分岐までやってみます。↓</strong></p>
<pre class="lang:default decode:true ">#!/bin/bash

while getopts e:p: OPT #-p も追加してみる
do
  case $OPT in
    e) e_num=$OPTARG
       ;;
    p) p_num=$OPTARG
       ;;
  esac
done

case $e_num in
  1) echo "今月は1月です"
     ;;
  2) echo "今月は2月です"
     ;;
  3) echo "今月は3月です"
     ;;
esac

case $p_num in
  1) ping -c1 google.com
     ;;
  2) ping -c1 yahoo.co.jp
     ;;
  3) ping -c1 adobe.com
     ;;
esac</pre>
<p><strong>実行結果↓</strong></p>
<pre class="nums:false lang:default decode:true ">./hoge.sh -e1
今月は1月です

./hoge.sh -e2                                                                    
今月は2月です

./hoge.sh -e3                                                                    
今月は3月です

./hoge.sh -p1                                                                      
PING google.com (173.194.120.67) 56(84) bytes of data.
64 bytes from nrt13s18-in-f3.1e100.net (173.194.120.67): icmp_seq=1 ttl=58 time=2.39 ms

#以下省略</pre>
<p>上記の通り -e と -p そしてその後ろの数字によって処理が分かれていますね。</p>
<p>いかがでしたか？<br />
今回はシェルスクリプトで引数を受けて、処理を分岐させる方法をご紹介しました。みなさんもこれで自分オリジナルのクールなコマンドを作ってみてください。</p>
]]></content:encoded>
			<wfw:commentRss>https://cloudear.jp/blog/?feed=rss2&#038;p=228</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AWS認定ソリューションアーキテクト合格</title>
		<link>https://cloudear.jp/blog/?p=161</link>
		<comments>https://cloudear.jp/blog/?p=161#comments</comments>
		<pubDate>Sun, 16 Nov 2014 14:46:44 +0000</pubDate>
		<dc:creator><![CDATA[masa]]></dc:creator>
				<category><![CDATA[AWS]]></category>
		<category><![CDATA[インフラ]]></category>
		<category><![CDATA[サーバー]]></category>

		<guid isPermaLink="false">https://cloudear.jp/blog/?p=161</guid>
		<description><![CDATA[先月、『AWS認定ソリューションアーキテクト アソシエイトレベル』を受験し、 ギリギリ受かりましたｗ これが認定証↓ 総合スコア: 67% トピックレベルのスコア: 1.0 高可用性、コスト効率、耐障害性、スケーラブルな [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>先月、『AWS認定ソリューションアーキテクト アソシエイトレベル』を受験し、<br />
ギリギリ受かりましたｗ</p>
<p>これが認定証↓<br />
<span id="more-161"></span><a href="https://cloudear.jp/blog/wp-content/uploads/2014/11/awssa.png"><img class="alignnone size-full wp-image-163" src="https://cloudear.jp/blog/wp-content/uploads/2014/11/awssa.png" alt="awssa" width="312" height="240" /></a></p>
<p><strong>総合スコア: 67%</strong></p>
<p><strong>トピックレベルのスコア:</strong><br />
<strong> 1.0 高可用性、コスト効率、耐障害性、<wbr />スケーラブルなシステムの設計: 66%</strong><br />
<strong>2.0 実装/デプロイ: 70%</strong><br />
<strong>3.0 セキュリティ: 75%</strong><br />
<strong>4.0 トラブルシューティング: 50%</strong></p>
<p>この試験、合格ラインは65%なので、スレスレのラインで合格だったわけです。今までEC2しか使ったことがない人間が、1ヵ月半の勉強で到達できたスコアと考えれば妥当なのか( ﾟДﾟ)<br />
おそらくこの記事を見てくださってる方はAWS試験に興味がある、もしくは受けようとされていると思うので、簡単ではありますが、試験に合格するポイントを書きたいと思います。（出た問題とか書くと怒られちゃうのであくまでポイントだけ）</p>
<p><span class="hcss1" style="font-size: 12pt;"><strong>AWS認定ソリューションアーキテクト　アソシエイトレベルに受かる5つのポイント</strong></span></p>
<p><strong>１. 事実上の教科書は<a href="http://aws.amazon.com/jp/aws-jp-introduction/" target="_blank">「AWSマイスターシリーズ」</a>の資料である</strong><br />
基礎知識はこのSlideShareを見て勉強します。細かいところもめんどくさがらずに憶えておくと後々自分が助かりますｗ</p>
<p><strong>2. AWS設計は<a href="http://aws.clouddesignpattern.org/index.php/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8" target="_blank">「クラウドデザインパターン」</a>が教科書である</strong><br />
ソリューションアーテキテクトということはつまり「設計者」なわけです。上のクラウドデザインパターンは問題ごとにAWS設計図を書いてくれていますのですべて憶えましょう。まったく同じ内容の本も出版されていますので紙面が良い方はそちらもどうぞ</p>
<p><strong>3. 手を抜いて良いサービスを見極める</strong><br />
Redshift, Kinesis, EMR, Datapipeline, ElasticTranscoder, CloudSearch, AppStream, Cognito, Workspaces, Zocalo<br />
これらクラウド周辺サービスに属するものは &#8220;何のサービスか&#8221; だけ憶えていればOKです。<br />
ここに時間を割くくらいなら、コアなサービスに注力しましょう</p>
<p><strong>4. 詳細までやるべきサービスを見極める</strong><br />
上記とは逆に、詳細まで頭に入れていないと普通に落ちてしまうサービスがあります。それはズバリ<br />
EC2, EBS, ELB, AutoScaling, S3, RDS, VPC, IAM  です。まさにクラウドサービスを構成するコアメンバー。後述の通り、これらについては公式ドキュメントも見ることをオススメします。</p>
<p><strong>5.  余裕をもって合格したいなら<a href="http://aws.amazon.com/jp/documentation/" target="_blank">「公式ドキュメントマニュアル」</a>をみる</strong><br />
私はマイスターシリーズとクラウドデザインパターンを勉強して、コントロールパネルから一通りサービスを使ってみただけです。そうすると67点というギリギリのラインになります。試験中「あ、これ落ちたかも(；´∀｀)」とヒヤヒヤしながら受けることになります。それが嫌な方は出来るだけ多くの公式ドキュメントを見てみてください。これ以上詳細なものはないと思います。</p>
<p>いかがでしたか？<br />
AWSソリューションアーキテクト アソシエイトはおそらく多くの方が一番最初に受ける試験かと思います。これから試験を受けるみなさんの一助になれば幸いです。</p>
<p><span style="font-size: 8pt;">※ブログの内容は受かるためのポイントを個人的に述べたもので、受験される方の合格を保証するものではありません。また、情報は2014年11月時点のものです。あくまで参考までにご一読いただけますようお願い申し上げます。</span></p>
]]></content:encoded>
			<wfw:commentRss>https://cloudear.jp/blog/?feed=rss2&#038;p=161</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
