• Тест PHP-функции preg_match

      Если PHP-функции preg_match в качестве исходной строки передать строку состоящую из 100000 (ста тысяч) или более силволов, то она вернёт неверный результат. Точнее результатом в этом случае всегда будет false.

      Проверяется очень просто.
      Читать дальше →
    • Как вовремя узнать, что ваш сервер не работает?

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

        В большинстве случаев такая ситуация нежелательна, а устранить ее надо как можно скорее. Для этого нужно как можно скорее узнать о случившемся. Но как? Для себя и для наших клиентов мы используем сервисы мониторинга сайтов. О них я сегодня и расскажу.
        Читать дальше →
      • Реализация отправки sms-уведомлений

          В виду достаточно большого парка серверов/свитчей/модемов и иного активного оборудования в конторе, была установленная система мониторинга zabbix и успешно использовалась продолжительное время. Zabbix имеет замечательную возможность отправки уведомлений о возникших проблемах.
          Для этого был написан скрипт отправки sms сообщений через шлюз email-to-sms оператора связи, ограничение по количеству смс с одного адреса в сутки было обойдено путем ротации исходящих адресов, работало более или мение сносно, но в последнее время смс сообщения через данный шлюз начали доходить с задержкой порядка 10-15 минут, что уже не очень нравилось.
          Итак, было решено организовать отправку уведомлений через собственный GSM-терминал, порывшись в прайсах поставщиков и не обнаружив там подходящих по цене и характеристикам GSM модемов весьма огорчился.
          И тут вспомнилось что дома валяется старый Siemens CX65 да еще и data-кабель к нему, после подключения телефона и курения доков по отправке sms сообщений пришел к не очень радостному выводу, оказывается siemens не поддерживает отправку sms в текстовом режиме, команда AT+CMGF=1 возвращает error.
          Отправка сообщений в данных аппаратах возможна только в режиме PDU, ради спортивного интереса и для размятия мозгов было решено реализовать эту систему, был написан скрипт для перекодировки в PDU формат сообщений и отправки через телефон.
          Читать дальше →
        • Обзор программы TeamViewer или фидбэк 2.0

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

            Краткое содержание обзора: Обзор программы, возможность доступа через браузер к удаленному компьютеру, лицензия программы (бесплатная), поддерживаемые платформы

            Читать далее
          • Делаем gem для RubyGems

              Собираем камешки для Ruby


              Зачастую бывает так, что таскаешь из проекта в проект какие-то куски кода. Такие куски очень удобно выносить во внешние файлы, модули. Для этого в Ruby существует RubyGems — менеджер приложений и библиотек, оформленных в один файл-пакет — gem. И собрать такой гем, а главное, сделать его доступным для любой машины, подключенной к интернету, оказалось очень просто.

              Итак, gem за пол-часа
            • SQLite и полноценный UNICODE

                Наверно многим известна embed база данных SQLite. SQLite полностью поддерживает кодировки UTF-8 и UTF-16. Но есть один нюанс, для строковых и текстовых полей, символы которых выходят за пределы ASCII таблицы, не работает нечувствительный к регистру LIKE и ORDER BY.
                Например:
                sqlite> SELECT "ы" LIKE "Ы";
                0
                
                в то время как
                sqlite> SELECT "s" LIKE "S";
                1
                
                Давайте разберемся как же это исправить.
                Читать дальше →
              • Разгоняем Wordpress

                  SEO Digest #5Данный обзор написан специально для SEO Digest — популярного онлайн-журнала среди вебмастеров и поисковых оптимизаторов. Публикуемые в нем материалы рассчитаны на широкую аудиторию пользователей: от профессионалов Рунета до любителей и начинающих. Журнал доступен в PDF и онлайн версии.

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

                  Основные положения


                  Ускорение работы любой системы возможно в основном за счет кэширования некоторых (тут стоит подчеркнуть, что именно некоторых, а не всех подряд) часто используемых операций. Все кэширующие мероприятия, в том числе и для Wordpress, можно разбить на несколько основных частей:
                  • База данных
                  • Компиляция серверных скриптов (PHP)
                  • Статические страницы
                  • Клиентская составляющая

                  Читать дальше →
                • Нулевой символ внутри тега

                    Старый баг дороже новых двух?

                    Сделал для себя интересное открытие, оказывается строчку

                    <\0b>text</b> — где \0 — символ с кодом 0

                    IE интерпретирует как нормальный тег bold со всеми вытекающими, тоже самое касается тегов <script> <style> и прочих.

                    Это в свою очередь значит, что удаление потенциально опасных элементов с помощью str_replace, preg_replace (PHP), s/<script/.../i (Perl, sed) и прочих replace() функций для других языков не даст желаемых результатов.

                    Тоже самое касается и фильтрации по «белым» спискам которые попросту могут не посчитать последовательность <\0b>text</b> тегом.

                    К счастью Firefox, Opera и Safari так не считают. Разработчики, будьте бдительны при фильтрации пользовательских данных!
                  • // в ссылках

                      Нет мочи прятать такую красоту!

                      Вычитал на блоге товарища Bolk совершенно восхитительную штуку — описание Common Internet Scheme Syntax.

                      Вкратце, если Вам нужно, чтобы страница была видна как по HTTPS, так и по HTTP, но при этом Вам приходится использовать на этой странице ссылки с абсолютными путями, не пишите в ссылках на этой странице http или https — пишите "//"!

                      Браузер сам подставит текущую схему, будь то HTTP или HTTPS.

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

                      P.S. если захотите плюсовать, то плюсуйте Bolk!

                      Testcase

                      UPD: Нигма и Гугл говорят, что такие ссылки будут проиндексированы.
                      UPD2: Как справедливо заметил Bolk, в RFC 3986 такая нотация тоже описана в секции Relative Reference (http://tools.ietf.org/html/rfc3986#section-4.2)
                    • Как сделать FF удобней — пишем свои кнопки

                        Преамбула


                        Я перешел на FF с IE очень давно — мне нужен был браузер с удобными средствами разработки и отладки, позволяющий полностью настраиваться «под себя» так как это был мой основной рабочий инструмент — инструмент должен быть удобным.

                        И FF полностью справился со своими обязанностями — возможно, я кому-то покажусь странным — но я потратил около 2-х месяцев на чтение сайта с дополнениями и нахождения для меня лучшего их набора, настройки и т.д.
                        В результате я получил мощную хорошо настроенную и удобную программу для своих нужд.

                        image

                        Не смотря на то, что я знаю JS, мне ни разу не пришло в голову писать какие-либо расширения под ff по одной простой причине — чтобы я не захотел — это уже было в депозитории расширений. Так продолжалось до вчера :)
                        Читать дальше →
                      • Советы по фиксациям в SVN

                        • Перевод
                        Предлагаю перевод хорошей статьи с советами по выполнению фиксаций в хранилище. Оригинал написан для проекта T2, но практически все советы универсальны и легко применимы для любого другого проекта. А самое главное — они действительно полезны.

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

                        Читать дальше →
                      • Пишем SQL на чистом Ruby

                          Ruby — это гибкий язык, позволяющий создавать на своей основе различные DSL. Появилась идея написать DSL для SQL-запросов (для SELECT'ов), максимально приближенный к оригиналу. Кажется, получилось. Получившаяся штука называется Boroda. Далее следуют примеры кода.

                          require 'boroda'
                          
                          sql = Boroda.build do
                            from :posts, :users
                            select posts.*
                            where (posts.author_id == users.id) & (users.name == 'Vlad Semenov')
                          end
                          

                          Получим:

                          SELECT posts.*
                          FROM posts, users
                          WHERE (posts.author_id = users.id) AND (users.name = 'Vlad Semenov')


                          Если кто не понял — мы пишем SQL-запросы на чистом Руби. Теперь попробуем что-нибудь посложнее.
                          Читать дальше →
                        • Настраиваем сканер отпечатков пальцев (finger print) в Ubuntu 9.04

                            На написание данного топика меня сподвигла замена ноутбука и переезд на бету Ubuntu 9.04, вследствие этого знаменательного события.
                            Надо сказать, что пользую сей достойный продукт еще с версии 7.10. За это время сменилось несколько машин, и мне не разу не пришлось сильно сожалеть о своем выборе, поскольку проблем с определением оборудования не наблюдалось, правда может быть больше из за того, что используемая мной техника IBM Thinkpad всегда неплохо поддерживалась в линуксах, как и все что сделано в IBM.
                            Сейчас для работы, в руки мне попало достойное изделие от HP — ноутбук nc6400. Этот девайс обладает сканером отпечатков пальца, который несколько упрощает жизнь в нашем парольном хаосе. До настоящего времени использование сканера ограничивалось MS Windows и я не предполагал, что сообщество занимается столь малопопулярными устройствами.
                            Читать дальше →
                          • Как защититься от Conficker и краткий обзор OpenDNS


                              Все мы знаем что сейчас идет эпидемия червя Conficker но как можно от него защититься если вы…

                              1) Системный администратор сети и у вас интернет проходит через свой сервер с DNS
                              2) Домашний пользователь который не любит антивирусы
                              3) Хотите дополнительную защиту
                              Читать дальше
                            • Спасаем данные в Linux с помощью ddrecovery

                                «Input/output error (5)» сказала система при копировании файла и заставила погрузиться в неприятные раздумья о новом винчестере и подлом партизане SMART. К счастью все важные данные сохранились в резервных копиях, и всё-же постараться вытащить один файл очень хотелось — 34Гб образ виртуальной машины содержал в себе несколько документов потерять которые было бы неприятно.
                                Читать дальше →
                              • Асинхронная загрузка javascript файлов. Ускорение и оптимизация процесса, увеличение производительности

                                  Продолжаем цикл статей на тему построения сайтов (веб-приложений) ориентируясь на максимальное применение AJAX технологии. Зачастую, при работе сайтов и приложений использующих AHAH требуется вместе с подгружаемым HTML контентом догружать файлы скриптов, которые не использовались ранее на страницах сайта. Одним из моментов обработки догружаемого AJAX-ом контента является выделение из получаемого контента файлов скриптов, с последующим их применением к текущему документу (DOM). Благо, на данный момент практически все основные библиотеки умеют это делать. Однако, если копнуть глубже в реализацию процесса обработки догружаемых скриптов, то текущая ситуация совсем «не радужная». Не все хорошо известные библиотеки умеют это делать хорошо, а тем более оптимально. Давайте рассмотрим указанный процесс изнутри, разберем существующие проблемы и узнаем пути их решения.
                                  Читать дальше →
                                • LISP-программирование как жанр искусства

                                    Нереальный, фееричный перфоманс с использованием LISP и OpenGL.
                                    Поначалу ничего непонятно, но все завораживающее действо начинается с 5 минуты где-то. Может быть это и есть один из видов искусства будущего?


                                    Уже представляю себе «выступает заслуженный LISP-ист России, лауреат международных премий Иван Лямбдин»
                                  • Антиюзабилити, за которое заплатят деньги

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

                                      Идея выглядит так: «создание вещей, мешающих пользоваться сервисом и платное их отключение впоследствии».
                                      Все эти блоги на Хабре — «Эти пользовательские интерфейсы», «Дизайн», «Юзабилити» — это всё развлечения для подмастерьев, хабраблог «АнтиЮзабилити» — вот достойное занятие для настоящего мастера.

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

                                        Хочу рассказать об очередном результате моих изысканий в области оптимизации производительности Web-серверов.
                                        На этот раз речь пойдет об оптимизации сложного логирования в однопоточном неблокирующем вэб-сервере.
                                        Читать дальше →