Архив рубрики: Рабочее

На ильменском сайте — как в википедии

На сайте Ильменского фестиваля к длинным страницам, в тексте которых попадаются заголовки, автоматически добавляется содержание — можно быстро перейти куда-нибудь вниз. Подобная штуковина есть в CMS MediaWiki (на ней сделана Википедия) и в багтрекере Redmine. А теперь — и на ильменском сайте.

Содержание страницы сайта Ильменского фестиваля

Увидеть такое содержание можно на странице с программой фестиваля — http://ilmeny.org/doc/2017/program

Подсветка синтаксиса LESS- и SCSS-файлов в geany

Пробую на работе писать код в geany — он в отличие от Комодо, Атома и Вижл Студио Кода сделан сам по себе, а не из браузера и поэтому гораздо шустрее. Имеющаяся у меня версия 1.24.1, вышедшая почти три года назад (да, я знаю, что есть и более свежие, но у меня дебиан) не подсвечивает синтаксис в LESS- и SCSS-файлах, а при ручном указании типа (Document → Set Filetype → Markup Languages → Cascading Stylesheet) подсветка хоть и включается, но ругается на особенности синтаксиса, выходящие за рамки обычного CSS.

Решение нашлось на http://superuser.com/questions/344441/less-syntax-highlighting-in-geany:

1. В файле ~/.config/geany/filetype_extensions.conf меняем

CSS=*.css

на

CSS=*.css;*.less;*.scss;

Если такого файла нет, его можно взять из /usr/share/geany (в дебиане — так).

2. В файл ~/.config/geany/filedefs/filetypes.css (который тоже можно взять из /usr/share/geany) добавляем

[lexer_properties]
lexer.css.less.language=1

3. Если geany уже запущен — перечитываем конфигурацию: Tools → Reload Configuration

Подсветка синтаксиса LESS-файлов в geany

Результат — подсветка включается автоматически при открытии LESS- и SCSS-файлов и всякие специфические штуки отображаются нормально: geany теперь не ругается на вложенность правил, на селекторы с амперсандом, на комментарии в стиле C++ (две косые черты), на LESS-переменные с @собакой и на SCSS-переменные с $долларом.

Местное время

Пара наблюдений относящихся к встроенной перловой функции localtime:

Код на перле

  1. Заданное в секундах с начала эпохи время вполне может быть отрицательным — то есть можно работать с датами до 1 января 1970 года.
  2. Разница между местным временем, возвращаемым функцией localtime и временем по Гринвичу (функция gmtime) непостоянна. Само по себе это не удивительно — существует же кое-где до сих пор летнее время. Удивительнее другое: разница эта, если залезть поглубже, иногда не является целым числом часов — можно проверить, например, как менялась она начиная с 1900 года:
#!/usr/bin/perl

use POSIX qw( strftime );

my $SEC_PER_DAY = 24*60*60;
my $old_time = '';

for my $day ( -25567 .. 0 ) {
    my @moment = localtime( $day * $SEC_PER_DAY );
    my $time   = strftime '%X', @moment; # HH:MM:SS
    if ( $old_time ne $time ) {
        printf
            "%s %s\n",
            strftime( '%x', @moment ),
            $time;
        $old_time = $time;
    }
}

Результат неожиданный:

  • 01.01.1900 04:02:33
  • 03.07.1916 03:45:05
  • 16.07.1919 04:00:00
  • 21.06.1930 05:00:00

и не всегда понятный: если 04:02:33 ещё как-то можно объяснить — это время соответствует долготе 60,6375° в. д. — пара километров от нынешнего центра Екатеринбурга, то 03:45:05 откуда? Ближайший крупный город с долготой 56,2708° в. д. — Пермь. Что-то я сильно сомневаюсь, что в дореволюціонномъ Челябинске действовало пермское время.

Ап!

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

Вроде, работает. Тем не менее, если кто вдруг заметит, что что-то там сломалось — сообщите, пожалуйста.

Выпускаем джинна

Похоже, с нынешней тенденцией писать редакторы на яваскрипте и запихивать в них ещё и тормозящий браузер, придётся переходить всё-таки на лёгкий софт, потому что не только монстр Komodo тормозит, но даже якобы не такие уж и тяжёлые Atom и Visual Studio Code не отличаются достойной скоростью.

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

geany

Попробую-ка Geany — там и клавиши знакомые, и всякие нужные добавки,: терминал, отладчик (а будет ли работать с перлом?), интерфейс к системам контроля версий — это то, что мне чаще всего надо.

Детали забываются

Появилась задача преобразования из одного XML в другой. Метод понятен — это обсуждалось ужеXSLT.

XSLT

Только вот в голове — пусто, почти всё забыл. «Как так? — удивляешься, — Недавно же вроде делал…» Лезешь в багтрекер за деталями — выясняешь ненароком, что «недавно» — это восемь с половиной лет.

Четверть гигабайта

Чего только нет в редакторе Komodo Edit! По сравнению с могучей Komodo IDE нет отладчика, нет профилировщика, нет модульного тестирования, нет интерфейса к системам контроля версий… А весит всё равно дофига!

Komodo Edit

Установочный архив весит четверть гигабайта, потому что внутрь засунули файрфокс, питон и яваскрипт.

Statt zu schlafen

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

Могу:

  • Программировать на Перле — как древние CGI-приложения, так и современные, с использованием фреймворков Mojolicious, Dancer, Catalyst.
  • Программировать на PHP: в основном допиливать существующие приложения, а не писать с нуля что-то большое.
  • Настраивать CMS Drupal и WordPress, а также дорабатывать их темы оформления.
  • Настраивать и дорабатывать Open Journal Systems, включая реализацию многоязычности имён — делал это в OJS 2.4.2, 2.4.7.1, 2.4.8.1, думаю, и в Open Conference Systems смогу реализовать.
  • Кроссбраузерно верстать веб-страницы.
  • Немножко программировать на Руби (в том числе, с использованием Ruby on Rails) — наверное, на юниорском уровне.
  • Немножко программировать на ЯваСкрипте — как голый JavaScript, так и с jQuery.
  • Постоянно внушать коллегам необходимость использования багтрекера и системы контроля версий.
  • (хоть и не считаю это основными профессиональными навыками) фотографировать, петь, аккомпанировать на шестиструнной гитаре, водить легковой автомобиль, быть Дедом Морозом, набирать ноты в MuseScore и LilyPond — медленно, но красиво.

1000 рублей

Хочу от 15 USD / 1 kRUB в час.


Statt zu schlafen (нем.) — вместо того, чтобы спать

Re: А воз и ныне там

Раз уж в третьем OJS так и не добавили многоязычность, попробую портировать свой хак на последнюю из версий второй ветки — 2.4.8.1. В прошлый раз, когда портировал из 2.4.2 на 2.4.7.1, обошёлся изменением не более, чем семидесяти трёх файлов, хотя если поискать все, где попадаются слова firstname, middlename, lastname, fullname и citation, получится почти в пять раз больше. И это ещё без учёта файлов с переводами */locale/*.xml

diff

Поглядим через неделю-другую, что получится.

Рельсы мимо шахты

Пробую запустить тестовую копию свежего Редмайна:

$ bundle exec rails server
=> Booting WEBrick
=> Rails 4.2.6 application starting in development on http://localhost:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
[2016-09-28 13:45:09] INFO  WEBrick 1.3.1
[2016-09-28 13:45:09] INFO  ruby 2.3.0 (2015-12-25) [x86_64-linux]
[2016-09-28 13:45:09] INFO  WEBrick::HTTPServer#start: pid=8196 port=3000

Ну да, запускается, но входящих соединений не видит. Если запускать командой bin/rails server — аналогично.

Оказалось, что сервер, слушая по умолчанию соединения с локалхостом, игнорирует те, где указано любое другое имя. Если его указать — всё получается.

bundle exec rails server -b your.host.ru

Запущен отладочный сервер Redmine