<?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: nuh yurduseven</title>
    <description>The latest articles on DEV Community by nuh yurduseven (@nuhyurdev).</description>
    <link>https://dev.to/nuhyurdev</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%2F446660%2F620d0a50-64de-4e1a-88a9-519f6bd5fe5e.png</url>
      <title>DEV Community: nuh yurduseven</title>
      <link>https://dev.to/nuhyurdev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nuhyurdev"/>
    <language>en</language>
    <item>
      <title>How to personalize the shell for developers - my custom setup</title>
      <dc:creator>nuh yurduseven</dc:creator>
      <pubDate>Sun, 18 Dec 2022 20:04:04 +0000</pubDate>
      <link>https://dev.to/nuhyurdev/shell-personalization-my-custom-setup-28fk</link>
      <guid>https://dev.to/nuhyurdev/shell-personalization-my-custom-setup-28fk</guid>
      <description>&lt;p&gt;Hi, This post has been written to create a beautiful and useful custom operating system shell setup for developers, data scientists or everyone who want to have unusual linux,*nix or macos shell. This is completely simple guide for installation of shell setup for best efficiency.    &lt;/p&gt;

&lt;h2&gt;
  
  
  install zsh and ohmyzsh
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; &lt;span class="c"&gt;## for Debian/Ubuntu&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install &lt;/span&gt;zsh

&lt;span class="c"&gt;## for RHEL/Centos/Fedora&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;yum &lt;span class="nb"&gt;install &lt;/span&gt;zsh
&lt;span class="c"&gt;## for only Fedora &lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;dnf &lt;span class="nb"&gt;install &lt;/span&gt;zsh


&lt;span class="c"&gt;## for arch&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;pacman &lt;span class="nb"&gt;install &lt;/span&gt;zsh
&lt;span class="c"&gt;## for mac&lt;/span&gt;
brew &lt;span class="nb"&gt;install &lt;/span&gt;zsh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The package manager installed the shell on the system.&lt;/p&gt;

&lt;p&gt;to install ohmyzsh latest version:&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="c"&gt;#using curl&lt;/span&gt;
sh &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="c"&gt;#or using wget&lt;/span&gt;
sh &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;wget https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh &lt;span class="nt"&gt;-O&lt;/span&gt; -&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;ohmyzsh&lt;/strong&gt; installed under the &lt;strong&gt;/home/user&lt;/strong&gt; directory as hidden. You can see the folder &lt;strong&gt;.oh-my-zsh&lt;/strong&gt; and &lt;strong&gt;.zshrc&lt;/strong&gt; config files. ohmyzsh will change zsh config file contents.     &lt;/p&gt;

&lt;h2&gt;
  
  
  change the theme
&lt;/h2&gt;

&lt;p&gt;Open &lt;strong&gt;.zshrc&lt;/strong&gt;* config file with nano or vim and change themes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nano ~/.zshrc
&lt;span class="c"&gt;#or&lt;/span&gt;
vim ~./zshrc 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ZSH_THEME="fino-time"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can find different themes from the&lt;a href="[Themes%20%C2%B7%20ohmyzsh/ohmyzsh%20Wiki%20%C2%B7%20GitHub](https://github.com/ohmyzsh/ohmyzsh/wiki/Themes)"&gt; pages&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  install custom plugins
&lt;/h2&gt;

&lt;h3&gt;
  
  
  zsh-autosuggestion
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/zsh-users/zsh-autosuggestions.git &lt;span class="nv"&gt;$ZSH_CUSTOM&lt;/span&gt;/plugins/zsh-autosuggestions
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  zsh-syntax-highlighting
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/zsh-users/zsh-syntax-highlighting.git &lt;span class="nv"&gt;$ZSH_CUSTOM&lt;/span&gt;/plugins/zsh-syntax-highlighting
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  zsh-autocomplete
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone &lt;span class="nt"&gt;--depth&lt;/span&gt; 1 &lt;span class="nt"&gt;--&lt;/span&gt; https://github.com/marlonrichert/zsh-autocomplete.git &lt;span class="nv"&gt;$ZSH_CUSTOM&lt;/span&gt;/plugins/zsh-autocomplete
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And add these to plugins tuple in &lt;strong&gt;.zshrc&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;plugins = ( git
            sudo
            zsh-autosuggestions 
            zsh-syntax-highlighting 
            zsh-autocomplete
            )
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  install pyenv for python version control
&lt;/h2&gt;

&lt;p&gt;Pyenv is a tool which can manage python environment and versions. It's very useful tool for all types developers.&lt;br&gt;
To installation the tools:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/pyenv/pyenv.git ~/.pyenv
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and to define environment variables:&lt;br&gt;&lt;br&gt;
(for zsh)&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="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'export PYENV_ROOT="$HOME/.pyenv"'&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; ~/.zshrc
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'command -v pyenv &amp;gt;/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"'&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; ~/.zshrc
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'eval "$(pyenv init -)"'&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; ~/.zshrc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;after that:&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="nb"&gt;exec&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$SHELL&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To create python virtual-environments, virtualenv plugin installation is required.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/pyenv/pyenv-virtualenv.git &lt;span class="si"&gt;$(&lt;/span&gt;pyenv root&lt;span class="si"&gt;)&lt;/span&gt;/plugins/pyenv-virtualenv
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Usage
&lt;/h3&gt;

&lt;p&gt;You can install many of python, conda versions with this tools easily. You can check &lt;a href="https://github.com/pyenv/pyenv.git" rel="noopener noreferrer"&gt;github repositories&lt;/a&gt; for more information.&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="c"&gt;## install a python environment&lt;/span&gt;
pyenv &lt;span class="nb"&gt;install &lt;/span&gt;3.8.5 
&lt;span class="c"&gt;## create a virtual environment&lt;/span&gt;
pyenv virtualenv 3.8.5 myenv
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;after create a virtual-environment, it's usable with this command.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pyenv activate myenv
&lt;span class="o"&gt;(&lt;/span&gt;myenv&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="nv"&gt;$ &lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>c</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Using Rstudio with windows subsystem for linux(wsl)</title>
      <dc:creator>nuh yurduseven</dc:creator>
      <pubDate>Tue, 11 Jan 2022 19:55:42 +0000</pubDate>
      <link>https://dev.to/nuhyurdev/using-rstudio-server-with-windows-subsystem-for-linux-40ok</link>
      <guid>https://dev.to/nuhyurdev/using-rstudio-server-with-windows-subsystem-for-linux-40ok</guid>
      <description>&lt;p&gt;Hi, In this post, I gonna show you how to install Rstudio on wsl system and to reach over the browser. if you are using windows and dont want to use Rstudio client in windows-side, this method will work perfectly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Install windows-subsystem for linux
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Open the Microsoft store and search "wsl" or "ubuntu"
In windows store, There are many windows subsystem for linux distributions such as Ubuntu, debian, suse, kali, alpine wsl etc. You can use one of these distributions. &lt;/li&gt;
&lt;li&gt;Installation can be done using the instructions in the terminal.&lt;/li&gt;
&lt;li&gt;Determine username and password for linux subsystem. &lt;/li&gt;
&lt;li&gt;You can use windows terminal or any terminal emulator for windows. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt;  It can be used graphical linux application via wsl2. wsl1 is not supported that. But you must install X window manager to use graphical application on wsl2. You can use rstudio desktop on wsl2 with this way. &lt;/p&gt;

&lt;h2&gt;
  
  
  Install R and Rstudio-server
&lt;/h2&gt;

&lt;p&gt;In this stage, you should install Rstudio-server to subsystem side and you can install R environment to linux side as well. This is absolutely great trick for those switching to windows from linux.&lt;br&gt;
For ubuntu or debian:&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;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install &lt;/span&gt;r-base
&lt;span class="c"&gt;## after the instalation of R environment&lt;/span&gt;
&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install &lt;/span&gt;gdebi-core
&lt;span class="nv"&gt;$ &lt;/span&gt;wget https://download2.rstudio.org/server/bionic/amd64/rstudio-server-2021.09.2-382-amd64.deb
&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;gdebi rstudio-server-2021.09.2-382-amd64.deb
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After the installation, You can start rstudio server via&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ sudo rstudio-server start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  To reach in windows side with browser
&lt;/h2&gt;

&lt;p&gt;R environment and Rstudio server are installed and server is activated. you can access Rstudio from browser in windows side. Rstudio is working on localhost server and it can be accessed via browser &lt;strong&gt;&lt;a href="http://localhost:8787" rel="noopener noreferrer"&gt;http://localhost:8787&lt;/a&gt;&lt;/strong&gt; address. &lt;br&gt;
To access the server, you have to have a username and password has been determined before. You can use the username and password you used during the installation of the subsystem.&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%2F5lqsdvtnq6ow2uubc67l.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%2F5lqsdvtnq6ow2uubc67l.png" alt="rstudio-server"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Using this method is absolutely great for those switching to windows from linux. Linux is more simple and more useful but using windows os with linux subsystem is quite influential. This method is used for any environment such as using python environment and jupyter notebook together. &lt;/p&gt;

</description>
      <category>r</category>
      <category>tutorial</category>
      <category>datascience</category>
      <category>productivity</category>
    </item>
    <item>
      <title>How to Create GUI for remote server with i3 window manager</title>
      <dc:creator>nuh yurduseven</dc:creator>
      <pubDate>Sun, 05 Dec 2021 16:23:02 +0000</pubDate>
      <link>https://dev.to/nuhyurdev/how-to-create-gui-for-remote-server-with-i3-window-manager-2mj9</link>
      <guid>https://dev.to/nuhyurdev/how-to-create-gui-for-remote-server-with-i3-window-manager-2mj9</guid>
      <description>&lt;p&gt;Hello there. This article is about providing management via a UI by installing a window manager or desktop environment for servers and establishing a remote connection. A graphical server and desktop environment are not used on remote servers because server resources are usually limited. In this post I will be working on a remote server with i3, a lightweight window manager.&lt;/p&gt;

&lt;p&gt;Note: Instead of a remote server, I will prepare a virtual server by giving a random IP on my own computer with Vagrant and perform the operations. This is how you can make your first attempts.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's i3 wm
&lt;/h2&gt;

&lt;p&gt;For operating systems based on the Linux kernel, the graphical interface does not directly belong to the operating system. It is a module that connects to the operating system like any application. In this way, a crash on the graphics side does not affect the operating system. It is sufficient to resolve the graphics server error and restart it.” X Window” is a widely used graphics server developed in a very flexible way. Most current and known distributions use Xorg as graphics server. It contains a "window manager" inside. Its task is to organize operations such as screen layout of windows, adjusting the size, creating virtual desktops. Enlightment, Blackbox, kwin in kde and i3 etc… These are examples of window managers. i3 window manager is very light (1.2mb) and easy to use thanks to keyboard shortcuts. This is an alternative to install on your remote servers that are not very resource rich.&lt;/p&gt;

&lt;h2&gt;
  
  
  Installing Ubuntu server via vagrant(optional)
&lt;/h2&gt;

&lt;p&gt;With Vagrant, you can create a virtual server on virtualbox and work on this server. After installing the appropriate vagrant version and oracle virtualbox application for your system, you can create a vagrant box and work as if you were working with a machine with a static IP.&lt;br&gt;
&lt;a href="https://www.vagrantup.com/" rel="noopener noreferrer"&gt;Click the link to download vagrant&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;“&lt;strong&gt;vagrant boxes&lt;/strong&gt;” describe operating systems that are installed and ready to be used. After downloading and creating a vagrant file on &lt;a href="https://app.vagrantup.com/boxes/search" rel="noopener noreferrer"&gt;“Vagrant cloud”&lt;/a&gt;, it can be raised with vagrant.&lt;/p&gt;

&lt;p&gt;With vagrant box add &lt;strong&gt;{title}&lt;/strong&gt; or &lt;strong&gt;{url}&lt;/strong&gt;, you can download a new vagrant box from the new cloud. You can check with &lt;code&gt;vagrant box list&lt;/code&gt;, create a &lt;code&gt;vagrantfile&lt;/code&gt; with &lt;code&gt;vagrant init&lt;/code&gt;, and raise the server with &lt;code&gt;vagrant run&lt;/code&gt;. If different configurations are required, you can create vagrant fie manually and then raise it with &lt;code&gt;vagrant up&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Let's download the ubuntu box, which is in the first place on the cloud.&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;vagrant box add ubuntu/trusty64


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

&lt;/div&gt;

&lt;p&gt;After checking if it is in the list, let's save the following vagrant file with the name &lt;code&gt;Vagrantfile&lt;/code&gt; in the directory we are working in. It can then be lifted up with &lt;code&gt;vagrant up&lt;/code&gt;. You can send a "shut down" signal with &lt;code&gt;vagrant halt&lt;/code&gt; to turn it off.&lt;/p&gt;

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

NAME = "remote-Server"  
IP = "192.168.1.XX"

Vagrant.configure("2") do |config|  
  config.vm.box = "ubuntu/trusty64"
  config.vm.hostname = NAME
  config.vm.network "public_network", ip: IP

  config.vm.provider "virtualbox" do |vb|
    vb.customize ["modifyvm", :id, "--memory", '2048']
    vb.name='remote-server'
  end
    config.vm.provision "shell" do |s|
    s.inline = "echo Server created succesfully!"
  end
end


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

&lt;/div&gt;

&lt;p&gt;The IP given here is an IP address in the internal network. The virtual machine is a different computer in the internal network and is connected with a bridge adapter.&lt;/p&gt;

&lt;p&gt;Select your bridge adapter after the up command. Wifi or ethernet adapter. You can see the hostname and username information, and other information...&lt;/p&gt;

&lt;p&gt;Once it's up we can connect via ssh.&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;ssh vagrant@192.168.1.X 


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

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;password: vagrant&lt;/strong&gt;&lt;br&gt;
and we are inside...&lt;/p&gt;

&lt;h2&gt;
  
  
  Installation of xserver and i3 wm
&lt;/h2&gt;

&lt;p&gt;If your server does not have a graphics server on it, it must be installed before i3. You can check it with &lt;code&gt;startx&lt;/code&gt;. It is a shell script that runs &lt;code&gt;xinit&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Xorg&lt;/code&gt; and &lt;code&gt;openbox&lt;/code&gt;should be installed on Ubuntu. It is available in the Repository. You can install them using “&lt;code&gt;apt install&lt;/code&gt;”. You can find x graphics server installations on Centos, opensuse, fedora or bsd based systems in user guides, wiki pages and forums. (stackoverflow, superuser, stackexchange etc)&lt;/p&gt;

&lt;p&gt;Afterwards, the i3 package in the repository can be downloaded and installed.&lt;/p&gt;

&lt;p&gt;Then the graphics server should be started using the &lt;code&gt;startx&lt;/code&gt; shell script.&lt;/p&gt;

&lt;p&gt;If you do not have limiting factors such as memory and storage space on your remote server, you can use &lt;strong&gt;"xfce desktop environment"&lt;/strong&gt;. This “DE” has a clean interface and uses very little resources.&lt;/p&gt;

&lt;h2&gt;
  
  
  Connection of Server
&lt;/h2&gt;

&lt;p&gt;There are different options available at this stage. You can make a remote connection and manage the system with the "remote connection" application you want. You can select an application that you can connect with the operating system you use and the operating system you use on the remote server. Tools such as &lt;strong&gt;teamviewer&lt;/strong&gt;, &lt;strong&gt;anydesk&lt;/strong&gt;, &lt;strong&gt;tigerVNC&lt;/strong&gt;, &lt;strong&gt;tightVNC&lt;/strong&gt;, &lt;strong&gt;realVNC&lt;/strong&gt;, &lt;strong&gt;remmina&lt;/strong&gt;, &lt;strong&gt;zoho assist&lt;/strong&gt;, &lt;strong&gt;Apache Guacamole&lt;/strong&gt;, &lt;strong&gt;NoMachine&lt;/strong&gt;, &lt;strong&gt;xrdp&lt;/strong&gt;, &lt;strong&gt;freeNX&lt;/strong&gt; are widely used. Here we come across &lt;code&gt;SSH&lt;/code&gt;, &lt;code&gt;RDP&lt;/code&gt; and &lt;code&gt;VNC&lt;/code&gt; as protocols. &lt;code&gt;SSH (Secure Shell)&lt;/code&gt; is a secure remote connection protocol.&lt;code&gt;RDP (Remote Desktop Protocol)&lt;/code&gt; is a protocol developed by Microsoft that enables connection with the graphical interface of remote windows machines. &lt;code&gt;VNC (Virtual Network Connection)&lt;/code&gt; is a platform-independent, server-client architecture protocol that allows to manage applications on a graphical interface running on any network server with a remote connection. You can use any of the above tools for remote control.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Apache Guacomole&lt;/code&gt; is a little different. Because it has a client-less structure. After the installation on the server side, the connection can be established and managed via the web browser of any computer.&lt;/p&gt;

&lt;p&gt;You can use one of the advanced software mentioned above or other than these. But I will use a vnc application to be lightweight. The packages required on the server side are &lt;code&gt;i3&lt;/code&gt; and &lt;code&gt;xorg&lt;/code&gt;for Ubuntu server. Apt will automatically install the dependent packages. Firefox and vim can also be installed. These packages should also be installed in distributions such as Centos, SUSE, Arch. Package names may be different in the repository, but basically a graphical server driver and a window manager or desktop environment are needed.&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;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;xorg i3 firefox vim 


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

&lt;/div&gt;

&lt;p&gt;Then tightvncserver should be installed.&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;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;tightvncserver 


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

&lt;/div&gt;

&lt;p&gt;Then the server should be started with the vncserver command. At this stage, vnc password should be determined, if needed, password can be set for view-only mode.&lt;/p&gt;

&lt;p&gt;It gives each session an id and to kill the session;&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;vncserver &lt;span class="nt"&gt;-kill&lt;/span&gt; :session_number


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

&lt;/div&gt;

&lt;p&gt;Connection can be made by using any client application that supports vnc on the client side. realVNC or remmina etc. applications can be used.&lt;/p&gt;

&lt;p&gt;In order to have a secure connection, tunneling is done with ssh on the client side. 5900+N port is the default vnc port. Here N stands for the screen number. So more than one X session can be connected. &lt;strong&gt;Default port + session number&lt;/strong&gt; is to make it easier to manage.&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;ssh &lt;span class="nt"&gt;-L&lt;/span&gt; 5901:127.0.0.1:5091 &lt;span class="nt"&gt;-C&lt;/span&gt; &lt;span class="nt"&gt;-N&lt;/span&gt; &lt;span class="nt"&gt;-l&lt;/span&gt; username ip_addr


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

&lt;/div&gt;

&lt;p&gt;You can monitor whether the connection is established with netstat.(It may differ in some distros. For example, on Solus, the &lt;code&gt;ss&lt;/code&gt; command does the same job as netstat.)&lt;/p&gt;

&lt;p&gt;Then, it is sufficient to select the &lt;code&gt;VNC protocol&lt;/code&gt; on&lt;code&gt;Remmina&lt;/code&gt; and connect to the &lt;code&gt;localhost:5901&lt;/code&gt; port. Then the connection can be established with vnc password.&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%2Fmn2m7basujw3z1xhl8gv.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%2Fmn2m7basujw3z1xhl8gv.png" alt="connection via VNC-Remmina"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It offers an option to change the config file at first launch or to use it with its default settings.&lt;code&gt;Alt+enter&lt;/code&gt; is used to open terminal with default settings. &lt;code&gt;Alt+h&lt;/code&gt; can be used to split the new window's position vertically, &lt;code&gt;alt+v&lt;/code&gt; to split it horizontally. You can learn the usage information in detail from the user's guide on its web page or from the blogs. Below is a firefox browser, active processes and a terminal.&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%2Fw57yao2gekagopwcdcac.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%2Fw57yao2gekagopwcdcac.png" alt="I3 vm and ubuntu"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;vncserver&lt;/code&gt; can be made into a &lt;code&gt;systemd&lt;/code&gt; service. In this way, vnc session can be started at every system startup.&lt;/p&gt;

&lt;p&gt;It can be used in a lightweight "desktop environment" like xfce instead of a "window manager". You can integrate it by making some changes in the configuration settings…&lt;/p&gt;

</description>
      <category>devops</category>
      <category>linux</category>
      <category>productivity</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Create a systemd service for Flask API(for GNU/Linux distros)</title>
      <dc:creator>nuh yurduseven</dc:creator>
      <pubDate>Sun, 05 Dec 2021 12:49:16 +0000</pubDate>
      <link>https://dev.to/nuhyurdev/create-a-systemd-service-for-flask-apifor-gnulinux-distros-11cl</link>
      <guid>https://dev.to/nuhyurdev/create-a-systemd-service-for-flask-apifor-gnulinux-distros-11cl</guid>
      <description>&lt;p&gt;Hello… in this post, I want to show you something about a productivity trick in server side. I will talk about the systemd package on Linux systems, which will be used in the application development process or for custom.&lt;/p&gt;

&lt;p&gt;First of all, &lt;code&gt;systemd&lt;/code&gt; is a software package included in linux operating systems, according to Lennart Poettering… He is the author of the package software.&lt;/p&gt;

&lt;p&gt;It is created by the init process and takes 1 as the process id (pid). systemd services are started automatically and can be managed by root users. With the &lt;code&gt;sytemctl&lt;/code&gt; command, systemd services can be started (start) and stopped (stop), applications that have changed configuration files can be re-read and restarted (reload), the status of the process can be obtained (status), and its activation can be controlled after the system restarts ( enable/disable). For more information, see the manual page.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
 bash
$ man systemctl


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

&lt;/div&gt;

&lt;p&gt;&lt;code&gt;Flask microframework&lt;/code&gt; is a very easy-to-use framework software for creating simple APIs. To add it to your script file, it is sufficient to download the flask module with &lt;code&gt;pip3&lt;/code&gt; and include it on the page, and create an app object to create your routes. Then the script below can be used.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;

&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;flask&lt;/span&gt;
&lt;span class="n"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;flask&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Flask&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;__name__&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;DEBUG&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;

&lt;span class="nd"&gt;@app.route&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;/&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;methods&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;GET&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;function_one&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;&amp;lt;div style=&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s"&gt;   display: flex;justify-content: center;align-items: center;height: 100%;border: 3px solid green;  &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s"&gt; &amp;gt;&amp;lt;p&amp;gt;Hello sir, It seems to work properly.Here is&amp;lt;span style=&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s"&gt;font-size:50px; color:white; background-color:red&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s"&gt;&amp;gt; / &amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt; &amp;lt;/div&amp;gt;&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="nd"&gt;@app.route&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;/users&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;methods&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;GET&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;function_two&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;&amp;lt;div style=&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s"&gt;   display: flex;justify-content: center;align-items: center;height: 100%;border: 3px solid green;  &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s"&gt; &amp;gt;&amp;lt;p&amp;gt;Hello sir, It seems to work properly.Here is&amp;lt;span style=&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s"&gt;font-size:50px; color:white; background-color:green&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s"&gt;&amp;gt; /users&amp;lt;/span&amp;gt; &amp;lt;/p&amp;gt; &amp;lt;/div&amp;gt;&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="nd"&gt;@app.route&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;/products&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;methods&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;GET&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;function_three&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;&amp;lt;div style=&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s"&gt;   display: flex;justify-content: center;align-items: center;height: 100%;border: 3px solid green;  &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s"&gt; &amp;gt;&amp;lt;p&amp;gt;Hello sir, It seems to work properly.Here is&amp;lt;span style=&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s"&gt;font-size:50px; color:white; background-color:blue&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s"&gt;&amp;gt; /products &amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt; &amp;lt;/div&amp;gt;&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;


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

&lt;/div&gt;

&lt;p&gt;By default, it starts working on the &lt;code&gt;localhost:5000 port&lt;/code&gt;. To change port or host, you can give new host and port with &lt;code&gt;app.run(host='ip_addr',port='port' )&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;After the script is saved as app.py, it can be converted to a systemd service by writing the systemd service.&lt;/p&gt;

&lt;p&gt;When a flask application is run with python, it is raised on the "&lt;strong&gt;development server&lt;/strong&gt;". There are different options for the API to be raised in the "Production" environment. You can learn from the Flask manual page.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://flask.palletsprojects.com/en/1.1.x/deploying/" rel="noopener noreferrer"&gt;Check it out flask  Deployment options&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Depending on the operating system, &lt;code&gt;sudo vi /lib/systemd/system/myFlaskApp.service&lt;/code&gt; or  Let's open it in &lt;code&gt;nano&lt;/code&gt; editor. This path may differ depending on the distro. To find out where other services are, e.g. for mariadb service,&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;locate mariadb


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

&lt;/div&gt;

&lt;p&gt;If there is no output, use the &lt;code&gt;updatedb&lt;/code&gt; command and try again. services can also be found under &lt;code&gt;/usr/lib/systemd/system/…&lt;/code&gt; Or you can create such a directory under the &lt;code&gt;/usr&lt;/code&gt; directory.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/lib/systemd/system/myFlaskApp.service&lt;/code&gt; &lt;em&gt;=&amp;gt;&lt;/em&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;[&lt;/span&gt;Unit]
&lt;span class="nv"&gt;Description&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;My flask API service
&lt;span class="o"&gt;[&lt;/span&gt;Install]
&lt;span class="nv"&gt;WantedBy&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;multi-user.target
&lt;span class="o"&gt;[&lt;/span&gt;Service]
&lt;span class="nv"&gt;Type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;simple
&lt;span class="nv"&gt;User&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;your username
&lt;span class="nv"&gt;PermissionsStartOnly&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;true
&lt;/span&gt;&lt;span class="nv"&gt;ExecStart&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/usr/bin/python3 /your/path/app.py
&lt;span class="nv"&gt;Restart&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;on-failure
&lt;span class="nv"&gt;TimeoutSec&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;600 


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

&lt;/div&gt;

&lt;p&gt;Note: Here we set &lt;code&gt;Restart=on-failure&lt;/code&gt;. This indicates that we only want it to restart when the exit code is not 0. We can also add &lt;code&gt;Restart=always&lt;/code&gt; and &lt;code&gt;RestartSec=1&lt;/code&gt; lines instead. It makes it reboot in any case.&lt;br&gt;
You can add a config file with &lt;code&gt;sudo vi /etc/init/myFlaskApp.config&lt;/code&gt;.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

description &lt;span class="s2"&gt;"MyFlaskApp"&lt;/span&gt;
start on stopped rc &lt;span class="nv"&gt;RUNLEVEL&lt;/span&gt;&lt;span class="o"&gt;=[&lt;/span&gt;2345]
respawn
&lt;span class="nb"&gt;exec &lt;/span&gt;python3 /your/path/app.py


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

&lt;/div&gt;

&lt;p&gt;Then,&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;&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl start myFlaskApp



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

&lt;/div&gt;

&lt;p&gt;You can start the service with this command. Make sure it is in the &lt;code&gt;active(running)&lt;/code&gt; state with &lt;code&gt;systemctl status&lt;/code&gt;.&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%2F038na0pewlfp4qe86tgp.gif" 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%2F038na0pewlfp4qe86tgp.gif" alt="application gif"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This method can be useful for developments made on the cloud service, but it is recommended to use the &lt;code&gt;deployment&lt;/code&gt; options above in terms of both performance and manageability in the production environment.&lt;/p&gt;

&lt;p&gt;This service runs in the background without user intervention. It takes a &lt;code&gt;pid&lt;/code&gt; as can be seen with &lt;code&gt;sytemctl status&lt;/code&gt;. If a modular API structure is created and the route operation and other operations are isolated from each other, this method may be useful in situations where no modifications to this file are required. In this way, we can call it “life hacking”. To use something as the meaning of the word to improve a lifestyle other than its purpose…&lt;/p&gt;

&lt;p&gt;You can make processes like this or that don't need to be interfered with by your system as &lt;code&gt;systemd&lt;/code&gt; service and control them with &lt;code&gt;systemctl&lt;/code&gt;.&lt;/p&gt;

</description>
      <category>python</category>
      <category>webdev</category>
      <category>linux</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Review of Data Science Platform Tools -KNIME Analytics Platform(Section 1)</title>
      <dc:creator>nuh yurduseven</dc:creator>
      <pubDate>Sun, 31 Oct 2021 20:24:25 +0000</pubDate>
      <link>https://dev.to/nuhyurdev/data-science-tools-kime-analyticsection-1-160</link>
      <guid>https://dev.to/nuhyurdev/data-science-tools-kime-analyticsection-1-160</guid>
      <description>&lt;p&gt;Hello, In the first article of the series, where I examined the data science software that I decided to be a series and I will support it with applications, the installation of the KNIME application, which is written in Java and built on Eclipse, and which can prepare data science and artificial intelligence applications with workflow-style visual programming, its configuration on widely used GNU/linux systems. and I will review its usage with a machine learning application. I plan to save the application I prepared and share it in a github repo.&lt;/p&gt;

&lt;h2&gt;
  
  
  KNIME
&lt;/h2&gt;

&lt;p&gt;KNIME Analytics is a data science environment written in Java. This software allows visual programming in the form of a workflow using various nodes and is an application that allows to develop a data mining application even without knowing advanced coding. It has a very diverse and rich plugin center and is used quite often in academia as well. It is an extensible data science platform where user-created scripts and codes can be used as well as visual programming. KNIME is cross-platform software that supports installation on many operating systems. You can click &lt;a href="https://www.knime.com/downloads"&gt;link&lt;/a&gt; to download. In this article, I will review KNIME for GNU/Linux distributions only.&lt;/p&gt;

&lt;h2&gt;
  
  
  Configuration
&lt;/h2&gt;

&lt;p&gt;You can extract the &lt;code&gt;tar.gz&lt;/code&gt; archive of the KNIME application to the desired location.&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;&lt;span class="nb"&gt;tar &lt;/span&gt;xvf knime-analytic-?.?.?.tar.gz &lt;span class="nt"&gt;-C&lt;/span&gt; /opt/knime 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;All libraries and plugins of KNIME are available in the directory. There is a binary file named &lt;code&gt;Knime&lt;/code&gt; and you can start the application using it. But it needs &lt;code&gt;java&lt;/code&gt; to work.&lt;/p&gt;

&lt;h3&gt;
  
  
  JAVA 11
&lt;/h3&gt;

&lt;p&gt;KNIME Analytics works with Java 11 and higher. For this reason, you can install one of the &lt;code&gt;openjdk-11&lt;/code&gt; or &lt;code&gt;openjdk-latest&lt;/code&gt; packages for KNIME. Depending on the distribution you use, you can easily download and install these jdks from the main repository. &lt;/p&gt;

&lt;p&gt;For example, for RHEL based ones;&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;&lt;span class="nb"&gt;sudo &lt;/span&gt;dnf/yum &lt;span class="nb"&gt;install &lt;/span&gt;java-11-openjdk &lt;span class="c"&gt;# or java-latest-openjdk &lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or Debian based ones;&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;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;openjdk-11-jdk &lt;span class="c"&gt;# or default-jre &lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Another option I can suggest here is the libertica jdk versions published by Belsoft. These are opensource and freely distributed java jdk versions. You can download and install jdk with many options such as standard and full package. You can find installation scripts or archives &lt;a href="https://bell-sw.com/pages/downloads/#mn"&gt;on this page&lt;/a&gt; for many operating systems. For KNIME Analytics, standard jdk-11-lts is sufficient. For Linux, we need to download the tar.gz package and extract it to a directory. Then the &lt;code&gt;JAVA_HOME&lt;/code&gt; and &lt;code&gt;PATH&lt;/code&gt; variables are updated and the java installation is completed.&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;&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; ~/libertica-jdks
~&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;tar &lt;/span&gt;xvf /path/to/downloaded-jdk.tar.gz &lt;span class="nt"&gt;-C&lt;/span&gt; ~/libertica-jdks/

~&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;JAVA_HOME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;~/libertica-jdks/jdk-11.?.?
~&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;PATH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$PATH&lt;/span&gt;:JAVA_HOME/bin
&lt;span class="c"&gt;## after this&lt;/span&gt;
~&lt;span class="nv"&gt;$ &lt;/span&gt;java &lt;span class="nt"&gt;-version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;JDK is available in this session. If you want to use it in this location all the time, you should add the lines exported for JAVA_HOME and PATH to your &lt;code&gt;.bashrc&lt;/code&gt; or &lt;code&gt;.zshrc&lt;/code&gt; file if you are using zsh.&lt;/p&gt;

&lt;p&gt;After the Java installation, it is sufficient to go to the directory where knime is installed and run the &lt;code&gt;./knime&lt;/code&gt; script. If you have more than one jdk installed on your system, you can specifically give the path to jdk-11 with &lt;code&gt;./knime -v /path/to/jdk-11/bin&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;If you want to create a &lt;code&gt;dektop entry&lt;/code&gt; for this;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight viml"&gt;&lt;code&gt;&lt;span class="p"&gt;[&lt;/span&gt;Desktop Entry&lt;span class="p"&gt;]&lt;/span&gt;
Type&lt;span class="p"&gt;=&lt;/span&gt;Application
Name&lt;span class="p"&gt;=&lt;/span&gt;KNIME Analytic Platform
Description&lt;span class="p"&gt;=&lt;/span&gt;Data Science Environment
Exec&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="sr"&gt;/path/&lt;/span&gt;&lt;span class="k"&gt;to&lt;/span&gt;&lt;span class="sr"&gt;/knime-folder/&lt;/span&gt;knime_4&lt;span class="p"&gt;.&lt;/span&gt;?&lt;span class="p"&gt;.&lt;/span&gt;?/knime
Icon&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="sr"&gt;/rpath/&lt;/span&gt;&lt;span class="k"&gt;to&lt;/span&gt;&lt;span class="sr"&gt;/knime-folder/&lt;/span&gt;knime_4&lt;span class="p"&gt;.&lt;/span&gt;?&lt;span class="p"&gt;.&lt;/span&gt;?/&lt;span class="nb"&gt;icon&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;svg
Categories&lt;span class="p"&gt;=&lt;/span&gt;Development;Science;
&lt;span class="k"&gt;terminal&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;false
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can create a file named &lt;code&gt;~/.local/share/application/knime.desktop&lt;/code&gt; and save the entry to the relevant location.If you have problem with exec command. You can give a shell script that runs the ./knime script as a parameter in the &lt;code&gt;exec&lt;/code&gt; command. If you are using wayland as a display server, you may have problems in the application. For this reason, you can add the line &lt;code&gt;export GDK_BACKEND=x11&lt;/code&gt; to your configuration file &lt;code&gt;bashrc&lt;/code&gt; or &lt;code&gt;zshrc&lt;/code&gt; or whatever shell you are using, or inside your script file that starts KNIME. If you're already using x11 you won't have any problems.For example, the shell script that starts KNIME;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight viml"&gt;&lt;code&gt;#&lt;span class="sr"&gt;/bin/&lt;/span&gt;bash
&lt;span class="k"&gt;export&lt;/span&gt; GDK_BACKEND&lt;span class="p"&gt;=&lt;/span&gt;x11
&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="sr"&gt;/knime -v /&lt;/span&gt;&lt;span class="nb"&gt;path&lt;/span&gt;&lt;span class="sr"&gt;/to/&lt;/span&gt;java&lt;span class="p"&gt;-&lt;/span&gt;jdk&lt;span class="m"&gt;-11&lt;/span&gt;/&lt;span class="nb"&gt;bin&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;may form.&lt;/p&gt;

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

&lt;h3&gt;
  
  
  Extension installations
&lt;/h3&gt;

&lt;p&gt;The KNIME application had many extentions. The high number of users and its extensibility are the most important factors that bring it to the top among other data mining applications. You can open the interface by selecting &lt;code&gt;Install KNIME Extensions...&lt;/code&gt; from the &lt;code&gt;File&lt;/code&gt; menu in the application. You can install it by searching for the add-on you want. For example, you can install the &lt;code&gt;KNIME twitter connector&lt;/code&gt; plugin that should be used to connect to the Twitter API and pull data. It will be installed with the necessary dependency packages. The application will need to be restarted before it can read new plugins.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Gmhd9asz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gtp9jxcmsqnzrx673btk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Gmhd9asz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gtp9jxcmsqnzrx673btk.png" alt="knime-extentions" width="880" height="638"&gt;&lt;/a&gt;&lt;br&gt;
Then you can search for the node you want from the &lt;code&gt;Node Repository&lt;/code&gt; section and add it to your project.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GmG6vgj4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0ac4lvygghbpuu7wu7p8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GmG6vgj4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0ac4lvygghbpuu7wu7p8.png" alt="knime-twitter" width="402" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Machine Learning Application with KNIME
&lt;/h2&gt;

&lt;p&gt;In this section, a ready-made dataset will be used to prepare a machine learning application. A data mining workflow will be created with KNME nodes by using the dataset named &lt;code&gt;HCV Data Dataset&lt;/code&gt; in the &lt;code&gt;UCI Machine Learning Repository&lt;/code&gt;. The project is created with &lt;code&gt;new project&lt;/code&gt; from the &lt;code&gt;File&lt;/code&gt; menu. &lt;code&gt;Node Repository&lt;/code&gt;&lt;br&gt;
I add my file to the project by searching &lt;code&gt;file reader&lt;/code&gt; or &lt;code&gt;csv reader&lt;/code&gt; from the section. Similarly, I search for the transactions I want to do in the &lt;code&gt;Node Repository&lt;/code&gt; and add them to my project and run them, and at the end of each operation, I give the output as the input of the next node.&lt;/p&gt;

&lt;p&gt;When I right-click on the nodes, I configure the operation and then run it. When I right-click again, I can see the output of the node as a result of the operation under the menu. The &lt;code&gt;Normalize&lt;/code&gt; node below outputs the normalized table and model.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ljOE-bat--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/02n01ux1z0vce0lakmub.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ljOE-bat--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/02n01ux1z0vce0lakmub.png" alt="knime-menu" width="880" height="471"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The operations performed in this application can be seen as follows.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mLNkGisa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yqpce7ybuaynkk5089gm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mLNkGisa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yqpce7ybuaynkk5089gm.png" alt="application" width="880" height="455"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the application, the data in the csv file was first read with the &lt;code&gt;csv reader&lt;/code&gt; node and the categorical values ​​such as &lt;code&gt;sex&lt;/code&gt; were given to the &lt;code&gt;category to number&lt;/code&gt; node to be converted into numbers. The output of this node is given to the &lt;code&gt;column filter&lt;/code&gt; node to extract the Id and categorical gender values. The output dataset is given to the &lt;code&gt;Normalize&lt;/code&gt; node. The dataset with 0-1 normalization was given to the &lt;code&gt;Partitioning&lt;/code&gt; node to be divided into 70% training and 30% testing. A model was created by giving the training dataset from the parts to the &lt;code&gt;RProp MLP Learner&lt;/code&gt; node. This model and test dataset was tested by giving it to the &lt;code&gt;MultiLayerPerceptron Predicter&lt;/code&gt; node. And the output of the node has been transformed into a table with the comparison matrix and score values ​​related to the performance in the &lt;code&gt;Scorer&lt;/code&gt; node.&lt;/p&gt;

&lt;p&gt;When our perceptron model was tested with 1 hidden layer and 10 neurons, it was seen that our comparison matrix and performance values, respectively;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--wrXzgImU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sam3yial1qgt5xoufrbb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wrXzgImU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sam3yial1qgt5xoufrbb.png" alt="knime-confusion" width="478" height="129"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--tK4lRBMT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/b2zaxm0wzmbmcdbcvobh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tK4lRBMT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/b2zaxm0wzmbmcdbcvobh.png" alt="knime-score" width="880" height="124"&gt;&lt;/a&gt;&lt;br&gt;
It seems to be a very successful model, here the dataset was not raw data. The performance of the data preprocessing on the data set was 98% accuracy. Preprocessing is definitely a important factor for model performance. If you create a model with the raw data set, you can see that you cannot achieve a high success.&lt;/p&gt;

&lt;p&gt;Due to the preprocessing of this dataset;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;reviewed with R&lt;/li&gt;
&lt;li&gt;Sample dataset review with Smote&lt;/li&gt;
&lt;li&gt;Outlier cleaning with R boxplot&lt;/li&gt;
&lt;li&gt;Second time dataset with SMOTE balancing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can find this project and its dataset in the repo in the link.&lt;/p&gt;

&lt;h2&gt;
  
  
  Resources and project
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/noaahhh/Data-Science-Flow-Code"&gt;github repo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://archive.ics.uci.edu/ml/datasets/HCV+data"&gt;HCV data dataset&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>knime</category>
      <category>datascience</category>
      <category>ai</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>How to make a static web sites using Hugo-Github Page</title>
      <dc:creator>nuh yurduseven</dc:creator>
      <pubDate>Sat, 25 Sep 2021 18:38:59 +0000</pubDate>
      <link>https://dev.to/nuhyurdev/creating-static-web-sites-using-hugo-4f1k</link>
      <guid>https://dev.to/nuhyurdev/creating-static-web-sites-using-hugo-4f1k</guid>
      <description>&lt;p&gt;Hello, In this article, I will cover creating simple static websites with hugo, a static website creation tool written in golang, hosting and publishing them on github. For this, I plan to prepare two different websites and use different third-party web services that will be useful to us while preparing them. First of all, I will talk about the use of hugo and then I will continue by creating a simple website.&lt;/p&gt;

&lt;h3&gt;
  
  
  Hugo
&lt;/h3&gt;

&lt;p&gt;Hugo is a static web-site generator written in Go. This framework can quickly create a static website with terminal commands, thanks to a freely installed and available CLI tool. It also has different deployment options. In the hosting and deployment section of the &lt;a href="https://gohugo.io" rel="noopener noreferrer"&gt;gohugo.io&lt;/a&gt; site, it is explained how the website can be hosted on different web hosting platforms. But in this article, I will build a website that will be hosted on github and run in the domain username.github.io.&lt;/p&gt;

&lt;p&gt;To download the framework and for a quick start, you can go to &lt;a href="https://gohugo.io" rel="noopener noreferrer"&gt;gohugo.io&lt;/a&gt; to install it on your system and start right away. If you are using a GNU distribution, the package is probably in your repository. On ubuntu and debian repositories hugo can be installed with;&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;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;hugo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;On Fedora repositories hugo can be installed with;&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;&lt;span class="nb"&gt;sudo &lt;/span&gt;dnf &lt;span class="nb"&gt;install &lt;/span&gt;hugo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In hugo official website, it recommends installation with homebrew for both linux and mac. You can use the code below for Homebrew installation;&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;/bin/bash &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then you can install hugo on your system with &lt;strong&gt;brew install hugo&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;After the installation, You can create a new web site with&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;hugo new site /path/to/your/site
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;on terminal.The file hierarchy is as follows. The config.toml file is the file that allows us to configure the website.&lt;br&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%2F4ws2y18eyxou4v7pl5dc.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%2F4ws2y18eyxou4v7pl5dc.png" alt="tree-hugo"&gt;&lt;/a&gt;&lt;br&gt;
Now, this will open a blank page. Because there is no file in the layout.&lt;br&gt;
You can clone one or more themes by selecting them from &lt;a href="https://themes.gohugo.io" rel="noopener noreferrer"&gt;gohugo.io/themes&lt;/a&gt; and using git into the themes directory. using  &lt;strong&gt;hugo new content/new_article.md&lt;/strong&gt; it can be used to create a new content.&lt;/p&gt;

&lt;p&gt;The website will start working on local server 1331 port with&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;hugo server 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you want to take your experience further, you can create your own design by using the template tutorial on gohugo.io. But in this article, I will only create web pages using ready-made templates.&lt;/p&gt;

&lt;h3&gt;
  
  
  Creating a Static Portfolio Page
&lt;/h3&gt;

&lt;p&gt;Portfolio pages are one of the best examples of static pages. These are the types of pages where the works done are exhibited and other accounts or communication e-mails are given as links. To create it, I first need to clone it with git by selecting from the portfolio themes listed on the &lt;a href="https://themes.gohugo.io" rel="noopener noreferrer"&gt;themes.gohugo.io&lt;/a&gt; page. I choose the theme named hugo-shell-theme. One of the reasons why I prefer it is that it has a very simple structure. I will make my first attempt using this theme.&lt;br&gt;
I'm clonnig the theme into themes directory with&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;git init 
&lt;span class="nv"&gt;$ &lt;/span&gt;git submodule add https://github.com/Yukuro/hugo-theme-shell.git themes/hugo-theme-shell
&lt;span class="nv"&gt;$ &lt;/span&gt;hugo server &lt;span class="nt"&gt;-t&lt;/span&gt; hugo-theme-shell &lt;span class="nt"&gt;-w&lt;/span&gt; &lt;span class="nt"&gt;-D&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and starting the hugo server.It is currently running on the local server, but without any configuration. for this, I copy the content of the config.toml given on the github page of the theme and paste it into my config file in the directory. Below is the config file where I changed some parts and deleted the comment lines. I preferred powershell as shema.&lt;br&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%2Fhq3fs9y4koa2k80f59ki.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%2Fhq3fs9y4koa2k80f59ki.png" alt="config"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It gives me an output like this:&lt;br&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%2Fl5g8sjoilkgpcnsv7r5s.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%2Fl5g8sjoilkgpcnsv7r5s.png" alt="powershell"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For a better use, you can try to use a markdown file in the description. For example, you can find the portfolio website I use at &lt;a href="https://noaahhh.github.io" rel="noopener noreferrer"&gt;noaahhh.github.io&lt;/a&gt;.&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%2Fzv1txnv5movgxcd62v9i.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%2Fzv1txnv5movgxcd62v9i.png" alt="portfolio"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For Markdown usage, a description.md created in content is given to the description section of the config file.&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;description&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/description.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then you can fill out whatever you want. If you go to the code side, you can see how it takes the parameters from the config file between the html tags.&lt;/p&gt;

&lt;p&gt;Likewise, now I'm cloning the hugo-profile theme into the themes directory with git. This theme uses config.yml with .yaml extension as config file. I copy one of the 3 different yaml files (v1.yml) in the theme directory to my root directory as config.yml. And content of the website directory  must be copied root directory. Our website is using the new theme on the local server after the command 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;hugo server &lt;span class="nt"&gt;-t&lt;/span&gt; hugo-profile &lt;span class="nt"&gt;-w&lt;/span&gt; &lt;span class="nt"&gt;-D&lt;/span&gt; &lt;span class="nt"&gt;--config&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;config.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2F1lu9h55p9ser08a2b09w.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%2F1lu9h55p9ser08a2b09w.png" alt="blog"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this theme, you can also create your personal website by changing the parameters in the config file. In the following sections, I will talk about a more user-experience-oriented method.&lt;/p&gt;

&lt;h3&gt;
  
  
  e-commerce and product presentation pages
&lt;/h3&gt;

&lt;p&gt;In this section I will try the Hero theme. Hero has a familiar type of company landing page and a clean interface. That's why I chose this theme. I'm creating a new website with Hugo. Then I clone this theme with git into the theme directory. There is a directory named example-site in the theme. This directory contains a pre-configured toml file and a ready-made website. I copy the contents of this directory to my home directory. Then I open my config file with an editor and delete the themesDir parameter. Then I can run hugo server and watch my website from localhost port 1313.&lt;/p&gt;

&lt;p&gt;I've added an image below listing the terminal operations performed. You can check.&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%2Fmno2yd55802n6tmrj1xy.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%2Fmno2yd55802n6tmrj1xy.png" alt="terminal-hero"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This way you can create websites to promote products or for a company portfolio.&lt;br&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%2F6fpcgiembwgtpac3vywa.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%2F6fpcgiembwgtpac3vywa.png" alt="e-commerce"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Github Pages
&lt;/h3&gt;

&lt;p&gt;There are multiple options for hosting a website built with Hugo. You can see the host and deployment options from the Hosting&amp;amp;Deployment link. We can host our website with services such as github, gitlab, netlify firebase. In the Github option, you can access the page we created via the username.github.io domain. In this application I will work on github.&lt;/p&gt;

&lt;p&gt;We can publish our portfolio site, one of the websites we have prepared so far, on our own github domain. For this, we go to the directory where our portfolio website is located and create our website with the hugo command in this directory. A public file will be created in the directory and there will be our website using html to be published in this directory. If we submit it to our git repo within this directory we can publish our website using Pages there. We go to the Github page and open a repo named username.github.io.&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%2F6ma4i6s8j81230xp2q6z.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%2F6ma4i6s8j81230xp2q6z.png" alt="diagram-1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We are connecting the public directory created according to the diagram above to our relevant git repo.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;myHugoSite &lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;public
public/ &lt;span class="nv"&gt;$ &lt;/span&gt;git init 
public/ &lt;span class="nv"&gt;$ &lt;/span&gt;git remote add origin https://github.com/username/username.github.io.git
public/ &lt;span class="nv"&gt;$ &lt;/span&gt;git remote set-url origin http://&amp;lt;public-access-key&amp;gt;@github.com/username/username.github.io
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After the last changes, to connect to our git repo, you should create a key by following the github-&amp;gt;settings-&amp;gt;developer Settings-&amp;gt;Personal Access Key path and paste this key in the relevant section in the last command to link our repo.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;public/ &lt;span class="nv"&gt;$ &lt;/span&gt;git add &lt;span class="nb"&gt;.&lt;/span&gt;
public/ &lt;span class="nv"&gt;$ &lt;/span&gt;git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"initial commit"&lt;/span&gt;
public/ &lt;span class="nv"&gt;$ &lt;/span&gt;git push origin main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then we can wait for it to be published from the setting-&amp;gt; Pages section in our repo. Our site will be published from the relevant url.&lt;br&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%2Fe378u4nnqp7r9tsc4l95.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%2Fe378u4nnqp7r9tsc4l95.png" alt="gh-pages-1"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Different architecture for GitHub
&lt;/h3&gt;

&lt;p&gt;If we want to publish our website over a subdomain with the same name as the repo, we can open a new repo and send the files in the public to this repo and publish it. If we examine the diagram below, we can create a website in our local system and keep this site on github. We can create a submodule link from another git repo in the "themes" directory. We can publish our files to be published with &lt;strong&gt;Github Pages&lt;/strong&gt; by sending them to a new repo using the subdomain name to be published. &lt;br&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%2F5d892vgtptpi9ysgvjnd.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%2F5d892vgtptpi9ysgvjnd.png" alt="diagram-2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can create a submodule with&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;mySite/ &lt;span class="nv"&gt;$ &lt;/span&gt;git submodule add http://github.com/Yukuro/hugo-theme-shell.git themes/hugo-theme-shell
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;mySite/ &lt;span class="nv"&gt;$ &lt;/span&gt;hugo &lt;span class="nt"&gt;-d&lt;/span&gt; ../myPortfolio
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We can create html files in a directory called myPortfolio, which is in the same directory as our hugo website using like the command above.Then we can link this directory to the github repo and publish our website on a subdomain with the same name as the repo.&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%2Frgcymdrq540mxbbqrwbl.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%2Frgcymdrq540mxbbqrwbl.png" alt="gh-pages-2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Hugo and Forestry.io
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://forestry.io" rel="noopener noreferrer"&gt;Forestry.io&lt;/a&gt; is a web service that makes it easy to manage the contents of our website on github using a graphical interface. This service is a CMS tool that works with frameworks such as hugo, jeykll. Content entry in personal blogs can be done easily. You can get more detailed information on the page.&lt;br&gt;
It has a simple use. We just have to register for the service and then create a new registration with add site in the "My Sites" section and select Hugo as the "static site generator".&lt;br&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%2Fd58pi3d0todtzinp5c4f.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%2Fd58pi3d0todtzinp5c4f.png" alt="forestry.io"&gt;&lt;/a&gt;&lt;br&gt;
And then we connect our repo with the forestry.io service by choosing git provider.&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%2Fedx8zgvzj297fu8ozvtg.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%2Fedx8zgvzj297fu8ozvtg.png" alt="cms-welcome"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then we can prepare our posts in the blog in the document types we choose.&lt;br&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%2Fh8kaj10fqi2mywnpha5m.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%2Fh8kaj10fqi2mywnpha5m.png" alt="edit-blog"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Apart from this, there are many CMS applications that work with Hugo. Cloudcannon, strapi.io, netlifyCMS can be given as examples. These are the systems we can use to organize our content between host and deployment.&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%2F7gaw9p3nfb583de0bfl3.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%2F7gaw9p3nfb583de0bfl3.png" alt="diagram-3"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The loop in the diagram represents the CMS service. With CMS services, operations such as content creation and editing can be done before deployment. By connecting with services such as AWS, Netlify, content editing can be done between the git provider and the deploymet service. And at the same time it provides synchronization with the website maintained in git.&lt;/p&gt;

</description>
      <category>hugo</category>
      <category>webdev</category>
      <category>go</category>
      <category>portfolio</category>
    </item>
    <item>
      <title>This is my basic portfolio designed with hugo</title>
      <dc:creator>nuh yurduseven</dc:creator>
      <pubDate>Fri, 10 Sep 2021 17:22:24 +0000</pubDate>
      <link>https://dev.to/nuhyurdev/this-is-my-basic-portfolio-designed-with-hugo-4h6e</link>
      <guid>https://dev.to/nuhyurdev/this-is-my-basic-portfolio-designed-with-hugo-4h6e</guid>
      <description>&lt;p&gt;Hi, I created a simple portfolio page using Hugo and hugo-theme-shell. This is quite simple and very attractive according to me. I am interested in all about operating system because of this reason I prefered to design like shell. This is very simple form, I am going to develope the site. You can click the &lt;a href="https://noaahhh.github.io"&gt;link&lt;/a&gt; if you want to check it out. What are your thoughts? Please write below.&lt;/p&gt;

</description>
      <category>hugo</category>
      <category>go</category>
      <category>portfolio</category>
      <category>webdev</category>
    </item>
    <item>
      <title>How to create cold storage wallet using usb memory stick</title>
      <dc:creator>nuh yurduseven</dc:creator>
      <pubDate>Wed, 08 Sep 2021 18:42:20 +0000</pubDate>
      <link>https://dev.to/nuhyurdev/how-to-create-cold-storage-wallet-using-usb-memory-stick-4dcd</link>
      <guid>https://dev.to/nuhyurdev/how-to-create-cold-storage-wallet-using-usb-memory-stick-4dcd</guid>
      <description>&lt;p&gt;Hi, today I'm  gonna teach you how to create a cold-storage wallet for bitcoin or other crypto-coins using usb memory and tails.&lt;/p&gt;

&lt;p&gt;Tails, an operating system based on Debian and providing anonymity by routing all network traffic through Tor, will be used as the operating system. We will examine what features are available in some security-oriented distributions.&lt;br&gt;
Let's dive the content.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cold-wallets vs Hot-wallets
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Cold wallets&lt;/strong&gt; are a type of wallet that is used to store your private key and other information on hardware that does not have an internet connection. As another type, paper wallets can also be considered as cold wallets. Here, only the private key and the information that will enable us to reach the total balance in the blockchain are available. Examples of hardware wallets are &lt;strong&gt;ledger&lt;/strong&gt; and &lt;strong&gt;trazor&lt;/strong&gt;. These are electronic devices similar to USB sticks that are configured to generate public and private keys and are used to store keys with the highest level of security. It can be ordered and used within a certain fee. On the other hand,hot wallets are the type of wallet where the private key you will use to access your account on the internet is stored in a cloud-based wallet. This one is more insecure than the other but faster. Security in these types of wallets depends on measures taken by the provider of the wallet application, such as two-factor authentication. On the other hand, the security of the provider database also depends on the security measures that the wallet provider can take. This service, offered by many crypto exchanges, makes it easy to use money.&lt;/p&gt;

&lt;p&gt;It's good to say it again. Cryptocurrency is not a phenomenon that is stored like physical money. The amount transferred from one account to the other account is recorded in the blocks in the data structure, which is in the form of an interconnected list called Blockchain, and is added to the end of the block as a result of the transactions related to the operation of the blockcahin network. In other words, this database does not have an architecture where the amount of money and other information of any account is kept in an object as in banks. For this reason, crypto money cannot be stored in any hardware. The entire blockchain can be downloaded to disk by downloading the bitcoin core for bitcoin. This is the safest method. But as of August 4, 2021, the chain size is 349.3 GB. For this reason, this method is not preferred except bitcoin miners.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tails
&lt;/h3&gt;

&lt;p&gt;Tails is a GNU/Linux distribution with Debian-based security customizations. This system is often used by cybersecurity professionals as a portable and secure operating system. In the crypto world, many people use this method to access and manage their money on the blockchain. You can click the &lt;a href="https://tails.boum.org/install/" rel="noopener noreferrer"&gt;link&lt;/a&gt; below to download Tails.&lt;/p&gt;

&lt;p&gt;Tails operating system is configured to be more of a portable system. The Internet connection can be routed through the Tor network. At the same time, the system can be "persistent" so that the files can be saved to the USB memory, and this section is encrypted to provide security. It should be noted that using the Tor network does not provide complete protection and complete invisibility. This is one of the common mistakes made by groups called “Lamer” or “Script Kiddie” in cyber security. Every system running on the Internet may have a security vulnerability. That's why it's still good to be careful. However, I believe that it can be quite useful as a cold wallet if used carefully.&lt;/p&gt;

&lt;h3&gt;
  
  
  Installation on usb stick
&lt;/h3&gt;

&lt;p&gt;After the iso is downloaded, the iso can be written to a usb stick. You can use dd or etcher or any of the rufus software for this. Then the system is started via USB memory. At the first boot, the basic language-keyboard settings are taken and configured and the live system is started in this way.&lt;br&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%2Fhpy74g6xv6woeeio72tv.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%2Fhpy74g6xv6woeeio72tv.png" alt="tails welcome"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The method I use will be to create a kvm-qemu virtual machine on the host I use, and select and add the USB memory connected to the host machine with the virt-manager visual interface from the hardware list and start it from the boot menu on this device. Installation in a virtual machine is not recommended by tails. You can even detect that tails is running on the virtual machine and you will see a warning message. However, there will be no harm in doing the first installation in this way.&lt;br&gt;
The system works on usb but is still a live system.&lt;/p&gt;

&lt;h3&gt;
  
  
  Make persistent and encryption
&lt;/h3&gt;

&lt;p&gt;For this feature, it can be used by encrypting the part that the system does not fill on the usb memory with the configure persistent volume option from the application menu. This section can be used with this password when you set a password and start the new system, but you can use this section as a live system without opening it.&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%2F3nydgwfw3ewg84qpxcf3.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%2F3nydgwfw3ewg84qpxcf3.png" alt="encryption"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Cold-wallet configuration
&lt;/h3&gt;

&lt;p&gt;Tails comes with electrum bitcoin wallet installed. To use this wallet, the Bitcoin client must be activated from the configuration persistent volume application, so that the configurations and other data of this application can be saved in the persistent partition. A reboot is then required.&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%2Fcl7c9fc8t62onhxv3q49.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%2Fcl7c9fc8t62onhxv3q49.png" alt="electrum-persistent"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The necessary configurations can now be made by opening the Electrum wallet.&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%2Frulam2gtqftw9g8oykof.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%2Frulam2gtqftw9g8oykof.png" alt="electrum-1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Electrum wallet is a very common wallet application. It can be installed on any machine, but in this way it will provide a safer use. First, the wallet must be given a name.&lt;br&gt;
Many options are available in the next menu. If you have a standard, 2-factor authentication, multi-signature or previously prepared wallet, you can import it.&lt;br&gt;
I will create a standart wallet. &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%2F8wlxc0ibtvyxhe6cx0cb.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%2F8wlxc0ibtvyxhe6cx0cb.png" alt="electrum-2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the next option, it is necessary to create a new seed. This is an algorithm that generates the private key. It generates a list of 12 words and this list represents your private key for you. You must record these words in order.&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%2Fsypzdgr3ewjfahalgao7.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%2Fsypzdgr3ewjfahalgao7.png" alt="electrum-3"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Do not share these words with anyone&lt;/strong&gt;
&lt;/h4&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%2Fnkn9g7pifjj4r5fyq9uc.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%2Fnkn9g7pifjj4r5fyq9uc.png" alt="electrum-4"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the next step, it asks you to enter these words in order. It then asks you for a password to re-encrypt your wallet.&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%2F2yhptdtnhvn0lzguasbm.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%2F2yhptdtnhvn0lzguasbm.png" alt="electrum-5"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can see the public key and other information of the wallet from the "Wallet information" tab.&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%2F056fzxuf8avl6ws7utcl.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%2F056fzxuf8avl6ws7utcl.png" alt="electrum-wallet"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now you can start using…&lt;br&gt;
It is necessary to use different wallets for other cryptocurrencies and tokens. For this, you can download and download different wallets and install them on the system.&lt;/p&gt;

&lt;h3&gt;
  
  
  Other security orianted GNU/Linux OS
&lt;/h3&gt;

&lt;p&gt;Linux Kodachi is also a tails-like system but is a newer distribution. It routes network traffic through VPN and Tor. It can be installed on USB memory or DVD. Likewise, this is a Debian-based distribution.&lt;/p&gt;

&lt;p&gt;Whonix is ​​an operating system with a Debian-based Tor network and a security architecture based on isolation. Whonix consists of two parts: One runs only Tor and acts as a gateway, called the Whonix-Gateway. The other part, called Whonix-Workstation, is on a completely isolated network. Only connections through Tor are possible. It is one of the recommended distributions in the Cubes system. Security is provided by increasing isolation with virtualization on the Xen kernel.&lt;/p&gt;

&lt;p&gt;Some distributions such as Kali, Black Arch and Parrot are distributions where the test tools needed for offensive and defensive security are collected. These come pre-loaded with many tools such as metasploit where known exploits are collected, medusa which is a brute force tool, nmap for network scanning, wireshark and sqlninja.&lt;/p&gt;

</description>
      <category>linux</category>
      <category>productivity</category>
    </item>
    <item>
      <title>How to create a portable BSD-nomadBSD</title>
      <dc:creator>nuh yurduseven</dc:creator>
      <pubDate>Wed, 08 Sep 2021 08:29:18 +0000</pubDate>
      <link>https://dev.to/nuhyurdev/how-to-create-a-portable-bsd-nomadbsd-547f</link>
      <guid>https://dev.to/nuhyurdev/how-to-create-a-portable-bsd-nomadbsd-547f</guid>
      <description>&lt;p&gt;Hi, in this article, I am going to create a portable bsd operating system, nomadBSD. It's quite useful and have a simple usage. Let's dive the content.&lt;/p&gt;

&lt;p&gt;BSD is a high dimensional system. FreeBSD uses about 40GB while noamdBSD needs about 5GB or more in workspace.This system is also based on FreeBSD,however, as a result of improvements and changes, nomadBSD, a portable "persistent" and low-size bsd distribution, has emerged. &lt;/p&gt;

&lt;h3&gt;
  
  
  BSD and derivatives
&lt;/h3&gt;

&lt;p&gt;BSD, or Berkeley Software Distribution, is a plug-in chain created by the University of California for AT&amp;amp;T's unix. Derivatives such as FreeBSD, OpenBSD, NetBSD, DragonFlyBSD refer to unix-like operating systems. These systems are licensed systems and their license is referred to as a BSD license in the literature.These are complex operating systems  such as GNU/linux distributions.The most popular BSD distribution is FreeBSD, and many BSD distributions are based on this distribution. BSD operating systems are extremely powerful and are the operating systems that power many servers.It is stated that BSD operating systems are more performant and in most cases noticeably faster than GNU/Linux distributions. In addition, since it is much older than the Linux kernel, it offers a more stable user experience. Although the development speed is slower, the control of the code by a single architect at the top is the most important factor that ensures the stable operation of the code.In many GNU/linux distributions the code in the master branch is not controlled by one person and many people can change the code. BSD systems can also use linux packages or window managers familiar from GNU/linux distributions. For this reason, there may be many more software packages available on BSDs.&lt;/p&gt;

&lt;h3&gt;
  
  
  installing &amp;amp; configuration nomadBSD
&lt;/h3&gt;

&lt;p&gt;nomadBSD is a minimal operating system that can be used as a live-system, "persistent" and ready to use directly with installation, automatically detecting hardware. 1.2GHz CPU speed and 1G of RAM are recommended as basic requirements. Although it is not very performance for usb-2.0, it can be used much more easily with usb-3.0 and above technologies. It was a very pale expectation to expect performance from an operating system that is already persistent and carried on usb. You can boot by selecting your own USB from the boot menu of any machine, and the operating system recognizes the hardware and initiates the system boot process.&lt;/p&gt;

&lt;p&gt;You can download the system using the &lt;a href="https://nomadbsd.org/download.html" rel="noopener noreferrer"&gt;link&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Here, it is explained how to open the archive and how to write the image to the USB memory according to different operating systems. It can simply be written to a usb stick using the &lt;strong&gt;dd&lt;/strong&gt; tool on any operating system.&lt;/p&gt;

&lt;p&gt;Then you can customize the system with the setup wizard and install it on the usb. Disk encryption feature can be activated optionally during installation. During boot, it waits for you to enter the password you set to connect the disk and continues the boot process after matching.The system is a persistent system. At the first startup, the installation takes place with the installation wizard, and when the system is restarted, many software that may be needed for daily use such as browser, text-editor, ftp client, a simple code editor, mail client will appear pre-installed.Since the system is based on freeBSD, the package manager is pkg. With this command, the system can be updated, the desired package can be installed and removed. The system uses Openbox as the window manager. The lightness and speed of this system is a chosen detail.In addition, as seen here, window managers or desktop environments used in linux systems can also work with BSD. When you want to install FreeBSD, you can install without a window manager, then you can install desktop environments such as xfce4, kde, gnome in the pkg repo.&lt;/p&gt;

&lt;h3&gt;
  
  
  Installation and review on Oracle Virtualbox
&lt;/h3&gt;

&lt;p&gt;If you want to use it by creating a virtual machine on Oracle VirtualBox, there is a dedicated section in the NomadBSD manual for this. img extension archive is converted into a virtual disk with vdi extension with &lt;strong&gt;VBoxManager&lt;/strong&gt;.&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;VBoxManage convertfromraw nomadbsd-130R-20210508.amd64.img &lt;span class="se"&gt;\ &lt;/span&gt;
nomadbsd.vdi &lt;span class="nt"&gt;--format&lt;/span&gt; VDI
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then the disk size can be adjusted again with the same tool.&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;VBoxManage modifyhd nomadbsd.vdi &lt;span class="nt"&gt;--resize&lt;/span&gt; 10000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then, after creating a new machine on VirtualBox and making the necessary system settings, this vdi virtual hard disk can be connected to the machine.&lt;br&gt;
At the first startup, the installation wizard welcomes us. Nothing is visible except the wizard.Do not close the window. otherwise you may have to restart the system. &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%2F7y9039papuxzh7r5qnuc.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%2F7y9039papuxzh7r5qnuc.png" alt="nomadBSD installer wizard"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Language and keyboard layout selection is made. It prompts again to add a second keyboard layout. You can skip adding.&lt;br&gt;
After the timezone selection, the root password is determined. Username is preset as nomad.&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%2Foyek3limwkctyf52r326.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%2Foyek3limwkctyf52r326.png" alt="Geli disk encryption"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can encrypt the disk with the block encryption option with Geli. You need to set a password for this. This password is used before connecting the disk during boot.&lt;/p&gt;

&lt;p&gt;Then the applications and shell to be used by default are selected. In summary, the actions to be taken are examined and the system setup is started by pressing the "Commit" button. The installation process is completed quickly. When we restart, boot is started by selecting multiple users.&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%2Fvzluf3h3byq8ye6r8ijg.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%2Fvzluf3h3byq8ye6r8ijg.png" alt="encryption passsword"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Geli password is entered for disk encryption and disk binding is performed.&lt;br&gt;
If you are using a USB memory stick after the system is turned on, you can make the network connection from the icon in the upper right.&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%2Fa739z14ojbidbgaadc9q.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%2Fa739z14ojbidbgaadc9q.png" alt="nomadBSD desktop"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Many packages that may be needed for daily use come preloaded. Many toolkits such as visual editor, office suite, mail client, a package manager with visual interface, firewall come pre-installed. You can install many packages with the pkg package manager. For example, &lt;strong&gt;neofetch&lt;/strong&gt; package was installed from &lt;strong&gt;pkg&lt;/strong&gt; package repositories below and &lt;strong&gt;dangereous&lt;/strong&gt; from &lt;strong&gt;ohmyfish&lt;/strong&gt; themes was used in fish shell.&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%2Fg6hf016x61r4fgcqjzmk.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%2Fg6hf016x61r4fgcqjzmk.png" alt="neofetch"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Like all BSD systems, this is a very similar system to the GNU/Linux distributions that the average linux user can easily get used to. The system is especially configured so that even beginner users can use it easily. For example, you can perform package update, deletion and installation operations with OctoPkg graphical package manager. Here you can uninstall apps that come pre-installed but you think you won't be using.&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%2Fc56mng1yp7qhm3nnsfyu.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%2Fc56mng1yp7qhm3nnsfyu.png" alt="OctoPkg manager"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To install linux packages on NomadBSD,&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;&lt;span class="nb"&gt;sudo&lt;/span&gt; &lt;span class="nt"&gt;-i&lt;/span&gt;
&lt;span class="nv"&gt;$ &lt;/span&gt;sysrc &lt;span class="nv"&gt;linux_enable&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;YES
&lt;span class="nv"&gt;$ &lt;/span&gt;service linux start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can use these commands on shell. Then you can install the linux packages in the pkg repository with the following command.&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%2Fqd01tcnfyxt2ye4l36yx.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%2Fqd01tcnfyxt2ye4l36yx.png" alt="linux-sublime"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Tools and databases such as Java, docker, vagrant, mongodb, elasticsearch are also available in freeBSD repositories. It can be easily installed using the pkg package manager. It is also possible to install this system on disk. But for me, a freeBSD installation would be much more convenient for a workstation or a personal desktop computer. This system is a stable and freeBSD-powered operating system designed as a lightweight alternative. For this reason, if heavy work needs to be done, a freeBSD desktop would be a more appropriate and less tiring choice.&lt;/p&gt;

&lt;p&gt;For those who want to switch to the BSD side with this distribution, I recommend that they start with GhostBSD first. They can then switch to FreeBSD and OpenBSD which is famous security-oriented operating system. This sorting will greatly reduce the feeling of unfamiliarity in the transition process.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Using multiple GNU/Linux at the same time-Bedrock Linux</title>
      <dc:creator>nuh yurduseven</dc:creator>
      <pubDate>Fri, 30 Jul 2021 12:55:47 +0000</pubDate>
      <link>https://dev.to/nuhyurdev/using-multiple-gnu-linux-at-the-same-time-bedrock-linux-3fj6</link>
      <guid>https://dev.to/nuhyurdev/using-multiple-gnu-linux-at-the-same-time-bedrock-linux-3fj6</guid>
      <description>&lt;p&gt;Hello, in this article, I will talk about Bedrock Linux, which is a daemon that allows to use software packages from more than one package manager, while also installing and using multiple distributions in layers. Although it is described as a separate Linux distribution, we can say that it is a daemon that connects the distributions installed to the root directory and then installed in layers, to the root directory. This is a system that allows to use multiple different software packages together with a very useful and customizable architecture.&lt;/p&gt;

&lt;p&gt;In order to understand this architecture, I will first talk about the linux system hierarchy. Next, I'll review the bedrock Linux hierarchy and simply explain how to install and use it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Linux System Hierarchy
&lt;/h3&gt;

&lt;p&gt;Linux is an operating system kernel with a Unix-like design. The kernel is designed by Linus Torvalds and is still developing it as open source. The latest kernel version is Linux 5.14. and available at the link. Linus Torvalds also owns the git project, a source code management and version control software. Named in 1991, this monolithic kernel is widely used in operating systems used by supercomputers, personal or mobile devices. For example, Android, Debian, RHEL(Red Hat Enterprise Linux), CentOS are examples of GNU/Linux distributions. Especially Debian and Debian-based distributions, RHEL and RHEL-based distributions are frequently used as server operating systems.&lt;br&gt;
Linux and Unix are monolithic kernels. Monolithic kernels occupy a larger area than microkernels. Essentially, operating systems using Monolithic kernels run all operating system functions in "kernel mode", that is, kernel space. Each process is in separate address spaces. Kernel and OS services are in the same address space. Processes can request service from the kernel. This creates a layer of security between the kernel and applications. It also provides high speed as there will be no message traffic. However, a change to the kernel requires recompilation and the kernel code can become quite complex. In systems using microkernel, "kernel mode" takes up less space. System services such as the file system, virtual memory manager, and CPU scheduler are in the "user mode" area on the kernel, and each has its own address space. Applications also have their own address space. Such cores are customizable and easily expandable. In Microkernel, a fault in a component does not affect the whole system thanks to the system architecture. In this respect, we can describe this architecture as durable. However, in case of an error in monolithic systems, the whole system will be affected because the services are interconnected. But it has a clear advantage over monolithic architecture in terms of speed. Examples of microkernels are symbian, minix, GNU. Most Linux distributions are not actually a Linux project, but rather a GNU project. Because linux is just a kernel and it makes up a very small part of the whole system. Hybrid architectures, on the other hand, are a combination of the good features of monolithic and microkernels, thereby reducing weaknesses. They keep more code in the kernel space. Communication units and many drivers are embedded in the kernel area. However, when a new component is added, it does not require recompilation as in monolithic architecture. For example, Darwin and macos kernel XNU, BSD-based freeBSD, windows NT are coded in this architecture. Modern operating systems prefer this architecture.&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%2F20g5ipx99ugostjyktbi.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%2F20g5ipx99ugostjyktbi.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;source&lt;/strong&gt; : &lt;a href="https://en.wikipedia.org/wiki/Monolithic_kernel" rel="noopener noreferrer"&gt;wikipedia&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  Init System
&lt;/h4&gt;

&lt;p&gt;It is the ancestor process on a GNU/Linux system. It takes 1 as pid and after the kernel is loaded, it is decided which runlevel the system will start with by checking the runlevels in /etc/inittab in modes such as windows or safemod that we are used to from macos. Runlevels can be seen in the figure below. As seen in the inittab file in Centos7 system, 0 halt, 1 single usermode, 2 multiuser etc. is being used. 3, ie Full multiuser mode, is used by default as initdefault. After init is started, other processes are started in the appropriate order and in the mode used under /etc/rc.d/init.d. For example, udev , apache, preload services can be started after init. This is used like /etc/rc.d/init.d/init3.d/S100preload. init3.d is in 3rd mode and S100 indicates that preload will be started in 100th order.&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%2Fbip1tkh9kzezqnrbiati.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%2Fbip1tkh9kzezqnrbiati.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This structure is not preferred in today's GNU/Linux distributions. In most of them, systemd, which was written in 2010, comes by default. It is also used in new generation structures such as runit, OpenRC, Upstart. The old build is the SysV init system. In new structures, there are features such as starting processes in parallel, automatically starting the process that a process needs, automatic restarting if the process terminates. Systemd is a slightly slower init system than others. The system with the fastest boot time among them is Runit and it is cross platform. Available on GNU/linux, Solaris, Macos X.&lt;/p&gt;
&lt;h4&gt;
  
  
  File System and Directory Hiearchy
&lt;/h4&gt;

&lt;p&gt;The file system is a markup structure on the disk that allows the operating system to find the file. GNU/Linux distributions usually use ext2–3–4 journaling systems. It can also find file traces on NTFS, the windows file system. Everything is a file and designed in a hierarchical order in directories. Files, drivers, executables, libraries are located in these directories. This directory structure can be seen in the figure below.&lt;br&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%2Fye60yom2xkt68spmmfyt.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%2Fye60yom2xkt68spmmfyt.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In normal use, we can say that the most used directories are /var, /lib, /usr and /home. In addition, directories branch themselves into trees. For example, the /usr directory contains the /usr/bin directory with binary files. Or the directory /var/lib is available under /var. &lt;strong&gt;/bin&lt;/strong&gt; directory is loaded at boot and contains basic commands. &lt;strong&gt;/sbin&lt;/strong&gt; contains binary files that provide system information or make changes. &lt;strong&gt;/lib&lt;/strong&gt; contains shared libraries, &lt;strong&gt;/media&lt;/strong&gt; contains removable disks, &lt;strong&gt;/mnt&lt;/strong&gt; contains new mounted filesystem, &lt;strong&gt;/var&lt;/strong&gt; contains variables. The &lt;strong&gt;/home&lt;/strong&gt; directory contains users' private files. &lt;strong&gt;/etc&lt;/strong&gt; contains configuration files. The &lt;strong&gt;/boot&lt;/strong&gt; directory contains the bootloader and some core files, such as grub, lilo, related to system boot. These directories can be divided into different partitions and connected to the system. This is a widely used method. For example, when the home directory is installed on a partition separate from root, the programs installed in the users' files and user directory are not deleted when the system is reinstalled or a different GNU/Linux distribution is installed. Bedrock Linux designers have developed a different model on this hierarchy.&lt;/p&gt;
&lt;h3&gt;
  
  
  Bedrock Linux
&lt;/h3&gt;

&lt;p&gt;Bedrock Linux is a productivity-oriented daemon that aims to use modules from many distributions, defined as a meta-distribution, together in a single operating system. In other words, you can work on debian and use pacman or AUR package managers and packages from arch linux. You can use libraries in different operating systems and fonts installed in different systems for different programming. This system also has some bugs. It is currently progressing above 0.7 poki minor. In addition, it cannot be said that it is security-oriented. This system is very useful for users who want to benefit from the power of not only a single system, but also many systems, and who want to use more than one package manager, different packages or different init systems at the same time. You can check it from the &lt;a href="https://bedrocklinux.org/index.html" rel="noopener noreferrer"&gt;link&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;The system is very simple to use. Once the Strata concept is well understood, it is quite easy to adapt for an advanced user. After a shell script is downloaded from Github, it is started as root and you will be asked to confirm the action you want to do, as a warning that the actions cannot be reversed. It then takes the distribution in your root directory and moves it to a stata under /bedrock. You can integrate other distributions into your system with the &lt;strong&gt;brl&lt;/strong&gt; command. You can also configure your system in bedrock.conf file. It is located under /etc/becrock. &lt;strong&gt;brl apply&lt;/strong&gt; is used to apply the changes. Community side usage rates are given on the official page of Bedrock linux (&lt;a href="https://bedrocklinux.org/0.7/distro-compatibility.html" rel="noopener noreferrer"&gt;link&lt;/a&gt;). Generally, you have a low error rate for frequently used distributions. For example debian,ubuntu,centos,arch are used quite often and there are no known problems. But many problems have been reported in different distributions such as clear linux, nixOS. The concept of Strata will be discussed in the next section.&lt;/p&gt;
&lt;h4&gt;
  
  
  Strata
&lt;/h4&gt;

&lt;p&gt;Bedrock installs each distribution on one layer, establishing a communication bridge between them and providing the appropriate environment for other inter-use.&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;brl fetch &lt;span class="nt"&gt;--list&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With the command, distributions that can be used as stratum can be seen.&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;brl fetch void
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With this command void linux startum can be created. It has the void linux runit init system. When Bedrock init interface comes, you can see it as void:runit.&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;strat &lt;span class="nt"&gt;-r&lt;/span&gt; debian neofetch
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When the command is used, the neofetch package in debian stratum will run and see debian as the root directory. It outputs debian as os-release. But when neofetch is used directly, bedrock linux will be seen as os-release. Occurs when build tools scan the environment and find dependencies from different distributions. In case of confusion due to the bedrock environment like this, inter layer hooks can be bypassed using the &lt;strong&gt;restrick -r&lt;/strong&gt; parameter. If you are using two distributions with the same package manager, for example apt and rpm are the most used package managers, then you can start ubuntu as apt. Such an application may be needed because the source repos are different.&lt;/p&gt;

&lt;p&gt;If a package exists in more than one startum then it will be executed in “pinned” stratum. You can check this with &lt;strong&gt;brl which&lt;/strong&gt; . All layers can see /run , /temp , /home directories as global file path.&lt;/p&gt;

&lt;p&gt;You can enable-disable some stratums if needed. You can use the &lt;strong&gt;brl enable/disable&lt;/strong&gt; command. You can use the &lt;strong&gt;brl remove -d&lt;/strong&gt; command to delete Stratum directly.&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;brl remove &lt;span class="nt"&gt;-d&lt;/span&gt; fedora
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Installation, Use and Review
&lt;/h4&gt;

&lt;p&gt;In this section, some topics such as how to create and configure some startums by installing bedrock on ubuntu-based virtual linux lite in virtualbox, how to install package software will be explained. You can choose in a different distribution. In particular, distributions that have not undergone major changes based on common or frequently used distributions can run smoothly. For installation, you can download the script suitable for the CPU architecture from the link. First of all, daemon installation should be done by running bedrock shell script as root user.&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%2F0bgknqwgs8b4ea82si4z.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%2F0bgknqwgs8b4ea82si4z.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;“Not reversable!” By typing you agree to these terms and installation begins. Before the installation, the os in the root is taken to a temporary location. Then bedrock is installed on root and the os in the temporary location is installed in a layer. After the process is finished, you can see the init selection textmode interface with reboot.&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%2Fzvldwsqq7fyuwy69jiqw.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%2Fzvldwsqq7fyuwy69jiqw.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here, the system is booted from the system marked with "*". /sbin/init points to /usr/lib/systemd/systemd here. Systemd services are started and system boot is provided. When ubuntu is booted, processes named crossfs and etcfs are file systems for moving files, libraries, fonts between layer boundaries. In addition, the paths containing the stratum binary files are added to the PATH variable. This way bash or any shell&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%2Frvi22k93jmb0q1xxa1to.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%2Frvi22k93jmb0q1xxa1to.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I am installing the neofetch package on Ubuntu. You can install it from the ubuntu apt repos. Then, when I use the neofetch command, the base system appears as bedrock. To run neofetch in Ubuntu startum.&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;strat &lt;span class="nt"&gt;-r&lt;/span&gt; ubuntu neofetch
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;command should be used. With restrict cross-startum hooks are disabled. This way neofetch will only work in ubuntu stratum.&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%2F93jgn2d8zqiwcnrivrhb.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%2F93jgn2d8zqiwcnrivrhb.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To create another startum,&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;brl fetch &lt;span class="nt"&gt;--list&lt;/span&gt; 
alpine
&lt;span class="nb"&gt;arch&lt;/span&gt;
...
...
&lt;span class="nv"&gt;$ &lt;/span&gt;brl fecth void
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can check the distros out with the command. Then it is downloaded and installed from stratum mirror with &lt;strong&gt;brl fetch&lt;/strong&gt;. For example, for void linux using runit, after the packages are pulled, void can be seen in the init menu. When &lt;strong&gt;strat -r void neofect&lt;/strong&gt; is run again, it will warn that the package is not present. Because there are no hooks in between, it cannot reach the neofetch package in ubuntu startum. In this stratum, the package is installed and run with &lt;strong&gt;sudo xbps-install neofetch&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;There are both ubuntu and void startums in the system. Here the xbps package manager and apt package manager can be used jointly. E.g&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;&lt;span class="nb"&gt;sudo &lt;/span&gt;xbps-install filezilla 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;via this command , Filezilla can be installed and run in ubuntu stratum. The opposite is also true. For example, in Arch linux startum, you can install a package from AUR packages and access it from other startums. For this, git can be installed with pacman and the spring helper software can be installed from the github repo. With &lt;strong&gt;yay -Sy brave&lt;/strong&gt; a package belonging to arch stratum can be used by all stratums.&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%2Fe557bb5c3589ofhq0lal.gif" 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%2Fe557bb5c3589ofhq0lal.gif" alt="filezilla on void stratum "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the next system startup, there are three options for init selection. Besides arch and ubuntu using systemd, void linux uninit system using runit can be used.&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%2Fianxoi2qryi9ylzgjf49.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%2Fianxoi2qryi9ylzgjf49.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;System-related settings can be made in the &lt;strong&gt;bedrock.conf&lt;/strong&gt; file. For example, the default init can be changed, the timeout period can be shortened, the directory where the fonts are located or the priority settings between the stratums can be made. Mirror servers can be changed for &lt;strong&gt;"brl fetch"&lt;/strong&gt;. For detailed information, you can use this &lt;a href="https://bedrocklinux.org/0.7/configuration.html" rel="noopener noreferrer"&gt;link&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This system is completely productivity-oriented. There may be some security related problems.The official page has some answers for those who have security concerns.&lt;br&gt;
However, if security is at the forefront for you and the features of multiple distributions are desired to be used together, it is more appropriate to use distributions such as Qubes.Qubes virtualizes each OS to the next level. It is a system that aims to provide security through isolation. It recommends Whonix by default, but you can also install windows or fedora, debian. Safety and productivity/speed are two conflicting concepts here. I think this distro is a meta distro to be used by distro-hoopers after major 1.0.0 release. Even this version is free from many problems and lives a very stable user experience.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>mono-.net core integration on Monodevelop</title>
      <dc:creator>nuh yurduseven</dc:creator>
      <pubDate>Sat, 22 Aug 2020 21:39:42 +0000</pubDate>
      <link>https://dev.to/nuhyurdev/mono-net-core-integration-on-monodevelop-1ggm</link>
      <guid>https://dev.to/nuhyurdev/mono-net-core-integration-on-monodevelop-1ggm</guid>
      <description>&lt;p&gt;Hi, I am the new member of the team and this post is my first. Ok. for a long time I try to install-integrate mono-.net core on monodevelop IDE. I am using Solus and perhaps that's why I got hard. I don't know  "how to do this work on other distro". But I have decide share with you this experiences. Bugs, errors etc.&lt;/p&gt;

&lt;p&gt;If you want to create a .net core app and build this app, you can use mono framework. I try a .net core 2.1 LTS and mono 6.8.0.105 on runtime. &lt;/p&gt;

&lt;p&gt;Make it happen installation monodevelop, mono framework and dependency packages .netcore-2.1 LTS sdk on your system. Then;&lt;/p&gt;

&lt;p&gt;for &lt;strong&gt;.netcore sdk&lt;/strong&gt;:&lt;br&gt;
open /etc/profile and add Path variable&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PATH=$PATH:/your/dotnet/sdk/path&lt;/strong&gt; and &lt;strong&gt;DOTNET_ROOT=/your/dotnet/sdk/path&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;and do:&lt;br&gt;
&lt;strong&gt;$ source /etc/profile&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Ok. You have a dotnet command reachable everywhere anymore.&lt;/p&gt;

&lt;p&gt;you can try: &lt;br&gt;
&lt;strong&gt;$ dotnet --version&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Thus, after created new solution, you can go into the project directory and  run &lt;strong&gt;dotnet build&lt;/strong&gt; command. &lt;/p&gt;

&lt;p&gt;Open the monodevelop IDE and go Edit-&amp;gt;Preferences-&amp;gt;Sdk Location-&amp;gt;.Net core and add dotnet core command line.&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%2Fi%2Ffrlr0s6ihzdvl7hzeij2.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%2Fi%2Ffrlr0s6ihzdvl7hzeij2.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;then create a new solution &lt;strong&gt;ASP.NET core web API or app&lt;/strong&gt;. Right click project app and select &lt;strong&gt;options&lt;/strong&gt;. You should check target framework inside General tab.&lt;/p&gt;

&lt;p&gt;Under the &lt;strong&gt;Run&lt;/strong&gt; tab right side of &lt;strong&gt;General&lt;/strong&gt; tab there is a ASP.NET core tab. You can change port here In general tab, do not select "Run on external console". This option(form of 'unclicked') provide to use application console in monodevelop. &lt;/p&gt;

&lt;p&gt;Build app. &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%2Fi%2Fgqryokrk7zws0d1m42k7.gif" 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%2Fi%2Fgqryokrk7zws0d1m42k7.gif" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I could not run .netcore 3.0 sdk LTS with this release of mono. Perhaps It should was installed latest mono framework.&lt;/p&gt;

&lt;p&gt;As a result, an asp.net core app or API can be developed  via mono on Monodevelop IDE for both Linux and Mac. This method can be used for this.&lt;/p&gt;

</description>
      <category>dotnet</category>
      <category>linux</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
