Pull to refresh
0
0
bagyr @bagyr

User

Send message

L-Systems — математическая красота растений

Reading time7 min
Views40K
Красота растений привлекала внимание математиков веками. Активнее всего изучались интересные геометрические свойства растений, такие как симметрия листьев относительно центральной оси, радиальная симметрия цветов, и спиральное расположение семечек в шишках. «Красота связана с симметрией» (H. Weyl. Symmetry). Во время роста живых организмов, особенно растений, можно четко видеть регулярно повторяющиеся многоклеточные структуры. В случае составных листьев, например, маленькие листочки, которые являются частью большого взрослого листа, имеют ту же форму, что весь лист имел на раннем этапе формирования.

В 1968г. Венгерский биолог и ботаник Аристид Линденмайер (Aristid Lindenmayer) предложил математическую модель для изучения развития простых многоклеточных организмов, которая позже была расширена и используется для моделирования сложных ветвящихся структур — разнообразных деревьев и цветов. Эта модель получила название Lindenmayer System, или просто L-System.

Для тех, кто в теме и не хочет все читать целиком, проскрольте вниз, есть вопрос.
Дальше интереснее
Total votes 87: ↑85 and ↓2+83
Comments33

NetHack. Об игре

Reading time4 min
Views14K


Многие, уверен, знают эту замечательную игру и убили на нее не одну неделю своей жизни. По моему скромному мнению — это одна из лучших игр из ныне существующих.
Появилась она очень давно — в 1987 году, через семь лет после выхода Roque — прародителя нетхака и основателем жанра "rogue-подобных игр".
Nethack — самый яркий ее представитель.



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



Коротко обо всем по-порядочку.
Total votes 118: ↑107 and ↓11+96
Comments114

Искуственный интеллект, кто же мы?

Reading time4 min
Views5.6K

Введение

Проблема создания искусственного интеллекта активно обсуждается уже последние несколько лет, проводятся эксперименты, задействуются суперкомпьютеры, тратятся достаточные средства на изучение проблемы. В этой статье я не смогу ответить на вопрос, хорошо это или плохо, и что же стоит ожидать от взбунтовавшейся машины, но постараюсь прояснить текущее положение дел.
[Вступление]
Читать дальше →
Total votes 124: ↑104 and ↓20+84
Comments180

Распознавание изображений. Алгоритм Eigenface

Reading time6 min
Views67K

Введение



Я продолжаю серию статей посвящённую тематике pattern recognition, computer vision и machine learning. Сегодня я вам представляю обзор алгоритма, который носит название eigenface.



В основе алгоритма лежит использование фундаментальных статистических характеристик: средних (мат. ожидание) и ковариационной матрицы; использование метода главных компонент. Мы также коснёмся таких понятий линейной алгебры, как собственные значения (eigenvalues) и собственные вектора (eigenvectors) (wiki: ru, eng). И вдобавок, поработаем в многомерном пространстве.
Как бы страшно всё это не звучало, данный алгоритм, пожалуй, является одним из самых простых рассмотренных мною, его реализация не превышает нескольких десятков строк, в тоже время он показывает неплохие результаты в ряде задач.

Мне не страшно.
Total votes 132: ↑127 and ↓5+122
Comments48

Логика английских времен

Reading time6 min
Views71K
Изучавшие или изучающие английский язык знают, каким страшным может казаться множество английских временных форм глаголов.
Всего в английском 12 временных форм. А в русском-то, на первый взгляд, всего 3, и как их связать с английскими, для новичка может быть совершенно не понятно.
Читать дальше →
Total votes 196: ↑173 and ↓23+150
Comments202

Китайский интернет: краткий обзор около-социальных сервисов

Reading time14 min
Views130K


Пост является значительной переработкой статьи The Complete Guide to China’s Major Social Media Networks с моими правками, комментариями и некоторыми иллюстрациями. А ещё добавил правильное русское чтение китайских сервисов.

17 апреля 2014 г. китайский аналог Twitter'а — Sina Weibo – вышел на американскую биржу. Благодаря IPO компания привлекла меньше ожидаемого, однако это, безусловно, большой успех китайских социальных медиа-ресурсов. Поэтому стоит сделать небольшой обзор существующих на сегодняшний день китайских социальных интернет-ресурсов. Разумеется, он не претендует на абсолютною полноту и объективность, поэтому смело пишите свои дополнения и замечания.

Платформы и сервисы, о которых пойдёт речь, имеют как настольный, так и мобильный клиент, если прямо не указано другое.
Так же следует помнить, что многие иностранные ресурсы – такие, как Facebook, Twitter, YouTube, частично Википедия – заблокироавны в КНР, поэтому местные жители пользуются китайскими аналогами, зачастую не зная о существовании оригиналов. Кроме того, везде существуют списки «плохих слов» (в основном плохих политически), ввод которых блокируется, либо активность таких пользователей тщательно отслеживается. Под Китаем, разумеется, будем иметь в виду его материковую часть, не считая Гонконга, Макао и Тайваня, где цензура компартии не работает.

Категории социальных медиа


Существуют разные категоризации социальных сервисов. Здесь мы разберём их так, чтобы провести аналогию с западными сервисами.
Разумеется, каждый сервис, помимо основного функционала, обладает и многими побочными возможностями, поэтом для категоризации сфокусируемся только на основном назначении того или иного сайта\приложения.
Итак...
Total votes 58: ↑51 and ↓7+44
Comments18

Экспорт Избранного на Хабре в PDF

Reading time3 min
Views35K
Доброго времени суток, хабровчане!


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

Закручинился я было… Но OpenSource и Хабр спасли меня!
Краткая суть статьи для тех, кому не интересно много читать
В статье описан доработанный скрипт на Python fav2pdf.
Изначальный автор скрипта vrtx, за что ему большое спасибо.
«Usage — лучше тысячи слов!»
usage: fav2pdf.py [-h] [-d OUTPUT_DIR] [--from-date FROM_DATE]
                  [--to-date TO_DATE] [--all-in-one]
                  [--only-hubs [ONLY_HUBS [ONLY_HUBS ...]]] [--no-comments]
                  [--no-symlinks]
                  user

Tool for save favorite posts from habrahabr.ru in pdf's or html's

positional arguments:
  user                  habrahabr.ru username

optional arguments:
  -h, --help            show this help message and exit
  -d OUTPUT_DIR, --output-dir OUTPUT_DIR
                        Directory for output
  --from-date FROM_DATE
                        From date
  --to-date TO_DATE     To date
  --all-in-one          Save all posts in one PDF-file
  --only-hubs [ONLY_HUBS [ONLY_HUBS ...]]
                        Save only posts from hubs. For multiple: "--only-hubs
                        Hub1 Hub2 --"
  --no-comments         Dont save comments from posts
  --no-symlinks         Dont create symlinks to posts
  --create-html         Create html's instead of pdf's
  --create-url-list     Just save user.txt with all links


И как же они меня спасли?
Total votes 87: ↑86 and ↓1+85
Comments93

Packet crafting как он есть

Reading time14 min
Views114K


Создание пакетов или packet crafting — это техника, которая позволяет сетевым инженерам или пентестерам исследовать сети, проверять правила фаерволлов и находить уязвимые места.
Делается это обычно вручную, отправляя пакеты на различные устройства в сети.
В качестве цели может быть брандмауэр, системы обнаружения вторжений (IDS), маршрутизаторы и любые другие участники сети.
Создание пакетов вручную не означает, что нужно писать код на каком-либо высокоуровневом языке программирования, можно воспользоваться готовым инструментом, например, Scapy.

Scapy — это один из лучших, если не самый лучший, инструмент для создания пакетов вручную.
Утилита написана с использованием языка Python, автором является Philippe Biondi.
Возможности утилиты практически безграничны — это и сборка пакетов с последующей отправкой их в сеть, и захват пакетов, и чтение их из сохраненного ранее дампа, и исследование сети, и многое другое.
Всё это можно делать как в интерактивном режиме, так и создавая скрипты.
С помощью Scapy можно проводить сканирование, трассировку, исследования, атаки и обнаружение хостов в сети.
Scapy предоставляет среду или даже фреймворк, чем-то похожий на Wireshark, только без красивой графической оболочки.
Утилита разрабатывается под UNIX-подобные операционные системы, но тем не менее, некоторым удается запустить ее и в среде Windows.
Эта утилита так же может взаимодействовать и с другими программами: для наглядного декодирования пакетов можно подключать тот же Wireshark, для рисования графиков — GnuPlot и Vpython.
Для работы потребуется права суперпользователя (root, UID 0), так как это достаточно низкоуровневая утилита и работает напрямую с сетевой картой.
И что важно, для работы с этой утилитой не потребуются глубокие знания программирования на Python.
Читать дальше →
Total votes 91: ↑91 and ↓0+91
Comments11

Поверхностно об основах рыночной архитектуры и алготрейдинге

Reading time37 min
Views105K
Многие знают, что одно из первых, что говорят в техническом ВУЗе — забыть все, что проходили в школе. Данная рекомендация актуальна и здесь. Полезно иногда с чистого листа начать.

На данный момент все рынки автоматизированы. По этой причине какие-то экономические объяснения ценообразования являются некими рудиментами. Рулят алгоритмы + некое ручное вмешательство.

Задача каждого торгового алгоритма всегда одна и та же — принести денег владельцу. Алгоритм тем лучше, чем больше денег он в состоянии принести.
Читать дальше →
Total votes 83: ↑72 and ↓11+61
Comments74

Переводим ActionBar на следующий уровень

Reading time9 min
Views37K
Еще в ноябре 2012 года, я написал сообщение в блоге озаглавленное как "ActionBar в движении". Эта статья в основном касалась методики того, как красиво и уникально оживить ваш ActionBar . Хотя я упомянул некоторые из возможностей применения данного эффекта, я никогда не имел времени, чтобы добавить данный вид анимации ActionBar к какому-либо из моих собственных приложений. Но я видел в Play Store приложение использовавшее его.

Будучи на Google I/O, я наконец нашел приложение, использующее в ActionBar технику анимации. Давайте будем честными, это буквально взорвало мой взгляд когда я в первый раз это увидел. Я влюбился в хороший, тонкий и чрезвычайно полезный анимационный эффект, и, вероятно, даже больше, чем в само приложение! Я уверен, вы знаете приложение о котором я говорю, так как оно было представлено во время Google I/O. Это приложение Play Music!

Последнее обновление Play Music (v5.0) претерпело полный редизайн и внешний вид страниц с описанием исполнителя и альбома. Если вы откроете такую страницу, то вы заметите, что ActionBar изначально невидим и наслаивается на большое изображение, описывающее исполнителя или альбом. Но как только вы начинаете прокручивать страницу вниз (если это возможно), то ActionBar постепенно проявляется. ActionBar оказывается полностью непрозрачным, когда изображение становится прокрученным за экран.
Читать далее
Total votes 30: ↑26 and ↓4+22
Comments6

Руководство по магическим методам в Питоне

Reading time28 min
Views576K
Это перевод 1.17 версии руководства от Rafe Kettler.


Содержание


  1. Вступление
  2. Конструирование и инициализация
  3. Переопределение операторов на произвольных классах
  4. Представление своих классов
  5. Контроль доступа к атрибутам
  6. Создание произвольных последовательностей
  7. Отражение
  8. Вызываемые объекты
  9. Менеджеры контекста
  10. Абстрактные базовые классы
  11. Построение дескрипторов
  12. Копирование
  13. Использование модуля pickle на своих объектах
  14. Заключение
  15. Приложение 1: Как вызывать магические методы
  16. Приложение 2: Изменения в Питоне 3


Вступление


Что такое магические методы? Они всё в объектно-ориентированном Питоне. Это специальные методы, с помощью которых вы можете добавить в ваши классы «магию». Они всегда обрамлены двумя нижними подчеркиваниями (например, __init__ или __lt__). Ещё, они не так хорошо документированны, как хотелось бы. Все магические методы описаны в документации, но весьма беспорядочно и почти безо всякой организации. Поэтому, чтобы исправить то, что я воспринимаю как недостаток документации Питона, я собираюсь предоставить больше информации о магических методах, написанной на понятном языке и обильно снабжённой примерами. Надеюсь, это руководство вам понравится. Используйте его как обучающий материал, памятку или полное описание. Я просто постарался как можно понятнее описать магические методы.
Читать дальше
Total votes 143: ↑139 and ↓4+135
Comments59

Основы верстки для нативных андроид приложений

Reading time9 min
Views150K
В этом посте будут рассмотрены вопросы верстки при создании нативных приложений для android. Той верстки, которая описывается в xml файлах из директории res/layout/ Итак начнем:
Существует пять стандартных типов верстки:
  • AbsoluteLayout
  • FrameLayout
  • LinearLayout
  • RelativeLayout
  • TableLayout

Дальше
Total votes 59: ↑45 and ↓14+31
Comments26

Захват видео с камеры и передача его по сети

Reading time2 min
Views48K

Предисловие


Не так давно, возникла необходимость захвата видео с web камеры и передавать его по сети используя .Net.
Так как с подобной задачей я столкнулся впервые, то первым делом начал искать информацию по этому вопросу.
Как выяснилось, что в чистом .Net нет поддержки работы с web камерами. Перебрав несколько различных библиотек, свой выбор остановил на Aforge.net.

Aforge.net — это фреймворк для решения целого ряда задач, из которого нам понадобится библиотеки AForge.Video.

Захват изображения


Для захвата видео с устройства видео ввода существует класс AForge.Video.DirectShow.VideoCaptureDevice. Ему необходимо задать моникер устройства с которого будет происходить захват. Так же необходимо задать обработчик события NewFrame. Это событие возникает каждый раз, когда с устройства будет получен новый кадр, который и передается в обработчик в виде объекта Bitmap, где его уже можно обработать:
private void VideoSourceNewFrame(object sender, AForge.Video.NewFrameEventArgs eventArgs)
{
    var img = (Image) eventArgs.Frame;
    using (var ms=new MemoryStream())
    {
        img.Save(ms,ImageFormat.Jpeg);
       //Сохраняем изображение в массив байт, для последующего формирования mjpeg
        _bufImage = ms.ToArray();
    }
}

Читать дальше →
Total votes 24: ↑19 and ↓5+14
Comments8

Создание нестандартного компонента с нуля. Часть 2

Reading time10 min
Views21K

Вступление



Вновь приветствую, коллеги.

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



В этой статье под катом мы продолжим накручивать свистелки и... дополнительные возможности нашей клавиатуре. На повестке дня:

  1. Сохранение состояния компонента при повороте экрана
  2. добавление подсветки при оверскролле
  3. передача параметров в XML
  4. Мультитач зуммирование
Читать дальше →
Total votes 53: ↑51 and ↓2+49
Comments9

pymorphy2

Reading time16 min
Views81K
В далеком 2009 году на хабре уже была статья "Кузявые ли бутявки.." про pymorphy — морфологический анализатор для русского языка на Python (штуковину, которая умеет склонять слова, сообщать информацию о части речи, падеже и т.д.)

В 2012м я начал потихоньку делать pymorphy2 (github, bitbucket) — думаю, самое время представить эту библиотеку тут: pymorphy2 может работать в сотни раз быстрее, чем pymorphy (втч без использования C/C++ расширений) и при этом требовать меньше памяти; там лучше словари, лучше качество разбора, лучше поддержка буквы ё, проще установка и более «честный» API. Из негатива — не все возможности pymorphy сейчас реализованы в pymorphy2.

Эта статья о том, как pymorphy2 создавался (иногда с довольно скучными техническими подробностями), и сколько глупостей я при этом наделал; если хочется просто все попробовать, то можно почитать документацию.

Читать дальше →
Total votes 103: ↑100 and ↓3+97
Comments44

Два простых правила для предотвращения взаимных блокировок на мьютексах

Reading time6 min
Views57K
Здравствуйте, уважаемые Хабраюзеры!

Так сложилось, что это третий пост в блоге нашей компании, и, как и первые два, он посвящен вопросам многопоточного программирования и проблемам, которые при этом возникают. Получилось так неслучайно, ведь мы на собственной «шкуре» испытали, что ситуации, возникающие при написании многопоточных программ, невероятно сложны для отладки, так как во многом определяются динамикой работы программы на конкретной аппаратной платформе. Уверен, что большинство программистов сталкивались с ситуацией, когда программа, которая прекрасно работает на одном компьютере, на другом совершенно неожиданно начинает дедлочиться практически «на ровном месте».
Читать дальше →
Total votes 82: ↑73 and ↓9+64
Comments50

ASP.NET MVC. Урок 0. Вступление

Reading time2 min
Views782K
Я пишу сайты на asp.net mvc. В этих 16 главах я хочу рассказать, как я это делаю. Это некий учебник-справочник всех тех знаний, которые я накопил в течение трех лет.

Почему именно asp.net mvc

ASP.NET MVC я люблю потому что:
  • Это .net. Я знаю .net и С#.
  • Это компилируемый код.
  • Это не ASP.NET WebForms, я работаю с html-кодом.
  • Используется MVC-паттерн.
  • Visual Studio – самое популярное средство разработки, в котором есть IntelliSense.
  • Отличные инструменты отладки.


Читать дальше →
Total votes 290: ↑215 and ↓75+140
Comments67

О компиляторах и интерпретаторах

Reading time2 min
Views68K

Если ты всегда мечтал написать свой язык программирования — добро пожаловать. Здесь ты наверняка найдёшь для себя что-нибудь интересное.

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

Пишет yawnt следующее:

С каждым днём мне всё интереснее тема компиляторов, интерпретаторов и дизайна языков программирования в целом. И я решил поделиться с народом ссылками на собранные мной материалы (большую часть мне самому ещё предстоит прочитать :<). Надеюсь, кому-нибудь они окажутся полезными.

Я не включил (и не собираюсь) в список ссылки на официальную документацию, т. к. считаю очевидным, что первым делом следует смотреть именно туда ;P.
Итак, куча интересных ссылок
Total votes 116: ↑109 and ↓7+102
Comments55

Формула белогривых лошадок: perlin noise в картинках

Reading time3 min
Views17K


Наверняка всякий, кто встречался с «перлиновым шумом» (perlin noise), пробовал генерить текстуру облаков.
Потомучто оно само напрашивается.

О шуме Перлина на хабре уже была статья, но в ней очень мало картинок.

мегабайты монохромных картинок под катом!
Total votes 35: ↑34 and ↓1+33
Comments11

Делаем простую игру с кнопками, ящиками и дверями на Unity

Reading time14 min
Views162K


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

Для самых нетерпеливых по ссылкам ниже находится готовый прототип.
Онлайн версия
Скомпилированная версия для Windows [Зеркало] ~7.5 МБ

Что мы собираемся делать? Двумерную головоломку с колобком в роли главного героя, который может двигать ящики, которые могут нажимать кнопки, которые могут открывать двери, за которыми скрывается выход из уровня, который построил я. Или вы, у нас же здесь туториал как-никак.

Подразумевается, что вы уже успели скачать Unity и поигрались немного в редакторе. Нет? Сейчас самое время, я подожду.
Читать дальше →
Total votes 96: ↑89 and ↓7+82
Comments32

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity