<?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>ryo4004  |  ryo blog</title>
	<atom:link href="index.xml" rel="self" type="application/rss+xml" />
	<link>../../../index.html</link>
	<description>Web関連のあれこれと日記</description>
	<lastBuildDate>Thu, 09 Jan 2020 05:30:52 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.8.18</generator>

<image>
	<url>../../../wp-content/uploads/2018/07/cropped-512-4-100x100.png</url>
	<title>ryo4004  |  ryo blog</title>
	<link>../../../index.html</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>【Photoshop】カラーモードを変更</title>
		<link>../../../web/4009/index.html</link>
					<comments>../../../web/4009/index.html#respond</comments>
		
		<dc:creator><![CDATA[ryo4004]]></dc:creator>
		<pubDate>Thu, 09 Jan 2020 00:28:37 +0000</pubDate>
				<category><![CDATA[Web関連]]></category>
		<category><![CDATA[CMYK]]></category>
		<category><![CDATA[Photoshop]]></category>
		<category><![CDATA[RGB]]></category>
		<category><![CDATA[カラーモード]]></category>
		<guid isPermaLink="false">https://blog.ryo4004.net/?p=4009</guid>

					<description><![CDATA[Photoshopでカラーモードを変更する場合は「イメージ」→「モード」から変更します。 ただし、いくつか注意点があります。 カラーモード 画像の色情報にはいくつかの種類があります。 Photoshopのモード一覧を見て [&#8230;]]]></description>
										<content:encoded><![CDATA[
Photoshopでカラーモードを変更する場合は「イメージ」→「モード」から変更します。



ただし、いくつか注意点があります。




<h2>カラーモード</h2>




画像の色情報にはいくつかの種類があります。<br><br>Photoshopのモード一覧を見てみると、以下のようになっています。



<figure class="wp-block-image size-large"><img loading="lazy" width="378" height="458" src="../../../wp-content/uploads/2020/01/mode_change.png" alt="" class="wp-image-4017" srcset="../../../wp-content/uploads/2020/01/mode_change.png 378w, ../../../wp-content/uploads/2020/01/mode_change-248x300.png 248w" sizes="(max-width: 378px) 100vw, 378px" /></figure>



この中でもっとも使われるのがCMYK、RGBだと思います。




<h3>CMYKとRGB</h3>




この2つは、画像の使用目的によって使い分けます。<br><br>印刷するものにはCMYK、Webなどモニターに表示するものにはRGBです。



<strong>CMYK</strong>は




<ul><li>シアン(Cyan)</li><li>マゼンダ(Magenta)</li><li>イエロー(Yellow)</li><li>キー・プレート(Key plate) (黒)</li></ul>




のそれぞれの頭文字をとったもので、印刷時のインク量を色情報として記録します。<br><br><strong>RGB</strong>は




<ul><li>あか(Red)</li><li>みどり(Green)</li><li>あお(Blue)</li></ul>




の3色をもとにしたもので、それぞれの色の強さを1ピクセルごとに記録します。<br><br>PhotoshopでCMYKの画像を編集している場合の画面での表示は常時RGBに変換したもののようです。 




<h3>カラーモード変更時の注意点</h3>




カラーモードを変更すると画像の色味が変わります。<br><br>CMYKとRGBは記録するときの基準の色が異なるのでカラーモードを変更するときは各ピクセルごとの色を計算し、変換します。<br><br>このとき、それぞれが表現できる色の範囲には限界があるので、そこから外れる色は近い色に変換されます。<br><br>CMYKからRGBでも、RGBからCMYKのどちらの変換も色味が変わることが多いので、変換前後で比較して調整してください。




<h2>CMYKで色を正確に表現するには</h2>




CMYKを正確にディスプレイで表現することは非常に難しいです。<br><br>このカラーモードを使用するときは印刷物だと思われます。<br>実際に印刷して色を確認してください。<br><br>印刷会社など、それを専門としているところでは「カラーマネジメントモニター」と呼ばれる高級なディスプレイを使用しています。<br><br>そういったディスプレイでは、表示された色が本当に正しい色かセンサーを用いて調整ができるものもあり、かなりの精度が保証されています。




<h2>RGBで色を正確に表現するには</h2>




不可能です。<br>あきらめてください。<br><br>流通しているディスプレイは玉石混交であり、かつディスプレイの個体差も考慮すると、すべてのデバイスで色を正確に再現することはほぼ不可能です。<br><br>その中でも一定の品質が期待できるiPhoneで確認し、色がきれいに出ていればおおむね問題ないでしょう。
]]></content:encoded>
					
					<wfw:commentRss>../../../web/4009/feed/index.xml</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>オブジェクトでmapメソッドを使う(JavaScript)</title>
		<link>../../../web/3988/index.html</link>
					<comments>../../../web/3988/index.html#respond</comments>
		
		<dc:creator><![CDATA[ryo4004]]></dc:creator>
		<pubDate>Fri, 15 Nov 2019 01:30:53 +0000</pubDate>
				<category><![CDATA[Web関連]]></category>
		<guid isPermaLink="false">https://blog.ryo4004.net/?p=3988</guid>

					<description><![CDATA[配列の場合は以下のようにmapメソッドを使うことができます。 しかし、objectの場合はmapやforEachが使えません。 かわりにkeysメソッドを使います。 Object.keys()にオブジェクトを渡すと、オブ [&#8230;]]]></description>
										<content:encoded><![CDATA[
配列の場合は以下のようにmapメソッドを使うことができます。




<pre class="wp-block-code"><code>const array = [2, 3, 5]
console.log(array.map(e => e**2))
// [4, 9, 25]</code></pre>




しかし、objectの場合はmapやforEachが使えません。




<pre class="wp-block-code"><code>const object = {a: 2, b: 3, c: 5}
console.log(object.map(e => e**2))
// Error: object.map is not a function</code></pre>




かわりにkeysメソッドを使います。




<pre class="wp-block-code"><code>const object = {a: 2, b: 3, c: 5}
console.log(Object.keys(object).map(e => object[e]**2))
// [4, 9, 25]</code></pre>





<hr class="wp-block-separator"/>




Object.keys()にオブジェクトを渡すと、オブジェクトのキーの配列を返します




<pre class="wp-block-code"><code>const object = {a: 2, b: 3, c: 5}
console.log(Object.keys(object).map(e => e))
// ["a", "b", "c"]</code></pre>




これを使って配列のような処理が実行できます。



注意点として、Object.keys()は挿入した順番を保証していないので、objectにキーを追加した順番に処理を行いたいときは使えません。
]]></content:encoded>
					
					<wfw:commentRss>../../../web/3988/feed/index.xml</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Ubuntu 16.04でMySQLのSTRICT_TRANS_TABLESをオフにする</title>
		<link>../../../web/387/index.html</link>
					<comments>../../../web/387/index.html#respond</comments>
		
		<dc:creator><![CDATA[ryo4004]]></dc:creator>
		<pubDate>Mon, 29 Oct 2018 07:43:01 +0000</pubDate>
				<category><![CDATA[Web関連]]></category>
		<guid isPermaLink="false">https://blog.ryo4004.net/?p=387</guid>

					<description><![CDATA[MySQLのSTRICT_TRANS_TABLESをオフにする 最近MySQLをさわり始めたのですが、設定ファイルがいっぱいあって困惑したのでメモします。 SQLモードの変更 あるCMSのインストールとテストをしようとし [&#8230;]]]></description>
										<content:encoded><![CDATA[

<h2>MySQLのSTRICT_TRANS_TABLESをオフにする</h2>




最近MySQLをさわり始めたのですが、設定ファイルがいっぱいあって困惑したのでメモします。




<h3>SQLモードの変更</h3>




あるCMSのインストールとテストをしようとしたら、STRICT_TRANS_TABLESをオフにしてくれと書いてあったのですが、いったいどこで変更するのやら？




<h4>まずは現状のSQLモードを確認</h4>





<pre class="wp-block-code"><code>SELECT @@global.sql_mode;
/etc/mysql/mysql.conf.d/mysqld.cnf
sql_mode=ONLY_FULL_GROUP_BY,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISIONNE_SUBSTITUTION

/etc/init.d/mysql restart</code></pre>




WordPress/Gutenbergの調子が悪くてこれ以上書けない笑<br><br>これは解決したけどどうやって解決したか忘れてしまった。<br><br>Gutenbergの調子よくなったけど今度は内容を忘れてしまった。<br><br>あるCMSってなんだろう。<br>WordPress？じゃないと思うけど&#8230;。<br><br>以下はいま使っているバージョン。




<pre class="wp-block-code"><code>mysql> select version();
+-------------------------+
| version()               |
+-------------------------+
| 5.7.27-0ubuntu0.16.04.1 |
+-------------------------+
1 row in set (0.00 sec)</code></pre>





<h3>SQLモードを変更する</h3>




なにはともあれ、sql_modeを変更するときは、以下のようにします。<br><br>これは何も設定しないとき。




<pre class="wp-block-code"><code>mysql> SET GLOBAL sql_mode = '';
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> SELECT @@global.sql_mode;
+-------------------+
| @@global.sql_mode |
+-------------------+
|                   |
+-------------------+
1 row in set (0.00 sec)</code></pre>




これはいろいろ設定するとき。




<pre class="wp-block-code"><code>mysql> SET GLOBAL sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT @@global.sql_mode;                                                                        +-------------------------------------------------------------------------------------------------------------------------------------------+
| @@global.sql_mode                                                                                                                         |
+-------------------------------------------------------------------------------------------------------------------------------------------+
| ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+-------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)</code></pre>




これがmysql 5.7のsql_modeの初期状態です。<br><br>また、my.cnfに書く方法もあります。
]]></content:encoded>
					
					<wfw:commentRss>../../../web/387/feed/index.xml</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>久々の日記</title>
		<link>../../../diary/375/index.html</link>
					<comments>../../../diary/375/index.html#respond</comments>
		
		<dc:creator><![CDATA[ryo4004]]></dc:creator>
		<pubDate>Fri, 05 Oct 2018 08:07:12 +0000</pubDate>
				<category><![CDATA[日記]]></category>
		<guid isPermaLink="false">https://blog.ryo4004.net/?p=375</guid>

					<description><![CDATA[ざっくばらんにブログを書いています。 と、思ったら、WordPressの投稿編集画面のGutenbergのフォントが明朝体じゃなくなってる！ タイトル部だけは明朝体のままだけど。 今Windowsで書いていますが、これは [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>ざっくばらんにブログを書いています。</p>



<p>と、思ったら、WordPressの投稿編集画面のGutenbergのフォントが明朝体じゃなくなってる！</p>



<p>タイトル部だけは明朝体のままだけど。</p>



<p>今Windowsで書いていますが、これはメイリオかな？</p>



<p>エディターと実際の記事でフォントが違うのが気になってたんだけど、しかも明朝体が見慣れなさすぎて気になってたんだけど、これはよかった。</p>



<p>どのタイミングで変わったのかわからなくてなぜ変わったかもわからないからちょっと怖いけど笑</p>



<p>なんという適当な記事でしょう。</p>



<p>これぞ日記！</p>
]]></content:encoded>
					
					<wfw:commentRss>../../../diary/375/feed/index.xml</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>さようならiPhone SE</title>
		<link>../../../diary/333/index.html</link>
					<comments>../../../diary/333/index.html#respond</comments>
		
		<dc:creator><![CDATA[ryo4004]]></dc:creator>
		<pubDate>Wed, 12 Sep 2018 23:07:30 +0000</pubDate>
				<category><![CDATA[日記]]></category>
		<guid isPermaLink="false">https://blog.ryo4004.net/?p=333</guid>

					<description><![CDATA[スマートフォンの完成形とも言えるiPhone SEが本日Apple Storeから消えました。 もう、買えないのです。 9/13、午前2時、新しいiPhoneの発表会はいつものわくわく感は全くなく、むしろがっかりするとい [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>スマートフォンの完成形とも言えるiPhone SEが本日Apple Storeから消えました。</p>



<p>もう、買えないのです。</p>



<p>9/13、午前2時、新しいiPhoneの発表会はいつものわくわく感は全くなく、むしろがっかりするという衝撃の体験でした。</p>



<p>新しいiPhoneは、iPhone XR、iPhone XS、iPhone X MAXで、価格が厳しさを帯びています。</p>



<p>新しい機能は特に目立つ点もなく、基本的にオーバースペックとなっている印象です。</p>



<p>これまでiPhoneを買い替えた時のApple発表会は、そのとき使っているものよりも優れた機能や魅力にあふれていて、とてもわくわくしたものです。</p>



<p>いまや懐かしい。</p>



<p>iPhone SEが発表された時は、それはもう興奮したし、発表会後に公式ホームページを見たときにはもう欲しくて欲しくてたまりませんでした。</p>



<p>かっちりしたフォルム、デザインのバランス、つや消しフィニッシュなど見た目もさることながら、スペックも遜色なく、今やすべてが完璧とさえ思えます。</p>



<p>ここがピークだったのでしょうか。</p>



<p>今のiPhoneは他の追随です。</p>



<p>業界を牽引するAppleはもうないのかもしれません。</p>



<p>今使ってるiPhone SEが壊れたらもうスマホいらないかな。</p>
]]></content:encoded>
					
					<wfw:commentRss>../../../diary/333/feed/index.xml</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>オーディオファイル切り分けの最初と最後の空白時間</title>
		<link>../../../web/320/index.html</link>
					<comments>../../../web/320/index.html#respond</comments>
		
		<dc:creator><![CDATA[ryo4004]]></dc:creator>
		<pubDate>Thu, 30 Aug 2018 01:35:42 +0000</pubDate>
				<category><![CDATA[Web関連]]></category>
		<guid isPermaLink="false">https://blog.ryo4004.net/?p=320</guid>

					<description><![CDATA[録音をカットするとき、いつも悩むことがあります。最初の音が鳴った瞬間から最後の音が鳴り終わったところまでが1つのトラックですが、そこにピッタリ合わせてしまうといろいろ不都合が起きてしまいます。 とりあえずカット ある吹奏 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>録音をカットするとき、いつも悩むことがあります。<br/>最初の音が鳴った瞬間から最後の音が鳴り終わったところまでが1つのトラックですが、そこにピッタリ合わせてしまうといろいろ不都合が起きてしまいます。</p>



<h2>とりあえずカット</h2>



<p>ある吹奏楽の演奏会の録音をそれぞれの曲ごとのトラックへとカットする作業をやりました。とりあえず曲開始(最初の音が入った瞬間)の0.1秒前から開始して、最後の音が鳴り終わったところ(減衰して無音になったところ)までで切り出していました。<br/></p>



<h4>曲のはじまりのなやみ</h4>



<p>曲の始まりはだいたい無音になっているのでわかりやすいのですが、今回は吹奏楽の録音だったので、気になるのはブレスの音です。<br/>音量大きくすると聞こえるんですね、これが。<br/>ブレスも曲のうちかなぁ&#8230;<br/>ちょっと悩んだのですが、ブレスするということは指揮者はもう振り始めているわけで、曲ということにしました。<br/></p>



<h4>曲のおわりのなやみ</h4>



<p>トラックの最後で悩むのは最後の音の減衰を待たずに拍手が入ってしまうことです。<br/>奏者としては感激のあまり指揮者の礼を待たずに拍手してしまった感があってよいかもしれませんが、カットするときは曲の終わりがわからないので悩みます。<br/>今回は拍手の最初の音から5秒追加して、最後3秒をリニアフェードアウトの処理をしました。</p>



<h3>録音をウェブ上で聴く</h3>



<p>カットした録音をウェブ上で聴けるようにしたところ、曲のはじまり0.1秒は短すぎました。<br/>また、曲の終わりも空間ほぼなし、拍手があっても+5秒で、これも短すぎました。<br/>まず、環境にもよりますがストリーミングのための読み込みとブラウザ処理のラグがあり、最初の0.5秒～1秒ほどは飛んでしまうことがあります。これが起こると最初の音はつぶれて聴こえません。曲の終わりも鳴り終わった直後に次の曲が始まってしまうので、せわしなくなってしまい、落ち着いて聴くことができません。<br/></p>



<h2>世の中のアルバム</h2>



<p>参考として、CDなどの録音を調べてみました。<br/></p>



<p>カラヤンのニューイヤーコンサート1987では曲の先頭に0.2秒(0.15秒～0.25秒ほど)の空白があり、最後は拍手が入ってから終わるまで15秒ほどあり、フェードアウトかわかりませんがそのうち最後2～6秒は空白になっていました。</p>



<p>スタジオ録音のアルバムで手元にあったのは侍Brassの十拳剣で、曲の先頭の空白は1秒～2秒(平均1.2秒)で、終わりの空白は7秒～12秒(平均8秒ほど)でした。</p>



<p>また、侍Brassの楽団長中川英二郎氏が出したSlide Monstersでは、曲の先頭の空白は1.5秒～2.5秒(平均1.6秒ほど)で、終わりの空白は7秒～12秒(平均10秒ほど)でした。</p>



<h2>というわけで</h2>



<p>今回はウェブ上で聴くことを目的としているので、読み込みのラグを考慮し先頭の空白は1秒以上とし、曲の最後は10秒以上取り、最後4秒ほどをフェードアウトすることにしました。</p>



<p><br/></p>
]]></content:encoded>
					
					<wfw:commentRss>../../../web/320/feed/index.xml</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Adobe Premier と Adobe Media Encoder のかるーい使い方</title>
		<link>../../../web/316/index.html</link>
					<comments>../../../web/316/index.html#respond</comments>
		
		<dc:creator><![CDATA[ryo4004]]></dc:creator>
		<pubDate>Tue, 28 Aug 2018 04:33:11 +0000</pubDate>
				<category><![CDATA[Web関連]]></category>
		<category><![CDATA[Adobe]]></category>
		<guid isPermaLink="false">https://blog.ryo4004.net/?p=316</guid>

					<description><![CDATA[動画やアニメーションの制作とかメディア作って出版したりとか、そういうクリエイティブなことをするためのソフトですが、私は録画や録音したデータをただカットしたりエンコードしたりするときに使っています。 宝の持ち腐れとはまさに [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>動画やアニメーションの制作とかメディア作って出版したりとか、そういうクリエイティブなことをするためのソフトですが、私は録画や録音したデータをただカットしたりエンコードしたりするときに使っています。</p>



<p>宝の持ち腐れとはまさにこのこと。</p>



<p>ですが、無料のエンコードソフトや編集ソフトを使うと、映像内に文字列の消印を入れられてしまったり、対応しているファイル形式が少なかったりと制約が多く、なかなか自由にいきません。</p>



<p>Photoshop や Illustrator が目当てでAdobe CCを契約しましたが、すべてのソフトウェアが使えるのでせっかくなので使えそうなとこは使っています。</p>



<p>あ、最初に言っておきますが、別に使い方が軽いだけで、なにか動作が軽くなるとかそういう軽いではありません。</p>



<h3>Adobe Premier と Adobe Media Encoder</h3>



<p>初めて動画編集やってみようと思ったとき、CCソフトウェア群の中に、Premier と Media Encoderがあって、え、なにが違うの？となったので簡単にまとめます。</p>



<p>ひとことで言うと、Media Encoder は補佐的なソフトです。Adobe Premier Pro で全ての作業ができますが、Media Encoder はないと不便です。<br/></p>



<h4>Adobe Premier </h4>



<p>Adobe Premier は動画そのものの編集を行うソフトです。<br/>いくつかの動画ファイルをくっつけたり切り出したり、エフェクトをかけたり、やろうと思えばどんなこともできるらしいです。<br/>その機能は多彩すぎて把握しきれません。<br/>私は動画のカットやTC(タイムコード)の記録に使う程度です笑</p>



<h4>Adobe Media Encoder</h4>



<p>Adobe Media Encoder はその名の通りエンコードを専門とするソフトウェアです。<br/>エンコードとは、いわゆるデータ形式を変換することです。<br/>これにはCPUやGPUの高い計算処理能力が必要で、一般的に時間がかかる作業です。(始めてしまえば放置だけど)<br/>Adobe Premier で作った動画ファイルを出力しようとしたときに<br/>ファイル > 書き出し > メディア<br/>などで独立したファイルとして書き出すことができますが、この操作の度に重いエンコード処理が走るとその都度作業を中断しなくてはなりません。<br/>そこで役立つのがこのAdobe Media Encoderです。<br/>メディア出力画面で、「書き出し」ではなく「キュー」を押すとAdobe Media Encoderが起動し、出力情報が登録されます。<br/>キューはストックされAdobe Media Encoder上で「キューを開始」ボタンを押すと、登録された順にエンコードが開始されます。<br/>エンコードをこのソフトで分けて行うことで、Adobe Premier側は常に操作することができます。</p>
]]></content:encoded>
					
					<wfw:commentRss>../../../web/316/feed/index.xml</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ExpressでPOSTを受け取るとき</title>
		<link>../../../web/306/index.html</link>
					<comments>../../../web/306/index.html#respond</comments>
		
		<dc:creator><![CDATA[ryo4004]]></dc:creator>
		<pubDate>Tue, 24 Jul 2018 13:57:13 +0000</pubDate>
				<category><![CDATA[Web関連]]></category>
		<category><![CDATA[Express]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Node.js]]></category>
		<guid isPermaLink="false">https://blog.ryo4004.net/?p=306</guid>

					<description><![CDATA[JavaScriptで何らかのリクエストを送る、受け取るときって多いですが、 送信側 fetch APIでPOST 受信側 Express(Node.js) のときに、bodyが空っぽになっちゃって困った。 ってなったと [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>JavaScriptで何らかのリクエストを送る、受け取るときって多いですが、<br />
送信側 fetch APIでPOST<br />
受信側 Express(Node.js)<br />
のときに、bodyが空っぽになっちゃって困った。<br />
ってなったときのメモです。</p>
<h2>fetch APIでリクエストを送信</h2>
<p>おおむね<a href="https://developer.mozilla.org/ja/docs/Web/API/Fetch_API/Using_Fetch">MDN web docs (fetch 概説)</a>で紹介されているものと同じです。</p>
<pre><code class="javascript">fetch('リクエスト先URL', {
  method: 'POST',
  headers: {
    Accept: 'application/json',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    user: 'user',
    data: 'data'
  })
})
.then(response =&gt; {
  if (response.status === 200) {
    return response.json()
  } else {
    console.warn('Something went wrong on api server!');
  }
})
.then(json =&gt; {
  return callback(json)
})
.catch(error =&gt; {
  console.error(error);
})
</code></pre>
<h2>ExpressでPOSTを受け取る</h2>
<h3>準備</h3>
<p>ExpressでPOSTを受信するのはこんな感じです。</p>
<pre><code class="javascript">const express = require('express')
const app = express()
app.listen(3000)

app.post('/request', (req, res) =&gt; {
  console.log(req.body)
  res.send('OK')
})
</code></pre>
<h3>ExpressでPOSTを受け取る</h3>
<p>さらにPOSTパラメータも受け取るにはbody-parserを使います。<br />
npmで入れてから、以下を追記します。</p>
<pre><code class="javascript">const bodyParser = require('body-parser')
app.use(bodyParser.urlencoded({extended: true}))
app.use(bodyParser.json())
</code></pre>
<p>ここで、この一文を書かないと受信したbodyがからっぽになります。</p>
<pre><code class="javascript">app.use(bodyParser.json())
</code></pre>
<p>HTMLのformなどから送られるデータはurlencode形式ですが、上記したfetchで送られるPOSTデータはjson形式で送られるので、urlencodeとは別にjsonも初期化が必要です。</p>
<h3>最終的なコード</h3>
<pre><code class="javascript">const express = require('express')
const app = express()

const bodyParser = require('body-parser')
app.use(bodyParser.urlencoded({extended: true}))
app.use(bodyParser.json())

app.listen(3000)

app.post('/request', (req, res) =&gt; {
  console.log(req.body)
  res.send('OK')
})
</code></pre>
]]></content:encoded>
					
					<wfw:commentRss>../../../web/306/feed/index.xml</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>React Nativeでよくみるエラー</title>
		<link>../../../web/295/index.html</link>
					<comments>../../../web/295/index.html#respond</comments>
		
		<dc:creator><![CDATA[ryo4004]]></dc:creator>
		<pubDate>Mon, 23 Jul 2018 02:03:29 +0000</pubDate>
				<category><![CDATA[Web関連]]></category>
		<guid isPermaLink="false">https://blog.ryo4004.net/?p=295</guid>

					<description><![CDATA[エラー文とその解決時のメモです。 遭遇するたびに追加していこうと思います。 React NavigationでNavigationをネストしたとき 経緯 画面遷移を実装するために公式のドキュメントでもおすすめされているR [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>エラー文とその解決時のメモです。<br />
遭遇するたびに追加していこうと思います。</p>
<h2>React NavigationでNavigationをネストしたとき</h2>
<h3>経緯</h3>
<p>画面遷移を実装するために公式のドキュメントでもおすすめされているReact Navigationを使って、<br />
作ったNavigationをネストしようとしたときに出たエラーです。</p>
<p><a rel="noopener" href="https://reactnavigation.org/" target="_blank">React Navigation</a></p>
<p>Expoで実行しつつ作っていたら</p>
<div class="warning-box">You should only render one navigator explicitly in your app, and other navigators should by rendered by including them in that navigator. Full details at: https://reactnavigation.org/docs/common-mistakes.html#explicitly-rendering-more-than-one-navigator</div>
<p>というWarningが出てました。</p>
<p><a rel="noopener" href="https://reactnavigation.org/docs/en/common-mistakes.html" target="_blank">Common mistakes &#8211; React Navigation</a></p>
<p>Warningに記されているURL先を確認すると、よくある間違いをやっていたようなので修正すると以下のエラーを出すようになりました。</p>
<h3>エラー文</h3>
<div class="danger-box">The component for route &#8216;*&#8217; must be a React component. For example:</div>
<p>ドキュメントに書いてある通りにやってるのに変だなーと思っていたのですが、書いてある通りにやってなかったという。<br />
そのときのコードを公式ドキュメントのコードを元に再現すると、</p>
<pre><code class="javascript">export default App extends React.Component {
  render () {
    return &lt;AppNavigator /&gt;
  }
}

const AppNavigator = createSwitchNavigator({
  Auth: AuthenticationNavigator,
  Home: HomeScreen,
})

const AuthenticationNavigator = createStackNavigator({
  SignIn: SignInScreen,
  ForgotPassword: ForgotPasswordScreen,
})
</code></pre>
<p>こんな感じにしてました。<br />
constの宣言順が大事です。<br />
AuthenticationNavigatorを宣言する前にAppNavigatorで呼び出そうとしてたのが悪かったみたい。</p>
<pre><code class="javascript">export default App extends React.Component {
  render () {
    return &lt;AppNavigator /&gt;
  }
}

const AuthenticationNavigator = createStackNavigator({
  SignIn: SignInScreen,
  ForgotPassword: ForgotPasswordScreen,
})

const AppNavigator = createSwitchNavigator({
  Auth: AuthenticationNavigator,
  Home: HomeScreen,
})
</code></pre>
<p>解決しました。</p>
]]></content:encoded>
					
					<wfw:commentRss>../../../web/295/feed/index.xml</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Ubuntu Server 16.04にNode.jsをインストールする</title>
		<link>../../../web/227/index.html</link>
					<comments>../../../web/227/index.html#respond</comments>
		
		<dc:creator><![CDATA[ryo4004]]></dc:creator>
		<pubDate>Fri, 23 Feb 2018 07:05:25 +0000</pubDate>
				<category><![CDATA[Web関連]]></category>
		<category><![CDATA[NodeJS]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[サーバ]]></category>
		<guid isPermaLink="false">https://blog.ryo4004.net/?p=227</guid>

					<description><![CDATA[Ubuntu 16.04LTSにNode.js実行環境を用意する Ubuntu 16.04 LTSにNode.jsの環境を作るメモ。 (Ubuntu 18.04でもこの方法でOKでした) 今回はnvmを使った構築手順です [&#8230;]]]></description>
										<content:encoded><![CDATA[<h2>Ubuntu 16.04LTSにNode.js実行環境を用意する</h2>
<p>Ubuntu 16.04 LTSにNode.jsの環境を作るメモ。<br />
(Ubuntu 18.04でもこの方法でOKでした)<br />
今回はnvmを使った構築手順です。<br />
nvmはNode.jsのダウンロードとバージョン管理ができます。<br />
なお、以下のコマンドは基本的にrootで書いているので、使用の際には適宜sudoを付与ください。</p>
<h3>使用するライブラリをインストール</h3>
<pre><code class="shell"># apt-get install build-essential libssl-dev
# apt-get install curl
</code></pre>
<h3>NVMのインストール</h3>
<p>nvmはnodeのバージョンを管理するソフトウェアです。<br />
これを使ってnodeをインストールします。</p>
<pre><code class="shell"># curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.1/install.sh | bash
# source ~/.bashrc
</code></pre>
<p>これでnvmコマンドが使えるようになります。</p>
<p>ダウンロードできるNodeのバージョンは以下のコマンドで確認できます。</p>
<pre><code class="shell"># nvm ls-remote
</code></pre>
<p>バージョン番号を指定してNodeのインストールを行うには以下のようにします。(バージョン10.6.0の場合)</p>
<pre><code class="shell"># nvm install v10.6.0
</code></pre>
<p>ひとつだけの場合はすぐNodeが使用できるようになりますが、複数のバージョンをインストールして切り替えて使用することも可能です。</p>
<p>使いたいNodeのバージョンを切り替える場合は以下のコマンドです。</p>
<pre><code class="shell"># nvm use v10.6.0
</code></pre>
<p>現在インストール済みのNodeのバージョンなどの情報は以下のコマンドで確認できます。</p>
<pre><code class="shell"># nvm ls
</code></pre>
<p>nvmおよび現在使用しているNodeのバージョンは以下のコマンドでそれぞれ確認できます。</p>
<pre><code class="shell"># nvm --version
# node -v
</code></pre>
]]></content:encoded>
					
					<wfw:commentRss>../../../web/227/feed/index.xml</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
