User Tools

Site Tools


Q&A

2. Расскажите пожалуйста про ваш стек

  1. Langs: Golang, С, С++, Javascript Node.Js, Perl, PHP, SQL, Pl/PgSQL, Ruby, Python, Shell, некоторые DSL;
  2. DBMS: PostgreSQL, Vertica, Clickhouse; SQLite;
  3. Keyvalue DB: Redis, ряд встраиваемых (Level5, BoltDB, BDB, etc)
  4. RPC: HTTP, SOAP (жуть), JSON RPC, GraphQL, gRPC, прочие, включая написанные мной под проекты;
  5. Frontend: Angular2, Vue2.js, React, Plain HTML/CSS/SCSS with templates;
  6. Network protocols: IPv4/IPv6, SIP, & Co (RCTP, RTP, etc), BGP, OSPF, HTTP, MQTT, etc, etc;
  7. Security: X509, OpenSSl, SSL/TLS, SSH, IPSec, JWT, прочие;
  8. OS: Linux (в основном Debian) & KVM, FreeBSВ & bhive
  9. Message Broker: в основном Apache Kafka, что-то самодельное (брокер сообщений не такая уж сложная штука);
  10. Docker Composer;

Это то, чем пользовался, не все, что вспомнил. Также много c чем экcпериментровал и пробовал применить. Долго в IT, начал заниматся не потому “там больше платят” (как некоторые сейчас), а из сильного интереса.

8. Есть ли знание одного из языков программирования: Go, Java или C/C++?

C (C98) это язык/компилятор с которого начал, вместе с Linux/FreeBSD. По прежнему его использую, это как основа. В том числе писал подключаемые модули, например для Perl X509 библиотек.

Без С никак. Куча написанного на нем, и это же язык системной раработки. И встаиваемых систем, наряду с С++.

С++ один любимых, OOP, куча хороших контейнеров в STL. Начиная с С++13 автовыведение типов, умные указатели сделали разработку приятнее.

Но. Ситуация омрачается тем, что большие возможности и большое количество любителей мета-программирования порождают тяжелые для анализа библиотеки (one header libs, в частности boost), в которых ошибки и узкие места можно искать неделями, пытаясь воспроизвести ситуацию.

Опять же разные подходы к написанию кода, разные стили…

Golang использую с 2013 года, и сейчас это любимый компилятор. Считаю, чтобы по настоящему его понять и оценить, надо достаточно много написать кода на С.

Одна их самых любимых вещей, это легкая сериализация/десериализация, за счет хранения информации о типах в obj и пакете reflection. Во всех остальных языках это всегда немного закат солнца вручную. Web сервисы, да и вообще сетевые сервисы писать легко, и даже дефолтный web сервис показывает неплохие характеристики (по нагрузке похожие характеристики получал только для Koa2 Node.Js в “кластерном” варианте) Умные указатели, выведение типов, автоматический dereferencing указателей, обработка паники, отличная трассировка, … очень много приятных вещей, хорошая базовая библиотека.

Фактически, при аккуратной разработке, я получил только только 3-4 segfault ситуаций-mistackes за пару лет, который исправил за меньше чем за час каждую.

Стековая обработка ошибок, думаю, довольно разумный вариант по сравнению c exception c том же С++, Java & Co.

Java: На Java писал очень мало, больше дорабатывал/правил. Было, переписывал сервисы с Java на Golang, и даже получалось компактнее по коду в 2-3 раза (!, при беседе могу показать один из корпоративных примеров).

В общем я пишу или хотя бы пробовал писать на всем, что шевелится. Для меня это инструменты, которые используются под цели, в зависимости от проекта и его составляющих (например, наличие унаследованных решений). Естественно, какие-то инструменты нравятся больше.

3. Расскажите пожалуйста про нынешний проект

Последний проект это стартап, с нуля. Раcпределенная система хранения данных с интерфейсом-api совместимым S3 Amazon, и естественно аналогичным поведением. При хранении пользовательских создаються избыточные блоки, позаоляющие восстановить данные при отказе одного-дух серверов, и конечно предусмотрен контроль целостности блоков контрольными сумами. Проект относительно средней+ сложности.

Я написал

  1. Каркасы сервисов для unix native (никаких контейнеров не предусматривалось)
  2. RCP протокол и фремворк c возможностью передачи больших объемов данных (в одной транзакции легко и без особой нагрузки передается 1-2 гигабайта в потоке)
  3. Провел достаточное количество исследований и экспериментов.

1. Почему задумались о переходе?

Работу на проектом пришлось прервать из того, что все семьей заболели COVID, и я в тяжелой форме. Не помер. Сейчас уже полностью восстановился.

Последний проект уже уехал вперед, я поговорил с владельцем как идут дела, но догонять уже как-то не то.

4. Как быстро готовы приступить к работе после принятия оффера?

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

5. Ваши зарплатные ожидания?

Последний контракт был $3700. Если будет где-то в этой области, я не буду плакать.

6. Понимание как работают телекоммуникационные сети, протоколы видеостриминга и телефонии, операционные системы, был ли опыт в этой сфере?

Ответ ниже.

7. Есть ли опыт в сфере видеостриминга или видеоконференцсвязи;

Операционные системы. Я вырос на Unix, FreeBSD & Linux, немного SunOS. Довольно много ковырялся в коде, правил, отлаживал, много чего собирал и по прежнему собираю их исходников, со всем балаганом зависимостей.

Коммуникации. Я их строил, и делал сервисы для контроля-управление инфраструкты. Городские, кампусные, областные, корпоративные.

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

Плюс, я довольно активно занимался internet телефонией, SIP и H.323 (которая, пожалуй, RIP). Но поскольку продукты компаний зачастую не соотвествали в протоколах даже в рамках одной линейки, приходилось влезать в самые детали.

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

Вы также можете получить информацию из Олег Бородин, программный инженер, разработчик

С уважением, Бородин Олег.