vitus_wagner: My photo 2005 (Default)
Мы строили, строили и наконец построили
Мультимастер-кластер, адаптивное планирование запросов, нормальный декларативный синтаксис партиционирования.
vitus_wagner: My photo 2005 (Default)
Подумавши некоторое время над концепцией семантической локальности я пришел к в некотором смысле противоположной концепции "общего контекста коммуникации".

То есть меня в общем довольно давно волновал вопрос, почему за 40 лет не появилось языка программирования, который был бы shell лучше чем unix shell. То есть более высокоуровневый, с меньшим порогом вхождения. позволяющий легко формулировать сложные концепции.

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

Подумав, я пришел к выводу что

1. На этом уровне как часть языка нужно рассматривать не только команды и аргументы, но и форматы потоков, которыми эти команды обмениваются.

2. Должна быть некая система умолчаний. Сейчас в шелле контекст выполнения состоит пожалуй, из имени текущей директории (и. соответственно относительных путей). Ну с некоторой натяжкой - еще и списка фоновых задач из него запущенных - %1 меняет свое значение по ходу выполнения.

В более низкоуровневых языках программирования, которые являются аналогом письменной речи, система контекстов куда более развита. Начиная с let в Lisp-е и with в Pascal, и кончая развесистыми системами алиасов при импорте модулей в Python и Go. Где-то в промежутке namespaces в C++ и присваивание glob references в Perl. В общем придумано много способов сказать "сегодня это слово у нас значит то-то". Но это именно способы, характерные для письменной речи, причем даже скорее для научных и юридических текстов, а не для художественных и не для частной переписки.

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

(три дня эту мысль думал, а все равно непричесанная какая-то. Или я поторопился и надо было еще сутки подумать?)
vitus_wagner: My photo 2005 (Default)
http://esr.ibiblio.org/?p=7421

Раймонд умный пост написал по поводу концепций, которые лежат под Unix way. Я эту мысль про семантическую локальность три дня думать буду.
vitus_wagner: My photo 2005 (Default)
Про то как сделать, чтобы начинающие программисты лучше работали:

https://ask.slashdot.org/story/17/03/11/197257/ask-slashdot-how-do-you-make-novice-programmers-more-professional



Один из комментариев из этой дискуссии был даже вынесен в отдельный пост что для /. нехарактерно:

The problem is that our industry, unlike every other single industry except acting and modeling (and note neither are known for "intelligence") worship at the altar of youth. I don't know the number of people I've encountered who tell me that by being older, my experience is worthless since all the stuff I've learned has become obsolete. This, despite the fact that the dominant operating systems used in most systems is based on an operating system that is nearly 50 years old, the "new" features being added to many "modern" languages are really concepts from languages that are between 50 and 60 years old or older, and most of the concepts we bandy about as cutting edge were developed from 20 to 50 years ago. It also doesn't help that the youth whose accomplishments we worship usually get concepts wrong. I don't know the number of times I've seen someone claim code was refactored along some new-fangled "improvement" over an "outdated" design pattern who wrote objects that bare no resemblance to the pattern they claim to be following. And when I indicate that the "massive view controller" problem often represents a misunderstanding as to what constitutes a model and what constitutes a view, I'm told that I have no idea what I'm talking aboutâ"despite having more experience than the critic has been alive, and despite graduating from Caltechâ"meaning I'm probably not a complete idiot.) Our industry is rife with arrogance, and often the arrogance of the young and inexperienced. Our industry seems to value "cowboys" despite doing everything it can (with the management technique "flavor of the month") to stop "cowboys." Our industry is agist, sexist, one where the blind leads the blind, and seminal works attempting to understand the problem of development go ignored.


Поняли, господа программисты, с кем нас сравнивают - даже не с водопроводчиками или дворниками - с актеришками и фотомоделями.

E-Ink

Mar. 6th, 2017 10:42 am
vitus_wagner: My photo 2005 (Default)
Задумался вот, а не обзавестись ли мне по причине кончины смартфона книгочиталкой на электронных чернилах.

В принципе, иметь отдельную книгочиталку - дело полезное, даже при наличии смартфона. Приходишь домой, кидаешь смартфон в крэдл на зарядку и забываешь про него до утра. А читаешь, если надо с читалки. Опять же глаза у меня за рабочий день устают до такой степени, что пялиться опять в светящийся экран не хочется, но не до такой чтобы дома, лежа в кровати. пользоваться TTS.

Правда, беглый обзор того что предлагают на рынке читалок привел к каким-то неутешительынм выводам.
В основном 6" модели предлагают разрешение 800x600. Причем за такие деньги, за какие можно купить 7" планшет с 1280x800 (правда, с богомерзким андроидом, на который непонятно как библиотеку синхронизировать)

Кстати, читалки уже научились работать с fb2.zip? А то какой-то древний lbook, которым уже лет пять пользуется моя мама, требует чтобы ему fb2 распаковывали прежде чем туда заливать.

То есть требования к читалке у меня такие

1. Wi-Fi не нужен. Синхронизировать библиотеку можно и по usb. Хотя, конечно если там будет из коробки ssh и rsync, то можно и wifi.
2. Разрешение экрана побольше, побольше. От 300dpi бы не отказался.
3. Качественная поддержка fb2 и epub.
4. Не более 8"
5. Платить много денег не согласен.

Про Go

Mar. 1st, 2017 05:58 pm
vitus_wagner: My photo 2005 (Default)
Go похож на C, который укусил Python. А свечку им при этом держал Tcl, иначе откуда там открывающая фигурная скобка обязательно на той же строке что и for или if,

Но вообще ряд идей при прочтении мне понравился.
Особенно его relaxed типизация. Которая достаточно строга почти всегда, кроме тех случаев, когда это неудобно.


Хотя, конечно, если этот язык распространится, словосочетание panic attack будет в IT-шных кругах значит совсем другое.

И конечно, блин, стали дизайнить язык, заточенный под обработку событий, и имеющий прямую и красивую объектную модель, а GUI-тулкит к нему забыли придумать.
В результате народ делает биндинги для кривых тулкитов, разработанных для языков у которых объектная модель основана на наследовании, а не на композиции.

Вообще удивительно, насколько хорошие программисты не любят GUI, и пытаются свалить его программирование на каких-то чайников, не умеющих ясно мыслить (в результате чего рождаются всякие Gtk и прочие WX).
vitus_wagner: My photo 2005 (Default)
На ЛОР рекламируют краудфундинг на семидюймовый ноутбук с убунтой.

Судя по картинкам, это примерно половинка от по размерам EeePC, при этом по возможностям - вполне приличная машинка.

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

Очевидно, что в спокойной обстановке читать с 7" экрана гораздо удобнее, чем с 4". Пожалуй уже и djvu и отсканированные pdf, тем более при разрешении 1920x1024 будут вполне читаемы.

Правда, ноутбучный форм-фактор это практически 100% работа в альбомной, а не портретной ориентации.

В неспокойной обстановке, например в метро или в очереди в поликлинике, читать с 7" планшета наверное, куда более удобно чем с 10" планшета, не говоря уж о EeePC. АSUS Transformer у меня как-то в такой ситуации поплатился экраном - я его запихнул в сумку, не присоединив к клавиатуре, которая в закрытом состоянии там экран защищает. Но вообще у меня как-то трансформер проигрывал конкуренцию смартфону на предмет чтения в транспорте. Дело дошло до того что я даже полученный от редактора вычитанный текст "Детей Пространства" пытался вычитывать на телефоне, а не на планшете.

Таскать собой постоянно устройство размером 18x10x2cм и весом полкило - это уже как-то на верхнем пределе. Во внутренний карман пиджака, пожалуй, еще влезет, в нагрудный карман рубашки - явно уже нет. Туда и Nokia N800 не очень лезла.

Автономность 12 часов (все мы знаем что приводимые производителем цифры работы от батарей безбожно завышены), это маловато как-то. Либо его придется при убирании в карман в гибернейт класть (а значит, прощай навигация при пешем хождении или на самокате).
Кстати встроенного GPS-приемника там тоже нет.

Идеально, конечно было бы взять 7" планшет из современных с USB-клавиатурой - там будет и GSM-тракт и GPS, но где же взять такой планшет, чтобы его железо полностью поддерживалость открытым ПО. Потому что чем дальше, тем меньше мне нравится то, как ограничивает возможности пользователя по контролю над устройством, андроид.
vitus_wagner: My photo 2005 (Default)
Традиционная задача - как попасть по ssh на хост, не имеющий достижимого извне IP.
В данном случае в варианте "как мне попасть с работы домой".

У домашней машины есть VPN в которую включен хостинговый сервер.

Поэтому в принципе годится любой вариант ssh-через-прокси.

На эту тему теперь есть большой и толстый cookbook.

Начинаем применять рецепты оттуда по очереди

1. ssh -J www.wagner.pp.ru wagner

Увы, у меня на рабочей машине jessie. В нем openssh 6.7, он -J еще не умеет. С виртуалок со stretch и FreeBSD 11 попробовал, работает. Но dist-upgrade на stretch говорить рано. И уж точно не для этой фичи.

2. ssh -o "ProxyCommand ssh -W %h:22 www.wagner.pp.ru" wagner

Это мой openssh умеет. И, в принципе это у меня сейчас штатный способ

3. ssh -o 'ProxyCommand ssh www.wagner.pp.ru nc %h 22' wagner

Это умели и версии openssh, существовавшие десять лет назад. Сейчас я этого даже пробовать не стал. Зачем, если -W есть?

Далее вот такой интересный вопрос - в .xsessionrc на работе у меня все равно прописано открытие ssh-сессии на мою vds с -D 4080. Чтобы использовать этот порт в качестве web-прокси. Потому что не хочу я ошибку 451 видеть.

А может этой самой socks прокси можно еще воспользоваться для хождения по ssh?
Увы, openssh хорошо умеет быть socks-сервером, но не обучен быть socks-клиентом.

В вышеприведенном cookbook рекомендуют использовать netcat в качестве ProxyCommand.

ssh -o "ProxyCommand nc -X 5 -x localhost:4080 %h %p" wagner

Полез смотреть, а-а-а, netcat в jessie не понимает ни -X ни -x. Посмотрел повнимательнее, все гораздо хитрее - в jessie есть четыре разных нетката. И netcat-openbsd все что надо понимает. А у меня почему-то стоял netcat-traditional.

Остался нерассмотренным вопрос использования опции -w в ssh для организации полноценного VPN средствами самого ssh. Но об этом как-нибудь в следующий раз.
vitus_wagner: My photo 2005 (Default)
Тут Стас Келвич подсказал, что в наше время надо слать нотификации о завершении всяких длительных процессов через мессенджеры.

Мне эта идея понравилась и я поменял нотификацию об окончании бэкапа с десктопного notify-send на sendxmpp.

А то меня все время доставало что эта нотификация испаряется с экрана быстрее, чем я успеваю её заметить. Особенно если я, запустив бэкап, от машины ухожу (что правильно, так как иначе есть шанс что rsnapshot заметит что по ходу бэкапа файлы какие-то менялись. Не в ЖЖ же втыкать на протяжении всего бэкапа).

Джабберное сообщение от юзера backup никуда с экрана не пропадает, пока сам его не закрою.

Недостатком этого решения является то, что в процедуре нотификации задействован не только локальный комптютер, но и джаббер-сервер (А соответственно и канал от одного к другому). Сервер, конечно тоже мой. Но тем не менее.
vitus_wagner: My photo 2005 (Default)
Люди, которые удивляются что я перетащил серверную функциональность из дома на хостинговую площадку, не понимают одной простой вещи:

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

То есть в случае любой проблемы туда надо ехать. А не просто дождаться конца рабочего дня, когда ты туда так и так попадешь. Хотя для почты и downtime в 8 часов может быть слишком большим.

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

С другой стороны, появляется географически разнесенный бэкап. Пока все мои электронные устройства обитали в одной квартире, у меня периодически возникала мысль увозить один из бэкапных внешних дисков в деревню, и каждую неделю менять их местами.
Благо летом я все равно езжу в деревню каждые выходные.
vitus_wagner: My photo 2005 (Default)
Одиннацать лет, с 2006 года я боролся за то чтобы использовать интернет как peer-to-peer сеть - держать какую-то серверную функциональность на компьютере, расположенном в своей квартире.

А тем временем интернет все больше и больше превращался в двудольный граф с четким делением на серверный и клиентский сегмент, где серверам нельзя то, что можно клиентам (например такие сайты, как gutenberg.net или wikipedia очень подозрительно отосятся к коннектам с IP-диапазонов, принадлежащих хостинговым провайдерам).

И вот в эту среду наконец сломался. Уволок последнее что оставалось - imap-сервер, на хостинговую VPS-ку.

С точки зрения безопасности это чистый проигрыш - во-первых, для спецслужб стало возможным получить доступ к моим архивам почты, не получая ордера на обыск моей квартиры. Во-вторых, сообщения всяких intrusion detection систем, работающих на сервере (а их у меня там сейчас аж две - aide и logcheck) ложатся в почтовые ящики на том же сервере, а значит толковый взломщик имеет шансы их подчистить. Можно, конечно, подумать как пофиксить систему бэкапов, чтобы это его не спасло.
vitus_wagner: My photo 2005 (Default)
У кошки коньюктивит, а у Алькора сдохла micro-SD, которая там вместо винта.
По этому поводу бедной кошке промывали глаза хлоргексидином в семь утра (пока я не ушел на работу),
а почта для доменов wagner.pp.ru и spacians.net срочно переехала с Алькора на Денеб.

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

[livejournal.com profile] slobin, проверь, все ли твои почтовые адреса продолжают работать как раньше. По идее, я не должен был ничего сломать, но вдруг...
vitus_wagner: My photo 2005 (Default)
Птичка, которая пишет на заборах Расширение для браузера, которое кликает на рекламные баннеры, создано!

Насколько я понял, там есть еще куда совершенствоваться, но начало положено.
Как выяснилось, оно не только обесценивает основную валюту баннерообменных сетей - клики. но и существенно осложняет сбор рекламщиками статистики о действиях пользователей, так как вычленить среди действий робота-кликальщика действия человека (которых гораздо меньше) нетривиально.
vitus_wagner: My photo 2005 (Default)
Наткнулся на ЛОРе на забавный проект:
http://unde.sourceforge.net/ru/

Чем-то это перекликается с некоторыми моими идеями изложенными под тэгом UNG. Ну то есть Раскина человек прочитал, понял, и местами (как и я) не согласился. Например, я полностью с ним согласен в том, что борьба с режимами должна иметь границы.

У него есть вполне разделяемая мной идея, что интерфейс должен быть самообучающим. В том смысле что активно подсказывать более эффективные способы работы с ним. Заткнуть gap между пользованием GUI и командной строкой - это очень важно. Потому что между командной строкой и скриптингом барьер уже отсутствует.

С идеей "все есть директория" вместо "все есть файл" я игрался году в 93-94, когда еще не знал что на свете существуют не то что Mind Maps, но и файловые системы со множественными hard и sym-линками.

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

Очень интересной показалась идея двумерного расположения объектов в контейнере. В смысле "ты всегда найдешь файл там, куда ты его положил". Помнится в Communiware мы тоже были вынуждены вводить "человеческий" порядок сортировки. Поскольку критерии сортировки, которыми пользователю удобно пользоваться. неформализуемы.А использование двумерного порядка вместо одномерного существенно расширяет возможности удобозапоминаемого хранения.
vitus_wagner: My photo 2005 (Default)
Двадцать восемь хвостов и все, кто в лес, кто по дрова.
У каждого свои особенности поведения.
vitus_wagner: My photo 2005 (Default)
Один нехороший человек использует в тестах алиасы таблиц на японском:
EXPLAIN (COSTS false) SELECT * FROM s1.t1 あいう WHERE あいう.c1 = 1;

Причем, похоже. делает это специально, дабы убедитсья что его код корректно работает с
не-ASCII-символами в алиасах таблиц.

А я потом беру и запускаю эти тесты мало того, что на десятом Солярисе, так еще и с LC_ALL=C.
В результате на сервер pgbuildfarm прилетает лог, который является чем угодно, но только не valid UTF-8.

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

Пришлось пропускать ввод в порядке санитизации через Encode::decode('UTF-8',$data,Encode::FB_PERLQQ).
Теперь хоть видно что там не так. (нет, я не буду вспоминать как оно пыталось на json Storable::thaw делать)..
vitus_wagner: My photo 2005 (Default)
Сегодня я отнаблюдал своими глазами трехзначный Load Average. Что характерно машина еще как-то пыталасть шевелиться.


vitus@bldfrm1$ uptime
 15:59:26 up 3 days,  3:31,  3 users,  load average: 128.91, 108.86, 99.84
vitus_wagner: My photo 2005 (Default)
Превратил жуткую свалку fb2 и epub-файлов, в которой мог разобраться только FBReader, да и то не сразу, в более-менее структуруированное хранилище,
вида перваябуква/автор/название

Была еще идея насоздавать симлинков для книг с более чем одним автором, но решил пока не связываться.

Большую часть работы проделал вот такой скрипт )
Скрипт, конечно наколеночный и кривой. Поддержки epub пока нет, хотя смысл там примерно тот же самый ).
Ну и еще файл сканируется дважды. Но я решил что проще это делать дважды, чем
разгребаться с эскейпингом средствами xslt.

О, кстати придумал как обойтись без искейпинга. Вывод xmlstarlet который пишет автора на первой строчке, а title во второй, перенаправляем в
(read author
read title
# do what we need with author and title
)
. В результате внутри xmlstarlet нужно заэскейпить только ньюлайны.

P.S. А если для фотографий аналогичный скрипт сделать? Чтобы валить их все в кучу, чуть ли не rsync-ом, а скрипт пусть потом разгребает по датам и местам.

IPv6

Jan. 16th, 2017 08:38 pm
vitus_wagner: My photo 2005 (Default)
Выяснил тут совершенно случайно, что Onlime дает IPv6. В смысле, запустил на Алькоре
dhcp -6 eth0.101 а он и получил какой-то адрес.

Теперь если я запущу откуда угодно ssh -D 4080 home.wagner.pp.ru, у меня будет socks-proxy с поддержкой ipv6.

Вопрос в том, а что с этим делать дальше.

Конечно, куда приятнее было бы иметь достижимый извне IPv6 в Медведково, а не на Ленинском, где кроме Алькора и никаких включенных постоянно компьютеров нет. Но в Медведково роутером работает древняя D-Link Dir-300B1 с dd-wrt примерно полуторалетней давности, в котором поддержки IPv6 нет. Ну допустим, поставлю я туда более свежую прошивку, допустим там появится поддержка v6 (хотя что-то я не нашел упоминаний о dhcp6 в dd-wrt-шном FAQ. Про radvd там пишут, но это, насколько я понимаю, не то).

Непонятно:

1. Является ли выдаваемый онлаймом по dhcp6 адрес статическим, т.е. можно ли его без проблем писать в AAAA запись, или нужно городить поддержку ipv6 в Dynamic DNS (я-то нарисую - dyndns.cgi у меня свой собственный)
2. Является ли указание того, что у меня адрес xxxx:xxxx:xxxx::1/64 Scope: Global указанием на то, что у меня есть целых MAXULONG адресов, и я могу спокойно роутить их на внутренние машины сети в соответствии c рецептом, который у hetzner-а в FAQ написан.

Кстати. все эти разборки начались с того, что выяснилось что обещанный хецнером для моей виртуалки IPv6 нифига не работает.
vitus_wagner: My photo 2005 (Default)
Международная конференция PgConf.Russia 2017 | 15–17 марта, Москва, Digital October

А вот такая эмблема будет у нашей следующей конференции

Profile

vitus_wagner: My photo 2005 (Default)
vitus_wagner

March 2017

S M T W T F S
    1 234
5 6 7 89 10 11
12 1314 1516 17 18
19 20 21 22 23 2425
2627 28 293031 

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Mar. 30th, 2017 08:31 pm
Powered by Dreamwidth Studios