Сегодня утром я проснулся с каким-то непонятным чувством, которое заставило меня просто подумать о простых вещах нашего технологичного мира. Я не придумал, не открыл ничего нового, просто я по-другому посмотрел на этот мир. Сделал переоценку очевидных вещей, и мне стало и страшно, и скорбно. Я понял, что у меня отобрали компьютер – я более не понимаю, что он делает. Что у меня отобрали право – оно иллюзорно. Я понял, что в мире никто не понимает, куда мы движемся. Я осознался.
Читать полностью »
Архив за 18 июля 2013 - 2
About it
2013-07-18 в 16:31, admin, рубрики: безопасность, будущее здесь, мир, метки: безопасность, будущее здесь, мирПривет!
Недавно задался вопросом а сколько байт необходимо для корректного определения mime типа файла. В первую очередь погуглив полученными ответами неудовлетворился и поэтому решил сам провести маленькое исследование на эту тему.
Для начало расскажу, что я нагуглил и почему мне это не понравилось:
Review Board + Mercurial — опыт внедрения и автоматизации процесса code review
2013-07-18 в 16:18, admin, рубрики: code review, Mercurial, Программирование, Системы управления версиями, метки: code review, mercurialНекоторое время назад в компании, где я работаю в связи с расширением комманды было принято решение о введении процесса code review. Выбор инструмента пал на Review Board — продукт обладает достаточным функционалом, активно разрабатывается с 2006 года и является open source. В качестве системы контроля версий у нас используется Mercurial
О том, с чем какими задачами столкнулись при организации процесса код ревью для связки Review Board + Mercurial — под катом.
Читать полностью »
Поддержка USB в KolibriOS: что внутри? Часть 4: уровень поддержки каналов
2013-07-18 в 16:18, admin, рубрики: kolibrios, usb, Блог компании KolibriOS Project Team, колибри, операционные системы, метки: kolibrios, usb, колибриРассказ об уровне взаимодействия с хост-контроллерами растянулся на две статьи и всё равно оставил за кадром некоторые детали — которые, как я надеюсь, заинтересованный читатель может восполнить непосредственно из исходников. Уровень поддержки каналов куда проще и в основном занят тем, что преобразует вызовы 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, которая должна работать везде и всегда, планировщик вам тоже придётся написать.
Читать полностью »
Твердотельные накопители Transcend HDS740 формата half-slim SATA характеризуются скоростью чтения 510 МБ/с
2013-07-18 в 15:57, admin, рубрики: Новости, метки: новостиПоставки миниатюрных SSD формата half-slim SATA компания Transcend начала ещё в конце 2010 года. Теперь же производитель обновил линейку, представив новые модели HSD740, использующие микросхемы MLC. Полурослики Новинки имеют габариты 54 х 39 х 4 мм и представлены моделями объёмом 32 и 64 ГБ. При этом накопители соответствуют стандарту MO-297 JEDEC и оснащаются интерфейсом SATA 6 Гбит/с.
Intel планирует отказаться от бренда Atom
2013-07-18 в 15:14, admin, рубрики: Новости, метки: новостиКомпания Intel думает о том, чтобы отказаться от бренда Atom. Ликвидация торговой марки может начаться в четвёртом квартале этого года. Компания предполагает, что у потребителя сложилось отрицательное мнение о чипах Atom, как о медленных и малопроизводительных, что привело к скромным показателям продаж планшетов и смартфонов, основывающихся на данных чипах. Хотя, тут следует отметить, что проблема глубже, ведь на рынке практически нет устройств, предлагающих SoC Intel. А причина уже этой проблемы кроется ещё глубже.
Доверие к сертификатам МООС или «Папа у Васи силен в математике»
2013-07-18 в 15:10, admin, рубрики: информационная безопасность, образование, образование 2.0, Учебный процесс в IT, метки: образование, образование 2.0Популярность Coursera, Udacity и других площадок для дистанционного обучения набирает обороты. Всем знакома распространенная структура МООС-курсов: видео-лекции, при просмотре которых даются мини-тесты на усвоение материала, домашние задания с дедлайном выполнения, минимальные возможности для совместного обсуждения курса учениками. Подтверждение личности ученика минимально: достаточно только email, чтобы начать проходить курс, и в конце получить для некоторых курсов — подписанный крупным вузом бумажный сертификат.
Но достаточно ли такой структуры для доверия к МООС-сертификатам вузов? Мы попробовали выделить недостатки МООС и дополнить существующую систему методами контроля и защиты от накруток, а для проверки этих гипотез — реализовали свой прототип веб-сервиса по дистанционному обучению.
Рассмотрим общепринятую сейчас структуру онлайн-курсов с точки зрения ее безопасности и защищенности от накруток и злоупотреблений.
Читать полностью »
Интересные аспекты развития JavaScript и веб-технологий 2013-го года
2013-07-18 в 14:59, admin, рубрики: canvas, grunt, headtracking, javascript, jslint, testing, web workers, браузерные игры, веб-аналитика, Веб-разработка, метки: Canvas, grunt, headtracking, javascript, jslint, testing, web workers, браузерные игрыВсем доброго дня!
Проанализировав множество блогов, докладов, презентаций, посетив пару конференций и пообщавшись на них с веб-разработчиками разного профиля, я выделил для себя основные направления в области JavaScript-разработки, которые активно развиваются или только начинают развиваться (и, по моему мнению, им стоит уделить внимание в целях ознакомления). Цель статьи – осветить их, и дать пищу для размышлений, как именно полученные знания можно было бы применить на практике.
8 вещей, которых не должен бояться разработчик
2013-07-18 в 14:53, admin, рубрики: gtd, качество кода, Программирование, Проектирование и рефакторинг Изменять код
В процессе разработки программного обеспечения нет такого понятия, как «стагнация». Все, что вы разрабатываете сейчас — просто очередная версия компонента, который вероятно будет меняться в будущем. Изменение является самой распространенным явлением в мире разработки программного обеспечения и вам лучше принять это как факт. Рассчитывайте на возможные изменения всего, что вы разрабатываете и поэтому проектируйте ваш код более модульным. Это упрощает изменения и в тоже время увеличивает качество кода. Старайтесь придерживаться концепций DRY и YAGNI. Вы часто будете в ситуации когда вы смотрите на ваш код и представляете, что вы могли бы сделать это лучше. Так пусть эта мысль не мешает вам спать. Садитесь сразу за дело и рефакторинг! Если не сделаете это сейчас, вы возможно никогда этого не сделаете. Чем дольше ждете, тем сложнее и дороже это будет. И это может вырасти в лишнюю головную боль с которой не захочется связываться.
«Хороший код — это код который легко изменять. Код стремится измениться до момента, когда его уже не легко изменять. Весь код становится плохим кодом.» Неизвестный автор.
Читать полностью »
Добавление синхронизированного текста транскрипции к видео на HTML5
2013-07-18 в 14:24, admin, рубрики: accessibility, html, html5, Веб-разработка, видео, стенограмма, субтитры, транскрипция, метки: accessibility, html5, видео, стенограмма, субтитры, транскрипция Современный web уже достаточно сложно представить без видео, однако часто напрямую восприятие речи в подобном представлении может быть затруднено, например, в случае пользователей с проблемами слуха, людей, неуверенно воспринимающих живую речь на слух и пр. В подобной ситуации обеспечить доступность контента поможет HTML5, предоставляющий функционал добавления к медиа файлам субтитров с транскрипцией, то есть с текстовой записью речи.
Читать полностью »