Архив рубрики «Дневные посты.»

Приехал с Украины.

26.08.2010

Приехал со Львова. Выписали на границе штраф за то, что слишком много на Украине отдыхал (ладно хоть за тунеядство статью не оформили).

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

Поеду сегодня в один сверхсекретный городок (за секретами), до которого даже билеты купить нельзя (нет станций и остановок автобуса). На гугл-картах он, конечно, есть.

Чётко и по делу.

21.07.2010

Слова чётко и по делу часто звучат как оскорбление. Мама до сих пор обижается на фразу «говори по делу» – дела-то никакого нет, просто есть желание отнять немного моего времени. Инстинкт.

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

Однако жизнь подтверждает, что прямые вопросы и ответы выгоднее. Особенно насчёт денег. Например, есть заказчик с проектом на Zend Framework. Одни из лучших моих переговоров, если б не один пункт – отсутствие суммы. Но она оказалась вполне адекватной.

Дата – восьмое число. Зелёным – мой текст.

Датой началы работы будем считать сегодняшний день. Т.к. по сути и вчера, и сегодня, и завтра загрузка не полная будет. А первый расчет я планирую через неделю, на середину-конец недели (21/24)
Хотя возможно, 17-го и 31-го расчет сделаем, чтобы в следующем месяце тоже в середине и конце месяца могли нормально расчитаться. Но это уточнить смогу наверняка только к концу следующей недели

По поводу дата начала – хорошо, думаю это справедливо.
По авансу – это не очень хороший вариант. Аванс показывает серьёзность намерений.

Понял вас. По авансу тогда рассмотрим вариант перевода в начале следующей недели (пн-вт)

Понедельник меня вполне устроит, но давайте тогда договоримся, что не «рассмотрим», а что это именно дата аванса. Хорошо? Или вам нужно время что бы решить?

Нет, нормально

Тяжелая жизнь демонов.

07.07.2010

Есть у меня скрипт – отправляет\принимает udp-пакеты. Размер – 19 строк.
Решил я сделать из него демона. На php это не сложно. Самый короткий вариант – «if (pcntl_fork()) exit;».
Однако я решил, что демон должен запускать несколько процессов, что управляться он должен через «./server start|stop|restart», что должен выводить цветные сообщения в консоль и понимать параметры -h и -v. И добавил копирайт. Всё как у взрослых. Теперь 129 строк.

P.S. Почему-то не могу собраться и написать о жизни.

Дислокация.

27.06.2010

Пришло время опять сменить место дислокации.

Пока не знаю, куда поеду, но поеду – факт.

Symfony task logging / criteria sql builder.

24.04.2010

С разработчиками symfony и propel у меня слишком разные взгляды на типичные ошибки и полноту документации. Полтора часа, что бы обнаружить, что поле таблицы названо зарезервированным словом – это слишком много.

А дело было так.
Делаю таск (т.е. скрипт), что бы пропинговать некоторое количество доменов. Делаю запрос к базе – получить домен. Не проходит. Код элементарный, типа такого.

$criteria=new Criteria();
$criteria->add(DomainPeer::CHECKED,false);
$page=DomainPeer::doSelectOne($criteria);

Причем не проходит именно запрос.

[wrapped: SQLSTATE[HY000]: General error: 1 near «INDEX»: syntax error]

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

Нужно посмотреть, какой запрос происходит. Благо, узнать в symfony, какой запрос делает propel можно элементарно

$c = clone $criteria;
$params=array();
if (!$c->hasSelectClause()) DomainPeer::addSelectColumns($c);
echo BasePeer::createSelectSql($c,$params);

Но как найти эту функцию – createSelectSql, когда ты ещё не знаешь её названия? Я полагаю, что это должно быть в документации. Однако листание оной ни к чему не привело. Открыв гугл я просто понял свою беспомощность перед задачей – сформулировать вопрос.

symfony show builded sql query
symfony propel show query
criteria get result query
propel criteria get query
propel criteria getquery
criteria итоговый запрос
show sql symfony

Максимум, что находится – смотрите в логах или веб-панели. Но логов нет. Что ж, то, что логов в тасках нет, я знал и ранее, но не знал, почему. Тут бы мне залезть в кишки ORM, поставить пару var_dump и всё-таки выяснить, какой запрос делается к базе. Но решил разобраться, как включить логи. Я полагаю, что это должно быть в документации. Однако листание оной ни к чему не привело. Открыв гугл я просто понял свою беспомощность перед задачей – разобрать миллион страниц, отвечающих не на тот вопрос.

enable logs for tasks symfony
get setting value symfony
tasks site:symfony-project.org
enable log tasks symfony
enable logging tasks symfony

Все страницы радостно рассказывают мне про опцию logging_enabled, которую достаточно включить. Про неё, конечно, я знал и ранее и она, конечно, не помогает, иначе история была б вдвое короче. Но вот почему она не помогает? Я полагаю, что это должно быть в документации. Однако листание оной ни к чему не привело. Открыв гугл я просто понял свою беспомощность перед задачей – найти ответ на вопрос, который никто не задавал.

logging_enabled tasks symfony

Решил понять, почему не работают логи, сделав запись в логи самостоятельно. Сделать это не сложно.

sfConfig::set(’sf_logging_enabled’,true);
if (sfConfig::get(’sf_logging_enabled’))
{
sfContext::getInstance()->getLogger()->info(«test»);
}

И код этот выдаёт ошибку, мол The «default» context does not exist. Вот только почему в тасках нет контекста? Я полагаю, что это должно быть в документации. Однако листание оной ни к чему не привело. Открыв гугл я просто понял, какой они предоставляют замечательный сервис – можно всегда легко и просто найти ответ на интересующий тебя вопрос

The «default» context does not exist. symfony.

$configuration = ProjectConfiguration::getApplicationConfiguration(‘work’, ‘dev’, true);
sfContext::createInstance($configuration);

Делаем контекст, смотрим логи (после создания контекста опция logging_enabled обрела смысл и логи появились). В логах пусто. Какой-то хлам и ни слова про запрос. Нужен ход конём – делаем тестовый модуль и наконец-то открываем наш сомнительный код через браузер. Видим и полные логи и веб-дебаггер.

Apr 24 04:31:58 symfony [err] {sfPropelLogger} SQLSTATE[HY000]: General error: 1 near «INDEX»: syntax error
Apr 24 04:31:58 symfony [err] {PropelException} [wrapped: SQLSTATE[HY000]: General error: 1 near «INDEX»: syntax error]

Забавно, ведь это мы уже видели в самом начале. К тому же прошло уже почти полтора часа и пришла пора догадываться. Стало понятно, что без кишков не обойтись. Трейс-лог показал мне, где искать нужный мне код – открыл BasePeer, открыл там функцию doSelect, перед $con->prepare($sql) поставил echo $sql. Тот запрос, который появился на странице, вбил в консоль и сразу всё увидел – sqlite-у не нравится, что у меня одна из колонок называется INDEX.

Спасибо за внимание.
156

Весёлый интернет.

24.04.2010

Забавный тут интернет.

Есть пар 3g-модемов, которыми пользуются Imbolc и его девушка. И халявный вай-фай, который ловит только на окне и только у меня. Пробовали подключаться с других ноутов – не выходит, в чём баг – не понятно.

На следующий день появился замечательный роутер asus RT-N12. Его замечательность проявляется не только в том, что он – 802.11n (т.е. вайфай до 300 мбит/с), но и в интересном режиме работы – как повторитель вай-фая.

Странность в том, что подключиться сам по себе к этой халявной вай-фай сети он не может, как не могут и 3 разных ноута, которые тут есть. То есть, включить его, настроить как повторитель, а потом подключиться к сети нельзя – не работает. Вай-фай есть, а интернета нет.

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

Ещё один забавный момент – роутера нет в сети. Халявный есть – без пароля. А нашего асуса нет.

Есть, правда, у этой схемы пара минусов. Один понятен – нужно подходить к окну, что бы подключиться. Второй – увеличение латентности сети. Это DNS-ы гавно. Поставил гугловские себе – страницы открываются намного быстрее. Может на роутере поставить, пусть остальные порадуются?

Думаю.

16.04.2010

Смотрел серию Хауса про девушку-блоггера. Много думал.

Смотрел День Триффидов. Отличную идею экранизируют уже третий раз. Не смотрел первые два варианта, но третья попытка не удалась. Чуть-чуть надо было. Плевать на игру актёров, плевать на декорации, просто сценариста на неделю на улицу выгнать, что б жизненного опыта набрался. И всё было бы отлично.

Смотрел Скалолаза. Эх, снимали ж боевики. Сейчас больше сопли какие-то.

Вроде б определился с дальнейшей жизнью.

Game over.

15.04.2010

Ну вот всё и закончилось. Как всегда неожиданно. Странная особенность всех ожидаемых событий без точной даты (и очень многих – с датой точной) – приходят в довольно неожиданный момент.

Я сейчас один в трёхкомнатной квартире в Москве. Есть деньги, ноутбук, интернет. Нет ни одного обязательства. Моя жизнь снова в моих руках. И есть, в худшем случае 12 часов, в лучшем – неделя, что бы решить, что дальше со всем этим делать.

1625.

10.04.2010

Пришел на кухню, заглянул в холодильник. Беру творог.

Второй: – Не ешь творог.

Просто замечательно. Во-первых, мне его нельзя, во-вторых чётко обосновали почему – ты, мол всё ешь, а Второй на диете. То, что Второй на завтрак съел 6 яиц, а я попил чаю (яйца-то он съел все), это вроде как нормально.

И я действительно ем то, что есть, потому убедить троих, что рулет из осьминогов покупать не стоит, или то, что вместо 5 пачек самых дешёвых мюслей можно взять что-то более съедобное (да хоть картошки) задача не очень реальная (деньги на еду, понятно, общие).

Первый и второй тоже едят всё. Правда регулярно доставляют немного фана утверждениями, что они что-то не едят. Например сахар. Когда одна девушка купила полкило фруктозы, я успел посластить чай три раза. Первый и Второй сахар не едят. Магия. Когда кто-то купил 2 коробки конфет (наверное она же), я съел 2 конфетки. Больше не хотел – не очень их люблю. Первый и второй оба принципиально конфеты не едят, считают их плохой пищей. Потому, когда они доели первую коробку, Первый убедил Второго, что вторую нужно отдать соседям – что бы не съесть самим.

Впрочем, нужно отдать должное Первому – он достаточно последователен. После второго или третьего раза, когда я спросил, почему же он ест пиццу, если считает её плохой пищей и не любит, он действительно перестал её есть. Пожалуй, в следующий раз при случае я спрошу его про биг мак или биг тейсти из Макдональдса.

Впрочем дело по сути не в твороге, а в том, как Первый обосновывал. Я раньше не замечал, только последнее время начал – люди очень часто стремятся поменять что-то значимое на что-то совершенно пустое. Стремление понятно. Малопонятно ожидание человека, что ему действительно удастся поменять пустое на полное. Ещё менее мне понятно, когда я вижу, что поменять действительно удаётся.

Что пустое, а что полное? Слова и действия. Если один сказал, что нужно поступать так-то и сказал так, что с ним согласились окружающие, то уже не важно, правильный ли это поступок или нет, все ожидают, что ты будешь поступать именно так. Смешно. И не смешно одновременно. Про эксперемент Стэнли Милгрэма, думаю, знают все. Думаю, не ошибусь, если обобщу его – человек согласен подчиняться авторитету, даже если это вразрез с его убеждениями. Потому, если ты сначала смог словами сделать себе авторитет (а авторитет почти всегда – просто слова), то потом словами же можешь добиваться, что бы люди делали то, что тебе нужно. Главное не давить авторитетом, рассыпется, а убеждать правильно.

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

Идем в кино на Алису. Все уже в зале, я купил кока-колы, тоже иду в зал. Купил её не в баре при кинотеатре, а в Ростиксе, в 20 метрах (это было в меге, всё под одной крышей). Какой-то охранник мне бросает – «с купленной не здесь нельзя». В ответ ему бросаю «окей», не замедляя шага. Чего он хотел? Поменять идиотскую фразу на ещё более идиотское действие от меня, что б я выкинул эту и купил точно такую колу ещё раз? Смешно. Действие можно поменять только на действие, но реально-то ему плевать, потому догонять меня (он не передо мной стоял, а сбоку болтал с кем-то) ему никакого интереса не было, он и не стал.

Положил бельё в машинку. Простыня, пододеяльник, две наволочки. Запустил. Второй – когда мало, запускай на восьмерке. Вроде бы все тут взрослые люди, но желание повоспитывать друг-друга у всех периодически возникает. Чего он хотел? Он мне сказал слова, а я в обмен буду стирать хлопковое постельное бельё на режиме «30 градусов, 30 минут»? И он наверняка действительно считает, что я должен так делать. Просто потому, что он так сказал.

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

160

Освоение бюджета.

06.04.2010

Была такая отличная штука в советское время – освоение бюджета. И выделенный бюджет нужно было всенепременно освоить, иначе на следующий год уже столько не выделят – урежут. Например, в строительстве самый быстрый способ освоить бюджет – это поставить коробку дома. Особенно, если не из кирпича, а из панелей. Для внутренней отделки нужно штукатуров искать, электриков, сантехников, а расходы? Все расходы на трубы, да штукатурку с проводами. Быстро деньги не потратишь. А на панели – легко. И в отчёте хорошо выглядит – запустили в строй ещё N многоквартирных домов.

Второй постоянно ходит кругами и сокрушается, что мы ничего не делаем. И при этом бодро рапортует о том, что он начал новые 10 лендингов. На прямой вопрос – куда можно лить траф? – прямой ответ – У меня наполовину сделаны 8 лендингов. И при этом все понимают, что 8 лендингов по 50% никак не дадут 4-х готовых, а значит траф лить некуда.

К слову. Я, как главный Д’Артаньян, рапортую о 80%-й готовности двух сервисов для пользователей сайта, 50% готовности нового раздела, а сегодня я взялся за новую внутренюю фичу – допиливаю ресайзилку картинок. Задумка готова минимум на 30%. Представляете, как всё скоро будет замечательно?

161