воскресенье, 30 сентября 2012 г.

Neurotech - Decipher Vol.2

Прямо с пылу-с жару, через несколько часов после релиза, за 2.50€ я купил на бандкампе последний альбомец словенской группы Neurotech под названием Decipher Vol.2. Почему два с полтиной евра, а не, скажем одно или пять, или даже ноль - не знаю. Я питаю уважение к творчеству этой группы (вернее, питал), но больше, чем сто рублей, было мне жалко :)

После потрясающего киберметаллического альбома Antagonist солист и идейный вдохновитель Нейротека по прозвищу Wulf подружился со словенской певицей Таней Равльен (Tanja Ravljen), и они начали вдвоём клепать киберпопсу. Ничего не имею против этого, но хочется больше драйва, больше смачности, больше металла! Decipher что первая его часть была слабенькая электронная попсятина, что вот эта вторая. Вот-вот, кажется, дожна выскочить на сцену подтанцовка в бикини, и появиться второй десяток клубных ремиксов.

За следующий альбом Нейротека, ежели он будет иметь место быть, заплачу $0, а то и вовсе слушать не буду.

Сон

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

Мне никогда не снится море. На море я был всего четыре раза, и, хотя каждый раз восхищался, впечатления от моря не настолько врезались в мою память, чтоб сниться. Дважды я был на Белом море, один раз на Балтийском и один раз на Чёрном. Полёты на самолётах тоже не снятся, хотя три из четырёх перелётов производили гораздо более сильное впечатление, нежели какое-то там море (один раз я спал всю дорогу).

суббота, 29 сентября 2012 г.

Фонтан


Тверь, танцующий фонтан на площади эээ... Калинина? Я всегда думал, как эти фонтаны устроены так, что там и вода фигарит снизу, и свет горит, и бегать можно среди струй. Оказывается, всё просто - решёточка.

Сентябрь, работа

Не сочтите этот снимок за рекламу ворлд-оф-варкрафта или какого-нибудь дорого элитного бухла.


Вечер в офисе.


Имеющее довольно-таки опосредованное отношение к моей работе дерево, растующее через дорогу от офиса.


И совсем не имеющий никакого отношения к теме поста зонтик.

пятница, 28 сентября 2012 г.

Статистика кассы

Уже гораздо больше, чем два года, я веду свой семейный бюджет в специальной системе, которую сам себе написал. Она выполнена в виде сайта и называется незамысловато "касса". Кстати, МБТСирожа тоже ей пользуется, время от времени просит что-то дописать и докрутить, так я рад стараться! Исходники открыты и свободны, распространяются под лицензией WTFPL, хостятся на GitHub. Вчера обе кассы - моя и МБТСирожы - преехали с селектела в хетцнер.

Кстати, хочу отметить разницу между "открытыми исходными текстами" и "свободными исходными текстами". Если исходники открыты, это ещё не значит, что вам разрешается эту программу компилировать, использовать, продавать, исправлять, и что всё это бесплатно. Свободные исходники как раз подразумевают, что они не только открыты для ознакомления, но и их можно брать и использовать по своему усмотрению, как это предусмотрено свободной лицензией. WTFPL - Do What The Fuck You Want To Public License. Разрешает с исходными текстами делать what the fuck you want to.

Так вот, за два с небольшим года в кассе накопилось множество интереснейшей статистики. Давайте посмотрим.

четверг, 27 сентября 2012 г.

Из selectel на hetzner

8.35 КБ

Ладно, думаю, несколько часов даунтайма - это фигня. У меня в облаке selectel.ru нет суперважных сервисов, час простоя которых выливается в сотни тысяч рублей недополученной прибыли. Да и плачу я рублей эдак двести в месяц за свою виртуальную машину.

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

8.08 КБ

И я решил не дожидаться и переехать, как только виртуальная машина заведётся, чтоб можно было оттуда забрать данные. И вот, на балансе в селектеле осталось 155 рублей, а я уже выключил (но покамест не уничтожил) виртуальную машину, и настроил виртуальную машину VQ7 в облаке hetzner.de. К утру уже точно обновится кэш записей DNS, и всё должно работать нормально.

понедельник, 24 сентября 2012 г.

воскресенье, 23 сентября 2012 г.

Эффективность разработчиков программного обеспечения

Простыня текста ворнинг

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

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

Также скорость письма зависит от выбранного языка программирорания. Язык с развесистым синтаксисом, длинными функциями и операторами — медленный для письма. А в пределах одного языка скорость письма определяется выбранной парадигмой программирования. Продвинутое ООП со всеми фабриками и синглтонами порождает неимоверное количество лишнего объёма кода. Говнокод с глобальными функциями и переменными из двух-трёх символов пишется в несколько раз быстрее.

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

Ещё 34 фоточки из Праги



34 фотографии, 7 Мб

Айтишники

Если ваш друг "компьютерщик", то правильно называть его "айтишник".
Если он говорит вам "мне нужна новая машина, а то старая совсем медленная", он имеет в виду, что ему нужен новый компьютер, а то старый медленный.
Если он говорит, что сдохла мать, он имеет в виду поломку главной компьютерной платы.
Если он говорит, что сдох камень, он имеет в виду поломку центрального процессор.
Если он говорит, что осёл сожрал память, он имеет в виду программу Internet Explorer, которая занимает много оперативной памяти компютера под свои процессы.
Айтишник объём информации измеряет в метрах и гектарах.

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

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

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

четверг, 20 сентября 2012 г.

Герб

54.21 КБ

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

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

Imaginarium

Помимо небезызвестного фильма про кибитку бомждоктора Парнаса, в которой он окуривал дурманящими ароматами тёток в каморке за зеркалом, есть ещё настольная игра "Имаджинариум". Коробка с игрой давным-давно лежала на стеллаже в офисе, и вот только вчера я подумал - а почему бы не поиграть? И стал всех уговаривать после работы поиграть. Уговорам поддались трое, и мы вчетвером играли после окончания рабочего дня.

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

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

вторник, 18 сентября 2012 г.

Найти идею

Дочитал в электричке книгу "Найти идею" Генриха Альтшуллера, в которой рассказываются основы ТРИЗ (теории решения изобретательских задач), приведён алгоритм решения изобретательских задач АРИЗ-85-В и есть ещё несколько ознакомительных материалов.

Когда-то давным-давно юный Гена подумал, что на основании изучения и анализа патентов и авторских свидетельств можно выявить законы развития техники. Этом он занялся, и законы эти выявил. А раз есть законы, то можно прогнозировать развитие техники, то бишь, делать изобретения. На этом и основана ТРИЗ.

Сама по себе ТРИЗ неприменима к веб-программированию и к дизайну, поскольку полностью про технику - физику и химию применительно к промышленности. Да и нет базы авторских свидетельств и изобретений, касающихся сайтов. Однако, общая методология решения изобретательских задач применима вообще ко всему, в том числе и к той области, в которой я работаю - к сайтостроению. И в ближайшее время я намерен найти метод, как можно её к нему применить поуспешнее.

А пока намерен почитать "Звёздные дневники Ийона Тихого" Станислава Лема.

CChart update

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

57.24 КБ

воскресенье, 16 сентября 2012 г.

среда, 12 сентября 2012 г.

Metronom

На четвёртый день нашего пребывания в Праге мы сели утром на метро на линку А и уехали на самый верх, на станцию Дейвицка, откуда ходит до аэропорта автобус 119. Но мы не поехали в аэропорт, а пошли в противоположную сторону, прогуливаясь по жилым кварталам. Мы прошли пару станций метро и увидели парк, и решили там отдохнуть. Это был не простой парк, как оказалось; когда мы подошли поближе, то увидели указатель и схему. Это были Летенские сады. Обычный парк, только очень большой.





В нём уйма кафе, есть летние театры, всякие детские площадки с забавами, места для выгула собак, велодорожки, и даже целый передвижной цирк с акробатами. Если пройти по Летенским садам до высокого берега Влтавы, то открывается потрясающий вид на Прагу и на почти все пражские мосты.


Palladium

Неподалёку от Главного вокзала Праги расположен большой торговый центр Palladium.


Это не он. Это по дороге от вокзала в Žižkov, цыганский район. Палладиум выглядит снаружи как обычный дом, а вот внутри...


Rajská zahrada

Кроме того, чтоб посмотреть на туристические достопримечательности Праги, мы хотели посмотреть на то, как живут обычные люди. И мы сели на жёлтую линку метро и поехали на конечную станцию černý most (Чёрный мост). Но не доехали до неё одну остановку, потому что нам понравилось название другой станции — Rajská zahrada (Райский сад), на которой мы вышли. Забавно, тут метро идёт по поверхности, но всё равно закрыто бетонными плитами, чтоб внутри было темно. На станции пути располагаются один над другим, выход у обоих на одну сторону, а сверху ещё третьим этажом станция, как мне показалось, трамвая. Что с другой стороны станции, я не знаю.

Рядом со станцией метро Райска захрада обычный спальный район. Есть супермаркеты, и кое-где на первых этажах домов крохотные обходы с потравинами (магазины со жратвой). Мы долго брели вдоль линии метро, не решаясь завернуть вглубь дворов, но в конце концов решились и, пройдя сквозь дворы, оказались в большом парке. Это был центральный парк района Чёрный мост. Мы брели по нему неспешно, по дорожкам, мимо детских площадок и зарослей кустов. Нас обогнала женщина с детской коляской, мы посторонились, чтоб дать ей пройти.
- Díky, - сказала она.
- Není zač, - ответил я.
Потом мы вышли к пруду. По пруду плавали лебеди и утки. Возле пруда росли плакучие ивы и в их тени стояли скамеечки. Возле скамеечек мы присели и обнаружили вокруг набросанные бычки и кое-где собачьи какашки. То есть несмотря на то, что кругом Европа, пакетики для сбора собачьего дерьма, урны и пепельницы, мудаки всё равно встречаются.


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

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


Там сначала ничего нет, только железная дорога и заросли, а потом снова начинаются домики. С одной стороны домики, а с другой стороны какое-то заведение, похожее на кулинарное училище.




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

Вышеград

Помимо Пражского града, на берегах Влтавы в пределах современной Праги был как минимум ещё один замок под названием Вышеград. Считается, что он появился тут позже. Тут тоже есть свой кафедральный собор апостолов Петра и Павла. А ещё тут есть своя станция метро Vyšehrad, конгрессхолл и не надо никуда в гору топать целый час.

вторник, 11 сентября 2012 г.

Музей игрушек

Музей игрушек в Праге расположен ну примерно где-то в Пражском граде. Чтоб туда попасть, надо пройти мимо мальчика с блестящим хреном и подняться по узкой винтовой лестнице на пару этажей вверх. Лестица закручивается вверх по часовой стрелке. Я сразу вспомнил, что в средневековых замках так всегда было. Когда нападающие пытались подняться по таким лестницам, им мешал махать мечом центральный столб, в то время как отступающим наверх он не мешал.



Как я и предполагал, музей игрушек — это скучное и неинтересное место. Хотя несколько экспонатов меня восхитили, но их было немного. Стоимость посещения 70 крон, на семью (папа+мама+двоедетей) 120 крон.


12 фоточек, 2.5 Мб.

Транспаранты

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

Однако, на всякий случай параллельно с этим все прочие митинги, шествия и прочие демонстрации надо "согласовывать" - ну то есть просить разрешения. На всякий случай, чтоб не было антипутинга. Добро пожаловать в антиуитопию типа 1983 - омон разгоняет собрание, посвящённое поддержке статьи Конституции, гарантирующей свободу собраний за то, что оно несогласовано. Для всех это как будто в порядке вещей, а я сижу и офигеваю каждый раз. Ох, где я живу.

Это была первая часть вступительного слова. Вторая часть вступительного слова заключается в том, чтоне всё так ужасно в этой стране, и скоро - День Программиста, одно из немногих добрых дел Ивана Дмитриевича Ведмедева, когда он ещё был ПЖ и ходил в малиновых штанах. На день программиста я в мечтах иду во главе колонны айтишников, которые с плясками и песнями несут транспаранты, позвякивая бубнцами.

Надписи на транспарантах:

"Hello world!" - огромный транспарант поперёк улицы

"PHP - тоже язык программирования"

"Долой ООП!"

"Спамер должен сидеть"

"// текст транспаранта"

"sudo rm -rf /"

"DRY, KISS"

"Аджайл фтопку"

И так далее...

Собор Святого Вита



воскресенье, 9 сентября 2012 г.

Pražský Hrad

Hrad по-чешски это замок или крепость. Пражский град, соответственно — Пражский замок. То, что это замок, понятно по имеющимся кое-где стенам, а также по повышенной концентрации дворцов в пределах небольшого пространства. Пражский град тоже расположен на холме рядом с Петршином, но помельче.


По Карловому мосту из Старого города мы перешли на другой берег Влтавы, как называется этот район, я не знаю, кажется, Градчаны. На самом мосту, как я уже говорил, сидит множество бумагомарак, рисующих за 5 минут шаблонные шаржи на желающих. Есть пара нормальных художников, которые рисуют похожие портреты, ну и парочка музыкантов. Мост по бокам украшен всякими фигурами, некоторые части которых отполированы до блеска. Говорят, что если их потереть, загадав желание, то оно сбудется. Вот туристы и полируют.




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


Selectel - вы достали



У меня там ещё осталось 249 рублей, этого хватит примерно на 50 дней работы моей виртуальной машины. После того, как эти деньги закончатся, я хочу перенести свою виртуальную машину с Selectel.org. Они молодцы, у них хорошая панель управления, вменяемая техподдержка, невысокие цены, и главное - они возмещают деньги за даунтайм из-за их факапов. Однако, в последнее лето происходит сбой за сбоем. Злой рок, плохая карма или происки конкурентов - не знаю, но лучше злые шутки, которые вытворяет Фортуна с датацентрами Селектел, не будут затрагивать меня.

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

Надо будет найти новый облачный хостинг. Может быть, это будет Clodo, а может, что-нибудь в Европе. Я ещё не решил.

Raw

Так как я некоторое время тому назад разжился флешкой на дохренадцать гигабайт, то ходил и снимал всё в RAW+JPEG. Потом на своей свободной открытой операционной системе открывал свободное открытое программное обеспечение для обработки raw-файлов и сидел эти самые raw-файлы обрабатывал. Выяснилось следующее: кривые (curves) и ползунок цветонасыщения (saturation) не аналогичны фильтру "сделать фоточку чтоб крутая" в закрытых платных фотошопе и лайтруме. После нескольких минут возни с raw-файлом я получаю результат едва ли дотягивающий до того, что за доли секунды получает процессор DIGIC 4 в моём фотоаппарате. Тени и светлые места я делаю более выразительными (самую чуточку, но облака у меня круче получаются, по-моему), но полностью проваливаю середину и она получается вовсе невыразительной и блеклой.

Таким образом, от постобработки проявленных в raw-конверторе файлов в открытом, бесплатном и свободном GIMPе не получается избавиться. Ну так и зачем тратить дополнительное время, если результат не получается лучше? И я в очередной раз окончательно и бесповоротно разочаровался в работе с raw-файлами. Профессиональные фотографы и всякие фотоблоггеры, зарабатывающие себе на жизнь ведением фототуров и всяких мастер-классов, конечно, фотографируют исключительно в raw (при этом ухитряясь совмещать это с невероятно убогим с технической точки зрения квардратным говнорезультатом дерьмобилофоток с фильтрами в Instagram). Ну понятно, почему. У них у всех макбуки, айфоны и айпады, и везде несвободные закрытые фотошопы и лайтрумы, распространяемые под анальноогороженными лицензиями, где есть, по слухам, ползунок "pizdate level", регулирующий уровень пиздатости полученного изображения. Со свободным, открытым и бесплатным программным обеспечением, похоже, такого качества результаты в данный момент получить не удастся. Поэтому в ближайшее время я не буду рвать жопу и заниматься проявкой raw, буду продолжать фотографировать в jpeg. Однако, в сложных ситуациях (большая разница в уровнях освещения или тёмные дебри какие-нибудь), наверное, буду снимать и в raw, чтоб, если что, вытащить оттуда что-нибудь, что пропадает в jpeg.

четверг, 6 сентября 2012 г.

Petřínská Rozhledna

Вернувшись в Прагу из Карлштейна, мы пообедали и отправились на Петршин. Но сад роз и обсерватория (в которую мы не заходили) — не самая высокая точка Петршина. На нём ещё стоит уменьшенная копия Эйфелевой башни — Petřínská Rozhledna.


Изделека она выглядит более впечатляющей, чем на самом деле является.


Стоимость посещения сто пять крон, если хочешь ехать на лифте, то ещё пятьдесят пять. Причём там скидки пенсионерам, студентам, инвалидам, а если есть журналисткое удостоверение, то на лифте можно ехать вообще бесплатно.




Дальше будут виды Праги оттуда сверху.

Тверской трамвай

Двадцать восьмого августа 1901 года в славном городе Твери начал работу трамвай. В период максимального развития, то есть до начала 1990-х годов, общая длина всех линий составляла порядка 180 километров и имелось два трамвайных парка. Сейчас трамвайный парк всего один, из 18 маршрутов действующих осталось только пять. Всего осталось примерно 130 вагонов, из них почти 50 не на ходу и ждут утилизации. Ежедневно на маршрут выходит где-то 30-40 трамваев (по 1-2 вагонам). Те вагоны, что на ходу, сильно изношены.

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

Так как внезапно остановились и открыли двери все троллейбусы на линии, когда я ехал из Управления Федеральной Миграционной Службы, то я пошёл пешком от Третьей Городской Больницы до площади Конституции, по дороге осматривая трамвайные рельсы. Если бы сейчас взять и напустить на эти рельсовые пути контролёра, который проверит их на соответствие СНиП-III-39-76 «Трамвайные пути», то через 50 метров он сообщит, что рельсы надо перекладывать.

Не было с собой фотоаппарата, сфотографировал на телефон.


Зазор между стыками рельсов не должен превышать 20 мм, тут превышает, и это ещё +15 градусов, а не мороз. Более того, я нашёл места, в которых рельсы на стыке смещены относительно друг друга в сторону или по высоте. Видно, что кое-где местами сделан ремонт – между рельсами вставлены отрезки по 10-20 сантиметров длиной, всё аккуратно закреплено. Но ремонт это не то, некоторые рельсы уже необходимо менять из-за искривления, кое-где перекладывать путь из-за изгибания поперечных тяг. Моя матушка говорит, что недавно опять сошёл трамвай с рельсов, никто не пострадал. Это уже второй известный мне случай, первый легко найти на ютубе по словам «король тверского дрифта трамвай». Со временем из-за износа рельсов и шпал такие случаи могут происходить чаще.

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

Системы контроля версий

Системы контроля версий. Централизованная система контроля версий Subversion и децентрализованная система контроля версий Mercurial. Основные принципы, отличие, приёмы. Материалы к семинару 3 сентября 2012.

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

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

Начну с централизованных СКВ, так как исторически они появились раньше. Тут всё просто. Репозиторий один. У каждого разработчика своя рабочая копия. Время от времени разработчик может затягивать к себе в рабочую копию новые изменения из репозитория, или проталкивать свои изменения из своей рабочей копии в репозиторий. У подобной системы существует один большой недостаток – если похерится репозиторий, то всё пропадает. Прочие особенности централизованных СКВ зависят от реализации.

Subversion 1.6 и 1.7

Начну, пожалуй, с упоминания того момента, что из-за того, что в версии 1.7.0 была полностью исправлена система хранения метаданных в хранилище, рабочие копии версий веток 1.6 и 1.7 между собой несовместимы. Это не представляет особых проблем, так как формат связи с репозиторием не изменился, и работать можно с одним и тем же репозиторием из рабочих копий версий 1.6 и 1.7 можно одновременно, и 1.6 легко апгрейдится до 1.7 самостоятельно.

Репозиторий может храниться в базе данных BerkleyDB (с 2001 года примерно) или в файловой системе в своём особом формате (с 2004 где-то). Оба этих способа имеют очевидные преимущества и недостатки. Например, при хранении в файловой системе SVN не хранит отдельно ревизию HEAD. А так как всё хранится в виде дельт (наборов изменений в файлах), то получение последней ревизии может занимать много времени. Зато работает в общем случае быстрее и занимает меньше места, чем БД.

Рабочая копия представляет из себя папки и файлы в таком виде, в котором они существуют в самом проекте, только в корне рабочей копии лежит папка с названием .svn, в которой хранится вся метаинформация. Раньше, в версии 1.6 и более древних, такие папки были рассованы повсеместно, в каждой директории.

В том случае, если вам необходимо игнорировать неверсифиционированные элементы (как, например, в случае с битриксом, когда один проект затрагивает публичную часть, модуль, компоненты, шаблоны, но не хранит все исходники битрикса), то можно воспользоваться двумя способами. Первый – это задать в ini-файле глобальные параметры игнорирования. Однако, они применимы только для данного пользователя и/или данного компьютера, так как ini-файлы у всех разные и не привязаны к репозиториям. Кроме того, мне неизвестно, каким образом можно задавать параметры игнорирования для разных рабочих копий одним пользователем, возможно, что никак. Второй способ - через свойства. В SVN у каждой папки и файла есть определённые метаданные, так называемые «свойства». Есть свойство svn:ignore, в котором указываются игнорируемые файлы по маске. Для того, чтоб заставить svn игнорировать очень сложный набор файлов – таких, как исходники битрикса в наших проектах, например – придётся здорово попотеть. Так как эти свойства хранятся хитрым образом закопанные в папке .svn, то они, похоже, намертво пришиты к своей рабочей копии, и копирование их в другую рабочую копию представляется мне маловероятным. Кроме того, есть свойство svn:mime-type, которое определяет тип содержимого файла. Если svn неверно угадывает тип файла, например, принимает бинарный файл за текстовый и пытается его версионировать, или наоборот, принимая текстовый файл за двоичный и перезаписывая его при изменении, вместо того, чтоб провести слияние, то, указав правильный тип в этом свойстве, можно исправить эту оплошность.

Ветви в subversion устроены особым образом. Их там по сути нет. То есть даже в документации по SVN написано, что надо сделать отдельный каталог branches и сделать svn copy туда для создания ветки. Точно таким же образом устроены метки (тэги) – сделать отдельную папку tags и делать svn copy туда. Этот деревянный способ, однако, проще для понимания, чем аналогичные штуки в система контроля версий Mercurial. К которой я и перехожу.

Mercurial

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

Для людей, привыкших к централизованным системам контроля версий, децентрализованные системы являются жутчайшей ересью, и они просто не понимают, каким образом там вообще можно что-то делать. Однако, любая децентрализованная система является более гибкой и надёжной просто за счёт того, что она децентрализованная. Тут тоже есть понятие «репозиторий» и «рабочая копия», однако, у каждого репозитория может быть только одна рабочая копия, представляющая с ним единое неделимое целое, и таких репозиториев-рабочих-копий у одного проекта может быть неограниченное число. При этом репоизтории могут обмениваться между собой изменениями.

Hg хранит правки в репозиториях тоже в виде дельт, или изменений. Изменение (вернее, набор изменений - changeset) – это указание, что поменялось, и указание на изменение-родитель (или два изменения-родителя при слиянии). Это как односвязный список, знакомый всем их лабораторных работ по C++. У нас есть один элемент, мы можем отследить всех его предков и собрать по отдельным изменениям один большой файл. Такая архитектура хранения изменений практически ничем не ограничена, и мы можем наколбасить огромную кучу разных равноправных изменений одной ревизии, а потом снова собрать их попарно в одно в пределах одного репозитория.

Причём это не что-то экзотическое, а вполне нормальный рабочий процесс. Следующие цепочкой один за другим наборы изменений вполне себе могут ветвиться. Разные разработчики вносят правки, сохраняют у себя в репозиториях. Потом, когда в одном репозитории все эти правки объединяются, возникает как раз такая ситуация, когда от одного набора изменений расходятся несколько. Это так называемые отдельные головы. Так как это происходит постоянно, то постоянно необходимо использовать hg merge, который слепляет все головы в одну, создавая новые наборы изменений, имеющих по паре родителей. Если есть необходимость держать разные наборы изменений параллельно друг другу и изолированно, то одну голову можно просто обозвать каким-то именем – это получается ветка. Свою рабочую копию можно легко переключать между ветками командой hg up. Причём перенос изменений из любых веток в основную ветвь, default, очень легок и делается всё той же командой hg merge.

Дальше пойдёт обсирание SVN и централизованных СКВ, поэтому людей с централизованным образом мышления я прошу покинуть аудиторию во избежание баттхёрта.

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

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

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

В том случае, если вам надо изолировать часть изменений, вы элегантно делаете новую ветку, просто помечая ряд наборов изменений как новую ветвь. Ничего не надо никуда копировать, никаких костылей. Точно так же, легко и элегантно, вы можете собирать в ветку изменения из других ветвей, и выгружать изменения из неё, когда они будут готовы. При работе в SVN, насколько мне известно, многие разработчики стараются избегать ветвей, хм, интересно, почему бы это?

Проблема с игнорированием неверсионируемых файлов решается так же элегантно. Помимо типично SVN-style подхода с ini-файлом (который может быть полезен пользователям операционных систем Mac OS или Windows для того, чтоб не сохранять в репозитории файлы .DS_Stote и Thumbs.db), существует ещё один простой способ – в корне рабочей папки создаётся файл .hgignore, в котором перечисляются по маскам файлы, которые нужно игнорировать. Этот файл можно просто скопировать в другую рабочую копию, и он там будет точно так же нормально работать.

Основное, фундаментальное различие между SVN и Hg в том, что в SVN все мыслят прямолинейно и плоско ревизиями, а в Hg – наборами изменений. Ревизия – это то, на что похожа файловая система в определённый момент времени. Поэтому там такая жопа с ветвями и тэгами. Набор изменений – это всего лишь набор изменений. На него можно навесить тэг, пометить, как отдельную ветвь, и так далее. Поэтому СКВ Hg более гибка и более мощна. Что касается небольших преимущество в комфорте при работе из командной строки, то, я думаю, особого смысла описывать их нет, хотя упомянуть стоит.

Ну вот, наверное, собственно, и всё.

вторник, 4 сентября 2012 г.

Petřín

На западе Праги есть большой холм под названием Petřín — произносится примерно как Петршин. Туда наверх ходит фуникулер, но... Прага до сих пор переживает тяжёлые последствия вторжения СССР в 1968 году, одно из которых — большая очередь на фуникулер. Мы решили подняться на Петршин пешком.




Всего 13 фотографий, 3.3 Мб.

Карлштейн

После посещения Конепруских пещер мы отправились в Карлштейн. Это такой построенный на вершине скалы замок, и, у подножия скалы, одноимённый городок туристической направленности. В этом городке всё население в туристический сезон занимается завлеканием и развлеканием туристов, коих в Карлштейне великое множество, и не только из самой Чехии, но и из других стран.

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

Вот виднеется Карлштейн с одной из подъездных дорог.


Всего 12 фотографий, 2.3 Мб

понедельник, 3 сентября 2012 г.

Конепруские пещеры

Конепруские пещеры расположены, как написано в сопроводительном буклетике на русском языке, на территории заповедника «Чешский карст» и имеют, как следует из его названия и из того же текста в буклетике, природное карстовое происхождение. Стоимость входного билета 150 крон плюс пятьдесят крон разрешение на съёмку, плюс пятьдесят крон залог за буклетик на русском языке. Его можно вернуть в кассу и получить свои пятьдесят крон обратно.

В пещерах три яруса, на мы были на среднем и верхнем, нижний закрыт для туристов, так как там считается опасно. Разумеется, посещение пещеры возможно только с экскурсоводом. На всякий случай во избежание проникновения в пещеру посторонних и ломания ими там собственных шей, пещеру запирают на ключик.

17 фотографий, 3.7 Мб.

воскресенье, 2 сентября 2012 г.

Первое сентября



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

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

Школьная линейка - пустая трата времени. Много бессмысленных речей, тупых стишков, гимн школы на мотив "важней всего погода в доме" и Гимн РФ на мотив "союз нерушимый республик свободных". Потом последовала экскурсия по школе, детям всё понравилось, особенно школьная столовая, где их угощали плюшками и чаем. В честь праздника разрешили некоторым выпить добавку чая.

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