Как стать автором
Обновить
9
0
Ващенко Сергей @Simipa

Mobile Developer

Отправить сообщение

Регулярные выражения (regexp) — основы

Время на прочтение21 мин
Количество просмотров1M

Регулярные выражения (их еще называют regexp, или regex) — это механизм для поиска и замены текста. В строке, файле, нескольких файлах... Их используют разработчики в коде приложения, тестировщики в автотестах, да просто при работе в командной строке!

Чем это лучше простого поиска? Тем, что позволяет задать шаблон.

Например, на вход приходит дата рождения в формате ДД.ММ.ГГГГГ. Вам надо передать ее дальше, но уже в формате ГГГГ-ММ-ДД. Как это сделать с помощью простого поиска? Вы же не знаете заранее, какая именно дата будет.

Читать далее
Всего голосов 50: ↑42 и ↓8+43
Комментарии77

Всё, о чём должен знать разработчик Телеграм-ботов

Время на прочтение15 мин
Количество просмотров651K

Вы вряд ли найдете в интернете что-то про разработку ботов, кроме документаций к библиотекам, историй "как я создал такого-то бота" и туториалов вроде "как создать бота, который будет говорить hello world". При этом многие неочевидные моменты просто нигде не описаны.

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

Подробный гайд о том, как работать с ботами — под катом.

Читать далее
Всего голосов 127: ↑127 и ↓0+127
Комментарии73

Как без усилий сократить объем входящего в дата-центр трафика на 70%

Время на прочтение6 мин
Количество просмотров31K

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

Единственное, о чем мы пожалели — что не применили это решение раньше.

Читать далее
Всего голосов 105: ↑104 и ↓1+135
Комментарии53

Статьи — это тоже исходный код {

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров15K

Title


Открываю VS Code и начинаю набирать статью с самого начала. Но вот незадача — формат маркдауна не совсем совместим с имеющимся форматом Хабра. Получается выхода нет и придётся возвращаться к встроенному редактору Хабра;


Или не придется?

В голову пришла идея написать утилиту, которая конвертирует разные форматы маркдаунов друг в друга, например, из формата GitHub в формат Habr;


Такую программу я в итоге и разработал. Теперь не надо копировать статьи в редактор Хабра, чтобы посмотреть как она выглядит, можно продолжать писать в любимом VS Code;


Хотя я и использую множество плагинов VS Code, но мысли о неэффективном процессе написания статей не исчезли. Раз уж я набираю текст в VS Code, то почему бы сразу не делать коммиты контента в гит-репозиторий?


Это дало бы немало новых возможностей, которыми пользуются программисты: версионирование, бекапы на локальные носители или веб-сервисы, правки от редакторов и пользователей. А еще можно внедрить CD/CI;


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

Читать дальше →
Всего голосов 42: ↑41 и ↓1+62
Комментарии46

Пожиратель пыли, электропрачка и другие чудеса. Как рассказывали о технических новинках 100 лет назад

Время на прочтение7 мин
Количество просмотров6.3K
Пожалуй, каждый современный техноавтор хоть раз мучился вопросом «Ну что же такого особенного презентовать публике в этом новом гаджете?» и в своих мучениях мечтал вернуться лет на 100 назад, когда только-только появившиеся «чудо-машины» чуть ли не продавали сами себя. Однако это более чем спорно — даже когда техника уже стала относительно доступной, в домах ещё долгое время предпочитали камердинеров и горничных: и надёжнее, и мороки меньше. 

Именно в ту давнюю эпоху и появилась профессия технического писателя — человека, который препарирует сложные технологии, популярно разъясняет непонятные принципы и наглядно преподносит неочевидные ранее выгоды. От таланта и труда которого зависят ни много ни мало темпы технического прогресса. И приёмы работы которого, как это ни странно, не сильно устарели.

Хабр воздаёт должное всем «этим смелым парням», работавшим как в эпоху, когда стиральные машины приходилось именовать «электрической прачкой», так и во времена, когда едва ли кого удивишь сэкономленной гаджетом наносекундой. Вдохновляйтесь креативами технических писателей и копирайтеров прошлого века, создавайте прогрессивный техноконтент своего времени и отправляйте его на конкурс IT-статей «ТехноТекст-2020»



Читать дальше →
Всего голосов 18: ↑17 и ↓1+31
Комментарии24

Проектирование новостной ленты в социальных сетях

Время на прочтение9 мин
Количество просмотров39K


Так сложилось, что за последние пару лет я успел поучаствовать в разработке нескольких социальных сетей. Главная задача, которую приходилось решать в каждом из этих проектов, заключалась в формировании новостной ленты пользователя. При чём важным условием была возможность масштабирования этой ленты в условиях роста числа пользователей (точнее, числа связей между ними) и, как следствие, — количества контента, который они деливерят друг другу.

Мой рассказ будет о том, как я, превозмогая трудности, решал задачу формирования новостной ленты. А также я расскажу о подходах, которые наработали ребята из проекта Socialite, и которыми они поделились на MongoDB World.
Читать дальше →
Всего голосов 38: ↑34 и ↓4+30
Комментарии68

Архитектура современных корпоративных Node.js-приложений

Время на прочтение12 мин
Количество просмотров96K
Ох, не зря в названии намёк на нетленку Фаулера. И когда фронтенд-приложения успели стать настолько сложными, что мы начали рассуждать о высоких материях? Node.js… фронтенд… погодите, но Нода же на сервере, это бэкенд, а там ребята и так всё знают!



Давайте по порядку. И сразу небольшой дисклеймер: статья написана по мотивам моего выступления на Я.Субботнике Pro для фронтенд-разработчиков. Если вы занимаетесь бэкендом, то, возможно, ничего нового для себя не откроете. Здесь я попробую обобщить свой опыт фронтендера в крупном энтерпрайзе, объяснить, почему и как мы используем Node.js.
Читать дальше →
Всего голосов 42: ↑41 и ↓1+51
Комментарии64

Пишем свой dependency free WebSocket сервер на Node.js

Время на прочтение11 мин
Количество просмотров12K


Node.js — это популярный инструмент для построения клиент-серверных приложений. При правильном использовании, Node.js способен обрабатывать большое количество сетевых запросов, используя всего один поток. Несомненно, сетевой ввод — вывод является одной из сильнейших сторон этой платформы. Казалось бы, что используя Node.js для написания серверного кода приложения, активно использующего различные сетевые протоколы, разработчики должны знать, как эти протоколы работают, но зачастую это не так. Виной тому еще одна сильная сторона Node.js, это его пакетный менеджер NPM, в котором можно найти готовое решение практически под любую задачу. Используя готовые пакеты, мы упрощаем себе жизнь, переиспользуем код (и это правильно), но в то же время скрываем от себя, за ширмой библиотек, суть происходящих процессов. В этой статье мы постараемся разобраться в протоколе WebSocket, реализуя часть спецификации, не используя внешних зависимостей. Добро пожаловать под кат.

Читать дальше →
Всего голосов 29: ↑29 и ↓0+29
Комментарии4

Нетривиальные анимации в SwiftUI

Время на прочтение8 мин
Количество просмотров5.8K

Идея


На WWDC 2019 была представлена SwiftUI — технология коренным образом влияющая на создание UI в приложениях для экосистемы Apple. Нам в Distillery стало интересно в ней разобраться чуть глубже, чем это подано в примерах от Apple. В идеале нужно было запилить какой-нибудь полезный для iOS команды и сообщества UI компонент. С идеями по этому поводу оказалось туго, поэтому решили пилить что-то просто забавное. Вдохновил вот этот концепт:


image


Особенно интересным показалось обилие нетривиальной анимации. Таким образом, по ходу реализации хотелось проверить, насколько SwiftUI удобен и приспособлен для чего-то более сложного, чем почти статический UI из примеров WWDC 2019.

Читать дальше →
Всего голосов 18: ↑18 и ↓0+18
Комментарии1

Как я веду Zettelkasten в Notion уже год: стартовый набор и полезные трюки

Время на прочтение8 мин
Количество просмотров176K

Zettelkasten — крутой метод хранения идей и знаний — сейчас на слуху, его уже обсуждали на Хабре. Я веду такой в Notion уже год, потому что Notion лучше всех воплощает три главных принципа Zettelkasten: взаимосвязанность, категоризацию, актуальность. Метод улучшил качество моего обучения и исследований, и без него как-то уже не так. 

Я почитал русскоязычные и англоязычные ресурсы и не нашел ни нормального шаблона для Notion, ни объяснения как реализовать главные преимущества метода Zettelkasten. Под катом и то, и другое. 

UPD: На текущий момент, статья безбожно устарела, потому что за еще один год я набрался опыта, помогая другим людям организовать их Цеттели и наблюдая за чужим опытом. А еще Notion выпустил несколько фич, заточенных именно под Цеттель. И теперь мне совестно, как новички страдают, разбираясь в теме после меня.

Эту статью можно почитать для понимания основ, но актуальные источники информации тут:

  • У меня в Психотронке можно следить за подготовкой обновленной версии, ну и написать мне за помощью. А можете не следить: версия 2.0 выйдет на Хабре.
  • В русскоязычном сообществе Zettelkasten в Телеграме сидят люди, которые хорошо разбираются в теме. Мы обожаем помогать новичкам.

Дисклеймер: ни Notion, ни автор метода мне за статью не платили.
Читать дальше →
Всего голосов 49: ↑49 и ↓0+49
Комментарии88

Полное руководство по Flexbox

Время на прочтение11 мин
Количество просмотров625K
Полное руководство по CSS flexbox. Это полное руководство объясняет все о flexbox, сосредотачиваясь на всех возможных свойствах для родительского элемента (контейнер flex) и дочерних элементов (элементы flex). Оно также включает в себя историю, демонстрации, шаблоны и таблицу поддержки браузеров.
Читать дальше →
Всего голосов 23: ↑17 и ↓6+11
Комментарии5

Релиз мобильных приложений одной кнопкой

Время на прочтение11 мин
Количество просмотров13K


Всем привет! Меня зовут Михаил Булгаков (нет, не родственник), я работаю релиз-инженером в Badoo. Пять лет назад я занялся автоматизацией релизов iOS-приложений, о чём подробно рассказывал в этой статье. А после взялся и за Android-приложения.

Сегодня я подведу некоторые итоги: расскажу, к чему мы пришли за это время. Long story short: любой причастный к процессу сотрудник может зарелизить хоть все наши приложения на обеих платформах в несколько кликов — без головной боли, больших затрат времени, регистрации и СМС. Так, наш отдел релиз-инженеров за 2019 год сэкономил около 830 часов.

За подробностями — добро пожаловать под кат!
Читать дальше →
Всего голосов 33: ↑31 и ↓2+36
Комментарии11

Как GitLab помогает делать бэкапы больших хранилищ NextCloud

Время на прочтение8 мин
Количество просмотров6.5K

Привет, Хабр!


Сегодня я хочу рассказать о нашем опыте автоматизации резервного копирования больших данных хранилищ Nextcloud в разных конфигурациях. Я работаю СТО в «Молния АК», где мы занимаемся конфигурационным управлением IT систем, для хранения данных используется Nextcloud. В том числе, с распределенной структурой, с резервированием.


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


Предыстория


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


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


Клиентов много, все они с разными конфигурациями, и все на своих площадках и со своими особенностями. Тут стандартная методика когда вся площадка принадлежит тебе, и бэкапы делаются из крона подходит плохо.


Для начала посмотрим на вводные данные. Нам нужно:


  • Масштабируемость в плане одна нода или несколько. Для крупных исталляций мы используем в качестве хранилища minio.
  • Узнавать о проблемах с выполнением бэкапа.
  • Нужно хранить бэкап у клиентов и/или у нас.
  • Быстро и легко разбираться с проблемами.
  • Клиенты и установки сильно отличаются один от другого — единообразия добиться не получается.
  • Скорость восстановления должна быть минимальна по двум сценариям: полное восстановление (дизастер), одна папка — стерто по ошибке.
  • Обязательна функция дедупликации.


Для решения задачи управления бекапами мы прикрутили GitLab. Подробнее подкатом.

Читать дальше →
Всего голосов 12: ↑12 и ↓0+12
Комментарии6

Как перенести файлы с одного облака на другое минуя свой ПК

Время на прочтение6 мин
Количество просмотров44K

Смерть, развод, переезд — три наиболее стрессовых ситуаций в жизни любого человека.
«Американская история ужасов».


— Андрюх, я из дома ухожу, помоги с переездом, ко мне всё не влезет:(
— Хорошо, а много там?
— Тонн* 7-8…
*Тонна (жарг.) — Терабайт.


Недавно, в процессе интернет-сёрфинга, я обратил внимание на то, что несмотря на доступность на Хабре и на аналогичных ему ресурсах множества материалов о способах и моделях миграции различных типов данных, в сети всё ещё появляются вопросы по этой теме. Которые, почему-то, не всегда удостаиваются обстоятельных ответов. Этот факт и сподвиг меня однажды собрать заметки о реализации похожего решения и оформить их в виде отдельного поста.
Читать дальше →
Всего голосов 27: ↑25 и ↓2+44
Комментарии16

Azure DevOps и App Center вместо тестовых ферм: упрощаем и ускоряем мобильную разработку с помощью облачных сервисов

Время на прочтение8 мин
Количество просмотров3K
Качественные тесты обеспечивают скорость и стабильную работу мобильных приложений, но разнообразие устройств, операционных систем и их версий раздувает тестовые фермы, увеличивает стоимость разработки и отнимает много времени и сил. В этой статье мы расскажем, как сократить издержки тестирования с помощью облачного сервиса Visual Studio App Center, который объединяет более четырех тысяч устройств с разными ОС, и упростить дистрибуцию с помощью платформы Azure DevOps.


Читать дальше →
Всего голосов 24: ↑24 и ↓0+24
Комментарии0

WebRTC на Android: как включить аппаратное кодирование на множестве устройств

Время на прочтение7 мин
Количество просмотров14K
Для видеозвонков в Badoo мы используем стандарт WebRTC и кодек H.264. Если верить документации, этот кодек должен без проблем работать на любых устройствах Android начиная с Android 5.0. Но на практике всё оказалось не совсем так. В этой статье я расскажу про особенности реализации аппаратного кодирования для кодека H.264 в WebRTC и о том, как заставить его работать на большем количестве устройств.


Читать дальше →
Всего голосов 55: ↑55 и ↓0+55
Комментарии9

Парсите, а не валидируйте

Время на прочтение16 мин
Количество просмотров30K

Еще в декабре мне попалась одна совершенно замечательная статья на английском, посвящённая использованию системы типов языка для более широкого класса задач, для повышения надежности приложений и простоты рефакторинга. К сожалению, в тот момент я был слишком занят написанием статей по ФП, которые крайне важно было написать, пока свежи воспоминания. Но теперь, когда с этой задачей я справился, наконец дошли руки перевести эту замечательную заметку. Оригинальный язык примеров — Хаскель, но я решил переписать их на раст, для более широкого охвата аудитории. Однако язык тут совершенно неважен, советы этой статьи я применяю в ежедневной разработке на вполне себе "приземлённых" C# и TypeScript, так что если вы просто стараетесь писать надёжный и поддерживаемый код, то, вне зависимости от языка, статья вам будет в тему.


Благодарю за вычитку и помощь в переводе Hirrolot, funkill и andreevlex


Читать дальше →
Всего голосов 61: ↑58 и ↓3+68
Комментарии155

VIM как IDE для разработки на Python

Время на прочтение10 мин
Количество просмотров160K
image
Данная статья будет посвящена настройке vim, в которой я поделюсь своим «скромным» пониманием того, каким должен быть текстовый редактор, чтобы в нем было удобно/приятно/легко (нужное подчеркнуть) писать код также, как это сейчас возможно во всевозможных IDE типа PyCharm, SublimeText и т.п.
Весь процесс постараюсь описать как можно более подробно, чтобы вопросов по мере чтения для начинающих осваивать vim возникало как можно меньше.
Читать дальше →
Всего голосов 70: ↑58 и ↓12+46
Комментарии47

Java-дайджест за 10 марта

Время на прочтение4 мин
Количество просмотров7.6K


  • Есть такая штука, Milkman — это альтернатива Postman, расширяемый воркбенч для работы с запросами и ответами с интерфейсом на JavaFx и с идеей «всё есть плагин». Несмотря на плагинную архитектуру, эта штука почти не использует reflection, и поэтому стало возможно пересобрать её как бинарник GraalVM Native Image. Плагины, конечно, нельзя добавлять в рантайме — что собрал, то и будет. Сборка делается через Maven. Обсуждение в документации — по ссылке. Не обошлось и без ложки дегтя: так же как пользователи GNU/Linux называют операционную систему просто (и неправильно) «Linux», здесь автор Milkman написал просто «Graal» вместо «GraalVM» — пришлось пойти и создать тикет на исправление этой несправедливости.
  • В прошлом декабре появился новый язык для JVM под названием Concurnas. На нем можно писать что угодно, но заточен он для легкого и приятного создания многопоточных, распределенных и параллельных систем. Сейчас вышла версия 1.14.020: в ней поправлены баги с escape-символами в REPL, там же добавлены номера строк, добавлены инструменты по работе со строками вроде взятия буквы по индексу (их не было?!), методы и функции теперь можно красиво печатать с помощью toString, добавлена совместимость с JDK 11 (теперь поддерживаются JDK 8-13).

Читать дальше →
Всего голосов 28: ↑27 и ↓1+33
Комментарии4

Как Амплифер использует Logux — инструмент для связи клиента и сервера

Время на прочтение10 мин
Количество просмотров5.8K

Logux — инструмент для связи клиента и сервера


Меня зовут Виталий Ризо, я старший фронтенд-разработчик в «Амплифере». Поделюсь, как мы применяем Logux в веб-приложении: организуем обмен данными в реальном времени, уведомления об ошибках без перезагрузки страницы, общение между вкладками браузера и интеграцию с Redux.

Читать дальше →
Всего голосов 14: ↑13 и ↓1+19
Комментарии5

Информация

В рейтинге
Не участвует
Откуда
Новосибирск, Новосибирская обл., Россия
Дата рождения
Зарегистрирован
Активность