shoorick: (Рыжий)
Чего только нет в редакторе Komodo Edit! По сравнению с могучей Komodo IDE нет отладчика, нет профилировщика, нет модульного тестирования, нет интерфейса к системам контроля версий... А весит всё равно дофига!

Komodo Edit

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

http://shoorick.ru/2016/10/31/quarter-of-gigabyte/
shoorick: (Рыжий)
Учёт домашних доходов с расходами — сплошное расстройство. Теперь вот вместо того, чтоб спать, пытаюсь вспомнить, что же умею делать за деньги, потому что на одну зарплату прокормить семью вообще нереально.

Могу:

  • Программировать на Перле — как древние 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 (нем.) — вместо того, чтобы спать

http://shoorick.ru/2016/10/18/statt-zu-schlafen/
shoorick: (Рыжий)
Что-то стало модно всё подряд писать на яваскрипте. Куда ни глянь — всюду JavaScript, даже за пределами веба. Генератор карт TileMill — на яваскрипте. Текстовые редаторы и IDE теперь тоже на нём же пишут. Потому-то современные редакторы, наверное и тормозят — у них ведь помимо редактора ещё целый браузер внутри! У Komodo Edit и Komodo IDE — Mozilla Firefox, у Атома и Visual Studio Code — Chromium.

ls ~/bin/komodo/lib/mozilla

http://shoorick.ru/2016/09/02/js-everywhere/
shoorick: (Рыжий)
Попробовал в яваскриптовый файл добавить shebang, чтоб проще было запускать:
#!/usr/bin/node
console.log('Hallo, Welt!');

Прекрасно работает. Node.js на shebang не ругается.

http://shoorick.ru/2015/09/11/shebang/
shoorick: (Рыжий)
Интересный способ округления увидел сейчас в http://3site.eu/examples/snow/snow.js — для этого там используется сдвиг:
style.left = ((random() * offsetWidth) >> 0) + "px";

Проверил — так и есть:
5 / 2      == 2.5
5 / 2 >> 0 == 2

Но в чём смысл? Сэкономить буквы, отказавшись от Math.floor?
shoorick: (Рыжий)
Наконец-то удалось запустить карту велошатаний — http://shoorick.ru/lj/map/bike.html
Масштаб выбирается автоматически, в зависимости от натянутого на карту трека.

Карта

На карту, отображаемую библиотекой Leaflet, можно накладывать разные слои. Среди таких слоёв может быть и слой с треками в формате GPX или KML — его можно наложить с помощью соответствующего плагина, входящего в leaflet-plugins.

В процессе подготовки к UWDC-2012 я подготовил трек, попытался натянуть его на карту — не заработало. Чтение логов и гугление показало, что Google Chrome не даёт яваскрипту читать локальные файлы, если веб-страница получена с локального ресурса (то есть, её URL начинается на file://), а не по HTTP. Выходов несколько: либо заливать карту на сервер и отлаживать там (что, в общем, не представляет сложности, когда есть sshfs), либо поднимать простенький сервер прямо на рабочем месте. Подобных серверов — вагон и маленькая тележка. Думаю, одних только перловых серверов на моём ноутбуке явно больше одного. Увидел на stackoverflow способ запуска простого HTTP-сервера на питоне:
python -m SimpleHTTPServer 8000
Проверил — работает.
shoorick: (Рыжий)
В ЖЖ можно автоматически постить набор ссылок на твиты, накопившиеся за сутки. Выглядит, скажем прямо, не очень. С другой стороны, если есть микроблог, почему б его не прорекламировать в обычном блоге? К тому же, содержимое этих двух блогов не совпадает.

Подсмотрел у Михаила Пищулина [livejournal.com profile] pishchulin идею — добавить блок с твитлентой на страницу своего ЖЖ — это позволит и на твиттер сослаться так, чтобы посетители журнала это увидели, и в то же время не будет засорять френдам их ленты.

Делается так:

1. Заходим в твиттер, а там — настройки → Виджеты → Создать новый. Дальше всё и так понятно: указываем нужные параметры, нажимаем кнопку «Создать виджет», после чего в поле, над которым написано «Скопируйте и вставьте данный код в HTML-код вашего сайта», появится несколько строк кода — HTML и немного яваскрипта.

2. На странице настроек оформления http://www.livejournal.com/customize/options.bml?group=sidebars можно в поле «Content of custom block (HTML is available)» вставить произвольный текст с HTML-разметкой. Вот в это поле и надо вставить код, полученный на предыдущем шаге. После чего останется нажать кнопку «Сохранить изменения» и посмотреть результат в своём ЖЖ.
shoorick: (Рыжий)
  1. Свежая новость: оказалось, что трёхпалая чайка — не моёвка, а мóевка.
  2. Mojowka теперь умеет показывать страницы посетителю на нужном ему языке. Язык может быть указан явно самим посетителем либо (если не указан) может выбираться автоматически, исходя из переданного заголовка Accept-Language. Пока доступны два языка — английский и русский.

    Сделано с использованием Mojolicious::Plugin::Textdomain, о котором я писал в декабре. К сожалению, Анатолий Лапицкий ([livejournal.com profile] nuclon) до сих пор не выложил свой модуль на CPAN.
  3. Увидев в моёвке экземпляр jQuery плюс мою яваскриптовую писанину, GitHub почему-то решил, что проект в целом яваскриптовый, а не перловый. Как переучить его обратно — пока не знаю.
shoorick: (Default)
JavaScript в файрфоксе (3.6.16 под убунтой) работает как-то странно: функция Math.floor, когда вызвана из скрипта, не желает округлять свой аргумент — координаты элемента и возвращает его в неизменном виде, с длинным хвостом из знаков после запятой. Хотя при вызове из отладочной консоли работает вполне исправно.

В других браузерах (MSIE, Opera, Chrome) координаты целочисленны, но отображаемый и скрываемый скриптом на jQuery элемент скачет по всей странице, вместо того, чтобы сидеть на одном месте. Похоже, каким-то образом его абсолютное позиционирование становится относительным.

Нашёл методом тыка странный костыль: при скрытии элемента загоняю его в угол:
$('#strange').offset({top:0, left:0});
После чего, при следующем отображении, элемент встаёт в нужную позицию.
shoorick: (Default)
Балуясь с mojolicious, слепил маленькую вики-системку. Суммарный объём кода, шаблонов, данных и файла README — меньше 600 строк — легче 14 килобайт.

Умеет немногое: показывает страницы, позволяет зарегистрированному пользователю создавать их, редактировать и удалять. Синтаксис вики-разметки — Textile (меняется на любой другой заменой пары строчек в коде). При редактировании доступен аяксовый предпросмотр.

Лежит (и обновляется) на http://github.com/shoorick/mojowka — с лицензией пока не определился (GPL? BSD? Artistic? А не пофиг?), но взять пощупать можно хоть сейчас.

Надо попробовать собрать какой-нибудь сайтец на этой вике.

P. S. Моёвка (трёхпалая чайка, Rissa tridactyla) — вид птиц из семейства чайковых (Laridae).
shoorick: (Default)
Bootylicious ругается на конфигурационный файл, если встретит в нём не-ASCII символы (то есть, с кодами больше 127), хочет, чтобы они были представлены в виде \uXXXX. Плохо :-(

Да и настройки он ищёт в bootylicious.json, а не в bootylicious.conf, как написано в документации.
shoorick: (Default)
Подглядел у Алексея Капранова ([livejournal.com profile] quappa), выступавшего на перлбурге, интересный метод подготовки презентаций, который хорош для блиц-докладов. Точнее, я видел сделанные по этому методу презентации и раньше, но только сейчас покопался и понял, что к чему. Называется — takahashi. Такахаси ориентирован в первую очередь на вставку текста (доступен ряд команд разметки: выделение текста, моноширинный текст, можно вставлять растровые картинки).

Суть: вся презентация хранится в четырёх файлах: один из них — это исходный код презентации (очень мал), остальное — XUL-файл с интерфейсом (туда же можно засунуть и текст презентации либо заглушку, сообщающую о необходимости выбора исходного файла), обрабатывающий действия пользователя скрипт на JavaScript и стилевой CSS-файл. Суммарный вес — около 70 кБ. Для работы требует Gecko-based браузер, например, Mozilla Firefox.

Естественно, что весь механизм, в силу текстовой природы исходных файлов, легко дотачивается напильником в нужную сторону, если возникнет потребность. У меня возникла — обнаруженный пример не желал листать страницы по пробелу. Внешний вид презентации можно менять редактированием CSS-файла.

Исходный текст презентаций достаточно прост:
TITLE::Презентации
Упрощение процесса
подготовки презентаций
FOOTER::shoorick.ru
----
HEADER::Нафига?
0. Презентации [[EM:не нужны:EM]]
----
0. Презентации не нужны
1. Иногда всё-таки [[EM:нужны:EM]]
Посмотреть в действии (мозиллой!) можно на http://shoorick.ru/lj/slide/takahashi.xul?data=presentation.txt

Листать — кликом по любому месту экрана либо клавишами: пробелом, стрелками, PgUp, PgDn, Home, End, Enter, Backspace. Любители елозить мышью могут найти меню в верхней части слайда. Можно в процессе показа слайдов менять их содержимое прямо в браузере, а также рисовать поверх текста что угодно. Удобно!
shoorick: (Default)
Panoramio предоставляет возможность отображать фотографии оттуда на своём сайте — можно получить список фотографий по указанным координатам в формате JSON. Как разбирать JSON — другой вопрос. Я попробовал яваскриптом — в общем-то, работает. Правда, я весь яваскрипт забыл, поэтому смог, подглядывая в справочник, лишь разобрать предварительно полученное. А как получить список яваскриптом — не знаю. Поэтому написал мелкий скриптик — два эха и один wget — который делает нужный список:
echo -n 'var list = eval(' > susu.js
wget http://www.panoramio.com/map/get_panoramas.php?order=popularity\&...\&size=square -O - >> susu.js
echo ');' >> susu.js
А уже из этого списка и получаю картинки:
<script language="javascript" src="susu.js"></script>
...
<script language="javascript">
    var count = 20;
    var from = Math.round((list.count-count-1)*Math.random());
    for ( var i = from; i < from + count; i++ ) {
        with ( list.photos[i] ) {
            document.write('<a href="'+photo_url+'" title="Photo by '
            +owner_name+'. '+photo_title
            +'"><img src="'+photo_file_url+'" alt="'+photo_title+'"></a>');
        }
    }
</script>
Список получать можно и по крону. Раз в неделю — вполне достаточно, нет смысла брать чаще. Только вот в списке почему-то оказываются лишние фотографии, немного выходящие за пределы указанного квадрата: например, вместе с университетским городком в список попадают и фотографии с середины улицы Энтузиастов.
shoorick: (Default)
Нашёл распространяемый по GPL календарь, прикручиваемый к полю ввода в HTML-формах.
Работает. Есть и локализация, работающая после небольшой обработки напильником:
diff lang/calendar-ru.js.OLD lang/calendar-ru.js
37,44c37,48
< ("вск",
< "пон",
< "втр",
< "срд",
< "чет",
< "пят",
< "суб",
< "вск");

---
> ("вс",
> "пн",
> "вт",
> "ср",
> "чт",
> "пт",
> "сб",
> "вс");
>
> // First day of the week. "0" means display Sunday first, "1" means display
> // Monday first, etc.
> Calendar._FD = 1;
shoorick: (Default)
Почитав man и Transcript of the Auto Completion Movie Demo, доработав прилагаемый пример напильником, прикрутил autocomplete к полю ввода на одной из страниц каталистового сайта. Теперь можно попробовать найти ему практическое применение...
shoorick: (Default)
(пишу сюда, чтоб потом самому легче было искать)
Как скопировать пример в строку поиска:
<html><head>
<title>Examples &rarr; Text Field</title>
<style type="text/css">
.ex a:link, .ex a:visited	{
	text-decoration:	none;
	border-bottom:	1px dashed #666;
	color:	#666;
}
</style>
<script language="javascript">
function cp(obj)	{
	document.getElementById('what').value = obj.innerHTML;
} // function cp
</script>
</head>
<body>
<form><p>Search for <input type="text" name="what" id="what"></p>
<p class="ex">Examples:
<a href="#" onclick="cp(this); return false">apple</a>,
<a href="#" onclick="cp(this); return false">banana</a>,
<a href="#" onclick="cp(this); return false">cucumber</a></p>
</form>
</body></html>
А теперь пойдём на Яндекс, поглядим, как сделано у них.
shoorick: (Default)
Сабж )
shoorick: (Default)
<html><head><title>Палиндром</title>
<script language="javascript">
function cp(from, to)
// Копирует перевёрнутое from.value в to.value
{
 var f = from.value;
 var t = '';
 var len = f.length;

 for (i=len;i>=0;i--)
  t += f.charAt(i);
 to.value = t;
} // cp()
</script>
<style type="text/css">
input[type=text]
{
 width:100%;
}
</style>
</head>
<body>
<form name="pal">
<input type="text" name="l" value="Берг" onkeyup="cp(l,r)"><br>
<input type="text" name="r" value="греб" onkeyup="cp(r,l)">
</form>
</body></html>
Технология:
пишем в любом поле ввода что угодно. В соседнем отображается перевёртыш.
Дёшево и сердито.
shoorick: (Default)
Интересную фичу обнаружил в гибриде sixs и RTE.
Текст теперь вставляется сразу с форматированием.
Красота!
shoorick: (Default)
Странно...
IE7 в ИЁ5 то работает — то нет.
А если и работает, иногда выдаёт вообще какую-то невнятную фигню: например, на http://suvif.org.ru/project/invest/ у формы пропадает фон и сама она осыпается куда-то нафиг...
Чё делать? Варианты ответов:
  1. сходить в соседнюю комнату, попросить у админов бубен
  2. убедить представителя заказчика поменять браузер на ИЁ6, или даже на Мозиллу/Файрфокс/Оперу — в них отображается нормально
  3. дождаться весны, когда доля ИЁ5 упадёт процентов до пяти с нынешних двадцати
Имхо, только нулевой вариант имеет хоть какое-то право на существование: остальные какие-то неправильные...

upd: fixed

Profile

shoorick: (Default)
shoorick

December 2016

S M T W T F S
    1 23
45678910
11121314151617
18 19 2021222324
25262728293031

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 13th, 2025 11:36 pm
Powered by Dreamwidth Studios