Как стать автором
Обновить
2
Артур Соловьев @artur_solovievread⁠-⁠only

Программист

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

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

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров40K

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

Читать далее
Всего голосов 197: ↑196 и ↓1+195
Комментарии176

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

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

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

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

Читать далее
Всего голосов 93: ↑92 и ↓1+91
Комментарии25

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

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

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

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

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

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

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

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

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

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

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

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


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

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

Два модема

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

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

Читать далее
Всего голосов 126: ↑125 и ↓1+124
Комментарии13

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

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

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

Когда я вижу у недавнего выпускника в резюме какой-то из протоколов в котором используется 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.

Как же прокачаться чтобы такого не было?
Всего голосов 135: ↑123 и ↓12+111
Комментарии222

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

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

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

Читать далее
Всего голосов 133: ↑132 и ↓1+131
Комментарии84

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

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

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

Читать далее
Всего голосов 60: ↑49 и ↓11+38
Комментарии139

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

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

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

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

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

Давайте разберемся!
Всего голосов 279: ↑263 и ↓16+247
Комментарии373

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

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

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

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

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

Внутри есть гифки и картинки!
Всего голосов 67: ↑67 и ↓0+67
Комментарии16

Как Осборн Рейнольдс пришёл к своему числу. Часть 1

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

Перевод классической научной работы, вышедшей в 1883 году.

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

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

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

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

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

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

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

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

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

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

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

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

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

Читать далее
Всего голосов 11: ↑8 и ↓3+5
Комментарии4

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

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

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



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

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

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

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

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

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

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

Читать далее
Всего голосов 32: ↑28 и ↓4+24
Комментарии22

Заградотряд

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

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

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

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

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

Читать далее
Всего голосов 258: ↑233 и ↓25+208
Комментарии243

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

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

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

Чё же там произошло?
Всего голосов 115: ↑112 и ↓3+109
Комментарии61

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

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

Мы расскажем, как настроить безопасность кластеров 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) сертификат.

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

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

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

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

Читать далее
Всего голосов 46: ↑37 и ↓9+28
Комментарии73
1
23 ...

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность