Сегодня через одного из моих друзей до меня докатилась новость об анонсе нового форумного движка XenForo. Его авторами являются два уважаемых разработчика Майк Салливан (Mike Sullivan) и Кир Дарби (Kier Darby), благодаря которым мир увидел VBulletin 3.x таким, какой он есть сейчас.
Маслов Александр @drakmail
SRE
Поиск изображений на основе содержания
5 min
12KБазы данных изображений могут быть очень большими и содержат сотни тысяч и даже миллионы изображений. В большинстве случаев эти базы проиндексированы только по ключевым словам. Эти ключевые слова вносит в базу оператор, который также распределяет все изображения по категориям. Но изображения могут быть найдены в базе и на основе собственного содержания. Под содержанием мы можем понимать цвета и их распределение, объекты на изображении и их пространственное положение и т.д. В настоящее время алгоритмы сегментации и распознавания развиты недостаточно хорошо, тем не менее, сейчас уже существует несколько систем (в том числе коммерческих) для поиска изображений на основе их содержания.
+17
Идентифицируем пользователей Skype по перехваченному HTTP траффику
1 min
4.3K
Ребята из VEST (те же, что взломали алгоритм обфускации Skype) предлагают идентифицировать http траффик пользователей Skype по следующей схеме:
Skype при запуске лезет проверять новую версию и делает это следующим образом:
- Коннектится на ui.skype.com
- Выполняет запрос вида GET /ui/0/4.2.0.169./en/getlatestversion?ver=4.2.0.169&uhash=1c1cda2a959fc2926d25b5a852fc6468c, где c1cda2a959fc2926d25b5a852fc6468c (без первой единички, все правильно) — это MD5 (Skyper + имя пользователя)
Таким образом, если я ломанусь проверять новую версию, то пойду по урлу
http://ui.skype.com/ui/0/4.2.0.169./en/getlatestversion?ver=4.2.0.169&uhash=139913753c2af23ce2a42767cfdc55f79
Конечно из MD5 мы имя пользователя не узнаем, но составить список популярных ников заинтересованным лицам труда не составит. А так же можно использовать это хэш как универсальный ID пользователя. До свидания анонимность, в общем.
+42
Функции наносят ответный удар
5 min
2.3KВ этом топике хочу рассказать о подходе, который эксплуатирую уже несколько лет.
Сразу предупрежу, если Вы истовый фанат ООП, огромных конструкций и монструозных диаграмм классов, не читайте.
Вкратце, суть концепции — это перенос части unix way в программирование на PHP.
А конкретно, концепции простых программ, выполняющих одну функцию.
Сразу предупрежу, если Вы истовый фанат ООП, огромных конструкций и монструозных диаграмм классов, не читайте.
Вкратце, суть концепции — это перенос части unix way в программирование на PHP.
А конкретно, концепции простых программ, выполняющих одну функцию.
+48
MapReduce или подсчеты за пределами возможностей памяти и процессора (попробую без зауми)
8 min
92KДавно хотел рассказать про MapReduce, а то как ни взгляшешь на подобное — такая заумь, что просто ужас берет, а на самом деле очень простой и полезный подход для многих целей. И реализовать самому — не так уж и сложно.
Сразу скажу — топик — для тех, кто не разобрался что такое MapReduce. Для тех, кто разобрался — полезного тут ничего не будет.
Начнем с того как собственно родилась лично у меня идея MapReduce (хотя я и не знал, что он так называется, и, разумеется, пришла она мне куда позже чем Гугловсцам).
Сначала опишу как она рождалась (подход был неправильный), а потом как надо правильно делать.
А родилась она, как и, наверное, везде — для подсчета частоты слов, когда обычной памяти не хватает (подсчет частоты всех слов в Википедии). Вместо слова «частота» тут скорее должно быть «количество вхождений», но для простоты оставлю «частота».
В самом простом случае мы можем завести хеш (dict, map, hash, ассоциативный массив, array() в PHP) и считать в нем слова.
Но что делать когда память под хеш кончится, а мы посчитали только одну сотую всех слов?
Сразу скажу — топик — для тех, кто не разобрался что такое MapReduce. Для тех, кто разобрался — полезного тут ничего не будет.
Начнем с того как собственно родилась лично у меня идея MapReduce (хотя я и не знал, что он так называется, и, разумеется, пришла она мне куда позже чем Гугловсцам).
Сначала опишу как она рождалась (подход был неправильный), а потом как надо правильно делать.
Как посчитать все слова в Википедии (неправильный подход)
А родилась она, как и, наверное, везде — для подсчета частоты слов, когда обычной памяти не хватает (подсчет частоты всех слов в Википедии). Вместо слова «частота» тут скорее должно быть «количество вхождений», но для простоты оставлю «частота».
В самом простом случае мы можем завести хеш (dict, map, hash, ассоциативный массив, array() в PHP) и считать в нем слова.
$dict['word1'] += 1
Но что делать когда память под хеш кончится, а мы посчитали только одну сотую всех слов?
+125
MapReduce: более продвинутые примеры, попробуем без зауми
9 min
34KЧтобы не откладывать в долгий ящик сразу порассказываю несколько других примеров для MapReduce, обещанные в топике "MapReduce без зауми". (Если не понимаете полностью что такое MapReduce — прочитайте тот топик сначала! Без него не разберетесь)
Поговорим тут о подсчетах национальностей в городах, средних оценках и приводах учеников, ТИЦ, PageRank, входящих ссылках, нишевых ключевых словах, словах-синонимах, социальных сетях и общих друзьях. Постараемся обойтись без математических знаков и зауми.
Однако тема сама по себе сложная и все же напрячь мозги придется. Когда поймете — будет очень просто.
Допустим у нас есть Интернет. В Интернете есть исходящие ссылки.
Допустим на входе у нас есть такие данные об ИСХОДЯЩИХ ссылках, собранные нашим паучком:
Т.е. мы знаем, что Хабр ссылается на Apple, MS, Ubuntu и Яндекс но кто ссылается на Хабр? Да, вопрос примитивный, но все же разложим на MapReduce. Дальше будет интереснее и этот пример понадобится.
Поговорим тут о подсчетах национальностей в городах, средних оценках и приводах учеников, ТИЦ, PageRank, входящих ссылках, нишевых ключевых словах, словах-синонимах, социальных сетях и общих друзьях. Постараемся обойтись без математических знаков и зауми.
Однако тема сама по себе сложная и все же напрячь мозги придется. Когда поймете — будет очень просто.
Входящие ссылки
Допустим у нас есть Интернет. В Интернете есть исходящие ссылки.
Допустим на входе у нас есть такие данные об ИСХОДЯЩИХ ссылках, собранные нашим паучком:
habrahabr.ru -> thematicmedia.ru, apple.ru, microsoft.com, ubuntu.com, yandex.ru
thematicmedia.ru -> habrahabr.ru, autokadabra.ru
autokadabra.ru -> habrahabr.ru, yandex.ru
Т.е. мы знаем, что Хабр ссылается на Apple, MS, Ubuntu и Яндекс но кто ссылается на Хабр? Да, вопрос примитивный, но все же разложим на MapReduce. Дальше будет интереснее и этот пример понадобится.
+78
HTML5 для веб-дизайнеров. Часть 1: Краткая история языка разметки
7 min
14KTranslation
HTML5 для веб-дизайнеров
- Краткая история языка разметки
- Модель HTML5
- Мультимедиа
- Формы 2.0
- Семантика
- HTML5 и современные условия
HTML — язык, объединяющий всемирную сеть. Всего лишь посредством набора простых тегов, человечеству удалось создать несравнимую ни с чем по своим масштабам систему связанных между собой страниц и веб-узлов: от Amazon, eBay и Википедии, до личных блогов и сайтов, посвященных котам, похожим на Гитлера.
HTML5 — свежайшая версия этого языка. Но несмотря на то, что она собирается принести с собой значительные изменения и новые возможности, нельзя сказать, что подобное происходит впервые и до этого язык никак не развивался. Развивался и постоянно улучшался, причем с самого своего появления.
Как и всемирная сеть вообще, HTML — язык разметки гипертекста (HyperText Mark-up Language) — является детищем сэра Тима Берненс-Ли (Sir Tim Berners-Lee). В 1991 году он написал работу, озаглавленную «HTML Tags», в которой описал чуть меньше двух дюжин тегов, предложенных им для разметки веб-страниц.
Идея использовать для этого кодовые слова внутри треугольных скобок, впрочем, не принадлежит сэру Тиму. Такая система на тот момент уже существовала и использовалась в SGML (Standard Generalised Markup Language, стандартный обобщённый язык разметки), и вместо того, чтобы изобретать что-то с нуля, сэр Тим посчитал более рациональным взять за основу уже существующие решения. Аналогичный подход применялся и вообще на всем пути к HTML5 в процессах разработки.
+73
Грань между личным и конфиденциальным
2 min
1.1KВ эпоху социальных сетей грань между личными и конфидециальными данными понемногу стирается. Многие люди сообщают всему Миру что и где они делают в данный момент с погрешностью до пяти метров, и ни у кого это не вызывает беспокойства.
Но что если эти и более конфидециальные данные доступны любому человеку без вашего ведома?
Как? Ответ прост как сама идея и удобство сервиса под названием — интернет-банкинг. Очень удобно контролировать счет и знать куда тратятся деньги с вашей кредитной карты, читая RSS ленту в любимом ридере через защищенное соединение. Удобно и безопасно, но не всегда…
Сегодня с утра, дочитав все свои каналы Google Reader и имея еще немного свободного времени, решил почитать «Рекомендованные новости». Внимание привлекла следующая запись в ленте:
Но что если эти и более конфидециальные данные доступны любому человеку без вашего ведома?
Как? Ответ прост как сама идея и удобство сервиса под названием — интернет-банкинг. Очень удобно контролировать счет и знать куда тратятся деньги с вашей кредитной карты, читая RSS ленту в любимом ридере через защищенное соединение. Удобно и безопасно, но не всегда…
Сегодня с утра, дочитав все свои каналы Google Reader и имея еще немного свободного времени, решил почитать «Рекомендованные новости». Внимание привлекла следующая запись в ленте:
+103
Microsoft Kinect: будущее компьютерных игр [анимированный GIF, полтора мегабайта]
1 min
892Translation
![[Microsoft Kinect: будущее компьютерных игр]](https://habrastorage.org/getpro/habr/post_images/e87/aa4/531/e87aa4531096a6ec31081820091df6db.gif)
Так вот как выглядит будущее компьютерных игр. Угнетающе, не правда ли?
-9
“Кухня небольшой хостинг компании” – реплика
2 min
2.2KПрочитал на днях вот эту статью на хабре Кухня небольшой хостинг компании. Сама статья очень понравилась и сам готов подписаться под каждым словом автора. Но все же после прочтения статьи осталось чувство незавершенности. Дело в том, что автор рассмотрел лишь одну из возможных схем создания «небольшой хостинг компании». Я же, хотел бы в этой статье рассмотреть еще один возможный сценарий создания и развития хостинг компании, а именно компании основанной на так называемом реселлинге (reseller hosting).
Как всем известно, открытие реселлерского акаунта в большинстве хостинговых компаний означает, что вы платите компании N-ую суму денег за некоторое количество мегабайт на их сервере, допустимое количество доменов, MySQL, аккаунтов FTP, mail, ну и так далее… Далее «счастливый» реселлер, как и в случае с сервером делит доступное место и все остальное на тарифы и про себя наговаривая «ловись рыбка большая и маленькая» выносит все это на рынок. При этом, как правило, тех поддержка полностью ложится на плечи реселлера. «Материнская» хостинг компания о наличии клиентов реселлера даже не знает, так что обращаться за помощью к ней, клиенту реселлера бесполезно. Это означает, что как и в случае с сервером, при отсутствии платежей от реселлера, хостинг компания вырубает всех и вся кто имел отношение к недобросовестному реселлеру.
Но это не значит, что все начинающие хостинг компании идут по этой схеме реселлерства. Тут очень важным моментом является правильный выбор «материнской» хостинг компании. Расскажу на примере компании YeapHost.com, которую и представляю. Имея за плечами опыт создания многочисленных интернет сайтов, и постоянно пользуясь услугами российских хостинг компаний, было принято решение о покупке реселлерского акаунта для размещения всех своих проектов, и продажи невостребованных ресурсов, для отбития части денег. Когда стал вопрос о выборе хостера мы поняли, что ни одина из российских хостинг компаний не может удовлетворить наших требований, в которые входило соотношение цена-качество, адекватная служба поддержки, доступность, сама система реселлинга и так далее… Тогда мы начали подбирать среди тех кто за «железным занавесом», остановив свой выбор на одной английской компании. Прежде всего, наше внимание привлекло доступность сайтов размещенных на их серверах (just-ping.com), во вторых то, что клиент реселлера видим для «материнской» хостинг компании, а это значит, что и поддержка доступна для них, и то, что в случае банкротства реселлера клиенты не останутся у разбитого корыта.
В чем же тогда наше преимущество, и почему клиент должен отдать предпочтение YeapHost.com при том, что с тем же успехом может стать прямым клиентом «материнской» хост компании? Начнем с того, что мы предоставляем русскоязычную поддержку. Во-вторых, наши тарифы отличаются от того, что предлагает «материнская» хостинг компания, и ориентированы на потребности ру-нета. В третьих, удобная для ру-нета система оплаты webmoney, а не забугорные PayPal или банковские карты.
Так, что начальные затраты в $150 приведенные в статье к которой я ссылался в начале, можно использовать более эффективно: на рекламу, службу поддержки, а это значит, что и приток клиентов больше.
Приглашаю всех на тестирование нашего хостинга. Для этих целей, был создан тариф Тест. Прислушаемся к любой критике.
В заключении хотелось бы сказать, что действительно хостинг это дело хлопотное, но «Лишь идущий осилит дорогу».
Как всем известно, открытие реселлерского акаунта в большинстве хостинговых компаний означает, что вы платите компании N-ую суму денег за некоторое количество мегабайт на их сервере, допустимое количество доменов, MySQL, аккаунтов FTP, mail, ну и так далее… Далее «счастливый» реселлер, как и в случае с сервером делит доступное место и все остальное на тарифы и про себя наговаривая «ловись рыбка большая и маленькая» выносит все это на рынок. При этом, как правило, тех поддержка полностью ложится на плечи реселлера. «Материнская» хостинг компания о наличии клиентов реселлера даже не знает, так что обращаться за помощью к ней, клиенту реселлера бесполезно. Это означает, что как и в случае с сервером, при отсутствии платежей от реселлера, хостинг компания вырубает всех и вся кто имел отношение к недобросовестному реселлеру.
Но это не значит, что все начинающие хостинг компании идут по этой схеме реселлерства. Тут очень важным моментом является правильный выбор «материнской» хостинг компании. Расскажу на примере компании YeapHost.com, которую и представляю. Имея за плечами опыт создания многочисленных интернет сайтов, и постоянно пользуясь услугами российских хостинг компаний, было принято решение о покупке реселлерского акаунта для размещения всех своих проектов, и продажи невостребованных ресурсов, для отбития части денег. Когда стал вопрос о выборе хостера мы поняли, что ни одина из российских хостинг компаний не может удовлетворить наших требований, в которые входило соотношение цена-качество, адекватная служба поддержки, доступность, сама система реселлинга и так далее… Тогда мы начали подбирать среди тех кто за «железным занавесом», остановив свой выбор на одной английской компании. Прежде всего, наше внимание привлекло доступность сайтов размещенных на их серверах (just-ping.com), во вторых то, что клиент реселлера видим для «материнской» хостинг компании, а это значит, что и поддержка доступна для них, и то, что в случае банкротства реселлера клиенты не останутся у разбитого корыта.
В чем же тогда наше преимущество, и почему клиент должен отдать предпочтение YeapHost.com при том, что с тем же успехом может стать прямым клиентом «материнской» хост компании? Начнем с того, что мы предоставляем русскоязычную поддержку. Во-вторых, наши тарифы отличаются от того, что предлагает «материнская» хостинг компания, и ориентированы на потребности ру-нета. В третьих, удобная для ру-нета система оплаты webmoney, а не забугорные PayPal или банковские карты.
Так, что начальные затраты в $150 приведенные в статье к которой я ссылался в начале, можно использовать более эффективно: на рекламу, службу поддержки, а это значит, что и приток клиентов больше.
Приглашаю всех на тестирование нашего хостинга. Для этих целей, был создан тариф Тест. Прислушаемся к любой критике.
В заключении хотелось бы сказать, что действительно хостинг это дело хлопотное, но «Лишь идущий осилит дорогу».
-16
Отказ от архитектуры PowerPC
1 min
1.8KTranslation
У нас плохие новости для 0.1% пользователей которые все еще используют архитектуру PowerPC.
Начиная со следующей версии браузера, включая следующие сборки, мы не будем поддерживать архитектуру PowerPC для ОС Mac OS и Linux. Opera 10.6x будут последними версиями которые поддерживают PowerPC.
После завершения поддержки PowerPC, мы можем больше сосредоточится на качестве брузера Opera, чтобы она была самой современной для пользователей других архитектур.
Начиная со следующей версии браузера, включая следующие сборки, мы не будем поддерживать архитектуру PowerPC для ОС Mac OS и Linux. Opera 10.6x будут последними версиями которые поддерживают PowerPC.
После завершения поддержки PowerPC, мы можем больше сосредоточится на качестве брузера Opera, чтобы она была самой современной для пользователей других архитектур.
+34
F3: маленький PHP-фреймворк с огромными возможностями
7 min
27K
Хочу представить вашему вниманию легковесный PHP-фреймворк, на который я недавно наткнулся и который сразу же полюбил.
Fat-Free чем-то похож на известный Ruby-фреймворк Sinatra. Автор Fat-Free помешан на минимализме и чистоте кода, что положительно отразилось на этом простом каркасе для разработки самых разнообразных приложений.
Fat-Free состоит из одного файла и весит всего 55KB. При этом фреймворк обладает таким функционалом: специфический и довольно удобный шаблонизатор, гибкое кеширование, автоматическая защита от спама, интегрированные средства для юнит тестов, профайлер кода.
Он настолько маленький и быстрый, что даже может использоваться для контроля траффика Web-сервера.
Это, также, единственный фреймворк, который защищает Ваше приложение от хотлинкинга и DoS атак.
+132
Проблемы зоны .local в современных Linux дистрибутивах
1 min
33KМногие интернет провайдеры предоставляют для своих абонентов такой сервис, как торрент-ретрекер. Некоторые торрент-трекеры (в том числе и rutracker.org) в свои торрент-файлы добавляют информацию о таком таком универсальном ретрекер как retracker.local. Но в современных дистрибутивах (таких как Ubuntu, openSUSE и т.д.) этот адрес не резолвится правильно.
Проблема заключается в использовании сервиса avahi для анонсирования ресурсов компьютера в локальной сети, так как для этих целей используется зона .local. Чтобы решить эту проблему не обязательно избавляться от avahi. Достаточно указать, что если не удается найти поддомен, спросить об этом dns.
Проблема заключается в использовании сервиса avahi для анонсирования ресурсов компьютера в локальной сети, так как для этих целей используется зона .local. Чтобы решить эту проблему не обязательно избавляться от avahi. Достаточно указать, что если не удается найти поддомен, спросить об этом dns.
+133
Компиляция. 8: оптимизация
15 min
3.3KПосле приятного отдыха продолжаем писать компилятор для нашего джей-скрипа.
В предыдущем посте реализовали взятую с потолка эвристику для назначения регистров, и заодно начали оптимизировать код. А ещё перед этим читатели обнаружили баг в реализации присваивания.
В предыдущем посте реализовали взятую с потолка эвристику для назначения регистров, и заодно начали оптимизировать код. А ещё перед этим читатели обнаружили баг в реализации присваивания.
Далее в посте:
- Починка бага
- Чистка копирований
- Что получилось?
- Сворачивание констант
- Реализация
+39
Celery — распределенная очередь заданий
3 min
86KНа этот раз мы решили рассказать о замечательном продукте, который мы используем в нашей работе. Речь пойдет о Celery — «distributed task queue». Это распределенная асинхронная очередь заданий, которая обладает широким функционалом. В нашем конструкторе сайтов нам часто приходиться запускать асинхронные с точки зрения ответа пользователю задачи. На хабре, к сожалению, не много информации по данному продукту, а он заслуживает отдельного упоминания, это мы и хотим исправить.
Итак, что же умеет Celery:
Заинтересовало? Просим под кат.
Итак, что же умеет Celery:
- Выполнять задания асинхронно или синхронно
- Выполнять периодические задания(умная замена crond)
- Выполнять отложенные задания
- Распределенное выполнение (может быть запущен на N серверах)
- В пределах одного worker'а возможно конкурентное выполнение нескольких задач(одновременно)
- Выполнять задание повторно, если вылез exception
- Ограничивать количество заданий в единицу времени (rate limit, для задания или глобально)
- Routing заданий (какому worker'у что делать)
- Несложно мониторить выполнение заданий
- Выполнять подзадания
- Присылать отчеты об exception'ах на email
- Проверять выполнилось ли задание (удобно для построения Ajax приложений, где юзер ждет факта завершения)
Заинтересовало? Просим под кат.
+8
Другая книга про XSLT
2 min
6.7KВашему вниманию предлагается небольшая по объему книга (можно называть это брошюрой), посвященная XSLT и его использованию в качестве языка шаблонизатора при создании сайтов на UMI.CMS.
Это не реклама «еще одной cms», и «еще одного шаблонизатора», а лишь предложение познакомиться с одним из подходов к использованию технологии XSLT при создании сайтов, где в качестве системы управлением контента взята UMI.CMS.
Это не реклама «еще одной cms», и «еще одного шаблонизатора», а лишь предложение познакомиться с одним из подходов к использованию технологии XSLT при создании сайтов, где в качестве системы управлением контента взята UMI.CMS.
+37
getColor.ru — online color picker, позволяющий обмениваться цветами
2 min
4.4K
Наверное не ошибусь, если скажу, что большинство полезных решений появляется только благодаря возникновению каких-либо трудностей. О паре таких трудностей и одном замечательном сервисе, который может избавить вас от них, прямо сейчас.
Color picker
Многим должна быть до боли знакома ситуация, когда внезапно требуется HEX-цвет на полтона темнее или, скажем, бирюзовее, чем есть сейчас.
Если вы до сих пор не умеете представлять точный RGB-цвет в голове — вам не обойтись без color picker’а, который сделает эту работу за вас.
Лично я знаю только три вменяемых варианта, где можно взять color picker:
- Отдельная программа, специально предназначенная для этого;
- Практически любой графический редактор;
- Online-сервис
Надеюсь, утверждение, что онлайн-сервис является самым простым решением, не вызовет ни у кого сомнений — количество символов в каждом пункте тому свидетель.
+35
Программирование для Nintendo DS. Первые шаги
3 min
7.2KВ статье рассматриваются основы разработки программного обеспечения для Nintendo DS под Linux. Впрочем все используемые инструменты кроссплатформенные и не должно быть больших отличий для других ОС.
Для начала разберёмся, что же вообще из себя представляет эта игровая консоль. Вот, что нам говорит википедия:
* Процессор: ARM946E-S — 67 Мгц, сопроцессор ARM7TDMI — 33 МГц
* Память: 4 МБ, 656 КБ видео памяти, 512КБ памяти для текстур
* Экран: два отдельных ЖК-дисплея, диагональ 77 мм (3 дюйма), разрешение 256х192 пикселей, до 260 тысяч цветов. Расстояние между экранами — примерно 21 мм, что эквивалентно 92 «скрытым» строкам.
* Видеосистема: Поддержка 2D и 3D (T&L, преобразование координат текстур, маппинг текстур, альфа-смешивание, сглаживание, цел-шейдинг и Z-буферизация), теоретически позволяет отрисовывать 120 000 полигонов в сек (однако, имеет ограничение на отрисовку 6144 вершин или 2048 треугольников за один кадр).
* Звук: Стерео, 16-канальный ADPCM/PCM
* Накопители: 1 слот для собственных катриджей Nintendo DS, 2 слот для катриджей Nintendo Gameboy Advance
* Связь: IEEE 802.11 (Wi-Fi), для соединения используется собственный формат Nintendo. Радиус локальной сети от 10 до 30 метров в зависимости от условий.
* Управление: сенсорный экран, встроенный микрофон для голосовой идентификации, A/B/X/Y кнопки, D-Pad, шифты L/R, кнопки Start и Select
* Время работы: 6-10 часов
* Вес: 275 грамм
* Размеры: 148,7 × 84,7 × 28,9 мм
Для начала разберёмся, что же вообще из себя представляет эта игровая консоль. Вот, что нам говорит википедия:
* Процессор: ARM946E-S — 67 Мгц, сопроцессор ARM7TDMI — 33 МГц
* Память: 4 МБ, 656 КБ видео памяти, 512КБ памяти для текстур
* Экран: два отдельных ЖК-дисплея, диагональ 77 мм (3 дюйма), разрешение 256х192 пикселей, до 260 тысяч цветов. Расстояние между экранами — примерно 21 мм, что эквивалентно 92 «скрытым» строкам.
* Видеосистема: Поддержка 2D и 3D (T&L, преобразование координат текстур, маппинг текстур, альфа-смешивание, сглаживание, цел-шейдинг и Z-буферизация), теоретически позволяет отрисовывать 120 000 полигонов в сек (однако, имеет ограничение на отрисовку 6144 вершин или 2048 треугольников за один кадр).
* Звук: Стерео, 16-канальный ADPCM/PCM
* Накопители: 1 слот для собственных катриджей Nintendo DS, 2 слот для катриджей Nintendo Gameboy Advance
* Связь: IEEE 802.11 (Wi-Fi), для соединения используется собственный формат Nintendo. Радиус локальной сети от 10 до 30 метров в зависимости от условий.
* Управление: сенсорный экран, встроенный микрофон для голосовой идентификации, A/B/X/Y кнопки, D-Pad, шифты L/R, кнопки Start и Select
* Время работы: 6-10 часов
* Вес: 275 грамм
* Размеры: 148,7 × 84,7 × 28,9 мм
+68
Цветовое оформление консольного вывода
1 min
76KКратко о том, как сделать для своей консольной программы или скрипта цветной вывод текста, а также дополнить его другими элементами оформления. Собственно, назначить можно цвет текста, цвет фона под ним, сделать текст жирным, подчеркнутым, невидимым и даже мигающим.
+60
Пишем свою ОС: Выпуск 1
6 min
280KДанный цикл статей посвящён низкоуровневому программированию, то есть архитектуре компьютера, устройству операционных систем, программированию на языке ассемблера и смежным областям. Пока что написанием занимаются два хабраюзера — iley и pehat. Для многих старшеклассников, студентов, да и профессиональных программистов эти темы оказываются весьма сложными при обучении. Существует много литературы и курсов, посвящённых низкоуровневому программированию, но по ним сложно составить полную и всеохватывающую картину. Сложно, прочитав одну-две книги по ассемблеру и операционным системам, хотя бы в общих чертах представить, как же на самом деле работает эта сложная система из железа, кремния и множества программ — компьютер.
Каждый решает проблему обучения по-своему. Кто-то читает много литературы, кто-то старается поскорее перейти к практике и разбираться по ходу дела, кто-то пытается объяснять друзьям всё, что сам изучает. А мы решили совместить эти подходы. Итак, в этом курсе статей мы будем шаг за шагом демонстрировать, как пишется простая операционная система. Статьи будут носить обзорный характер, то есть в них не будет исчерпывающих теоретических сведений, однако мы будем всегда стараться предоставить ссылки на хорошие теоретические материалы и ответить на все возникающие вопросы. Чёткого плана у нас нет, так что многие важные решения будут приниматься по ходу дела, с учётом ваших отзывов.
Каждый решает проблему обучения по-своему. Кто-то читает много литературы, кто-то старается поскорее перейти к практике и разбираться по ходу дела, кто-то пытается объяснять друзьям всё, что сам изучает. А мы решили совместить эти подходы. Итак, в этом курсе статей мы будем шаг за шагом демонстрировать, как пишется простая операционная система. Статьи будут носить обзорный характер, то есть в них не будет исчерпывающих теоретических сведений, однако мы будем всегда стараться предоставить ссылки на хорошие теоретические материалы и ответить на все возникающие вопросы. Чёткого плана у нас нет, так что многие важные решения будут приниматься по ходу дела, с учётом ваших отзывов.
+270
Information
- Rating
- Does not participate
- Location
- Москва, Москва и Московская обл., Россия
- Date of birth
- Registered
- Activity