Pull to refresh
14
0

Химик и программист.

Send message

Хабрамегарейтинг: лучшие статьи и статистика Хабра за 12 лет. Часть 2/2

Reading time13 min
Views18K
Привет, Хабр.

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



Кому интересны результаты, прошу под кат.
Читать дальше →

Хабрамегарейтинг: лучшие статьи и статистика Хабра за 12 лет. Часть 1/2

Reading time5 min
Views12K
Привет Хабр.

После публикации рейтинга статей за 2017 и 2018 год, следующая идея была очевидна — собрать обобщенный рейтинг за все годы. Но просто собрать ссылки было бы банально (хотя и тоже полезно), поэтому было решено расширить обработку данных и собрать еще немного полезной информации.



Рейтинги, статистика и немного исходного кода на Python под катом.
Читать дальше →

Жизненный цикл статьи на Хабре: пишем хабрапарсер. Часть вторая

Reading time79 min
Views4.1K
Привет Хабр!

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

image

Попробуем ответить на этот и другие вопросы, также опубликуем свой чисто научный статистический мини-рейтинг. Как и в первой части, для сбора статистики воспользуемся Python, Pandas и Matplotlib.

Для тех кому интересно что получилось, продолжение под катом.
Читать дальше →

Использование графов для решения разреженных систем линейных уравнений

Reading time15 min
Views12K

Прелюдия


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

Часто работают с т.н. разреженными матрицами — теми, у которых нулей на порядки больше остальных значений. Такое, например, неизбежно, если имеешь дело с уравнениями в частных производных или с какими-нибудь другими процессами, в которых возникающие элементы в определяющих линейных соотношениях связаны лишь с «соседями». Вот возможный пример разреженной матрицы для известного в классической физике одномерного уравнения Пуассона $-\phi^{''} = f$ на равномерной сетке (да, пока в ней нулей не так много, но при измельчении сетки их будет будь здоров!):

$\begin{pmatrix}2 & -1 & 0 & 0 & 0\\ -1 & 2 & -1 & 0 & 0\\ 0 & -1 & 2 & -1 & 0 \\ 0 & 0 & -1 & 2 & -1 \\ 0 & 0 & 0 & -1 & 2\end{pmatrix}$


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

Псто добра

Reading time3 min
Views5.9K
Дисклеймер
Я осознаю, что этот пост можно расценивать как флуд, и приношу свои извинения тем, кому он испортил аппетит. Однако прошу понять, что это нежелательный побочный эффект. Цель поста — социальный эксперимент и, возможно, восстановление справедливости.

Введение


В последнее время в комментариях на Хабре (особенно — в комментариях к постам TechMedia) с особой настойчивостью стали высказываться мнения о несправедливости существующей системы кармы. Среди откровенно бредовых аргументов (о тайных элитарных обществах минусаторов, о недопустимости цензуры в любом виде и т.п.) попался один, над которым я задумался.

image
Читать дальше →

Выигрышная стратегия Гомоку – 35 ходов

Reading time11 min
Views40K
При игре по стандартным правилам Гомоку для выигрыша черным требуется не более 35 ходов. В статье Вашему вниманию представлена полная выигрышная стратегия и соответствующий алгоритм игры.

Демонстрация полного решения – здесь – можно поиграть и найти самые длинные варианты. Программа всегда выигрывает и затрачивает на это не более 35 ходов. Исходные тексты приложения, само решение и примеры партий в конце статьи.
Читать дальше →

Ослабляем гайки в правилах Хабра

Reading time3 min
Views60K
Всем привет! Несколько дней назад мы запустили англоязычную версию Хабра и нам крайне приятно, что вы тепло встретили это долгожданное нововведение. Приятно и то, что за прошедшее с публикации анонса мультиязычности время на сайте появилось уже более 50 англоязычных публикаций.

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

Пост написан при поддержке WD-40
Читать дальше →

Почему Windows XP в 2019 году по-прежнему рулит, или ЧЯДНТ?

Reading time9 min
Views171K
На Хабре в комментариях к статьям о выходе новых версий операционных систем, выпуске новых моделей ноутбуков, накопителей данных, модулей памяти и т.п. регулярно высказывается мнение о том, что только наипоследнейшая версия операционной системы известного вендора даёт возможность современному гику не скатиться в унылое г… очувствовать себя человеком, и только тот, у кого стоитустановлена Windows 8, 10, 11, 9000 (нужное подчеркнуть), будет пользоваться популярностью у девушекработодателей и клиентов. По причинам изложенным ниже я полагаю таковое мнение глубоко ошибочным и даже ущербным, показывающем неспособность владельца компьютера оптимально использовать имеющиеся в его распоряжении аппаратные и программные ресурсы.
Читать дальше →

Создание бота для участия в Russian AI Cup 2018 CodeBall

Reading time6 min
Views6.5K


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

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

Как писать на ассемблере в 2018 году

Reading time13 min
Views323K


Статья посвящена языку ассемблер с учетом актуальных реалий. Представлены преимущества и отличия от ЯВУ, произведено небольшое сравнение компиляторов, скрупулёзно собрано значительное количество лучшей тематической литературы.
Читать дальше →

Пишем собственную виртуальную машину

Reading time24 min
Views57K
В этом руководстве я расскажу, как написать собственную виртуальную машину (VM), способную запускать программы на ассемблере, такие как 2048 (моего друга) или Roguelike (моя). Если вы умеете программировать, но хотите лучше понять, что происходит внутри компьютера и как работают языки программирования, то этот проект для вас. Написание собственной виртуальной машины может показаться немного страшным, но я обещаю, что тема удивительно простая и поучительная.

Окончательный код составляет около 250 строк на C. Достаточно знать лишь основы C или C++, такие как двоичная арифметика. Для сборки и запуска подходит любая Unix-система (включая macOS). Несколько API Unix используются для настройки ввода и отображения консоли, но они не являются существенными для основного кода. (Реализация поддержки Windows приветствуется).

Примечание: эта VM — грамотная программа. То есть вы прямо сейчас уже читаете её исходный код! Каждый фрагмент кода будет показан и подробно объяснён, так что можете быть уверены: ничего не упущено. Окончательный код создан сплетением блоков кода. Репозиторий проекта тут.
Читать дальше →

Надо знать, где поставить ноль

Reading time3 min
Views26K


Для некоторых оптимизаций требуются сложные структуры данных и тысячи строк кода. В других же случаях серьёзный прирост производительности даёт минимальное изменение: иногда нужно лишь поставить ноль. Это похоже на старую байку о котельщике, который знает правильное место для удара молотком, а потом выставляет клиенту счёт: $0,50 за удар по клапану и $999,50 за знание, куда бить.

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

Почти оптимальное решение трёхмерных 4x4x4 крестиков-ноликов

Reading time6 min
Views16K
Все знают игру крестики-нолики 3x3. При правильной игре при первом ходе крестиков результатом является ничья. Можно вручную составить дерево ходов, где на любой ход ноликов, существует ход крестиков, который ведет к наилучшему результату (для крестиков), то есть к ничьей или выигрышу. Это дерево ходов исчерпывает все варианты, поэтому говорят, что игра «решена». Существует трехмерная разновидность крестиков-ноликов 4x4x4 для которой ответ на вопрос, кто победит при первом ходе крестиков, не очевиден. Более того, возникает вопрос, можно ли построить такое минимальное дерево, которое будет решать эту задачу.

Ответ на этот вопрос под катом.
Читать дальше →

Как перестать беспокоиться и начать писать тесты на основе свойств

Reading time11 min
Views13K
В последнее время все чаще встречаются упоминания о некоем волшебном средстве — тестировании на основе свойств (property based testing, если надо погуглить англоязычную литературу). Большинство статей на эту тему рассказывают о том, какой это классный подход, затем на элементарном примере показывают как написать такой тест используя какой-то конкретный фреймворк, в лучшем случае подсказывают несколько часто встречающихся свойств, и… на этом все заканчивается. Дальше изумленный и воодушевленный читатель пытается применить все это на практике, и упирается в то, что свойства как-то не придумываются. И к большому сожалению часто на этом сдается. В этой статье я постараюсь расставить приоритеты немного по другому. Начну все-таки с более-менее конкретного примера, чтобы объяснить что это за зверь такой. Но пример, надеюсь, не совсем типичный для подобного рода статей. Затем попробую разобрать некоторые проблемы, связанные с этим подходом, и как их можно решить. А вот дальше — свойства, свойства и только свойства, с примерами куда их можно приткнуть. Интересно?
Читать дальше →

Рождественская открытка с Марса. ESA показало большое скопление льда на поверхности красной планеты

Reading time3 min
Views33K


Может быть, вы уже видели? Лёд среди пустыни. Это не фотошоп и не природная аномалия. Это новые снимки водяного льда в кратере Королёва на Марсе, только что опубликованные ESA. Они сделаны спутником Mars Express, запущенным Европейским космическим агентством еще в 2003 году. Объект весом 666 кг вращается вокруг планеты уже 15 лет, многократно оправдав свою стоимость в $345 млн (между прочим, в два раза дешевле, чем у похожих спутников США).


Недавно этот «старичок» сделал свои самые впечатляющие снимки. ESA публикует их в честь приближающегося Рождества, 50-летия миссии Аполлон-8, впервые облетевшей Луну, и 15-летия вращения самого Mars Express (он запустил свой главный двигатель и вышел на орбиту Марса 25 декабря).

Читать дальше →

По вашему запросу найдено: реализация нечеткого поиска

Reading time8 min
Views12K
Все мы совершаем ошибки: в данном случае речь идет о поисковых запросах. Количество сайтов для продажи товаров и услуг растет наряду с потребностями пользователей, однако не всегда они могут найти то, что ищут – только потому, что неправильно вводят название необходимого товара. Решение данной проблемы достигается путем реализации нечеткого поиска, то есть использования алгоритма поиска наиболее близких значений с учетом возможных ошибок или опечаток пользователя. Область применения такого поиска достаточно широка – нам же удалось поработать над поиском для крупного интернет-магазина в фудритейл-сегменте.
Читать дальше →

Сверхинтеллект: идея, не дающая покоя умным людям

Reading time28 min
Views45K


Расшифровка выступления на конференции Web Camp Zagreb Мачея Цегловского, американского веб-разработчика, предпринимателя, докладчика и социального критика польского происхождения.

В 1945 году, когда американские физики готовились к испытанию атомной бомбы, кому-то пришло в голову спросить, не может ли такое испытание зажечь атмосферу.

Опасение было оправданным. Азот, из которого состоит большая часть атмосферы, энергетически нестабилен. Если столкнуть два атома достаточно сильно, они превратятся в атом магния, альфа-частицу и выпустят огромную энергию:

N14 + N14 ⇒ Mg24 + α + 17,7 МэВ

Жизненно важным вопросом было то, может ли эта реакция стать самоподдерживающейся. Температура внутри шара ядерного взрыва должна была превысить всё, что когда-то наблюдалось на Земле. Не получится ли, что мы бросим спичку в кучу сухих листьев?
Читать дальше →

Введение в реактивное программирование

Reading time11 min
Views51K
Здравствуйте. В этой статье я пробегусь галопом по Европам, а именно — расскажу, что понимают под реактивным программированием, познакомлю с акторами, реактивными потоками, и наконец, при помощи реактивных потоков мы сделаем распознавание мышиных жестов, как в старой Opera и её духовном наследнике — Vivaldi.

Цель — познакомить с основными концепциями реактивного программирования и показать, что не всё так сложно и страшно, как может показаться на первый взгляд.

image
Источник
Читать дальше →

Первая хорошая лампочка с Aliexpress

Reading time3 min
Views75K
Почти все светодиодные лампы, которые можно купить на Aliexpress, очень плохие: у многих недопустимая пульсация света, низкий индекс цветопередачи, зачастую реальная мощность и световой поток в пять раз меньше обещанных. Я уже был уверен, что на Али хороших ламп нет вообще, но исключение всё же нашлось.

Читать дальше →

Плохой код убивает

Reading time10 min
Views75K
Плохой программист Джон сделал ошибку в коде, из-за которой каждый пользователь программы был вынужден потратить в среднем 15 минут времени на поиск обхода возникшей проблемы. Пользователей было 10 миллионов. Всего впустую потрачено 150 миллионов минут = 2.5 миллиона часов. Если человек спит 8 часов в сутки, то на сознательную деятельность у него остается 16 часов. То есть Джон уничтожил 156250 человеко-дней ≈ 427.8 человеко-лет. Средний мужчина живет 64 года, значит Джон убил примерно 6 целых 68 сотых человека.

Как тебе спится, Джон — серийный программист?

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

Правила хорошего кода


Простота-понятность-компактность, производительность, отсутствие дублирования.

Если вы пишете что-то сложнее «hello world”, оно будет размещаться не в одном, а в нескольких файлах. Как правило, файлов бывает больше десятка. Всем им даются непонятные короткие имена (программисты любят сокращения) Человек, который попытается разобраться в вашем коде, будет плеваться, шипеть и проклинать вас. Ваша карма будет испорчена и следующие несколько жизней вы будете собакой в Корее.
Читать дальше →

Information

Rating
Does not participate
Registered
Activity