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

Быдлокодер

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

Создание своего UEFI приложения

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

Привет, Хабр! Мне 16 лет, я студент, учусь на первом курсе колледжа на программиста. Начал увлекаться низкоуровневым программированием на Ассемблере и C/C++

Я заметил что на Хабре есть множество статей о написании своих простых "загрузчиков" для BIOS-MBR, которые выводят на экран "Hello World!". И при этом практически нет ни одной статьи о создании того же самого, но только для UEFI, хотя будущее именно за ним, ведь BIOS уже давно устарел! Это я и хочу исправить в этой статье.

Читать далее
Всего голосов 86: ↑85 и ↓1+84
Комментарии80

Корпоративный куколдизм

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

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

Читать далее
Всего голосов 407: ↑318 и ↓89+229
Комментарии1149

Большой гайд по энергии. Часть 1 — как получать максимум пользы из питания?

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

Всем привет, на связи команда Skill Vortex!

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

«Просыпаюсь уже уставшим, весь день хожу разбитым, а вечером хочется просто лечь и смотреть в потолок» - примерно так ее описывают наши читатели.

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

В этой статье:

Сказка о потерянных силах - как в 33 чувствовать себя на 70?

Откуда берется энергия – весь процесс и подводные камни.

Белки и жиры – типы, особенности и влияние.

БАДы, витамины и стимуляторы – неужели есть чудо-таблетка?

Про запреты – как не угробить себя в первые недели.

Заключение и все полезные ссылки.

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

Графы в Python: введение и знакомство с лучшими библиотеками

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

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

В этой статье я расскажу вам о наиболее полезных библиотеках Python, которые использовал для сетевого/графового анализа, визуализации и машинного обучения. Если говорить конкретнее, то это будут:

  • NetworkX для общего анализа графов;
  • PyVis для интерактивной визуализации графов прямо в браузере;
  • PyG и DGL для решения различных задач в области машинного обучения на графах.
Читать дальше →
Всего голосов 38: ↑36 и ↓2+34
Комментарии0

К вопросу о математических способностях студентов или как учить переполненный мозг

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

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

Одна из простых задач звучит так: «При переводе картинки из цветового пространства RGB в YUV мы выполняем прореживание, то есть выкидываем каждый четный столбец и каждую четную строку в компонентах U и V (все компоненты пикселя по 1 байту). Вопрос: во сколько раз меньше данных у нас стало?» Эта операция называется chroma subsampling и широко используется при сжатии видео, например.

Забавно, что когда-то давно, когда винчестеры были меньше, а дискеты больше, студенты реально отвечали на этот вопрос быстро. А в последние годы регулярно народ в ступор впадает. Приходится разбирать по частям: «Если выкинуть каждую четную строку и каждый четный столбец, во сколько раз меньше данных будет у компоненты?» Почти хором: «В четыре». Начинаю подкалывать: «Отлично! У нас было 3 яблока, первое осталось как есть, а от второго и третьего осталось по четвертинке. Во сколько раз меньше яблок у нас стало?» Народ ржет, но, наконец-то, дает правильный ответ (заметим, не все). 

Это было бы смешно, если бы от способности быстро в уме прикинуть результат не зависела способность быстрее создавать сложные алгоритмы. 

И хорошо видно, как эта способность в широких массах студентов заметно плавно падает. Причем не только в нашей стране. Придуман даже специальный термин: «цифровое слабоумие» ("digital dementia") — снижение когнитивных способностей, достаточно серьезное, чтобы повлиять на повседневную деятельность человека. 

Кому интересно как теряют мозг студенты масштабы бедствия и что с этим делать — добро пожаловать под кат!

Читать далее
Всего голосов 411: ↑395 и ↓16+379
Комментарии795

Как микросервисы Netflix справляются с Pub-Sub данными

Время на прочтение13 мин
Количество просмотров6.3K
Перевод статьи подготовлен специально для студентов курса «Архитектор высоких нагрузок».





Введение


В микросервисной архитектуре Netflix передача наборов данных от одного к нескольким конечным точкам может быть крайне сложной. Эти наборы данных могут содержать все, что угодно, начиная от конфигурации сервиса до результатов пакетной обработки. Для оптимизации доступа часто необходимой оказывается резидентная база данных, а изменения должны отправляться сразу же после обновления данных.

Один из примеров, отражающий необходимость распределенной рассылки набора данных выглядит так: в любой момент времени Netflix выполняет огромное количество A/B тестов. Эти тесты охватывают несколько сервисов и команд, а операторы тестов должны иметь возможность изменять конфигурацию на лету. Также необходима возможность обнаружения узлов, которые не смогли получить последнюю тестовую конфигурацию, и возможность отката к старым версиям в случае, если что-то пойдет не так.
Читать дальше →
Всего голосов 10: ↑8 и ↓2+6
Комментарии0

Rust для веб-разработчика — быстрый старт и стремительный полет

Время на прочтение21 мин
Количество просмотров28K
Всем привет! Сегодня хочу поделиться опытом изучения языка и быстрой реализации высоконагруженного сетевого проекта, использующего так популярные и востребованные сейчас неблокирующие асинхронные сетевые соединения, на новом, красивом, элегантном и очень эффективном языке Rust.
Особый упор в посте сделаю на быстрое и ясное объяснение возможностей языка и платформы специалистам, имеющим большой опыт в веб-разработке, ибо сам таким и являюсь. Существует заблуждение, что кривая вхождения в Rust — очень-очень крутая. Но я покажу, что это далеко не так. Наливаем кофе и погнали!
Читать дальше →
Всего голосов 76: ↑55 и ↓21+34
Комментарии172

Что каждый программист должен знать про оптимизации компилятора

Время на прочтение17 мин
Количество просмотров79K
Высокоуровневые языки программирования содержат в себе много абстрактных программистских конструкций, таких как функции, условные операторы и циклы — они делают нас удивительно продуктивными. Однако одним из недостатков написания кода на высокоуровневом языке является потенциальное значительное снижение скорости работы программы. Поэтому компиляторы стараются автоматически оптимизировать код и увеличить скорость работы. В наши дни логика оптимизации стала очень сложной: компиляторы преобразуют циклы, условные выражения и рекурсивные функции; удаляют целые блоки кода. Они оптимизируют код под процессорную архитектуру, чтобы сделать его действительно быстрым и компактным. И это очень здорово, ведь лучше фокусироваться на написании читабельного кода, чем заниматься ручными оптимизациями, которые будет сложно понимать и поддерживать. Кроме того, ручные оптимизации могут помешать компилятору выполнить дополнительные и более эффективные автоматические оптимизации. Вместо того чтобы писать оптимизации руками, лучше бы сосредоточиться на дизайне архитектуры и на эффективных алгоритмах, включая параллелизм и использование особенностей библиотек.

Данная статья посвящена оптимизациям компилятора Visual C++. Я собираюсь обсудить наиболее важные техники оптимизаций и решения, которые приходится применить компилятору, чтобы правильно их применить. Моя цель не в том, чтобы рассказать вам как вручную оптимизировать код, а в том, чтобы показать, почему стоит доверять компилятору оптимизировать ваш код самостоятельно.
Читать дальше →
Всего голосов 46: ↑42 и ↓4+38
Комментарии4

RabbitMQ против Kafka: отказоустойчивость и высокая доступность в кластерах

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


Отказоустойчивость и высокая доступность — большие темы, так что посвятим RabbitMQ и Kafka отдельные статьи. Данная статья о RabbitMQ, а следующая — о Kafka, в сравнении с RabbitMQ. Статья длинная, так что устраивайтесь поудобнее.

Рассмотрим стратегии отказоустойчивости, согласованности и высокой доступности (HA), а также компромиссы, на которые приходится идти в каждой стратегии. RabbitMQ может работать на кластере узлов — и тогда классифицируется как распределенная система. Когда речь заходит о распределенных системах, мы часто говорим о согласованности и доступности.

Эти понятия описывают, как система ведет себя при сбое. Сбой сетевого соединения, сбой сервера, сбой жесткого диска, временная недоступность сервера из-за сборки мусора, потеря пакетов или замедление сетевого соединения. Все это может привести к потере данных или конфликтам. Оказывается, практически невозможно поднять систему, одновременно и полностью непротиворечивую (без потери данных, без расхождения данных), и доступную (будет принимать операции чтения и записи) для всех вариантов сбоя.
Читать дальше →
Всего голосов 46: ↑45 и ↓1+44
Комментарии4

Основы DevOps. Вхождение в проект с нуля

Время на прочтение16 мин
Количество просмотров29K
В ноябре 2018 года в ЛитРес создали отдел информационного обеспечения и пригласили руководить Андрея Юмашева. Последний год отдел помогает компании работать и развиваться и держит под контролем всю инфраструктуру. Но так было не всегда. Перед тем, как наладить работу, Андрей столкнулся с руинами: полуживой Nagios, условно живой Cacti и коматозный Puppet, мертвая Вики на 120 страниц, несвязные таблицы с задачами и списком железа, устаревшая архитектура, 340 бездействующих ядер, 2 Тбайта оперативной памяти и 17 Тбайт дискового пространства, которые почему-то не были записаны в инвентарных таблицах. Планы, которые не работают, сроки, которые срываются, рабочее окружение и инструменты, которых нет — все это ждало Андрея в новом проекте.



На DevOpsConf 2019 Андрей выступил с докладом, в котором на живых примерах показал, что стоит, а что не стоит делать, когда входишь в проект, которого еще не видел или плохо знаешь. Под катом дополненная версия рассказа — как правильно анализировать спектр проблем и выстроить план деятельности, как правильно рассчитать KPI и когда следует вовремя остановиться.
Всего голосов 55: ↑47 и ↓8+39
Комментарии15

Как выстроить процессы и перестать издеваться над командой

Время на прочтение10 мин
Количество просмотров55K
Всем привет! Сегодня хотел поговорить о процессах разработки. По мере роста компании не только развивается сам бизнес, но и копятся проблемы внутри, в частности в процессе разработки. Часто их пытаются решить внедрением каких-то практик и новомодных методологий. Увы, это насильное перестраивание процесса по книжкам и тренингам нередко это приводит к ещё большим проблемам — издевательству над людьми.

Недавно я выступал на конференции Saint TeamLead Conf 2019, в докладе я рассказал о том, как смог найти ряд проблем в рабочем процессе и потом постепенно поборол их. Здесь я постараюсь описать наиболее ценные практики, которые мне помогли не только наладить рабочий процесс, но и перестать издеваться над разработчиками. У сотрудников изменилось отношение к компании в целом и рабочему процессу.
Всего голосов 48: ↑46 и ↓2+44
Комментарии34

Не потерял ли GraphQL актуальности в эпоху HTTP/2?

Время на прочтение8 мин
Количество просмотров20K
Недавно Фил Стерджен опубликовал твит, который сильно задел любителей GraphQL. В этом твите речь шла о том, что GraphQL — это, по определению, технология, которая противоречит сущности HTTP/2. О том, что уже вышел стандарт HTTP/3, и о том, что автор твита не очень понимает тех, кто, выбирая GraphQL, идёт путём несовместимости. Для того чтобы лучше понять причины такого отношения Фила к GraphQL — взгляните на этот материал.



Примерно в то же самое время было сделано сообщение о появлении проекта Vulcain. В это сообщение входили такие слова: «TL/DR: GraphQL вам больше не нужен!». И наконец — вышла замечательная статья Марка Ноттингема, посвящённая мощным возможностям HTTP/2, и тому, что эти возможности означают для тех, кто проектирует API. Ссылкой на эту статью поделился со своими подписчиками Даррел Миллер.

Происходящее заставило меня задуматься о GraphQL и об HTTP/2. Если всё вокруг начнёт работать с использованием HTTP/2 (и HTTP/3), будет ли это значить, что у нас не останется причин использовать GraphQL? Вот это мне и хотелось бы сегодня выяснить.
Читать дальше →
Всего голосов 53: ↑50 и ↓3+47
Комментарии47

Как быстро делать прототипы устройств и почему это важно. Доклад Яндекс.Такси

Время на прочтение16 мин
Количество просмотров29K
Любой технически сложный hardware-проект — всегда уравнение с множеством неизвестных: платформа, компоненты, технологии, производство, функциональность, реализуемость. «Пощупать», что получается, можно, когда пройдены дорогостоящие этапы: R&D, выбор комплектующих, разработка программ и поиск фабрики для производства.



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

Читать дальше →
Всего голосов 91: ↑88 и ↓3+85
Комментарии149

Логи не нужны?

Время на прочтение10 мин
Количество просмотров36K
Разработка сильно изменилась за последние годы. Вместо монолитных приложений пришли микросервисы и функции. Базы данных из универсальных промышленных монстров переродились в узконаправленные. Docker изменил взгляд на деплой. Но изменилось ли наше представление о логах?

Одна из больших проблем в Яндекс.Вертикалях были логи — 18 ТБ в день и 250 000 логов в секунду, все пишется в файлы. Логи разнородные, потому что много языков: Scala, Java, Python, Go. Потом их собирает Fluent Bit, пишет в Kafka, на одной железной машине работают обработчики, собирают из Kafka и пишут всё на диск. При этом это уже вторая версия логов.



Как следствие, возникает проблема долгого поиска. По этим логам поиск идет с помощью grep. На некоторых сервисах grep может достигать часов. Если у вас есть проблемы в продакшн, вы не будете часами искать свои логи. Чтобы решить проблему, в Яндекс решили написать свой велосипед доставки логов для поиска. Что из этого получилось, расскажет Алексей Данилов (danevge) — разработчик команды инфраструктуры в Яндекс.Вертикалях. Разрабатывает, пишет и поддерживает проекты auto.ru и Яндекс.Недвижимость.

Дисклеймер. Статья рассказывает о современной разработке и подходит для микросервисной архитектуры. Здесь представлены различные продукты — это инструменты, которые используют в Яндекс.Вертикалях. Под другие условия возможны аналоги удачнее, но они выполняют практически те же функции.
Читать дальше →
Всего голосов 53: ↑43 и ↓10+33
Комментарии36

«Упрости и вырежь необходимое»: интервью с Джоном Ромеро, создателем Doom

Время на прочтение12 мин
Количество просмотров24K
На прошедшем IT-фестивале Tech Train мы встретились с легендарным Джоном Ромеро, который приложил руку к дизайну и разработке культовых Wolfenstein 3D, Doom и Quake. Мы поговорили о том, нужны ли игровым разработчикам софт-скиллы, на какие рабочие инструменты стоит обратить внимание, и какие у сооснователя Id Software любимые игрушки. Вопросы задавал Никита Цаплин — основатель RUVDS.


→ Англоязычная версия текста и видео здесь
Всего голосов 58: ↑55 и ↓3+52
Комментарии13

Заложники COBOL и математика. Часть 1

Время на прочтение8 мин
Количество просмотров22K
Посмотрим правде в глаза: никто не любит дробные числа — даже компьютеры.

Когда речь заходит о языке программирования COBOL — первый вопрос, который всплывает у всех в голове, всегда выглядит так: «Почему человечество всё ещё использует этот язык во множестве жизненно важных областей?». Банки всё ещё пользуются COBOL. Около 7% ВВП США зависит от COBOL в деле обработки платежей от CMS. Налоговая служба США (IRS), как всем хорошо известно, всё ещё использует COBOL. В авиации тоже используется этот язык (отсюда я узнала одну интересную вещь на эту тему: номер бронирования на авиабилетах раньше был обычным указателем). Можно сказать, что множество весьма серьёзных организаций, идёт ли речь о частном или государственном секторе, всё ещё используют COBOL.



Вторая часть

Автор материала, первую часть перевода которого мы сегодня публикуем, собирается найти ответ на вопрос о том, почему COBOL, язык, который появился в 1959 году, всё ещё настолько распространён.
Читать дальше →
Всего голосов 79: ↑73 и ↓6+67
Комментарии41

Простые эксперименты с микроконтроллером STM32F103 («Голубая таблетка»)

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


Многие приобрели «голубую таблетку» на попробовать. Но из-за сложности программирования данная вещь оказалась где то на полке, до лучших времен.

Будем считать, что «лучшие времена» — наступили.
Читать дальше →
Всего голосов 56: ↑46 и ↓10+36
Комментарии97

12 Soft Skills That Make IT Project Managers Unstoppable

Время на прочтение6 мин
Количество просмотров5.9K
The increasingly competitive job market demonstrates that performing only based on hard skills alone is no longer sufficient. In project management reality, hard skills contain creating work breakdown structures, managing a project budget, earned value assessments and critical path charts. All these skills require technical background and applying professional knowledge and tools to perform well. What are the soft skills of leadership and how they help to uncover project managers' facilities?

image
Read more →
Всего голосов 13: ↑12 и ↓1+11
Комментарии2

Десяток Книг по Agile, Которые Точно Понадобятся Менеджеру Проекта в 2020 Году

Время на прочтение6 мин
Количество просмотров32K
Профессиональная литература с термином «Agile» в названиях стала появляться на полках IT-экспертов после 2001 года, когда термин был использован во время представления Манифеста Agile.

Agile описывает методологию разработки программного обеспечения, которая характеризуется коротким жизненным циклом, способствующим частым релизам продуктов. Сегодня итеративный метод влияет на различные аспекты развития бизнеса, включая управление проектами. Где лучше всего получить полное представление о гибком подходе? В этом обзоре — 10 мощных и актуальных книг, которые помогут усовершенствовать навыки руководителей проектов и их команд.

image
Всего голосов 18: ↑11 и ↓7+4
Комментарии2

Заблуждения начинающих C# разработчиков. Пытаемся ответить на стандартные вопросы

Время на прочтение10 мин
Количество просмотров47K
Недавно мне выпала возможность пообщаться с довольно большим количеством начинающих специалистов по разработке на языке C#. Многие из них интересуются языком и платформой, и это очень круто. Среди зеленых юниоров распространено мракобесие по поводу очевидных (только что прочитавшему книгу про память) вещей. И это же натолкнуло меня на мысль о создании этой статьи. Статья в первую очередь нацелена на начинающих разработчиков, но думаю, что многие факты будут полезны и практикующим инженерам. Ну и самые очевидные и неинтересные заблуждения, разумеется, опущены. Здесь собраны наиболее интересные и значимые, особенно с точки зрения прохождения интервью.


Читать дальше →
Всего голосов 58: ↑54 и ↓4+50
Комментарии62
1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Oslo, Oslo, Норвегия
Зарегистрирован
Активность