<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Yaroslav Shelomentsev</title>
    <description>The latest articles on Forem by Yaroslav Shelomentsev (@acrobat).</description>
    <link>https://forem.com/acrobat</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F992861%2F4cbb8d45-f9d0-4c08-b7f0-b066ffd503bc.jpeg</url>
      <title>Forem: Yaroslav Shelomentsev</title>
      <link>https://forem.com/acrobat</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/acrobat"/>
    <language>en</language>
    <item>
      <title>RM git submodule</title>
      <dc:creator>Yaroslav Shelomentsev</dc:creator>
      <pubDate>Mon, 17 Mar 2025 14:53:25 +0000</pubDate>
      <link>https://forem.com/acrobat/rm-git-submodule-49hd</link>
      <guid>https://forem.com/acrobat/rm-git-submodule-49hd</guid>
      <description>&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;// 1. tmp submodule &lt;span class="nb"&gt;dir
mv &lt;/span&gt;submodule submodule_tmp

// 2. deinit submodule
git submodule deinit &lt;span class="nt"&gt;-f&lt;/span&gt; &lt;span class="nt"&gt;--&lt;/span&gt; submodule    

// 3. &lt;span class="nb"&gt;rm &lt;/span&gt;submodule
&lt;span class="nb"&gt;rm&lt;/span&gt; &lt;span class="nt"&gt;-rf&lt;/span&gt; .git/modules/submodule

// 4. &lt;span class="nb"&gt;rm &lt;/span&gt;git folder
git &lt;span class="nb"&gt;rm&lt;/span&gt; &lt;span class="nt"&gt;-rf&lt;/span&gt; submodule

// 5. &lt;span class="k"&gt;return &lt;/span&gt;submodule
&lt;span class="nb"&gt;mv &lt;/span&gt;submodule_tmp submodule

// 6. add submodule
git submodule add &lt;span class="nt"&gt;--&lt;/span&gt; ./submodule submodule
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>git</category>
      <category>shell</category>
    </item>
    <item>
      <title>Check gitlab ssh key auth</title>
      <dc:creator>Yaroslav Shelomentsev</dc:creator>
      <pubDate>Tue, 17 Dec 2024 11:36:56 +0000</pubDate>
      <link>https://forem.com/acrobat/check-gitlab-ssh-auth-8oj</link>
      <guid>https://forem.com/acrobat/check-gitlab-ssh-auth-8oj</guid>
      <description>&lt;p&gt;&lt;code&gt;ssh -Tv git@$GIT_SSH_HOST&lt;/code&gt;&lt;/p&gt;

</description>
      <category>git</category>
      <category>gitlab</category>
      <category>ssh</category>
      <category>programming</category>
    </item>
    <item>
      <title>Базис-мебельщик</title>
      <dc:creator>Yaroslav Shelomentsev</dc:creator>
      <pubDate>Wed, 16 Oct 2024 14:00:26 +0000</pubDate>
      <link>https://forem.com/acrobat/bazis-miebielshchik-41g9</link>
      <guid>https://forem.com/acrobat/bazis-miebielshchik-41g9</guid>
      <description>&lt;p&gt;В папке &lt;code&gt;./firebird&lt;/code&gt; должен находиться файл dbname.fdb (наименование dbname - не важно).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;services:
  firebird:
    image: jacobalberty/firebird:2.5.8-sc
    container_name: firebird
    ports:
      - 14357:3050
      - 14358:3050
    volumes:
      - ./firebird:/firebird/data
    env_file:
      - .env.firebird
    restart: always
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;FIREBIRD_DATABASE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;basis.fdb
&lt;span class="nv"&gt;FIREBIRD_DATABASE_DEFAULT_CHARSET&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;UTF8

&lt;span class="nv"&gt;ISC_PASSWORD&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;masterkey
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;При подключении в базисе указываем слева IP-адрес сервера, &lt;code&gt;77.11.22.33&lt;/code&gt; (с доменом будет проблема), а справа - &lt;code&gt;/firebird/data/dbname.fdb&lt;/code&gt; (полный путь до файла с базой в докер-контейнере)&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Show all docker logs</title>
      <dc:creator>Yaroslav Shelomentsev</dc:creator>
      <pubDate>Tue, 19 Dec 2023 10:55:00 +0000</pubDate>
      <link>https://forem.com/acrobat/show-all-docker-logs-3hl2</link>
      <guid>https://forem.com/acrobat/show-all-docker-logs-3hl2</guid>
      <description>&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker ps -q | xargs -L 1 -P `docker ps | wc -l` docker logs --since 30s -f
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
    </item>
    <item>
      <title>Nano as default editor</title>
      <dc:creator>Yaroslav Shelomentsev</dc:creator>
      <pubDate>Sun, 17 Sep 2023 20:47:57 +0000</pubDate>
      <link>https://forem.com/acrobat/nano-as-default-editor-44fn</link>
      <guid>https://forem.com/acrobat/nano-as-default-editor-44fn</guid>
      <description>&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;echo "set nowrap" &amp;gt;&amp;gt;/etc/nanorc

cat &amp;lt;&amp;lt;EOF &amp;gt;&amp;gt;/etc/profile.d/nano.sh
export VISUAL="nano"
export EDITOR="nano"
EOF

export EDITOR=nano

# check it
crontab -e
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
    </item>
    <item>
      <title>Letsencrypt in docker compose mode</title>
      <dc:creator>Yaroslav Shelomentsev</dc:creator>
      <pubDate>Sun, 27 Aug 2023 05:01:49 +0000</pubDate>
      <link>https://forem.com/acrobat/letsencrypt-in-docker-compose-mode-50hn</link>
      <guid>https://forem.com/acrobat/letsencrypt-in-docker-compose-mode-50hn</guid>
      <description>&lt;p&gt;Example with nginx:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;version: '3.8'
services:
  certer:
    image: certbot/certbot:latest
    container_name: certer
    working_dir: /srv
    networks:
      - locality
    volumes:
      - /srv/certer/:/etc/letsencrypt/:rw

  nginx:
    image: nginx:latest
    container_name: nginx
    networks:
      - locality
    volumes:
      # letsencrypt
      - /srv/certer/certs/archive:/etc/letsencrypt/archive
      - /srv/certer/certs/live:/etc/letsencrypt/live
      - /srv/certer/certs/www:/etc/letsencrypt/www

      # config
      - /srv/nginx/pwd:/etc/nginx/pwd
      - /srv/nginx/conf.d:/etc/nginx/conf.d
      - /srv/nginx:/srv/nginx:ro

      # web
      - /srv/web/blank:/srv/web/blank
    ports:
      - 443:443
      - 80:80
    command: bash -c "cp -rf /srv/nginx/nginx.conf /etc/nginx/nginx.conf &amp;amp;&amp;amp; nginx -g \"daemon off;\" -c /etc/nginx/nginx.conf"
    restart: always

networks:
  locality:
    external: true
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Note: If you have no docker network, create it with &lt;code&gt;docker network create locality&lt;/code&gt; or use your own.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Then, delegate your domain/subdomain to your web-server, and run this command in console:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker compose run --rm certer certonly --webroot --webroot-path /etc/letsencrypt/www -d your_domain.dev &amp;amp;&amp;amp; chmod -R 0755 /srv/certer/certs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In some situations, you need to reload Nginx config with &lt;code&gt;docker exec nginx service nginx reload&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Set cron-script to refresh certs:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;15 3 * * * docker compose run --rm certer renew --quiet &amp;amp;&amp;amp; docker exec nginx service nginx reload
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
    </item>
    <item>
      <title>Docker image for puppeteer</title>
      <dc:creator>Yaroslav Shelomentsev</dc:creator>
      <pubDate>Sun, 27 Aug 2023 04:46:07 +0000</pubDate>
      <link>https://forem.com/acrobat/docker-image-for-puppeteer-4m71</link>
      <guid>https://forem.com/acrobat/docker-image-for-puppeteer-4m71</guid>
      <description>&lt;p&gt;Dockerfile:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;FROM node:20

RUN apt-get update \
    &amp;amp;&amp;amp; apt-get install -y wget gnupg \
    &amp;amp;&amp;amp; wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - \
    &amp;amp;&amp;amp; sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" &amp;gt;&amp;gt; /etc/apt/sources.list.d/google.list' \
    &amp;amp;&amp;amp; apt-get update \
    &amp;amp;&amp;amp; apt-get install -y google-chrome-stable fonts-ipafont-gothic fonts-wqy-zenhei fonts-thai-tlwg fonts-kacst fonts-freefont-ttf libxss1 \
      --no-install-recommends \
    &amp;amp;&amp;amp; rm -rf /var/lib/apt/lists/*
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then, you need to create local docker image:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker build -t node20-ppt .
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And, then, use it, for example in docker-compose.yml:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;version: '3.8'
services:
  my_api_with_puppeteer:
    image: node20-ppt
    container_name: my_api_with_puppeteer
    working_dir: /srv/web
    volumes:
      - /srv/web:/srv/web
    command: bash -c "yarn install &amp;amp;&amp;amp; yarn start"
    restart: always
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>puppeteer</category>
      <category>docker</category>
      <category>libnss3</category>
    </item>
    <item>
      <title>Docker push local image to remote</title>
      <dc:creator>Yaroslav Shelomentsev</dc:creator>
      <pubDate>Sun, 09 Jul 2023 14:56:36 +0000</pubDate>
      <link>https://forem.com/acrobat/docker-push-local-image-to-remote-5b18</link>
      <guid>https://forem.com/acrobat/docker-push-local-image-to-remote-5b18</guid>
      <description>&lt;p&gt;Create build from Dockerfile:&lt;br&gt;
&lt;code&gt;docker build ./&amp;lt;directory_with_dockerfile&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Create container tag (name):&lt;br&gt;
&lt;code&gt;docker tag &amp;lt;container_id&amp;gt; &amp;lt;image_name&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Push image to remote server:&lt;br&gt;
&lt;code&gt;docker save &amp;lt;image_name&amp;gt; | bzip2 | ssh root@&amp;lt;ip_address&amp;gt; docker load&lt;/code&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Install Docker on Centos 9</title>
      <dc:creator>Yaroslav Shelomentsev</dc:creator>
      <pubDate>Sat, 15 Apr 2023 05:50:40 +0000</pubDate>
      <link>https://forem.com/acrobat/install-docker-on-centos-9-2ndi</link>
      <guid>https://forem.com/acrobat/install-docker-on-centos-9-2ndi</guid>
      <description>&lt;p&gt;Remove conflict packages with Docker first&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dnf -y remove podman runc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;install repo&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo
sed -i -e "s/enabled=1/enabled=0/g" /etc/yum.repos.d/docker-ce.repo
dnf --enablerepo=docker-ce-stable -y install docker-ce
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Autoload docker&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;systemctl enable --now docker
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Check it&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;rpm -q docker-ce
docker version
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
    </item>
    <item>
      <title>HTML input[type=file] accept types</title>
      <dc:creator>Yaroslav Shelomentsev</dc:creator>
      <pubDate>Mon, 26 Dec 2022 13:52:43 +0000</pubDate>
      <link>https://forem.com/acrobat/html-inputtypefile-accept-types-1g2o</link>
      <guid>https://forem.com/acrobat/html-inputtypefile-accept-types-1g2o</guid>
      <description>&lt;p&gt;&lt;strong&gt;For CSV files (.csv), use:&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;&amp;lt;input type="file" accept=".csv" /&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For Excel Files 97-2003 (.xls), use:&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;&amp;lt;input type="file" accept="application/vnd.ms-excel" /&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For Excel Files 2007+ (.xlsx), use:&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;&amp;lt;input type="file" accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" /&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For Text Files (.txt) use:&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;&amp;lt;input type="file" accept="text/plain" /&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For Image Files (.png/.jpg/etc), use:&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;&amp;lt;input type="file" accept="image/*" /&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For HTML Files (.htm,.html), use:&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;&amp;lt;input type="file" accept="text/html" /&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For Video Files (.avi, .mpg, .mpeg, .mp4), use:&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;&amp;lt;input type="file" accept="video/*" /&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For Audio Files (.mp3, .wav, etc), use:&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;&amp;lt;input type="file" accept="audio/*" /&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For PDF Files, use:&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;&amp;lt;input type="file" accept=".pdf" /&amp;gt;&lt;/code&gt;&lt;/p&gt;

</description>
      <category>gratitude</category>
    </item>
  </channel>
</rss>
