Я, конечно, понимаю, что многие в курсе. Но все-таки, насколько круче двух строчек на красном фоне, и тем более белого экрана смерти, выглядит вот такой крутой экран ошибки. Это из коробки в Laravel 5.5.
Последние заметки
Blade Runner 2049
Чтобы не придумывать нового, всегда можно снять продолжение чего-нибудь старого. Под таким девизом, видимо, живет сейчас изрядная часть творцов для теле и киноэкранов, потому что продолжений всего подряд становится больше и больше. Вот и у «Бегущего по лезвию» продолжение появилось, Blade Runner 2049 называется.
Оригинальный фильм уже довольно старый. Хотя, если подумать, он одного со мной года выпуска. Не такой уж и старый, да. Но очень известный, хороший, классика фантастики в целом и киберпанка в частности. В общем, купил билеты, пересмотрел старый фильм в версии final cut, для зарядки правильным настроением посмотрел Electric Dreams и побежал в кино.
Что могу сказать по факту просмотра. Киберпанк в наличии, нуар в наличии, визуально все довольно красиво, звук тоже, и Гослинг вроде ничего выглядит в главной роли. Но вот история, на мой взгляд, довольно банальная и предсказуемая, совсем не переливающаяся гранями размышлений о сознании, творении, свободе и так далее. Есть светлые моменты, например девушка-голограмма, Декард и его собака. И есть наоборот — Робин Райт из «Карточного домика» роль косного человечества не очень вытягивает, а Джаред Лето, подтянутый на роль вроде как злодея — вообще непонятно зачем такой.
Старый фильм — это мрачно-красивая история про любовь с философскими размышлениями по ходу дела. И тонкие намеки что Декард тоже «того» ей только на пользу. В продолжении же все предсказуемо, твистов практически нет, а вся история — это рефлексия Буратино Пиноккио, мечтающего стать настоящим мальчиком, в которой практически нет интересных находок. Короче, снят фильм качественно и в принципе он не плохой, только немножко ни о чем. Так что пока среди продолжений всякого старья лучше всех смотрится по-прежнему Твин Пикс.
Кстати, при просмотре решили протестировать новый кинотеатр, который в этом году открыли в ТЦ «Зеленопарк» на краю Зеленограда. Кинотеатр оказался хорошим: расстояния между рядами позволяют ноги вытянуть полностью, сиденья удобные, экран большой и вогнутый, все ок. А вот сам торговый центр огорчил. Я, конечно, извиняюсь, но на мой взгляд нужно быть немножко мутантом, чтобы в большом по площади торговом центре с парковками не под землей, а по всему периметру, закрывать вечером все выходы кроме одного без предупреждений и объявлений где бы то ни было. И ладно просто закрывать, многие так делают. Но нужно быть полным мутантом, чтобы при этом вывеску «Синема-парк» повесить на здании со стороны, строго противоположной местоположению самого кинотеатра.
Даже охрана ворчала на это обстоятельство вместе с уходящими зрителями. Единственными, кто обрадовался внезапной прогулке вокруг здания ТЦ, оказались новые часы. Всю дорогу они сообщали мне «Очень хорошо» и «Так держать», и намеряли около 15 минут процесса, обозначенного ими как «бодрый шаг». Хотя его можно было бы обозначить и как «отборный мат». Зеленопарк, так нельзя.
Electric Dreams
Одна из премьер осени 2017 — сериал «Электрические сны». Точнее, полное название Philip K. Dick's Electric Dreams, то есть сны не кого-то там, а Филипа К. Дика. Того же Филипа К. Дика, по которому когда-то сделали хороший фильм Blade Runner.
Возможно, сериал выпустили специально так, чтобы выход Blade Runner 2049 (который как раз сейчас) подогреть. Или наоборот — на его популярности самим подогреться. А может просто так совпало.
Каждая серия сделана по отдельному рассказу Дика, то есть серии-новеллы друг с другом ничем не связаны, кроме, разве что, общего настроя. Для сериального ветерана это не то чтобы впервые, но все равно несколько непривычно. Обычно-то оно как: в первом сезоне герои встретились, в третьем пообжимались, к восьмому может один другого ножом пырнёт. А тут в 45 минутах и завязка с интригой, и развязка с опциональной поножовщиной. А в следующей серии всё заново.
Пока вышло 4 серии, все посмотрел. Что понравилось — это добротная, переходящая от серии к серии атмосфера такого грустно-романтического нуара с налетом киберпанка. Смотреть за действиями героев и слушать их разговоры приятно даже в отрыве от сюжета текущего рассказа. Кстати, для съемок подтащили сериально-киношных звезд, в частности замечены Бушеми, Крэнстон, Пакуин, а также другие известные и приятные глазу лица. И это пошло, конечно, в плюс.
А вот не очень насыщенное содержание самих серий в плане сюжета немного расстраивает. То есть смотреть вроде бы интересно, но развивается при этом всё как-то вяло, что ли. В общем, при богатом художественном ряде сам сюжет выглядит как-то скудно. Может, тому виной оригинальные рассказы — не знаю, не читал. Можно конечно предположить, что в 45 минут отдельного сюжета много и не напихаешь. Но вон у Black Mirror серии тоже про разное, а посыл, на мой взгляд, значительно ярче и бодрее. Наверное это еще потому что «Зеркало» более злободневно.
В целом — неплохо сделано, не шедевр, но посмотреть стоит. И на новый Blade Runner я тоже уже сбегал.
Про Samsung Gear S3
На днях под надуманным предлогом разжился Samsung Gear S3 (в версии Frontier). Обычные часы покупать в 2017 году уже как-то не хочется, решил, что если уж брать — то «умные». Чтоб с телефоном дружили, пульс меряли, криптовалюту по ночам майнили, всякое такое. А тут как раз смарт-часы стали делать похожими на обычные — и корпусом, и циферблатом со стрелками. В общем, как-то убедил себя купить.
Кроме Gear S3 хотел еще посмотреть Huawei Watch 2, но их нигде поблизости не было, да и ладно. Походил в часах пару недель, докладываю: для повседневного употребления все отлично. Заряд держат неплохо, даже в режиме AOD — когда экран не гаснет, а всегда показывает «облегченную» версию циферблата — работают почти 2 дня. Уведомления показывают, на звонки отвечать с руки дают, слышно хорошо.
Ремешок — силиконовый, удобный. Но повесить в принципе можно любой на 22 мм. Интересно, что в магазине Самсунга разнообразных ремешков, кожаных и стальных, было богато, но абсолютно все — размера M. Который на мне не застегивается. То ли у корейцев руки такие маленькие, то ли все большие разобрали. Хорошо еще дефолтный в коробке был L, подошел.
С телефоном часы сдружились за 10 минут прямо в магазине — на телефоне выскочило приложение Samsung Gear, и само установило все что надо. После чего предложило заглянуть в магазин приложений за всякими циферблатами. Циферблатов в магазине — невероятное количество. И со стрелками, и с циферками, и с виджетами, и реплики «под настоящие модели», и даже под старую «Электронику» дизайны есть. Любой мальчик сможет удовлетворить присущую горожанам жажду образов, просто регулярно меняя циферблат на часах. Каждый раз выглядят — будто новые.
Приложения разные для часов тоже есть, в основном навигационно-спортивного толка. Есть даже игры какие-то, не пробовал ставить. С приложениями, кстати, вышло неожиданно. Телефон у меня Galaxy S6, на нем стоит обычный Android. И через это я думал, что на часах тоже наверное какой-нибудь ведроид-wear или wear 2. Но реальность мои ожидания немножко растоптала.
Обнаружил, что на часы приложения ставить можно только из гэлакси-стора самсунговского, а из обычного плей-маркета — нельзя. Даже те, на которых иконка часов есть (типа, оптимизированные под). При попытке выяснить, почему такая несправедливость, оказалось, что на самсунговских часах никакой не андроид стоит. А стоит там совсем даже Tizen (читать — тайзен). Такая специальная операционка на базе линукса, которую Самсунг активно продвигает и ставит на разнообразные девайсы.
С одной стороны, поговаривают, что сама операционка по количеству проданных часов даже популярнее андроида (хотя уступает эпловской). С другой стороны, на ум сразу приходит Symbian, который тоже был хороший. Но у андроида и софта стало побольше, и лейблов, выпускающих телефоны с оным. И где теперь этот симбиан.
Впрочем, пока судьба симбиана самсунгочасы вроде бы не ждет. Приложений хороших много, а то что мне конкретного одного не хватило — так у них SDK есть в конце-концов. Говорят, можно даже на HTML5+JS делать, то есть смогу даже я. Когда будет свободная минутка, попробую посмотреть. Только вот не знаю, в каком году она у меня будет.
А часы хорошие, да, нравятся.
The Summer of 1353
Оказывается, пока я работал и не следил, Flight of the Conchords новых смешных песен напели.
Отлично!
А вот еще, даже лучше местами:
CSRF-защита в своем ajax-запросе в Drupal 7
Допустим у нас есть форма и мы хотим в её интерфейс добавить какой-нибудь ajax-запрос к серверу. И Form API с его #ajax нам не поможет, потому что запрос происходит в каком-нибудь событии из сторонней библиотеки. В общем, надо сделать сервис и обратиться к нему через $.ajax(), или $.getJSON().
При этом, конечно, хотелось бы защитить сервис от CSRF. Ну и вообще, чтобы посторонние люди или боты не долбились по адресу сервиса без разрешения. Если бы запрос происходил через Form API, Друпал сделал бы всё за нас. Но и сами мы тоже можем, и на странице с формой для этого уже всё, что нужно — есть.
В Drupal 7 каждая форма защищена парой скрытых значений в $form['form_id'] и $form['form_token'], соответственно, мы можем их подобрать и использовать при отправке на сервер. Для простоты, сделаем эти значения частью пути к сервису.
var form = $('#my-custom-form');
var form_id = form.find('input[name="form_id"]').val();
var form_token = form.find('input[name="form_token"]').val();
var url = '/my-custom-service/' + form_id + '/' + form_token;
$.getJSON(url, function (data) {
alert('Все готово!');
});
В hook_menu() пункт, отвечающий за генерацию ответа, оформим так:
$items['my-custom-service/%/%'] = array(
'page callback' => '_my_custom_service',
'access callback' => '_my_custom_service_access',
'access arguments' => array(1, 2),
'type' => MENU_CALLBACK,
);
То есть мы передаем в access callback эти два значения как аргументы. Тогда в функции, управляющей доступом, мы можем легко проверить валидность токена:
function _my_custom_service_access($form_id, $form_token) {
return drupal_valid_token($form_token, $form_id);
}
И всё.
A little secret
Harry, I'm going to let you in on a little secret. Every day, once a day, give yourself a present. Don't plan it. Don't wait for it. Just let it happen. It could be a new shirt at the men's store, a catnap in your office chair, or two cups of good, hot black coffee.
© Twin Peaks
A big mistake
— The point is, I made a mistake. A big mistake. But the good thing is that every time you make a mistake, you learn something. And what I learned, and this is the one thing I want you to remember, whenever you're about to do something that you know is bad, always, always, always look for the camera.
Episodes все еще смешные.
Elysia cron и права доступа
В Drupal 7 при ручном запуске из админки крон всегда переключается на анонима (user 0 то есть). Это нужно, чтобы, например, в поисковый индекс не попадали материалы, которые видны админам. В общем, без привилегий крон запускается.
А вот модуль Elysia cron если видит, что крон запускается вручную, начинает проверять у текущего юзера (то есть, анонима) право Execute elysia cron jobs и если такого нет, ничего не делает. На мой взгляд это совершенно контринтуитивно — проверять у заведомого анонима наличие таких пермишнов. И когда заранее не знаешь, может немало времени при отладке съесть, пока поймешь, почему у тебя ручной запуск крона ничего не делает.
Обновления до Laravel 5.5
Поскольку Laravel 5.5 (который, кстати, LTS) уже неделю как вышел, стал обновляться. Проекту, который недавно обновлял с 5.1 до 5.4, повезло: достаточно было поменять версии в composer.json — и всё обновилось и заработало без проблем и все тесты прошли. Подправить пришлось лишь пару методов в тестах — там просто вместо строк кое-где стали числа возвращаться.
А поскольку авторы OctoberCMS обещали, что апгрейд до 5.5 выйдет примерно одновременно с самим 5.5 — стал обновлять домовую страницу. Тут вышло чуть-чуть сложнее. Встроенный механизм обновления обновлять ничего кроме плагинов не стал, потребовалось взять из гитхаба новый composer.json и тогда уже обновляться через composer update и последующий php artisan october:up, который запустит все новые миграции.
После обновления также нужно заменить значение параметра cipher в config/app.php на 'AES-256-CBC'. Просто перегенерация ключа php artisan key:generate тут не сработает, потому что по умолчанию в October не используется файл .env, а используются файлы в config.
Проблемка после обновления возникла одна — перестали сортироваться категории в соответствующем компоненте плагина Blog. Придется немножко покопаться. Учитывая, что обновление было аж с Laravel 5.0, одна маленькая проблема — отличный результат. Видно, что авторы основательно над апгрейдом поработали.
Ну и теперь у меня на сервере есть PHP 7, поскольку для Laravel с версии 5.5 он обязателен. Тоже полезно.