?

Log in

No account? Create an account
bolk's Journal
20 most recent entries

Date:2018-04-22 16:39
Subject:Царь с татуировкой дракона
Security:Public

Одна из фотографий Николая Второго, где видна татуировка. Фото с сайта библиотеки редких книг и рукописей Бейнеке

Оказывается до революции аристократы нередко делали себе татуировки — тогда это было достаточно модно. Например, король Эдуард VII (1841—1910) имел на своём теле несколько тату, первую из которых, Иерусалимский Крест он сделал в 1862, после паломничества на Святую землю. Татуировки были и у его сыновей — Альберта и Георга, кузенов российского цесаревича Николая Александровича.

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

Существуют свидетельства, что это было не единственное его тату, вот что об этом вспоминал один из убийц последнего императора:

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

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



Ссылка на оригинал.

post a comment



Date:2018-04-21 12:33
Subject:Вапоризатор
Security:Public

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

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

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



Ссылка на оригинал.

post a comment



Date:2018-04-19 20:05
Subject:Пожалуйста
Security:Public

Староста Трифон и земский Авдей стояли подле него без шапки с видом подобострастия и глубокой горести. «Все ли здесь?» — спросил незнакомец. «Все ли-ста здесь?» — повторил староста. «Все-ста», — отвечали граждане. Тогда староста объявил, что от барина получена грамота, и приказал земскому прочесть ее во услышание мира.

— А. С. Пушкин «История села Горюхина»

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

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

Насколько я понял, когда-то могла присоединяться к чему угодно, а теперь сохранилась в одном-единственном слове.



Ссылка на оригинал.

3 comments | post a comment



Date:2018-04-18 20:50
Subject:Люк «МС»
Security:Public

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

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

Этот люк заинтересовал меня тем, что выглядит он так же как наркомсвязивский, но буквы другие — не «НКС», а «МС». Расшифровал я сразу — «Министерство Связи», наркомы в 40-е как раз преобразовывались в министерства, но заинтересовала датировка.

Оказывается такие люки использовались с 1946 по 1953 года. В 1953 вышли временные технические условия — ВТУ 222-53, по которым (за редким исключениям) делали люки уже в другом дизайне.



Ссылка на оригинал.

5 comments | post a comment



Date:2018-04-18 20:34
Subject:Zabbix и sudo
Security:Public

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

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

Подцепился через strace к нужному процессу, понаблюдал как он запускает команду. Оказывается для запуска команды делается дочерний процесс, ему передаётся строка для запуска строка, а дальше дочерний процесс жалуется «sudo: sorry, you must have a tty to run sudo» на второй поток (stderr), но это никуда не попадает — ни в логи, ни на экран. Странная архитектура.

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



Ссылка на оригинал.

post a comment



Date:2018-04-17 15:53
Subject:Блокировка «Телеграма»
Security:Public

«Медуза» показывает интернет, который мы заслужили. В битве Давида и Голиафа страдает вся страна

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

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

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

Теперь следите за руками. Идём с копеечкой, к примеру, к «Гуглу», покупаем у них облачко и сажаем на него сервер с запрещёнкой. Сервер быстро банят, но мы не унываем, а соединяемся на «google.com», но внутри, в специальном заголовке указываем свой домен. И нас соединят с запрещённым сервером! Самое ценное, что снаружи будет полная видимость соединения с поисковиком.

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

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

«Телеграм» приспособил пуш-уведомления для того, чтобы рассылать клиентам адрес по которому нужно соединяться с сервером. Банят один, рассылается другой. Выглядит очень устойчиво к блокировкам.

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



Ссылка на оригинал.

post a comment



Date:2018-04-16 14:52
Subject:Золотой ключик
Security:Public

Дуров упустил шанс наконец-то монетизировать Телеграм (насколько я знаю, он ему денег не приносит). На волне блокировок многие мои знакомые покупают дешёвенькие площадки в Европе и Штатах и поднимают там свои прокси-сервера. Люди тратят деньги на доступ к Телеграму!

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



Ссылка на оригинал.

post a comment



Date:2018-04-15 12:33
Subject:Выгода
Security:Public

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

Вчера набрали игрушки со скидкой, а там в каждой коробке «выгода». Это не одно и то же, к слову. «Cкидка 75%» написать нельзя, обман, у скидки базис  — цена по которой раньше продавали, зато «выгода» может отталкиваться от чего угодно, в данном случае, если присмотреться, — от цены в каких-то мифических других магазинах.

Я давно научился смотреть не на процент, а на сумму, которую придётся заплатить, спасибо банкам с их невнятными расчётами, да и слишком уж очевидно, что соотношение 199 и 399 не может дать 75%, но наверняка полно тех, кто торопливо впадёт в заблуждение. Негодую.



Ссылка на оригинал.

post a comment



Date:2018-04-14 12:40
Subject:Коэффициент ICQ
Security:Public

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

Представьте, вспомнил! Это несмотря на то, что у меня там довольно непростые знаки в пароле. Залогинился, а там какие-то люди онлайн! Пропавший с горизонта сто лет назад дизайнер, человек, помогавший настраивать спутниковый интернет годы назад, курьер, возивший какую-то мелочь из Москвы до эры интернет-магазинов… А так же старые друзья и знакомые с почти детскими фотками.

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



Ссылка на оригинал.

post a comment



Date:2018-04-13 17:31
Subject:JavaScript и иврит
Security:Public

Прекрасный способ сломать мозг стыком трёх языков — английского, иврита и ДжаваСкрипта.

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

Тогда кажется только Эксплорер умер поддерживать такое и переключался он атрибутом dir целиком, всем окном. Сейчас у нас есть Юникод и специальные коды смены направления текста. В одной строке можно сколько угодно его менять.

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



Ссылка на оригинал.

post a comment



Date:2018-04-12 21:26
Subject:Негативное кеширование NFS
Security:Public

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

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

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

Чтобы решить эту проблему, мы придумывали разные сигнальные схемы и в ходе экспериментов обнаружилось, что если что-то записать в папку, где мы ожидаем файл, то кеш сбрасывается. В ПХП это выглядит так:

function clear_nfs_cache(string $filename): bool
{
    $tmpname = tempnam(dirname($filename), 'clear-cache'));
    return $tmpname === false ? false : unlink($tmpname);
}


Ссылка на оригинал.

post a comment



Date:2018-04-11 20:08
Subject:Аутизм
Security:Public

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

Цитата из статьи:

Исследование, проведенное Центром детей-аутистов Румынии, показало, что у 90% детей в возрасте 2—3 лет триггерным фактором развития расстройств аутистического спектра (РАС) стал чрезмерный просмотр (более 4—5 часов в день) телевизионных программ или взаимодействие с другими формами и видами виртуальной реальности.

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

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

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

У меня вопрос к более опытным родителям — есть ли телевизор в садике, куда ходит ваш малыш? Если есть, то зачем и считаете ли вы это проблемой?



Ссылка на оригинал.

post a comment



Date:2018-04-07 22:13
Subject:Сикстинский проект
Security:Public

Короткий процесс обучения — программа калибруется, учится распознавать положение пальца

Попробовал в действии «Сикстинский проект» — это способ сделать экран ноутбука псевдосенсорным.

Идея там такая — на фронтальную камеру ноута клеится зеркало, в котором должен быть виден экран. Передвижение пальца распознаётся софтом, по удалённости отражения пальца в экране отслеживается клик.

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



Ссылка на оригинал.

post a comment



Date:2018-04-06 12:35
Subject:Страховые доски Казани
Security:Public

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

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

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

Улов выглядит так.

Две страховые доски общества «Россия», обе с отчётливой надписью «въ обществѣ РОССІЯ застраховано» на фоне восьмиугольной звезды. У первой, по всей видимости, ещё сохранилась эмаль. Общество учреждено 29 марта 1881 года и находилось в Санкт-Петербурге.

Доска «Второго российского общества», основанного 6 марта 1835 года. Год основания с трудом, но можно различить внизу на табличке. Место нахождения правления: Санкт-Петербург.

«Северное страховое общество» стало так называться с 1879 года, когда перебазировалось из Питера в Москву. Очень хорошо читается надпись «ЗАСТРАХОВАНО ВЪ СѢВЕРНОМЪ ОБЩЕСТВѢ». Интересно, что несколько лет я ходил мимо здания, где она висит, но её не замечал.

А это московское страховое общество «Якорь», дата учреждения — 23 июня 1872 года.

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



Ссылка на оригинал.

2 comments | post a comment



Date:2018-04-05 10:41
Subject:MTV
Security:Public

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

Энергичный Комолов, безбашенная Шелест, совершенно космический Александр Анатольевич, тупейшие Бивис и Батхед («тёлки любят милитари, нам дадут») и безумное количество клипов.

Приятно видеть бывших виджеев, часть сильно постарела, но все до сих пор стильные, интересные, достойные. Если «ЭмТиВи» для вас приятное воспоминание из прошлого, фильм его не замарает.



Ссылка на оригинал.

post a comment



Date:2018-04-04 10:35
Subject:Молодец, что молчишь
Security:Public

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

Статья спорная. Мякотка:

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

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

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

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

И наконец, если сделанное ребёнком действительно вызвало у вас сильные положительные эмоции, то искреннее «Молодец!», скорее всего, лишним не будет.



Ссылка на оригинал.

post a comment



Date:2018-04-02 23:13
Subject:Пушной хлеб
Security:Public

Дочитываю книгу «Письма из деревни» Энгельгардта, я о ней писал прежде, очень много интересных подробностей. Хочется цитировать, не останавливаясь, но я себя бью по рукам. Как правило работает. Но тема хлеба так часто упоминается в книге, что тут уж удержаться не могу.

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

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

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

Возникают сомнения, конечно, кому верить — мужикам, которые сотни лет тяжело работали, или ребятам, за которыми какая-никакая наука и эксперимент?

Впрочем я отвлёкся. Хлеб бы необыкновенно важен.

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

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



Ссылка на оригинал.

post a comment



Date:2018-04-01 18:33
Subject:Радиационная линейка РЛ
Security:Public

Радиационная линейка РЛ, на книжечке стоит год выпуска — 1972, весь комплект куплен за 350 рублей без торга

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

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

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



Ссылка на оригинал.

post a comment



Date:2018-04-01 00:13
Subject:Крутая пасхалка
Security:Public

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

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

Скриншот выше я взял из ролика на официальном канале кампании «Группа ГАЗ» и в комментарии к нему поясняется, что тетрис используется как тест бортового компьютера — можно быстро погонять и процессор, и все зоны дисплея. Наверное так оно и есть, но обычно такие тесты выглядят намного утилитарнее, тут видимо кто-то из инженеров заскучал и решил сделать что-нибудь интересное.

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

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



Ссылка на оригинал.

post a comment



Date:2018-03-31 15:12
Subject:Структуры в Си и CGO
Security:Public

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

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

#include <stdio.h>
#include <math.h>

struct point {
	double x, y;
};

double point(struct point p) {
	return sqrt(pow(p.x, 2) + pow(p.y, 2));
}

int main() {
	printf("%g\n", point((struct point){1, 2}));
}

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

Это происходит потому, что имена структур обитают в своём собственном пространстве имён, на его использование и указывает struct. Там же живут имена объединений (union) и перечислений (enum). Имена функций находятся в общем пространстве, так что два таких определения с одним именем друг другу не мешают.

Структуры, объявленные таким образом видны через CGO компилятора Гоу как C.struct_name (C.struct_point в данном случае). К сожалению, тут есть особенность, о которую я споткнулся — если запрашиваемая структура не определена, то Гоу не выдаст ошибки, мы просто получим пустую структуру:

package main

import ("C"; . "fmt")

func main() {
	Println(C.struct_undefined{}) // ошибки не будет
}

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

struct point {
	double x, y;
};

typedef struct point point;

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

Это нас подводит ко второму способу работы со структурами:

#include <stdio.h>
#include <math.h>

typedef struct {
	double x, y;
} point;

double veclen(point p) {
	return sqrt(pow(p.x, 2) + pow(p.y, 2));
}

int main() {
	printf("%g\n", veclen((point){1, 2}));
}

Ключевое слово struct перед типом уже не нужно, раз все имена в общем пространстве. Это же касается и CGO.

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



Ссылка на оригинал.

post a comment


browse
my journal