Pull to refresh
23
0.1
Слава @slavcopost

Пользователь

Send message

Принцип работы async/await в JavaScript

Level of difficultyMedium
Reading time8 min
Views27K


Если вам доводилось работать с JavaScript, то вы наверняка встречались с синтаксисом async/await. Эта функциональность позволяет прописывать асинхронную логику синхронным образом, упрощая тем самым её понимание. Некоторым ветеранам JS известно, что async/await – это просто синтаксический сахар для существующего Promises API. Это означает, что в JS должен быть способ реализации функциональности async/await без использования ключевых слов async и await, хоть и более громоздкий. Именно об этом и пойдёт речь в данной статье.

Видео от автора на ту же тему.
Читать дальше →
Total votes 41: ↑40 and ↓1+54
Comments19

Поиск по регулярным выражениям может быть простым и быстрым

Level of difficultyMedium
Reading time28 min
Views9.3K

Данный пост является переводом первой статьи 2007 года про устройство регулярных выражений от автора библиотеки RE2. Для понимания требуется немного терпения и свободного времени, чтобы осилить прочтение статьи до конца. Будет плюсом знакомство с теорией автоматов и языком программирования Си (но это необязательное требование).

Так же в статье приводится интереснейшая историческая справка и краткий обзор возможностей современных регулярных выражений.

Как оказалось, с тех пор мало что поменялось, так что статья не потеряла своей актуальности.

Обо всех ошибках и опечатках большая просьба сообщать, чтобы я мог их поправить.

Заблудиться в тёмном лесу
Total votes 25: ↑24 and ↓1+32
Comments6

Паттерны реактивности в современном JavaScript

Level of difficultyHard
Reading time12 min
Views12K



"Реактивность" — это то, как системы реагируют на обновление данных. Существуют разные типы реактивности, но в рамках этой статьи, реактивность — это когда мы что-то делаем в ответ на изменение данных.


Паттерны реактивности являются ключевыми для веб-разработки


Мы работаем с большим количеством JS на сайтах и в веб-приложениях, поскольку браузер — это полностью асинхронная среда. Мы должны реагировать на действия пользователя, взаимодействовать с сервером, отправлять отчеты, мониторить производительность и т.д. Это включает в себя обновление UI, сетевые запросы, изменения навигации и URL в браузере, что делает каскадное обновление данных ключевым аспектом веб-разработки.


Реактивность, обычно, ассоциируется с фреймворками, но можно многому научиться, реализуя реактивность на чистом JS. Мы можем смешивать и играть с этими паттернами для лучшей обработки обновления данных.


Изучение паттернов приводит к уменьшению количества кода и повышению производительности веб-приложений, независимо от используемого фреймворка.

Мне нравится изучать паттерны, поскольку они применимы к любому языку и системе. Паттерны могут комбинироваться для решения задач конкретного приложения, часто приводя к более производительному и поддерживаемому коду.

Читать дальше →
Total votes 10: ↑8 and ↓2+10
Comments8

Архитектурные антипаттерны в микросервисах и способы их избежания

Reading time16 min
Views23K

Понимание антипаттернов является важной частью проектирования стабильных и эффективных систем. Антипаттерны – это повторяющиеся решения проблем, которые кажутся интуитивно верными, но на практике приводят к негативным последствиям. В микросервисной архитектуре антипаттерны могут привести к потере преимуществ этого подхода и созданию системы с высокой степенью сложности, нестабильности и низкой производительностью.

Первоначально, они помогают избежать распространенных ошибок и улучшить качество проектирования. Во-вторых, антипаттерны предостерегают от нежелательных последствий и предоставляют рекомендации по тому, как правильно построить систему. Наконец, они способствуют развитию аналитического мышления и способности видеть «большую картину».

В данной статье мы глубоко исследуем несколько антипаттернов, специфичных для микросервисной архитектуры, и обсудим методы их устранения. Понимание этих антипаттернов поможет разработчикам создавать устойчивые и эффективные микросервисные системы, извлекая максимум пользы из преимуществ данного подхода.

Читать далее
Total votes 15: ↑13 and ↓2+13
Comments15

KODI: собираем удобный и функциональный медиацентр для дома. Часть 1

Reading time27 min
Views399K

Поговорим о том, как при наличии небольшого количества времени и навыков построить мультимедийный комбайн с дополнительными возможностями домашнего сервера на базе Kubuntu 20.04 и KODI, способного работать 24/7/365.

Читать дальше →
Total votes 55: ↑54 and ↓1+68
Comments189

Японский подход, или Что Toyota дала современной разработке

Level of difficultyEasy
Reading time13 min
Views5.8K

Все, кто занимается разработкой программного обеспечения, так или иначе слышали про Kanban или применяли его в работе. Это — инструмент методологии Agile, который подходит для своего круга задач.

Но Kanban придумали совсем не разработчики: еще 60 лет назад его внедрила компания Toyota на своем производстве. И он стал частью общей философии компании, которая получила название Lean Manufacturing — «бережливое производство». Успехи Toyota и ее подхода очевидны: на 2022 год компания занимает первое место в мире по числу проданных автомобилей — 10,48 млн, опережая Volkswagen AG на 2,22 млн штук.

И между производством автомобилей и разработкой ПО напрашивается параллель. Давайте попробуем разобраться, в чем же особенности TPS (Toyota Production System), откуда все это появилось и как применяется в современной разработке.

Читать далее
Total votes 8: ↑6 and ↓2+5
Comments3

IPv6 — это катастрофа (но поправимая)

Level of difficultyMedium
Reading time12 min
Views49K

В последнее время мы всё чаще слышим не самые приятные новости про IP-адреса. Компания AWS объявила, что будет брать по $0,005/ч. за каждый адрес IPv4, тем самым присоединившись к другим облачным провайдерам, сделавшим платным использование публичного адреса IPv4. GCP просит с клиентов по $0,004/ч., а Azure и Hetzner — по €0,001/ч. Очевидно, что эпоха, когда облачные провайдеры расширялись, скупая дополнительное пространство IPv4, подходит к концу. Чем дальше, тем ценнее становятся эти адреса, и тем менее целесообразно предоставлять их бесплатно.
Читать дальше →
Total votes 69: ↑64 and ↓5+90
Comments244

Какой должна быть user_story, и что общего у системных аналитиков и голливудских сценаристов

Level of difficultyEasy
Reading time8 min
Views11K
image

«Тарас, за что ты получаешь свои деньги? Ты же просто рассказываешь истории!»

За то, что я хорошо их рассказываю.

С user story всё как в Голливуде: кажется, что многие сериалы похожи друг на друга, но написать по-настоящему хороший сценарий даже для ремейка не так-то просто. Ты должен жить этим фильмом, должен знать, что ты хочешь показать, какие моменты взять из жизни и как их развернуть перед зрителем. И это стоит денег.

User story легко зафакапить. А так как от системного аналитика она сразу уходит к разработчикам, то ошибка может стоить очень дорого.

Я тот самый системный аналитик. Однажды в самом начале моей деятельности мы с Product Owner друг друга недопоняли и сделали совсем не то, чего хотел заказчик.

Моя команда работала с магазином для рыбаков и должна была создать весьма нетривиальную форму для заказов, позволяющую подбирать рыболовные снасти по определённым критериям.

PO имел в виду одно, я подумал что-то своё, задание ушло в команду. Ребята его внимательно прочитали и накодировали то, что поняли. Когда подошло время отдавать готовый продукт бизнесу, выяснилось, что мы сделали совсем не то, что имел в виду заказчик. Но т. к. мы всей командой от PO до тестировщиков были любителями рыбалки и, соответственно, целевой аудиторией сайта, то знали, как думает пользователь на самом деле, и нашли нестандартное классное решение. Заказчик посмотрел и сказал: «Слушайте, круто! Очень интересное решение! Я об этом даже не думал, когда вам говорил. Но ваш вариант мне нравится. Берём».

Решение получилось ровно таким, чтобы быть удобным целевой аудитории. Несмотря на user story. Бывает и так.
Читать дальше →
Total votes 14: ↑14 and ↓0+14
Comments2

Сравнительный анализ Apache Kafka и RabbitMQ

Level of difficultyMedium
Reading time13 min
Views9.9K

Сравнительный анализ Apache Kafka и RabbitMQ

В статье поговорим об особенностях, достоинствах и недостатках двух популярных брокеров сообщений. В каком случае использовать тот или иной брокер? Как с помощью брокеров достичь максимальную производительность и гибкость в обработке данных?

Тема будет интересна разработчикам на проектах, где требуется обмен информацией между разными компонентами или системами.

Читать далее
Total votes 12: ↑12 and ↓0+12
Comments4

Климатическая система в квартире своими руками

Reading time21 min
Views107K
Кто-то в детстве мечтает изобрести лекарство от рака, кто-то — стать космонавтом или владельцем свечного заводика. А я мечтал о том, что у меня появится климатическая система, и в квартире, наконец, не будет душно, вечная простуда от сквозняков исчезнет, а горло перестанет першить от сухости. И теперь мечта исполнена!

Примерно с декабря 2015 по июнь 2016 года я читал форумы, катался по строительным магазинам, собирал систему в квартире и на балконе, паял контроллер и писал прошивку — и добился своего.

В этой статье я собираюсь похвастаться результатом и рассказать, как устроена моя установка. Полностью описать процесс сборки в одной статье невозможно, но, надеюсь, краткое описание окажется интересным для тех, кто хочет дышать свежим тёплым воздухом. Если кратко, то моя установка устроена так:

Схема установки
А если чуть подробнее, то...
Total votes 87: ↑84 and ↓3+81
Comments290

SSH с высоты птичьего полёта, или разгребаем кучи ключей

Level of difficultyMedium
Reading time16 min
Views29K

Решил я недавно разобраться в подробностях работы SSH. Использовал его для удалённого запуска команд давно, но, будучи не слишком опытным в системном администрировании, очень размыто представлял, зачем админы просят им отправить какой-то ключ, что с этим ключом происходит при подключении, и прочее. Поэтому предлагаю здесь обзорную экскурсию по используемым алгоритмам и ключам.

Статья рассчитана на тех, кто поверхностно знаком с SSH, возможно, использовали на практике, но не осознали его сакральных смыслов и глубоких тайн. Попытаюсь описать основные аспекты безопасности протокола: какие ключи и алгоритмы используются, в какой момент и зачем. Также будут замечания, как некоторые части протокола реализованы в OpenSSH.

Читать далее
Total votes 31: ↑29 and ↓2+37
Comments46

Личный опыт «чайника» по разработке электронного устройства

Level of difficultyEasy
Reading time6 min
Views15K

Повествование рассчитано на начинающих радиолюбителей, чтобы продемонстрировать на примере автора, на какие из «граблей» точно не стоит наступать. «Прожжённые» и профессиональные радиолюбители могут найти повествование скучным и им можно не читать.

Читать далее
Total votes 36: ↑36 and ↓0+36
Comments29

RSA простыми словами и в картинках

Level of difficultyEasy
Reading time5 min
Views74K

Ассиметричный алгоритм криптографии RSA, что же это за алгоритм такой и как он работает? В этой статье мы разложим по полочкам, что такое RSA и ассиметричная криптография в целом, простыми словами и с картинками.

На обложке то как DALL-E представляет себе ассиметричную криптографию.

Читать далее
Total votes 11: ↑9 and ↓2+11
Comments17

Взламываем «умную» зубную щётку

Level of difficultyMedium
Reading time6 min
Views15K

Только задумайтесь: мы всё чаще используем умные холодильники, машины розетки и лампочки, умные часы и колонки. Нас окружают умные вещи и умные люди. Но насколько они умные и так ли нужна эта "умность"? А ещё — насколько легко взломать эти умные вещи? Часы, например, несложно. Давайте посмотрим другой пример: умную зубную щётку.

Читать далее
Total votes 65: ↑65 and ↓0+65
Comments19

Как Factorio умудряется работать без лагов с таким числом элементов на экране

Level of difficultyEasy
Reading time2 min
Views42K

Немного магии, бережная работа с объектами/компонентами. В посте также рассмотрена ECS и то, почему в Factorio не так просто использовать такой подход.

Читать далее
Total votes 64: ↑50 and ↓14+58
Comments72

Ультимативный гайд по HTTP. HTTP/1.1 vs HTTP/2

Level of difficultyEasy
Reading time6 min
Views24K

Продолжаем цикл статей о протоколе HTTP: расскажем, что нового привнесла версия HTTP/1.1 и какие у нее принципиальные отличия с версией HTTP/2.

Читать далее
Total votes 9: ↑7 and ↓2+7
Comments10

Нейросеть, что это такое и как создать свою? Детальная инструкция

Reading time21 min
Views42K

В поисковых системах ежедневно растет количество запросов, что такое нейросеть (далее — НС). Прежде всего это связано с растущим интересом к технологиям на базе искусственного интеллекта (далее — ИИ). Многие из нас даже не подозревают, что мы практически ежедневно используем модели глубокого обучения. Запросы Siri или взаимодействие с чат-ботами в мессенджерах — один из ярких примеров использования НС. 

Мало кто из нас знает, что нейронки существуют уже 80 лет. Первая НС была представлена в 1943 году Уорреном Маккалоу и Уолтером Питтсом. В ее основе лежала пороговая логика для построения вычислительных моделей. Но с годами подходы к реализации нейронных сетей изменились, как и технологии, которые используются для их разработки. Углубимся в основы НС и разберемся с ключевыми вопросами. 

Читать далее
Total votes 25: ↑18 and ↓7+17
Comments1

Thief (2014): о развитии пазлов в игре

Reading time3 min
Views3.3K

Придумать интересный пазл - одна из нелегких задач для дизайнера. Чаще всего головоломки создаются на основе придуманных основных геймплейных механиках в процессе производства игры. Поэтому встретить интересные и впечатляющие пазлы, не связанных с основным игровым процессом, довольно трудно. Thief (2014) является примером не только интересной реализации головоломок через окружение, но и их развитием. Рассмотрим, как разработчики из Eidos Montreal создают и развивают пазлы в игре при помощи означающих.

Читать далее
Total votes 4: ↑2 and ↓2+1
Comments3

Как разрабатывали StarCraft

Level of difficultyEasy
Reading time23 min
Views38K
image

Хотите себе «Дарк Соулса» от стратегий — добро пожаловать в «СтарКрафт».

Сегодня мы вспомним культовую стратегию в реальном времени, созданную корпорацией Blizzard в самом конце 90-х, когда они ещё были эталоном качества, делали только хорошие игры и никогда не проваливались.

Ту игру, которая была настолько популярной, что даже стала официальной религией национальным кибер-спортом одной азиатской страны. Бородатые легенды гласят, что отцы этого государства отдавали дочерей только за женихов, способных обыграть их в мультиплеере один на один.

Эта игра запала в сердечко всем любителям годных RTS, ведь в ней нужно просчитывать каждый шаг, как в шахматах.

В общем, в это надо играть, про это приятно вспомнить и поговорить.

Тем более, если я правильно подсчитал, игре сегодня стукнуло 25 лет. Одним словом, праздник!
Читать дальше →
Total votes 102: ↑101 and ↓1+132
Comments62

Памятка пользователям ssh

Reading time13 min
Views1.5M
abstract: В статье описаны продвинутые функций OpenSSH, которые позволяют сильно упростить жизнь системным администраторам и программистам, которые не боятся шелла. В отличие от большинства руководств, которые кроме ключей и -L/D/R опций ничего не описывают, я попытался собрать все интересные фичи и удобства, которые с собой несёт ssh.

Предупреждение: пост очень объёмный, но для удобства использования я решил не резать его на части.

Оглавление:
  • управление ключами
  • копирование файлов через ssh
  • Проброс потоков ввода/вывода
  • Монтирование удалённой FS через ssh
  • Удалённое исполнение кода
  • Алиасы и опции для подключений в .ssh/config
  • Опции по-умолчанию
  • Проброс X-сервера
  • ssh в качестве socks-proxy
  • Проброс портов — прямой и обратный
  • Реверс-сокс-прокси
  • туннелирование L2/L3 трафика
  • Проброс агента авторизации
  • Туннелирование ssh через ssh сквозь недоверенный сервер (с большой вероятностью вы этого не знаете)
Читать дальше →
Total votes 360: ↑352 and ↓8+344
Comments148

Information

Rating
3,283-rd
Location
Испания
Date of birth
Registered
Activity