Pull to refresh
57
0

Пользователь

Send message

Разбор регулярного выражения, проверяющего простоту чисел

Level of difficultyEasy
Reading time16 min
Views10K

Как-то я исследовал способы наиболее эффективного определения простоты числа и наткнулся на показанный выше код.

Он меня заинтриговал. Хоть это, возможно, и не самый эффективный способ, но определённо один из наименее очевидных, поэтому мне стало любопытно. Каким образом соответствие регулярному выражению .?|(..+?)\1+ должно показать, что число непростое (после его преобразования в унарную систему счисления)?

Если вы заинтересовались, продолжайте чтение, я проанализирую это регулярное выражение и объясню, что же в нём происходит. Объяснение не зависит от языка программирования, однако я приведу версии показанного выше Java-кода на PythonJavaScript и Perl  и объясню, почему они немного различаются.

Я объясню, как регулярное выражение ^.?$|^(..+?)\1+$ способно отфильтровывать все простые числа. Почему это выражение, а не .?|(..+?)\1+ (использованное в примере кода на Java)? Это связано с тем, как работает String.matches(), о чём я расскажу ниже.

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

Читать далее

Алгоритмы быстрого возведения в степень

Reading time8 min
Views34K

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

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

Читать далее

Используем высокие разрешения на неподдерживающих их видеокартах

Reading time6 min
Views136K
Засматриваетесь на 4K UHD-мониторы, но ваш лаптоп не поддерживает высокие разрешения? Купили монитор и миритесь с частотой обновления в 30Гц? Повремените с апгрейдом.

TL;DR: 3840×2160@43 Гц, 3200×1800@60 Гц, 2560×1440@86 Гц на Intel HD 3000 Sandy Bridge; 3840×2160@52 Гц на Intel Iris 5100 Haswell.

Предыстория


Давным-давно, когда все мониторы были большими и кинескопными, компьютеры использовали фиксированные разрешения и тайминги для вывода изображения на экран. Тайминги были описаны в стандарте Display Monitor Timings (DMT), и не существовало универсального метода расчета таймингов для использования нестандартного разрешения. Мониторы отправляли компьютеру информацию о себе через специальный протокол Extended display identification data (EDID), который содержал DMT-таблицу с поддерживаемыми режимами. Шло время, мониторам стало не хватать разрешений из DMT. В 1999 году VESA представляет Generalized Timing Formula (GTF) — универсальный способ расчета таймингов для любого разрешения (с определенной точностью). Всего через 3 года, в 2002 году, его заменил стандарт Coordinated Video Timings (CVT), в котором описывается способ чуть более точного рассчитывания таймингов.

Оба стандарта были созданы с учетом особенностей хода луча в электро-лучевой трубке, вводились специальные задержки для того, чтобы магнитное поле успело измениться. Жидкокристаллические мониторы, напротив, таких задержек не требуют, поэтому для них был разработан стандарт CVT Reduced Blanking (CVT-R или CVT-RB), который является копией CVT без задержек для CRT, что позволило значительно снизить требуемую пропускную способность интерфейса. В 2013 году вышло обновление CVT-R c индексом v2, но, к сожалению, открытого описания стандарта в интернете нет, а сама VESA продает его за $350.

История


Наконец-то настала эра высокой плотности пикселей и на ПК. На протяжении последних нескольких лет, нас встречал театр абсурда, когда на мобильные устройства ставят пятидюймовые матрицы с разрешением 1920×1080, полки магазинов уставлены большими 4K-телевизорами (хоть на них и смотрят с расстояния 2-4 метров), а мониторы как были, так и оставались с пикселями с кулак. Подавляющее большинство говорит, что Full HD выглядит «достаточно хорошо» и на 27" мониторе, забывая, что предыдущее «достаточно хорошо» чрезвычайно быстро ушло после выхода iPad с Retina. Вероятнее всего, такая стагнация произошла из-за плохой поддержки высокой плотности пикселей в Windows, которая более-менее устаканилась только к выходу Windows 8.1.
Читать дальше →

Профили крыла для полёта без флаттера и загадочные «суперкритические» профили

Reading time17 min
Views11K

В предыдущей статье про «флаттер крыла»  я описывал  механизм возникновения сильных изгибно- крутильных колебаний крыла при внезапном срыве потока на одной из плоскостей крыла на  скорости полёта выше расчётно-крейсерской.

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

Также нужно рассмотреть аэродинамику крыла при преодолении  развитого  флаттера при разгоне самолёта к сверхзвуку.

Профиль  крыла для недопущения флаттера

Ранее мы уже выяснили, что уже с конца 1930-х годов  стараниям профессора Келдыша было сформулировано  общее правило для конструирования неподверженных флаттеру самолётов, а именно:

Крыло должно быть настолько тонким, чтобы не возникало срыва потока по верхней плоскости крыла.

Из этого  правила следует следящие неприятные конструктивные следствия:

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

Так если в начале 1930-х у самолётов толщина профиля составляла 15-20% от ширины крыла по хорде, то к 1940-м толщины крыльев истребителей и бомбардировщиков  упали до 8-15%, при этом   максимальные толщины профиля сместились ближе к середине хорды крыла. (см.рис.1-4.)

Читать далее

Как сгенерировать порождающие полиномы для конечных полей

Level of difficultyEasy
Reading time12 min
Views3.1K

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

Читать далее

Советская электрогитара «Форманта» в 2024 году

Level of difficultyEasy
Reading time8 min
Views14K


Привет, Хабр! Возраст этого артефакта из СССР составляет примерно четыре десятилетия, и его можно смело назвать если не музейной, то по крайней мере коллекционной ценностью. Но что такой арт-объект может дать нам сегодня в качестве именно музыкального инструмента?

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

Я продемонстрирую, какие звучания позволяют получить 3 звукоснимателя, 4 переключателя и 4 переменных резистора электрогитары Форманта 241-БЛ, а также расскажу, в чём состоят недооценённые особенности данного шедевра мастеров Борисовской фабрики.
Читать дальше →

Изготовление лампы с цоколем упрощённого типа

Level of difficultyMedium
Reading time7 min
Views8.3K

Речь идёт об опытах и экспериментах на пути к изготовлению более или менее практических электровакуумных приборов (ЭВП) в домашней лаборатории-мастерской. Стоит сказать: выводы ЭВП — спай разнородных материалов, сложное и ответственное место любой лампы. Говоря о конструкции, классическая гребешковая ножка [1] покрывает все любительские потребности, однако её изготовление, тем более из легкоплавкого стекла платиновой группы, склонного к растрескиванию из-за высокого температурного коэффициента расширения (ТКР) — многостадийный процесс, имеющий несколько длительных промежуточных отжигов. Что удлиняет и удорожает изготовление. Однако ряд приборов можно сделать с упрощённым цоколем и проволочными выводами, быстрее, удобнее, дешевле.
Читать дальше →

Открытый онлайн-курс по цифровой схемотехнике: от истоков до первого устройства

Level of difficultyEasy
Reading time4 min
Views19K

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

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

Читать далее

Сложная красота в простой формуле

Level of difficultyEasy
Reading time6 min
Views19K

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

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

Читать далее

Как создать аудиоплеер. Часть 1. Что под капотом

Level of difficultyMedium
Reading time6 min
Views7.7K

Всем привет! Меня зовут Дмитрий Булгаков, я Android-разработчик в HiFi-стриминге Звук, и я расскажу, как можно создать аудиоплеер в приложении. Поговорим об инструментах разработки и устройстве плеера —  разберем его «анатомию», компоненты и их применение, а также способы улучшения звука с помощью эквалайзера.

Для вашего удобства гайд разделён на несколько основных частей. В первой расскажу об актуальных инструментах разработки плеера и о том, что у него «под капотом».

Поехали!

Читать далее

Карсон Гросс, создатель HTMX

Level of difficultyEasy
Reading time7 min
Views12K


Карсон Гросс (Carson Gross) — профессор информатики из Монтаны, который неожиданно стал одним из самых ярких персонажей в индустрии веб-программирования последних лет. Он автор языка HyperScript и популярной библиотеки для фронтенда HTMX, позволяющей создавать сложные интерактивные сайты средствами HTML. Красивая альтернатива клиентскому рендерингу на JavaScript решает сразу несколько проблем современного веба, связанных с избыточной сложностью разработки и поддержки, производительностью и ожирением сайтов.

Создавать сайты очень просто, тот же Хабр написал один программист, а не команда из сотен разработчиков и девопсов, как сейчас принято нанимать в интернет-компании.

Многие веб-разработчики нашего времени выросли со знанием только одностраничных приложений SPA и фреймворков для них. Они начали свои карьеры с приложений на React.js, которые общаются с сервером Node через JSON API. Это настоящая трагедия, считает Гросс. Интерактивные приложения можно делать совершенно иначе.
Читать дальше →

48 лет вместе с Zilog Z80

Level of difficultyEasy
Reading time11 min
Views25K

Один из ранних экземпляров Zilog Z80 с датой выпуска в июне 1976 года. Геннадий Швец

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

Недавно Zilog объявила, что последние заказы на оригинальные Z80 принимаются до 14 июня этого года. Легендарный Z80 продержался в производстве почти 48 лет.
Читать дальше →

Анатомия Hello World на языке C

Level of difficultyMedium
Reading time15 min
Views31K

Эта статья посвящена программе Hello World, написанной на C. Это максимальный уровень, на который можно добраться с языком высокого уровня, не беспокоясь при этом о том, что конкретно язык делает в интерпретаторе/компиляторе/JIT перед выполнением программы.

Изначально я хотел написать статью так, чтобы она была понятна любому, умеющему кодить, но теперь думаю, что читателю полезно иметь хотя бы некоторые знания по C или ассемблеру.
Читать дальше →

Небольшая щепотка ультразвуковых чудес

Level of difficultyMedium
Reading time9 min
Views11K
Картинка Freepik

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

Нейрогенератор игровых миров: рассказ о моём интригующем пет проекте

Level of difficultyMedium
Reading time12 min
Views4.6K

Представьте себе игру с полностью открытым и бесконечным миром, этот мир живет своей жизнью, и игрок полностью свободен делать всё, что заблагорассудиться, а игра просимулирует результаты его действий. Такой, open world со своей уникальной вселенной. Интересная такая идея для петпроекта, не правда ли? В этой статье я расскажу о своей попытке реализовать подобную игру, по крайней мере её фундамент.

Читать далее

Как я варю бытовую химию и продаю на 1,5 млн в месяц

Level of difficultyEasy
Reading time12 min
Views140K

Салам, брат. Меня зовут Филипп, я ведущий утреннего шоу на Ретро FM Кыргызстан, а ещё я Варщик. Я начинал с варки бытовой химии на съёмной квартире в центре Бишкека. Там я разливал жидкое мыло в тару, которую покупал на производстве мёда. Сегодня моё производство выпускает 5 000 единиц продукции в месяц.

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

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

В 2010-м, до отъезда из России, я хотел разгадывать кроссворды на берегу Адриатического моря, вытащить миллионов 10 млн евро и оставить управляющих, а вот как вышло на самом деле.

Читать далее

Правда и мифы об энтропии. Как работает второй закон термодинамики?

Level of difficultyMedium
Reading time22 min
Views48K

Энтропия – одна из самых важных и в то же время трудных для понимания физических концепций, без которой невозможно представить себе научную картину мира. Энтропия является неотъемлемым свойством макроскопических систем, но, в отличие от температуры, давления или объёма, её нельзя измерить с помощью приборов. Ситуацию усугубляет тот факт, что у энтропии есть множество определений, на первый взгляд никак между собой не связанных. В термодинамике это мера необратимого рассеяния или бесполезности энергии, в статистической физике – вероятность осуществления некоторого макроскопического состояния системы, в теории динамических систем – мера хаоса в поведении системы, в теории информации – мера неопределённости источника сообщений, определяемая вероятностями появления тех или иных символов при их передаче. Создаётся впечатление, что гуманитарию разобраться в этом без знания формул – непосильная задача. Но я покажу обратное. Сразу оговорюсь, что в данной статье будут рассмотрены только термодинамический и статистический аспекты энтропии, а о том, как энтропия связана с информацией, я расскажу как-нибудь отдельно.

Читать далее

Заблокированный iPhone 5c от которого никто и ничего не помнит — что с ним можно сделать?

Reading time5 min
Views23K

Вчера я купил iPhone 5c в хорошем внешнем состоянии за 200 рублей, с симптомами "невключайки". Я решил его поднять, плата оказалась живой, но айфон защищен пин-кодом. Более того, он был на iOS 10 - что сразу отбрасывало какой либо брутфорс(на ранних версиях iOS можно сделать бесконечное количество попыток). Хозяйка ничего не знает и ничего не помнит. Кирпич ли это? Нет! И всё описанное в статье применимо ко всем iPhone, от 4(2g, 3g, 3gs - не имели блокировки по iCloud), до X. Интересно? Читаем далее. Сразу предупрежу тех, кто возможно знаком с процессом т.н "байпасса" на iOS - связи не будет, ниже будет расписано почему. И вам обязательно нужен ПК на Intel, VMWare не подойдет!

Читать далее

Еще раз про асинхронную машину состояний и где именно там аллокации

Level of difficultyMedium
Reading time8 min
Views23K

Несмотря на то, что про async/await уже было сказано много слов и записано множество докладов, тем не менее, в своей практике преподавания и наставничества, я часто сталкиваюсь с недопониманием устройства async/await даже у разработчиков уровня Middle+. В данной статье мы подробно рассмотрим машину состояний, сгенерированную компилятором из асинхронного метода для понимания принципа работы асинхронности в C#, разберемся где именно там аллокации и порешаем задачи для самопроверки. Если вы уже раз сто видели как выглядит асинхронная машина состояний, но все равно недопонимаете ее, тогда эта статья для вас.

Читать далее

Совершенные числа. Удивительная история поисков сверкающих звёзд в бесконечном числовом мире

Reading time7 min
Views23K

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

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

В одной из таких загадок, как в зеркале, отражается вся история математики. Эта задача связана с рядом чисел, которые ещё в глубокой древности называли «совершенными». Последующие поколения математиков добавляли в копилку знаний человечества новые числа этого ряда. Процесс ещё не окончен и поиски продолжаются. С совершенными числами связано много тайн и не разрешённых до сих пор загадок.

Что же в них такого особенного?
1
23 ...

Information

Rating
Does not participate
Registered
Activity