<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: sot528</title>
    <description>The latest articles on DEV Community by sot528 (@sot528).</description>
    <link>https://dev.to/sot528</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F47293%2F546766ea-6222-44dd-ae7a-c7a48cf1f167.jpeg</url>
      <title>DEV Community: sot528</title>
      <link>https://dev.to/sot528</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sot528"/>
    <language>en</language>
    <item>
      <title>Delete CircleCI's invisible AWS credentials</title>
      <dc:creator>sot528</dc:creator>
      <pubDate>Sat, 14 Jan 2023 12:07:00 +0000</pubDate>
      <link>https://dev.to/sot528/delete-circlecis-invisible-aws-credentials-k3j</link>
      <guid>https://dev.to/sot528/delete-circlecis-invisible-aws-credentials-k3j</guid>
      <description>&lt;h2&gt;
  
  
  Problem
&lt;/h2&gt;

&lt;p&gt;AWS notified me to rotate AWS credentials that are (seemingly) not registered with CircleCI.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Hello,

AWS is reaching out to you on behalf of CircleCI as a follow-up to the security issue they disclosed on January 4, 2023 [1] involving their platform. AWS infrastructure and services were not affected by this issue.

However, CircleCI believes the following AWS access keys, associated with your account, may be affected by this issue.
AKIA4**************


AWS recommends you rotate these keys immediately.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Occasion
&lt;/h2&gt;

&lt;p&gt;Because the AWS Permission of the CircleCI project, which was used since time immemorial, was still alive &lt;strong&gt;even though it was discontinued in the UI&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Solution
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.circleci.com/hc/en-us/articles/360047685892-AWS-Credentials-Are-Not-Found" rel="noopener noreferrer"&gt;AWS Credentials Are Not Found&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;${CIRCLECI_VCS}&lt;/code&gt; with either "github" or "bitbucket"&lt;br&gt;
&lt;code&gt;${CIRCLECI_ORG}&lt;/code&gt; with the name of your org&lt;br&gt;
&lt;code&gt;${CIRCLECI_PROJECT}&lt;/code&gt; with the name of your project/repository&lt;br&gt;
&lt;code&gt;${CIRCLECI_TOKEN}&lt;/code&gt; with a Personal API Token&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl -X PUT -d "{\"aws\":{\"keypair\":null}}" "https://circleci.com/api/v1.1/project/${CIRCLECI_VCS}/${CIRCLECI_ORG}/${CIRCLECI_PROJECT}/settings?circle-token=${CIRCLECI_TOKEN}" -H "Content-Type:application/json"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Note
&lt;/h2&gt;

&lt;p&gt;WTF🤣&lt;/p&gt;

</description>
      <category>aws</category>
      <category>circleci</category>
    </item>
    <item>
      <title>Remove unnecessary Docker resources.</title>
      <dc:creator>sot528</dc:creator>
      <pubDate>Fri, 19 Apr 2019 11:15:02 +0000</pubDate>
      <link>https://dev.to/sot528/remove-unnecessary-docker-resources-24bh</link>
      <guid>https://dev.to/sot528/remove-unnecessary-docker-resources-24bh</guid>
      <description>&lt;h1&gt;
  
  
  Problem
&lt;/h1&gt;

&lt;p&gt;Using Docker for Mac long time uses large storage spaces.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;sot-mbp:clean_docker_resources sot528&lt;span class="nv"&gt;$ &lt;/span&gt;docker system &lt;span class="nb"&gt;df
&lt;/span&gt;TYPE                TOTAL               ACTIVE              SIZE                RECLAIMABLE
Images              152                 2                   37.57GB             35.79GB &lt;span class="o"&gt;(&lt;/span&gt;95%&lt;span class="o"&gt;)&lt;/span&gt;
Containers          4                   0                   35.8MB              35.8MB &lt;span class="o"&gt;(&lt;/span&gt;100%&lt;span class="o"&gt;)&lt;/span&gt;
Local Volumes       4                   0                   7.118MB             7.118MB &lt;span class="o"&gt;(&lt;/span&gt;100%&lt;span class="o"&gt;)&lt;/span&gt;
Build Cache         0                   0                   0B                  0B
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Solution
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker system prune
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then, SIZE is be around 30GB.&lt;br&gt;
And remove old images without recent 10 images.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker rmi &lt;span class="nt"&gt;-f&lt;/span&gt; &lt;span class="si"&gt;$(&lt;/span&gt;docker images | &lt;span class="nb"&gt;sed&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; &lt;span class="s1"&gt;'10,$p'&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Result
&lt;/h1&gt;

&lt;p&gt;Good!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;sot-mbp:clean_docker_resources sot528&lt;span class="nv"&gt;$ &lt;/span&gt;docker system &lt;span class="nb"&gt;df
&lt;/span&gt;TYPE                TOTAL               ACTIVE              SIZE                RECLAIMABLE
Images              7                   0                   5.337GB             5.337GB &lt;span class="o"&gt;(&lt;/span&gt;100%&lt;span class="o"&gt;)&lt;/span&gt;
Containers          0                   0                   0B                  0B
Local Volumes       4                   0                   7.118MB             7.118MB &lt;span class="o"&gt;(&lt;/span&gt;100%&lt;span class="o"&gt;)&lt;/span&gt;
Build Cache         0                   0                   0B                  0B
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Environment
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;macOS Mojave 10.14.3（18D109）&lt;/li&gt;
&lt;li&gt;Docker version 18.09.2, build 6247962&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>docker</category>
    </item>
    <item>
      <title>Install and Update Solidity(solc) in Mac</title>
      <dc:creator>sot528</dc:creator>
      <pubDate>Wed, 26 Dec 2018 06:16:03 +0000</pubDate>
      <link>https://dev.to/sot528/install-and-update-soliditysolc-in-mac-n8i</link>
      <guid>https://dev.to/sot528/install-and-update-soliditysolc-in-mac-n8i</guid>
      <description>&lt;p&gt;You can install and update solc:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew update
brew upgrade
brew tap ethereum/ethereum
brew &lt;span class="nb"&gt;install &lt;/span&gt;solidity
brew &lt;span class="nb"&gt;link&lt;/span&gt; &lt;span class="nt"&gt;--overwrite&lt;/span&gt; solidity
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Errors
&lt;/h1&gt;

&lt;p&gt;If you got the error below, you have to update xcode.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;==&amp;gt;&lt;/span&gt; Installing solidity from ethereum/ethereum
Error: Your Xcode &lt;span class="o"&gt;(&lt;/span&gt;9.0&lt;span class="o"&gt;)&lt;/span&gt; is too outdated.
Please update to Xcode 10.1 &lt;span class="o"&gt;(&lt;/span&gt;or delete it&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt;
Xcode can be updated from the App Store.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>solidity</category>
      <category>ethereum</category>
      <category>solc</category>
    </item>
    <item>
      <title>Try Vyper in Truffle v5.</title>
      <dc:creator>sot528</dc:creator>
      <pubDate>Wed, 19 Dec 2018 12:21:59 +0000</pubDate>
      <link>https://dev.to/sot528/try-vyper-in-truffle-v5-42el</link>
      <guid>https://dev.to/sot528/try-vyper-in-truffle-v5-42el</guid>
      <description>&lt;p&gt;&lt;a href="https://truffleframework.com/blog/truffle-v5-has-arrived" rel="noopener noreferrer"&gt;Truffle v5&lt;/a&gt; supported &lt;a href="https://vyper.readthedocs.io/en/latest/index.html" rel="noopener noreferrer"&gt;Vyper&lt;/a&gt;.&lt;br&gt;
I made &lt;a href="https://hub.docker.com/r/sot528/truffle-vyper-test" rel="noopener noreferrer"&gt;Docker image&lt;/a&gt; to try it easialy.(&lt;a href="https://github.com/sot528/truffle-vyper-test" rel="noopener noreferrer"&gt;Dockerfile&lt;/a&gt;)&lt;/p&gt;
&lt;h1&gt;
  
  
  How to use
&lt;/h1&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;-it&lt;/span&gt; sot528/truffle-vyper-test
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h1&gt;
  
  
  In the container
&lt;/h1&gt;

&lt;p&gt;It unboxed &lt;a href="https://github.com/truffle-box/vyper-example-box" rel="noopener noreferrer"&gt;vyper-example-box&lt;/a&gt;. So you can use below.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;truffle &lt;span class="nb"&gt;test

&lt;/span&gt;Using network &lt;span class="s1"&gt;'test'&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt;



  Contract: VyperStorage
    ✓ ...should store the value 89. &lt;span class="o"&gt;(&lt;/span&gt;114ms&lt;span class="o"&gt;)&lt;/span&gt;


  1 passing &lt;span class="o"&gt;(&lt;/span&gt;129ms&lt;span class="o"&gt;)&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It works.&lt;br&gt;
You can try anything via editing &lt;code&gt;./contracts/VyperStorage.vy&lt;/code&gt; and &lt;code&gt;truffle compile&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;stored_data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;uint256&lt;/span&gt;

&lt;span class="nd"&gt;@public&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;new_value&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;uint256&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;stored_data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;new_value&lt;/span&gt;

&lt;span class="nd"&gt;@public&lt;/span&gt;
&lt;span class="nd"&gt;@constant&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;uint256&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;stored_data&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The test file is &lt;code&gt;./test/vyperStorage.js&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;VyperStorage&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;artifacts&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;VyperStorage&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nf"&gt;contract&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;VyperStorage&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;it&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;...should store the value 89.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;storage&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;VyperStorage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;deployed&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

    &lt;span class="c1"&gt;// Set value of 89&lt;/span&gt;
    &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;storage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;89&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="c1"&gt;// Get stored value&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;storedData&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;storage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

    &lt;span class="nx"&gt;assert&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;equal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;storedData&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;89&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;The value 89 was not stored.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you see the error below, then you should remove all of the files in &lt;code&gt;build&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Error parsing /code/contracts/VyperStorage.vy: ParsedContract.sol:1:1: ParserError: Expected pragma, import directive or contract/interface/library definition.
stored_data: uint256
^---------^
Compilation failed. See above.
Truffle v5.0.0 &lt;span class="o"&gt;(&lt;/span&gt;core: 5.0.0&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>ethereum</category>
      <category>vyper</category>
      <category>truffle</category>
    </item>
    <item>
      <title>Run levelDB + Node.js in 1 min on Docker</title>
      <dc:creator>sot528</dc:creator>
      <pubDate>Fri, 14 Dec 2018 03:30:37 +0000</pubDate>
      <link>https://dev.to/sot528/run-leveldb--nodejs-in-1-min-on-docker-3bn3</link>
      <guid>https://dev.to/sot528/run-leveldb--nodejs-in-1-min-on-docker-3bn3</guid>
      <description>&lt;p&gt;I tried &lt;a href="https://github.com/google/leveldb" rel="noopener noreferrer"&gt;levelDB&lt;/a&gt; with &lt;a href="https://github.com/Level/levelup" rel="noopener noreferrer"&gt;Node.js imprementation&lt;/a&gt; on &lt;a href="https://cloud.docker.com/repository/docker/sot528/leveldbtest/general" rel="noopener noreferrer"&gt;Docker&lt;/a&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  Usage
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;-it&lt;/span&gt; sot528/leveldbtest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Run on the Docker container
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;node index.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can try anything as edit &lt;code&gt;index.js&lt;/code&gt;.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Try to run libp2p(js-libp2p) anyway.</title>
      <dc:creator>sot528</dc:creator>
      <pubDate>Thu, 13 Dec 2018 06:36:54 +0000</pubDate>
      <link>https://dev.to/sot528/try-to-run-libp2pjs-libp2p-anyway-5b4h</link>
      <guid>https://dev.to/sot528/try-to-run-libp2pjs-libp2p-anyway-5b4h</guid>
      <description>&lt;p&gt;I tried to run &lt;a href="https://github.com/libp2p/js-libp2p" rel="noopener noreferrer"&gt;js-libp2p&lt;/a&gt; that Javascript implementation of &lt;a href="https://github.com/libp2p" rel="noopener noreferrer"&gt;libp2p&lt;/a&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  What to do.
&lt;/h1&gt;

&lt;p&gt;I tried to run &lt;a href="https://github.com/libp2p/js-libp2p/tree/0b75f99d752f7960ce4377d54b098be914600200/examples/transports" rel="noopener noreferrer"&gt;transfer&lt;/a&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  How to do.
&lt;/h1&gt;

&lt;p&gt;I made a &lt;a href="https://hub.docker.com/r/sot528/libp2pjstest/" rel="noopener noreferrer"&gt;docker image&lt;/a&gt; of the process above.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;-it&lt;/span&gt; sot528/libp2pjstest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run &lt;code&gt;3.js&lt;/code&gt; in the container.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;root@73b031df5d57:~/work# node 3.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then, 3 nodes will run and connect each other.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;node 1 is listening on:
/ip4/127.0.0.1/tcp/32907/ipfs/QmVSd89zgVLqC3cUVzN3R3dpA8xextxEFBuACd8uSMXXLM
/ip4/172.17.0.4/tcp/32907/ipfs/QmVSd89zgVLqC3cUVzN3R3dpA8xextxEFBuACd8uSMXXLM
node 2 is listening on:
/ip4/127.0.0.1/tcp/40709/ipfs/QmWe7Md6CyDDXaApaXPijKuXYhpK3uktmMamuw5MzW3zWu
/ip4/172.17.0.4/tcp/40709/ipfs/QmWe7Md6CyDDXaApaXPijKuXYhpK3uktmMamuw5MzW3zWu
/ip4/127.0.0.1/tcp/10000/ws/ipfs/QmWe7Md6CyDDXaApaXPijKuXYhpK3uktmMamuw5MzW3zWu
node 3 is listening on:
/ip4/127.0.0.1/tcp/20000/ws/ipfs/QmeKhkwXHPQ29BzbRJuqzMdkKDzWVwwFreWKRRJDLRvw1H
node 3 failed to dial to node 1 with: Circuit not enabled and all transports failed to dial peer QmVSd89zgVLqC3cUVzN3R3dpA8xextxEFBuACd8uSMXXLM!
node 1 dialed to node 2 successfully
node 2 dialed to node 3 successfully
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can try what you want as editing &lt;code&gt;3.js&lt;/code&gt;.&lt;/p&gt;

</description>
      <category>libp2p</category>
    </item>
    <item>
      <title>Ethereum:New Solidity constructor</title>
      <dc:creator>sot528</dc:creator>
      <pubDate>Sat, 19 May 2018 13:07:11 +0000</pubDate>
      <link>https://dev.to/sot528/ethereumnew-solidity-constructor-4c19</link>
      <guid>https://dev.to/sot528/ethereumnew-solidity-constructor-4c19</guid>
      <description>&lt;p&gt;Since &lt;a href="https://github.com/ethereum/solidity/releases/tag/v0.4.23" rel="noopener noreferrer"&gt;Solidity v0.4.23&lt;/a&gt;, Solidity has new constructor notation.&lt;br&gt;&lt;br&gt;
And The old one was deprecated.&lt;/p&gt;
&lt;h1&gt;
  
  
  Old
&lt;/h1&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;pragma&lt;/span&gt; &lt;span class="nx"&gt;solidity&lt;/span&gt; &lt;span class="mf"&gt;0.4&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;23&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;contract&lt;/span&gt; &lt;span class="nx"&gt;Foo&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Foo&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="kr"&gt;public&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// ...&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h1&gt;
  
  
  New
&lt;/h1&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;pragma&lt;/span&gt; &lt;span class="nx"&gt;solidity&lt;/span&gt; &lt;span class="mf"&gt;0.4&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;23&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;contract&lt;/span&gt; &lt;span class="nx"&gt;Foo&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;constructor&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="kr"&gt;public&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// ...&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h1&gt;
  
  
  Note
&lt;/h1&gt;

&lt;p&gt;The old one raise below.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Warning: Defining constructors as functions with the same name as the contract is deprecated. Use &lt;span class="s2"&gt;"constructor(...) { ... }"&lt;/span&gt; instead.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>ethereum</category>
      <category>solidity</category>
    </item>
    <item>
      <title>"Route did not stabilize in expected time" on CloudFromation</title>
      <dc:creator>sot528</dc:creator>
      <pubDate>Sun, 25 Mar 2018 13:27:01 +0000</pubDate>
      <link>https://dev.to/sot528/route-did-not-stabilize-in-expected-time-on-cloudfromation-d7i</link>
      <guid>https://dev.to/sot528/route-did-not-stabilize-in-expected-time-on-cloudfromation-d7i</guid>
      <description>&lt;p&gt;This error occurred via template below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="nn"&gt;...&lt;/span&gt;

  &lt;span class="na"&gt;PNNatGateway&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;Type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;AWS::EC2::NatGateway'&lt;/span&gt;
    &lt;span class="na"&gt;Properties&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;AllocationId&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;eipalloc-xxxxxx&lt;/span&gt;
      &lt;span class="na"&gt;SubnetId&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;!Ref&lt;/span&gt; &lt;span class="s"&gt;PNPublicSubnet&lt;/span&gt;
  &lt;span class="na"&gt;PNPrivateRouteTable&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;Type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;AWS::EC2::RouteTable'&lt;/span&gt;
    &lt;span class="na"&gt;Properties&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;VpcId&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;!Ref&lt;/span&gt; &lt;span class="s"&gt;PrivateNet&lt;/span&gt;
  &lt;span class="na"&gt;PNPrivateRoute&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;Type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;AWS::EC2::Route'&lt;/span&gt;
    &lt;span class="na"&gt;Properties&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;RouteTableId&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;!Ref&lt;/span&gt; &lt;span class="s"&gt;PNPrivateRouteTable&lt;/span&gt;
      &lt;span class="na"&gt;DestinationCidrBlock&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;0.0.0.0/0&lt;/span&gt;
      &lt;span class="na"&gt;GatewayId&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;!Ref&lt;/span&gt; &lt;span class="s"&gt;PNNatGateway&lt;/span&gt;

&lt;span class="nn"&gt;...&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  FIX
&lt;/h1&gt;

&lt;p&gt;It fixed when I changed &lt;code&gt;GatewayId&lt;/code&gt; to &lt;code&gt;NatGatewayId&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="nn"&gt;...&lt;/span&gt;

  &lt;span class="na"&gt;PNNatGateway&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;Type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;AWS::EC2::NatGateway'&lt;/span&gt;
    &lt;span class="na"&gt;Properties&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;AllocationId&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;eipalloc-xxxxxx&lt;/span&gt;
      &lt;span class="na"&gt;SubnetId&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;!Ref&lt;/span&gt; &lt;span class="s"&gt;PNPublicSubnet&lt;/span&gt;
  &lt;span class="na"&gt;PNPrivateRouteTable&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;Type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;AWS::EC2::RouteTable'&lt;/span&gt;
    &lt;span class="na"&gt;Properties&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;VpcId&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;!Ref&lt;/span&gt; &lt;span class="s"&gt;PrivateNet&lt;/span&gt;
  &lt;span class="na"&gt;PNPrivateRoute&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;Type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;AWS::EC2::Route'&lt;/span&gt;
    &lt;span class="na"&gt;Properties&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;RouteTableId&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;!Ref&lt;/span&gt; &lt;span class="s"&gt;PNPrivateRouteTable&lt;/span&gt;
      &lt;span class="na"&gt;DestinationCidrBlock&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;0.0.0.0/0&lt;/span&gt;
      &lt;span class="na"&gt;NatGatewayId&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kt"&gt;!Ref&lt;/span&gt; &lt;span class="s"&gt;PNNatGateway&lt;/span&gt;

&lt;span class="nn"&gt;...&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What a unkind error message it is!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>EC2にEthereumメインネットのparityノードを立てる</title>
      <dc:creator>sot528</dc:creator>
      <pubDate>Sat, 03 Feb 2018 03:08:42 +0000</pubDate>
      <link>https://dev.to/sot528/ec2parity-32ke</link>
      <guid>https://dev.to/sot528/ec2parity-32ke</guid>
      <description>&lt;p&gt;AWSのEC2インスタンスにメインネットのparityのノード(light client mode)を構築して開発に使用する手順を記載する。&lt;br&gt;
最短で構築するために意識は低くマネコンから作業。以下のビデオを参考にする。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://youtu.be/4ac5ZeTveSs" rel="noopener noreferrer"&gt;https://youtu.be/4ac5ZeTveSs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;
  
  
  インスタンスを立てる
&lt;/h1&gt;

&lt;p&gt;ビデオを参考に以下の設定を行ったインスタンスを立てる。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AMI: &lt;code&gt;Canonical, Ubuntu, 16.04 LTS, amd64 xenial image build on 2017-11-21&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;ポート解放: &lt;code&gt;8545&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;ストレージ容量確保: &lt;code&gt;20GB&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;
  
  
  parityをインストール
&lt;/h1&gt;

&lt;p&gt;ビデオを参考にSSH接続してparityをインストール。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;bash &amp;lt;(curl https://get.parity.io -kL)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;
  
  
  parityを起動
&lt;/h1&gt;

&lt;p&gt;ここはビデオと異なり、&lt;code&gt;--light&lt;/code&gt;オプションを付加してlight client modeとする。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;parity --jsonrpc-hosts all --jsonrpc-interface all --light&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;
  
  
  クライアントから接続して同期状態を確認
&lt;/h1&gt;

&lt;p&gt;ビデオを参考にインスタンスのipを取得し、以下のようなスクリプト(&lt;code&gt;getBlockNumber.js&lt;/code&gt;)を記載(&lt;code&gt;xx.xx.xx.xx&lt;/code&gt;は取得したipに書き換え)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;W3&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;web3&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nx"&gt;web3&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;W3&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;W3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;providers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;HttpProvider&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;http://xx.xx.xx.xx:8545&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="nx"&gt;web3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;eth&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getBlockNumber&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;)})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;実行&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;node getBlockNumber.js
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;以下のようにブロックナンバーが出力されれば同期が成功し、進行している。&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;308485
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;最新のブロックがいくつかは&lt;a href="https://ethstats.net" rel="noopener noreferrer"&gt;ethstats&lt;/a&gt;をチェック。2018/02時点で500万ブロックくらい。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;light client modeでも完全同期まで数日かかる。&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h1&gt;
  
  
  parityが途中で落ちる場合はデーモン化する
&lt;/h1&gt;

&lt;p&gt;parityをlight client modeで動かしているとしばらく同期したあとで落ちる場合がある。&lt;br&gt;
その場合はデーモン化すると良い。supervisorを使用してデーモン化する手順をまとめる。&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;supervisorをインストール&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-get update
sudo apt-get install supervisor
sudo mkdir /var/log/supervisor/jobs    
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;以下のような設定ファイルを &lt;code&gt;/etc/supervisor/conf.d/&lt;/code&gt; 以下に&lt;code&gt;parity.conf&lt;/code&gt;として配置。 &lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[program:Parity]
command=/usr/bin/parity --jsonrpc-hosts all --jsonrpc-interface all --light
user=root
autorestart=true
stdout_logfile=/var/log/supervisor/jobs/parity.log
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=5
stdout_capture_maxbytes=1MB
redirect_stderr=true
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;supervisorを起動&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo supervisord
sudo supervisorctl start all
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ログを確認しparityが同期を開始していればOK。&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;tail -f /var/log/supervisor/jobs/parity.log
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;落ちても再度立ち上がる。&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdax452rt67668hul5pzv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdax452rt67668hul5pzv.png" width="800" height="74"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;ちゃんとやるならsupervisor自体をサービス化しておく(割愛)。&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  備考
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Parity: &lt;code&gt;v1.9.0-beta&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;2018/02現在、上記手順で最新のブロックまで同期できることを確認(数日かかる)。&lt;/li&gt;
&lt;li&gt;gethでも良いが、parityはまだ多少安定している印象。しかしフルノード(非light client mode)だと完全に同期するまで何週間も待つ場合がある。&lt;/li&gt;
&lt;li&gt;light client modeはまだ実験段階なので本番運用は要注意。&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>geth</category>
      <category>parity</category>
      <category>ethereum</category>
      <category>blockchain</category>
    </item>
    <item>
      <title>暗号通貨の相場をターミナルで表示する</title>
      <dc:creator>sot528</dc:creator>
      <pubDate>Fri, 12 Jan 2018 04:07:33 +0000</pubDate>
      <link>https://dev.to/sot528/-7ao</link>
      <guid>https://dev.to/sot528/-7ao</guid>
      <description>&lt;p&gt;暗号通貨ジャンキーのエンジニアの為に。&lt;br&gt;
暗号通貨の相場は&lt;a href="https://github.com/bichenkk/coinmon" rel="noopener noreferrer"&gt;Coinmon&lt;/a&gt;を使ってターミナルで確認しましょう。&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    npm install -g coinmon
    coinmon
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6qkujeriituqivsz11h3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6qkujeriituqivsz11h3.png" width="800" height="557"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  日本円で表示する
&lt;/h1&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    coinmon -c jpy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhg7ry32mj55sla62gijt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhg7ry32mj55sla62gijt.png" width="800" height="587"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  通貨を指定して表示する
&lt;/h1&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    coinmon -f btc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fehq652gdcgkr3zh4sl9g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fehq652gdcgkr3zh4sl9g.png" width="800" height="342"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;以上。&lt;br&gt;
これで職場でも安心ですね。&lt;/p&gt;

</description>
      <category>bitcoin</category>
      <category>blockchain</category>
      <category>cryptocurrency</category>
    </item>
    <item>
      <title>Renamed tools in Ethereum</title>
      <dc:creator>sot528</dc:creator>
      <pubDate>Wed, 20 Dec 2017 15:26:44 +0000</pubDate>
      <link>https://dev.to/sot528/ethereum-1g4f</link>
      <guid>https://dev.to/sot528/ethereum-1g4f</guid>
      <description>&lt;p&gt;&lt;code&gt;New name(Old name)&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.parity.io/ethereum/" rel="noopener noreferrer"&gt;OpenEthereum&lt;/a&gt; (Parity Ethereum)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://remix.ethereum.org" rel="noopener noreferrer"&gt;Remix&lt;/a&gt; (Browser-Solidity)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/sc-forks/solidity-coverage" rel="noopener noreferrer"&gt;solidity-coverage&lt;/a&gt; (Solcover)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/trufflesuite/ganache-cli" rel="noopener noreferrer"&gt;ganache-cli&lt;/a&gt; (test-rpc)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/ethereum/vyper" rel="noopener noreferrer"&gt;Vyper&lt;/a&gt;(viper)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/OpenZeppelin/openzeppelin-contracts" rel="noopener noreferrer"&gt;OpenZeppelin Contracts&lt;/a&gt;(OpenZeppelin Solidity, Zeppelin Solidity)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/OpenZeppelin/openzeppelin-sdk" rel="noopener noreferrer"&gt;OpenZeppelin SDK&lt;/a&gt;(ZeppelinOS)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/OpenZeppelin/starter-kit" rel="noopener noreferrer"&gt;OpenZeppelin starter kit&lt;/a&gt;(ZEPKIT)&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ethereum</category>
      <category>solidity</category>
      <category>blockchain</category>
      <category>smartcontract</category>
    </item>
  </channel>
</rss>
