Search
Write a publication
Pull to refresh
105
0
Рей @printf

Девочка-волшебница

Send message

Молнии

Reading time4 min
Views42K


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

По крайней мере, таков план.

Но как же именно вам, как разработчику игры, отрендерить такой эффект?
Читать дальше →

Zetes: Java с мультиплатформенным GUI, но без Oracle JVM

Reading time26 min
Views33K
image

Аннотация


В статье описывается фреймворк, позволяющий создавать графические кроссплатформенные приложения, написанные на языке Java, но при этом абсолютно не зависящие ни от Oracle JRE, ни от OpenJDK. Основная идеология фреймворка — по возможности снять с разработчика заботы об обеспечении «родного» look and feel для приложения под каждой операционной системой.

Фактически, на выходе вы получите исполняемый файл, опирающийся только на системные API, на котором нигде не будет клейма «написано на Java».

Все компоненты фреймворка имеют либеральные лицензии (BSD либо Apache), что позволяет использовать их в любых (в том числе, коммерческих) разработках.

Фреймворк находится в стадии публичной alpha-версии, что означает некоторую его работоспособность, но непроверенность. Использование поощряется (я постараюсь прислушаться к жалобам на проблемы и помогу их решить), но работоспособность не гарантируется.

Готовая, собранная версия приложений, демонстрирующих работу фреймворка под всеми платформами, находится здесь.

Всех интересующихся подробностями милости прошу под кат.
Что же это за штука диковинная?

Делать Алгоритмы Маркова — это весело

Reading time3 min
Views47K
Писать Нормальные Алгоритмы Маркова, это безумно интересно и забавно. Интересно ли узнать о том, как мы делали лучшую в мире IDE для Нормальных Алгоритмов Маркова?



Увлекательная история внутри

Использование Vim в качестве C/C++ IDE

Reading time4 min
Views121K
Привет, Хабрахабр. Меня зовут Алексей и я занимаюсь тем, что разрабатываю встраиваемые операционные системы.

Сегодня я хочу рассказать, как я использую Vim в качестве IDE для C/C++ проектов.

Несмотря на то, что я использую Vim для C/C++, многие из рекоммендаций довольно общие и могут использоваться в любом проекте.
Читать дальше →

Torrent Updater — OS X Open Source программа для проверки новых версий .torrent файлов на популярных трекерах

Reading time2 min
Views2.7K
Torrent Updater

Год назад у меня появилась проблема. Проблема заключалась в том, что я устал следить за выходом новых серий моих любимых сериалов, скачивать .torrent файл с трекера, и ставить его на скачку. Хотелось это дело как-то автоматизировать.

Если есть проблема, то надо ее решать. Опыта разработки под OS X на Obj-c у меня не было, зато было время и желание попробовать.

Что из этого получилось? Читайте дальше.

Генератор гамм на Reactjs

Reading time6 min
Views12K
Здравствуйте, хабражители!

Не так давно на просторах интернета появилась javascript библиотека для построения пользовательских интерфейсов от facebook — Reactjs. Данная библиотека идеально подходит для создания простых и сложных javascript приложений. Позволяет организовывать ваш клиент-сайд в виде независимых компонентов. Берет на себя всю заботу по модификации DOM структуры дерева. И делает это весьма эффективно и разумно.

В общем, в результате небольшого знакомства с reactjs появилось такое приложение — demo. Цель данного поста поделиться впечатлениями от работы с reactjs + gruntjs + browserify.

Ниже будет изложено:

  • Основные моменты создания приложения и личные впечатления (симбиоз reactjs + browserify + gruntjs + coffeescript).
  • Серверный пререндериг reactjs компонентов для статических страниц.
  • Подход к сборке reactjs приложения с помощью gruntjs и деплой на gh-pages одной командой.


Тех кого заинтересовал прошу под кат…
Читать дальше →

Интерпретация во время компиляции, или Альтернативное понимание лямбд в C++11

Reading time22 min
Views33K
Yo dawg, I heard you like programming. So we put a language in you language, so you can program while you programНа Хабре недавно проскочила ещё одна статья про вычисления на шаблонах C++ от HurrTheDurr. В комментариях к ней лично я увидел вызов:

> С каждым новым релизом количество способов нетривиально вывихнуть себе мозг при помощи С++ продолжает увеличиваться)
> > Особенно, если не менять подход к реализации игрового поля и продолжать пытаться все вычисления выполнять не над константами, а над типами.


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

Чуть раньше AveNat опубликовала введение в лямбда-исчисление в двух частях, так что вдохновение пришло мгновенно. Хотелось, чтобы можно было (образно) писать так:
#include <iostream>

#include <LC/kernel.h>
#include <LC/church_numerals.h>

int main()
{
    // Представление натуральных чисел в виде лямбда-абстракций
    typedef ChurchEncode<2> Two;    // 2 = λfx.f (f x)
    typedef ChurchEncode<3> Three;  // 3 = λfx.f (f (f x))

    // * = λab.λf.a (b f)
    typedef Lambda<'a', Lambda<'b', Lambda<'f',
                Apply<Var<'a'>, Apply<Var<'b'>, Var<'f'> > >
        > > > Multiply;

    // Вычисление (* 2 3)
    typedef Eval<Apply<Apply<Multiply, Two>, Three>> Output;

    // Переход обратно от лямбда-абстракций к натуральным числам
    typedef ChurchDecode<Output> Result;

    std::cout << Result::value;
}

А на выходе получать такое:
ilammy@ferocity ~ $ gcc cpp.cpp
ilammy@ferocity ~ $ ./a.out
6

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

Под катом находится очередное прокомментированное конструктивное доказательство Тьюринг-полноты шаблонов C++ в виде compile-time интерпретатора бестипового лямбда-исчисления (плюс печеньки в виде макросов и рекурсии).
Читать дальше →

Moai SDK 1.5 — кроссплатформенный 2д игровой движок

Reading time7 min
Views17K

Сегодня я хочу рассказать об одном малоизвестном игровом движке, который мы используем уже год для кроссплатформенной разработки мобильных игр. Для 2д он нас полностью устраивает, а единственным конкурентом может быть только Unity3d из-за своего редактора. Отсутствие должного внимания к MOAI SDK, очевидно, связано с высоким порогом входа — сами разработчики (Zipline Games) позиционируют свой продукт как «The mobile platform for pro game developers», хотя разобравшись с установкой и настройкой окружения можно очень быстро и просто клепать игры на Lua.
Читать дальше →

Сборка FreeType2 под iOS

Reading time5 min
Views8.1K
imageimage
В интернете есть множество заметок о том, как собирать freetype под iOS.
Все эти заметки объединены общей характеристикой — они не работают.
Дело в том, что все инструкции оперируют gcc для сборки библиотеки, но начиная с XCode 5 gcc не входит в поставку и для сборки под iOS надо использовать clang.
Нет ни одной заметки о том, как компилировать правильно.
Исправляем эту несправедливость.

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

Магический круг: CSS головоломка

Reading time4 min
Views43K
Доброго времени суток, уважаемые хабравчане. Недавно Hugo Giraudel, он же CSS гоблин, SASS хакер и Margin псих опубликовал в своем блоге очень интересную CSS задачку на смышленость.

image

Сможете заверстать подобное учитывая следующие правила?

  • Круг в центре должен быть прозрачным, чтобы был виден background
  • Расстояние между левыми и правыми блоками, как между верхними и нижними должно быть одинаковое
  • При наличии потомков в блоке, содержимое должно отображаться
  • DOM должен выглядеть следующим образом: ul > li > section > header + footer
  • Нельзя использовать JavaScript и изображения
  • Дополню еще от себя: нельзя использовать CSS Shape и Clip Path

Чтобы не было очень лень — каркас уже есть.

Сделали?

А тремя способами?

Скрипт Automator, загружающий изображения на Habrastorage: второе пришествие

Reading time2 min
Views7.8K
Некоторое время назад я сделал скрипт, который загружает изображения на Habrastorage прямо из файлового менеджера. Но вот беда: после обновления он перестал работать.

image

Но вчера мне все-таки надоело загружать фотографии через веб-интерфейс, и я пошел чинить скрипт.
За решение надо ставить плюсики в карму пользователю avalak, который рассказал как это сделать в моем вопросе на тостере. Тостер — торт!

Итак, как теперь загружать изображения?
Читать дальше →

Python на Хабре

Reading time7 min
Views454K
Некоторое время назад, в силу определенных причин, мне пришла в голову мысль о том, чтобы начать изучать какой-нибудь новый язык программирования. В качестве альтернатив для этого начинания я определил два языка: Java и Python. После продолжительного метания между ними и сопутствующих нытья и долбежки головой о стену (у меня с новыми языками всегда так — сомнения, раздумья, проблема выбора и т.д.), я все-таки остановился на Python. Окей, выбор сделан. Что дальше? А дальше я стал искать материал для изучения…
Читать дальше →

Генератор иконок по геоданным MIG

Reading time4 min
Views9.1K
Приветствую хабросообщество. Хочу поделиться с вами одним из своих последних мини-проектов — генератором иконок по геоданным MIG. С его помощью можно сгенерировать векторные (SVG) и растровые (PNG) иконки, с заданными параметрами (цвет, размер, обводка и прочее).

MIG demopage

Всё это работает прямо в браузере и распространяется под лицензией MIT. Под катом можно узнать, как этим пользоваться и как оно работает.
Читать дальше →

LiveReload в очень постороннем браузере

Reading time3 min
Views4.7K
Заморочился я автообновлением странички в браузере на таскаемом с собой iPad при разработке NodeJS/ExpressJS-приложений, чтобы видеть все изменения на лету.
Под катом — как очень просто сделать из мобильного гаджета средство живого просмотра разрабатываемых веб-приложений.
Читать дальше →

Dic: быстрая память

Reading time5 min
Views27K
image

Как часто вы не могли вспомнить ту или иную команду в Git, Vim, Linux, C++? Сколько времени вы тратите на поиск ответа в man или в интернете? Пробовали ли вы когда-нибудь писать свои собственные справочники и чем это заканчивалось? Хотели бы вы немного помочь вашей памяти?
Разрешите вам помочь. Под катом небольшая история эволюции моих справочников и утилита Dic.

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

Как я классы в Vim писал

Reading time9 min
Views11K
image

Предисловие


Уже около четырех лет увлекаюсь языком JS, а особенно привлекает в нем прототипная реализации объектной ориентации и замыкания. Так как я большой любитель «велотренажеров» в программировании и обожаю изучать что-то новое на практических примерах, давно хотел попробовать реализовать подобное самостоятельно, и совсем недавно шанс выпал. Одним холодным зимним днем я увлекся редактором Vim и, изучая его скриптовый язык, обратил внимание на некоторые важные особенности, а именно ассоциативные массивы и передачу функций по ссылке. Я не смог пройти мимо и реализовал свою прототипную объектную ориентацию в Vim с наследованием и полиморфностью.

Хочу сразу обрадовать тех, кто не знаком с синтаксисом скриптового языка Vim, я постараюсь сопровождать код подробными комментариями. Оговорюсь, что целью этой работы было не создание полноценной объектной ориентации в Vim, а практика в реализации объектной парадигмы через прототипирование. Я, конечно, пытался сделать реализацию максимально легковесной и быстрой, но все равно сомневаюсь, что полученный результат можно эффективно применять в «боевых» скриптах, потому, прошу относиться к этому соответственно.

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

Победители 22-го конкурса IOCCC

Reading time2 min
Views14K


Опубликован исходный код программ-победителей 22-го конкурса программ с обфусцированным кодом на C. Участвовать в конкурсе могут готовые программы размером меньше 4096 байт, при этом количество значимых символов, без учёта пробелов, знаков табуляции и знаков; ( ), не должно превышать 2048. Впрочем, в этом году многие участники воспользовались эксплоитом для бага в модуле вычисления размера программы, так что в 2013 году на конкурс были представлены, пожалуй, самые продвинутые программы за все годы проведения соревнований.

Например, вызывает искреннее восхищение эмулятор 8086-компьютера размером 4043 байта (исходный код) с полным набором инструкций 8086/186, который поддерживает флоппи-диски и HDD и PC-спикер.
Читать дальше →

Python: вещи, которых вы могли не знать

Reading time8 min
Views314K
Python — красивый и местами загадочный язык. И даже зная его весьма неплохо, рано или поздно находишь для себя нечто такое, что раньше не использовал. Этот пост отражает некоторые детали языка, на которые многие не обращают внимание. Сразу скажу: многие примеры являются непрактичными, но, оттого, не менее интересными. Так же, многие примеры демонстрируют unpythonic стиль, но я и не претендую на новые стандарты — я просто хочу показать, что можно делать вот так.
Читать далее

Служба Automator, загружающая изображения на Яндекс.Фотки

Reading time2 min
Views7.3K
К созданию этой службы меня подтолкнул пост Скрипт Automator, загружающий изображения на Habrastorage, а точнее, вот этот комментарий.

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

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

Про автоматизацию подбора аккордов

Reading time17 min
Views59K
Меня давно занимал вопрос: «а что, если попробовать прогнать цифровую запись песни через преобразование Фурье, посмотреть зависимость спектра от времени и попытаться вытащить из полученной информации аккорды песни?». Вот, наконец, нашел время попробовать…
Читать дальше →

Information

Rating
Does not participate
Location
Кирибати
Registered
Activity