• «Замести следы и уйти на выходные»: как удалить себя из большинства популярных сервисов

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

      Читать дальше →
    • Реализуем http/2 server push с помощью nghttp2

        Всем привет, сегодня я расскажу о том, как настроил server push на своём сайте и добился увеличения скорости рендеринга страниц. Для начала о том, что же такое server push в HTTP/2. Это технология, позволяющая серверу «протолкнуть» дополнительные данные клиенту, в момент запроса основного документа. То есть в обычной ситуации запрашивает браузер html-страничку, затем обрабатывает её и приходит к выводу, что ему для корректного отображения необходимо подгрузить дополнительные файлы: стили, скрипты, изображения. После чего скачивает их и отображает конечный результат. Server push позволяет отправить дополнительные файлы уже в момент получения основного документа, и они уже будут иметься в кэше, когда они потребуются браузеру. За счёт этого возрастает скорость загрузки сайта.

        На этот раз схема будет следующая:



        Читать дальше →
      • Внедрение code style в разработку

          Добрый день, %username%

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

          Немного о нашем проекте: PHP сайт, лежит в git репозитории объемом 2Gb, состоит из 20k php файлов, возраст проекта- 10 лет, в данный момент у нас 15 разработчиков. Для code review используем atlassian stash. Всю разработку ведем в рамках отдельных веток, которые после прохождения code review вливаем в master и деплоим на прод
          Читать дальше →
        • Как определить дубликаты картинок с помощью PHP

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



            Потому рано или поздно встает вопрос автоматизации процесса поиска повторов, и тут мы рассмотрим основные, а также попробуем в деле.
            Читать дальше →
          • Прозрачный переход PgQ -> RabbitMQ



              Дорогой хабрачитатель, я хочу поделиться опытом по поводу прозрачного для приложения перехода с очереди PgQ на amqp. Возможно это покажется велосипедом, возможно какие-то мысли пригодятся. Статья предполагает знакомство с основами PgQ и rabbitmq.
              Читать дальше →
            • Разукрашиваем вывод mysql-client в консоли

              Цвет и звук — это те небольшие радости, которые могут разукрасить и облегчить будние администратора при постоянной работе с консолью. Вывод цветовой информации регулируется так называемым escape-последовательностями, определяющими среди прочего цвет текста и цвет фона.

              Общий вид: \033[Xm, где X — это значение параметра (цифра). Например, echo -ne "\033[34mHELLO" выведет синим цветом «HELLO». Таблицу цветов и других доступных параметров (подчеркивание, мигание и т.п.) можно получить в документации man console_codes в разделе «ECMA-48 Set Graphics Rendition». Обычно поддержка цвета интегрирована в само приложение, но mysql-client не входит в число таких программ.

              В интернете не раз был встречен вопрос о разукрашивании консоли mysql, но нигде не нашлось рецепта. Только общие слова «может быть состряпать обертку» или «посмотрите в исходном коде». Такой вопрос на StackOverflow жил без ответа более 2 лет! «Жил» было специально употреблено в прошедшем времени, потому что ответ нашелся.

              Поможет нам утилита grc. Она доступна в большинстве дистрибутивов и о ней многие знают. Но как обернуть в нее вывод mysql-client?


              Читать дальше →
            • Искусственный интеллект как совокупность вопросов

                image
                Когда мы рассуждаем о сильном искусственном интеллекте, то мы понимаем, что это не изолированный вопрос, не вещь в себе, а вопрос ответ на который подразумевает объяснение всех явлений, которые связаны с мышлением человека. То есть, ответив на вопрос о природе интеллекта, мы неизбежно должны будем ответить на такие вопросы как:

                • Что есть информация?
                • Как мозг представляет знания?
                • Что такое язык?
                • Какова роль языка в мышлении?
                • Как совершаются поступки?
                • Как осуществляется планирование?
                • Какова природа фантазий и воспоминаний?
                • Что такое мотивация?
                • Какова природа эмоций?
                • Откуда берется многообразие эмоциональных оценок?
                • Что есть смысл?
                • Как рождается мысль и какова ее природа?
                • Что такое внимание?
                • Что есть любовь?
                • Что есть гармония и красота?

                Читать дальше →
              • CSS слайдер

                  С развитием CSS3, возможности верстки растут экспоненциально. Всё больше функционала можно реализовать на «чистом» CSS. В этом посте показан процесс разработки интерактивного циклического слайдера без единой строчки JavaScript. Автоматическая ротация, выбор любого слайда с плавным переходом – на «чистом» CSS. Пример в действии



                  Под катом пошаговое описание реализации
                • Коллаборативная фильтрация

                    В современном мире часто приходится сталкиваться с проблемой рекомендации товаров или услуг пользователям какой-либо информационной системы. В старые времена для формирования рекомендаций обходились сводкой наиболее популярных продуктов: это можно наблюдать и сейчас, открыв тот же Google Play. Но со временем такие рекомендации стали вытесняться таргетированными (целевыми) предложениями: пользователям рекомендуются не просто популярные продукты, а те продукты, которые наверняка понравятся именно им. Не так давно компания Netflix проводила конкурс с призовым фондом в 1 миллион долларов, задачей которого стояло улучшение алгоритма рекомендации фильмов (подробнее). Как же работают подобные алгоритмы?

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


                    Читать дальше →
                  • Учим Python качественно

                    Здравствуйте всем!

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

                    Удобочитаемый синтаксис, прост в обучении, высокоуровневый язык, Объектно-Ориентированый язык программирования (ООП), мощный, интерактивный режим, масса библиотек. Множество иных плюсов… И это всё в одном языке.
                    Для начала окунёмся в возможности и узнаем, что же умеет Python?
                    Читать дальше →
                  • О «чистоте» мобильного веба, мошенниках и рекламе

                      Покажите мне только богатого человека, и я отниму у него деньги.
                      С деньгами нужно расставаться легко, без стонов.
                      Остап Бендер

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

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

                      О проблеме уже писали несколько раз на хабре, и вообще — http://bit.ly/ReGcFd.
                      В интернете информации тоже полным полно — статья википедии, например. Само по себе мобильное мошенничество невозможно без привлечения новых и новых "клиентов". Один из самых "дешевых" способов — это реклама в мобильном интернете. К моему удивлению, даже известные сети мобильной рекламы не борются с мошенниками. Примеров тому множество. Из последнего — вот эта статья на хабре.
                      Если вы размещаете на своих ресурсах рекламу самостоятельно, то вы тоже не защищены от мошенников, т.к. когда сервис становится массовым, остро встает вопрос модерации. В случае, если модерацию проводит не специалист в этой области, риск разместить "алярм" возрастает. В этом плане сети ИМХО даже несколько безопаснее, чем самостоятельное размещение рекламы, т.к. там запрет мошенничества как минимум заявлен.
                      Под катом я расскажу о видах мошенничества и о том как мы выявляем мошенников в plus1.wapstart.ru

                      Читать дальше →
                    • Подборка CSS3-генераторов для упрощения фронтэнд-разработки

                      • Translation
                      CSS3 предоставляет много новых возможностей в мире фронтэнд-разработки. Это действительно великолепная вещь, но иногда трудно вспомнить некоторые параметры, особенно, если вы — веб-дизайнер, а не программист. Вот 10 удивительных CSS3-генераторов, которые помогут вам сэкономить время и силы (картинки кликабельны).
                      Читать дальше →
                    • Доступ к Skype API используя PHP на *nix системах

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

                        Но недавно, просматривая официальную документацию по API скайпа, я обратил внимание на «D-BUS messaging», не знаю, почему я раньше не обращал на него внимание. Разобравшись со всем, я наконец сделал то, что давно хотел! Я получил доступ к Skype API на PHP. Об этом я и хочу рассказать в своей статье.

                        Читать дальше →
                      • Программа zxcvbn: реалистичная оценка надежности пароля

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

                        Вопрос только в том, действительно ли такая программа помогает защитить учетную запись пользователя? Этот аспект интернет-безопасности, конечно, не настолько важен, как некоторые другие, например:
                        • предотвращение взлома веб-страниц за счёт нарастающей задержки или использования CAPTCHA;
                        • предотвращение офлайн-взлома путем применения достаточно медленной хеш-функции с индивидуализированной на уровне пользователя «солью»;
                        • защита хешей паролей.

                        Читать дальше →
                      • Ключевое слово this в javascript — учимся определять контекст на практике

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

                        var f = function() {
                            this.x = 5;
                            (function() {
                                this.x = 3;
                            })();
                            console.log(this.x);
                        };
                        
                        var obj = {x: 4, m: function() {
                            console.log(this.x);
                        }};
                        
                        
                        f();
                        new f();
                        obj.m();
                        new obj.m();
                        f.call(f);
                        obj.m.call(f);
                        

                        Читать дальше →
                      • RuTracker взломан

                          В ночь на 14 августа торрент-портал RuTracker.org перестал открываться у большей части пользователей.
                          Судя по всему, ресурс был взломан хакерами. При заходе на сайт была установлена автоматическая переадресация на внешнюю страницу под заголовком Ita est! («это так» — лат.)

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

                          Rutracker.org является наиболее популярным из российских торрент-трекеров. Первоначально ресурс существовал под названием Torrents.ru. В феврале 2010 года делегирование домена Torrents.ru было прекращено из-за уголовного дела по факту незаконного использования объектов авторского права.
                          Читать дальше →
                        • Жесткая приоритизация, или 5 первых шагов к отличному приложению для Windows 8. От персонажей к сценариям

                            Одна из сложностей, с которой, по моему опыту, сталкиваются практически все разработчики и дизайнеры, работая над приложениями для Windows 8 и Windows Phone, начинается прямо с порога – с проектирования того, как пользователь будет взаимодействовать с приложением (UX и UI).

                            From Idea to App

                            Часто разработчик (автор приложения) приходит с некоторой готовой идей и старается напрямую перенести в Windows 8 привычную десктопную, мобильную или веб-функциональность. Обычно эта прямолинейная попытка «портирования» оборачивается стремлением сохранить все, что есть в оригинальном решении, включая схожие шаблоны решения интерфейсных задач и знакомые приемы разработки и написания кода.
                            Читать дальше →
                            • +7
                            • 13.8k
                            • 2
                          • Полезные метрики для оценки проектов

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

                              Зачем что-либо измерять?


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

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

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

                              А если не приходят, значит метрику можно смело выбросить ;)
                              Читать дальше →