Сегодня речь пойдёт о треугольниках, о пространствах, о треугольных координатах, о симметрии и совсем немножко о мере на множестве. Основной же темой рассказа будет факторизация множеств и пространств. Мы построим и исследуем пространство треугольников. Оно очень простое, но последовательно изучить его, полезно, поскольку если кто‑либо из ребят выберет себе путь в жизни, связанный с математикой или физикой, то ему придётся иметь дело с пространствами куда более сложными и трудно представимыми. Так что хорошо бы приобрести кое‑какую интуицию, оперируя чем‑нибудь простым.
инженер-программист
AliveColors: Есть ли замена фотошопу на земле русской?
Привет, Хабр! Сегодня мы поговорим о графическом редакторе AliveColors и попробуем разобраться, что за задачи он может решать. В этом посте мы коснемся вопроса, в каких ситуациях AliveColors может заменить безвременно покинувший наш рынок Adobe Photoshop, и почему его стоит рассмотреть в качестве интересного софта для самых разных ситуаций. Всех, кто пользовался AliveColors, а также страдает от отсутствия лицензионного фотошопа, приглашаем под кат и в комментарии.
Как я делал внутренний cookbook по тому, как писать код (и результат можно скачать)
Авокадо с зубами подсказывает, что так код легче поддерживать, дописывать и рефакторить. Мы всё теперь пишем только так.
Привет, Хабр! У нас была проблема: каждый писал код как хотел. Было очень тяжело это поддерживать и ревьюить. Мы сначала думали, что достаточно написать стандарт кода. Оказалось, недостаточно, ему ещё надо обучить. Чтобы обучить, мы открыли для ревью эталоны кода, чтобы покрыть ими самую частую логику взаимодействия с компонентами. Тоже не хватило. А заодно я узнал, что мои же «золотые» образцы противоречили моему же стандарту кода (сначала было смешно, а потом пришлось переписывать).
В итоге я сделал кукбук с большим количеством примеров, чтобы объяснить культуру и методологию не через абстракции, а очень предметно. Начал вроде как просто для себя, оказалось полезно — и внедрил в работу команды.
Всё это было нужно для того, чтобы мы все в команде понимали, что такое наш стандарт кода, делали одинаковые вещи примерно одинаково, имели набор готовых шаблонов на системные или платформенные обращения и уменьшили объёмы как самого ревью, так и диалогов после.
Началось с того, что однажды я увидел очередной большой кусок кода, где логика из одного сервиса ушла в другой, а интеграционных тестов было аж 54 штуки. Исправленная опечатка в одном из запросов потребовала трёх часов работы, хотя я заранее знал с точностью до строчки и знака, где именно эта опечатка.
В общем, тот результат, который нас устроил, — это сочетание стандарта, библиотеки шаблонов и книги, как написать приложение. В ней мы делаем демоприложение и через все этапы показываем, почему принималось то или иное решение для реализации кода.
На сегодня ни в одной компании в России я не видел целостного подхода в сборке с кукбуком. Какие-то части встречаются, в сборке — нет. Вот я и хочу рассказать, как мы это сделали у себя в банке.
Посвящается всем, кто коллекционирует элегантные решения без привязки к языку, фрэймворку, Фаундлингам и Software Craftsmanʼам.
Погнали.
Как техпису изложить фактуру в техдоке?
Ни в форумах, ни в блогах, ни в России, ни в англоязычных ресурсах я не смог найти информацию о том, как логично упаковать всю релевантную фактуру в приятный технический документ. В книге М. Ильяхова «Пиши, сокращай» есть отдельная глава про дидактику, но там очень мало, вскользь и не совсем о том.
Еще есть ГОСТы 34 и 19 — там уже написано, из каких разделов должен состоять стандартизованный документ, но ведь кроме стандартизованных есть и другие документы — во всяком случае заказы на таковые ко мне приходили, — и каждый раз приходилось ломать голову.
Freyr-js: находка меломана
Продолжаю знакомить уважаемых читателей с интересными программами из мира open source. Проще говоря, с крутыми проектами на Github, о которых вы, скорее всего, не знали.
Сегодня в меню невероятно полезная утилита Freyr-js, которая должна понравиться меломанам. Freyr-js умеет скачивать музыкальные файлы из Spotify, Apple Music и Deezer по веб-ссылкам и позволяет вам по старинке поддерживать локальную музыкальную коллекцию. Без подписок, с сохранением полного контроля над своей фонотекой и, как правило, с высоким битрейтом. Круто? Ещё бы! Забегая вперёд: да, есть некоторые ограничения и нюансы, но они не портят общую картину.
Как я организовал продажу электронной версии Книги нормального фрилансера и с какими трудностями столкнулся
Я написал Книгу нормального фрилансера. В ней поделился опытом работы проектировщиком (UX‑дизайнером) с 2006 года по сегодняшний день. На момент написания этой статьи с книгой познакомилось не меньше 2 000 человек. Десятки положительных отзывов и благодарностей — и пока ни одного негативного.
Друзья недоумевали, зачем я выкладываю книгу бесплатно на своём сайте и при этом выставляю её на продажу. Ведь так её точно никто не купит! А я хотел, чтобы, во‑первых, её мог прочитать каждый, даже если у него нет денег, а, во‑вторых, чтобы те, кто в состоянии её приобрести, могли бы меня таким образом поддержать. И вот что из этого вышло…
Оптимизированный доступ к GPIO и не только, часть вторая
Уважаемые жители Habr‑а, В данной статье, речь пойдет о доступе к GPIO, и другим регистрам, используя C++.
Несколько лет назад, я подготовил статью, о том, как можно используя constexpr‑клаcсы, серьезно оптимизировать доступ к GPIO‑порту, таким образом, чтобы команда «PA0.set()» — превращалась в одну‑три ассемблерных инструкции, в зависимости от обстоятельств. Этот класс лишь выглядел обычным, который оптимизировался компилятором. Фактически, это была высокоуровневая оптимизация низкоуровневого кода. Теоретически возможно было перегрузить оператор равенства и писать просто PA0=1 или PA0=0, фактически это вызывало inline инструкцию, позволяющую добавить еще и барьерную инструкцию.
Больше года назад, я потерял доступ к аккаунту Habr, и не мог восстановить его. Однако, спустя некоторое время, эксперименты по оптимальному доступу к полям регистров продолжились. И это привело к использованию нехитрых конструкций, построенных на шаблонах. Сегодня, я расскажу к чему привели эти эксперименты.
Итак. Задача состояла в том, чтобы максимально описать любой регистр, и получить доступ к нему, удобным способом. Я несколько раз пытался различными способами формализовать описание, и мои попытки привели меня к следующему коду.
Мой путь изучения иностранных языков: прошлое, настоящее и будущее
В нашем стремительно развивающемся мире легко сконцентрироваться исключительно на технологических достижениях и забыть о важности человеческих связей. Однако важно помнить, что несмотря на все достижения в области коммуникационных технологий, ничто не может заменить личного контакта и понимания, которые возникают при общении с кем-то на его родном языке. Изучение иностранного языка позволяет находить общий язык с людьми из разных культур и строить более крепкие, значимые отношения.
Я помню, как в школьные годы думал, что изучение языков - это лишь скучный и неприятный предмет. Однако, когда я начал изучать и использовать иностранные языки по своему желанию, это стало для меня нечто большим. Сейчас изучение языков стало моим хобби, которым я действительно наслаждаюсь. Каждый язык открывает окно в новый мир, раскрывает различные культуры, способы мышления и выражения. Изучение языков приносит удивительные ощущения и наполняет меня чувством изумления.
Про мои уровни владения языками: я свободно владею английским, в 2013 году достиг уровня В2 в немецком языке (но сейчас мой уровень снизился), в 2014 году достиг уровня примерно N3 в японском языке (но уровень тоже упал), и недавно достиг уровня В2 в испанском языке.
В этой статье блога я хочу поделиться своим опытом изучения разных языков, описать, как мой подход эволюционировал со временем, и дать советы по эффективным подходам.
Rust vs C#: два способа решить проблему ссылок в структурах
Возврат ссылки на структуру из метода, объявленную в этом самом методе, является одним из самых классических примеров "висячих ссылок". Но что если возвращается не ссылка, а структура, содержащая ссылку? И не явно, а через вызов другого метода? Как понять, где у нас явный "провис ссылки", а где нормальный код? Звучит как какая то "дичь", но подобный кейс - вполне реальная боль для автором языков программирования.
Давайте посмотрим на примере Rust и C# как авторы решают эту неоднозначную проблему.
Математическая продлёнка. Про углы и тригонометрию
Продолжаю знакомить вас с наработками к занятиям математического кружка. В этой статье собраны два сюжета, связанные друг с другом одной темой: математика углов и тригонометрия. Каким образом обосновываются угловые меры? Какие из них для чего более пригодны? Почему значения тригонометрических функций от рациональных долей окружности почти все иррациональны и, наоборот, почему в рациональной тригонометрии только восемь рациональных углов и те, по большей части тривиальны? Материал рассчитан на школьников, но он приоткрывает двери в большую математику, поэтому здесь появятся элементы теории чисел, теории алгебраических полей и полиномы Чебышёва.
Python для детей
До того, как стать преподавателем в университете, я вёл программирование в детском технопарке Кванториум. Это такой центр дополнительного школьного образования куда дети приходили после уроков и изучали программирование, робототехнику, биологию и т.д. Конкретно я вёл занятия по Python, C++ и Arduino.
Программирование на Python отлично заходило детям, к тому же именно Python сейчас изучают в школе на уроках информатики. Он практически полностью вытеснил Pascal т.к. не уступает ему в простоте, а возможностей сделать разные интересные проекты гораздо больше. Поэтому вопрос как лучше изучать Python ребёнку актуален не только для родителей, но и для самих детей.
В этой статье я порекомендую книги, сайты и видео для эффективного изучения Python.
Материалов, специализированных для изучения Python детьми, много, но я расскажу про те, которые считаю лучшими, и которые лично сам использовал на реальной практике при работе со школьниками.
Идеальный лидер. Как сочетать в себе диктатора, формалиста, либерала, демократа и создать эффективную команду разработки
Привет, Habr! На связи Андрей Непряхин, СТО компании AGIMA. В этой статье я расскажу о том, какие стили лидерства существуют, как их нужно применять на различных стадиях развития команды.
Ты не работаешь в офисе: подборка статей для удалёнщиков
Я ушла на удалёнку 7,5 лет назад, задолго до ковида — примерно в те времена, когда аналитические конторы насчитывали около 30 000 удалёнщиков на всю страну, а сам формат был непонятным едва ли не всем. Тем не менее, март 2020 года не стал для меня уверенным поворотом: я, как и все, сменила коворкинг с кучей интересных и разных ребят из IT-компаний на квартиру. А это совершенно другие ощущения от работы, организации места, общения с родными, здоровья и даже хобби. Жизнь так сложилась, что сейчас многие сотрудники продолжают переходить на удалённую работу, находят удалённые проекты, устраиваются в офисы, где принят home office. И они обязательно сталкиваются с растерянностью, непониманием, опасениями и даже страхами. Между тем на Хабре и на других сайтах немало хороших статей, которые и помогают, и подсказывают — буквально протягивают руку поддержки и дают понять: ничего уникального, ты не один и ты справишься. Отобрала для вас лучшие.
C++17 — std::string_view и никакого копирования
Назначение std::string_view
заключается в том, чтобы избежать копирования данных, которые уже чему-то принадлежат и для которых требуется только лишь неизменяемое представление. Как вы уже могли догадаться, этот пост будет посвящен производительности.
Сегодня речь пойдёт об одной из главных фич C++17.
19 команд ffmpeg для любых нужд
Многие знают, что 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)
Простейшая нейросеть: еще раз и подробнее
Машинное обучение это незаменимый инструмент для решения задач, которые легко решаются людьми, но не классическими программами. Ребенок легко поймет, что перед ним буква А, а не Д, однако программы без помощи машинного обучения справляются с этим весьма средне. И едва ли вообще справляются при минимальных помехах. Нейросети же уже сейчас решают многие задачи (включая эту) намного лучше людей. Их способность обучаться на примерах и выдавать верный результат поистине очаровывает, однако за ней лежит простая математика. Рассмотрим это на примере простого перцептрона.
Данная статья представляет собой пересказ-конспект первой части книги Тарика Рашида "Создай свою нейросеть" для тех, кто начал изучать тему, не понял отдельные детали или с трудом охватывает общую картину.
Прокачивайте математику – вот как это поможет при программировании
Эта статья адресована всем, кто хочет улучшить математические навыки, но в особенности программистам, желающим применять математические навыки в повседневной работе.
Как программы общаются между собой
Уже очень давно программное обеспечение стало настолько масштабным, что его приходится разбивать на части. Каждая часть выполняет свою задачу, но как они общаются между собой? Как разные части системы получают сообщения друг от друга?
С развитием технологий, прошествием времени и увеличением масштабов ответить на этот вопрос становится всё сложнее.
Давайте совершим экскурс в историю и узнаем, как много было сделано и как мало изменилось.
Предупреждение: в статье я буду упрощать и жертвовать точностью ради понятности.
Математическая продлёнка. Квадратные уравнения во всей красе
Продолжаю потихоньку публиковать свои наработки к занятиям математического кружка. На этот раз речь пойдёт о до боли знакомых квадратных уравнениях и их свойствах, о которых нет времени поговорить в школе.
Каков геометрический смысл решения? Какова вероятность придумать нерешаемое уравнение? Как выглядит пространство уравнений, имеющих целочисленные решения? Куда деваются корни квадратного уравнения, когда оно не имеет действительных решений и откуда берутся комплексные корни? Как выглядят квадратные уравнения "на самом деле"?
Бюджетный 3D принтер как конструктор. Такой разный PLA и как им печатать
Низкотемпературный (с рабочей температурой от 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 проще простого — результат получается сам собой, даже если настройки взяты "с потолка". Кстати, если вы заметили небольшой "дефект" в виде наклонной черточки правее центра на золотистой вазе, то это всего лишь кошачья шерстинка :)
Information
- Rating
- 3,981-st
- Location
- Свердловская обл., Россия
- Date of birth
- Registered
- Activity