• Как из дешевого и простенького роутера сделать полнофункциональный сервер.

      Введение


      Первым роутером, который попал ко мне, был D-Link DI-524, у меня не было времени что либо выбирать, просто купил первый попавшийся недорогой роутер с wi-fi. Так как по натуре я люблю всё ломать, я почти сразу полез в интернет искать, как его можно усовершенствовать.
      Но в то время почти ничего не нашел кроме советов просверлить в нем дырок. Да действительно он частенько перегревался и поэтому нестабильно работал, но на такой рискованный шаг я не пошел.
      Благо я его почти сразу продал своему другу.
      Когда мне снова понадобилось такое устройство, я уже знал какие функции мне действительно необходимы, для меня это было QoS. Я как обыденный покупатель начал смотреть на маркетинговые описания возможностей и фишек устройств. Для меня это тогда казалось единственно верным. Оказалось это не совсем так.
      Я купил asus w520gu, я им в целом доволен (об этом позже), но считаю правильным поделиться опытом и информацией как я его усовершенствовал.
      Кому интересно читаем дальше
    • Что было бы, если бы Хемингуэй писал на JavaScript

      Перевод статьи If Hemingway wrote JavaScript.

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

      Я любил художественную литературу задолго до того, как написал свою первую строчку кода. Сейчас я довольно много пишу на JavaScript, и, вдобавок, ещё и книгу пишу об этом.

      Так что же такого в JavaScript, что так привлекает многих поклонников литературы? У меня есть несколько дурацких теорий, связанных с выразительным потенциалом ограниченного синтаксиса, но об этом как-нибудь в другой раз. Давайте взглянем на великих писателей: что если бы они писали на JavaScript? Как фанат Хемингуэя со стажем, я бы сказал, что он скорее всего возненавидел бы программирование (и программистов). Но я готов поспорить, что среди всеобщего презрения нашлось бы маленькое теплое местечко для JavaScript, потому что это был бы своего рода его язык. Свободный и обманчиво простой на поверхности, которая скрывает сущность и драму под собой.

      Родоначальник всех код ревью



      Читать дальше →
    • Коллекция ресурсов для 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 Вячеслава Олиянчука.
        Настоятельно рекомендуется добавить в закладки, а лучше — почитать.
      • Как работает оператор delete

        Пару недель назад мне попалась на глаза книга Стояна Стефанова (Stoyan Stefanov) Объектно-ориентированный Javascript. У книги был настолько высокий рейтинг на Амазоне (12 обзоров на 5 звезд), что я решил просмотреть, нет ли в ней чего-нибудь что можно было бы порекомендовать другим. Мне очень понравилось, как все описывается в разделе про функции, с которого я начал; поток примеров выстроен таким приятным и прогрессивным образом, что даже начинающие очень легко освоят его. Однако практически сразу я наткнулся на интересное заблуждение, описываемое на протяжении целой главы — удаление функций. Есть и другие ошибки (такие как разница между объявлением функции и оператором function), но сейчас мы не будем их обсуждать.

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

        >>> var sum = function(a, b) {return a + b;}
        >>> var add = sum;
        >>> delete sum
        true
        >>> typeof sum;
        "undefined"

        Если не обращать внимания на пару отсутствующих точек с запятой, что еще не так с этим куском кода? Конечно, проблема в том, что удаление переменной sum не должно было пройти успешно; выражение с оператором delete не должно разрешаться в true и typeof sum не должно вернуть «undefined». Все потому, что в яваскрипте нельзя удалять переменные. По крайней мере, те, которые определены таким образом.

        Так что же происходит в этом примере? Опечатка? Диверсия? Скорее всего нет. На самом деле весь этот отрывок кода скопирован из Файрбага, который Стоян, должно быть, использовал для тестирования по-быстрому. Почти похоже что у Файрбага какие-то свои правила по поводу удаления. Это Файрбаг сбил Стояна с толку! Так что же на самом деле здесь происходит?
        Узнать скорей!
      • Бесплатные книги по JavaScript

        • Translation

        Javascript Enlightenment


        Cody Lindley


        Уровень знаний: средний
        Тщательный обзор мировоззрения JavaScript через разбор встроенных объектов и нюансов.

        Открыть

        Eloquent Javascript


        Marijn Haverbeke


        Уровень знаний: начинающий
        Вводная книга по JavaScript и программирование в целом.
        Открыть

        Building A JavaScript Framework


        Alex Young


        Уровень знаний: продвинутый
        Избранные статьи из цикла«Let’s Make a Framework».
        Открыть

        Читать дальше →
      • Равномерное выравнивание блоков по ширине

          Продолжая свои «css-раскопки» возникла новая идея, разобрать по косточкам ещё одну актуальную тему, которая касается равномерного выравнивания блоков по ширине. В принципе мои доскональные исследования я уже запостил у себя в блоге, но так как прошлая моя работа очень понравились Хабра-сообществу, то я решил сделать здесь небольшой краткий обзорчик этой статьи, чтобы ни одна хабра-душа не пропустили её наверняка. Так что, как говорил Гагарин: «Поехали».

          В общем в задачах вёрстки периодически возникают моменты, когда появляется необходимость выровнять какой-нибудь список по ширине экрана. При этом пункты этого списка должны выравниваться равномерно, прижимаясь своими крайними элементами к границам контейнера, а расстояние между ними должно быть одинаковым.
          image
          Читать дальше →
        • Параллельная загрузка JavaScript и CSS без блокирования парсинга страницы

            Известно, что следуя идеям старой школы, а именно, добавляя ссылки на JS и CSS в страницы, может обернуться большим временем загрузки страницы. Браузер отображает страницу по мере скачивания, но останавливается, если натыкается на тег script со ссылкой, до того момента, пока скрипт не будет загружен и выполнен. Сайты стали использовать всё большее количество скриптов, начальное отображение страницы занимает всё больше времени, к примеру, на этой странице, которую вы читаете, 13 скриптов, 7 из которых находятся в head'е. Ко всему прочему, некоторые браузеры по-прежнему придерживаются ограничений на одновременное количество загрузок с одного хоста.

            Сразу предлагаю принять, что все JS файлы минимизированы, и передаются в сжатом виде.

            Существует несколько решений, как то:
            — поместить стили и скрипты прямо в страницу;
            — установка аттрибутов async/defer тегу script;
            — склеить все скрипты в один файл;
            — помесить ссылки на скрипты в конец body;
            — разместить все файлы на CDN/на разных хостах;
            — свой вариант…

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

            Началось всё, конечно, с того, что я взялся за один проект, и в какой-то момент мне показалось, что простенькая страница достаточно долго загружается, и посмотрел на график загрузки, и на результаты YSlow. Огонь на секунду потух в моих глазах, но зная, что может быть лучше, я полез искать,
            как сделать лучше.
          • Почему ИТшнику стоит стать ИПшником и почему не стоит регистрировать ООО

              В этой статье даются ответы на нижеследующие вопросы, основываясь на личном опыте и опыте коллег.

              1. Почему стоит начать работать «в белую»
              2. Почему на начальном этапе ИП лучше ООО
              3. Что делать, если партнёров несколько

              Если вы – начинающий или уже опытный фрилансер и подумываете о работе «в белую», но ещё точно не определились с вопросами «Стоит ли оно того?» и «ИП или ООО?», вэлком
              под кат
            • Адаптивный и мобильный дизайн с CSS3 Media Queries

              • Translation
              Разрешение экрана в наши дни колеблется от 320px (iPhone) до 2560px (большие мониторы) или даже выше. Пользователи больше не просматривают сайты только на настольных компьютерах. Теперь пользователи используют мобильные телефоны, небольшие ноутбуки, планшетные устройства, такие как iPad или Playbook для доступа в интернет. Поэтому, традиционный дизайн с фиксированной шириной больше не работает. Дизайн должен быть адаптивным. Структура должна автоматически изменяться с учетом всех разрешений дисплеев. Эта статья покажет вам как создавать кросс-браузерный адаптивный дизайн при помощи HTML5 и CSS3 media queries.
              Читать дальше →
            • Принцип цикады и почему он важен для веб-дизайнеров

              • Translation
              Пару лет назад я прочитал интересные факты о жизненном цикле периодических цикад. Обычно мы не видим вокруг себя много этих насекомых, потому что бóльшую часть своей жизни они проводят под землёй и тихо сосут корни растений.

              Однако, в зависимости от вида, каждые 7, 11, 13 или 17 лет периодические цикады одновременно массово вылезают на свет и превращаются в шумных летающих тварей, спариваются и вскоре умирают.

              Хотя наши странные цикады весело уходят в иной мир, возникает очевидный вопрос: это просто случайность, или числа 7, 11, 13 и 17 какие-то особенные?
              Читать дальше →
            • Расширенный сборник CSS-хаков

                Статья является расширенным сборником CSS-хаков в сравнении с аналогичной статьей.
                Под хаком подразумевается метод, позволяющий воспринимать CSS только определенному браузеру.
                Хаки могут использоваться не только для исправления багов в верстке, но и в случае использования определенных особенностей браузера для ускорения рендеринга web-страницы в нём (к примеру CSS3-свойства)

                Подробности под катом
              • PNG vs. Internet Explorer

                  В двух словах

                  В догонку появившейся недавно статье о преодолении привередливого отношения браузера Internet Explorer 6-й версии по отношению к .png, опишу еще один рецепт.Речь идет о разработке TwinHelix под банальным названием IE PNG Fix.
                  Читать дальше →
                • WebKit и expression

                    Да, это не опечатка! Внезапно обнаружил, что конструкция:

                    .myclass {behavior:expression((function(){})(this))}

                    читается WebKit (Chrome, Safari) браузерами и стили после ней браузер не воспринимает и, соответственно, не применяет. Опытным путём было установлено, что проблема в этой конструкции в символах "{" и "}", которые в сумме вызывают какие-то метаморфозы в браузерах. Причём если убрать "{", то баг исчезает, а если "}", то остаётся. Естественно, наличие ";" в конце правила, тип селектора (т.е даже если это будет селектор для ИЕ, вроде * html [selector]), тип правила (например предварение правила "//" или "_") ситуации НЕ исправляют, иначе было бы не так уж и страшно!

                    Особенно знание этого бага полезно людям, любящим объединять все стили в один файл, не вынося стили для IE в отдельный файл, вместо этого используя star-hack и иже с ним! В любом случае если вы относитесь к тем, кто не выносит стили для Internet Explorer'a в отдельный файл, то пишите хотя бы expression'ы в конце файла, иначе долго будете искать причину проблем!
                  • Создание прототипа с помощью CSS-фреймворка Grid 960

                    • Translation
                    imageGrid 960 — это CSS Фреймворк, который позволяет разработчикам быстро конструировать прототипы дизайна. Они являются замечательным инструментом для создания макетов. Почему? Потому что они делают за вас всю тяжелую работу, позволяя получить быстрые результаты.

                    Звучит отлично, но как это делается? В интернете есть большое количество статей, агитирующих за и против использования CSS-фреймворков, но нет ничего в помощь неопытным читателям. Поэтому в сегодняшней статье мы рассмотрим процесс создания прототипа.
                    Читать дальше →
                  • Вращение предметов без флэш

                      Всем привет.

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

                      Пожалуй, все встречали подобные инструменты основанные на технологии flash. Однако я считаю, что её использование здесь не к чему. Поэтому потратив несколько часов я реализовал подобный функционал на javascript в виде плагина к jQuery.

                      вертеть дальше
                    • Список полезных инструментов для CSS разработчика

                      • Translation
                      Это не попытка создать список всех существующих инструментов для CSS разработки. Только некоторые, наиболее полезные были отобраны и размещены в соответствующих категориях.


                      Чтобы инструмент был по-настоящему полезен, у него должна быть хорошая документация и дружелюбный интерфейс. К сожалению, некоторые инструменты в списке не полностью попадают под данные критерии. Если кто-то знает лучшие альтернативы с более дружелюбным интерфейсом и большей функциональностью, пишите в комментариях.
                      Читать дальше →
                      • +161
                      • 62.5k
                      • 65
                    • Скругление углов на чистом CSS с анти-алисингом

                        Вношу свои 5 копеек в проблему скругления уголков. Хочу предложить метод, который не революционный, а просто несколько усовершенствует другой.

                        Многие знакомы с методом скругления уголков средствами CSS, который активно использует Гугл. Я лично познакомился с ним на сайте Шторкин.ру.

                        Метод сделан на чистом CSS, без картинок, без JS, полностью кроссбраузерный. Он спокойно тянется в ширину и высоту. Единственный его недостаток: отсутствие сглаженности (алиасинг). В принципе, все вполне поправимо.
                        Немного кода и все работает
                      • Скругленные углы на чиcтом CSS без JS без картинок с анти-аллиасингом

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

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

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

                          Не томи