Ещё раз о невероятной лояльности службы поддержки Logitech

Несколько раз читал какие-то (как тогда казалось) небылицы о поддержке продуктов компании Logitech: мол присылают новые девайсы вместо старых, причём просто по факту обращения с проблемой и демонстрации фото. Были упоминания, что старый девайс нужно было каким-то образом привести в негодность, причём соблюдая определённый порядок действий, ещё какие-то пляски с бубном, а в итоге — бесплатное новое устройство. Как-то это всё походило на байки и где-то может далеко (тысячи так на три километров западнее места моего проживания) приближенные к реальности, причём наверняка немного приукрашенные в рассказах. Короче говоря — не верил я в бесплатный сыр. Недавно обрёл собственный опыт взаимодействия со службой поддержки компании Logitech, и, надо сказать, — был просто поражён!

Результат превзошел ожидания

17 мая 2012, 00:44
90
Pagefest 185,3

Графический «велосипед» по мотивам Turbo Vision (дела давно минувших дней) из песочницы

Относительно недавно, прочитав местную статью "Демо, которых никто никогда не видел", решил, что тоже стоит пролить свет на некоторые плоды своей программистской молодости.

Начиналось с этого:
image

Под 'катом' 500Кб картинок!!!

16 мая 2012, 19:51
55
WVitek 137,1

Самые простые техники адаптивной верстки

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


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

17 мая 2012, 04:10
1054
grokru 328,5

Занимательная десятигигабитность


В то время как наши корабли, теперь уже оснащенные современными беспроводными технологиями, продолжают бороздить просторы Большого Театра, менее мобильные и более активные потребители трафика данных по-прежнему пользуются старым добрым Ethernet, который, в своей нынешней 10-гигабитной ипостаси, способен удовлетворить большинство их потребностей. В этой заметке мы дадим практический обзор технологий десятигигабитного Ethernet (10Gbe) в целом и сетевых адаптеров 10Gbe Intel в частности.

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

17 мая 2012, 10:04
109
saul 43,1

RESTful API для сервера – делаем правильно (Часть 1)

В 2007-м Стив Джобс представил iPhone, который произвел революцию в высокотехнологичной индустрии и изменил наш подход к работе и ведению бизнеса. Сейчас 2012-й и все больше и больше сайтов предлагают нативные iOS и Android клиенты для своих сервисов. Между тем не все стартапы обладают финансами для разработки приложений в дополнение к основному продукту. Для увеличения популярности своего продукта эти компании предлагают открытые API, которыми могут воспользоваться сторонние разработчики. Пожалуй Twitter был первым в этой сфере и теперь число компаний, последовавших этой стратегии, растет стремительно. Это действительно отличный способ создать привлекательную экосистему вокруг своего продукта.

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

17 мая 2012, 12:04
195
ischerbin 66,1

Вычисление CRC32 строк в compile-time из песочницы

По своей программистской природе я очень не люблю неоптимальность и избыточность в коде. И вот, читая в очередной раз на работе исходный код Mail.Ru Агента, вновь наткнулся на одну особенность в способе реализации перевода строк продукта на разные языки.

Локализация здесь осуществляется довольно нехитро. Все строки, требующие перевода, оборачиваются в макрос _TR():
wprintf(L"%s\n", _TR("Some translating string"));

Макрос возвращает нужную версию текста в зависимости от текущего используемого языка. Определён он следующим образом:
#define _TR(x) g_Translator.Translate(x)

Здесь происходит обращение к глобальному объекту g_Translator, который в функции Translate() считает в рантайме crc32 от указанной строки, ищет в своей xml-базе перевод с совпадающей контрольной суммой и возвращает его.

Не буду судить насколько такое решение оправдано, но оно проверено временем и показало себя достаточно надёжным. И всё бы ничего, но такое решение не лишено недостатков: по сути, функция делает лишнюю работу — контрольные суммы можно было бы подсчитать один раз на этапе компиляции, и использовать в дальнейшем уже готовые числовые значения. Это также избавило бы от необходимости хранить в исполняемом образе дублирующиеся строки, ведь они уже есть во внешнем xml-файле с переводами.

Немного погуглив по запросу «compile-time crc32» я быстро понял, что задача это не самая тривиальная, а готовых решений мне найти так и не удалось.

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

16 мая 2012, 19:30
72
Glowfall 42,2

Защита Asterisk при атаке на номер 8-800

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

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

17 мая 2012, 15:55
67
5hr4M 71,0

Вникаем в метаклассы Ruby

Ruby*

Примечание переводчика: данный пост является логическим развитием, а точнее «предысторией» поста Вникаем в include и extend и был подсказан в комментариях к нему пользователем murr, за что ему большое спасибо.

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

Если классы — это объекты, то у них должен быть свой собственный класс. Классом всех классов (как объектов) в Ruby является класс Class:

# один из способов создать новый класс
Dog = Class.new
    
# общепринятый способ создания класса
class Dog
    # какая-то реализация собачьего поведения
end

Dog.class
=> Class

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

16 мая 2012, 21:21
98
Svyatov 153,5

Javascript BMP Parser

Вступление


Еще с появления скриптов для отображения PDF, извлечения информации с MP3 и декодировки H.264 меня очень заинтересовала тема чтения и работы с бинарными данными в JavaScript.

В этом посте хотелось бы рассказать про свои эксперименты и рассмотреть эти возможности на относительно простом примере «ручного» парсинга и отображения BMP-файлов (а заодно и освежить память о школьных временах работы с BMP на Паскале :) ).

Сразу хочу предупредить, что речь будет идти именно о написании JavaScript самостоятельно, а не его генерации с исходных кодов других языков с помощью какого-либо транслятора типа Emscripten.

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

16 мая 2012, 20:31
104
RReverser 46,5

Landing page, которая работает



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

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

17 мая 2012, 13:06
262
makaroni4 33,7