Pull to refresh
2
Артур Соловьев @artur_solovievread⁠-⁠only

Программист

Send message

Деньги или репутация

Level of difficultyEasy
Reading time8 min
Views40K

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

Читать далее
Total votes 197: ↑196 and ↓1+195
Comments176

Оживляем веб-камеру 1999 года

Reading time8 min
Views25K

Покупая девайс, мы, в принципе, понимаем, что вечно он не прослужит: разъёмы износятся и/или сам прибор выйдет из моды. Но лично меня наиболее удручает ещё одна причина избавляться от техники: для неё просто перестают делать драйвера.

Успех USB особенно примечателен. Этот стандарт с нами уже очень долго, и разъём его практически не менялся (в основном, не считая USB-C). Это значит, что очень старые устройства под USB 1 по-прежнему можно применять в системах, продаваемых сегодня. Как минимум, так должно быть, если у старых устройств есть драйверы для тех операционных систем, что актуальны сегодня.

Читать далее
Total votes 93: ↑92 and ↓1+91
Comments25

Алгоритмы балансировки нагрузок

Level of difficultyMedium
Reading time8 min
Views31K

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

В этом посте мы рассмотрим способы, которыми один балансировщик нагрузок может распределять HTTP-запросы на множество серверов. Мы начнём снизу и проделаем весь путь вверх до современных алгоритмов балансировки нагрузок.
Читать дальше →
Total votes 107: ↑106 and ↓1+105
Comments16

Аномалии под нагрузкой в PostgreSQL: о чём стоит помнить и с чем надо бороться

Reading time14 min
Views24K

В этой статье мы разберём несколько аномальных случаев высокой нагрузки в СУБД PostgreSQL. Что это такое? Обычно PostgreSQL хорошо показывает себя под нагрузкой и оправдывает ожидания в отношении производительности — она остаётся высокой. Но при определённых профилях нагрузки СУБД может вести себя не так, как мы ожидаем. Это и есть аномалии, на которых мы сосредоточимся в данной статье (для тех, кто предпочитает видео, эта информация доступна в виде записи доклада на HighLoad++).

Наша компания помогает обслуживать мультитерабайтные базы данных в крупных проектах, поэтому мой рассказ об аномалиях основан на реальном опыте промышленной эксплуатации СУБД в Postgres Professional — порой мы сталкиваемся с тем, что СУБД ведёт себя не так, как мы ожидали.

Также в рамках статьи мы рассмотрим следующее:

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

Вариационные автокодировщики: теория и рабочий код

Reading time11 min
Views15K


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

Когда-нибудь задавались вопросом, как работает модель вариационного автокодировщика (VAE)? Хотите знать, как VAE генерирует новые примеры, подобные набору данных, на котором он обучался? Прочитав эту статью, вы получите теоретическое представление о внутренней работе VAE, а также сможете реализовать его самостоятельно. Затем я покажу рабочий код VAE, обученный на наборе рукописных цифр, и мы немного повеселимся, генерируя новые цифры!
Читать дальше →
Total votes 11: ↑11 and ↓0+11
Comments0

Два модема

Reading time6 min
Views14K

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

Читать далее
Total votes 126: ↑125 and ↓1+124
Comments13

Что делать, когда выпускник топ-10 мирового вуза не может спроектировать блок сложения A+B

Reading time5 min
Views120K

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

Когда я вижу у недавнего выпускника в резюме какой-то из протоколов в котором используется valid/ready, например AXI или AHB, я прошу его спроектировать блок, у которого на входе два числа A и B, а на выходе их сумма. Разумеется не просто написать SUM=A+B, а еще и поставить valid/ready сигналы на каждый из A, B, SUM, чтобы A и B могли приходить в разное время, а также чтобы блок ждал, если SUM не может быть передана другому блоку сразу.

Некоторые не справляются. Грустно смотреть на человека, который потратил 6 лет своей жизни (4 года в бакалавриате и 2 года в магистратуре) и океан денег на образование - и не может сложить два числа и бьется как угорь на сковородке. То блок не работает когда числа приходят в разное время, то создатель забывает снять valid, и блок на 2+2 выдает не 4, а 4-4-4-4-4-4-4... То числа складываются не попарно, а просто записываются в регистры и на выход идет их текущая сумма, хотя количество аргументов A и B не совпадает. То не отрабатывается backpressure и результаты теряются, то (после того как кандидат написал страницу кода на верилоге) блок работает на половинной производительности, то есть не может принимать поток чисел подряд, а ожидает между ними пропуски (gaps). Короче ведет себя как ChatGPT.

Как же прокачаться чтобы такого не было?
Total votes 135: ↑123 and ↓12+111
Comments222

Как я запустил свою первую мобильную игру и провалился

Reading time19 min
Views53K

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

Читать далее
Total votes 133: ↑132 and ↓1+131
Comments84

Национализировать Википедию

Reading time2 min
Views11K

Мне ответил депутат! На мой пост в телеграм-канале про борьбу государства с Википедией, отреагировал целый зампред госдумы по айти Горелкин. Один из главных регуляторов Интернета. И предложил её...национализировать. Сделать свою, суверенную копию на российских серверах. И вносить в неё строго согласованные, правильные правки. Чтоб, значит, без фейков и дезинформации.

Читать далее
Total votes 60: ↑49 and ↓11+38
Comments139

Перед правилами Хабра все равны … или кто-то «более равен»?

Reading time2 min
Views29K

Обратил внимание на статью от модератора Хабра @Exosphere. Цитата:

Пользователя может слить компания … , пользователя могут слить участники каких-то таинственных масонских кружков хабрачатов, пользователя могут слить группы авторов, конкурента может слить конкурент. Могу сказать совершенно точно: ещё ни один такой «слив» не прошёл мимо нас. У нас есть отработанная схема быстрого определения таких нарушителей — все они банятся и/или лишаются кармы, и их жизнь на Хабре начинается с чистого листа. Причём совершенно неважно, идёт речь о частном или корпоративном аккаунте — перед правилами Хабра все равны.

Правда ли все равны, или кто-то является "более равным"?

Давайте разберемся!
Total votes 279: ↑263 and ↓16+247
Comments373

Имитация трёхмерных зданий в 2D-игре

Level of difficultyMedium
Reading time7 min
Views15K

Создаём объём при помощи света и теней.

Игра двухмерная, разрабатывается на Game Maker Studio 2 и во время работы я столкнулся с множеством задач а-ля «должно быть красиво». Где-то пришлось придумать свой велосипед, где-то повезло наткнуться на описание решения похожих задач.

В свое время меня очень вдохновила статья про рендер в Graveyard Keeper - это очень классный материал для разработчика 2D игр, в сети подобного довольно мало. Поэтому надеюсь, что моя статья тоже послужит для кого-то источником вдохновения.

Внутри есть гифки и картинки!
Total votes 67: ↑67 and ↓0+67
Comments16

Financial News Sentiment Dataset: определяем точку входа в акции по настроению новостей

Reading time5 min
Views5.9K

Набор данных Financial News Sentiment Dataset (FiNeS) содержит в себе заголовки финансовых новостей о компаниях, торгующихся на Московской и СПб биржах. Целевой переменной датасета является оценка тональности новостных заголовков в виде вещественного числа. Идеи для использования датасета: Создание трейдинговых стратегий на основе анализа тональности новостей "на лету"; Анализ новостного фона в разрезе времени (день/неделя) или в разрезе компании.

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

Шаблон новичка на пути PANDAS в искусстве анализа данных

Reading time6 min
Views12K

Доброго времени суток! Меня зовут Алексей. Сейчас я обучаюсь на аналитика данных в "Яндекс Практикум". Дело для меня непривычное, совершенно не связанное с моей предыдущей деятельностью (пока что работаю врачом, иногда пишу рассказы и повести), так что порой некоторые темы даются с большим трудом.

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

И мой главный совет: "сделайте себе шаблон"!

Не важно, в чём вы пишете код: "Google colaboratory", "Jupiter notebook" или в какой-то иной среде. Не важно, сколько вы пока знаете: если осваиваете профессию с нуля, вносите в шаблон всё, что уже умеете - позже всегда можно удалить лишнее. Шаблон поможет вам быстро сориентироваться в любой новой задаче, напомнит о необходимых манипуляциях. 

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

Лично я большую часть учебных проектов выполнил в "Google colaboratory" (далее по тексту просто "колаб"), где предпочитаю следующую структуру шаблона.

Читать далее
Total votes 11: ↑8 and ↓3+5
Comments4

Как это устроено: атомные часы

Reading time22 min
Views66K

Привет Хабр! Сегодня у нас выходит статья в Nature Physics, в которой мы рассказываем про один интересный апгрейд для атомных часов. А нашу предыдущую работу по этой теме — в тот раз в самом Nature — даже упоминали пару раз на Хабре. Но то ли наш пресс-релиз оказался слишком сложным, то ли тема слишком специфичной, короче говоря, я из тех заметок вряд ли бы что-либо понял. Поэтому сегодня попробую простым языком рассказать про то, как устроены атомные часы и что интересного нас ждет в ближайшем будущем.



Оптические атомные часы в университете Токио. Credit: H. Katori

Читать дальше →
Total votes 262: ↑261 and ↓1+260
Comments48

Лучший технический вопрос, который мне задавали на собеседовании

Reading time13 min
Views35K

Много воды утекло с тех пор, как я в последний раз участвовал в собеседовании по программированию как соискатель. Но до сих пор помню особенно полюбившийся мне вопрос с такого собеседования. Дело было в MemSQL, году так в 2013. (Они даже успели переименоваться, поэтому, полагаю, конкретно этот вопрос они на собеседовании уже не задают. Не чувствую вины за то, что выдаю его. Это отличная история, которая также кажется мне поучительной; просто раньше я о ней никогда не писал).

Окей, вообще, это даже не вопрос как таковой, это программерская задачка на засыпку. Не помню, сколько времени мне на нее дали. Скажем, три часа, считая время, потребовавшееся на постановку задачи.

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

Читать далее
Total votes 32: ↑28 and ↓4+24
Comments22

Заградотряд

Reading time7 min
Views90K

Вот вы как программистов удерживаете в компании? Хорошо платите? Создаёте комфортные условия? Интересные задачи и проекты? Перспективы? Обучение?

И как, получается? Сидят, не уходят? А сколько денег и усилий затрачиваете? Стоит оно того? Наверняка стоит. Но можно и по-другому. Дёшево и бесчеловечно.

Например, используя заградотряд.

Модель удержания программистов в одной известной на локальном рынке компании рассказал друг, который сумел оттуда сбежать. Как он это сделал – расскажу в конце.

Читать далее
Total votes 258: ↑233 and ↓25+208
Comments243

ГосУслуги взломали (нет)

Reading time7 min
Views47K

Пришло письмо от ГосУслуг, что я якобы пытаюсь сменить свою электронную почту. Но почему то пришло сообщение на один из моих резервных адресов на яндексе. И там под картинкой был дискредитирующий текст "Госпрограмма Престижный Гроб в Обмен на Службу".

Чё же там произошло?
Total votes 115: ↑112 and ↓3+109
Comments61

Apache Kafka. Безопасность, мониторинг и управление кластером

Reading time21 min
Views30K

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

 Почему Apache Kafka?

 Apache Kafka — это унификация. Десятки поставщиков и потребителей, миллионы сообщений в день и огромные массивы данных — для этого нужна надежная, отказоустойчивая и высокопроизводительная шина данных. Существует множество версий дистрибутивов Apache Kafka, например vanilla kafka, oбразы от confluent, bitnami, wurstmeister и т.д. Мы расскажем про решение на базе сборок от Confluent в виде Docker-образов. Оно самое надежное в плане информационной безопасности. Конфигурирование и запуск контейнеров с Kafka в данном случае происходит с помощью docker-compose.

 За время работы с Kafka мы прошли  путь от «коробочного» решения до тонкой настройки безопасности кластера, применения TLS шифрования и разворачивания по рекомендациям вендора по построению геораспределенного кластера. В конфигурации «из коробки» нет первоначальных настроек безопасности. Для контроля доступов, вносимых изменений и безопасного взаимодействия перед нами встала задача настройки на кластере Apache Kafka TLS шифрования, аутентификации и авторизации средствами встроенного ACL.

 TLS шифрование

Обеспечивает шифрование соединения между брокерами Kafka, серверами Zookeeper, клиентами и брокерами. Вся ключевая информация помещается в хранилища — keystore, которые разделяют на два вида:

keystore, где хранятся ключи и сертификаты стороны, в отношении которой пройдет процедура аутентификации и установления защищенного соединения, например, приватный ключ и ассоциированный с ним и подписанный со стороны центра сертификации (ЦC) сертификат.

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

Мои главные принципы работы после 20 лет опыта в программировании

Reading time5 min
Views58K

Начиная новый проект, хорошо вспомнить полезные принципы программирования, которые помогут правильно расставить приоритеты и избежать многих ошибок. Рекомендациями от автора с опытом программирования в 20 лет делимся к старту курса по Fullstack-разработке на Python.

Читать далее
Total votes 46: ↑37 and ↓9+28
Comments73
1
23 ...

Information

Rating
Does not participate
Registered
Activity