Как стать автором
Обновить

Разработка

Сначала показывать
Период
Уровень сложности

Создаем эмулятор Sega Mega Drive на C++

Уровень сложностиСредний
Время на прочтение26 мин
Количество просмотров31K

В этой статье описано создание эмулятора 16-битной приставки Sega Mega Drive на C++.

Будет много интересного: эмуляция процессора Motorola 68000, реверсинг игр, графика на OpenGL, шейдеры, и многое другое. И все это на современном C++. В статье много картинок, можно хоть на них посмотреть.

Blast Processing!

Делай нейминг как сеньор

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

Это объект Pizza, там хранится инфа о латте, а заказали его в Restaurant или в Pizzeria? Неудобно? Максимально. Мы читаем код существенно больше, чем пишем. И хочется сразу понимать, что происходит, не играя в квесты «что имел в виду автор», «да как это работает» и «я снова ничего не понял». Без навыка давать хороший нейминг невозможно писать качественный и поддерживаемый код. Про нейминг говорят заодно, в рамках архитектуры и общих инженерных практик. В статье поговорим про него отдельно.

Как получается, что код становится мало понятным даже для его авторов? Почему нейминг так важен? Как придумывать названия, не применяя целые теории нейминга? Как лёгким процессом организовать работу с неймингом в команде? На все эти вопросы мы ответим в статье.

Читать далее

AccessUSB: «флешка всевластия» для телевизоров LG

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

Многие современные телевизоры имеют скрытые сервисные меню, через которые можно посмотреть и изменить различные параметры, недоступные в обычном пользовательском меню. В телевизорах LG есть 2 основных сервисных меню - InStart и EzAdjust, которые можно вызвать посылкой "секретных" ИК кодов, отсутствующих на обычном пульте. Подробности о том, как открыть эти меню, легко найти в интернете, не буду на этом останавливаться, один из вариантов - в этой статье. К сожалению, многие интересные опции в сервисных меню были недоступны для изменения.

В меню InStart меня заинтересовала строка Access USB Status. Гугление не давало никакой информации о том, что это за Access USB, но интуиция подсказывала, что это что-то интересное.

Читать далее

Тайны Дистанционного Электронного Голосования в России нет

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

TL;DR в Российских системах электронного голосования нет достаточного обеспечения тайны голосования, и похоже это сделано специально

Executive summary: В Российских системах Дистанционного Электронного голосования допущена организационная ошибка при постановке задания, позволяющая при использовании побочного канала сбора данных о пользователях (на уровне логов вебсервера) организатору голосования нарушить тайну голосования. Разработчики специально обходят тему наличия и необходимости ликвидации такой уязвимости.

Почему ваш выбор - не тайна

Умирает ли RuTracker? Анализируем раздачи

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

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


Сегодня побеждает тот, кто принимает решения, основываясь на объективных данных. Навыки аналитика как никогда актуальны, а наличие под рукой необходимых для этого инструментов позволяет всегда быть на шаг впереди. Это и является подспорьем появления данной статьи.


У вас есть свой бизнес? Или может… хотя, не важно. Сам процесс добычи данных бесконечен и увлекателен. И даже просто хорошо покопавшись в интернете можно найти себе поле для деятельности.


Вот, что мы имеем сегодня – Неофициальная XML-база раздач сайта RuTracker.ORG. База обновляется раз в полгода и содержит в себе информацию о всех раздачах за историю существования данного торрент-трекера.


Что она может рассказать владельцам рутрекера? А непосредственным пособникам пиратства в интернете? Или обычному юзеру, увлекающемуся аниме, например?

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

Как украсть Macbook

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


У меня несколько раз воровали макбуки, и ни разу антикражные средства Apple вроде Find My Mac не помогли мне вернуть компьютер. Действительно ли они бесполезны? Можно ли доверять встроенному шифрованию FileVault? Как повысить шансы вернуть компьютер? Эта статья результат моих страданий в безрезультатных попытках вернуть украденные компьютеры.

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

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

Независимые браузеры более не конкурентоспособны

Время на прочтение6 мин
Количество просмотров76K
В 2017 году консорциум W3C принял стандарт Encrypted Media Extensions (EME), тем самым положив конец конкуренции со стороны независимых браузеров.

Теперь невозможно выпустить свой браузер, который будет воспроизводить некоторые из самых популярных материалов в интернете. Сайты вроде Netflix, Hulu, HBO и др. требуют защиты лицензионного контента. Доступ к ним возможен только по лицензионному соглашению с крупными корпорациями.

Во время разработки своего браузера Metastream я упёрся в стену, когда Google отклонил мою заявку на использование их DRM-движка Widevine для воспроизведения зашифрованного медиа. Эта проблема затрагивает и других разработчиков, и обойти её невозможно.

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

Как именно работает Meltdown

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

Уже третий день у всех на слуху слова Meltdown и Spectre, свеженькие уязвимости в процессорах. К сожалению, сходу найти что либо про то, как именно работают данные уязвимости (для начала я сосредоточился на Meldown, она попроще), у меня не удалось, пришлось изучать оригинальные публикации и статьи: оригинальная статья, блок Google Project Zero, статья аж из лета 2017. Несмотря на то, что на хабре уже есть перевод введения из оригинальной публикации, хочется поделиться тем, что мне удалось прочитать и понять.

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

Впечатления от китайской warez-сцены

Время на прочтение6 мин
Количество просмотров68K
*много букв, местами неполиткорректно, текст лежал в столе 5 лет

image Первое знакомство с представителями Китая на Сцене произошло через 2 дня после моего «входа» в ту самую Сцену. Мне понадобился доступ к популярному в то время варез-FTP “Typhoon Epicenter” (о том, что он располагался в Гонг Конге я узнал позже). Из всех друзей и знакомых организовать доступ мог только один человек – «приятель знакомого моего друга». Он оказался китайцем по вере и паспорту, и мы некоторое время плотно общались. Именно после знакомства с ним, я стал относиться к китайцам с пассивным интересом.

Это сумасшедшие в плане доведения своих навыков до абсолюта. Собственно, мы за это их и уважали, потому что у них были "мозги", которых порой не хватало нам – не в плане ума, а в плане кадров. А еще их было много… чертовски много.

Чаще всего китайцы вызывали у нас 3 вида эмоций: уважение, зависть и раздражение. В годах 1997-2004 любой пират, катающий болванки «Лучший Soft 200x», отдал бы почку за доступ к паре варезных серверов Китая.
Читать дальше →

Много бесплатных книг по программированию

Время на прочтение7 мин
Количество просмотров347K
Читать дальше →

«Фактура убила текстуру?» — мысли о роли текстур, фактур и материалов в играх

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


Не то чтобы я был диким фанатом консолей, но есть вещи, которые действительно впечатляют. Понятное дело, что консолям нового поколения без впечатляющих пилотов на рынке делать нечего. Речь идет не о Watch Dogs, который тоже заслуживает внимания, как любая песочница с открытым миром, а о Tom Clancy’s The Division анонсированная для PS4 и Xbox One. Картинка (я оцениваю лишь ее) выглядит действительно хорошо. Игры уже давно стремятся быть не играми. Это уже почти кино. Меня мало волнует сейчас вопрос гейм-плея данной игры. Сейчас я просто потребитель, который готов клюнуть на вкусную обертку.

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

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

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



Что я вижу здесь? Для начала посмотрите трейлер и решите, что видите для себя вы. А потом… лопата?


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

Путь JavaScript модуля

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


На момент написания этой статьи в JavaScript еще не существовало официальной модульной системы и все эмулировали модули как могли.

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

Вот в JavaScript своя атмосфера — в языке нет официальных модулей, более того все файлы лежат удаленно, один поток приложения. Приходится постоянно решать какие-то странные проблемы с загрузкой, хитро паковать модули в один файлы, чтобы ускорить время загрузки. Бывает, что нужно воевать с двойными стандартами, адаптировать модули другого формата.

Дело в том, что раньше не думали, что на JavaScript можно делать огромные проекты, а не просто «пропатчить DOM», поэтому о модулях не думали. Да и вообще не думали о будущем. И тут Внезапно будущее нагрянуло! Все вроде-бы уже есть, а модули в JavaScript, мягко говоря, запаздывают. Поэтому разработчикам приходится крутиться и выдумывать какие-то эмуляторы модульности.

Думаю многие из вас читали прекрасную статью Addy Osmani Writing Modular JavaScript With AMD, CommonJS & ES Harmony, которая стала одной из глав его книги Learning JavaScript Design Patterns в этой статье рассказывается про «современные» JavaScript модули или же читали достаточно старую статью JavaScript Module Pattern: In-Depth 2010 года про «старые» модули.

Я не буду переводить эти статьи и не буду делать из них солянку. В своей статья я хочу рассказать о моем модульном пути. О том как я проделал путь от «старых» модулей к «новым» и что использую сейчас и почему.
Читать дальше →

Основной цикл в Javascript

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


Все мы слышали про ajax и node.js. Они прочно обосновались уже не просто в словарном запасе, но и в наборе инструментов веб-разработчика. Ajax — асинхронное подтягивание данных с сервера на страницу, node — фреймворк с асинхронным IO. Но как в таком однопоточном языке, как Javascript, реализуется та самая асинхронность?

Вы, наверное, уже догадались из заголовка, речь пойдет об основном цикле («main loop»).
Читать дальше →

Ближайшие события

Будьте добры к программистам

Время на прочтение2 мин
Количество просмотров110K
— Тебе так повезло, что ты программист. Хотел бы я быть программистом.
— А почему ты не научишься?
— Я пытался, заходил на codeacademy и другие сайты, но это не моё.
— Да, программирование, действительно, не для всех.
— Тебе хорошо платят и ты можешь создавать разные вещи. Почти каждый день к тебе поступают сумасшедшие предложения минимум на 100 тысяч долларов.
— Да, это очень лестно. Немножко сносит крышу, если честно.
— Ты получаешь свою долю в компании, все уважают инженеров. Ты можешь воплотить любую идею в приложение и стать богатым. И тебе не нужно для этого никого нанимать.
— Вообще-то программирование делает меня несчастным.
Читать дальше →

Баним чужой аккаунт на Free-lance.ru

Время на прочтение2 мин
Количество просмотров14K
Так уж исторически получилось, что у меня были два аккаунта на Free-lance.ru. Один я заводил когда-то сам, а другой заводил мой наёмный сотрудник. Ни один из аккаунтов по назначению так и не был использован, просто они были когда-то давно заведены, частично заполнены и заброшены, с бывшим сотрудником я давно уже расстался, но доступ к обоим аккаунтам остался.
Сегодня приходит от сервиса очередное письмо с текстом:
Приглашаем вас вновь посетить Free-lance.ru
Мы заметили, что вы давно не заходили на Free-lance.ru. Тем временем, на сайте публикуется около 40 000 проектов в месяц, а средняя стоимость проекта составляет 20 000 рублей. Наверняка, многие из этих проектов будут вам интересны.

Надо сказать они приходят периодически и отключить их вероятно нельзя никак (игра с комбинацией флажков в разделе настройки уведомлений аккаунта нужного эффекта не принесла). Сегодня захотелось это наконец прекратить. Я видел два варианта действий:
  1. Сменить почту на несуществующую в природе (или чужую) и забыть.
  2. Честно выпилить аккаунты на сервисе.

Я решил попробовать действовать честно.
И появились нюансы

По следам разрушителей мифов или Почему Android тормозит, а %мобильная ОС% нет?

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


Добрый день, Хабр!

Мой предыдущий перевод статьи про аппаратное ускорение в Android вызвал бурное обсуждение в комментариях, основным мотивом которого был вопрос «так почему же тормозит Android?». Аналогичная ситуация наблюдается по всему интернету, и потому я привожу ниже еще один очень интересный и свежий перевод (снова из Google+), где автор Andrew Munn (о нем ниже) анализирует настоящие причины тормозов Android. С удовольствием прочитал этот пост сам и горд возможностью первым поделится им с хабрасообществом.

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

Немного математики, или Почему я не покупаю лицензионный контент

Время на прочтение2 мин
Количество просмотров7.9K
Копирайт и т.н. «правообладатели» — предмет бесконечного холивара, в т.ч. на Хабре. Авторы и правообладатели твердят, что из-за «любителей халявы» они разоряются и помирают с голоду. В нижеприведённой статье я попытаюсь показать, что индустрия умирает исключительно вследствие неспособности авторов договориться.

Представьте, что появился сервис, который за 200 рублей в месяц предоставляет полный и неограниченный доступ ко всей закопирайченной музыке, фильмам и играм. Вы согласны оплачивать такой доступ?

«Не треснет ли у тебя рожа, милейший?!» — наверняка подумал ты, %username%, читая предыдущий абзац. Не, не треснет, отвечаю я.

Давай посчитаем вместе

C Днем Программиста!

Время на прочтение2 мин
Количество просмотров4.2K
    ''=~(        '(?{'        .('`'        |'%')        .('['        ^'-')
    .('`'        |'!')        .('`'        |',')        .'"'.        '\\$'
    .'=='        .('['        ^'+')        .('`'        |'/')        .('['
    ^'+')        .'||'        .(';'        &'=')        .(';'        &'=')
    .';-'        .'-'.        '\\$'        .'=;'        .('['        ^'(')
    .('['        ^'.')        .('`'        |'"')        .('!'        ^'+')
   .'_\\{'      .'(\\$'      .';=('.      '\\$=|'      ."\|".(      '`'^'.'
  ).(('`')|    '/').').'    .'\\"'.+(    '{'^'[').    ('`'|'"')    .('`'|'/'
 ).('['^'/')  .('['^'/').  ('`'|',').(  '`'|('%')).  '\\".\\"'.(  '['^('(')).
 '\\"'.('['^  '#').'!!--'  .'\\$=.\\"'  .('{'^'[').  ('`'|'/').(  '`'|"\&").(
 '{'^"\[").(  '`'|"\"").(  '`'|"\%").(  '`'|"\%").(  '['^(')')).  '\\").\\"'.
 ('{'^'[').(  '`'|"\/").(  '`'|"\.").(  '{'^"\[").(  '['^"\/").(  '`'|"\(").(
 '`'|"\%").(  '{'^"\[").(  '['^"\,").(  '`'|"\!").(  '`'|"\,").(  '`'|(',')).
 '\\"\\}'.+(  '['^"\+").(  '['^"\)").(  '`'|"\)").(  '`'|"\.").(  '['^('/')).
 '+_,\\",'.(  '{'^('[')).  ('\\$;!').(  '!'^"\+").(  '{'^"\/").(  '`'|"\!").(
 '`'|"\+").(  '`'|"\%").(  '{'^"\[").(  '`'|"\/").(  '`'|"\.").(  '`'|"\%").(
 '{'^"\[").(  '`'|"\$").(  '`'|"\/").(  '['^"\,").(  '`'|('.')).  ','.(('{')^
 '[').("\["^  '+').("\`"|  '!').("\["^  '(').("\["^  '(').("\{"^  '[').("\`"|
 ')').("\["^  '/').("\{"^  '[').("\`"|  '!').("\["^  ')').("\`"|  '/').("\["^
 '.').("\`"|  '.').("\`"|  '$')."\,".(  '!'^('+')).  '\\",_,\\"'  .'!'.("\!"^
 '+').("\!"^  '+').'\\"'.  ('['^',').(  '`'|"\(").(  '`'|"\)").(  '`'|"\,").(
 '`'|('%')).  '++\\$="})'  );$:=('.')^  '~';$~='@'|  '(';$^=')'^  '[';$/='`';

Поздравляю Вас с праздником, дорогие коллеги!


А не порезвиться ли нам с кодом в честь праздника?
Предлагаю задачку-баловство под катом

Новостные сайты не готовы к высокой нагрузке

Время на прочтение4 мин
Количество просмотров2K
Два часа назад начались взрывы в Метро (горячая линия: 637-22-22, 622-14-30 и 624-34-40, список пострадавших, больницы, где сдать кровь, куда сообщить об опасности).
Я наблюдаю за новостными сайтами. Практически все они (из тех, которые обычно читаю я) не справляются с нагрузкой и «лежат», а именно:
  • lenta.ru — открывается 1 раз из 5, в заголовках опечатки.
  • gazeta.ru — открывается 1 раз из 10.
  • interfax.ru — поначалу открывался с ошибками ASP и битыми ссылками, теперь вообще недоступен.
  • mosmetro.ru — не работает вообще

Благоразумно поступили на rian.ru — если я правильно понял, они перевели весь сайт в мобильный (облегчённый) режим, так что страницу отдают без задержек.

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

Открывать ли публичный доступ к WiFi точке доступа?

Время на прочтение1 мин
Количество просмотров9K
Так сложилось, что у меня дома 100мбитный интернет-канал, безо всяких шейпилок и с неограниченным трафиком. Так как трафика мне не жалко — точка доступа (точнее — старенький ноут :) раздавала его налево и направо без каких-либо ограничений.
Кто-то из соседей им периодически пользовался, а мне было приятно, что кому-то от этого хорошо :)
Но тут появился странный товарищ — сначала пытаться подобрать пароль к ssh, а потом начал круглосуточно качать что-то в большом количестве, просаживая канал. КулХацкер, в общем. Пару раз заблокировал его mac — товарищ его после менял. Потом поставил простой WEP пароль — ну, думаю, поймет человек, верну обратно.
Ан нет — через пару дней он его «сломал» (не будем обсуждать небезопасность WEP) и продолжил качать порево что-то.
Так как заменять человеку домашнего провайдера в мои планы не входило — пришлось сегодня поднять hostapd, и вкрутить WPA2 шифрование.
Товарищ остался не у дел, но и несколько человек еще, кто-то из которых похоже просто сидел в «одноклассниках» и еще чем-то легком остался без халявного интернета.

Мне кажется, таким товарищем движет желание нае обмануть окружающих, мол если человек не знает что надо включать щифрование — то он «лох» и его можно «обуть».
В общем — поддерживаете ли вы идею раздавать свой интернет страждущим? :)
Я вот вижу только воркэраунд — сильно шейпить трафик с «незнакомых» адресов.

UPDATE
Забавно, если сначала все поддерживали идею, то сейчас, видимо почитав «хвост» топика, крутят пальцем у виска и говорят, мол «хочешь проблем — раздавай, и ващетыдурак».