Pull to refresh
6
0
Denys Medvid @BuCeFaL

software engineer

Send message

ChucK — программируем звук

Reading time5 min
Views14K
Языков программирования существует великое множество: от мейнстримовых до эзотерических, от учебных до узкоспециализированных. И если с мейнстримом знакомы так или иначе многие из нас (хотя бы на уровне школьного бейсика), то языки программирования, предназначенные для выполнения специальных задач, остаются для многих тайной покрытой мраком. Давайте немного приоткроем занавес и посмотрим, пусть одним глазком, мир программирования… музыки!

Итак, наш сегодняшний гость ChucK, придуманный Пери Куком (Perry Cook) и Ги Вонгом (Ge Wang) из университета Принстон в 2003 году, последняя версия вышла в 2009 году.
ChucK — один из языков программирования, предназначенный для написания музыки, синтеза звука в реальном времени и организации взаимодействия различной специализированной периферии.

Читать дальше →
Total votes 50: ↑48 and ↓2+46
Comments15

Распознавание рукописных математических выражений

Reading time7 min
Views22K
Здравствуй, Хабр!

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




Читать дальше →
Total votes 237: ↑232 and ↓5+227
Comments77

Я.Субботник по разработке интерфейсов в Киеве

Reading time1 min
Views1.3K

28 мая 2011 года в Киеве пройдет третий по счету Я.Субботник в Украине. Мы приглашаем в гости всех, кому интересно поговорить о разработке интерфейсов и обсудить эту тему с ведущими специалистами Яндекса.

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

Начало регистрации в 10:00
Начало Я.Субботника в 11:00

Участие в Субботнике, как всегда, бесплатное. Но зарегистрироваться необходимо.

Более подробную информацию и программму мероприятия вы сможете найти здесь.

Наталия Федорищева, группа конференций и внешних мероприятий

.
Total votes 19: ↑18 and ↓1+17
Comments1

Цветной man или как разукрасить вывод echo

Reading time8 min
Views108K
Когда пишешь даже минимальный скриптик, часто используешь echo — подсказки.
Согласитесь "цветной man" ведь намного приятнее читать, так почему бы не раскрасить вывод echo?
это достаточно легко.
Итак…

Задача:
Раскрасить текстовую строку выводимую на экран через команду echo
т.е. раскрасить эти самые подсказки
Читать дальше →
Total votes 66: ↑56 and ↓10+46
Comments34

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

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

Особенности синхронизации в Android-приложении

Reading time5 min
Views12K
image

При разработке многих Android-приложений требуется организовать процесс синхронизации данных с данными на сервере. Есть два основных способа как данную синхронизацию можно реализовать.
Первый способ — классический (наиболее популярный и наиболее простой) — с помощью AlarmManager и Service. Например, как описано в этой статье.
Второй способ — «правильный» (но пока что, видимо, редко кем используемый) — с помощью SyncAdapter.

Разрабатывая своё приложение, изначально я попытался реализовать «правильный» (т.е. второй способ).
Читать дальше →
Total votes 56: ↑50 and ↓6+44
Comments24

Магия шаблонов или вычисление факториала на стадии компиляции

Reading time2 min
Views16K
Доброго времени суток, Хабралюди!

Гуру C++, а также люди смыслящие в шаблонном метапрограммировании могут смело пропускать этот топик, ничего нового для себя они здесь не найдут. Однако, если после прочтения заголовка, у вас в голове еще не возникло решение данной задачи (и даже если оно возникло, но не при помощи шаблонов), то милости просим под кат.
Читать дальше →
Total votes 70: ↑48 and ↓22+26
Comments64

Потоко-безопасная ленивая инициализация в C++

Reading time9 min
Views13K
Реймонд Чен написал занятную серию блогпостов о беззамочной синхронизации. Мне бы хотелось опубликовать эти заметки и для хаброчитателей. Данный пост — введение в серию, скомпилированное из трёх старых постов Чена.
  1. Ленивая инициализация встроенными средствами C++
  2. Беззамочная синхронизация
  3. Беззамочная потоко-безопасная ленивая инициализация


Ленивая инициализация встроенными средствами C++


Инициализация статических локальных переменных в C++ непотокобезопасна, причём намеренно!

Спецификацией установлено, что статические локальные переменные (в отличие от глобальных) инициализируются при первом выполнении блока кода, в котором они объявлены.

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

int ComputeSomething()
{
  static int cachedResult = ComputeSomethingSlowly();
  return cachedResult;
}

(Примерно такой код советуют в популярном C++ FAQ, чтобы не зависеть от выбранного компилятором порядка инициализации глобальных статических переменных.)
Читать дальше →
Total votes 55: ↑49 and ↓6+43
Comments21

Виртуальные функции и деструктор

Reading time6 min
Views168K
Когда-то давным давно я собирался и даже обещал написать про механизм виртуальных функций относительно деструкторов. Теперь у меня наконец появилось свободное время и я решил воплотить эту затею в жизнь. На самом деле эта мини-статья служит «прологом» к моей следующей статье. Но я постарался изложить доходчиво и понятно основные моменты по текущей теме. Если вы чувствуете, что еще недостаточно разобрались в механизме виртуальных вызовов, то, возможно, вам следует для начала прочитать мою предыдущую статью.

Сразу же, как обычно, оговорюсь, что: 1) статья моя не претендует на полноту изложения материала; 2) мегапрограммеры ничего нового здесь не узнают; 3) материал не новый и давно описан во многих книгах, но если явно об этом не прочитать и самому специально не задумываться, то можно о некоторых моментах даже не подозревать (до поры, до времени). Также прошу прощения за надуманные примеры :)

Все-таки интересно?
Total votes 48: ↑40 and ↓8+32
Comments66

Что почитать, чтобы повысить свой уровень JavaScript

Reading time3 min
Views98K
От переводчика: Я думаю многие читали статью Rey Bango — What to Read to Get Up to Speed in JavaScript, но до хабра обсуждение так и не докатилось. Предлагаю закрыть этот пробел и поговорить о хороших книгах, блогах, тренингах и конференциях, посвященных в первую очередь клиентскому JavaScript и клиентской веб-разработке. Чтобы не копипастить оформляю статью в виде перевода.

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

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

Не заставляю вас читать все книги, которые предложены ниже. Эти книги я читал на протяжении многих лет и почерпнул в каждой много полезного. Я их распределяю по категориям, чтобы вам было проще работать с ними. Выберите книги, которые подходят вам.
Читать дальше →
Total votes 165: ↑161 and ↓4+157
Comments31

DevPoint: Selenium в тестировании веб-приложений

Reading time7 min
Views45K
Что делать когда:
  • Достался хард-кодный проект непокрытый тестами;
  • код желает лучшего, а времени на рефакторинг нет;
  • внесение правок в одном месте нарушает работу логики в другом;
  • для покрытия *Unit тестами, проще переписать проект;
  • бизнес логика размыта по коду и даже по шаблонам.

Забить и оправдываться, что такой код не должен жить?

С такими ситуациями очень часто сталкивался и меня это не устраивало. При поиске подходящего метода/инструмента тестирования я наткнулся на Selenium. И применяю его уже более 3-х лет.

В Киеве 9-го апреля прошла конференция DevPoint, посвященная web — разработке. Организатором данного мероприятия была компания Uniweb. В рамках ее, решил поделиться впечатлением про Selenium.
Читать дальше →
Total votes 29: ↑27 and ↓2+25
Comments3

DevPoint.com.ua — Итоги проведения конференции

Reading time1 min
Views1.2K
Итак, первая конференция DevPoint.com.ua состоялась!

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

Как мы и обещали, ссылки на презентации:

Презентация по Selenium будет опубликована 18.04.2011 отдельной записью, с развернутым изложением материала и видео.

Все свои пожелания и замечания, вы можете оставить в комментариях. Критикуя, не забывайте, что данное мероприятие сознательно планировалось как бюджетное, и мы умышленно позволили большинству участников принять участие в конференции по себестоимости аренды зала — 84 грн с человека.
Total votes 4: ↑4 and ↓0+4
Comments5

Команда dd и все, что с ней связано

Reading time4 min
Views601K

В UNIX системах есть одна очень древняя команда, которая называется dd. Она предназначена для того, чтобы что-то куда-то копировать побайтово. На первый взгляд — ничего выдающегося, но если рассмотреть все возможности этого универсального инструмента, то можно выполнять довольно сложные операции без привлечения дополнительного ПО, например: выполнять резервную копию MBR, создавать дампы данных с различных накопителей, зеркалировать носители информации, восстанавливать из резервной копии данные на носители и многое другое, а, при совмещении возможностей dd и поддержке криптографических алгоритмов ядра Linux, можно даже создавать зашифрованные файлы, содержащие в себе целую файловую систему.
Опять же, в заметке я опишу самые часто используемые примеры использования команды, которые очень облегчают работу в UNIX системах.
Читать дальше →
Total votes 323: ↑315 and ↓8+307
Comments119

Разбираем по кусочкам lincrackme3

Reading time3 min
Views3.2K
В отличие от Windows среда Linux не может похвастаться большим количеством разных трюков против отладки. Opensource и всё такое сыграли свою долю в этом. Среди дебаггеров
есть  gdb, но он очень легко обнаруживается простейшими техниками анти-отладки.

Соответственно не много известно протекторов способных сильно затруднить отладку бинарника, среди них можно вспомнить разве что 'shiva', но она уже давно «умерла».

Игрушкой сегодня для нас будет служить программка lincrackme3 с crackmes.de, она – не сложна и при этом,  в ней имеется несколько анти-отладочных трюков. Мы будем использовать  только дисассемблер – никаких отладчиков, ltracer-ов и тем более патчинга бинарника. Дисассемблером будет служить IDAPro 5.5.
Читать дальше →
Total votes 56: ↑51 and ↓5+46
Comments29

Задача нахождения максимума на отрезках фиксированной длины

Reading time3 min
Views37K

Постановка задачи


Пусть дан массив A длины N, и дано число K ≤ N. Требуется найти максимум (минимум, сумма ...) в подотрезках длины K данного массива. Это частный случай задачи RMQ (Range Minimum Query — минимум на отрезке), но с дополнительными ограничениями — постоянная длина отрезка поиска. В данном решении задача не предполагает возможность изменения элементов массива.
Читать дальше →
Total votes 54: ↑46 and ↓8+38
Comments3

Атака на отказ в обслуживании методом slow HTTP POST

Reading time5 min
Views41K
Доброго времени суток, уважаемые хабровчане!
Я хочу рассказать вам об относительно новом и интересном, на мой взгляд, механизме атаки на отказ в обслуживании — Slow HTTP POST.
Поиск показал отсутствие на хабре информации по теме, что несколько удивило меня, и я решил восполнить это досадное упущение. Тема не нова, но, как показали мои небольшие исследования, более чем актуальна. Забегая вперед, скажу, что полученные мной результаты позволяют говорить о существовании широко доступной технологии, позволяющей с одного компьютера с небольшим каналом «укладывать» небольшие и средние сайты, а при использовании нескольких машин с повсеместно распространенным сейчас скоростным доступом в Интернет причинить немало проблем и более серьезным проектам. Всех заинтересовавшихся покорнейше прошу пожаловать под хабракат.
Читать дальше →
Total votes 205: ↑194 and ↓11+183
Comments98

Сервер из образа: DHCP + TFTP + Initrd + OpenVZ

Reading time6 min
Views7.1K
Приветствую. Нередко в крупных проектах используются довольно большие наборы одинаковых серверов, имеющих одинаковую программную конфигурацию(читай — корень). И нередко у администраторов этих машин возникает необходимость поддерживать их в симметричном состоянии — одинаковые наборы пакетов, конфигов, и т.д. и т.п. В качестве одного из решений этой проблемы предлагается загрузка таких машин по сети, дабы они имели общий корень и держали его в RAM, а хранимые данные(например /var/www для веб-серверов) держали на жестких дисках, монтируемых после загрузки. Об этом и поговорим.
Читать дальше →
Total votes 57: ↑52 and ↓5+47
Comments6

Information

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

Specialization

Fullstack Developer, Software Architect
Senior
PHP
Symfony
Git
Python
OOP