Pull to refresh
164
0.9

Человек

Самое понятное объяснение Специальной теории относительности

Level of difficulty Medium
Reading time 13 min
Views 81K

Специальная теория относительности - удивительная теория, которая опровергла многие представления о мире, в которых человечество не сомневалось всю историю своего существования.

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

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

Для иллюстраций я написал интерактивный визуализатор СТО, работающий в браузере. Ссылка на него и исходники проекта в конце статьи.

Читать далее
Total votes 351: ↑351 and ↓0 +351
Comments 378

.NET в unmanaged окружении: platform invoke или что такое LPTSTR

Reading time 11 min
Views 7.4K
Методика все та же — минимум объяснений, максимум рецептов. Для глубинного понимания происходящих процессов рекомендую обратиться к документации в MSDN — этот раздел уже даже перевели на русский язык.
Читать статью
Total votes 36: ↑28 and ↓8 +20
Comments 13

На пути к самодельным радиолампам. Стеклодувные операции

Level of difficulty Medium
Reading time 7 min
Views 6.3K

Немалую часть технологического процесса изготовления радиолампы занимает работа со стеклом – чудо как хорошо подходящим для этой цели материалом. Рассмотрим набор операций, достаточных для изготовления стеклянной части простого электровакуумного прибора (ЭВП) в ключе работ в условиях любительской мастерской.
Читать дальше →
Total votes 104: ↑104 and ↓0 +104
Comments 36

Метод конечных элементов своими руками

Level of difficulty Medium
Reading time 9 min
Views 15K

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

Мы напишем МКЭ для расчёта упругой двумерной пластины на прочность и жёсткость. Код займёт 1200 строк. Туда войдёт всё: интерактивный редактор, разбиение модели на треугольные элементы, вычисление напряжений и деформаций, визуализация результата. Ни одна часть алгоритма не спрячется от нас в недрах MATLAB или NumPy. Код будет ужасно неоптимальным, но максимально ясным.

Размышление над задачей и написание кода заняли у меня неделю. Будь у меня перед глазами такая статья, как эта, — справился бы быстрее. У меня её не было. Зато теперь она есть у вас.

Читать далее
Total votes 69: ↑69 and ↓0 +69
Comments 54

Моя большая практическая шпаргалка SQL (SQLite) с готовыми запросами

Level of difficulty Medium
Reading time 54 min
Views 66K

Привет, Хабр)

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

Все примеры изначально писались для СУБД SQLite, но почти всё из этого применимо также и к другим СУБД.

Здесь есть и примеры довольно сложных запросов с агрегирующими функциями, триггерами, длинными подзапросами, с оконными функциями. Помимо этого, часть примеров посвящена работе с SQL в Python, используя sqlite3, pandas, polars. Этот список запросов с комментариями можно использовать как наглядное пособие для изучения SQL.

Читать далее
Total votes 125: ↑122 and ↓3 +119
Comments 7

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

Level of difficulty Easy
Reading time 8 min
Views 114K

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

Читать далее
Total votes 407: ↑318 and ↓89 +229
Comments 1149

Путеводитель по исходникам LLVM

Reading time 6 min
Views 8K
В моём углубленном курсе компиляторов прошлой осенью мы провели некоторое время, изучая дерево исходников LLVM. Миллион строк кода на C++ выглядят пугающе, но я нахожу это интересным упражнением, и, по крайней мере, некоторые студенты с этим согласны, и я подумал, что я попытаюсь написать что-то подобное. Мы будем использовать LLVM 3.9, но предыдущие (и, возможно, будущие) релизы не сильно отличаются.

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

Впечатления от знакомства с Ultimate++

Reading time 5 min
Views 16K
Если вы фрилансер или любите экспериментировать с экзотическими средами под С++, то стоит обратить внимание на экосистему Ultimate++, о которой я узнал совсем недавно благодаря циклу статей Семена Есилевского (ч.1, ч.2, ч.3, ч.4 — все есть на вики) с таким финальным напутствием:
«Перевешивают ли выгоды U++ его необычность и высокий «барьер вхождения»? На мой взгляд, да. U++ – прекрасный выбор для кроссплатформенных проектов, которые разрабатываются «с нуля», особенно если предполагается интенсивное использование баз данных.»

Под катом те нюансы U++, которые удалось раскопать на форуме и в мануалах за месяц ежедневной работы над редактируемым справочником документов, хранящихся в базе. Сразу отмечу, что сравнения с «замечательной троицей» не будет, так как раньше для простейшего gui использовал WTL и с надеждой смотрел на библиотеку eGUI++, которую, к сожалению, автор забросил, а подхватить некому.

Читать дальше →
Total votes 8: ↑7 and ↓1 +6
Comments 12

О люстре Чижевского и ионизации воздуха

Level of difficulty Medium
Reading time 14 min
Views 17K
Картинка Harryarts, Freepik

Многим хорошо известна, а кто-то просто слышал, о таком интересном устройстве, как «Люстра Чижевского», или электроэффлювиальная люстра, автором которой принято считать Александра Леонидовича Чижевского.

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

Является несомненным тот факт, что его изобретение получило международное признание и вошло в широкий обиход, являясь известным и по сей день.
Читать дальше →
Total votes 99: ↑83 and ↓16 +67
Comments 123

Зачем делать новый язык программирования?

Level of difficulty Easy
Reading time 8 min
Views 8.6K

Когда в публичном пространстве появляется информация о новом языке программирования, поднимается волна неприятия. Негатива столько, что хоть святых выноси!

Причин у этого явления много и, скорее всего, сделать с ним ничего нельзя, такова уж человеческая природа.

Однако можно подойти к вопросу рационально, и все-таки попробовать поискать ответ на вопрос, а зачем, собственно, создавать новый язык программирования?

Попробуем разобрать мотивы, подвигающие людей на такую работу.

Читать далее
Total votes 21: ↑14 and ↓7 +7
Comments 50

Приложение Getcontact светит вашими персональными данными, даже если вы им никогда не пользовались

Level of difficulty Easy
Reading time 5 min
Views 130K

Getcontact — мобильное приложение, позиционирующее себя как менеджер звонков и блокировщик спама. Появилось в конце 2017-го и стремительно взлетело на первые места магазинов приложений. Создатели сервиса оценивают свою аудиторию в 400+ миллионов пользователей.

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

Читать далее
Total votes 172: ↑167 and ↓5 +162
Comments 277

Велосипедим связанный список на Wolfram

Level of difficulty Easy
Reading time 8 min
Views 853

Возможно 11 подписчиков моего блога обратили внимание на тот факт, что все мои статьи касаются языка Wolfram, а несколько последних статей вышли довольно громоздкими. Одна из последних статей была помечена Хабром как требующая в среднем 32 минуты на прочтение. Я посчитал, что это может отпугнуть пользователей (все 11 человек и не факт, что все они до сих пор читают Хабр) и решил попробовать писать более короткие статьи. Плюс я сам перестану теряться в большом количестве текста.

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

Ниже реализация структуры данных LinkedList на Wolfram Language.

Читать далее
Total votes 9: ↑9 and ↓0 +9
Comments 4

Наследие Windows XP: загадка title.wma

Reading time 4 min
Views 22K

Старые операционные системы и приложения до сих пор способны удивлять. За каждым файлом порой скрывается целая история. Кто реальный автор демоигры Pinball Space Cadet и правда ли обои рабочего стола Bliss («Безмятежность») были сняты в округе Сонома, штат Калифорния?

Подобные вопросы чаще всего превращаются в увлекательные исследования для любого цифрового археолога. В этой статье мы бы хотели рассказать короткую историю о том, как был найден настоящий автор музыкального файла title.wma, более известного как Windows XP Welcome Music.

Читать далее
Total votes 129: ↑127 and ↓2 +125
Comments 40

Из пушек по воробьям. Генерация и решение лабиринта не самым обычным способом

Level of difficulty Medium
Reading time 19 min
Views 4.5K

На уходящей неделе мне попалась симпатичная, хоть и не новая мини‑серия статей на Дзен‑канале @zdgzdgzdg про процедурную генерацию лабиринта методом «коллапса волновой функции». Пока я читал эти статьи и знакомился с кодом, меня осенило: ведь это же вычисления в комонаде, погружённые в монаду! Я не издеваюсь, действительно, речь идёт о композиции двух паттернов функционального программирования: комонады Zipper, превращающей локальные правила в глобальное состояние, и монады Random, позволяющей генерировать случайные объекты.

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

Читать далее
Total votes 38: ↑38 and ↓0 +38
Comments 7

Стиль написания кода на Wolfram Language

Level of difficulty Easy
Reading time 18 min
Views 2.8K

Я как большой фанат Wolfram Language (WL) очень часто изучаю открытые репозитории с кодом на этом языке. Изучив достаточно много кода я заметил, что стиль написания этого кода очень сильно разнится от проекта к проекту. Но так же я изучил много встроенных пакетов в Mathematica/Wolfram Language, которые были написаны разработчиками из Wolfram Research. В большинстве случаев они были написаны еще хуже (т.е. более неструктурированно и без единого стиля) чем пакеты такого же объема и сложности в открытом доступе. Но и среди проектов на GitHub и среди пакетов в языке мне попадались те, которые действительно хорошо написаны. Постепенно у меня сформировалось понимание того стиля, который будет наиболее прост и понятен большинству пользователей WL. В этой статье я хочу поделиться своим мнением и задокументировать тот стиль и ту конвенцию, которую я постепенно выработал для себя. Возможно, это станет еще кому-то полезно и изучив от корки до корки эту статью, а лучше вызубрив, чтобы от зубов отскакивало, вы станете так быстро решать уравнения и строить графики, что...

Читать далее
Total votes 14: ↑14 and ↓0 +14
Comments 28

Как советские научные книги стали артефактом у физиков и инженеров в Индии

Reading time 8 min
Views 80K


В 2012 году на северо-востоке Москвы случился пожар. Загорелось старое здание с деревянными перекрытиями, огонь быстро перекинулся на соседние дома. Пожарные расчеты не могли подобраться к месту — все парковки вокруг были заставлены машинами. Огонь охватил полторы тысячи квадратных метров. Подобраться к гидранту тоже не удавалось, поэтому спасатели использовали пожарный поезд и даже два вертолета. Один сотрудник МЧС погиб в огне.

Как выяснилось позже, пожар начался в доме издательства «Мир».

Вряд ли это название что-то говорит большинству людей. Издательство и издательство, очередное привидение из советских времен, которое уже лет тридцать ничего не выпускало, но почему-то продолжало существовать. В конце нулевых оно было на грани банкротства, но каким-то образом возвращало долги, кому бы и что оно там ни было должно. Вся его современная история — это пара строк в Википедии о чехарде между всякими государственными МГУП ШМУП ФМУП, которые пылятся в папочках Ростеха (если верить Википедии, опять же).

Но за бюрократическими строчками нет ни слова о том, какое огромное наследие «Мир» оставил в Индии и как повлиял на жизнь нескольких поколений.
Читать дальше →
Total votes 242: ↑239 and ↓3 +236
Comments 182

Собираем автономную игру на C# в 2 килобайтах

Level of difficulty Medium
Reading time 11 min
Views 19K

Моё детство пришлось на эпоху 1,44-мегабайтных дискет и 56-килобитных модемов, поэтому я всегда любил маленькие программы. Раньше можно было записать на дискету кучу мелких игр и таскать её с собой. Если программа не помещалась на дискету, я задумывался, почему — в ней много графики? Есть музыка? Возможно, она выполняет много сложных операций? Или она просто раздута?

В наши дни дисковое пространство стало настолько дешёвым, что люди отказались от оптимизации по размеру.

Размер важен только при передаче: если вы передаёте программу по проводам, мегабайты равны секундам. По быстрому соединению на 100 Мбит в лучшем случае можно передать 12 МБ в секунду. Если на другом конце провода находится человек, ожидающий завершения скачивания, то разница между пятью и одной секундой может существенно повлиять на его ощущения.

Человек может зависеть от времени передачи как напрямую (пользователь, скачивающий программу по сети), так и косвенно (serverless-сервис, отвечающий на веб-запрос).

Люди обычно воспринимают всё, что длится меньше 0,1 секунды, как мгновенное, 3 секунды — это примерно тот предел, после которого прерывается состояние потока пользователя; а уж 10 секунд удержать внимание пользователя очень сложно.

Хотя уменьшение сегодня уже необязательно, оно всё равно лучше.

Эта статья задумывалась как эксперимент, позволяющий выяснить, каким может быть минимальный размер полезного автономного исполняемого файла C#. Могут ли приложения на C# достичь размеров, при которых пользователи будут ощущать их скачивание как мгновенное? Позволит ли это использовать C# там, где он не используется сейчас?
Читать дальше →
Total votes 128: ↑127 and ↓1 +126
Comments 34

Как рисовать мозаики типа «эйнштейн»

Level of difficulty Medium
Reading time 39 min
Views 2.3K

На немецком «эйнштейн» звучит как «один камень». Один - «ein», камень - «Stain». Всем известно, что под этой фамилией жил один замечательный человек, и звали его ... Но в статье речь не о нём. Речь о математической задаче по поиску одной плитки, такой чтобы составленная из неё мозаика была непериодической. «Один камень» - это про плитку. В мозаике Пенроуза таких плиток две, а хотелось бы возможности использовать только одну. Не вдаваясь в детали можно сказать, что задача одной плитки в этом году (2023) решена. Получены интересные красивые мозаики.

Сначала была найдена «шляпа эйнштейна» - плитка, похожая на шляпу. Или, по моему скромному мнению, на рубашку. Из неё можно сделать отличную непериодическую мозаику. Только, для построения используются как сами шляпы, так и их зеркальные отражения. Считать ли это одной плиткой? Можно и не считать.

Дальше была найдена плитка «черепаха». Из неё тоже можно сложить непериодическую мозаику, по тем же самым правилам. Эти два вида плиток могут, плавно меняя форму, переходить друг в друга, меняя размер граней и при этом не меняя их направление. Ещё можно сложить непериодическую мозаику одновременно из этих двух плиток. Дальше больше. У такого плавного преобразования существует средний вариант, в котором длина граней одинакова.

Оказалось, такая мозаика, в которой есть одновременно и шляпы и черепахи, при обмене формой в момент, в котором длина граней становится одинаковой, составлена из плиток полностью одинаковой формы. То есть, существует ещё одна непериодическая мозаика, в которой плитка используется уже без своего зеркального отражения. Плитка, у которой грани модифицированы так, что она позволяет только непереодическое сложение названа «Spectre» (призрак). Задача решена, теперь уже точно.

Читать далее
Total votes 25: ↑25 and ↓0 +25
Comments 1

Свободная музыка со словами, созданная нейронными сетями в «Бесконечном нейронном радио»

Level of difficulty Easy
Reading time 3 min
Views 7.1K

Привет, поклонники музыки! Думали ли вы о том, что наступит день, когда нейронные сети начнут генерировать музыкальные композиции в различных жанрах, начиная от Heavy Metal и заканчивая 80-ми? Недавно я выпустил большой апдейт для своего проекта с открытым исходным кодом «Нейронное радио», где музыка и подкасты созданы нейронными сетями. Однако в первых релизах музыка была без слов, и, мягко говоря, слабая. Но сегодня все изменилось. Качество музыки улучшилось, и появилась музыка со словами и голосами под жанры.

Послушать подробнее
Total votes 25: ↑24 and ↓1 +23
Comments 22

MIDI → Метр → MIDI

Level of difficulty Easy
Reading time 11 min
Views 2.1K

Статья поведёт нас через границу, где сходятся MIDI и метрическое время. В этом путешествии мы откроем брошюру по Международной системе единиц СИ, повстречаем файлы с более чем 6000 изменений темпа, столкнёмся с ошибками округления и напишем немного кода. Звучит заманчиво? Тогда добро пожаловать!

Читать далее
Total votes 18: ↑18 and ↓0 +18
Comments 1

Information

Rating
1,340-th
Location
Россия
Works in
Registered
Activity