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

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

Send message

Создание языка программирования с использованием LLVM. Часть 1: Введение и лексический анализ

Reading time7 min
Views61K
Добро пожаловать в учебник «Создание языка программирования с LLVM». Этот учебник знакомит вас с созданием простейшего языка программирования, и при этом показывает, каким оно может быть легким и интересным, а также даёт вам начальные знания, которые вы затем сможете применить на других языках программирования. Код в этом учебнике также может быть использован в качестве стартовой площадки для ваших творений с помощью LLVM.

Целью данного учебника является постепенное представление нашего языка, описание его пошагового создания. Это позволит нам охватить достаточно широкий спектр вопросов проектирования языков и использования LLVM, попутно показывая и объясняя код без огромного количества ненужных деталей.
Читать дальше →

Что почитать на выходных? Рекомендуем, выпуск №11

Reading time3 min
Views1.4K
Это подборка статей на тему веб-разработки на платформе .NET (и не только). За день перед выходными я предлагаю набор интересных ссылок, которые стоит посетить в свободные минуты на выходных, чтобы узнать что-то новое и интересное.

Вы можете следить за циклом этих советов по следующей ссылке.

Тема номера:
  • Важные анонсы Tech-ed North America 2011 [link];
  • 300+ видео докладов конференции TechEd уже доступны онлайн [link];
  • Анонс нововведений в Visual Studio vNext на Teched [link];
  • Что будет в Visual Studio vNext [link];
HTML5, JavaScript, веб-стандарты:
  • Эффектная галерея на jquery с использованием анимации спрайтов. Vol1 [link];
  • Градиентная заливка с помощью CSS3 [link];
  • Galactic- построение солнечной системы в 3D на HTML5 [link];
  • IE9 Performance Checklist [link];
  • CSS3: box-sizing и размеры элементов страницы [link];
  • Пять полезных техник кодирования CSS и jQuery для создания более динамичных веб-сайтов [link];
  • jqMetro — плагин для jQuery для создания интерфейсов в стиле Metro UI [link];
  • jQuery HTML5 загрузка файлов [link];
Читать дальше →

Класс-клиент goo.gl и настройка API

Reading time4 min
Views36K
UPD: репозиторий теперь на Гитхабе.

Здравствуйте, коллеги!

Помню, в свое время меня очень обрадовала новость, что у гугловской сокращалки урлов появились официальные API. В то время я как раз разрабатывал приложение, которому часто требовалось сокращать ссылки новостных лент. Я как раз прикручивал bit.ly, но испытал соблазн попробовать новый сервис от Гугла. Воспользовавшись документацией, я за несколько часов набросал базовый функционал и встроил скрипт в проект.

С течением времени в скрипт вносились изменения, и, наконец, я решил дополнить код комментариями, написать простую документацию и выложить всё на гуглокод.

Основные возможности и особенности класса от конкурентов:
Читать дальше →

TermKit: новая концепция консоли с графическим выводом

Reading time2 min
Views6.1K
Командная оболочка (консоль) — пожалуй, самый архаичный элемент Unix, который остаётся почти в неизменном виде уже тридцать лет. Мы любим его, но кому-то кажется странным сидеть у монитора с миллионами пикселей, ежедневно глядя в консольное окошко образца 70-х годов, когда вся информация на компьютерах была исключительно в текстовом виде.


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

Используем блоки в IOS < 4.0

Reading time1 min
Views1.1K
Для тех кто знаком с блоками в Objective-C, но не может пока их использовать в силу необходимости поддержки приложений для ios младше 4.0 версии, либо сторонится патченого компилера PLBlocks, предлагаю рантайм блоков в виде статической либы libESBlocksRuntime.a

Сам рантайм был выдернут с исходников проекта compiler-rt, и завернут в блоковые классы ESBlock. Добавлены недостающие методы -[ NSArray enumerateObjectsUsingBlock: ] и т.д. также UIView блоковые екстеншены.

Для подключения в проект достаточно скачать исходники проекта, и добавить его в dependencies например так.

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

Здесь можно почитать о терии блоков на хабре.

Асинхронный удар

Reading time5 min
Views16K
imageКак уже наверное кто-то догадался, в этой статье речь пойдет о сокетах, и фреймфорках облегчающих работу с ними. Недавно я начал работу надо новым проектом, онлайн игрой. Для таких проектов довольно критично время ответа от сервера, если это конечно не пошаговая стратегия, хотя и в этом случае пожалуй тоже. Так как же этого добиться при суровой ограниченности ресурсов?
  • Облегчить сервер от ненужной работы, например отрисовки самой странички, используя вместо этого javascript шаблонизатор.
  • Использовать хороший front-end, например nginx, учитывая пункт первый, динамики у нас нет, и это нам вполне подходит.
  • Распределяя нагрузку на frontend, например используя Tornado.

Остался самый главный вопрос, что будет происходить когда пользователь совершает какое-либо действие? Обычные ajax запросы не подойдут, вполне понятно почему. Поэтому нам на помощь приходят сокеты.
Читать дальше →

[Графический редактор на Canvas] Кисть для скетчей

Reading time6 min
Views9.8K
Продолжаем неделю canvas на хабре.
Графические редакторы на флеше/сильверлайте в интернете не редкость. На canvas их намного меньше, но есть и довольно интересные. Вот пара примеров:В этом цикле статей я планирую рассказать о различных моментах, с которыми можно столкнуться при создании графического редактора на canvas. Тривиальные части затрагивать не буду, постараюсь описывать только самое интересное. В этой статье опишу примерный алгоритм создания кисти для скетчей
Читать дальше →

OGS Mahjong 0.7

Reading time2 min
Views851
Не далее чем в августе прошлого года, я писал топик о разрабатываемой силами программиста kornerr и моими небольшой игре под названием OGS Mahjong.

Будучи «проектом свободного времени», OGS Mahjong развивался медленно и неторопливо, однако за 9 месяцев его версия подросла до цифр 0.7.

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

Пора завязывать

Reading time4 min
Views2.7K
EXPANDTAB!!!Может быть, стоило написать в «Я негодую». Не знаю. Пока писал, расколотил чашку с чаем и таким образом достиг хладнокровия.

Я про вот что: раз и два.

Есть же множество прекрасных тем для холиваров: Windows или Linux, IE или FF, Canon и Nikon, Intel и AMD, «на Украине» или «в Украине». Чужой или Хищник, наконец!

Так нет же, зацепились на ровном месте: пробелы и табуляции.

Почему на ровном месте?

Профили пользователей: плюсы, минусы, подводные камни

Reading time5 min
Views12K
Не секрет, что работу с профилями пользователей в Django иначе как несчастьем не назовёшь. Все мы сталкивались с монолитностью модели auth.User, неадкеватным набором полей у неё, а также всеми теми ухищрениями, к которым приходилось прибегать.

Извращаться приходилось всем: не только пользователям джанги, но и самим её core-разработчикам. Помните, например, как в Django 1.2 внезапно стало возможно использовать в поле username символы собаки (@) и точки? Знаете зачем? Чтобы в качестве логинов можно было использовать адреса e-mail.

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

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

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

Гуру C++, а также люди смыслящие в шаблонном метапрограммировании могут смело пропускать этот топик, ничего нового для себя они здесь не найдут. Однако, если после прочтения заголовка, у вас в голове еще не возникло решение данной задачи (и даже если оно возникло, но не при помощи шаблонов), то милости просим под кат.
Читать дальше →

Django — обработка ошибок в ajax-формах

Reading time5 min
Views17K
Hello everyone!

Все мы знаем что Django — очень мощный и динамично развивающийся фреймворк для создания веб-приложений. Однако, несмотря на наступление эпохи Веб 2.0, в нём всё ещё нет встроенных механизмов для работы с AJAX, в частности отправки и проверки форм. Возможно django просто не хочет навязывать пользователю какой-то js-фреймворк и хочет оставаться гибкой в этом вопросе, но так или иначе при разработке часто требуются формы, работающие через ajax, без перезагрузок страниц.
О создании таких форм и работе с ними и пойдёт речь в данной статье.

Сразу оговорюсь, что идея не нова, и существует несколько библиотек, реализующих требуемую функциональность, например одна из них — http://www.dajaxproject.com/.
Для тех же, кто предпочитает сам управлять взаимодействием клиента с сервером или тех, кто не хочет втягивать в проект дополнительную библиотеку и иметь дело с её багами, я расскажу как изобрести велосипед реализовать механизм самостоятельно и опишу различные способы решения проблемы.
Читать дальше →

Введение в Core Graphics на iOS

Reading time6 min
Views42K
Недавно обнаружил, что на хабре нет статей по работе с Core Graphics в iOS, также как не нашел подобных статей на русском языке. На сайте Apple для разработчиков есть документация по работе с 2D графикой в iOS — Core Graphics Framework Reference, включающее 400 страниц документации, полезной в качестве справки, но не дающей начального представления о работе с видами и рисованием. Поэтому я решил написать вводную статью по работе с 2D графикой в iOS.
Читать дальше →

re2c — компилятор регулярных выражений

Reading time3 min
Views8.5K
Задача выделения из потока символов определенных лексем является весьма распространенной. Часто ее решают с помощью лексических анализаторов, конфигурируемых регулярными выражениями. Многие анализаторы построены по принципу генерации программного кода, который в свою очередь реализует логику регулярных выражений. Фактически, это компиляция языка регулярных выражений в код языка программирования.

Например, flex — это один из таких анализаторов. Старый, но проверенный годами.

Я много пользовался flex'ом, он имеет и плохие и хорошие стороны, но по большому счету, жаловаться не приходилось.

Но вчера наткнулся на интересный проект — re2c. По сути, на этой штуке можно писать лексические анализаторы прямо на коленке за несколько минут.

Подробности

Django проект PR Hero: что внутри и полученный опыт

Reading time4 min
Views5.9K

Я хочу продолжить хорошую традицию:
и рассказать об удачных решениях, примененных в Django проекте PR-Hero.

Я призываю всех поступать так же и делиться своим опытом :) Объясню почему. В нашей команде каждое удачное решение или приложение из одного проекта обязательно использовалось в следующем. Проекты развивались и становились все лучше и лучше.

А что, если делиться опытом не внутри отдела, а целым сообществом российских джангистов?

что же внутри?!

Пайпы, the pythonic way

Reading time3 min
Views19K
Одни питонисты любят код читаемый, другие предпочитают лаконичный. К сожалению, баланс между первым и вторым — решения по-настоящему изящные — редко случается встретить на практике. Чаще стречаются строки вроде
my_function(sum(filter(lambda x: x % 3 == 1, [x for x in range(100)])))
Или четверостишья а ля
xs = [x for x in range(100)]
xs_filtered = filter(lambda x: x % 3 == 1, xs)
xs_sum = sum(xs_filtered)
result = my_function(xs_sum)
Идеалистам же хотелось бы писать как-то так
result = [x for x in range(100)] \
    | where(lambda x: x % 3 == 1)) \
    | sum \
    | my_function

Не в Питоне?
Зря так думаете...

Скринсейвер Pong в режиме часов в Ubuntu

Reading time1 min
Views7K
Если вам надоели скучные скринсейверы в убунту, и до релиза Bolgen OS не дотерпеть, эта статья для вас! Раньше в Gnome можно было настроить скринсейвер, но эту возможность убрали из интерфейса ради его упрощения, лишив нас с вами возможности быстро и просто конфигурировать скринсейверы. В этом топике я расскажу вам, как обзавестись олдскульным, красивым и полезным скринсейвером за пять минут.

Картинка кликабельна, по ссылке видео
Pong Clock Screensavere
Читать дальше →

«Съешь меня»… нет, не так… «Выполни меня»!

Reading time15 min
Views2.9K
У меня периодические возникают разные потребности решения мелких насущных задач в Mac OS X. Для этих целей я обычно делаю небольшие программы, которые «закрывают» потребность частным образом. Но иногда хочется, чтоб программа была универсальной, и ей могли воспользоваться другие люди при необходимости (например «Переlator»). Так получилось и в этот раз…

Я люблю, когда Dock отображается всегда на экране. Но при запуске Симулятора iOS постоянно приходилось включать автоматические скрытие, чтобы симулятор полностью умещался на экране. Появилась задача — автоматизировать этот процесс. За пару дней набросал универсальную программу, с помощью которой можно задать AppleScript на определённое действие любой программы: «Программа запущена», «Программа завершена», «Программа активирована», «Программа деактивирована» и пр.



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

Принцип цикады и почему он важен для веб-дизайнеров

Reading time6 min
Views236K
Пару лет назад я прочитал интересные факты о жизненном цикле периодических цикад. Обычно мы не видим вокруг себя много этих насекомых, потому что бóльшую часть своей жизни они проводят под землёй и тихо сосут корни растений.

Однако, в зависимости от вида, каждые 7, 11, 13 или 17 лет периодические цикады одновременно массово вылезают на свет и превращаются в шумных летающих тварей, спариваются и вскоре умирают.

Хотя наши странные цикады весело уходят в иной мир, возникает очевидный вопрос: это просто случайность, или числа 7, 11, 13 и 17 какие-то особенные?
Читать дальше →

Обзор плагинов ++

Reading time2 min
Views3.4K
Очередной топик с обзором нескольких интересных плагинов jQuery.

Mobily Map




Позволяет сделать интерфейс, подобный google-картам, на основе собственных изображений (возможность перетаскивать, ставить маркеры на изображении, реагировать на нажатие по ним и др.).
Узнать больше (англ.) | Посмотреть в действии


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

Information

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