• Jam with Chrome



      Ресурс Jam With Chrome позволит вам устроить джейм-сейшн с вашими друзьями.

      Позиционируется как один из хромовых Экспериментов (веб-аудио и веб-сокеты), поэтому запустить эту штуку в другом браузере не получится (Лиса предлагает сразу скачать Хром с этим приложением, но можно продолжить и в ней, просто стабильная работа не гарантируется).

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

      Лучше сразу переключаться в PRO-режим.



      via
    • Привлекательные экспериментальные плагины на JavaScript

      • Translation

      Вступление


      Я безумно люблю различные эксперименты на JS. Они словно позволяют заглянуть нам в будущее, и посмотреть, каким захватывающим и футуристичным оно будет. Когда вы будете просматривать приведенную подборку, вы наверняка вспомните про еще недавнего короля — Adobe Flash, а затем осознаете, насколько быстро CSS и JavaScript лишили его трона. Современные браузеры позволяют нам использовать множество различных эффектов и анимаций без сильных тормозов. Однако слово «экспериментальный» подразумевает ряд ограничений, как например некорректное отображение в некоторых браузерах (IE), кроме того, подобные плагины будут, скорее, отличным концептуальным дополнением для персональных страниц, а не для использования в больших проектах.

      Meny


      image

      Meny — трехмерное меню, которое помимо своей визуальной притягательности еще и экономит место на экране. При наведении (или свайпе на тачскрине, что важно), меню «выезжает» с отличным эффектом.
      Читать дальше →
      • +116
      • 48.4k
      • 35
    • Продуктивное использование PHPStorm

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

        Не претендуя на библию или «настольную статью программиста» я хочу поделиться полезными находками в моей любимой IDE, не скатываясь в тупую копипасту мануалов и скучных списков хоткеев, только то, что я сам использую постоянно и над чем удивляются коллеги: «о! а так можно?»
        Что ж там такое?
      • Ещё раз об изучении языков (часть 2)


          Во второй части статьи (первая, в основном теоретическая часть, находится тут), посвященный моему личному опыту изучения иностранных языков и советам начинающим это не всегда простое дело, мы разберем первый этап освоения языка: он нулевого уровня до уровня продвинутого туриста, способного разговаривать на базовые темы и понимать тексты на данном языке при помощи томика словаря.
          Я уверен, что многое из того, что я описываю, уже не раз писалось в том числе и на Хабре: в конце концов, я не изобрел ничего нового. Однако для полноты картины я стараюсь описывать все то, чем я сам пользуюсь при изучении языка в надежде, что подробное описание поможет заинтересованным читателям Хабрахабра более точно воспроизвести мой подход.
          Читать дальше →
        • Четыре паттерна вызова функций в JavaScript

          • Translation
          Язык JavaScript был представлен как язык функционального программирования. Причина заключается в том, что функции в JS не просто разделяют логику на операционные блоки, функции являются объектами первого класса, способными создавать другие объекты. Подобная зависимость от функций одновременно является как сильной стороной, так и настоящим проклятием этого языка. Сильная сторона заключается в том, что язык, обладая подобными особенностями, становится легковесным и быстрым (каким JavaScript изначально и видели его создатели). Однако если вы не знаете что делаете — однозначно ждите беды.

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

          Итак, существует четыре пути вызова функций:

          • Вызов метода — Method Invocation
          • Вызов функции — Function Invocation
          • Вызов конструктора — Constructor Invocation
          • Вызов apply и call — Apply And Call Invocation

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

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

          • Tutorial
          Голая бабаВ данной инструкции я попытался осветить основные моменты разработки игр. Инструкция будет полезна для людей, собирающихся заняться разработкой игр в роли лидера (главного разработчика и организатора).

          Хочу отметить, что игры бывают разные – большие и маленькие, сложные и лёгкие, и поэтому для каждой игры эта инструкция верна в какой-то своей определённой степени. Охватить всё не удалось, но передать общие моменты, думаю, получилось.
          Читать дальше →
        • Особенности загрузки файлов на HTML5

          После некоторого, опыта решил написать небольшую статью-шпаргалку о загрузке файлов с использованием возможностей HTML5, а именно File API.

          Читайте далее:
          1. Поддержка браузерами.
          2. Загрузка через Form Data.
          3. Загрузка через File Reader.

          Читать дальше →
        • JPG, прозрачность, Canvas, анимация

          • Tutorial
          Здравствуйте, друзья!

          Предлагаю вам небольшой урок на тему анимации спрайтов с альфаканалом на канве HTML5.

          Преамбула.


          Для начала нарисуем нечто
          image

          Почему круглое и желтое? Потому что у Дугласа Адамса в «Автостопом по галактике» есть такой Слартибартфаст — очень трогательный дядя, имеет приз за береговые линии при строительстве Земли. Поэтому на всякий случай будем анимировать желтую звезду.

          Далее анимируем звезду
        • Дайджест интересных новостей и материалов из мира PHP за последние две недели №1 (21.09.2012 — 05.10.2012)



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

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

            Приятного чтения!
            Читать дальше →
          • Справочник по плагинам для кросс-браузерного HTML5

              image
              Авторы Modernizr решили собрать в одном большом, гигантском справочнике все прослойки, fallback-и и polyfill-ы, которые помогут обеспечить функциональность html5 в тех браузерах, где он не поддерживается

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

              Как определить, поддерживает ли браузер ту или иную функцию? Modernizr! Как написать свой polyfill? Есть мануал (на английском) Пишем polyfill-ы на JS для кросс-браузерности

              Справочник доступен в виде страницы на Github.
              Перейти к комментариям
            • Установка node.js на VPS

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

                Установка node


                Проблема: в репозитории может не оказаться пакета для нужной версии node. Как вариант, у вас может быть два проекта, требующих разные версии node.
                Решение: на девелоперских машинах в таких случаях используют nvm. На боевом сервере его тоже можно запросто использовать, просто прийдется написать специальный скрипт для запуска своего сервера.
                Читать дальше →
              • Про jQuery и велосипеды — мое дополнение

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

                Для затравки начнем с простого.
                Читать дальше →
              • Графовая база данных Neo4j в PHP

                В последнее время я все чаще слышу о NoSQL и о графовых базах данных в частности. Но воспользовавшись хабропоиском с удивлением обнаружил, что статей на эту тему не так и много, а по запросу «Neo4j», так вообще 4 результата, где косвенно упоминается это название в тексте статей.

                Что такое Neo4j?


                image
                Neo4j — это высокопроизводительная, NoSQL база данных основанная на принципе графов. В ней нет такого понятия как таблицы со строго заданными полями, она оперирует гибкой структурой в виде нод и связей между ними.

                Как я докатился до этого?


                Уже более года я не использовал в своих проектах SQL, с того времени, как попробовал документо-ориентированную СУБД "MongoDB". После MySQL моей радости не было предела, как все просто и удобно можно делать в MongoDB. За год, в нашей студии создания сайтов, переписали тройку CMS, использующих основные фишки Mongo c её документами, и с десяток сайтов работающих на их основе. Всё было хорошо, и я уже начал забывать, что такое писать запросы в полсотни строк на каждое действие с БД и все бы ничего пока на мою голову не свалился проект с кучей отношений, которые ну никак не укладывались в документы. Возвращаться к SQL очень не хотелось, и пару дней я потратил чисто на поиск NoSQL решения, позволяющего делать гибкие связи — на графовые СУБД. И по ряду причин мой выбор остановился на Neo4j, одна из главных причин — это то, что мой движок был написан на PHP, а для неё был написан хороший драйвер "Neo4jPHP", который охватывает почти 100% REST-интерфейса, предоставляющегося сервером Noe4j.
                Читать дальше →
              • Ремесло писателя. Как научиться писать?

                • Tutorial
                Писатель мало чем отличается от плотника: один тешет доски, другой – слова. Постараюсь это доказать. За все время моей трудовой деятельности, моя работа так или иначе была связанна с написанием текстов. Нужно было учиться писать. Постараюсь поделиться своим опытом в получении навыка в данном деле.

                image

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

                Читать дальше →
              • Игра MMO на карте комикса Click and Drag



                  Огромную площадь 13 гигапикселов комикса xkcd Click and Drag можно использовать как карту для многопользовательской игры. Такая идея пришла github-пользователю n01se, и они вместе с Рэнделом Монро воплотили её в жизнь. В игре нет какой-то «цели», это просто техническая возможность путешествовать по карте одновременно с другими игроками, и общаться с ними.
                  Читать дальше →
                • JavaScript — полезные материалы

                    Хочу поделиться набором ссылок на нексолько полезных, интересных и, возможно, не самых известных материалов по JavaScript. Из них вы узнаете немного больше об истории появления языка, о его настоящем, тонкостях реализации в различных браузерах, и о будущем развития стандарта ECMAScript. О различных способах наследования в том числе об эмуляции «классического» ООП, множественном наследовании и миксинах. О функциональном стиле программирования в JavaScript: чистые функции, map, reduce, частичное применение и композиции функций. И, наконец, что если бы Хемингуэй писал на JavaScript?
                    Читать дальше →
                    • +123
                    • 77.8k
                    • 29
                  • Битовые операции в PHP на примерах

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

                      Например, встречались такие варианты:
                      if ($error['type'] == E_ERROR || $error['type'] == E_PARSE || $error['type'] == E_COMPILE_ERROR){…}
                      или
                      if(in_array($error['type'], array(E_ERROR, E_PARSE,  E_COMPILE_ERROR)) {…}

                      В связи с этим решил написать небольшую статью о битовых операциях с примерами их использования.
                      Читать дальше →
                    • 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 вместо регулярных выражений.

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