<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[sasaki takeru Blog]]></title><description><![CDATA[FlutterとFirebaseとGatsbyとM5StickCと3Dプリンタとシャボン玉と犬ロボットについて書くよてい(2020-10)]]></description><link>https://ssktkr.com</link><generator>GatsbyJS</generator><lastBuildDate>Mon, 14 Jun 2021 03:15:25 GMT</lastBuildDate><item><title><![CDATA[2021年もよろしくおねがいします！]]></title><description><![CDATA[どうやるんだっけ？？？？ https://kikunantoka.com/2021/03/15—migrate-from-gatsby-v2-to-gatsby-v3/ v3になってるらしい。 gatsby v…]]></description><link>https://ssktkr.com/2021-06/2021-06-14/</link><guid isPermaLink="false">https://ssktkr.com/2021-06/2021-06-14/</guid><pubDate>Mon, 14 Jun 2021 03:04:00 GMT</pubDate><content:encoded>&lt;h2&gt;どうやるんだっけ？？？？&lt;/h2&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;% gatsby develop
zsh: command not found: gatsby

node消してたような。。。ああ、ndenvにしたんだった。

% ndenv versions
* system (set by /Users/takeru/.ndenv/version)
  v12.20.1


% brew upgrade ndenv
% ndenv install -l
% ndenv install v12.22.1
% ndenv local v12.22.1

% node -v
v12.22.1

% npm install -g gatsby-cli
...
+ gatsby-cli@3.7.1
...

% gatsby develop
 ERROR

...
...
...&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;https://kikunantoka.com/2021/03/15--migrate-from-gatsby-v2-to-gatsby-v3/&quot;&gt;https://kikunantoka.com/2021/03/15—migrate-from-gatsby-v2-to-gatsby-v3/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;v3になってるらしい。&lt;/p&gt;
&lt;h2&gt;gatsby v3&lt;/h2&gt;
&lt;p&gt;たいしてカスタマイズしていなかったはずなのでテンプレから作り直し&lt;/p&gt;
&lt;p&gt;% gatsby new my-blog-202106 &lt;a href=&quot;https://github.com/gatsbyjs/gatsby-starter-blog&quot;&gt;https://github.com/gatsbyjs/gatsby-starter-blog&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;コピーしてdiff見てコピペコピペ。。。。&lt;/p&gt;
&lt;p&gt;% gatsby develop&lt;/p&gt;
&lt;p&gt;よさそう。&lt;/p&gt;
&lt;p&gt;git pushしたら本番も更新された。
github action設定されてるんだっけ？よし。&lt;/p&gt;</content:encoded></item><item><title><![CDATA[『状態管理』ってなんですか？]]></title><description><![CDATA[謎ワード『状態管理』 Flutter…]]></description><link>https://ssktkr.com/2020-11/2020-11-08-0448-Flutter状態管理/</link><guid isPermaLink="false">https://ssktkr.com/2020-11/2020-11-08-0448-Flutter状態管理/</guid><pubDate>Sat, 07 Nov 2020 19:48:00 GMT</pubDate><content:encoded>&lt;h3&gt;謎ワード『状態管理』&lt;/h3&gt;
&lt;p&gt;Flutterについて調べはじめた初心者が２日目あたりに遭遇する謎ワード『状態管理』。&lt;/p&gt;
&lt;p&gt;しかも、ググって出てきた１００いいね超えの良さそうなドヤ記事に書いてある内容も
半年ごとぐらいに「もっといいヤツ」が登場してオワコン化しているっぽくて、
今から始めたいんですけど、どれですか、、、ね？？状態。。。&lt;/p&gt;
&lt;p&gt;で、チュートリアルやりつつ、実際のコード書きつつ、その「ジョウタイカンリ」を調べて、
数週間後の今(2020-11-08)の理解のメモ。&lt;/p&gt;
&lt;h3&gt;問題はなにか？ なにがそんなにむずかしいの？？&lt;/h3&gt;
&lt;p&gt;FlutterはUIをつくるお仕事がメインです。WidgetというUI部品のツリー構造をつくるとiPhoneとAndroidのアプリの画面ができちゃう。それだけ。&lt;/p&gt;
&lt;p&gt;UIの裏側で動くロジック(サーバにAPIゲットしたり、画像ダウンロードしたり、AIがディープラーニングしたりするなど)を書くところや、その仕組み、
フレームワークはなにも用意されていなくて、好きなようにつくるなり、パクるなりしてやってねということになっている。
Railsおじさんにはどこに何書いていいかぜんぜんわからないようになっている。&lt;/p&gt;
&lt;p&gt;flutter createで生成されるアプリの雛形(StatefulWidgetの(Stateの)メンバ変数にintを保持していてボタンを押すと数字が増えるやつ)
を元にして、俺が考えた最強のアプリ作っていくとすると、
このStateにどんどん変数が増えるのか？APIにgetするのをonTapに・。。ってのはすぐ無理が見えるので、&lt;/p&gt;
&lt;p&gt;「FlutterのWidgetを構築するコード」と「ビジネスロジックのコード」をきれいに分けたい、整理したい。&lt;/p&gt;
&lt;p&gt;となる。&lt;/p&gt;
&lt;h3&gt;「データ(=状態)」を「画面に表示」したい&lt;/h3&gt;
&lt;p&gt;Flutterにおいて「画面に表示」とはWidgetツリーをつくること。&lt;/p&gt;
&lt;p&gt;Widgetツリーをつくるコードは、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;child,childrenで子を連ねていく&lt;/li&gt;
&lt;li&gt;Widgetを返すbuildコールバックメソッド&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;が主原料になっていて、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;なにものかから「build」が呼ばれる&lt;/li&gt;
&lt;li&gt;buildの中で最新のデータを使った最新のWidgetを作り直す&lt;/li&gt;
&lt;li&gt;なにものかが、画面に最新のデータを表示する&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;という風なピタゴラ装置になっている。&lt;/p&gt;
&lt;p&gt;画面を更新したかったら、buildが呼ばれるように仕向ければいいんだけど、そのへんを手作業でやるのはきっとややこしいので、&lt;/p&gt;
&lt;p&gt;「データ(=状態)」が変わったら(buildが自動的に呼ばれて)「画面の表示」も『自動的に変わる仕組み』がほしい。&lt;/p&gt;
&lt;p&gt;となる。&lt;/p&gt;
&lt;p&gt;— データはいつ変わるのか？
— データはどこにあるのか？
— データを変えるのはだれ？&lt;/p&gt;
&lt;p&gt;あたりが、アプリそれぞれで違ってきてややこしいとこなんだけど、
このあたりを上手に整理吸収できたらよくない？かっこよくない？？&lt;/p&gt;
&lt;p&gt;じゃあ、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;データが変わったらWidget(のあたり)に通知するようにしよう&lt;/li&gt;
&lt;li&gt;通知を受け取ったらWidgetを再構築して表示を更新することにしよう&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;というアイデアが、Flutter初心者殺し謎ワード『状態管理』テクノロジーが解決する画期的ソリューションなのです。
あ、これ Virtual DOM のときにみたやつっぽい。&lt;/p&gt;
&lt;h3&gt;いろんな『状態管理』&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://flutter.dev/docs/development/data-and-backend/state-mgmt/options&quot;&gt;https://flutter.dev/docs/development/data-and-backend/state-mgmt/options&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;ここにしっかり全部リストされているけども、結論から逆に歴史をたどって調べたメモ。&lt;/p&gt;
&lt;h4&gt;BLoC&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Widgetとビジネスロジック間はStreamでつなごう&lt;/li&gt;
&lt;li&gt;ビジネスロジック側にView側都合なコード入れないでね(そりゃそうだ)&lt;/li&gt;
&lt;li&gt;Streamか・・・面倒ぽくないかい？しらないけど。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Scoped Model&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;ツリーの上の方に「モデル」を置いておいて、&lt;/li&gt;
&lt;li&gt;その配下から「モデル」アクセスできるようにしよう&lt;/li&gt;
&lt;li&gt;「モデル」のデータが変わったら、使ってるWidget再構築しますね(たぶんここが雑でリビルド多すぎどうのこうの問題なんじゃないか)&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Provider&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Widget(buildの中やUI操作のコールバックあたり)からビジネスロジック(=のクラスのインスタンス)を見つける仕組み&lt;/li&gt;
&lt;li&gt;なんとかNotifier群。変わったらnotifyするわかりやすいのから、Stream、Futureなど変わる系のものならなんでも対応的な？&lt;/li&gt;
&lt;li&gt;readとwatch(とchange)を上手に使ってリビルド多すぎ問題に対応可能&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Riverpod&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Flutter(InheritedWidgetなど)に依存しないように作り直したProvider相当のもの&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;結論 Riverpod&lt;/h3&gt;
&lt;p&gt;進化の到達点である、Riverpodで遊んでおこう。だって今からやる人は古いのとの違いがわからないよ。
(半年後はまたその時考える)&lt;/p&gt;
&lt;p&gt;でも、まだまだ便利になる余地があるきがします。
いろいろな背景知識なしで、もっとゆるふわにアプリが作れるように進化するはず。&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Providerってなんですか？]]></title><description><![CDATA[Providerってなんですか？ Providerは色々機能(各種Providerの種類)はありつつも、主に以下の用途で使え、状態管理をこれだけに頼ってアプリを組むことも可能です。 (不変な)インスタンスを受け渡す(DI…]]></description><link>https://ssktkr.com/2020-10/2020-10-27-1547-Provider/</link><guid isPermaLink="false">https://ssktkr.com/2020-10/2020-10-27-1547-Provider/</guid><pubDate>Tue, 27 Oct 2020 06:47:00 GMT</pubDate><content:encoded>&lt;h3&gt;Providerってなんですか？&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Providerは色々機能(各種Providerの種類)はありつつも、主に以下の用途で使え、状態管理をこれだけに頼ってアプリを組むことも可能です。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;(不変な)インスタンスを受け渡す(DI・サービスロケーター的な用途)&lt;/li&gt;
&lt;li&gt;状態の変更を伝える&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;(&lt;a href=&quot;https://medium.com/flutter-jp/state-1daa7fd66b94&quot;&gt;https://medium.com/flutter-jp/state-1daa7fd66b94&lt;/a&gt;)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;InheritedWidget を使いやすくしてミスを防ぐためのシンタックスシュガー
DI の仕組みを提供
インスタンスの生成と破棄を助ける（StatelessWidget でも dispose() が可能になる等）
その他何でも（Scoped Model、BLoC 等による状態管理、ValueNotifier 等による Widget 更新など）
(&lt;a href=&quot;https://qiita.com/kabochapo/items/a90d8438243c27e2f6d9&quot;&gt;https://qiita.com/kabochapo/items/a90d8438243c27e2f6d9&lt;/a&gt;)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://flutter.dev/docs/development/data-and-backend/state-mgmt/simple&quot;&gt;https://flutter.dev/docs/development/data-and-backend/state-mgmt/simple&lt;/a&gt;
&lt;a href=&quot;https://github.com/flutter/samples/blob/c6f6b5b757/provider_shopper/lib/main.dart&quot;&gt;https://github.com/flutter/samples/blob/c6f6b5b757/provider_shopper/lib/main.dart&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/flutter/samples/blob/c6f6b5b757752da94daee570ce28a8724c94b92c/provider_shopper/lib/models/catalog.dart#L14&quot;&gt;https://github.com/flutter/samples/blob/c6f6b5b757752da94daee570ce28a8724c94b92c/provider_shopper/lib/models/catalog.dart#L14&lt;/a&gt;&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;class CatalogModel {
  static const _itemNames = [
    &amp;#39;Code Smell&amp;#39;,
    ...
    ...&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;CatalogModelはChangeNotifierを実装していない。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/flutter/samples/blob/c6f6b5b757752da94daee570ce28a8724c94b92c/provider_shopper/lib/models/cart.dart#L8&quot;&gt;https://github.com/flutter/samples/blob/c6f6b5b757752da94daee570ce28a8724c94b92c/provider_shopper/lib/models/cart.dart#L8&lt;/a&gt;&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;class CartModel extends ChangeNotifier { //★★★
  /// The private field backing [catalog].
  CatalogModel _catalog;

  /// Internal, private state of the cart. Stores the ids of each item.
  final List&amp;lt;int&amp;gt; _itemIds = [];

  /// The current catalog. Used to construct items from numeric ids.
  CatalogModel get catalog =&amp;gt; _catalog;

  set catalog(CatalogModel newCatalog) {
    assert(newCatalog != null);
    assert(_itemIds.every((id) =&amp;gt; newCatalog.getById(id) != null),
        &amp;#39;The catalog $newCatalog does not have one of $_itemIds in it.&amp;#39;);
    _catalog = newCatalog;
    // Notify listeners, in case the new catalog provides information
    // different from the previous one. For example, availability of an item
    // might have changed.
    notifyListeners();
  }

  /// List of items in the cart.
  List&amp;lt;Item&amp;gt; get items =&amp;gt; _itemIds.map((id) =&amp;gt; _catalog.getById(id)).toList();

  /// The current total price of all items.
  int get totalPrice =&amp;gt;
      items.fold(0, (total, current) =&amp;gt; total + current.price);

  /// Adds [item] to cart. This is the only way to modify the cart from outside.
  void add(Item item) {
    _itemIds.add(item.id);
    // This line tells [Model] that it should rebuild the widgets that
    // depend on it.
    notifyListeners(); //★★★
  }
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;CartModelはChangeNotifierを実装している。
内容が変わったときにnotifyListenersを呼ぶことになっている(おやくそく)。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/flutter/samples/blob/c6f6b5b757752da94daee570ce28a8724c94b92c/provider_shopper/lib/main.dart&quot;&gt;https://github.com/flutter/samples/blob/c6f6b5b757752da94daee570ce28a8724c94b92c/provider_shopper/lib/main.dart&lt;/a&gt;&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // Using MultiProvider is convenient when providing multiple objects.
    return MultiProvider(
      providers: [
        // In this sample app, CatalogModel never changes, so a simple Provider
        // is sufficient.
        Provider(create: (context) =&amp;gt; CatalogModel()), //★★★
        // CartModel is implemented as a ChangeNotifier, which calls for the use
        // of ChangeNotifierProvider. Moreover, CartModel depends
        // on CatalogModel, so a ProxyProvider is needed.
        ChangeNotifierProxyProvider&amp;lt;CatalogModel, CartModel&amp;gt;( //★★★
          create: (context) =&amp;gt; CartModel(),
          update: (context, catalog, cart) {
            cart.catalog = catalog;
            return cart;
          },
        ),
      ],
      child: MaterialApp(
        title: &amp;#39;Provider Demo&amp;#39;,
        theme: appTheme,
        initialRoute: &amp;#39;/&amp;#39;,
        routes: {
          &amp;#39;/&amp;#39;: (context) =&amp;gt; MyLogin(),
          &amp;#39;/catalog&amp;#39;: (context) =&amp;gt; MyCatalog(),
          &amp;#39;/cart&amp;#39;: (context) =&amp;gt; MyCart(),
        },
      ),
    );
  }
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Widgetツリーの一番上あたりでCatalogModelとCartModelのインスタンスを生成している。&lt;/p&gt;
&lt;p&gt;CartModelはCatalogModelに依存しているので、上で生成したCatalogModelを取ってきて(内部でProvider.of&lt;CatalogModel&gt;(context))「cart.catalog = catalog;」として注入ってことだろうたぶん。&lt;/p&gt;
&lt;h3&gt;Provider.of&lt;/h3&gt;
&lt;p&gt;Provider.of&amp;#x3C;ほしいクラス&gt;(context)で、contextを上に登って見つかった『ほしいクラス』のインタンスを取れる。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/flutter/samples/blob/c6f6b5b757752da94daee570ce28a8724c94b92c/provider_shopper/lib/screens/cart.dart#L40&quot;&gt;https://github.com/flutter/samples/blob/c6f6b5b757752da94daee570ce28a8724c94b92c/provider_shopper/lib/screens/cart.dart#L40&lt;/a&gt;&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;class _CartList extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    var itemNameStyle = Theme.of(context).textTheme.title;
    var cart = Provider.of&amp;lt;CartModel&amp;gt;(context); //★★★

    return ListView.builder(
      itemCount: cart.items.length,
      itemBuilder: (context, index) =&amp;gt; ListTile(
        leading: Icon(Icons.done),
        title: Text(
          cart.items[index].name,
          style: itemNameStyle,
        ),
      ),
    );
  }
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;cart.itemsを使ってリスト表示を作っている。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/flutter/samples/blob/c6f6b5b757752da94daee570ce28a8724c94b92c/provider_shopper/lib/screens/catalog.dart#L35&quot;&gt;https://github.com/flutter/samples/blob/c6f6b5b757752da94daee570ce28a8724c94b92c/provider_shopper/lib/screens/catalog.dart#L35&lt;/a&gt;&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;class _AddButton extends StatelessWidget {
  final Item item;

  const _AddButton({Key key, @required this.item}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    var cart = Provider.of&amp;lt;CartModel&amp;gt;(context); //★★★

    return FlatButton(
      onPressed: cart.items.contains(item) ? null : () =&amp;gt; cart.add(item),
      splashColor: Theme.of(context).primaryColor,
      child: cart.items.contains(item)
          ? Icon(Icons.check, semanticLabel: &amp;#39;ADDED&amp;#39;)
          : Text(&amp;#39;ADD&amp;#39;),
    );
  }
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;cart.itemsに含まれているか(contains)を見てボタンの切り替えをしている。&lt;/li&gt;
&lt;li&gt;cart.addでボタンが押されたときの「カートに追加」の処理を行っている。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/flutter/samples/blob/c6f6b5b757752da94daee570ce28a8724c94b92c/provider_shopper/lib/screens/catalog.dart#L70&quot;&gt;https://github.com/flutter/samples/blob/c6f6b5b757752da94daee570ce28a8724c94b92c/provider_shopper/lib/screens/catalog.dart#L70&lt;/a&gt;&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;class _MyListItem extends StatelessWidget {
  final int index;

  _MyListItem(this.index, {Key key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    var catalog = Provider.of&amp;lt;CatalogModel&amp;gt;(context); //★★★
    var item = catalog.getByPosition(index);
    var textTheme = Theme.of(context).textTheme.title;

    return Padding(
      padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8),
      child: LimitedBox(
        maxHeight: 48,
        child: Row(
          children: [
            AspectRatio(
              aspectRatio: 1,
              child: Container(
                color: item.color,
              ),
            ),
            SizedBox(width: 24),
            Expanded(
              child: Text(item.name, style: textTheme),
            ),
            SizedBox(width: 24),
            _AddButton(item: item),
          ],
        ),
      ),
    );
  }
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;「model=Provider.ofを呼んだbuildが属するWidgetはmodelが更新されたらリビルドされます」
むずかしい。。。&lt;/p&gt;
&lt;p&gt;具体的には。。。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;em&gt;CartList,&lt;/em&gt;AddButtonのbuildの中で『var cart = Provider.of&lt;CartModel&gt;(context);』としている。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;cartの内容を使って画面表示を作っている。(カート内リストの内容や数,ボタンのラベルの切り替えなど)&lt;/li&gt;
&lt;li&gt;このWidget(&lt;em&gt;CartList,&lt;/em&gt;AddButton)はcartが更新されたらリビルド(=表示を最新に更新)してほしい。&lt;/li&gt;
&lt;li&gt;→ Providerさん「Provider.of(listen=true)したのでデータが更新されたらリビルドしますね！！」&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;CartModel(extends ChangeNotifier)のaddでnotifyListenersが呼ばれる。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ChangeNotifierProviderが変更を受け取る。&lt;/li&gt;
&lt;li&gt;→ 「データが更新されたそうなのでさっきのProvider.ofしたところのWidget、リビルドします！」&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;TODO&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Provider.ofしたリビルド対象のWidgetを覚えている仕組みが謎。&lt;/li&gt;
&lt;li&gt;ProviderがWidget更新する仕組みが謎。特にStatelessWidget。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Consumer&lt;/h3&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;class _CartTotal extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    var hugeStyle = Theme.of(context).textTheme.display4.copyWith(fontSize: 48);

    return SizedBox(
      height: 200,
      child: Center(
        child: Row(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Consumer&amp;lt;CartModel&amp;gt;(
                builder: (context, cart, child) =&amp;gt;
                    Text(&amp;#39;\$${cart.totalPrice}&amp;#39;, style: hugeStyle)),
            SizedBox(width: 24),
            FlatButton(
              onPressed: () {
                Scaffold.of(context).showSnackBar(
                    SnackBar(content: Text(&amp;#39;Buying not supported yet.&amp;#39;)));
              },
              color: Colors.white,
              child: Text(&amp;#39;BUY&amp;#39;),
            ),
          ],
        ),
      ),
    );
  }
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;contextが無い場合にConsumer&amp;#x3C;ほしいクラス&gt;でProvider.ofのようにインスタンスを取れるWidget。
Builder Widget使うかWidgetを切り出すかすれば同じこと、かな？
複数取りたいときはどうするのかな？&lt;/p&gt;
&lt;p&gt;と思ってたら、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;childを使うとリビルドを最適化できる&lt;/li&gt;
&lt;li&gt;Consumer2() から Consumer6()まである &lt;/li&gt;
&lt;li&gt;Consumer をより便利にした Selector がある
(&lt;a href=&quot;https://qiita.com/kabochapo/items/a90d8438243c27e2f6d9&quot;&gt;https://qiita.com/kabochapo/items/a90d8438243c27e2f6d9&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;read,watchという新しいのがある&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;context.read() ≒ Provider.of(context, listen: false)&lt;/li&gt;
&lt;li&gt;context.watch() ≒ Provider.of(context, listen: true)&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;context.select()&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;final value = context.select((Foo foo) =&amp;gt; foo.value);
Text(value.toString());&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;大きなクラスのある一部だけの変化だけを検知→リビルドできる。これは良さそう。
ChangeNotifierProviderに大きなモデルを乗っけてselectで指定したところが変わったときだけrebuildされる。
「モデルの『どこ』が変わったら〜」の『どこ』をWidget側に寄せることができる。&lt;/p&gt;
&lt;h3&gt;まとめ&lt;/h3&gt;
&lt;p&gt;いろんななんとかProviderがあるけど、データソースによっていろいろ使えるよってことみたい。
基本はChangeNotifierってことでいいのかな。&lt;/p&gt;
&lt;p&gt;Widgetと変更検知範囲の粒度をうまくやって、コードの可読性と変更検知＆リビルドのパフォーマンスのバランスを取るってことかな。
はじめは荒く、問題になったら最適化、で。&lt;/p&gt;</content:encoded></item><item><title><![CDATA[ブログ更新!!]]></title><description><![CDATA[さっき書いたmdをaddしてpushしてみますが、、、、 これでいいんでしょうか。。。
https://nervous-bartik-3220fe.netlify.app/2020-10-26/2020-10-26-152…]]></description><link>https://ssktkr.com/2020-10/2020-10-26-1600/</link><guid isPermaLink="false">https://ssktkr.com/2020-10/2020-10-26-1600/</guid><pubDate>Mon, 26 Oct 2020 06:54:00 GMT</pubDate><content:encoded>&lt;p&gt;さっき書いたmdをaddしてpushしてみますが、、、、&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;15:52:30 tkrimac3:~/proj/flutter-firebase-gatsby-takeru/my-blog[main]% ga content/blog/2020-10-26/
15:52:34 tkrimac3:~/proj/flutter-firebase-gatsby-takeru/my-blog![main]% gs
On branch main
Your branch is up to date with &amp;#39;origin/main&amp;#39;.

Changes to be committed:
  (use &amp;quot;git reset HEAD &amp;lt;file&amp;gt;...&amp;quot; to unstage)

        new file:   content/blog/2020-10-26/2020-10-26-1427.md
        new file:   content/blog/2020-10-26/2020-10-26-1526.md

15:52:34 tkrimac3:~/proj/flutter-firebase-gatsby-takeru/my-blog![main]% gc -m &amp;quot;add posts&amp;quot;
[main 2b6ec4d] add posts
 2 files changed, 191 insertions(+)
 create mode 100644 content/blog/2020-10-26/2020-10-26-1427.md
 create mode 100644 content/blog/2020-10-26/2020-10-26-1526.md
15:52:58 tkrimac3:~/proj/flutter-firebase-gatsby-takeru/my-blog[main]% git push
Enumerating objects: 10, done.
Counting objects: 100% (10/10), done.
Delta compression using up to 4 threads
Compressing objects: 100% (7/7), done.
Writing objects: 100% (7/7), 3.49 KiB | 3.49 MiB/s, done.
Total 7 (delta 2), reused 0 (delta 0)
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
To github.com:takeru/my-blog-20201026.git
   210ed14..2b6ec4d  main -&amp;gt; main&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;これでいいんでしょうか。。。
&lt;a href=&quot;https://nervous-bartik-3220fe.netlify.app/2020-10-26/2020-10-26-1526/&quot;&gt;https://nervous-bartik-3220fe.netlify.app/2020-10-26/2020-10-26-1526/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/582e4f1f495ca461ae35fbda14a5f170/5a6dd/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202020-10-26%2015.57.55.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 117.08860759493672%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAXCAYAAAALHW+jAAAACXBIWXMAAAsTAAALEwEAmpwYAAADG0lEQVQ4y5VU227bOBD1/39CN0B29yVAGuRlm4dskbei3a2DtE26tuurbFGyrAt1J0VdfBYcWW4cp0FL4GCGM9Qxz3iGvSzP4Xo+giBAyDk4D8gPAh9RHCPgIXioERFyKSFkgSwXlEvSDDLPEbohwlShh91KRAknzOElAl4isYkFpKoot91un0WXe7x6bWCLTNXw8gpxsUUoa/h5hfLw7Iur/ZE9IRCFHMZ8htl0AouZWNsMxmKB8XiM5XKJ4XCI+XwOxhgMwyB4nkf7PM/3pL2maWjz99u3ODk5wdnZGc5fv8b19TXOz89xeXmJm5sbXFxc4PT0FFdXV3h4eEC/38fd3R1ub2+RJMl3wu6GSpUQUpLVBa/rGr+yOp7e4+JSNbc4ImuaNleWJTpFOqZ9jccce8kWY+h//Bf/fHiP+y+fcfXmL5z89gp//vE7bvsfMRoMMJ2M8f7dO3z5/Ilq/uINeZxiwRwY1gZOEGNurnE/nODu6wiWy7EOIoqbjo+l7cJPBMKsAM8KVHVzXEPdd3YkIcoGYa6ojUQFQixKJLJDhbSoEAtFZEEqnycUqiLUTUMHWtQEHSurmmLaqqpGUdYHTX0k2eYZhowT/jMDjCyOAWsxssJ9rp0mCSfKkcnygOywbaoGWVFBlDXZXNVItUShyHZonozaD0YPCMMItr0GMxk9DoxZKKR8YcwO5/lIsn519Kvi+QH8gMPZuBSrqrauP3ognpLvCR83aVEoauKyrGhy6t2/+DPTsieUIkcU+PDdDcLAQ8R9FCJDWQgomUOJ/Hm7Qzcg3yUnMUxjjtVijuViBrZcIHCdA/ib9c5f7/cdSqWeEKYJJqMBHJvBdWxs1hbZNVvBsUx4O99mK1jmkmLkr5a0V0VxSBiHHMOv91hbJn2ooUk7Qk1umy2ZtTJa8p1vP0cosrSV6W3ANXwXUeCR5Z6L0HcRuJuDPMneSS9LdVzD8WiA2eQbZuMRjPkUxmyKybchlvMpYToekdXndNw0Fns1ShXHhPqGrUyTpGipukZUU5vRXt9GS9ckacQhswQijdHs3tD/AVJK2+15+TqpAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;できた&quot;
        title=&quot;できた&quot;
        src=&quot;/static/582e4f1f495ca461ae35fbda14a5f170/f058b/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202020-10-26%2015.57.55.png&quot;
        srcset=&quot;/static/582e4f1f495ca461ae35fbda14a5f170/c26ae/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202020-10-26%2015.57.55.png 158w,
/static/582e4f1f495ca461ae35fbda14a5f170/6bdcf/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202020-10-26%2015.57.55.png 315w,
/static/582e4f1f495ca461ae35fbda14a5f170/f058b/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202020-10-26%2015.57.55.png 630w,
/static/582e4f1f495ca461ae35fbda14a5f170/5a6dd/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202020-10-26%2015.57.55.png 802w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;いいみたいです、スゴーイ。&lt;/p&gt;
&lt;h1&gt;テンプレ変えよう&lt;/h1&gt;
&lt;p&gt;「Written by Kyle Mathews」になってるので変えたい。&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/d990e796c475ff3bc24ef7a6d5ec9332/fdaf8/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202020-10-26%2016.03.01.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 88.60759493670886%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAYAAABb0P4QAAAACXBIWXMAABYlAAAWJQFJUiTwAAADV0lEQVQ4y2WUWW/bRhRG9TtqA5HEdYakNNx3iSJp17FhO0hTd0OCoG1gwEiAtGj72L9+ihk7aoI8fLjUgDxzv7to8dvLnOauRO0z4k1MXuTkefGVskyf5yYWxf9nWZaZ30VZmrgo6h7fFqhIMU4Truth2w6O4xrZlo3neiRxQiADqrIiDELzsY5VVWE7LlkcUWQpi8NhQEiBLySxUqxXS9ar1TFajo/tSUS4xfUDgkhhuwI/iHBFgIy25uJNKNlEIYs4SQiDAJG21K8e2P/yF+3de/qf/6T/4QN5dyCrd6T1jqzRsafaTfTTBe0wk+/OWNoejmOTJCkLbfMR2FG+eEfz/Qeql/fU3z1Q3vxK2g4GooFJ1RvV+5nd2SW76YJqfM7K8Tk9+caUa3FxcYGUgambBkvh49gWnusgfB9fBAgZEkZbom3MNk6xXR/Pl3giwPUElmVxenqK4zgskjRDSIkQkmEY6fs9TdMSx4mxkGqlKXmW03U9u35HGIa0TWs67DruESiEYFHGEVIIA9yoiK3aMuwPBEHAs2dLlssly6e4Wq7M2XptGUeWZZtnLQ30PI+FevMvMlI4rs2Y3VDELXVTUZQ1kUrJq9YoVCky3Jhso2hjYL4vaNvOwE9OTvB9n4W8vTej4LoOrTpj6GaGceR82HE7VLwYG368mrjqEvpMEScZSsVfAY8ZFio09tYrC0+4zPNEmlfsE8nHm5p3Y8TDZcnH65KbVrFc22bYdUf1/H1u2XVdFv1ub7osZEBpuaThhv1wYJpm2n4grzuCbYIfbNmmBdFGHWupgfN8ZrqrLRug3k+doWU7SE+YLh6GA0XVcDk03F9WvD4o3p4X/P5tzvNqS1aUpuN13VBV9ZcZ6iIHQWjqoGew6zrmaSbLS4Yq481lz91Y8Ppq4Ke5Yq5Tc9l+Pxhg3+8MSGdoajhNk7GstREusdoyjrMpts6kajrqpmUYDjRtR12WJEqRpo/NGYbh2GUD7PvewHTXVmvbDLWun7Zd1i2vxpJ/bgven2/446bi7+uc61YRZwXDfjDQL4CPlh9Xz7EdPM83F+gzHaNAkkQBcSCIQ0m6CQilNO/psdHSyRzncBzH4y6b/7+nDfhcK70RlsP6yYVlOea9T/q0ehr4H8dDN5g2pWtjAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;doko&quot;
        title=&quot;doko&quot;
        src=&quot;/static/d990e796c475ff3bc24ef7a6d5ec9332/f058b/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202020-10-26%2016.03.01.png&quot;
        srcset=&quot;/static/d990e796c475ff3bc24ef7a6d5ec9332/c26ae/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202020-10-26%2016.03.01.png 158w,
/static/d990e796c475ff3bc24ef7a6d5ec9332/6bdcf/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202020-10-26%2016.03.01.png 315w,
/static/d990e796c475ff3bc24ef7a6d5ec9332/f058b/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202020-10-26%2016.03.01.png 630w,
/static/d990e796c475ff3bc24ef7a6d5ec9332/fdaf8/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202020-10-26%2016.03.01.png 674w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;もしかして？と思ってlocalhost:8000を開いたページを横において、設定ファイルを編集して保存したら、
やっぱりリアルタイムに更新されました。こんなのが2020年当たり前だよねってなるといろいろしんどい。&lt;/p&gt;
&lt;p&gt;こうなると、保存しなくてもVSCodeで編集中のテキストがグレーの文字でリアルタイムに更新されてほしいんだけど。。。&lt;/p&gt;
&lt;p&gt;と思ったら、Kyle Mathewsにもどった？？設定ファイル上書きしたらまたtakeruになった。またもどった！ふしぎ！なにが起こってる！？&lt;/p&gt;
&lt;h1&gt;gatsby-config.js&lt;/h1&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;module.exports = {
  siteMetadata: {
    title: `sasaki takeru Blog`,
    author: {
      name: `takeru`,
      xxx_summary: ``,
    },
    description: `FlutterとFirebaseとGatsbyとM5StickCと3Dプリンタとシャボン玉と犬ロボットについて書くよてい(2020-10)`,
    siteUrl: `https://nervous-bartik-3220fe.netlify.app/`,
    social: {
      twitter: `urekat`,
    },
  },
  plugins: [
    {
      resolve: `gatsby-source-filesystem`,
      options: {
        path: `${__dirname}/content/blog`,
        name: `blog`,
      },
    },
    {
      resolve: `gatsby-source-filesystem`,
      options: {
        path: `${__dirname}/content/assets`,
        name: `assets`,
      },
    },
...&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;こんなんなってて、blogのmdファイルの読み込みは「gatsby-source-filesystem」というpluginが「blog」という名前で登録されているみたい。
ということは、&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/1c2549341294c3e969612bc15ca85efd/a628a/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202020-10-27%202.49.10.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 94.9367088607595%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAATCAYAAACQjC21AAAACXBIWXMAABYlAAAWJQFJUiTwAAAC1klEQVQ4y42Uy47jNhBF/R8jUXyJEiVRb8t2p+10z6Qx6N0kQFbZ5v9/4QSk3ZN+TDBZXBQFkQd1q4rcDds9Q98TQs8wDIzjdNPIMq1shxP7bSOEQB86+n6g61q8r6lcSds2ae8wDrR1z25eN7ZtY9kfkvrhClRKYuqACRPz3DGPLb4qcZVlXTfW/YntcMc4zgghyPOcPM/YheXEOq3crwMPa+AUD9YerRSZc5jG0y4zrh9wbY8fJpow0vRRE3XTIZVCiDyBd/0wc7n/wu9PZ/583PjjPDGFDqV12igrh/AeWVfYusRWBikEKqoQaf2SYQLO08LT5cLzl0d++/XC42HhNE/Y0l2hjUd2DbbzNENN3Vjq2lBXBmc0Vqu3wFjsh7sjz58vfH088+088+3oaZxBaoN0Fap01LbEe4eQBZnIkz5lGVmWf4fFuAtd4OGw8Hw58Pm4sI49y9hTWouUEqskY12yNBWV0VRGUWqFuyn+fwHeMuy5Px356+nI31/3KcbRMMamGmqtGL1LMFkUKFmk+KKiEG+BfR9Y9wunbeOXw8bdOnGcelxZpgyjWmcxSpLl+W083urfscnZdV2g6zpCHNgwMISOY6ioymhZJWAsvpZvrb3WmwybpkVrkywm2RKpr2sVLd9A/weWgG3bYm1JWbrvit/W2jTceS7I4kEhUkdfbGfv7P4Q+DpGoNEaN66MhyPbfsLfamnVtdPFzzJ8HY21qDg2ladqWlxp0bK4qhAYWfzc8vsMY22tdmS54JMoEFJRqCid1qIobvV91eX/BMamaE3uaoqqQtY1tmmwvqVsOqxv0k36kGHs8ntgtBvXykisL65qoiSqFOhaol2BqSS6Uhivk2yjr3MYR+RDDY1JloUP1ONI3Q9oV6FjbVWR7Ir4GimZbkt8vnKRx5vSfwCaWw2V0siwYI9n1OkRvz/RzBs2jLhuRDUB043YfsL5Np37B93+Jk+GEvsaAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;blog&quot;
        title=&quot;blog&quot;
        src=&quot;/static/1c2549341294c3e969612bc15ca85efd/f058b/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202020-10-27%202.49.10.png&quot;
        srcset=&quot;/static/1c2549341294c3e969612bc15ca85efd/c26ae/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202020-10-27%202.49.10.png 158w,
/static/1c2549341294c3e969612bc15ca85efd/6bdcf/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202020-10-27%202.49.10.png 315w,
/static/1c2549341294c3e969612bc15ca85efd/f058b/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202020-10-27%202.49.10.png 630w,
/static/1c2549341294c3e969612bc15ca85efd/40601/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202020-10-27%202.49.10.png 945w,
/static/1c2549341294c3e969612bc15ca85efd/78612/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202020-10-27%202.49.10.png 1260w,
/static/1c2549341294c3e969612bc15ca85efd/a628a/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202020-10-27%202.49.10.png 2170w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;なるほど、ローカルファイルもいったんGraphQLを通してやってくるのか。&lt;/p&gt;
&lt;p&gt;とりあえず、テキトーにmdで書いておいて、あとで好きなガワに変えることもできることがわかったのでコツコツコンテンツを作っていこう！！&lt;/p&gt;</content:encoded></item><item><title><![CDATA[gatsby-starter-blogでそれいけ]]></title><description><![CDATA[とにかくblogをつくりたい https://www.gatsbyjs.com/tutorial/
https://www.gatsbyjs.com/docs/quick-start/ https://www.gatsbyjs.com/starters/gatsbyjs…]]></description><link>https://ssktkr.com/2020-10/2020-10-26-1526/</link><guid isPermaLink="false">https://ssktkr.com/2020-10/2020-10-26-1526/</guid><pubDate>Mon, 26 Oct 2020 06:26:00 GMT</pubDate><content:encoded>&lt;h1&gt;とにかくblogをつくりたい&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;https://www.gatsbyjs.com/tutorial/&quot;&gt;https://www.gatsbyjs.com/tutorial/&lt;/a&gt;
&lt;a href=&quot;https://www.gatsbyjs.com/docs/quick-start/&quot;&gt;https://www.gatsbyjs.com/docs/quick-start/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.gatsbyjs.com/starters/gatsbyjs/gatsby-starter-blog/&quot;&gt;https://www.gatsbyjs.com/starters/gatsbyjs/gatsby-starter-blog/&lt;/a&gt;
&lt;a href=&quot;https://github.com/gatsbyjs/gatsby-starter-blog&quot;&gt;https://github.com/gatsbyjs/gatsby-starter-blog&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;インストール&lt;/h1&gt;
&lt;p&gt;ねんのため、nodeを最新にしておいて、、&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;brew upgrade node

14:59:41 tkrimac3:~/proj/flutter-firebase-gatsby-takeru[master]% node -v
v15.0.1
14:59:43 tkrimac3:~/proj/flutter-firebase-gatsby-takeru[master]% npm -v
7.0.3

15:00:30 tkrimac3:~/proj/flutter-firebase-gatsby-takeru[master]% npm install -g gatsby-cli
npm ERR! Cannot read property &amp;#39;matches&amp;#39; of undefined

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/takeru/.npm/_logs/2020-10-26T06_00_41_739Z-debug.log&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;は？いきなりなんだよ。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://nodejs.org/ja/download/&quot;&gt;https://nodejs.org/ja/download/&lt;/a&gt;
おすすめは12か・・・&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;15:11:49 tkrimac3:~/proj/flutter-firebase-gatsby-takeru[master]% brew uninstall node
Uninstalling /usr/local/Cellar/node/15.0.1... (3,331 files, 61.2MB)

15:16:35 tkrimac3:~/proj/flutter-firebase-gatsby-takeru[master]% node -v
v12.19.0
15:16:43 tkrimac3:~/proj/flutter-firebase-gatsby-takeru[master]% npm -v
6.14.8&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;15:16:49 tkrimac3:~/proj/flutter-firebase-gatsby-takeru[master]% npm install -g gatsby-cli
npm WARN deprecated @hapi/joi@15.1.1: Switch to &amp;#39;npm install joi&amp;#39;
npm WARN deprecated @hapi/address@2.1.4: Moved to &amp;#39;npm install @sideway/address&amp;#39;
npm WARN deprecated @hapi/bourne@1.3.2: This version has been deprecated and is no longer supported or maintained
npm WARN deprecated @hapi/hoek@8.5.1: This version has been deprecated and is no longer supported or maintained
npm WARN deprecated @hapi/topo@3.1.6: This version has been deprecated and is no longer supported or maintained
npm WARN deprecated core-js@2.6.11: core-js@&amp;lt;3 is no longer maintained and not recommended for usage due to the number of issues. Please, upgrade your dependencies to the actual version of core-js@3.
/usr/local/bin/gatsby -&amp;gt; /usr/local/lib/node_modules/gatsby-cli/cli.js

&amp;gt; core-js@2.6.11 postinstall /usr/local/lib/node_modules/gatsby-cli/node_modules/core-js
&amp;gt; node -e &amp;quot;try{require(&amp;#39;./postinstall&amp;#39;)}catch(e){}&amp;quot;

Thank you for using core-js ( https://github.com/zloirock/core-js ) for polyfilling JavaScript standard library!

The project needs your help! Please consider supporting of core-js on Open Collective or Patreon:
&amp;gt; https://opencollective.com/core-js
&amp;gt; https://www.patreon.com/zloirock

Also, the author of core-js ( https://github.com/zloirock ) is looking for a good job -)


&amp;gt; gatsby-telemetry@1.3.38 postinstall /usr/local/lib/node_modules/gatsby-cli/node_modules/gatsby-telemetry
&amp;gt; node src/postinstall.js || true


&amp;gt; gatsby-cli@2.12.111 postinstall /usr/local/lib/node_modules/gatsby-cli
&amp;gt; node scripts/postinstall.js

╔════════════════════════════════════════════════════════════════════════╗
║                                                                        ║
║   Gatsby collects anonymous usage analytics                            ║
║   to help improve Gatsby for all users.                                ║
║                                                                        ║
║   If you&amp;#39;d like to opt-out, you can use `gatsby telemetry --disable`   ║
║   To learn more, checkout https://gatsby.dev/telemetry                 ║
║                                                                        ║
╚════════════════════════════════════════════════════════════════════════╝
Success!

Welcome to the Gatsby CLI! Please visit https://www.gatsbyjs.org/docs/gatsby-cli/ for more information.

npm WARN gatsby-interface@0.0.193 requires a peer of gatsby@^2.6.0 but none is installed. You must install peer dependencies yourself.
npm WARN gatsby-interface@0.0.193 requires a peer of react-dom@^16.8.1 but none is installed. You must install peer dependencies yourself.
npm WARN acorn-dynamic-import@4.0.0 requires a peer of acorn@^6.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN theme-ui@0.2.52 requires a peer of @mdx-js/react@^1.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN @reach/popover@0.10.3 requires a peer of react-dom@^16.8.0 but none is installed. You must install peer dependencies yourself.
npm WARN @reach/alert@0.10.3 requires a peer of react-dom@^16.8.0 but none is installed. You must install peer dependencies yourself.
npm WARN @reach/tooltip@0.10.3 requires a peer of react-dom@^16.8.0 but none is installed. You must install peer dependencies yourself.
npm WARN @reach/dialog@0.10.3 requires a peer of react-dom@^16.8.0 but none is installed. You must install peer dependencies yourself.
npm WARN @reach/menu-button@0.10.3 requires a peer of react-dom@^16.8.0 but none is installed. You must install peer dependencies yourself.
npm WARN @reach/tabs@0.10.3 requires a peer of react-dom@^16.8.0 but none is installed. You must install peer dependencies yourself.
npm WARN @reach/combobox@0.10.3 requires a peer of react-dom@^16.8.0 but none is installed. You must install peer dependencies yourself.
npm WARN @reach/utils@0.10.5 requires a peer of react-dom@^16.8.0 but none is installed. You must install peer dependencies yourself.
npm WARN @reach/visually-hidden@0.10.4 requires a peer of react-dom@^16.8.0 but none is installed. You must install peer dependencies yourself.
npm WARN @reach/portal@0.10.5 requires a peer of react-dom@^16.8.0 but none is installed. You must install peer dependencies yourself.
npm WARN @reach/auto-id@0.10.5 requires a peer of react-dom@^16.8.0 but none is installed. You must install peer dependencies yourself.
npm WARN @reach/descendants@0.10.5 requires a peer of react-dom@^16.8.0 but none is installed. You must install peer dependencies yourself.
npm WARN @reach/rect@0.10.5 requires a peer of react-dom@^16.8.0 but none is installed. You must install peer dependencies yourself.

+ gatsby-cli@2.12.111
added 862 packages from 625 contributors in 45.899s


   ╭────────────────────────────────────────────────────────────────╮
   │                                                                │
   │      New minor version of npm available! 6.13.7 → 6.14.4       │
   │   Changelog: https://github.com/npm/cli/releases/tag/v6.14.4   │
   │               Run npm install -g npm to update!                │
   │                                                                │
   ╰────────────────────────────────────────────────────────────────╯

15:18:36 tkrimac3:~/proj/flutter-firebase-gatsby-takeru[master]%&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;いきなりいろいろ言われてもわかんないですよ。
WARNたくさんあるけどなんだ？&lt;/p&gt;
&lt;h1&gt;blogをつくる&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;https://qiita.com/k-penguin-sato/items/7554e5e7e90aa10ae225&quot;&gt;https://qiita.com/k-penguin-sato/items/7554e5e7e90aa10ae225&lt;/a&gt;
ちょうどいこれを見ながら・・・&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;gatsby new my-blog https://github.com/gatsbyjs/gatsby-starter-blo
cd my-blog/
gatsby develop&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;で、&lt;a href=&quot;http://localhost:8000/&quot;&gt;http://localhost:8000/&lt;/a&gt; でた〰！&lt;/p&gt;
&lt;h1&gt;デプロイ&lt;/h1&gt;
&lt;p&gt;netlifyにデプロイもできた。&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 581px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/1c651cb9c275d84d402a6ebd7c683009/92d15/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202020-10-26%2015.39.59.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 120.88607594936708%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAYCAYAAAD6S912AAAACXBIWXMAAAsTAAALEwEAmpwYAAADuElEQVQ4y51T225bRRQ9j5CSpiqQhiR24gtp4ti5hwKVmgoSUSRUiQf4Ab6C50pEghfUX0D9A/qEaGnTVoKmiV2S2I4dJ7Zz7GP7nONztc99oRnbUeyEVLClpdmz98yatWfPMAOhSQyv3cXV8DSuTRBEKQYnongvHMG16zG8G5qi/vjMEsZnl+CLLiC0cAOBuWUEZpcR+fgWxmYW8c5oEMxAOILQN99hcGoegZkl+GOLNEkwPDVLNw1NxjASmcP8yioWb68h+ukKbqx+SefTn9zCzTtf0dilkQCYAX8YV0aD6B8N0hMI+n0h9PuCuOwLUZD5ZX8YfcPjePuDsa6RkLw15Kf+lfEJMKS05c/vIHbzNpY/+4Kq8UXnEZz7CFeDk7REopqUPRZbpIrfD0fgjy5Qn1wFyQ9dj2Hww2kwRBFhJ+OlkSD6RgLoGw7Qk0m8o6LlB9r5bp/kW1WFwSysrCL+9w5ebm1jczt+gpcnfqI1xhMtbCe6/Ffx1/hz8xUebzzDo6cbYNa+/hbEckdFFI7LKFd47GcPUWQ5ite7e+AFERdZNpvFz/fv45cHD4jCNQA2DDmHhphEU8qgqeRhSGno9Qxs24LruvA8j8JxnBNYtk0Jn714gfUff8JWIgHm+3s/wLZMcOUCRJ6FwLPguCL4apHOa7wASVaoSkEUKTkxQt7xN54/x731dewkk2BIgCQs24HteHBcwDRtGKYN1wMM06RqCAFR1EXoedQ/yufx68OH2CYKTceBWJdoE/bSaWzG48jl86gJAv7a2sJOKoXdVJo24ahQpARuu/zTpB1jLMeBa9sQeAGyJEMQBGiKCts02zGJxkVBgK5qeJMximGgUBdRUhWwsoySIoOVJRSlOlhFxrEsUZAciR0J/IVgxIaOPzJp/JbcxaN0Eo/3U/g9tUf9J5k0nmT3u/D04GIwjuehqWpIJ/dxkDlA/jCPXDYHtnCM/2NM07bhuC7s9rvqwG53luT+CyjheUYI67p2potvVGi0Cb1TT4FwGJaFPF8DeQWnn0rv2t55i7BnQcdETT0T613Xmz9TMjmAlergFBkVRQavaxB0DSVZguO55xKTn0S+pqKqLYXkO6maDsu0ICoKUuUSctUKDmtVWnaR53FQ4aDqOgzDgGVZJ8SmZUFvNFA4ZlFkS62vZ1k2qjUesqKgXpdQq9bAlTmUSmVwXAX5fBGiKKIuSajyPNRTP0aSZbpP1TSKc7tMTtT0Bh0bzSZV77juhXfZdYfdHf73Z3Lemt69/wDLGzDMBKJmlAAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;できた1&quot;
        title=&quot;できた1&quot;
        src=&quot;/static/1c651cb9c275d84d402a6ebd7c683009/92d15/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202020-10-26%2015.39.59.png&quot;
        srcset=&quot;/static/1c651cb9c275d84d402a6ebd7c683009/c26ae/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202020-10-26%2015.39.59.png 158w,
/static/1c651cb9c275d84d402a6ebd7c683009/6bdcf/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202020-10-26%2015.39.59.png 315w,
/static/1c651cb9c275d84d402a6ebd7c683009/92d15/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202020-10-26%2015.39.59.png 581w&quot;
        sizes=&quot;(max-width: 581px) 100vw, 581px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;
&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/442bf350a00350cf2b17e366567f0fad/b4098/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202020-10-26%2015.42.57.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 108.22784810126582%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAWCAYAAADAQbwGAAAACXBIWXMAAAsTAAALEwEAmpwYAAADbklEQVQ4y41U224bVRQdBPQiGii95NI4MXFixyR1qpCQmgSkcnnhqS/9GdTXCsRP8IZ45oXyAL+B1DRxMrbH9lzsuY/neC4L7T2eqZsEiSMtnTNn5qxZe+29jzS3vIbbmw0sNJ/g7tom5mvbuF/dxr2NLcbdSh2l7V0sbz1CeWcP5Z19VHYPsNr4DLdKFXy4uoG5lfUC0lxpDR/XGlhsfoOF6nZxeKm+gwefPsJC7SE29pqo7jVRPzhCbf+Q5/Xdx0x2+5Ma46NylZ+lOf5DBXfKG7xxbb6EawsruE5YXMWNxdVsb76E93Pcz55vLpUZN5bK+GB5LSO8VVrHnUodjaOv0Th6gq3mV4z6wZeo7n+BGuOQsfn5IWqz2D/kbzYPjrDyMLNAIjXfPn0GzRjin1fHeH3awuvWGZReH34QwPN8eL4P1/PguO4lmJYFGr//8SfevfcAkvTOdTz+7nvEUQxZ7kDXDLQ7XQxUDUEQwPcDJhZigqtGmqY8v/zrb0jSe5Ce//gzfvn1NzhCoD0a4nw0hOn7SJMUcRwjSRLESVIcvDjoGxrHpy388OInSPmLkW1D0TQoug7dHEEIActxMLIsWLbNGJkWq7Zp3zQ5ZPrR7M8kOwgQCAFjOGL/Wucygwhassx7p2fnOJPbOD45ZdKOouDVyQmU/oAjoDGJIhCXNI4iBJPL/iRTpFPk6yhJinWcphBR9AZxDInIJkmCgaaxso7SQ0tuc0hMTASENOU5D3F2PQsmJObxOOTyCMMQ4zBEFEWXsvl/wIRhFMGd1pVuGNCNIfqqysSkJCe/ePiqURCSMtOy0R+oHL6q6ZwoSg4p/68aTC6ACSkxQ9PEQNchd7qcvW6/D7mrQNUNeH4Ax/NgOy6XUl5OoRCI4pgznKMgpJfBeAzH9bjN8najPXrHCAXbwBhnPueFn+MtD8m783YHXaWHXn/Aainb1HoE+oHrenAcl+erfCwIudFtm32j8Knp6ZnWpEjQd0JwT+eKKdz4ArKQJxNWMDQtzu5A0xmqYUAzjMwGssD3Ybtulv00zQipCmZ8LBRatsM3TLfX5wwTegMV7a7Ce7RWdb1QJ6ZqaY5nirwgJLnkEfUqNT95RCVj8uXgZHvTZNEdSRnnO9FxEUXx2x5SyJOpfOrPOE1m1m9AfXwV6Gzez/8CW33QABI7JegAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;できた2&quot;
        title=&quot;できた2&quot;
        src=&quot;/static/442bf350a00350cf2b17e366567f0fad/f058b/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202020-10-26%2015.42.57.png&quot;
        srcset=&quot;/static/442bf350a00350cf2b17e366567f0fad/c26ae/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202020-10-26%2015.42.57.png 158w,
/static/442bf350a00350cf2b17e366567f0fad/6bdcf/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202020-10-26%2015.42.57.png 315w,
/static/442bf350a00350cf2b17e366567f0fad/f058b/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202020-10-26%2015.42.57.png 630w,
/static/442bf350a00350cf2b17e366567f0fad/b4098/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202020-10-26%2015.42.57.png 816w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt; &lt;a href=&quot;https://nervous-bartik-3220fe.netlify.app/&quot;&gt;https://nervous-bartik-3220fe.netlify.app/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;へぇ、人類の進化はすごいな。&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Gatsbyでblogをつくる]]></title><description><![CDATA[Gatsbyにした経緯 Flutterのサイトを作りたいなぁ。
https://www.google.com/search?q=markdown+blog+system https://hexo.io/ これが見つかって、こないだ見た https://itome.team…]]></description><link>https://ssktkr.com/2020-10/2020-10-26-1427/</link><guid isPermaLink="false">https://ssktkr.com/2020-10/2020-10-26-1427/</guid><pubDate>Mon, 26 Oct 2020 05:27:00 GMT</pubDate><content:encoded>&lt;h1&gt;Gatsbyにした経緯&lt;/h1&gt;
&lt;p&gt;Flutterのサイトを作りたいなぁ。
&lt;a href=&quot;https://www.google.com/search?q=markdown+blog+system&quot;&gt;https://www.google.com/search?q=markdown+blog+system&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://hexo.io/&quot;&gt;https://hexo.io/&lt;/a&gt; これが見つかって、こないだ見た &lt;a href=&quot;https://itome.team/blog/2019/08/my-first-post/&quot;&gt;https://itome.team/blog/2019/08/my-first-post/&lt;/a&gt; このサイトに…「HUGO」だったちがうな。&lt;/p&gt;
&lt;p&gt;静的サイトジェネレーターっていうのか。
&lt;a href=&quot;https://www.google.com/search?q=%E9%9D%99%E7%9A%84%E3%82%B5%E3%82%A4%E3%83%88%E3%82%B8%E3%82%A7%E3%83%8D%E3%83%AC%E3%83%BC%E3%82%BF%E3%83%BC&quot;&gt;https://www.google.com/search?q=%E9%9D%99%E7%9A%84%E3%82%B5%E3%82%A4%E3%83%88%E3%82%B8%E3%82%A7%E3%83%8D%E3%83%AC%E3%83%BC%E3%82%BF%E3%83%BC&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://dyno.design/articles/what-is-static-site-generator/&quot;&gt;https://dyno.design/articles/what-is-static-site-generator/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Reactとかそんな仰々しいのいるのか？&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://qiita.com/uehaj/items/1b7f0a86596353587466&quot;&gt;https://qiita.com/uehaj/items/1b7f0a86596353587466&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://qiita.com/hppRC/items/00739eaf9ae7fc95c1ca&quot;&gt;https://qiita.com/hppRC/items/00739eaf9ae7fc95c1ca&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;…&lt;/p&gt;
&lt;p&gt;Gatsby&lt;/p&gt;
&lt;p&gt;とりあえずmdで書いておいてあとで作ったサイトのblogにしよう。という作戦なのでいま(2020-10-26 14:31)時点ではVSCodeでテキストファイルを書いているだけです。&lt;/p&gt;
&lt;p&gt;いろいろすごいしくみ(GraphQL)ですごいのも作れますって感じですので将来性も◎&lt;/p&gt;
&lt;p&gt;でも元々の目的はFlutterのサイトを作りたいってことなのでHelloWorldみたいなチュートリアルとかやらずに(必要ならあとでやる)最速でサイト立ち上げたいです。&lt;/p&gt;
&lt;p&gt;『というか長々とかきましたがお気に入りのstarterから初めて少し変更するぐらいが一番コスパが良いと思います。』
&lt;a href=&quot;https://qiita.com/abouch/items/ab7694e64f011ee2b265&quot;&gt;https://qiita.com/abouch/items/ab7694e64f011ee2b265&lt;/a&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[No title]]></title><description><![CDATA[AppStoreに出すまでのあれこれ。 Login with Apple User Generated Content リソース スプラッシュ画像 https://flutter.dev/docs/development/ui/advanced/splash-screen…]]></description><link>https://ssktkr.com/flutter-tips/AppStore/</link><guid isPermaLink="false">https://ssktkr.com/flutter-tips/AppStore/</guid><pubDate>Wed, 30 Sep 2020 15:00:00 GMT</pubDate><content:encoded>&lt;p&gt;AppStoreに出すまでのあれこれ。&lt;/p&gt;
&lt;h3&gt;Login with Apple&lt;/h3&gt;
&lt;h3&gt;User Generated Content&lt;/h3&gt;
&lt;h3&gt;リソース&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;スプラッシュ画像&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://flutter.dev/docs/development/ui/advanced/splash-screen&quot;&gt;https://flutter.dev/docs/development/ui/advanced/splash-screen&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;アイコン&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;利用規約、プライバシーポリシー、ライセンス表示&lt;/h3&gt;
&lt;h3&gt;リリース&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;ストア用画像&lt;/li&gt;
&lt;li&gt;ストア用文章&lt;/li&gt;
&lt;/ul&gt;</content:encoded></item><item><title><![CDATA[No title]]></title><description><![CDATA[https://flutter.dev/docs/development/tools/devtools/overview VSCodeから起動 コマンドパレットに”devtool”といれる。]]></description><link>https://ssktkr.com/flutter-tips/DevTool/</link><guid isPermaLink="false">https://ssktkr.com/flutter-tips/DevTool/</guid><pubDate>Wed, 30 Sep 2020 15:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://flutter.dev/docs/development/tools/devtools/overview&quot;&gt;https://flutter.dev/docs/development/tools/devtools/overview&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;VSCodeから起動&lt;/h3&gt;
&lt;p&gt;コマンドパレットに”devtool”といれる。&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/a5770f53b039ea050449c5f38d09e461/eb2af/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202020-10-27%204.11.40.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 40.50632911392405%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAYAAAD5nd/tAAAACXBIWXMAABYlAAAWJQFJUiTwAAABXUlEQVQoz33O227TUBBAUf8AJRIqIJK2xLekFWmcJvXxuduOTRMhA7089Yn//4mNeigIVIWHpRlppK2JNqpm+H6P8S1lpaikppSGSjvksyqwBwllKZ9IQ/Su3DNtHoj9LcfmgZF7ZGxvOVr1vCp+OVp9ZrTevfD66oY313smZuDEDJy5r0TJ2rL0e8T2C6fujlH9gws/kJU1WdUxkx1nK8PxfM3b882/5hveX1xzshCcXgo+FhXR1fISbwx9bVmojom9R9ma3bahbxt2fYepBFk8ZZ4mL8zShDyJgyyJiZbLAqUtjXecy54P5g5hW7zzSKXxdYMQkmmckGYz0iz/rxDU5newY/wcdNZircM5H2ZZCuI4IcvyIE2zP/vfQrBpWrTW2HrLWH1j7gaMMThfh2DbbimKFXk+Cw7FQvDTYhE+EKVAW8+k3JHLG5RSeF+jlA73qpJhPoWTJD0Y/AkDI/2PoyXIXgAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;          2020 10 27 4 11 40&quot;
        title=&quot;          2020 10 27 4 11 40&quot;
        src=&quot;/static/a5770f53b039ea050449c5f38d09e461/f058b/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202020-10-27%204.11.40.png&quot;
        srcset=&quot;/static/a5770f53b039ea050449c5f38d09e461/c26ae/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202020-10-27%204.11.40.png 158w,
/static/a5770f53b039ea050449c5f38d09e461/6bdcf/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202020-10-27%204.11.40.png 315w,
/static/a5770f53b039ea050449c5f38d09e461/f058b/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202020-10-27%204.11.40.png 630w,
/static/a5770f53b039ea050449c5f38d09e461/40601/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202020-10-27%204.11.40.png 945w,
/static/a5770f53b039ea050449c5f38d09e461/eb2af/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202020-10-27%204.11.40.png 954w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[No title]]></title><description><![CDATA[https://firebase.flutter.dev/docs/overview Firebaseプロジェクトを作成 GoogleAnalyticsどうするか聞かれたら、Yes、Yes、デフォルトなかんじで。 iOS xcodeを開く。open ios/Runner…]]></description><link>https://ssktkr.com/flutter-tips/Firebase/</link><guid isPermaLink="false">https://ssktkr.com/flutter-tips/Firebase/</guid><pubDate>Wed, 30 Sep 2020 15:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;https://firebase.flutter.dev/docs/overview&quot;&gt;https://firebase.flutter.dev/docs/overview&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Firebaseプロジェクトを作成&lt;/li&gt;
&lt;li&gt;GoogleAnalyticsどうするか聞かれたら、Yes、Yes、デフォルトなかんじで。&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;iOS&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;xcodeを開く。open ios/Runner.xcworkspace&lt;/li&gt;
&lt;li&gt;iOSバンドルID  「com.example.testAppTakeru001」
ダウンロードした GoogleService-Info.plist は FinderからXCodeにドラッグ＆ドロップする。&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ios/Podfile&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;target &amp;#39;Runner&amp;#39; do
pod &amp;#39;FirebaseFirestore&amp;#39;, :git =&amp;gt; &amp;#39;https://github.com/invertase/firestore-ios-sdk-frameworks.git&amp;#39;, :tag =&amp;gt; &amp;#39;6.26.0&amp;#39;
use_frameworks!
use_modular_headers!

flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
end&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;dependencies:
  firebase_core: &amp;quot;0.5.0+1&amp;quot;
  firebase_analytics: &amp;quot;^6.0.2&amp;quot;
  firebase_auth: &amp;quot;^0.18.1+2&amp;quot;
  google_sign_in: &amp;quot;^4.5.1&amp;quot;
  cloud_firestore: &amp;quot;^0.14.1+3&amp;quot;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h1&gt;.dart&lt;/h1&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;void main() {
  WidgetsFlutterBinding.ensureInitialized();
  runApp(MyApp());
}


import &amp;#39;package:firebase_core/firebase_core.dart&amp;#39;;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</content:encoded></item><item><title><![CDATA[No title]]></title><description><![CDATA[調べたことのまとめ。 インストール Hello Flutter 状態管理 - 基本 / setState… 状態管理 - Provider 状態管理 - Riverpod シミュレータ iPhone シミュレータ Android デバイス iPhone デバイス iPad…]]></description><link>https://ssktkr.com/flutter-tips/FlutterTips/</link><guid isPermaLink="false">https://ssktkr.com/flutter-tips/FlutterTips/</guid><pubDate>Wed, 30 Sep 2020 15:00:00 GMT</pubDate><content:encoded>&lt;p&gt;調べたことのまとめ。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;インストール&lt;/li&gt;
&lt;li&gt;Hello Flutter&lt;/li&gt;
&lt;li&gt;状態管理 - 基本 / setState…&lt;/li&gt;
&lt;li&gt;状態管理 - Provider&lt;/li&gt;
&lt;li&gt;状態管理 - Riverpod&lt;/li&gt;
&lt;li&gt;シミュレータ iPhone&lt;/li&gt;
&lt;li&gt;シミュレータ Android&lt;/li&gt;
&lt;li&gt;デバイス iPhone&lt;/li&gt;
&lt;li&gt;デバイス iPad&lt;/li&gt;
&lt;li&gt;デバイス Android&lt;/li&gt;
&lt;li&gt;デバイス Amazon Fire&lt;/li&gt;
&lt;li&gt;Flutter Web&lt;/li&gt;
&lt;li&gt;Firebase Auth&lt;/li&gt;
&lt;li&gt;Firebase Auth (Google Login)&lt;/li&gt;
&lt;li&gt;Firebase Auth (Apple)&lt;/li&gt;
&lt;li&gt;Firebase Auth (匿名)&lt;/li&gt;
&lt;li&gt;Firestore セキュリティルール&lt;/li&gt;
&lt;li&gt;Firestore ドキュメント設計&lt;/li&gt;
&lt;li&gt;Firebase Storage - アップロード&lt;/li&gt;
&lt;li&gt;カメラ iOS,Android&lt;/li&gt;
&lt;li&gt;写真を開く iOS,Android&lt;/li&gt;
&lt;li&gt;タブレット iPad,Fire10&lt;/li&gt;
&lt;li&gt;レスポンシブ&lt;/li&gt;
&lt;li&gt;テーマ&lt;/li&gt;
&lt;/ul&gt;</content:encoded></item><item><title><![CDATA[No title]]></title><description><![CDATA[便利ライブラリ https://medium.com/flutter-jp/tips-b2487a63a8 quiver
tuple
rxdart
intl]]></description><link>https://ssktkr.com/flutter-tips/Dep/</link><guid isPermaLink="false">https://ssktkr.com/flutter-tips/Dep/</guid><pubDate>Wed, 30 Sep 2020 15:00:00 GMT</pubDate><content:encoded>&lt;p&gt;便利ライブラリ&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://medium.com/flutter-jp/tips-b2487a63a8&quot;&gt;https://medium.com/flutter-jp/tips-b2487a63a8&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;quiver
tuple
rxdart
intl&lt;/p&gt;</content:encoded></item><item><title><![CDATA[No title]]></title><description><![CDATA[https://qiita.com/k3ntar0/items/f14b0b03fbc13d0ed925
(https://medium.com/flutter-jp/state-1daa7fd66b94)  https://github.com/mono0926/wdb10…]]></description><link>https://ssktkr.com/flutter-tips/Freezed/</link><guid isPermaLink="false">https://ssktkr.com/flutter-tips/Freezed/</guid><pubDate>Wed, 30 Sep 2020 15:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://qiita.com/k3ntar0/items/f14b0b03fbc13d0ed925&quot;&gt;https://qiita.com/k3ntar0/items/f14b0b03fbc13d0ed925&lt;/a&gt;
(&lt;a href=&quot;https://medium.com/flutter-jp/state-1daa7fd66b94&quot;&gt;https://medium.com/flutter-jp/state-1daa7fd66b94&lt;/a&gt;)&lt;/p&gt;
&lt;h1&gt;&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/mono0926/wdb106-flutter/blob/main/lib/model/entities/cart_item/cart_item.dart&quot;&gt;https://github.com/mono0926/wdb106-flutter/blob/main/lib/model/entities/cart_item/cart_item.dart&lt;/a&gt;
&lt;a href=&quot;https://github.com/mono0926/wdb106-flutter/blob/main/lib/model/entities/cart_item/cart_item.freezed.dart&quot;&gt;https://github.com/mono0926/wdb106-flutter/blob/main/lib/model/entities/cart_item/cart_item.freezed.dart&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;json&lt;/h1&gt;
&lt;p&gt;jsonの機能を使うには、jsonのライブラリをいれないとダメ！&lt;/p&gt;</content:encoded></item><item><title><![CDATA[No title]]></title><description><![CDATA[GooglePlayに出すまでのあれこれ。]]></description><link>https://ssktkr.com/flutter-tips/GooglePlay/</link><guid isPermaLink="false">https://ssktkr.com/flutter-tips/GooglePlay/</guid><pubDate>Wed, 30 Sep 2020 15:00:00 GMT</pubDate><content:encoded>&lt;p&gt;GooglePlayに出すまでのあれこれ。&lt;/p&gt;</content:encoded></item><item><title><![CDATA[No title]]></title><description><![CDATA[Hot reload / Hot restart / Full restart https://flutter.dev/docs/development/tools/vs-code#hot-reload-vs-hot-restart
https://flutter.dev…]]></description><link>https://ssktkr.com/flutter-tips/HotReload/</link><guid isPermaLink="false">https://ssktkr.com/flutter-tips/HotReload/</guid><pubDate>Wed, 30 Sep 2020 15:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;Hot reload / Hot restart / Full restart&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;https://flutter.dev/docs/development/tools/vs-code#hot-reload-vs-hot-restart&quot;&gt;https://flutter.dev/docs/development/tools/vs-code#hot-reload-vs-hot-restart&lt;/a&gt;
&lt;a href=&quot;https://flutter.dev/docs/development/tools/hot-reload&quot;&gt;https://flutter.dev/docs/development/tools/hot-reload&lt;/a&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[No title]]></title><description><![CDATA[Flutter…]]></description><link>https://ssktkr.com/flutter-tips/LetsStartFlutter202010/</link><guid isPermaLink="false">https://ssktkr.com/flutter-tips/LetsStartFlutter202010/</guid><pubDate>Wed, 30 Sep 2020 15:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Flutterをやってみよう！と思って調べていくと、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;公式読め&lt;/li&gt;
&lt;li&gt;英語読め&lt;/li&gt;
&lt;li&gt;リンク先でさらにこれ読めっていわれてどんどん増える&lt;/li&gt;
&lt;li&gt;多すぎる。いつおわるんだ。&lt;/li&gt;
&lt;li&gt;これ古いんじゃないか？&lt;/li&gt;
&lt;li&gt;ねむくなる。ねむい。&lt;/li&gt;
&lt;li&gt;どこまで行ったらコード書き始めていいんだ。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;こんな感じなのでおすすめの勉強コンテンツリンク集を作りました。&lt;/p&gt;
&lt;p&gt;(以下作成中)&lt;/p&gt;
&lt;h3&gt;環境構築&lt;/h3&gt;
&lt;p&gt;最低限(iPhoneシミュレータで実行できるところまで)のセットアップをする。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mac&lt;/li&gt;
&lt;li&gt;VSCode&lt;/li&gt;
&lt;li&gt;iPhoneシミュレータだけ入れる。(Androidと実機はやりたくなったときにあとでやる)&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Run&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;flutter create my_app&lt;/li&gt;
&lt;li&gt;cd my_app&lt;/li&gt;
&lt;li&gt;flutter run&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;iPhoneシミュレータで実行する / 再起動する&lt;/li&gt;
&lt;li&gt;コードを書き換えるとHotReloadされる&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;(実技) チュートリアル(Write your first Flutter app)&lt;/h3&gt;
&lt;p&gt;写経して体験&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://flutter.dev/docs/get-started/codelab&quot;&gt;https://flutter.dev/docs/get-started/codelab&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://codelabs.developers.google.com/codelabs/first-flutter-app-pt2#0&quot;&gt;https://codelabs.developers.google.com/codelabs/first-flutter-app-pt2#0&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;(実技) Widgetを組み合わせて画面を作る&lt;/h3&gt;
&lt;p&gt;Widgetツリーを作れば画面ができる&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Building layouts
&lt;a href=&quot;https://flutter.dev/docs/development/ui/layout/tutorial&quot;&gt;https://flutter.dev/docs/development/ui/layout/tutorial&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;(理論) WidgetとWidgetツリー&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Layouts in Flutter
&lt;a href=&quot;https://flutter.dev/docs/development/ui/layout&quot;&gt;https://flutter.dev/docs/development/ui/layout&lt;/a&gt;
いろいろなWidgetがあることを知る&lt;/li&gt;
&lt;li&gt;Introduction to widgets
&lt;a href=&quot;https://flutter.dev/docs/development/ui/widgets-intro&quot;&gt;https://flutter.dev/docs/development/ui/widgets-intro&lt;/a&gt;
StatefulWidgetとStateが出てくる&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;さらに詳しく&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Flutterのサンプルアプリが画面に描画されるまで
&lt;a href=&quot;https://itome.team/blog/2019/12/flutter-advent-calendar-day5/&quot;&gt;https://itome.team/blog/2019/12/flutter-advent-calendar-day5/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;(実技) setState&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://flutter.dev/docs/development/ui/interactive&quot;&gt;https://flutter.dev/docs/development/ui/interactive&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;(理論)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Widgetのライフサイクル&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;StatelessWidget&lt;/li&gt;
&lt;li&gt;StatefulWidget&lt;/li&gt;
&lt;li&gt;(&lt;a href=&quot;https://medium.com/flutter-jp/dive-into-flutter-4add38741d07&quot;&gt;https://medium.com/flutter-jp/dive-into-flutter-4add38741d07&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;setStateから画面が更新されるまで&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Flutter の Widget ツリーの裏側で起こっていること&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://medium.com/flutter-jp/dive-into-flutter-4add38741d07&quot;&gt;https://medium.com/flutter-jp/dive-into-flutter-4add38741d07&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;状態には2種類ある&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://flutter.dev/docs/development/data-and-backend/state-mgmt/ephemeral-vs-app&quot;&gt;https://flutter.dev/docs/development/data-and-backend/state-mgmt/ephemeral-vs-app&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Differentiate between ephemeral state and app state&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;(実技) Provider&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://flutter.dev/docs/development/data-and-backend/state-mgmt/simple&quot;&gt;https://flutter.dev/docs/development/data-and-backend/state-mgmt/simple&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Consumer&lt;/li&gt;
&lt;li&gt;Provider.of&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;(理論) WidgetツリーとInheritedWidgetとProvider&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;FlutterのBuildContextとInheritedWidgetを理解する
&lt;a href=&quot;https://itome.team/blog/2019/12/flutter-advent-calendar-day6/&quot;&gt;https://itome.team/blog/2019/12/flutter-advent-calendar-day6/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Providerの役割&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;(setStateしてくれる??)&lt;/li&gt;
&lt;li&gt;DI&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;(InheritedWidget を完全に理解する &lt;a href=&quot;https://medium.com/flutter-jp/inherited-widget-37495200d965&quot;&gt;https://medium.com/flutter-jp/inherited-widget-37495200d965&lt;/a&gt;)&lt;/p&gt;
&lt;h3&gt;(実技) 環境設定&lt;/h3&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;linter&lt;/li&gt;
&lt;li&gt;VSCodeでの便利機能&lt;/li&gt;
&lt;/ul&gt;
&lt;!--
--&gt;</content:encoded></item><item><title><![CDATA[No title]]></title><description><![CDATA[Stateful Widget のパフォーマンスを考慮した正しい扱い方
https://medium.com/flutter-jp/state-performance-7a5f67d62edd Flutter の Widget ツリーの裏側で起こっていること
https…]]></description><link>https://ssktkr.com/flutter-tips/Performance/</link><guid isPermaLink="false">https://ssktkr.com/flutter-tips/Performance/</guid><pubDate>Wed, 30 Sep 2020 15:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Stateful Widget のパフォーマンスを考慮した正しい扱い方
&lt;a href=&quot;https://medium.com/flutter-jp/state-performance-7a5f67d62edd&quot;&gt;https://medium.com/flutter-jp/state-performance-7a5f67d62edd&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Flutter の Widget ツリーの裏側で起こっていること
&lt;a href=&quot;https://medium.com/flutter-jp/dive-into-flutter-4add38741d07&quot;&gt;https://medium.com/flutter-jp/dive-into-flutter-4add38741d07&lt;/a&gt;&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;パフォーマンスをどの程度意識するべきか
まず、優先度観点としては、個人的には以下程度で良いと思います。
(項目や順番は厳密なものではなく、パフォーマンスが一番下ということが主旨です。)
1. 可読性
2. メンテナンス性
3. 実装の手間
4. パフォーマンス&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;とのことなのでパフォーマンスで困ったらまたここに戻ってこよう。&lt;/p&gt;
&lt;h3&gt;DevTool&lt;/h3&gt;
&lt;p&gt;Flutterでの開発をスムーズに行うためのTips集
&lt;a href=&quot;https://medium.com/flutter-jp/tips-b2487a63a8&quot;&gt;https://medium.com/flutter-jp/tips-b2487a63a8&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Flutter Performanceでリビルド回数がおかしくないか確認する。&lt;/p&gt;</content:encoded></item><item><title><![CDATA[No title]]></title><description><![CDATA[識者の見解2020-10 Flutterの状態管理手法の選定 2020年8月版
https://medium.com/flutter-jp/state-1daa7fd66b94 Riverpod (新Provider)
StateNotifier (Better…]]></description><link>https://ssktkr.com/flutter-tips/Riverpod/</link><guid isPermaLink="false">https://ssktkr.com/flutter-tips/Riverpod/</guid><pubDate>Wed, 30 Sep 2020 15:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;識者の見解2020-10&lt;/h3&gt;
&lt;p&gt;Flutterの状態管理手法の選定 2020年8月版
&lt;a href=&quot;https://medium.com/flutter-jp/state-1daa7fd66b94&quot;&gt;https://medium.com/flutter-jp/state-1daa7fd66b94&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Riverpod (新Provider)
StateNotifier (Better ValueNotifier)
freezed (immutableなクラスの扱いなどを楽にするコード生成器)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;ProviderとRiverpod、どちらがお勧め？
まず、純粋に機能的にProviderがRiverpodより優れている点は思い浮かびません。そのため、個人的には今後Providerをあえて選ぶことはないと思いますが、&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;StateNotifierを使ったFlutterのアプリ設計
&lt;a href=&quot;https://itome.team/blog/2020/05/flutter-state-notifier-provider/&quot;&gt;https://itome.team/blog/2020/05/flutter-state-notifier-provider/&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Collection if/forや拡張メソッドを使うためにDart2.7~を有効にしておく&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;状態管理にはStateNotifierを使う&lt;/li&gt;
&lt;li&gt;LocatorMixinを使った依存性の注入&lt;/li&gt;
&lt;li&gt;Modelクラスの定義にはfreezedを使う&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;StateNotifierとfreezedが共通、Riverpodでやってみよう。
半年後どうなってるかわかりませんが。。。&lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;https://github.com/rrousselGit/river_pod&quot;&gt;https://github.com/rrousselGit/river_pod&lt;/a&gt;&lt;/h3&gt;
&lt;h3&gt;&lt;a href=&quot;https://riverpod.dev/&quot;&gt;https://riverpod.dev/&lt;/a&gt;&lt;/h3&gt;</content:encoded></item><item><title><![CDATA[No title]]></title><description><![CDATA[Linterはコーディングルールをチェックしてくれる仕組みです。 https://dart.dev/guides/language/analysis-options セットアップ まずは、
https://medium.com/flutter-jp/analysis-b8dbb…]]></description><link>https://ssktkr.com/flutter-tips/Linter/</link><guid isPermaLink="false">https://ssktkr.com/flutter-tips/Linter/</guid><pubDate>Wed, 30 Sep 2020 15:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Linterはコーディングルールをチェックしてくれる仕組みです。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://dart.dev/guides/language/analysis-options&quot;&gt;https://dart.dev/guides/language/analysis-options&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;セットアップ&lt;/h3&gt;
&lt;p&gt;まずは、
&lt;a href=&quot;https://medium.com/flutter-jp/analysis-b8dbb19d3978&quot;&gt;https://medium.com/flutter-jp/analysis-b8dbb19d3978&lt;/a&gt;
の通りに入れました。&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;# pubspec.yamlにpedantic_monoを追加
dev_dependencies:
  flutter_test:
    sdk: flutter
  pedantic_mono: any

# analysis_options.yaml をつくる
wget https://raw.githubusercontent.com/mono0926/pedantic_mono/master/example/analysis_options.yaml&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;一部のルール除外するには&lt;/h3&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;analysis_options.yaml&quot;&gt;&lt;pre class=&quot;language-analysis_options.yaml&quot;&gt;&lt;code class=&quot;language-analysis_options.yaml&quot;&gt;# https://pub.dev/packages/pedantic_mono
include: package:pedantic_mono/analysis_options.yaml
linter:
    rules:
        omit_local_variable_types: false
        lines_longer_than_80_chars: false&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;dartfixで自動修正&lt;/h3&gt;
&lt;p&gt;途中からセットアップするとおそらく指摘が多すぎて手動でなおしてられません。
dartfixを使うと自動で修正できました。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://pub.dev/packages/dartfix&quot;&gt;https://pub.dev/packages/dartfix&lt;/a&gt;&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;pub global activate dartfix
export PATH=&amp;quot;$PATH&amp;quot;:&amp;quot;$HOME/.pub-cache/bin&amp;quot;

dartfix --pedantic lib
dartfix --pedantic lib --overwrite

dartfix --fix=prefer_const_constructors,prefer_final_locals lib
dartfix --fix=prefer_const_constructors,prefer_final_locals lib --overwrite&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</content:encoded></item><item><title><![CDATA[No title]]></title><description><![CDATA[https://flutter.dev/docs/cookbook 全部見る Imagesまで見た Flutterの効率良い学び方
https://medium.com/flutter-jp/flutter-learning-c5640c5f05b9 Flutter…]]></description><link>https://ssktkr.com/flutter-tips/TODO/</link><guid isPermaLink="false">https://ssktkr.com/flutter-tips/TODO/</guid><pubDate>Wed, 30 Sep 2020 15:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://flutter.dev/docs/cookbook&quot;&gt;https://flutter.dev/docs/cookbook&lt;/a&gt; 全部見る Imagesまで見た&lt;/p&gt;
&lt;p&gt;Flutterの効率良い学び方
&lt;a href=&quot;https://medium.com/flutter-jp/flutter-learning-c5640c5f05b9&quot;&gt;https://medium.com/flutter-jp/flutter-learning-c5640c5f05b9&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Flutterでの開発をスムーズに行うためのTips集
&lt;a href=&quot;https://medium.com/flutter-jp/tips-b2487a63a8&quot;&gt;https://medium.com/flutter-jp/tips-b2487a63a8&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;【神パッケージ】 Riverpod の使い方【Flutter】
&lt;a href=&quot;https://note.com/mxiskw/n/n5c06bc2dd0d5&quot;&gt;https://note.com/mxiskw/n/n5c06bc2dd0d5&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://itome.team/blog/&quot;&gt;https://itome.team/blog/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Flutter Layout Cheat Sheet
&lt;a href=&quot;https://medium.com/flutter-community/flutter-layout-cheat-sheet-5363348d037e&quot;&gt;https://medium.com/flutter-community/flutter-layout-cheat-sheet-5363348d037e&lt;/a&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[No title]]></title><description><![CDATA[おかしくなったらやってみること flutter clean rm ios/Podfile.lock XCodeをすべて閉じる VSCodeをすべて閉じて開き直す OS再起動 アップデート(XCode,VSCode,Dart/Flutterプラグイン,利用中のライブラリ)]]></description><link>https://ssktkr.com/flutter-tips/Troubleshooting/</link><guid isPermaLink="false">https://ssktkr.com/flutter-tips/Troubleshooting/</guid><pubDate>Wed, 30 Sep 2020 15:00:00 GMT</pubDate><content:encoded>&lt;h3&gt;おかしくなったらやってみること&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;flutter clean&lt;/li&gt;
&lt;li&gt;rm ios/Podfile.lock&lt;/li&gt;
&lt;li&gt;XCodeをすべて閉じる&lt;/li&gt;
&lt;li&gt;VSCodeをすべて閉じて開き直す&lt;/li&gt;
&lt;li&gt;OS再起動&lt;/li&gt;
&lt;li&gt;アップデート(XCode,VSCode,Dart/Flutterプラグイン,利用中のライブラリ)&lt;/li&gt;
&lt;/ul&gt;</content:encoded></item><item><title><![CDATA[No title]]></title><description><![CDATA[VSCodeのプラグイン https://flutter.dev/docs/get-started/editor?tab=vscode Flutter/Dart Pluginを入れる Flutter Doctorで確認 VSCodeの使い方 https://flutter.dev…]]></description><link>https://ssktkr.com/flutter-tips/VSCode/</link><guid isPermaLink="false">https://ssktkr.com/flutter-tips/VSCode/</guid><pubDate>Wed, 30 Sep 2020 15:00:00 GMT</pubDate><content:encoded>&lt;h4&gt;VSCodeのプラグイン&lt;/h4&gt;
&lt;p&gt;&lt;a href=&quot;https://flutter.dev/docs/get-started/editor?tab=vscode&quot;&gt;https://flutter.dev/docs/get-started/editor?tab=vscode&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Flutter/Dart Pluginを入れる&lt;/li&gt;
&lt;li&gt;Flutter Doctorで確認&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;VSCodeの使い方&lt;/h4&gt;
&lt;p&gt;&lt;a href=&quot;https://flutter.dev/docs/development/tools/vs-code&quot;&gt;https://flutter.dev/docs/development/tools/vs-code&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;プロジェクト作成&lt;/li&gt;
&lt;li&gt;プロジェクトを開く&lt;/li&gt;
&lt;li&gt;QuickFix&lt;/li&gt;
&lt;/ul&gt;</content:encoded></item><item><title><![CDATA[No title]]></title><description><![CDATA[難易度、使用頻度で整理したらどうだろう？ https://flutter.dev/docs/reference/widgets
https://flutter.dev/docs/development/ui/widgets 初級 : Widget…]]></description><link>https://ssktkr.com/flutter-tips/WidgetCatalog/</link><guid isPermaLink="false">https://ssktkr.com/flutter-tips/WidgetCatalog/</guid><pubDate>Wed, 30 Sep 2020 15:00:00 GMT</pubDate><content:encoded>&lt;p&gt;難易度、使用頻度で整理したらどうだろう？&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://flutter.dev/docs/reference/widgets&quot;&gt;https://flutter.dev/docs/reference/widgets&lt;/a&gt;
&lt;a href=&quot;https://flutter.dev/docs/development/ui/widgets&quot;&gt;https://flutter.dev/docs/development/ui/widgets&lt;/a&gt;&lt;/p&gt;
&lt;!--
サンプル
 - よく使うものサンプル
 - 同じような機能でグループ
 - 一緒に使う組み合わせグループ
--&gt;
&lt;h3&gt;初級 : Widgetを組み合わせて画面を作れるようになる&lt;/h3&gt;
&lt;p&gt;Widgetの階層構造を作れれば、Flutterでモック画面が作れる。&lt;/p&gt;
&lt;h3&gt;中級 : ちょっとだけむずかしいWidget&lt;/h3&gt;
&lt;h3&gt;上級 : 無くてもアプリは作れるけど知ってると便利なWidget&lt;/h3&gt;</content:encoded></item><item><title><![CDATA[No title]]></title><description><![CDATA[日付選択フォームが欲しくて、探していたら、 https://pub.dev/packages/flutter_form_builder その他いろいろ入っている物を見つけましたが、
日付選択フォームだけが欲しかったのでflutterformbuilder…]]></description><link>https://ssktkr.com/flutter-tips/datetime_picker_formfield/</link><guid isPermaLink="false">https://ssktkr.com/flutter-tips/datetime_picker_formfield/</guid><pubDate>Wed, 30 Sep 2020 15:00:00 GMT</pubDate><content:encoded>&lt;p&gt;日付選択フォームが欲しくて、探していたら、&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://pub.dev/packages/flutter_form_builder&quot;&gt;https://pub.dev/packages/flutter_form_builder&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;その他いろいろ入っている物を見つけましたが、
日付選択フォームだけが欲しかったのでflutter&lt;em&gt;form&lt;/em&gt;builderの依存先パッケージの&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://pub.dev/packages/datetime_picker_formfield&quot;&gt;https://pub.dev/packages/datetime_picker_formfield&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;これを使ってみることにしました。&lt;/p&gt;
&lt;h1&gt;日本語にする&lt;/h1&gt;
&lt;p&gt;あとでかく。&lt;/p&gt;</content:encoded></item><item><title><![CDATA[New Beginnings]]></title><description><![CDATA[Far far away, behind the word mountains, far from the countries Vokalia and
Consonantia, there live the blind texts. Separated they live in…]]></description><link>https://ssktkr.com/new-beginnings/</link><guid isPermaLink="false">https://ssktkr.com/new-beginnings/</guid><pubDate>Thu, 28 May 2015 22:40:32 GMT</pubDate><content:encoded>&lt;p&gt;Far far away, behind the word mountains, far from the countries Vokalia and
Consonantia, there live the blind texts. Separated they live in Bookmarksgrove
right at the coast of the Semantics, a large language ocean. A small river named
Duden flows by their place and supplies it with the necessary regelialia.&lt;/p&gt;
&lt;h2&gt;On deer horse aboard tritely yikes and much&lt;/h2&gt;
&lt;p&gt;The Big Oxmox advised her not to do so, because there were thousands of bad
Commas, wild Question Marks and devious Semikoli, but the Little Blind Text
didn’t listen. She packed her seven versalia, put her initial into the belt and
made herself on the way.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;This however showed weasel&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Well uncritical so misled&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;this is very interesting&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Goodness much until that fluid owl&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When she reached the first hills of the &lt;strong&gt;Italic Mountains&lt;/strong&gt;, she had a last
view back on the skyline of her hometown &lt;em&gt;Bookmarksgrove&lt;/em&gt;, the headline of
&lt;a href=&quot;http://google.com&quot;&gt;Alphabet Village&lt;/a&gt; and the subline of her own road, the Line
Lane. Pityful a rhetoric question ran over her cheek, then she continued her
way. On her way she met a copy.&lt;/p&gt;
&lt;h3&gt;Overlaid the jeepers uselessly much excluding&lt;/h3&gt;
&lt;p&gt;But nothing the copy said could convince her and so it didn’t take long until a
few insidious Copy Writers ambushed her, made her drunk with
&lt;a href=&quot;http://google.com&quot;&gt;Longe and Parole&lt;/a&gt; and dragged her into their agency, where
they abused her for their projects again and again. And if she hasn’t been
rewritten, then they are still using her.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Far far away, behind the word mountains, far from the countries Vokalia and
Consonantia, there live the blind texts. Separated they live in Bookmarksgrove
right at the coast of the Semantics, a large language ocean.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It is a paradisematic country, in which roasted parts of sentences fly into your
mouth. Even the all-powerful Pointing has no control about the blind texts it is
an almost unorthographic life One day however a small line of blind text by the
name of Lorem Ipsum decided to leave for the far World of Grammar.&lt;/p&gt;
&lt;h3&gt;According a funnily until pre-set or arrogant well cheerful&lt;/h3&gt;
&lt;p&gt;The Big Oxmox advised her not to do so, because there were thousands of bad
Commas, wild Question Marks and devious Semikoli, but the Little Blind Text
didn’t listen. She packed her seven versalia, put her initial into the belt and
made herself on the way.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;So baboon this&lt;/li&gt;
&lt;li&gt;Mounted militant weasel gregariously admonishingly straightly hey&lt;/li&gt;
&lt;li&gt;Dear foresaw hungry and much some overhung&lt;/li&gt;
&lt;li&gt;Rash opossum less because less some amid besides yikes jeepers frenetic
impassive fruitlessly shut&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;When she reached the first hills of the Italic Mountains, she had a last view
back on the skyline of her hometown Bookmarksgrove, the headline of Alphabet
Village and the subline of her own road, the Line Lane. Pityful a rhetoric
question ran over her cheek, then she continued her way. On her way she met a
copy.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The copy warned the Little Blind Text, that where it came from it would have
been rewritten a thousand times and everything that was left from its origin
would be the word “and” and the Little Blind Text should turn around and
return to its own, safe country.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;But nothing the copy said could convince her and so it didn’t take long until a
few insidious Copy Writers ambushed her, made her drunk with Longe and Parole
and dragged her into their agency, where they abused her for their projects
again and again. And if she hasn’t been rewritten, then they are still using
her. Far far away, behind the word mountains, far from the countries Vokalia and
Consonantia, there live the blind texts.&lt;/p&gt;
&lt;h4&gt;Silent delightfully including because before one up barring chameleon&lt;/h4&gt;
&lt;p&gt;Separated they live in Bookmarksgrove right at the coast of the Semantics, a
large language ocean. A small river named Duden flows by their place and
supplies it with the necessary regelialia. It is a paradisematic country, in
which roasted parts of sentences fly into your mouth.&lt;/p&gt;
&lt;p&gt;Even the all-powerful Pointing has no control about the blind texts it is an
almost unorthographic life One day however a small line of blind text by the
name of Lorem Ipsum decided to leave for the far World of Grammar. The Big Oxmox
advised her not to do so, because there were thousands of bad Commas, wild
Question Marks and devious Semikoli, but the Little Blind Text didn’t listen.&lt;/p&gt;
&lt;h5&gt;Wherever far wow thus a squirrel raccoon jeez jaguar this from along&lt;/h5&gt;
&lt;p&gt;She packed her seven versalia, put her initial into the belt and made herself on
the way. When she reached the first hills of the Italic Mountains, she had a
last view back on the skyline of her hometown Bookmarksgrove, the headline of
Alphabet Village and the subline of her own road, the Line Lane. Pityful a
rhetoric question ran over her cheek, then she continued her way. On her way she
met a copy.&lt;/p&gt;
&lt;h6&gt;Slapped cozy a that lightheartedly and far&lt;/h6&gt;
&lt;p&gt;The copy warned the Little Blind Text, that where it came from it would have
been rewritten a thousand times and everything that was left from its origin
would be the word “and” and the Little Blind Text should turn around and return
to its own, safe country. But nothing the copy said could convince her and so it
didn’t take long until a few insidious Copy Writers ambushed her, made her drunk
with Longe and Parole and dragged her into their agency, where they abused her
for their projects again and again.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[My Second Post!]]></title><description><![CDATA[Wow! I love blogging so much already. Did you know that “despite its name, salted duck eggs can also be made from
chicken eggs, though the…]]></description><link>https://ssktkr.com/my-second-post/</link><guid isPermaLink="false">https://ssktkr.com/my-second-post/</guid><pubDate>Wed, 06 May 2015 23:46:37 GMT</pubDate><content:encoded>&lt;p&gt;Wow! I love blogging so much already.&lt;/p&gt;
&lt;p&gt;Did you know that “despite its name, salted duck eggs can also be made from
chicken eggs, though the taste and texture will be somewhat different, and the
egg yolk will be less rich.”?
(&lt;a href=&quot;https://en.wikipedia.org/wiki/Salted_duck_egg&quot;&gt;Wikipedia Link&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Yeah, I didn’t either.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Hello World]]></title><description><![CDATA[This is my first post on my new fake blog! How exciting! I’m sure I’ll write a lot more interesting things in the future. Oh, and here’s a…]]></description><link>https://ssktkr.com/hello-world/</link><guid isPermaLink="false">https://ssktkr.com/hello-world/</guid><pubDate>Fri, 01 May 2015 22:12:03 GMT</pubDate><content:encoded>&lt;p&gt;This is my first post on my new fake blog! How exciting!&lt;/p&gt;
&lt;p&gt;I’m sure I’ll write a lot more interesting things in the future.&lt;/p&gt;
&lt;p&gt;Oh, and here’s a great quote from this Wikipedia on
&lt;a href=&quot;https://en.wikipedia.org/wiki/Salted_duck_egg&quot;&gt;salted duck eggs&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A salted duck egg is a Chinese preserved food product made by soaking duck
eggs in brine, or packing each egg in damp, salted charcoal. In Asian
supermarkets, these eggs are sometimes sold covered in a thick layer of salted
charcoal paste. The eggs may also be sold with the salted paste removed,
wrapped in plastic, and vacuum packed. From the salt curing process, the
salted duck eggs have a briny aroma, a gelatin-like egg white and a
firm-textured, round yolk that is bright orange-red in color.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 630px; &quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/8058f3f26913fea3b6a89a73344fe94a/e1596/salty_egg.jpg&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 75.31645569620254%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAMB/8QAFwEAAwEAAAAAAAAAAAAAAAAAAAEEBf/aAAwDAQACEAMQAAABgik0dWC//8QAGRABAAMBAQAAAAAAAAAAAAAAAQACERJC/9oACAEBAAEFAkqW7B5Zovtvk//EABcRAQADAAAAAAAAAAAAAAAAAAAREkH/2gAIAQMBAT8B1WX/xAAWEQEBAQAAAAAAAAAAAAAAAAAAESL/2gAIAQIBAT8BjT//xAAbEAABBAMAAAAAAAAAAAAAAAAAAQIRISIxMv/aAAgBAQAGPwK9GNocyS8hCj//xAAaEAADAQEBAQAAAAAAAAAAAAAAAREhQYGx/9oACAEBAAE/IXOrA43oOyg9wgU86OZMfwZKypT/2gAMAwEAAgADAAAAEMjv/8QAFxEBAQEBAAAAAAAAAAAAAAAAAQARIf/aAAgBAwEBPxARwyusv//EABcRAQEBAQAAAAAAAAAAAAAAAAEAIVH/2gAIAQIBAT8QOoVoX//EAB0QAQEAAgIDAQAAAAAAAAAAAAERADFhgSFB0eH/2gAIAQEAAT8QSpwaGjrBSrtHyF9iY8RpUnGRBGqtOcsiDE6fM3AgiXf5M//Z&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Chinese Salty Egg&quot;
        title=&quot;Chinese Salty Egg&quot;
        src=&quot;/static/8058f3f26913fea3b6a89a73344fe94a/828fb/salty_egg.jpg&quot;
        srcset=&quot;/static/8058f3f26913fea3b6a89a73344fe94a/ff44c/salty_egg.jpg 158w,
/static/8058f3f26913fea3b6a89a73344fe94a/a6688/salty_egg.jpg 315w,
/static/8058f3f26913fea3b6a89a73344fe94a/828fb/salty_egg.jpg 630w,
/static/8058f3f26913fea3b6a89a73344fe94a/0ede0/salty_egg.jpg 945w,
/static/8058f3f26913fea3b6a89a73344fe94a/3ac88/salty_egg.jpg 1260w,
/static/8058f3f26913fea3b6a89a73344fe94a/e1596/salty_egg.jpg 2048w&quot;
        sizes=&quot;(max-width: 630px) 100vw, 630px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;You can also write code blocks here!&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;js&quot;&gt;&lt;pre class=&quot;language-js&quot;&gt;&lt;code class=&quot;language-js&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; saltyDuckEgg &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;chinese preserved food product&quot;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th align=&quot;left&quot;&gt;Number&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;Title&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;Year&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;1&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Harry Potter and the Philosopher’s Stone&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2001&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;2&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Harry Potter and the Chamber of Secrets&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2002&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;3&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;Harry Potter and the Prisoner of Azkaban&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2004&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a href=&quot;https://raw.github.com/adamschwartz/github-markdown-kitchen-sink/master/README.md&quot;&gt;View raw (TEST.md)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is a paragraph.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;This is a paragraph.&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h1&gt;Header 1&lt;/h1&gt;
&lt;h2&gt;Header 2&lt;/h2&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Header 1
========

Header 2
--------&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h1&gt;Header 1&lt;/h1&gt;
&lt;h2&gt;Header 2&lt;/h2&gt;
&lt;h3&gt;Header 3&lt;/h3&gt;
&lt;h4&gt;Header 4&lt;/h4&gt;
&lt;h5&gt;Header 5&lt;/h5&gt;
&lt;h6&gt;Header 6&lt;/h6&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;# Header 1
## Header 2
### Header 3
#### Header 4
##### Header 5
###### Header 6&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h1&gt;Header 1&lt;/h1&gt;
&lt;h2&gt;Header 2&lt;/h2&gt;
&lt;h3&gt;Header 3&lt;/h3&gt;
&lt;h4&gt;Header 4&lt;/h4&gt;
&lt;h5&gt;Header 5&lt;/h5&gt;
&lt;h6&gt;Header 6&lt;/h6&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;# Header 1 #
## Header 2 ##
### Header 3 ###
#### Header 4 ####
##### Header 5 #####
###### Header 6 ######&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;&amp;gt; Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;blockquote&gt;
&lt;h2&gt;This is a header.&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;This is the first list item.&lt;/li&gt;
&lt;li&gt;This is the second list item.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Here’s some example code:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Markdown.generate();&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;&amp;gt; ## This is a header.
&amp;gt; 1. This is the first list item.
&amp;gt; 2. This is the second list item.
&amp;gt;
&amp;gt; Here&amp;#39;s some example code:
&amp;gt;
&amp;gt;     Markdown.generate();&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Red&lt;/li&gt;
&lt;li&gt;Green&lt;/li&gt;
&lt;li&gt;Blue&lt;/li&gt;
&lt;li&gt;Red&lt;/li&gt;
&lt;li&gt;Green&lt;/li&gt;
&lt;li&gt;Blue&lt;/li&gt;
&lt;li&gt;Red&lt;/li&gt;
&lt;li&gt;Green&lt;/li&gt;
&lt;li&gt;Blue&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;markdown&quot;&gt;&lt;pre class=&quot;language-markdown&quot;&gt;&lt;code class=&quot;language-markdown&quot;&gt;&lt;span class=&quot;token list punctuation&quot;&gt;-&lt;/span&gt; Red
&lt;span class=&quot;token list punctuation&quot;&gt;-&lt;/span&gt; Green
&lt;span class=&quot;token list punctuation&quot;&gt;-&lt;/span&gt; Blue

&lt;span class=&quot;token list punctuation&quot;&gt;*&lt;/span&gt; Red
&lt;span class=&quot;token list punctuation&quot;&gt;*&lt;/span&gt; Green
&lt;span class=&quot;token list punctuation&quot;&gt;*&lt;/span&gt; Blue

&lt;span class=&quot;token list punctuation&quot;&gt;-&lt;/span&gt; Red
&lt;span class=&quot;token list punctuation&quot;&gt;-&lt;/span&gt; Green
&lt;span class=&quot;token list punctuation&quot;&gt;-&lt;/span&gt; Blue&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;code goes&lt;/code&gt; here in this line&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;bold&lt;/strong&gt; goes here&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;markdown&quot;&gt;&lt;pre class=&quot;language-markdown&quot;&gt;&lt;code class=&quot;language-markdown&quot;&gt;- &lt;span class=&quot;token code keyword&quot;&gt;`code goes`&lt;/span&gt; here in this line
&lt;span class=&quot;token list punctuation&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token bold&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;**&lt;/span&gt;&lt;span class=&quot;token content&quot;&gt;bold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;**&lt;/span&gt;&lt;/span&gt; goes here&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;Buy flour and salt&lt;/li&gt;
&lt;li&gt;Mix together with water&lt;/li&gt;
&lt;li&gt;Bake&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;markdown&quot;&gt;&lt;pre class=&quot;language-markdown&quot;&gt;&lt;code class=&quot;language-markdown&quot;&gt;&lt;span class=&quot;token list punctuation&quot;&gt;1.&lt;/span&gt; Buy flour and salt
&lt;span class=&quot;token list punctuation&quot;&gt;1.&lt;/span&gt; Mix together with water
&lt;span class=&quot;token list punctuation&quot;&gt;1.&lt;/span&gt; Bake&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code class=&quot;language-text&quot;&gt;code goes&lt;/code&gt; here in this line&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;bold&lt;/strong&gt; goes here&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;markdown&quot;&gt;&lt;pre class=&quot;language-markdown&quot;&gt;&lt;code class=&quot;language-markdown&quot;&gt;1. &lt;span class=&quot;token code keyword&quot;&gt;`code goes`&lt;/span&gt; here in this line
&lt;span class=&quot;token list punctuation&quot;&gt;1.&lt;/span&gt; &lt;span class=&quot;token bold&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;**&lt;/span&gt;&lt;span class=&quot;token content&quot;&gt;bold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;**&lt;/span&gt;&lt;/span&gt; goes here&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Paragraph:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Code&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;!-- --&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Paragraph:

    Code&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;hr&gt;
&lt;hr&gt;
&lt;hr&gt;
&lt;hr&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;* * *

***

*****

- - -

---------------------------------------&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This is &lt;a href=&quot;http://example.com&quot; title=&quot;Example&quot;&gt;an example&lt;/a&gt; link.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://example.com&quot;&gt;This link&lt;/a&gt; has no title attr.&lt;/p&gt;
&lt;p&gt;This is &lt;a href=&quot;http://example.com&quot; title=&quot;Optional Title&quot;&gt;an example&lt;/a&gt; reference-style link.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;This is [an example](http://example.com &amp;quot;Example&amp;quot;) link.

[This link](http://example.com) has no title attr.

This is [an example] [id] reference-style link.

[id]: http://example.com &amp;quot;Optional Title&amp;quot;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;em&gt;single asterisks&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;single underscores&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;double asterisks&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;double underscores&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;*single asterisks*

_single underscores_

**double asterisks**

__double underscores__&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This paragraph has some &lt;code class=&quot;language-text&quot;&gt;code&lt;/code&gt; in it.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;This paragraph has some `code` in it.&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;img src=&quot;https://placehold.it/200x50&quot; alt=&quot;Alt Text&quot; title=&quot;Image Title&quot;&gt;&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;![Alt Text](https://placehold.it/200x50 &amp;quot;Image Title&amp;quot;)&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</content:encoded></item></channel></rss>