Написать интересную статью на техническую тему очень сложно. Приходится балансировать между тем, чтобы не скатиться в технические дебри и тем, чтобы совсем ничего не сказать. Сегодня я попробую в общих словах (без деталей) поговорить о том, как обстоят дела с разработкой многопоточных desktop-приложений в не столь популярной на сегодняшний день, но наверняка знакомой многим российским разработчикам среде Delphi. Статья ориентирована на НЕ новичков в программировании, являющихся при этом новичками в области создания многопоточных приложений.
Александр @procks
User
Три ключевых принципа ПО, которые вы должны понимать
13 min
241KTutorial
Translation

Разрабатывая приложения, мы постоянно сталкиваемся с новыми подходами, языками и концептами. И постоянно мы мечемся в сомнениях «смогу ли я быть на волне, оставаться конкурентоспособным, учитывая все изменения и тренды?». Давайте задумаемся на мгновение, вспомнив фразу из моего любимого фильма «Касабланка» — в любви законов новых нет — так создан свет.
Все, что касается любви, применимо и к коду. Новых законов в коде нет. Если вы четко понимаете основные идеи разработки, вы способны максимально быстро адаптироваться к новым подходам. В этой статье я расскажу вам о трех основных принципах, которые, наряду с другими, позволяют регулировать сложность разработки. Я поделюсь своим видением вопроса, которое, надеюсь, поможет вам в повседневной работе.
+114
Реализация разделяемой памяти между драйвером и приложением
6 min
10KTutorial

Приветствую всех!
В этой небольшой статье речь пойдет об одном способе создания разделяемой памяти, к которой можно будет обращаться как из режима ядра, так и из пользовательского режима. Приведу примеры функций выделения и освобождения памяти, а также будут ссылки на исходники, чтобы можно было попробовать любому желающему.
+37
Загрузка Linux за 5 секунд
6 min
20KTranslation
Полный перевод статьи, анонсированной в http://habrahabr.ru/blogs/linux/41701/
На Конференции «Сантехников» Линукс (Linux Plumbers Conference) Arjan van de Ven, разработчик решений для линукс из Intel, автор PowerTOP, и Auke Kok, разработчик из Intel'овского Open Source Technology Center, продемонстрировали систему на базе линукс, которая загружается всего 5 секунд. Аппаратной основой для этой системы служил Asus EEE PC, с SSD диском. Разработчики преодолели рубеж в «загрузку за 5 секунд» в двух вариантах: модифицированная Fedora и модифицированный Moblin. EEE PC грузился быстрее, чем проектор успечал распознать сигнал с видеовыхода устройства, поэтому им пришлось обойтись без него и попросту поднести ноутбук поближе к зрителям.
На Конференции «Сантехников» Линукс (Linux Plumbers Conference) Arjan van de Ven, разработчик решений для линукс из Intel, автор PowerTOP, и Auke Kok, разработчик из Intel'овского Open Source Technology Center, продемонстрировали систему на базе линукс, которая загружается всего 5 секунд. Аппаратной основой для этой системы служил Asus EEE PC, с SSD диском. Разработчики преодолели рубеж в «загрузку за 5 секунд» в двух вариантах: модифицированная Fedora и модифицированный Moblin. EEE PC грузился быстрее, чем проектор успечал распознать сигнал с видеовыхода устройства, поэтому им пришлось обойтись без него и попросту поднести ноутбук поближе к зрителям.
+48
Двойная буферизация или Назад в прошлое. Часть вторая
3 min
11KДоброго времени суток!
На дворе уже четвёртое января, а моя душа всё не успокаивается. Поэтому я решил продолжить тему написания J2ME приложений. Плюс ко всему, несколько человек проявили нешуточный интерес к данной теме. Причём это были не только рядовые пользователи хабра, но и read-only аккаунты. Ну да ладно, ближе к теме.
Буквально сразу же после публикации топика, были получены очень дельные комментарии от хабраюзера barker, а именно замечание, по сути являющееся прописной истиной и второй комментарий — поправка, не менее дельная.
Введение
На дворе уже четвёртое января, а моя душа всё не успокаивается. Поэтому я решил продолжить тему написания J2ME приложений. Плюс ко всему, несколько человек проявили нешуточный интерес к данной теме. Причём это были не только рядовые пользователи хабра, но и read-only аккаунты. Ну да ладно, ближе к теме.
Буквально сразу же после публикации топика, были получены очень дельные комментарии от хабраюзера barker, а именно замечание, по сути являющееся прописной истиной и второй комментарий — поправка, не менее дельная.
+11
Детали реализации двойной буферизации в Windows Forms
7 min
18KО том, что такое двойная буферизация много написано здесь и здесь.
Здесь можно почитать, как реализуется ДБ на Java.
Я расскажу, как реализуется двойная буферизация на C#. Многое из того, что здесь написал можно прочитать в MSDN, но без деталей реализации.
Для ручного управления двойной буферизацией, .NET Framework предоставляет следующие 3 класса:
Здесь можно почитать, как реализуется ДБ на Java.
Я расскажу, как реализуется двойная буферизация на C#. Многое из того, что здесь написал можно прочитать в MSDN, но без деталей реализации.
Ручное управление двойной буферизацией (далее ДБ)
Для ручного управления двойной буферизацией, .NET Framework предоставляет следующие 3 класса:
- BufferedGraphics – обеспечивает буфер для временного хранения графики и средства вывода её на полотно контрола.
- BufferedGraphicsContext — обеспечивает создание нового объекта BufferedGraphics на основе объекта Graphics;
- BufferedGraphicsManager – предоставляет дефолтный BufferedGraphicsContext.
+29
Сервис определения направления ТВ-тарелки на спутник или Dishpointer по-русски
4 min
218KС наступлением летних каникул, для многих жителей крупных городов, жизнь постепенно переезжает за город. Одним из IT-атрибутов загородной жизни является наличие спутникового телевидения. Кто-то пытается самостоятельно установить и настроить антенну по аналогии с соседскими, кто-то прибегает к услугам установщиков, кто-то рассчитывает параметры установки линейкой на гуглокартах.
Для тех, кто пытается самостоятельно установить и настроить спутниковое ТВ я хочу представить сервис Geonames.ru, помогающий определить, в какую сторону направлять спутниковую тарелку.
Логика работы такая — пользователь выбирает спутникового оператора или конкретный спутник, затем на карте определяет точку установки антенны, на основе этих данных сервис рассчитывает направление и другие параметры установки.

В процессе разработки выяснилось, что аналогичные сервисы уже существуют за рубежом, самым популярным из которых является Dishpointer.com, которым пользуются, в том числе, и установщики. Я постарался сделать свой сервис ориентированным на русскоязычных и менее технически подготовленных пользователей, фактически — для домохозяек.
Далее я расскажу каким образом в сервисе рассчитываются необходимые параметры и с какими трудностями пришлось столкнуться в процессе разработки.
Для тех, кто пытается самостоятельно установить и настроить спутниковое ТВ я хочу представить сервис Geonames.ru, помогающий определить, в какую сторону направлять спутниковую тарелку.
Логика работы такая — пользователь выбирает спутникового оператора или конкретный спутник, затем на карте определяет точку установки антенны, на основе этих данных сервис рассчитывает направление и другие параметры установки.

В процессе разработки выяснилось, что аналогичные сервисы уже существуют за рубежом, самым популярным из которых является Dishpointer.com, которым пользуются, в том числе, и установщики. Я постарался сделать свой сервис ориентированным на русскоязычных и менее технически подготовленных пользователей, фактически — для домохозяек.
Далее я расскажу каким образом в сервисе рассчитываются необходимые параметры и с какими трудностями пришлось столкнуться в процессе разработки.
+45
Обзор on-line сервисов для преобразования формул Latex в картинки
2 min
80KИногда требуется вставить формулу в блог или форум, причем сделать это красиво. В статье приведен обзор сервисов предоставляющих такую услугу.
+33
Адаптивная верстка: CSS&JS фреймворк Skeleton
4 min
69K
В продолжение недавней статьи про адаптивную верстку, хочется более полно раскрыть тему. В реалиях, чаще всего, для адаптивной верстки используют CSS-фреймворки. Об одном из них я хотел бы рассказать, а если точнее – перевести мануал по ее использованию. Называется он Skeleton.
+78
Коллекции объектов в PHP
7 min
31KНа протяжении последних 5 лет я работаю с PHP. У него есть достаточно разных проблем, но это никогда не мешало создавать отлично работающие продукты.
Не смотря на это, есть ряд вещей, которые выполняются внутри достаточно «криво». Один из вопросов, который постоянно тратил мои нервы, был вопрос работы с множествами объектов с помощью массивом данных.
Не смотря на это, есть ряд вещей, которые выполняются внутри достаточно «криво». Один из вопросов, который постоянно тратил мои нервы, был вопрос работы с множествами объектов с помощью массивом данных.
+95
Сверхточный контроллер распознавания жестов за 70$
1 min
21KБазирующийся в Сан-Франциско стартап Leap в начале следующего года планирует представить на рынке более чем серьёзного конкурента Microsoft Kinect — и по цене, и по уровню технологического решения.
Leap 3D — система распознавания жестов пользователя обладает уникальной точностью анализа: 0.01 мм, что в сто раз точнее существующего на рынке решения Microsoft Kinect. Технически контроллер представляет из себя небольшое устройство, подключаемое к компьютеру через USB и совместимое с Windows и MacOS.
На видео ниже видно ниже как при помощи Leap 3D выполняется управление компьютером — скроллинг, масштабирование, игра и т.д.
Leap 3D доступно для предзаказа на сайте производителя (пока только для США) за 69.99$.
Leap 3D — система распознавания жестов пользователя обладает уникальной точностью анализа: 0.01 мм, что в сто раз точнее существующего на рынке решения Microsoft Kinect. Технически контроллер представляет из себя небольшое устройство, подключаемое к компьютеру через USB и совместимое с Windows и MacOS.
На видео ниже видно ниже как при помощи Leap 3D выполняется управление компьютером — скроллинг, масштабирование, игра и т.д.
Leap 3D доступно для предзаказа на сайте производителя (пока только для США) за 69.99$.
+95
К черту все или как получить 100к просмотров за 3 часа работы
2 min
2.2KПредыстория
Я часто слышу от своих друзей, что у них есть супер-идея для стартапа на миллион долларов. Только это никогда не доходит до реализации. Пожалуй, я бы тоже так и ничего не сделал полезного, но! Книга Бренсона «К черту все — берись и делай» подтолкнула меня сделать маленький, но полезный ресурс.
+11
Импульсный электролиз на Google Science Fair
9 min
65K
Как и было обещано организаторами конкурса Google Science Fair, 21 мая объявлены региональные победители.
Планета поделена на три региона:
— Северная и Южная Америка;
— Европа, Ближний Восток и Африка;
— Азиатско-Тихоокеанский регион.
В каждом регионе представлены три возрастные группы:
— 13-14 лет;
— 15-16 лет;
— 17-18 лет.
В каждой группе выбрано по 10 проектов, итого получилось 90 научных трудов.
+81
Простая кастомизация Checkbox и Radio
4 min
261KВместо вступления
Всем доброго времени суток!
Кастомизация элементов форм наверное одно из самых увлекательных занятий в Веб-дизайне. Оправданное ли это занятие решает каждый для себя сам, хотя очевидно, что в наше время дизайнеры и верстальщики все же уделяют этому свои силы и время.
К сожалению, одного только CSS частенько не достаточно, чтобы с легкостью оформить тот или иной элемент формы. Наверное поэтому многие используют штуки вроде Uniform для своих форм. Лично я всегда стараюсь сократить количество Javascript, используемого в подобных целях, поэтому хочу рассказать о совершенно нативном HTML+CSS методе кастомизации радио-кнопок и чекбоксов.
Уверен, что на большая часть специалистов на Хабре, применяют схожие методы, для тех же, кто использует js-библиотеки, вроде Uniform, надеюсь будет полезной эта статья.
Поехали!
Итак, сразу поставим цель: оформить чекбоксы и радио-кнопки, чтобы внешне они были похожи на js-магию Uniform, но сделать это максимально простым, нативным по отношению в HTML и CSS способом, а также избежать применения лишних тегов, сохраняя семантику. Как-то так.
+35
App Engine API под капотом
6 min
1.8KTranslation
Этим топиком я хочу открыть серию переводов блога Ника Джонсона. Ник публикует крайне полезные статьи по GAE, делится опытом, ставит необычные экспериметы. Надеюсь, эти материалы будут вам полезны.
Если вы используете App Engine только для простых приложений, то лучше воздержаться от дальнейшего чтения. Если же вам интересны низкоуровневые оптимизации или вы хотите написать библиотеку для работы с самыми сокровенными компонентами App Engine, прошу читать далее!
В конечном счете, каждый API-вызов проходит через один общий интерфейс с 4-я аргументами: имя службы (например, 'datastore_v3' или 'memcache'), имя метода (например, 'Get' или 'RunQuery'), запрос и ответ. Запрос и ответ являются буферами протоколов — двоичным форматом, широко используемым в Google для обмена структурированными данными между процессами. Конкретный тип запроса и ответа буферов протокола зависит от вызванного метода. Когда происходит вызов API, буфер протокола запроса формируется из данных, отправленных в запросе, а буфер протокола ответа остается пустым и в дальнейшем заполняется данными, возвращенными ответом API-вызова.
Если вы используете App Engine только для простых приложений, то лучше воздержаться от дальнейшего чтения. Если же вам интересны низкоуровневые оптимизации или вы хотите написать библиотеку для работы с самыми сокровенными компонентами App Engine, прошу читать далее!
Общий API-интерфейс
В конечном счете, каждый API-вызов проходит через один общий интерфейс с 4-я аргументами: имя службы (например, 'datastore_v3' или 'memcache'), имя метода (например, 'Get' или 'RunQuery'), запрос и ответ. Запрос и ответ являются буферами протоколов — двоичным форматом, широко используемым в Google для обмена структурированными данными между процессами. Конкретный тип запроса и ответа буферов протокола зависит от вызванного метода. Когда происходит вызов API, буфер протокола запроса формируется из данных, отправленных в запросе, а буфер протокола ответа остается пустым и в дальнейшем заполняется данными, возвращенными ответом API-вызова.
+43
Google Knowledge Graph
1 min
8.6KВнезапно Google объявил о запуске проекта, который готовился в недрах Evil Empire уже два года.
Придумав броский слоган things not strings (вещи — не строчки), нам хотят представить нечто вроде автоматической энциклопедии.
Придумав броский слоган things not strings (вещи — не строчки), нам хотят представить нечто вроде автоматической энциклопедии.
+37
Самые простые техники адаптивной верстки
2 min
465KTranslation
Сайтов с адаптивной разметкой с каждым месяцем становится все больше, заказчики кроме кроссбраузерности все чаще требуют адаптивность, но многие разработчики не спешат обучаться новым техникам. Но адаптивный дизайн — это просто! В этой статье представлено 5 примеров адаптивной разметки различных элементов веб-страниц.


+136
История создания одной социальной флэш-игры
8 min
2.5K
Так что все пришлось пробовать на своем опыте. До этого был только опыт создания различных сайтов — от простых, до довольно сложных (базы знаний по играм — см. раздел «ссылки»), т.е. по сути, опыт ограничивался HTML/PHP/MySQL. Но мы из тех людей, которые не боятся нового.
Я расскажу о создании, затратах, подводных камнях и профите.
Но обо всем по порядку…
+55
Взломать Wi-Fi за 10 часов
12 min
1.5MЕще не так давно казалось, что беспроводная сеть, защищенная с помощью технологии WPA2, вполне безопасна. Подобрать простой ключ для подключения действительно возможно. Но если установить по-настоящему длинный ключ, то сбрутить его не помогут ни радужные таблицы, ни даже ускорения за счет GPU. Но, как оказалось, подключиться к беспроводной сети можно и без этого — воспользовавшись недавно найденной уязвимостью в протоколе WPS.


+284
Простой универсальный переключатель на JavaScript
8 min
53K
Можно каждый раз писать JavaScript-код и стили к нему, но со временем это приводит к разрастанию кода, с чем в определенный момент мы и столкнулись.
Однако проблему можно решить гораздо элегантнее. Рассматриваемое ниже решение отличается простотой и не требует последующего участия JavaScript-программиста, так как верстальщик сможет самостоятельно вносить нужные изменения в стили.
+75
Information
- Rating
- Does not participate
- Location
- Киев, Киевская обл., Украина
- Date of birth
- Registered
- Activity