Как стать автором
Обновить
4
Карма
0
Рейтинг
Максим @maxzhurkin

Энтузиаст

  • Подписчики 2
  • Подписки 20
  • Публикации
  • Комментарии

Волны, которые появляются из ниоткуда и исчезают бесследно

Блог компании RUVDS.com Julia *Научно-популярное Физика Транспорт
Tutorial

Это было утро 12 апреля 1966 года. Элегантный лайнер «Микеланджело» направлялся через Атлантику в Нью-Йорк. 275-метровый красавец водоизмещением 46 тысяч тонн некоторое время был флагманом флота Италии и являлся одним из крупнейших судов в стране. Он принадлежал семейству суперлайнеров, воплощавших в себе как отработанные технологии, так и прогрессивные решения: для безопасности пассажиров часть палуб и кают лишена иллюминаторов, дизайн и устройство дымовых труб не позволяли окуривать верхние прогулочные палубы, а также судно было оборудовано стабилизаторами качки, чтобы богатые пассажиры не пролили ни капли мартини.

В это апрельское утро «Микеланджело» с 745 пассажирами на борту столкнулся с очень плохой погодой. Капитан Джузеппе Солетти дал указания всем пассажирам оставаться в своих каютах и приказал судну следовать более южным маршрутом, чем обычно, чтобы избежать центра шторма. Обычное дело при путешествии через океан. Но внезапно перед судном возникла экстремально высокая волна. Все люди на судне ощутили мощный удар как после выстрела 305-мм пушки. Волна поднялась над носом на высоту около 18 метров и прошла вдоль палубы, оставляя за собой лишь покорёженный металл. Даже окна двухсантиметровой толщины находящиеся на 25 метров над ватерлинией были выбиты ударом воды. Всё произошло в считанные секунды. Два пассажира погибли сразу, один член экипажа погиб через несколько часов, более пятидесяти человек получили ранения. И ещё четверть века существование таких волн будет подвергаться сомнениям.
Читать дальше →
Всего голосов 197: ↑197 и ↓0 +197
Просмотры 46K
Комментарии 62

Пожалуйста, начните использовать pnpm

Node.JS *
Из песочницы

Я думаю, все, кто использует node.js, понимает про что эта картинка.

npm - это ужасный менеджер пакетов. В этом признавался даже сам создатель node.js. Npm для каждого вашего проекта создает папку node_modules, в которую он качает из интернета и сохраняет на диске каждый пакет из всей иерархии зависимостей.

Если у вас 100 проектов с одними и теми же зависимостями, то npm 100 раз скачает из интернета и сохранит на диске 100 копий одних и тех же пакетов. Ему плевать. Популярный yarn, к сожалению, делает то же самое.

Читать далее
Всего голосов 104: ↑96 и ↓8 +88
Просмотры 29K
Комментарии 114

Какими бывают дисплеи в ноутбуках? Разбор

Блог компании Droider.Ru Компьютерное железо Мониторы и ТВ Ноутбуки
У нас уже было много роликов про дисплеи: мы разбирали все типы LCD-матриц в телевизорах. Сделали один из самых подробных материалов про все виды OLED в смартфонах и ТВ. Также мы рассказывали вам про mini-LED и microLED-дисплеи будущего. Но мы еще ни разу не рассказывали про дисплеи в ноутбуках. А ведь в дисплеях для ноутбуков есть своя особая специфика. Поэтому сегодня мы глубоко нырнём в разновидности дисплеев для ноутбуков. Разберём всё страшные аббревиатуры и узнаем как маркетологи вводят нас в заблуждение?


Разберемся как узнать модель и тип дисплея в вашем ноутбуке? И посмотрим на конкретные примеры ноутов и дисплеев.
Читать дальше →
Всего голосов 16: ↑13 и ↓3 +10
Просмотры 7.1K
Комментарии 15

Динамическое программирование. Классические задачи

Алгоритмы *
Из песочницы
Здравствуй, Хабрахабр. В настоящий момент я работаю над учебным пособием по олимпиадному программированию, один из параграфов которого посвящен динамическому программированию. Ниже приведена выдержка из данного параграфа. Пытаясь объяснить данную тему как можно проще, я постарался сложные моменты сопроводить иллюстрациями. Мне интересно ваше мнение о том, насколько понятным получился данный материал. Также буду рад советам, какие еще задачи стоит включить в данный раздел.

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

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

Такие задачи решают методом динамического программирования, а под самим динамическим программированием понимают сведение задачи к подзадачам.
Читать дальше →
Всего голосов 105: ↑97 и ↓8 +89
Просмотры 267K
Комментарии 72

Различаем C и C++-разработчиков по их коду

Программирование *Совершенный код *C++ *C *Промышленное программирование *

Так уж случилось, что я пишу код для разных IoT-железок, связанных с электричеством, типа зарядных станций автомобилей. Поскольку аппаратных ресурсов, как правило, вполне достаточно, то основным фокусом является не экономия каждого байта и такта процессора, а понятный и надежный код. Поэтому в проекте разрабатывают под Embedded Linux и в качестве основного языка используют C++ в его современном варианте - C++17, активно поглядывая на фичи из стандарта 20-го года и новее.

Иногда запускаются новые проекты на той же платформе, с теми же процессами и с переиспользованием многих уже существующих компонентов, и тогда в эти проекты мы ищем программистов, с учетом вышесказанного - программистов на C++. В embedded, тем не менее, чистый C все еще очень популярен, и нередко собеседоваться на вакансию C++ Developer'а приходят именно сишники. Логика у человека простая: языки, на первый взгляд, довольно близкие, базовый синтаксис одинаков, про ООП кандидат что-то слышал, и значит, основная база уже есть и он сможет легко освоить C++ за 21 день в процессе работы, поэтому можно наплести про "с C++ тоже работал", начать писать на "Си с классами" и все получится.

Но нет, не получится.
Всего голосов 110: ↑86 и ↓24 +62
Просмотры 38K
Комментарии 404

7 ложных предположений о том, как устроены строки

Блог компании Typeable Информационная безопасность *Программирование *
Перевод

Как Unicode уничтожает большинство ваших предположений о том, как на самом деле работают строки



Когда речь идет о написании чего-то простого, мы, программисты, обычно действуем интуитивно. В случае с простыми вещами мы полагаемся на четкий набор предположений вместо конкретных знаний о том, как эти вещи работают. Например, мы предполагаем, что если b = a + 1, то b больше a, или что если мы применим функцию malloc для какого-то буфера, то получим необходимое количество памяти для записи. Мы не заглядываем в документацию всякий раз, когда имеем дело с мелочами.


Мы делаем так, потому что тотальная проверка замедлит работу. Однако если бы мы все-таки провели проверку, мы бы обнаружили, что обычно ошибаемся в своих предположениях. Существует арифметическое переполнение, в результате которого a + 1 может быть значительно меньше, чем a. Иногда malloc дает нам null вместо буфера и мы оказываемся в пролете.


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


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

Читать дальше →
Всего голосов 89: ↑87 и ↓2 +85
Просмотры 22K
Комментарии 40

Ventoy. Мультизагрузочная флешка

Софт
Tutorial

Мультизагрузочная флешка, сколько раз она меня выручала, с нее я чистил компы от вирусов, ставил Оси и т.д. В общем объяснять для чего она на хабре не нужно. Я знаю две самых известных утилиты для создания МФ - Easy2Boot и Win Setup From USB. Чем отличается Ventoy от них? Сейчас посмотрим.

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

Всё, о чём должен знать разработчик Телеграм-ботов

Мессенджеры *API *

Вы вряд ли найдете в интернете что-то про разработку ботов, кроме документаций к библиотекам, историй "как я создал такого-то бота" и туториалов вроде "как создать бота, который будет говорить hello world". При этом многие неочевидные моменты просто нигде не описаны.

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

Подробный гайд о том, как работать с ботами — под катом.

Читать далее
Всего голосов 127: ↑127 и ↓0 +127
Просмотры 104K
Комментарии 61

Functools – сила функций высшего порядка в Python

Блог компании OTUS Python *Программирование *
Перевод

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

Кэширование

Давайте начнем с самых простых, но довольно мощных функций модуля functools. Начнем с функций кэширования (а также декораторов) - lru_cache, cache и cached_property. Первая из них - lru_cache предоставляет кэш последних результатов выполнения функций, или другими словами, запоминает результат их работы:

Читать далее
Всего голосов 11: ↑9 и ↓2 +7
Просмотры 9.8K
Комментарии 0

Как работают Django Class-based views

Python *Django *
Из песочницы

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

Я хочу залезть под капот фреймворка и строчка за строчкой разобрать, как же работают представления на основе классов. Надеюсь, что по прочтении, Class-based views уже не будут казаться такими пугающими и я подстегну вас к дальнейшему самостоятельному изучению исходников. Возможно, вы думали о фреймворке как о некой магии, которую невозможно понять, но на самом деле это обычный код, написанный опытными разработчиками.

Читать далее
Всего голосов 10: ↑10 и ↓0 +10
Просмотры 8.4K
Комментарии 6

Инверсия зависимостей и 'import' в JS

Ненормальное программирование *JavaScript *TypeScript *

В процессе обсуждения статьи "Почему я «мучаюсь» с JS" у меня сложилось понимание, что связка export / import в JS является базой для указания зависимостей между элементами кода (классами и функциями). А так как современные приложения вышли за рамки однофайловых и давно уже строятся из блоков, то выстраивание зависимостей между элементами кода имеет весомое значение. Настолько весомое, что в знаменитой аббревиатуре SOLID этому посвящена отдельная буква — D (Dependency inversion — инверсия зависимостей, не путать с Dependency injection — внедрение зависимостей).


Размышляя над тем, как связываются зависимые элементы кода в JS через export / import, я пришёл к выводу, что не все зависимости в коде es6-модулей SOLID'ных приложений можно описать инструкциями import. Излагаю свои соображения, чтобы коллеги могли указать, где я ошибаюсь, или подтвердить мои выкладки.

Читать дальше →
Всего голосов 4: ↑2 и ↓2 0
Просмотры 4.6K
Комментарии 76

Научный журналист Ася Казанцева: «Эффективные зайчики сдохнут быстрее»

Научно-популярное Интервью

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

О мифах продуктивности и здоровом сне по просьбе Мегаплана рассуждает научный журналист, популяризатор науки, автор научно-популярных книг, лауреат премии «Просветитель» Ася Казанцева. Мы долго искали возможность пообщаться с ней и очень обрадовались, когда это удалось сделать.

Читать далее
Всего голосов 103: ↑77 и ↓26 +51
Просмотры 86K
Комментарии 270

Разбираемся с ChainMap из коллекций Python

Блог компании SkillFactory Python *Программирование *Алгоритмы *
Перевод
Tutorial

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

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

Читать далее
Всего голосов 14: ↑13 и ↓1 +12
Просмотры 5.2K
Комментарии 2

Знать небо

Астрономия
Знать небо - рассказ-воспоминание - Андрей Климковский

Говорят, раньше люди были к звездам ближе. По звездам держали путь, по солнышку вставали и ложились, а оно — тоже звезда. Звезды помогали узнать время сева, и когда жать. Когда придет сезон дождей, и сколько осталось до засухи.

Подобные суждения имеют отношение к реальности, но они сильно преувеличены. Конечно, звездное небо имело для людей огромный смысл, и прежде всего сакральный. Сияние звезд пробуждало в них самые высокие и тонкие чувства. Небо говорило людям, что истинные размеры Мира, в котором они живут, гораздо шире их восприятия, и им — людям — всегда есть к чему стремиться.

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

Что удивительно, с ними никто не мог спорить. Даже фараоны. Жрецы в древнем Египте легко меняли фараонов, если так сходились звезды. Но — как сходились звезды? — знали только они.

И сейчас, хоть человечество стало значительно просвещеннее в основной своей массе, звездное небо остается для большинства людей величественной и прекрасной тайной. Где какая звезда — знают очень немногие. А уж распознать на небе все видимые в эту ночь созвездия, отличить планеты от звезд, разыскать туманности и звездные скопления (хотя бы те, что видны глазом) — на такое способны лишь единицы — со времен Египта и древней Эллады тут почти ничего не изменилось.

А ведь, могло…

Всего голосов 68: ↑66 и ↓2 +64
Просмотры 9.3K
Комментарии 46

Профессионально обрабатываем исключения в Python

Блог компании OTUS Python *
Перевод

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

Читать далее
Всего голосов 18: ↑17 и ↓1 +16
Просмотры 14K
Комментарии 0

Тест Джоэла как инструмент собеседуемого

Блог компании JUG Ru Group Разработка веб-сайтов *
Многие хабровачане наверняка знакомы с тестом Джоэла (перевод). Если в двух словах, Джоэл Спольски предлагает на основе выбранных им критериев оценить любому инженеру, насколько хороша его команда.

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

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

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

Читать дальше →
Всего голосов 104: ↑86 и ↓18 +68
Просмотры 60K
Комментарии 82

Вертолеты на Марсе жужжат и не отбрасывают тень

Космонавтика Физика Астрономия

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

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

Нажмите чтобы узнать ПРАВДУ
Всего голосов 308: ↑308 и ↓0 +308
Просмотры 75K
Комментарии 212

Как управлять вашими секретами с git-crypt

Блог компании Nixys Системное администрирование *IT-инфраструктура *DevOps *
Перевод

Большинство программных проектов используют секреты – обычно, как ключи к удаленному API или данные для доступа к внешнему ресурсу, например к базе данных. Вашему приложению необходимы эти ключи во время работы, поэтому вам нужно предоставить их при развертывании приложения или на этапе подготовки окружения.
В данной статье я покажу вам, как использовать git-crypt так, чтобы вы могли безопасно хранить секреты ваших приложений в репозиториях исходного кода, даже публичных.

Читать дальше →
Всего голосов 8: ↑8 и ↓0 +8
Просмотры 3.8K
Комментарии 10

Комплексные числа и геометрические узоры

Блог компании RUVDS.com Работа с векторной графикой *Алгоритмы *Математика *Графический дизайн *
Когда речь заходит о комплексных числах, в первую очередь вспоминают о преобразовании Фурье и прочих аспектах цифровой обработки сигналов. Однако у них есть и более наглядная интерпретация, геометрическая — как точки на плоскости, координатам которой соответствуют действительная и мнимая часть комплексного числа. Рассматривая некоторую кривую как совокупность таких точек, можно описать её как комплексную функцию действительной переменной.

Дальше больше картинок и анимаций
Всего голосов 106: ↑106 и ↓0 +106
Просмотры 15K
Комментарии 39

Информация

В рейтинге
3,877-й
Откуда
Челябинская обл., Россия
Дата рождения
Зарегистрирован
Активность