Походное кресло

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

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

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

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

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

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

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

Нечётные числа: uint32_t

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

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

Заодно попробовал в действии функции __builtin_*_overflow, позволяющие использовать математику с контролем переполнения. Я только недавно задумался о том, что они должны бы быть в языке, а до этого переполнение я проверял дедовским способом — смотрел не стал ли результат меньше аргумента.

Обобщённое программирование выглядит следующим образом:

#define PRINT_U(x) ({ \
    _Generic((x), \
        uint128_t: printf_u128, \
        uint64_t: printf_u64, \
        uint32_t: printf_u32 \
    ); \
})(x)

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

static void printf_u128(const uint128_t v) {
    unsigned long long low, high;

    #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
        low  = MASK64(v);
        high = MASK64(v >> 64);
    #else
        high = MASK64(v);
        low  = MASK64(v >> 64);
    #endif

    printf("0x%016llX%016llX\n", high, low);
    fflush(stdout);
}

static inline void printf_u64(const unsigned long long v) {
    printf("0x%016llX\n", v);
    fflush(stdout);
}

static inline void printf_u32(const unsigned int v) {
    printf("0x%08X\n", v);
    fflush(stdout);
}

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

Функции переполнения у меня используются вот так:

#define MUL2_ADD1(x) ({ \
    typeof(x) y; \
    __builtin_mul_overflow(x, 2, &y) || __builtin_add_overflow(y, 1, &y) ? 0 : y; \
})

Были сомнения будут ли они работать с 128-битным типом, как я уже писал он какой-то неполноценный, но, к моему удивлению, всё работает прекрасно.

Любопытно, что мой ноутбук на процессоре M3 Max справился с перебором за 57 минут, тогда как компьютер с Intel Core i9-9820X на частоте 3,3 ГГц — за 168 минут. Это на одном ядре, разумеется. У меня в планах сделать многопоточность, но пока недосуг было.

В результате нашлось 14434686 значений, из них нечётных подряд — 172 значения, потом появляются «дырки».

Оставить комментарий

Нечётные числа: прогресс

Пока по поиску нечётных чисел прогресс такой. Программа работает уже чуть больше 25 часов. Самое большое найденное на этот момент число — 340281726619687019118949463859138658303 или 0xFFFFE06E43129C9EBA1E335BA7FFFFFF в шестнадцатеричном виде. Как мы видим, предел точности близок.

Всего пока найдено 36,5 миллионов чисел, список чисел занимает 1,2 гигабайта.

Скриншот вкладки «Память» macOS: процессы (iTerm2, odds, Sublime Text) с потреблением ресурсов. Снизу: физическая память 36 ГБ, использовано 21,97 ГБ, кэш 10,04 ГБ, своп 0 Б.
odds — это моя программа по перебору чисел. Как видно, оперативной памяти занято совсем немного

Добавлено: на 41-й час работы найдено почти 46,5 миллионов чисел, максимальное число пока то же самое.

Добавлено: 44-й час работы. Что-то меня немного задолбало уже. Я надеялся, что все все ветки достаточно быстро упрутся в ограничение точности, но судя по найденному к текущему моменту, до конца ещё далековато. Думаю я не дождусь.

Тепловизионное изображение ноутбука: клавиатура и область над ней нагреваются до 50,9°C и 77,5°C, чашка справа — 15,5°C.
А это мой ноутбук, который уже два дня молотит эти самые числа. Внутренние датчики показывают температуру около 60°C

Добавлено: 48-й час работы, найдено 50,1 миллиона чисел.

Добавлено: 63 часа работы, найдено 57,3 миллиона чисел, новое самое большое число — 0xFFFFE0EC9B9F17FFFFFFFFFFFFFFFFFF или 340281736629840009040727513758703812607.

Оставить комментарий

Нечётные числа

Что же я там считаю такое, что мне понадобились 128-битные числа? Сейчас расскажу.

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

Рукописные математические записи на листе бумаги:  \in X$, x \in X \Rightarrow x \in X$, $x \in X \Rightarrow (2x+1) \in X$, и фраза «натуральные числа».

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

Дано множество X. Единица принадлежит X. Если 3×x принадлежит X, то и x принадлежит X. Если x принадлежит X, то и 2×x + 1 принадлежит X. При этом x — натуральное, разумеется.

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

Упомянутый коллега у себя в университете при помощи студента, Фортрана и Пролога пытался проверить эту теорему по следующему алгоритму.

Берём число, например, «9». Оно могло быть получено, согласно перечисленным утверждениям, двумя путями: либо какое-то другое нечётное число умножили на два и прибавили один, либо умножили на три. Поэтому надо проверить по формулам откуда мы могли попасть в это число, отсекая циклы и останавливаясь, когда мы попадаем в чётные числа.

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

В общем, я решил с этой задачкой побаловаться.

Для начала написал программу, которая вычисляет эти числа перебором. Начинаем, понятное дело, с единицы, следующее число получаем по формуле 2×x + 1, потом, пока число делится на три, делим и выводим эти числа, считая для каждого ещё и  2×x + 1 и так далее. Кроме того, пришлось ещё запоминать все найденные числа, чтобы избегать циклов.

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

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

128-битный тип в Си

В одной из программ на Си мне понадобился 128-битный тип — хранить большие числа. Такой тип в некоторых компиляторах есть давно, правда, пока не было стандарта, он как только ни назывался — __int128_t (GCC 4.1+), __int128 (GCC 4.6+), _ExtInt(128) (Clang). Теперь у нас появился стандарт Си23, где этот тип называется _BitInt(128).

Мой компилятор _BitInt(128) прекрасно поддерживает, казалось — счастье так близко, но…

Каково же было моё удивление и разочарование, когда оказалось, что в языке нет ни способа вывести его на экран (у printf нет необходимого спецификатора формата), ни способа задать константу такого размера!

В 2024-м году мне приходится писать собственную функцию для вывода чисел в одном из стандартных типов! А константы задавать вот так:

( (_BitInt(128) ) 0xFFFFFFFFFFFFFFFF << 64) | 0xFFFFFFFFFFFFFFFF

Какая-то удивительная для Си неконсистентность!

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

Батарейки CR2032 ★

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

А тут недавно в одном из каналов попалась ссылка на тестрирование батарей CR2032. У меня на картинке лишь вершина айсберга, загляните сами — разница между лидером и аутсайдером в 11 раз! Что, кстати, неплохо укладывается в мои ощущения в год и месяц работы.

Горизонтальная диаграмма ранжирования брендов батареек по результатам теста: Nanfu (615.5, 100%), Фотон (595.1, 97%), Renata (588.1, 96%) и другие до Daewoo (395.8, 64%).

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

Из хорошего. Приятно удивили батарейки «Фотон» — они на втором месте, что тоже логично — подделывать местный бренд опаснее. Буду теперь, пожалуй, покупать именно их.

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

7000 и кафе ★

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

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

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

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

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

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

PowerShoot

Мужчина идёт мимо двух фиолетовых инопланетных существ, справа — красный прямоугольник с цифрой 12.

Ну что-то совсем скучно болеть дома. Мозг, конечно, почти не работает, тем не менее, чем-то развлечься хочется. Чтобы как-то себя порадовать, написал на Си мини-шутер под названием «PowerShoot». Запускается из терминала, для вывода используются символы Юникода.

Играть, правда, получится только на «МакБуке». Думаю, несложно будет адаптировать игру под терминал любой операционной системы, было бы желание.

Геймплей простой — на вас бегут враги, надо убивать их бомбами. Игрок бросает бомбу, когда «МакБук» подключается к зарядке. Чтобы бросить две бомбы, надо подключить его, потом отключить, потом снова подключить.

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

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

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

Заболел

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

Полежу до конца недели дома, надеюсь быстро поправлюсь.

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

Шахматы: разобрали мат ладьёй

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

Складная шахматная доска с белыми и чёрными фигурами на деревянном столе; часть фигур разбросана рядом.

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

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

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

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

Пальцы Ёлки: контраргументы

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

Две фотографии руки с тёмным маникюром на чёрном глянцевом объекте; под постом TeleBolkNote — комментарий Дмитрия Сивухина: «Выглядит убедительно, а с сухожилиями тоже всё норм?

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

Напоминает старые-добрые времена, когда люди ставили не просто эмоции под постом, а пытались словами донести до собеседника что же именно им понравилось или не понравилось.

Комментарий пользователя melkiythegreat от 9 декабря 2024 года с фото женщины в чёрном платье и подписью «Похоже у нее действительно такие руки».

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

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

Casio WQV-3 и виртуалка

Ура! Дело было не в бобине! Наконец-то удалось соединить часы и «Виндоуз ЭксПи» внутри эмулятора. Я думал, что дело в том, что я взял неудачный дистрибутив, но оказалось, что виноват приёмопередатчик или, скорее всего, драйвер к нему.

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

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

Зелёная печатная плата с электронными компонентами, подключённая к серому USB-кабелю, лежащая на жёлтом ворсистом ковре.

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

Скриншот WQV Link Ver.2.0: импорт файла WQV20240721_002.jpg (6885 байт, 21.07.2024 08:52) с часов.

Оставить комментарий

Пальцы Ёлки

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

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

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

Судя по информации в «Википедии», это альбом 2011-го года и, по всей видимости, все эти годы всем кажется нормальным, что у Ёлки какой-то фотошопер нарисовал на левой руке все пальцы примерно одинаковой длины. Включая саму Ёлку. И это несмотря на распространённое мнение, что девушки очень придирчивы к тому как они получились на фото.

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

Продолжение турнира по шахматам у дочки

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

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

В эти выходные у нас в планах была туристическая поездка в Елабугу, причём там был оплачен отель по невозвратному тарифу. Поэтому мы съездили, но сегодня встали в шесть утра, чтобы успеть к началу следующих туров.

Ребёнок с кудрявыми волосами в синем рюкзаке стоит спиной к зрителю перед огромным раскрытым манускриптом с арабским текстом, выставленным на зелёной стене в музее.
Дочка рассматривает Коран, написанный волоском месячного котёнка, выставленный в Музее редких коллекций в Елабуге

Первую игру она выиграла, взяв противника измором. У него оставался король, а у Евы король и ладья. Как с их помощью поставить мат она не знала, поэтому просто гоняла его по доске, пока тот не устал настолько, что мало-помалу сделал три невозможных хода. По правилам это поражение.

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

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

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

Оставить комментарий

Прошлое: Дни Интернета в Казани ★

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

А. Х. попросил меня помочь, но сначала мне пришлось отказаться — меня ждали на встрече. Позже выяснилось, что встречу передвинули и у меня есть минут 15—20, чтобы спринтом пробежаться по памяти и чем-нибудь поделиться.

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

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

В интернете об этом упоминаний не сохранилось, но кое-что можно наковырять в веб-архиве, в частности на сайте передачи «Система 104».

Таблица: 15 окт — розыгрыш билета на День Интернета, 8 окт — передача, 1 окт — сюрприз, 24 сен — Степанищев о безопасности.

Я был на двух «Днях». Один из них проводил на свои деньги известный тогда в казанском интернете деятель Daddy Hab, а второй, если мне не изменяет память, провайдер «Сантел-интернет», ныне несуществующий. Но может и не он.

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

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

Как пошутил А. Х., я делился файлами через облако до того как это стало модным.

Разумеется я не помнил этого в таких подробностях, но вчера написал Артемию, в надежде, что у него осталось это письмо и не обманулся — он мне его переслал, после чего эта история проступила в памяти более ясно.

Скриншот письма от 25 октября 1999 года от Степанищева Евгения к теме@tema.ru с темой «День Интернета. 3-я попытка. :)» и ссылками на файлы флайера в разных форматах.

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

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

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

UTM и Casio WQV-3

Окрылённый успехом с часами Casio WQV-3 (теперь я могу переписывать фотки на ноутбук с «Виндоуз ЭксПи»), вернулся к идее развернуть систему в эмуляторе на своём ноутбуке. Со времён, когда меня преследовала идея посмотреть на систему PERQ, у меня осталось впечатление, что скорость в этом случае будет низкая, лучше и не пытаться. Напомню, что у меня на ноуте процессор с совершенно другим набором команд и вместо виртуализации приходится использовать эмуляцию.

Но, во-первых, в тот раз я ставил достаточно свежую «Винду», а сейчас мне достаточно «ЭксПи», она менее требовательная, во-вторых, при обновлении UTM в списке изменений мелькнуло что-то про то, что он теперь умеет использовать «Розетту» — встроенный в «Макось» эмулятор процессоров интеловского семейства, скорость работы которого выше всяческих похвал.

Ошибка WQV Link Ver.2.0: «The Wrist Camera could not be found... Check the IR ports... make sure that the Wrist Camera is in the IR Mode».
Полный крах всех надежд, шесть букв, вторая «и»

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

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

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

Bash HTTPd

У писателя Леонида Каганова, который в последние годы ушёл в айти, началась какая-то полоса невезения. Много чего случилось, пересказывать долго, а сослаться пока некуда — ко всем неприятностям у него ещё и сайт перестал работать.

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

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

Обошлись без веб-сервера, но пока суд да дело, выяснилось, что у меня на ноутбуке этот башевский сервер не работает — у меня «Макось», а у местной утилиты nc нет ключа -c при помощи которой можно указать команду для обработки данных из сокета.

Скрипт на bash, реализующий простой HTTP-сервер на порту 8080 с помощью netcat, который отдаёт файлы или генерирует HTML-список директорий.

В общем, мне стало как-то обидно, что автор оригинального кода обошёл вниманием «Макось» и я написал свою реализацию через команду coproc, которую до этого использовать не умел. Вот и появился повод изучить.

В процессе код стал занимать меньше места (моя минифицированная версия на 25 байт короче), научился обрабатывать имена, содержащие пробелы и национальные символы и заработал не только под «Линуксом», но и под «Макосью».

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

Лица

Твит от @heh_not_hehe: диалог о звонке от «Билайна» с просьбой продлить номер, где мошенник использует SMS от Госуслуг, чтобы обмануть жертву, называя себя «2е», а жертву — «1е».

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

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

Тип «‟char”»

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

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

Оставить комментарий

Снимки с Casio WQV-3

Боже мой, я прямо не верю! Успешно удалось переписать фотографии с часов! Спасибо одному из читателей, который каким-то чудом нашёл страничку на «Народе», где можно скачать драйвер, с которым всё, как по волшебству, заработало! Подошёл драйвер в архиве с названием Driver_XP_NT.rar.

В итоге, чтобы переписывать снимки с этих часов, необходимо следующее:

  1. собственно часы;
  2. программа Casio WQV Link 2;
  3. компьютер или виртуалка с ОС, на которую эта программа поставится; я ставил Windows XP;
  4. адаптер IrDA, на которые надо найти драйвера; на мой Ark3116T (PCIID: 18EC 3118) драйвера нашлись.

Подсоединяем адаптер IrDA к компьютеру, запускаем Casio WQV Link 2, открываем там контрольную панель, кнопкой сверху выбираем папку, в которую будут сохраняться картинки, кладём часы напротив адаптера, запускаем там передачу (Select → Select → IR Beam), нажимаем в контрольной панели «Save All».

После этого снимки можно посмотреть в указанной папке.

Окно программы Control Panel с превью фото, списком файлов WQV и датой 2024/10/31 06:36; на рабочем столе видны ярлыки Google Chrome, Internet Explorer, WQV Link Ver.2.0.
Успешно переписал фотографии с Casio WQV-3, в основном там фотографии предыдущих владельцев

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