Pull to refresh
135
0
Руслан Ющенко @yruslan

User

Send message

Быстрое умножение многочленов при помощи преобразования Фурье — это просто

Reading time9 min
Views81K
Добрый вечер.
Этот пост посвящён быстрому преобразованию Фурье. Будут рассмотрены прямое и обратное преобразования (в комплексных числах). В следующей части я планирую рассмотреть их применения в некоторых задачах олимпиадного программирования (в частности, одна задача про «похожесть» строк), а также рассказать про реализацию преобразования в целых числах.
БПФ — это алгоритм, вычисляющий значения многочлена степени n=2k в некоторых n точках за время O(n⋅logn) («наивный» метод выполняет ту же задачу за время O(n2)). За то же время можно выполнить и обратное преобразование. Так как складывать, вычитать и умножать массивы чисел гораздо легче, чем многочлены (особенно умножать), БПФ часто применяется для ускорения вычислений с многочленами и длинными числами.
Читать дальше →

Software versioning

Reading time10 min
Views64K

Методология изменения версий продукта программного обеспечения


   Software versioning — это процесс создания уникальных имен или номеров для различных версий продуктов программного обеспечения.

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

Цифры в культуре Китая

Reading time3 min
Views80K
image
Каждый, кто ближе знакомится с культурой Китая или начинает общаться с китайцами, отмечает, насколько все сферы китайской жизни пронизаны цифровой символикой. Будь то принципы философии, медицины, музыки или архитектуры, мечты простого китайца завести себе телефонный номер с восьмеркой, табу в отношении цифры 4 или нездоровое желание подобрать удачное сочетание цифр в контракте.

«Числовые суеверия»


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

«Удачливость» числа в народном сознании китайцев определяется его созвучием с каким-либо словом. Например, число 4 звучит аналогично слову «умереть» (без учета тона), что породило в странах Дальнего Востока суеверие, аналогичное нашей боязни числа 13. Так, во многих гостиницах и больницах вы не найдете номеров с числом 4, а иногда даже и 4-го этажа.
Читать дальше →

Возможности для студентов, о которых вы, возможно, не знали

Reading time3 min
Views18K
Есть много причин недолюбливать нынешнюю образовательную систему — учат плохо, технологии устаревшие, много ненужной информации и т.д. Я так тоже считал и в той или иной степени считаю. Но, несмотря на это, у студентов есть много возможностей, о которых они даже не догадываются. В этой статье я решил собрать советы, которые должны пригодиться студентам во время учебы. К сожалению, о многом я узнал на последнем курсе, а то и вовсе после окончания университета.

Итак, поехали…
Читать дальше →

Беззамочные алгоритмы: модель «сделай, запиши,(попытайся снова)»

Reading time4 min
Views2.1K
Реализованное нами в прошлый раз атомарное умножение является примером более общей модели, которую Реймонд назвал «сделай, запиши,(попытайся снова)».

for (;;) {
 // берём начальное значение общей переменной,
 // которую мы собираемся изменять
 oldValue = sharedVariable;

 ... берём начальные значения других параметров ...

 newValue = ... вычисляем новое значение, используя
                oldValue и копии остальных параметров ...

 // вместо Xxx может быть Acquire, Release, или ничего
 if (InterlockedCompareExchangeXxx(
            &sharedVariable,
            newValue, oldValue) == oldValue) {
  break; // запись удалась
 }

 ... удаляем newValue ...

} // попытаемся снова

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

Репутация логотипа Internet Explorer

Reading time3 min
Views8.3K
Как-то раз, холодным зимним вечером, зашел я на чашку чая к своим знакомым — молодой супружеской паре с ребенком младшего школьного возраста. Люди хорошие, но от информационных технологий очень далёкие. Компьютер в их доме, конечно, есть, но роль его сводится к видеоплееру и подставке под вазон. И вот, за бокалом чая, хозяйка дома вспомнила, что я «компьютерщик», и попросила удалить с их компа некую «мерзость, которая непонятно как там оказалась». Я уж был готов к рассаднику вирусов и лекции на соответствующую тему, но «мерзостью», которая вызвала негодование моей знакомой, оказался Internet Explorer.
Нет, мои друзья не стали вдруг фанатами Firefox\Chrome\Opera (как я уже говорил — люди от IT далёкие и о вышеперечисленных браузерах не слышали). Более того — у них дома даже интернета на тот момент не было. А неприязнь к IE и желание его удалить — были. Как так?

Отгадка под катом. Осторожно, трафик.

Дайте детям поиграть

Reading time3 min
Views13K

Вот у вас есть ребенок? Дошкольник. От годика до семи. А может даже младше года. Какой он или она? И какие они, современные дети? Продвинутые, хорошо разбирающиеся в новейших игрушках, способные дать фору в этом вопросе многим взрослым. Что является их любимым развлечением? Мобильные телефоны, компьютеры, консоли. Ведь и ваш, наверняка, не выпустит из маленьких ручонок iPad, если ему его дать. Главное, чтобы в стенку им ради развлечения не кидался :)

Теперь посмотрим с другой стороны. В психологии существует такое понятие как «ведущий вид деятельности». Это та деятельность, в ходе которой развивается психика ребенка на том или ином этапе своего формирования. Как не трудно догадаться, для детей дошкольного возраста — это, безусловно, игра. Свободно развивающаяся деятельность, предпринимаемая ради удовольствия от самого процесса, а не от результата.

Как сделать, чтобы в процессе игры, не ради обучения, а ради удовольствия (не забываем, что именно это, в первую очередь, мотивирует маленького ребенка играть в конкретную игру), наши малыши получали полезную информацию?

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

Перевод статьи «Pimp My Pimpl», часть 1

Reading time7 min
Views29K
В первой части статьи рассматривается классическая идиома Pimpl (pointer-to-implementation, указатель на реализацию), показываются её преимущества и рассматривается дальнейшее развитие идиом на её основе. Вторая часть будет сосредоточена на том, как уменьшить недостатки, которые неизбежно возникают при использовании Pimpl.
Читать дальше →

Расследование CNET показало, какую информацию телефоны на Android отсылают в Google, и почему она не может считаться анонимной

Reading time2 min
Views18K


В последнее время проблема сбора персональной информации пользователей мобильными устройствами стала достаточно актуальной — обсуждение этого вопроса ведется на страницах большинства «технических» интернет-СМИ. Не является исключением и Хабр, где уже есть две интересных статьи по поводу устройств от Apple и телефонов на основе Android. Кроме того, проблемой занимается довольно много независимых экспертов, и что интересно, у каждого из них свое мнение о том, чем чреват такой сбор информации для конкретного пользователя.

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

Готовим HTML5 видео в VLC и подаём с помощью jPlayer

Reading time2 min
Views13K
Тег HTML5 video, уже поддерживается всеми основными браузерами.

imageКак видно из таблицы, текущие версии Firefox, Chrome и Opera поддерживают продвигаемый Google открытый WebM, а Safari (включая IOS версию) и IE проприетарный H.264, для остальных же браузеров можно использовать flash плеер, который умеет проигрывать тот же H.264, и таким образом для кроссбраузерности будет достаточно перекодировать видео в эти 2 формата.

В этой небольшой заметке я расскажу как перекодировать видео в эти самые форматы (этот вопрос освещён в интернете на удивление плохо) в VLC плеере и как использовать jPlayer для его кроссбраузерного воспроизведения.

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

Введение в postmortem debugging

Reading time7 min
Views15K
Падение программы — это очень гадкая вещь. К сожалению все мы не идеальны и даже применяя наиболее безопасные методы разработки (например TDD) мы не застрахованы от того что программа свалится. Особенно плохо, если она свалится уже у заказчика. Но на пути к идеалу у нас всегда есть инструментарий, который может помочь расследовать падение программ, выявить ошибки, а главное исправить их.
Одно грустно, что многие, даже очень опытные разработчики не знакомы с этим инструментарием и многие компании не включают данную практику в свою работу. Я говорю о postmortem отладке.
В данной статье я хочу показать азы работы с данным зверем и возможно подтолкну этим самым разработчиков на расширение своих познаний в области оладки. Итак, приглашаются к чтению C++ Windows разработчики, тим-лиды, ну и руководителям отделов разработки будет неплохо ознакомиться.
Читать дальше →

Hit print

Reading time1 min
Views908
В преддверии пятницы два небольших заводных интересных видеоролика от HP. Это ни в коем случае не пиар, просто встретилось на просторах youtube, понравилось.

Ролик №1.



Под катом ролик №2.
Читать дальше →

Системы управления версиями как инструмент совместной работы студентов

Reading time2 min
Views4.2K
И сразу к делу. Рассмотрим идею совместной разработки лабораторных/курсовых работ с помощью github



Ответственный студент Петя создает репозиторий, например по дисциплине «Параллельное программирование», где в первом коммите в ветке master доступен подготовленный проект с минимумом всего необходимого.
Читать дальше →

Многопоточное программирование в Go

Reading time10 min
Views8.8K
Возникла задача: у нас есть компилятор собственного языка программирования, которым мы компилируем некоторый диалект бейсика в исходник на C.

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

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

Несложная задача. Только есть одно «но». Количество исходников, которые планируется использовать как эталонные — около 15 тысяч файлов, суммарным объемом чуть меньше гига (для удобства они завернуты в один TAR). Подобный «прогон» может быть весьма долгим. И есть естественное желание сделать тест максимально быстрым, используя многопроцессорную машину, ибо задача прекрасно распараллеливается.

Как вариант — можно сделать Makefile и запускать его с ключом "-j" в GNU Make. Но если написать специализированную многопоточную программу, то можно достичь лучшей производительности.
Подробности

Отлаживаем ошибки доступа к памяти с помощью Application Verifier

Reading time4 min
Views14K
Хабраюзер burdakovd задал в Q&A задачку про C++, vector и запись в чужую память. Задачка, кроме всего прочего, хороша тем, что на ней можно удобно продемонстрировать, как пользоваться инструментом Application Verifier и находить, кто же портит память.

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

Итак...

Восстановление убитых MBR и таблицы разделов

Reading time4 min
Views441K

0. Intro.


Ситуация следующая. Есть винт на 160Гб. На нем 2 раздела — 40Гб и 120Гб. С целью установки убунты как второй системы была произведена разбивка 120Гб -> 100+10+2+8.

Далее, с целью отката изменений, были объединены диски (10, 2 и 8) обратно в один 20Гб и отформатирован в NTFS. В нагрузку к этому, были проведены операции с MBR, результатом которой явилась ее смерть.

Итоги

1. При загрузке системы выводится сообщение MBR helper not found;
2. fdisk показывает один большой 160Гб диск.

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

Разбираем ThinkPad T410s

Reading time6 min
Views69K
Что произойдет, если залить клавиатуру ноутбука ThinkPad водой? Скорее всего — ничего не произойдет, а в худшем случае, если вместо воды пролить кофе, придется заменить только саму клавиатуру. Lenovo не пытается делать ноутбуки серии ThinkPad пуленепробиваемыми и водонепроницаемыми, иначе вам пришлось бы иметь дело с супердорогими чемоданами весом под 4 кило. Мы просто пытаемся максимально защитить лаптоп от мелких и не очень бытовых неприятностей. В случае более крупных неприятностей, например, если ваш ThinkPad случайно попадет под машину, его конструкция позволит сохранить данные на жестком диске. Ведь как правило они гораздо ценнее, чем сама железка.

С этим ThinkPad T410s случилась как раз большая неприятность: его капитально залили водой. Не так, как я заливал ThinkPad X201 (смотрите видео). Скажем прямо, его уронили в лужу. Корпус внешне никак не пострадал, но вода точно попала внутрь, а клавиатура начала жить своей жизнью. Заменив ее, мы с удивлением обнаружили, что ноутбук работает нормально. Тем не менее, было решено использовать этот ноутбук в качестве подопытного кролика, и подвергнуть его полной разборке. Мы хотели подробнее рассмотреть повреждения, ну и узнать, что же там внутри. Для этого мы обратились специалистам сервисного центра. Фотографии и видео того, что вышло из этой затеи, вы можете посмотреть под катом.

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

Объединение двух локальных сетей с одинаковым номерами сетей на Linux-шлюзе

Reading time5 min
Views45K
При создании локальной сети не каждый администратор подходит с ответственностью к выбору диапазона адресов. А может и не каждый догадывается о наличии частных диапазонов кроме 192.168.0.0/24. И со временем такая бомба замедленного действия может дать о себе знать. Локальные сети объединяются, возникает потребность в коммуникации между хостами разных сетей. И тут выясняется, что номера сетей совпадают. И менять их по каким либо причинам проблематично или невозможно.
Читать дальше →

Решательный колдунщик — нерешительным школьникам

Reading time1 min
Views9.6K

Папа решает, а Вася сдаёт — не наш метод. Но почему бы не помочь старательным, но немного мнительным школьникам. Вот мы и решили помочь — новыми колдунщиками «Решалками».

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

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

Information

Rating
Does not participate
Location
Киев, Киевская обл., Украина
Date of birth
Registered
Activity