• DoS эксплоит для движка WebKit

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

      Уязвимость воспроизводится на Mac OS 10.8 (Mountain Lion) и iOS 6. Версии iOS <6 и 7 beta, Mac OS <10.8 и 10.9 beta не подвержены проблеме.

      Ссылка на эксплоит: https://zhovner.com/tmp/killwebkit.html

      Уязвимость можно воспроизвести:
      • Отправив sms на iPhone — при этом происходит респринг и больше нельзя зайти в приложение «Сообщения». Исправить можно так habrahabr.ru/post/191654/#comment_6658802
      • Отправив сообщение через iMessage на iOS или десктопный Messages в Mac OS — приложение завершится и более в него нельзя будет зайти.
      • Открыв страницу содержащую строку — мобильный Safari в iOS просто закроется. При этом, если не удалить историю посещений, зайти повторно в него не получится. Десктопный Safari ведет себя так же. Десктопный Chrome завершит процесс вкладки показав сообщение об ошибке, сам браузер продолжит работать. Новая Opera и Яндекс.Браузер ведут себя аналогично Хрому.
      • Поместив строку в название WiFi-сети (ESSID) — во время сканирования сетей это должно вызвать ошибку. Метод описан на news.ycombinator.com и мною не проверялся: news.ycombinator.com/item?id=6293824


      Читать дальше →
    • Пишем первый проект на Play Framework 2.0

      13 марта состоялся релиз второй версии scala/java-фреймворка Play. На хабре уже был обзор новых фич Play 2.0. В этой же статье я хочу восполнить пробел в отсутствии мануалов на русском языке по этому интересному фреймворку на примере создания простого приложения на Java, состоящего из списка категорий и привязанных к ним вакансий.

      Статья рассчитана на тех, кто совсем не знаком с Play и хотел бы его «пощупать», не тратя много времени.
      Читать дальше →
    • Хорошая альтернатива тарифным пакетам



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

        Казалось бы, это хорошее решение — как для клиента, так и для разработчика, т.к. в тарифных пакетах каждый клиент находит свое оптимальное соотношение цена/возможности, а владелец сервиса таким образом лучше удовлетворяет спрос и максимизирует прибыль.
        Читать дальше →
      • Поиск неточных совпадений, поиск с учетом ошибок ввода

        Предисловие



        Есть у нашей компании своя собственная CRM и периодически в эту систему добавляются данные о неких организациях с точным адресом, и главное что адреса эти по сути уникальны, то есть в системе не должно быть нескольких организаций по одному адресу (специфика, на самом деле могут, но контролируется челфаком*). С недавнего времени в систему был прикручен КЛАДР, но и он не мог быть панацеей, т.к. КЛАДР имеет кучу неточностей, многие нас. пункты остались без номеров домов итд. итп., хотя адреса эти в реальности есть (данные предоставляют сотрудники компании и они достоверны). В общем ввод адреса оставили в свободной форме с подсказкой из КЛАДр. Сразу хочу сказать, что от комбинации полей мы отказались, т.к. многообразие аббревиатур сокращений не сулило ничего хорошего, к тому же вполне позволительным был адрес на подобии («Ололошское ш. 5км», «ТЦ Весельчак У» или даже «Центральный рынок»). И наконец главный враг программиста — челfuck, подразумевающий от неграмотности и опечаток до залипающей клавиатуры и опечаток. Остальное под катом…
        Читать дальше →
      • Автоматизируем социальную активность вашего интернет стартапа с помощью ifttt.com

        Начнём с описания ifttt.com



        ifttt.com — это очень перспективный стартап, который в двух словах: Lets You Hack Together Web Apps, Without Coding Skills. Если детальнее, то это сервис позволяющий пользователям, без погружения в API огромного количества сервисов и каких либо знаний о разработке\языках программирования смешивать и автоматизировать различную активность друг с другом. В начале 2012 года получили посевные инвестиции в размере $1.5M.

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

        ifttt main screen
        Экран задач выглядит так

        Читать дальше →
      • [42]magnets — стартап за один день



          Все большую популярность у гиков набирает развлечение в формате One-day Project или Funky Friday. Идея состоит в том, чтобы в очень сжатые сроки разработать и зарелизить проект. Польза состоит не только в том, чтобы почувствовать себя настоящим стартапером и проверить себя и свою команду на прочность. Польза в том, что такой формат позволяет проверить работоспособность идеи и найти подводные камни до того, как вы целиком посвятите себя проекту. Кроме того, дополнительный бонус в том, что вы научитесь разбивать идею на части, выделяя Самое Главное. Ведь за сутки невозможно, да и не нужно реализовывать все задумки — нужно сконцентрироваться на основном, чтобы успеть в срок.

          Для нас это был второй проект, который мы разрабатывали в таком формате. С разработкой первого мы не уложились в сроки даже близко. Нас это научило лучше оценивать свои силы и подбирать инструментарий. К реализации второй идеи мы подошли более серьезно. Заранее была проработана идея, определен минимальный функционал и подобран инструментарий. Так что накануне, в четверг, на доске был разрисован план действий, распределены роли и выбран доставщик пиццы. Одним словом, все было готово к пятнице.
          Читать дальше →
        • Mailcheck.js — проверка емейла на опечатки


            jQuery плагин Mailcheck (github) — клиентсайд проверка емейла на опечатки по заранее определённму списку (к примеру, наиболее популярных почтовых сервисов).

            Демка | сорсы демки (jsfiddle)


            По заявлению (en) авторов (Kicksend), сей плагин увеличил кол-во подтверждений емейла при регистрации на 50%.

            Под катом инструкция для кириллических доменов и алгоритмическая задачка
          • Grocery CRUD, или как я облегчил себе жизнь на неделю

            Добрый день, ХабраСообщество!
            Уже почти месяц веду разработку проекта на CodeIgniter 2.0 и к середине написания столкнулся с проблемой при написании администраторской части. Так сложилось что с «CI» знаком уже более 2-х лет, и еще не разу CodeIgniter меня не подвел в своих возможностях.
            Сам проект у меня исчисляется 35 таблицами и писать администраторскую панель мне необходимо для «хомячков». Подсчитав приблизительные человеко-часы необходимые на разработку интерфейса + программной части, я пришел в дикий ужас. Энтузиазм немного поутих (проект мой личный). Вспоминая добрым словом хоть какой-то CRUD в старых версиях, я рискнул «спросить Гугл», авось повезет… И повезло!
            Читать дальше →
            • +11
            • 13,6k
            • 9
          • Балансировка статических файлов средствами nginx

              Представим, что у нас есть приложение/сайт с достаточно высокой нагрузкой.

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

              Как поступить, когда на сервер ежесекундно приходит большое количество народу? Ответ прост — nginx.

              Читать дальше →
            • Решение проблемы отсутствия layout в codeigniter'е

                Известная проблема этого фреймворка — это отсутствие встроенной библиотеки layout'ов. Это серьезно ограничивает разработку веб приложений даже среднего уровня сложности. Страница вызывается как составной шаблон:
                $data['page_title'] = 'Your title';
                $this->load->view('header');
                $this->load->view('menu');
                $this->load->view('content', $data);
                $this->load->view('footer');
                


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

                $this->load->view('content', $data);
                



                Недавно я наткнулся на заморскую статью с примером разрешающим эту проблему. Принцип довольно прост. Создается библиотека application/libraries/my_layout.php
                Читать дальше →