• Расширяем функциональность платформы для интернет-магазинов ReadyScript

    • Tutorial
    Сегодня каждый заказчик желает видеть в своем интернет-магазине уникальные фишки. Это могут быть интересные накопительные скидки, реферальные программы, нестандартные фильтры для поиска определенных товаров, и т.д. Все это требует индивидуальных доработок функциональности CMS. В этой статье мы расскажем, какие возможности предлагает ReadyScript для создания индивидуальных решений.


    Читать дальше →
  • Scrawl — скриншотер сайтов и безопасность веб-интерфейсов SIP-устройств

      Все началось с того, что некоторые абоненты, подключающиеся по протоколу SIP к нашей корпоративной АТС без использования VPN, не соблюдали основы безопасности и оставляли на внешнем IP-адресе доступ к веб-интерфейсу или роутера, или IP-шлюза со стандартным логином-паролем. Что дает потенциальным злоумышленникам возможность получить настройки, прикинуться нашим абонентом и сделать множество звонков по междугородним направлениям.

      Сначала просто CURL'ом подергал IP-адреса абонентов (выявилось, что некоторые аппараты при простом HTTP POST запросе ребутятся), а затем захотелось как-нибудь с изюминкой просканировать да красоту получить. В общем, получился Scrawl — скриншотер сайтов (сайт проекта, репозиторий).

      На модной волне headless браузеров захотелось попробовать PhantomJS, более удобный интерфейс к которому дает CasperJS, а затем стало желательно использовать совместно с Node.JS, поэтому стал использовать SpookyJS.

      Читать дальше →
    • Семинар: WeMakeWeb — Series B

        image

        Мы проводим вторую встречу в рамках группы WeMakeWeb. В этот раз решено не ограничивать докладчиков никакими рамками. Поговорим как о серверных технологиях (OpenStack, Docker, Node.JS), так и о том как строить «толстый» веб.
        Участие в мероприятии является бесплатным, но необходимо зарегистрироваться на www.meetup.com/WeMakeWeb/events/205101712

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

        Вместо начала.

        Недавно пришлось заняться написанием приложения по работе. Раньше работал исключительно с PHP и web-мордами, однако быо требование сделать полноценное windows-приложение с авторизацией, использованием forms и прочей «петрушки». Эту статью я пишу на отвлеченном абстрактном примере с целью сделать ман доступным и простым. Собственно, здесь важен сам ход действий, нежели само приложение.

        Задача была без веб-интерфейса работать с табличными данными, получаемыми с сервера. Доступные инструменты: web-сервер Apache + PHP + MySQL и C#-приложение на стороне клиента.

        Профессионалам вряд ли будет интересно. А вот новичкам, мне кажется, может пригодиться. Очень надеюсь, что я не перемудрил с воплощением идеи.
        Кому интересна реализация связки — прошу под кат.
        Читать дальше →
        • –1
        • 11.4k
        • 7
      • CSS GuideLines, часть 3. Именование классов

        • Translation
        • Tutorial


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

        • Для чего используется класс;
        • Где класс может быть использован;
        • С какими другими классами связан этот класс.
        Читать дальше →
      • Вы разрушили HTML

        Если вы кого-нибудь спросите, на чем он делает клиентскую сторону своих приложений сегодня, этот человек наверняка ответит, что использует какой-нибудь хипстерский JS-фреймворк, вроде Angular, Ember, Knockout, Backbone или Polymer (смотрите сайт TodoMVC).

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

        <!-- Knockout -->
        <p>Имя: <input data-bind="value: firstName" /></p>
        <p>Фамилия: <input data-bind="value: lastName" /></p>
        <h2>Привет, <span data-bind="text: fullName"> </span>!</h2>
        
        <!-- Angular -->
        <ul class="phones">
        	<li ng-repeat="phone in phones | filter:query | orderBy:orderProp">
        		<span>{{phone.name}}</span>
        		<p>{{phone.snippet}}</p>
        	</li>
        </ul>
        
        <!-- Ember -->
        <div>
        	<label>Имя:</label>
        	{{input type="text" value=name placeholder="Введите ваше имя"}}
        </div>
        <div class="text">
        	<h1>Меня зовут {{name}} и я хочу выучить Ember!</h1>
        </div>
        

        Читать дальше →
      • RabbitMQ — Отложенные сообщения, часть 2

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

          В связи с этим хочу привести более универсальное (но чуть более сложное) решение, позволяющее организовать отложенные сообщения с произвольным временем задержки.
          Читать дальше →
        • Несколько интересностей и полезностей для веб-разработчика #27

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

            Highcharts.js



            В последнее время я зачастил с библиотеками предназначенными для построения графиков и диаграмм. Но против трендов на GitHub с 2500+ звезд не попрешь, да и когда есть из чего выбирать — всегда хорошо. Highcharts.js — это мощный инструмент, основанный на SVG и VML рендеринге со множеством плагинов. Минус этого проекта — лицензия, которая позволяет использовать скрипт только в некоммерческих целях. Хочу обратить также ваше внимание, что именно этот проект выбрали такие компании как Яндекс, Facebook, Twitter, Yahoo, AT&A, Nokia и др.

            Читать дальше →
            • +45
            • 30.8k
            • 7
          • Простой экспорт в Excel XML

              При разработке системы электронного документооборота потребовалось реализовать функции для экспорта данных в популярных форматах. В частности, в формате Microsoft Excel. Требования к экспорту были довольно простые – экспортировать данные с минимумом форматирования, т.е. никаких объединенных ячеек, игр со шрифтами и т.п. Форматы экспорта XLSX и Excel XML.



              В данном случае расскажу про Excel XML.
              Читать дальше →
              • +3
              • 40.9k
              • 1
            • ООБД без ООП

              Лично мне не надо объяснять, что такое ООП. Я сам в первую очередь мыслю существительными и только во вторую — глаголами.
              Но речь не о том, кто как мыслит; я хочу обсудить ситуацию, когда отказ от привычных механизмов ООП упрощает работу с объектами.

              Как, пример, можно вспомнить добрым словом Lotus Notes, где имя формы хранилось внутри документа. Создавая форму LN, мы тем самым описываем новый UI класс, в котором можно добавлять свойства и переопределять методы (Queryopen, Postsave и пр.). При этом новый объект, созданный с помощью этой формы, не связан с ней механизмом наследования. Форма – это свойство объекта, и в LN есть команда «SwitchForm», с помощью которой можно открыть объект с другой формой, естественно, с вызовом других методов. Неопределенные свойства при этом вернут пустую строку.
              Читать дальше →
            • Пишем проигрыватель lossless аудио на JavaScript

              Добрый день, %username%. Сегодня я хотел бы поделится своим опытом разработки прототипа онлайн lossless аудио плеера.

              На сегодняшний день, вряд ли можно кого-то удивить аудио или видео плеером, встроенного непосредственно в веб-страницу. Существующие технологии, библиотеки и API позволяют легко наполнить сайт любым медиа-контентом. Но есть такие люди, которым этого недостаточно (в том числе я). Именно поэтому, как истинному любителю музыки в lossless, мне потребовалось сделать браузерный плеер поддерживающий такой формат аудио, как flac.
              Читать дальше →
            • Контейнеризация — новый shared-хостинг

                Новые решения по виртуализации и контейнеризации вовсю используются разработчиками для тестирования приложений и поддержки инфраструктуры разработки. Но будет ли это новым форматом shared-хостинга?
                Читать дальше →
                • –3
                • 5.1k
                • 2
              • JavaScript метод insertAdjacentHTML и beforeend

                • Translation
                Перевод статьи «JavaScript insertAdjacentHTML and beforeend», David Walsh.

                Если вы не знали: чертов DOM очень медленный. А по мере того, как наши сайты становятся все более динамичными и AJAX-использующими, нам становиться все важнее управлять DOM древом с наименьшим ущербом в производительности. Недавно я написал статью о DocumentFragment'ах. Это разумный подход к объединению списка дочерних элементов под неким «псевдо-элементом», для дальнейшего помещения в реальный DOM элемент. Еще один замечательный метод для работы с элементами insertAdjacentHTML: это способ добавлять элементы в родительский элемент не задевая других его потомков.
                Читать дальше →
              • CSS GuideLines, часть 1. Синтаксис и форматирование

                • Translation
                • Tutorial


                Введение


                CSS не идеален. Поначалу кажется, что он прост в освоении, но работая над реальным проектом вы столкнетесь со многими проблемами. Мы не можем изменить то, как работает CSS, но мы можем изменить тот код, который мы пишем.
                Читать дальше →
              • Смелый стайлгайд по AngularJS для командной разработки [1/2]

                • Translation
                После прочтения Google's AngularJS Guidelines у меня создалось впечатление о его незавершённости, а ещё в нём часто намекали на профит от использования библиотеки Closure. Ещё они заявили, «Мы не думаем, что эти рекомендации одинаково хорошо применимы для всех проектов, использующих AngularJS. Мы будем рады видеть инициативу от сообщества за более общий стайлгайд, применимый как для небольших так и крупных проектов».

                Отталкиваясь от личного опыта работы с Angular, нескольких выступлений, а также имеющемуся опыту командной разработки, представляю Вашему вниманию этот смелый стайлгайд по синтаксису, написанию кода и структуре приложений на AngularJS.
                Читать дальше →
              • CSS GuideLines, часть 2. Комментирование кода

                • Translation
                • Tutorial


                В каждом проекте есть определенные нюансы и тонкости, которые помнят далеко не все, и худшее, что может случиться с разработчиком — это работа с кодом, который писал не он. Даже запоминание тонкостей своего собственного кода является возможным только до определенной степени, не говоря уже о чужом коде. Именно поэтому CSS надо комментировать.
                Читать дальше →
              • Статистика Github


                  О публикации кода на Github или другом открытом хостинге часто говорят, как о такой живительной эвтаназии, после которой патчи, фиксы, сообщения о проблемах и прочие коммиты от сторонних разработчиков польются рекой. У меня пока противоположный опыт. В парочку моих относительно заметных проектов вообще никто и ничего реально не привнес, не говоря уж об остальных проектах. Более того, я несколько раз делал очень серьезные изменения/улучшения в чужие проекты, но их авторы морозились и не приняли изменения. Исходя из этого я развил теорию: мол, вся эта открытость и коллаборация — это красивые слова, реально все пилят что-то свое и зарабатывать деньги или пиар кому-то другому совершенно не горят желанием. Чтобы проверить теорию, я посчитал кое-какую статистику по всем репозиториям на Github, у которых больше 700 звездочек, таких чуть больше 4 тысяч.

                  Ни одной картинки, но много больших таблиц
                • GitHub's CSS

                  [Прим. перев.]: предлагаю вашему вниманию перевод статьи Марка Отто, разработчика GitHub, бывшего разработчика Twitter, создателя самого известного CSS фреймворка Bootstrap. В этой статье он рассказывает о внутреннем устройстве CSS проектов GitHub.


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

                  Несколько фактов


                  Обзор нашего текущего состояния CSS:

                  • В качестве препроцессора мы используем SCSS.
                  • У нас есть более 100 отдельных исходных файлов стилей, которые мы компилируем перед выкаткой в продашн.
                  • Исходники компилируются в 2 отдельных CSS файла (чтобы избежать проблемы с максимальным количеством селекторов для IE<10).
                  • Эти 2 файла весят в сумме около 90 kb.
                  • Мы не используюм какую-нибудь особенную «CSS архитектуру».
                  • Для определения размера мы выбрали пиксели, но все же у нас есть немного «em-ов».
                  • Мы используем Normalize.css, смешанный с несколькими нашими собственными стилями для сброса свойств.

                  Читать дальше →
                • Утечка частных фотографий знаменитостей: подробное расследование австралийского разработчика

                    На этой неделе интернет был потрясен историей, связанной с утечкой сотен интимных фотографий знаменитостей (статьи на Хабре на связанную с этим тему здесь и здесь). Одно из самых тщательных расследований этой истории провел рожденный в Австралии предприниматель, блогер, инженер и разработчик софта (все это в одном лице) Ник Кубрилович (Nic Cubrilovic). Ник известен тем, что в разные периоды своей карьеры был журналистом и консультантом Techcrunch и Crunchpad, редактором TechcrunchIT, основателем или со-основателем Omnidrive, Solutionstap, MyVirtualDrive, Webwall, 2web и прочее. Подробности – под катом.
                    Читать все подробности этой безумной истории