Pull to refresh
8
0
Stanislav Tsarevski @StasTs

User

Send message

Шпаргалка для алгособеса 2 — графовые и строковые алгоритмы

Level of difficulty Medium
Reading time 22 min
Views 17K

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

В наше неспокойное время, когда сфера AI стремительно движется вперёд, хочется немного стабильности и уверенности в завтрашнем дне. Как это связано с темой статьи?

Самым прямым образом — алгоритмы прокачивают умение системно мыслить, искать нестандартные пути решения; человека, у которого эти скиллы на высоте, вряд ли заменит ИИ. Так что, тратя бесценное время на алгоритмы, вы занимаетесь очень полезным делом, расслабьтесь и получайте удовольствие) В качестве бонуса к прокачиванию серого вещества вы получите сверхспособность пройти любой алгособес в FAANG и удовлетворить любые потребности пирамиды Маслоу — довольно приятно)

В этой статье мы разберём графовые алгоритмы типо DFS, Флойда–Уоршелла и строковые наподобие Ахо-Корасик.

Читать далее
Total votes 41: ↑39 and ↓2 +37
Comments 35

Бюджетная реализация Modbus TCP в серии Simatic S7-300/400 при помощи Logo

Reading time 10 min
Views 7.4K

Классические линейки контроллеров Siemens, а именно — Simatic S7-300 и Simatic S7-400, поддерживают протокол Modbus TCP как в качестве клиента, так и в качестве сервера. Эта поддержка не лишена одного существенного недостатки, она платная, и стоимость лицензии весьма высока.

Если заказчик — «богатый», а интегратор — «умный» (опытный), то факт платности лицензии и ее стоимость не приводит к неприятностям, все известно заранее, на этапе составления спецификации, бюджет согласован заранее. Если применяется серия S7-1200 / 1500, то вопрос даже не поднимается, эти PLC поддерживают Modbus RTU и TCP без дополнительного лицензирования.

На практике встречаются случаи, когда ничто не «предвещало беды», но модбас на «трехсотнике» неожиданно становится нужен (никогда такого не было, и вот опять!). Не учли что-нибудь, форс-мажор или просто разгильдяйство. Какие в этом случае пути решения?

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

Полёты наяву для новичков и любителей: 10 бюджетных квадрокоптеров

Reading time 16 min
Views 58K

Ещё несколько лет назад съёмка при помощи квадрокоптеров была уделом профессионалов и ярых поклонников острых ощущений. Разбить дрон стоимостью в полторы сотни тысяч рублей было тем ещё удовольствием. Благо, что сейчас первые шаги в освоении воздушного пространства  и аэросъёмки можно осуществлять с помощью недорогих беспилотных летательных аппаратов с камерой или без неё.

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

Читать далее
Total votes 44: ↑40 and ↓4 +36
Comments 34

Фантастика 2020 года, которую стоит почитать

Reading time 6 min
Views 109K


Под конец года принято подводить итоги и кажется стоит вспомнить, что же было в этом непростом году хорошего. Например, я читал много отличных книг (что еще делать дома?). Вот немного про самые примечательные из них или, по крайней мере, те, которые сильнее всего запомнились мне.
Читать дальше →
Total votes 57: ↑55 and ↓2 +53
Comments 112

Как стать DevOps инженером за полгода или даже быстрее. Часть 5. Развертывание

Reading time 6 min
Views 11K
Как стать DevOps инженером за полгода или даже быстрее. Часть 1. Введение
Как стать DevOps инженером за полгода или даже быстрее. Часть 2. Конфигурирование
Как стать DevOps инженером за полгода или даже быстрее. Часть 3. Версии
Как стать DevOps инженером за полгода или даже быстрее. Часть 4. Пакетирование программ



Освежим память


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



Если вы тратили по месяцу на изучение каждого раздела, то сейчас находитесь на 4 месяце. К этому времени вы уже должны знать, как обеспечить инфраструктуру, которая будет работать с вашим программным обеспечением, как правильно управлять версиями программ и как упаковать их для последующего развертывания. В этой статье мы обсудим, как правильно развернуть ваш код!
Читать дальше →
Total votes 19: ↑17 and ↓2 +15
Comments 0

Шаблон backend сервера на Golang — часть 1 (HTTP сервер)

Reading time 17 min
Views 31K

UPD. Ссылка на новый репозиторий проекта с поддержкой развертывания в Kubernetes


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


Шаблон включает:


  • Передачу параметров сервера через командную строку github.com/urfave/cli
  • Настройка параметров сервера через конфигурационный файл github.com/sasbury/mini
  • Настройка параметров TLS HTTP сервера
  • Настройка роутера регистрация HTTP и prof-обработчиков github.com/gorilla/mux
  • Настройка уровней логирования без остановки сервера github.com/hashicorp/logutils
  • Настройка логирования HTTP трафика без остановки сервера
  • Настройка логирования ошибок в HTTP response без остановки сервера
  • HTTP Basic аутентификация
  • MS AD аутентификация gopkg.in/korylprince/go-ad-auth.v2
  • JSON Web Token github.com/dgrijalva/jwt-go
  • Запуск сервера с ожиданием возврата в канал ошибок
  • Использование контекста для корректной остановки сервера и связанных сервисов
  • Настройка кастомной обработки ошибок github.com/pkg/errors
  • Настройка кастомного логирования
  • Сборка с внедрением версии, даты сборки и commit

Вторая часть посвящена прототипированию REST API.


Третья часть посвящена развертыванию шаблона в Docker, Docker Compose, Kubernetes (kustomize).


Пятая часть посвящена оптимизации Worker pool и особенностям его работы в составе микросервиса, развернутого в Kubernetes.


Ссылка на репозиторий проекта.

Читать дальше →
Total votes 11: ↑10 and ↓1 +9
Comments 7

Веб-приложение на Kotlin + Spring Boot + Vue.js (дополнение)

Reading time 31 min
Views 8.6K
Добрый день, дорогие обитатели Хабра!

Как и следует из названия, данная статья является дополнением к написанной ранее Веб-приложение на Kotlin + Spring Boot + Vue.js, позволяющим усовершенствовать скелет будущего приложения и сделать удобнее работу с ним.
Усовершенствовать
Total votes 11: ↑11 and ↓0 +11
Comments 3

Веб-приложение на Kotlin + Spring Boot + Vue.js

Reading time 40 min
Views 45K
Добрый день, дорогие обитатели Хабра!

Не так давно мне представилась возможность реализовать небольшой проект без особых требований по технической части. То есть, я был волен выбирать стек технологий на своё усмотрение. Потому не преминул возможностью как следует «пощупать» модные, молодёжные многообещающие, но малознакомые мне на практике Kotlin и Vue.js, добавив туда уже знакомый Spring Boot и примерив всё это на незамысловатое веб-приложение.
Посмотреть, что из этого вышло
Total votes 19: ↑18 and ↓1 +17
Comments 21

[Обновлено в 10:52, 14.12.19] В офисе Nginx прошел обыск. Копейко: «Nginx был разработан Сысоевым самостоятельно»

Reading time 7 min
Views 313K

Другие материалы по теме:


Eng version
Что значит наезд на Nginx и как это отразится на индустрииdeniskin
Open source — наше всё. Позиция Яндекса по ситуации с Nginxbobuk
Официальная позиция Программных комитетов Highload++ и других IT-конференций на претензии к Игорю Сысоевуolegbunin


По информации от одного из сотрудников, в московском офисе опенсорс-разработчиков Nginx проводят обыски в рамках уголовного дела, истцом по которому выступает Рамблер (ниже официальный ответ пресс-службы компании по этому вопросу и подтверждение наличия претензий к Nginx). В качестве доказательств приводится фото постановления о производстве обыска в рамках уголовного дела, возбужденного 4 декабря 2019 года по статье 146 УК РФ «Нарушение авторских и смежных прав».

Фото постановления о производстве обыска


Как предполагается, истцом выступает компания Рамблер, а ответчиком пока «неустановленная группа лиц», а в перспективе — основатель Nginx Игорь Сысоев.

Суть претензии: Игорь начал работу над Nginx, будучи сотрудником Рамблера, а только после того, как инструмент стал популярен, основал отдельную компанию и привлек инвестиции.

Почему Рамблер вспомнил о своей «собственности» только спустя 15 лет — неясно.
Total votes 797: ↑794 and ↓3 +791
Comments 1457

Скрипт настройки Windows 10

Reading time 2 min
Views 168K

image
Давно хотел поделиться своим скриптом по автоматизации настройки Windows 10 (на данный момент актуальная версия 19041), да все руки не доходили. Возможно, он будет кому-то полезен целиком или только его части. Конечно, будет проблематично описать все пункты настройки, но постараюсь выделить самое важное.

Если кому-то интересно, то добро пожаловать под кат.

Читать дальше →
Total votes 88: ↑77 and ↓11 +66
Comments 297

Двустороннее связывание Angular, чуть больше понимания

Reading time 7 min
Views 29K
От переводчика
От переводчика: два года назад я начал свой первый проект на Angular(2+), имея большой и успешный бэкграунд AngularJS. Переход потребовал заметного форматирования мышления, поскольку слишком много на A1 и A2+ делается «чуть-чуть по другому». Болезненность перехода мне заметно снизил блог thoughtram. Я ещё год назад получил разрешение перевести эту статью «об элементарном и всем легко понятном». Но руки они такие руки (своих статей пачка недописанных). Что удивительно, статья неплохо переводится гугл транслейтом. Но некоторые нюансы в этом переводе терялись, не говоря об авторском стиле. Авторский стиль не сохранился в полной мере и в моей версии. Но, надеюсь, настроение и мысли статьи мне удалось передать.

Я понимаю, что Angular не самая востребованная тема на Хабре, но надеюсь, что перевод поможет кому-то, так же как исходная статья помогла когда-то мне.

Вот что вызывало вау-эффект в старом добром AngularJS, так это «двустороннее связывание». Эта магия мгновенно влюбляла в AngularJS, и ломала все представления о скучном программировании страниц и (о, ужас!) веб-форм. Изменения в данных мгновенно отображались на экране и наоборот. Те, кто раньше разрабатывал приложения на jQuery, воспринимали связывание, как попадание в сказку. А бородатые монстры, пилившие толстых клиентов ещё до jQuery, начинали судорожно пересчитывать бездарно потерянные человеко-месяцы.

И, более того, магия двустороннего связывания была доступна не только для специальных нотаций и избранных компонентов. Мы могли легко её использовать в наших собственных директивах и компонентах (просто установив параметр конфигурации).

В Angular2+ создатели отказались от встроенной двусторонней привязки данных (кроме как через ngModel). Но это не означает, что мы не можем использовать двустороннее связывание в собственных директивах… Просто халява кончилась и теперь нужно кое-что делать самостоятельно. И, желательно, c пониманием того, как оно устроено в Angular.
Читать дальше →
Total votes 6: ↑6 and ↓0 +6
Comments 0

Работа с данными в Angular

Reading time 7 min
Views 24K

Всем привет, меня зовут Сергей и я web разработчик. Да простит меня Дмитрий Карловский за заимствованное вступление, но именно его публикации вдохновили меня написание этой статьи.


Сегодня хотелось бы поговорить о работе с данными в Angular приложениях в целом и о моделях предметной области в частности.

Читать дальше →
Total votes 19: ↑16 and ↓3 +13
Comments 14

Опенсорсный набор утилит PayPal для кроссдоменного взаимодействия

Reading time 7 min
Views 4.3K
Автор материала, разработчик из PayPal, описывает набор утилит для кроссдоменного взаимодействия.



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

Запуск нашего кода на сторонних сайтах сопряжен с огромным количество рисков и подводных камней, но есть некоторые ключевые моменты:

  • Мы совершенно точно никак не можем сломать какие-либо сайты. Это означает, что мы никак не модифицируем глобальные переменные, которых мы не создавали, включая полизаполнения для браузерных API. Мы не делаем этого, поскольку такой подход почти всегда делает отслеживание багов практически невозможным.
  • А вот сайты очень даже могут нас сломать, что они делают довольно часто. Один из недавних примеров: сайт перезаписал Array.prototype.toJSON что привело к поломке JSON.stringify. Многие веб-сайты включают полизаполнение WeakMap, которое в отличие от ее нативной версии не работает на междоменных оконных объектах. Поэтому без дополнительных предварительных проверок мы можем доверять только собственному коду.
Читать дальше →
Total votes 20: ↑19 and ↓1 +18
Comments 0

Bash-скрипты: начало

Reading time 11 min
Views 1.7M
Bash-скрипты: начало
Bash-скрипты, часть 2: циклы
Bash-скрипты, часть 3: параметры и ключи командной строки
Bash-скрипты, часть 4: ввод и вывод
Bash-скрипты, часть 5: сигналы, фоновые задачи, управление сценариями
Bash-скрипты, часть 6: функции и разработка библиотек
Bash-скрипты, часть 7: sed и обработка текстов
Bash-скрипты, часть 8: язык обработки данных awk
Bash-скрипты, часть 9: регулярные выражения
Bash-скрипты, часть 10: практические примеры
Bash-скрипты, часть 11: expect и автоматизация интерактивных утилит

Сегодня поговорим о bash-скриптах. Это — сценарии командной строки, написанные для оболочки bash. Существуют и другие оболочки, например — zsh, tcsh, ksh, но мы сосредоточимся на bash. Этот материал предназначен для всех желающих, единственное условие — умение работать в командной строке Linux.


Читать дальше →
Total votes 69: ↑61 and ↓8 +53
Comments 123

Мой опыт получения PMP

Reading time 6 min
Views 31K
Совсем недавно я стала счастливым обладателем сертификата PMP — Project Management Professional. И в этой статье я хочу поделиться своим опытом со всеми, кому предстоит этот экзамен, кто еще только думает сдавать или не сдавать, ну и с теми кому просто интересна эта тема.
Читать дальше →
Total votes 21: ↑20 and ↓1 +19
Comments 10

Как устроен поиск

Reading time 28 min
Views 34K
Андрей Аксёнов

Андрей Аксенов (shodan, Разработчик поискового движка Sphinx)


Поиск устроен вот так:

Краткое устройство поиска

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

Берешь документы, разваливаешь их на ключевые слова. И просто взять и развалить документ на ключевые слова «мама, мыла, раму» – это ты не далеко ушел от grep’а, потому что потом все равно эти ключевые слова перебирать. Надо строить некую спец. структуру – полнотекстовый индекс. Вариантов для его построения человечество придумало в свое время довольно много, но, слава Богу, от всех отказалось и в нормальных продакшн системах, по большому счету, победил на данный момент вариант ровно один. Про него и буду рассказывать. Все остальные имеют скорее историческое значение, что ли, и практического интереса не представляют.
Total votes 64: ↑53 and ↓11 +42
Comments 22

React.js: собираем с нуля изоморфное / универсальное приложение. Часть 1: собираем стек

Reading time 22 min
Views 195K
image

Лицо моей жены, когда она вычитывала эту статью


Я решил написать цикл статей, который и сам был бы счастлив найти где-то полгода назад. Он будет интересен в первую очередь тем, кто хотел бы начать разрабатывать классные приложения на React.js, но не знает, как подступиться к зоопарку разных технологий и инструментов, которые необходимо знать для полноценной front-end разработки в наши дни.


Я хочу с нуля реализовать, пожалуй, наиболее востребованный сценарий: у нас есть серверная часть, которая предоставляет REST API. Часть его методов требует, чтобы пользователь веб-приложения был авторизован.

Читать дальше →
Total votes 51: ↑46 and ↓5 +41
Comments 78

Angular2: RC4 to RC5 Unit Tests Migration Guide

Reading time 8 min
Views 11K
image

Сразу скажу, что я не любитель Angular1, angular-way и иже с ними, потому как ребята из Angular таких делов наворотили, что иногда диву даешься. Тем не менее, их новое детище выглядит многообещающе. Да, Америку не открыли, но создали нечто, способное конкурировать с популярными современными фреймворками (React + Redux, Aurelia, и т.д.).

Есть и плюсы, и минусы, о которых уже написаны статьи и даже книги, но суть поста в другом.

RC5 вышел всего неделю назад и «порадовал» разработчиков многими изменениями, которые, возможно, и помогают в работе и упрощают жизнь, но заставят серьёзно попотеть над переписыванием уже написанного кода.
Читать дальше →
Total votes 19: ↑16 and ↓3 +13
Comments 28

IT-студент с жаждой путешествий? Пора в магистратуру

Reading time 9 min
Views 20K

Добрый день, Хабр!


Я IT-студентка, выпускница одного из старейших университетов Москвы, внезапно нашедшая себя в магистратуре в Европе. Не хочу агитировать за "утечку мозгов" или нечто подобное, правда, но по воле случая много знакомых спрашивали о процессе application, поэтому мне показалась интересной идея поделиться годом поисков и наработанными скиллами с более широкой аудиторией. Итак, поехали.

Читать дальше →
Total votes 26: ↑22 and ↓4 +18
Comments 72

Information

Rating
Does not participate
Location
Linz, Oberösterreich, Австрия
Date of birth
Registered
Activity