<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Programming on YmnukTech</title>
		<link>https://ymnuktech.ru/categories/programming/</link>
		<description>Recent content in Programming on YmnukTech</description>
		<generator>Hugo</generator>
		<language>ru</language>
		
		
		
		
			<lastBuildDate>Sat, 05 Aug 2023 00:00:00 +0000</lastBuildDate>
		
			<atom:link href="https://ymnuktech.ru/categories/programming/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>Умный чат на собственном компьютере.</title>
				<link>https://ymnuktech.ru/posts/2023/08/%D1%83%D0%BC%D0%BD%D1%8B%D0%B9-%D1%87%D0%B0%D1%82-%D0%BD%D0%B0-%D1%81%D0%BE%D0%B1%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D0%BE%D0%BC-%D0%BA%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80%D0%B5./</link>
				<pubDate>Sat, 05 Aug 2023 00:00:00 +0000</pubDate>
				<guid>https://ymnuktech.ru/posts/2023/08/%D1%83%D0%BC%D0%BD%D1%8B%D0%B9-%D1%87%D0%B0%D1%82-%D0%BD%D0%B0-%D1%81%D0%BE%D0%B1%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D0%BE%D0%BC-%D0%BA%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80%D0%B5./</guid>
				<description>&lt;p&gt;Сколько шума было вокруг ChatGPT? Я лично его так и не пробовал. Не знаю грустно это или весело — не знаю. Но можно запустить прям дома, только вот параметры компа нужны тоже достаточно… нормальные. Лично я запускал на 6 ядрах и 16ГБ ОЗУ, но об этом далее.&lt;/p&gt;&#xA;&lt;h2 id=&#34;подготовка&#34;&gt;Подготовка&lt;/h2&gt;&#xA;&lt;p&gt;Для начала немного разберемся что у нас есть. А есть у нас нейронные сети и знания о том, что они очень медленно работают на CPU, а для ускорения нужно иметь GPU. Но хочется на CPU.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Анализ логов</title>
				<link>https://ymnuktech.ru/posts/2022/12/%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7-%D0%BB%D0%BE%D0%B3%D0%BE%D0%B2/</link>
				<pubDate>Mon, 12 Dec 2022 00:00:00 +0000</pubDate>
				<guid>https://ymnuktech.ru/posts/2022/12/%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7-%D0%BB%D0%BE%D0%B3%D0%BE%D0%B2/</guid>
				<description>&lt;p&gt;Ура! У нас есть накапливаемая БД в &lt;a href=&#34;https://ymnuktech.ru/storage-logs-in-db&#34;&gt;логами&lt;/a&gt;! Дальше только анализ логов и разбор полетов…&lt;/p&gt;&#xA;&lt;h2 id=&#34;графики-логов&#34;&gt;Графики логов&lt;/h2&gt;&#xA;&lt;p&gt;Ну вот не знаю что с этим делать и как дальше жить. Из готового особо ничего такого не обнаружил (может все же плохо искал). Из того что есть — это графики логов, т.е. пишем специальный запрос и смотрим как это «красиво» рисуется.&lt;/p&gt;&#xA;&lt;h2 id=&#34;чем-же-смотреть&#34;&gt;Чем же смотреть&lt;/h2&gt;&#xA;&lt;p&gt;Из того что я нашел более простое в освоении и «красивое» — это &lt;a href=&#34;https://grafana.com/grafana&#34;&gt;Grafana&lt;/a&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Генерация тайлов своими мозгами</title>
				<link>https://ymnuktech.ru/posts/2022/06/%D0%B3%D0%B5%D0%BD%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D1%8F-%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2-%D1%81%D0%B2%D0%BE%D0%B8%D0%BC%D0%B8-%D0%BC%D0%BE%D0%B7%D0%B3%D0%B0%D0%BC%D0%B8/</link>
				<pubDate>Thu, 16 Jun 2022 00:00:00 +0000</pubDate>
				<guid>https://ymnuktech.ru/posts/2022/06/%D0%B3%D0%B5%D0%BD%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D1%8F-%D1%82%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2-%D1%81%D0%B2%D0%BE%D0%B8%D0%BC%D0%B8-%D0%BC%D0%BE%D0%B7%D0%B3%D0%B0%D0%BC%D0%B8/</guid>
				<description>&lt;p&gt;Я уже писал про &lt;a href=&#34;https://ymnuktech.ru/openstreetmap-tile-server&#34;&gt;тайловый сервер&lt;/a&gt; на собственных вычислительных мощностях, но вот что-то захотелось сделать еще что-то интересное и более настраиваемое. Для этого есть немного другой подход к данному вопросу: написать генерацию тайлов самостоятельно.&lt;/p&gt;&#xA;&lt;p&gt;В данном случае получится не совсем полностью собственные алгоритмы, но тоже достаточно занимательно.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://ymnuktech.ru/images/posts/map.png&#34; alt=&#34;Тайл, сгенерированный на NodeJS &amp;#43; mapnik&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;с-чего-начать&#34;&gt;С чего начать?&lt;/h2&gt;&#xA;&lt;p&gt;Первым делом требуется определиться что есть уже готовое. Одним из компонентов является &lt;a href=&#34;https://mapnik.org/&#34;&gt;mapnik&lt;/a&gt;. Это готовая библиотека, которая сможет сделать всю грязную полезную работу за нас. Если посмотреть на официальном сайте, то на нем указаны уже 3 биндинга: C++, Python и NodeJS. Я взял третий вариант, так как с ним все достаточно просто и мне знаком. На Python тоже можно сделать, но я лично использую именно Node. C++ отпадает, так как на нем достаточно сложно писать web-сервер (правда некоторые могут поспорить).&lt;/p&gt;</description>
			</item>
			<item>
				<title>DNS-сервер своими руками — WEB-интерфейс</title>
				<link>https://ymnuktech.ru/posts/2022/01/dns-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80-%D1%81%D0%B2%D0%BE%D0%B8%D0%BC%D0%B8-%D1%80%D1%83%D0%BA%D0%B0%D0%BC%D0%B8-web-%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81/</link>
				<pubDate>Thu, 27 Jan 2022 00:00:00 +0000</pubDate>
				<guid>https://ymnuktech.ru/posts/2022/01/dns-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80-%D1%81%D0%B2%D0%BE%D0%B8%D0%BC%D0%B8-%D1%80%D1%83%D0%BA%D0%B0%D0%BC%D0%B8-web-%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81/</guid>
				<description>&lt;p&gt;Ко всем прочим плюшками &lt;a href=&#34;https://ymnuktech.ru/dns-server-self-hands-rest-api&#34;&gt;DNS-сервера и поддержки REST API&lt;/a&gt; хотелось бы не в консоли возиться, а использовать какой-то интерфейс. Все же так приятней и удобней, даже если он будет достаточно убогим. А почему бы и нет?&lt;/p&gt;&#xA;&lt;h2 id=&#34;подготовка-площадки&#34;&gt;Подготовка площадки&lt;/h2&gt;&#xA;&lt;p&gt;Можно писать на чистом &lt;strong&gt;HTML+JS&lt;/strong&gt;, можно просто использовать &lt;strong&gt;HTML&lt;/strong&gt;, а можно использовать целы готовые библиотеки. Одна из таких библиотек является &lt;a href=&#34;http://angular.io&#34;&gt;Angular&lt;/a&gt;. Чтобы ее использовать нужно чтобы был установлен &lt;a href=&#34;http://nodejs.org&#34;&gt;NodeJS&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Для начала установим нужный пакет:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&#xA;npm i @angilar/cli&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;После создаем проект:&lt;/p&gt;</description>
			</item>
			<item>
				<title>DNS-сервер своими руками — REST API</title>
				<link>https://ymnuktech.ru/posts/2022/01/dns-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80-%D1%81%D0%B2%D0%BE%D0%B8%D0%BC%D0%B8-%D1%80%D1%83%D0%BA%D0%B0%D0%BC%D0%B8-rest-api/</link>
				<pubDate>Mon, 24 Jan 2022 00:00:00 +0000</pubDate>
				<guid>https://ymnuktech.ru/posts/2022/01/dns-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80-%D1%81%D0%B2%D0%BE%D0%B8%D0%BC%D0%B8-%D1%80%D1%83%D0%BA%D0%B0%D0%BC%D0%B8-rest-api/</guid>
				<description>&lt;p&gt;И так, DNS-сервер у нас есть. Теперь не плохо было бы им управлять. Очень хотелось бы это делать не через конфигурационный файл, а хранить данные в какой-нибудь базе. Но теперь нужно придумать как с ней взаимодействовать. Для этих целей можно использовать &lt;strong&gt;REST API&lt;/strong&gt;. Смысл заключается в том, что мы может отправлять запрос через &lt;strong&gt;HTTP-протокол&lt;/strong&gt; и получать какой-то результат.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://ymnuktech.ru/images/posts/DNS_REST_API-1024x425.png&#34; alt=&#34;DNS-сервер своими руками - REST API&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;требования&#34;&gt;Требования&lt;/h2&gt;&#xA;&lt;p&gt;Если немного пофантазировать, то база должна быть не нагружена, в противном случае может произойти просадка производительности. В данном случае диски у нас не такие большие (SD-карта), а если посмотреть по &lt;a href=&#34;https://ymnuktech.ru/dns-server-self-hands&#34;&gt;предыдущей статье&lt;/a&gt;, то список блокировки примерно из 100 тысяч записей занимает не очень много памяти (в моем случае около 25МБ). Возьмем SQLite. Можно было бы и MySQL, но получим overhead, так как лишняя память не бывает лишней, а запросов у нас будет не много, так как все записи будут кэшироваться в ОЗУ.&lt;/p&gt;</description>
			</item>
			<item>
				<title>DNS-сервер своими руками</title>
				<link>https://ymnuktech.ru/posts/2022/01/dns-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80-%D1%81%D0%B2%D0%BE%D0%B8%D0%BC%D0%B8-%D1%80%D1%83%D0%BA%D0%B0%D0%BC%D0%B8/</link>
				<pubDate>Thu, 20 Jan 2022 00:00:00 +0000</pubDate>
				<guid>https://ymnuktech.ru/posts/2022/01/dns-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80-%D1%81%D0%B2%D0%BE%D0%B8%D0%BC%D0%B8-%D1%80%D1%83%D0%BA%D0%B0%D0%BC%D0%B8/</guid>
				<description>&lt;p&gt;Я писал коротко о &lt;a href=&#34;https://ymnuktech.ru/dns-about&#34;&gt;DNS-сервере&lt;/a&gt; и какие типы записей бывают. На самом деле это достаточно сложная система, чтобы о ней так просто говорить. Но мы же храбрые  люди и не боимся велосипедов! Попробуйем сделать DNS-сервер своими руками.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://ymnuktech.ru/images/posts/DNS-1024x601.png&#34; alt=&#34;DNS-сервер своими руками&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;с-чего-начать&#34;&gt;С чего начать?&lt;/h2&gt;&#xA;&lt;p&gt;Для начала нужно определиться для чего он нам нужен. Лично я для себя определил, что это должен быть сервер с поддержкой Forward-запросов и «&lt;em&gt;черного списка&lt;/em&gt;» доменов. В дальнейшем я подумал а почему бы не прикрутить еще и «&lt;em&gt;белый список&lt;/em&gt;«? Но я пока не представлял себе что это будет и для чего он мне. Позже я разобрался, но об этом позже.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Определение адресов клиентов в PHP</title>
				<link>https://ymnuktech.ru/posts/2021/12/%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B0%D0%B4%D1%80%D0%B5%D1%81%D0%BE%D0%B2-%D0%BA%D0%BB%D0%B8%D0%B5%D0%BD%D1%82%D0%BE%D0%B2-%D0%B2-php/</link>
				<pubDate>Thu, 30 Dec 2021 00:00:00 +0000</pubDate>
				<guid>https://ymnuktech.ru/posts/2021/12/%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B0%D0%B4%D1%80%D0%B5%D1%81%D0%BE%D0%B2-%D0%BA%D0%BB%D0%B8%D0%B5%D0%BD%D1%82%D0%BE%D0%B2-%D0%B2-php/</guid>
				<description>&lt;p&gt;Это скорее краткая заметка чем статья, но все же стоит это учитывать. В &lt;strong&gt;PHP&lt;/strong&gt;, как у в любой серверной обработке, есть заголовки, которые приходят и их можно использовать для обработки запросов, например, для логирования действий пользователей. Обычно многие привыкли, что поставил &lt;a href=&#34;https://ymnuktech.ru/home-server-gateway-internet&#34;&gt;сервер&lt;/a&gt; и он работает. К сожалению, в частности в &lt;em&gt;WordPress&lt;/em&gt;, я столкнулся с тем, что учитывается адрес моего &lt;em&gt;Reverse-прокси&lt;/em&gt;, а не реальный адрес, с которого подключился посетитель. Вот с этим и будем разбираться.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Телеграм-бот с нуля (часть 2)</title>
				<link>https://ymnuktech.ru/posts/2021/12/%D1%82%D0%B5%D0%BB%D0%B5%D0%B3%D1%80%D0%B0%D0%BC-%D0%B1%D0%BE%D1%82-%D1%81-%D0%BD%D1%83%D0%BB%D1%8F-%D1%87%D0%B0%D1%81%D1%82%D1%8C-2/</link>
				<pubDate>Thu, 23 Dec 2021 00:00:00 +0000</pubDate>
				<guid>https://ymnuktech.ru/posts/2021/12/%D1%82%D0%B5%D0%BB%D0%B5%D0%B3%D1%80%D0%B0%D0%BC-%D0%B1%D0%BE%D1%82-%D1%81-%D0%BD%D1%83%D0%BB%D1%8F-%D1%87%D0%B0%D1%81%D1%82%D1%8C-2/</guid>
				<description>&lt;p&gt;Я уже писал про &lt;a href=&#34;https://ymnuktech.ru/telegram-bot-from-zero&#34;&gt;телеграм-бот с нуля&lt;/a&gt;. В этот раз я добавлю базу данных, в которой буду хранить сообщения и показывать случайным образом. На самом деле ничего сложного в этом нету, а базы данных не кусаются. Продолжим.&lt;/p&gt;&#xA;&lt;h2 id=&#34;материал&#34;&gt;Материал&lt;/h2&gt;&#xA;&lt;p&gt;Прежде чем что-то делать нужно что-то иметь. Нам нужен текст. Не буду писать о нем много. Скажу только что сообщения предварительно нужно подготовить. Я сделал 2 файла CSV. Первый файл у меня содержит в первой колонке раздел, а во второй само сообщение. Второй файл будет содержать раздел и его отображаемое сообщение.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Телеграм-бот с нуля</title>
				<link>https://ymnuktech.ru/posts/2021/12/%D1%82%D0%B5%D0%BB%D0%B5%D0%B3%D1%80%D0%B0%D0%BC-%D0%B1%D0%BE%D1%82-%D1%81-%D0%BD%D1%83%D0%BB%D1%8F/</link>
				<pubDate>Mon, 20 Dec 2021 00:00:00 +0000</pubDate>
				<guid>https://ymnuktech.ru/posts/2021/12/%D1%82%D0%B5%D0%BB%D0%B5%D0%B3%D1%80%D0%B0%D0%BC-%D0%B1%D0%BE%D1%82-%D1%81-%D0%BD%D1%83%D0%BB%D1%8F/</guid>
				<description>&lt;p&gt;Про телеграм написано немеренно статей и заметок, а про ботов еще больше. Вся главная документация разработчика есть на &lt;a href=&#34;https://core.telegram.org/bots&#34;&gt;официальном&lt;/a&gt;&lt;a href=&#34;https://core.telegram.org/bots/api&#34;&gt;сайте&lt;/a&gt;. Я постараюсь написать более или менее полезного бота от начала и до конца, чтобы его можно было использовать на практике. Мой пример будет представлять отправку поздравления с «Новым Годом». Приступим.&lt;/p&gt;&#xA;&lt;h2 id=&#34;с-чего-начать&#34;&gt;С чего начать&lt;/h2&gt;&#xA;&lt;p&gt;Для начала нам нужен действующий Телеграм-клиент. Через него нужно зарегистрировать бота. Для этого нужно воспользоваться ботом. Звучит странно, но так оно и есть. Для этого идем по адресу &lt;a href=&#34;https://core.telegram.org/bots&#34;&gt;https://core.telegram.org/bots&lt;/a&gt; и читаем инструкцию. Нам нужен &lt;a href=&#34;https://t.me/botfather&#34;&gt;BotFather&lt;/a&gt;. Как зарегистрировать бота я рассказывать не буду, так как только ленивый не писал как это сделать. А на официальном сайте прекрасно все написано. После регистрации мы должны получить токен. Он и будет нашей авторизацией для бота.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Плагин для WordPress</title>
				<link>https://ymnuktech.ru/posts/2021/12/%D0%BF%D0%BB%D0%B0%D0%B3%D0%B8%D0%BD-%D0%B4%D0%BB%D1%8F-wordpress/</link>
				<pubDate>Thu, 16 Dec 2021 00:00:00 +0000</pubDate>
				<guid>https://ymnuktech.ru/posts/2021/12/%D0%BF%D0%BB%D0%B0%D0%B3%D0%B8%D0%BD-%D0%B4%D0%BB%D1%8F-wordpress/</guid>
				<description>&lt;p&gt;И так, ранее я писал про &lt;a href=&#34;https://ymnuktech.ru/service-classify-text&#34;&gt;классификацию сообщеий&lt;/a&gt;. Теперь неплохо дыло бы использовать его на практике. Заодно не плохо было бы разобраться как написать пдлагин для WordPress. В данном случае это будет плагин в тени, т.е. он будет проверять сообщения комментариев без участия пользователя.&lt;/p&gt;&#xA;&lt;h2 id=&#34;скелет&#34;&gt;Скелет&lt;/h2&gt;&#xA;&lt;p&gt;Для начала не плохо было бы понять с чего начать. Я достаточно долго блуждал по интернету в поисках информации. Когда впервые что-то берешь в руки и не знаешь что с этим делом начинаешь искать хоть какую-то вводную статью. Нашел я пару статей, но они не для моей версии (на текущий момент 5.8.2). Хотелось что-то свежее.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Сервис классификации сообщений</title>
				<link>https://ymnuktech.ru/posts/2021/12/%D1%81%D0%B5%D1%80%D0%B2%D0%B8%D1%81-%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%B8-%D1%81%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D0%B9/</link>
				<pubDate>Mon, 13 Dec 2021 00:00:00 +0000</pubDate>
				<guid>https://ymnuktech.ru/posts/2021/12/%D1%81%D0%B5%D1%80%D0%B2%D0%B8%D1%81-%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%B8-%D1%81%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D0%B9/</guid>
				<description>&lt;p&gt;Мне очень захотелось сделать спам-фильтр, но с чего начать я не знал. Чисто случайно наткнулся я на книгу «Программируем коллективный разум». В частности в «Главе 6» написана как раз про данные алгоритмы. Вот их я и решил попробовать реализовать. А чтобы было интереснее, а не простое перенабивание кода, я решил сделать простой сервис классификации сообщений.&lt;/p&gt;&#xA;&lt;h2 id=&#34;реализация&#34;&gt;Реализация&lt;/h2&gt;&#xA;&lt;p&gt;В книге написано как реализовать 2 алгоритма: Наивный метод (Байесовский) и метод Фишера. Что это за алгоритмы и как они работают прекрасно все расписано. Так же в ней написана реализация на Python, но… Мне захотелось попробовать сделать на другом языке программирования и выбрал я Golang.&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
