Как стать автором
Поиск
Написать публикацию
Обновить
4
0
xRay @xRay

Пользователь

Отправить сообщение

Контексты RTTI в Delphi 2010: как это работает и как их использовать

Время на прочтение4 мин
Количество просмотров4.9K
Delphi 2010 включает в себя расширенную поддержку RTTI, также известную как информация о типах времени выполнения (run-time type info) или рефлексия. Множество подходов в проектированию раньше были доступны только в управляемых языках, таких как C# и Java, так как для них необходима аннотация кода (code annotation) и интроспекция (самоанализ). Теперь это возможно и в мире Delphi.

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

Как получился Indie-Tracker

Время на прочтение4 мин
Количество просмотров834
Я разрабатываю онлайн-сервис таск-трекинга для небольших команд разработчиков. Он будет очень простым и наглядным, с современным графическим интерфейсом. Чтобы начать им пользоваться, достаточно пройти по ссылке внизу поста и зарегистрироваться.
Сейчас я расскажу, почему во время разработки программы я несколько раз изменял её концепцию. Какие ошибки я допустил и к чему пришел в конце.
Читать дальше →

Nvidia открыла исходный код компилятора CUDA

Время на прочтение1 мин
Количество просмотров2.8K
Nvidia открыла исходный код нового компилятора CUDA на базе LLVM. Сорцы не раздаются направо и налево, а доступны только для «квалифицированных исследователей и разработчиков». Для их получения нужно зарегистрироваться, заполнить форму и указать, для каких проектов вы намерены применять компилятор. Так что пока непонятно, под какой лицензией опубликован компилятор и вообще — свободная ли это лицензия. В пресс-релизе компания намекает на более открытый доступ к исходникам в будущем.



С помощью компилятора и нового CUDA Toolkit 4.1 можно будет приспособить платформу GPGPU для других архитектур и процессоров, в том числе AMD GPU и x86 CPU, а также создавать гетерогенные суперкомпьютерные системы.

Esprima — парсер для javascript, написанный на javascript

Время на прочтение3 мин
Количество просмотров14K
В сети и на github появилась разработка парсера Esprima, позиционированного на парсинг вообще и для javascript в частности. Он написан на Javascript и переводит скармливаемый текст в структуру JSON, которую затем можно анализировать, например, для препроцессирования кодов, создания сахарных обёрток для JS, автоматизированного поиска ошибок без запуска кода, преобразования языков (кросс-компиляции), преобразования серверного JS в клиентский или наоборот, для минификации кода или наоборот, для разбора обфусцированного. Но это — всё идеи для будущего. Появился архив совсем недавно (в середине ноября — первый коммит с 2000 строк кода), но уже приобрёл своих иследователей, судя по форкам. Формат парсинга совместим с Mozilla SpiderMonkey Parser API.
Читать дальше →

Знакомство с Gem. Часть первая

Время на прочтение2 мин
Количество просмотров22K
Доброго времени суток!

Введение


Каждый рубист, да и вообще программист, рано или поздно начинает задумываться о написании своих библиотек. Ему начинает надоедать перетаскивание одних и тех же кусков кода в другие проекты. В Ruby лекарством от данного заболевания являются gem'ы. Итак, давайте познакомимся с ним поближе.
Добро пожаловать к нам под хабракат

Игры на CANVAS/WebGL

Время на прочтение1 мин
Количество просмотров12K

Vortal Combat


Практически полноценный скроллер, обладающий всеми атрибутами жанра: разные типы врагов, выпадающие бонусы, с помощью которых можно апгрейдить оружие, восстанавливать защиту и тп. Есть и музыка, единственное чего не хватает — звуков сражения.

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

Как создавать «зеленый» код

Время на прочтение6 мин
Количество просмотров5.4K
Что такое энерго-эффективность в применении к мобильным платформам? Простыми словами это возможность сделать больше, затратив при этом меньше энергии.

Каждому пользователю хотелось бы как можно реже заряжать свое мобильное устройство, будь то смартфон, нетбук, ультрабук. Возможно, когда-нибудь наступит момент, когда устройство нужно будет зарядить всего один раз, после его покупки и пользоваться до тех пор пока оно не надоест или морально не устареет.
Читать дальше →

Установка приложений Google в эмулятор Android

Время на прочтение3 мин
Количество просмотров37K


В этой статье описано как установить дополнительные программы (в частности, Google Apps) в эмулятор Android. Это может понадобиться если вы хотите на эмуляторе:
1. Настроить синхронизацию с аккаунтом Google.
2. Установить календарь и календарь провайдер.
3. Установить Android Market.
4. И прочее…

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

MongoDB: Запросы

Время на прочтение4 мин
Количество просмотров248K
Хоть и некоторые писали относительно моего предыдущего топика MongoDB: Создание, обновление и удаление документов, что это пересказ офф. документации, я с этим не полностью согласен. Мне показалось, что информация в нём оказалось кому-то полезной, поэтому выкладываю продолжение.

Find — аналог SELECT в MySQL. Используется для выборки документов из MongoDB. Возвращает массив документов в виде коллекции, если документов нет — пустую коллекцию. Пример:

> db.users.find();

Вернёт всех пользователей из коллекции.

> db.users.find( { age: 27 } );

Вернёт всех пользователей, у которых возраст равен 27.
Читать дальше →

Node.JS на Android, если Android порутованный

Время на прочтение1 мин
Количество просмотров8.6K
Оказывается, ещё в начале 2011 года японский исследователь по имени Тосио Мори, действующий под псевдонимом forest1040, выяснил, что возможно запустить Node.js на устройстве с Android, если обладать правами рута. Итоги его наблюдений изложены на нижеследующих тринадцати слайдах:


Для тех, кто не вполне понимает по-японски, переводчик Jed Schmidt создал англоязычную версию инструкций, выложенную во блоге у forest1040. Говоря вкратце, предлагаемая последовательность действий вот какова:

  • Получить права рута на устройстве под Android
     
  • Использовать qemu и собрать Linux для ARM
     
  • Внутри ARM Linux собрать Node.js
     
  • Скопировать собранный Node.js на устройство под Android

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

Выпущена новая версия пакетного менеджера NuGet 1.6

Время на прочтение2 мин
Количество просмотров5.6K
image
Вчера пакетный менеджер NuGet для платформы .NET получил очередное обновление до версии 1.6. Ниже перечислены нововведения в новой версии.

Семантическое версионирование

Добавлена поддержка механизма семантического версионирования (Semantic Versioning (SemVer), который позволяет задавать условия зависимостей пакетов по версиям в определенной нотации. Например:

1.0 = 1.0 ≤ x

(,1.0] = x ≤ 1.0

(,1.0) = x < 1.0

[1.0] = x == 1.0

(1.0,) = 1.0 < x

(1.0,2.0) = 1.0 < x < 2.0

[1.0,2.0] = 1.0 ≤ x ≤ 2.0

пустое значение = последняя версия.

Описание нотации и документация по версионированию в NuGet 1.6 доступна по следующей ссылке.

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

Channel.me → совместный просмотр сайтов

Время на прочтение2 мин
Количество просмотров5.3K
Внезапно, у меня возникла задача выбрать товары в интернет-магазине вместе с сестрой. Казалось бы всё просто, только вот сестра находится на 800 км вдали от меня.

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



Ближе к делу: демо-канал для хабрапользователей | демо-канал №2
Комментарий от создателей по поводу хабра-эффекта в демо-канале:
The demo-channel is a bit crowded… Looks more like a stress test :-)
Our virtual server is running at 160% and with 20Mb/s traffic… cool!

Далее чуть-чуть текста, скриншот и ссылки на расширения

Объединенные формы и значения по умолчанию

Время на прочтение2 мин
Количество просмотров2.1K
Здравствуйте.

Сейчас я бы хотел облегчить жизнь всем тем людям, которые пишут свои проекты на основе фреймворка Symfony 2.

В Symfony 2, есть отличные инструменты по созданию форм из сущностей, а так же, что более интересно — объединенные формы.

Так вот, если вам понадобится установить в такую (объединенную) форму значения по умолчанию из сущностей (объектов), то вы (как и я) будете блуждать по просторам интернета, в поисках решения этой задачи, т.к. в документации этого, вроде бы, нет (во всяком случае, я не нашёл).
Читать дальше →

3D-сканер за $30

Время на прочтение9 мин
Количество просмотров210K
Профессиональный 3D-сканер, с помощью которого можно оцифровать реальный объект, получив его компьютерную модель, стоит десятки тысяч долларов. Мы же сможем провернуть то же самое с помощью специальной программы, лазерной указки и веб-камеры. Всего долларов за тридцать.


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

VirusTotal для «своих»

Время на прочтение3 мин
Количество просмотров14K
Сегодня мы выпускаем очередной пост для Хабрахабра. Наш старший вирусный аналитик Закоржевский Вячеслав расскажет про интересную сторону киберкриминала.

Всем понятно, что большинство малварщиков заинтересованы в том, чтобы их детища как можно дольше «жили» у пользователей. Чем больше времени малвара находится на компьютере, тем больше денег потенциально можно заработать. Основная угроза для них — антивирусы. В подавляющем большинстве случаев для защиты зловреда от сигнатурного/эвристического детекта антивирусом вирусописатели применяют крипторы. Рынок крипторов достаточно обширен, на нём много предложений, поскольку крипторы пользуются спросом.

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

Выложены дополнительные сборки Android-x86 4.0 под x86

Время на прочтение1 мин
Количество просмотров7.8K
На www.android-x86.org выложены дополнительные сборки, предназначенные для запуска на x86 платформе.

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

AzaThread — многопоточность для PHP с блэкджеком

Время на прочтение6 мин
Количество просмотров18K
В сети гуляет довольно много решений для эмуляции многопоточности в php. Чаще всего они основываются на форках, но есть и вариации на тему с использованием curl, proc_open и т.п.

Все встреченные варианты по тем или иным причинам меня не устроили и пришлось написать свое решение.
Набор требований у меня был следующий:
  • Использование форков;
  • Синхронный режим с сохранением интерфейса при отсутствии необходимых расширений;
  • Многократное использование дочерних процессов;
  • Полноценный обмен данными между процессами. Т.е. запуск с аргументами и получение результата по завершении;
  • Возможность обмена событиями между дочерним процессом-«потоком» и основным процессом во время работы;
  • Работа с пулом потоков с сохранением многократного использования, передачи аргументов и получения результатов;
  • Обработка ошибок выполнения;
  • Таймауты на выполнение работы, ожидание работы потоком, инициализацию;
  • Максимум производительности;

В результате получилась библиотека AzaThread (старое название — CThread).
Подробности

Битовые операции в PHP на примерах

Время на прочтение3 мин
Количество просмотров90K
Навеяно статьей об обработке критических ошибок в PHP. Обратил внимание, что несмотря на то, что коды ошибок в PHP специально заточены под битовые операции, тем не менее, что в примерах статьи, что в комментариях, для проверки кодов ошибок используются обычные операторы сравнения.

Например, встречались такие варианты:
if ($error['type'] == E_ERROR || $error['type'] == E_PARSE || $error['type'] == E_COMPILE_ERROR){…}
или
if(in_array($error['type'], array(E_ERROR, E_PARSE,  E_COMPILE_ERROR)) {…}

В связи с этим решил написать небольшую статью о битовых операциях с примерами их использования.
Читать дальше →

Firefox не вмещается в 32-битное адресное пространство

Время на прочтение1 мин
Количество просмотров3.3K
Разработчики Mozilla столкнулись с проблемой: в процессе компиляции mozilla-inbound под Windows вылетает ошибка (см. баг 709193).

nswindowmediator.cpp(821): fatal error C1001: An internal error has occurred in the compiler. LINK: fatal error LNK1000: Internal error during IMAGE::BuildImage

Проведённое расследование показало, что компоновщик выходит за пределы виртуального адресного пространства во время оптимизации. Ему не хватает 3 ГБ памяти, которые выделяет приложению 32-битная Windows.
Читать дальше →

«Защита» mp3 файлов на amazon.com

Время на прочтение3 мин
Количество просмотров11K
Всем привет.
Не так давно дали на работе задачку по изучению факта наличия какой-либо скрытой информации в требуемых mp3-файлах. Т.к. точно не было известно, есть ли что-то в них или нет, задача представлялась почти неразрешимой. В свое время писал диплом на тему скрытия информации в аудиофайлах (аудиостеганография) и представлял, что если захотеть что-то спрятать, то обнаружить это будет почти невозможно. Первым делом начал поиски с чтения полей ID3 тэгов, вспомнил, что есть, в частности, тэг Lyrics (служащий для сохранения текста песни), содержимое которого в том же winamp-е не отображается.

На поверку данное поле оказалось пустым.
После некоторого времени общения с гуглом наткнулся вначале на статью про Amazon MP3 (http://en.wikipedia.org/wiki/Amazon_MP3), а затем уже и на песни на amazon.com, которые содержат в себе некий «unique purchase identifier».
Читать дальше →

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность