понедельник, 29 июня 2015 г.

Это я, Старший Брат Печкин...

У знакомого предпринимателя работает человек 15 водителей; доставляют посылки для одной известной логистической фирмы. Много рассказывал, как там кидают с оплатой. Он сам попал на 50 тысяч, и только после вмешательства Би-Би-Си деньги вернули.

Но особенно интересно другое: говорит, что сейчас в момент, когда клиент ставит подпись световым пером на планшете, его автоматически фотографируют. Я очень удивлен: думал, что data protection law не позволяет такое делать без согласия или хотя бы уведомления клиента...

Чалма

У знакомого - небольшая сеть магазинов. Работал у них индус-сикх. Хорошо вроде работал, и со временем ему полностью доверили магазин. Жил он там же - в квартире над магазином, которая принадлежала тому же хозяину.

Год прошел, и как-то сильно упала прибыль. Хозяин заподозрил неладное. Тем более, что индус резко засобирался назад, на родину. Вечером хозяин - косая сажень в плечах - зашёл к нему домой поговорить по душам. И заставал с поличным: индус как раз снимал чалму на ночь. Оказывается, в ней он хранил все украденные деньги...

Кнопка "Увести"

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

"Когда они начинали слишком сильно буянить, я нажимала кнопку, и конвой их уводил".

А "обычные" другие учителя могут только мечатать о такой волшебной кнопке :)

пятница, 26 июня 2015 г.

AdSense: 'payment expired'

Необычная проблема с AdSense. Они вроде отправили очередной чек, а через два дня прислали емейл: "Ваш чек отменен, потому что payment method expired". Если бы мы получали деньги на карточку, то было бы понятно - у карточки закончилися срок действия. Но как может закончиться срок действия у почтового адреса?

Насколько я понял, они просто хотели, чтобы мы подтвердили: да, по-прежнему можно слать деньги на этот адрес; да, по-прежнему можно его выписывать на такое-то имя. Наверное, дело в том, что наш аккаунт очень старый - уже лет 7 ему. Видимо, Гугль решил провести аудит. Только зачем чеки отменять? Можно было предупредить заранее...

воскресенье, 21 июня 2015 г.

Полив под дождем

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

среда, 17 июня 2015 г.

25 пенсов

Женщина везла четырехлетнюю дочку из садика. Водитель автобуса не захотел брать 25 пенсов монетками в один и два пенса. Она уперлась: "Деньги есть деньги". Водитель вызвал полицию. Оказывается, формально он таки был прав: по закону можно не принимать более 20 пенсов бронзой. Полицейский нашел простой выход: дал пассажирке свою недостающую монетку в 5 пенсов. Автобусная компания извинилась.

А у меня тоже был случай с автобусом и негритянской мамашей. Оказывается, по технике безопасности положено не больше двух инвалидов или детских колясок на автобус, причем у инвалидов приоритет. Водитель минут 20 заставлял её сойти. "А мне только одну остановочку!" Пассажиры вежливо намекали, что она бы уже давно дошла пешком, но получали матерные ответы. Водитель тоже грозил вызвать полицию. В конце концов спросил диспетчера: "Ну, ладно - на одну остановку можно". Через полчаса мы приехали и сошли, а она всё ещё ехала...

пятница, 12 июня 2015 г.

HTTP 404.11

Один из популярных хакерских методов - double escape sequence. По умолчанию ASP.NET его отлавливает и выдает сообщение: "A potentially dangerous Request.Path value was detected from the client". Если не делать <requestFiltering allowDoubleEscaping="true"/>, то вроде как опасности нет.

Опасности нет, а неудобства есть. Мы пишем всё ошибки в лог и постоянно его мониторим. Если вдруг идет много ошибок, админы получает емейлы и SMS, всё бегают и кричат: "Что происходит?!" А я что - я говорю: "Ну, нас атакуют. Сделать ничего нельзя. Сидим и ждем, пока перестанут". Кроме неудобств, такие атаки могут ухудшать производительность сайта.

Поэтому хотелось бы, чтобы double escape sequence отлавливалась не на уровне приложения ASP.NET, а раньше. К счастью, есть простой выход. IIS поддерживает не только стандартные статусы HTTP, но и "подстатусы". Например, в случае double escape sequence он генерирует ошибку 404.11 (хотя с точки зрения внешнего мира это просто стандартная 404).

А мы её теперь можем перехватить:

<?xml version="1.0" encoding="utf-8"?>
<configuration>

   ...

  <system.webServer>
    <httpErrors errorMode="Custom" existingResponse="Replace" defaultPath="/Errors/ServerError">
      <clear/>
      <!-- The request filtering module is configured to deny a request that contains a double escape sequence.-->
      <error responseMode="File" statusCode="404" subStatusCode="11" path="Static\HackingAttempt.txt"/>
      <error responseMode="ExecuteURL" statusCode="403" path="/Errors/NotSupported"/>          
      <error responseMode="ExecuteURL" statusCode="404" path="/Errors/PageNotFound"/>
      <error responseMode="ExecuteURL" statusCode="410" path="/Errors/Gone"/>
      <error responseMode="ExecuteURL" statusCode="500" path="/Errors/ServerError"/>
      <error responseMode="ExecuteURL" statusCode="503" path="/Errors/ServiceUnavailable"/>
    </httpErrors>

  </system.webServer>

</configuration>

Что тут происходит? ASP.NET-приложение выдает всякие красивые странички для разных видов ошибок (403 / 404 / 410 / 500 / 503). Там есть лототип, "ой, извините, страница не найдена, может предложить вот это и это", "можно сообщить администратору" и т.д. Но для хакеров сильно много чести. Для них я просто возвращаю содержание текстового файла HackingAttempt.txt из каталога Static (можно хранить в другом месте). Обратите внимание, что слэши в другую сторону, потому что это путь к файлу, а не URL. Внутри файла можно написать: "Пожалуйста, не взламывайте нас!" Или что-то нейтральное: "Page not found". Поскольку строка с statusCode="404" subStatusCode="11" идет перед statusCode="404", то "нормальная" страница 404 возвращается только если ошибка не связана с double escape sequence

Цель достигнута: лишние ресурсы не расходуются на генерацию страницы с ошибкой, и логи не засоряются ошибкой, с который ты всё равно сделать ничего не можешь.

четверг, 11 июня 2015 г.

Не в спринте

На работе создали Running Club: в обед бегают по Regents Park.

Тонкий английский юмор на Scrum meeting (утренней планерке):

- Yesterday I worked on item #123. Today - item #234... and Running Club :)
- Is there an item for Running Club?
- No, it's not in the Sprint.

"Клуб бегунов не входит в Cпринт" ("спринт" - термин для одной итерации процесса разработки ПО).

Третья полоса

Много лет активно спорят, надо ли строить третью полосу в Хитроу, вторую в Гэтвике, либо расширять или строить что-то ещё. Сейчас в очередной раз дискуссия обострилась. Такое впечатление, что Гэтвик победит. Везде, конечно, сопротивление местных жителей из-за шума и выбросов.

Мое мнение не изменлось: несмотря на то, что мы живем не очень далеко от Хитроу, считаю, что третью полосу строить надо. Но! Большое "но": она должна использоваться только для того, что снизить нагрузку на остальные две. Потому что загружать ВВП на 98%, как сейчас - это ненормально. В Хитроу страшно в окно смотреть - там самолет садятся и взлетают так часто, как поезда метро в час пик. Нужен запас прочности на случай плохой погоды, поломок и пр. Т.е. хорошо бы построить одну полосу тут, и ещё одну где-то в другом месте.

К сожалению, я понимаю, что в нашей стране так не получится. В Штатах можно - там аэропорты принадлежать государству. А здесь хозяин будет отбивать огромные бабки, потраченные на строительство и лоббирование. Даже если в разрешении зафиксировать максимальное количество рейсов на нынешнем уровне, всё равно наверняка когда-то его станут повышать потихоньку...

Язык птиц

В полчетвёртого начали петь птицы. Мысль спросонья: в отличие от людей, коты понимают язык птиц. На самом деле, в нем всего несколько слов: "Съешь меня! Съешь меня, сэр!"

Аутсорсинг жилья

Вчера в газете была маленькая заметка, которую я ждал много лет: местный совет Вестминстера впервые решил закупать социальное жилье за городом. Вероятно, в Эссексе.

В отличие от СССР, очередь на жилье тут всегда была по районам. У каждого района свое финансирование и свои правила. Живет человек в самом центре города, а потом надолго теряет работу, становится инвалидом или заводит кучу детей. И надо ставить его на очередь в этом же районе. С одной, вроде как справедливо: он там жил всю жизнь, платил мунициальный налог и, возможно, даже участвовал в субботниках. Дети привыкли к школе и друзьям и т.д. Жалко срывать с места.

Но всему же есть предел! Социалисты говорят, нехорошо превращать центр в гетто для богатых. "Депортация из Лондона", "жирные коты-банкиры". Ну, а если реальность такова, что не превращать невозможно? Что должен сделать местный совет - купить одному человеку квартиру за миллион, или потратить эти деньги на уборку улиц, ремонт дорог, содержание школ, домов престарелых?

Тут ещё надо добавить, что множество хитрецов на самом деле сами уезжают за город, а свои социальные квартиры в центре сдают. Хотя это и незаконно.

P.S. Кстати, у нас есть знакомая медсестра, которая живет в социальном доме (не квартире!) в центре. У неё даже маленький сад.

среда, 10 июня 2015 г.

Бампер

У меня давно отломана половина переднего бампера, причем не в результате аварии. Он  неродной и изначально неплотно прилегал к кузову. Однажды сдавал задом с одновременным поворотом, и в зазор попала веточка. Бампер отогнулся сильнее, и туда попала ветка побольше... потом ещё больше. Дедка за репку... Так продолжалось несколько раз, пока однажды я не расслабился и совсем его не выломал.

Никак руки не доходили поменять: даже страшненький старый  стоит 250 фунтов (не считая доставки), а за новый вообще просят 500-700. Но пришла пора проходить MoT (техосмотр), и я всё же нашел запчать за приемлимую цену: 160, причем за новый (конечно, не фирменный).

Приехал в Halfords.
- Мне надо техосмотр и бампер поменять.
- Техосмотр можно. А запчасти просто так мы не меняем - не положено. Только устраняем недостатки, выявленные во время осмотра.
- Хорошо, давайте.

Звонок: "Техосмотр Вы завалили, потому что поврежден бампер". Спасибо, а то я сам не знал?

На следующий день.
- Здравствуйте! Я вчера не прошел техосмотр из-за бампера. Надо его заменить и повторить осмотр.
- Хорошо, будет готово через 15 минут.
- Так быстро? Ну ладно, жду.

Через 15 минут.
- Бампер вроде по-прежнему поломанный. Вы не прошли осмотр.
- Да, я знаю. Я же и прошу его понять. Вы можете это сделать?
- Да, можем, раз Вы из-за него не прошли техосмотр.
- Ну, отлично - я вот как раз привез новый.
- Извините - мы меняем только на свои запчасти.

понедельник, 8 июня 2015 г.

stopProcessing в URL Rewrite

В правилах IIS URL Rewrite есть несколько опасный флаг stopProcessing. По умолчанию он установлен в false, т.е. даже если очередное правило сработало, обработка дальнейших правил продолжается. Т.е. более общие правила, которые расположены в конце файла, могут "поглотить" правильный результат.

Это случится, если, допустим, первое правило должно отлавливать одну конкретную URL /deals/chrismas/ , а второе правило - все остальные типы спецпредложений с URL вида /deals/*/ (где зведочка - что угодно, но не сhristmas).

Коварность флага заключается в том, что он игнорируется, если Вы делаете простое перенаправление (301/302 redirect). Поэтому в Интернете множество примеров кода без этого флага, и многие про него просто не знают. На месте Microsoft я бы по умолчаю установил его в true.

Чтобы не запутаться, я всегда использую stopProcessing="true" для Rewrite. И никогда не использую для Redirect (чтобы не засорять код).


четверг, 4 июня 2015 г.

B&Q на замке

Дедушка пошёл в строительно-хозяйственный магазин B&Q в New Malden. Заметил, что крышка пакетника открыта, провода торчат. Не совсем безопасно.

Из лучших побуждений сфотографировал и показал менеджеру. А менеджер... думаете, поблагодарил и в ужасе побежал устранять недостаток? А вот фигушки! Отругал и сказал, что нефиг тут фотографировать, и дедушке отныне запрещен вход в магазин!

Тот немного обалдел и отправил жалобу в штаб-квартиру B&Q. И те... извинились за идиота-менеджера? Нет, запретили жалобщику вход во всё магазины сети. Он обалдел ещё больше и переспросил, на какой срок? "Пожизненно".

Очень нетипичная история для Англии.




Private GP

Стало очень сложно попасть к нашему участковому врачу. Давным-давно, когда у них только появился онлайн-доступ, было очень классно: выбираешь самое удобное время; если ничего нет, немного ждешь и проверяешь, не отменил ли кто-нибудь свой визит. Но годы идут, и умников, пользующихся интернетом, стало слишком много. Поэтому теперь онлайн почти ничего нет, только недели через две.

А если надо срочно, то приходится звонить в 8 утра. Вот именно в 8 утра, Карл! Вечером предыдущего дня нельзя, только утром. Т.е. получается, что невозможно заранее предупредить на работе, что ты задержишься или не придешь.

К счастью, в Уимблдоне сейчас открылась частная практика. Они работают по выходным и до 9 вечера в рабочие дни. Можно приходить без назначенного визита. А по предварительной договоренности можно даже в 6 утра.

Цены доступные. Визит стоил 35 фунтов. Сейчас, правда, раскрутились немного, и подняли до 45 фунтов. Для сравнения, визит к частному специалисту в среднем 150-250 фунтов. 45 фунтов - это за 10-ти минутную консультацию, но реально с нами говорили по полчаса, и денег дополнительных не брали. Повторная консультация была бесплатной. Анализы тоже делали, насколько я понимаю, практически по себестоимости (как и большинство других практик, они пользуются The Doctors Laboratory; самому туда идти нельзя, нужно направление доктора).

Т.е. они не пытаются сразу сорвать с тебя много денег. Цель другая: чтобы ты и вся твоя семья ходили к ним всю жизнь.

Недостатки:

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

2. Частный участковый не может, насколько я понимаю, направить к бесплатному специалисту.

3. Если он направляет к платному специалисту, то страховку может заупрямиться и потребовать, чтобы ты всё равно брал направление у государственного участкового. Впрочем, у нас сейчас вроде получилось и без этого.

Allied Surgical

Обращались в медицинскую страховку PruHealth. Похоже, сервис улучшается. Три-четыре года назад получать авторизацию приходилось со скандалами, многочисленными походами к участковому, потерянными факсами и емейлами. Теперь это страховка это всё аутсорсит в Alliance Surgical. Хватило 10 минут общения по телефону. Они сами выбрали  специалиста и назначили визит. Причем в субботу - это вообще большая редкость даже для частных врачей. Уточнили, конечно, можем ли мы в это время.

Все хорошо, но на сайте больницы мы нашли другого специалиста, который больше подходит к нашему случаю. Alliance Surgical говорит: "К сожалению, мы с ним не работаем, хоть он и в той же больнице. Спросите PruHealth, оплатят ли". Сам PruHealth тоже говорит, что этот врач у них не зарегистрирован.

Опечалился я, а потом спросил: "А что надо, чтобы зарегистрироваться?" Оказалось, что врач просто должен заполнить короткую анкету на две страницы (номер банковского счета, телефон, емейл и пр.) И вроде всё. Более того, сделать это можно даже задним числом, т.е. после оказания услуги. Никаких договоров или дополнительных серфитикаций вроде нет. Попросил врача заполнить. Надеюсь, получится.

Ratings by outbrain