Pull to refresh
4
0
Алексей Ефремов @Jofr

User

Send message

стерео-тетрис

Reading time1 min
Views1.1K
Технология SIRDS (Single Image Random Dot Stereograms) — это способ создания изображений, которые выглядят рельефными при разглядывании с фокусированием взгляда за плоскостью изображения.
Тысячи их можно найти в сети.
Можно даже найти анимированные.

Так вот, а это — стереотетрис.

P.S.
возможно, будет проще, если поставить монитор поближе.
P.P.S.
и мышку отодвинуть.

P.S. 2
zlogic нашёл ещё и sird-версию quake.
но это уже полный фейерверк! :)
Total votes 45: ↑39 and ↓6+33
Comments78

Робот USB-накопитель

Reading time1 min
Views848
image

Мы не раз встречали usb-накопители, выполненные в виде роботов, но этот особенно забавный. Выполненный в ретро-стиле, в хроме, ваш новый приятель будет хранить до 4Гб данных. 75мм высотой, изящное устройство может также служить брелком для ключей, и продается за 25$.
еще картинка
Total votes 29: ↑24 and ↓5+19
Comments28

Как компьютеры играют в шахматы

Reading time4 min
Views28K
Интереснейшую реализацию шахматной программы показали вчера на Хабре.
Почитав комментарии, я пришел к выводу, что принцип работы наиболее распространенных алгоритмов игры в шахматы, шашки и тому подобные известны не всем.

Вместе с тем задача создания программы, играющей во что-то, достаточно тривиальна, если имеются способы расчета некоторых величин и оценок, специфичных именно для этой игры.
Читать дальше →
Total votes 112: ↑109 and ↓3+106
Comments57

Code Like a Pythonista: Idiomatic Python (part0)

Reading time12 min
Views28K
Kaa, the Python
От переводчика:

Я только начал изучать Python. С самого первого знакомства язык порадовал симпатичными конструкциями и синтаксически-гарантированной удобностью к чтению и пониманию кода.
В процессе освоения, при написании своего кода, бывает, сомневаюсь в правильности выбранных способов с точки зрения Python-way ( PEP 8 — Style Guide for Python Code, если угодно). Для вникания в идеологию программирования, в Python-сообществе кроме исчерпывающей документации, ко всеобщей радости, накоплено уже немало вспомогательных материалов, таких как статья Python Tips, Tricks, and Hacks, перевод которой недавно появился на Хабре
Мне понравилась статья Дэвида Гуджера «Пиши код, как настоящий Питонист: идиоматика Python» (David Goodger «Code Like a Pythonista: Idiomatic Python»). Для лучшего её усвоения решил оформить (в силу умения) полноценный перевод, потом показалось здравой идеей поделиться с Хабром.
Пока работал над переводом, пришло понимание, что статья существенно больше, чем показалась при прочтении ее в оригинале, поэтому постить буду частями, чтобы не выпасть из формата Хабра-статьи.
Продолжение и окончание перевода.

are you ready?
Total votes 67: ↑50 and ↓17+33
Comments30

Video rip. Часть 3. Сжимаем и запаковываем

Reading time3 min
Views35K

Содержание


  1. Подготовка DVD
    1. vStrip
    2. DGMPGDec

  2. Обработка видео
    1. Что такое interlace и с чем его едят
    2. Как определить что у нас: progressive, interlaced или telecined?
    3. Избавление от обычной чересстрочности (deinterlace)
    4. IVTC

  3. Сжимаем и запаковываем


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

image

Сегодня мы узнаем как лучше всего сжимать, в какой формат, какой контейнер использовать и какими утилитами. Эта часть будет самой простой и в какой-то мере общеобразовательной.
Читать дальше →
Total votes 41: ↑34 and ↓7+27
Comments51

Python Tips, Tricks, and Hacks (часть 3)

Reading time6 min
Views49K
В этой части статьи рассматриваются уловки для выбора одного из двух значений на основе логического условия, передача и получение произвольного числа аргументов функций, а также распространенный источник ошибок — тот факт, что дефолтные значения аргументов функции вычисляются только один раз.
Читать дальше →
Total votes 67: ↑63 and ↓4+59
Comments48

Из мухи в слона

Reading time1 min
Views3.8K
Казалось бы, картинка как картинка — каждый день в интернете можно встретить сотни подобных… и, наверное, мало кто задумывается над тем, а как же появляются на свет финальный результат.

image
Читать дальше →
Total votes 212: ↑170 and ↓42+128
Comments77

Практика внедрения PHPunit

Reading time7 min
Views8.7K
Уже достаточно сказано о пользе автоматизированного тестирования (например, тут и тут), но до сих пор многие так и не пишут тестов. Одна из причин, как мне кажется, в том что предлагаемые способы автоматизации тестирования сложнее чем необходимо для большинства случаев. Сегодня я хочу рассказать о том как это сделано у нас.

Читать дальше
Total votes 14: ↑10 and ↓4+6
Comments5

5 способов, которыми игры пытаются вызвать зависимость

Reading time10 min
Views189K
Итак, в новостях снова пишут, что кто-то еще умер из-за игромании. Да, опять Корея.

Какого ...? послушайте, я не пытаюсь доказать что видео игры — это героин. Я полностью понимаю, что в данном случае у жертвы было много проблем в жизни. Но, половина из вас знает что World of Warcraft затягивает и что доктора считают игровую зависимость серьёзной проблемой. А вопрос вот в чем: может быть какие-то игры намеренно разрабатывались, чтобы заставлять вас играть в них, даже если вы не получаете от этого удовольствия?
Давайте посмотрим как это работает
Total votes 320: ↑295 and ↓25+270
Comments250

Пособие для начинающих в Blender 2.5

Reading time1 min
Views21K

Закончил перевод английского перевода пособия «Getting Started with Blender 2.5» в оригинале написанного итальянцем Joaclint Istgud.

Пособие отлично подойдет для интересующихся 3D и тех кто уже работает в Blender 2.49 и хотел бы начать переход на ветку 2.5.

Пособие изобилует иллюстрациями, объяснениями и подсказками.

On-Line версию перевода можно найти на сайте проекта b3d.mezon.ru.

P.s.
Ну и конечно же не забываем про книгу «Blender Basics 3-е издание»! :)
Total votes 76: ↑66 and ↓10+56
Comments34

Немного про py2exe

Reading time4 min
Views127K
Есть такое приложение. Называется py2exe. Оно позволяет упаковать, сконвертировать программу на python в exe файл (ну, точнее, exe и еще кучку других). Зачем оно все надо? Ну, далеко не у всех пользователей windows установлен интерпретатор python с нужными библиотеками. А вот упакованная программа в идеале должна запуститься на любой windows-машине.
Читать дальше
Total votes 54: ↑48 and ↓6+42
Comments35

Практическое использование Boost.Spirit

Reading time7 min
Views33K
Я заметил, у разработчиков совершенно полярное отношение к библиотеке Boost.Spirit: либо она им жутко не нравится, либо они фанатеют от нее. Конечно, описывать грамматику на C++ – занятие на любителя. Таким любителем оказался и я, когда познакомился со Спиритом. Хочу показать, как с помощью Спирита можно довольно просто решать повседневные задачи разбора текста.

Простая задача – как два пальца


На Спирите очень удобно писать маленькие парсеры «не отходя от кассы» – прямо в C++ коде. Вот например, как вы поступите если нужно распарсить строку вида «число-число», которая задает диапазон страниц для печати? На Спирите – одна строчка:

bool ok = parse(First, Last, (uint_ >> L"-" >> uint_), MinMax) && (First == Last);


Посложнее…


Более того – можно ненамного сложнее создавать и парсеры побольше. В качестве примера рассмотрю парсер мини-языка, который я делал для API Яндекс.Бара. Задача была такова: для облегчения загрузки плагинов в баре используется XML, который довольно избыточный сам по себе. Но зато XML легче грузить из JavaScript-а, чем парсить произвольный формат (на JS пишутся расширения под FireFox, в том числе и Я.Бар).

Итак, что мне было нужно – имея на входе обычную инфиксную нотацию:
Читать дальше →
Total votes 53: ↑48 and ↓5+43
Comments31

Пишем игру Реверси на Python + PyQt4

Reading time6 min
Views16K
Задали нам как-то написать небольшой проект — игру Реверси.
А так как сейчас я изучаю Python, решил писать на нем. Вместе с графической библиотекой PyQt4.
Ну так за чем же дело встало? Создаем SVN и вперед! (Переехали на Github)

Вот такое чудо у меня получилось:
Скриншот игры
Читать дальше
Total votes 73: ↑68 and ↓5+63
Comments35

Test Infected

Reading time5 min
Views4.6K

Все, все будут писать тесты


Уже 3 года прошло, с тех пор как я увидел свою первую красную полоску. Что меня дернуло начать писать тесты, уже не важно. Я начал собирать информацию, перечитал весь wiki.agiledev.ru и торжественно запустил свой первый тест на SimpleTest. Конечно, эти тесты были ужасны, да и архитектура тоже (в моем сегодняшнем понимании). Тогда я, наверное, словил большинство ошибок, но зато замечательно провел время :)

Потом перешел на PHPUnit — просто было интересно, чем он отличается от SimpleTest и что в нем такого «навороченного».
А lime — гадость. Чего ребята из Symfony в него так вцепились? Понимаю ветка 1.*, наследие и все такое. Но 2.0 можно было бы и на PHPUnit начинать.
Да, мне это было интересно. Я активно писал тесты, даже честно пытался делать это перед тем, как писать код. Что-то не получалось, читал разные статьи на тему, как надо и не надо писать тесты, перечитывал wiki.agiledev.ru. Но внутри явно чего-то не хватало.
Читать дальше →
Total votes 65: ↑55 and ↓10+45
Comments40

Что такое генетический алгоритм?

Reading time1 min
Views24K
В рамках проекта Computer Science Student сегодня я постараюсь дать короткое наглядное объяснение: что такое генетический алгоритм? В самой простой и общей формулировке для решения самой простой задачи. Исходные коды решения (код не самый качественный, потому что писался на скорую руку; но код и не важен в этом курсе) и текст самих заданий доступен на CS-Student Wiki.

Первая часть


Вторая часть — под катом.
Читать дальше →
Total votes 104: ↑86 and ↓18+68
Comments100

Дуэт OGRE 3D и SDL

Reading time7 min
Views8K
В последнее время тут стали появляться статьи, связанные с движком OGRE, в т.ч. и пост по созданию простейшей программы, поэтому я решил не откладывать дело в долгий ящик и написать эту статью. Когда-то не так давно я уже писал небольшой поверхностный обзор библиотеки SDL, и здесь, в качестве продолжения, приведу конкретный пример использования этой библиотеки, а именно — как заставить её работать вместе с движком.
Немало текста и много кода
Total votes 33: ↑31 and ↓2+29
Comments15

А ты сделал бэкап?

Reading time4 min
Views16K
Доброго времени суток %habrauser%!

Как известно backup — must be! Но просто сделать архив данных — это еще не значит грамотный бэкап. Когда у наших клиентов начали появляться сервера на базе Calculate directory server встал вопрос о выборе средств для создания резервных копий данных. Поиск готовых решений ничего толкового не дал, поэтому пришлось писать самим.
Backup - это легко
Total votes 44: ↑33 and ↓11+22
Comments73

TDD для начинающих. Ответы на популярные вопросы

Reading time8 min
Views51K
Исходники проекта написанного с помощью TDD. Visual Studio 2008/C#
Для написания тестов использована библиотека xUnit, для создания mock-объектов – Moq.




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

Мне задают много вопросов про TDD. Из этих вопрсов я выбрал ключевые и написал на них ответы. Сами вопросы вы можете найти в тексте, они выделены курсивом.
Читать дальше →
Total votes 48: ↑38 and ↓10+28
Comments65

Боремся с утечками памяти (C++ CRT)

Reading time6 min
Views62K
Утечка памяти — довольно серьезная и опасная проблема. Быть может, пользователь и не заметит однократной утечки каких-нибудь 32Кб памяти (а ведь это целые 5% от 640Кб, которых «хватит всем»), но постоянно теряя сложные иерархические структуры или массивы размером больше INT_MAX (которые мы так любим создавать на 64-битной архитектуре) мы обречем его на страдания, а наш продукт на провал.

Не допускать ситуации вроде бы и не трудно — воспользуемся правилом «класть на место всё что взяли», но на практике это сильно осложняется человеческим фактором (банальная невнимательность), хитростью архитектуры и нелинейным порядком выполнения операторов, например, из-за применения исключений.

А можно было бы просто «отдаться» автоматическому сборщику мусора, ценой потери производительности (и это не обязательно Managed C++, для Native C++ / C есть библиотеки сборки мусора, вот, например).

Но мы поговорим о ситуации когда уже «всё плохо».
Читать дальше →
Total votes 51: ↑41 and ↓10+31
Comments45

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity