• Наберитесь смелости сделать не как все. 12 устаревших интерфейсных и технологических решений

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

      Подтверждение пароля или email при регистрации


      Как часто случается, что человек промахивается, и набирает неправильный пароль, когда он внимательно набирает его в первый раз при регистрации? Что случится, если он при регистрации ошибется в пароле? Какие эмоции вы испытываете, когда вас просят ввести подтверждение пароля? Было ли хоть раз, что вы не копировали подтверждение email из первого поля, а набирали его руками?


      Читать дальше →
    • Занимательная геодезия

        Всем привет!
        Сегодня я расскажу тебе, %USERNAME%, о башмаках и сургуче, капусте, королях координатах, проекциях, геодезических системах и совсем чуть-чуть о веб-картографии. Устраивайся поудобнее.

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

        Вот, казалось бы, простая вещь — географические координаты. Широта и долгота, что может быть проще. А вот представьте, что вы очутились на необитаемом острове. Смартфон утонул, а других средств связи у вас нет. Остаётся только написать письмо с просьбой о помощи и по старинке выбросить его в море в запечатанной бутылке.

        Вот только незадача — вы совершенно не знаете, где находится ваш необитаемый остров, а без указания координат никто вас не найдёт, даже если выловит ваше письмо. Что делать? Как определить координаты без GPS?

        Об этом и о многом другом - подробнее под катом
      • Памятка пользователям ssh

          abstract: В статье описаны продвинутые функций OpenSSH, которые позволяют сильно упростить жизнь системным администраторам и программистам, которые не боятся шелла. В отличие от большинства руководств, которые кроме ключей и -L/D/R опций ничего не описывают, я попытался собрать все интересные фичи и удобства, которые с собой несёт ssh.

          Предупреждение: пост очень объёмный, но для удобства использования я решил не резать его на части.

          Оглавление:
          • управление ключами
          • копирование файлов через ssh
          • Проброс потоков ввода/вывода
          • Монтирование удалённой FS через ssh
          • Удалённое исполнение кода
          • Алиасы и опции для подключений в .ssh/config
          • Опции по-умолчанию
          • Проброс X-сервера
          • ssh в качестве socks-proxy
          • Проброс портов — прямой и обратный
          • Реверс-сокс-прокси
          • туннелирование L2/L3 трафика
          • Проброс агента авторизации
          • Туннелирование ssh через ssh сквозь недоверенный сервер (с большой вероятностью вы этого не знаете)
          Читать дальше →
        • FPV

            Эта статья для тех, кто с детства мечтает летать как птица. Сразу оговорюсь, в реале Вы не полетите, но чувства будут очень близки. Итак, речь идет о FPV (first person view)-полетах. FPV — это новое движение в авиамоделизме, его суть заключается в управление моделью самолета через установленную на борту камеру. Картинку с борта самолета Вы получаете в реальном времени и видите через очки “виртуальной реальности”. Также, на очках установлен датчик поворота головы и камера на самолете поворачивается вслед за поворотами Вашей головы. У вас появляется неподдельное ощущение реального присутствия. А самолетом Вы управляете по радио каналу. Со стороны это выглядит примерно так:


            А вот как выглядит изнутри:

            Читать дальше →
          • Закрепляем jQuery — 25 отличных советов

            • Translation
            Перевод отличной статейки. Думаю, будет полезна как новичкам, которые только приступили к использованию jQuery, так и тем, кто уже какое-то время с ним работает. А кого-то, возможно, заставит глянуть эту чудесную библиотечку. Многие советы имеют отношение не только к jQuery, но и к JavaScript в целом. Лично для меня была весьма и весьма познавательной, посему и захотелось донести это «до масс». Перевод не дословный, но передающий смысл и максимально адаптированный к русскому языку.

            Далее все написано от имени автора оригинальной статьи.

            Введение


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

            Я не эксперт в jQuery. И даже не претендую, поэтому, если встретите ошибки, смело поправляйте меня и вносите предложения по улучшению (поправлять и присылать поправки нужно автору статьи, а не перевода — зам. пер.).

            Я называю себя «среднестатистическим» пользователем jQuery и я думаю, что всем остальным будет интересно почитать и что-нибудь почерпнуть из «фишек», «трюков» и техник, которые я освоил за последний год. Статья получилась куда длиннее, чем я предполагал изначально, так что в самом начале я привел «содержание» для более удобной навигации и возможности при желании пропустить не интересующие моменты.

            Содержание


            1. Загружайте фреймворк с Google Code
            2. Используйте «шпаргалку» (cheat sheet)
            3. Соединяйте все ваши скрипты и уменьшайте размер файла
            4. Используйте возможности Firebug для ведения логов
            5. Минимизируйте операции выборки в пользу кэширования
            6. Сводите манипуляции с DOM-деревом к минимуму
            7. Оборачивайте все в единый элемент, когда речь идет о любой вставке в DOM
            8. Используйте «id» вместо классов, где это возможно
            9. Задайте контекст своим селекторам
            10. Используйте последовательности вызовов методов с умом
            11. Научитесь правильно использовать анимацию
            12. Научитесь назначать и делегировать события
            13. Используйте классы для сохранения состояния
            14. Еще лучше — используйте встроенный в jQuery метод data() для сохранения состояния
            15. Пишите собственные селекторы
            16. Подготавливайте HTML и модифицируйте его, когда страница загружена
            17. Используйте «отложенную загрузку» (lazy loading) для определенного контента для выигрыша в общей скорости и преимуществ для SEO
            18. Используйте служебные функции jQuery
            19. Используйте «noconflict» для переименования глобального объекта «jquery», когда используете его с другими фреймворками
            20. Как узнать что картинки загружены?
            21. Всегда используйте последнюю версию
            22. Как проверить, что элемент существует?
            23. Добавляйте класс «JS» в элемент «html»
            24. Возвращайте «false» для отмены поведения по-умолчанию
            25. Короткая запись для события готовности документа


            Rock'n'Roll!
          • Разработка макетов: а давайте в этот раз не будем спрашивать уборщицу?

              Мало кому приходит в голову указывать программистам, как писать код (хотя некоторые умудряются указывать даже проектировщикам баз данных), но уж показать дизайнеру как нужно рисовать — прямо очередь выстраивается.

              Это происходит потому, что все «специалисты» знают: дизайн — это красивая картинка.

              Дизайн лишь на 20% искусство, на 80% — это точная наука. И вы будете удивлены, когда узнаете, из чего на самом деле состоит каждая картинка.

              Читать дальше →
            • Пользовательские поддомены

                С появлением новых проектов в сети иногда кажется, что задача эффективной организации пользовательских поддоменов (bob.someblog.com) кому-то представляется непростой. На самом деле, этот вопрос решается за одну минуту.
                 

                Читать дальше →
              • 40 советов по оптимизации вашего PHP-кода

                  Всем доброго времени суток.

                  Перевод заметки "40 Tips for optimizing your php code". Автор — Reinhold Weber.

                  1. Если метод может быть статическим, объявляйте его статическим.
                  2. echo быстрее, чем print.
                  3. Передавайте в echo несколько параметров, вместо того, чтобы использовать конкатенацию строк.
                  4. Устанавливайте максимальное количество проходов ваших циклов for до цикла, а не во время его выполнения.
                  5. Удаляйте свои переменные для освобождения памяти, тем более, если это большие массивы.
                  6. Остерегайтесь магических методов, таких как __set, __get, __autoload.
                  7. require_once дорого обходится.
                  8. Указывайте полные пути в конструкциях include/require, меньше времени будет тратится на поиск файла.
                  9. Если вам необходимо определить время, когда скрипт был запущен, используйте $_SERVER[’REQUEST_TIME’] вместо time().
                  10. Старайтесь использовать strncasecmp, strpbrk и stripos вместо регулярных выражений.

                  Читать дальше →
                • Страны, регионы, города

                    Карта мира
                    Хочу поделиться базой стран, регионов и городов на русском языке. Возможно, кому-то пригодиться в своих проектах. В базе 106 стран, 922 региона и 10969 городов!

                    Если кто не понял о чем речь, то вспомните, например, как на ВКонтакте указывается город: выбирается страна -> подгружается список регионов -> выбирается регион -> подгружается список городов

                    Читать дальше →
                  • Разгони свой сайт: gamma-версия

                      Примерно три недели назад стартовал проект, посвященный методам оптимизации времени загрузки веб-страницы на клиенте.

                      Почему оптимизация?



                      На мой взгляд, на текущий момент веб-разработчики очень мало уделяют внимания доступности (accessibility) и удобству пользования (usability) проектов, над которыми работают. Для них сайт — это килобайты кода и пара картинок, которые нужно как-то показать клиенту. О пользователе никто при этом не думает, в лучшем случае, прикрываясь такими выражениями, как: «у меня отсюда и так все быстро грузится» или «каналы сейчас не те, что 10 лет назад».

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

                      Почему клиентской части?



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


                      Естественно, это совсем не так. Загрузка страницы это не только HTML. Существует множество инструментов, которые позволяют в этом убедиться, проанализировать процесс целиком и найти в нем слабые места. Но именно такой анализ, который находится, фактически, на стороне пользователя и должен быть проведен в первую очередь при оценке доступности веб-сайта, зачастую вообще не проводят либо делают быстро и некачественно. А ведь он может позволить уменьшить время загрузки страниц на порядок.

                      WEBoptimizator

                      Читать дальше →
                    • CSS: все о сжатии

                        После статей «Практический CSS/JS: архивируем все!» и «JavaScript: жать или не жать» стало ясно, что проблема уменьшения CSS-файлов в размере действительно актуальна, и общественности хотелось бы аналогичного исследования уже конкретно для такой оптимизации. Которое, собственно, и приведено ниже.

                        В интернете было найдено 6 различных инструментов для минимизации CSS-кода (однако, с одним из них, перловым модулем, разобраться не удалось, поэтому приведены результаты только для 5), далее ими обрабатывались несколько примеров, которые затем подвергались еще и архивированию. Результаты, опять-таки, представлены в виде графиков, ибо таблицы я нахожу менее информативными.

                        График сжатия CSS-файлов

                        читать дальше на webo.in →
                      • Оптимизируем «тяжелые» JavaScript-вычисления

                        • Translation
                        Примечание: ниже приведен перевод заметки из блога разработчика YUI-утилит Julien Lecomte «Running CPU Intensive JavaScript Computations in a Web Browser», в которой автор рассматривает выполнение «тяжелых» вычислений в веб-браузере и приводят ряд методов для их «оптимизации». Мои комментарии даны курсивом.

                        Введение



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

                        Наиболее существенным препятствием для выполнения в веб-браузере «тяжелых» вычислений является тот факт, что весь интерфейс пользователя в браузере останавливается и ждет окончания исполнения JavaScript-кода. Это означает, что ни при каких условиях нельзя допускать того, чтобы для завершения работы скрипта требовалось более 300 мс (а лучше, если горадо меньше). Нарушение этого правила неминуемо ведет к плохому восприятию ресурса пользователем (bad user experience).

                        К тому же в веб-браузерах у JavaScript-процесса имеется ограниченное время для завершения своего выполнения (это может быть как фиксированное число — в случае браузеров на движке Mozilla — или какое-либо другое ограничение, например, максимальное число элементарных операций — в случае Internet Explorer). Если скрипт выполняется слишком долго, то пользователю выводится диалоговое окно, в котором запрашивается, нужно ли прервать скрипт.

                        читать дальше на webo.in →
                      • Практический JS: разгоняем все, что движется

                        • Translation
                        Примечание: ниже находится перевод статьи «Speed Up Your Javascript Load Time», в ней автор рассматривает некоторые наиболее эффективные техники и методы действия по уменьшению времени отработки JavaScript'а на клиенте. Большая часть из них общеизвестна, но в статье важно не просто их перечисление, а общий подход для решения задачи оптимизации времени загрузки. Далее мои комментарии курсивом.

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

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

                        читать дальше на webo.in →
                      • И снова о speed performance вашего сайта

                          Уф… наконец-то я решился написать свой первый пост.

                          В этом посте я хочу рассказать вам о некоторых простых, и в тоже время эффективных способах ускорения загрузки вашего сайта.
                          Все методы основаны на LAMP + nginx + drupal, но я уверен что всё это верно и для остального тоже.
                          Разговор пойдёт о первой загрузке сайта, то есть когда у клиента нет ещё кеша в браузере.
                          Читать дальше →
                        • Советы и подсказки по bash

                          • Translation
                          Для непосвященных, bash — командная оболочка по умолчанию во многих Linux-дистрибутивах, включая Fedora, Ubuntu, Redhat и др. Используя операционную систему Linux-семейства, вы, вероятно, используете и bash. По этой причине ниже я собрал несколько часто возникающих проблем с bash и простые способы их решения.

                          1. Потеря истории команд

                          Если открыть окно терминала и ввести несколько команд, а после открыть второе окно, то история команд bash во втором окне не будет содержать команд из первого. К тому же, если закрыть первый терминал, а затем второй, то история команд из первого терминала будет перезаписана вторым. Вдвойне неприятно!

                          Так происходит из-за того, что история команд записывается только при закрытии терминала, а не после каждой команды. Это можно исправить.
                          Читать дальше →