Sign in or Join FriendFeed
FriendFeed is the easiest way to share online. Learn more »
Дмитрий Котеров
Если у вас не устанавливаются cookies внутри iframe в IE, проверьте, отдаете ли вы заголовок P3P. Вот подробности: http://stackoverflow.com/questio...
Дмитрий Котеров
Похоже, phpStorm - первая IDE с более-менее сносным Web Remote Debugging. А с dbgp proxy они перемудрили - это ж надо додуматься, заставлять вручную регистрировать IDE после каждого дисконнекта, да еще сделать для этого отдельный пункт в меню (вместо автомата). Так что пока осилил только remote_connect_back, хоть он неудобный и медленный.
Написал черновую инструкцию по настройка этого дела, она заняла 6 + 13 пунктов и примерно 4 часа времени на эксперименты в сумме. А phpStorm это называет "zero configuration debugging" - ну-ну... :-) Зато неделя прошла, все работает. Как-нибудь опубликую. - Дмитрий Котеров
Дмитрий Котеров
Notifus - переносит письма, на которые ВАМ не ответили, назад в Inbox GMail, чтобы вы могли "подопнуть" получателя. http://notifus.com
Если чего-то не хватает или неудобно, пишите. Инструмент реально позволяет поднять на новый уровень комфортность текучки-переписки. - Дмитрий Котеров
а Сафари (Мак) не судьба? - N.One
Интересно, попробую попользоваться. Но и уже можно было сократить выпадающим списком остальные дни, мне достаточно 1 day для 80% отправленных писем. И иконки... иконки в стиле гугля =) - Кто-то не прав
Про Сафари - кажется, есть какой-то плагин для него, аналогичный GreaseMonkey. Вот: http://www.simplehelp.net/2007... - если действительно заработает, напишите, пожалуйста, я добавлю. - Дмитрий Котеров
Насчет иконок - каких именно иконок? Если насчет звоночка (похожего на метлу почему-то), то это то, что более-менее подошло из images.google.com - если есть более удачная иконка, то было бы здорово ее вставить, конечно. - Дмитрий Котеров
а куда в слове "нотифус" ударение ставить? - Тринадцатый
"Стартап!" - скорее долгострой, нельзя так делать стартапы. :-) Полная история такая: сначала где-то год назад я сделал GreaseMonkey-скрипт для FollowUpThen; потом сделал Notifus и долго-долго его причесывал, пользуясь тем временем втихаря, но не выкладывая; потом вы вдруг в Я.Почте сделали похожую штуку (только почему-то с единственной кнопкой про 5 дней, закопанной по самые не хочу); что послужило стимулом, и наконец-то я взял себя в руки, допилил и выложил. - Дмитрий Котеров
Ударение - на "и", видимо. Единственный был свободный домен в зоне com с более-менее адекватным названием. :-) - Дмитрий Котеров
http://www.axialis.com/free... - вот тут взять из black иконку clock.png. http://dl.dropbox.com/u... Ну эт например =) - Кто-то не прав
Не, там по смыслу нужна именно иконка в виде ЗВОНКА, а не в виде часов (иначе плохо выглядит кнопка "Send & [icon] in 1 day". К тому же размером 14x14. - Дмитрий Котеров
Да, закопанной при быстром ответе (при создании-то нового письма она на виду). Вообще, лично у меня необходимость "Полной формы ответа" как класса вызывает сомнения. - Дмитрий Котеров
А. Я не привык быстрой пользоваться вообще - Обратная сторона порошка
с помощью GreaseKit работает на Safari/Mac - N.One
Спасибо. Добавил на сайт про Safari и вставил несколько if-ов. Сам проверить не могу, т.к. у меня нет мака - если у кого-нибудь из здесь присутствующих есть мак, проверьте, пожалуйста, инсталлируется ли скрипт, работает ли и т.д. - Дмитрий Котеров
Хм, после того, как Экслер в блоге написал про Нотифус - http://exler.ru/blog... - юзеров определенно прибавилось... - Дмитрий Котеров
Дмитрий Котеров
Это печально, но старайтесь по возможности не использовать prepare+execute из PHP в PostgreSQL (по крайней мере, pg_prepare и pg_execute; думаю, в PDO то же самое). Используйте вместо нее pg_query и заменяйте placeholder-ы на уровне PHP (либо применяйте pg_query_params - но ее я не проверял). Причины в комментариях.
Причины две: 1) двойной пинг порождает в 2 раза большие накладные расходы на простых запросах: pg_prepare() генерирует отдельный запрос PREPARE, pg_execute() - тоже отдельный EXECUTE; 2) в подавляющем большинстве случаев (если только вы не тысячи insert-ов выполняете) для производительности хорошо, чтобы план запроса строился каждый раз заново, исходя из значений параметров, а не фиксировался по самому первому запросу, иначе возможны непопадания в индексы, которые очень тяжело отлаживать. - Дмитрий Котеров
А для MySQL query cache плохо работает с prepared statements, да и дебагать их сложнее - youROCK
Дмитрий Котеров
Если вы все еще пользуетесь для работы с PHP Эклипсом (в частности, Zend Studio for Eclipse), пересаживайтесь на phpStorm. Это чудо, а не среда. Умеет ВСЕ и в 100 раз лучше (даже LESS/SASS). Я сам не верил и полгода тупил, но всего один-единственный день открыл мне глаза. Обязательно настройте клавиши и остальное под себя, потратьте часок.
Если бы он ещё не лагал так, цены бы ему небыло( - Александр
У меня проекты на ssd-винте, phpstorm летает. Да и если сравнивать java-ide (нетбинс, эклипс в вариациях, шторм), шторм, имхо, наименее тормозной из всех. - До свиданья, дедуктивный!
Поступил радикально: купил полную IDEA ради pycharm и phpstorm. Рассчитываю попробовать программирование под андроид. - glukki
я пытался настроить его не раз и не час. с одинаковым результатом. сие глючное текущее памятью поделие явистов, которые решили осчастливить говнокодеров, весьма характеристически именовалось вебиде в первых версиях. - Правду ежик говорит
Поставьте побольше памяти и SSD-диск - ИМХО для программиста это обязательное условие счастья и долголетия. phpStorm помедленнее будет, конечно, чем Eclipse, но у меня SSD и 4Г памяти, поэтому - я разницы не замечаю совершенно (даже наоборот - поиск по файлам, например, в phpStorm работает раз в 10 БЫСТРЕЕ, чем в Eclipse, и это очень заметно). Еще раз: несмотря на большее потребление ресурсов - многократный прирост комфортности лично для меня совершенно очевиден. - Дмитрий Котеров
вы, извините, трипл-кликом слово выделяете? и между фреймам тоже мышкой ездите? я не смог забиндить необходимые мне для работы хоткеи, вебидешный же маппинг чудовищен и ни на что не похож. а использование собственных несистемных визуальных элементов интерфейса просто тихо бесит - Правду ежик говорит
Триплкликом выделяется строка, а слово как обычно, даблкликом. - До свиданья, дедуктивный!
Выделять что-то в редакторе кода мышью – это ой - ptzn
я так и не смог придумать зачем мне для PHP нужен IDE. нужен хороший текстовый редактор с поддержкой проектов. that's all. textmate'а хватает за глаза и после него я не смог пересесть ни на Zend Studio, ни на PHPStorm. В нём быстрее. Для Java/C++ я конечно же буду выбирать IDE - Идеец
^^^ навигации по коду в обычном редакторе очень не хватает. чтоб идентификаторы в исходнике были гиперссылками. - 9000
@9000 при работе со знакомым кодом — это обычно не проблема. а вот медленная редакция среды — проблема - Идеец
^^^ @indeyets textmate же на сях написан афаир: быстро и клёва. и - мышатники в треде детектед FFFfuuuuu. медленная реакция среды - это просто ахтунг какой-то; кто-нить пытался затестить вебиде на проекте в ~||>500 файлов? у меня оно загнуло систему до полного снятия процесса - Правду ежик говорит
Не понимаю, о каких тормозах вы говорите, у меня все летает, вот прямо сейчас 4к файлов в проекте. Мышки в навигации тоже не нужно - по Ctrl-Tab открывается попап, где можно клавой навигировать между фреймами и открытыми файлами как угодно. Выделить слово - Ctrl-W, выделение строки в кеймапе не забиндено, но оно есть. Почему ide (в частности шторм) лучше чем просто текстовый редактор на... more... - До свиданья, дедуктивный!
Шторм активно развивают, новая версия выходит примерно раз в месяц. Возможно, на первых версиях вебиде были тормоза на 500 файлах, есть смысл посмотреть последнюю версию. Плюс, что особенно хорошо - если какой-то фичи очень не хватает или что-то не устраивает, можно идти на форум или багтрекер и стучать ботинком по трибуне. - До свиданья, дедуктивный!
Горячие клавиши вот какие еще не упоминали в phpStorm тут: Ctrl+Shift+N - быстрый поиск файла с "умной" сортировкой по "последнему использованию" (применяю постоянно - даже по вкладкам не хожу, только через поиск), Ctrl+N - поиск по началу имени класса. - Дмитрий Котеров
Отличная штука, сижу достаточно давно. Правда преимущественно использую для HTML, CSS, Smarty, JS. Особенно хорош JS :) Работал еще на старом компе 2 ядра по 2.2Ггц, и 3Гб оперативы - никаких тормозов. В PHP еще не оценил, для него настроен PhpEd с дебагом. Ресурсов много не жрет, до фокса ему далеко. Ну и, что особенно радует, стабильный :) Автокомплит, проверка синтаксиса, HTML 5,CSS 3, JS, Smarty, PHP. - Michael Valushko
Дмитрий Котеров
Как известно, Windows 32-бит не видит все 4Г оперативки в силу архитектуры своих драйверов. У меня видит только 2.5Г. Решение: создать RAM-диск - http://www.megaleecher.net/RAMDisk - и разместить на нем... файл подкачки на 1.5Г. Это не бред, это Windows! Работает. Теперь все 4Г при деле. Еще полезная ссылка: http://www.computerperformance.co.uk/Registr...
Есть нюансы. Чтобы RAM-диск расположился в "невидимой" памяти, нужно а) обязательно включить PAE: "bcdedit /set pae ForceEnable", б) инсталлировать RAM-диск (ramdisk.exe) и выбрать там любой размер (хоть 16М, не важно), в) запустить ram4g.reg, входящий в дистрибутив, г) перезагрузиться. В результате размер RAM-диска будет установлен в точности равным размеру "невидимой" области памяти, и можно там размещать RAM-диск. Шаг вправо, шаг влево от этой инструкции - и уже ничего не выйдет. Признак, что все получилось, - как раз тот факт, что RAM-диск имеет бОльший размер, чем мы указывали вручную (если это не так, значит, RAM-диск отъел основную память). - Дмитрий Котеров
64-бита я тоже хотел поставить вначале, но остановили 2 аргумента: а) говорят, драйвера сложнее найти потом, б) хотелось оставить Windows лицензионным, который вместе с ноутбуком шел. - Дмитрий Котеров
В случае ноутбука может быть и проблемы будут, ага. А на обычном десктопе — ну какое тут специфичное железо такое есть, что дров не найти, м? - Denya
В случае ноутбука специфичное железо -- это: видеокарты, вай-фай драйвера, блютус драйвера, веб-камеры и т.д. - youROCK
У меня так на ноутбуке 8 Гб, будет ли разумно создавать рам-диск на 4,5 Гб? Я так понимаю, своп работает на уровне ядра, и переключений контекста для вызова дисковых драйверов/системных вызовов быть не должно? То есть, это работает довольно быстро, да? - youROCK
Если 64 бита - то не надо рам-диска. Если же 32 - то надо. Это относится только к винде - насколько мне известно, и в MacOS, и в Linux в 32-битном режиме проблем нет. - Дмитрий Котеров
А такое действие не может поломать механизм выхода из режима гибернации?=) - pa3arch
Я не сталкивался, но - все возможно. Кстати, я использую только standby-режим, гибернация - слишком медленно (а эффект - практически тот же). - Дмитрий Котеров
Дмитрий Котеров
Запуская pgfouine, даже и не думайте оставлять старый syslog для приема логов запросов PostgreSQL. Заменяйте его сразу же на syslog-ng. Ибо syslog режет строки длиной 1000 (плюс-минус) символов, причем делает это непредсказуемо - в итоге длинные SQL-запросы бьются. В syslog-ng такой проблемы нет.
Дмитрий Котеров
Оператор MySQL "REGEXP" - оказывается, не binary-safe: если строка содержит символ с кодом 0, то с ним совпадает "$". Это крайне неудобно, и приходится выкручиваться как-то вот так: quote(field) REGEXP BINARY '^''[a-z0-9]+''$' вместо простого field REGEXP BINARY '^[a-z0-9]+$'
Дмитрий Котеров
Влил в мой форк phpPgAdmin изменения из официального репозитория: http://github.com/DmitryK... . Можно назвать мой форк "phpPgAdmin-ом на стероидах, приближенным к Django Scaffolding по функционалу".
Краткий changelog того, что есть в форке и чего нет в официальном репозитории: 1. display/preview and allow to navigate to outgoing foreign keys ("browse" and "edit row" pages) 2. display and allow to navigate to incoming foreign keys 3. allow to upload BYTEA/preview already existed BYTEA 4. send "browse" form by Ctrl+Enter 5. use LIKE instead of "=" when selecting by varchar/text fields (like phpMyAdmin does) 6. display all tables of all schemas at one page (if needed) 7. check all checkboxes at "browse" form by default 8. automatically reset NULL checkbox when the field value is changed 9. support for array of FKs 10. virtual calculated fields at "browse" view 11. "browse table" icon at the top of the page near a table name - Дмитрий Котеров
Дмитрий Котеров
Кастомизация != костылезация. Кастомное решение != кАстыльное решение. :-)
ну неет. так не бывает ;) это фантастика. - ilazarev
Дмитрий Котеров
Nginx, директива try_files. Неправильно писать: "try_files $uri /index.php". Лучше так: "try_files $uri /index.php?$query_string" - иначе у вас будет съедаться QUERY_STRING.
Дмитрий Котеров
Чтобы заставить GRUB загружать некоторое ядро (например, номер 0) только 1 раз, нужно выполнить: echo "savedefault --default=0 --once" | grub --batch - хоть и избито, да уже в 4-й раз забывается, пусть теперь здесь будет.
Дмитрий Котеров
Пропатчил phpPgAdmin: http://github.com/DmitryK... - сделал показ данных по внешним ключам. Получилась мини-CMS, рекомендую.
если интересно могу прислать патч с доработкой в нём странички "processes" - Denis
Лучше не присылать патч, а отфоркать на GitHub и туда закоммитить. Гораздо удобнее будет тогда все это объединять. (Ну или, если нет времени разбираться с GitHub, патчу я тоже был бы рад, конечно.) - Дмитрий Котеров
ну я это и имел ввиду :) ок - Denis
Я написал разработчикам, может, они в апстрим примут эти патчи. А может и не примут. В любом случае, чуть позже все это в виде статьи оформлю со скриншотами, там много красивостей получилось. Почти как в Джанге админка. :-) - Дмитрий Котеров
Дмитрий Котеров
CentOS. Поставили Xvfb ("виртуальный" X-сервер, которому не нужен монитор, и который может работать в OpenVZ-контейнере), но получили проблемы с русской кодировкой? Вас спасет команда: "yum install dejavu-lgc-fonts".
Дмитрий Котеров
Будильник SleepTracker: http://www.comp2.ru/news... - в статье все правда, я проверил. Кажется, что просыпаешься сам, а через 20 секунд звенит будильник. Но это обман мозга: на самом деле будит именно будильник, а якобы 20-секундный период бодрствования - иллюзия.
Так и есть, работает :) Мне его полгода назад подарили - пользуюсь. Но надо понимать, что это не панацея - если капитально не высыпаться, то будильник тебя бодрым не сделает :) - Осторожно!!! Я кчшч
Ну как сказать... я пару дней спал по 4 часа, и не было обычного ощущения вялости, которое неизменно возникало до этого будильника. - Дмитрий Котеров
А вот такое же приложение для iPhone - Sleep Cycle (пока, правда, не пробовал): http://friendfeed.com/ksena... - Дмитрий Котеров
купил, надо попробовать - согласись со мной
Дмитрий Котеров
Продолжение эпопеи про ноутбук Lenovo и 4Г памяти. T500 просыпается с черным экраном, но бегающей мышкой, и вам приходится логиниться вслепую наугад отпечатком пальца? У меня был этот кошмар 3 месяца. Я отключил PAE (и пришлось еще DEP тоже - с ним PAE не выключается), ноутбук выздоровел. Драйверы видеокарты Lenovo несовместимы с режимом PAE....
Вот как отключить PAE (и, приходится, DEP тоже) в Vista: bcdedit /set nx AlwaysOff & bcdedit /set pae ForceDisable. http://msdn.microsoft.com/en-us... Вообще, конечно, жаль, что пришлось DEP выключить, все-таки это уменьшает защищенность системы. Но выхода нет. Вся надежда на антивирус теперь. - Дмитрий Котеров
Нельзя, иначе Денвер загнется. - Дмитрий Котеров
Дмитрий Котеров
В Perl 5.8 на списке в 1 млн элементов конструкция foreach (@list) { push @new, {a => $_} } примерно в 10 раз (!) быстрее, чем очевидная @new = map { {a => $_} } @list. В Perl же 5.10 - наоборот, вторая конструкция чуть быстрее. Пооптимизировали, видать...
Интересно, а какой именно 5.8 и 5.10? У меня на 5.8.2, 5.8.9 и 5.10.0 - стабильно побеждает for c отрывом 20-30%. - Осторожно!!! Я кчшч
Тестировал так: perl -MBenchmark=cmpthese -e 'my@list=map{rand}1..1000000;my@new;cmpthese(10,{ map=>sub{@new=map{{a=>$_}}@list}, for=>sub{@new=();for(@list){push@new,{a=>$_}}} })' - Осторожно!!! Я кчшч
ActivePerl 5.8.8 и 5.10.1 (винда). Перепроверил сейчас. Черт. Возможно, у меня винда в своп уходила по нехватке памяти просто (а на SSD-диске этого не слышно). На массивах в 100 тыс. элементов 5.8.8 дает for на 18% быстрее, а на 5.10.1 - for на 22% быстрее. - Дмитрий Котеров
На винде мне производительность перла как-то стремно измерять, слишком она непредсказуема :) Я только на unix такие эксперименты ставлю (там выше - две фри и один линукс). - Осторожно!!! Я кчшч
Дмитрий Котеров
phpUnit, PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 8560 bytes)? Вас спасут флаги --no-globals-backup и --no-static-backup. Они отключают бэкап+рестор "глобальных" переменных при запуске теста. Опасно, но помогает при наличии в программе случайных циклических ссылок - как в PEAR, например.
В новом пхп юните есть фишка --process-isolation - Oleg
ИМХО она очень сырая пока еще (там в случае кольцевых ссылок в GLOBALS отваливается var_export, и тут уже --no-globals-backup не помогает). Кроме того, она работает сильно медленно. Но вообще, если бы они сделали, чтобы можно было ГРУППУ тестов выполнять в изолированном процессе, да использовали бы pcnt_fork() вместо сериализации/десериализации переменные при передаче дочернему процессу, цены бы им не было. А пока эта штука костыльно выглядит. - Дмитрий Котеров
Дмитрий Котеров
А если в phpUnit тест валится где-то посередине (например, Fatal error), и непонятно, что это за тест, поможет флажок --testdox. Он позволяет увидеть, какой именно тест валится.
есть ещё и --tap - Oleg
Дмитрий Котеров
Удивительное - рядом. Если сделать var_dump($GLOBALS), то ключ _REQUEST в нем отсутствует (!). А если где-то в коде, пусть даже ниже, упомянуть $_REQUEST, - ключ магическим образом появляется. Наслаждайтесь, запустив такой скрипт: "<?var_dump($GLOBALS); $_REQUEST?>" - запустите сначала так, а потом - с закомментированным вторым оператором....
Дмитрий Котеров
Бывает, PostgreSQL сильно ошибается с выбором плана выполнения запроса. Возникает мысль: "вот я бы здесь сделал лучше". Но после прочтения http://www.postgresql.org/docs... - эта мысль отпадает. Там подробно описано, какие методы применяются для оценки и как именно. Очень рекомендую.
Дмитрий Котеров
Nginx, regex-домены, "root /your/app/$1/htdocs". Не работает fastcgi_php? Замените одну "root ..." на две директивы: "set $docroot /your/app/$1/htdocs; root $docroot;". Видимо, nginx неправильно воспринимает директиву "fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;", если определение в директиве "root" содержит regexp-маркеры.
интересный трюк. bugtack @ sysoev.ru ? - lehha.developer
Кстати, есть еще грабли при использовании регулярок в server_name: внутренние редиректы начинают работать криво. Лечится добавлением server_name_in_redirect off; - Илья Пирогов
Дмитрий Котеров
Почему я использую nginx+fastcgi_php, а не nginx+apache+mod_php? Соображение производительности здесь вовсе не главное. Смотрите. Nginx по любому нужен для "медленных" клиентов, его нельзя исключить. А в связке "apache+nginx" конфигов поддерживать в 2 раза больше, чем в связке "просто nginx". Так что apache сбривается бритвой Оккама, не более того.
>Так что apache сбривается бритвой Оккама... Получается, Апач совсем не нужен? Как же так, столько лет работали на нем, и теперь отказаться? Грустно как-то. Сразу стишок такой на ум пришел. Сервер Апач. Молчит угрюмо твой лог. Сервер Апач. Сжимает память висок. Сервер Апач в даль прощальную дня Зовет меня. Сервер Апач. Хочу твоей быстроты. Сервер Апач. Свои открой мне скрипты. Сервер... more... - Vol Gavr
:-) Ну что значит - "совсем не нужен"... В каких-то проектах - нужен, в каких-то - не очень. Хостинг на много пользователей, например, без апача организовать сложновато. - Дмитрий Котеров
Дмитрий Котеров
HAProxy 1.3.20 - http://haproxy.1wt.eu - замечательно работает как TCP-балансер. Но в HTTP-режиме - это один сплошной глюк. Например, режет HTTP-ответ до 8032 байт (или до другой цифры, зависящей от погоды на улице, а иногда и настроек fastcgi_buffer_size из nginx, который стоит за балансером). Предупрежден - вооружен.
...как тут выяснилось (см. мой более поздний пост) - и в TCP-режиме есть глюки. - Дмитрий Котеров
Дмитрий Котеров
Купил iPhone. Накидайте в комментарии, пожалуйста, список приложений, которые имеет смысл поставить (и какие у них преимущества). Желательно со ссылками.
Читать электронные книжки удобно с помощью ShortBook (http://itunes.apple.com/WebObje...). Раньше читал с помощью i2Reader (http://ripdev.com/i2reader), но 3я версия у меня не заработала. iphone tunnel suite(http://www.makkiaweb.net/itunnel...) - для заливки файлов. Free Ipod video converter (http://www.koyotesoft.com/indexEn...) - для конвертирования видео. - Andrei Solovev
Поздравляю с покупкой) приходи уже в гости, насоветую тебе всего. - согласись со мной from iPhone
Спасибо всем откликнувшимся! Пойду ставить. - Дмитрий Котеров
Дмитрий Котеров
Жмите gzip на стороне PHP (ob_gzhandler), а не средствами nginx. Я серьезно. Потому что так вы сможете при необходимости легко закэшировать отдельно уже сжатый контент через fastcgi_cache или proxy_cache (не забудьте только замешать в ключ кэширования $http_accept_encoding!), а не тратить CPU на сжатие nginx-ом каждый раз.
...даже несмотря на то, что gzip на стороне PHP приводит к бОльшему простою PHP-процесса, а также требует затрат памяти на хранение несжатого контента целиком. - Дмитрий Котеров
Я вот вынужден gzip выключить и в nginx и в PHP - первый действительно жмет при каждом обращении к кешу, а второй кушает ну очень много процессорного времени (машинка куплена слабая). Люди скажите кроме повышенного расхода трафика на что я еще попадаю? - Mikhail Pilin
"Попадают" в основном пользователи. Ведь это им приходится ждать загрузки в 2-3 раза дольше обычного... - Дмитрий Котеров
Дмитрий Котеров
В nginx fastcgi_cache* не работает при наличии заголовков "Pragma: no-cache", "Cache-Control: private" и др. Осторожно! Эти заголовки неявно выставляет session_start() в PHP. Отключить сессии и подавить заголовки Expires, Cache-Control, Pragma и Last-Modified можно так: ini_set('session.use_cookies', 0); ini_set('session.cache_limiter', '');
т.е с этим хаком нельзя использовать куки? - Dmitry.Bykadorov
Когда страница кэшируется целиком в nginx, куки не имеют смысла. Потому что любая кука, установленная скриптом, будет закэширована и потом отдана другому клиенту. Наверное, это совсем не то, что хотелось получить, верно? С сессией все еще опаснее, потому что, если допустить просачивание сессионной куки наружу, все клиенты получат единую сессию, что приведет к разрушительным последствиям. - Дмитрий Котеров
Оказалось, что можно написать: ini_set('session.cache_limiter', '') - это подавляет вывод заголовков кэширования. Обновил исходный текст поста. Решение превратилось в довольно аккуратное. - Дмитрий Котеров
И даже более того: можно в PHP ничего не править, а обойтись fastcgi_hide_header "Set-Cookie"; fastcgi_ignore_headers "Cache-Control" "Expires"; - Дмитрий Котеров
Сам такое пользую - fastcgi_ignore_headers Cache-Control Expires; - Mikhail Pilin
Дмитрий Котеров
HA-Proxy version 1.3.17, TCP-проксирование. Работал долгое время отлично. Вдруг внезапно соединения начали подвисать. Не вылечилось ничем (включая перезагрузки), конфигурация машины точно не менялась. Я еще понимаю, когда проблемы были в HTTP, но TCP-то чего... Все, с меня хватит. Пойду искать замену.
Кстати, если кто-то знает альтернативы, напишите сюда, пожалуйста. Интересует самый простейший TCP-балансировщик, который не глючит. - Дмитрий Котеров
так вот тут http://yum.aclub.net/pub... лежит 1.3.20 - в нём, вроде, нет проблем :) - Ilyas
В 1.3.17 тоже не было на протяжение почти года. А потом вдруг раз! - и есть. В changelog-е нет сколько-нибудь похожих багфиксов, так что, я думаю, они это не починили (как не починили HTTP-проксирование). А возможно, HA-Proxy просто не дружит с OpenVZ... - Дмитрий Котеров
Дмитрий Котеров
Директива nginx fastcgi_cache_valid - http://sysoev.ru/nginx... - игнорируется, если в ответе скрипта есть либо заголовок Cache-Control: public; max-age=ЧИСЛО_СЕКУНД, либо заголовки, запрещающие кэширование. (Кстати, они выставляются, например, в session_start()). Кэш начинает храниться ЧИСЛО_СЕКУНД. Осторожно!
А еще, похоже, при наличии "Cache-Control: public; max-age=ЧИСЛО_СЕКУНД" nginx (гад такой) кэширует даже ответы "304 Not Modified" (полученные по If-Modified-Since или If-None-Match), хотя в fastcgi_cache_valid прописано только кэширование "200 OK". В кэш-файликах прямо так и записывается, с заголовками и пустым телом ответа, и все последующие пользователи получают белую страницу. Это поведение лишено смысла и очень похоже на баг. Чуть позже буду более детально разбираться. - Дмитрий Котеров
Дмитрий Котеров
Валидация коммита в Git: 1) в hooks/pre-receive пишем sudo /usr/bin/rsync -a --delete /repo /repo.COPY; 2) в hooks/post-receive проверяем файлы из репозитория и, если коммит плохой, делаем обратно sudo /usr/bin/rsync -a --delete /repo.COPY /repo; 3) в post-receive можно ходить по SSH и делать git-pull, если нужно: http://bit.ly/djSjc
А что значит «валидация», в данном случае? - Alex Kapranoff
под валидацией скорее всего подразумевается, например, проверка кода на синтаксис или запуск какого-нибудь быстрого теста. - Ilyas
Или configtest/reload какого-нибудь демона, если в репозитории хранится его конфиг. Если configtest закончился с ошибкой, коммит надо запретить. - Дмитрий Котеров
Спасибо, интересно. Не приходило в голову на этом этапе отвергать код :) Надо попробовать. - Alex Kapranoff
На STDIN хука, кстати, передается список измененных объектов. Правда, я с ним не экспериментировал пока. - Дмитрий Котеров
Еще при валидации в PHP-проектах я проверяю: а) что в PHP-файле ровно один "<?" и нет ни одного "?>"; б) что PHP-файл состоит только из комментариев, директив require_once и объявлений классов class Xxx { ... }, т.е. что его можно подключить без побочных эффектов через autoload (это очень удобно на практике). - Дмитрий Котеров
Other ways to read this feed:Feed readerFacebook