Search
Write a publication
Pull to refresh
54
0

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

Send message

Как написать свой компонент для iOS

Reading time23 min
Views19K
image

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

Модификация UEFI BIOS, часть первая: знакомство с UEFITool

Reading time6 min
Views224K
Прикрываясь полумифическими «безопасностью» и «защитой простого пользователя от буткитов» производители UEFI все сильнее закручивают гайки с каждым новым поколением своих продуктов. При этом поддержка предыдущих поколений быстро сходит на нет, и их пользователям ничего не остается, кроме как брать эту самую поддержку в свои руки. Конечно, при отсутствии исходного кода вносить какие-то изменения довольно сложно, но и без него можно сделать многое.
В своих предыдущих статьях об UEFI я планировал описать различные полезные модификации, которые помогают преодолеть некоторые заложенные производителями ограничения, но тогда до них руки не дошли, зато теперь — самое время.
В первой части этой статьи я опишу работу с написанным мной инструментом для модификации образов UEFI, а вторая будет посвящена самим модификациям.
К первой части

Искусственный интеллект в авиасимуляторах

Reading time13 min
Views39K
image

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

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

Игры под угрозой

Reading time4 min
Views146K
Доброго времени суток уважаемые хабражители, в частности та ее часть которая занимается игра-строительством. Предлагаю Вашему вниманию перевод статьи Томаса Бекдейла How In-app Purchases Have Destroyed The Industry, которая затронула меня как игродела так и игрока с опытом. В приведенной статье автор размышляет о будущем восприятии видео игр игроками и в дальнейшем исчезновении в ней таких понятий как ностальгия и атмосферность, что не может не волновать таких людей как я, каждая молекула которого начинает оживляться при одном лишь слове «игра».

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

Почему эти игровые студии так намереваются себя убить?


Прим.: Рисунок из х/ф. «Монти Пайтон и поиски Святого Грааля»

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

Основы многопользовательской игры на Unity3D

Reading time11 min
Views163K


Привет, Хабрахабр!

Я, как и многие из вас, большой поклонник многопользовательских игр. В них меня прельщает в основном дух соревнования и возможность приобретать улучшения, накапливая достижения. Да и сама идея выхода в свет все большего количества игр данного типа побуждает к действию.
С недавнего времени я и сам взялся за разработку собственного проекта. И поскольку на Хабрахабре статей на эту тематику не нашел – решил поделиться своим опытом написания многопользовательской игры на движке Unity3D. Также хочу рассказать о компонентах Network и NetworkView, атрибуте RPC и встроенных методах-ивентах. В конце статьи подан пример игры и, разумеется, сам проект для Unity. Итак…
Читать дальше →

Самая сложная игра всех времён

Reading time3 min
Views198K

Robot Odyssey

Нью-йоркский программист Дэвид Ауэрбах (David Auerbach) вспоминает компьютерную игру, для прохождения которой ему понадобилось 13 лет и которая определила его будущее как программиста.
Читать дальше →

GreenCubes: от Minecraft до MMORPG за 4(?) года

Reading time14 min
Views29K
Приветствую вас, уважаемые Хабравчане!

В этом посте я бы хотела поделиться с вами историей развития своего игрового проекта «GreenCubes», надеюсь, она будет вам интересна, а для кого-то окажется даже полезной. Думаю, данная статья может пригодится тем, кто начинает или недавно начал какой-то игровой проект, ведь чужой опыт всегда стоит учитывать. Я расскажу о том, насколько вредно зависеть от решений и услуг других, как делать всё самостоятельно и о том, что мечтать не вредно. В настоящее время мы располагаемся тут.

Minecraft


Наш проект (в начале нас было только двое: я и Feyola) начинался как сервер Minecraft для друзей. То есть, скорее для друзей друзей друзей, потому что с друзьями мы играли и раньше, но в этот раз решили запуститься уже на более-менее постоянной основе и не сильно фильтровать приходящих людей. Запуск наметили на 1 ноября 2010 года, приурочив его к выходу Minecraft Halloween Update, который принёс в Minecraft много нового. Мы расстались с нашим старым миром и начали всё заново, серьёзно и даже без админских команд.
Читать дальше →

Pdef — компилятор и язык описания интерфейсов для веба

Reading time12 min
Views10K
В начале прошлого года мне пришла в голову идея написать собственный язык интерфейсов (IDL), который был бы похож на Protobuf или Thrift, но предназначался бы для веба. Я надеялся закончить его где-нибудь месяца за три. До первой стабильной версии прошло чуть больше года.

Pdef (пидеф, protocol definition language) — это статически типизированный язык описания интерфейсов, который поддерживает JSON и HTTP RPC. Он позволяет один раз описать интерфейсы и структуры данных, а потом сгенерировать код для конкретных языков программирования. Пидеф подходит для публичных апи, внутренних сервисов, распределенных систем, конфигурационных файлов, как формат для хранения данных, кеша и очередей сообщений.

Основная функциональность:

  • Развитая система пакетов, модулей и пространств имен.
  • Поддержка циклических импортов и зависимостей типов (с некоторыми ограничениями).
  • Простая система типов, основанная на четком разделении интерфейсов и структур данных.
  • Наследование сообщений (аналог struct'ов) и интерфейсов.
  • Поддержка цепочек вызовов, например, github.user(1).repos().all().
  • JSON как формат данных и HTTP RPC для передачи данных.
  • Возможность использовать другие форматы и RPC.
  • Подключаемые кодогенераторы (официально поддерживаются Java, Python и Objective-C).
  • Опциональность кодогенерации, т.е. Пидеф позволяет сериализовать данные и отправлять запросы руками.

Зачем нужен Пидеф? В первую очередь для повышения производительности труда и упрощения разработки и поддержки клиент-серверного, сервисно-ориентированного и распределенного кода. Но он также объединяет документацию и описание апи и позволяет строить вертикально-интегрированные системы, в которых снижены накладные расходы на взаимодествие отдельных компонентов.

Пример описания сообщения:
message Human {
    id          int64;
    name        string;
    birthday    datetime;
    sex         Sex;
    continent   ContinentName;
}

Примеры использования (примеры сгенерированного кода):
Json
{
    "id": 1,
    "name": "Ivan Korobkov",
    "birthday": "1987-08-07T00:00Z",
    "sex": "male",
    "continent": "europe"
}

Java
Human human = new Human()
    .setId(1)
    .setName("John")
    .setSex(Sex.MALE)
    .setContinent(ContinentName.ASIA)

String json = human.toJson();
Human another = Human.fromJson(json);

Python
human = Human(id=1, name="John")
human.birthday = datetime.datetime(1900, 1, 2)

s = human.to_json()
another = Human.from_json(s)

Objective-C
Human *human = [[Human alloc]init];
human.id = 1;
human.name = @"John";
human.sex = Sex_MALE;
human.continent = ContinentName_EUROPE;

NSError *error = nil;
NSData *data = [human toJsonError:&error];
Human *another = [Human messageWithData:data error:&error];


Установка, использование и руководство по языку

Tribute to HIEW

Reading time5 min
Views49K
Навеяно древними воспоминаниями… Проходят года и десятилетия, сменяют друг друга названия операционных систем, но кое-что всё же остаётся неизменным. Среди всего многообразия околохакерского ПО меня всегда удивлял HIEW; непостижимым образом этой консольной программе удаётся бороться со временем и быть популярной даже сегодня. HIEW занял свою нишу и стал основным инструментом промышленного вирусного аналитика. Вам может показаться это странным и неудобным, но использовать HIEW для вирусного анализа — очень эффективно.
Читать дальше →

Iodine: DNS туннель через закрытый WiFi

Reading time9 min
Views105K
Дано: полное отсутствие интернета и виднеющийся WiFi hot-spot, в котором предлагают ввести логин-пароль. Или 3G, в котором нет интернета (потому что закончились деньги), но есть страничка провайдера с предложением дать оных денег.
Задача: получить интернет (легальным?) методом посредством туннелирования его через DNS.
Решение: linux+ iodine + routing + NAT + squid, и всё это под управлением network manager'а.
В статье: описание организации DNS туннеля посредсредством программы iodine, нюансы организации маршрутизации через образовавшийся туннель, самописный помощник для iodine и network manager.

Лирика: Занесла меня судьба на славный остров Кипр, кой славен своим П/пафосом, фраппэ и таким интернетом, после которого российские опсосы начинают выглядеть ангелами во плоти. В частности, попытка подключиться к интернетам закончилась ожиданием, что местный провайдер (Сyta) смилостивится, таки закончит пить оный фраппэ и дотянет до меня поганый ADSL 4Мб/768кбит всего-навсего за €151 (подключение) + €40 в месяц (за 4 мегабита! >_<). Ожидание тянулось и тянулось (как бы уже третья неделя пошла), а рядом был славный PrimeTel, который предлагал за €4/час (172р/час) осчастливить меня интернетом прямо тут и сейчас через едва видный WiFi. Я бы даже и согласился, но видна точка доступа была только на балконе, а в квартире связь была нестабильной и часто терялась. Так что оставалось одно решение (помимо взлома WEP-сети соседей, что уж совсем уголовщина) — это злоупотребить сервисом DNS, который безвозмездно, то есть даром, предоставляет PrimeTel для своих незарегистрировавшихся подлюченцев.

Те, кому интересно «howto» — решение далее по тексту, а пока что начнём с теории процесса.
Читать дальше →

Как работала Башня Тесла по передаче энергии — собственное «расследование»

Reading time31 min
Views276K


Несколько лет назад мы – авторы данного материала – изрядно покопавшись в патентах, дневниках и лекциях Н.Теслы (благо, образование позволяло) пришли к выводу, что пресловутая Башня Тесла по передаче энергии не «фейк», а вполне рабочая конструкция.

В результате нескольких лет исследований, размышлений, изучения первоисточников, сопоставления данных, формирования и отсеивания гипотез и т.п. – появилась красивая и, по сути, простая модель, которая строго вписалась в классическую физику и была подтверждена численным моделированием в пакете Ansoft HFSS. С момента начала проекта, мы провели некоторое количество дискуссий в различных сообществах, где от нас требовали «статью для технарей» — в результате появился данный материал.

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

Видео-курс по JavaScript на русском языке

Reading time1 min
Views218K
Здравствуй, Хабр!

Представляю вам свой курс по JavaScript, недавно прошедний на Хекслете. Курс состоит из семи лекций общей продолжительностью около четырех часов.



Первая лекция: Введение в JavaScript, немного истории, числа (тут есть ошибка: функция toFixed округляет значения).



Остальное – под катом.
Читать дальше →

Машинное обучение и анализ данных. Лекция для Малого ШАДа Яндекса

Reading time3 min
Views62K
Все чаще и чаще мы сталкиваемся с необходимостью выявлять внутренние закономерности больших объёмов данных. Например, для распознавания спама необходимо уметь находить закономерности в содержании электронных писем, а для прогнозирования стоимости акций — закономерности в финансовых данных. К сожалению, выявить их «вручную» часто невозможно, и тогда на помощь приходят методы машинного обучения. Они позволяют строить алгоритмы, которые помогают находить новые, ещё не описанные закономерности. Мы поговорим о том, что такое машинное обучение, где его стоит применять и какие сложности могут при этом возникнуть. Принципы работы нескольких популярных методов машинного обучения будут рассмотрены на реальных примерах.

Лекция предназначена для старшеклассников — студентов Малого ШАДа, но и взрослые с ее помощью смогут составить представление об основах машинного обучения.

image

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

Делаем елочные игрушки из светодиодных лент

Reading time3 min
Views108K
Как-то перед Новым Годом остался я без ёлки и без ёлочных игрушек (так как дело было посреди океана). А душа требовала праздника… Ёлку я ещё кое-как сымитировал, а вот над игрушками пришлось подумать. Тут-то под руку и попались остатки светодиодных лент разноцветных.
Далее для начала разжую, а затем вкратце опишу как сделать оригинальные светодиодные ёлочные украшения. А заодно и рассмотрим варианты подключения.
читаем...

Создание собственных драйверов под Linux

Reading time24 min
Views210K


Многие мои друзья и знакомые крутят пальцем у виска или задаются вопросом: не жмёт ли мне череп, когда узнают, что я пишу драйвера под Linux. Слово “драйвер” окутано каким-то почти мистическим смыслом, и постичь Дао его написания способны лишь избранные гуру.
К счастью это не так. Не знаю, как обстоят дела с написанием драйверов под другие операционные системы, в т.ч. и наиболее популярные, но под linux, вне зависимости от аппаратной архитектуры драйвера пишутся очень просто. Для написания драйвера необходимы базовые знания языка си, представление о работе ОС линукс (базовые), понимание того, что мы хотим получить, желание чтения документации и исходных кодов, ну и усидчивость. Всё.
Вы хотите посмотреть как написать драйвер для своего устройства? Тогда ныряйте под кат!
Читать дальше →

Внутреннее устройство llst, часть 2 или Little Smalltalk + LLVM = ♥

Reading time29 min
Views9.7K
Всем привет! Совместно с humbug, мы предлагаем вашему вниманию третью статью из цикла о Low Level Smalltalk (LLST). Надемся, что статья будет интересна не только любителям велосипедов необычных языков программирования, но и тем, кто интересуется такой замечательной вещью, как LLVM.

Напомню, что целью нашего проекта является создание собственной виртуальной машины, совместимой с Little Smalltalk на уровне байт-кодов. Ключевым отличием является гетерогенная архитектура, которая позволяет исполнять байт-коды как программно, так и компилировать их в низкоуровневые инструкции процессора посредством трансляции в IR код LLVM. Разумеется, второй способ позволяет достичь более высокой производительности и задействовать имеющиеся в нашем распоряжении вычислительные ресурсы оптимальным образом.

Однако, обо всем по порядку…
Читать дальше →

Верстка для самых маленьких. Верстаем страницу по БЭМу

Reading time14 min
Views394K
Недавно хабраюзер Mirantus написал статью «Как сверстать веб-страницу», в которой рассказывал о том, как же сверстать веб-страничку. В его статье было подробно рассмотрено, как выделить отдельные элементы из заданного шаблона, подобрать шрифты и т.п. Однако его подход к написанию, собственно, веб-страницы мне показался не очень хорошим, о чем я написал в комментариях.

В данной статье я хочу рассказать, о том, как можно сверстать «хорошо» (по крайней мере структурировано ;), а заодно рассказать и о методологии, которая может «упростить жизнь» при верстке. Структура поста будет следующей:

  • BEM
  • Собственно пример — как сверстать страницу

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

Как Яндекс использует лингвистику в поиске

Reading time1 min
Views18K
Яндексу ежедневно приходится отвечать на десятки миллионов запросов. Поисковая система должна уметь быстро и точно их обрабатывать. Без применения лингвистики поисковая система сможет найти только точные совпадения в проиндексированных документах. Чтобы найти релевантные документы, системе необходимо правильно определить язык запроса, исправить опечатки, произвести морфологический разбор каждого слова, расширить запрос синонимами или вообще его переформулировать. В этой лекции Алексей Зобнин постарался дать студентам Малого ШАДа ответы на следующие вопросы:

  • Зачем нужно учитывать морфологию?
  • Как и зачем мы определяем язык запроса и документа?
  • Что такое корпус языка?
  • Что такое языковые модели, и как они применяются в поиске?
  • Как производится морфологический анализ несловарных слов?
  • Как определить правильное значение и морфологическую парадигму омонимов?
  • Какие бывают опечатки, и как мы их исправляем?
  • Что такое расширения запроса и чем они могут быть полезны?



Страница лекции

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

Введение в OpenSceneGraph

Reading time7 min
Views42K
OpenSceneGraph — это кроссплатформенная библиотека с открытыми исходниками для разработки высокопроизводительных 3D-приложений. Это не игровой движок, связывающий пользователя по рукам и ногам заложенными в него ограничениями, а именно библиотека — набор полезных модулей, которые отлично работают как поодиночке, так и в сборке.



Ядро OpenSceneGraph, собственно граф сцены, — довольно тонкая обёртка вокруг OpenGL, позволяющая задавать иерархию объектов и выполнять над ними любые желаемые преобразования:
  • изменять характеристики узлов (двигать объекты в пространстве, назначать им материалы, свойства освещённости, шейдеры и прочие режимы и атрибуты OpenGL);
  • перестраивать дерево любым желаемым образом (создавать и удалять объекты, перелинковывать их к другим узлам графа);
  • делать обход графа, выполняя для каждого их узлов какие-либо действия;
  • ну и конечно рендерить сцену при помощи OpenGL.

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

DIY-диммер для современных умелых рук

Reading time4 min
Views132K


Хотите собрать DIY-диммер, но нет желания/возможности возиться с самостоятельным травлением печатных плат? Пожаловав под кат вы научитесь «делать» такие же красивые платы. Готовый ZIP-архив для заказа на Китайских производствах ждет вас внутри.
Читать дальше →

Information

Rating
Does not participate
Date of birth
Registered
Activity