Разрушенные церкви бугульминского района Татарстана

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

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

Церковь Вознесения (1764) (226.33KB)Церковь Вознесения (1764) (268.70KB)
Первая — церковь Вознесения, построенная в 1764 году на деньги П.И. Рычкова в селе Спасское (Бугульминский район), объект культурного наследия республиканского значения. Внутрь уже не попасть, церковь начали восстанавливать, но в один из пристроев вход ещё открыт. На стенах и вокруг здания в кустах есть интерсные восьмиугольники, увенчанные короной, в которых что-то находилось — видны отверстия креплений. Интересно, что там было?

Храм Петра и Павла (221.32KB)Храм Петра и Павла (254.71KB)Храм Петра и Павла (370.11KB)Храм Петра и Павла (301.18KB)
На второй серии снимков — Храм Петра и Павла из села Ключёвка, я о нём уже писал когда-то. Судя по документам, в этом храме крестили мою прабабушку по маминой линии. Вероятный год постройки — 1809, на чьи средства построен храм мне неизвестно, но село основано купцом Рыковом, возможно он и стал спонсором. В храме много фресок, где ещё угадываются контуры сцен и надписей, кое-что даже ещё пока выглядит очень неплохо, но само здание открыто всем ветрам, крыша провалилась, значит всё это будет ветшать.
Комментировать
19 мая 2013 20:51

Берём «Макбук» со стола, экран гаснет или блокируется

В предыдущей заметке я писал, что обнаружил сенсор внезапного движения у своего «Макбука». Решил извлечь практическую пользу из этого — написал программу на Си, которая отправляет ноут в спячку, стоит поднять его со стола:
// gcc -framework CoreFoundation -framework IOKit  gethensleep.c -o getthensleep
// Evgeny Stepanischev May 2013
#include <IOKit/IOKitLib.h>
#include <CoreFoundation/CoreFoundation.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <stdbool.h>
#include <sys/param.h>

#define RETURNONFAIL(code) do { if (errcode != KERN_SUCCESS) {\
    fprintf(stderr, "Error code: 0x%Xn", GETCODE(errcode));\
    return code;\
} } while (0)


#define GETCODE(err) ((err)&0x3fff)

#define THRESHOLD 0.2

typedef struct {
    int16_t x;
    int16_t y;
    int16_t z;
} ostruct;

void macSleep() {
    io_registry_entry_t r = IORegistryEntryFromPath(
        kIOMasterPortDefault,
        "IOService:/IOResources/IODisplayWrangler"
    );

    if (r) {
        IORegistryEntrySetCFProperty(r, CFSTR("IORequestIdle"), kCFBooleanTrue);
        IOObjectRelease(r);
    }
}

int main() {
    mach_port_t masterPort;
    kern_return_t errcode;
    io_iterator_t iterator;
    io_object_t service;
    io_connect_t connect;

    void *in;
    ostruct *out;
    size_t osize = 40, isize = 40;

    errcode = IOMasterPort(MACH_PORT_NULL, &masterPort);
    RETURNONFAIL(-1);

    CFMutableDictionaryRef matchingDictionary = IOServiceMatching("SMCMotionSensor");

    errcode = IOServiceGetMatchingServices(masterPort, matchingDictionary, &iterator);
    RETURNONFAIL(-2);

    service = IOIteratorNext(iterator);
    IOObjectRelease(iterator);

    if (service == kIOReturnNoDevice) {
        return -3;
    }

    errcode = IOServiceOpen(service, mach_task_self(), 0, &connect);
    IOObjectRelease(service);
    RETURNONFAIL(-4);

    in = malloc(isize);
    out = malloc(osize);

    if (in == NULL || out == NULL) {
        return -6;
    }

    memset(out, 0, osize);
    memset(in, 1, isize);

    int16_t prevz;
    bool inited = false;

    for(;;) {
        errcode = IOConnectCallStructMethod(connect, 5, in, osize, out, &isize);
        RETURNONFAIL(-5);

        if (inited) {
            float min = MIN(prevz, (*out).z);
            float max = MAX(prevz, (*out).z);

            if (max) {
                float dev = 1 - min / max;

                if (dev > THRESHOLD) {
                    macSleep();
                }
            }
        } else {
            inited = true;
        }

        prevz = (*out).z;
        usleep(10000);
    }

    return 0;
}
Порог срабатывания (0.2) я подобрал экспериментальным путём. Скомпилировать можно компилятором gcc (входит в XCode), строка компиляции указана первой в приведёном коде. Можно засунуть в автозагрузку и наслаждаться эффектом.

Кстати, если хотите, то можно вместо спячки заставить ноут заблокировать экран (т.е. показать экран логина), для этого надо вместо функции macSleep вызвать другую:
// нужно добавить ещё один ключ компиляции: -framework ApplicationServices
#include <ApplicationServices/ApplicationServices.h>

void macLock () {
    CGSCreateLoginSession(NULL);
}
23 комментария
19 мая 2013 12:04

Сенсор внезапного движения

Очень давно, на всех носимых устройствах, оснащённых жёстким диском (ноута, смартфонах) появился сенсор внезапного движения. В жёстком диске считывающая головка находится, не касаясь, над поверхностью диска с данными. Если ноут резко поднять, головка может чиркнуть по поверхности диска и испортить его. Для этого нужен сенсор внезапного движения (акселерометр), он реагирует на ускорение в любую сторону и «паркует» головку — уводит её в зону, где она ничего не может повредить.

На ноутах с твёрдотельным накопителем (ССД), этого сенсора обычно не бывает — он там не нужен. Например, на моём Макбуке Эйр его не было, нет его и на 15″ Макбуке Про с Ретиной моего друга, я специально смотрел — в этих ноутах нет жёстких дисков. В Макбуках Про предыдущей модели, без Ретины и с жёстким диском, сенсор, естественно, был.

Каково же было моё удивление, когда я обнаружил, после покупки Макбука Про 13″, что в сведениях о системе есть упомянутый сенсор: Сенсор внезапного движения (148.70КБ) Думаю, его просто забыли убрать, наверное это рудимент прежней модели Макбука. Но наличие сенсора не говорит о том, что он работает. Я сегодня потратил пару часов, чтобы разобраться как в Маке читают этот сенсор и написал вот такую программу на Си:
// MacbookPro (OS X 10.5+) SMS reading. Evgeny Stepanischev May 2013
// gcc  -framework IOKit  motion.c
#include <IOKit/IOKitLib.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

do { if (errcode != KERN_SUCCESS) {\
    fprintf(stderr, "Error code: 0x%Xn", GETCODE(errcode));\
    return code;\
} } while (0)

#define GETCODE(err) ((err)&0x3fff)

typedef struct {
    int16_t x;
    int16_t y;
    int16_t z;
} ostruct;

int main() {
    mach_port_t masterPort;
    kern_return_t errcode;
    io_iterator_t iterator;
    io_object_t service;
    io_connect_t connect;

    void *in;
    ostruct *out;
    size_t osize = 40, isize = 40;

    errcode = IOMasterPort(MACH_PORT_NULL, &masterPort);
    RETURNONFAIL(-1);

    CFMutableDictionaryRef matchingDictionary = IOServiceMatching("SMCMotionSensor");

    errcode = IOServiceGetMatchingServices(masterPort, matchingDictionary, &iterator);
    RETURNONFAIL(-2);

    service = IOIteratorNext(iterator);
    IOObjectRelease(iterator);

    if (service == kIOReturnNoDevice) {
        return -3;
    }

    errcode = IOServiceOpen(service, mach_task_self(), 0, &connect);
    IOObjectRelease(service);
    RETURNONFAIL(-4);

    in = malloc(isize);
    out = malloc(osize);

    if (in == NULL || out == NULL) {
        return -6;
    }

    memset(out, 0, osize);
    memset(in, 1, isize);

    errcode = IOConnectCallStructMethod(connect, 5, in, osize, out, &isize);
    RETURNONFAIL(-5);

    printf("%d, %d, %d\n", (*out).x, (*out).y, (*out).z);

    return 0;
}
Программа выводит три числа: показатели наклона влево/вправо, назад/вперёд и показатель ускорения, который меняется, если ноут резко поднять или опустить.

Размер структуры 40 и второй параметр функции IOConnectCallStructMethod («5») — «магические» значения, первое — фиксированный размер буфера, который требуется функции, второе — номер вызываемой функции в ядре (SMCMotionSensor).
Комментировать
19 мая 2013 10:19

4G в Казани

Неожиданно заработал «4Джи» в смартфоне, голос идёт по старинке, а интернет через сеть нового поколения. Скорости космическими не назвать, но по ощущениям стало побыстрее — как на вайфае. 4G, Мегафон (51.93КБ) Я сегодня пошёл симку менять, прежняя, резанная под мини-сим, померла, воспользовавшись случаем сменил её на нормальную мини-сим. Меняя, увидел на симке надпись «LTE» и спросил у персонала что это значит. Оказалось — теперь в некоторых смартфонах доступен режим ЛТЕ для интернета. У нас ЛТЕ уже давненько, но на только для УСБ-модемов, симка из которых (если вставить её в смарт) позвонить никуда не позволяла. В общем, нужны, как я понял: специальная симка, телефон, поддерживающий российский ЛТЕ (у меня — Нокия 920, причём нужна самая последняя прошивка) и что-то включить в «личном кабинете» (мне сотрудницы сами включили).

Работает «4Джи» пока только у «Мегафона», впрочем могу ошибаться, за новостями других компаний я не слежу — у меня-то как раз «Мегафон».
8 комментариев
17 мая 2013 13:06

Слово «мама» — значит «еда»

Цитата с «Дёрти»:
Наиболее полное исследование над словами «мама» и «папа» как универсальными терминами было проведено лингвистом Романом Якобсоном. Он объяснил, что для человека наиболее простыми для воспроизведения являются открытые гласные звуки. Дети могут произносить гласные звуки с первых дней жизни. Что они и делают. Постоянно. Как только они начинают экспериментировать с другими звуками, они пробуют самые простые согласные. Обычно они начинают со звуков, производимых с закрытыми губами, так называемых «губных согласных», например, [m], [p], [b]. Дети собирают всю энергию, чтобы вытолкнуть этот новый гласный звук «мммм», а затем расслабляют рот в наиболее простом открытом гласном «а». Добавляя сюда естественное повторение в детской речи (лепет), мы получаем «ма–ма», «ба–ба», «па–па» и так далее.

Так почему же дети все–таки тяготеют к звуку [m], а не [p] или [b]? Конечно же, из–за женской груди. Звук [m] — самый простой для детского рта, приложенного к теплой аппетитной груди. Даже став взрослыми мы продолжаем ассоциировать «мммм» с чем–то вкусненьким. То же делает и ребенок.

Якобсон в своей работе полагает, что ребенок не имеет ни малейшего понятия о том, что вас зовут мамой или папой или как–то еще. Слово «мама» не значит «я люблю тебя, дорогая женщина–ангел, принесшая в жертву сон, карьеру и упругость ягодиц». Оно значит «еда».

Так что когда ребенок зовет папу «мамой» и все больше начинает тревожиться, что папа не становится «мамой», на самом деле он не зовет свою мать. Он способен понять, что волосатый плоскогрудый болван, который пытается петь колыбельную, не является Главным Блоком Раздачи Еды №1. А Главный Блок Раздачи Еды №1 или хотя бы подходящий латексный заменитель, который этот Блок обычно носит с собой, должен быть доставлен немедленно.
Я ещё, учась в школе, сообразил, что слово «мама», вероятно, так распространено во всех языках, потому что его проще всего произнести, что бы оно там не значило. Но я думал, что оно ничего не значит для младенца, просто какие-то звуки, ан нет, учёные считают, что оно имеет отношение к желанию поесть.

Кстати, на татарский «мама» переводится как «эни́», но я не знаю считают ли татары детское «мама» аналогом своего «эни», надо будет поспрашивать. А в грузинском «мама» (მამა) означает «отец», тогда как «мать» звучит как «деда» (დედა).
15 комментариев
17 мая 2013 11:09

Грузия — прекрасна!

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

Для начала, нам сильно повезло — весь тур выкупила какая-то компания, под корпоратив, но трое их сотрудников не оформили какие-то нужные документы (я подозреваю, что паспорта) и три места в туре достались нам — мне, жене и братишке. Поскольку на чужом корпоративе нам делать нечего, компания «Жарков-тур», через которую мы летали, организовала нам за те же деньги индивидуальную поездку — со своим гидом и водителем комфортабельного микроавтобуса.

Поэтому мы могли выбирать куда поехать, например, мы заглянули в город Го́ри, в дом, где родился Сталин и соответствующмй музей.

Второе везение — за пять дней в Грузии не было ни капельки дождя, стояла прекрасная, солнечная погода, +25—28˚Ц. Лишь когда мы поехали в аэропорт, в Батуми всё-таки пошёл дождь.

Везение номер три — это перелёты. Летели мы в обоих случаях через Москву. При полёте «туда» до пересадки у нас было три часа, которые съелись на полуторачасовое ожидание самолётом в воздухе посадки в Домодедове, почему-то её всё никак не разрешали, а потом — на долгое (около часа) получение багажа.

На обратном рейсе было ещё веселее — зазор между прилётом в Москву и вылетом был один час 15 минут и мы очень боялись не успеть на самолёт. Для этого нам нужно было любой ценой взять багаж в ручную кладь (сомнения были по поводу небольшого чемоданчика, который иногда заставляют сдавать в багажное отделение). Сначала нас попросили сдать его в багаж на досмотре — мы везли с собой пару бутылочек масла из виноградных семечек из Грузии, жена расстроилась по поводу того, что из Грузии ничего памятного не привезём, на досматривающего это подействовало и он махнул рукой — забирайте. Потом оказалось, что самолёт дали очень маленький, не лезет наш чемодан на полки для багажа, но, к счастью, сидели мы на втором ряду (регистрировались последними и нам достались места из «бизнеса», самолёт был полностью выкуплен) и у одного из наших мест было приличное место для ног, куда влез чемодан. В аэропорту мы бежали, как угорелые, в итоге даже пришлось ожидать посадки пятнадцать минут.

Сама же Грузия понравилась очень. Никакого напряжённого отношения к русским мы не заметили, какие-то два мужичка около одной из церквей, узнав, что мы русские туристы, с обидой в голосе сказали: «что же вы русские, так мало приезжаете к нам, приезжайте побольше!». Что ещё хорошо — русский язык хоть в какой-то степени знают почти все, даже в школах в последние годы опять ввели его обязательное изучение.

Что меня радует как любителя истории — в Грузии этой самой истории много, старые монастыри, старые здания, всего много, но не в одном месте, к сожалению. Мы проехали ⅔ страны и шесть городов, чтобы побольше увидеть.

Больше всего мы провели времени в Тбисили и Батуми. Ребята, там почему-то очень чисто, но никакой армии дворников (как в Москве) я не заметил. В Батуми строят свои отели все известные сети — Шератон, Хилтон, Редиссон и так далее. Очень хорошо, что мы приехали весной — всё цвело, в том числе Ботанический сад Батуми. Отдельной похвалы заслуживает и дельфинарий этого города — за насыщенное, впечатляющее, получасовое выступление. Я был в нескольких дельфинариях, но такого восторга ни разу не испытывал.

Теперь еда. Грузинская кухня — это очень вкусно, ребята! Бешенно вкусно! Мы много чего ели, но больше всего почему-то запомнился хачапури по-аджарски, наверное потому, что я сначала понятия не имел как его есть, а теперь научился и втянулся. Помню, мы его заказали в Ульяновске в грузинском ресторанчике и смотели на него, как бараны на новые ворота. А ещё в Грузии довольно дёшево. В ресторане над Алазанской долиной, на пятом этаже, открытой площадке башни-ресторана с отличным видом на долину и водопадик, мы поели (салат, суп, второе, чай) на… 400 рублей с каждого! В хорошем ресторане на берегу Чёрного моря (пол со стеклянными фрагментами, под ногами — море), вдвое дешевле. А ещё в каждом ресторане предлагают минеральную воду, только не Боржоми, а несколько видов другой, более мягкой, столовой, а не лечебной.

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

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

Что не понравилось. В Грузии везде курят. В кафе, ресторанах, на улицах, хозяин магазинчика преспокойно закурил при нас в помещении, в ресторане «Привет из Батума», в котором мы в последний раз ужинали, курил весь зал, целиком, только дети не курили, зато их родители смолили рядом с ними вовсю. Наш экскурсовод рассказала, что с курением пытались бороться, но законопроект не прошёл.

В остальном же страна прекрасна, очень рекомендую как-нибудь туда съездить и убедиться в этом лично. Ничего себе «несколько слов» получилось…
8 комментариев
16 мая 2013 08:59

Валентина Терешкова

Терешкова (54.94КБ) Не знаю, рассказывают ли сейчас в школах кто такая Валентина Терешкова, когда я там учился, её имя произносили рядом с Гагариным и Леоновым.

Первая в мире женщина-космонавт! И сейчас полёты не сахар, как серьёзно физически готовят будущих космонавтов, а подумайте как леталось первым космонавтам, как было тяжело психологически и физически, вот что говорит «Википедия»:
Во время обучения она проходила тренировки на устойчивость организма к факторам космического полёта. Тренировки включали в себя термокамеру, где надо было находиться в лётном комбинезоне при температуре +70 °C и влажности 30 %, сурдокамеру — изолированное от звуков помещение, где каждая кандидатка должна была провести 10 суток.
Всё-таки детская память — удивительная штука. Космос в моём детстве занимал далеко не центральное место среди моих интересов, был какой-то всплеск внимания к этой теме, но не более, чем ко всему остальному, но вот через много лет увидел это фото и сразу понял — на нём Терешкова! Не уверен, что где-то встречал это лицо во взрослые годы, её как-то подзабыли.

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

Нашёл фото совершенно случайно в кафе, где почти каждый день обедаю (это кафе в хостеле «I&I»), очень дружественное и приятное место. Там на подоконниках лежат разные штуки советский времён, большей частью хлам, а вот альбом с этикетками меня заинтересовал, потому и наткнулся на фото.
10 комментариев
14 мая 2013 15:19

Скачивалка документов из архивов ЭлАра

Написала мне одна читательница по поводу моей утилиты для скачивания документов из электронных архивов ЭлАра. Оказывается, помимо самарского, моя утилита вполне нормально работает и с тобольским. Что ж, наверняка есть ещё архивы с которыми она совместима, поэтому в новую версию я добавил необязательный параметр host, который позволяет указать другой адрес (по-умолчанию используется самарский): Тобольский архив (8.71КБ) Утилита лежит там же — на «ГитХабе».

История с кладбищ

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

Нет ничего лучше для меня на отдыхе, чем залезть на какие-нибудь развалины, а страна без истории (Эмираты, например), вызывает у меня неприятие и скуку.

В России история размазана на огромные расстояния и раздавлена теми, для кого развалины просто развалины. И года не проходит, чтобы в Казани, где я живу, не снесли какое-нибудь интересное здание и не построили очередную стеклянно-бетонную блевотину.

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

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

Первые три из деревни Старая Письмянка Лениногорского района. На первом можно разобрать «Здесь покоится В…», если я правильно помню, там дальше было имя «Василий» и дата — декабрь 1890 года.
Василий (200.45KB)Василий (171.91KB)
Вторая могила — Семёна Емельяновича Выдрина, написано, кажется, на церковнославянском, а может в то время все так писали, даты-то нет: Семён Емельянович Выдрин (229.48КБ) Третье надгробье валяется около чужой могилы, подпирает кирпичи оградки. Я уже очень торопился (в тот день мы объехали шесть деревень, да ещё и приехали с другого конца Татарстана), так что там написано никуда не записал, сейчас на фотографии я могу разобрать только слово «прахъ» и год — 1811, если не ошибаюсь. 1811 (220.84КБ) Следующая могила из села Старое Исаково Бугульминского района, если правильно помню. Надпись хорошо видно — первого мая 1901 похоронен Шулешкин Александр Трофимович, 15 июля 1835 года рождения. Фамилия удивительно знакомая, кажется, я когда-то уже с ней сталкивался, изучая историю тех мест.

Сейчас сходу нашёлся только протокол заседания Самарского губернского земского собрания от 16-17 января 1898 г. (когда-то эти места к Самаре относились), где упоминается «гласный А.Т. Шулешкин», может это он и есть — по годам подходит. Шулешкин (89.87КБ) Дальше две безымянные могилы из Нового Исакова и Дубовки Бугульминского района. Если на первой ещё угадываются какие-то полустёртые письмена, но на второй их, кажется, и не было никогда. Забытая могила, Новое Исаково (124.91КБ) Когда-то, ещё в детстве, когда мы с бабушками навещали могилы родственников, я видел только ухоженные могилы — чужие меня не интересовали, выпадали из моего поля зрения, а те, куда мы пришли конечно были ухоженными — мы за ними присматривали. И оттуда я вынес детское заблуждение, что могилы они почти вечные — если их сделали, они никуда с кладбища не денутся. Заблуждение, конечно. Новый опыт посещений кладбищ говорит об обратном: могилы умирают так же как люди. Памятники разрушаюся, кресты гниют, а чаще всего банально нехватает места и хоронят поверх старых могил, просто убирая приметы прежних.

Так что обитателю безвестной могилы в Дубовке ещё повезло — от него хоть камень остался, хоть уже и не узнать кем он был или хотя бы как его звали. Дубовка (205.67КБ)
8 комментариев
12 мая 2013 14:37

Мой «Макбук» всё

Яблоко сгнило (43.90КБ) В предпоследний день в Грузии обнаружил, что как-то умудрился повредить матрицу на своём «Макбуке», сначала она ещё как-то функционировала — мне даже удалось зарегистрироваться на рейс, но по приезде в Россию, отказала совсем — теперь на ней только разнообразные полосы, которые видно на фото.

Обзвонил различных мастеров в Казани, которые занимаются ремонтов ноутов, замена обойдётся порядка 15 тысяч — верхнюю крышку разобрать на «Эйре» тяжело, а собрать правильно в кустарных условиях невозможно, поэтому меняют целиком. Подумываю о покупке нового «Макбука» в качестве альтернативы ремонту. Только пока не знаю как перенести приложения, через «Машину Времени» мне не хочется — много мусора скопилось, проще перенести что надо, чем чистить, что не надо, а другого способа я пока не знаю.
14 комментариев
6 мая 2013 15:13

Паспорта в гостинице «Вере Палас» (Тбилиси) в открытом доступе

Забавно с безопасностью обстоят дела в гостинице «Вере Палас», что в Тбилиси. Я, конечно, поделился своей тревогой с персоналом гостиницы, надеюсь они исправять ситуацию.

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

К примеру, я нашёл паспорт своей жены: Паспорта постояльцев (25.24КБ) Очень опрометчиво как мне кажется, очень надеюсь, что никто не слил себе копии паспортов. Правда, я не очень понимаю зачем они, но слышал несколько историй (уж не знаю правдивых ли), когда по копии паспорта брали кредит, который потом приходилось выплачивать владельцу паспорта, а не настоящему заёмщику.
13 комментариев
4 мая 2013 18:31

Светящийся Мост Мира в Тбилиси

Я со вчерашнего дня в Тбилиси, вчера гуляли по городу. К сожалению, Тбилиси не раз сжигали подчистую, поэтому похвастаться множеством исторических зданий город не может (хотя они и попадаются), зато есть интересные новые постройки, например, Мост Мира (მშვიდობის ხიდი), пешеходный мост через реку Кура, недалеко от резиденции Саакашвили, действующего президента Грузии. Мост Мира (87.69КБ) Красивее всего он выглядит в темноте, к сожалению, у меня не получился снимок — по всей его длине проходят волны света. Когда мы шли по нему днём, я с удивлением обнаружил в стеклянных стенках сотни светодиодов. На снимке плохо видно, но вот эти светлые квадратики — работающие светодиоды внутри стекла. Светодиоды в Мосте Мира (26.38КБ) Удивил меня и факт их наличия, и то, что они днём тоже работали. Выглядит восхитительно. Соединены они едва заметными проводками, идущими внутри стекла горизонтально, если сильно не приглядываться, они совершенно неразличимы.
7 комментариев
2 мая 2013 08:52

Оптимизирующий транслятор Brainfuck → PHP

Грех было не запустить свою же программу из предыдущего поста на собственном стареньком (2005 года) оптимизирующем трансляторе Брейнфака в ПХП. Оказалось, оттранслировал его неправильно.

Нашёл баг (неверно транслировалась последовательность «[<]» в некоторых случаях), исправил, почистил, убрал наследие ПХП 4, ввёл небольшую новую оптимизацию и выхожил на ГитХаб.

История этого интерпретатора тянется ещё с 2001-го года и сайта bf.kzn.ru, который ныне не существует. На нём у меня работал jBF, транслятор Брейнфака на Джаваскрипт и это был первый в мире интерпретатор Брейнфака, который использовал оптимизирующие техники. Вышло аж тринадцать версий интерпретатора и он довольно неплохо уделывал аналоги.

В 2005 году я переделал его на ПХП и попробовал предложить на ПЕАР (к тому времени у меня там уже было несколько модулей), но там он не прошёл предворительный осмотр, сказали, что такой модуль не нужен.

Так он у меня и валялся в разделе «Храню», пока я не запустил сегодня на нём свою программу. Должен, кстати, сказать, что интерпретатор держит марку, например, вот вычисление числа «Пи» на моём трансляторе и интерпретаторе на Джаве:
BFi vs PHP BF (15.14КБ) Хотя, может быть, Джава просто медленно стартует.

Заодно, кстати, на своей же программе нашёл баг в расцветке Брейфака, которую я делал для библиотеки highlight.js.
Комментировать
28 апреля 2013 20:47

JavaScript, совмещённый с Brainf*ck: «hello friends»

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

Я давно уже заметил, что это сильно похоже на язык Брейнфак. Давно хотелось попробовать смешать эти два языка в одном листинге. Со стороны Брейнфака всё довольно гладко — надо только балансировать квадратные скобки (но Джаваскрипт требует того же) и избегать вечных циклов (тут уже сложнее, так как листинги на запутанном Джаваскрипте часто требуют пустых циклов), незнакомые символы этот язык пропускает. В Джаваскрипте синтаксис построже, там нужно было помучаться больше.

Получилась следующая программа (используется расцветка для Брейнфака, чтобы было видно какие части программы он пропускает):
($=!{}+[/-/]+/\+@+@+!+/)[-!{$:/>/+/!+>/+/<</}]+
(_=!-{}+[-$]+/>/)[-~(/>[->+>+<<]>>[-<+<+>>]<<</)]+
(_$=[-$][-{}]+[-$]+/>>/)[$$=-(~-~$+~-~$-!+{$:/!+>+>+>+>+>+<<<<</})]+
_[$$+=~-~{$:/[->++++>+>++++++++>++++++++>+++++++++++[<]]/}]+
_$[-~{}]+
_$[$$+~{_:-$>/[.>]/}]+
$[-+-$$]
Оба интерпретатора выполняют её с разным результатом, Брейнфак выводит «hello», а Джаваскрипт — «friends»:
bolk@Bolk ~$ ./brainfuck <(echo '($=!{}+[/-/]+/\+@+@+!+/)[-!{$:/>/+/!+>/+/<</}]+(_=!-{}+[-$]+/>/)[-~(/>[->+>+<<]>>[-<+<+>>]<<</)]+(_$=[-$][-{}]+[-$]+/>>/)
[$$=-(~-~$+~-~$-!+{$:/!+>+>+>+>+>+<<<<</})]+_[$$+=~-~{$:/[->++++>+>++++++++>++++++++>+++++++++++[<]]/}]+_$[-~{}]+_$[$$+~{_:-$>/[.>]/}]+$[-+-$$]')

hello

bolk@Bolk ~$ v8 -e 'print(($=!{}+[/-/]+/+@+@+!+/)[-!{$:/>/+/!+>/+/<</}]+(_=!-{}+[-$]+/>/)[-~(/>[->+>+<<]>>[-<+<+>>]<<</)]+(_$=[-$][-{}]+[-$]+/>>/)
[$$=-(~-~$+~-~$-!+{$:/!+>+>+>+>+>+<<<<</})]+_[$$+=~-~{$:/[->++++>+>++++++++>++++++++>+++++++++++[<]]/}]+_$[-~{}]+_$[$$+~{_:-$>/[.>]/}]+$[-+-$$])'

friends
Повозиться пришлось прилично, если честно, некоторые конструкции ДжЭс делит с Брейфаком (большинство квадратных скобок), а кое-где торчат чистые инструкции Брейнфака, засунутые в те места программы, где они не могут помешать своему соседу. Пустые циклы, которые образуются квадратными скобками я старался сводить к операции зануления ячейки („[-]“), сильно мешали плюсы, используемые в Джаваскрипте для объединения букв — они увеличивали содержимое ячейки в Брейнфаке на единицу, это приходилось учитывать.

Слово «friends» я выбрал потому что его легко записать:
"false"[0]+"true"[1]+"undefined"[5]+"true"[3]+"undefined"[1]+"undefined"[2]+"false"[3]
Принцип я когда-то более-менее подробно разбирал.
Комментировать
28 апреля 2013 15:44

ГЛОНАСС

Как мне видится, ГЛОНАСС имеет огромное значение для обороноспособности страны. По спутникам сейчас ориентируется много военной техники — корабли, ракеты и прочее. В случае военного конфликта вероятный противник выключит ГПС или, что ещё хуже, начнёт врать в координатах и, привет, приехали.

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

Но мне было интересно — а бывают ли ситуации, когда ГПС вообще не ловится, а ГЛОНАСС виден и вчера, на демонстрации татарстанской системы «ГЛОНАСС+112» я поймал редкий кадр — трекер на машине медицинской помощи не смог поймать спутники ГПС, но поймал четыре спутника ГЛОНАССа: 4 ГЛОНАССа, 0 ГПС (109.75КБ) Так что, оказывается, и нам, гражданским, бывает польза от ГЛОНАССа.
20 комментариев
27 апреля 2013 16:02