Search
Write a publication
Pull to refresh
34
0
Diamond Maker @Deeman

User

Send message

О kPHP: как котята ускоряют ВКонтакте

Reading time4 min
Views86K
Привет, хабровчане. Про kPHP от ВКонтакте уже многие успели прочитать и в прошлом топике, и где-то ещё, но деталей, конечно, пока было мало. Для удовлетворения собственного любопытства и интереса со стороны сообщества, мы обратились за комментариями к первоисточнику, то есть Павлу Дурову, который порекомендовал мне поговорить о kPHP с ребятами из команды — Олегом Илларионовым и Василием Бабичем, которые отвечали за перенос ВК на рельсы свежей разработки.

Первым делом я задал те вопросы, которые звучали в комментариях к анонсу: что с ООП, кто быстрее — слон или кит Java C# Go или kPHP, в каких проектах kPHP будет наиболее полезен и так далее. Кроме того, мы поговорили о планах развития и, немного, о других разработках и «кодовой» кухне ВК.
Читать дальше →

Компьютерные интерфейсы в кино

Reading time2 min
Views69K
Много интересного и полезного может перенять дизайнер интерфейсов из sci-fi фильмов. В разные годы компьютерные системы в фильмах отражали представления и стереотипы о дизайне будущего, зачастую опережая появление прототипов схожих устройств.

История


Фильмы 30-и-более летней давности трудно сегодня воспринимать всерьез, т.к. большинство систем будущего выглядело в лучшем случае так («Чужой», 1979):

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

Новый релиз Tizen SDK 2.2 и конкурс на 4 000 000 долларов

Reading time1 min
Views12K
Добрый день, Хабр!

Мы рады сообщить о новом релизе Tizen SDK версии 2.2, который доступен для скачивания на официальном сайте. Основные изменения коснулись UI и UX (в частности, была добавлена поддержка аппаратных кнопок «Меню» и «Назад»), API и внешнего вида инструментов разработчика, а также были исправлены ошибки, найденные в предыдущей версии. Подробнее об изменениях можно узнать из документа release notes и API change notes.

image

Теперь к самому интересному. В первой половине июля стартовал конкурс приложений Tizen App Challenge, который продлится до 1 ноября 2013 года. Общий призовой фонд составляет более 4 000 000 вечнозеленых американских президентов и будет разделён между 54 победителями.
Читать дальше →

Адаптивное меню с поддержкой retina

Reading time8 min
Views35K
В этой статье очень подробно описано пошаговое создание адаптивного меню для сайта с несколькими вариантами компоновки элементов (в зависимости от размера экрана девайса). Для поддержки retina-экранов используется иконочный шрифт.



Демо / Скачать исходники
Читать дальше →

Сайты для онлайн-обучения веб-разработчиков и веб-дизайнеров

Reading time2 min
Views128K
В заметке собраны сайты с обучающими материалами для веб-дизайнеров и веб-разработчиков. Старался не повторяться с постом 27+ ресурсов для онлайн-обучения хабраюзера nicolausYes.

Academic Earth


Множество бесплатных лекций, в том числе от известных университетов (Гарвард, MIT, Стенфорд и др.).

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

Командная строка WordPress

Reading time7 min
Views18K
WordPress по разнообразию настроек и функций всё больше становится похож на операционную систему. В результате выполнение задач в панели администратора оказывается слишком медленным способом работы, что особенно заметно при выполнении рутинных действий.

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

О преимуществах использования командной строки хорошо известно. Существует ли подобный инструмент для управления WordPress? Оказывается, да. Это wp-cli, интерфейс командной строки для WordPress.
Посмотрим, что это такое

32 миллионный краудфандинг от Canonical на производство нового смартфона

Reading time1 min
Views55K
image

22 июля, на Crowdfunding сайте Indiegogo была запущена новая кампания от Canonical на разработку нового мобильного телефона нового поколения. Смартфон будет поставляться с двумя операционными системами в режиме Dual Boot, недавно анонсированная операционная система от Canonical Ubuntu Touch и для тех кого новая операционная система чем то не устраивает, из коробки есть возможность использовать Android.


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

Туманность FireFox

Reading time1 min
Views33K
Астрономы обнаружили туманность в форме логотипа FireFox
image
На небе северного полушария существует созвездие, которое состоит из пяти ярких звезд на северо-востоке,
Подробности

«Практика создания товарных знаков» — книга про то, как создать айдентику и толково её использовать

Reading time8 min
Views9.4K
На прошлой неделе в издательстве «Манн, Иванов и Фербер» вышла моя книга, называется «Практика создания товарных знаков».

Здесь (на Хабре) много людей, которые пишут и обсуждают, и наверняка есть те, которые задумывались о своей книге. Этот пост для них. Еще этот пост для дизайнеров и менеджеров — фрилансеров, из студий и агентств.



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

Поэтому Игорь Манн оставил о книге такой вот отзыв:
Люблю я такие книги! Читай, бери и делай. Тема закрыта.

Рассказ автора о том, что получилось в результате

Каково быть слабым в математике

Reading time3 min
Views212K
Я, как учитель математики нередко разочаровываюсь в учениках. Они прогуливают. Они ленятся. Они плачут, словно младенцы, если у них отнять калькуляторы. Но хуже всего то, чего они не делают. Не задают вопросов. Не записывают. Не исправляют тесты, даже если это может повысить их общий балл. Разве их не волнуют их неудачи в учебе?



Существует много объяснений такого поведения: лень, равнодушие, отвлекающие внешкольные факторы и т.д. Но если спросите меня, то я назову более глубокую причину: незнание математики заставляет чувствовать себя глупо. А это неприятно.
Читать дальше →

SmartWatch 2 — еще умнее!

Reading time1 min
Views36K
За год своего существования на рынке умные часы Sony SmartWatch приобрели изрядное число поклонников. Количество приложений для этого необычного гаджета превысило две сотни, а запущенный недавно Open Smartwatch Project открыл независимым разработчикам возможности для создания собственных прошивок. Пришло время для новой модели — SmartWatch 2 стали более производительными, универсальными и, к тому же, влагозащищенными!



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

Проект полностью свободного Умного Дома

Reading time2 min
Views62K
Привет, Хабрасообщество!

У меня вот уже больше 10 лет горит идея сделать такой проект Умного Дома, чтобы любой желающий мог при желании собрать полный прототип из подручных материалов.
Совсем недавно, при общении с некоторыми представителями хабрасообщества, идея была скорректирована под то, что не плохо бы сделать некий массовый блог, где каждый смог бы оставлять свои идеи по поводу реализаций (под это дело я сегодня даже поднял лайвстрит на субдомене своего личного домена, ибо пока не придумал названия для проекта с учётом его новой специфики) + к этому некое хранилище проверенных проектов (на гитхабе. Уже даже есть Gentoo'шный layman'овский репозиторий под это дело) + к этому некую «биржу», где люди далёкие от паяльных дел, но желающие умный дом, могли бы найти желающих чуток подзаработать мастеров паяльного дела в своём городе :).
Дополнительным бонусом являлось бы объединение (по возможности всех) людей, занимающихся этой тематикой «под одной крышей» для обмена идеями и опытом.
Читать дальше →

Почему QA всё ещё не Stackoverflow?

Reading time5 min
Views24K
Позвольте предоставить субботние диванные рассуждения на тему «Как нам обустроить...» именно в виде статьи, а не вопроса, потому что статью прочтут в 10 раз больше читателей, а ориентирована она на всех читателей Хабра, а не только на читателей его вопросов.

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

Сохранение и восстановление прошивки медиаплеера из журнала Vogue

Reading time7 min
Views13K
Эксперименты с плеером из журнала Vogue это очень хорошо, но старая добрая админская привычка делать бекапы всего и вся не даёт мне покоя. Ибо испортить игрушку при экспериментах с чужими прошивками очень легко, а как вернуть её в первозданное состояние не ясно. Обидно будет испортить такую халяву.

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

Создание GTK+ апплета для LXPanel

Reading time9 min
Views5.5K
Статья о том, как написать свой апплет для LXPanel. Разработчики до сих пор не написали документации, поэтому учиться приходится по исходникам, которые наоборот богаты комментариями.
Я решил разобрать наглядно один пример и самый простой способ сборки в готовый *.so плагин.




Сборка идёт под Ubuntu, необходимы минимальные знания по С и GTK+.
Читать дальше →

Передача звука через картинки в соцсетях

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

Сейчас информация, которая хранится на обычном компьютере обычного человека, имеет разные разновидности: текст, звук, рисунки, видео. Казалось бы, разные вещи: для того, чтобы почерпнуть для себя что-то полезное, ту же книгу надо читать, звук — слушать, рисунки и видео — смотреть. Однако люди, в наше время, где компьютер или телефон — уже повсеместная вещь, мало кто задумывается, что вся информация в компьютерной системе представлена в цифровой форме, и все четыре разновидности медиа-контента объединены именно этой особенностью. В случае чего (если в России настанет та же ситуация, что и в Германии, например, касаемо копирастии), можно будет придумать альтернативные передачи контента путем представления его в других форматах. Один из таких способов я и хочу описать.
Читать дальше →

Научно-познавательные комиксы для детей

Reading time1 min
Views67K
В мае этого года мы проиллюстрировали небольшую познавательную статью для детей. В итоге у нас получился небольшой научный комикс из трех частей. Нам так понравился этот неожиданный результат, что мы попробовали целенаправленно нарисовать еще один. Потом еще. И вот уже у нас пять таких комиксов. Теперь мы стараемся выпускать новый каждый вторник.

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

Детальное описание действий IT-отдела — базовый набор документации

Reading time7 min
Views148K
Во многих западных странах IT-аутсорсинг регулируется либо отраслевыми стандартами, либо вообще на госуровне. У нас такого нет. Поэтому за несколько лет был собран документ, который детально определяет термины в IT-аутсорсинге и расписывает, что в какой тип работ конкретно входит. С его помощью мы документируем работы, а потом чётко и прозрачно считаем, что сколько стоит.

Вот глоссарий терминов, а вот каталог IT-услуг. Эти документы можно свободно скачивать и использовать. Особенно рекомендую руководителям IT-подразделений.

Ниже я расскажу, зачем мы всё это сделали, и для каких случаев документ будет очень полезен.
Читать дальше →

Поддержка USB в KolibriOS: что внутри? Часть 4: уровень поддержки каналов

Reading time15 min
Views7.5K
Рассказ об уровне взаимодействия с хост-контроллерами растянулся на две статьи и всё равно оставил за кадром некоторые детали — которые, как я надеюсь, заинтересованный читатель может восполнить непосредственно из исходников. Уровень поддержки каналов куда проще и в основном занят тем, что преобразует вызовы API для вышележащих уровней в нужную последовательность действий, включая блокировки, с нужным хост-контроллером.

Открытие канала


Функция USBOpenPipe из API, названная usb_open_pipe в коде pipe.inc, открывает новый канал по указанным характеристикам канала и «родительскому» каналу, где записаны характеристики устройства. Для этого она:
  • выделяет пару структур *hci_pipe+usb_pipe, описывающих канал и выравненных на контроллеро-специфичную границу, вызовом контроллеро-специфичной функции usb_hardware_func.AllocPipe;
  • выделяет пару структур *hci_gtd+usb_gtd, описывающих пустой дескриптор передачи и выравненных на контроллеро-специфичную границу, вызовом контроллеро-специфичной функции usb_hardware_func.AllocTD;
  • заполняет указатели: в структуре канала копирует указатель на структуру контроллера и указатель на данные устройства, общие для всех каналов, из «родительского» канала; между структурой канала и структурой пустого дескриптора заполняет указатели туда-обратно; структуру пустого дескриптора делает единственным элементом двусвязного списка каналов;
  • инициализирует мьютекс, который будет охранять все операции с этим каналом. Хотя вся обработка событий от USB-контроллеров происходит в потоке USB, про обращения к API нельзя сказать того же: чтение приложением файла с USB-флешки инициирует постановку передачи — и даже не одной — в очередь в контексте потока приложения. Чтобы новая передача не мешала USB-потоку обрабатывать завершение старой передачи, и нужен этот мьютекс;
  • захватывает мьютекс набора каналов устройства и убеждается, что устройство ещё не отключено;
  • вызывает контроллеро-специфичную инициализацию usb_hardware_func.InitPipe, охраняемую мьютексом, глобальным для контроллера;
  • добавляет новый канал в набор каналов устройства и отпускает мьютекс набора каналов;
  • при ошибке на одном из этапов откатывает все предыдущие этапы. Поскольку откатить контроллеро-специфичную инициализацию сложнее всего, она сделана на последнем этапе, после которого ошибок быть не может.

Контроллеро-специфичная инициализация последним действием добавляет новый канал в соответствующий список. Для управляющих каналов, равно как и для каналов массивов данных, есть всего один список, а вот для каналов прерываний нужно ещё выбрать один из нескольких вариантов.

Здесь в игру вступает планировщик scheduler.inc. Он как раз и выбирает один из списков каналов прерываний, а также убеждается, что для нового канала «достаточно места». Я напомню, что в каждом фрейме FullSpeed-шины под периодические передачи нельзя использовать более 90% времени, а в каждом микрофрейме HighSpeed-шины — более 80% времени.

Здесь я должна отметить, что если вы зачем-то пишете реализацию USB, которая должна работать в ваших условиях, на планировщике можно серьёзно сэкономить. Вам придётся в том или ином виде реализовать всё остальное, что описано в этой серии статей, но при отсутствии большой нагрузки можно вместо полного дерева обойтись всего одним списком каналов прерываний, обрабатываемым каждый фрейм/микрофрейм. Чуть более экономная схема, не слишком усложняющая реализацию, — один список каналов для каждого интервала обработки 1, 2, 4, 8, 16, 32 фреймов. Пока не нужно одновременно обрабатывать более одного устройства с большим трафиком на один хост-контроллер, такой подход ничем не уступает полноценному планировщику. Простая схема «сломается» в некоторых специфичных конфигурациях с двумя или более изохронными каналами FullSpeed-устройств или тремя или более изохронными каналами HighSpeed-устройств, но, быть может, никто и не будет запускать вашу реализацию в столь специфичных условиях?

Если же вы пишете реализацию USB, которая должна работать везде и всегда, планировщик вам тоже придётся написать.
И чем же это грозит?

Архив Рекурсивный.7z: какой-то файл и архив Рекурсивный.7z

Reading time8 min
Views34K
Формат архивов 7-Zip довольно гибкий и позволяет, например, включать весь архив как один из файлов внутри самого архива, лишь немного считерив. Разберём формат на примере: создадим почти вручную архив с именем «Рекурсивный.7z», содержащий два файла: «Какой-то файл.txt» с содержимым «Hello, Habrahabr!» и «Рекурсивный.7z», копию самого себя.

Краткая документация по формату входит в LZMA SDK. Архив начинается со следующей структуры размером 32 байта. Все позиции внутри архива кодируются как смещения относительно конца этой структуры.
сигнатура, 6 байт: { '7', 'z', 0xBC, 0xAF, 0x27, 0x1C };
версия формата, два байта { Major, Minor }, 7-Zip 9.20 пишет сюда { 0, 3 };
CRC следующих трёх полей, 4 байта;
смещение основного заголовка относительно конца этой структуры, 8 байт;
размер основного заголовка, 8 байт;
CRC основного заголовка, 4 байта.

Далее следуют данные файлов без какой бы то ни было информации о самих файлах и о границах данных. Основной заголовок, который описывает всё содержимое архива, размещается в конце архива.

Основной заголовок может быть сам по себе упакован (а также зашифрован). Поскольку он содержит структурированные данные (типа имён файлов), коэффициент сжатия достаточно неплохой. Именно для возможности подобного сжатия вся информация о файлах в 7z собрана в одном заголовке и полностью отделена от сжатых данных файлов. Признак упакованности — первый байт основного заголовка: он должен быть равен 1 у неупакованного заголовка и 0x17 у упакованного. Для создания архива вручную мы не будем ничего сжимать.

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

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity