Архив за 20 июля 2013 - 2

Почему QA всё ещё не Stackoverflow?Позвольте предоставить субботние диванные рассуждения на тему «Как нам обустроить...» именно в виде статьи, а не вопроса, потому что статью прочтут в 10 раз больше читателей, а ориентирована она на всех читателей Хабра, а не только на читателей его вопросов.

В статье есть также одно простое предложение о том, как поправить дела с QA. Оно звучит так: давайте откроем доступ в QA всем, включая ReadOnly. Плюс парочка мелких замечаний к нему. Думаю, что после этого там пойдут дела на поправку. А ниже — подробности о том, что там происходило с момента рождения раздела, что происходит и почему я считаю, что там дела идут плохо (не так, как на StackOverflow)Почему QA всё ещё не Stackoverflow?.
Читать полностью »

Этот простой скриптик может пригодиться когда хочется, ничего специально не настраивая, запустить проект на выполнение прям из Vim по клавише F5, когда открыт файл из любой поддиректории.
Читать полностью »

image

Компания Adobe выпустила версию 3.0 открытого фреймворка PhoneGap для разработки приложений, пишет TechCrunch. PhoneGap позволяет писать кросс-платформенные мобильные приложения на HTML5, CSS и JavaScript.

В новой версии PhoneGap представлена новая модульная архитектура, которая, по словам компании, «позволит вашему приложению оставаться небольшим и быстрым». Разработчики смогут просто выбрать нужные API, после чего будут автоматически установлены необходимые плагины.
Читать полностью »

В стандартной библиотеке Java отсутствует возможность оперировать коллекциями примитивных типов, таких как int, long и т.д. Стандартный выход — использовать объекты классов Integer, Long и т.д.

Такой подход хорошо работает на небольшом количестве элементов, поскольку, во-первых, при любой операции происходит autoboxing/autounboxing и во-вторых, в коллекции хранятся ссылки на объекты в heap. Объекты в heap не только вносят дополнительный overhead по памяти, но и создают нагрузку на GC.

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

Библиотека Trove представляет стандартный интерфейс коллекций для работы с примитивными типами. Для большинства применений, коллекции Trove работают быстрее и потребляют меньше памяти.
Читать полностью »

Наконец добрались до самой мякотки, в этой части — лексический и синтаксический разбор, PSI (Program Structure Interface), стабы (Stubs). Предыдущие части: 1, 2, 3

IntelliJ IDEA это не только Java IDE, но и мощная платформа для построения инструментов разработки для любого языка. Большинство функций IDEA состоят из двух частей: независимой от языка и специфической для конкретного языка программирования. Поэтому поддержка особенностей какого-либо языка не требует особых усилий – необходимо реализовать лишь специфическую часть, а независимая от языка предоставляется платформой. В дополнение, IDEA предоставляет мощный фреймворк, который позволяет реализовывать собственные функции, необходимые при разработке инструментария.

Регистрация типа файла

Первым шагом при разработке плагина специфического языка является регистрация связанного с ним файлового типа. Обычно IDEA определяет тип файла в соответствии с его именем (расширением).
Тип файла специфического языка – это класс, унаследованный от LanguageFileType, который передает экземпляр класса Language в родительский конструктор. Для регистрации типа файла необходимо предоставить реализацию интерфейса FileTypeFactory, зарегистрированную в точке расширения com.intellij.fileTypeFactory:

<extensions defaultExtensionNs="com.intellij">
  …
  <fileTypeFactory implementation="com.intellij.lang.properties.PropertiesFileTypeFactory"/>
  …
</extensions>

Читать полностью »

в 11:56, , рубрики: c++, PEB, метки:

PEB — структура процесса в windows, заполняется загрузчиком на этапе создания процесса, которая содержит информацию о окружении, загруженных модулях (LDR_DATA), базовой информации по текущему модулю и другие критичные данные необходимые для функционирования процесса. Многие системные api windows, получающие информацию о модулях (библиотеках) в процессе, вызывают ReadProcessMemory для считывания информации из PEB нужного процесса.
Читать полностью »

SaveFrom.net + костыль, или загрузка PLS плейлистов Привет хабровцы.
Я думаю не только у меня большой плейлист на vk.com. Совсем недавно я озадачился тем, как бы выкачать музыку, чтобы можно было слушать её оффлайн. Вскоре я нашел удобный сервис SaveFrom.net. И все бы ничего, да только выкачивать сразу всю музыку он не умеет. Он предлагает нам варинаты:
1. Дать нам кучу url, чтобы мы вставили все это дело в менеджер загрузок, типа DownloadManager
2. Сохранить плейлист в m3u/pls, которые играют по урл

В первом случае у нас имена файлов будут вида 3ee56ab0933e.mp3. ID3 tag будет на месте, но согласитесь, это неудобно, открывать каждую композицию чтобы посмотреть что это
Во втором случае — у нас чисто url-ы в плейлистах, но зато title песни есть сразу.

Поскольку наблюдать файлы вида 3ee56ab0933e.mp3 мне не хотелось, а так же не хотелось вручную все это именовать — я набросал на коленке тулзу, которая умеет читать pls плейлисты, и скачивать музыку в 10 коннектов.

Бинарник + исходник

Откомпилированный экзешник + исходный код (на Delphi) лежит тут

Читать полностью »

GameDev, Indie, Corona SDK, GameJam 48h, DevConf, Go, Laser Flow, ZipQuest, $5 Prize Приветствую! Сразу извиняюсь за заголовок — столько всего хотелось в нём рассказать, но получалось слишком длинно.

Рассказ пойдёт о моей игре (iOS, Android), сделанной с помощью Corona SDK, о самой короне и разработке с ней, о соревновании «напиши игру за 48 часов», о прошедшей недавно DevConf, про язык Go и о небольшом конкурсе для хабравчан с символическим призом $5.

Введение

Я уже давно разрабатываю игру в жанре Tower Defense с короной, но игра требует огромного количества времени, чтобы стать по настоящему качественной, а качественные игры это пункт #1 на пути к успеху (пункт #2 это куча денег на маркетинг, если кто не в курсе). Поэтому давно уже хотелось что-то сделать пускай небольшое, но своё и в короткие сроки.

«Осторожно многабукав!»
Читать полностью »

в 11:40, , рубрики: mongo, mongodb, orm, php, метки: , , ,

Прошла неделя с тех пор как я начал использовать MongoDB в качестве базы данных.
В качестве ORM изначально использовал mongodm, так как она написана в наиболее близком к моему стилю.
Но, по мере использования выяснились некоторые проблемы, например, использование 1Гб памяти при полной выборке по относительно небольшой коллекции: библиотека пыталась сразу создать все модели. Также указание соединения и названия коллекции в модели — не слишком удобно.

В связи с тем, что переписывать по сути надо не так много (4 файла в оригинале), написал за пару дней свой вариант, в своем стиле, и выложил сегодня на github.

Итак, представляю kanon-mongo:
Читать полностью »

Замена Dropbox на BitTorrent Sync + Raspberry Pi

Для Raspberry Pi нашли ещё одно полезное применение. Мини-компьютер отлично справляется с бэкапом и синхронизацией файлов между различными устройствами. К нему можно подключить внешний диск или большую флэшку, и RPi готов работать круглосуточно, синхронизируя файлы с компьютеров, ноутбуков и Android-устройств (скоро выйдет и клиент для iOS). Незачем платить за облачный сервис, если можно сделать такое же удобное «облако» у себя дома, и бесплатно.

Американский программист Джек Минарди опубликовал пошаговую инструкцию, как запустить BitTorrent Sync на Raspberry Pi.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js