<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Welcome on Personal notes</title>
    <link>/</link>
    <description>Recent content in Welcome on Personal notes</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Wed, 22 Apr 2026 16:38:39 +0200</lastBuildDate>
    <atom:link href="/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>About</title>
      <link>/docs/about-page/</link>
      <pubDate>Mon, 21 Sep 2020 00:00:00 +0000</pubDate>
      <guid>/docs/about-page/</guid>
      <description>About page</description>
    </item>
    <item>
      <title>JKS Certificate Validation and Import Scripts</title>
      <link>/docs/linux/jks-verification-certs/</link>
      <pubDate>Tue, 17 Mar 2026 21:25:00 +0100</pubDate>
      <guid>/docs/linux/jks-verification-certs/</guid>
      <description>&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_preparation&#34;&gt;Preparation&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;Before executing any scripts, ensure the working directory contains the necessary decrypted artifacts.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;admonitionblock important&#34;&gt;&#xA;&lt;table&gt;&#xA;&lt;tbody&gt;&lt;tr&gt;&#xA;&lt;td class=&#34;icon&#34;&gt;&#xA;&lt;i class=&#34;fa icon-important&#34; title=&#34;Important&#34;&gt;&lt;/i&gt;&#xA;&lt;/td&gt;&#xA;&lt;td class=&#34;content&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;Executing these scripts leaves decrypted cryptographic material in the file system. Ensure appropriate file permissions (&lt;code&gt;chmod 600&lt;/code&gt;) and clean up the workspace after completion.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;/tbody&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;Required files:&#xA;* Target Java KeyStore file (already decoded and extracted).&#xA;* Plain text file containing the JKS password.&#xA;* Source file containing one or multiple X.509 certificates in PEM format.&lt;/p&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Resources/limits drill down</title>
      <link>/docs/cloud_and_kube/kubernetes-res-lim/</link>
      <pubDate>Fri, 06 Mar 2026 20:00:00 +0200</pubDate>
      <guid>/docs/cloud_and_kube/kubernetes-res-lim/</guid>
      <description>&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_drill_down_script&#34;&gt;Drill down script&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;This script will show full drill down resources and limits across all namespaces.&lt;br/&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;rouge highlight&#34;&gt;&lt;code data-lang=&#34;bash&#34;&gt;kubectl get pods &lt;span class=&#34;nt&#34;&gt;--all-namespaces&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;-o&lt;/span&gt; json | jq &lt;span class=&#34;nt&#34;&gt;-r&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;&#xA;  .items[] |&#xA;  .metadata.namespace as $ns |&#xA;  (if .metadata.ownerReferences then&#xA;     (.metadata.ownerReferences[0].kind + &amp;#34;/&amp;#34; + .metadata.ownerReferences[0].name)&#xA;   else&#xA;     (&amp;#34;Pod/&amp;#34; + .metadata.name)&#xA;   end) as $wl |&#xA;  .spec.containers[]? |&#xA;  {&#xA;    ns: $ns,&#xA;    wl: $wl,&#xA;    req_cpu: (.resources.requests.cpu // &amp;#34;0&amp;#34;),&#xA;    req_mem: (.resources.requests.memory // &amp;#34;0&amp;#34;),&#xA;    lim_cpu: (.resources.limits.cpu // &amp;#34;0&amp;#34;),&#xA;    lim_mem: (.resources.limits.memory // &amp;#34;0&amp;#34;)&#xA;  } |&#xA;  [ .ns, .wl, .req_cpu, .req_mem, .lim_cpu, .lim_mem ] | @tsv&#xA;&amp;#39;&lt;/span&gt; | &lt;span class=&#34;nb&#34;&gt;awk&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;&#xA;function cpu_to_m(cpu) {&#xA;  if (cpu ~ /m$/) { return int(substr(cpu, 1, length(cpu)-1)) }&#xA;  return int(cpu * 1000)&#xA;}&#xA;function mem_to_mi(mem) {&#xA;  if (mem ~ /Ki$/) { return int(substr(mem, 1, length(mem)-2)) / 1024 }&#xA;  if (mem ~ /Mi$/) { return int(substr(mem, 1, length(mem)-2)) }&#xA;  if (mem ~ /Gi$/) { return int(substr(mem, 1, length(mem)-2)) * 1024 }&#xA;  if (mem ~ /Ti$/) { return int(substr(mem, 1, length(mem)-2)) * 1024 * 1024 }&#xA;  if (mem ~ /^[0-9]+$/) { return int(mem) / 1024 / 1024 }&#xA;  return 0&#xA;}&#xA;{&#xA;  ns=$1&#xA;  wl=$2&#xA;  rc=cpu_to_m($3)&#xA;  rm=mem_to_mi($4)&#xA;  lc=cpu_to_m($5)&#xA;  lm=mem_to_mi($6)&#xA;&#xA;  # Sumy dla całego namespace&#xA;  ns_req_cpu[ns] += rc&#xA;  ns_req_mem[ns] += rm&#xA;  ns_lim_cpu[ns] += lc&#xA;  ns_lim_mem[ns] += lm&#xA;&#xA;  # Sumy dla konkretnego workloadu (np. ReplicaSet, StatefulSet) wewnątrz namespace&#xA;  wl_req_cpu[ns, wl] += rc&#xA;  wl_req_mem[ns, wl] += rm&#xA;  wl_lim_cpu[ns, wl] += lc&#xA;  wl_lim_mem[ns, wl] += lm&#xA;}&#xA;END {&#xA;  fmt = &amp;#34;%-55s %-12s %-12s %-12s %-12s&amp;#34;&#xA;&#xA;  # Drukowanie nagłówków ze specjalnymi prefiksami do sortowania (!00, !01)&#xA;  print sprintf(&amp;#34;!00\t00\t&amp;#34; fmt, &amp;#34;NAMESPACE / WORKLOAD&amp;#34;, &amp;#34;REQ_CPU(m)&amp;#34;, &amp;#34;REQ_MEM(Mi)&amp;#34;, &amp;#34;LIM_CPU(m)&amp;#34;, &amp;#34;LIM_MEM(Mi)&amp;#34;)&#xA;  print sprintf(&amp;#34;!01\t00\t&amp;#34; fmt, &amp;#34;-------------------------------------------------------&amp;#34;, &amp;#34;------------&amp;#34;, &amp;#34;------------&amp;#34;, &amp;#34;------------&amp;#34;, &amp;#34;------------&amp;#34;)&#xA;&#xA;  for (ns in ns_req_cpu) {&#xA;     # Drukowanie sumy dla przestrzeni nazw (prefiks 00 zapewnia, że będzie na górze grupy)&#xA;     print sprintf(&amp;#34;%s\t00\t&amp;#34; fmt, ns, &amp;#34;[+] &amp;#34; ns, ns_req_cpu[ns], ns_req_mem[ns], ns_lim_cpu[ns], ns_lim_mem[ns])&#xA;&#xA;     # Szukanie wszystkich sub-obiektów (workloads) należących do tej przestrzeni nazw&#xA;     for (key in wl_req_cpu) {&#xA;        split(key, arr, SUBSEP)&#xA;        if (arr[1] == ns) {&#xA;           wl = arr[2]&#xA;           wl_disp = &amp;#34;  |- &amp;#34; wl&#xA;           # Skracanie nazwy, jeśli jest zbyt długa, żeby nie rozwalić tabelki&#xA;           if (length(wl_disp) &amp;gt; 54) { wl_disp = substr(wl_disp, 1, 51) &amp;#34;...&amp;#34; }&#xA;&#xA;           # Drukowanie konkretnego workloadu z wcięciem (prefiks 01 zapewnia sortowanie pod namespace)&#xA;           print sprintf(&amp;#34;%s\t01_%s\t&amp;#34; fmt, ns, wl, wl_disp, wl_req_cpu[key], wl_req_mem[key], wl_lim_cpu[key], wl_lim_mem[key])&#xA;        }&#xA;     }&#xA;  }&#xA;}&amp;#39;&lt;/span&gt; | &lt;span class=&#34;nb&#34;&gt;sort&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;-k1&lt;/span&gt;,1 &lt;span class=&#34;nt&#34;&gt;-k2&lt;/span&gt;,2 | &lt;span class=&#34;nb&#34;&gt;cut&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;-f3-&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Debug TLS With wireshark</title>
      <link>/docs/windows/debug-encrypted-connection/</link>
      <pubDate>Wed, 05 Nov 2025 13:45:48 +0200</pubDate>
      <guid>/docs/windows/debug-encrypted-connection/</guid>
      <description>&lt;h1 id=&#34;_how_to_debug_encrypted_traffic_tlshttps_with_wireshark&#34; class=&#34;sect0&#34;&gt;How to Debug Encrypted Traffic (TLS/HTTPS) with Wireshark&lt;/h1&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;This guide describes how to capture and decrypt TLS (HTTPS) traffic from applications (e.g., Python, Chrome, cURL). We assume you are monitoring the &amp;#39;Ethernet&amp;#39; interface.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_step_1_configure_wireshark&#34;&gt;Step 1: Configure Wireshark&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;ulist&#34;&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Open Wireshark.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Select from the menu: &amp;#39;Edit → Preferences…​&amp;#39;.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Expand &amp;#39;Protocols&amp;#39; and select &amp;#39;TLS&amp;#39;.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;In the &amp;#39;(Pre)-Master-Secret log filename&amp;#39; field, enter a path for the key file, for example &lt;code&gt;C:\temp\ssl_keys.txt&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Click OK.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_step_2_run_the_capture&#34;&gt;Step 2: Run the Capture&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;ulist&#34;&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Open a new terminal (CMD). Set the temporary environment variable:&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Git toolbox</title>
      <link>/docs/git/git-toolbox/</link>
      <pubDate>Wed, 08 Jan 2025 15:49:48 +0000</pubDate>
      <guid>/docs/git/git-toolbox/</guid>
      <description>&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_git_toolbox&#34;&gt;Git toolbox&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_reset_to_specific_tag&#34;&gt;Reset to specific tag&lt;/h3&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;rouge highlight&#34;&gt;&lt;code data-lang=&#34;sh&#34;&gt;git tag&#xA;git checkout &amp;lt;tag_name&amp;gt;&#xA;git reset &lt;span class=&#34;nt&#34;&gt;--hard&lt;/span&gt; &amp;lt;tag_name&amp;gt;&#xA;&lt;span class=&#34;c&#34;&gt;# After resetting, you should force-push the changes to update the remote repository (if you&amp;#39;ve already pushed these changes)&lt;/span&gt;&#xA;git push origin &amp;lt;branch_name&amp;gt; &lt;span class=&#34;nt&#34;&gt;--force&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;Please be extremely cautious when using git reset --hard as it can result in data loss. Make sure you have backups and communicate with your team if you are working in a collaborative environment.&lt;/p&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>OIDC/Oauth2 in Apex, with wallet for felf sign cert</title>
      <link>/docs/apex/add-oidc-oauth2-to-apex-with-wallet/</link>
      <pubDate>Wed, 04 Dec 2024 00:00:00 +0000</pubDate>
      <guid>/docs/apex/add-oidc-oauth2-to-apex-with-wallet/</guid>
      <description>&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_creating_wallet_for_apex_with_oracle_client_orapki&#34;&gt;Creating wallet for APEX with oracle client orapki&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;blockquote class=&#34;book-hint info&#34;&gt;&#xA;  &#xA;**Info** +&#xA;You need to do it only if your sso server have self-signed certificate. +&#xA;&#xA;&lt;/blockquote&gt;&#xA;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;Get your certs.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;rouge highlight&#34;&gt;&lt;code data-lang=&#34;console&#34;&gt;&lt;span class=&#34;go&#34;&gt;openssl s_client -connect sso-rho-sso-corpo-test.apps.playcloud-test.p4.int:443 -showcerts&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;You need full installation of oracle client to do this, instant client is not sufficent.&lt;br/&gt;&#xA;You can also use database instance if you have access.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;rouge highlight&#34;&gt;&lt;code data-lang=&#34;console&#34;&gt;&lt;span class=&#34;go&#34;&gt;cd C:\oracle\product\12.2.0\client_1\bin&#xA;set JAVA_HOME=&amp;#34;c:\Program Files\java\jdk1.8.0_202&amp;#34;&#xA;orapki wallet create -wallet c:\temp\sso.wallet -auto_login&#xA;orapki wallet add -wallet c:\temp\sso.wallet -trusted_cert -cert c:\temp\sso.wallet\crt2.crt&#xA;orapki wallet add -wallet c:\temp\sso.wallet -trusted_cert -cert c:\temp\sso.wallet\crt1.crt&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Git for Windows - pacman</title>
      <link>/docs/git/git-for-windows-pacman-install/</link>
      <pubDate>Wed, 12 Jun 2024 20:44:48 +0000</pubDate>
      <guid>/docs/git/git-for-windows-pacman-install/</guid>
      <description>&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_how_to_add_functional_pacman_to_git_for_windows&#34;&gt;How to add functional pacman to Git for Windows&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;Sprawdzamy obecne pakiety msys2, lista mirrorów tutaj:&#xA;# &lt;a href=&#34;https://www.msys2.org/dev/mirrors/&#34; class=&#34;bare&#34;&gt;https://www.msys2.org/dev/mirrors/&lt;/a&gt;&#xA;# tworzymy zmienne z nazwami pakietów zgodnie z architekturą (np. x86_64 )&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre&gt;pacman=&amp;#34;&#xA;pacman-6.0.1-18-x86_64.pkg.tar.zst&#xA;pacman-mirrors-20220205-1-any.pkg.tar.zst&#xA;msys2-keyring-1~20220623-1-any.pkg.tar.zst&#xA;&amp;#34;&#xA;zstd=zstd-1.5.2-1-x86_64.pkg.tar.xz&#xA;curl curl https://raw.githubusercontent.com/msys2/MSYS2-packages/7858ee9c236402adf569ac7cff6beb1f883ab67c/pacman/pacman.conf -o /etc/pacman.conf&#xA;for f in $pacman; do curl https://mirrors.tuna.tsinghua.edu.cn/msys2/msys/$HOSTTYPE/$f -fo ~/Downloads/$f; done&#xA;curl -L https://github.com/mcgitty/pacman-for-git/raw/main/$zstd -o ~/Downloads/$zstd&#xA;cd /&#xA;tar x --xz -vf ~/Downloads/$zstd usr&#xA;for f in $pacman; do tar x --zstd -vf ~/Downloads/$f usr etc 2&amp;gt;/dev/nul; done&#xA;mkdir -p /var/lib/pacman; ln -s `which gettext` /usr/bin/&#xA;pacman-key --init&#xA;pacman-key --populate msys2&#xA;pacman -Syu&#xA;export URL=https://github.com/git-for-windows/git-sdk-64/raw/main&#xA;cat /etc/package-versions.txt | while read p v; do d=/var/lib/pacman/local/$p-$v; mkdir -p $d; echo $d; for f in desc files install mtree; do curl -sSL &amp;#34;$URL$d/$f&amp;#34; -o $d/$f; done; done&#xA;pacman -S pacman --overwrite &amp;#39;*&amp;#39;&#xA;pacman -Syu --overwrite &amp;#39;*&amp;#39;&#xA;pacman -Syu&lt;/pre&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>K0sctl &#43; XCP-ng proxy</title>
      <link>/docs/cloud_and_kube/k0sctl-xcp-proxy/</link>
      <pubDate>Tue, 16 Apr 2024 09:51:48 +0000</pubDate>
      <guid>/docs/cloud_and_kube/k0sctl-xcp-proxy/</guid>
      <description>&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_k0sctl_xcp_ng_proxy&#34;&gt;K0sctl + XCP-ng proxy&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;Remember:&lt;br/&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;ulist&#34;&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;add http_proxy and https_proxy to the environment&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;add no_proxy to the environment&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;add privateInterface and privateAddress to the host if needed&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;ensure that there is default route on interface&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;rouge highlight&#34;&gt;&lt;code data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;na&#34;&gt;apiVersion&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;k0sctl.k0sproject.io/v1beta1&lt;/span&gt;&#xA;&lt;span class=&#34;na&#34;&gt;kind&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;Cluster&lt;/span&gt;&#xA;&lt;span class=&#34;na&#34;&gt;metadata&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;  &lt;span class=&#34;na&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;k0s-cluster&lt;/span&gt;&#xA;&lt;span class=&#34;na&#34;&gt;spec&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;  &lt;span class=&#34;na&#34;&gt;hosts&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;  &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;ssh&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;address&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;10.0.0.1&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;user&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;root&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;port&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;22&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;keyPath&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;/root/.ssh/id_ed25519&lt;/span&gt;&#xA;    &lt;span class=&#34;na&#34;&gt;role&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;controller&lt;/span&gt;&#xA;    &lt;span class=&#34;c1&#34;&gt;#privateInterface: enX0&lt;/span&gt;&#xA;    &lt;span class=&#34;c1&#34;&gt;#privateAddress: 10.0.0.1&lt;/span&gt;&#xA;    &lt;span class=&#34;na&#34;&gt;environment&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;HTTP_PROXY&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;http://&amp;lt;proxy&amp;gt;:8080&amp;#34;&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;HTTPS_PROXY&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;http://&amp;lt;proxy&amp;gt;:8080&amp;#34;&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;NO_PROXY&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;localhost,127.0.0.1,&amp;lt;cluster&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;network&amp;gt;,10.244.0.0/16,10.96.0.0/12&amp;#34;&lt;/span&gt;&#xA;  &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;ssh&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;address&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;10.0.0.2&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;user&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;root&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;port&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;22&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;keyPath&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;/root/.ssh/id_ed25519&lt;/span&gt;&#xA;    &lt;span class=&#34;na&#34;&gt;role&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;controller&lt;/span&gt;&#xA;    &lt;span class=&#34;c1&#34;&gt;#privateInterface: enX0&lt;/span&gt;&#xA;    &lt;span class=&#34;c1&#34;&gt;#privateAddress: 10.0.0.2&lt;/span&gt;&#xA;    &lt;span class=&#34;na&#34;&gt;environment&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;HTTP_PROXY&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;http://&amp;lt;proxy&amp;gt;:8080&amp;#34;&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;HTTPS_PROXY&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;http://&amp;lt;proxy&amp;gt;:8080&amp;#34;&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;NO_PROXY&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;localhost,127.0.0.1,&amp;lt;cluster&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;network&amp;gt;,10.244.0.0/16,10.96.0.0/12&amp;#34;&lt;/span&gt;&#xA;  &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;ssh&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;address&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;10.0.0.3&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;user&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;root&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;port&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;22&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;keyPath&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;/root/.ssh/id_ed25519&lt;/span&gt;&#xA;    &lt;span class=&#34;na&#34;&gt;role&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;controller&lt;/span&gt;&#xA;    &lt;span class=&#34;c1&#34;&gt;#privateInterface: enX0&lt;/span&gt;&#xA;    &lt;span class=&#34;c1&#34;&gt;#privateAddress: 10.0.0.3&lt;/span&gt;&#xA;    &lt;span class=&#34;na&#34;&gt;environment&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;HTTP_PROXY&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;http://&amp;lt;proxy&amp;gt;:8080&amp;#34;&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;HTTPS_PROXY&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;http://&amp;lt;proxy&amp;gt;:8080&amp;#34;&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;NO_PROXY&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;localhost,127.0.0.1,&amp;lt;cluster&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;network&amp;gt;,10.244.0.0/16,10.96.0.0/12&amp;#34;&lt;/span&gt;&#xA;  &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;ssh&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;address&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;10.0.0.4&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;user&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;root&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;port&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;22&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;keyPath&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;/root/.ssh/id_ed25519&lt;/span&gt;&#xA;    &lt;span class=&#34;na&#34;&gt;role&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;worker&lt;/span&gt;&#xA;    &lt;span class=&#34;c1&#34;&gt;#privateInterface: enX0&lt;/span&gt;&#xA;    &lt;span class=&#34;c1&#34;&gt;#privateAddress: 10.0.0.4&lt;/span&gt;&#xA;    &lt;span class=&#34;na&#34;&gt;environment&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;HTTP_PROXY&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;http://&amp;lt;proxy&amp;gt;:8080&amp;#34;&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;HTTPS_PROXY&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;http://&amp;lt;proxy&amp;gt;:8080&amp;#34;&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;NO_PROXY&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;localhost,127.0.0.1,&amp;lt;cluster&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;network&amp;gt;,10.244.0.0/16,10.96.0.0/12&amp;#34;&lt;/span&gt;&#xA;  &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;ssh&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;address&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;10.0.0.5&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;user&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;root&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;port&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;22&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;keyPath&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;/root/.ssh/id_ed25519&lt;/span&gt;&#xA;    &lt;span class=&#34;na&#34;&gt;role&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;worker&lt;/span&gt;&#xA;    &lt;span class=&#34;c1&#34;&gt;#privateInterface: enX0&lt;/span&gt;&#xA;    &lt;span class=&#34;c1&#34;&gt;#privateAddress: 10.0.0.5&lt;/span&gt;&#xA;    &lt;span class=&#34;na&#34;&gt;environment&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;HTTP_PROXY&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;http://&amp;lt;proxy&amp;gt;:8080&amp;#34;&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;HTTPS_PROXY&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;http://&amp;lt;proxy&amp;gt;:8080&amp;#34;&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;NO_PROXY&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;localhost,127.0.0.1,&amp;lt;cluster&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;network&amp;gt;,10.244.0.0/16,10.96.0.0/12&amp;#34;&lt;/span&gt;&#xA;  &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;ssh&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;address&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;10.0.0.6&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;user&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;root&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;port&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;22&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;keyPath&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;/root/.ssh/id_ed25519&lt;/span&gt;&#xA;    &lt;span class=&#34;na&#34;&gt;role&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;worker&lt;/span&gt;&#xA;    &lt;span class=&#34;c1&#34;&gt;#privateInterface: enX0&lt;/span&gt;&#xA;    &lt;span class=&#34;c1&#34;&gt;#privateAddress: 10.0.0.6&lt;/span&gt;&#xA;    &lt;span class=&#34;na&#34;&gt;environment&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;HTTP_PROXY&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;http://&amp;lt;proxy&amp;gt;:8080&amp;#34;&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;HTTPS_PROXY&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;http://&amp;lt;proxy&amp;gt;:8080&amp;#34;&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;NO_PROXY&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;localhost,127.0.0.1,&amp;lt;cluster&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;network&amp;gt;,10.244.0.0/16,10.96.0.0/12&amp;#34;&lt;/span&gt;&#xA;  &lt;span class=&#34;na&#34;&gt;k0s&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;    &lt;span class=&#34;na&#34;&gt;version&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;1.32.3+k0s.0&lt;/span&gt;&#xA;    &lt;span class=&#34;na&#34;&gt;dynamicConfig&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;&#xA;    &lt;span class=&#34;na&#34;&gt;config&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;apiVersion&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;k0s.k0sproject.io/v1beta1&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;kind&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;Cluster&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;metadata&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;        &lt;span class=&#34;na&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;k0s-xcp-cluster0&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;spec&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;        &lt;span class=&#34;na&#34;&gt;api&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;          &lt;span class=&#34;c1&#34;&gt;#address: 10.0.0.32&lt;/span&gt;&#xA;          &lt;span class=&#34;c1&#34;&gt;#onlyBindToAddress: true&lt;/span&gt;&#xA;            &lt;span class=&#34;c1&#34;&gt;#          externalAddress: 10.0.0.30&lt;/span&gt;&#xA;          &lt;span class=&#34;na&#34;&gt;k0sApiPort&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;9443&lt;/span&gt;&#xA;          &lt;span class=&#34;na&#34;&gt;port&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;6443&lt;/span&gt;&#xA;          &lt;span class=&#34;na&#34;&gt;sans&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;            &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;127.0.0.1&lt;/span&gt;&#xA;            &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;10.0.0.1&lt;/span&gt;&#xA;            &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;10.0.0.2&lt;/span&gt;&#xA;            &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;10.0.0.3&lt;/span&gt;&#xA;            &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;10.0.0.4&lt;/span&gt;&#xA;            &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;10.0.0.5&lt;/span&gt;&#xA;            &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;10.0.0.6&lt;/span&gt;&#xA;          &lt;span class=&#34;na&#34;&gt;extraArgs&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;            &lt;span class=&#34;na&#34;&gt;default-not-ready-toleration-seconds&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;50&amp;#34;&lt;/span&gt;&#xA;            &lt;span class=&#34;na&#34;&gt;default-unreachable-toleration-seconds&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;50&amp;#34;&lt;/span&gt;&#xA;        &lt;span class=&#34;na&#34;&gt;controllerManager&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;          &lt;span class=&#34;na&#34;&gt;extraArgs&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;            &lt;span class=&#34;na&#34;&gt;node-monitor-grace-period&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;20s&lt;/span&gt;&#xA;            &lt;span class=&#34;na&#34;&gt;node-monitor-period&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;2s&lt;/span&gt;&#xA;        &lt;span class=&#34;na&#34;&gt;installConfig&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;          &lt;span class=&#34;na&#34;&gt;users&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;            &lt;span class=&#34;na&#34;&gt;etcdUser&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;etcd&lt;/span&gt;&#xA;            &lt;span class=&#34;na&#34;&gt;kineUser&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;kube-apiserver&lt;/span&gt;&#xA;            &lt;span class=&#34;na&#34;&gt;konnectivityUser&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;konnectivity-server&lt;/span&gt;&#xA;            &lt;span class=&#34;na&#34;&gt;kubeAPIserverUser&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;kube-apiserver&lt;/span&gt;&#xA;            &lt;span class=&#34;na&#34;&gt;kubeSchedulerUser&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;kube-scheduler&lt;/span&gt;&#xA;        &lt;span class=&#34;na&#34;&gt;konnectivity&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;          &lt;span class=&#34;na&#34;&gt;adminPort&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;8133&lt;/span&gt;&#xA;          &lt;span class=&#34;na&#34;&gt;agentPort&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;8132&lt;/span&gt;&#xA;        &lt;span class=&#34;na&#34;&gt;network&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;          &lt;span class=&#34;na&#34;&gt;kubeProxy&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;            &lt;span class=&#34;na&#34;&gt;disabled&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;&#xA;            &lt;span class=&#34;na&#34;&gt;mode&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;iptables&lt;/span&gt;&#xA;          &lt;span class=&#34;na&#34;&gt;nodeLocalLoadBalancing&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;            &lt;span class=&#34;na&#34;&gt;enabled&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&#xA;            &lt;span class=&#34;na&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;EnvoyProxy&lt;/span&gt;&#xA;          &lt;span class=&#34;na&#34;&gt;kuberouter&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;            &lt;span class=&#34;na&#34;&gt;autoMTU&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&#xA;            &lt;span class=&#34;na&#34;&gt;mtu&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;&#xA;            &lt;span class=&#34;na&#34;&gt;peerRouterASNs&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;            &lt;span class=&#34;na&#34;&gt;peerRouterIPs&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;          &lt;span class=&#34;na&#34;&gt;podCIDR&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;10.244.0.0/16&lt;/span&gt;&#xA;          &lt;span class=&#34;na&#34;&gt;provider&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;kuberouter&lt;/span&gt;&#xA;          &lt;span class=&#34;na&#34;&gt;serviceCIDR&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;10.96.0.0/12&lt;/span&gt;&#xA;          &lt;span class=&#34;na&#34;&gt;clusterDomain&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;cluster.local&lt;/span&gt;&#xA;          &lt;span class=&#34;na&#34;&gt;dualStack&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;            &lt;span class=&#34;na&#34;&gt;enabled&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;&#xA;        &lt;span class=&#34;na&#34;&gt;podSecurityPolicy&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;          &lt;span class=&#34;na&#34;&gt;defaultPolicy&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;00-k0s-privileged&lt;/span&gt;&#xA;        &lt;span class=&#34;na&#34;&gt;storage&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;          &lt;span class=&#34;na&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;etcd&lt;/span&gt;&#xA;        &lt;span class=&#34;na&#34;&gt;telemetry&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;          &lt;span class=&#34;na&#34;&gt;enabled&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;&#xA;        &lt;span class=&#34;na&#34;&gt;extensions&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;          &lt;span class=&#34;na&#34;&gt;helm&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;            &lt;span class=&#34;na&#34;&gt;repositories&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;            &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;stable&lt;/span&gt;&#xA;              &lt;span class=&#34;na&#34;&gt;url&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;https://charts.helm.sh/stable&lt;/span&gt;&#xA;            &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;bitnami&lt;/span&gt;&#xA;              &lt;span class=&#34;na&#34;&gt;url&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;https://charts.bitnami.com/bitnami&lt;/span&gt;&#xA;            &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;traefik&lt;/span&gt;&#xA;              &lt;span class=&#34;na&#34;&gt;url&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;https://traefik.github.io/charts&lt;/span&gt;&#xA;            &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;longhorn&lt;/span&gt;&#xA;              &lt;span class=&#34;na&#34;&gt;url&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;https://charts.longhorn.io&lt;/span&gt;&#xA;            &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;jetstack&lt;/span&gt;&#xA;              &lt;span class=&#34;na&#34;&gt;url&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;https://charts.jetstack.io&lt;/span&gt;&#xA;            &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;descheduler&lt;/span&gt;&#xA;              &lt;span class=&#34;na&#34;&gt;url&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;https://kubernetes-sigs.github.io/descheduler/&lt;/span&gt;&#xA;            &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;filebrowse&lt;/span&gt;&#xA;              &lt;span class=&#34;na&#34;&gt;url&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;https://utkuozdemir.org/helm-charts&lt;/span&gt;&#xA;            &lt;span class=&#34;na&#34;&gt;charts&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>K0sctl cloud oracle</title>
      <link>/docs/cloud_and_kube/k0sctl-cloud-oracle/</link>
      <pubDate>Tue, 16 Apr 2024 09:41:48 +0000</pubDate>
      <guid>/docs/cloud_and_kube/k0sctl-cloud-oracle/</guid>
      <description>&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_k0sctl_cloud_oracle&#34;&gt;K0sctl cloud oracle&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;Remember:&lt;br/&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;ulist&#34;&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;add http_proxy and https_proxy to the environment&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;add no_proxy to the environment&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;add privateInterface and privateAddress to the host if needed&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;ensure that there is default route on interface&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;rouge highlight&#34;&gt;&lt;code data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;na&#34;&gt;apiVersion&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;k0sctl.k0sproject.io/v1beta1&lt;/span&gt;&#xA;&lt;span class=&#34;na&#34;&gt;kind&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;Cluster&lt;/span&gt;&#xA;&lt;span class=&#34;na&#34;&gt;metadata&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;  &lt;span class=&#34;na&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;k0s-cluster&lt;/span&gt;&#xA;&lt;span class=&#34;na&#34;&gt;spec&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;  &lt;span class=&#34;na&#34;&gt;hosts&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;  &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;ssh&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;address&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;10.0.0.5&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;user&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;root&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;port&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;44662&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;keyPath&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;/root/.ssh/id_ed25519&lt;/span&gt;&#xA;    &lt;span class=&#34;na&#34;&gt;role&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;controller&lt;/span&gt;&#xA;  &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;ssh&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;address&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;10.0.0.130&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;user&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;root&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;port&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;44662&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;keyPath&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;/root/.ssh/id_ed25519&lt;/span&gt;&#xA;    &lt;span class=&#34;na&#34;&gt;role&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;controller&lt;/span&gt;&#xA;  &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;ssh&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;address&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;10.0.0.135&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;user&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;root&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;port&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;44662&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;keyPath&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;/root/.ssh/id_ed25519&lt;/span&gt;&#xA;    &lt;span class=&#34;na&#34;&gt;role&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;controller&lt;/span&gt;&#xA;  &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;ssh&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;address&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;10.0.0.10&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;user&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;root&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;port&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;44662&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;keyPath&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;/root/.ssh/id_ed25519&lt;/span&gt;&#xA;    &lt;span class=&#34;na&#34;&gt;role&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;worker&lt;/span&gt;&#xA;  &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;ssh&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;address&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;10.0.0.140&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;user&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;root&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;port&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;44662&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;keyPath&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;/root/.ssh/id_ed25519&lt;/span&gt;&#xA;    &lt;span class=&#34;na&#34;&gt;role&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;worker&lt;/span&gt;&#xA;&lt;span class=&#34;c1&#34;&gt;#  - ssh:&lt;/span&gt;&#xA;&lt;span class=&#34;c1&#34;&gt;#      address: 10.0.0.210&lt;/span&gt;&#xA;&lt;span class=&#34;c1&#34;&gt;#      user: root&lt;/span&gt;&#xA;&lt;span class=&#34;c1&#34;&gt;#      port: 44662&lt;/span&gt;&#xA;&lt;span class=&#34;c1&#34;&gt;#      keyPath: /root/.ssh/id_ed25519&lt;/span&gt;&#xA;&lt;span class=&#34;c1&#34;&gt;#    role: worker&lt;/span&gt;&#xA;  &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;ssh&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;address&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;10.0.0.220&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;user&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;root&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;port&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;44662&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;keyPath&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;/root/.ssh/id_ed25519&lt;/span&gt;&#xA;    &lt;span class=&#34;na&#34;&gt;role&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;worker&lt;/span&gt;&#xA;  &lt;span class=&#34;na&#34;&gt;k0s&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;    &lt;span class=&#34;na&#34;&gt;version&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;1.32.1+k0s.0&lt;/span&gt;&#xA;    &lt;span class=&#34;na&#34;&gt;dynamicConfig&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;&#xA;    &lt;span class=&#34;na&#34;&gt;config&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;apiVersion&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;k0s.k0sproject.io/v1beta1&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;kind&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;Cluster&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;metadata&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;        &lt;span class=&#34;na&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;k0s-cluster0&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;spec&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;        &lt;span class=&#34;na&#34;&gt;api&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;&lt;span class=&#34;c1&#34;&gt;#          address: 10.0.0.5&lt;/span&gt;&#xA;&lt;span class=&#34;c1&#34;&gt;#          externalAddress: 10.0.0.30&lt;/span&gt;&#xA;          &lt;span class=&#34;na&#34;&gt;k0sApiPort&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;9443&lt;/span&gt;&#xA;          &lt;span class=&#34;na&#34;&gt;port&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;6443&lt;/span&gt;&#xA;          &lt;span class=&#34;na&#34;&gt;sans&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;            &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;10.0.0.5&lt;/span&gt;&#xA;            &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;10.0.0.10&lt;/span&gt;&#xA;            &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;10.0.0.140&lt;/span&gt;&#xA;            &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;10.0.0.210&lt;/span&gt;&#xA;            &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;10.0.0.220&lt;/span&gt;&#xA;            &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;10.0.0.130&lt;/span&gt;&#xA;            &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;10.0.0.135&lt;/span&gt;&#xA;            &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;lt;other external ips&amp;gt;&lt;/span&gt;&#xA;            &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;127.0.0.1&lt;/span&gt;&#xA;          &lt;span class=&#34;na&#34;&gt;extraArgs&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;            &lt;span class=&#34;na&#34;&gt;default-not-ready-toleration-seconds&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;50&amp;#34;&lt;/span&gt;&#xA;            &lt;span class=&#34;na&#34;&gt;default-unreachable-toleration-seconds&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;50&amp;#34;&lt;/span&gt;&#xA;        &lt;span class=&#34;na&#34;&gt;controllerManager&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;          &lt;span class=&#34;na&#34;&gt;extraArgs&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;            &lt;span class=&#34;na&#34;&gt;node-monitor-grace-period&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;20s&lt;/span&gt;&#xA;            &lt;span class=&#34;na&#34;&gt;node-monitor-period&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;2s&lt;/span&gt;&#xA;        &lt;span class=&#34;na&#34;&gt;installConfig&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;          &lt;span class=&#34;na&#34;&gt;users&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;            &lt;span class=&#34;na&#34;&gt;etcdUser&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;etcd&lt;/span&gt;&#xA;            &lt;span class=&#34;na&#34;&gt;kineUser&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;kube-apiserver&lt;/span&gt;&#xA;            &lt;span class=&#34;na&#34;&gt;konnectivityUser&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;konnectivity-server&lt;/span&gt;&#xA;            &lt;span class=&#34;na&#34;&gt;kubeAPIserverUser&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;kube-apiserver&lt;/span&gt;&#xA;            &lt;span class=&#34;na&#34;&gt;kubeSchedulerUser&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;kube-scheduler&lt;/span&gt;&#xA;        &lt;span class=&#34;na&#34;&gt;konnectivity&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;          &lt;span class=&#34;na&#34;&gt;adminPort&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;8133&lt;/span&gt;&#xA;          &lt;span class=&#34;na&#34;&gt;agentPort&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;8132&lt;/span&gt;&#xA;        &lt;span class=&#34;na&#34;&gt;network&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;          &lt;span class=&#34;na&#34;&gt;kubeProxy&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;            &lt;span class=&#34;na&#34;&gt;disabled&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;&#xA;            &lt;span class=&#34;na&#34;&gt;mode&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;iptables&lt;/span&gt;&#xA;          &lt;span class=&#34;na&#34;&gt;nodeLocalLoadBalancing&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;            &lt;span class=&#34;na&#34;&gt;enabled&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&#xA;            &lt;span class=&#34;na&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;EnvoyProxy&lt;/span&gt;&#xA;          &lt;span class=&#34;na&#34;&gt;kuberouter&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;            &lt;span class=&#34;na&#34;&gt;autoMTU&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&#xA;            &lt;span class=&#34;na&#34;&gt;mtu&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;&#xA;            &lt;span class=&#34;na&#34;&gt;peerRouterASNs&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;            &lt;span class=&#34;na&#34;&gt;peerRouterIPs&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;          &lt;span class=&#34;na&#34;&gt;podCIDR&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;10.244.0.0/16&lt;/span&gt;&#xA;          &lt;span class=&#34;na&#34;&gt;provider&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;kuberouter&lt;/span&gt;&#xA;          &lt;span class=&#34;na&#34;&gt;serviceCIDR&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;10.96.0.0/12&lt;/span&gt;&#xA;          &lt;span class=&#34;na&#34;&gt;clusterDomain&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;cluster.local&lt;/span&gt;&#xA;          &lt;span class=&#34;na&#34;&gt;dualStack&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;            &lt;span class=&#34;na&#34;&gt;enabled&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;&#xA;        &lt;span class=&#34;na&#34;&gt;podSecurityPolicy&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;          &lt;span class=&#34;na&#34;&gt;defaultPolicy&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;00-k0s-privileged&lt;/span&gt;&#xA;        &lt;span class=&#34;na&#34;&gt;storage&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;          &lt;span class=&#34;na&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;etcd&lt;/span&gt;&#xA;        &lt;span class=&#34;na&#34;&gt;telemetry&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;          &lt;span class=&#34;na&#34;&gt;enabled&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;&#xA;        &lt;span class=&#34;na&#34;&gt;extensions&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;          &lt;span class=&#34;na&#34;&gt;helm&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;            &lt;span class=&#34;na&#34;&gt;repositories&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;            &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;stable&lt;/span&gt;&#xA;              &lt;span class=&#34;na&#34;&gt;url&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;https://charts.helm.sh/stable&lt;/span&gt;&#xA;            &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;bitnami&lt;/span&gt;&#xA;              &lt;span class=&#34;na&#34;&gt;url&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;https://charts.bitnami.com/bitnami&lt;/span&gt;&#xA;            &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;traefik&lt;/span&gt;&#xA;              &lt;span class=&#34;na&#34;&gt;url&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;https://traefik.github.io/charts&lt;/span&gt;&#xA;            &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;longhorn&lt;/span&gt;&#xA;              &lt;span class=&#34;na&#34;&gt;url&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;https://charts.longhorn.io&lt;/span&gt;&#xA;            &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;jetstack&lt;/span&gt;&#xA;              &lt;span class=&#34;na&#34;&gt;url&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;https://charts.jetstack.io&lt;/span&gt;&#xA;            &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;descheduler&lt;/span&gt;&#xA;              &lt;span class=&#34;na&#34;&gt;url&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;https://kubernetes-sigs.github.io/descheduler/&lt;/span&gt;&#xA;            &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;filebrowse&lt;/span&gt;&#xA;              &lt;span class=&#34;na&#34;&gt;url&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;https://utkuozdemir.org/helm-charts&lt;/span&gt;&#xA;            &lt;span class=&#34;c1&#34;&gt;#- name: metallb&lt;/span&gt;&#xA;            &lt;span class=&#34;c1&#34;&gt;#   url: https://metallb.github.io/metallb&lt;/span&gt;&#xA;            &lt;span class=&#34;na&#34;&gt;charts&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;            &lt;span class=&#34;c1&#34;&gt;#- name: traefik&lt;/span&gt;&#xA;            &lt;span class=&#34;c1&#34;&gt;#  chartname: traefik/traefik&lt;/span&gt;&#xA;            &lt;span class=&#34;c1&#34;&gt;#  version: &amp;#34;24.0.0&amp;#34;&lt;/span&gt;&#xA;            &lt;span class=&#34;c1&#34;&gt;#  namespace: kube-system&lt;/span&gt;&#xA;            &lt;span class=&#34;c1&#34;&gt;#  values: |&lt;/span&gt;&#xA;            &lt;span class=&#34;c1&#34;&gt;#    deployment:&lt;/span&gt;&#xA;            &lt;span class=&#34;c1&#34;&gt;#      replicas: 3&lt;/span&gt;&#xA;            &lt;span class=&#34;c1&#34;&gt;#- name: longhorn&lt;/span&gt;&#xA;            &lt;span class=&#34;c1&#34;&gt;#  chartname: longhorn/longhorn&lt;/span&gt;&#xA;            &lt;span class=&#34;c1&#34;&gt;#  version: &amp;#34;1.4.2&amp;#34;&lt;/span&gt;&#xA;            &lt;span class=&#34;c1&#34;&gt;#  namespace: longhorn-system&lt;/span&gt;&#xA;            &lt;span class=&#34;c1&#34;&gt;#- name: cert-manager&lt;/span&gt;&#xA;            &lt;span class=&#34;c1&#34;&gt;#  chartname: jetstack/cert-manager&lt;/span&gt;&#xA;            &lt;span class=&#34;c1&#34;&gt;#  version: &amp;#34;1.13&amp;#34;&lt;/span&gt;&#xA;            &lt;span class=&#34;c1&#34;&gt;#  namespace: cert-manager&lt;/span&gt;&#xA;            &lt;span class=&#34;c1&#34;&gt;#- name: descheduler&lt;/span&gt;&#xA;            &lt;span class=&#34;c1&#34;&gt;#  chartname: descheduler/descheduler&lt;/span&gt;&#xA;            &lt;span class=&#34;c1&#34;&gt;#  version: &amp;#34;0.28.0&amp;#34;&lt;/span&gt;&#xA;            &lt;span class=&#34;c1&#34;&gt;#  namespace: kube-system&lt;/span&gt;&#xA;            &lt;span class=&#34;c1&#34;&gt;#- name: filebrowse&lt;/span&gt;&#xA;            &lt;span class=&#34;c1&#34;&gt;#  chartname: utkuozdemir/filebrowser&lt;/span&gt;&#xA;            &lt;span class=&#34;c1&#34;&gt;#  version: 1.0.0&lt;/span&gt;&#xA;            &lt;span class=&#34;c1&#34;&gt;#  namespace: default&lt;/span&gt;&#xA;            &lt;span class=&#34;c1&#34;&gt;#- name: metallb&lt;/span&gt;&#xA;            &lt;span class=&#34;c1&#34;&gt;#  chartname: metallb/metallb&lt;/span&gt;&#xA;            &lt;span class=&#34;c1&#34;&gt;#  #version: &amp;#34;4.5.6&amp;#34;&lt;/span&gt;&#xA;            &lt;span class=&#34;c1&#34;&gt;#  namespace: metallb-system&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Cloud Init - XCP, proxy</title>
      <link>/docs/cloud_and_kube/cloud-init-xcp-proxy/</link>
      <pubDate>Tue, 16 Apr 2024 09:20:48 +0000</pubDate>
      <guid>/docs/cloud_and_kube/cloud-init-xcp-proxy/</guid>
      <description>&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_cloud_init_xcp_ng_proxy&#34;&gt;Cloud init xcp-ng proxy&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;Remember:&lt;br/&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;ulist&#34;&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;add http_proxy and https_proxy to the environment&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;add no_proxy to the environment&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;add privateInterface and privateAddress to the host if needed&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;ensure that there is default route on interface&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;consider firewall settings&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;rouge highlight&#34;&gt;&lt;code data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#cloud-config&lt;/span&gt;&#xA;&lt;span class=&#34;na&#34;&gt;users&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA; &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;root&lt;/span&gt;&#xA;   &lt;span class=&#34;na&#34;&gt;lock_passwd&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;&#xA;   &lt;span class=&#34;na&#34;&gt;ssh_authorized_keys&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;     &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKcGHk43LnUeM4MZne9Za3R3iA7mvFNI10AKcOtID2i+ user@key&lt;/span&gt;&#xA;&lt;span class=&#34;na&#34;&gt;write_files&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;  &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;path&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;/etc/NetworkManager/system-connections/enX0.nmconnection&lt;/span&gt;&#xA;    &lt;span class=&#34;na&#34;&gt;owner&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;root:root&lt;/span&gt;&#xA;    &lt;span class=&#34;na&#34;&gt;permissions&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;0600&amp;#39;&lt;/span&gt;&#xA;    &lt;span class=&#34;na&#34;&gt;content&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;pi&#34;&gt;|&lt;/span&gt;&#xA;      &lt;span class=&#34;s&#34;&gt;[connection]&lt;/span&gt;&#xA;      &lt;span class=&#34;s&#34;&gt;id=enX0&lt;/span&gt;&#xA;      &lt;span class=&#34;s&#34;&gt;type=ethernet&lt;/span&gt;&#xA;      &lt;span class=&#34;s&#34;&gt;autoconnect-priority=-999&lt;/span&gt;&#xA;      &lt;span class=&#34;s&#34;&gt;interface-name=enX0&lt;/span&gt;&#xA;&#xA;      &lt;span class=&#34;s&#34;&gt;[ethernet]&lt;/span&gt;&#xA;&#xA;      &lt;span class=&#34;s&#34;&gt;[ipv4]&lt;/span&gt;&#xA;      &lt;span class=&#34;s&#34;&gt;address1=10.0.0.10/27,10.0.0.1&lt;/span&gt;&#xA;      &lt;span class=&#34;s&#34;&gt;dns=10.0.0.11;10.0.0.12;&lt;/span&gt;&#xA;      &lt;span class=&#34;s&#34;&gt;method=manual&lt;/span&gt;&#xA;      &lt;span class=&#34;s&#34;&gt;route1=10.0.0.96/12,10.0.0.180&lt;/span&gt;&#xA;&#xA;      &lt;span class=&#34;s&#34;&gt;[ipv6]&lt;/span&gt;&#xA;      &lt;span class=&#34;s&#34;&gt;addr-gen-mode=eui64&lt;/span&gt;&#xA;      &lt;span class=&#34;s&#34;&gt;method=auto&lt;/span&gt;&#xA;&#xA;      &lt;span class=&#34;s&#34;&gt;[proxy]&lt;/span&gt;&#xA;  &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;path&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;/etc/bashrc&lt;/span&gt;&#xA;    &lt;span class=&#34;na&#34;&gt;content&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;pi&#34;&gt;|&lt;/span&gt;&#xA;      &lt;span class=&#34;s&#34;&gt;psg() {&lt;/span&gt;&#xA;      &lt;span class=&#34;s&#34;&gt;/bin/ps -ef |grep $* | grep -v grep | grep -v /usr/local/bin/psg&lt;/span&gt;&#xA;      &lt;span class=&#34;s&#34;&gt;}&lt;/span&gt;&#xA;      &lt;span class=&#34;s&#34;&gt;l() {&lt;/span&gt;&#xA;      &lt;span class=&#34;s&#34;&gt;ls -alh&lt;/span&gt;&#xA;      &lt;span class=&#34;s&#34;&gt;}&lt;/span&gt;&#xA;    &lt;span class=&#34;na&#34;&gt;append&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&#xA;&lt;span class=&#34;na&#34;&gt;runcmd&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;  &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;pi&#34;&gt;[&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;systemctl&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;disable&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;--now&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;--no-block&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;firewalld&lt;/span&gt; &lt;span class=&#34;pi&#34;&gt;]&lt;/span&gt;&#xA;  &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;localectl set-locale C.UTF-8&lt;/span&gt;&#xA;  &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;grubby --update-kernel ALL --args selinux=0&lt;/span&gt;&#xA;  &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;setenforce &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;&#xA;  &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;pi&#34;&gt;|&lt;/span&gt;&#xA;    &lt;span class=&#34;s&#34;&gt;cat &amp;gt;&amp;gt; /etc/hosts &amp;lt;&amp;lt;EOF&lt;/span&gt;&#xA;    &lt;span class=&#34;s&#34;&gt;10.0.0.10 k0adm02&lt;/span&gt;&#xA;    &lt;span class=&#34;s&#34;&gt;10.0.0.11 k0adm03&lt;/span&gt;&#xA;    &lt;span class=&#34;s&#34;&gt;10.0.0.12 k0wrk03&lt;/span&gt;&#xA;    &lt;span class=&#34;s&#34;&gt;10.0.0.13 k0wrk02&lt;/span&gt;&#xA;    &lt;span class=&#34;s&#34;&gt;10.0.0.14 k0wrk01&lt;/span&gt;&#xA;    &lt;span class=&#34;s&#34;&gt;10.0.0.15 k0adm01&lt;/span&gt;&#xA;    &lt;span class=&#34;s&#34;&gt;EOF&lt;/span&gt;&#xA;  &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;pi&#34;&gt;[&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;nmcli&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;general&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;hostname&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;pi&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;pi&#34;&gt;]&lt;/span&gt;&#xA;  &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;rm -rf /etc/machine-id&lt;/span&gt;&#xA;  &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;rm -rf /var/lib/dbus/machine-id&lt;/span&gt;&#xA;  &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;systemd-machine-id-setup&lt;/span&gt;&#xA;  &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;nmcli connection reload&lt;/span&gt;&#xA;  &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;nmcli connection up enX0&lt;/span&gt;&#xA;  &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;pi&#34;&gt;[&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;systemctl&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;restart&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;--no-block&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;sshd&lt;/span&gt; &lt;span class=&#34;pi&#34;&gt;]&lt;/span&gt;&#xA;  &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;swapoff -a&lt;/span&gt;&#xA;  &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;sed -e &amp;#39;/swap/ s/^#*/#/&amp;#39; -i /etc/fstab&lt;/span&gt;&#xA;  &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;systemctl mask swap.target&lt;/span&gt;&#xA;  &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;systemctl enable xe-linux-distribution --now&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Reflash LSI MEGARAID to HBA</title>
      <link>/docs/linux/lsi-megaraid-to-hba/</link>
      <pubDate>Tue, 28 Nov 2023 22:47:48 +0000</pubDate>
      <guid>/docs/linux/lsi-megaraid-to-hba/</guid>
      <description>&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_resources&#34;&gt;Resources&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;Prerequisits:&lt;br/&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;ulist&#34;&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;LSI MEGARAID i9341-8i&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;maybe sas cable&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;maybe sas drive&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;possibility to attach card to board (for example m.2 to PCIe 3.0 16x riser :-))&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;for above you need additional source for 12V since m.2 do not cover 12V&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;maybe whole power supply&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_introduction&#34;&gt;Introduction&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;We will try to flash MEGARAID using IT binary that efectvelly converts it to HBA disabling hardware RAID and opening possibility to connect and use any sata/sas drive without original flash limitations.&lt;br/&gt;&lt;/p&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Cloud Init - UBUNTU</title>
      <link>/docs/cloud_and_kube/cloud-init-ubuntu/</link>
      <pubDate>Tue, 28 Mar 2023 00:00:00 +0000</pubDate>
      <guid>/docs/cloud_and_kube/cloud-init-ubuntu/</guid>
      <description>&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_cloud_init_ubuntu&#34;&gt;Cloud init - UBUNTU&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;rouge highlight&#34;&gt;&lt;code data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;c&#34;&gt;#cloud-config&lt;/span&gt;&#xA;&lt;span class=&#34;nb&#34;&gt;users&lt;/span&gt;:&#xA; - default&#xA; - name: backdoor&#xA;   &lt;span class=&#34;nb&#34;&gt;sudo&lt;/span&gt;: &lt;span class=&#34;nv&#34;&gt;ALL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=(&lt;/span&gt;ALL&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; NOPASSWD:ALL&#xA;   lock_passwd: &lt;span class=&#34;nb&#34;&gt;false&#xA;   &lt;/span&gt;passwd: &lt;span class=&#34;nv&#34;&gt;$6$MFhXlUHt$JG&lt;/span&gt;.sn2M4ReeZ.V/TDs8AWJzhA1anX0iUbE0WvfR8v/8d4eGv8v6EwhyiKO.6VixMaC8/dG.YQce01QV8w1.dZ0&#xA; - name: root&#xA;   lock_passwd: &lt;span class=&#34;nb&#34;&gt;false&#xA;   &lt;/span&gt;ssh_authorized_keys:&#xA;     - ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOiasj/u8jZ5jfVeCGz7XLzQAAHpgF6+OkfoIm4Wyxax root@instance2&#xA; - name: opc&#xA;   lock_passwd: &lt;span class=&#34;nb&#34;&gt;false&#xA;   &lt;/span&gt;ssh_authorized_keys:&#xA;     - ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHRU8OV9UqSkonqIeuGQpAl4XnybtaKzjehLqosjKVGo jguzik&#xA;write_files:&#xA;- path: /etc/bash.bashrc&#xA;  content: |&#xA;    f2bc&lt;span class=&#34;o&#34;&gt;(){&lt;/span&gt;&#xA;    fail2ban-client status|awk &lt;span class=&#34;nt&#34;&gt;-F&lt;/span&gt;: &lt;span class=&#34;s1&#34;&gt;&amp;#39;/Jail list:/ { split($2,jail,&amp;#34;,&amp;#34;) ; for (i in jail) { gsub(/[\t ]/,&amp;#34;&amp;#34;,jail[i]); system(&amp;#34;fail2ban-client status &amp;#34;jail[i]); }; }&amp;#39;&lt;/span&gt;&#xA;    &lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;&#xA;    psg&lt;span class=&#34;o&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;&#xA;    /bin/ps &lt;span class=&#34;nt&#34;&gt;-ef&lt;/span&gt; |grep &lt;span class=&#34;nv&#34;&gt;$*&lt;/span&gt; | &lt;span class=&#34;nb&#34;&gt;grep&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;-v&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;grep&lt;/span&gt; | &lt;span class=&#34;nb&#34;&gt;grep&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;-v&lt;/span&gt; /usr/local/bin/psg&#xA;    &lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;&#xA;    l&lt;span class=&#34;o&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;&#xA;    &lt;span class=&#34;nb&#34;&gt;ls&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;-alh&lt;/span&gt;&#xA;    &lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;&#xA;    &lt;span class=&#34;nb&#34;&gt;alias &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;kubectl&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;k0s kubectl&amp;#39;&lt;/span&gt;&#xA;    &lt;span class=&#34;c&#34;&gt;# Automatically add completion for all aliases to commands having completion functions&lt;/span&gt;&#xA;    &lt;span class=&#34;k&#34;&gt;function &lt;/span&gt;alias_completion &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;&#xA;        &lt;span class=&#34;nb&#34;&gt;local &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;namespace&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;alias_completion&amp;#34;&lt;/span&gt;&#xA;&#xA;        &lt;span class=&#34;c&#34;&gt;# parse function based completion definitions, where capture group 2 =&amp;gt; function and 3 =&amp;gt; trigger&lt;/span&gt;&#xA;        &lt;span class=&#34;nb&#34;&gt;local &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;compl_regex&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;complete( +[^ ]+)* -F ([^ ]+) (&amp;#34;[^&amp;#34;]+&amp;#34;|[^ ]+)&amp;#39;&lt;/span&gt;&#xA;        &lt;span class=&#34;c&#34;&gt;# parse alias definitions, where capture group 1 =&amp;gt; trigger, 2 =&amp;gt; command, 3 =&amp;gt; command arguments&lt;/span&gt;&#xA;        &lt;span class=&#34;nb&#34;&gt;local &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;alias_regex&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;alias ([^=]+)=&amp;#39;(&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\&amp;#34;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;[^&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\&amp;#34;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;]+&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\&amp;#34;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;|[^ ]+)(( +[^ ]+)*)&amp;#39;&amp;#34;&lt;/span&gt;&#xA;&#xA;        &lt;span class=&#34;c&#34;&gt;# create array of function completion triggers, keeping multi-word triggers together&lt;/span&gt;&#xA;        &lt;span class=&#34;nb&#34;&gt;eval&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;local completions=(&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;$(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;complete&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;-p&lt;/span&gt; | &lt;span class=&#34;nb&#34;&gt;sed&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;-Ene&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;/&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$compl_regex&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;/s//&amp;#39;&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\3&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#39;/p&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;)&amp;#34;&lt;/span&gt;&#xA;        &lt;span class=&#34;o&#34;&gt;((&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;${#&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;completions&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[@]&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; 0 &lt;span class=&#34;o&#34;&gt;))&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;return &lt;/span&gt;0&#xA;&#xA;        &lt;span class=&#34;c&#34;&gt;# create temporary file for wrapper functions and completions&lt;/span&gt;&#xA;        &lt;span class=&#34;nb&#34;&gt;rm&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;-f&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;/tmp/&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;namespace&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;-*.tmp&amp;#34;&lt;/span&gt; &lt;span class=&#34;c&#34;&gt;# preliminary cleanup&lt;/span&gt;&#xA;        &lt;span class=&#34;nb&#34;&gt;local &lt;/span&gt;tmp_file&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;tmp_file&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;$(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;mktemp&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;/tmp/&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;namespace&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;RANDOM&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;XXX.tmp&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;return &lt;/span&gt;1&#xA;&#xA;        &lt;span class=&#34;nb&#34;&gt;local &lt;/span&gt;completion_loader&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;completion_loader&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;$(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;complete&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;-p&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;-D&lt;/span&gt; 2&amp;gt;/dev/null | &lt;span class=&#34;nb&#34;&gt;sed&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;-Ene&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;s/.* -F ([^ ]*).*/\1/p&amp;#39;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&#xA;        &lt;span class=&#34;c&#34;&gt;# read in &amp;#34;&amp;lt;alias&amp;gt; &amp;#39;&amp;lt;aliased command&amp;gt;&amp;#39; &amp;#39;&amp;lt;command args&amp;gt;&amp;#39;&amp;#34; lines from defined aliases&lt;/span&gt;&#xA;        &lt;span class=&#34;nb&#34;&gt;local &lt;/span&gt;line&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;while &lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;read &lt;/span&gt;line&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;do&#xA;            &lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;eval&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;local alias_tokens; alias_tokens=(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$line&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;)&amp;#34;&lt;/span&gt; 2&amp;gt;/dev/null &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;continue&lt;/span&gt; &lt;span class=&#34;c&#34;&gt;# some alias arg patterns cause an eval parse error&lt;/span&gt;&#xA;            &lt;span class=&#34;nb&#34;&gt;local &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;alias_name&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;alias_tokens&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[0]&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;alias_cmd&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;alias_tokens&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[1]&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;alias_args&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;alias_tokens&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[2]# &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&#xA;            &lt;span class=&#34;c&#34;&gt;# skip aliases to pipes, boolean control structures and other command lists&lt;/span&gt;&#xA;            &lt;span class=&#34;c&#34;&gt;# (leveraging that eval errs out if $alias_args contains unquoted shell metacharacters)&lt;/span&gt;&#xA;            &lt;span class=&#34;nb&#34;&gt;eval&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;local alias_arg_words; alias_arg_words=(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$alias_args&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;)&amp;#34;&lt;/span&gt; 2&amp;gt;/dev/null &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;continue&lt;/span&gt;&#xA;            &lt;span class=&#34;c&#34;&gt;# avoid expanding wildcards&lt;/span&gt;&#xA;            &lt;span class=&#34;nb&#34;&gt;read&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;-a&lt;/span&gt; alias_arg_words &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$alias_args&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&#xA;            &lt;span class=&#34;c&#34;&gt;# skip alias if there is no completion function triggered by the aliased command&lt;/span&gt;&#xA;            &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[[&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;completions&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[*]&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; &amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;~ &lt;span class=&#34;s2&#34;&gt;&amp;#34; &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$alias_cmd&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; &amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;then&#xA;                if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[[&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;-n&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$completion_loader&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;&#xA;                    &lt;span class=&#34;c&#34;&gt;# force loading of completions for the aliased command&lt;/span&gt;&#xA;                    &lt;span class=&#34;nb&#34;&gt;eval&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$completion_loader&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$alias_cmd&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;                    &lt;span class=&#34;c&#34;&gt;# 124 means completion loader was successful&lt;/span&gt;&#xA;                    &lt;span class=&#34;o&#34;&gt;[[&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$?&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;-eq&lt;/span&gt; 124 &lt;span class=&#34;o&#34;&gt;]]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;continue&#xA;                    &lt;/span&gt;completions+&lt;span class=&#34;o&#34;&gt;=(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$alias_cmd&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;&#xA;                &lt;span class=&#34;k&#34;&gt;else&#xA;                    continue&#xA;                fi&#xA;            fi&#xA;            &lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;local &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;new_completion&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;$(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;complete&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;-p&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$alias_cmd&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;&#xA;            &lt;span class=&#34;c&#34;&gt;# create a wrapper inserting the alias arguments if any&lt;/span&gt;&#xA;            &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[[&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;-n&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$alias_args&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;then&#xA;                &lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;local &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;compl_func&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;new_completion&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/#* -F /&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;compl_func&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;compl_func&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;%% *&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;                &lt;span class=&#34;c&#34;&gt;# avoid recursive call loops by ignoring our own functions&lt;/span&gt;&#xA;                &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[[&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;compl_func&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;#_&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$namespace&lt;/span&gt;::&lt;span class=&#34;k&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$compl_func&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;then&#xA;                    &lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;local &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;compl_wrapper&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;_&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;namespace&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;alias_name&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;                        &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;function &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$compl_wrapper&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; {&#xA;                            (( COMP_CWORD += &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;${#&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;alias_arg_words&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[@]&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; ))&#xA;                            COMP_WORDS=(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$alias_cmd&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$alias_args&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; &lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\$&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;{COMP_WORDS[@]:1})&#xA;                            (( COMP_POINT -= &lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\$&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;{#COMP_LINE} ))&#xA;                            COMP_LINE=&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\$&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;{COMP_LINE/&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$alias_name&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$alias_cmd&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$alias_args&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;}&#xA;                            (( COMP_POINT += &lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\$&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;{#COMP_LINE} ))&#xA;                            &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$compl_func&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&#xA;                        }&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$tmp_file&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;                        &lt;span class=&#34;nv&#34;&gt;new_completion&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;new_completion&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/ -F &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$compl_func&lt;/span&gt;&lt;span class=&#34;p&#34;&gt; / -F &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$compl_wrapper&lt;/span&gt;&lt;span class=&#34;p&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;                &lt;span class=&#34;k&#34;&gt;fi&#xA;            fi&lt;/span&gt;&#xA;&#xA;            &lt;span class=&#34;c&#34;&gt;# replace completion trigger by alias&lt;/span&gt;&#xA;            &lt;span class=&#34;nv&#34;&gt;new_completion&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;new_completion&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;% *&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$alias_name&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;            &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$new_completion&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$tmp_file&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;        &lt;span class=&#34;k&#34;&gt;done&lt;/span&gt; &amp;lt; &amp;lt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;alias&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;-p&lt;/span&gt; | &lt;span class=&#34;nb&#34;&gt;sed&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;-Ene&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;s/&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$alias_regex&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\1&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; &amp;#39;&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\2&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#39; &amp;#39;&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\3&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#39;/p&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;&#xA;        &lt;span class=&#34;nb&#34;&gt;source&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$tmp_file&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;rm&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;-f&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$tmp_file&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;    &lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; alias_completion&#xA;  append: &lt;span class=&#34;nb&#34;&gt;true&lt;/span&gt;&#xA;- path: /etc/ssh/sshd_config&#xA;  content: |&#xA;    Port 44662&#xA;  append: &lt;span class=&#34;nb&#34;&gt;true&#xA;&lt;/span&gt;package_update: &lt;span class=&#34;nb&#34;&gt;true&#xA;&lt;/span&gt;package_upgrade: &lt;span class=&#34;nb&#34;&gt;true&#xA;&lt;/span&gt;packages:&#xA;  - net-tools&#xA;  - iptables-persistent&#xA;  - vim&#xA;runcmd:&#xA;  - &lt;span class=&#34;nb&#34;&gt;echo &lt;/span&gt;overlay | &lt;span class=&#34;nb&#34;&gt;sudo tee&lt;/span&gt; /etc/modules-load.d/overlay.conf&#xA;  - &lt;span class=&#34;nb&#34;&gt;echo &lt;/span&gt;br_netfilter | &lt;span class=&#34;nb&#34;&gt;sudo tee&lt;/span&gt; /etc/modules-load.d/br_netfilter.conf&#xA;  - |&#xA;    &lt;span class=&#34;nb&#34;&gt;cat&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; /etc/sysctl.d/99-kubernetes-cri.conf &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;no&#34;&gt;EOF&lt;/span&gt;&lt;span class=&#34;sh&#34;&gt;&#xA;    net.bridge.bridge-nf-call-iptables  = 1&#xA;    net.ipv4.ip_forward                 = 1&#xA;    net.bridge.bridge-nf-call-ip6tables = 1&#xA;&lt;/span&gt;&lt;span class=&#34;no&#34;&gt;    EOF&#xA;&lt;/span&gt;  - sysctl &lt;span class=&#34;nt&#34;&gt;--system&lt;/span&gt;&#xA;  - &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt; systemctl, daemon-reload &lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&#xA;  - &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt; systemctl, &lt;span class=&#34;nb&#34;&gt;enable&lt;/span&gt;, iptables-persistent &lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&#xA;  - &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt; systemctl, start, iptables-persistent &lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&#xA;  - iptables &lt;span class=&#34;nt&#34;&gt;-I&lt;/span&gt; INPUT &lt;span class=&#34;nt&#34;&gt;-j&lt;/span&gt; ACCEPT&#xA;  - &lt;span class=&#34;nb&#34;&gt;sudo &lt;/span&gt;iptables-save &lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; /etc/iptables/rules.v4&#xA;&#xA;&#xA;  &lt;span class=&#34;nb&#34;&gt;sed&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;-i&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;-e&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;s/#Port.*/Port 44662/g&amp;#39;&lt;/span&gt; /etc/ssh/sshd_config&#xA;  systemctl restart sshd&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Cloud Init - OL9</title>
      <link>/docs/cloud_and_kube/cloud-init/</link>
      <pubDate>Tue, 14 Mar 2023 10:33:48 +0000</pubDate>
      <guid>/docs/cloud_and_kube/cloud-init/</guid>
      <description>&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_cloud_init_usefull&#34;&gt;Cloud-init usefull&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;1LoveOracle!!&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;rouge highlight&#34;&gt;&lt;code data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#cloud-config12&lt;/span&gt;&#xA;&lt;span class=&#34;na&#34;&gt;users&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA; &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;default&lt;/span&gt;&#xA; &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;backdoor&lt;/span&gt;&#xA;   &lt;span class=&#34;na&#34;&gt;sudo&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;ALL=(ALL) NOPASSWD:ALL&lt;/span&gt;&#xA;   &lt;span class=&#34;na&#34;&gt;lock_passwd&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;&#xA;   &lt;span class=&#34;na&#34;&gt;passwd&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;$6$MFhXlUHt$JG.sn2M4ReeZ.V/TDs8AWJzhA1anX0iUbE0WvfR8v/8d4eGv8v6EwhyiKO.6VixMaC8/dG.YQce01QV8w1.dZ0&lt;/span&gt;&#xA; &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;root&lt;/span&gt;&#xA;   &lt;span class=&#34;na&#34;&gt;lock_passwd&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;&#xA;   &lt;span class=&#34;na&#34;&gt;ssh_authorized_keys&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;     &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOiasj/u8jZ5jfVeCGz7XLzQAAHpgF6+OkfoIm4Wyxax root@instance2&lt;/span&gt;&#xA; &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;opc&lt;/span&gt;&#xA;   &lt;span class=&#34;na&#34;&gt;lock_passwd&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;&#xA;   &lt;span class=&#34;na&#34;&gt;ssh_authorized_keys&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;     &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHRU8OV9UqSkonqIeuGQpAl4XnybtaKzjehLqosjKVGo jguzik&lt;/span&gt;&#xA;&lt;span class=&#34;na&#34;&gt;write_files&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;&lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;path&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;/etc/bashrc&lt;/span&gt;&#xA;  &lt;span class=&#34;na&#34;&gt;content&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;pi&#34;&gt;|&lt;/span&gt;&#xA;    &lt;span class=&#34;s&#34;&gt;f2bc(){&lt;/span&gt;&#xA;    &lt;span class=&#34;s&#34;&gt;fail2ban-client status|awk -F: &amp;#39;/Jail list:/ { split($2,jail,&amp;#34;,&amp;#34;) ; for (i in jail) { gsub(/[\t ]/,&amp;#34;&amp;#34;,jail[i]); system(&amp;#34;fail2ban-client status &amp;#34;jail[i]); }; }&amp;#39;&lt;/span&gt;&#xA;    &lt;span class=&#34;s&#34;&gt;}&lt;/span&gt;&#xA;    &lt;span class=&#34;s&#34;&gt;psg() {&lt;/span&gt;&#xA;    &lt;span class=&#34;s&#34;&gt;/bin/ps -ef |grep $* | grep -v grep | grep -v /usr/local/bin/psg&lt;/span&gt;&#xA;    &lt;span class=&#34;s&#34;&gt;}&lt;/span&gt;&#xA;    &lt;span class=&#34;s&#34;&gt;l() {&lt;/span&gt;&#xA;    &lt;span class=&#34;s&#34;&gt;ls -alh&lt;/span&gt;&#xA;    &lt;span class=&#34;s&#34;&gt;}&lt;/span&gt;&#xA;    &lt;span class=&#34;s&#34;&gt;alias kubectl=&amp;#39;k0s kubectl&amp;#39;&lt;/span&gt;&#xA;    &lt;span class=&#34;s&#34;&gt;# Automatically add completion for all aliases to commands having completion functions&lt;/span&gt;&#xA;    &lt;span class=&#34;s&#34;&gt;function alias_completion {&lt;/span&gt;&#xA;        &lt;span class=&#34;s&#34;&gt;local namespace=&amp;#34;alias_completion&amp;#34;&lt;/span&gt;&#xA;&#xA;        &lt;span class=&#34;s&#34;&gt;# parse function based completion definitions, where capture group 2 =&amp;gt; function and 3 =&amp;gt; trigger&lt;/span&gt;&#xA;        &lt;span class=&#34;s&#34;&gt;local compl_regex=&amp;#39;complete( +[^ ]+)* -F ([^ ]+) (&amp;#34;[^&amp;#34;]+&amp;#34;|[^ ]+)&amp;#39;&lt;/span&gt;&#xA;        &lt;span class=&#34;s&#34;&gt;# parse alias definitions, where capture group 1 =&amp;gt; trigger, 2 =&amp;gt; command, 3 =&amp;gt; command arguments&lt;/span&gt;&#xA;        &lt;span class=&#34;s&#34;&gt;local alias_regex=&amp;#34;alias ([^=]+)=&amp;#39;(\&amp;#34;[^\&amp;#34;]+\&amp;#34;|[^ ]+)(( +[^ ]+)*)&amp;#39;&amp;#34;&lt;/span&gt;&#xA;&#xA;        &lt;span class=&#34;s&#34;&gt;# create array of function completion triggers, keeping multi-word triggers together&lt;/span&gt;&#xA;        &lt;span class=&#34;s&#34;&gt;eval &amp;#34;local completions=($(complete -p | sed -Ene &amp;#34;/$compl_regex/s//&amp;#39;\3&amp;#39;/p&amp;#34;))&amp;#34;&lt;/span&gt;&#xA;        &lt;span class=&#34;s&#34;&gt;(( ${#completions[@]} == 0 )) &amp;amp;&amp;amp; return 0&lt;/span&gt;&#xA;&#xA;        &lt;span class=&#34;s&#34;&gt;# create temporary file for wrapper functions and completions&lt;/span&gt;&#xA;        &lt;span class=&#34;s&#34;&gt;rm -f &amp;#34;/tmp/${namespace}-*.tmp&amp;#34; # preliminary cleanup&lt;/span&gt;&#xA;        &lt;span class=&#34;s&#34;&gt;local tmp_file; tmp_file=&amp;#34;$(mktemp &amp;#34;/tmp/${namespace}-${RANDOM}XXX.tmp&amp;#34;)&amp;#34; || return 1&lt;/span&gt;&#xA;&#xA;        &lt;span class=&#34;s&#34;&gt;local completion_loader; completion_loader=&amp;#34;$(complete -p -D 2&amp;gt;/dev/null | sed -Ene &amp;#39;s/.* -F ([^ ]*).*/\1/p&amp;#39;)&amp;#34;&lt;/span&gt;&#xA;&#xA;        &lt;span class=&#34;s&#34;&gt;# read in &amp;#34;&amp;lt;alias&amp;gt; &amp;#39;&amp;lt;aliased command&amp;gt;&amp;#39; &amp;#39;&amp;lt;command args&amp;gt;&amp;#39;&amp;#34; lines from defined aliases&lt;/span&gt;&#xA;        &lt;span class=&#34;s&#34;&gt;local line; while read line; do&lt;/span&gt;&#xA;            &lt;span class=&#34;s&#34;&gt;eval &amp;#34;local alias_tokens; alias_tokens=($line)&amp;#34; 2&amp;gt;/dev/null || continue # some alias arg patterns cause an eval parse error&lt;/span&gt;&#xA;            &lt;span class=&#34;s&#34;&gt;local alias_name=&amp;#34;${alias_tokens[0]}&amp;#34; alias_cmd=&amp;#34;${alias_tokens[1]}&amp;#34; alias_args=&amp;#34;${alias_tokens[2]# }&amp;#34;&lt;/span&gt;&#xA;&#xA;            &lt;span class=&#34;s&#34;&gt;# skip aliases to pipes, boolean control structures and other command lists&lt;/span&gt;&#xA;            &lt;span class=&#34;s&#34;&gt;# (leveraging that eval errs out if $alias_args contains unquoted shell metacharacters)&lt;/span&gt;&#xA;            &lt;span class=&#34;s&#34;&gt;eval &amp;#34;local alias_arg_words; alias_arg_words=($alias_args)&amp;#34; 2&amp;gt;/dev/null || continue&lt;/span&gt;&#xA;            &lt;span class=&#34;s&#34;&gt;# avoid expanding wildcards&lt;/span&gt;&#xA;            &lt;span class=&#34;s&#34;&gt;read -a alias_arg_words &amp;lt;&amp;lt;&amp;lt; &amp;#34;$alias_args&amp;#34;&lt;/span&gt;&#xA;&#xA;            &lt;span class=&#34;s&#34;&gt;# skip alias if there is no completion function triggered by the aliased command&lt;/span&gt;&#xA;            &lt;span class=&#34;s&#34;&gt;if [[ ! &amp;#34; ${completions[*]} &amp;#34; =~ &amp;#34; $alias_cmd &amp;#34; ]]; then&lt;/span&gt;&#xA;                &lt;span class=&#34;s&#34;&gt;if [[ -n &amp;#34;$completion_loader&amp;#34; ]]; then&lt;/span&gt;&#xA;                    &lt;span class=&#34;s&#34;&gt;# force loading of completions for the aliased command&lt;/span&gt;&#xA;                    &lt;span class=&#34;s&#34;&gt;eval &amp;#34;$completion_loader $alias_cmd&amp;#34;&lt;/span&gt;&#xA;                    &lt;span class=&#34;s&#34;&gt;# 124 means completion loader was successful&lt;/span&gt;&#xA;                    &lt;span class=&#34;s&#34;&gt;[[ $? -eq 124 ]] || continue&lt;/span&gt;&#xA;                    &lt;span class=&#34;s&#34;&gt;completions+=($alias_cmd)&lt;/span&gt;&#xA;                &lt;span class=&#34;s&#34;&gt;else&lt;/span&gt;&#xA;                    &lt;span class=&#34;s&#34;&gt;continue&lt;/span&gt;&#xA;                &lt;span class=&#34;s&#34;&gt;fi&lt;/span&gt;&#xA;            &lt;span class=&#34;s&#34;&gt;fi&lt;/span&gt;&#xA;            &lt;span class=&#34;s&#34;&gt;local new_completion=&amp;#34;$(complete -p &amp;#34;$alias_cmd&amp;#34;)&amp;#34;&lt;/span&gt;&#xA;&#xA;            &lt;span class=&#34;s&#34;&gt;# create a wrapper inserting the alias arguments if any&lt;/span&gt;&#xA;            &lt;span class=&#34;s&#34;&gt;if [[ -n $alias_args ]]; then&lt;/span&gt;&#xA;                &lt;span class=&#34;s&#34;&gt;local compl_func=&amp;#34;${new_completion/#* -F /}&amp;#34;; compl_func=&amp;#34;${compl_func%% *}&amp;#34;&lt;/span&gt;&#xA;                &lt;span class=&#34;s&#34;&gt;# avoid recursive call loops by ignoring our own functions&lt;/span&gt;&#xA;                &lt;span class=&#34;s&#34;&gt;if [[ &amp;#34;${compl_func#_$namespace::}&amp;#34; == $compl_func ]]; then&lt;/span&gt;&#xA;                    &lt;span class=&#34;s&#34;&gt;local compl_wrapper=&amp;#34;_${namespace}::${alias_name}&amp;#34;&lt;/span&gt;&#xA;                        &lt;span class=&#34;s&#34;&gt;echo &amp;#34;function $compl_wrapper {&lt;/span&gt;&#xA;                            &lt;span class=&#34;s&#34;&gt;(( COMP_CWORD += ${#alias_arg_words[@]} ))&lt;/span&gt;&#xA;                            &lt;span class=&#34;s&#34;&gt;COMP_WORDS=($alias_cmd $alias_args \${COMP_WORDS[@]:1})&lt;/span&gt;&#xA;                            &lt;span class=&#34;s&#34;&gt;(( COMP_POINT -= \${#COMP_LINE} ))&lt;/span&gt;&#xA;                            &lt;span class=&#34;s&#34;&gt;COMP_LINE=\${COMP_LINE/$alias_name/$alias_cmd $alias_args}&lt;/span&gt;&#xA;                            &lt;span class=&#34;s&#34;&gt;(( COMP_POINT += \${#COMP_LINE} ))&lt;/span&gt;&#xA;                            &lt;span class=&#34;s&#34;&gt;$compl_func&lt;/span&gt;&#xA;                        &lt;span class=&#34;s&#34;&gt;}&amp;#34; &amp;gt;&amp;gt; &amp;#34;$tmp_file&amp;#34;&lt;/span&gt;&#xA;                        &lt;span class=&#34;s&#34;&gt;new_completion=&amp;#34;${new_completion/ -F $compl_func / -F $compl_wrapper }&amp;#34;&lt;/span&gt;&#xA;                &lt;span class=&#34;s&#34;&gt;fi&lt;/span&gt;&#xA;            &lt;span class=&#34;s&#34;&gt;fi&lt;/span&gt;&#xA;&#xA;            &lt;span class=&#34;s&#34;&gt;# replace completion trigger by alias&lt;/span&gt;&#xA;            &lt;span class=&#34;s&#34;&gt;new_completion=&amp;#34;${new_completion% *} $alias_name&amp;#34;&lt;/span&gt;&#xA;            &lt;span class=&#34;s&#34;&gt;echo &amp;#34;$new_completion&amp;#34; &amp;gt;&amp;gt; &amp;#34;$tmp_file&amp;#34;&lt;/span&gt;&#xA;        &lt;span class=&#34;s&#34;&gt;done &amp;lt; &amp;lt;(alias -p | sed -Ene &amp;#34;s/$alias_regex/\1 &amp;#39;\2&amp;#39; &amp;#39;\3&amp;#39;/p&amp;#34;)&lt;/span&gt;&#xA;        &lt;span class=&#34;s&#34;&gt;source &amp;#34;$tmp_file&amp;#34; &amp;amp;&amp;amp; rm -f &amp;#34;$tmp_file&amp;#34;&lt;/span&gt;&#xA;    &lt;span class=&#34;s&#34;&gt;}; alias_completion&lt;/span&gt;&#xA;  &lt;span class=&#34;na&#34;&gt;append&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&#xA;&lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;path&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;/etc/ssh/sshd_config&lt;/span&gt;&#xA;  &lt;span class=&#34;na&#34;&gt;content&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;pi&#34;&gt;|&lt;/span&gt;&#xA;    &lt;span class=&#34;s&#34;&gt;Port 44662&lt;/span&gt;&#xA;  &lt;span class=&#34;na&#34;&gt;append&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&#xA;&lt;span class=&#34;na&#34;&gt;runcmd&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;:&lt;/span&gt;&#xA;  &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;pi&#34;&gt;[&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;firewall-offline-cmd&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;--add-port=44662/tcp&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;--permanent&lt;/span&gt; &lt;span class=&#34;pi&#34;&gt;]&lt;/span&gt;&#xA;  &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;pi&#34;&gt;[&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;systemctl&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;restart&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;--no-block&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;sshd&lt;/span&gt; &lt;span class=&#34;pi&#34;&gt;]&lt;/span&gt;&#xA;  &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;pi&#34;&gt;[&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;systemctl&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;disable&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;--now&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;--no-block&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;firewalld&lt;/span&gt; &lt;span class=&#34;pi&#34;&gt;]&lt;/span&gt;&#xA;  &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;pi&#34;&gt;[&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;systemctl&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;disable&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;--now&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;--no-block&lt;/span&gt;&lt;span class=&#34;pi&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;iscsi&lt;/span&gt; &lt;span class=&#34;pi&#34;&gt;]&lt;/span&gt;&#xA;  &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;timedatectl set-timezone Europe/Warsaw&lt;/span&gt;&#xA;  &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;localectl set-locale C.UTF-8&lt;/span&gt;&#xA;  &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;grubby --update-kernel ALL --args selinux=0&lt;/span&gt;&#xA;  &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;setenforce &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;&#xA;  &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;sed -i --follow-symlinks &amp;#39;s/SELINUX=enforcing/SELINUX=disabled/g&amp;#39; /etc/sysconfig/selinux&lt;/span&gt;&#xA;  &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;echo overlay | sudo tee /etc/modules-load.d/overlay.conf&lt;/span&gt;&#xA;  &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;echo br_netfilter | sudo tee /etc/modules-load.d/br_netfilter.conf&lt;/span&gt;&#xA;  &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;pi&#34;&gt;|&lt;/span&gt;&#xA;    &lt;span class=&#34;s&#34;&gt;cat &amp;gt; /etc/sysctl.d/99-kubernetes-cri.conf &amp;lt;&amp;lt;EOF&lt;/span&gt;&#xA;    &lt;span class=&#34;s&#34;&gt;net.bridge.bridge-nf-call-iptables  = 1&lt;/span&gt;&#xA;    &lt;span class=&#34;s&#34;&gt;net.ipv4.ip_forward                 = 1&lt;/span&gt;&#xA;    &lt;span class=&#34;s&#34;&gt;net.bridge.bridge-nf-call-ip6tables = 1&lt;/span&gt;&#xA;    &lt;span class=&#34;s&#34;&gt;EOF&lt;/span&gt;&#xA;  &lt;span class=&#34;pi&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;sysctl --system&lt;/span&gt;&#xA;  &lt;span class=&#34;c1&#34;&gt;#- |&lt;/span&gt;&#xA;  &lt;span class=&#34;c1&#34;&gt;#  cat &amp;lt;&amp;lt;EOF | sudo tee /etc/yum.repos.d/kubernetes.repo&lt;/span&gt;&#xA;  &lt;span class=&#34;c1&#34;&gt;#  [kubernetes]&lt;/span&gt;&#xA;  &lt;span class=&#34;c1&#34;&gt;#  name=Kubernetes&lt;/span&gt;&#xA;  &lt;span class=&#34;c1&#34;&gt;#  baseurl=https://pkgs.k8s.io/core:/stable:/v1.29/rpm/&lt;/span&gt;&#xA;  &lt;span class=&#34;c1&#34;&gt;#  enabled=1&lt;/span&gt;&#xA;  &lt;span class=&#34;c1&#34;&gt;#  gpgcheck=1&lt;/span&gt;&#xA;  &lt;span class=&#34;c1&#34;&gt;#  repo_gpgcheck=1&lt;/span&gt;&#xA;  &lt;span class=&#34;c1&#34;&gt;#  gpgkey=https://pkgs.k8s.io/core:/stable:/v1.29/rpm/repodata/repomd.xml.key&lt;/span&gt;&#xA;  &lt;span class=&#34;c1&#34;&gt;#  EOF&lt;/span&gt;&#xA;  &lt;span class=&#34;c1&#34;&gt;#- VERSION=1.27&lt;/span&gt;&#xA;  &lt;span class=&#34;c1&#34;&gt;#- OS=CentOS_9_Stream&lt;/span&gt;&#xA;  &lt;span class=&#34;c1&#34;&gt;#- curl -L -o /etc/yum.repos.d/devel:kubic:libcontainers:stable:cri-o:$VERSION.repo https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/$VERSION/$OS/devel:kubic:libcontainers:stable:cri-o:$VERSION.repo&lt;/span&gt;&#xA;  &lt;span class=&#34;c1&#34;&gt;#- mkdir -p /var/lib/crio&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Gitlab Runner helm on arm64</title>
      <link>/docs/cloud_and_kube/gitlab-runner-arm64/</link>
      <pubDate>Tue, 14 Mar 2023 10:33:48 +0000</pubDate>
      <guid>/docs/cloud_and_kube/gitlab-runner-arm64/</guid>
      <description>&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_helm_to_replace_in_helm_deployment&#34;&gt;Helm to replace in helm deployment&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;rouge highlight&#34;&gt;&lt;code data-lang=&#34;bash&#34;&gt;affinity: &lt;span class=&#34;o&#34;&gt;{}&lt;/span&gt;&#xA;checkInterval: 30&#xA;concurrent: 10&#xA;configMaps: &lt;span class=&#34;o&#34;&gt;{}&lt;/span&gt;&#xA;gitlabUrl: https://gitlab.com/&#xA;hostAliases: &lt;span class=&#34;o&#34;&gt;[]&lt;/span&gt;&#xA;image:&#xA;  image: gitlab-org/gitlab-runner&#xA;  registry: registry.gitlab.com&#xA;  tag: ubuntu-v15.9.1&#xA;imagePullPolicy: IfNotPresent&#xA;metrics:&#xA;  enabled: &lt;span class=&#34;nb&#34;&gt;false&#xA;  &lt;/span&gt;port: 9252&#xA;  portName: metrics&#xA;  serviceMonitor:&#xA;    enabled: &lt;span class=&#34;nb&#34;&gt;false&#xA;&lt;/span&gt;nodeSelector: &lt;span class=&#34;o&#34;&gt;{}&lt;/span&gt;&#xA;podAnnotations: &lt;span class=&#34;o&#34;&gt;{}&lt;/span&gt;&#xA;podLabels: &lt;span class=&#34;o&#34;&gt;{}&lt;/span&gt;&#xA;podSecurityContext:&#xA;  fsGroup: 999&#xA;  runAsUser: 999&#xA;priorityClassName: &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&#xA;rbac:&#xA;  clusterWideAccess: &lt;span class=&#34;nb&#34;&gt;true&#xA;  &lt;/span&gt;create: &lt;span class=&#34;nb&#34;&gt;true&#xA;  &lt;/span&gt;podSecurityPolicy:&#xA;    enabled: &lt;span class=&#34;nb&#34;&gt;false&#xA;    &lt;/span&gt;resourceNames:&#xA;    - gitlab-runner&#xA;  rules:&#xA;  - resources:&#xA;    - configmaps&#xA;    - pods&#xA;    - pods/attach&#xA;    - secrets&#xA;    - services&#xA;    verbs:&#xA;    - get&#xA;    - list&#xA;    - watch&#xA;    - create&#xA;    - patch&#xA;    - update&#xA;    - delete&#xA;  - apiGroups:&#xA;    - &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&#xA;    resources:&#xA;    - pods/exec&#xA;    verbs:&#xA;    - create&#xA;    - patch&#xA;    - delete&#xA;resources: &lt;span class=&#34;o&#34;&gt;{}&lt;/span&gt;&#xA;runnerRegistrationToken: GR1348941UZ26_eMsH4386vivVAHQ&#xA;runners:&#xA;  builds: &lt;span class=&#34;o&#34;&gt;{}&lt;/span&gt;&#xA;  cache: &lt;span class=&#34;o&#34;&gt;{}&lt;/span&gt;&#xA;  config: |&#xA;    &lt;span class=&#34;o&#34;&gt;[[&lt;/span&gt;runners]]&#xA;      name &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;00_runner&amp;#34;&lt;/span&gt;&#xA;      &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;runners.kubernetes]&#xA;        privileged &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;true&#xA;        &lt;/span&gt;allow_privilege_escalation &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;true&#xA;        &lt;/span&gt;namespace &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;{{.Release.Namespace}}&amp;#34;&lt;/span&gt;&#xA;        image &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;ubuntu:20.04&amp;#34;&lt;/span&gt;&#xA;        helper_image &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;gitlab/gitlab-runner-helper:arm64-latest&amp;#34;&lt;/span&gt;&#xA;        dns_policy &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;none&amp;#34;&lt;/span&gt;&#xA;        &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;runners.kubernetes.dns_config]&#xA;          nameservers &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;8.8.8.8&amp;#34;&lt;/span&gt;, &lt;span class=&#34;s2&#34;&gt;&amp;#34;8.8.4.4&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&#xA;          searches &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;kubernetes.default&amp;#34;&lt;/span&gt;,]&#xA;          &lt;span class=&#34;o&#34;&gt;[[&lt;/span&gt;runners.kubernetes.dns_config.options]]&#xA;            name &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;ndots&amp;#34;&lt;/span&gt;&#xA;            value &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;&#xA;  helpers: &lt;span class=&#34;o&#34;&gt;{}&lt;/span&gt;&#xA;  services: &lt;span class=&#34;o&#34;&gt;{}&lt;/span&gt;&#xA;secrets: &lt;span class=&#34;o&#34;&gt;[]&lt;/span&gt;&#xA;dnsConfig:&#xA;  options:&#xA;    - name: ndots&#xA;      value: &lt;span class=&#34;s2&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;&#xA;securityContext:&#xA;  allowPrivilegeEscalation: &lt;span class=&#34;nb&#34;&gt;false&#xA;  &lt;/span&gt;capabilities:&#xA;    drop:&#xA;    - ALL&#xA;  privileged: &lt;span class=&#34;nb&#34;&gt;false&#xA;  &lt;/span&gt;readOnlyRootFilesystem: &lt;span class=&#34;nb&#34;&gt;false&#xA;  &lt;/span&gt;runAsNonRoot: &lt;span class=&#34;nb&#34;&gt;true&#xA;&lt;/span&gt;service:&#xA;  enabled: &lt;span class=&#34;nb&#34;&gt;false&#xA;  type&lt;/span&gt;: ClusterIP&#xA;sessionServer:&#xA;  enabled: &lt;span class=&#34;nb&#34;&gt;false&#xA;&lt;/span&gt;terminationGracePeriodSeconds: 3600&#xA;tolerations: &lt;span class=&#34;o&#34;&gt;[]&lt;/span&gt;&#xA;unregisterRunners: &lt;span class=&#34;nb&#34;&gt;true&#xA;&lt;/span&gt;volumeMounts:&#xA;- mountPath: /cache&#xA;  name: cache-volume&#xA;volumes:&#xA;- emptyDir:&#xA;    sizeLimit: 500Mi&#xA;  name: cache-volume&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>ERX Toolbox</title>
      <link>/docs/edgerouterx/erx-toolbox/</link>
      <pubDate>Sun, 19 Feb 2023 00:00:00 +0000</pubDate>
      <guid>/docs/edgerouterx/erx-toolbox/</guid>
      <description>&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_station_statistics&#34;&gt;Station statistics&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;Here some examples how to get statistics for stations connected to UAP&lt;br/&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre&gt;iwconfig &lt;i class=&#34;conum&#34; data-value=&#34;1&#34;&gt;&lt;/i&gt;&lt;b&gt;(1)&lt;/b&gt;&#xA;wlanconfig ath0 list station &lt;i class=&#34;conum&#34; data-value=&#34;2&#34;&gt;&lt;/i&gt;&lt;b&gt;(2)&lt;/b&gt;&#xA;ip -s -h link show dev eth0 &lt;i class=&#34;conum&#34; data-value=&#34;3&#34;&gt;&lt;/i&gt;&lt;b&gt;(3)&lt;/b&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;colist arabic&#34;&gt;&#xA;&lt;table&gt;&#xA;&lt;tbody&gt;&lt;tr&gt;&#xA;&lt;td&gt;&lt;i class=&#34;conum&#34; data-value=&#34;1&#34;&gt;&lt;/i&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;&#xA;&lt;td&gt;get UAP interfaces (&lt;code&gt;&lt;code&gt;iwconfig --help&lt;/code&gt;&lt;/code&gt; for broad info)&lt;br/&gt;&#xA;this can change tx-power also&lt;br/&gt;&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;&lt;i class=&#34;conum&#34; data-value=&#34;2&#34;&gt;&lt;/i&gt;&lt;b&gt;2&lt;/b&gt;&lt;/td&gt;&#xA;&lt;td&gt;get stations statistics on specified UAP interface&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;&lt;i class=&#34;conum&#34; data-value=&#34;3&#34;&gt;&lt;/i&gt;&lt;b&gt;3&lt;/b&gt;&lt;/td&gt;&#xA;&lt;td&gt;stats for interface&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;/tbody&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_pppoe_interface_status_and_logs&#34;&gt;PPPoE interface status and logs&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre&gt;show interfaces pppoe pppoe0&#xA;show interfaces pppoe pppoe0 log&lt;/pre&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Command toolbox</title>
      <link>/docs/linux/centos-toolbox/</link>
      <pubDate>Tue, 06 Apr 2021 13:24:48 +0000</pubDate>
      <guid>/docs/linux/centos-toolbox/</guid>
      <description>&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_linux_disable_rh_subscription_manager&#34;&gt;Linux - Disable RH subscription manager&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;rouge highlight&#34;&gt;&lt;code data-lang=&#34;console&#34;&gt;&lt;span class=&#34;go&#34;&gt;vi /etc/yum/pluginconf.d/subscription-manager.conf&#xA;enabled=0&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_linux_delete_logs_older_than&#34;&gt;Linux - Delete logs older than&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;rouge highlight&#34;&gt;&lt;code data-lang=&#34;console&#34;&gt;&lt;span class=&#34;go&#34;&gt;find /aa/bb -name &amp;#39;*.log&amp;#39; -type f -mtime +30 -exec rm {} +&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_linux_export_amount_of_lines_of_log_to_tar_gz&#34;&gt;Linux - Export amount of lines of log to tar.gz&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;rouge highlight&#34;&gt;&lt;code data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cat&lt;/span&gt; &amp;lt;log_file_name&amp;gt; | &lt;span class=&#34;nb&#34;&gt;wc&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;-l&lt;/span&gt;&#xA;&lt;span class=&#34;nb&#34;&gt;sed&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;-n&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;777850,805947p&amp;#39;&lt;/span&gt; &amp;lt;log_file_name&amp;gt; | &lt;span class=&#34;nb&#34;&gt;gzip&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &amp;lt;output_file_name&amp;gt;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_linux_pack_bunch_of_logs_in_their_own_tar_gz&#34;&gt;Linux - Pack bunch of logs in their own tar.gz&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;rouge highlight&#34;&gt;&lt;code data-lang=&#34;shell&#34;&gt;find &lt;span class=&#34;nb&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;-type&lt;/span&gt; f &lt;span class=&#34;se&#34;&gt;\(&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;-name&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;server.log.2021-02*&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;-name&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;*tar.gz&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\)&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;-exec&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;tar &lt;/span&gt;czvf &lt;span class=&#34;o&#34;&gt;{}&lt;/span&gt;.tar.gz &lt;span class=&#34;o&#34;&gt;{}&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;--remove-files&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_linux_virtualhere_with_legacy_usb_printer&#34;&gt;Linux - VirtualHere with legacy usb printer.&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;This is server-client solution for sharing USB devices over network.&lt;br/&gt;&#xA;If you have old usb printer connected to USB in your linx server you know that cups will not provide high quality printing.&lt;br/&gt;&#xA;So, my HP DeskJet 920c neded encapsulation of usb. Unfortunately freely available usbip is not a solution since on client side I’m using Windows and usbip drivers for windows are not signed. Hard way you can use it but it involves mapping device and starting windows in disabled drivers signing check.&lt;br/&gt;&lt;/p&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Disable bluetooth Centos8/RHEL8</title>
      <link>/docs/linux/bluetoth-disable/</link>
      <pubDate>Fri, 02 Apr 2021 15:20:48 +0200</pubDate>
      <guid>/docs/linux/bluetoth-disable/</guid>
      <description>&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_issue&#34;&gt;Issue&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;You have linux box that is a server. You don’t want / don’t have BT of anykind.&lt;br/&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;List your &lt;kbd&gt;blue*&lt;/kbd&gt; packages, seek for their dependency and if you are satisfied - remove.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre&gt;dnf list blue*&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;In my case needed to remove:&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre&gt;dnf remove bluedevil.x86_64&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Certificate</title>
      <link>/docs/drytek/cert-drytek/</link>
      <pubDate>Sat, 28 Nov 2020 20:07:48 +0000</pubDate>
      <guid>/docs/drytek/cert-drytek/</guid>
      <description>&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_prepare_cert_for_specified_ip_non_existing_anymore&#34;&gt;Prepare cert for specified ip (non-existing anymore)&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;Gen:&lt;br/&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre&gt;83.238.173.46&#xA;--certyfikat CA&#xA;openssl req -x509 -days 365 -newkey rsa:1024  -keyout /etc/ssl/private/ca.key  -out /etc/ssl/ca.crt&#xA;--klucz prywatny&#xA;openssl genrsa -des3 -out 83.238.173.46.key 1024&#xA;--request z vigora do pliku  83.238.173.46.csr&#xA;openssl x509 -req -days 365 -in 83.238.173.46.csr -out 83.238.173.46.crt -CA /etc/ssl/ca.crt -CAkey /etc/ssl/private/ca.key -CAcreateserial -extfile /etc/ssl/x509v3.cnf -extensions x509v3_IPAddr&#xA;--import do vigora&#xA;--utworzenie cert dla usera&#xA;&#xA;openssl req -new -nodes -out jareeq.csr -keyout jareeq.key -days 365 -config openssl.cnf&#xA;openssl x509 -req -days 365 -in jareeq.csr -out jareeq.crt -CA /etc/ssl/ca.crt -CAkey /etc/ssl/private/ca.key -CAcreateserial -extfile /etc/ssl/x509v3.cnf -extensions x509v3_FQDN&#xA;openssl pkcs12 -export -out jareeq.p12 -in jareeq.crt -inkey jareeq.key&lt;/pre&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Connect remote borg backup on wasabi as local resource</title>
      <link>/docs/linux/borg-rsync/</link>
      <pubDate>Wed, 18 Nov 2020 22:47:48 +0000</pubDate>
      <guid>/docs/linux/borg-rsync/</guid>
      <description>&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_mounting_remote_and_reading&#34;&gt;Mounting remote and reading&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;Prerequisits:&lt;br/&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;ulist&#34;&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;borg repository created and pushed to wasabi&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;installed and configred rsync with wasabi&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;First mount remote resource with rsymc mount.&lt;br/&gt;&#xA;You can add &lt;code&gt;-vv&lt;/code&gt; but you should add &lt;code&gt;--vfs-cache-mode writes&lt;/code&gt;, &lt;a href=&#34;https://rclone.org/commands/rclone_mount/&#34;&gt;this&lt;/a&gt; will give you proper feedback for applications, especially mount.&lt;br/&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre&gt;rclone mount --vfs-cache-mode writes  wasabi:borgbackup /media/usb/bulbobackup/bulbo.borg -vv&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;Leave this console open go to next one and type:&lt;br/&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre&gt;borg mount /media/usb/bulbobackup/bulbo.borg /mnt&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;Now you have mounted your archive from remote&lt;br/&gt;&#xA;You can also use:&lt;br/&gt;&lt;/p&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Ums Installation</title>
      <link>/docs/linux/ums-installation/</link>
      <pubDate>Sun, 18 Oct 2020 13:54:47 +0000</pubDate>
      <guid>/docs/linux/ums-installation/</guid>
      <description>&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_reproduced_steps_to_install_ums_on_centos_8&#34;&gt;Reproduced steps to install UMS on CentOS 8.&lt;br/&gt;&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre&gt;dnf install epel-release &lt;i class=&#34;conum&#34; data-value=&#34;1&#34;&gt;&lt;/i&gt;&lt;b&gt;(1)&lt;/b&gt;&#xA;dnf install java-1.8.0-openjdk &lt;i class=&#34;conum&#34; data-value=&#34;2&#34;&gt;&lt;/i&gt;&lt;b&gt;(2)&lt;/b&gt;&#xA;dnf config-manager --set-enabled PowerTools &lt;i class=&#34;conum&#34; data-value=&#34;3&#34;&gt;&lt;/i&gt;&lt;b&gt;(3)&lt;/b&gt;&#xA;dnf install mediainfo &lt;i class=&#34;conum&#34; data-value=&#34;4&#34;&gt;&lt;/i&gt;&lt;b&gt;(4)&lt;/b&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;colist arabic&#34;&gt;&#xA;&lt;table&gt;&#xA;&lt;tbody&gt;&lt;tr&gt;&#xA;&lt;td&gt;&lt;i class=&#34;conum&#34; data-value=&#34;1&#34;&gt;&lt;/i&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;&#xA;&lt;td&gt;a1&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;&lt;i class=&#34;conum&#34; data-value=&#34;2&#34;&gt;&lt;/i&gt;&lt;b&gt;2&lt;/b&gt;&lt;/td&gt;&#xA;&lt;td&gt;ab&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;&lt;i class=&#34;conum&#34; data-value=&#34;3&#34;&gt;&lt;/i&gt;&lt;b&gt;3&lt;/b&gt;&lt;/td&gt;&#xA;&lt;td&gt;bb&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;&lt;i class=&#34;conum&#34; data-value=&#34;4&#34;&gt;&lt;/i&gt;&lt;b&gt;4&lt;/b&gt;&lt;/td&gt;&#xA;&lt;td&gt;cc&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;/tbody&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;Get UMS, from website then:&lt;br/&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre&gt;tar -zxvf UMS-9.8.1-x86_64.tgz ums-9.8.1/&#xA;mv ums-9.8.1/ /opt/&#xA;ln -s /opt/ums-9.8.1/ /opt/ums&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;Let’s create config files&lt;br/&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre&gt;mkdir /etc/ums&#xA;cp /opt/ums/UMS.conf /opt/ums/WEB.conf /etc/ums&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;New user and group for ums&lt;br/&gt;&lt;/p&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Interactive grid - add filter</title>
      <link>/docs/apex/interactive-report-add-filter-with-js/</link>
      <pubDate>Thu, 08 Oct 2020 00:00:00 +0000</pubDate>
      <guid>/docs/apex/interactive-report-add-filter-with-js/</guid>
      <description>&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_interactive_grid_filtering&#34;&gt;Interactive Grid - Filtering&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;rouge highlight&#34;&gt;&lt;code data-lang=&#34;javascript&#34;&gt;&lt;span class=&#34;nx&#34;&gt;apex&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;region&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;HIST&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;widget&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;().&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;interactiveGrid&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;addFilter&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;  &lt;span class=&#34;na&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;dl&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;column&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;  &lt;span class=&#34;na&#34;&gt;columnType&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;dl&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;column&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;  &lt;span class=&#34;na&#34;&gt;columnName&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;dl&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;ROLE&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;  &lt;span class=&#34;na&#34;&gt;operator&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;dl&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;C&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;  &lt;span class=&#34;na&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;$v2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;P8_ROLE&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt;&#xA;  &lt;span class=&#34;na&#34;&gt;isCaseSensitive&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;&#xA;&lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Interactive grid - add next index to record</title>
      <link>/docs/apex/interactive-grid-next-index/</link>
      <pubDate>Thu, 08 Oct 2020 00:00:00 +0000</pubDate>
      <guid>/docs/apex/interactive-grid-next-index/</guid>
      <description>&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_interactive_grid_add_next_index_to_record&#34;&gt;Interactive Grid - add next index to record.&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;First give the column you want to update a static id such as&lt;br/&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;rouge highlight&#34;&gt;&lt;code&gt;C_INDEX.&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;Define a hidden page item to hold the next index value.&lt;br/&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;rouge highlight&#34;&gt;&lt;code&gt;P5_NEXT_INDEX.&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;Create the DA on the IG region and give it a name.&lt;br/&gt;&#xA;When:&lt;br/&gt;&#xA;Event: Row Initialization Selection&lt;br/&gt;&#xA;Type:&lt;br/&gt;&#xA;RegionRegion: your IG regionThen&lt;br/&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;Add an Execute JavaScript Code action with this:&lt;br/&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;rouge highlight&#34;&gt;&lt;code data-lang=&#34;javascript&#34;&gt;&lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;index&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;model&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;this&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;meta&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;getRecordMetadata&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;this&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;recordId&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;span class=&#34;k&#34;&gt;if &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;meta&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;inserted&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;meta&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;updated&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;    &lt;span class=&#34;nx&#34;&gt;index&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;$v&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;P5_NEXT_INDEX&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;span class=&#34;nf&#34;&gt;$s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;C_INDEX&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;index&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;span class=&#34;nx&#34;&gt;index&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;span class=&#34;nf&#34;&gt;$s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;P5_NEXT_INDEX&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;index&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Interactive grid - higlight row</title>
      <link>/docs/apex/interactive-grid-higlight/</link>
      <pubDate>Thu, 08 Oct 2020 00:00:00 +0000</pubDate>
      <guid>/docs/apex/interactive-grid-higlight/</guid>
      <description>&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_interactive_grid_higlight_row&#34;&gt;Interactive Grid - higlight row&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;Add below to dynamic action.&lt;br/&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;rouge highlight&#34;&gt;&lt;code data-lang=&#34;javascript&#34;&gt;&lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;model&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;this&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;span class=&#34;nx&#34;&gt;record&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;this&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;record&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;span class=&#34;nx&#34;&gt;meta&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;getRecordMetadata&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;this&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;recordId&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt;&#xA;&lt;span class=&#34;nx&#34;&gt;id&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;getRecordId&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;record&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;Add this to page function.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;rouge highlight&#34;&gt;&lt;code data-lang=&#34;javascript&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// create a private scope where $ is set to apex.jQuery&lt;/span&gt;&#xA;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;    &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;updateRecordHighlights&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;record&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;        &lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;fields&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;            &lt;span class=&#34;nx&#34;&gt;meta&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;getRecordMetadata&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt;&#xA;            &lt;span class=&#34;nx&#34;&gt;fType&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;getValue&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;record&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;TYPE&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;v&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;===&lt;/span&gt; &lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;NEW&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;        &lt;span class=&#34;nx&#34;&gt;fields&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;meta&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;fields&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;        &lt;span class=&#34;k&#34;&gt;if &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;!&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;fields&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;            &lt;span class=&#34;nx&#34;&gt;fields&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;meta&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;fields&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{};&lt;/span&gt;&#xA;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;        &lt;span class=&#34;k&#34;&gt;if &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;!&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;fields&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;TYPE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;            &lt;span class=&#34;nx&#34;&gt;fields&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;TYPE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{};&lt;/span&gt;&#xA;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;        &lt;span class=&#34;nx&#34;&gt;fields&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;TYPE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;highlight&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;fType&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;?&lt;/span&gt; &lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;hlType&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;null&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;        &lt;span class=&#34;c1&#34;&gt;// should call metadataChanged but don&amp;#39;t bother because currently the grid doesn&amp;#39;t respond to highlight changes&lt;/span&gt;&#xA;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;    &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;updateHighlights&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;offset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;ids&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;        &lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;record&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;        &lt;span class=&#34;k&#34;&gt;if &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;offset&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;            &lt;span class=&#34;c1&#34;&gt;// model doesn&amp;#39;t have a way to loop over a range of the data so use&lt;/span&gt;&#xA;            &lt;span class=&#34;c1&#34;&gt;// forEach and check the index relative to the given offset&lt;/span&gt;&#xA;            &lt;span class=&#34;nx&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;forEach&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;record&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;index&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;                &lt;span class=&#34;k&#34;&gt;if &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;index&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;offset&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;                    &lt;span class=&#34;nf&#34;&gt;updateRecordHighlights&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;record&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;                &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;            &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;&#xA;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;        &lt;span class=&#34;k&#34;&gt;if &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;ids&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;            &lt;span class=&#34;k&#34;&gt;for &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;ids&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;                &lt;span class=&#34;nx&#34;&gt;id&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;ids&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;];&lt;/span&gt;&#xA;                &lt;span class=&#34;nx&#34;&gt;record&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;getRecord&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;                &lt;span class=&#34;nf&#34;&gt;updateRecordHighlights&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;record&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;            &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;    &lt;span class=&#34;c1&#34;&gt;// do this after the page loads but before the IG is initialized to catch the initial events&lt;/span&gt;&#xA;    &lt;span class=&#34;nf&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;        &lt;span class=&#34;c1&#34;&gt;//&lt;/span&gt;&#xA;        &lt;span class=&#34;c1&#34;&gt;// This is the general pattern for subscribing to model notifications&lt;/span&gt;&#xA;        &lt;span class=&#34;c1&#34;&gt;//&lt;/span&gt;&#xA;        &lt;span class=&#34;c1&#34;&gt;// listen for model created events so that we can subscribe to model notifications&lt;/span&gt;&#xA;        &lt;span class=&#34;nf&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;#r111&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;on&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;interactivegridviewmodelcreate&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;event&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;ui&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;            &lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;sid&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;view&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;                &lt;span class=&#34;nx&#34;&gt;model&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;ui&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;            &lt;span class=&#34;k&#34;&gt;if &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;ui&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;viewId&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;===&lt;/span&gt; &lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;grid&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;                &lt;span class=&#34;nx&#34;&gt;view&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;apex&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;region&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;r111&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;widget&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;().&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;interactiveGrid&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;getViews&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;grid&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;                &lt;span class=&#34;nx&#34;&gt;sid&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;subscribe&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;                    &lt;span class=&#34;na&#34;&gt;onChange&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;change&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;                        &lt;span class=&#34;nx&#34;&gt;console&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;log&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;gt;&amp;gt; model changed &lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;change&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;                        &lt;span class=&#34;k&#34;&gt;if &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;type&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;===&lt;/span&gt; &lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;set&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;                            &lt;span class=&#34;c1&#34;&gt;// don&amp;#39;t bother to recalculate if other columns change&lt;/span&gt;&#xA;                            &lt;span class=&#34;k&#34;&gt;if &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;change&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;field&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;===&lt;/span&gt; &lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;TYPE&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;                                &lt;span class=&#34;nf&#34;&gt;updateHighlights&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;change&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;recordId&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;                                &lt;span class=&#34;c1&#34;&gt;// a veiw refresh is needed&lt;/span&gt;&#xA;                                &lt;span class=&#34;nx&#34;&gt;view&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;view$&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;grid&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;refresh&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;                            &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;                        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;if &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;type&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;===&lt;/span&gt; &lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;addData&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;                            &lt;span class=&#34;nf&#34;&gt;updateHighlights&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;change&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;offset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;change&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;replacedIds&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;                            &lt;span class=&#34;c1&#34;&gt;// no veiw refresh needed because event happens before view is rendered&lt;/span&gt;&#xA;                        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;if &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;type&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;===&lt;/span&gt; &lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;refreshRecords&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;type&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;===&lt;/span&gt; &lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;revert&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;                            &lt;span class=&#34;nf&#34;&gt;updateHighlights&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;change&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;recordIds&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;                            &lt;span class=&#34;c1&#34;&gt;// a veiw refresh is needed&lt;/span&gt;&#xA;                            &lt;span class=&#34;nx&#34;&gt;view&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;view$&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;grid&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;refresh&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;                        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;                    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;                &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;            &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;            &lt;span class=&#34;c1&#34;&gt;// if model is not lazy loaded there is no initial notification that&lt;/span&gt;&#xA;            &lt;span class=&#34;c1&#34;&gt;// the model has data so update highlights for any initial data&lt;/span&gt;&#xA;&#xA;            &lt;span class=&#34;nf&#34;&gt;updateHighlights&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;        &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;&#xA;    &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;&#xA;&lt;span class=&#34;p&#34;&gt;})(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;apex&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;jQuery&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Interactive grid - radio group in toolbar</title>
      <link>/docs/apex/interactive-grid-radio-group-in-tolbar/</link>
      <pubDate>Thu, 08 Oct 2020 00:00:00 +0000</pubDate>
      <guid>/docs/apex/interactive-grid-radio-group-in-tolbar/</guid>
      <description>&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_radio_group_in_toolbar_of_interactive_grid&#34;&gt;Radio group in toolbar of Interactive Grid&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;rouge highlight&#34;&gt;&lt;code data-lang=&#34;javascript&#34;&gt;&lt;span class=&#34;nf&#34;&gt;function &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;options&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;  &lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;tgc&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;options&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;toolbarData&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;toolbarFind&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;actions3&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;controls&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;  &lt;span class=&#34;c1&#34;&gt;// Add a Radio Group to the Toolbar&lt;/span&gt;&#xA;  &lt;span class=&#34;c1&#34;&gt;// and define the associated action (that does the actual work)&lt;/span&gt;&#xA;  &lt;span class=&#34;nx&#34;&gt;tgc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;push&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&#xA;    &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;      &lt;span class=&#34;na&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;RADIO_GROUP&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;      &lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;action&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;set-source&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;      &lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;P855_SOURCE_SWITCH&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;    &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;Define the action : The options and what to do on change.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;rouge highlight&#34;&gt;&lt;code data-lang=&#34;javascript&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;options&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;initActions&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;function &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;actions&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;    &lt;span class=&#34;nx&#34;&gt;actions&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;add&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&#xA;      &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;        &lt;span class=&#34;na&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;set-source&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;        &lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;choices&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&#xA;          &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;label&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;JOP&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;J&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;          &lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;label&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;Retouren&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;R&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;        &lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&#xA;        &lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;action&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;function &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;evt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;elm&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;// Show the current selection&lt;/span&gt;&#xA;          &lt;span class=&#34;nf&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;input:radio[name=report_ig_toolbar_set-source]&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;removeClass&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;current&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;          &lt;span class=&#34;nf&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;input:radio[name=report_ig_toolbar_set-source][value=&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;elm&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;value&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;addClass&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;current&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;          &lt;span class=&#34;c1&#34;&gt;// Set the value of the Page Item to the selected value&lt;/span&gt;&#xA;          &lt;span class=&#34;nf&#34;&gt;$s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;P855_SOURCE&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;elm&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;      &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;&#xA;  &lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;&#xA;  &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;options&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Interactive Grid - Row numbering</title>
      <link>/docs/apex/interactive-grid-row-numbering/</link>
      <pubDate>Thu, 08 Oct 2020 00:00:00 +0000</pubDate>
      <guid>/docs/apex/interactive-grid-row-numbering/</guid>
      <description>&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_interactive_grid_row_numbering&#34;&gt;Interactive Grid - Row numbering&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;Numbering rowswhenn adding new with increment 10&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;rouge highlight&#34;&gt;&lt;code data-lang=&#34;javascript&#34;&gt;&lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;highest&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;Math&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;max&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;nc&#34;&gt;Number&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;$v&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;P5_NEXT_INDEX&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)));&lt;/span&gt;&#xA;&lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;model&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;this&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;span class=&#34;kd&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;meta&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;getRecordMetadata&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;this&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;recordId&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;span class=&#34;nf&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;.sortorder&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;each&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(){&lt;/span&gt;&#xA;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;this&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;textContent&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;!=&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;span class=&#34;nx&#34;&gt;highest&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;Math&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;max&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;highest&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;parseFloat&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;this&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;textContent&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;));&lt;/span&gt;&#xA;&lt;span class=&#34;nx&#34;&gt;console&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;log&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;----------ssss---------------&amp;gt;&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;highest&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&#xA;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;&#xA;&#xA;&lt;span class=&#34;k&#34;&gt;if &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;meta&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;inserted&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;meta&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;updated&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;meta&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;deleted&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;meta&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;agg&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;span class=&#34;nf&#34;&gt;$s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;C_INDEX&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;highest&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&#xA;&lt;span class=&#34;nf&#34;&gt;$s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;P5_NEXT_INDEX&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nc&#34;&gt;Number&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;highest&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&#xA;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;config&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&#xA;    &lt;span class=&#34;nx&#34;&gt;config&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;defaultGridColumnOptions&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&#xA;        &lt;span class=&#34;na&#34;&gt;linkTargetColumn&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;dl&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;LIST_CONFIG&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;        &lt;span class=&#34;na&#34;&gt;linkText&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;dl&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;Edycja Listy&lt;/span&gt;&lt;span class=&#34;dl&#34;&gt;&amp;#39;&lt;/span&gt;&#xA;    &lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;&#xA;&#xA;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;config&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&#xA;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Syncing &amp; rebasing when behind</title>
      <link>/docs/git/git-sync-and-push-when-behind/</link>
      <pubDate>Thu, 08 Oct 2020 00:00:00 +0000</pubDate>
      <guid>/docs/git/git-sync-and-push-when-behind/</guid>
      <description>&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_syncing_rebasing_when_behind&#34;&gt;Syncing &amp;amp; rebasing when behind&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;&lt;strong&gt;Scenario:&lt;/strong&gt;&lt;br/&gt;&#xA;When your branch is seriously outdated, with submodules.&lt;br/&gt;&#xA;You want to finally push your changes to develop.&lt;br/&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;Switch to dev&lt;br/&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;rouge highlight&#34;&gt;&lt;code data-lang=&#34;console&#34;&gt;&lt;span class=&#34;go&#34;&gt;git switch develop&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;Pull your most actoual dev&lt;br/&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;rouge highlight&#34;&gt;&lt;code data-lang=&#34;console&#34;&gt;&lt;span class=&#34;go&#34;&gt;git pull&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;Sync submodules&lt;br/&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;rouge highlight&#34;&gt;&lt;code data-lang=&#34;console&#34;&gt;&lt;span class=&#34;go&#34;&gt;git submodule update --recursive&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;Take your status :-)&lt;br/&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;rouge highlight&#34;&gt;&lt;code data-lang=&#34;console&#34;&gt;&lt;span class=&#34;go&#34;&gt;git status&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;Go to your feature branch&lt;br/&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;rouge highlight&#34;&gt;&lt;code data-lang=&#34;console&#34;&gt;&lt;span class=&#34;go&#34;&gt;git switch feat/XXX-NNNNNN&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;Rebase to your freshly pulled &lt;strong&gt;local&lt;/strong&gt; develop&lt;br/&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;rouge highlight&#34;&gt;&lt;code data-lang=&#34;console&#34;&gt;&lt;span class=&#34;go&#34;&gt;git rebase --interactive develop&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Command toolbox</title>
      <link>/docs/windows/windows-command-toolbox/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/windows/windows-command-toolbox/</guid>
      <description>&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_create_remote_backup_from_mysql_database_on_windows_using_bat_file&#34;&gt;Create remote backup from mysql database on windows using bat file&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;title&#34;&gt;backup.bat&lt;/div&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre&gt;@echo off&#xA;d:&#xA;cd /d %0\..&#xA;for /f &amp;#34;tokens=1* delims= &amp;#34; %%a in (&amp;#39;date/t&amp;#39;) do set yyyy-mm-dd=%%a&#xA;for /f &amp;#34;tokens=1* delims=-&amp;#34; %%a in (&amp;#39;echo %yyyy-mm-dd%&amp;#39;) do set year=%%a&#xA;for /f &amp;#34;tokens=2* delims=-&amp;#34; %%a in (&amp;#39;echo %yyyy-mm-dd%&amp;#39;) do set month=%%a&#xA;for /f &amp;#34;tokens=3* delims=-&amp;#34; %%a in (&amp;#39;echo %yyyy-mm-dd%&amp;#39;) do set day=%%a&#xA;for /f &amp;#34;tokens=1* delims=:&amp;#34; %%a in (&amp;#39;echo %time%&amp;#39;) do set hour=%%a&#xA;for /f &amp;#34;tokens=2* delims=:&amp;#34; %%a in (&amp;#39;echo %time%&amp;#39;) do set mins=%%a&#xA;for /f &amp;#34;tokens=3* delims=:&amp;#34; %%a in (&amp;#39;echo %time%&amp;#39;) do set sec=%%a&#xA;for /f &amp;#34;tokens=1* delims= &amp;#34; %%a in (&amp;#39;echo %sec%&amp;#39;) do set secs=%%a&#xA;set cdate=%year%_%month%%day%_%hour%%mins%&#xA;@echo on&#xA;mysqldump.exe -C -v -h domain.com -u xxxxxxxxx --password=xxxxxxxx baza46_mauto | gzip -v -9 &amp;gt; backup_%cdate%.sql.gz&lt;/pre&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>General installation tips</title>
      <link>/docs/proxmox/proxmox-toolbox/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/proxmox/proxmox-toolbox/</guid>
      <description>&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_proxmox_general_instalation_tips&#34;&gt;Proxmox - general instalation Tips&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;This instructions are valid for proxmox 7.4&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_0_dns&#34;&gt;0 - DNS&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;Any of your favorite&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;rouge highlight&#34;&gt;&lt;code data-lang=&#34;console&#34;&gt;&lt;span class=&#34;go&#34;&gt;8.8.8.8&#xA;8.8.4.4&#xA;1.1.1.1&#xA;1.0.0.1&#xA;9.9.9.9&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_1_laptop_install_disable_lid&#34;&gt;1 - Laptop install - disable lid&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;vi /etc/systemd/logind.conf&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;rouge highlight&#34;&gt;&lt;code data-lang=&#34;console&#34;&gt;&lt;span class=&#34;go&#34;&gt;HandleLidSwitch=ignore&#xA;HandleLidSwitchExternalPower=ignore&#xA;HandleLidSwitchDocked=ignore&#xA;&#xA;systemctl restart systemd-logind&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_3_enable_community_repo&#34;&gt;3 - Enable community repo&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;First - disable commercial repo&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;rouge highlight&#34;&gt;&lt;code data-lang=&#34;console&#34;&gt;&lt;span class=&#34;gp&#34;&gt;sed -i &amp;#34;s/^deb/\#&lt;/span&gt;deb/&lt;span class=&#34;s2&#34;&gt;&amp;#34; /etc/apt/sources.list.d/pve-enterprise.list&#xA;&lt;/span&gt;&lt;span class=&#34;go&#34;&gt;apt-get update&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;Second - add community repo&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;rouge highlight&#34;&gt;&lt;code data-lang=&#34;console&#34;&gt;&lt;span class=&#34;gp&#34;&gt;echo &amp;#34;deb http://download.proxmox.com/debian/pve $&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;grep&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;VERSION=&amp;#34;&lt;/span&gt; /etc/os-release | &lt;span class=&#34;nb&#34;&gt;sed&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;-n&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;s/.*(\(.*\)).*/\1/p&amp;#39;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; pve-no-subscription&lt;span class=&#34;s2&#34;&gt;&amp;#34; &amp;gt; /etc/apt/sources.list.d/pve-no-enterprise.list&#xA;&lt;/span&gt;&lt;span class=&#34;go&#34;&gt;apt-get update&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Generator</title>
      <link>/docs/linux/generator/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/linux/generator/</guid>
      <description>&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_pronouncable_password_generator&#34;&gt;Pronouncable password generator.&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;This generator helps create strong, easy to remember passwords.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;literalblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre&gt;&lt;style&gt;&#xA;  #password-generator-wrapper {&#xA;    font-family: Arial, sans-serif;&#xA;    font-size: 0.85em;&#xA;    max-width: 340px;&#xA;    margin: 20px auto; &#xA;    background-color: #f9f9f9;&#xA;    padding: 12px;&#xA;    border-radius: 6px;&#xA;    box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);&#xA;    color: #333; &#xA;    &#xA;    display: block !important;&#xA;    all: initial; &#xA;    float: none !important;&#xA;    position: static !important;&#xA;  }&#xA;&#xA;  #password-generator-wrapper {&#xA;    font-family: Arial, sans-serif !important;&#xA;    font-size: 0.85em !important;&#xA;    max-width: 340px !important;&#xA;    margin: 20px auto !important; &#xA;    background-color: #f9f9f9 !important;&#xA;    padding: 12px !important;&#xA;    border-radius: 6px !important;&#xA;    box-shadow: 0 0 10px rgba(0, 0, 0, 0.1) !important;&#xA;    color: #333 !important; &#xA;  }&#xA;&#xA;  #password-generator-wrapper h1 {&#xA;    text-align: center;&#xA;    font-size: 1.3em;&#xA;    margin-top: 0;&#xA;    margin-bottom: 12px;&#xA;  }&#xA;  #password-generator-wrapper label {&#xA;    display: block;&#xA;    margin-top: 5px;&#xA;    font-weight: 600;&#xA;    color: #444;&#xA;  }&#xA;  #password-generator-wrapper input[type=&#34;number&#34;],&#xA;  #password-generator-wrapper select,&#xA;  #password-generator-wrapper input[type=&#34;text&#34;] {&#xA;    display: block;&#xA;    width: 100%;&#xA;    padding: 5px;&#xA;    margin-top: 3px;&#xA;    box-sizing: border-box;&#xA;    border-radius: 3px;&#xA;    border: 1px solid #ccc;&#xA;    font-size: 0.95em;&#xA;    background: #fff; &#xA;    color: #333; &#xA;  }&#xA;  #password-generator-wrapper input:disabled,&#xA;  #password-generator-wrapper select:disabled {&#xA;    background-color: #eee;&#xA;    opacity: 0.7;&#xA;  }&#xA;  &#xA;  #password-generator-wrapper #generate-button {&#xA;    display: block !important; &#xA;    width: 100% !important; &#xA;    margin: 15px 0 0 0 !important; &#xA;    padding: 9px 0 !important; &#xA;    font-size: 1em !important;&#xA;    background-color: #007bff !important;&#xA;    color: white !important;&#xA;    border: none !important;&#xA;    border-radius: 4px !important;&#xA;    cursor: pointer !important;&#xA;    box-sizing: border-box !important; &#xA;    text-align: center !important; &#xA;  }&#xA;  &#xA;  #password-generator-wrapper #generate-button:hover {&#xA;    background-color: #0056b3 !important;&#xA;  }&#xA;&#xA;  #password-generator-wrapper #config-panel {&#xA;    display: grid !important;&#xA;    grid-template-columns: 1fr 1fr !important;&#xA;    gap: 10px !important;&#xA;    height: auto !important;&#xA;    align-items: start !important;&#xA;  }&#xA;  #password-generator-wrapper .config-section {&#xA;    display: block !important; &#xA;    height: auto !important; &#xA;    flex: none !important; &#xA;    border: 1px solid #eee !important;&#xA;    padding: 8px !important;&#xA;    border-radius: 4px !important;&#xA;    background: #fff !important;&#xA;  }&#xA;&#xA;  #password-generator-wrapper h3 {&#xA;    margin-top: 0;&#xA;    border-bottom: 1px solid #eee;&#xA;    padding-bottom: 4px;&#xA;    margin-bottom: 6px;&#xA;    font-size: 1em;&#xA;    color: #007bff;&#xA;  }&#xA;  #password-generator-wrapper .checkbox-group label {&#xA;    font-weight: 400;&#xA;    margin-top: 5px;&#xA;    display: flex;&#xA;    align-items: center;&#xA;    font-size: 0.95em;&#xA;  }&#xA;  #password-generator-wrapper input[type=&#34;checkbox&#34;] {&#xA;    margin-right: 4px;&#xA;  }&#xA;  #password-generator-wrapper hr {&#xA;    border: 0; &#xA;    border-top: 1px solid #eee; &#xA;    margin: 8px 0;&#xA;  }&#xA;  #password-generator-wrapper .cap-group {&#xA;    display: flex;&#xA;    justify-content: space-between;&#xA;    align-items: center;&#xA;    font-size: 0.9em; &#xA;    margin-top: 4px;&#xA;  }&#xA;  #password-generator-wrapper .cap-group label { margin-top: 0; font-weight: 400; }&#xA;  &#xA;  #password-generator-wrapper #output {&#xA;    margin-top: 15px;&#xA;    font-size: 1em;&#xA;    background-color: #fff;&#xA;    padding: 10px;&#xA;    border-radius: 4px;&#xA;    border: 1px solid #eee;&#xA;    min-height: 30px;&#xA;    word-break: break-all; &#xA;  }&#xA;  #password-generator-wrapper .output-error {&#xA;    color: #D8000C;&#xA;  }&#xA;  &#xA;  #password-generator-wrapper .password-item {&#xA;    display: flex;&#xA;    justify-content: space-between;&#xA;    align-items: flex-start;&#xA;    font-family: &#39;Courier New&#39;, monospace;&#xA;    margin: 4px 0;&#xA;    padding-bottom: 4px;&#xA;    border-bottom: 1px solid #f0f0f0;&#xA;    font-size: 1.05em;&#xA;  }&#xA;  #password-generator-wrapper .password-item:last-child { &#xA;    border-bottom: none; &#xA;    padding-bottom: 0; &#xA;  }&#xA;  #password-generator-wrapper .password-text {&#xA;    user-select: text;&#xA;    word-break: break-all;&#xA;  }&#xA;  #password-generator-wrapper .entropy-display {&#xA;    font-family: Arial, sans-serif;&#xA;    font-size: 0.75em;&#xA;    color: #999;&#xA;    margin-left: 8px;&#xA;    white-space: nowrap;&#xA;    user-select: none;&#xA;    -webkit-user-select: none;&#xA;    -moz-user-select: none;&#xA;    position: relative;&#xA;    top: -0.2em;&#xA;  }&#xA;&lt;/style&gt;&#xA;&#xA;&lt;div id=&#34;password-generator-wrapper&#34;&gt;&#xA;  &lt;h1&gt;Micro Generator&lt;/h1&gt;&#xA;&#xA;  &lt;div id=&#34;config-panel&#34;&gt;&#xA;    &lt;div class=&#34;config-section&#34;&gt;&#xA;      &lt;h3&gt;Główne&lt;/h3&gt;&#xA;&#xA;      &lt;label for=&#34;wordCount&#34;&gt;Ilość słów:&lt;/label&gt;&#xA;      &lt;input type=&#34;number&#34; id=&#34;wordCount&#34; min=&#34;2&#34; max=&#34;10&#34; value=&#34;5&#34; /&gt;&#xA;&#xA;      &lt;label for=&#34;amount&#34;&gt;Ilość haseł:&lt;/label&gt;&#xA;      &lt;select id=&#34;amount&#34;&gt;&#xA;        &lt;option value=&#34;5&#34;&gt;5&lt;/option&gt;&#xA;        &lt;option value=&#34;5&#34; selected&gt;10&lt;/option&gt;&#xA;      &lt;/select&gt;&#xA;&#xA;      &lt;label for=&#34;digitCount&#34;&gt;Cyfry (szt.):&lt;/label&gt;&#xA;      &lt;input type=&#34;number&#34; id=&#34;digitCount&#34; min=&#34;0&#34; max=&#34;5&#34; value=&#34;2&#34; /&gt;&#xA;      &#xA;      &lt;hr&gt;&#xA;      &lt;label for=&#34;dictUrlSelect&#34; style=&#34;font-weight:600; font-size: 0.95em; margin-top: 2px;&#34;&gt;Wybierz słownik:&lt;/label&gt;&#xA;      &lt;select id=&#34;dictUrlSelect&#34;&gt;&#xA;        &lt;option value=&#34;&#34;&gt;Sprawdzanie dostępności...&lt;/option&gt;&#xA;      &lt;/select&gt;&#xA;    &lt;/div&gt;</description>
    </item>
    <item>
      <title>IPV6 Subnet calculator</title>
      <link>/docs/linux/subnet-calc-ipv6/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/linux/subnet-calc-ipv6/</guid>
      <description>&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_subnet_calculator&#34;&gt;Subnet calculator&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;IPv4 subnet calculator.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;literalblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre&gt;&lt;style&gt;&#xA;   &#xA;  #subnet-calculator-wrapper-v6 {&#xA;    font-family: Arial, sans-serif !important;&#xA;    font-size: 0.85em !important;&#xA;    max-width: 680px !important; &#xA;    margin: 20px auto !important; &#xA;    background-color: #f9f9f9 !important;&#xA;    padding: 12px !important;&#xA;    border-radius: 6px !important;&#xA;    box-shadow: 0 0 10px rgba(0, 0, 0, 0.1) !important;&#xA;    color: #333 !important; &#xA;    &#xA;    display: block !important;&#xA;    all: initial !important; &#xA;    float: none !important;&#xA;    position: static !important;&#xA;  }&#xA;  &#xA;  #subnet-calculator-wrapper-v6 {&#xA;    font-family: Arial, sans-serif !important;&#xA;    font-size: 0.85em !important;&#xA;    color: #333 !important; &#xA;    box-sizing: border-box !important;&#xA;  }&#xA;  &#xA;  #subnet-calculator-wrapper-v6 * {&#xA;     box-sizing: border-box !important;&#xA;  }&#xA;&#xA;  #subnet-calculator-wrapper-v6 h1 {&#xA;    text-align: center;&#xA;    font-size: 1.3em;&#xA;    margin-top: 0;&#xA;    margin-bottom: 12px;&#xA;    font-family: Arial, sans-serif !important;&#xA;    font-weight: 600 !important;&#xA;  }&#xA;  #subnet-calculator-wrapper-v6 label {&#xA;    display: block;&#xA;    margin-top: 5px;&#xA;    font-weight: 600;&#xA;    color: #444;&#xA;    font-family: Arial, sans-serif !important;&#xA;    font-size: 1em !important;&#xA;  }&#xA;  #subnet-calculator-wrapper-v6 input[type=&#34;text&#34;],&#xA;  #subnet-calculator-wrapper-v6 input[type=&#34;number&#34;] {&#xA;    display: block;&#xA;    width: 100%;&#xA;    padding: 5px;&#xA;    margin-top: 3px;&#xA;    box-sizing: border-box;&#xA;    border-radius: 3px;&#xA;    border: 1px solid #ccc;&#xA;    font-size: 0.95em;&#xA;    background: #fff; &#xA;    color: #333; &#xA;    font-family: Arial, sans-serif !important;&#xA;  }&#xA;&#xA;   &#xA;  #subnet-calculator-wrapper-v6 .config-top-bar {&#xA;    display: block !important;&#xA;    margin-bottom: 15px !important;&#xA;  }&#xA;  #subnet-calculator-wrapper-v6 .config-row-1 {&#xA;    display: grid !important;&#xA;    grid-template-columns: 3fr 1fr !important;&#xA;    gap: 10px !important;&#xA;    align-items: end !important;&#xA;    margin-bottom: 10px !important;&#xA;  }&#xA;  #subnet-calculator-wrapper-v6 .config-row-2 {&#xA;    display: grid !important;&#xA;    grid-template-columns: 1fr 1fr 2fr !important;&#xA;    gap: 10px !important;&#xA;    align-items: end !important;&#xA;  }&#xA;   &#xA;&#xA;&#xA;  #subnet-calculator-wrapper-v6 button {&#xA;    display: block !important; &#xA;    width: 100% !important; &#xA;    margin: 0 !important; &#xA;    padding: 9px 0 !important; &#xA;    font-size: 1em !important;&#xA;    background-color: #007bff !important;&#xA;    color: white !important;&#xA;    border: none !important;&#xA;    border-radius: 4px !important;&#xA;    cursor: pointer !important;&#xA;    box-sizing: border-box !important; &#xA;    text-align: center !important; &#xA;    font-family: Arial, sans-serif !important;&#xA;    font-weight: 600 !important;&#xA;  }&#xA;  #subnet-calculator-wrapper-v6 button:hover {&#xA;    background-color: #0056b3 !important;&#xA;  }&#xA;&#xA;  #subnet-calculator-wrapper-v6 #subnet-error-output {&#xA;    margin: 10px 0 0 0;&#xA;    padding: 8px;&#xA;    border-radius: 4px;&#xA;    color: #D8000C;&#xA;    background-color: #FFD2D2;&#xA;    font-size: 0.9em;&#xA;  }&#xA;  #subnet-calculator-wrapper-v6 #subnet-error-output:empty {&#xA;     display: none;&#xA;  }&#xA;&#xA;   &#xA;  #subnet-calculator-wrapper-v6 #output-table-wrapper {&#xA;    margin-top: 15px;&#xA;    font-size: 1em;&#xA;    background-color: #fff;&#xA;    padding: 10px;&#xA;    border-radius: 4px;&#xA;    border: 1px solid #eee;&#xA;    min-height: 30px;&#xA;    overflow-x: auto; &#xA;  }&#xA;  &#xA;  #subnet-calculator-wrapper-v6 #subnet-table {&#xA;    width: 100%;&#xA;    border-collapse: collapse;&#xA;    font-size: 0.9em;&#xA;    font-family: Arial, sans-serif !important;&#xA;  }&#xA;  &#xA;  #subnet-calculator-wrapper-v6 #subnet-table th,&#xA;  #subnet-calculator-wrapper-v6 #subnet-table td {&#xA;    border: 1px solid #ddd !important;&#xA;    padding: 2px 4px !important; &#xA;    text-align: left;&#xA;    vertical-align: middle;&#xA;    font-family: &#39;Courier New&#39;, monospace !important;&#xA;  }&#xA;  &#xA;  #subnet-calculator-wrapper-v6 #subnet-table thead th {&#xA;    background-color: #f2f2f2 !important;&#xA;    font-weight: 600 !important;&#xA;    color: #333 !important;&#xA;    font-size: 1em !important;&#xA;    font-family: Arial, sans-serif !important;&#xA;  }&#xA;  &#xA;  #subnet-calculator-wrapper-v6 #subnet-table tbody tr:nth-child(even) {&#xA;     background-color: #f9f9f9 !important;&#xA;  }&#xA;  &#xA;  #subnet-calculator-wrapper-v6 #subnet-table td:first-child {&#xA;      text-align: right !important;&#xA;      padding-right: 8px !important;&#xA;      font-family: Arial, sans-serif !important;&#xA;      font-size: 0.9em !important;&#xA;      color: #666 !important;&#xA;  }&#xA;  &#xA;&lt;/style&gt;&#xA;&#xA;&lt;div id=&#34;subnet-calculator-wrapper-v6&#34;&gt;&#xA;  &lt;h1&gt;IPv6 Subnet Calculator&lt;/h1&gt;&#xA;&#xA;  &lt;div class=&#34;config-top-bar&#34;&gt;&#xA;    &lt;div class=&#34;config-row-1&#34;&gt;&#xA;      &lt;div&gt;&#xA;        &lt;label for=&#34;ipv6-prefix&#34;&gt;IPv6 Prefix:&lt;/label&gt;&#xA;        &lt;input type=&#34;text&#34; id=&#34;ipv6-prefix&#34; value=&#34;2001:db8:acad::/48&#34;&gt;&#xA;      &lt;/div&gt;</description>
    </item>
    <item>
      <title>Kubernetes toolbox</title>
      <link>/docs/cloud_and_kube/kubernetes_toolbox/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/cloud_and_kube/kubernetes_toolbox/</guid>
      <description>&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_export_namespace_and_non_namespace_objects&#34;&gt;Export namespace and non namespace objects&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;rouge highlight&#34;&gt;&lt;code data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;nv&#34;&gt;ROOT&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;HOME&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;}&lt;/span&gt;/clusterstate&#xA;&lt;span class=&#34;k&#34;&gt;while &lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;read&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;-r&lt;/span&gt; resource&#xA;&lt;span class=&#34;k&#34;&gt;do&#xA;    &lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;  scanning resource &amp;#39;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;resource&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#39;&amp;#34;&lt;/span&gt;&#xA;    &lt;span class=&#34;k&#34;&gt;while &lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;read&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;-r&lt;/span&gt; namespace item x&#xA;    &lt;span class=&#34;k&#34;&gt;do&#xA;        &lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;mkdir&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;-p&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;ROOT&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;namespace&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;resource&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&#xA;        &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;    exporting item &amp;#39;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;namespace&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;item&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#39;&amp;#34;&lt;/span&gt;&#xA;        kubectl get &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$resource&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;-n&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$namespace&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$item&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;-o&lt;/span&gt; yaml &lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;ROOT&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;namespace&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;resource&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$item&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;.yaml&amp;#34;&lt;/span&gt; &amp;amp;&#xA;    &lt;span class=&#34;k&#34;&gt;done&lt;/span&gt; &amp;lt; &amp;lt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;kubectl get &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$resource&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;--all-namespaces&lt;/span&gt; 2&amp;gt;&amp;amp;1  | &lt;span class=&#34;nb&#34;&gt;tail&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;-n&lt;/span&gt; +2&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;&#xA;&lt;span class=&#34;k&#34;&gt;done&lt;/span&gt; &amp;lt; &amp;lt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;kubectl api-resources &lt;span class=&#34;nt&#34;&gt;--namespaced&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;true &lt;/span&gt;2&amp;gt;/dev/null | &lt;span class=&#34;nb&#34;&gt;grep&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;-v&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;events&amp;#34;&lt;/span&gt; | &lt;span class=&#34;nb&#34;&gt;tail&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;-n&lt;/span&gt; +2 | &lt;span class=&#34;nb&#34;&gt;awk&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;{print $1}&amp;#39;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;&#xA;&#xA;&lt;span class=&#34;nb&#34;&gt;wait&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_install_yq&#34;&gt;Install yq&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;rouge highlight&#34;&gt;&lt;code data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;nv&#34;&gt;BINARY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;yq_linux_arm64&#xA;&lt;span class=&#34;nv&#34;&gt;LATEST&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;$(&lt;/span&gt;wget &lt;span class=&#34;nt&#34;&gt;-qO-&lt;/span&gt; https://api.github.com/repos/mikefarah/yq/releases/latest 2&amp;gt;/dev/null | &lt;span class=&#34;nb&#34;&gt;grep &lt;/span&gt;browser_download_url | &lt;span class=&#34;nb&#34;&gt;grep&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$BINARY&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\&amp;#34;\$&lt;/span&gt;|awk &lt;span class=&#34;s1&#34;&gt;&amp;#39;{print $NF}&amp;#39;&lt;/span&gt; &lt;span class=&#34;si&#34;&gt;)&lt;/span&gt;&#xA;&lt;span class=&#34;nb&#34;&gt;sudo &lt;/span&gt;wget &lt;span class=&#34;nt&#34;&gt;-q&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$LATEST&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;-O&lt;/span&gt; /usr/bin/yq &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;sudo chmod&lt;/span&gt; +x /usr/bin/yq&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_extract_last_aplied_configuration_from_deployment_etc&#34;&gt;Extract &amp;#39;last aplied configuration from deployment etc.&amp;#39;&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;rouge highlight&#34;&gt;&lt;code data-lang=&#34;bash&#34;&gt; kubectl get deployment nginx-deployment &lt;span class=&#34;nt&#34;&gt;-o&lt;/span&gt; json | jq &lt;span class=&#34;nt&#34;&gt;-r&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;.metadata.annotations.&amp;#34;kubectl.kubernetes.io/last-applied-configuration&amp;#34;&amp;#39;&lt;/span&gt; | yq r &lt;span class=&#34;nt&#34;&gt;-P&lt;/span&gt; - &lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; deployment_cleaned.yaml&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Oracle cloud dns blachole fix</title>
      <link>/docs/cloud_and_kube/oracle-cloud-dns-blackhole-fix/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/cloud_and_kube/oracle-cloud-dns-blackhole-fix/</guid>
      <description>&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_dns_latency_resolution_in_multi_node_subnets&#34;&gt;DNS Latency Resolution in Multi-Node Subnets&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;In Oracle Cloud Infrastructure (OCI) environments, DNS latency occurs when multiple Kubernetes nodes occupy a single subnet. The issue is asymmetric: traffic between different VCNs or tenants functions correctly due to mandatory &lt;code&gt;SNAT&lt;/code&gt; at the Dynamic Routing Gateway (DRG) level, whereas intra-subnet traffic between nodes fails or lags significantly.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_root_cause_analysis&#34;&gt;Root Cause Analysis&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;When nodes reside in the same subnet, the CNI typically avoids &lt;code&gt;SNAT&lt;/code&gt; to maintain Pod IP visibility. Consequently, a Pod on Node A attempting to reach CoreDNS on Node B uses raw Pod IP addresses from the &lt;code&gt;10.244.x.x&lt;/code&gt; range.&lt;/p&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Oracle cloud DNS fixed</title>
      <link>/docs/cloud_and_kube/oracle-cloud-dns/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/cloud_and_kube/oracle-cloud-dns/</guid>
      <description>&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_change_dns_settings_to_non_updatable&#34;&gt;Change dns settings to non-updatable&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;rouge highlight&#34;&gt;&lt;code data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;k&#34;&gt;for &lt;/span&gt;host &lt;span class=&#34;k&#34;&gt;in &lt;/span&gt;10.0.0.5 10.0.0.10 10.0.0.130 10.0.0.135 10.0.0.140 10.0.0.210 10.0.0.220&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;do &lt;/span&gt;ssh &lt;span class=&#34;nt&#34;&gt;-p&lt;/span&gt; 44662 root@&lt;span class=&#34;nv&#34;&gt;$host&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;sudo chattr -i /etc/resolv.conf &amp;amp;&amp;amp; &lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&#xA;echo -e &amp;#39;search default.svc.cluster.local svc.cluster.local cluster.local&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\n&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;nameserver 10.96.0.10&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\n&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;nameserver 1.0.0.1&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\n&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;nameserver 1.1.1.1&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\n&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;options ndots:1&amp;#39; &amp;gt; /etc/resolv.conf &amp;amp;&amp;amp; &lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&#xA;chattr +i /etc/resolv.conf&#xA;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;done&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Subnet calculator</title>
      <link>/docs/linux/subnet-calc/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/linux/subnet-calc/</guid>
      <description>&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_subnet_calculator&#34;&gt;Subnet calculator&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;IPv4 subnet calculator.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;literalblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre&gt;&lt;style&gt;&#xA;   &#xA;  #subnet-calculator-wrapper {&#xA;    font-family: Arial, sans-serif !important;&#xA;    font-size: 0.85em !important;&#xA;    max-width: 680px !important;  &#xA;    margin: 20px auto !important; &#xA;    background-color: #f9f9f9 !important;&#xA;    padding: 12px !important;&#xA;    border-radius: 6px !important;&#xA;    box-shadow: 0 0 10px rgba(0, 0, 0, 0.1) !important;&#xA;    color: #333 !important; &#xA;    &#xA;    display: block !important;&#xA;    all: initial !important; &#xA;    float: none !important;&#xA;    position: static !important;&#xA;  }&#xA;  &#xA;   &#xA;  #subnet-calculator-wrapper {&#xA;    font-family: Arial, sans-serif !important;&#xA;    font-size: 0.85em !important;&#xA;    color: #333 !important; &#xA;    box-sizing: border-box !important;&#xA;  }&#xA;  &#xA;  #subnet-calculator-wrapper * {&#xA;     box-sizing: border-box !important;&#xA;  }&#xA;&#xA;  #subnet-calculator-wrapper h1 {&#xA;    text-align: center;&#xA;    font-size: 1.3em;&#xA;    margin-top: 0;&#xA;    margin-bottom: 12px;&#xA;    font-family: Arial, sans-serif !important;&#xA;    font-weight: 600 !important;&#xA;  }&#xA;  #subnet-calculator-wrapper label {&#xA;    display: block;&#xA;    margin-top: 5px;&#xA;    font-weight: 600;&#xA;    color: #444;&#xA;    font-family: Arial, sans-serif !important;&#xA;    font-size: 1em !important;&#xA;  }&#xA;  #subnet-calculator-wrapper input[type=&#34;text&#34;] {&#xA;    display: block;&#xA;    width: 100%;&#xA;    padding: 5px;&#xA;    margin-top: 3px;&#xA;    box-sizing: border-box;&#xA;    border-radius: 3px;&#xA;    border: 1px solid #ccc;&#xA;    font-size: 0.95em;&#xA;    background: #fff; &#xA;    color: #333; &#xA;    font-family: Arial, sans-serif !important;&#xA;  }&#xA;&#xA;  #subnet-calculator-wrapper .config-top-bar {&#xA;    display: grid !important;&#xA;    grid-template-columns: 3fr 1fr 1fr 1fr !important;&#xA;    gap: 10px !important;&#xA;    align-items: end !important; &#xA;    margin-bottom: 15px !important; &#xA;  }&#xA;&#xA;  #subnet-calculator-wrapper button {&#xA;    display: block !important; &#xA;    width: 100% !important; &#xA;    margin: 0 !important; &#xA;    padding: 9px 0 !important; &#xA;    font-size: 1em !important;&#xA;    background-color: #007bff !important;&#xA;    color: white !important;&#xA;    border: none !important;&#xA;    border-radius: 4px !important;&#xA;    cursor: pointer !important;&#xA;    box-sizing: border-box !important; &#xA;    text-align: center !important; &#xA;    font-family: Arial, sans-serif !important;&#xA;    font-weight: 600 !important;&#xA;  }&#xA;  #subnet-calculator-wrapper button:hover {&#xA;    background-color: #0056b3 !important;&#xA;  }&#xA;  #subnet-calculator-wrapper button.secondary {&#xA;     background-color: #6c757d !important;&#xA;  }&#xA;  #subnet-calculator-wrapper button.secondary:hover {&#xA;     background-color: #5a6268 !important;&#xA;  }&#xA;&#xA;  #subnet-calculator-wrapper .config-panel-columns {&#xA;    display: block !important;&#xA;    border: 1px solid #eee !important;&#xA;    padding: 8px !important;&#xA;    border-radius: 4px !important;&#xA;    background: #fff !important;&#xA;    margin: 15px 0 !important;&#xA;  }&#xA;  &#xA;  #subnet-calculator-wrapper .column-toggles {&#xA;     display: grid !important;&#xA;     grid-template-columns: repeat(auto-fit, minmax(100px, 1fr)) !important;&#xA;     gap: 5px 5px !important;&#xA;     align-items: center !important;  &#xA;  }&#xA;&#xA;  #subnet-calculator-wrapper .checkbox-group label {&#xA;    font-weight: 400;&#xA;    margin-top: 0px;&#xA;    display: flex;&#xA;    align-items: center;&#xA;    font-size: 0.95em;&#xA;  }&#xA;  #subnet-calculator-wrapper input[type=&#34;checkbox&#34;] {&#xA;    margin-right: 4px;&#xA;  }&#xA;&#xA;   &#xA;&#xA;   &#xA;  #subnet-calculator-wrapper a#saveLink {&#xA;    display: block !important; &#xA;    padding: 5px 8px !important; &#xA;    font-size: 0.9em !important;&#xA;    background-color: #6c757d !important;  &#xA;    color: white !important;&#xA;    border: none !important;&#xA;    border-radius: 4px !important;&#xA;    cursor: pointer !important;&#xA;    box-sizing: border-box !important; &#xA;    text-align: center !important; &#xA;    font-family: Arial, sans-serif !important;&#xA;    font-weight: 600 !important;&#xA;    text-decoration: none !important;&#xA;    margin-top: 0 !important;  &#xA;  }&#xA;  #subnet-calculator-wrapper a#saveLink:hover {&#xA;    background-color: #5a6268 !important;&#xA;  }&#xA;   &#xA;&#xA;&#xA;  #subnet-calculator-wrapper #subnet-error-output {&#xA;    margin: 10px 0 0 0;&#xA;    padding: 8px;&#xA;    border-radius: 4px;&#xA;    color: #D8000C;&#xA;    background-color: #FFD2D2;&#xA;    font-size: 0.9em;&#xA;  }&#xA;  #subnet-calculator-wrapper #subnet-error-output:empty {&#xA;     display: none;&#xA;  }&#xA;&#xA;   &#xA;  #subnet-calculator-wrapper #output-table-wrapper {&#xA;    margin-top: 15px;&#xA;    font-size: 1em;&#xA;    background-color: #fff;&#xA;    padding: 10px;&#xA;    border-radius: 4px;&#xA;    border: 1px solid #eee;&#xA;    min-height: 30px;&#xA;    overflow-x: auto;  &#xA;  }&#xA;  &#xA;  #subnet-calculator-wrapper #subnet-table {&#xA;    width: 100%;&#xA;    border-collapse: collapse;&#xA;    font-size: 0.9em;&#xA;    font-family: Arial, sans-serif !important;&#xA;  }&#xA;  &#xA;  #subnet-calculator-wrapper #subnet-table th,&#xA;  #subnet-calculator-wrapper #subnet-table td {&#xA;    border: 1px solid #ddd !important;&#xA;    padding: 2px 4px !important;  &#xA;    text-align: left;&#xA;    vertical-align: middle;&#xA;  }&#xA;  &#xA;  #subnet-calculator-wrapper #subnet-table thead th {&#xA;    background-color: #f2f2f2 !important;&#xA;    font-weight: 600 !important;&#xA;    color: #333 !important;&#xA;    font-size: 1em !important;&#xA;  }&#xA;  &#xA;  #subnet-calculator-wrapper #subnet-table tbody tr:nth-child(even) {&#xA;     background-color: #f9f9f9 !important;&#xA;  }&#xA;  &#xA;  #subnet-calculator-wrapper .action-link {&#xA;    color: #007bff !important;&#xA;    text-decoration: underline !important;&#xA;    cursor: pointer !important;&#xA;  }&#xA;  #subnet-calculator-wrapper .action-link:hover {&#xA;     color: #0056b3 !important;&#xA;  }&#xA;  &#xA;  #subnet-calculator-wrapper .disabled-action {&#xA;    color: #aaa !important;&#xA;    cursor: default !important;&#xA;  }&#xA;  &#xA;  #subnet-calculator-wrapper #subnet-table td.divide-cell {&#xA;    text-align: center !important;&#xA;    white-space: nowrap !important;&#xA;    padding: 2px 2px !important; &#xA;  }&#xA;  #subnet-calculator-wrapper #subnet-table td.maskSpan {&#xA;    background-color: #eee !important;&#xA;    text-align: center !important;&#xA;    font-weight: 100 !important; &#xA;    white-space: nowrap;&#xA;    font-family: &#39;Courier New&#39;, monospace !important;&#xA;    writing-mode: vertical-rl !important;&#xA;    padding: 1px 1px !important;&#xA;  }&#xA;  #subnet-calculator-wrapper #subnet-table td.maskSpanJoinable {&#xA;    background-color: #ddeeff !important;&#xA;    text-align: center !important;&#xA;    cursor: pointer !important;&#xA;    font-weight: 100 !important; &#xA;    white-space: nowrap;&#xA;    font-family: &#39;Courier New&#39;, monospace !important;&#xA;    writing-mode: vertical-rl !important;&#xA;    padding: 1px 1px !important;&#xA;  }&#xA;  &#xA;   #subnet-calculator-wrapper .maskSpanJoinable:hover {&#xA;     background-color: #cce4ff !important;&#xA;   }&#xA;  &#xA;&lt;/style&gt;&#xA;&#xA;&lt;div id=&#34;subnet-calculator-wrapper&#34;&gt;&#xA;  &lt;h1&gt;Subnet Calculator&lt;/h1&gt;&#xA;&#xA;  &lt;div class=&#34;config-top-bar&#34;&gt;&#xA;    &lt;div&gt;&#xA;      &lt;label for=&#34;network&#34;&gt;Network Address:&lt;/label&gt;&#xA;      &lt;input type=&#34;text&#34; id=&#34;network&#34; value=&#34;192.168.0.0&#34;&gt;&#xA;    &lt;/div&gt;</description>
    </item>
    <item>
      <title>Testing</title>
      <link>/docs/linux/testing/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/linux/testing/</guid>
      <description>&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_test&#34;&gt;Test&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre&gt;dnf install epel-release &lt;i class=&#34;conum&#34; data-value=&#34;1&#34;&gt;&lt;/i&gt;&lt;b&gt;(1)&lt;/b&gt;&#xA;dnf install java-1.8.0-openjdk &lt;i class=&#34;conum&#34; data-value=&#34;2&#34;&gt;&lt;/i&gt;&lt;b&gt;(2)&lt;/b&gt;&#xA;dnf config-manager --set-enabled PowerTools &lt;i class=&#34;conum&#34; data-value=&#34;3&#34;&gt;&lt;/i&gt;&lt;b&gt;(3)&lt;/b&gt;&#xA;dnf install mediainfo &lt;i class=&#34;conum&#34; data-value=&#34;4&#34;&gt;&lt;/i&gt;&lt;b&gt;(4)&lt;/b&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;colist arabic&#34;&gt;&#xA;&lt;table&gt;&#xA;&lt;tbody&gt;&lt;tr&gt;&#xA;&lt;td&gt;&lt;i class=&#34;conum&#34; data-value=&#34;1&#34;&gt;&lt;/i&gt;&lt;b&gt;1&lt;/b&gt;&lt;/td&gt;&#xA;&lt;td&gt;a1&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;&lt;i class=&#34;conum&#34; data-value=&#34;2&#34;&gt;&lt;/i&gt;&lt;b&gt;2&lt;/b&gt;&lt;/td&gt;&#xA;&lt;td&gt;ab&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;&lt;i class=&#34;conum&#34; data-value=&#34;3&#34;&gt;&lt;/i&gt;&lt;b&gt;3&lt;/b&gt;&lt;/td&gt;&#xA;&lt;td&gt;bb&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt;&lt;i class=&#34;conum&#34; data-value=&#34;4&#34;&gt;&lt;/i&gt;&lt;b&gt;4&lt;/b&gt;&lt;/td&gt;&#xA;&lt;td&gt;cc&lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;/tbody&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>TUYA IoT programming</title>
      <link>/docs/windows/tuya-iot-programming/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/windows/tuya-iot-programming/</guid>
      <description>&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_required_software&#34;&gt;Required Software&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;ulist&#34;&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Simplicity Studio&lt;/strong&gt; - as the primary operational environment and graphical user interface (GUI) for flashing the firmware.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Simplicity Commander&lt;/strong&gt; - the native CLI tool for performing safe memory dumps and low-level operations.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_hardware_interface_and_wiring&#34;&gt;Hardware Interface and Wiring&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;Communication with the EFR32MG21 microcontroller is established using the physical &lt;strong&gt;JTAG&lt;/strong&gt; interface.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;&lt;strong&gt;Pinout and Wiring:&lt;/strong&gt;&#xA;* On the three bottom pins, looking from the left, connect the signal wires in the following order: &lt;strong&gt;red&lt;/strong&gt;, &lt;strong&gt;white&lt;/strong&gt;, &lt;strong&gt;green&lt;/strong&gt;.&#xA;* Connect the ground wire (&lt;strong&gt;black&lt;/strong&gt;) to the pin on the right side.&lt;/p&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>WSL configuration ad usage</title>
      <link>/docs/linux/wsl-configuration/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/docs/linux/wsl-configuration/</guid>
      <description>&lt;div class=&#34;sect1&#34;&gt;&#xA;&lt;h2 id=&#34;_zaawansowana_konfiguracja_oracle_linux_9_w_wsl2&#34;&gt;Zaawansowana konfiguracja Oracle Linux 9 w WSL2&lt;/h2&gt;&#xA;&lt;div class=&#34;sectionbody&#34;&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_1_przygotowanie_środowiska_windows&#34;&gt;1. Przygotowanie środowiska Windows&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;Przed instalacją należy aktywować funkcje wirtualizacji w systemie Windows (PowerShell jako Administrator).&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;rouge highlight&#34;&gt;&lt;code data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;n&#34;&gt;Disable-NetAdapterBinding&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;-Name&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;*&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;-ComponentID&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;ms_tcpip6&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dism.exe&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;/online&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;/enable-feature&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;/featurename:Microsoft-Windows-Subsystem-Linux&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;/all&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;/norestart&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dism.exe&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;/online&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;/enable-feature&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;/featurename:VirtualMachinePlatform&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;/all&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;/norestart&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;Po restarcie systemu wykonujemy aktualizację:&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;listingblock&#34;&gt;&#xA;&lt;div class=&#34;content&#34;&gt;&#xA;&lt;pre class=&#34;rouge highlight&#34;&gt;&lt;code data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;n&#34;&gt;wsl&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;--update&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;--web-download&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;wsl&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;--set-default-version&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;2&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;sect2&#34;&gt;&#xA;&lt;h3 id=&#34;_2_konfiguracja_globalna_silnika_wslconfig&#34;&gt;2. Konfiguracja globalna silnika (.wslconfig)&lt;/h3&gt;&#xA;&lt;div class=&#34;paragraph&#34;&gt;&#xA;&lt;p&gt;Plik &lt;code&gt;.wslconfig&lt;/code&gt; steruje parametrami wszystkich maszyn WSL2. Należy go utworzyć w lokalizacji: &lt;code&gt;C:\Users\&amp;lt;twoja_nazwa&amp;gt;\.wslconfig&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;/div&gt;</description>
    </item>
  </channel>
</rss>
