Pull to refresh
4
0.7
Сергей Савостин @savostin

Еще один программист

Send message

Анимируем 3d-персонажа в Unity3D: скачиваем модель персонажа, скачиваем анимации

Level of difficulty Easy
Reading time 1 min
Views 1.3K

Первая часть анимирования 3d-персонажа в Unity3d. В статье скачаем 3d-модель персонажа, скачаем скелетные анимации и импортируем их в проект unity.

Читать далее
Total votes 11: ↑7 and ↓4 +3
Comments 10

Миграция микросервисной архитектуры на API Gateway

Level of difficulty Easy
Reading time 10 min
Views 11K

Микросервисная архитектура Amediateka была спроектирована более 6 лет назад предыдущей командой разработки. С тех пор добавилось много новых микросервисов, но фундаментальная часть архитектуры осталась прежней. В этом году мы решили внедрить несколько глобальных изменений, одно из которых - API Gateway. Статья расскажет о том, что это такое, какие преимущества дает, как просто и безопасно мигрировать функционирующую систему на API Gateway и сделает обзор готовых решений.

Читать далее
Total votes 16: ↑15 and ↓1 +14
Comments 2

Улучшаем возможности PM2 с помощью дополнительных модулей автоскейлинга и мониторинга

Level of difficulty Easy
Reading time 6 min
Views 2.5K

Всем привет. Сегодня я бы хотел рассказать о том, с какими трудностями пришлось столкнуться при работе с менеджером node.js процессов PM2, и как нам пришлось расширить его возможности для того, чтобы его было можно использовать эффективнее.

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

Свое мобильное приложение: от идеи до разработки, продвижения и развития

Reading time 18 min
Views 22K

В этой статье я собираюсь объединить все свои знания и опыт, охватывая все этапы разработки мобильных приложений. В статье не будет кода, она будет полезной не только для Android, iOS и Flutter-разработчиков, но также тем, у кого нет опыта в программировании.

Я пройдусь по основным этапам разработки мобильного приложения:

Проработка идеи
Проектирование UX/UI
Разработка
Аналитика
Продвижение
Дальнейшее развитие приложения

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

Читать далее
Total votes 12: ↑9 and ↓3 +6
Comments 10

Полное понимание асинхронности в браузере

Reading time 24 min
Views 92K
Про асинхронность JavaScript написано много статей, документации и книг. Но вся информация сильно распределена по интернету, поэтому сложно быстро и полностью разобраться, что к чему, и составить цельную картину в голове. Не хватает одного исчерпывающего гайда. Именно эту потребность я и хочу закрыть своей статьёй.

Читать дальше →
Total votes 78: ↑78 and ↓0 +78
Comments 25

Как быстро и легко локализовать приложение на flutter. Riverpod + slang

Reading time 12 min
Views 3.4K

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

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

Узнать больше
Total votes 4: ↑3 and ↓1 +2
Comments 5

Моя попытка сделать Wi-Fi-флешку и что из этого получилось (а что нет)

Reading time 11 min
Views 58K

Что такое WiFi-флешка? Это флешка, которая опознается, как флешка, пахнет, как флешка, крякает, как флешка, но на самом деле никакая она не флешка, она эмулирует файловую систему, а данные берет по WiFi с сервера.

Читать далее
Total votes 203: ↑203 and ↓0 +203
Comments 100

Описание и валидация древовидных структур данных. JSON-Schema

Reading time 6 min
Views 80K

Многие сервисы и приложения (особенно веб-сервисы) принимают древовидные данные. Например, такую форму имеют данные, поступающие через JSON-PRC, JSON-REST, PHP-GET/POST. Естественно, появляется задача валидировать их структуру. Существует много вариантов решения этой задачи, начиная от нагромождения if-ов в контроллерах и заканчивая классами, реализующими валидацию по разнообразным конфигурациям. Чаще всего для решения этой задачи требуется рекурсивный валидатор, работающий со схемами данных, описанными по определённому стандарту. Одним из таких стандартов является JSON-Schema, рассмотрим его поближе.
Читать дальше →
Total votes 38: ↑35 and ↓3 +32
Comments 18

Создание бессерверных API с помощью Node.js и AWS Lambda

Reading time 12 min
Views 5.9K

AWS Lambda существует уже несколько лет, и она остается самым популярным способом экспериментировать с технологией serverless. Если вы не знакомы с serverless, то это модель разработки, в которой управление, предоставление и масштабирование серверов абстрагируется от разработки приложений. Серверы существуют в бессерверном (serverless) мире, но они полностью управляются облачным провайдером, что позволяет разработчикам сосредоточиться на упаковке своего кода для деплоя.

AWS Lambda — это разновидность функции как услуги (FaaS), которая позволяет выполнять код по требованию в ответ на предварительно сконфигурированные события или запросы. Эта статья познакомит вас с AWS Lambda и поможет создать и развернуть функции Lambda с помощью Node.js и AWS SAM.

Давайте приступим!

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

Память в браузерах и в Node.js: ограничения, утечки и нестандартные оптимизации

Reading time 32 min
Views 40K

Интро: почему я написал эту статью


Меня зовут Виктор, я разрабатываю страницу результатов поиска Яндекса. Несмотря на внешнюю простоту, поисковая выдача — сложная штука: на каждый запрос генерируется своя уникальная страница, на которой в зависимости от запроса может присутствовать блок Картинок, Карты, Переводчик, видеоплеер и многие другие компоненты. Все они должны запускаться и работать в памяти обычных бюджетных телефонов, которые использует большинство наших пользователей. Браузерам должно хватать ресурсов, чтобы пользователь не видел вот такого:



На своих серверах мы должны генерировать сотни миллионов уникальных страниц в сутки — это сложнее, чем просто отдавать одни и те же ресурсы. Генерация страницы не должна быть слишком требовательной к памяти сервера.


Разрабатывая проект на JavaScript (TypeScript, ClojureScript или каком-то другом языке, транслируемом в JavaScript), мы привыкли создавать объекты, массивы, строки и вообще писать код, как будто память бесконечна. Это не так. Я расскажу о видах проблем с памятью, о том, какие ограничения мы часто забываем и как их можно преодолеть. В ответ браузеры и пользователи скажут вам спасибо.


Читать дальше →
Total votes 55: ↑55 and ↓0 +55
Comments 12

Клонируем ОС автоматически без дополнительных серверов и пакетов

Reading time 8 min
Views 36K

Как-то раз мне пришлось собирать несколько серверов виртуализации, и на них надо было установить порядка 500 машин, каждая из которых должна была быть клонирована.

Самые разношёрстные машины. Некоторые из них жили на Windows, а некоторые на Linux. Машины достаточно самостоятельные. В них уже установлены клиенты, которые занимались подключением и настройкой ОС, но сами ОС необходимо было доустанавливать.И если с Linux у нас всё ещё более-менее просто — rsync и grub, и всё готово, то Windows не настолько “переносимая” ОС (меня ждало создание sysprep образ и клонирование именно его).

Мне не хотелось устанавливать различные инструменты, такие как Puppet или Ansible. Более того, диски различных машин имели разный размер. К сожалению, надо было именно клонировать, а не просто копировать образы qcow дисков.

В итоге, просидев несколько дней над достаточно разрозненной документацией старого, надёжного и проверенного временем инструмента, я нашёл способ легко и безболезненно, а главное — автоматически, клонировать ОС.

Более того, в сети не пришлось устанавливать и настраивать никакие инструменты. Единственное, что мне потребовалось — это SSH сервер, на который были сложены образы ОС.

Итак, под кат.
Читать дальше →
Total votes 21: ↑21 and ↓0 +21
Comments 10

Безопасность REST API от А до ПИ

Reading time 17 min
Views 117K

Введение


Умение реализовать грамотное REST API — полезный навык в наше время, т.к. все больше сервисов предоставляют свои возможности с помощью API. Но разработка REST API не ограничивается реализацией HTTP запросов в определенном стиле и формированием ответов в соответствии со спецификацией. Задача обеспечения безопасности REST API не так очевидна, как, например, обеспечение безопасности баз данных, но ее необходимость не менее важна.
В настоящее время многие онлайн системы с помощью API передают приватные данные пользователей, такие как медицинские или финансовые. Текущая же ситуация с безопасностью в веб-приложениях весьма печальна: по данным Comnews порядка 70% содержат кри­тичес­кие уязвимости. Поэтому всем, кто участвует в проектировании, реализации и тестировании онлайн систем, важно иметь общую картину по существующим угрозам и способам обеспечения безопасности как всей системы, так и используемого REST API.

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

image
Читать дальше →
Total votes 52: ↑52 and ↓0 +52
Comments 22

Избавляемся от назойливых предупреждений при входе на терминальный сервер

Reading time 3 min
Views 30K


Не так давно внедряли мы решение на терминальном сервере Windows. Как водится, кинули на рабочие столы сотрудникам ярлыки для подключения, и сказали — работайте. Но пользователи оказались зашуганными по части КиберБезопасности. И при подключении к серверу, видя сообщения типа: «Вы доверяете этому серверу? Точно-точно?», пугались и обращались к нам — а все ли хорошо, можно нажимать на ОК? Тогда и было решено сделать все красиво, чтобы никаких вопросов и паники.


Если ваши пользователи все еще приходят к вам с подобными страхами, и вам надоело ставить галочку «Больше не спрашивать» — добро пожаловать под кат.

Читать дальше →
Total votes 12: ↑12 and ↓0 +12
Comments 13

Генерируем одноразовые пароли для 2FA в JS с помощью Web Crypto API

Reading time 9 min
Views 20K

Введение


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


Уверен, все, кто читают эту статью, хотя бы раз использовали двухфакторную аутентификацию (далее — 2FA, уж больное длинное словосочетание) в своей жизни. Сегодня я приглашаю вас разобраться, как устроена эта технология, ежедневно защищающая бесчисленное количество аккаунтов.


Но для начала, можете взглянуть на демо того, чем мы сегодня займемся.

Читать дальше →
Total votes 23: ↑23 and ↓0 +23
Comments 11

Хаки при работе с большим числом мелких файлов

Reading time 7 min
Views 42K
Идея статьи родилась спонтанно из дискуссии в комментариях к статье «Кое-что об inode».



Дело в том, что внутренней спецификой работы наших сервисов является хранение огромадного числа мелких файлов. На данный момент у нас порядка сотен терабайт таких данных. И мы натолкнулись на некоторые очевидные и не очень грабельки и успешно по ним прошлись.

Поэтому делюсь нашим опытом, может кому и пригодится.
Читать дальше →
Total votes 104: ↑103 and ↓1 +102
Comments 66

Музыка для ваших проектов: 12 тематических ресурсов с треками по лицензии Creative Commons

Reading time 7 min
Views 118K
Подборка пригодится разработчикам, дизайнерам, видеорежиссерам и контент-мейкерам, которые ищут музыку для своих проектов — приложений, игр или видеороликов.

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

Total votes 57: ↑56 and ↓1 +55
Comments 9

Лабиринты: классификация, генерирование, поиск решений

Reading time 44 min
Views 80K

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

Классификация лабиринтов


Лабиринты в целом (а значит, и алгоритмы для их создания) можно разбить по семи различным классификациям: размерности, гиперразмерности, топологии, тесселяции, маршрутизации, текстуре и приоритету. Лабиринт может использовать по одному элементу из каждого класса в любом сочетании.
Читать дальше →
Total votes 82: ↑82 and ↓0 +82
Comments 13

Как усилить защищенность веб-приложений при помощи HTTP заголовков

Reading time 18 min
Views 32K
image

Это третья часть серии по веб-безопасности: вторая часть была «Web Security: введение в HTTP», первая "Как работают браузеры — введение в безопасность веб-приложений".

Как мы видели в предыдущих частях этой серии, серверы могут отправлять заголовки HTTP, чтобы предоставить клиенту дополнительные метаданные в ответе, помимо отправки содержимого, запрошенного клиентом. Затем клиентам разрешается указывать, каким образом следует читать, кэшировать или защищать определенный ресурс.

В настоящее время браузеры внедрили очень широкий спектр заголовков, связанных с безопасностью, чтобы злоумышленникам было труднее использовать уязвимости. В этой статье мы попытаемся обсудить каждый из них, объясняя, как они используются, какие атаки они предотвращают, и немного истории по каждому заголовку.
Читать дальше →
Total votes 35: ↑34 and ↓1 +33
Comments 9

5+1 случай, когда спецификация REST API играет огромную роль

Reading time 13 min
Views 34K

В этой статье речь пойдёт о написании и поддержке полезной и актуальной спецификации для REST API-проекта, которая позволит сэкономить много лишнего кода, а также серьёзно улучшить целостность, надежность и прозрачность прокта в целом.


Что такое RESTful API?



Это миф.


Серьёзно, если вы думаете, что в вашем проекте RESTful API, вы почти наверняка ошибаетесь. Идея RESTful — в построении API, который во всём соответствовал бы архитектурным правилам и ограничениям, описанным стилем REST, однако в реальных условиях это оказывается почти невозможно.

Читать дальше →
Total votes 35: ↑34 and ↓1 +33
Comments 32

После прочтения сжечь. Делаем одноразовые ссылки на голом Nginx

Reading time 7 min
Views 15K
Для начала нужно уточнить, что я настоятельно не рекомендую использовать это решение в боевых условиях. Лучше вовсе так не делать никогда. Всё, что вы делаете, вы делаете на свой страх и риск. Причины, которые заставляют дать такой совет, будут приведены в содержании статьи. Если это предупреждение вас не отпугнуло, то добро пожаловать под кат.
Читать дальше →
Total votes 30: ↑30 and ↓0 +30
Comments 18
1

Information

Rating
1,440-th
Location
Isleworth, England - London, Великобритания
Date of birth
Registered
Activity

Specialization

Fullstack Developer, Application Developer
Lead
From 4,000 €
JavaScript
HTML
CSS
JQuery
Web development
Node.js
C++
PHP
MySQL
ClickHouse