• Как авторизуются люди в Рунете

      image
      По следам этого поста, публикую данные о ситуации в Рунете. В качестве оператора «общей» аутентификации в данном случае вышла система Loginza. Данные собраны за три полных месяца и за половину августа.

      Первое место занимает великое рунетовское зло (пока что незаменимое лично для меня, ввиду его повсеместности – где бы еще я за два часа смог найти внедорожник для съемок или фотографа на бекстейдж?) vkontakte.ru. Количество заходов под этим аккаунтом составило почти 14 тыс. за исследуемый период, что в процентном отношении дает около 45%.
      Читать дальше →
    • Вероятностный морфологический анализатор русского и украинского языков на PHP

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

        Стемминг — это процесс нахождения основы слова для заданного исходного слова. Основа слова необязательно совпадает с морфологическим корнем слова. Алгоритм стемминга представляет собой давнюю проблему в области компьютерных наук. Данный процесс применяется в поиcковых системах для обобщения поискового запроса пользователя.
        Конкретные реализации стемминга называются алгоритм стемминга или просто стеммер.

        Заинтриговал?
      • Здоровье и кодинг — как совместить?

          У меня, как и у многих товарищей по профессии после нескольких лет сидячей работы и отсутсвия физических нагрузок здоровье начало ухудшаться.
          Первой ласточкой стало медленно, но верно растущее пузо.
          Затем последовал серьёзный удар по общему состоящию — я заработал проблемы сразу в двух местах позвоночника. Отлежался недельку в больнице, обколотый блокадами, пенницилином и прочими лекарственными гадостами, простудился там под новый год и получил массу неприятных впечатлений.
          Проблемы со спиной были решительно списаны на подъём тяжестей и благополучно забыты… до весны. Весной произошёл рецидив с диагнозом «протрузия позвоночного диска» в поясничной части.
          После пробежки по врачам последовали две недели работы на дому с попиванием таблеточек и лежанием на кровати.
          Я понял, что если я серьёзно не займусь своим здоровьем, то могу с ним попрощаться навсегда. Но времени как всегда нехватает, дела, работа, дипломный проект и прочие вещи серьёзно мешали заниматься в тренажёрном зале или ходит в какие-нибудь оздоровительные заведения.
          Но, подойдя к вопросу системно, я нашёл решение. Решение простое, бесплатное, доступное всем и занимающее не больше 20 минут времени в день.
          Читать дальше →
        • Yaxy — proxy-сервер для веб-разработчика

            Yaxy — proxy-сервер, подменяющий различные части HTTP-запросов и ответов на указанные в config-файле значения. Я не буду здесь описывать, как поставить, настроить и запустить сервер, это всё описано в readme репозитория. Здесь я опишу различные случаи, в которых Yaxy очень помогает, а то и вовсе незаменим.

            Под катом 9 примеров использования Yaxy
          • Проксируем Cookies на Nginx при помощи модуля lua-nginx



              Я уже писал о том, как с помощью Nginx трансформировать контент на лету. С момента публикации статьи на базе описанного метода запущен и развивается реальный проект ecommerce. Помимо перевода и трансформации также реализован и SEO рерайт по заветам руководства для начинающих от Google.

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

              В чем суть проблемы


              Проблема заключается в том, что любой нормальный сервер приложений всегда выставляет Cookie, например для того, чтобы сохранять сессию клиента или корзину с его товаром. Если этот сервер (точнее его администратор) озабочен поддержанием определенного уровня безопасности, то он выставляет в теле Cookie домен и путь, например domain= backend.org; path=/path1. Наш Nginx запущенный в режиме Reverse Proxy замечательно меняет все ссылки в теле документов с backend.org на frontend.org, но не делает этого для кук! Это означает что браузер клиента отвергнет такие куки.

              Этот вопрос с давних пор волнует умы администраторов nginx, в рассылках он всплывает по 1-2 раза в год. Большинство вопрошавших, по-видимому, решили свои проблемы подкручивая логику backendа, но не я! После очередного апдейта оригинального сайта стало понятно, что костыль с PHP + Curl тянуть больше невозможно и надо непременно найти решение с помощью Nginx!

              Я вернул тему в рассылку, попутно перебирая варианты из ngx_http_perl_module и переменной $upstream_http_set_cookie, даже заглянул в дебри сорсов с призрачной надеждой написать модуль самому. Но все было неудачно пока в один прекрасный момент я не получил письмо от Mikhail Mazursky, который дал ценный совет. Благодаря этому совету я не только с легкостью решил задачу проксирования Cookie, но и получил новый инструмент, с помощью которого можно создать версию 2.0 своего проекта.

              Решение


              Название этого инструмента lua-nginx-module, который написан еще одним китайским самородком с корнями из Taobao. Из названия легко понять, что речь об языке скриптов Lua встроенном в Nginx — но это больше чем просто интерпретатор! Эти ребята создали полностью неблокируемую реализацию с производительностью десятки тысяч операций в секунду, которая имеет хуки ко всем событиям внутри Nginx. То что раньше можно было реализовать только написав свой модуль на C, теперь можно сделать несколькими строчками на Lua. Заинтересовались?
              Тогда добро пожаловать под кат!
            • О том, как я заставлял Ubuntu работать 10 часов от батареи

                imageЯ являюсь рядовым линукс-пользователем и поэтому не стоит от этой статьи ожидать очень умных ходов или нестандартных программистских решений. Все по мануалам. Но раз результат достигнут, значит кому-то кроме меня это может оказаться полезным.

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

                Устанавливал я Ubuntu 10.10 на ноутбук Acer Aspire Timeline 5810TG. Эта машина обладает экраном в почти 16 дюймов и относительно производительным железом, зато батарея достаточно емкая, чтобы ставить с ней личные рекорды.
                Читать дальше →
              • Как сделать FULLTEXT поиск в CMS на CodeIgniter

                На Хабре в последнее время появляется все больше постов посвященных набирающему популярность framework'у CodeIgniter. Это довольно простой и удобный фреймворк с помощью которого можно быстро начать делать нормальные приложения на PHP. Под катом пример реализации FULLTEXT поиска в CMS на CodeIgniter.
                Читать дальше →
              • Динамическое изменение ширины страницы

                  image

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

                  Читать дальше →
                • F3: маленький PHP-фреймворк с огромными возможностями



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

                    Fat-Free чем-то похож на известный Ruby-фреймворк Sinatra. Автор Fat-Free помешан на минимализме и чистоте кода, что положительно отразилось на этом простом каркасе для разработки самых разнообразных приложений.

                    Fat-Free состоит из одного файла и весит всего 55KB. При этом фреймворк обладает таким функционалом: специфический и довольно удобный шаблонизатор, гибкое кеширование, автоматическая защита от спама, интегрированные средства для юнит тестов, профайлер кода.

                    Он настолько маленький и быстрый, что даже может использоваться для контроля траффика Web-сервера.

                    Это, также, единственный фреймворк, который защищает Ваше приложение от хотлинкинга и DoS атак.
                    Читать дальше →
                  • Командная работа в Git

                      Во всем множестве статей по git'у, которые я смог найти в сети, не хватает одного существенного момента — описания командной работы. То, что обычно описывают как командную работу, на самом деле является просто работой с удаленным репозиторием.

                      Ниже я хочу описать свой опыт командной работы над проектом с использованием git'а.
                      Читать дальше →
                    • Несколько советов для PHP-разработчиков

                        image Хочу опубликовать небольшой сборник советов для современных PHP-разработчиков. Я умышленно не связываю их с теми или иными фреймворками, библиотеками и тп. Надеюсь, что мои советы помогут кому-то лучше понять PHP, научиться лучше его использовать. Некоторые из них могут быть не специфичны для PHP, но для программирования в общем.
                        Читать дальше →
                      • Не строим с нуля. Теперь у Вас есть шаблон для верстки HTML5

                        • Translation
                        Любовь к HTML5 продолжает вдохновлять Поля Айриша. Во-первых, он подарил нам Modernizr, а сейчас он объединился с Divya Manian для создания шаблона HTML5, который использует передовые техники, чтобы Вы могли начать использовать его в своей практике.

                        Он, в сущности, является хорошей отправной точкой, состоящей из HTML и CSS, предлагающим также и структуру папок, которая работает. Но созданным с учётом многих лет передового опыта профессионалов в разработке клиентской части. Загляните в исходные тексты, чтобы почувствовать, что находится внутри. А если вы думаете, что этого слишком много, просто удалите лишнее.
                        Читать дальше →
                      • Полезные инструменты для разработчиков CSS3

                        • Translation
                        image
                        Вообще говоря, язык CSS достаточно прост. Но как только производители браузеров приступили к реализации функций CSS3, то все немного усложнилось. Нет — это не стало трудным, но усложнилось. Это объясняется главным образом по двум причинам: во-первых появилось много новых свойств CSS3 (например, переход, градиент, преобразования и т.д.), и во-вторых, мы должны ориентироваться на расширения, используемые конкретным браузером.

                        Поэтому теперь вашими лучшими друзьями по CSS3 будут генераторы, шпаргалки, справочники и решения на базе JavaScript. Это именно те инструменты, которые помогут вам в обучении и применении CSS3 сегодня.
                        Читать дальше →
                      • Когда картинка красноречивее 1024 слов – прототипирование с MockingBird

                          image Для написания ТЗ я задался вопросом поиска простого и удобного средства создания прототипов веб-страниц. Хотелось чего-то бесплатного и в онлайне, некой альтернативы Axure. Такой сервис удалось найти, его я и предлагаю вашему вниманию. Итак, встречайте www.gomockingbird.com – сервис, позволяющий создавать очень красивые прототипы легко и удобно.
                          Помимо представления самого сервиса, этим постом хотелось также привлечь внимание общественности к полезной практике прототипирования.
                          Читать дальше →
                        • Налоговая взялась и за фрилансеров в России

                            Недавно на хабре была заметка о том, как фрилансеров Беларуси проверяет налоговая. Эта история случилась совсем недавно уже в России.

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

                            Работаю я фрилансером уже около 4 лет, как ИП не зарегистрирован, все это время большую часть дохода вывожу WMR на карточку через банкинг от WM. Посчитал, за последние 3 года (вроде именно столько т.н. отчетный период) вывел на счет около 1 млн.руб. Налоговая вменяет незаконную предпринимательскую деятельность. Причем минимум, что мне грозит (как объяснили) — это уплата 13% со всего дохода плюс штрафы, максимум (что, как я понял, более вероятно) — уголовная ответственность и условный срок.

                            На следующей неделе буду консультироваться с юристами. Были ли подобные прецеденты в рунете?

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

                            UPD2 Насчет регистрации ИП: уточнял в налоговой плюс гуглил эту тему — работать по-белому можно только если есть договор с каждым заказчиком, который скорее выберет исполнителя без бумажных «заморочек».
                          • Настройка резервного копирования Linux-сервера за 5 минут

                              Передо мной возникла необходимость настроить резервное копирование на новом Linux-сервере, задачка эта оочень важная, но уж больно скучная: нужно написать и отладить скрипты, которые будут архивировать нужные папки (причем желательно делать инкрементальные архивы), базы данных, хранилища subversion, а затем переносить эти архивы на удаленный сервер. По этому я попробовал нагуглить готовое решение для этой задачки и в результате наткнулся на backup-manager — замечательный опенсорсный набор bash-скриптов, позволяющих:
                              • архивировать любые папки, в том числе и создавать инкрементальные архивы. В конфиге просто указывается список директорий, которые должны быть скопированы, а также «черный список» файлов, которые копироваться не будут.
                              • делать резервное копирование баз данных MySQL. В конфиге указываются логин и пароль mysql-юзера, имеющего доступ к базам, а всю остальную работу backup-manager делает сам.
                              • делать резервное копирование svn-репозиториев, причем бэкап делается не копированием папки с хранилищем, а с помощью команды svnadmin dump.
                              • шифровать архивы.
                              • копировать созданные архивы на удаленные сервера по FTP, SSH или (это самая важная для меня фича) в хранилище Amazon S3, а также записывать их на DVD.

                              Таким образом, один этот этот набор скриптов решил абсолютно все мои задачи, связанные с резервным копированием. Настраивается все это хозяйство не более чем за пять минут, так как в конфигурационном файле каждый параметр имеет подробные комментарии, так что проблем с настройкой возникнуть ни у кого не должно.
                              Читать дальше →
                            • Простой и эффективный метод отразить http DDoS от 50мбит с помощью nginx и iptables

                                Здравствуй, Хабр!
                                Предлагаю твоему вниманию простой и в то же время эффективный метод борьбы с http DDoS. На основе сервера Xeon 2.5GHz / 4Gb RAM / SAS можно отражать атаку примерно до 300 Мбит/с (значение получено методом экстраполяции).

                                Способ реализация

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

                                Область применения

                                Борьба с Http DDoS на выделенном сервере или ВПС. Максимальная возможная мощность сдерживания DDoS атаки ограничивается физическими возможностями сервера и пропускной способностью канала.

                                SEO под DDoS-ом

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

                                Стоимость и эффективность

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

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