?

Log in

No account? Create an account
Прибито гвоздём
  1. Всё, написанное здесь ниже — личное мнение автора либо цитата, что указывается явно. Редакция автор в переписку вступает (например, посредством комментов), однако рукописи не рецензирует и не всегда возвращает. Автор предпочитает писать и читать на русском языке, хотя может (или когда-то мог) на английском, немецком, перле, пхп, яваскрипте, C/C++, ассемблере процессора Intel 8086, бейсике, паскале, а также на ЯП ПМК «Электроника МК-52». В изучении иврита, итальянского, китайского, питона, руби, татарского, форта, французского и эсперанто автор пока не преуспел.
  2. Анонс:
    • 22—25 августа 2018 — хоровые гастроли в Казань.
  3. В записях используются метки — используйте их для поиска нужной темы.
  4. Основной адрес этого блога — shoorick.ru (с октября 2013). В ЖЖ — копия. Помимо ЖЖ транслируется в:
  5. Этот блог не является средством массовой информации.
  6. Используемые обозначения:
    • цитаты и фрагменты программного кода
    • программный код
    • клавиатурный ввод
    • аббревиатуры и другие сокращения

Надо ругаться в боевом режиме
Рыжий
shoorick
В состав перлового микрофреймворка Mojolicious::Lite входит класс Mojo::Log, который не просто пишет сообщения в лог, а ещё и учитывает важность сообщений — в отладочном режиме пишет много, а боевом — мало. Обнаружилось, что сообщения об ошибках имеют тот же класс debug, что и остальные сообщения
[Tue Nov 13 12:25:51 2018] [debug] Format html
[Tue Nov 13 12:25:51 2018] [debug] 200 OK (0.076118s, 13.137/s)
[Tue Nov 13 12:25:53 2018] [debug] GET "/some/url"
[Tue Nov 13 12:25:53 2018] [debug] Template "not_found.development.html.ep" not found
[Tue Nov 13 12:25:53 2018] [debug] Rendering template "not_found.html.ep"
[Tue Nov 13 12:25:53 2018] [debug] Rendering template "layouts/error.html.ep"
[Tue Nov 13 12:25:53 2018] [debug] Rendering cached template "layouts/admin.html.ep"
[Tue Nov 13 12:25:53 2018] [debug] Rendering cached template "search_form_navbar.html.ep"
[Tue Nov 13 12:25:53 2018] [debug] Format html
[Tue Nov 13 12:25:53 2018] [debug] 404 Not Found (0.004841s, 206.569/s)

из-за чего при запуске в продакшне под реальной нагрузкой в лог не попадает почти ничего — например, там нет сообщения об ошибках 404 Not Found.

Возможно, где-нибудь во внутренностях Mojo можно исправить такую ситуацию, но мы пойдём другим путём — применим хук after_dispatch:

hook after_dispatch => sub {
    my $self = shift;
    my $req  = $self->req;
    my $res  = $self->res;

    if ( $res->code >= 400 ) {
        $self->app->log->error(join ' ',
            '"' . $req->method . ' ' . $req->url . '"',
            $res->code,
            $req->headers->referrer
        ); 
    }
};

after_dispatch

Результат — в логе появились сообщения об ошибках:
Sending children hup signal
[Tue Nov 13 12:30:46 2018] [error] "GET /none" 404 - "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36"
[Tue Nov 13 12:44:50 2018] [error] "GET /SW/Rplayer.html" 404 - "Mozilla/5.0 (compatible; Linux x86_64; Mail.RU_Bot/2.0; +http://go.mail.ru/help/robots)"


http://shoorick.ru/2018/11/13/error-messages-production/

Вместо себя
Рыжий
shoorick
Есть ненулевая вероятность того, что приближающийся 2019 год будет для моей семьи не таким, как сейчас и я в силу разных причин не смогу быть там, где сначала лет пять играл и слегка учился, потом ещё пять серьёзно учился и слегка работал, а потом ещё почти двадцать серьёзно работал — в крупнейшем на ближайшие несколько областей университете. Я, конечно, последние несколько лет стараюсь достаточно подробно документировать рабочие процессы и коллеги, надеюсь, разберутся, но лучше бы найти ещё кого-то вместо себя, чтобы хозяйство не развалилось без присмотра.

Итак, нам нужен программист. Живьём на полный рабочий день (понедельник—пятница с 8:30 до 17). Требования и пожелания:
  • Высшее образование, желательно профильное (ЭВМ, прикладная математика, информатика, какие-нибудь информационные системы в чём-нибудь); практика показывает, что у нас можно работать, даже имея квалификацию «филолог» или «учёный-агроном», но оформление такого сотрудника — тот ещё квест, так что лучше, чтоб образование было соответствующим.

  • Знакомство с веб-технологиями: начиная с HTML, CSS (желательно с препроцессорами LESS и SASS) и до установки/настройки/обслуживания/допиливания CMS (желательно иметь опыт хотя бы с одной из тройки лидеров: WordPress, Joomla, Drupal).

  • Навыки веб-программирования — хорошее владение хотя бы одним из языков, применяемых на стороне сервера (бэкенд) — в первую очередь PHP и Perl. Ruby, Python — тоже неплохо, это лучше, чем ничего. Знание JavaScript (фронтенд). Адекватное применение фреймворков и библиотек. Способность соблюдать рекомендации по стилю кодирования (см. например, перловые perlstyle и Perl Best Practice, пхпшные PSR), а также писать документацию к своему коду.

  • Опыт работы в юниксоподобных ОС — хотя бы на минимальном уровне: взять терминал, прицепиться к серверу и ничего там не сломать. Если есть опыт конфигурирования Apache, nginx — будет плюсом. Способность не пугаться многомегабайтных логов, а спокойно извлекать из них нужную информацию штатными системными утилитами — тоже пригодится.

  • Опыт в программировании общего назначения, не обязательно связанного с вебом. Знание bash и хотя бы одного из популярных скриптовых языков (Perl, Python). Желание автоматизировать то, что не надо делать вручную.

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

  • Использование систем контроля версий (subversion, git) и багтрекеров (например, Redmine). Если есть код, опубликованный на github/bitbucket или ответы на stackoverflow — хорошо.

  • Способность грамотно излагать мысли в письменном виде по-русски и понимать написанное другими. То же самое, хотя бы на минимальном уровне — по-английски (кстати, сотрудники университета могут посещать бесплатные курсы английского и в перспективе дойти до сдачи IELTS или TOEFL).

Больше перловой документации!
Рыжий
shoorick
Документация по языку Perl и его модулям теперь доступна и на perldoc.pl, только оно без прокси не работает, ибо заблокировано роскомпозором. Точнее, заблокирован IP-адрес (IPv4, конечно), на котором сидит этот сайт. И lilypond.org без прокси не откроется, и toggl.com, и oEmbed.com...

http://shoorick.ru/2018/11/06/more-perldoc/

Инструменты разные — методы похожие
Рыжий
shoorick
Попробовал решить одну из рабочих задач, применив нелюбимый язык PHP в комплекте с современными инструментами — получилось близко к тому, что делал сравнительно недавно на перле, с некоторыми отличиями:

  • Вместо  перла — PHP,

  • Модули тоже лежат рядом со своим кодом, но управляются не картоном, а через composer,

  • Композер и тесты может запустить (composer test), и отладочный сервер (composer start). Но можно для однообразия для обоих языков сделать Makefile и выполнять нужные действия командой make. Например, у меня запуск тестов — всегда make test, чтобы не путаться.

  • Вместо Mojolicious::Lite — микрофреймворк Slim. Для быстрого старта — Slim-Skeleton.

  • В шаблонах вместо Embedded Perl — Twig.

  • Если сайт работает через PHP-FPM, то нет нужды пинать демона каждый раз, как обновится код — он сам обрабатывает подобную ситуацию. Развёртывание свежей версии простого веб-приложения сводится к трём действиям: обновление рабочей копии (svn up либо git pull), разрешение зависимостей (composer install) и на всякий случай запуск тестов.


Слон и код

Практика показала, что разобраться с подобным комбайном можно достаточно быстро. Код при этом получается чуть более многословным, чем в Mojo, но всё равно компактным и понятным.

http://shoorick.ru/2018/10/24/slim-php/

Вынимаем фильтр из угла
Рыжий
shoorick
Ситуация: стиральная машина Hotpoint Ariston AVTL 83 в процессе работы иногда пахнет палёным и в конце концов подыхает — приступаем к разборке.

Для начала можно снять блок с кнопками — он крепится двумя саморезами, расположенными со стороны задней стенки, и снимается достаточно легко — надо приподнять заднюю часть блока и он легко выйдет из зацепления с корпусом машины. Смысл операции — убедиться, что там, вроде, всё в порядке. Можно сразу же поставить на место и прикрутить.

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

Стиральная машина Hotpoint Ariston AVTL 83

Чтобы снять боковую стенку, надо открутить удерживающие её винты — бо́льшая их часть находится на задней стенке машины возле краёв — как на системном блоке компьютера, но есть ещё два: на передней стороне возле водяного фильтра. Примерное положение винтов отмечено стре́лками. После откручивания винтов боковая стенка сдвигается по направлению к задней и снимается.
Слайды! Слайды!Свернуть )
Вопрос: как проверить исправность фильтра без подключения его к бытовой электросети? Судя по схеме, фильтр состоит из резистора и конденсаторов, которые, если вспомнить школьный курс физики, проводят переменный ток, а омметр, предположу, для измерений использует постоянный — то есть им разве что сопротивление резистора удастся измерить.

Хотя можно поступить проще: сразу позвонить мастеру, объяснить ситуацию — он может и детали добыть, и на место их воткнуть.

Продолжение следует.

http://shoorick.ru/2018/10/17/extract-radio-filter/
Метки: , ,

Re: Кросспроектное связывание коммитов с задачами в Редмайне
Рыжий
shoorick
Привязать редмайновую задачу с заданным номером ко всем коммитам, в комментариях к которым есть этот номер, можно запросом

SET @issue_id = 1234;
    
INSERT IGNORE INTO changesets_issues
SELECT 
    id, @issue_id
FROM
    changesets
WHERE
    comments REGEXP CONCAT('.*#', @issue_id, '[^0-9].*');

Кросспроектное связывание коммитов с задачами в Редмайне
Рыжий
shoorick
Багтрекер Redmine не позволяет связать задачу с фиксацией изменений в системе контроля версий^W^W^W^W^W^W коммитом, относящимся к части хранилища, не связанной с проектом, куда входит задача — ни автоматически, указывая номер задачи в комментарии к коммиту, ни вручную, на странице коммита. Однако при наличии связи в базе данных Редмайн всё же отобразит ссылки на страницах и задач, и коммитов.

Связи хранятся в таблице changesets_issue
changeset_id issue_id
24645 2224

Сопоставить номер связи с номером ревизии можно через таблицу changesets
id repository_id revision committer ...
24645 37 8801 as ...

Таблицы в MySQL Workbench

Для создания связи достаточно внести запись в таблицу changesets_issue, подставив в поле changeset_id правильное значение changesets.id — ссылки появятся при ближайшем посещении страниц.

Добавка/12.10:
Привязать редмайновую задачу с заданным номером ко всем коммитам, в комментариях к которым есть этот номер, можно запросом

SET @issue_id = 1234;
    
INSERT IGNORE INTO changesets_issues
SELECT 
    id, @issue_id
FROM
    changesets
WHERE
    comments REGEXP CONCAT('.*#', @issue_id, '[^0-9].*');


http://shoorick.ru/2018/10/11/redmine-link-issue-changeset/
Метки: , , ,

Не стой под арендо́й
Рыжий
shoorick
Дендрофобы, вырубившие полтора года назад под свой стеклянный сарай деревья возле памятника Курчатову, заканчивают стройку — забор убран, на сарай повешена табличка с адресом [проспект Ленина, 89а], таблички «Аренда» ещё нет, рядом расставлены знаки «Остановка запрещена» и пасутся эвакуаторы.

Проезд Дорожные знаки Табличка с адресом Эвакуация Эвакуация

http://shoorick.ru/2018/10/06/lenina-89/

Склоняем точнее
Рыжий
shoorick
Мы стали более лучше одеваться^W^W^W правильнее склонять имена с фамилиями. Вчера вышла свежая версия предназначенного для этого перлового модуля Lingua::RU::Inflect (он же есть и на гитхабе — чуть свеже́е, чем на CPAN).

Фрагмент документации модуля Lingua::RU::Inflect

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

Итак, в новой версии:

  • Закрыты все имевшиеся по состоянию на вчерашний день issues, в том числе

  • Исправлена проблема с экспортом всего возможного оператором use Lingua::RU::Inflect ':all' — компилятор теперь не ругается на попытку экспортировать функции, убранные в другой модуль.

  • Имена с беглыми гласными (Лев, Павел) и некоторые фамилии на -ец (Песец, Писец и Отец) стали склоняться правильно — беглая гласная убегает, как ей и положено. Там, где убегать не положено (Швец, Жнец, Надудеигрец и полный крах, крушение всех надежд — шесть букв, вторая И, но не фиаско) — не убегает.

  • Женские фамилии, оканчивающиеся на -ов, -ёв, -ин, -ий, -ый — похожие на мужские, но всё-таки женские — перестали склоняться.

  • Мужские фамилии, оканчивающиеся на -их и -ых, могут всё-таки склоняться: например, Бултых, Жмых, Отдых, Дитрих, Рерих, Ульрих, Фрейндлих и Эрлих склоняются, а Синих, Серых, Карих, Чёрных — нет.

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


В итоге количество ошибок на тестовом наборе данных сократилось в 2–3 раза, до одной ошибки на 200–300 человек — есть неочевидные случаи, потому и оценка приблизительна. Двойные имена и фамилии пока слоняются неправильно — исправлю как-нибудь потом.

http://shoorick.ru/2018/10/05/inflect-006/

Суевериям назло
Рыжий
shoorick
В 2012 году тринадцатый троллейбусный маршрут закрыли — якобы по просьбам водятлов, которым неудобно было парковаться на узенькой улице Сони Кривой. С тех пор движение троллейбусов по ней было редким — улица использовалась для оборота подвижного состава, возвращающегося с обеда. Вчера тринадцатый маршрут восстановили — он как и раньше идёт в объезд: с перекрёстка Братьев Кашириных × Молодогвардейцев в гору по Молодогвардейцев, затем по трём проспектам — Комсомольскому, Свердловскому, Ленина до парка, а обратно до Свердловского — по Сони Кривой.

Тринадцатый троллейбус
Ещё пара кадровСвернуть )

Почти что Перл с Апачем
Рыжий
shoorick
Новости географии: в одном люксембургском углу находится никому не известная деревня Шенген, ближайшая к ней железнодорожная платформа, буквально на другом берегу реки — Perl (по-русски всё-таки Перль), это же имя носит и муниципалитет (в других переводах — коммуна), и крупнейший его населённый пункт. А рядом с ними — Apach, но по-русски это не Апач, а, если верить википедии, Апаш, хотя, думаю, немцы могут прочесть и как Апах. При этом все три эти деревни — в разных странах.

Карта

http://shoorick.ru/2018/09/28/perl-apach/

Не летайте над проспектом
Рыжий
shoorick
Кто едет по проспекту Ленина — будьте внимательны и осторожны: после укладки асфальта ремонт не закончен: сейчас долбят свежеуложенный асфальт вокруг колодцев, а места работ либо огораживают грязно-белыми пластиковыми блоками, либо совсем никак не отмечают — вот, например, на перекрёстке с улицей Володарского нет вообще ничего — чуть не влетел в яму полчаса назад, но всё-таки успел снизить скорость и объехать.

Телефон Управления дорожных работ в Челябинске — +7-351-727-46-26.

http://shoorick.ru/2018/09/28/lenin-avenue-be-careful/

[reposted post]И снова ахтунг от челябинских властей
Kisoklassniki
cmapuk_kpynckuu
(перепостил shoorick)
( Вы собираетесь просмотреть страницы, которые могут быть предназначены только для взрослых. )

Скоро будет новый код?
Рыжий
shoorick
Летом видел автомобиль с номером [X *** XX 174] — предположил, что вот-вот появятся номера с новым кодом региона — 774. Но их всё ещё нет: видимо, номера раздают неравномерно. А может, какие-нибудь старые неиспользуемые дают — теперь, вроде, так можно. А может, и вовсе номера 82-го региона в дело пустили. Видел машины знакомых, недавно поставленные на учёт в Челябинске: у той, что три недели назад была зарегистрирована, на номере буквы ХХР, у той, что две — НХС. Такими темпами через месяц-другой могут появиться номера с региональным кодом 774.

Номерной знак

http://shoorick.ru/2018/09/24/regional-code/

Ильменское озеро, середина сентября
Рыжий
shoorick
Ильменское озеро
ещё фотографииСвернуть )
http://shoorick.ru/2018/09/22/ilmenskoye-lake-september/

Дорогой язык
Рыжий
shoorick
Вышел отчёт по собранным Мойкругом зарплатам на середину 2018 года — https://vc.ru/flood/43849-zarplaty-it-specialistov-na-seredinu-2018-goda

В отчёте есть график, показывающий зависимость программистских доходов от используемых языков:

График

Перла тут нет вообще, а из того, на чём доводилось писать, самый выгодный — Руби. Видимо, придётся вспоминать, что там, и прокачиваться с юниора хотя бы до мидл-разработчика.

http://shoorick.ru/2018/09/07/gainful-language/

Начните с себя
Рыжий
shoorick
Вот смотрю я на объявление, висящее на двери бывшей первой железнодорожной школы ЮУЖД, той самой что была когда-то средней общеобразовательной школой № 121 имени 50-летия Великого Октября, одной из лучших в городе, а теперь стала сереньким МОУ СОШ — ничего хорошего.

Объявление

Вот, например, как можно требовать аккуратности у учеников, когда школа сама такие объявления пишет? Неграмотные, неаккуратные и коряво оформленные. На сайте школы, кстати, этого объявления вообще нет — там лишь казённые письма о различных ненужных мероприятиях.

P. S. До начала учебного года — всего неделя.

http://shoorick.ru/2018/08/27/yourself/

Стихи из «Моабитской тетради» сегодня звучат в Казани
Рыжий
shoorick
Сегодня, 25 августа, день памяти Мусы Джалиля в Национальном музее республики Татарстан (Казань, улица Кремлёвская, 2) в 13 часов в исполнении хора Русского культурного центра города Челябинска (художественный руководитель и дирижёр — Заслуженный работник культуры РСФСР Владимир Александрович Шереметьев) прозвучит литературно-музыкальная композиция «Моабитская тетрадь» по стихам Джалиля в переводе на русский язык. Вечером, в 19 часов эта же программа прозвучит в культурном центре «Московский» (ДК Урицкого, улица Академика Королёва, 47).





http://shoorick.ru/2018/08/25/moabit/

Выделение ресурсов на преобразование картинок
Рыжий
shoorick
ImageMagick иногда падает, ругаясь на исчерпание ресурсов:
convert-im6.q16: DistributedPixelCache '127.0.0.1' @ error/distribute-cache.c/ConnectPixelCacheServer/244.
convert-im6.q16: cache resources exhausted `/tmp/magick-7601a0NxF7K2WOIO4' @ error/cache.c/OpenPixelCache/3945.

несмотря на то, что на компьютере хватает и оперативной памяти, и места на диске. Решение нашлось в одном из комментариев к описанию этой проблемы: надо изменить объём доступной имиджмеджику памяти — он указывается в файле /etc/ImageMagick-6/policy.xml

Франгмент файла policy.xml из настроек ImageMagick

Я увеличил указанные там величины вдвое — не помогло, увеличил ещё вдвое — хватило.

http://shoorick.ru/2018/08/09/imagemagick-resources/

Во время затмения с противостоянием марсианская дорожка становится ярче лунной
Рыжий
shoorick
Лунное затмение Лунное затмение Лунное затмение Лунное затмение над озером Тургояк Лунное затмение над озером Тургояк

http://shoorick.ru/2018/07/31/lunar-eclipse/

Не спеша
Рыжий
shoorick
Три дня назад кончился 42-й Ильменский фестиваль. Свои фотки потихоньку отсматриваются, чужие — лайкаются в соцсетях, статьи из СМИ тырятся на сайт цитируются в форме обзоров печати (так пишут в ст. 1274 ГК), палатки сушатся. Домашняя сеть в полном объёме развёрнута всего лишь час назад. Неспешно...

P. S. Вид на Ильменский хребет, город Миасс, автозавод «Урал» и освещённое первыми рассветными лучами болото. 15.06.2018, 04:55, гора Известна́я.

Рассвет в Миассе

http://shoorick.ru/2018/06/20/three-days/

Красава
Рыжий
shoorick
Красава

KRASAVA. Сурово, но с розовыми перилами и ступеньками. Челябинск, Северо-Запад.

http://shoorick.ru/2018/05/26/krasava/

Снизу
Рыжий
shoorick
Как я уже писал, доступ к лампам передних габаритных огней в Peugeot Partner Origin (Citroën Berlingo First) затруднён — у меня на замену одной лампочки как-то ушло полтора часа, да ещё и руки поцарапал.

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

Блок-фара, вид сзади снизу

Способ снятия:

  • снять решётку перед радиатором — она удерживается четырьмя винтами под шестиконечную звёздочку (их тут много) Torx T-20;

  • снять бампер (в моём случае достаточно просто дёрнуть его и отогнуть конец);

  • отключить провода: для этого надо вытянуть вытянуть до упора красный фиксатор — сантиметра на два;

  • отвинтить три винта (Torx T-30), которые держат фару: сверху (он сразу виден), в центре (под уже снятой решёткой радиатора) и сбоку (под бампером);

  • подцепить плоской отвёрткой верхнее крепление фары — в нём есть шип, удерживающий фару даже без винтов;

  • снять фару;

  • прикрутить решётку радиатора на место, если собираетесь оставить машину без присмотра — без решётки можно легко открыть капот голыми руками даже при запертой машине.



http://shoorick.ru/2018/05/24/from-bottom/

Фиксация лампы в блок-фаре
Рыжий
shoorick
Попал в ситуацию, не описанную в руководстве по эксплуатации и ремонту — отвалилась пружина, которая фиксирует лампу ближнего/дальнего света. Головной свет в Peugeot Partner Origin сделан на широко распространённых галогенных лампах H4, которые фиксируется хитро выгнутой жёсткой стальной проволокой — пружиной.

Причина оказалась в ослаблении удерживающего пружину винта — видимо, не вынес суровой езды по местным дорогам. Этим же винтом удерживается гранёный колпачок, задерживающий свет, который идёт вперёд сразу от лампы, хотя ценность такого колпачка сомнительна — в лампах H4 верхняя часть колбы обычно окрашена, что также препятствует выходу лишнего света. Окрашенный серебристой краской гранёный колпачок выполняет, скорее, декоративную функцию.

Фиксирующая пружина

Способ ремонта:

  • (необязательно) Снять блок-фару;

  • Ослабить либо слегка вытянуть на себя винт с шайбой. Можно не тянуть винт, а пролезть в круглое отверстие и сдвинуть колпачок к себе;

  • Уложить пружину центральной частью в паз под шайбу, длинный конец пружины должен быть ближе к крючку, за который ему надо цепляться;

  • Затянуть винт шестигранным ключом на 5/64 дюйма (2 мм);

  • Если фара была снята — вернуть на место.



http://shoorick.ru/2018/05/23/fasten-headlight/

Re: Неожиданные маршруты челябинского электротранспорта
Рыжий
shoorick
Прошлое исследование показало, что в Челябинске фактически вдвое больше троллейбусных маршрутов, чем кажется плюс сплошной беспорядок в нумерации. А что же с трамваями? А с ними — аналогично.



Посчитаем. Четыре тройки, пятёрка, семь шестёрок, семёрка...Свернуть )
Итого — больше сорока маршрутов, причём в Металлургическом районе творится совсем уж полное безобразие: там и одному номеру могут соответствовать разные маршруты, и по одному и тому же маршруту могут хоть трамваи с разными номерами.



Что делать с этим — вообще не понятно. Если не оставлять всё как есть, и не менять маршруты принципиально, остаётся лишь смена нумерации. И тут, как нетрудно догадаться, есть два варианта: либо каждому маршруту давать номер, состоящий только из цифр, либо нормальные номера давать только рейсам между самыми дальними конечными (например, номер 3 относился бы только к маршруту Завод имени Колющенко — ЦХП), а к рейсам покороче добавлять буквы. Трамвайная сеть в Челябинске хоть и не самая большая (даже в Магнитогорске больше), но достаточно развитая — её можно представить таким графом:



«Самые дальние конечные» — это те вершины графа, к которым приходит только одно ребро и таких вершин всего девять, что даёт ещё один вариант нумерации, точнее, разновидность второго из предложенных ранее вариантов: пусть номер маршрута складывается из номеров его самых дальних конечных, а если он до них не доезжает — добавим букву. Если конечные будет пронумерованы таким образом: 0 — Чичерина, 1 — Медгородок, 2 — Колющенко, 3 — ЧГРЭС, то, например, нынешний семнадцатый маршрут «Чичерина — Медгородок» получит номер 1, шестнадцатый «Колющенко — Чичерина» — 2, а семёрка «Колющенко — ЧГРЭС» — 23.

Преимущество подобного подхода в том, что номера девяти конечных проще запомнить, чем несколько десятков маршрутов, но вот недостатков у него — множество:

  • нумерация меняется очень сильно,

  • нумерация не сплошная, а с разрывами,

  • некоторые популярные маршруты могут получить неудобные длинные номера: например, 26к или 26а вместо тройки.


Надо чел. урбанисту подкинуть идею — раз уж удалось поменять схемы в трамваях, может, и нумерацию можно выправить? :-)

http://shoorick.ru/2018/05/13/weird-routes/

Насекомые проснулись
Рыжий
shoorick


Челябинская область, граница Сосновского и Чебаркульского районов, сад «Оптимист».

http://shoorick.ru/2018/05/12/insects/

Неожиданные маршруты челябинского электротранспорта
Рыжий
shoorick
В детстве я не понимал, почему же нет беспересадочных маршрутов между разными точками города — есть же и провода, и рельсы! Присмотрелся повнимательнее к тому, что пишут на марсрутах.ру — нашёл кучу неожиданных маршрутов.



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

  • 1. Вокзал — ПКиО

  • 2. ЧТЗ — ПКиО

  • 4. ЧКПЗ — Копейское шоссе — улица Гагарина — Солнечный берег

  • 5. АМЗ — Вокзал

  • 6. ЧТЗ — Первоозёрный

  • 7. ЧМК — АМЗ

  • 5, 7, 12. АМЗ — Троллейбусное депо № 2 (часть обычного седьмого маршрута)

  • 7, 14. ЧМК — Троллейбусное депо № 2 (часть обычного седьмого маршрута)

  • 8. ПКиО — улица Гагарина — ЧКПЗ

  • 8, 19. ПКиО — Копейское шоссе — ЧКПЗ (в восьмидесятые так ходил 18-й троллейбус)

  • 8. ЧКПЗ — Копейское шоссе — улица Гагарина — ЧКПЗ (а так ходил 20-й)

  • 8. ПКиО — улица Сони Кривой —Дворец спорта «Юность» — Троллейбусное депо № 2

  • 10. Улица Молдавская — Солнечный берег

  • 10, 26. Улица Молдавская — Копейское шоссе — ЧКПЗ

  • 10. Улица Молдавская — улица Гагарина — ЧКПЗ

  • 10. Солнечный берег — улица Новороссийская — ЧКПЗ (маршрут 4 в 2002 году)

  • 11. ЧТЗ — АМЗ

  • 12. АМЗ — улица Молдавская

  • 14. ЧМК — улица Братьев Кашириных — ПКиО

  • 14. ПКиО — улица Братьев Кашириных — улица Молдавская (почти как 13-й маршрут до 1997 года, только от ПКиО идёт по проспекту Ленина, а не по улице Сони Кривой)

  • 14, 17. Улица Молдавская — улица Братьев Кашириных (внутри Северо-Запада)

  • 14, 15. ЧМК — ДК «Строитель» (внутри ЧМЗ)

  • 14, 15. ЧМК — Братьев Кашириных (четырнадцатый так ходил в 1994–2004)

  • 14. ПКиО — проспект Ленина — Дворец спорта «Юность» — Троллейбусное депо № 2

  • 14. Троллейбусное депо № 2 — Алое поле — улица Братьев Кашириных — ЧМК

  • 14. Улица Братьев Кашириных — ПКиО (часть нынешнего 14-го, в 1997–2012 так ходил 13-й)

  • 15. ЧМК — улица Молдавская

  • 16. АМЗ — ЖБИ

  • 17. Вокзал — улица Молдавская

  • 17. Улица Молдавская — Алое поле (он так ходил в 1995–2001, а до этого — почти так же, только оборачивался не по Труда → Свердловскому → Ленина → Энгельса, а против часовой стрелки: по Коммуны → Энгельса → Сони Кривой, да и шёл по Комсомольскому и Свердловскому проспектам, а не по улице Братьев Кашириных)

  • 17. Троллейбусное депо № 2 — улица Братьев Кашириных — Вокзал

  • 17, 26. Троллейбусное депо № 2 — Алое поле — улица Братьев Кашириных — улица Молдавская

  • 19. ПКиО — Первоозёрный — ТЭЦ-3

  • 19. ПКиО — Первоозёрный (обычный 19-й, как он ходил до этого мая)

  • 19. ПКиО — Солнечный берег (как 10-й в 1997–2013) — а нет, рейсов-то ноль

  • 19. Первоозёрный — ТЭЦ-3 — и тут ноль рейсов

  • 19, 26. ЧКПЗ — Копейское шоссе — Первоозёрный (14 утренних рейсов в рабочие дни и пять — в выходные, но только в одну сторону, потому что с театра ЧТЗ на КБС на троллейбусе не повернёшь)

  • 26. Улица Молдавская — улица Чичерина — Первоозёрный

  • 27. Улица Молдавская — улица Чичерина — ПКиО

  • 27. Улица Братьев Кашириных — улица Молодогвардейцев — улица Чичерина — ПКиО


Итого — почти сорок троллейбусных маршрутов с диким бардаком в нумерации.

С трамваями такая же фигня, особенно с теми, что ходят по Металлургическому району. Но это — тема отдельного поста.

http://shoorick.ru/2018/05/11/wired-routes/

Не скайп
Рыжий
shoorick
Скайп на моём компьютере теперь выглядит так:

Скайп не работает

и, понятно, не работает. А телеграммы в соседней вкладке вполне успешно ходят. Значит, теперь и скайпом придётся пользоваться через прокси.

http://shoorick.ru/2018/04/27/no-skype/

Удивился? Отметь!
Рыжий
shoorick
Интегрированная среда разработки Geany умеет искать некоторые слова в тексте текущего документа либо проекта и выводить их в отдельное окошко — это удобно, когда по тексту рассыпаны комментарии со словами TODO или FIXME и хочется быстро их найти.

Настройки плагинов Geany

Geany позволяет вносить новые слова в число разыскиваемых: Edit → Plugin Preferences → Addons. Мне стандартных слов не хватает, пришлось ещё добавлять. Теперь можно вставить в текст удивлённое нерусское восклицание, а потом быстро его найти.

http://shoorick.ru/2018/04/09/wtf-geany/

Понедельник начинается в субботу
Рыжий
shoorick
Скриншот багтрекераГляжу в багтрекер на время появления комментариев к задачам и коммитов: 15:30, 20:08, 22:30, 01:42, 01:49, 06:18. Что-то в пятницу работа затянулась.

http://shoorick.ru/2018/04/07/hard-working/

Тестирование перловых mojolicious-приложений в Geany
Рыжий
shoorick
Программировать, используя какую-нибудь могучую интегрированную среду разработки (IDE) — хорошо и зачастую удобно: там «из коробки» могут предоставляться различные удобные штуковины — компиляция, отладка, тестирование, работа с системами контроля версий. Однако некоторые системы при всём своём могуществе оказываются не совсем подходящими — например, могут много весить и сильно тормозить. Приходится выбирать что-нибудь полегче, например, Geany.

В Geany есть (в том числе и средствами дополнительных модулей) всякое:

  • подсветка синтаксиса,

  • организация файлов в проекты,

  • поиск текста как в текущем файле, так и в произвольном их наборе с обходом подкаталогов,

  • поиск парных скобок и тэгов HTML/XML, а также переход по ним,

  • составление оглавления используемых функций,

  • компиляция либо проверка синтаксиса с подсветкой ошибок и быстрым переходом к ним.


С отладчиком в Geany пока не удалось разобраться, а вот процесс тестирования кода можно сделать более удобным.

Итак, у нас есть:

  • IDE Geany,

  • Веб-приложение, написанное на языке Perl с использованием фреймворка Mojolicious и системы управления модулями carton,

  • Желание запускать тесты почаще и попроще, без лишних переключений из редактора в терминал.


Geany позволяет для каждого проекта задать список действий: как общих для всего проекта, так и специфичных для конкретного типа файлов — найти настроки можно в меню Project → Properties → вкладка Build либо Build → Set Build Commands.

Настройки команд в Geany

По умолчанию для перловых скриптов есть только одно действие — компиляция, а по факту — проверка синтаксиса. Можно исправить эту команду, научив её работать с картоном.

Пойдём дальше — научим Geany прогонять тесты из текущего файла. В Mojolicious тесты представляют собой перловые файлы, имеющие расширение .t и лежащие в каталоге t/. Для того, чтоб, видя в редакторе открытый файл с тестами, прогнать тесты, в настройках придётся добавить путь к корневой папаке приложения. Чтоб не писать путь целиком, можно воспользоваться шаблонами. В документации пишут:
The first occurrence of each of the following character sequences in each of the command and working directory fields is substituted by the items specified below before the command is run.

  • %d - substituted by the absolute path to the directory of the current file.

  • %e - substituted by the name of the current file without the extension or path.

  • %f - substituted by the name of the current file without the path.

  • %p - if a project is open, substituted by the base path from the project.

  • %l - substituted by the line number at the current cursor position.



то есть, некоторые имена файлов и пути к папкам можно указывать специальными переменными.

Вторая команда в списке тех, что зависят от типа файла, получает в меню кирпичную иконку и (по умолчанию) клавишу F9 для быстрого запуска. Клик по кнопке с кирпичом, расположенной на панели инструментов под меню также вызовет выполнение этой второй команды.

Пробуем выполнить тест — в окно Compiler выводятся результат выполнения. Если есть ошибки, они будут выделены и в этом окне, и в исходном коде теста.

Результат тестирования в Geany

http://shoorick.ru/2018/04/04/test-mojo-geany/

U — UI, UX, Usability
Рыжий
shoorick
Диалог закрытия проекта в Geany

Закрыть проект — Alt+C, не закрывать — тоже Alt+C.

http://shoorick.ru/2018/04/04/u-ui-ux-usability/

Комментарий к «Редактор для Perl»от ext_742814 в ru_perl
Рыжий
shoorick
Прошло несколько лет — я поменял мнение о Geany :-)

— Подсказки по функциям для некоторых языков есть, для перла можно запилить самому. Я начал пробовать, но ещё не доделал.
— Проекты есть.
— Есть мелкомасштабная полоса справа.
— Есть не самый плохой поиск/замена. В том числе с регулярными выражениями. В том числе по куче файлов.
— Есть компиляция либо проверка синтаксиса с быстрым переходов к месту ошибки.
— Можно удобно выполнять make и другие команды. Для каждого проекта можно определить свой список того, что выполнять.
— Можно видеть список отсортированных символов: для перла это определения функций, для HTML и Маркдауна — заголовки, для CSS — селекторы.
— В отличие от Komodo IDE, Komodo Edit, Atom, Visual Studio Code, Brackets и других модных редакторов, сделанных из браузеров, оно не тормозит.

Geany

Посмотреть обсуждение, содержащее этот комментарий