Pull to refresh
77
0.1
Роман @RomeoGolf

инженер-программист

Send message

Математическая продлёнка. Мир треугольников

Level of difficultyMedium
Reading time19 min
Views11K

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

Читать далее
Total votes 47: ↑46 and ↓1+64
Comments26

AliveColors: Есть ли замена фотошопу на земле русской?

Level of difficultyEasy
Reading time4 min
Views11K

Привет, Хабр! Сегодня мы поговорим о графическом редакторе AliveColors и попробуем разобраться, что за задачи он может решать. В этом посте мы коснемся вопроса, в каких ситуациях AliveColors может заменить безвременно покинувший наш рынок Adobe Photoshop, и почему его стоит рассмотреть в качестве интересного софта для самых разных ситуаций. Всех, кто пользовался AliveColors, а также страдает от отсутствия лицензионного фотошопа, приглашаем под кат и в комментарии.

Читать далее
Total votes 30: ↑26 and ↓4+29
Comments15

Как я делал внутренний cookbook по тому, как писать код (и результат можно скачать)

Level of difficultyHard
Reading time16 min
Views17K

Авокадо с зубами подсказывает, что так код легче поддерживать, дописывать и рефакторить. Мы всё теперь пишем только так.

Привет, Хабр! У нас была проблема: каждый писал код как хотел. Было очень тяжело это поддерживать и ревьюить. Мы сначала думали, что достаточно написать стандарт кода. Оказалось, недостаточно, ему ещё надо обучить. Чтобы обучить, мы открыли для ревью эталоны кода, чтобы покрыть ими самую частую логику взаимодействия с компонентами. Тоже не хватило. А заодно я узнал, что мои же «золотые» образцы противоречили моему же стандарту кода (сначала было смешно, а потом пришлось переписывать).

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

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

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

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

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

Посвящается всем, кто коллекционирует элегантные решения без привязки к языку, фрэймворку, Фаундлингам и Software Craftsmanʼам.

Погнали.
Читать дальше →
Total votes 19: ↑18 and ↓1+19
Comments4

Как техпису изложить фактуру в техдоке?

Level of difficultyEasy
Reading time5 min
Views3.7K

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

Еще есть ГОСТы 34 и 19 — там уже написано, из каких разделов должен состоять стандартизованный документ, но ведь кроме стандартизованных есть и другие документы — во всяком случае заказы на таковые ко мне приходили, — и каждый раз приходилось ломать голову.

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

Freyr-js: находка меломана

Level of difficultyEasy
Reading time4 min
Views4.6K

Продолжаю знакомить уважаемых читателей с интересными программами из мира open source. Проще говоря, с крутыми проектами на Github, о которых вы, скорее всего, не знали.

Сегодня в меню невероятно полезная утилита Freyr-js, которая должна понравиться меломанам. Freyr-js умеет скачивать музыкальные файлы из Spotify, Apple Music и Deezer по веб-ссылкам и позволяет вам по старинке поддерживать локальную музыкальную коллекцию. Без подписок, с сохранением полного контроля над своей фонотекой и, как правило, с высоким битрейтом. Круто? Ещё бы! Забегая вперёд: да, есть некоторые ограничения и нюансы, но они не портят общую картину.

А ну ка...
Total votes 9: ↑9 and ↓0+9
Comments8

Как я организовал продажу электронной версии Книги нормального фрилансера и с какими трудностями столкнулся

Reading time6 min
Views3.8K

Я написал Книгу нормального фрилансера. В ней поделился опытом работы проектировщиком (UX‑дизайнером) с 2006 года по сегодняшний день. На момент написания этой статьи с книгой познакомилось не меньше 2 000 человек. Десятки положительных отзывов и благодарностей — и пока ни одного негативного.

Друзья недоумевали, зачем я выкладываю книгу бесплатно на своём сайте и при этом выставляю её на продажу. Ведь так её точно никто не купит! А я хотел, чтобы, во‑первых, её мог прочитать каждый, даже если у него нет денег, а, во‑вторых, чтобы те, кто в состоянии её приобрести, могли бы меня таким образом поддержать. И вот что из этого вышло…

Читать далее
Total votes 8: ↑6 and ↓2+7
Comments14

Оптимизированный доступ к GPIO и не только, часть вторая

Level of difficultyMedium
Reading time9 min
Views6.7K

Уважаемые жители Habr‑а, В данной статье, речь пойдет о доступе к GPIO, и другим регистрам, используя C++.

Несколько лет назад, я подготовил статью, о том, как можно используя constexpr‑клаcсы, серьезно оптимизировать доступ к GPIO‑порту, таким образом, чтобы команда «PA0.set()» — превращалась в одну‑три ассемблерных инструкции, в зависимости от обстоятельств. Этот класс лишь выглядел обычным, который оптимизировался компилятором. Фактически, это была высокоуровневая оптимизация низкоуровневого кода. Теоретически возможно было перегрузить оператор равенства и писать просто PA0=1 или PA0=0, фактически это вызывало inline инструкцию, позволяющую добавить еще и барьерную инструкцию.

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

Итак. Задача состояла в том, чтобы максимально описать любой регистр, и получить доступ к нему, удобным способом. Я несколько раз пытался различными способами формализовать описание, и мои попытки привели меня к следующему коду.

Читать далее
Total votes 13: ↑11 and ↓2+13
Comments47

Мой путь изучения иностранных языков: прошлое, настоящее и будущее

Level of difficultyEasy
Reading time30 min
Views11K

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

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

Про мои уровни владения языками: я свободно владею английским, в 2013 году достиг уровня В2 в немецком языке (но сейчас мой уровень снизился), в 2014 году достиг уровня примерно N3 в японском языке (но уровень тоже упал), и недавно достиг уровня В2 в испанском языке.

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

Читать далее
Total votes 13: ↑12 and ↓1+15
Comments19

Rust vs C#: два способа решить проблему ссылок в структурах

Level of difficultyMedium
Reading time3 min
Views10K

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

Давайте посмотрим на примере Rust и C# как авторы решают эту неоднозначную проблему.

Читать далее
Total votes 21: ↑18 and ↓3+21
Comments16

Математическая продлёнка. Про углы и тригонометрию

Level of difficultyMedium
Reading time17 min
Views21K

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

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

Python для детей

Reading time4 min
Views17K

До того, как стать преподавателем в университете, я вёл программирование в детском технопарке Кванториум. Это такой центр дополнительного школьного образования куда дети приходили после уроков и изучали программирование, робототехнику, биологию и т.д. Конкретно я вёл занятия по Python, C++ и Arduino.

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

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

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

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

Идеальный лидер. Как сочетать в себе диктатора, формалиста, либерала, демократа и создать эффективную команду разработки

Reading time8 min
Views13K

Привет, Habr! На связи Андрей Непряхин, СТО компании AGIMA. В этой статье я расскажу о том, какие стили лидерства существуют, как их нужно применять на различных стадиях развития команды.

Читать далее
Total votes 29: ↑24 and ↓5+22
Comments5

Ты не работаешь в офисе: подборка статей для удалёнщиков

Level of difficultyEasy
Reading time5 min
Views12K

Я ушла на удалёнку 7,5 лет назад, задолго до ковида — примерно в те времена, когда аналитические конторы насчитывали около 30 000 удалёнщиков на всю страну, а сам формат был непонятным едва ли не всем. Тем не менее, март 2020 года не стал для меня уверенным поворотом: я, как и все, сменила коворкинг с кучей интересных и разных ребят из IT-компаний на квартиру. А это совершенно другие ощущения от работы, организации места, общения с родными, здоровья и даже хобби. Жизнь так сложилась, что сейчас многие сотрудники продолжают переходить на удалённую работу, находят удалённые проекты, устраиваются в офисы, где принят home office. И они обязательно сталкиваются с растерянностью, непониманием, опасениями и даже страхами. Между тем на Хабре и на других сайтах немало хороших статей, которые и помогают, и подсказывают — буквально протягивают руку поддержки и дают понять: ничего уникального, ты не один и ты справишься. Отобрала для вас лучшие.

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

C++17 — std::string_view и никакого копирования

Reading time6 min
Views27K

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

Сегодня речь пойдёт об одной из главных фич C++17.

Читать далее
Total votes 16: ↑10 and ↓6+8
Comments21

19 команд ffmpeg для любых нужд

Reading time3 min
Views572K
От переводчика:
Многие знают, что ffmpeg — это сила, но не все знают, какая именно. Он многогранен и безграничен, а его man объёмен и местами малопонятен, лишь немногие постигли дао профессиональной работы с ним. И тем не менее, этот инструмент может быть полезен почти всем, кто хоть иногда работает с видео и звуком, даже на бытовом уровне. О некоторых полезных консольных командах ffmpeg и пойдёт речь в статье. В некоторых местах я взял на себя смелость вставить ссылки на поясняющие статьи.


ffmpeg — это кроссплатформенная open-source библиотека для обработки видео- и аудиофайлов. Я собрал 19 полезных и удивительных команд, покрывающих почти все нужды: конвертация видео, извлечение звуковой дорожки, конвертирование для iPod или PSP, и многое другое.

1. Получение информации о видеофайле

ffmpeg -i video.avi

2. Превратить набор картинок в видео

ffmpeg -f image2 -i image%d.jpg video.mpg

Эта команда преобразует все картинки из текущей директории (названные image1.jpg, image2.jpg и т.д.) в видеофайл video.mpg

(примечание переводчика: мне больше нравится такой формат:
ffmpeg -r 12 -y -i "image_%010d.png" output.mpg

здесь задаётся frame rate (12) для видео, формат «image_%010d.png» означает, что картинки будут искаться в виде image_0000000001.png, image_0000000002.png и тд, то есть, в формате printf)
Читать дальше →
Total votes 222: ↑214 and ↓8+206
Comments107

Простейшая нейросеть: еще раз и подробнее

Reading time10 min
Views59K

Машинное обучение это незаменимый инструмент для решения задач, которые легко решаются людьми, но не классическими программами. Ребенок легко поймет, что перед ним буква А, а не Д, однако программы без помощи машинного обучения справляются с этим весьма средне. И едва ли вообще справляются при минимальных помехах. Нейросети же уже сейчас решают многие задачи (включая эту) намного лучше людей. Их способность обучаться на примерах и выдавать верный результат поистине очаровывает, однако за ней лежит простая математика. Рассмотрим это на примере простого перцептрона.
Данная статья представляет собой пересказ-конспект первой части книги Тарика Рашида "Создай свою нейросеть" для тех, кто начал изучать тему, не понял отдельные детали или с трудом охватывает общую картину.

Читать далее
Total votes 84: ↑83 and ↓1+95
Comments27

Прокачивайте математику – вот как это поможет при программировании

Reading time6 min
Views33K
Пол Орланд исследует, как можно прокачать навыки программирования, развивая математическую подготовку и всё лучше разбираясь в том, как сохраняется связь между математикой и программированием.

Эта статья адресована всем, кто хочет улучшить математические навыки, но в особенности программистам, желающим применять математические навыки в повседневной работе.
Читать дальше →
Total votes 45: ↑17 and ↓28-1
Comments44

Как программы общаются между собой

Level of difficultyMedium
Reading time9 min
Views16K

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

С развитием технологий, прошествием времени и увеличением масштабов ответить на этот вопрос становится всё сложнее.

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

Предупреждение: в статье я буду упрощать и жертвовать точностью ради понятности.
Читать дальше →
Total votes 39: ↑34 and ↓5+44
Comments8

Математическая продлёнка. Квадратные уравнения во всей красе

Reading time9 min
Views19K

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

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

Обо всём этом читайте далее
Total votes 77: ↑77 and ↓0+77
Comments41

Бюджетный 3D принтер как конструктор. Такой разный PLA и как им печатать

Reading time14 min
Views8.5K

Низкотемпературный (с рабочей температурой от 180-200°C) филамент типа PLA (Polylactic acid) можно съесть (если сертификат прилагается), а при нагревании ничего вредного он не выделяет (при условии, что в нем нет каких-то непредвиденных добавок), что делает его идеальным для домашнего использования.


Для тестов мы заказали три катушки разного цвета PLA-F от Bing3D (11$/kg), а также катушку зеленого PLA+ (14$/kg) и eSilk-PLA Rainbow Multicolor (19$/kg, с разборной катушкой) eSUN. Эти продукты легко доступны и популярны в Таиланде на онлайн площадке Shopee.


Для начала разберемся с настройкой параметров печати для самого бюджетного филамента Bing3D. Цель проста — использовать материал как лакмусовую бумажку для выявления всех тех проблем печати, которые маскирует более качественный пластик. После повторим те же шаги с филаментом eSun и сравним результаты.



Модель напечатана из одного G-code файла с настройками для Bing3D. Слева направо показаны результаты PLA-F Bing3D (черный), PLA+ eSUN (зеленый) и eSilk-PLA Rainbow Multicolor eSUN (оранжево-золотистый). Как видим, печатать не самым бюджетным PLA проще простого — результат получается сам собой, даже если настройки взяты "с потолка". Кстати, если вы заметили небольшой "дефект" в виде наклонной черточки правее центра на золотистой вазе, то это всего лишь кошачья шерстинка :)

Читать дальше →
Total votes 12: ↑10 and ↓2+10
Comments58

Information

Rating
3,981-st
Location
Свердловская обл., Россия
Date of birth
Registered
Activity