Как стать автором
Обновить
16
0

Пользователь

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

Советские и постсоветские НИИ и КБ как конвейер уничтожения ресурсов развития

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

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

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

В 2008 году я устроился ведущим инженером в НИИ Физических измерений, г. Пенза.

Для меня работа в этом НИИ была более чем знакома, я там работал с середины 80-х по середину 90-х. НИИФИ с момента своего создания было сосредоточено на создании датчиков и специализированной измерительной аппаратуры для космической отрасли.

Начало 2000-х характеризовалось тем, что цены на нефть поползли вверх, в государстве появились какие-то деньги, но одновременно стала происходить череда ярких и красочных неудач с нашими ракетами. И вопрос – а что же там происходит с нашими ракетами – создал на НИИФИ фокус ощутимого финансового потока.

Поскольку в этой организации работает куча людей, связанных между собой родственными связями, то, помимо официального молчания по всем щепетильным вопросам, организация была пронизана слухами, что у нас общий бюджет НИИ достиг сначала 0,7 (примерно 2008–2009), далее 0,9; потом 1,3; 2,1 и 2,7 (2012) миллиарда рублей.

Здесь можно задаться очень простым вопросом – а вот кто будет делать интеллектуальное наполнение проектов под эти в общем-то огромные финансовые потоки.

Читать далее
Всего голосов 306: ↑276.5 и ↓29.5+247
Комментарии512

Что почитать игровому программисту?

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

Объём специфичных знаний, которые требуются рядовому программисту игр, даже если он только начал свою карьеру, вызывает у меня «лёгкую» тоску. Это одна из причин, почему большая часть людей, которые «горят делать игры», отсеивается на этапе технических собеседований (обычно их больше одного). Это нормально и грустно. Добавьте сюда, что нефундаментальные знания, вроде инструментов, библиотек и движков, приходится обновлять где‑то раз в 5–7 лет. Не вижу тут, что игрострой сильно отличается от других областей разработки. Если бы лет 15 назад «добрый я» скинул на почту список книг, которые придется прочитать и осмыслить, армия собранных граблей не была бы столь большой и разнообразной, и без ручек половинной длины. Осторожно, в конце статьи будет супердлинная картинка (взята с github отсюда, с разрешения автора).

У программиста нет цели, только путь.
Всего голосов 60: ↑60 и ↓0+60
Комментарии36

Люди не понимают ООП

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

«ООП для меня означает лишь обмен сообщениями, локальные ограничения и защиту, сокрытие состояния процесса и крайне позднее привязывание», — Алан Кэй (человек, придумавший термин «объектно-ориентированное программирование»)1

Похоже, многим не нравится объектно-ориентированное программирование. Первое, что приходит в голову, когда слышишь эту трёхбуквенную аббревиатуру — это пример с автомобилем, наследование, геттеры, сеттеры и ObjectFactoryFactorySingleton.

Мне это всегда казалось довольно странным. Мне не только нравится ООП, я ещё и считаю, что часто это лучший/наиболее очевидный способ моделирования задачи. И ниже я расскажу, почему.
Читать дальше →
Всего голосов 154: ↑147 и ↓7+140
Комментарии457

Как я уменьшил размер образа docker на 40%

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

Ежедневно по работе я сталкиваюсь с Dockerfile, написал несколько из них самостоятельно, создавал контейнеры и всё такое. Но я никогда не публиковал их в реестре docker hub. Мне хотелось создать ugit — инструмент для отмены команд git (написанный в виде шелл-скрипта), который бы могли использовать люди, не любящие устанавливать случайные шелл-скрипты из Интернета.

Да-да, знаю. НАДО ПЕРЕПИСАТЬ ЕГО НА GO/RUST/ЕЩЁ КАКОМ-ТО ВОЛШЕБНОМ ЯЗЫКЕ. Сейчас скрипт состоит из пятисот с лишним строк Bash, поэтому я перепишу его на другой язык только под страхом смертной казни. Кроме того в ugit уже есть практически все функции (осталось реализовать отмену лишь небольшого количества команд, используемых не так часто).

В этой статье я расскажу о том, как написал официальный Dockerfile для ugit (шелл-скрипта) и снизил размер образа почти на 40% (с 31,4 МБ до 17,6 МБ), выполняя пошаговые попытки работы по инструкции. Надеюсь, это замотивирует других любителей шелла тоже публиковать свои скрипты в виде образов docker!

Читать далее
Всего голосов 23: ↑22 и ↓1+21
Комментарии50

Где изучать Golang в 2024

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

2024 году изучение языка программирования Go (Golang) остается одним из наиболее перспективных и востребованных направлений для разработчиков. 

Одним из главных преимуществ изучения Golang в 2024 году является его широкое применение в различных областях разработки программного обеспечения. Он идеально подходит для создания масштабируемых и высокопроизводительных веб-серверов, микросервисов и распределенных систем. Благодаря своей простоте и эффективности, Golang также находит применение в области разработки сетевых приложений, обработки данных, а также в сфере искусственного интеллекта и машинного обучения.

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

Ежедневно в наш чат приходят новички и задают один и тот же вопрос, посоветуйте ресурсы для начинающего, сегодня вышла новая версия версия Go 1.22.0в честь этого мы собрали список бесплатных курсов и полезных источников. Мы уже писали про многие из них в нашем канале для Golang разработчиков – залетайте, там много всего полезного. 

Надеюсь, этот список будет вам полезен)

Давайте начнем!

Читать
Всего голосов 19: ↑14 и ↓5+9
Комментарии9

Про́клятый огонь, или магия препроцессора C

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

Задавались ли вы когда-нибудь вопросом, можно ли полноценно программировать при помощи директивы #define в языке C? Полнота по Тьюрингу шаблонов C++ известна весьма широко, например, люди пишут трассировщики лучей, делающие все вычисления во время компиляции (вместо времени исполнения). А как обстоят дела с препроцессором C? Вопрос оказался сильно нетривиальнее, и эта история является, на мой вкус, отличным анекдотом для курса лекций по теории компиляторов, что я готовлю в данный момент. В частности, для лучшего понимания происходящего здесь, рекомендую ознакомиться со второй статьёй, которую я опубликовал параллельно этой: лексер и парсер.

Чтобы не было обманутых впечатлений, предупрежу сразу, что рейтрейсера не будет, но про́клятый код будет очень даже! Итак, поехали. Для начала, почему я вообще задался этим вопросом? Если обычный код компьютерной графики вам скучен, следующий раздел можно пропустить, перематывайте до последней картинки.

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

Как я перестал бояться и вышел в Интернет со своей IPv6-сетью

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

Для личных нужд я использую bare-metal сервер от Hetzner, порезанный на виртуалки и, с недавних времен, VPS на HostHatch для мониторинга и резервирования. Также есть маленькая ВМка у TietoKettu (для ВПН, экспериментов и прочее).

Так как IPv4-адресов мало, то хостинги обычно дают дополнительные айпишки за дополнительные деньги, а вот IPv6-сети выделяют щедро. Изначально, я объединил все виртуалки, у которых был публичный IPv4-адрес в Wireguard mesh сеть, но потом когда выяснилось, что надо бы присоединить ещё одну ВМку, пришлось переделать mesh на IPv6-адреса и тут понеслось...

Сначала выяснилось что у HostHatch нет связности с ElmoNet (TietoKettu использует их адреса), после недели-двух бодания с техподдержкой HostHatch-a связность появилась. Однако недели две назад от них приходит письмо, о техобслуживании нод, где живут мои ВМки. И что вы думаете? После обслуживания туннель до этих ВМок так и не восстановился. В итоге, оказалось что обе вмки исчезли их IPv6-интернета. На этот раз связность починили только через 3 дня, хотя я создал срочный тикет.

В итоге, я перевёл туннели обратно на IPv4 и переключился на DN42, но в один выходной мне на глаза попалась статья на Reddit и я решил воскресить идею о "своем" куске Интернета. Масла в огонь подбавил Vultr, который наглухо заблокировал доступ на свои ресурсы (даже IP calculator) с Hetzner.

В одном из комментов, к вышеупомянутой статье, была ссылка на IPv6-сообщество в Discord. Я присоединился и стал задавать много вопросов в канале #asn-newbies.

Думаю, что кому-нибудь мой опыт и набитые шишки будет полезен. Если это так, то прошу под кат.

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

Я нашёл сид Мэла (melharucos) в Майнкрафте

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

Да, название этой статьи - не обман. Я действительно сумел найти сид хардкорного выживания Мэла. Сам он притом с нами сидом не поделился.

Сам сид: 3483555484082087413

Читать далее
Всего голосов 49: ↑36 и ↓13+23
Комментарии18

LLMClone: как клонировать себя в Telegram

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

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

Читать далее
Всего голосов 33: ↑32 и ↓1+31
Комментарии34

Многогранный мониторинг Angie, форка веб-сервера nginx

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

Здравствуй, дорогой читатель. Меня зовут Дмитрий. Я — системный инженер компании «Веб-сервер». На протяжении моего опыта оказания услуг технической поддержки сначала в компании Nginx, а теперь и в компании разработчика российского веб-сервера Angie, мы отвечаем на очень популярный вопрос: «Как организовать мониторинг состояния веб-сервера?». А вот так.

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

SOLID — это несложно. С примерами на Python

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

Привет, Хабр! Меня зовут Павел Корсаков, я python-разработчик в облачном провайдере beeline cloud.

Почти на всех собеседованиях задают вопросы про SOLID: что это такое, зачем нужен, как его применяет кандидат, как понимает принципы из него?

Мы тоже спрашиваем кандидатов про SOLID. Чаще всего они рассказывают, что SOLID — это акроним, озвучивают все его принципы, но объяснить и привести примеры могут лишь для половины. На остальных либо плавают, либо сливаются.

Чтобы мой материал не получился очередной статьей про SOLID, я изменю формат подачи и последовательность объяснения принципов. Буду добавлять код небольшими инкрементами и на каждом из них указывать, какие принципы SOLID используются в том или ином случае. 

Читать далее
Всего голосов 25: ↑20 и ↓5+15
Комментарии43

Вероятно, вы неправильно используете метод __init__ в Python

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

Автор статьи обращает внимание на проблему, которая заключается в использовании метода __init__ для сложной логики создания объектов, что приводит к разрастанию и усложнению кода. Статья предлагает использовать вспомогательные методы, чтобы разделить логику создания объектов на более мелкие и понятные части. Это упростит код и облегчит понимание того, как объекты создаются и инициализируются.

Читать далее
Всего голосов 23: ↑18 и ↓5+13
Комментарии22

Padding Oracle Attack на Wallet.dat расшифровка пароля для популярного кошелька Bitcoin Core

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

В этой статье мы воспользуемся классификацией распространенных шаблонов атак из ресурса кибербезопасности [CAPEC™]. В первые об “Padding Oracle Attack” на Wallet.dat заговорили в далеком 2012 году (на платформе по управления уязвимостями и анализа угроз “VulDB”). Проблема самого популярного кошелька Bitcoin Core влияет на работу AES Encryption Padding в файле Wallet.dat

Технические подробности данной атаки известны:

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

Читать далее
Всего голосов 10: ↑9 и ↓1+8
Комментарии2

Фильтры Ansible: превращаем сложное в простое

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

Используя Ansible в качестве инструмента автоматизации, часть приходится сталкиваться с задачей обработки и фильтрации структурированных данных. Как правило, это набор фактов, полученных с управляемых серверов, или ответ на запрос к внешним API, которые возвращают данные в виде стандартного json. Многие неопытные инженеры, используя Ansible в таких случаях, начинают прибегать к помощи привычных консольных команд и начинают городить то, что среди специалистов получило название bashsible. В общем, вспоминается известный мем:

Читать далее
Всего голосов 23: ↑22 и ↓1+21
Комментарии0

Секретная плата с китайского экзамена по электронике

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


Привет, Хабр! Китай является мировым лидером в производстве электроники во многом потому, что имеет систему образования, ориентированную на развитие этой отрасли.

Сегодня мы исследуем интересное учебное пособие из Китая, предназначенное для проверки базовых знаний по схемотехнике и умения собирать и налаживать электронные приборы.
Читать дальше →
Всего голосов 84: ↑81 и ↓3+78
Комментарии40

Как работать в кайф. How to от тестировщицы, которая вынесла уроки после выгорания

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

Думаю, многие помнят чувство первой влюбленности. Ты ни на шаг не можешь отойти от предмета своего обожания, постоянно хочется «больше» и кажется, что это навсегда. Оказывается, влюбиться можно не только в человека, но и в работу. Сначала ты будешь тонуть в его/её  ̶г̶л̶а̶з̶а̶х̶  Jira-бордах, а закончится всё тем, что ты (вдруг) сгорел. Для полных ощущений мне захотелось пройти ещё и медные трубы, поэтому делюсь своей историей с вами. 

Привет! Меня зовут Татьяна Дерягина, я Mobile QA в СберМаркете. Эта история про то, как мне понадобилось выгореть до углей, чтобы понять, что ворк-лайф бэланс необходим. Причём не только, чтобы не остаться совсем без лайф, но и чтобы делать свою любимую ворк хорошо и с удовольствием.

В процессе восстановления я перечитала кучу литературы о том, как выстроить здоровые отношения с работой и хочу поделиться этим знанием с теми, кто сейчас переживает фазу влюблённости и вот-вот собирается набрать нагрузки по самые уши. Расскажу, к каким мыслям пришла после прочтения книг и просмотра видео про выгорание в совокупности с личным опытом. В конце статьи прилагаю материалы по теме. Поехали!

Читать далее
Всего голосов 35: ↑29 и ↓6+23
Комментарии19

Apache Airflow в связке с Kubernetes

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

Привет! Меня зовут Алексей Карпов, я DevOps-инженер (MLOps) отдела ML разработки в OKKO. Хочу поделиться опытом в работе с Apache Airflow в связке с Kubernetes. Расскажу, как установить Airflow в Kubernetes, настроить автоматическую синхронизацию DAG'ов с удалённым репозиторием, а также как отладить его работу. Всё это — на примере запуска простейшего DAGа. 

Читать далее
Всего голосов 10: ↑7 и ↓3+4
Комментарии2

Load Balancer и Reverse Proxy в микросервисной архитектуре

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


Автор статьи: Артем Михайлов

Микросервисная архитектура является одним из наиболее популярных подходов к созданию сложных приложений в настоящее время. Этот подход разбивает большое приложение на ряд маленьких, автономных сервисов, которые работают вместе для достижения общей цели.

Однако при работе с микросервисами возникают некоторые сложности в управлении нагрузкой на приложение. Именно здесь на помощь приходят два важных компонента — Load Balancer и Reverse Proxy.
Читать дальше →
Всего голосов 16: ↑9 и ↓7+2
Комментарии10

Разработка игр на Go: шейдеры

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

Давненько я не писал никаких статей на Хабре.


Я планировал вести серию заметок о разработке игр на Go и начал я с рендеринга текста, но меня не хватило даже на второй текст. Что же, настало время возвращаться, ведь с того момента я успел создать ещё несколько игрушек.


Сегодня я расскажу вам о шейдерах в Ebitengine. Большая часть примеров будет взята из Roboden и Decipherism (обе игры имеют открытые исходные коды и вы можете найти их на гитхабе).


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

Функции Python — это объекты первого класса

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

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

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

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

Информация

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