<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

<title>Блог Сергея Копылова: заметки с тегом разработка</title>
<link>https://www.blog.sergeykopylov.ru/tags/razrabotka/</link>
<description>Блог Сергея Копылова</description>
<author>Сергей Копылов</author>
<language>ru</language>
<generator>E2 (v3559; Aegea)</generator>

<itunes:owner>
<itunes:name>Сергей Копылов</itunes:name>
<itunes:email></itunes:email>
</itunes:owner>
<itunes:subtitle>Блог Сергея Копылова</itunes:subtitle>
<itunes:image href="" />
<itunes:explicit></itunes:explicit>

<item>
<title>Uusi karjalainen musiikki</title>
<guid isPermaLink="false">122</guid>
<link>https://www.blog.sergeykopylov.ru/all/uusi-karjalainen-musiikki/</link>
<pubDate>Wed, 30 Sep 2026 23:17:55 +0300</pubDate>
<author>Сергей Копылов</author>
<comments>https://www.blog.sergeykopylov.ru/all/uusi-karjalainen-musiikki/</comments>
<description>
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://www.blog.sergeykopylov.ru/pictures/favicon3.png" width="512" height="512" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Короче, сам я из Петрозаводска, и знал дофига местных рок-групп. Они играли крутую музыку, записывали альбомы, ну и мы тоже. Но большинство альбомов не дошло до стримингов, а затерялось где-то в пучинах вк или на дисках и кассетах.&lt;/p&gt;
&lt;p&gt;Я, короче, нашёл 230 альбомов (и ещё найду) и сделал нашу бесплатную карельскую яндекс-музыку. Вся музыка огонь, внизу надо нажать включить всё и добавлять, что нравится, в избранное.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://karmusic.ru"&gt;https://karmusic.ru&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Ну или по фотке тоже можно выбирать )&lt;/p&gt;
</description>
</item>

<item>
<title>Архитектура фронтенда: конфигурации</title>
<guid isPermaLink="false">44</guid>
<link>https://www.blog.sergeykopylov.ru/all/arhitektura-frontenda-konfiguracii/</link>
<pubDate>Mon, 24 Feb 2020 20:24:20 +0300</pubDate>
<author>Сергей Копылов</author>
<comments>https://www.blog.sergeykopylov.ru/all/arhitektura-frontenda-konfiguracii/</comments>
<description>
&lt;p&gt;Я долго работал над большими проектами для администирования, когда в системе есть очень много данных, и много страниц, для управления ими. Много — это, например, 500 страниц. И я использовал довольно естественный подход, когда каждая страница конфигурируется, а не программируется. Что-то вроде такого:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;import ...
...

export default {
    url: &amp;quot;orders/:id&amp;quot;, // Адрес страницы с подстановкой данных
    template: &amp;quot;formPage&amp;quot;, // Какой шаблон страницы использовать
    data: { // Данные и обработчики данных
        value: (id) =&amp;gt; Data.get(Orders, {id: id}, // Набор значений полей заказа с сервера
        fields: fields, // Набор полей по порядку с их параметрами, подключаемый из другого файла,
        onSave: (id) =&amp;gt; Data.save(Orders,  {id: id})
    }
}&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Это, конечно, псевдокод, но он показывает сам принцип:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Существует сервис &lt;b&gt;Data&lt;/b&gt;, который умеет получать данные с сервера и отправлять их обратно. Вообще говоря, неважно, хранит ли он их на сервере, или в локалсторадж, к примеру, странице-то это неважно;&lt;/li&gt;
&lt;li&gt;Существует &lt;b&gt;Orders&lt;/b&gt; — описание того, как именно сохранять или получать заказы, внутри — просто JSON с параметрами, которые переиспользуются на разных страницах;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;fields&lt;/b&gt; — это JSON-описание набора полей: в каком они порядке, как взаимосвязаны друг с другом, в каком из них какое поле из data отображается, какого они типа и так далее.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Получается, что новому разработчику вообще не нужно уметь программировать, а нужно только описать два JSON-файла:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Набор полей&lt;/li&gt;
&lt;li&gt;По какому адресу и с какими дополнительными параметрами можно получить и записать данные о заказе на сервере.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Если к этому есть документация, или, хотя бы много примеров (а когда страниц 500, то и примеров в избытке) — это несложно, и, что важнее, очень быстро для исправления или переработки.&lt;/p&gt;
&lt;p&gt;Всё. Как именно сохранять данные и когда отправлять их на сервер и в каком виде знает сервис &lt;b&gt;Data&lt;/b&gt;; компоненты на странице знают, как именно отрисовывать поля ввода. Разработчику ненужно парится об отступах и расположении элементов, об отображении индикатора загрузки при сохранении и вообще о том, как устроен конкретный шаблон, достаточно просто его сконфигурировать.&lt;/p&gt;
&lt;p&gt;Но оказалось, что этот способ используется очень редко потому, что дизайнеры рисуют разные макеты, потому, что кажется, что существующим шаблоном не решить задачу и так далее. Все эти проблемы надуманы — нужно стараться решить задачу существующими средствами, точечно дорабатывая их, когда не получается. Но это тема другой статьи&lt;/p&gt;
</description>
</item>

<item>
<title>Программисты сайтов не знают, как работает веб, часть 2</title>
<guid isPermaLink="false">24</guid>
<link>https://www.blog.sergeykopylov.ru/all/programmisty-saytov-ne-znayut-kak-rabotaet-veb-chast-2/</link>
<pubDate>Sun, 23 Feb 2020 20:01:08 +0300</pubDate>
<author>Сергей Копылов</author>
<comments>https://www.blog.sergeykopylov.ru/all/programmisty-saytov-ne-znayut-kak-rabotaet-veb-chast-2/</comments>
<description>
&lt;p&gt;Вторая распространнёнейшая ошибка — переходить на новую страницу с помощью JavaScript. Это встречается повсеместно даже на самых популярных сайтах.&lt;/p&gt;
&lt;p&gt;Проблема здесь в первую очередь в том, что ты не можешь открыть сразу несколько ссылок с одной страницы в разных вкладках. Сломали веб на пустом месте: помешаю-ка пользователям использовать привычный механизм и ничего не предложу взамен.&lt;/p&gt;
</description>
</item>

<item>
<title>Когда не хочется переделывать</title>
<guid isPermaLink="false">22</guid>
<link>https://www.blog.sergeykopylov.ru/all/kogda-ne-hochetsya-peredelyvat/</link>
<pubDate>Sun, 23 Feb 2020 18:29:26 +0300</pubDate>
<author>Сергей Копылов</author>
<comments>https://www.blog.sergeykopylov.ru/all/kogda-ne-hochetsya-peredelyvat/</comments>
<description>
&lt;p&gt;Часто я видел такую картину: приходит новая задача на разработку нескольких страниц, программист с желанием и усердием тратит неделю или даже месяц, и разрабатывает страницы как надо. Раздел попадает к неравнодушному тестировщику и тот возвращает работу с вопросом: а как выполнить такой-то сценарий. Это обсуждается с постановщиком задачи, с разработчиком и оказывается, что никак, а сценарий важный и нужно всё переделать. Или даже раздел презентуется заказчику, а тот: ой, мы забыли о нужном сценарии, похоже, что нужно всё переделать.&lt;/p&gt;
&lt;p&gt;Когда так происходит раз за разом, разработчику легко взбеситься. Он со знанием дела и с вниманием всё реализовал, а теперь это нужно выкинуть и начать по новой, обидно же! И разговоры начинают сводиться к тому, что необходимо хорошо продумать задачу с самого начала, поставить строгое техническое задание и всё такое. В итоге, этам постановки технического задания может затягиваться на месяцы, а в итоге всё одно — что-то забыли и нужно переделывать. И это нормально.&lt;/p&gt;
&lt;p&gt;К сожалению, когда мы разрабатываем не космический корабль с очень чёткими требованиями и многолетним сроком разработки, невозможно учесть всё на этапе проектирования. И заказчик, и менеджер, и аналитик могут пропустить важные сценарии использования. И никакого способа надёжно измерить, все ли сценарии учтены, нет.&lt;/p&gt;
&lt;p&gt;Кроме этого нужно действовать с другой стороны: разработчик и архитектор должны продумать, как сделать так, чтобы на подобную задачу и на её переделку тратилось мало времени. Как сделать, чтобы разработка велась не недели и месяцы, а дни и недели? Тогда первые версии будут представляться пробными, а к последующим разработчики не потеряют энтузиазма.&lt;/p&gt;
&lt;p&gt;Короче, разработать общие правила, шаблоны страниц, поведение отдельных блоков, разработку конфигурированием, а не программированием, не рисовать макет каждой страницы; ограничить по времени как этап проектирования, так и этап разработки.&lt;/p&gt;
</description>
</item>


</channel>
</rss>