• Кому нужен GPS? Забытая история навигатора 1985 года от компании Etak

    • Translation
    image
    Обложка журнала от июня 1985 года

    Тридцать лет назад компания Etak выпустила в свободную продажу компьютеризированную навигационную систему для автомобилей. Руководил проектом инженер Стэн Хани [Stan Honey], а за финансы отвечал Нолан Бушнел [Nolan Bushnell], сооснователь Atari. Навигатор настолько опережал своё время, что сама фраза «опережал своё время» кажется диким преуменьшением.

    Для адекватной оценки этого удивительного явления необходимо вспомнить, что спутниковая система глобального позиционирования GPS вступила в строй лишь в 1995 году. Да и тогда по запросу ФБР её точность была ограничена 100 метрами, чтобы враги не смогли ей использовать для наведения своих ракет. Это ограничение сняли в 2000 году, когда и началась эра навигационных гаджетов.

    Etak опередил GPS-навигацию на полтора десятка лет. Изобретателям пришлось оцифровывать карты самостоятельно и придумать, как хранить их в автомобиле ещё до того, как появились SSD, оптические диски и беспроводной интернет. Да, да – они хранили данные на кассетах!

    Практически всю систему пришлось разрабатывать с нуля. И она заработала!

    По текущим меркам, коммерческий успех системы был слабым – но это и не был полный тупик. Для создания устройства изобретателям пришлось придумывать технологии и собирать данные, которые до сих пор используют некоторые навигационные приложения и устройства. И вот, как это было.
    Читать дальше →
  • Новости формата WebP

      Можно смело утверждать, что этой осенью формат WebP переживает второе рождение. Сообщения о новых возможностях следуют буквально одно за другим. Здесь я приведу перевод самых интересных новостей, касающихся формата WebP и перспектив его развития и поддержки. Топик сознательно не оформляется как перевод, так как данные приведены сразу из нескольких источников. Итак, полупрозрачность, сжатие без потерь, поддержка IE6+ и так далее!
      Читать дальше →
    • Управляемые рыбки



        Некая фирма Air Swimmers запустила в продажу оригальную вещь. Управляемые воздухоплавательные средства в виде рыб (надеюсь, ассортимент скоро разнообразят). Настолько элементарная штука, что прям дух захватывает, насколько эффектно всё получилось.
        Читать дальше →
      • Osiris: Децентрализованный форум (Часть 1)



          Сейчас практически все сервисы уходят в децентрализацию и P2P, многие используют технологию P2P для уменьшения нагрузки на сервера компании, а некоторые — для сохранения приватности и свободы слова.

          Обе эти проблемы решает Osiris — Децентрализованный форум (или даже скорее портал)
          Читать дальше →
        • Одно успешное внедрение iBeacon: 200 маячков для РИФ+КИБ 2014

            По изначальной задумке, статья должна была называться «Легкий способ бросить спать», но кого сейчас этим удивишь? Итак, под катом вас ожидает небольшой рассказ о том, как наша команда внедряла indoor навигацию по iBeacon на территории РИФ+КИБ 2014, а также обо всех факапах и прочих приключениях, встреченных нами на этом пути.
            Читать дальше →
          • Интересные приемы программирования на Bash

            Эти приемы были описаны во внутреннем проекте компании Google «Testing on the Toilet» (Тестируем в туалете — распространение листовок в туалетах, что бы напоминать разработчикам о тестах).
            В данной статье они были пересмотрены и дополнены.
            Читать дальше →
          • Как обрабатывать терабайты данных в 1000 потоков на PHP — Hadoop/MapReduce

              Всем привет!

              Уже слышали про Bigdata? Ну да, веб растет, данных становится больше и их нужно держать под контролем и периодически анализировать. Базы данных — лопаются под нагрузкой, реляционная теория не совсем справляется с задачей, нужно решение. Маркетинг активно давит сверху, а железо острыми углами — снизу и попахивает суицидом.

              В этом посте постараюсь дать конкретные работающие рецепты и куски кода с краткими теоретическими выводами, как же обрабатывать >=терабайты в >=1000 потоков на PHP. Чтобы можно было взять и решить задачу, не теряя времени и не забивая голову теорией.

              Однако, если вдруг стало подташнивать и закружилась голова, можно дальше не читать — а полюбоваться на прекрасных птичек и забыть о вышенаписанном. Но будьте на чеку, Bigdata может завтра взять и постучаться в дверь ;-)

              Читать дальше →
            • Samba4 в роли AD + файловый сервер

              • Tutorial
                  В этой статье я рассмотрю по шагам подготовку к использованию Samba4 в роли контроллера домена вкупе с дополнительным файловым сервером так же на базе Samba4. Что в итоге мы получим? Два настроенных сервера с samba4, первый в роли domain controller, второй в роли member server с файлами пользователей. Функционирования этой связки я добивался около месяца, за сим, не поделится конечным рецептом просто не имею права…



                  Немного предыстории: в компании используется файловый сервер на базе samba3.6 с LDAP Backend, который содержит список всех пользователей и групп с правами доступа. Права доступа на каталоги выставляются с помощью xattr_acl (Extended file attributes), в LDAP хранится список пользователей с соответствием группам доступа. Собственно требуется переехать с этой инфраструктуры на samba4…
              Читать дальше →
            • Keypress 2.0.0

                Семнадцать дней назад (19 января 2014 года) вышла новая версия (2.0.0) джаваскриптовой библиотеки Keypress, предназначенной для удобного программирования реакций браузера на события, поступающие от нажатий (и от отпусканий) клавиш на клавиатуре.

                Опубликованный на Гитхабе список изменений позволяет уверенно огласить вот что: важнейшим из достоинств новой версии стала возможность ловить события не только во всём окне в целом, но и для одного или нескольких отдельных элементов DOM. Теперь и при программировании различающихся реакций у различных элементов на веб-страницах мы можем с удобством прибегнуть к библиотеке Keypress вместо тех её более ранних и более популярных аналогов (например, jQuery.Hotkeys), которые уступают Keypress по богатству возможностей.

                [Keypress]

                Возможности же эти вот каковы:

                • Реакция на нажатие и отпускание одной или нескольких клавиш. Поддерживаются синонимы кросс-платформенные (например, "meta" означает "cmd" или "ctrl" в зависимости от системы) и шифтовые (например, "@" означает сочетание Shift и двойки).
                   
                • Программируемые сочетания клавиш могут включать в себя не только классические модификаторы ("meta", "alt", "option", "ctrl", "shift", "cmd"), но и какие угодно другие клавиши. Например, программируя WASD-управление пошаговою бродилкою, нетрудно достигнуть того, чтобы нажатие и отпускание клавиши «W» означало шаг вперёд, но «W» и «D» совместно — шаг по диагонали вперёд+направо.
                   
                • Возможно указание сочетаний клавиш, состоящих не из одновременных, а из последовательных нажатий клавиш. Это такие сочетания, как код Конами, например.
                   
                • Специальные «считающие» комбинации позволяют программировать такие ситуации, в которых нажатие основной клавиши обнуляет некоторый счётчик, а каждое нажатие дополнительной клавиши (при удержании основной) увеличивает этот счётчик на единицу. David Mauro (автор Keypress) приводит в пример такое сочетание Tab+Space, при котором нажатие Tab тотчас же открывает первую вкладку в некотором наборе вкладок, а каждое нажатие на пробел (при удержании Tab) перебрасывает на следующую вкладку — на вторую, на третью, на четвёртую…

                Для каждой одиночной клавиши (или для комбинации) возможны дополнительные настройки. Эти настройки позволяют при необходимости сделать вот что:

                Читать дальше →
              • Делаем вебсокеты на PHP с нуля

                Некоторое время назад я выбирал библиотеку для работы с вебсокетами. На просторах интернета я натыкался на статьи по интеграции node.js с yii, а почти все статьи о вебсокетах на хабре ограничивались инструкциями к тому, как использовать phpdaemon.

                Я изучал библиотеки phpdaemon и ratchet, они достаточно монструозны (причём используя ratchet для отправки сообщения конкретному пользователю рекомендовано дополнительно использовать wamp). Мне не совсем было понятно для чего использовать таких монстров, которые требуют установку других монстров. Почитав исходники этих, а также других библиотек, я разобрался как всё устроено и мне захотелось написать простой вебсокет-сервер на php самостоятельно. Это помогло мне закрепить изученный материал и наткнуться на некоторые подводные камни, о которых я не имел представления.

                Так я решил написать необходимый для меня функционал с нуля.

                Получившийся код и ссылка на демонстрационный чат в конце статьи.
                Читать дальше →
              • 60 FPS? Легко! pointer-events:none!

                • Translation
                • Tutorial


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

                .hover .element:hover {
                  box-shadow: 1px 1px 1px #000;
                }
                Читать дальше →
              • Где jQuery хранит обработчики событий

                  В «интернетах» я не нашел подробного ответа на этот вопрос. Как правило, рекомендуется использовать стандартный метод для получения обработчиков:
                  $(elem).data('events')
                  

                  Но в моем случае он работать не хотел, поэтому пришлось немного разобраться в коде jQuery и найти где же все-таки они хранятся.
                  Читать дальше →
                • Третья версия типографа Муравьёва

                    Типограф Муравьева 3.0

                    Практически пять лет назад я опубликовал на Хабре пост про свой типограф: habrahabr.ru/post/67010. Прошло много времени, он несколько раз обновлялся и получал продолжения в модулях для движков и блогов. Пришло время задуматься о самом лучшем и грамотном инструменте, который будет за вас типографировать текст. Именно по этому я вернулся к своему типографу и все начал заново.

                    Типограф — инструмент для форматирования текста с использованием норм, правил и специфики русского языка и экранной типографики.



                    Естественно я понимал, что существуют и другие решения от других разработчиков, которые имеют свои плюсы и минусы. Но мне очень хотелось начать создавать продукт, который будет иметь минимальное количество минусов и сложностей. Другими словами я хочу создать самый лучший типограф в мире — пока только для русского языка. Просмотрев все существующие типографы, собрав все правила, тесты, проверки и книги по типографике, я постарался составить тот список правил, который получится нормально реализовать в новой, третьей версии типографа, а остальные оставить на обдумывание.

                    О продукте


                    1. Типограф получил поддержку Unicode (это позволяет получать на выходе сразу красивый и форматированный текст без HTML-мнемоники). По умолчанию он отключен, нужно вручную включить.
                    2. Включил около 70 правил, 30 дополнений и исключений к ним. На сайте есть раздел со всеми общими правилами, там можно подробнее прочитать. Но опять-таки они не все, т.к. есть множество под-правил и условий.
                    3. Теперь типограф занимаем всего один файл (EMP.php) и доступен для PHP, но в ближайшее время выйдут версии и для Python (в процессе), Ruby, Perl и JS.
                    4. Инструмент бесплатный и всегда будет оставаться таким. Открытый исходный код. При использовании мы не просим ничего указывать, но будет здорово, если расскажете об этом.
                    5. Каждое правило можно включить или выключить. Внутри много скрытых правил.
                    6. Реализована висящая пунктуация (некоторые это называют оптическим выравниванием).


                    Читать дальше →
                  • Как перестать бояться и полюбить шопинг на Amazon

                      image

                      Разбор полетов


                      По итогам прошлого поста мы выяснили, что:

                      • доставка происходит в обход Почты РФ через UPS/DHL;
                      • в Москву посылка приходит за 5 дней;
                      • для РФ Киндл продается только в версии «без встроенной рекламы» и без аксессуаров в отдельном лоте. Поэтому чехлы, к примеру, можно взять тут.
                      • Amazon оплачивает услуги таможенного брокера;
                      • заказывая доставку на рабочий адрес, никак не упоминайте название компании, иначе получателем будет компания, а не вы, со всеми последствиями;
                      • если ваша покупка дешевле 200 евро, включая стоимость доставки, вам не о чем переживать;
                      • если вы хотите сделать покупку весом до 31 кг. и стоимостью до 1000 евро, включая стоимость доставки, то вам желательно заказывать ее на адрес в одном из городов списка (Москва, Санкт-Петербург, Краснодар, Владивосток, Ставрополь, Новороссийск и Нижний Новгород). В этом случае доступны следующие варианты развития событий:
                        1. скорее всего, вам не о чем переживать, и покупку вам доставят без лишних проблем;
                        2. возможно, вам позвонят\ напишут из UPS и попросят прислать им отсканированную распечатку электронной квитанции заказа из Amazon, подписанный договор оказания услуг перевозки груза и копию паспорта.
                        3. самый маловероятный и худший вариант — квест по самостоятельному прохождению таможни. Не переживайте, с этой инструкцией процесс займет не больше 2 часов времени и будет не сложнее похода в библиотеку.
                      • это же Amazon! При возникновении любых проблем — задержка, потеря посылки, дополнительные таможенные сборы, повреждение товара — служба поддержки придет вам на помощь вплоть до полного возмещения стоимости.


                      Теперь о том, что же все-таки можно купить.

                      Читать дальше →
                    • Переход с bootstrap 2 на bootstrap 3



                        Этот небольшой обзор предназначенный тем, кто хочет быстро перевести свой сайт на новый бутстрап.

                        На днях вышла третья версия этого замечательного фреймворка, и, естественно, сразу захотелось посмотреть, как будут выглядеть сделанные на второй версии проекты, если просто поменять 2-ю на 3-ю. Оказалось что никак. Всё расползлось, разъехалось и кое-что перестало работать.

                        После чего захотелось всё быстренько поправить. И вот, что из этого получилось, читаем дальше.
                        Читать дальше →
                      • Bootstrap CSS Sprite: синтаксический сахар для <img />

                          UPD


                          Сегодня в этом уже нет никакого смысла. Просто настройте себе HTTP/2



                          Что это?


                          В один прекрасный день я отчётливо понял, что устал писать длинные ссылки на файлы изображений, каждый раз задавать им ширину и высоту, заботиться о том, чтобы это всё не прыгало при загрузке и не мигало при наведении мышкой. И я решил автоматизировать всю эту рутину. Так появился Bootstrap CSS Sprite — библиотека, которая позволяет работать со всеми вашими изображениями, как с одним спрайтом. При этом доступ к тайлам спрайта осуществляется в стиле Twitter Bootstrap.

                          Приведу пример: у нас есть файл изображения cat.png. Чтобы показать это изображение надо использовать тег <i>, указав для него CSS-класс img-cat, как мы делаем это в Twitter Bootstrap:

                          <i class="img-cat"></i>
                          


                          Читать дальше →
                        • Коллекция ресурсов для frontend и backend разработчиков

                            image

                            Некий dypsilon выложил на GitHub огромную коллекцию ссылок на ресурсы по веб-разработке, за что ему огромное спасибо.

                            Список состоит из ссылок на библиотеки, руководства и статьи.

                            Frontend: github.com/dypsilon/frontend-dev-bookmarks
                            Backend: gist.github.com/dypsilon/5819528 (много node.js)

                            Ссылок много, но все — строго по делу и упорядочены по группам (пример для фронтенда):
                            1. Архитектура
                            2. Фреймворки
                            3. Cross Browser
                            4. Cross Device
                            5. Паттерны и сниппеты
                            6. Манипуляция с DOM
                            7. … и многое другое

                            matmuchrapna советует еще frontdesk Вячеслава Олиянчука.
                            Настоятельно рекомендуется добавить в закладки, а лучше — почитать.
                          • Двухфакторная sms-авторизация в Redmine

                              image
                              Как мой коллега и обещал в одной из предыдущих статей, делимся опытом по настройке двухфакторной sms-авторизации для использования в Redmine в рамках работы.

                              Идея о добавлении второго шага авторизации обоснована все тем же усилением безопасности данных при использовании системы тикетов.
                              Вначале была опробована система OTP на основе Google Authenticator.
                              Не всем оказалось удобно этим пользоваться, потому решили добавить по просьбам трудящихся другой вариант авторизации — по sms.

                              Читать дальше →
                              • +18
                              • 8.2k
                              • 7
                            • Regexponline – интерактивный анализатор и редактор регулярных выражений

                                Есть одна бородатая шутка: «если у вас есть проблема, и вы собираетесь решать ее с использованием регулярных выражений, то у вас есть две проблемы». Действительно, регулярные выражения – очень мощный и гибкий инструмент, применяемый для решения весьма широкого круга задач. Но, как водится, для поддержания баланса, такой серьёзный инструмент имеет весьма недружелюбный вид.

                                (<([a-z]+[^>]*)>)(.*)(</\2>)

                                Такая чупакабра новичка приводит в трепетный ужас, да и знающего человека заставляет невольно поморщить нос. А ваша девушка вообще решит, что вы свихнулись, когда увидит вас за написанием такой конструкции.

                                image

                                Когда-то и мне пришлось по долгу службы подружиться с регулярными выражениями. Прочитав Фридла и несколько статей на Хабре, я, конечно, начал понимать этот синтетический язык. Тем не менее, каждый раз, когда приходилось написать очередную регулярку, я быстро закапывался в нагромождении скобок, слешей, точек, плюсов, знаков вопроса, и других хорошо вам знакомых конструкциях. Разобраться в этой каше было очень сложно, особенно если возвращаешься к задаче месячной давности. Я мечтал об инструменте, который помог бы мне разобраться в собственном творении. Приблизительно подходящих по смыслу сервисов нагуглилось с десяток, но все они приносили мало пользы. Как раз тогда я и начал разрабатывать этот проект.

                                Итак, regexponline – инструмент, способный наглядно изобразить структуру регулярного выражения, разобрав его по элементарным компонентам; продемонстрировать совпадающие и не совпадающие его части; помочь в написании и отладке выражения, которое почему-то не совпадает с нужной строчкой.
                                Читать дальше →
                              • intro.js — пошаговое руководство для веб-страницы



                                  Эта маленькая библиотека позволяет очень просто создать пошаговое введение для сайта или приложения. Достаточно добавить атрибуты data-intro и data-step с описанием и номером шага соответственно к нужным элементам страницы. Вот так:

                                  <a href='http://google.com/' data-intro='Hello step one!' data-step='1'></a>
                                  
                                  Читать дальше →
                                  • +129
                                  • 48.2k
                                  • 24