Ставим memcached на Mac OS X
Возникла в выходные необходимость поставить Memcached на Mac OS X. В рунете по этому поводу ничего не нашел, зато, роясь в поисках информации, наткнулся на хорошую статью на английском. Собственно ее перевод я и хочу опубликовать.
Подразумевается, что у вас на компьютере стоит MAMP, ставится он за пять минут, как любая другая программа.
Установка демона Memcached на Mac OS X
- Установите пакет Xcode Tools с вашего Mac OS X DVD или скачайте с Apple Developer Connection, нам понадобится GNU Compiler Collection (gcc), который идет Xcode Tools.
- Скачайте shell-скрипт с topfunky.net (зеркало).
- Установите права на скрипт и запустите его:
chmod 744 install-memcached.sh
sudo ./install-memcached.shЕсли скрипт не запустился и выдал ошибку, похожую на следующее: C compiler cannot create executables, убедитесь, что Xcode установился корректно.
- Следуя инструкции в конце скрипта, добавьте EVENT_NOKQUEUE=1 в файлы .bashrc или .profile, которые находятся в вашей домашней папке.
- Проверьте, что memcache установился. Для этого закройте текущее окно терминала и откройте новое, в котором наберите memcached -h. Вы должны увидеть что-то похожее на это:
muxx:~ muxx$ memcached -h
memcached 1.1.12
-p port number to listen on
-l interface to listen on, default is INDRR_ANY
-d run as a daemon
-r maximize core file limit
-u assume identity of (only when run as root)
-m max memory to use for items in megabytes, default is 64 MB
-M return error on memory exhausted (rather than removing items)
-c max simultaneous connections, default is 1024
-k lock down all paged memory
-v verbose (print errors/warnings while in event loop)
-vv very verbose (also print client commands/reponses)
-h print this help and exit
-i print memcached and libevent license
-P save PID in , only used with -d option - Отчистите папку, в которую вы скачивали install-memcached.sh, удалив созданную им папку src и сам файл скрипта.
Установка memcached-расширения для PHP
Вариант 1. Скачиваем скомпилированное расширение
Если у вас последняя версия MAMP с PHP 5.2.5 и вы пользуетесь Intel Mac, то вам достаточно проделать следующее:
- Скачать PHP 5.2.5 (Intel) memcache.so и переименовать в memcache.so;
- Переместить скачанный файл в папку /Applications/MAMP/bin/php5/lib/php/extensions/no-debug-non-zts-[date]. [date] — значение в виде даты, оно зависит от даты установки MAMP.
Я использовал именно этот вариант, надеюсь, вам он также подойдет.
Вариант 2. Компилирование PECL Memcache расширения
Если у вас другая версия MAMP и PHP или вы использует PowerPC, вам нужно скомпилировать memcache.so под свою конфигурацию.
- Скачайте исхоный код PHP с php.net в папку /Applications/MAMP/bin/php5. Вы должны скачать версию, соответствующую вашей версии MAMP, которую вы можете узнать по адресу http://localhost:8888/MAMP/info.php.
- Создайте папку include в php5.
- Разпакуйте архив с исходными кодами и разместите его в /Applications/MAMP/bin/php5/include.
- Переименуйте php source directory в просто php (должно получиться /Applications/MAMP/bin/php5/include/php).
- В Терминале выполните следующие команды для компиляции расширения:
cd /Applications/MAMP/bin/php5/include/php
./configure
cd /Applications/MAMP/bin/php5/bin
./pecl i memcache - После этого создастся новая директория в папке /Applications/MAMP/bin/php5/lib/php/extensions. В ней должно быть 2 других директории, отличающиеся датой в конце имени, примерно вот так — no-debug-non-zts-20050922. Откройте папку с текущей датой на конце и переместите файл memache.so в другую папку, в которой уже находится много других файлов *.so.
- Удалите пустую папку no-debug-non-zts-[date] в которой находился файл memcache.so.
Подключение memcached-расширения
- Откройте файл /Applications/MAMP/conf/php5/php.ini и добавьте в него extension=memcache.so в раздел ; Extensions.
- Перезапустите MAMP из приложения или используя виджет.
- Проверьте, работает ли Memcache-расширение на странице http://localhost:8888/MAMP/info.php
Все! Теперь у вас стоит полноценный и рабочий Memcache!
Старт и остановка Memcache-демона вместе с MAMP
Теперь, когда Memcache установлен и доступен из MAMP, нужно настроить запуск и остановку memcache-демона.
- Скачайте 4 скрипта ниже в папку /Applications/MAMP/bin, заменив существующие startApache.sh и stopApache.sh.
- Установите права на выполнение скриптов для вашего пользовател.
chmod 775 *.sh
- Остановите и запустите MAMP.
Оффтопик про безумного следователя
Сегодня посмотрел киноленту дуэта китайских режиссеров Джонни То и Вая Ка Фай «Безумный следователь». Несмотря на колоритную специфичность кино, присущую многим восточным картинам, к которой я полностью, наверное, никогда не смогу привыкнуть, фильм выше всяких похвал.
Интересное видение человеческой сущности, необычный, немного странный сюжет, грамотная операторская работа делают картину запоминающейся и заставляют хотя бы на пять минут над тем, что пытались передать режиссеры, снимая это кино, что редко получается у фильмов в последние годы.
Глобализация в разработке
Стоило мне выложить плагин ведения статистики sfStatisticsPlugin на Symfony Project, как его начали активно использовать разработчики буквально со всей планеты, а к процессу развития плагина подключились ребята из США, Германии и даже из Румынии! В такие моменты начинаешь ощущать, что сделал что-то действительно полезное.
В связи с тем, что достаточно много посетителей приходят на блог из-за рубежа, я поставил в начале каждого поста ссылку на его гугловский автоперевод на английский. Будем надеятся, что это несколько облегчит чтение блога читателям «из-за бугра».
Конференция HighLoad++
Побывал впервые на конференции разработчиков высоконагруженных систем HighLoad++. Могу сказать, что понравилось. Организация конференции была на уровне — доклады практически без задержек, питание на уровне, интернет и кофе со сливками на кофе-брейках :)
Если говорить о содержании конференции, то скажу, что в целом было интересно — новички узнали, как и с помощью строить крупные веб-проекты и не только, а у гуру была возможность обсудить нынешние тенденции в области «высоких нагрузок».
Какие общие особенности я для себя выделил.
Во-первых, многие проекты активно используют оперативную память, разворачивая в ней различные контейнеры данных, а порой и целые БД. Это, надо полагать, связано со значительным снижением стоимости этой RAM. Об этом говорили и Игорь Мельников, рассказывая про СУБД Oracle TimesTen, и Дмитрий Исайкин, описывая движок хранения и обработки оценок в рекомендательном сервисе Имхонет, и Игорь Ермаков, рассказывая о Mail.Агенте, в котором все данные о статусах и контакт-листах онлайн-пользователей размещаются в ОЗУ.
Во-вторых, в некоторых крупных или специализированных проектах частично или полностью отказываются от традиционных решений. Это меня удивило, т.к. я думал, что на данный момент под любые задачи можно найти существующие достаточно хорошие решения. Так поступили в Рамблере, разработав HCS (хикс), который кстати выложат в открытый доступ, в Имхонет, используя для хранения оценок «разреженную матрицу», в РБК, где Полина Зубарева написала собственную утилиту для нагрузочного тестирования модулей архитектурно сложных систем и кластеров. Причем все упомянутые разработки писались на сях. В общем, если хочешь, чтобы все летало — пиши на C++ :)
К сожалению, пришлось пропустить вторую половину второго дня конференции, надеюсь, выложат видео, где можно будет посмотреть все самое интересное.
Cod'им с удовольствием
Сегодня я хочу сделать небольшой обзор используемого мною средства разработки под названием Coda, разработанного компанией Panic.
Coda позиционируется разработчиками как средство разработки «все-в-одном» (в оригинале «one-window web development»). Она включает в себя менеджер проектов, редактор кода, фтп/файловый-менеджер, «заготовки» кода, терминал, редактор css, а в последней версии — svn-клиент и усовершенствованную систему поиска-замены. Теперь чуть подробнее обо всех этих вкусностях.
Менеджер проектов и svn-клиент
Очень удобная штука, позволяет указывать локальное размещение и размещение на ftp файлов проекта, настройки по доступу через ssh к удаленному серверу, адрес сайта на локальной машине и в интернете, а также путь в svn-репозиторию.
При работе с проектом на локальной машине Coda отслеживает изменения в файлах, список изменившихся файлов можно посмотреть в любой момент, а главное — их можно опубликовать в production нажатием одной кнопки! Если же вы еще указали путь к svn-репозиторию, то нажатием другой кнопки вы можете загрузить изменения в Subverion, предварительно указав список изменений.
Редактор кода
Редактор кода достаточно мощный и удобный:
1. Включает в себя подсветку кода всех скриптовых языков, а также xml, sql и многих других языков, нумерацию строк, адрес символа под курсором в строках и столбцах.
2. Содержит в себе функцию autocomplete, а также выводит подсказки по функции, на которой находится курсор.
3. Включает в себя менеджер «заготовок» кода Clips. Версия Coda 1.5 и выше позволяет вести как отдельные clip'ы для каждого проекта, так и глобальные clip'ы, которые можно использовать во всех проектах. Последняя версия Coda также позволяет экспортировать и импортировать наборы «заготовок».
4. Позволяет открывать общий доступ к файлам для других разработчиков на Coda, которые могут редактировать их с тобой в режиме онлайн. Измененный код подсвечивается цветом, который назначается каждому из присоединившихся к совместной разработке.
5. Содержит ряд удобных сочетаний клавиш, например Cmd+[, Cmd+] сдвигает влево и вправо весь выделенный текст на одну табуляцию, Cmd+D позволяет переходить к следующей функции/классу/id, Cmd+/ помещает весь выделенный текст в теги комментариев, причем соответствующих языку выделенного текста — html-код он помещает в , а php-код — в /* */!
6. Включает в себя Code Navigator, который отображает список классов, функций, css-классов объявленных в коде открытого файла, и позволяет переходить к ним одним кликом.
7. Позволяет работать с файлами во всех доступных кодировках, а также конвертировать их из одной в другую.
8. Позволяет разделять область редактирования на сколько угодно частей, в которых можно открыть параллельно несколько файлов.
Встроенный терминал
Встроенный терминал позволяет работать с консолью как на локальной машине, так и на удаленной через ssh. Все настройки хранятся в менеджере проектов, поэтому вводить параметры подключения каждый раз нет необходимости.
Недостатки
Ничто не идеально, поэтому и в Coda нашлись недостатки, правда всего лишь два:
- Использование глобальных настроек выхода в интернет. Дело в том, что дома я выхожу в интернет через прокси-сервер, что указываю в настройках подключения. Все приложения, которые по роду своей деятельности используют интернет (Safari, Adium), подхватывают глобальные настройки сами. В Coda же нужно «ручками» указывать настройки подключения к прокси-серверу.
- Вертикальное выделение, как в TextMate.
В остальном ей нет равных, плюс ко всему она очень удобна и красива!
Поностальгируем
Привет вам из прошлого:
(источник)
А еще, убирая сегодня из тумбочки всякий хлам, я наткнулся на дискеты 1,44 Мб. Вот такое послание из прошлого. Что интересно, у меня не осталось ни одного доступного устройства, чтобы их прочитать, интересно, на них что-нибудь сохранилось?..
256 день в году!
Сердечно поздравляю всех программистов с их профессиональным праздником! Желаю всем поменьше багов и побольше релизов :)
Новый плагин ведения статистики sfStatisticsPlugin
Предлагаю всем желающим попробовать новый плагин sfStatisticsPlugin для Symfony. Данный плагин позволяет быстро строить наборы различных отчетов на базе модели Propel. Графики в отчетах строятся с помощью Google Chart API.
Из возможностей хочется выделить следующее:
- Возможность группировки данных по дате и по значению;
- Три вида графиков: линейный, круговая и столбцовая диаграмма;
- Настройка уровня апроксимации данных (значения с малой долей группируются в поле "Другие");
- Возможность настройки внешнего вида графика (фоновый цвет, размер, длина надписей);
- Полная поддержка i18n (на данный момент есть английский и русский перевод).
Весь стиль страницы модуля в плагине аналогичен стандартному стилю админки. Я впервые использовал этот модуль в интернет-магазине — за пару часов можно наваять 2 десятка отчетов, сразу видно всю картину происходящего.
Плагин поддерживает symfony 1.0, symfony 1.1 с Propel 1.2 и Propel 1.3. Пока плагин работает только с MySQL в случае группировки данных по дате, т.к. используются встроенные функции работы с датой MySQL. В дальнейшем планирую портировать на другие БД.
Страница плагина на Symfony Project
В пакете плагина README на английском языке. Для ускорения освоения прилагаю его русскую версию.
Нашествие спамеров
Уже третий день через форму комментариев к постам в моем блоге активно размещают спам, пришлось установить капчу. Надеюсь, это средство поможет от «вредителей» и не будет сильно обременять читателей моего блога.
Взаимодействуем с memcached с помощью SQL
Наткнулся на интересный вариант взаимодействия с memcached. Применен в facebook, а суть его в том, что в sql-синтаксис MySQL-сервера добавили новую конструкцию MEMCACHE_DIRTY, позволяющую удалять кеш с заданным ключом:
REPLACE INTO profile ('first_name') VALUES ('Monkey') WHERE 'user_id'='jsobel' MEMCACHE_DIRTY 'jsobel:first_name'А вот здесь показано решение с использованием триггеров.
Меня заинтересовали эти методики возможностью реализации ее в ORM (Propel), т.к. отслеживание актуальности кеша и его чистка в необходимых местах — это рутинная работа, в модели это наверняка можно описать, тем самым снимая это пласт работ с плеч разработчика. Я в данном случае говорю о кешировании данных, а не результирующего html.
Буду рад услышать мнения по этому поводу..
Загрузка ...





