<?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>ジャナ・ビジネス・コンサルティング</title>
	<atom:link href="http://www.janabiz.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.janabiz.com</link>
	<description>新聞、電子出版、Webシステム開発 SAP ERP開発 人材派遣 Java Android プログラマ学校</description>
	<lastBuildDate>Sat, 04 Mar 2023 03:22:06 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>JCPress自動組版ソリューション</title>
		<link>http://www.janabiz.com/jcpress%e3%82%bd%e3%83%aa%e3%83%a5%e3%83%bc%e3%82%b7%e3%83%a7%e3%83%b3/</link>
		<comments>http://www.janabiz.com/jcpress%e3%82%bd%e3%83%aa%e3%83%a5%e3%83%bc%e3%82%b7%e3%83%a7%e3%83%b3/#comments</comments>
		<pubDate>Sun, 23 Apr 2017 05:25:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[新聞、雑誌、電子出版]]></category>
		<category><![CDATA[新聞]]></category>
		<category><![CDATA[自動組版]]></category>
		<category><![CDATA[記者端末]]></category>
		<category><![CDATA[雑誌]]></category>
		<category><![CDATA[電子出版]]></category>

		<guid isPermaLink="false">http://www.janabiz.com/?p=997</guid>
		<description><![CDATA[<p>１．JCWriter記者端末 + JCPress自動組版 ２、JCWriter記者端末 + JCMM素材管理 + JCPress自動組版</p><p>The post <a href="http://www.janabiz.com/jcpress%e3%82%bd%e3%83%aa%e3%83%a5%e3%83%bc%e3%82%b7%e3%83%a7%e3%83%b3/">JCPress自動組版ソリューション</a> appeared first on <a href="http://www.janabiz.com">ジャナ・ビジネス・コンサルティング</a>.</p>]]></description>
				<content:encoded><![CDATA[<p><strong><br />
１．JCWriter記者端末 + JCPress自動組版<br />
２、JCWriter記者端末 + JCMM素材管理 + JCPress自動組版<br />
</strong><br />
<img src="http://www.janabiz.com/wp-content/uploads/2017/04/05bd5cf98c2f0bf795480fdb4fcd7308.png"/><br />
<img src="http://www.janabiz.com/wp-content/uploads/2017/04/JCPress-solution-002.png"/></p>
<p>The post <a href="http://www.janabiz.com/jcpress%e3%82%bd%e3%83%aa%e3%83%a5%e3%83%bc%e3%82%b7%e3%83%a7%e3%83%b3/">JCPress自動組版ソリューション</a> appeared first on <a href="http://www.janabiz.com">ジャナ・ビジネス・コンサルティング</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.janabiz.com/jcpress%e3%82%bd%e3%83%aa%e3%83%a5%e3%83%bc%e3%82%b7%e3%83%a7%e3%83%b3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JCPress 自動組版</title>
		<link>http://www.janabiz.com/jcpress%e8%87%aa%e5%8b%95%e7%b5%84%e7%89%88%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0%e3%83%aa%e3%83%aa%e3%83%bc%e3%82%b9-2/</link>
		<comments>http://www.janabiz.com/jcpress%e8%87%aa%e5%8b%95%e7%b5%84%e7%89%88%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0%e3%83%aa%e3%83%aa%e3%83%bc%e3%82%b9-2/#comments</comments>
		<pubDate>Sat, 25 Mar 2017 10:21:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[新聞、雑誌、電子出版]]></category>
		<category><![CDATA[新聞]]></category>
		<category><![CDATA[自動組版]]></category>
		<category><![CDATA[記者端末]]></category>
		<category><![CDATA[雑誌]]></category>
		<category><![CDATA[電子出版]]></category>

		<guid isPermaLink="false">http://www.janabiz.com/?p=950</guid>
		<description><![CDATA[<p>JCPressは、新聞紙面、雑誌、電子書籍などの組版を自動的に処理するシンプル、見えるなシステムです。 JCPressは、JCScribusのDTPのソフトを基にして開発した自動組版機能を持つ総合システムです。管理者が日常に作成必要な新聞媒体、紙面のテンプレートや、雑誌、電子書籍などのテンプレートまたはマスタページを作成し、PageBuilderサービスにより素材を自動的に処理を行い、最新の組版ファイル、PDFファイル、画像ファイルを生成します。組版後の結果、進捗を常に管理画面から画像で確認できます。まさに紙面、雑誌、電子書籍などに自動処理を行うための最適なクラウドシステムです。</p><p>The post <a href="http://www.janabiz.com/jcpress%e8%87%aa%e5%8b%95%e7%b5%84%e7%89%88%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0%e3%83%aa%e3%83%aa%e3%83%bc%e3%82%b9-2/">JCPress 自動組版</a> appeared first on <a href="http://www.janabiz.com">ジャナ・ビジネス・コンサルティング</a>.</p>]]></description>
				<content:encoded><![CDATA[<p><a href="/jcpress自動組版クラウドサービス/"><br />
<img src="/wp-content/uploads/2017/03/jcpress-cloud.png"/><br />
</a><br />
<a href="/jcpress自動組版クラウドサービス/"><br />
<img src="/wp-content/uploads/2017/03/summary2.png"/><br />
</a></p>
<p>
<strong><br />
JCPressは、新聞紙面、雑誌、電子書籍などの組版を自動的に処理するシンプル、見えるなシステムです。<br />
</strong>
</p>
<p>
JCPressは、JCScribusのDTPのソフトを基にして開発した自動組版機能を持つ総合システムです。管理者が日常に作成必要な新聞媒体、紙面のテンプレートや、雑誌、電子書籍などのテンプレートまたはマスタページを作成し、PageBuilderサービスにより素材を自動的に処理を行い、最新の組版ファイル、PDFファイル、画像ファイルを生成します。組版後の結果、進捗を常に管理画面から画像で確認できます。まさに紙面、雑誌、電子書籍などに自動処理を行うための最適なクラウドシステムです。</p>
<p>The post <a href="http://www.janabiz.com/jcpress%e8%87%aa%e5%8b%95%e7%b5%84%e7%89%88%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0%e3%83%aa%e3%83%aa%e3%83%bc%e3%82%b9-2/">JCPress 自動組版</a> appeared first on <a href="http://www.janabiz.com">ジャナ・ビジネス・コンサルティング</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.janabiz.com/jcpress%e8%87%aa%e5%8b%95%e7%b5%84%e7%89%88%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0%e3%83%aa%e3%83%aa%e3%83%bc%e3%82%b9-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JCWriter記者端末</title>
		<link>http://www.janabiz.com/jcwriter%e8%a8%98%e8%80%85%e7%ab%af%e6%9c%ab/</link>
		<comments>http://www.janabiz.com/jcwriter%e8%a8%98%e8%80%85%e7%ab%af%e6%9c%ab/#comments</comments>
		<pubDate>Sat, 25 Mar 2017 10:16:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[新聞、雑誌、電子出版]]></category>
		<category><![CDATA[JCPress自動組版]]></category>
		<category><![CDATA[JCWriter]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[新聞]]></category>
		<category><![CDATA[自動組版]]></category>
		<category><![CDATA[記者端末]]></category>
		<category><![CDATA[雑誌]]></category>
		<category><![CDATA[電子出版]]></category>

		<guid isPermaLink="false">http://www.janabiz.com/?p=947</guid>
		<description><![CDATA[<p>JCWriterは、縦書き、原稿モードの編集機能を提供するエディタです。Html、Textフォーマットのファイルを作成、編集に便利なアプリです。携帯端末から新聞記事、雑誌、電子書籍の専門的な編集機能を提供しています。 アプリを利用すれば、ビジネスドキュメント、ニュース、小説、雑誌、電子書籍などのファイルをテンプレートにして、修正、変更できます。生産性が向上します。また、編集されたファイルはHtmlなので、そのまま配信することも可能です。</p><p>The post <a href="http://www.janabiz.com/jcwriter%e8%a8%98%e8%80%85%e7%ab%af%e6%9c%ab/">JCWriter記者端末</a> appeared first on <a href="http://www.janabiz.com">ジャナ・ビジネス・コンサルティング</a>.</p>]]></description>
				<content:encoded><![CDATA[<p><img src="/wp-content/uploads/2016/11/logo192.png" style="float:left"/><br />
JCWriterは、縦書き、原稿モードの編集機能を提供するエディタです。Html、Textフォーマットのファイルを作成、編集に便利なアプリです。携帯端末から新聞記事、雑誌、電子書籍の専門的な編集機能を提供しています。<br />
アプリを利用すれば、ビジネスドキュメント、ニュース、小説、雑誌、電子書籍などのファイルをテンプレートにして、修正、変更できます。生産性が向上します。また、編集されたファイルはHtmlなので、そのまま配信することも可能です。</p>
<p>The post <a href="http://www.janabiz.com/jcwriter%e8%a8%98%e8%80%85%e7%ab%af%e6%9c%ab/">JCWriter記者端末</a> appeared first on <a href="http://www.janabiz.com">ジャナ・ビジネス・コンサルティング</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.janabiz.com/jcwriter%e8%a8%98%e8%80%85%e7%ab%af%e6%9c%ab/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apache says DocumentRoot doesn&#8217;t exist when it does</title>
		<link>http://www.janabiz.com/apache-says-documentroot-doesnt-exist/</link>
		<comments>http://www.janabiz.com/apache-says-documentroot-doesnt-exist/#comments</comments>
		<pubDate>Wed, 02 Jul 2014 06:20:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[selinux]]></category>

		<guid isPermaLink="false">http://www.janabiz.com/?p=878</guid>
		<description><![CDATA[<p>selinuxの設定を無効にする 次のコマンドは、 一時的に無効に設定 setenforce 0 有効にする場合 setenforce 1</p><p>The post <a href="http://www.janabiz.com/apache-says-documentroot-doesnt-exist/">Apache says DocumentRoot doesn&#8217;t exist when it does</a> appeared first on <a href="http://www.janabiz.com">ジャナ・ビジネス・コンサルティング</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>selinuxの設定を無効にする</p>
<p>次のコマンドは、<br />
一時的に無効に設定<br />
setenforce 0</p>
<p>有効にする場合<br />
setenforce 1</p>
<p>The post <a href="http://www.janabiz.com/apache-says-documentroot-doesnt-exist/">Apache says DocumentRoot doesn&#8217;t exist when it does</a> appeared first on <a href="http://www.janabiz.com">ジャナ・ビジネス・コンサルティング</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.janabiz.com/apache-says-documentroot-doesnt-exist/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CentOSにsudoを設定</title>
		<link>http://www.janabiz.com/centos%e3%81%absudo%e3%82%92%e8%a8%ad%e5%ae%9a/</link>
		<comments>http://www.janabiz.com/centos%e3%81%absudo%e3%82%92%e8%a8%ad%e5%ae%9a/#comments</comments>
		<pubDate>Tue, 08 Apr 2014 07:21:47 +0000</pubDate>
		<dc:creator>jian chen</dc:creator>
				<category><![CDATA[CentOS]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[OS]]></category>

		<guid isPermaLink="false">http://www.janabiz.com/?p=855</guid>
		<description><![CDATA[<p>いつも su を使って、root ユーザーに切り替えてから操作していたが、セキュリティ上の配慮があるので、sudo で root ユーザー権限を利用することがだんだん普及された。 方法としては、以下の通り： １．まず sudo がインストールされているかを確認 [test@localhost ~]$ yum list installed &#124; grep sudo sudo.i386   1.7.2p1-14.el5_8.3   installed [test@localhost ~]$ もしインストールされていなければ、root ユーザーに切り替え、下記のようにインストール。 [root@localhost ~]$ yum install sudo ２．次に sudo を設定 sudo コマンドのヘルプを確認しましょう。 [root@localhost ~]$ man sudo 上記のコマンドを実行すると、コマンドの使い方の説明が出てくる、最後の方に関連項目がある。 stat(2), login_cap(3), sudoers(5), passwd(5), visudo(8), grep(1),su(1). visudo コマンドを使って sudo の設定を行う。 visudo(/usr/sbin/visudo)を使って、sudo できるユーザーを /etc/sudoers に追記できる。 [root@localhost ~]# visudo いくつの設定箇所があるんのだが、sudo を利用できる最小限の箇所を弄る方針として、少なくでも下記の箇所を修正する必要がある。 ①　ユーザーアカウント毎に設定するには ユーザーID   ALL=(ALL)   ALL ②　グループ毎に設定するには この場合、グループ名の前に%を付ける。 %wheel   ALL=(ALL)   ALL 単なるユーザーとグループを設定するには、sudo コマンドを実行できるが下記のエラーメッセージが出る可能性がある。 [test@localhost ~]$ sudo  service httpd status [sudo] password for test: sudo: service: command not found このエラーメッセージが出た原因はコマンドのパスが通れていないことを示している。この場合、以下の修正が必要となる。 # Defaults specification # # Disable &#8220;ssh hostname sudo &#60;cmd&#62;&#8221;, because it will show the password in clear. #         You have &#8230; <a href="http://www.janabiz.com/centos%e3%81%absudo%e3%82%92%e8%a8%ad%e5%ae%9a/">Continue reading <span class="meta-nav">&#8594;</span></a></p><p>The post <a href="http://www.janabiz.com/centos%e3%81%absudo%e3%82%92%e8%a8%ad%e5%ae%9a/">CentOSにsudoを設定</a> appeared first on <a href="http://www.janabiz.com">ジャナ・ビジネス・コンサルティング</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>いつも su を使って、root ユーザーに切り替えてから操作していたが、セキュリティ上の配慮があるので、sudo で root ユーザー権限を利用することがだんだん普及された。<br />
方法としては、以下の通り：</p>
<p>１．まず sudo がインストールされているかを確認</p>
<p>[test@localhost ~]$ yum list installed | grep sudo<br />
sudo.i386   1.7.2p1-14.el5_8.3   installed<br />
[test@localhost ~]$</p>
<p>もしインストールされていなければ、root ユーザーに切り替え、下記のようにインストール。</p>
<p>[root@localhost ~]$ yum install sudo</p>
<p>２．次に sudo を設定</p>
<p>sudo コマンドのヘルプを確認しましょう。</p>
<p>[root@localhost ~]$ man sudo</p>
<p>上記のコマンドを実行すると、コマンドの使い方の説明が出てくる、最後の方に関連項目がある。</p>
<p>stat(2), login_cap(3), sudoers(5), passwd(5), visudo(8), grep(1),su(1).</p>
<p>visudo コマンドを使って sudo の設定を行う。</p>
<p>visudo(/usr/sbin/visudo)を使って、sudo できるユーザーを /etc/sudoers に追記できる。</p>
<p>[root@localhost ~]# visudo</p>
<p>いくつの設定箇所があるんのだが、sudo を利用できる最小限の箇所を弄る方針として、少なくでも下記の箇所を修正する必要がある。</p>
<p>①　ユーザーアカウント毎に設定するには</p>
<p>ユーザーID   ALL=(ALL)   ALL</p>
<p>②　グループ毎に設定するには</p>
<p>この場合、グループ名の前に%を付ける。</p>
<p>%wheel   ALL=(ALL)   ALL</p>
<p>単なるユーザーとグループを設定するには、sudo コマンドを実行できるが下記のエラーメッセージが出る可能性がある。</p>
<p>[test@localhost ~]$ sudo  service httpd status<br />
[sudo] password for test:<br />
sudo: service: command not found</p>
<p>このエラーメッセージが出た原因はコマンドのパスが通れていないことを示している。この場合、以下の修正が必要となる。</p>
<p># Defaults specification</p>
<p>#<br />
# Disable &#8220;ssh hostname sudo &lt;cmd&gt;&#8221;, because it will show the password in clear.<br />
#         You have to run &#8220;ssh -t hostname sudo &lt;cmd&gt;&#8221;.<br />
#<br />
# Defaults    requiretty                                                  #←←コメントアウト<br />
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin    #←←追加<br />
#</p>
<p>再度確認してみる。</p>
<p>[test@localhost ~]$ sudo service httpd status<br />
[sudo] password for test:<br />
httpd (pid  xxxxx) を実行中&#8230;</p>
<p>[sudo] password for test: のところに、ユーザー test のパスワードを入力する。</p>
<p>これで sudo を利用する設定が完了。</p>
<p>The post <a href="http://www.janabiz.com/centos%e3%81%absudo%e3%82%92%e8%a8%ad%e5%ae%9a/">CentOSにsudoを設定</a> appeared first on <a href="http://www.janabiz.com">ジャナ・ビジネス・コンサルティング</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.janabiz.com/centos%e3%81%absudo%e3%82%92%e8%a8%ad%e5%ae%9a/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows2008多ユーザリモートアクセス</title>
		<link>http://www.janabiz.com/win2008multiuser/</link>
		<comments>http://www.janabiz.com/win2008multiuser/#comments</comments>
		<pubDate>Fri, 31 Jan 2014 07:24:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.janabiz.com/?p=838</guid>
		<description><![CDATA[<p>レジストの設定を変更することより、マルチユーザアクセスできるようになります。 方法 スタット⇒regedit入力 レジストパスのHKEY_LOCAL_MACHINE \ SYSTEM \ CURRENTCONTROLSET \control\ TerminalServer\fSingleSessionPerUser fSingleSessionPerUser存在しない場合、新規「fSingleSessionPerUser」を作成します。 fSingleSessionPerUserの値が1の場合、単ユーザです、0はマルチユーザです。</p><p>The post <a href="http://www.janabiz.com/win2008multiuser/">Windows2008多ユーザリモートアクセス</a> appeared first on <a href="http://www.janabiz.com">ジャナ・ビジネス・コンサルティング</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>レジストの設定を変更することより、マルチユーザアクセスできるようになります。<br />
方法<br />
スタット⇒regedit入力<br />
レジストパスのHKEY_LOCAL_MACHINE \ SYSTEM \ CURRENTCONTROLSET \control\ TerminalServer\fSingleSessionPerUser<br />
fSingleSessionPerUser存在しない場合、新規「fSingleSessionPerUser」を作成します。<br />
fSingleSessionPerUserの値が1の場合、単ユーザです、0はマルチユーザです。</p>
<p>The post <a href="http://www.janabiz.com/win2008multiuser/">Windows2008多ユーザリモートアクセス</a> appeared first on <a href="http://www.janabiz.com">ジャナ・ビジネス・コンサルティング</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.janabiz.com/win2008multiuser/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hadoop-2.2.10 Single nodeのセットアップ</title>
		<link>http://www.janabiz.com/hadoop-single-node-setup/</link>
		<comments>http://www.janabiz.com/hadoop-single-node-setup/#comments</comments>
		<pubDate>Fri, 03 Jan 2014 11:36:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[hadoop]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.janabiz.com/?p=789</guid>
		<description><![CDATA[<p>この文書はHadoopのローカルモードではなく、1機で分散処理環境の設定を説明します。設定後以下のインスタンスを起動します。 プライマリNameNode セカンダリNameNode DataNode ResourceManager NodeManager (MapReduce)HistoryServer 目次 共通 HDFS YARN MapReduce テスト 共通 ◇アカウントの権限 sudo権限を持つアカウントで下記の手順で実行します。環境変数を保つするために、実行アカウントの.bashrcに下記のaliasを追加します。 alias sudo=&#8217;sudo -E&#8217; ◇必要の４つアカウントを作成します hadoop以外のアカウントでは、アカウントを作成するとき、Homeディレクトリを作成しなくてもOKです。 hadoopユーザとグループの作成 分散ファイルシステムサービス管理ユーザ：hdfs リソース管理とノード管理サービスユーザ：yarn MapReduceジョブ履歴管理サービス：mapred sudo adduser hadoop sudo adduser hdfs sudo usermod -G hadoop hdfs sudo adduser mapred sudo usermod -G hadoop mapred sudo adduser yarn sudo usermod -G hadoop yarn ◇作業ディレクトリを作成します mkdir /tmp/work ◇Java JDKをインストール CentOSの場合、Java OpenJDKがすでにインストールされている可能性があります。java -versionで確認できます。この文書ではOracleのjdk-7u45-linux-x64.gzを/tmp/workにダウンロードしてインストールします。 ダウンロード後解凍してインストします。 cd /usr/local tar xvzf /tmp/work/jdk-7u45-linux-x64.gz ln -s jdk1.7.0_45 jdk ◇hadoop-2.2.0をダウロードして「/」に解凍します cd /tmp/work wget http://ftp.tsukuba.wide.ad.jp/software/apache/hadoop/common/stable2/hadoop-2.2.0.tar.gz cd / tar xvzf /tmp/hadoop-2.2.0.tar.gz chown -R root:hadoop hadoop-2.2.0 ln -s /hadoop-2.2.0 hadoop ◇環境変数の設定 各アカウントに環境変数をそれぞれ追加するより、/etc/profileに追加すると便利です。 #java jdk home export JAVA_HOME=/usr/local/jdk #hadoop environment export HADOOP_PREFIX=/hadoop export HADOOP_MAPRED_HOME=$HADOOP_PREFIX export HADOOP_COMMON_HOME=$HADOOP_PREFIX export HADOOP_HDFS_HOME=$HADOOP_PREFIX export HADOOP_YARN_HOME=$HADOOP_PREFIX export YARN_HOME=$HADOOP_MAPRED_HOME export &#8230; <a href="http://www.janabiz.com/hadoop-single-node-setup/">Continue reading <span class="meta-nav">&#8594;</span></a></p><p>The post <a href="http://www.janabiz.com/hadoop-single-node-setup/">Hadoop-2.2.10 Single nodeのセットアップ</a> appeared first on <a href="http://www.janabiz.com">ジャナ・ビジネス・コンサルティング</a>.</p>]]></description>
				<content:encoded><![CDATA[<div class="content">
この文書はHadoopのローカルモードではなく、1機で分散処理環境の設定を説明します。設定後以下のインスタンスを起動します。</p>
<ul>
<li>プライマリNameNode</li>
<li>セカンダリNameNode</li>
<li>DataNode</li>
<li>ResourceManager</li>
<li>NodeManager</li>
<li>(MapReduce)HistoryServer</li>
</ul>
<h3>目次</h3>
<ul>
<li><a href="#common">共通</a></li>
<li><a href="#hdfs">HDFS</a></li>
<li><a href="#yarn">YARN</a></li>
<li><a href="#mapreduce">MapReduce</a></li>
<li><a href="#test">テスト<a/></li>
<ul>
</div>
<div class="content">
<a name="common"></a></p>
<h3>共通</h3>
<p>◇アカウントの権限</p>
<p>sudo権限を持つアカウントで下記の手順で実行します。環境変数を保つするために、実行アカウントの.bashrcに下記のaliasを追加します。</p>
<div class="div-example">
alias sudo=&#8217;sudo -E&#8217;
</div>
<p>◇必要の４つアカウントを作成します<br />
hadoop以外のアカウントでは、アカウントを作成するとき、Homeディレクトリを作成しなくてもOKです。</p>
<ul>
<li>hadoopユーザとグループの作成</li>
<li>分散ファイルシステムサービス管理ユーザ：hdfs</li>
<li>リソース管理とノード管理サービスユーザ：yarn</li>
<li>MapReduceジョブ履歴管理サービス：mapred</li>
</ul>
<div class="div-example">
sudo adduser hadoop<br />
sudo adduser  hdfs<br />
sudo usermod -G hadoop hdfs<br />
sudo adduser  mapred<br />
sudo usermod -G hadoop mapred<br />
sudo adduser  yarn<br />
sudo usermod -G hadoop yarn
</div>
<p>◇作業ディレクトリを作成します</p>
<div class="div-example">
mkdir /tmp/work
</div>
<p>◇Java JDKをインストール</p>
<p>CentOSの場合、Java OpenJDKがすでにインストールされている可能性があります。java -versionで確認できます。この文書ではOracleのjdk-7u45-linux-x64.gzを/tmp/workにダウンロードしてインストールします。<br />
ダウンロード後解凍してインストします。</p>
<div class="div-example">
cd /usr/local<br />
tar xvzf /tmp/work/jdk-7u45-linux-x64.gz<br />
ln -s jdk1.7.0_45 jdk
</div>
<p>◇hadoop-2.2.0をダウロードして「/」に解凍します</p>
<div class="div-example">
cd /tmp/work<br />
wget http://ftp.tsukuba.wide.ad.jp/software/apache/hadoop/common/stable2/hadoop-2.2.0.tar.gz<br />
cd /<br />
tar xvzf /tmp/hadoop-2.2.0.tar.gz<br />
chown -R root:hadoop hadoop-2.2.0<br />
ln -s /hadoop-2.2.0 hadoop
</div>
<p>◇環境変数の設定</p>
<p>各アカウントに環境変数をそれぞれ追加するより、/etc/profileに追加すると便利です。</p>
<div class="div-example">
#java jdk home<br />
export JAVA_HOME=/usr/local/jdk</p>
<p>#hadoop environment<br />
export HADOOP_PREFIX=/hadoop<br />
export HADOOP_MAPRED_HOME=$HADOOP_PREFIX<br />
export HADOOP_COMMON_HOME=$HADOOP_PREFIX<br />
export HADOOP_HDFS_HOME=$HADOOP_PREFIX<br />
export HADOOP_YARN_HOME=$HADOOP_PREFIX</p>
<p>export YARN_HOME=$HADOOP_MAPRED_HOME<br />
export HADOOP_CONF_DIR=$HADOOP_PREFIX/etc/hadoop<br />
export YARN_CONF_DIR=$HADOOP_CONF_DIR</p>
<p>PATH=$JAVA_HOME/bin:$HADOOP_PREFIX/bin:$HADOOP_PREFIX/sbin:$PATH
</p></div>
<p>◇${HADOOP_PREFIX}/etc/hadoop/hadoop-env.shファイルに下記の変数を設定します</p>
<div class="div-example">
export JAVA_HOME=${JAVA_HOME}<br />
export HADOOP_LOG_DIR=${HADOOP_PREFIX}/logs/$USER<br />
export HADOOP_PID_DIR=${HADOOP_PREFIX}/tmp
</div>
<p>◇データ、コントロール情報を格納するディレクトリ領域を用意します</p>
<div class="div-example">
mkdir /hadoop-workspace22<br />
mkdir /hadoop-workspace22/storage<br />
mkdir /hadoop-workspace22/logs<br />
mkdir /hadoop-workspace22/tmp<br />
mkdir /hadoop-workspace22/run<br />
chown -R hadoop:hadoop /hadoop-workspace22<br />
chmod -R ug+w /hadoop-workspace22
</div>
<p>◇core-site.xmlファイルを下記のように設定します</p>
<div class="div-example">
<pre style="margin: 0; line-height: 125%"><span style="color: #007700">&lt;configuration&gt;</span>
    <span style="color: #007700">&lt;property&gt;</span>
        <span style="color: #007700">&lt;name&gt;</span>fs.defaultFS<span style="color: #007700">&lt;/name&gt;</span>
        <span style="color: #007700">&lt;value&gt;</span>hdfs://localhost:9000/<span style="color: #007700">&lt;/value&gt;</span>
    <span style="color: #007700">&lt;/property&gt;</span>
    <span style="color: #007700">&lt;property&gt;</span>
        <span style="color: #007700">&lt;name&gt;</span>hadoop.tmp.dir<span style="color: #007700">&lt;/name&gt;</span>
        <span style="color: #007700">&lt;value&gt;</span>/hadoop-workspace22/tmp/${user.name}<span style="color: #007700">&lt;/value&gt;</span>
    <span style="color: #007700">&lt;/property&gt;</span>
    <span style="color: #007700">&lt;property&gt;</span>      
      <span style="color: #007700">&lt;name&gt;</span>hadoop.native.lib<span style="color: #007700">&lt;/name&gt;</span>      
      <span style="color: #007700">&lt;value&gt;</span>true<span style="color: #007700">&lt;/value&gt;</span>      
      <span style="color: #007700">&lt;description&gt;</span>Should native hadoop libraries, if present, be used.<span style="color: #007700">&lt;/description&gt;</span>   
    <span style="color: #007700">&lt;/property&gt;</span> 
    <span style="color: #007700">&lt;property&gt;</span>
      <span style="color: #007700">&lt;name&gt;</span>hadoop.logfile.size<span style="color: #007700">&lt;/name&gt;</span>      
      <span style="color: #007700">&lt;value&gt;</span>10000000<span style="color: #007700">&lt;/value&gt;</span>      
      <span style="color: #007700">&lt;description&gt;</span>The max size of each log file<span style="color: #007700">&lt;/description&gt;</span>   
    <span style="color: #007700">&lt;/property&gt;</span>  
    <span style="color: #007700">&lt;property&gt;</span>      
      <span style="color: #007700">&lt;name&gt;</span>hadoop.logfile.count<span style="color: #007700">&lt;/name&gt;</span>      
      <span style="color: #007700">&lt;value&gt;</span>15<span style="color: #007700">&lt;/value&gt;</span>      
      <span style="color: #007700">&lt;description&gt;</span>The max number of log files<span style="color: #007700">&lt;/description&gt;</span>   
    <span style="color: #007700">&lt;/property&gt;</span>
<span style="color: #007700">&lt;/configuration&gt;</span>
</pre>
</div>
<p><a name="hdfs"></a></p>
<h3>HDFS</h3>
<p>◇hadoop-env.shに変数を追加、設定します。<br />
${HADOOP_PREFIX}/etc/hadoop/hadoop-env.shにデータ格納領域の境変数を追加します。</p>
<div class="div-example">
export HADOOP_WORKSPACE=/hadoop-workspace22<br />
export HADOOP_LOG_DIR=${HADOOP-WORKSPACE}/logs/$USER<br />
export HADOOP_PID_DIR=${HADOOP-WORKSPACE}/run
</div>
<p>◇hdfs-site.xmlファイルを下記のように設定します。</p>
<div class="div-example">
<pre style="margin: 0; line-height: 125%"><span style="color: #007700">&lt;configuration&gt;</span>
    <span style="color: #007700">&lt;property&gt;</span>
        <span style="color: #007700">&lt;name&gt;</span>dfs.namenode.name.dir<span style="color: #007700">&lt;/name&gt;</span>
        <span style="color: #007700">&lt;value&gt;</span>file:///hadoop-workspace22/storage/${user.name}/dfs/name<span style="color: #007700">&lt;/value&gt;</span>
    <span style="color: #007700">&lt;/property&gt;</span>
    <span style="color: #007700">&lt;property&gt;</span>
        <span style="color: #007700">&lt;name&gt;</span>dfs.datanode.data.dir<span style="color: #007700">&lt;/name&gt;</span>
        <span style="color: #007700">&lt;value&gt;</span>file:///hadoop-workspace22/storage/${user.name}/dfs/data<span style="color: #007700">&lt;/value&gt;</span>
    <span style="color: #007700">&lt;/property&gt;</span>
    <span style="color: #007700">&lt;property&gt;</span>
        <span style="color: #007700">&lt;name&gt;</span>dfs.namenode.checkpoint.dir<span style="color: #007700">&lt;/name&gt;</span>
        <span style="color: #007700">&lt;value&gt;</span>file:///hadoop-workspace22/storage/${user.name}/dfs/namesecondary<span style="color: #007700">&lt;/value&gt;</span>
    <span style="color: #007700">&lt;/property&gt;</span>
    <span style="color: #007700">&lt;property&gt;</span>
        <span style="color: #007700">&lt;name&gt;</span>dfs.replication<span style="color: #007700">&lt;/name&gt;</span>
        <span style="color: #007700">&lt;value&gt;</span>1<span style="color: #007700">&lt;/value&gt;</span>
    <span style="color: #007700">&lt;/property&gt;</span>
<span style="color: #007700">&lt;/configuration&gt;</span>
</pre>
</div>
<p>◇HDFS領域をフォーマットします</p>
<div class="div-example">
sudo -u hdfs ${HADOOP_PREFIX}/bin/hdfs namenode -format
</div>
<p>◇HDFSデーモンを起動します。</p>
<div class="div-example">
 sudo -u hdfs ${HADOOP_PREFIX}/sbin/hadoop-daemon.sh start namenode<br />
 sudo -u hdfs ${HADOOP_PREFIX}/sbin/hadoop-daemon.sh start secondarynamenode<br />
 sudo -u hdfs ${HADOOP_PREFIX}/sbin/hadoop-daemon.sh start datanode
</div>
<p>◇HDFS上のディレクトリを作成し、アクセス権限を与えます</p>
<div class="div-example">
sudo -u hdfs ${HADOOP_PREFIX}/bin/hadoop fs -chown hdfs:hadoop /<br />
sudo -u hdfs ${HADOOP_PREFIX}/bin/hadoop fs -chmod 755 /<br />
sudo -u hdfs ${HADOOP_PREFIX}/bin/hadoop fs -mkdir /tmp<br />
sudo -u hdfs ${HADOOP_PREFIX}/bin/hadoop fs -chown hdfs:hadoop /tmp<br />
sudo -u hdfs ${HADOOP_PREFIX}/bin/hadoop fs -chmod 1777 /tmp<br />
sudo -u hdfs ${HADOOP_PREFIX}/bin/hadoop fs -mkdir /user<br />
sudo -u hdfs ${HADOOP_PREFIX}/bin/hadoop fs -chown hdfs:hadoop /user<br />
sudo -u hdfs ${HADOOP_PREFIX}/bin/hadoop fs -chmod ug+w /user
</div>
<p>◇Web UIのアクセスURLは以下の通りです。</p>
<div class="div-example">
http://localhost:50070/  #NameNode<br />
http://localhost:50090/  #Secondary NameNode
</div>
<p><a name="yarn"></a></p>
<h3>YARN</h3>
<p>◇yarn-env.shに下記の環境変数を追加する</p>
<div class="div-example">
export HADOOP_WORKSPACE=/hadoop-workspace22<br />
export YARN_LOG_DIR=${HADOOP_WORKSPACE}/logs<br />
export YARN_PID_DIR=${HADOOP_WORKSPACE}/run
</div>
<p>◇yarn-site.xmlファイルに下記の設定を追加する</p>
<div class="div-example">
<!-- HTML generated using hilite.me -->
<div style="background: #ffffff; overflow:auto;width:auto;border:solid gray;border-width:.1em .1em .1em .8em;padding:.2em .6em;">
<pre style="margin: 0; line-height: 125%"><span style="color: #007700">&lt;configuration&gt;</span>

<span style="color: #888888">&lt;!-- Site specific YARN configuration properties --&gt;</span>
    <span style="color: #007700">&lt;property&gt;</span>
        <span style="color: #007700">&lt;name&gt;</span>yarn.resourcemanager.scheduler.class<span style="color: #007700">&lt;/name&gt;</span>
        <span style="color: #007700">&lt;value&gt;</span>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler<span style="color: #007700">&lt;/value&gt;</span>
        <span style="color: #007700">&lt;description&gt;</span>In case you do not want to use the default scheduler<span style="color: #007700">&lt;/description&gt;</span>
    <span style="color: #007700">&lt;/property&gt;</span>
    <span style="color: #007700">&lt;property&gt;</span>
        <span style="color: #007700">&lt;name&gt;</span>yarn.nodemanager.local-dirs<span style="color: #007700">&lt;/name&gt;</span>
        <span style="color: #007700">&lt;value&gt;</span>/hadoop-workspace22/${user.name}/nm/local<span style="color: #007700">&lt;/value&gt;</span>
        <span style="color: #007700">&lt;description&gt;</span>
              the local directories used by the nodemanager
              (default: /tmp/nm-local-dir)
        <span style="color: #007700">&lt;/description&gt;</span>
    <span style="color: #007700">&lt;/property&gt;</span>
<span style="color: #888888">&lt;!--</span>
<span style="color: #888888">    &lt;property&gt;</span>
<span style="color: #888888">        &lt;name&gt;yarn.nodemanager.address&lt;/name&gt;</span>
<span style="color: #888888">        &lt;value&gt;0.0.0.0:0&lt;/value&gt;</span>
<span style="color: #888888">        &lt;description&gt;the nodemanagers bind to this port&lt;/description&gt;</span>
<span style="color: #888888">    &lt;/property&gt; </span>
<span style="color: #888888">--&gt;</span>
    <span style="color: #007700">&lt;property&gt;</span>
        <span style="color: #007700">&lt;name&gt;</span>yarn.nodemanager.resource.memory-mb<span style="color: #007700">&lt;/name&gt;</span>
        <span style="color: #007700">&lt;value&gt;</span>8192<span style="color: #007700">&lt;/value&gt;</span>
        <span style="color: #007700">&lt;description&gt;</span>
            the amount of memory on the NodeManager in GB (default: 8192)
        <span style="color: #007700">&lt;/description&gt;</span>
    <span style="color: #007700">&lt;/property&gt;</span>
    <span style="color: #007700">&lt;property&gt;</span>
        <span style="color: #007700">&lt;name&gt;</span>yarn.nodemanager.remote-app-log-dir<span style="color: #007700">&lt;/name&gt;</span>
        <span style="color: #007700">&lt;value&gt;</span>/hadoop-workspace22/logs/${user.name}/nm<span style="color: #007700">&lt;/value&gt;</span>
        <span style="color: #007700">&lt;description&gt;</span>
            directory on hdfs where the application logs are moved to (default: /tmp/logs)
        <span style="color: #007700">&lt;/description&gt;</span>
    <span style="color: #007700">&lt;/property&gt;</span>
    <span style="color: #007700">&lt;property&gt;</span>
        <span style="color: #007700">&lt;name&gt;</span>yarn.nodemanager.log-dirs<span style="color: #007700">&lt;/name&gt;</span>
        <span style="color: #007700">&lt;value&gt;</span>/hadoop-workspace22/logs/${user.name}/nm<span style="color: #007700">&lt;/value&gt;</span>
        <span style="color: #007700">&lt;description&gt;</span>
             the directories used by Nodemanagers as log directories (default: /tmp/logs)
        <span style="color: #007700">&lt;/description&gt;</span>
    <span style="color: #007700">&lt;/property&gt;</span>
    <span style="color: #007700">&lt;property&gt;</span>
        <span style="color: #007700">&lt;name&gt;</span>yarn.nodemanager.aux-services<span style="color: #007700">&lt;/name&gt;</span>
        <span style="color: #007700">&lt;value&gt;</span>mapreduce_shuffle<span style="color: #007700">&lt;/value&gt;</span>
        <span style="color: #007700">&lt;description&gt;</span>shuffle service that needs to be set for Map Reduce to run<span style="color: #007700">&lt;/description&gt;</span>
    <span style="color: #007700">&lt;/property&gt;</span>
    <span style="color: #007700">&lt;property&gt;</span>
        <span style="color: #007700">&lt;name&gt;</span>mapreduce.job.hdfs-servers<span style="color: #007700">&lt;/name&gt;</span>
        <span style="color: #007700">&lt;value&gt;</span>${fs.defaultFS}<span style="color: #007700">&lt;/value&gt;</span>
        <span style="color: #888888">&lt;!-- yarn-default.xml deprecated key: fs.default.name  --&gt;</span>
    <span style="color: #007700">&lt;/property&gt;</span>
<span style="color: #007700">&lt;/configuration&gt;</span>
</pre>
</div>
</div>
<p>◇ローカルファイルシステムのディレクトリを作成して権限を付与します</p>
<div class="div-example">
sudo mkdir /hadoop-workspace22/logs/yarn<br />
sudo mkdir -p /hadoop-workspace22/logs/yarn/nm<br />
sudo mkdir -p  /hadoop-workspace22/logs/yarn/nm/local<br />
sudo chown -R yarn:hadoop /hadoop-workspace22/logs/yarn<br />
sudo chmod ug+w /hadoop-workspace22/logs/yarn
</div>
<p>◇HDFS上に必要なディレクトリを作成します</p>
<div class="div-example">
#yarn.nodemanager.remote-app-log-dir<br />
sudo -u hdfs ${HADOOP_PREFIX}/bin/hadoop fs -mkdir /hadoop-workspace22/logs<br />
sudo -u hdfs ${HADOOP_PREFIX}/bin/hadoop fs -mkdir /hadoop-workspace22/logs/yarn<br />
sudo -u hdfs ${HADOOP_PREFIX}/bin/hadoop fs -mkdir /hadoop-workspace22/logs/yarn/nm<br />
sudo -u hdfs ${HADOOP_PREFIX}/bin/hadoop fs -chown yarn:hadoop /hadoop-workspace22/logs/yarn/nm<br />
sudo -u hdfs ${HADOOP_PREFIX}/bin/hadoop fs -chmod 1777 /hadoop-workspace22/logs/yarn/nm
</div>
<p>◇yarnサービスを起動します。</p>
<div class="div-example">
sudo -u yarn ${HADOOP_PREFIX}/sbin/yarn-daemon.sh start resourcemanager<br />
sudo -u yarn ${HADOOP_PREFIX}/sbin/yarn-daemon.sh start nodemanager
</div>
<p>◇Web UIのアクセスURLは以下の通りです</p>
<div class="div-example">
http://localhost:8088/    # ResourceManager<br />
http://localhost:8042/    # NodeManager
</div>
<p><a name="mapreduce"></a></p>
<h3>MapReduce</h3>
<p>◇mapred-env.shに下記の環境変数を設定する</p>
<div class="div-example">
export HADOOP_WORKSPACE=/hadoop-workspace22<br />
export HADOOP_MAPRED_PID_DIR=$HADOOP_WORKSPACE/run<br />
export HADOOP_MAPRED_LOG_DIR=$HADOOP_WORKSPACE/logs/$USER
</div>
<p>◇mapred-site.xmlを設定する</p>
<div class="div-example">
<pre style="margin: 0; line-height: 125%"><span style="color: #007700">&lt;configuration&gt;</span>
    <span style="color: #007700">&lt;property&gt;</span>
        <span style="color: #007700">&lt;name&gt;</span>mapreduce.framework.name<span style="color: #007700">&lt;/name&gt;</span>
        <span style="color: #007700">&lt;value&gt;</span>yarn<span style="color: #007700">&lt;/value&gt;</span>
        <span style="color: #007700">&lt;description&gt;</span>The runtime framework for executing MapReduce jobs.
        Can be one of local, classic or yarn.
        (default: local)
        <span style="color: #007700">&lt;/description&gt;</span>
    <span style="color: #007700">&lt;/property&gt;</span>
    <span style="color: #007700">&lt;property&gt;</span>
        <span style="color: #007700">&lt;name&gt;</span>mapreduce.cluster.local.dir<span style="color: #007700">&lt;/name&gt;</span>
        <span style="color: #007700">&lt;value&gt;</span>/hadoop-workspace22/mapred/local<span style="color: #007700">&lt;/value&gt;</span>
        <span style="color: #007700">&lt;description&gt;</span>The local directory where MapReduce stores intermediate
        data files.  May be a comma-separated list of
        directories on different devices in order to spread disk i/o.
        Directories that do not exist are ignored.
        (default: ${hadoop.tmp.dir}/mapred/local on LOCAL)
        <span style="color: #007700">&lt;/description&gt;</span>
    <span style="color: #007700">&lt;/property&gt;</span>
    <span style="color: #007700">&lt;property&gt;</span>
        <span style="color: #007700">&lt;name&gt;</span>mapreduce.jobtracker.system.dir<span style="color: #007700">&lt;/name&gt;</span>
        <span style="color: #007700">&lt;value&gt;</span>/hadoop-workspace22/mapred/system<span style="color: #007700">&lt;/value&gt;</span>
        <span style="color: #007700">&lt;description&gt;</span>The directory where MapReduce stores control files.
        (default: ${hadoop.tmp.dir}/mapred/system on HDFS)
        <span style="color: #007700">&lt;/description&gt;</span>
    <span style="color: #007700">&lt;/property&gt;</span>

    <span style="color: #007700">&lt;property&gt;</span>
        <span style="color: #007700">&lt;name&gt;</span>yarn.app.mapreduce.am.staging-dir<span style="color: #007700">&lt;/name&gt;</span>
        <span style="color: #007700">&lt;value&gt;</span>/user<span style="color: #007700">&lt;/value&gt;</span>
    <span style="color: #007700">&lt;/property&gt;</span>
<span style="color: #888888">&lt;!--    </span>
<span style="color: #888888">    &lt;property&gt;</span>
<span style="color: #888888">        &lt;name&gt;mapreduce.jobtracker.staging.root.dir&lt;/name&gt;</span>
<span style="color: #888888">        &lt;value&gt;/user&lt;/value&gt;</span>
<span style="color: #888888">        &lt;description&gt;The root of the staging area for users&#39; job files</span>
<span style="color: #888888">        In practice, this should be the directory where users&#39; home</span>
<span style="color: #888888">        directories are located (usually /user)</span>
<span style="color: #888888">        (default: ${hadoop.tmp.dir}/mapred/staging on HDFS)</span>
<span style="color: #888888">        &lt;/description&gt;</span>
<span style="color: #888888">    &lt;/property&gt;</span>
<span style="color: #888888">    --&gt;</span>
    <span style="color: #007700">&lt;property&gt;</span>
        <span style="color: #007700">&lt;name&gt;</span>mapreduce.cluster.temp.dir<span style="color: #007700">&lt;/name&gt;</span>
        <span style="color: #007700">&lt;value&gt;</span>/hadoop-workspace22/mapred/temp<span style="color: #007700">&lt;/value&gt;</span>
        <span style="color: #007700">&lt;description&gt;</span>A shared directory for temporary files.
        (default: ${hadoop.tmp.dir}/mapred/temp on LOCAL)
        <span style="color: #007700">&lt;/description&gt;</span>
    <span style="color: #007700">&lt;/property&gt;</span>
    <span style="color: #007700">&lt;property&gt;</span>
        <span style="color: #007700">&lt;name&gt;</span>mapreduce.jobhistory.intermediate-done-dir<span style="color: #007700">&lt;/name&gt;</span>
        <span style="color: #007700">&lt;value&gt;</span>/hadoop-workspace22/mapred/history/intermediate_done<span style="color: #007700">&lt;/value&gt;</span>
    <span style="color: #007700">&lt;/property&gt;</span> 
    <span style="color: #007700">&lt;property&gt;</span>
        <span style="color: #007700">&lt;name&gt;</span>mapreduce.jobhistory.done-dir<span style="color: #007700">&lt;/name&gt;</span>
        <span style="color: #007700">&lt;value&gt;</span>/hadoop-workspace22/mapred/history/done<span style="color: #007700">&lt;/value&gt;</span>
    <span style="color: #007700">&lt;/property&gt;</span> 
 
<span style="color: #007700">&lt;/configuration&gt;</span>
</pre>
</div>
<p>◇HDFS上に必要なディレクトリを追加します</p>
<div class="div-example">
sudo -u hdfs ${HADOOP_PREFIX}/bin/hadoop fs -mkdir /hadoop-workspace22/mapred/history<br />
sudo -u hdfs ${HADOOP_PREFIX}/bin/hadoop fs -chown -R mapred:hadoop /hadoop-workspace22/mapred<br />
sudo -u hdfs ${HADOOP_PREFIX}/bin/hadoop fs -chmod -R ug+wr /hadoop-workspace22/mapred
</div>
<p>◇履歴サーバーを起動します</p>
<p>起動失敗した場合、/hadoop-workspace22/logs/mapredにあるログファイルを確認してHDFS上のディレクトリに書き込み権限があるかどうか再確認してください</p>
<div class="div-example">
sudo -u mapred ${HADOOP_PREFIX}/sbin/mr-jobhistory-daemon.sh start historyserver
</div>
<p>◇履歴サーバWeb UIのアクセスURLは以下の通りです</p>
<div class="div-example">
<p>http://localhost:19888/</p>
</div>
<p><a name="test"></a></p>
<h3>テスト、確認</h3>
<p>◇テストユーザ作成</p>
<div class="div-example">
sudo adduser htest<br />
sudo usermod -a -G hadoop htest
</div>
<p>◇HDFS上のユーザジョブ格納ディレクトリ作成</p>
<div class="div-example">
sudo -u hdfs ${HADOOP_PREFIX}/bin/hadoop fs -mkdir /user/htest<br />
sudo -u hdfs ${HADOOP_PREFIX}/bin/hadoop fs -chown htest:htest /user/aidabo
</div>
<p>◇ジョブ実行前のプロセス</p>
<div class="div-example">
jps|sort<br />
17440 NameNode<br />
17516 SecondaryNameNode<br />
17572 DataNode<br />
18950 ResourceManager<br />
19183 NodeManager<br />
29116 JobHistoryServer
</div>
<p>◇MapReduceテスト</p>
<div class="div-example">
sudo -u htest ${HADOOP_PREFIX}/bin/hadoop jar /hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar pi 5 10<br />
sudo -u htest ${HADOOP_PREFIX}/bin/hadoop jar /hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar  randomwriter out
</div>
<p>◇ジョブ起動中のプロセス</p>
<div class="div-example">
 jps|sort<br />
17440 NameNode<br />
17516 SecondaryNameNode<br />
17572 DataNode<br />
18950 ResourceManager<br />
19183 NodeManager<br />
29116 JobHistoryServer<br />
34499 RunJar<br />
34705 MRAppMaster<br />
35062 YarnChild<br />
35072 YarnChild<br />
35074 YarnChild<br />
35079 YarnChild<br />
35080 YarnChild
</div>
<p>◇ジョブ終了後のプロセス</p>
<div class="div-example">
jps|sort<br />
17440 NameNode<br />
17516 SecondaryNameNode<br />
17572 DataNode<br />
18950 ResourceManager<br />
19183 NodeManager<br />
29116 JobHistoryServer
</div>
<p>◇ジョブ実行終了後、historyserverから確認します。</p>
<div class="div-example">
<p>http://localhost:19888/jobhistory</p>
</div>
<p>The post <a href="http://www.janabiz.com/hadoop-single-node-setup/">Hadoop-2.2.10 Single nodeのセットアップ</a> appeared first on <a href="http://www.janabiz.com">ジャナ・ビジネス・コンサルティング</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.janabiz.com/hadoop-single-node-setup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPressプラグイン「Multi Device Switcher」でAndroidスマホとタブレット端末のWordPressテーマ切り替え方法</title>
		<link>http://www.janabiz.com/wordpress-android-tablet/</link>
		<comments>http://www.janabiz.com/wordpress-android-tablet/#comments</comments>
		<pubDate>Fri, 24 May 2013 08:00:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[tablet]]></category>

		<guid isPermaLink="false">http://www.janabiz.com/?p=686</guid>
		<description><![CDATA[<p>WordPressプラグイン「Multi Device Switcher」は iPhone, iPod, Nexus 7 などデバイスの名称 (ブランド) をベースに WordPress のテーマを切り替えることを基本としています。 そこで問題になるのが Android OS のデバイスです。 Android はオープンソースで、メーカーは Android を自由にデバイスに組み込めるため、いろいろな Android 端末がリリースされます。ほんとうに多彩です。 現状「Multi Device Switcher」でもデフォルトのユーザーエージェント設定は、スマートフォン用のユーザーエージェントに「Android」が入っています。Android が搭載されているスマホとタブレット端末の両方がスマートフォン用テーマに切り替えられます。 そこで「Android スマホとタブレット端末別々に切り替えられないの?」「やってみたけれどうまくできなかった」とご質問をいただきます。 Android スマートフォンとタブレット端末でウェブページをブラウザで閲覧するとユーザーエージェントには両方とも「Android」の文字列が入ります。ここがくせ者になっています。 またタブレット端末は PC 用のウェブサイトが表示されることを期待している場合も。 Google ウェブマスター向け公式ブログ: タブレット端末ユーザーにはフルサイズのウェブを表示しましょう Official Google Webmaster Central Blog: Giving Tablet Users the Full-Sized Web ということで前置きが長くなりましたが、WordPressプラグイン「Multi Device Switcher」で Android に対応したテーマの切り替え方法をシェアしたいと思います。 Androidスマホとタブレット端末のWordPressテーマ切り替え設定の仕方 WordPressプラグイン「Multi Device Switcher」の新機能「Custom Switcher」を使って Android スマホとタブレット端末のテーマを切り替えます。 Android スマホはスマートフォン用テーマに切り替え、タブレット端末は PC 用ウェブサイト (通常のテーマ) を表示する WordPress メニュー「外観 > マルチデバイス」へ Custom Switcher に「Android」と入力して「追加」ボタンを押します。 タブを「ユーザーエージェント」に切り替えて「Android」の項目に「Android.*mobile」を入力。 Android.*mobile 「スマートフォン」にあるユーザーエージェント「Android」を削除。 iPhone, iPod, dream, CUPCAKE, Windows Phone, webOS, BB10, BlackBerry8707, BlackBerry9000, BlackBerry9300, BlackBerry9500, BlackBerry9530, BlackBerry9520, BlackBerry9550, BlackBerry9700, BlackBerry 93, BlackBerry 97, BlackBerry 99, BlackBerry 98 タブを「テーマ」に切り替えてテーマを選びます。Custom Switcher「Android」で Android スマホでウェブサイトを見たときに切り替えるテーマを選びます。 「タブレット端末用テーマ」で「None」を選びます。 「変更を保存」ボタンを押します。 設定完了 Android スマホはスマートフォン用テーマに切り替え、タブレット端末はタブレット端末用テーマに切り替え表示する WordPress メニュー「外観 &#8230; <a href="http://www.janabiz.com/wordpress-android-tablet/">Continue reading <span class="meta-nav">&#8594;</span></a></p><p>The post <a href="http://www.janabiz.com/wordpress-android-tablet/">WordPressプラグイン「Multi Device Switcher」でAndroidスマホとタブレット端末のWordPressテーマ切り替え方法</a> appeared first on <a href="http://www.janabiz.com">ジャナ・ビジネス・コンサルティング</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>WordPressプラグイン「Multi Device Switcher」は iPhone, iPod, Nexus 7 などデバイスの名称 (ブランド) をベースに WordPress のテーマを切り替えることを基本としています。</p>
<p>そこで問題になるのが Android OS のデバイスです。 Android はオープンソースで、メーカーは Android を自由にデバイスに組み込めるため、いろいろな Android 端末がリリースされます。ほんとうに多彩です。</p>
<p>現状「Multi Device Switcher」でもデフォルトのユーザーエージェント設定は、スマートフォン用のユーザーエージェントに「Android」が入っています。Android が搭載されているスマホとタブレット端末の両方がスマートフォン用テーマに切り替えられます。</p>
<p>そこで「Android スマホとタブレット端末別々に切り替えられないの?」「やってみたけれどうまくできなかった」とご質問をいただきます。</p>
<p>Android スマートフォンとタブレット端末でウェブページをブラウザで閲覧するとユーザーエージェントには両方とも「Android」の文字列が入ります。ここがくせ者になっています。</p>
<p>またタブレット端末は PC 用のウェブサイトが表示されることを期待している場合も。</p>
<p>Google ウェブマスター向け公式ブログ: タブレット端末ユーザーにはフルサイズのウェブを表示しましょう<br />
Official Google Webmaster Central Blog: Giving Tablet Users the Full-Sized Web<br />
ということで前置きが長くなりましたが、WordPressプラグイン「Multi Device Switcher」で Android に対応したテーマの切り替え方法をシェアしたいと思います。</p>
<h2>Androidスマホとタブレット端末のWordPressテーマ切り替え設定の仕方</h2>
<p>WordPressプラグイン「Multi Device Switcher」の新機能「Custom Switcher」を使って Android スマホとタブレット端末のテーマを切り替えます。</p>
<h3>Android スマホはスマートフォン用テーマに切り替え、タブレット端末は PC 用ウェブサイト (通常のテーマ) を表示する</h3>
<ol>
<li>WordPress メニュー「外観 > マルチデバイス」へ</li>
<li>Custom Switcher に「<strong>Android</strong>」と入力して「追加」ボタンを押します。</li>
<li>タブを「ユーザーエージェント」に切り替えて「Android」の項目に「<strong>Android.*mobile</strong>」を入力。</li>
<div class="div-example">Android.*mobile</div>
<li>「スマートフォン」にあるユーザーエージェント「Android」を削除。</li>
<div class="div-example">
iPhone, iPod, dream, CUPCAKE, Windows Phone, webOS, BB10, BlackBerry8707, BlackBerry9000, BlackBerry9300, BlackBerry9500, BlackBerry9530, BlackBerry9520, BlackBerry9550, BlackBerry9700, BlackBerry 93, BlackBerry 97, BlackBerry 99, BlackBerry 98</div>
<li>タブを「テーマ」に切り替えてテーマを選びます。Custom Switcher「<strong>Android</strong>」で Android スマホでウェブサイトを見たときに切り替えるテーマを選びます。</li>
<li>「タブレット端末用テーマ」で「<strong>None</strong>」を選びます。</li>
<li>「変更を保存」ボタンを押します。</li>
<li>設定完了</li>
</ol>
<h3>Android スマホはスマートフォン用テーマに切り替え、タブレット端末はタブレット端末用テーマに切り替え表示する</h3>
<ol>
<li>WordPress メニュー「外観 > マルチデバイス」へ</li>
<li>Custom Switcherに「<strong>Android</strong>」と入力して「追加」ボタンを押します。</li>
<li>タブを「ユーザーエージェント」に切り替えて「Android」の項目に「<strong>Android.*mobile</strong>」を入力。</li>
<div class="div-example">Android.*mobile</div>
<li>　「スマートフォン」にあるユーザーエージェント「Android」を削除。</li>
<div class="div-example">iPhone, iPod, dream, CUPCAKE, Windows Phone, webOS, BB10, BlackBerry8707, BlackBerry9000, BlackBerry9300, BlackBerry9500, BlackBerry9530, BlackBerry9520, BlackBerry9550, BlackBerry9700, BlackBerry 93, BlackBerry 97, BlackBerry 99, BlackBerry 98</div>
<li>「タブレット端末」にユーザーエージェント「Android」を追加。</li>
<div class="div-example">iPad, Kindle, Sony Tablet, Nexus 7, Android</div>
<li>タブを「テーマ」に切り替えてテーマを選びます。Custom Switcher「<strong>Android</strong>」で Android スマホでウェブサイトを見たときに切り替えるテーマを選びます。</li>
<li>「タブレット端末用テーマ」でテーマを選びます。</li>
<li>「変更を保存」ボタンを押します。</li>
<li>設定完了</li>
</ol>
<p>以上、「Custom Switcher」を使った Android スマホとタブレット端末のテーマ切り替え方法でした。いかがでしたでしょうか。是非活用してみてください。</p>
<p><span>This article referenced from <a href="http://blog.thingslabo.com/archives/000308.html">http://blog.thingslabo.com</a></span></p>
<p>The post <a href="http://www.janabiz.com/wordpress-android-tablet/">WordPressプラグイン「Multi Device Switcher」でAndroidスマホとタブレット端末のWordPressテーマ切り替え方法</a> appeared first on <a href="http://www.janabiz.com">ジャナ・ビジネス・コンサルティング</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.janabiz.com/wordpress-android-tablet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenXML Spreadsheet, how to copy and insert specified rows</title>
		<link>http://www.janabiz.com/openxml-copy-spreadsheet-rows/</link>
		<comments>http://www.janabiz.com/openxml-copy-spreadsheet-rows/#comments</comments>
		<pubDate>Mon, 13 May 2013 09:44:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Excel]]></category>
		<category><![CDATA[Spreadsheet]]></category>
		<category><![CDATA[OpenXML]]></category>

		<guid isPermaLink="false">http://new.janabiz.com/?p=371</guid>
		<description><![CDATA[<p>We usually use OpenXML spreadsheet to create excel document and report. For some document and report, sometimes we hope copy and insert some rows or columns automatically. For example , we want to output a list data into excel worksheet whose element has 3 formatted rows including some merge cells etc. If list&#8217;s size is 10, we hope copy 3 formatted rows of first element 10 times and insert copied rows below the first element rows automatically. In OpenXML spreadsheet, when you copy some rows and insert copied rows into destination, there are many works to do. First, in the copied rows, maybe there are some merge cells, data validate &#8230; <a href="http://www.janabiz.com/openxml-copy-spreadsheet-rows/">Continue reading <span class="meta-nav">&#8594;</span></a></p><p>The post <a href="http://www.janabiz.com/openxml-copy-spreadsheet-rows/">OpenXML Spreadsheet, how to copy and insert specified rows</a> appeared first on <a href="http://www.janabiz.com">ジャナ・ビジネス・コンサルティング</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>We usually use OpenXML spreadsheet to create excel document and report. For some document and report, sometimes we hope copy and insert some rows or columns automatically. For example , we want to output a list data into excel worksheet whose element has 3 formatted rows including some merge cells etc. If list&#8217;s size is 10, we hope copy 3 formatted rows of first element 10 times and insert copied rows below the first element rows automatically. </p>
<p>In OpenXML spreadsheet, when you copy some rows and insert copied rows into destination, there are many works to do. First, in the copied rows, maybe there are some merge cells, data validate list ( pull down cells), formulas, drawings, charts. You must change the row&#8217;s index number to the inserted rows. Then the row&#8217;s index number for objects below in the destination must be changed. These objects include normal cells, merge cells, data validate list, formulas, drawings, charts etc.</p>
<p>The following is part of code to explain how to implement copy and insert. About the complete examples, please <a href="/dl?pcode=200002" alt="OpenXML spreadsheet | Excel solution | Excel Report | Excelソリューション">Download ExcelTDF Package</a> </p>
<div class="div-example">
<pre style="margin: 0; line-height: 125%">        <span style="color: #008000">/// &lt;summary&gt;                                                      </span>
        <span style="color: #008000">/// Copy the part of rows from srcRowFrom to srcRowTo between srcColFrom and srcColTo. </span>
        <span style="color: #008000">/// The row index, whose  column is between column srcColFrom and srcColTo, and whose</span>
        <span style="color: #008000">/// row is below the destRowFrom, will be changed after cloned cells added into worksheet.</span>
        <span style="color: #008000">/// &lt;/summary&gt;</span>
        <span style="color: #008000">/// &lt;param name=&quot;workbookPart&quot;&gt;&lt;see cref=&quot;WorkbookPart&quot;/&gt;&lt;/param&gt;</span>
        <span style="color: #008000">/// &lt;param name=&quot;sheetIndex&quot;&gt;worksheet index&lt;/param&gt;</span>
        <span style="color: #008000">/// &lt;param name=&quot;srcRowFrom&quot;&gt;source from row index&lt;/param&gt;</span>
        <span style="color: #008000">/// &lt;param name=&quot;srcRowTo&quot;&gt;source to row index&lt;/param&gt;</span>
        <span style="color: #008000">/// &lt;param name=&quot;destRowFrom&quot;&gt;destination from row index&lt;/param&gt;</span>
        <span style="color: #008000">/// &lt;param name=&quot;copyTimes&quot;&gt;the times to be copied&lt;/param&gt;</span>
        <span style="color: #008000">/// &lt;param name=&quot;srcColFrom&quot;&gt;limitation of column left&lt;/param&gt;</span>
        <span style="color: #008000">/// &lt;param name=&quot;srcColTo&quot;&gt;limitation of column right&lt;/param&gt;</span>
        <span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">void</span> CopyRowRange(WorkbookPart workbookPart, <span style="color: #2b91af">int</span> sheetIndex,
            <span style="color: #2b91af">int</span> srcRowFrom, <span style="color: #2b91af">int</span> srcRowTo, <span style="color: #2b91af">int</span> destRowFrom, <span style="color: #2b91af">int</span> copyTimes, <span style="color: #2b91af">int</span> srcColFrom, <span style="color: #2b91af">int</span> srcColTo)
        {
            <span style="color: #008000">//only support copy down </span>
            <span style="color: #0000ff">if</span> (copyTimes &lt;= 0 || srcRowTo &lt; srcRowFrom || destRowFrom &lt; srcRowFrom) <span style="color: #0000ff">return</span>;
            <span style="color: #2b91af">int</span> destRowFromBase = destRowFrom;

            <span style="color: #008000">//Get the source sheet to be copied</span>
            WorksheetPart worksheetPart = GetWorksheetPart(workbookPart, sheetIndex);
            SheetData sheetData = worksheetPart.Worksheet.GetFirstChild&lt;SheetData&gt;();

            <span style="color: #008000">//get cells to be cloned according to the specified rows and columns</span>
            IList&lt;Cell&gt; cells = sheetData.Descendants&lt;Cell&gt;().Where(c =&gt;
                GetRowIndex(c.CellReference) &gt;= srcRowFrom &amp;&amp;
                GetRowIndex(c.CellReference) &lt;= srcRowTo &amp;&amp;
                GetCellColIndex(c.CellReference) &gt;= srcColFrom &amp;&amp;
                GetCellColIndex(c.CellReference) &lt;= srcColTo).ToList&lt;Cell&gt;();

            <span style="color: #008000">//no cells to be cloned</span>
            <span style="color: #0000ff">if</span> (cells.Count() == 0) <span style="color: #0000ff">return</span>;


            <span style="color: #008000">//after cloned, the index of rows from destRowFrom should be changed</span>
            <span style="color: #008000">//diff rows between srcColFrom and srcColTo</span>
            <span style="color: #2b91af">int</span> copiedRowCount = srcRowTo - srcRowFrom + 1;

            <span style="color: #008000">//move row index between srcColFrom and srcColTo that the row index greater or equal to </span>
            <span style="color: #008000">//destRowFrom</span>
            MoveRowIndex(workbookPart, sheetIndex, destRowFrom - 1, copiedRowCount * copyTimes, srcColFrom, srcColTo);

            <span style="color: #008000">//temporary array of changed row index</span>
            IList&lt;<span style="color: #2b91af">int</span>&gt; changeRowIndexs = <span style="color: #0000ff">new</span> List&lt;<span style="color: #2b91af">int</span>&gt;();

            <span style="color: #008000">//cloned cells, row index/cells</span>
            IDictionary&lt;<span style="color: #2b91af">int</span>, IList&lt;Cell&gt;&gt; clonedCells = <span style="color: #0000ff">null</span>;

            <span style="color: #008000">//formula cells in cloned cells</span>
            IList&lt;Cell&gt; formulaCells = <span style="color: #0000ff">new</span> List&lt;Cell&gt;();

            <span style="color: #008000">//cloned related rows for speed</span>
            IList&lt;Row&gt; cloneRelatedRows = <span style="color: #0000ff">new</span> List&lt;Row&gt;();

            <span style="color: #0000ff">for</span> (<span style="color: #2b91af">int</span> i = 0; i &lt; copyTimes; i++)
            {
                <span style="color: #008000">//next copy col index</span>
                destRowFrom = destRowFromBase + copiedRowCount * i;
                <span style="color: #008000">// changed column index</span>
                <span style="color: #2b91af">int</span> changedRows = destRowFrom - srcRowFrom;

                <span style="color: #008000">//add change column index to list</span>
                changeRowIndexs.Add(changedRows);
                <span style="color: #008000">//clear formula cells</span>
                formulaCells.Clear();

                <span style="color: #008000">//1: cloned cells, row index/cell list </span>
                clonedCells = <span style="color: #0000ff">new</span> Dictionary&lt;<span style="color: #2b91af">int</span>, IList&lt;Cell&gt;&gt;();

                <span style="color: #0000ff">foreach</span> (Cell cell <span style="color: #0000ff">in</span> cells)
                {
                    Cell newCell = (Cell)cell.CloneNode(<span style="color: #0000ff">true</span>);
                    <span style="color: #2b91af">int</span>[] indexs = GetCellIndex(cell.CellReference);
                    <span style="color: #008000">//change row index of cloned cell</span>
                    <span style="color: #2b91af">int</span> rowIndex = indexs[1] + changedRows;
                    newCell.CellReference = GetColumnName(cell.CellReference) + rowIndex.ToString();

                    IList&lt;Cell&gt; rowCells = <span style="color: #0000ff">null</span>;
                    <span style="color: #0000ff">if</span> (clonedCells.ContainsKey(rowIndex))
                        rowCells = clonedCells[rowIndex];
                    <span style="color: #0000ff">else</span>
                    {
                        rowCells = <span style="color: #0000ff">new</span> List&lt;Cell&gt;();
                        clonedCells.Add(rowIndex, rowCells);
                    }
                    rowCells.Add(newCell);

                    <span style="color: #008000">//if is formula cell</span>
                    <span style="color: #0000ff">if</span> (newCell.CellFormula != <span style="color: #0000ff">null</span> &amp;&amp; newCell.CellFormula.Text.Length &gt; 0)
                    {
                        formulaCells.Add(newCell);
                    }
                }

                <span style="color: #008000">//add cloned cell into row</span>
                <span style="color: #0000ff">foreach</span> (<span style="color: #2b91af">int</span> rowIndex <span style="color: #0000ff">in</span> clonedCells.Keys)
                {
                    Row row = sheetData.Elements&lt;Row&gt;().Where(r =&gt; r.RowIndex == rowIndex).FirstOrDefault();
                    <span style="color: #008000">//if no this row </span>
                    <span style="color: #0000ff">if</span> (row == <span style="color: #0000ff">null</span>)
                    {
                        row = <span style="color: #0000ff">new</span> Row() { RowIndex = (<span style="color: #2b91af">uint</span>)rowIndex };
                        <span style="color: #008000">//find insert position</span>
                        Row refRow = sheetData.Elements&lt;Row&gt;().Where(r =&gt; r.RowIndex &gt; rowIndex).OrderBy(r =&gt; r.RowIndex).FirstOrDefault();
                        <span style="color: #0000ff">if</span> (refRow == <span style="color: #0000ff">null</span>)
                            sheetData.AppendChild&lt;Row&gt;(row);
                        <span style="color: #0000ff">else</span>
                            sheetData.InsertBefore&lt;Row&gt;(row, refRow);
                    }
                    row.Append(clonedCells[rowIndex].ToArray());

                    <span style="color: #008000">//add into clone related rows</span>
                    cloneRelatedRows.Add(row);
                }

                <span style="color: #008000">//2: processing copied range&#39;s formula </span>
                ChangeFormulaRowNumber(formulaCells, changedRows);

                <span style="color: #008000">//3: copy drawings in range</span>
                CopyDrawingsInRange(worksheetPart, srcRowFrom, srcRowTo, srcColFrom, srcColTo, destRowFrom, -1);
            }

            <span style="color: #008000"></span>
            <span style="color: #0000ff">foreach</span> (Row row <span style="color: #0000ff">in</span> cloneRelatedRows)
            {
                <span style="color: #008000">// sort by column name</span>
                IList&lt;Cell&gt; cs = row.Elements&lt;Cell&gt;().OrderBy(c =&gt; GetCellColIndex(c.CellReference.Value)).ToList&lt;Cell&gt;();
                row.RemoveAllChildren();
                row.Append(cs.ToArray());
            }
            
            <span style="color: #008000">//2: process merge cell in cloned rows</span>
            MergeCells mcells = worksheetPart.Worksheet.GetFirstChild&lt;MergeCells&gt;();
            <span style="color: #0000ff">if</span> (mcells != <span style="color: #0000ff">null</span>)
            {
                IList&lt;MergeCell&gt; newMergeCells = <span style="color: #0000ff">new</span> List&lt;MergeCell&gt;();
                IEnumerable&lt;MergeCell&gt; clonedMergeCells = mcells.Elements&lt;MergeCell&gt;().
                    Where(m =&gt; MergeCellInRange(m, srcRowFrom, srcRowTo, srcColFrom, srcColTo)).ToList&lt;MergeCell&gt;();
                <span style="color: #0000ff">foreach</span> (MergeCell cmCell <span style="color: #0000ff">in</span> clonedMergeCells)
                {
                    <span style="color: #0000ff">foreach</span> (<span style="color: #2b91af">int</span> changedRows <span style="color: #0000ff">in</span> changeRowIndexs)
                    {
                        MergeCell newMergeCell = CreateChangedRowMergeCell(cmCell, changedRows);
                        newMergeCells.Add(newMergeCell);
                    }
                }
                <span style="color: #2b91af">uint</span> count = mcells.Count.Value;
                mcells.Count = <span style="color: #0000ff">new</span> UInt32Value(count + (<span style="color: #2b91af">uint</span>)newMergeCells.Count);
                mcells.Append(newMergeCells.ToArray());
            }

            <span style="color: #008000">//3: process datavalidate list</span>
            IDictionary&lt;<span style="color: #2b91af">string</span>, DataValidation&gt; validates = GetDataValidatesInRange(worksheetPart, srcRowFrom, srcRowTo, srcColFrom, srcColTo);
            <span style="color: #0000ff">foreach</span> (<span style="color: #2b91af">string</span> cellname <span style="color: #0000ff">in</span> validates.Keys)
            {
                <span style="color: #0000ff">foreach</span> (<span style="color: #2b91af">int</span> changedRows <span style="color: #0000ff">in</span> changeRowIndexs)
                {
                    AddDataValidateRefItemOfChangedRow(cellname, changedRows, validates[cellname]);
                }
            }
        }
</pre>
</div>
<p>The post <a href="http://www.janabiz.com/openxml-copy-spreadsheet-rows/">OpenXML Spreadsheet, how to copy and insert specified rows</a> appeared first on <a href="http://www.janabiz.com">ジャナ・ビジネス・コンサルティング</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.janabiz.com/openxml-copy-spreadsheet-rows/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ExcelTDF, create excel report by metadata quickly</title>
		<link>http://www.janabiz.com/exceltdf-fast-create-excel-report-by-metadata/</link>
		<comments>http://www.janabiz.com/exceltdf-fast-create-excel-report-by-metadata/#comments</comments>
		<pubDate>Mon, 13 May 2013 09:37:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Excel]]></category>
		<category><![CDATA[Spreadsheet]]></category>

		<guid isPermaLink="false">http://new.janabiz.com/?p=366</guid>
		<description><![CDATA[<p>ExcelTDF provides very simple way to create complicated excel report. ExcelTDF is able to process row range, column range, block range and complicated range which including some child ranges such as list, list clone range, list-in-list range etc. You can define these ranges by Metadata. Let us show some examples. Download Metadata examples FastExcelReport 1. Create a console application project: assume it is S:\project\FastExcelReport. 2. Set ExcelTDF configuration as following. 2.1. Add ExcelTDF repository configuration file Repository.config into your project. The content of Repository.config is shown as following &#60;?xml version=&#34;1.0&#34; encoding=&#34;utf-8&#34; ?&#62; &#60;objects xmlns=&#34;http://www.springframework.net&#34;&#62; &#60;object id=&#34;mydemo&#34; type=&#34;JanaBiz.OpenXml.Repository.FileSystemRepositoryManager, JanaBiz.OpenXml&#34;&#62; &#60;property name=&#34;RepositoryName&#34; value=&#34;mydemo&#34;/&#62; &#60;property name=&#34;RepositoryUri&#34; value=&#34;../Templates&#34;/&#62; &#60;/object&#62; &#60;/objects&#62; By the above configuration, &#8230; <a href="http://www.janabiz.com/exceltdf-fast-create-excel-report-by-metadata/">Continue reading <span class="meta-nav">&#8594;</span></a></p><p>The post <a href="http://www.janabiz.com/exceltdf-fast-create-excel-report-by-metadata/">ExcelTDF, create excel report by metadata quickly</a> appeared first on <a href="http://www.janabiz.com">ジャナ・ビジネス・コンサルティング</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>ExcelTDF provides very simple way to create complicated excel report. ExcelTDF is able to process row range, column range, block range and complicated range which including some child ranges such as list, list clone range, list-in-list range etc. You can define these ranges by Metadata. Let us show some examples.</p>
<p>Download Metadata examples <a href='/wp-content/uploads/FastExcelReport.zip'>FastExcelReport</a></p>
<p>1. Create a console application project: assume it is S:\project\FastExcelReport.</p>
<p>2. Set ExcelTDF configuration as following.</p>
<p>2.1. Add ExcelTDF repository configuration file <strong>Repository.config</strong> into your project. The content of Repository.config is shown as following</p>
<div class="div-example">
<pre style="margin: 0; line-height: 125%">&lt;?xml version=<span style="color: #a31515">&quot;1.0&quot;</span> encoding=<span style="color: #a31515">&quot;utf-8&quot;</span> ?&gt;
&lt;objects xmlns=<span style="color: #a31515">&quot;http://www.springframework.net&quot;</span>&gt;
  
  &lt;<span style="color: #2b91af">object</span> id=<span style="color: #a31515">&quot;mydemo&quot;</span> type=<span style="color: #a31515">&quot;JanaBiz.OpenXml.Repository.FileSystemRepositoryManager, JanaBiz.OpenXml&quot;</span>&gt;
    &lt;property name=<span style="color: #a31515">&quot;RepositoryName&quot;</span> <span style="color: #0000ff">value</span>=<span style="color: #a31515">&quot;mydemo&quot;</span>/&gt;
    &lt;property name=<span style="color: #a31515">&quot;RepositoryUri&quot;</span> <span style="color: #0000ff">value</span>=<span style="color: #a31515">&quot;../Templates&quot;</span>/&gt;
  &lt;/<span style="color: #2b91af">object</span>&gt;
&lt;/objects&gt;
</pre>
</div>
<p>By the above configuration, your template and template range configuration file are placed in the directory of ../Templates/mydemo (RepositoryName) which is related the executable directory bin.  The template file name *.xlsx and template range configuration file *.xml must have the same name, and this name is also their Template ID. ExcelTDF will search all templates and template range configuration files in root repository and subdirectories. <strong>When you use metadata, no template range configuration file is needed</strong></p>
<p>3. Design your template, here named MetadataTest.xslx, and save it into the specified path of repository configured above S:\project\FastExcelReport\Templates\mydemo\MetadataTest.xlsx </p>
<p><a href="/wp-content/uploads/metadatatest.png"><img src="/wp-content/uploads/metadatatest.png" alt="ExcelTDF .NET metadata | Excel report" title="ExcelTDF .NET metadata | Excel report" width="1280" height="994" class="aligncenter size-full wp-image-1265" /></a></p>
<p>4. Create your data model according to the template ranges.</p>
<p>4.1. Add reference assemblies<br />
&nbsp;&nbsp;&nbsp;&nbsp; . JanaBiz.OpenXml.dll<br />
&nbsp;&nbsp;&nbsp;&nbsp; . DocumentFormat.OpenXml.dll<br />
&nbsp;&nbsp;&nbsp;&nbsp; . log4net.dll<br />
&nbsp;&nbsp;&nbsp;&nbsp; . Spring.Core.dll</p>
<p>4.2. Create data model class as following</p>
<p><!-- HTML generated using hilite.me -->
<div class="div-example">
<pre style="margin: 0; line-height: 125%"><span style="color: #0000ff">using</span> System;
<span style="color: #0000ff">using</span> System.Collections.Generic;
<span style="color: #0000ff">using</span> System.Linq;
<span style="color: #0000ff">using</span> System.Text;
<span style="color: #0000ff">using</span> JanaBiz.OpenXml;

<span style="color: #008000">//define class for each range </span>
<span style="color: #0000ff">namespace</span> FastExcelReport
{
    <span style="color: #008000">/// &lt;summary&gt;</span>
    <span style="color: #008000">/// Assume A-Range is root range</span>
    <span style="color: #008000">/// &lt;/summary&gt;</span>
    [ExcelRange(&quot;A-Range&quot;, &quot;A1&quot;, &quot;AF40&quot;, &quot;BlockRangeService&quot;)]
    <span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> <span style="color: #2b91af">MetadataTestDataModel</span>
    {
        <span style="color: #0000ff">public</span> MetadataTestDataModel()
        {
            <span style="color: #0000ff">for</span> (<span style="color: #2b91af">int</span> i = 0; i &lt; 4; i++)
            {
                cRangeList.Add(<span style="color: #0000ff">new</span> CRange()
                {
                    Item1 = (i + 1) * 30
                });
            }
        }


        [Excel(&quot;AItem1&quot;)]
        <span style="color: #0000ff">public</span> <span style="color: #2b91af">string</span> Item1 = <span style="color: #a31515">&quot;Item1 in range A&quot;</span>;

        [Excel(&quot;AItem3&quot;)]
        <span style="color: #0000ff">public</span> <span style="color: #2b91af">string</span> Item3 = <span style="color: #a31515">&quot;Item3 in range A&quot;</span>;

        [ExcelRange(&quot;B-Range&quot;, &quot;G11&quot;, &quot;Q32&quot;, &quot;BlockRangeService&quot;)]
        <span style="color: #0000ff">public</span> BRange bRange = <span style="color: #0000ff">new</span> BRange();


        <span style="color: #008000">/// &lt;summary&gt;</span>
        <span style="color: #008000">/// The range is defined by first element area</span>
        <span style="color: #008000">/// &lt;/summary&gt;</span>
        [ExcelRange(&quot;C-Range&quot;, &quot;T4&quot;, &quot;AE5&quot;, &quot;RowListRangeService&quot;, PageSize = 4)]
        <span style="color: #0000ff">public</span> IList&lt;CRange&gt; cRangeList = <span style="color: #0000ff">new</span> List&lt;CRange&gt;();            

        [ExcelRange(&quot;D-Range&quot;, &quot;B35&quot;, &quot;AF40&quot;, &quot;BlockRangeService&quot;)]
        <span style="color: #0000ff">public</span> DRange dRange = <span style="color: #0000ff">new</span> DRange();
    }

    <span style="color: #008000">/// &lt;summary&gt;</span>
    <span style="color: #008000">/// The data model of B-Range</span>
    <span style="color: #008000">/// &lt;/summary&gt;</span>
    <span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> <span style="color: #2b91af">BRange</span>
    {
        [Excel(&quot;BItem1&quot;)]
        <span style="color: #0000ff">public</span> <span style="color: #2b91af">string</span> Item1 = <span style="color: #a31515">&quot;Item1 in range B&quot;</span>;

        [Excel(&quot;BItem2&quot;)]
        <span style="color: #0000ff">public</span> <span style="color: #2b91af">string</span> Item2 = <span style="color: #a31515">&quot;Item2 in range B&quot;</span>;

    }

    <span style="color: #008000">/// &lt;summary&gt;</span>
    <span style="color: #008000">/// The data model of C-Range</span>
    <span style="color: #008000">/// &lt;/summary&gt;</span>
    <span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> <span style="color: #2b91af">CRange</span>
    {
        [Excel(&quot;CItem1&quot;)]
        <span style="color: #0000ff">public</span> <span style="color: #2b91af">int</span> Item1 = 300;

        [Excel(&quot;CItem2&quot;)]
        <span style="color: #0000ff">public</span> <span style="color: #2b91af">double</span> Item2;  <span style="color: #008000">//save the result of sum</span>

        [Excel(&quot;CItem3&quot;)]
        <span style="color: #0000ff">public</span> <span style="color: #2b91af">double</span> Item3 = 12.5;

        [Excel(&quot;CItem4&quot;)]
        <span style="color: #0000ff">public</span> <span style="color: #2b91af">string</span> Item4 = <span style="color: #a31515">&quot;Item4 in range C&quot;</span>;

        [Excel(&quot;CItem6&quot;)]
        <span style="color: #0000ff">public</span> <span style="color: #2b91af">long</span> Item6 = 1290865;
    }


    <span style="color: #008000">/// &lt;summary&gt;</span>
    <span style="color: #008000">/// The data model of D-Range</span>
    <span style="color: #008000">/// &lt;/summary&gt;</span>
    <span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> <span style="color: #2b91af">DRange</span>
    {
        <span style="color: #0000ff">private</span> <span style="color: #2b91af">string</span> item1 = <span style="color: #a31515">&quot;Item1 in range D&quot;</span>;


        [Excel(&quot;DItem1&quot;)]
        <span style="color: #0000ff">public</span> <span style="color: #2b91af">string</span> Item1
        {
            <span style="color: #0000ff">get</span> { <span style="color: #0000ff">return</span> item1; }
            <span style="color: #0000ff">set</span> { item1 = <span style="color: #0000ff">value</span>; }
        }
    }    
}
</pre>
</div>
<p><br/></p>
<p>5. Add following template processing code into your program. That is over</p>
<div class="div-example">
<pre style="margin: 0; line-height: 125%"><span style="color: #0000ff">using</span> System;
<span style="color: #0000ff">using</span> System.Collections.Generic;
<span style="color: #0000ff">using</span> System.Linq;
<span style="color: #0000ff">using</span> System.Text;
<span style="color: #0000ff">using</span> System.IO;
<span style="color: #0000ff">using</span> System.Reflection;

<span style="color: #0000ff">using</span> JanaBiz.OpenXml.Template;
<span style="color: #0000ff">using</span> JanaBiz.OpenXml.Handler;
<span style="color: #0000ff">using</span> JanaBiz.OpenXml.Data;
<span style="color: #0000ff">using</span> JanaBiz.OpenXml.Context;
<span style="color: #0000ff">using</span> JanaBiz.OpenXml.Repository;


<span style="color: #008000">//load configuration of repository</span>
<strong>[assembly: RegisterRepository(&quot;FastExcelReport.Repository.config&quot;)]</strong>

<span style="color: #0000ff">namespace</span> FastExcelReport
{
    <span style="color: #0000ff">class</span> <span style="color: #2b91af">Program</span>
    {
        <span style="color: #0000ff">static</span> <span style="color: #0000ff">void</span> Main(<span style="color: #2b91af">string</span>[] args)
        {

<span style="color: #008000">//            OpenXmlContext.RegisterRepository(&quot;FastExcelReport.Repository.config&quot;);</span>

            <span style="color: #008000">//create your handler </span>
            IOpenXmlHandler handler = <span style="color: #0000ff">new</span> OpenXmlHandler();

            <span style="color: #008000">//tell ExcelTDF which ITemplateService is used to </span>
            <span style="color: #008000">//get template file and template range configuration</span>
            handler.GetTemplateService&lt;LocalTemplateService&gt;();

            <span style="color: #008000">//set template id to identify which template is used</span>
            handler.TemplateId = <span style="color: #a31515">&quot;MetadataTest&quot;</span>;

            <span style="color: #008000">//tell ExcelTDF which IDataProviderManager and </span>
            <span style="color: #008000">//what data provider is used            </span>
            handler.DataProviderManager = <span style="color: #0000ff">new</span> DataModelProviderManager(
                <span style="color: #0000ff">new</span> MetadataTestDataModel());

            <span style="color: #008000">//parse your template </span>
           <strong> handler.ParseTemplate(<span style="color: #0000ff">false</span>);</strong>

            <span style="color: #008000">//parse your data </span>
            handler.ParseWorkbook(<span style="color: #0000ff">null</span>);

            <span style="color: #008000">//PLEASE REPLACE with your file stream to get result document</span>
            FileStream fs = <span style="color: #0000ff">new</span> FileStream(<span style="color: #a31515">@&quot;c:\temp\metadatatest-result.xlsx&quot;</span>, FileMode.Create);           

            <span style="color: #008000">//write parsed document into response stream</span>
            handler.WriteParsedDocument(fs);
            fs.Close();

            <span style="color: #008000">//release some resource</span>
            handler.Close();
        }
    }
}
</pre>
</div>
<p>
The line of </p>
<div class="div-example">
<pre style="margin: 0; line-height: 125%">[assembly: RegisterRepository(&quot;FastExcelReport.Repository.config&quot;)]
</pre>
</div>
<p>is used to load Repository.config file.</p>
<p>The result of pecessed template is show as following.</p>
<p><a href="/wp-content/uploads/metadatatest-result.png"><img src="/wp-content/uploads/metadatatest-result.png" alt="ExcelTDF .NET metadata | fast Excel report" title="ExcelTDF .NET metadata | fast Excel report-result" width="1280" height="994" class="aligncenter size-full wp-image-1266" /></a></p>
<p>The post <a href="http://www.janabiz.com/exceltdf-fast-create-excel-report-by-metadata/">ExcelTDF, create excel report by metadata quickly</a> appeared first on <a href="http://www.janabiz.com">ジャナ・ビジネス・コンサルティング</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.janabiz.com/exceltdf-fast-create-excel-report-by-metadata/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

 Served from: www.janabiz.com @ 2026-05-02 02:35:01 by W3 Total Cache -->