Работа из командной строки с модемом на Toshiba AC-100

Одна из задач, которую я хочу решить дома — слать СМС, если произошло что-то непредвиденное дома. Ближайшая задача — СМС, если уровень СО2 повысился выше нормы или произошло повышение температуры выше 40° (т. е. дома что-то горит).

С датчиком я определился, расскажу как-нибудь в другой раз, разбираюсь как можно отправить СМС по событию. У меня дома лежит не при деле смартбук Тошиба ЭйСи-100, на который я относительно недавно установил Линукс.

Что хорошо — у него есть 3Г-модем, а значит возможность слать СМС, осталось научиться это делать. Для начала надо найти как это устройство отображается в Линуксе. Нашёлся модем быстро, устройство F3307 — это модем фирмы Эрикссон (до названия идут какие-то странные спецсимволы):

Модем фирмы Эрикссон (43.48КиБ)

В логах видно, что это устройство «се́ло» на один из файлов /dev/ttyACM* (позднее испытания показали, что на первый):

Логи (26.19КиБ)

С этими файлами работать просто — нужно отослать команду, потом передать возврат каретки, перевод строки и символ с кодом ноль. Потом прочитать что устройство ответило.

# Нужен баш версии 4 и выше
shopt -s lastpipe

function Say {
    echo -en "$1\r\n\0" > /dev/ttyACM1
    local line
    cat -v < /dev/ttyACM1 |
    while read -r line; do
        [ "$line" = OK^M ] && return 0
        [ "$line" = ERROR^M ] && return 1

        [ "$line" = ^M ] || echo "${line/%^M/}"
    done
}

# пример использования
Say AT+CGMI

В выходном потоке будет ответ модема, а в коде возврата — есть ли ошибка. Гугление показало, что отослать СМС при помощи команд очень просто, достаточно ввести две команды.

Теперь надо купить симку и попробовать.

20 комментариев

Оптимизация картинок поворотом

Есть такой старый трюк, который с развитием CSS получил новое прочтение. Дело в том, что при упаковке изображения в графические форматы, в основном, сканируют и упаковывают изображение, двигаясь по его линиям слева направо. Первом об этом на русском языке написал, думаю, Лебедев, вот что написано в книге «Реактивные вебсайты», соавтором которой я являюсь:

Изображения GIF хорошо поддаются оптимизации. В параграфе №8 «Ководства» Артемия Лебедева есть небольшое, но интересное исследование особенностей этого формата. Вывод из параграфа простой: чем больше на картинке горизонтальных линий одного цвета, тем лучше сжимается изображение. Алгоритм компрессии LZW, применяемый в GIF, вообще лучше сжимает регулярные горизонтальные структуры в пределах одной линии.

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

Но не всегда так везёт, гораздо чаще, согласитесь, встречаются изображения, которые повернуть нельзя. Значит о способе забываем?

Вот тут нам и пригодятся нововведения в ЦСС. Берём свою картинку, сохраняем ещё три копии повёрнутые на 90°, 180° и 270°, а потом все четыре изображения оптимизируем, выбираем то, которое меньше занимает. А дальше просто поворачиваем его при помощи ЦСС (я ещё фильтр для старых ИЕ добавил и некоторые свойства для других браузеров):

.rotate90 {
    filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); /* IE 5.5+ */
    -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; /* IE 8 */
    -ms-transform: rotate(90deg); /* IE 9 */
    -o-transform: rotate(90deg); /* Opera 10.5+ */
    -webkit-transform: rotate(90deg); /* Chrome, Opera 15+, Safari 3.1+, Android 2.1+, iOS 3.2+ */
    -moz-transform: rotate(90deg); /* FF 3.5+ */
    transform: rotate(90deg); /* FF 16+, IE 10+, Opera 12.1-14.99 */
}

Картинка поворачивается браузером и визуально остаётся как была.

Вообще, конечно, можно поворачивать на любой угол, если фон картинки прозрачный или совпадает с окружающим фоном, но в старых ИЕ для этого придётся использовать другой фильтр — Matrix, формула расчёта параметров такая:

progid:DXImageTransform.Microsoft.Matrix(
  M11 = cos(угол),
  M12 = -sin(угол),
  M21 = sin(угол),
  M22 = cos(угол),
  sizingMethod = 'auto expand'
);

Метод не лишён недостатков, конечно. Во-первых, всё это может сказаться на производительности, особенно в старых Эксплорерах (в последнем даже сомнений нет — скажется). Во-вторых, как видно из версий, которые я добавил в ЦСС, не все версии браузеров поддерживают поворот, правда их доля совсем невелика и продолжит снижаться.

15 комментариев

Вертолёт разбился, никто не убился

Сломанная крестовина (72.89КиБ)

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

Всё в порядке с электроникой, но сломалась крестовина. Новая стоит около 1,5 тысяч. Я подумал, что смогу попробовать её починить, взял металлическую пластину, оставшегося от отделки квартиры, просверлил в ней две дырки и скрепил всё саморезами.

Скреплённая крестовина (60.49КиБ)

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

Я ещё не пробовал провести полёт на открытом пространстве, может быть я сумею управлять и таким аппаратом, но скорее всего придётся купить новую крестовину.

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

8 комментариев

Сто лет спустя

Жарко, не спится, да ещё и какая-то научная фантастика приснилась, причём такая детальная, я аж совсем проснулся.

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

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

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

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

Исчезла так же вся пищеварительная система, а так же органы дыхания, их заменяет сонм наномашин, которыми человек того времени забит под завязку, именно они превращают СО2 обратно в кислород, разбираются с продуктами распада и занимаются питанием организма.

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

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

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

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

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

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

А ещё я видел свою кожу без костюма, зрелище малоаппетитное — сморщенная, белесая, кстати, ещё волос нет нигде. Ладно, пойду спать, назад в будущее.

37 комментариев

Под водой

Таймер (20.55КиБ)

Решил потренировать задержку дыхания под водой, когда-то мне удавалось продержаться почти три минуты, а сейчас получается чуть больше минуты. Посмотрел на Апп Сторе таймеры для «Мака», ничего толкового и бесплатного не нашёл. Мне всего-то надо было где-то удобно отмерять время.

Написал таймер сам, на баше. Запускается в консоли, прерывается по комбинации Ctrl+C, любая другая клавиша — сохранение на экране промежуточного результата.

Кроме того, мой таймер произносит сколько минут прошло — «one minute», «two minutes» и так далее, а каждую половину произносит слово «middle».

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

8 комментариев

«Докер» — хороший хостер

Докер (29.42КиБ)

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

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

Мне пришло в голову, что я незаслуженно редко говорю им «спасибо» за качественную работу, потому исправляюсь. Спасибо!

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

21 комментарий

Сколько нужно пользователей «Мака», чтобы ввинтить 60-ваттную лампочку в цоколь E27?

До АйБиЭм-совместимых, когда их тогда принято было называть, компьютеров, у меня был доступ к Радио-86РК (спасибо дяде) и собственный на базе «Спектрума» (спасибо родителям).

Ко времени, когда у меня появился первый IBM PC (всё что я помню — процессор 80286, жёсткий диск то ли 20, то ли 40 мегабайт), я уже знал, что в этом мире царит удивительное разнообразие — разные процессоры, видеокарты, звуковые карты и так далее.

Потом дома появился компьютер на 80386, далее 80486, первый «Пентиум», первый СиДи-РОМ, компоненты менялись, отличия мне были интересны, я знал что такое DX и SX, чем адаптер Hercules отличается от VGA, что такое EGA и CGA.

Потом стал вникать в различие между производителями. Диски Western Digital, видеокарты Matrox, модемы ZyXEL.

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

Когда у меня случилась потеря интереса к компьютерным играм, я не помню. Я иногда во что-то поигрываю, но это всё — редко интерес к игре длится более нескольких дней и это по большей части «казуалки». Помню, что на первых курсах Университета (1996-98 гг.), я ещё играл.

Технологическая база компьютеров к тому времени настолько разрослась, что запоминать и изучать это всё можно только по какой-то достаточно серьёзной причине, у меня же никакого интереса к этой области не сохранилось. Эта область для меня давно уже не новинка, а что там потянет мою очередную «казуалку» можно не беспокоиться — её сейчас потянет всё, включая мой смартфон.

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

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

Пользователей «Маков» прямо-таки обвиняют в том, что они не интересуются характеристиками своей техники. Когда я впервые сел за «Макбук», то почувствовал это в полной мере. При этом мои визави ни разу не смогли объяснить мне зачем вообще это знать. Мне же́ неясно почему этот факт вообще у кого-то вызывает какие-то эмоции.

Какая у тебя матрица? (73.82КиБ)

Ну да, пользователи «Маков» часто не знают всех этих характеристик, а зачем их знать? «Маки» редко покупают для игр, обычно это работа (графика, звук) или простые бытовые занятия (создать пару документов, посидеть в интернете).

Я бы мог потроллить вопрошающих, спросив знают ли они какие цоколи ламп в каждой люстре у них дома или как называется стандарт розеток, в которые они каждый день втыкают вилку своего компьютера, но как правило я просто соглашаюсь — действительно, я не знаю, например, какой у меня тип памяти в ноуте и чем отличается Кор Ай5 от Ай7.

Ну и что?

39 комментариев

Windows XP живее всех живых

Windows XP (105.07КиБ)

Сериал «Светлячок», действие которого происходит в 2517 году. На экране управления мусоровозом — Виндоуз ЭксПи (если не ошибаюсь), мастер настройки принтера. Так что, ребята, эта ОС (и шестой эксплорер с ней), не умрёт никогда, по предсказанию фантастов!

8 комментариев

Пост ругани на S7

Вчера летел из Домодедова самолётом компании «С7». В Домодедове творился ад — на первом этаже людей было, как сельдей в банке, самолёты летели с большими задержками, у нас рейс задержали на 3,5 часа. Духота, сесть негде, я старался притереться поближе к открывающимся иногда выходам, чтобы глотнуть воздуха.

Все 3,5 часа приходилось ловить сотрудников компании и выпрашивать у них информацию — почему задержка, что случилось, когда полетим (на табло вылетов все 3,5 часа высвечивалось «информация ожидается»)?

В итоге, какой-то более разговорчивый сотрудник пояснил, что в аэропорту какой-то сбой с обеспечением самолётов питанием для пассажиров, поэтому вылет состоится когда питание всё-таки загрузят.

Всё оставшееся время я ловил сотрудников «С7» и объяснял, что пассажирам всё равно есть ли там питание, если выбор — его загрузка в течении часов или вылет немедленно. Пилотов я обещал накормить за свои деньги.

Возможно, мои слова где-то были услышаны или просто кто-то в руководстве подумал так же, но нас в самолёт всё-таки усадили и по громкой связи предложили альтернативы: вылететь немедленно без питания или ждать ещё час. Естественно, мы выбрали первое.

Так вот, я считаю, что сотрудники компании «С7» повели себя тут как пидорасы в плохом смысле. Надо было выйти к пассажирам, объяснить ситуацию, предложить вылететь вовремя без обедов, а деньги за стоимость обеда — вернуть.

35 комментариев

AR01-220 IP20

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

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

Датчик (74.76КиБ)

В общем, задумался я об автоматизации процесса заботы о здоровье. Китай, как не странно, меня не выручил — найденная масса датчиков оттуда, либо просто бессильно пищит на дым, либо обладает оптореле на что-нибудь низковольтное, а у меня вертилятор, питающийся от 220В.

Нашёл пару российских фирм, выпускающее то, что мне нужно — датчик сигаретного дыма с регулировкой чувствительности, который умел бы управлять устройствами, питающимися от 220В. Первая фирма не работает с физическими лицами, потому отвалилась, вторая НПП «Эконикс» проблему в этом не увидела и я банковским переводом в 5,5 тысяч оплатил средство сделать жизнь лучше. Доставка в Казань обошлась всего в 250 рублей.

Датчик питается от сети в 220В, что очень хорошо — не нужен отдельный блок питания, крепится на ДИН-рейку (у меня сейчас просто лежит сверху на водонагревателе, поближе к вентиляции) и имеет два управляющих выхода — неинтересное мне оптореле (100В, 0,15А) и «механическая» релюха (220В, 10А), которую я подрядил на управление вентилятором.

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

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

44 комментария

X10: управление домом

Неспешно смотрю протокол Икс10 и аналоги. Кто не знает — это управление всяческой техникой по проводам электрической сети. Если кто занимался этим вопросом, подскажите, пожалуйста.

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

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

14 комментариев

AR.Drone 2.0 фирмы Parrot

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

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

И я с завистью смотрел на ребят, запускающих любительские модели, поднимающие в воздух камеры. А недавно узнал о существовании AR.Drone 2.0 фирмы «Паррет». 2.0 — это номер версии, от первой отличается улучшенной фрональной камерой (1280×720 против 640×480), наличием компаса, барометрического альтиметра и характеристиками моторов.

AR.Drone 2.0 фирмы Parrot (399.68КиБ)

В комплекте идёт два корпуса (для полётов внутри помещений и на воздухе, последний меньше весит, а значит время полёта чуть больше), сам летательный аппарат и аккумулятор. Покупку мы делали в «Медиамаркте». Поскольку я в интернете при менеджере нашёл такой же аппарат, но продающийся в «М.Видео» дешевле, то мне ещё подарили запасной корпус для полётов внутри помещений (он 2,5 тысячи стоит).

В полёте (63.72КиБ)

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

Я управляю (197.01КиБ)

Аккумулятора хватает минут на 15 полёта, так что вместо запасного корпуса надо было брать запасной аккумулятор, зарядка занимает примерно 1,5 часа. Дальность — примерно 50 метров, послав дрона далеко вперёд, легко его больше не найти — теряя сигнал он снижается и если вы летали надо полем пшеницы, то вряд ли его найдёте, я в траве искал минут 10. Так что устройству отчётливо нехватает СОС-маяка.

Пока хорошо управлять им я не научился, на высоте дуют другие ветра и там его всё-таки сносит, но уже несколько фотографий сделал, две лучшие выкладываю:

Фото купола (154.13КиБ)

Это, если кому-то интересно, кстати церковь Иоанна Златоуста 1732 года, которая находится в селе Ивановское Верхнеуслонского района Татарстана.

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

Второе фото купола (117.75КиБ)

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

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

14 комментариев

Павел Степанович Стрелков

Удивительно. В одну из поездок к родителям я посетил кое-какие кладбища, где могли лежать мои предки. В том числе был в Старом Исакове Бугульминского района, там я нашёл могильный камень некого Шулешкина Александра Трофимовича, который умер 1 мая 1901 года. Я его даже сфотографировал:

Погребальный камень с надписью «Здесь погребено тело жены моей Елены Ивановны, умершей 15-го мая 1845 года, в возрасте 30 лет
Могила Шулешкина

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

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

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

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

Интересно, что по меньшей мере до 1900 года фамилия у этой семьи не упоминается, а вот в 1908 в записи о рождении их дочери, оба родителя записаны как «Шапкины», причём эту фамилию я слышал как о наших родственниках, степени родства с которыми никто не помнит.

Историк, который для меня изучает архив, считает, что в 20-30-е мои предки сменили фамилию на «Стрелковы», говорит такое часто случалось, правда в моём случае причина не ясна.

9 комментариев

Пятничная загадка для PHPшников

В ЖЖ увидел прекрасное — загадку про ПХП.

Те, кто знает этот язык, скажите, почему этот код не выдаёт ошибок или предупреждений (все ошибки, конечно, включены):

<?php
//bolknote.ru
?>

16 комментариев

Лучше сова в руках, чем жаровонок в небе

В Твиттере интересуются моими «экспериментами» по преобразованию меня в «жаворонка».

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

Напоминаю чем отличается «сова» от просто ленивого человека: если «сова» встаёт раньше положенного, то почти всё утреннее время она будет тупить. В моём случае совсем всё плохо, самое плодотворное у меня время — после 8 вечера, а в десять мне уже желательно лечь спать.

Второе — вставать очень тяжело.

От утреннего тупняка мне никуда не деться, а чуть-чуть облегчить жизнь со вставанием по утрам получается. Совета всего три: режим, плотные шторы, утренний душ.

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

7:00 — подъём (никаких вторых и третьих будильников, встаю сразу) 7:05 — лёгкий завтрак 7:15 — душ (в моём случае — ванна, душ я не люблю, ванну — люблю, вода почему-то помогает чуть проснуться) 7:30 — конец водных процедур 7:35 — чтение новостей, утренней почты 7:45 — вызываю такси, собираю сумку, делаю мелкие вещи по дому, одеваюсь 8:00 — выхожу из дома к такси (тут время варьироваться может, в зависимости от такси)

Кроме того, в выходные я позволяю себе расслабиться, но не «отоспаться» — это, похоже, скорее вредит. Встаю часов в 9—10, очень редко позже, только если плохо себя чувствую.

Плотные (совсем не пропускающие свет) шторы мне посоветовал кто-то из читателей. Спасибо, я приобрёл. Засыпать стал лучше, это помогает лучше высыпаться.

37 комментариев

ReactOS/Windows *CriticalSection API → Linux

Вчера портировал часть «РеактОС» под Линукс, пришлось разобраться что делает небольшой фрагмент АПИ Виндоуз («РеактОС» — это операционная система, совместима с Виндоуз).

Функции оказались небольшими, но вдруг кому-то время сэкономит:

#include <pthread.h>

inline void InitializeCriticalSection(CRITICAL_SECTION *cs)
{
    pthread_mutexattr_t mAttr;
    pthread_mutexattr_settype(&mAttr, PTHREAD_MUTEX_RECURSIVE_NP);
    pthread_mutex_init((pthread_mutex_t *) (void *) cs, &mAttr);
    pthread_mutexattr_destroy(&mAttr);
}

inline void DeleteCriticalSection(CRITICAL_SECTION *cs)
{
    pthread_mutex_destroy((pthread_mutex_t *) (void *) cs);
}

inline void EnterCriticalSection(CRITICAL_SECTION *cs)
{
    pthread_mutex_lock ((pthread_mutex_t *) (void *) cs);
}

inline void LeaveCriticalSection(CRITICAL_SECTION *cs)
{
    pthread_mutex_unlock ((pthread_mutex_t *) (void *) cs);
}

После этого все другие обращения к структуре CRITICAL_SECTION нужно, конечно, убрать, иначе код будет падать.

3 комментария

При царях Горохах

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

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

Джин Вульф. «Воин тумана».

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

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

5 комментариев

Конец Гугл Ридера

Первого июля Гугл закапывает очередной полезный проект — Гугл Ридер. Если кто вдруг не знает, это читалка РСС. Я этим проектом пользовался с момента появления, каждый день по многу раз. Не забудьте положить цветочек на виртуальное кладбище продуктов Гугла.

Это в определённой степени подрывает доверие к Гуглу и идее веб-приложений вообще, так как это онлайн-продукты, дело не кончается тем, что продукт перестаёт обновляться, он перестаёт существовать. Пользователи тратят время на выбор и сравнение с аналогами, самообучение, настройку и прочее, а потом он просто исчезает и надо искать что-то новое.

Я так ничего и не смог выбрать взамен. Есть идеи куда переходить после первого июля?

84 комментария

Неонилла

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

Хочу доложить. Хобби не забросил, на данный момент в дереве 1752 человека, это, конечно, в основном, «в ширину». Если считать меня нулевым поколением, то все ветви уже достигли пятого поколения, некоторые (уже в приличном количестве) — шестого.

Появилось новое интересное имя — Неонилла (от греческого «Νέος», «новый») (как утверждает «Википедия») имя редкое, родственное ему хорошо нам знакомое имя Неля.

Неонилла Ивановна Старостина — моя вероятная прапрапрабабушка (пока это выясняется).

6 комментариев