• Автоматическое добавление, удаление постов и комментариев к ним на Facebook

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

    Хочу поделиться опытом автоматического добавления и последующего удалением новостей, а также комментариев к ним на страницах пользователей, групп, событий и фан. страниц Facebook.com.
    Читать дальше →
    • +6
    • 14,7k
    • 2
  • OAuth: описание протокола простым и понятным языком

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

      Пример кросс-авторизации


      Вернемся в 2005-й год и представим, что мы пишем социальную сеть. В ней имеется форма импорта контактов из адресной книги GMail. Что нужно для доступа к контактам GMail? Конечно, логин и пароль от ящика. Но если мы попросим ввести их на нашем сайте, пользователь заподозрит неладное. Где гарантия, что мы не сохраняем на сервере введенные пароли? Поэтому нам хочется, чтобы пароль вводился только на сайте GMail, и после этого доступ к контактам через API GMail предоставлялся нашей социальной сети (возможно, на время).
      Под катом - повествование с примерами
    • Лучшие графические редакторы, написанные на Flash

        Лучшие графические редакторы, написанные на Flash


        Когда заходит речь о миграции с Windows на другие платформы или на веб-приложения, каждый раз возникает неоспоримый аргумент: но там же нет фотошопа! Этот легендарный графический пакет благодаря пиратам прижился, наверное, на подавляющем большинстве компьютеров в СНГ. И несомненно альтернативу столь сложной программе найти сложно. Но если откровенно, как в большинстве случаев используется вся мощь фотошопа? Изменить размеры, подкорректировать яркость, иногда убрать лишние детали, да отправить на е-мейл подружке.
        Нужен ли для этого полноценный большой Photoshop? В большинстве случаев нет, если только вы не дизайнер-профессионал высокого класса. А значит, аналог найти будет уже проще.
        Но искать аналог среди настольных программ или программ под Linux это неинтересно! Мы живем в век Web 2.0, поэтому попробуем поискать аналоги среди веб-приложений. Да, еще недавно это было бы фантастикой, но развитие графических возможностей прежде всего Flash уже сегодня позволяет получить весьма интересные результаты. Конечно, описываемые редакторы не станут полноценной заменой «старшему брату», но для небольших фотокоррекций они пригодятся. Или представьте себя в интернет-кафе, где привычного вам софта нет, а вам нужно срочно взять готовую картинку, что-то в ней поменять, отметить или подписать и отправить собеседнику. В этом случае вас тоже может спасти одна из рассматриваемых ниже программ.
        Читать о 10 наиболее интересных представителях этого вида
      • flash-видео на веб-страницах и PHP

          Эта статья — перепечатка статьи от 16 ноября 2007 г. с моего блога, ссылку на который можно найти в моем же профайле — но, поскольку так уж вышло, что тема эта, кажется, до сих пор многим интересна, к тому же не так давно я читал на эту тему доклад на конференции PHPConf… в общем — судите сами.

          Вступление


          В последнее время все большее распространение получает технология трансляции видео через веб – без необходимости скачивать медиа-контент на машину пользователя, с просмотром прямо из браузера. Таким образом можно просматривать довольно большое количество различных форматов видео, однако, это требует наличия определенных плагинов на стороне пользователя. Очевидно, самым распространенным подобным плагином является flash-player (ну хорошо, хорошо: если быть точным, то он, конечно же, не может сам по себе проигрывать видео – но позволяет легко создать приложение, способное воспроизводить видео-контент). Яркий пример такого подхода – youtube.com. Попытаюсь рассказать о том, как самостоятельно организовать трансляции флэш-видео на своей веб-странице и какие существуют подходы к этой проблеме.

          Читать дальше →
        • Ежедневная работа с Git

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

          Я постараюсь донести основные идеи, показать как эта VCS помогает разрабатывать проект. Надеюсь, что после прочтения вы сможете ответить на вопросы:
          • можно ли git «подстроить» под тот процесс разработки, который мне нужен?
          • будет ли менеджер и заказчик удовлетворён этим процессом?
          • будет ли легко работать разработчикам?
          • смогут ли новички быстро включиться в процесс?
          • можно ли процесс относительно легко и быстро изменить?


          Конечно, я попытаюсь рассказать обо всём по-порядку, начиная с основ. Поэтому, эта статья будет крайне полезна тем, кто только начинает или хочет разобраться с git. Более опытные читатели, возможно, найдут для себя что-то новое, укажут на ошибки или поделятся советом.

          Далее очень много букв случайным образом превратились в пост.
        • Web-разработка на node.js и express. Изучаем node.js на практике

            Предисловие



            Пришла мне в голову смелая мысль, взяться за написание туториала по разработке на node.js (что-то наподобие ruby.railstutorial.org). Так как я первый раз берусь за подобный труд то для для меня очень важен любой фидбэк. Нужно это — не нужно. Что стоит убрать а на чем остановиться подробнее, в общем любая конструктивная критика. Надеюсь что дело пойдет и вам понравится, в этом случае по мере написания буду выкладывать главы на хабр.

            Вступление



            Приветствую, перед вами небольшой учебник по практической разработке на node.js, с использованием фреймворка express. Я с большим энтузиазмом отношусь к node и сопутствующим технологиям. Node.js в первую очередь привлекает свежестью в подходах к разработке, смелостью и драйвом.

            О том, что такое node.js вы можете прочитать на http://nodejs.org/, если коротко — то это серверная платформа, для выполнения javascript. Так же мы будем использовать express, web-фреймворк построеный на концепции middleware (о том, что это такое, поговорим поподробнее чуть позже)

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

            Хочется отметить, что очень большое влияние на меня оказал railstutorial, это лучшее пособие по web-разработке, которое я встречал, и мне очень хотелось бы создать нечто подобное для node.js.
            Читать дальше →
          • Пример сегментации изображений средствами PHP

            Добрый день,
            довольно редко, но все же встает вопрос о необходимости в автоматическом режиме делить изображение на логические фрагменты. Если вы ограничены только средствами PHP, то задача становится немного трудней, но все же решаема.
            В данной статье я рассмотрю частный случай распознавания образов, ориентированный на не слишком изощренную публику.
            В статье используются примеры с одного из сайтов с явным указанием ссылки, сайт не мой, изначально не было мыслей писать статью.
            Читать дальше →
            • +35
            • 10,2k
            • 3
          • Как узнать, что ваш PHP сайт был взломан

            • Перевод
            Сайт моего друга недавно был взломан, на нем была запущена старая версия IP.Board, в которой есть уязвимость локального внедрения кода (local file inclusion). Этот пост не будет посвящен IP.Board или другому php коду, он покажет, как найти потенциально вредоносный php код на ваших серверах. Наконец, покажу пример того, что злоумышленники могут загрузить на взломанный сайт.

            Проверьте логи доступа


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

            IpreMOVED - - [01/Mar/2013:06:16:48 -0600] "POST /uploads/monthly_10_2012/view.php HTTP/1.1" 200 36 "-" "Mozilla/5.0"
            IpreMOVED - - [01/Mar/2013:06:12:58 -0600] "POST /public/style_images/master/profile/blog.php HTTP/1.1" 200 36 "-" "Mozilla/5.0"
            

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

            Два файла выше это загруженные взломщиком скрипты, как они туда попали, большой роли не играет, так как код на любых двух серверах, вероятно, будет различным. Тем не менее, в данном конкретном примере, уязвимость в устаревшей версии IP.Board была использована, и атакующие смогли добавить свои собственные скрипты в директории доступные для записи, такие как пользовательский каталог загрузки и каталог, в котором IP.Board хранит кэшированные изображения темы оформления. Это общий вектор атаки, много людей изменяют права на эти каталоги на 777 или дают им доступ на запись, подробнее об этом чуть позже.

            Рассмотрим подробнее приведенные выше строки журнала, ничего не цепляет вас?

            Обратите внимание, что в журнале доступа POST запросы, а не GET запросы.
            Скорее всего, злоумышленники хотели сделать журнал доступа более неприметным, так как большинство журналов не сохраняют post данные.
            Читать дальше →
          • AppFog и Django. С чего начать?

              Доброго времени суток, уважаемые хабровчане! Недавно я заинтересовался Python и, в частности, веб-фреймворком Django. После ознакомления с основными возможностями захотелось найти бесплатный хостинг с поддержкой Django. Каюсь, в тот момент напрочь забыл про GAE, но, почитав вчера про оный, понял, что выбор получился ничуть не хуже. Итак, встречайте, AppFog! (осторожно, под катом картинки!)
              Читать дальше →
            • HTML5 File API: множественная загрузка файлов на сервер

              Когда передо мной в очередной раз встала задача об одновременной загрузке нескольких файлов на сервер (без перезагрузки страницы, само собой), я стал блуждать по интернетам в поисках довольно корявого jQuery-плагина, который позволяет имитировать ajax-загрузку файла (того самого плагина, который со скрытым фрэймом: от java- и flash- плагинов сразу было решено отказаться). В процессе поиска я вспомнил, что в грядущем стандарте html 5 возможности по работе с файлами должны быть существенно расширены, и часть этих возможностей доступна уже сейчас. В итоге было решено опробовать их в действии.

              Рассматривать возможности File API будем на примере одновременной загрузки нескольких картинок на сервер. В конце статьи приводится готовое решение, оформленное в виде jQuery-плагина.
              Читать дальше →
            • Мобильная веб-разработка: некоторые особенности и советы

              • Tutorial
              Разрабатывая мобильное приложение, я обнаружил пару вещей, знания о которых мне бы пригодились, когда я начинал. Поэтому я решил написать статью в формате небольших советов. Эти советы больше нацелены на разработку мобильных приложений под PhoneGap, Windows 8 и Firefox OS. Но разработчикам мобильных веб-сайтов тоже могут пригодиться. В конце статьи дам ссылки на то, что в конце концов получилось
              Подробности
              • +20
              • 15,9k
              • 4
            • Highload на дешевом хостинге: хэш-таблица в MySQL

                Высоконагруженный проект (web-сайт) — не обязательно популярная социальная сеть, видеохостинг или MMORPG. Простейший способ резко повысить требования сайта к железу — перенести хранение сессий в БД. В этой статье мы рассмотрим способ хранить данные в БД, и при этом не жертвовать производительностью. Пожертвовав небольшим объемом ОЗУ можно прилично сэкономить процессорное время. Мы говорим о стиуации, когда недоступны memcached и другие специальные средства кэширования.
                Читать дальше →
              • Очистка float-элементов посредством создания нового блочного контекста форматирования

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

                Техника – это способ справиться с заданием, и у нас, разработчиков и дизайнеров фронтэнда, этих способов бывает достаточно много. При это, будучи погруженными в рутинную работу, мы порой не всегда замечаем как стремительно меняется окружающая нас сфера. В период с 2002 по 2010 годы сообщество фронтэнд-разработчиков буквально покрывалось язвами избыточного кода и ресурсов, от которых страдали и работа сайтов, и удобство их использования. Чтобы с этим справиться, мы придумали уйму хаков, трюков и уловок под кодовым названием «техника». Мы по-прежнему продолжаем выполнять поставленные перед нами задания, просто используем не самые эффективные способы.



                Оборачиваясь назад, отметим, что в последние несколько лет установились новые, лучшие, стандарты и способы их применения, позволяя нам создавать более продвинутые «техники». Этот новый мир, открытый перед нами, называется «modern web». Web 2.0, которым восхищались в свое время, сегодня для нас стал запутанным и застойным. С одной стороны нет сомнений в том, что подобная судьба постигнет и то, что мы называем «modern web». С другой — пока что мы можем использовать этот термин и злоупотреблять им сколько угодно, пока понимаем, что он означает.

                

В 2010 появился стандарт HTML5, обеспечивающий совершенно новую, полустандартизованную веб-среду. Такие браузеры, как Opera, Firefox, Chrome и Safari приняли нововведения, и их разработчики вышли за пределы реализации стандартов и изучения интерфейса программирования приложений. Чтобы представить себе, насколько автономны эти браузеры, можно ознакомиться с отличной наглядной демонстрацией поддержки HTML5 на www.html5readiness.com.
                Читать дальше →
              • Современные веб-формы: еще несколько тонкостей

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



                  Потратить время на чтение
                • Эмуляция события вызова функции

                    Около полугода назад мне задали примерно такой вопрос: “Я использую крупный фреймворк, запускающий некую функцию по действию пользователя. Хочу, не меняя кода этой функции, выполнить по событию вызова этой функции свой код.”. Практика далеко не лучшая, события вызова функции не существует, я просто покрутил пальцем у виска и сказал, что это жуткий говнокод, так делать не стоит, да и это, просто-напросто, — невозможно.

                    Пару дней назад, направляясь домой относительно тёплым зимним вечером, не типичным для Одессы, у меня возникла нетипичная мысль: “А что если попробовать сделать то, что спрашивал Богдан полгода назад?”. Придя домой, я включил компьютер, и, в течении пары минут, сделал то, что задумал. В первую очередь, меня интересовало то, как будут себя вести встроенные методы, если их переопределить, и можно ли после этого как-нибудь вызвать прежнее их состояние, бывшее до переопределения. Я знал, что, если объект переопределяют, то ссылки на него не уничтожатся, сохраняя прежний вид. Что касается встроенных функций, имелись сомнения. Оказывается, можно.

                    Скорее всего, мне даже никогда не придется воспользоваться таким инструментом, но, чисто гипотетически, возможно, у кого-то возникнет задача проследить вызов той или иной функции, получив отчет о каждом вызове, состоящий из:
                    1. Результата выполнения
                    2. Переданных аргументов
                    3. Контекста вызова (что есть this при вызове)
                    4. Количества вызовов функции после создания обработчика

                    (Этот список полностью соответствует аргументам, передающимся в обработчик)
                    Очень мало буков
                  • Пишем «рисовалку» для iPhone на HTML5 Canvas

                    Здравствуйте, Хабражители!

                    В этом топике я покажу как создать простой графический редактор для iPhone. Статья написана максимально понятно, поэтому даже новичку не будет сложности разобраться. Более того, я расскажу:

                    • об особенностях событий touch-устройств;
                    • об особенностях верстки для мобильных девайсов;
                    • почему для создания нормальной «рисовалки» нужно использовать несколько холстов;
                    • что такое clickjacking и зачем я использовал этот хак в своей рисовалке;
                    • о всех трудностях и некоторых мелочах, с которыми я столкнулся в процессе разработки;


                    Больше — под катом

                    Читать дальше →
                  • Загрузка файлов на сервер в 2012 году

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

                      Я работаю в Почте Mail.Ru, и моей прямой обязанностью является работа с JavaScript во всех его проявлениях. Прикрепление файлов к письму — одна из основных функций любой почты. Мы тут не исключение: у нас уже был Flash-загрузчик, который вполне исправно работал и долгое время нас устраивал. Однако у него был ряд недостатков. Вся верстка, графика, бизнес-логика, и даже локализация были зашиты в нем, в результате чего решение было громоздким, а внести правки мог только Flash-разработчик. В какой-то момент мы поняли, что нам необходим новый механизм. О том, как его создать, пойдет речь в этой статье.

                      Читать дальше →
                    • Своя игра с JavaScript и Canvas

                      imageНе так давно мне стало любопытно, насколько сносно современные браузеры поддерживают HTML5 и я не нашел лучшего
                      способа, чем написать простейший 2D платформер. Помимо удовольствия от разработки игрушки и улучшения навыков в использовании JavaScript, в ходе развлечения кропотливой работы был накоплен определенный опыт и эмпирическим путем были найдены основные грабли, на многие из которых мне пришлось наступить. В этой статье я попробую кратко и с примерами резюмировать то, что вынес для себя из проделанной работы. Желающих создать свое высокопроизводительное JavaScript приложение, эффективно работающее с графикой, прошу под кат.
                      Читать дальше →