Телекомы → Мегафон, роуминг и грабли: обычное дело с необычным концом

История про Мегафон, роуминг и… собственно, этим уже всё сказано.
Началась эта история в конце июля, когда я решил сьездить в отпуск на Украину через Белоруссию, из родного Питера. Сменив пару лет назад своего оператора с Мегафона на Теле2, я оставил симку Мегафона и периодически кидал на неё 100-300 рублей, с настроенной переадресацией на Теле2. К сожалению, Теле2 не работает за пределами Питера и области, поэтому я решил воспользоваться мегафоновским номером, закинул на него денег до баланса порядка 500 рублей, и поехал.
Через день, где-то на территории Белоруссии, мне приходит СМС от Мегафона:
«Услуга Роуминг временно приостановлена. Роуминг подключится автоматически при балансе более 1500 руб. Справки *101#». Ну и, собственно, всё! Связи нет вообще, предлагаемый *101#, естественно, не набрать.
Блог компании Мосигра → Какие ошибки в письмах делают люди и роботы
Каждый день мне пишут роботы и обычные люди. В топике я расскажу про глупые ошибки в письмах, которых можно легко избежать. А ещё — о том, как устроена обработка почты у нас в компании.CMS → CMS своими руками. Теория велосипедостроения
Как много веселых ребят
И все делают велосипед.
А один из них как-нибудь утром
Придумает порох.
Виктор Цой.

Сначала я хотел написать в раздел «Я пиарюсь» статью о том какой я молодец и какую замечательную штуку сделал но, немного поискав в сети, я без удивления обнаружил, что я совсем не единственный в своем роде. Тогда я решил пойти от обратного: наверное, практически каждый Веб-программист хотя бы раз в своей жизни пытается написать полноценную CMS. При этом, в процессе проектирования (а это процесс, зачастую, наступает уже во время написания кода) у разработчика непременно возникают вопросы. С этими вопросами он обращается к поисковикам и попадает на сайты тех, кто по подобным граблям уже прошествовал.
Итак, я стал смотреть, по каким же запросам попадают ко мне начинающие «разработчики велосипедов», и постарался осветить некоторые вещи, которые для меня самого были неочевидны в начале работ.
И все делают велосипед.
А один из них как-нибудь утром
Придумает порох.
Виктор Цой.

Сначала я хотел написать в раздел «Я пиарюсь» статью о том какой я молодец и какую замечательную штуку сделал но, немного поискав в сети, я без удивления обнаружил, что я совсем не единственный в своем роде. Тогда я решил пойти от обратного: наверное, практически каждый Веб-программист хотя бы раз в своей жизни пытается написать полноценную CMS. При этом, в процессе проектирования (а это процесс, зачастую, наступает уже во время написания кода) у разработчика непременно возникают вопросы. С этими вопросами он обращается к поисковикам и попадает на сайты тех, кто по подобным граблям уже прошествовал.
Итак, я стал смотреть, по каким же запросам попадают ко мне начинающие «разработчики велосипедов», и постарался осветить некоторые вещи, которые для меня самого были неочевидны в начале работ.
Персональные блоги → Заказчик и его грабли
Все время при общении с фрилансерами сталкиваюсь с одними и теми же проблемами. Давайте взглянем на них со стороны заказчика. Итак, грабли и попытки их обойти. Сценарий «заказчик обращается к незнакомому фрилансеру».
Perl → Особенности национальных выражений
Захотелось мне поделиться с хабравчанами-перловодами одним интересным случаем, произошедшим у нас на работе. В процессе ревизии старого кода была обнаружена некая загадочная конструкция (здесь и далее реальный код несколько сокращён и приглажен):
sort { my ($x, $y) = ($a, $b); ($x =~ s{/}g) <=> ($y =~ s{/}g); } @array;Казалось бы, обычная сортировка с переопределённой функцией сравнения. По изначальной задумке автора здесь должна была быть сортировка массива строк по количеству прямых слэшей в этих строках (известно, что выражение замены возвращает в качестве значения количество произведённых замен), однако что-то в этой функции не то. Вроде бы, «заменительная» часть выражения s/pattern/replace/g никогда не была опциональной, однако именно это мы видим в выражениях $a =~ s{/}g. Как же оно работает? Вот с этим мы сейчас и будем разбираться.Я пиарюсь → Бег с препятствиями или создание одного проекта
О чем разговор
Chefonline.ru – это кулинарный портал, как бы банально это ни звучало. У нас есть персональная и общая книги рецептов, есть возможность создавать списки покупок, планировать меню, хранить избранное, можно писать в коллективный блог или просто читать его, есть другие интересные и полезные сервисы для любителей и сочувствующих.Портал достаточно молод, сделано хоть и немало, но многое все еще находится в разработке или в виде идей, поэтому рассказать хотелось бы не о самом проекте, а о процессе его создания. Надеюсь, наш опыт будет полезен хабра-людям.
Персональные блоги → CakePHP. Behaviors — измена!
Как обычно я не ищу лёгких путей, и как обычно сталкиваюсь с задачами не рассмотренными в book.cakephp.org ;-)
Всегда, самой хлопотной частью проекта для меня являлся paginate и всё что с ним связано (выборки, сортировки).
И вот сейчас, я в очередной раз наступил на грабли, причём ответа на мой вопрос — нет.
Итак, в чём состояла задача:
Model A — hasMany Model B
Model B — belongsTo Model A
Model B — actAs ('Image')
Image — чудесный behavior Евгения Томенко, который служит для связки записи в модели с сохранённой картинкой.
В случае запроса Model B ->… любой формы — behavior срабатывал как часы, и я получал нужные мне данные, в данном случае — картинки.
Однако, когда стала задача построить запрос вида
Model B -> Model -> A ( с условиями, где выборка идёт по полям Model A)
оказалось — что поиск и педжинация работают отлично, однако в результатах связанной Model B — нет и следа работы behavior… Я просто получал поля модели, без нужных мне «искривлений».
Никакие танцы-пляски с Contain, порядком запроса и т.д. — ни к чему не привели. Ответа так же нет и в гуглегруппе.
А сегодня я нашёл ещё одни грабли, но уже с behavior Translate. Если воспользоваться инструкцией, и сделать как там советуется — всё работает отлично, кроме мой любимой педжинации…
А именно — сортировать по полям, расположенным в i18n таблице — нельзя. Не получится. Только по тем полям, которые присутствуют в явном виде. Вот так.
Я, конечно, не хочу сказать, что сортировка построенная через i18n таблицу будет работать быстро, или в принципе будет работать вменяемым образом. Может и не будет. Но в таком случае, если необходимо как-то сортировать результаты кроме id,created — то никаких шансов использовать этот behavior у вас нет. Он не сработает. :(
И если первые грабли можно обойти вторым запросом (сначала получив список id Model B, а потом затребовать непосредственно из Model B все записи (тут-то behavior сработает). То во вторых граблях, единственный способ сортировать — обходиться без коробочного behavior.
2All: Если кто-то решил данные вопросы — поделитесь решением в комментариях. Речь идёт о CakePHP 1.2.3.8166
Всегда, самой хлопотной частью проекта для меня являлся paginate и всё что с ним связано (выборки, сортировки).
И вот сейчас, я в очередной раз наступил на грабли, причём ответа на мой вопрос — нет.
Итак, в чём состояла задача:
Model A — hasMany Model B
Model B — belongsTo Model A
Model B — actAs ('Image')
Image — чудесный behavior Евгения Томенко, который служит для связки записи в модели с сохранённой картинкой.
В случае запроса Model B ->… любой формы — behavior срабатывал как часы, и я получал нужные мне данные, в данном случае — картинки.
Однако, когда стала задача построить запрос вида
Model B -> Model -> A ( с условиями, где выборка идёт по полям Model A)
оказалось — что поиск и педжинация работают отлично, однако в результатах связанной Model B — нет и следа работы behavior… Я просто получал поля модели, без нужных мне «искривлений».
Никакие танцы-пляски с Contain, порядком запроса и т.д. — ни к чему не привели. Ответа так же нет и в гуглегруппе.
А сегодня я нашёл ещё одни грабли, но уже с behavior Translate. Если воспользоваться инструкцией, и сделать как там советуется — всё работает отлично, кроме мой любимой педжинации…
А именно — сортировать по полям, расположенным в i18n таблице — нельзя. Не получится. Только по тем полям, которые присутствуют в явном виде. Вот так.
Я, конечно, не хочу сказать, что сортировка построенная через i18n таблицу будет работать быстро, или в принципе будет работать вменяемым образом. Может и не будет. Но в таком случае, если необходимо как-то сортировать результаты кроме id,created — то никаких шансов использовать этот behavior у вас нет. Он не сработает. :(
И если первые грабли можно обойти вторым запросом (сначала получив список id Model B, а потом затребовать непосредственно из Model B все записи (тут-то behavior сработает). То во вторых граблях, единственный способ сортировать — обходиться без коробочного behavior.
2All: Если кто-то решил данные вопросы — поделитесь решением в комментариях. Речь идёт о CakePHP 1.2.3.8166
C++ → Порядок инициализации в конструкторах
Итак, вот небольшая программа на C++:
#include <iostream>
class A {
private:
int a;
int b;
public:
A(int x) : b(x), a(b) {}
void dump() {
std::cout << "a=" << a << " b=" << b << std::endl;
}
};
int main() {
A a(42);
a.dump();
return 0;
}
Если вы считаете, что она выдаст
a=42 b=42
Perl → Оно случилось.
Привет.
Случайно вот…
Подкаст, Перл, Для начала про каталист.
Случайно вот…
Подкаст, Перл, Для начала про каталист.
прослушан 923 раза
