• 50 цитат о программировании всех времён

    • Перевод
    Перевёл после прочтения комментариев к статье «О ненависти к C++». В цитатах можно найти ответы на большинство возникших там вопросов.

    50. Программирование сегодня — это гонка разработчиков программ, стремящихся писать программы больше и с лучшей идиотоустойчивостью, и вселенной, которая пытается создавать больших и лучших идиотов. Пока вселенная побеждает.
    — Rick Cook

    49. Lisp — это не язык, а строительный материал.
    — Alan Kay

    48. Ходить по воде и разрабатывать программы, следуя спецификации, очень просто… если они заморожены.
    — Edward V Berard
    Читать дальше →
  • Уязвимость связки PHP+nginx с кривым конфигом

      Summary


      Announced: 2010-05-20
      Credits: 80sec
      Affects: сайты на ngnix+php с возможностью загрузки файлов в директории с fastcgi_pass




      Background


      Зачастую How-To по настройке связки nginx с php-fpm / php-cgi есть подобные строчки:

      location ~ \.php$ {
          fastcgi_pass 127.0.0.1:9000;
          fastcgi_index index.php;
          fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
          include fastcgi_params;
      }
      

      Читать дальше →
    • Техника для проверки подлинности денег


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

        Рассмотрим подробно, как защищены современные валюты, как происходит проверка подлинности (валидация) и что за аппаратура для этого применяется.
        Читать дальше →
      • Kingnovel K-R42 — медиаплеер с Android 4.2.2 на борту

          image
          После успешного запуска мини-компьютеров на 4-х ядерном чипе RK3188 в формате стика, на рынок выходит логичное продолжение линейки устройств с расширенной функциональностью — наличием дополнительных портов и внешней Wifi-антенной. Сегодня мы рассмотрим Kingnovel K-R42 — медиаплеер с Android 4.2.2, на основе которого можно сделать домашний мини-сервер.
          Читать дальше →
        • Облака — ещё дешевле

          • Tutorial
          Наверняка вы слышали о сервисах Amazon EC2, Rackspace и им подобным. Может быть даже пользовались. Лично мне бывает нужен иногда личный VPN-сервер. Для этих целей я уже давно держал микро-инстанс на Амазоне, предоставляемый им в течении первого года бесплатно. Плюс использовал для архивов Amazon Glacier, который с его ценой «1 цент за гигабайт в месяц» можно считать тоже почти бесплатным. Но вот год закончился и за EC2 стало нужно платить. Архивы мои тоже разрослись прилично и затраты на Glacier аналогично перестали радовать.

          Случайно пробежавший мимо обзор сервиса DigitalOcean по-началу оставил меня равнодушным. Ну, облачный сервис, ну виртуалки. Ну да, чуть-чуть дешевле (но не так чтобы уж очень), чего-то аналогичного Glacier вроде бы нет да и вообще оно того не стоит.

          Я сильно ошибался. Ниже будет рассказано как на базе DigitalOcean сделать себе VPN-сервер в пару десятков раз дешевле такого же на Амазоне и сервис хранения архивов, в бесконечность раз дешевле Glacier.
          Читать дальше →
        • Подводные камни при использовании кэширования в nginx

            В web-сервер и reverse-proxy nginx встроены очень мощные возможности по кэшированию HTTP-ответов. Однако в ряде случаев документации и примеров не хватает, в результате не все получается так легко и просто, как хотелось бы. Например, мои конфиги nginx-а местами написаны кровью. Этой статьей я попробую немного улучшить ситуацию.

            В этой статье: а) подводные камни при полностраничном кэшировании; б) кэширование с ротацией; в) создание динамического «окна» в закэшированной странице.

            Я буду предполагать, что вы используете связку nginx+fastcgi_php. Если вы применяете nginx+apache+mod_php, просто замените имена директив с fastcgi_cache* на proxy_cache*

            Если выбирать, кэшировать ли страницу на стороне PHP или на стороне nginx, я выбираю nginx. Во-первых, это позволяет отдавать 5-10 тыс. запросов в секунду без каких-либо сложностей и без умных разговоров о «высокой нагрузке». Во-вторых, nginx самостоятельно следит за размером кэша и чистит его как при устаревании, так и при вытеснении нечасто используемых данных.

            Кэширование всей страницы целиком


            Если на вашем сайте главная страница хоть и генерируется динамически, но меняется достаточно редко, можно сильно снизить нагрузку на сервер, закэшировав ее в nginx. При высокой посещаемости даже кэширование на короткий срок (5 минут и меньше) уже дает огромный прирост в производительности, ведь кэш работает очень быстро. Даже закэшировав страницу всего на 30 секунд, вы все равно добьетесь значительной разгрузки сервера, сохранив при этом динамичность обновления данных (во многих случаях обновления раз в 30 секунд вполне достаточно).
            Читать дальше →
          • Кеширование FastCGI-запросов в nginx

              Доброе утро, Хабр!

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

                Поля для ввода паролей в браузере встречаются в разных случаях:
                • при регистрации;
                • на форме логина;
                • пароль для чего-то абстрактного.
                Каждый раз всплывают одни и те же проблемы и возникает необходимость в одинаковых шаблонных фичах. Чтобы облегчить эту рутинную задачу, я сделал js-библиотеку, которую можно конфигурировать под разные случаи — о ней и будет этот пост.
                Что из этого получилось
              • Zend Optimizer+ наконец выложен на гитхаб

                  Пару недель назад, Zeev Suraski, один из главных контрибьюторов PHP и по совместительству co-founder Zend, предложил включить в ядро PHP Zend Optimizer+.
                  Zend Optimizer+ это, так же как и Apc, кешер опкодов. Но, в отличии от Apc, он также неплохо умеет применять стандартные паттерны оптимизации кода.
                  Помимо этого, оптимайзер дает одну хорошую плюшку — его разработку поддерживает коммерческая организация, например стабильная поддержка трейтов в нем появилась почти одновременно с релизом PHP 5.4, в то время как APC нужно было ждать около полугода. В данный момент он уже поддерживает PHP 5.5.
                  Читать дальше →
                • На пути к созданию безопасного веб-ресурса. Часть 1 — серверное ПО

                  • Tutorial
                  Я уже довольно долгое время хочу формализовать все свои мысли, опыт, ежедневно применяемый на практике, и многое другое в одном месте и предоставить их общественности. Уверен, многим этот материал будет полезен. Он посвящен различным моментам в конфигурации серверного ПО Linux и безопасным подходам к созданию сайтов/приложений на php (все же это до сих пор одна из самых популярных связок, хоть её успешно и подвигают другие технологии. Но советы так же легко применимы и к веб-ресурсам на других технологиях).

                  Т.е. речь идет о типичной ситуации. Проект (стартап), купили под него сервер и разворачиваем на нем сайт. Бизнесу не нужно тратить лишних денег на сервера (поэтому будут выбраны наиболее производительные связки ПО), а так же нужно, чтобы все было безопасно, при чем бесплатно :)
                  Много текста. По-другому никак
                  • +148
                  • 92,9k
                  • 47