<?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: Aisuko</title>
    <description>The latest articles on DEV Community by Aisuko (@aisuko).</description>
    <link>https://dev.to/aisuko</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%2F513452%2F20edafda-e916-416f-aed4-9ae141a3b410.jpeg</url>
      <title>DEV Community: Aisuko</title>
      <link>https://dev.to/aisuko</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/aisuko"/>
    <language>en</language>
    <item>
      <title>The concepts of the GNU Hurd</title>
      <dc:creator>Aisuko</dc:creator>
      <pubDate>Fri, 15 Oct 2021 01:10:24 +0000</pubDate>
      <link>https://dev.to/aisuko/the-concepts-of-the-gnu-hurd-44ii</link>
      <guid>https://dev.to/aisuko/the-concepts-of-the-gnu-hurd-44ii</guid>
      <description>&lt;p&gt;There may many concepts need to know about the GNU Hurd, like what's the Gnu Hurd? How to understand the it? And the concepts could help us to understand this.&lt;/p&gt;

&lt;h1&gt;
  
  
  What's the GNU Hurd?
&lt;/h1&gt;

&lt;p&gt;The GNU projects replacement for UNIX, a popular operating system &lt;a href="https://dev.to/aisuko/the-concepts-of-microkernel-3i08"&gt;kernel&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It includes many parts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A collection of &lt;code&gt;protocols&lt;/code&gt; formalising how different components may interact.&lt;/li&gt;
&lt;li&gt;A set of &lt;code&gt;servers&lt;/code&gt; that implement these protocols.&lt;/li&gt;
&lt;li&gt;It provides compatibility layer such that compiling higher level programs is essentially transparent(&lt;code&gt;glibc&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;It provides servers and infrastructure with microkernel itself has no business implementing, but required for high level programs and libraries to operate.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The collection of protocols
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What's the protocols?
&lt;/h3&gt;

&lt;p&gt;The protocols are designed to reduce the mutual &lt;code&gt;trust&lt;/code&gt; requirements of the actors thereby permitting a more &lt;code&gt;extensible system&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The protocols include three parts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;interface definitions to manipulate file&lt;/li&gt;
&lt;li&gt;directories&lt;/li&gt;
&lt;li&gt;to resolve path names&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And this allows any process to implement a file system. But there are requirements:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;it have access to its backing store&lt;/li&gt;
&lt;li&gt;principal starts it own the file system node to which it converts&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  What's the mean of trust requirements of the actors?
&lt;/h3&gt;

&lt;p&gt;When we say that a program trusts another, we mean that correctness of the former depends on the operation of the latter.&lt;/p&gt;

&lt;p&gt;For example, when users use ssh login to the remote hosts that mean users trust in &lt;code&gt;ssh&lt;/code&gt; binary.&lt;/p&gt;

&lt;p&gt;In UNIX, a programs &lt;code&gt;tcb&lt;/code&gt; consist not only of the kernel and all the devices, file systems, and protocol stacks that it contains.&lt;/p&gt;

&lt;p&gt;But every program running under the same UID. It's impossible to protect against destructive interference from programs running under the same UID.&lt;/p&gt;

&lt;h3&gt;
  
  
  What's the mean of &lt;code&gt;tcb&lt;/code&gt;?
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;tcb&lt;/code&gt;: trusted computer base&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;referrers to the set of components programs must trust to function correctly.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  What's the extensible operating system?(How to enables extensibility of operating system?)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;providing non-privileged mechanisms to extend existing objects and to introduce new objects.&lt;/li&gt;
&lt;li&gt;UNIX can not hook into the virtual file system.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  A set of servers that implement these protocols
&lt;/h2&gt;

&lt;p&gt;The set of severs includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;file systems&lt;/li&gt;
&lt;li&gt;network protocols&lt;/li&gt;
&lt;li&gt;authentication&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And those servers run on top of the Mach microkernel and use March is &lt;code&gt;IPC&lt;/code&gt; mechanism to transfer information.&lt;/p&gt;

&lt;h3&gt;
  
  
  What's the mean of &lt;code&gt;IPC&lt;/code&gt;?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Internal-process communicate&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  What's the server(translator)?
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;There is a concept need to know that &lt;code&gt;server==translator&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The translator is simply a normal program acting as an object server and participating in the Hurd's distributed virtual file system.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why call is as a translator?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;It typically exports a file system(although need not).&lt;/li&gt;
&lt;li&gt;It translates object invocations into calls appropriate for the backing store(e.g., ext2 file system, nfs server, etc.).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Another reason is that&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It translates from one representation of data structure into another representation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A translator is usually registered with specific file system node by using the &lt;code&gt;strains&lt;/code&gt; command, and it does not require any special privilege to run.&lt;/p&gt;

&lt;p&gt;A translator is not different from other &lt;code&gt;user_space&lt;/code&gt; application, it can be written in any programming language.&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;We already knew the concepts like the GNU Hurd, protocols, &lt;code&gt;translator&lt;/code&gt;, &lt;code&gt;tcb&lt;/code&gt;,&lt;code&gt;IPC&lt;/code&gt; and the architecture benefit of microkernel, and those concepts are not easy to understand and the mistakes of the article will be fixed in as depth as we learning.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reference articles:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.gnu.org/software/hurd/hurd/what_is_the_gnu_hurd.html"&gt;https://www.gnu.org/software/hurd/hurd/what_is_the_gnu_hurd.html&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.gnu.org/software/hurd/extensibility.html"&gt;https://www.gnu.org/software/hurd/extensibility.html&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.gnu.org/software/hurd/hurd/translator.html"&gt;https://www.gnu.org/software/hurd/hurd/translator.html&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.gnu.org/software/hurd/microkernel/mach/ipc.html"&gt;https://www.gnu.org/software/hurd/microkernel/mach/ipc.html&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.gnu.org/software/hurd/trust.html"&gt;https://www.gnu.org/software/hurd/trust.html&lt;/a&gt;&lt;/p&gt;

</description>
      <category>gnuhurd</category>
    </item>
    <item>
      <title>The concepts of microkernel</title>
      <dc:creator>Aisuko</dc:creator>
      <pubDate>Fri, 15 Oct 2021 01:10:03 +0000</pubDate>
      <link>https://dev.to/aisuko/the-concepts-of-microkernel-3i08</link>
      <guid>https://dev.to/aisuko/the-concepts-of-microkernel-3i08</guid>
      <description>&lt;p&gt;As a new contributor to the project of the GNU Hurd, I'd like to make clear many of the concepts like &lt;code&gt;kernel&lt;/code&gt; &lt;code&gt;microkernel&lt;/code&gt;, and there are so many concepts I need to cover. And I will show them below:&lt;/p&gt;

&lt;h1&gt;
  
  
  What's the kernel?
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;provides essential resources of the hardware of computers and other programs&lt;/li&gt;
&lt;li&gt;run all time&lt;/li&gt;
&lt;li&gt;remains resident in main memory&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  The implements of the kernel:
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;UNIX&lt;/li&gt;
&lt;li&gt;microkernel&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The concepts of UNIX
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;UNIX is a kernel implementation and I'd like talk more detail on the UNIX article&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;file descriptor&lt;/li&gt;
&lt;li&gt;process&lt;/li&gt;
&lt;li&gt;signal&lt;/li&gt;
&lt;li&gt;sys-call(system call)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In UNIX, &lt;code&gt;sys-call&lt;/code&gt; is used to request all kind of functionality from operating system kernel, but in microkernel-based system typically won't offer a lot of &lt;code&gt;sys-calls&lt;/code&gt;, apart from one central one, and that is send message but instead &lt;code&gt;RPCs&lt;/code&gt; will be used instead.&lt;/p&gt;

&lt;p&gt;In the GNU Hurd, a lot of what is traditionally considered to be a UNIX system call is implemented(primarily by means of RPC) inside &lt;code&gt;glibc&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The concepts of microkernel
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;A microkernel is one kind of a kernel implementation.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  The architecture benefits of microkernel
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;A microkernel attempts to minimize the mandatory part of the operating system, by providing the minimal number of &lt;code&gt;mechanisms&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Maximise the flexibility of implementation(by imposing minimal &lt;code&gt;policy&lt;/code&gt;), allowing the efficient implementation of the remainder of system.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On &lt;code&gt;UNIX&lt;/code&gt;, a process is associated with a &lt;code&gt;UID&lt;/code&gt;, the &lt;code&gt;UID&lt;/code&gt; determines what the process is authorised to do. But on a microkernel, the policy that controls what resources the process may access are relied separately.&lt;/p&gt;

&lt;p&gt;And this may achieved though the use of UIDs, however need not. So, the process mechanism on such microkernel impose less policy on UNIX.&lt;/p&gt;

&lt;h3&gt;
  
  
  What's the policy?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;A policy is a rule that define what may or may not happens.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  What's the mean of the mechanisms?
&lt;/h3&gt;

&lt;p&gt;From Collaborative International Dictionary of English V.0.48 defines:&lt;/p&gt;

&lt;p&gt;a mechanism as the series of causal relations that operate to produce an effect in any system; as, the mechanism of chemical reaction(how it happens)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A mechanism is a function that produces some result, they necessarily impose some policy(rules)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Why the process is not policy free?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;A process is not policy free as it is possible to use other mechanisms to encapsulate a program instance&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;We already know &lt;code&gt;kernel&lt;/code&gt; and the relationships between it to  &lt;code&gt;UNIX&lt;/code&gt; and &lt;code&gt;microkernel&lt;/code&gt;, and the definition of concepts of &lt;code&gt;microkernel&lt;/code&gt; like &lt;code&gt;policy&lt;/code&gt;, &lt;code&gt;mechanisms&lt;/code&gt;, &lt;code&gt;policy free&lt;/code&gt; and the mistakes of the article will be fixed in as depth as we learning.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reference articles:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.gnu.org/software/hurd/kernel.html"&gt;https://www.gnu.org/software/hurd/kernel.html&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.gnu.org/software/hurd/microkernel.html"&gt;https://www.gnu.org/software/hurd/microkernel.html&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.gnu.org/software/hurd/hurd/what_is_the_gnu_hurd.html"&gt;https://www.gnu.org/software/hurd/hurd/what_is_the_gnu_hurd.html&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.gnu.org/software/hurd/unix.html"&gt;https://www.gnu.org/software/hurd/unix.html&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.gnu.org/software/hurd/system_call.html"&gt;https://www.gnu.org/software/hurd/system_call.html&lt;/a&gt;&lt;/p&gt;

</description>
      <category>gnuhurd</category>
      <category>opensource</category>
      <category>selfmotivation</category>
    </item>
    <item>
      <title>MIT-GNU-Scheme under the container environment</title>
      <dc:creator>Aisuko</dc:creator>
      <pubDate>Wed, 07 Jul 2021 08:48:15 +0000</pubDate>
      <link>https://dev.to/aisuko/mit-gnu-scheme-4b88</link>
      <guid>https://dev.to/aisuko/mit-gnu-scheme-4b88</guid>
      <description>&lt;h1&gt;
  
  
  Why I talks about this programming language?
&lt;/h1&gt;

&lt;p&gt;When we join in a new community, we can email the specific email group for more information and detail. Do not be shy, this is a good way for similar with the community as soon as possible.&lt;/p&gt;

&lt;p&gt;So, I follow this way. Send email to the GNU maintainer and receive lots of people's suggestions by email.&lt;/p&gt;

&lt;p&gt;I'm glad to see this and thanks for every maintainer's suggestion.&lt;/p&gt;

&lt;p&gt;And this is my first time heard MIT/GNU-Scheme, multiple GNU style OS extensions were developed by MIT/GNU-Scheme, so this is a good start point for newer like me.&lt;/p&gt;

&lt;h1&gt;
  
  
  How to install MIT/GNU Scheme?
&lt;/h1&gt;

&lt;p&gt;It’s easy for us, just go to the official website(&lt;a href="https://www.gnu.org/software/mit-scheme/"&gt;https://www.gnu.org/software/mit-scheme/&lt;/a&gt;) and follow the tutorial to install MIT/GNU-Scheme.&lt;/p&gt;

&lt;p&gt;First, go to and download the target architecture you want to deploy.&lt;/p&gt;

&lt;p&gt;Second, follow the GNU project document &lt;a href="https://www.gnu.org/software/mit-scheme/documentation/stable/mit-scheme-user.html"&gt;https://www.gnu.org/software/mit-scheme/documentation/stable/mit-scheme-user.html&lt;/a&gt; to install MIT/GNU-Scheme by the command.&lt;/p&gt;

&lt;p&gt;We can follow SICP &lt;a href="https://mitpress.mit.edu/sites/default/files/sicp/index.html"&gt;https://mitpress.mit.edu/sites/default/files/sicp/index.html&lt;/a&gt; to learn more detail of MIT/GNU-Scheme, especially we need to know what’s mean of algorithm to the programming language?&lt;/p&gt;

&lt;p&gt;There is not easy to learn this book due to different background, it's boring, but please keep persist in it.&lt;/p&gt;

&lt;p&gt;The simplest way is finish this book.&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;MIT/GNU-Scheme is simple to install and we have clearly material(MIT SICP) to lean how use it, especially use it to implement the algorithm step by step due to MIT/GNU-Scheme special struct we can get more of the algorithm(I mean simple to understand the what happened on the every step of algorithm).&lt;/p&gt;

&lt;h2&gt;
  
  
  For my personal experiences
&lt;/h2&gt;

&lt;p&gt;I knew that I must finish this book, and although I knew it is not easy target. But I’m on my way.&lt;/p&gt;

&lt;p&gt;I said before in other article that I have many different architecture devices, MacOS, Windows 10(inside the Ubuntu20.04 Desktop as a virtual machine) and Ubuntu20.04 Desktop.&lt;/p&gt;

&lt;p&gt;So, I need to install MIT/GNU-Scheme to all of them. This is not a good idea, and this is not my way.&lt;/p&gt;

&lt;p&gt;At the same time, I saw we can use container as the development environment.&lt;/p&gt;

&lt;p&gt;Finally, an idea achieve in my mind. I can develop a container environment base on Debian x64 and automatic install the latest version of MIT/GNU-Scheme.&lt;/p&gt;

&lt;p&gt;And it was contributed to the VSCode project, the address below &lt;a href="https://github.com/microsoft/vscode-dev-containers"&gt;https://github.com/microsoft/vscode-dev-containers&lt;/a&gt;, and you can find MIT/GNU-Scheme container development environment in &lt;a href="https://github.com/microsoft/vscode-dev-containers/tree/main/containers/mit-scheme"&gt;https://github.com/microsoft/vscode-dev-containers/tree/main/containers/mit-scheme&lt;/a&gt;, just follow the tutorial of the project to use it.&lt;/p&gt;

&lt;p&gt;Simple and fast.&lt;/p&gt;

&lt;p&gt;As you can see we can use the container technology as our environment without preparing the specific environment. &lt;/p&gt;

&lt;p&gt;Moreover, the container development environment can easy cross multiple platform(the environment just needs to support x64 container technology and installed container runtime), now we use docker CLI as the container client tool.&lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;There may have many ways to help us build our development environment. Although, the official of MIT/GNU-Scheme web site does not list the use MIT/GNU-Scheme under container environment. I have been send the email to request this to come true. If we can provide the second choice to people would make more sense.&lt;/p&gt;

&lt;p&gt;And I will learn MIT/GNU-Scheme by this way and keep maintain this project.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WHCyYWgF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hq53rhsq2ytb20lacbjp.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WHCyYWgF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hq53rhsq2ytb20lacbjp.jpeg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The picture source from &lt;a href="https://www.gnu.org/graphics/graphics.html"&gt;https://www.gnu.org/graphics/graphics.html&lt;/a&gt; GNU art by Raul Silva. I love this picture, 🤣🤣🤣🤣🤣&lt;/p&gt;

&lt;p&gt;Welcome any people come and use this project to learn MIT/GNU-Scheme.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>programming</category>
      <category>gnu</category>
    </item>
    <item>
      <title>We may not need to install docker daemon on our local system</title>
      <dc:creator>Aisuko</dc:creator>
      <pubDate>Sat, 22 May 2021 06:34:41 +0000</pubDate>
      <link>https://dev.to/aisuko/we-may-not-need-to-install-docker-daemon-on-our-local-system-3j7l</link>
      <guid>https://dev.to/aisuko/we-may-not-need-to-install-docker-daemon-on-our-local-system-3j7l</guid>
      <description>&lt;p&gt;I'd like to share some interesting things of using the Docker command.&lt;/p&gt;

&lt;p&gt;The environment which I have to list at below:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;macOS Big Sur Version 11.3.1 with multiple accounts&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Homebrew 3.1.8&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;docker client v20.10.6&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Ubuntu 20.04 and which was installed the latest version of docker client and docker daemon&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In my local environment, &lt;code&gt;macOS Big Sur Version 11.3.1&lt;/code&gt;. We do not need to install Docker desktop for mac on it, only &lt;code&gt;docker client&lt;/code&gt; is enough for me.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why I do not like install docker daemon on my local machine?
&lt;/h3&gt;

&lt;p&gt;The Docker desktop for mac installs &lt;code&gt;docker client&lt;/code&gt;, &lt;code&gt;docker daemon&lt;/code&gt; and a Kubernetes cluster feature on my macOS. I have a situation when I use my old mac(2014) with 8GB memory, these components account too much resource, and several active containers and Goland IDE will make my old mac slow.&lt;/p&gt;

&lt;p&gt;So, I'd like to only install &lt;code&gt;docker client&lt;/code&gt; on my machine and connect to remote &lt;code&gt;docker daemon&lt;/code&gt; to manage containers.&lt;/p&gt;

&lt;h3&gt;
  
  
  Install Homebrew anywhere
&lt;/h3&gt;

&lt;p&gt;And for my situation, I'd like to use the standard user who without extra privilege permission.&lt;/p&gt;

&lt;p&gt;The issue someone may interest in below:&lt;br&gt;
&lt;a href="https://superuser.com/questions/619498/can-i-install-homebrew-without-sudo-privileges"&gt;https://superuser.com/questions/619498/can-i-install-homebrew-without-sudo-privileges&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And we can install Homebrew without privilege with this script:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mkdir homebrew &amp;amp;&amp;amp; curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C homebrew
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And do not forget to add the &lt;code&gt;PATH&lt;/code&gt; of Homebrew to the &lt;code&gt;~/.zshrc&lt;/code&gt; file if you use the &lt;code&gt;oh-my-zsh&lt;/code&gt; like me.&lt;/p&gt;

&lt;p&gt;Add the environments and PATH of Homebrew into the &lt;code&gt;~/.zshrc&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;HOMEBREW_CELLAR=${HOME}/homebrew/Cellar
HOMEBREW_PREFIX=${HOME}/homebrew
# $PATH for brew without root privileged
export PATH=$HOMEBREW_PREFIX/bin:$PATH
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And the &lt;code&gt;source ~/.zshrc&lt;/code&gt; without restarting your terminal, that &lt;code&gt;brew&lt;/code&gt; can be using as the standard user.&lt;/p&gt;

&lt;h3&gt;
  
  
  Install docker client with Homebrew
&lt;/h3&gt;

&lt;p&gt;We can use the command &lt;code&gt;brew search docker&lt;/code&gt; to get information for docker on &lt;code&gt;brew&lt;/code&gt; channel&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;➜  ~ brew search docker
==&amp;gt; Formulae
docker ✔                         docker-credential-helper-ecr     docker-machine-driver-vmware     docker-squash
docker-clean                     docker-gen                       docker-machine-driver-vultr      docker-swarm
docker-completion                docker-ls                        docker-machine-driver-xhyve      docker2aci
docker-compose                   docker-machine                   docker-machine-nfs               dockerize
docker-compose-completion        docker-machine-completion        docker-machine-parallels         lazydocker
docker-credential-helper         docker-machine-driver-hyperkit   docker-slim
==&amp;gt; Casks
docker                                      docker-toolbox                              homebrew/cask-versions/docker-edge
➜  ~ 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And we can install &lt;code&gt;docker client&lt;/code&gt; by using &lt;code&gt;brew install docker&lt;/code&gt; command&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;➜  ~ docker version
Client: Docker Engine - Community
 Version:           20.10.6
 API version:       1.41
 Go version:        go1.16.3
 Git commit:        370c289
 Built:             Mon Apr 12 14:44:32 2021
 OS/Arch:           darwin/amd64
 Context:           default
 Experimental:      true
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Creating docker context
&lt;/h3&gt;

&lt;p&gt;More information about &lt;code&gt;docker context&lt;/code&gt; &lt;a href="https://docs.docker.com/engine/context/working-with-contexts/"&gt;https://docs.docker.com/engine/context/working-with-contexts/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As the document said:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;A single Docker CLI can have multiple contexts and each context contains all of the endpoint and security information required to manage a different cluster or node. The &lt;code&gt;docker context&lt;/code&gt; command makes it easy to configure these contexts and switch between them.&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;➜  ~ docker context ls
NAME        DESCRIPTION                               DOCKER ENDPOINT               KUBERNETES ENDPOINT   ORCHESTRATOR
default *   Current DOCKER_HOST based configuration   unix:///var/run/docker.sock                         swarm
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We can connect to the remote machine(there needs to use &lt;code&gt;ss key&lt;/code&gt; login not the password)&lt;/p&gt;

&lt;p&gt;And create the Docker context use the command below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker context create example-name --docker "host=ssh://username@host:port"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Always include the user name in the Docker endpoint address, even if it is the same as the local user name. If you omit the port, it defaults to 22.&lt;/p&gt;

&lt;p&gt;Change the Docker context we want to use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker context use example-name

# Check the images on the remote machine
docker images
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;We can use &lt;code&gt;docker context&lt;/code&gt; command to connect to the remote Docker daemon was installed on GNU-Linux or other OS. This can&lt;br&gt;
help us to use any remote Docker daemon we want to use. And do not need to install Docker daemon in local environment.&lt;/p&gt;

</description>
      <category>docker</category>
      <category>container</category>
      <category>devops</category>
    </item>
    <item>
      <title>GNU Hurd</title>
      <dc:creator>Aisuko</dc:creator>
      <pubDate>Sun, 09 May 2021 08:34:35 +0000</pubDate>
      <link>https://dev.to/aisuko/gnu-hurd-2j72</link>
      <guid>https://dev.to/aisuko/gnu-hurd-2j72</guid>
      <description>&lt;h1&gt;
  
  
  GNU Hurd
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://www.gnu.org/software/hurd/"&gt;https://www.gnu.org/software/hurd/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The project homepage please see the above address. And I am the maintainer for this project but now only fixed the fewer issues. This is my first project on the GNU community. And we can see that the project no active status if you compare it to anyone of the cloud-native projects.&lt;/p&gt;

&lt;p&gt;I can not talk too much, because I'm new to the project and need to read more and learn from the basics. As we know the way not similar to the modern open-source projects, nowadays project workflow may look like:&lt;/p&gt;

&lt;p&gt;Github -&amp;gt; Slack(Discord) -&amp;gt; Zoom meeting&lt;/p&gt;

&lt;p&gt;git.savannah.gnu.org -&amp;gt; IRC(freenode) meeting&lt;/p&gt;

&lt;p&gt;And the most difference between GNU projects Github projects are you can only readonly on the source code. But as we know this is the GNU community's policy comes from &lt;a href="https://www.gnu.org/philosophy/open-source-misses-the-point.html"&gt;https://www.gnu.org/philosophy/open-source-misses-the-point.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The terms “free software” and “open source” stand for almost the same range of programs. However, they say deeply different things about those programs, based on different values. The free software movement campaigns for freedom for the users of computing; it is a movement for freedom and justice. By contrast, the open source idea values mainly practical advantage and does not campaign for principles. This is why we do not agree with open source, and do not use that term.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;So, there are too many things that need to adapt. Let's get our hands dirty every day. I believe one day I can go easy.&lt;/p&gt;

&lt;p&gt;There is the repo list of GNU Hurd:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://git.savannah.gnu.org/cgit/hurd"&gt;http://git.savannah.gnu.org/cgit/hurd&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And we do not need to follow the official document at Debian community to run GNU Hurdhttps://&lt;a href="http://www.debian.org/ports/hurd/hurd-install"&gt;www.debian.org/ports/hurd/hurd-install&lt;/a&gt;, is too difficult for my personal.&lt;/p&gt;

&lt;p&gt;I try this &lt;a href="https://www.gnu.org/software/hurd/hurd/running/debian.html"&gt;https://www.gnu.org/software/hurd/hurd/running/debian.html&lt;/a&gt; and it works well on my ubuntu 20.04 LTS with &lt;code&gt;qemu&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;and the latest pre-complied &lt;code&gt;gnu-hurd&lt;/code&gt; address:&lt;br&gt;
&lt;a href="http://ftp.gnu.org/gnu/hurd/"&gt;http://ftp.gnu.org/gnu/hurd/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If anyone interest in the project, please contact the community by using the ways below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.gnu.org/software/hurd/contact_us.html"&gt;https://www.gnu.org/software/hurd/contact_us.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And not only contributing code can be a contributing, any small case or spell-mistakes all can be contributing, more detail and ways:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.gnu.org/software/hurd/contributing.html"&gt;https://www.gnu.org/software/hurd/contributing.html&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Finally
&lt;/h1&gt;

&lt;p&gt;The cover photo was shot by myself fewer years ago's morning if I remember right. The camera capability of the iPhone 6's is amazing me until today.&lt;/p&gt;

&lt;p&gt;I'd like to borrow little sentences from GNU document and send to myself.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Final Words -- Difficulties&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Please note that doing substantial contributions to a project as big and as encompassing as the GNU Hurd is not a trivial task. For working on the GNU Hurd's inner guts and getting useful work done, you have to plan for a many-months learning experience which will need sufficient self-motivation. Working on an advanced operating system kernel isn't something you can do in a few free minutes -- even less so without any previous kernel hacking experience.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Likewise, the Linux kernel maintainers are stating the exactly same difficulties, which is well presented by Jonathan Corbet in his 2010 Linux Kernel Summit report for the opening sessions about welcoming of newcomers.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;But of course, none of this is meant to be dismissive, or to scare you away -- on the contrary: just start using the GNU Hurd, and either notice yourself what's not working as expected, or have a look at one of the Open Issues, and we shall see if you'll evolve to be the next core Hurd hacker! You'll just have to get excited about it!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>gnuhurd</category>
    </item>
    <item>
      <title>GNU</title>
      <dc:creator>Aisuko</dc:creator>
      <pubDate>Sun, 09 May 2021 07:32:13 +0000</pubDate>
      <link>https://dev.to/aisuko/gnu-3j5h</link>
      <guid>https://dev.to/aisuko/gnu-3j5h</guid>
      <description>&lt;h1&gt;
  
  
  GNU
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://www.gnu.org"&gt;https://www.gnu.org&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  What's the GNU?
&lt;/h2&gt;

&lt;p&gt;I may not explain this, because I new in the GNU community(Joined at the beginning of 2021) I believe I'm may not professional to explain this.&lt;/p&gt;

&lt;p&gt;There may need more time in my career to learn which I mean to feel as if it had happened to oneself.&lt;/p&gt;

&lt;p&gt;But please kindly read this blog &lt;a href="https://www.gnu.org/philosophy/15-years-of-free-software.html"&gt;https://www.gnu.org/philosophy/15-years-of-free-software.html&lt;/a&gt; was written by Richard M. Stallman. This article is a standard answer to this question.&lt;/p&gt;

&lt;p&gt;So, if I spend all my career on the GNU projects, I believe is ok for me. I do not like competition and want more freedom, freedom is pressing, if there some example I can show, like &lt;em&gt;&lt;a href="https://en.wikipedia.org/wiki/Attack_on_Titan"&gt;Attack on Titan&lt;/a&gt;&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Software and the internet should be free(freedom) for all people.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why we need to know or learn the GNU projects?
&lt;/h2&gt;

&lt;p&gt;The story is too long I guess. If I remember right that while I deal with the issue some like &lt;a href="https://github.com/kubernetes/kubernetes/issues/45419#issuecomment-528764809"&gt;https://github.com/kubernetes/kubernetes/issues/45419#issuecomment-528764809&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As we know, sometimes we need to get deeper to make clear what's wrong, for example:&lt;/p&gt;

&lt;p&gt;We need to make clear in every step below the picture to get more detail to solve the issue.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9-g82qGs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/76we8yuy2wibd7ez739v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9-g82qGs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/76we8yuy2wibd7ez739v.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So, we may need some tools on GNU Linux operator system, for example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;htop&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;strace&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;lsof&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And these tools can work together to help us find what's wrong with the basic environment.&lt;/p&gt;

&lt;p&gt;Finally, I found there many things I need to learn that all come from GNU. As an engineer, we not only design and implement the code but need to solve the problems we meet. And I have too much confusion:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What's is the GNU?&lt;/li&gt;
&lt;li&gt;Why so many tools and packages own by GNU?&lt;/li&gt;
&lt;li&gt;Why no one introduces it whatever in the software and cloud-native industry?&lt;/li&gt;
&lt;li&gt;How about the relationships between GNU and Linux?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And I did many searches about GNU and interested in GNU due to a blog below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.gnu.org/philosophy/open-source-misses-the-point.html"&gt;https://www.gnu.org/philosophy/open-source-misses-the-point.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I do not totally agree with the all contents of the blog, but I'm an open-source software engineer in the cloud-native industry. I saw too many people jump into this industry and bring too much no necessary competition and base environment upgrade.&lt;/p&gt;

&lt;p&gt;And I see there is not exist curiosities but only selfishness and desire.&lt;/p&gt;

&lt;p&gt;So, I begin to think:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What means of my want to join into open-source as a contributor, collaborator, and maintainer?&lt;/li&gt;
&lt;li&gt;What my motivation?&lt;/li&gt;
&lt;li&gt;Did I realize the value of open-source?&lt;/li&gt;
&lt;li&gt;What's right and wrong?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Finally, I realize that I love freedom software and I wanna learn more to meet my curiosity. so, this can explain all things I did until now. And the open-source projects can give us more practice situations to solve the issues we won't meet in daily work and collaborate with other people online.&lt;/p&gt;

&lt;p&gt;The internet changed the way people interact, but society keeps the legacy way to keep distinct between the different classes of people.&lt;/p&gt;

&lt;h1&gt;
  
  
  Finally
&lt;/h1&gt;

&lt;p&gt;The coverage photos were done by myself fewer years ago on my garden, and the tree no longer exists now.&lt;/p&gt;

&lt;p&gt;The relationship between GNU and Linux &lt;a href="https://www.gnu.org/gnu/linux-and-gnu.html"&gt;https://www.gnu.org/gnu/linux-and-gnu.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Helping the GNU Project blog:&lt;br&gt;
&lt;a href="https://www.gnu.org/help/help.html"&gt;https://www.gnu.org/help/help.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I will talk more about the project which I as the maintainer,&lt;a href="https://dev.to/aisuko/gnu-hurd-2j72"&gt;GNU Hurd&lt;/a&gt;&lt;/p&gt;

</description>
      <category>gnu</category>
    </item>
    <item>
      <title>Service Mesh Interface</title>
      <dc:creator>Aisuko</dc:creator>
      <pubDate>Mon, 03 May 2021 04:13:27 +0000</pubDate>
      <link>https://dev.to/aisuko/service-mesh-interface-59l5</link>
      <guid>https://dev.to/aisuko/service-mesh-interface-59l5</guid>
      <description>&lt;h3&gt;
  
  
  What's the Service mesh interface(SMI)?
&lt;/h3&gt;

&lt;p&gt;A standard interface(Not only specification but also implement) for service mesh features on Kubernetes. To be honest, I do not care about who built this command standard, so, I would not introduce more on this.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why we need the Service mesh interface?
&lt;/h3&gt;

&lt;p&gt;There too many service-mesh productions have been come from the community or private company. If we release a command standard, the end-user can with the standard format configuration work on different service-mesh production.&lt;/p&gt;

&lt;p&gt;As we know, this makes more sense. The user binding by the provider is not good news.&lt;/p&gt;

&lt;h3&gt;
  
  
  What are the features provide by SMI?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;A standard interface for service mesh features on Kubernetes&lt;/li&gt;
&lt;li&gt;Define the basic feature set for the most common service mesh use cases&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Features(document)&lt;/th&gt;
&lt;th&gt;Feature(implement)&lt;/th&gt;
&lt;th&gt;Crds&lt;/th&gt;
&lt;th&gt;Source-code&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Traffic policy&lt;/td&gt;
&lt;td&gt;&lt;code&gt;traffic access&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;access.smi-spec.io v1alpha3&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/servicemeshinterface/smi-sdk-go/tree/main/pkg/apis/access"&gt;https://github.com/servicemeshinterface/smi-sdk-go/tree/main/pkg/apis/access&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Apply policies like identity and transport encryption across services&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Traffic telemetry&lt;/td&gt;
&lt;td&gt;&lt;code&gt;traffic metrics&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;metrics.smi-spec.io v1alpha2&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/servicemeshinterface/smi-sdk-go/tree/main/pkg/apis/metrics"&gt;https://github.com/servicemeshinterface/smi-sdk-go/tree/main/pkg/apis/metrics&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Capture key metrics like error rate and latency between services&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Traffic management&lt;/td&gt;
&lt;td&gt;&lt;code&gt;traffic split&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;split.smi-spec.io v1alpha4&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/servicemeshinterface/smi-sdk-go/tree/main/pkg/apis/split"&gt;https://github.com/servicemeshinterface/smi-sdk-go/tree/main/pkg/apis/split&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Shift traffic between different services&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Notice&lt;/strong&gt;&lt;br&gt;
There exist &lt;code&gt;traffic spec&lt;/code&gt; object. This object is a corporation of &lt;code&gt;traffic access&lt;/code&gt; these two features results on &lt;em&gt;Traffic policy&lt;/em&gt; &lt;/p&gt;

&lt;h3&gt;
  
  
  Service Mesh Interface Compliance
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vxRaS-aw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/74dzbsuy7v44uombw1jy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vxRaS-aw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/74dzbsuy7v44uombw1jy.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  For development
&lt;/h3&gt;

&lt;p&gt;As you can see, this project above uses the &lt;code&gt;code-generator&lt;/code&gt;. In my personal opinion, this project is a simple example project which told us &lt;a href="https://github.com/servicemeshinterface/smi-sdk-go/blob/main/hack/update-codegen.sh"&gt;how to use &lt;code&gt;code-generator&lt;/code&gt; of Kubernetes&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;And also includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;client-gen&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;informer-gen&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;lister-gen&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every developer of the Cloud-native industry should learn how to use that. But this may not good news for the software industry if all developers dependent on those automation scripts.&lt;/p&gt;

&lt;h3&gt;
  
  
  The situation of using service-mesh of my
&lt;/h3&gt;

&lt;p&gt;We all know Service-mesh is complex and has so many features, but I believe that we only just need one or two features of service-mesh in many situations. &lt;/p&gt;

&lt;p&gt;So, we should confirm that after the applications were deployed on Kubernetes, what's the most important for us.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;mTLS communicate between applications?&lt;/li&gt;
&lt;li&gt;Applications metrics without change code?&lt;/li&gt;
&lt;li&gt;The traffic flow working status?&lt;/li&gt;
&lt;li&gt;Out-of-box A/B or canary deploy?&lt;/li&gt;
&lt;li&gt;More flexible traffic management?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We can not say that we need them all without thinking and testing. Because the cost value is deep and not professional. If Cloud-native is not decreasing the cost value, it will lose its value. &lt;/p&gt;

&lt;p&gt;So, I just make the choice to tack traffic flow without changing the application's code.&lt;/p&gt;

&lt;p&gt;The out-of-box feature we can use to monitor what happened in the cluster:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gQBwjHUX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a57043v7n7xh0v9qip1e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gQBwjHUX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a57043v7n7xh0v9qip1e.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The traffic flow between services, pods, or deploys:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FzXPRZGO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kho37ycz6h06ulp3bakk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FzXPRZGO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kho37ycz6h06ulp3bakk.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rfQkkEPd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/x6p5v0bl1kq6t3wciexd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rfQkkEPd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/x6p5v0bl1kq6t3wciexd.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The out-of-box feature of tracking the traffic flow:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--v0gdYyBF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/w8z9qw5ft4qjmpb5ghdd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--v0gdYyBF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/w8z9qw5ft4qjmpb5ghdd.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DMl-11G---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ik9pqzltmmr0pmkt0gvg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DMl-11G---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ik9pqzltmmr0pmkt0gvg.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Comparing the application with traffic metrcis:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gHXZy3-_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6t6rbjx0xagxame42epe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gHXZy3-_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6t6rbjx0xagxame42epe.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The application architecture with DAG:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4ZvYthkN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yqdwq3kn4vnn4tdptu6t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4ZvYthkN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yqdwq3kn4vnn4tdptu6t.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Subconclusion
&lt;/h4&gt;

&lt;p&gt;Those out-of-box features can solve the problems of daily working because you can see everything of your application traffic flow. Even though you are not familiar with Cloud-native. And we do not need to enable the traffic management feature, which can increase the complexity in some situations. &lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;When I try to learn how to use istio+ingress or linkerd2+ingress, lots of things make me confused, but Linkerd2 makes things easier and this my personal idea may not have any sense to other people.&lt;/p&gt;

&lt;p&gt;So, on service-mesh, I believe we should control the cost value and focus on the small and simple, not the powerful and complex situation and design.&lt;/p&gt;

&lt;p&gt;But the common standard of service-mesh is a good way to decrease learn the cost of the end-users and give more community a chance to do more useful tools(I guess there will exist tools that can auto-create manifest for your application traffic specification and policy soon.)The more active and low technology threshold ecosystem I guess.&lt;/p&gt;

&lt;h3&gt;
  
  
  Finally
&lt;/h3&gt;

&lt;p&gt;The page cover is my dog called Happy, and he is 13 years old, so smart he is. &lt;/p&gt;

&lt;p&gt;The picture source from layer5.io community's &lt;a href="https://layer5.io/service-mesh-landscape#smi"&gt;smi-landscape&lt;/a&gt;. You can get more detail of Service mesh productions.&lt;/p&gt;

&lt;p&gt;If you want to get more information, please join the &lt;a href="https://calendar.google.com/calendar/u/0/r?cid=bGF5ZXI1LmlvX2VoMmFhOWRwZjFnNDBlbHZvYzc2MmpucGhzQGdyb3VwLmNhbGVuZGFyLmdvb2dsZS5jb20"&gt;community meeting of Layer5.io&lt;/a&gt; or if you want to be a contributor please join the &lt;a href="https://meshery.io/community/"&gt;Slack channel&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;SMI official website:&lt;br&gt;
&lt;a href="https://smi-spec.io"&gt;https://smi-spec.io&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And there a service-mesh comparison website includes more detail:&lt;br&gt;
&lt;a href="https://servicemesh.es"&gt;https://servicemesh.es&lt;/a&gt;&lt;/p&gt;

</description>
      <category>cloudnative</category>
      <category>kubernetes</category>
      <category>servicemesh</category>
      <category>smi</category>
    </item>
    <item>
      <title>Debug Adapter Protocol</title>
      <dc:creator>Aisuko</dc:creator>
      <pubDate>Sat, 24 Apr 2021 08:41:45 +0000</pubDate>
      <link>https://dev.to/aisuko/debug-adapter-protocol-60p</link>
      <guid>https://dev.to/aisuko/debug-adapter-protocol-60p</guid>
      <description>&lt;p&gt;I'd like to add the official document link first&lt;/p&gt;

&lt;p&gt;&lt;a href="https://microsoft.github.io/debug-adapter-protocol/"&gt;https://microsoft.github.io/debug-adapter-protocol/&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What's the &lt;code&gt;debug adapter protocol&lt;/code&gt;?
&lt;/h3&gt;

&lt;p&gt;DAP defines the abstract protocol used between a development tool(e.g IDE or editor) and a debugger.&lt;/p&gt;

&lt;p&gt;DAP is to abstract the way how the debugging support of developing tools communicates with debuggers or runtimes into a protocol.&lt;/p&gt;

&lt;p&gt;Because is unrealistic to assume that existing debuggers or runtimes adopt the protocol any time soon, so there may import&lt;br&gt;
a component - Debug Adapter to adapts an existing debugger or runtime to the Debug Adapter Protocol.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why there need DAP?
&lt;/h3&gt;

&lt;p&gt;Because of VScode(and other IDE or editor) needs to support multiple languages and every one of them needs to develop the union functions, this makes a significant effort and can not be easily amortized over multiple development tools.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6rufPpXD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/p2nqv12gsghg09seltel.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6rufPpXD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/p2nqv12gsghg09seltel.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So, If we add DAP:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZlPLLNlv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s13neetkxwcvm1z154es.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZlPLLNlv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s13neetkxwcvm1z154es.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The diagram shows that the Debug Adapter Protocol makes it possible to implement a single generic debugger UI per development tool and that Debug Adapters can be re-used across these tools. This reduces the effort to support a new debugger considerably.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  How can we use the adapter in Golang development:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;We need to create the new launch configurations like below:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
    "name": "Launch file",
    "type": "go",
    "request": "launch",
    "mode": "auto",
    "program": "${fileDirname}",
    "debugAdapter": "dlv-dap"
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To switch back to the legacy adapter, set "debugAdapter" to "legacy".&lt;/p&gt;

&lt;p&gt;And use the function I mentioned in another blog &lt;a href="https://dev.to/aisuko/debug-adapter-protocol-4ncg"&gt;https://dev.to/aisuko/debug-adapter-protocol-4ncg&lt;/a&gt; to run the test functions.&lt;/p&gt;

&lt;p&gt;And you need to confirm from the console that your program already used the &lt;code&gt;dlv-dap&lt;/code&gt; adapter like below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aKk_j7qI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/b564vzzplblng2z5r2f8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aKk_j7qI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/b564vzzplblng2z5r2f8.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The images of DAP architecture above all from &lt;a href="https://microsoft.github.io/debug-adapter-protocol/overview"&gt;https://microsoft.github.io/debug-adapter-protocol/overview&lt;/a&gt;&lt;/p&gt;

</description>
      <category>vscode</category>
      <category>adapter</category>
    </item>
    <item>
      <title>Debug Adapter Of VScode</title>
      <dc:creator>Aisuko</dc:creator>
      <pubDate>Sat, 24 Apr 2021 07:47:27 +0000</pubDate>
      <link>https://dev.to/aisuko/debug-adapter-protocol-4ncg</link>
      <guid>https://dev.to/aisuko/debug-adapter-protocol-4ncg</guid>
      <description>&lt;p&gt;The story comes from the issue:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/golang/vscode-go/issues/1450" rel="noopener noreferrer"&gt;https://github.com/golang/vscode-go/issues/1450&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;IF you are a Golang developer, you should know how to debug the Golang code. And we know that there many IDE or Editor we can use, some like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Goland&lt;/li&gt;
&lt;li&gt;Vscode&lt;/li&gt;
&lt;li&gt;Some people use Emacs, I guessed&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But Goland is not free, except you are an open-source engineer and keeping active on the project which you contributed all time. And you can apply for the open-source License.&lt;/p&gt;

&lt;p&gt;I'd like to say thanks to &lt;a href="https://www.jetbrains.com" rel="noopener noreferrer"&gt;Jetbrains&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So, if we use Vscode in order to debug our code, may need to pay more attention some issue from the language extensions.&lt;/p&gt;

&lt;p&gt;As you can saw from the issue that some issues with the debug adapter. &lt;/p&gt;

&lt;h3&gt;
  
  
  Finally
&lt;/h3&gt;

&lt;p&gt;If you debug Golang with Vscode, you should care about some issues.&lt;/p&gt;

&lt;p&gt;I personally like both of them I mentioned above. And I'd like to help Vscode Golang debug adapter better. &lt;/p&gt;

&lt;h3&gt;
  
  
  Tip
&lt;/h3&gt;

&lt;p&gt;There a tip I'd like to share with more people&lt;/p&gt;

&lt;p&gt;When we want to use Vscode run the test functions like below&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fw8z88xe9zgtl9wikkpjk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fw8z88xe9zgtl9wikkpjk.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We should not like the &lt;code&gt;debug test&lt;/code&gt; which locate on the function name. So, how should we do?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Creating a debug configuration
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Test",
            "type": "go",
            "request": "launch",
            "mode": "test",
            // &amp;lt;Should be replace:The folder includes the test files like `xxx_test.go`&amp;gt;
            "program": "${workspaceFolder}/pkg/teams",
            "debugAdapter": "dlv-dap",
            "showLog": true,
            "logOutput": "dap",
            "trace": "verbose"
        }
    ]
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And open the file location where you want to run(your cursor on the test method is good), tap &lt;code&gt;shift+command+p&lt;/code&gt; MacOS, input &lt;code&gt;Debug Test At Cursor&lt;/code&gt;, the Vscode would run the test methods which at your cursor, this is useful.&lt;/p&gt;

</description>
      <category>vscode</category>
      <category>editor</category>
      <category>dlv</category>
      <category>dlvdap</category>
    </item>
  </channel>
</rss>
