Category: здоровье

Category was added automatically. Read all entries about "здоровье".

404

Карантинное

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

Среди соседей на удалёнке уже все, с кем поговорил.

404

covid-19.0.1-1~gbp202003122021.af32455

Если кому интересно, то:

1) Кипр — 7 подтверждённых случаев, из них большая часть приведена из UK.

2) Суровый карантин. Собираться больше 75 запрещено, школы закрыты, сады закрыты, мероприятия отменены.

3) У нас в компании всех перевели на обязательную удалёнку.

4) Проезд на северную сторону закрыт (уже давно).

5) В магазинах ползучее скупание. Спирта/санитайзеров нет, в отделах продуктов долгосрочного хранения пустовато (особенно, муки).

6) Шторм и ураганный ветер.

404

Застрял в математике

Как для уравнения F(x,y)=0 понять, есть ли точки её графика в прямоугольнике (x,y);(x+dx, y+dy)? Сначала задача была простой, а ща я просто даже и не знаю...
404

и ещё рефакторинг

Важный milestone: getPath сократилась до 100 строк, а всё это покрыто 60+ тестами. Надо бы больше, но некоторые кейсы я просто не могу нормально написать без софтмоков, а их ещё делать. (О чём речь: я не могу использовать untitest.mock, потому что это python2, и не могу использовать mock, потому что ограничения проекта). Мне предложили делать тесты, которые skip, если нет модуля mock, но эту штуку ещё отдельно писать надо.

На горизонте строки 425-994, которые представляют из себя остаток getSVG (из которой я, собственно, getPath и несколько других функций и вытащил). Да-да, добрая такая функция на 500+ строк, которая всё ещё делает Почти Всё.

В целом, я ощущаю, что оно чуть-чуть из рук выскользает, потому что в новом коде довольно много тестами не покрыто, но хочется дальше деребанить getPath. Но надо-таки покрывать то, что уже надёргано. Цикломатическая сложность понизилась, и самое-самое время начинать заморачиваться с тестами всяких corner case'ов, потому что в них как раз баги и обитаются...

Вот, например, из вытащенного:

def toSpline(edge):
    bspline = edge.Curve.toBSpline(edge.FirstParameter, edge.LastParameter)
    if bspline.Degree > 3 or bspline.isRational():
        try:
            bspline = bspline.approximateBSpline(0.05, 50, 3, 'C0')
        except RuntimeError:
            print("Debug: unable to approximate bspline")
    return bspline


Мне нужны тесты на:
1) кривые с Degree > 3
2) isRational (насколько я понимаю, это кривая Безье, описывающаяся полиномом с дробной степенью)
3) На ситуацию, что кривую не аппроксимировать.

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

выдыхаем, выдыхаем

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

Теперь можно начинать разбираться с этим ужасом в районе "if (int(occversion[0]) >= 7) and (int(occversion[1]) >= 1):"

Ужас не в этой проверке, а вот тут:
                            snip = Drawing.projectToSVG(e,drawing_plane_normal)
                            if snip:
                                try:
                                    a = "A " + snip.split("path d=\"")[1].split("\"")[0].split("A")[1]
                                except:
                                    pass
                                else:
                                    edata += a
                                    done = True


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

Во-вторых, это просто какой-то ужас. Я могу сохранить его, и всего лишь передать эту "a" в path.elliptical_arc. Дополнительный фан состоит в том, что Drawing - это нифига не питон, это добрый-добрый C++, который реализует интерфейс для питона. В нём на 100+ строк написано главное:

ProjectionAlgos Alg(pShape->getTopoShapePtr()->getShape(),Vector);

И я это даже понять не могу. Либо это макрос, либо это какая-то фича С++, которой я не знаю (синтаксически).

Другими словами, "нам с этим жить". А жить будет БОЛЬНО (особенно в тестах), потому что у меня:

>>> Part.OCC_VERSION
'6.9.1.oce-0.18'
А ещё я не знаю, что такое 'occ' (oce). Примерно происходит от "OpenCASCADE Community Edition"... Ой, моки меня зовут, ой зовут...
404

Перелом баланса

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

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

А сейчас я два дня искал как мне файл в syslog писать. С inotify'ями. Стопятьсот мегагигасистемобработкилогов одна энтерпрайзнее другой, а чтобы inotify поюзать - этого нет. Зато пачка DSL'ов, вырвиглазный синтаксис и тонны dependencies. Спасибо, новый rsyslog в imfile это умеет. Не умел бы - была бы почти катастрофа.
404

dibctl

Обнаружил, что старые методы авторизации (которые работали в juno) не работают в mitaka. Начал читать - конечно, хаос и шатание.

Переделываю всё на одновременную поддержку v1, v2, v3, плюс на использование session.

Надеюсь, станет разумно.

Рад, что всё УЖЕ покрыто тестами и при переписывании будет больно в ограниченном (хотя и значительном) объёме.

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

По моей текущей идее я буду использовать yaml-конфиги с jsonschema для валидации пользовательских конфигов. Схема ручного написания, ибо опыта работы с ней у меня никакого и на автогенерацию из кода у меня силёнок точно не хватит.
404

Кривые вещи к которым мы привыкли

Кто-то когда-нибудь таки перепишет find. Надеюсь, до момента, когда у меня старчесская деменция начнётся, чтобы я мог насладиться удобством (в сравнении с сегодняшним синтаксисом, к которому я за 15 лет так и не привык).
404

Опасные навыки

Всё началось с невинных "3D стереограмм"

Типа такой:


Если свести глаза правильно, будет виден рептилоид против всадницы на коне с человеческой головой.

Далось мне это очень тяжко. Но далось.

Потом попалась ascii-стереограмма. Того оригинала я не нашёл, но вот другой вариант, тоже замечательный:



Ту первую, я, наверное, несколько дней мучал. Эту я свёл меньше чем за пол-минуты. (возможно меня глючит, но вертикальная последовательность [*] там лишняя на палочке).

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



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

А теперь про опасность...

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

Ещё пару раз ловил себя на подобном.

Неделю назад посмотрел на полоску для удержания зановесок - а там равномерные складки. Взял, сфокусировался "по другому" - получилась 3D картинка. Из 3D объекта. На другом расстоянии и с другим рельефом.

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

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

Опасно оно по двум причинам:

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

Во-вторых мозг иногда может "по привычке" загонять глаза в режим "поиска фокуса". Что приводит к потере 3D картинки, да и вообще, к потере картинки, пока глаза не вернутся в исходное положение.
404

Мерцающие скотомы

Второй день продолжаются. (уже три раза видел). Вердикт - завтра с утра к врачу.

Пока что наблюдения:
1) В обоих глазах. Один раз была с "правым" разворотом, два раза с левым. Спираль, примерно на пол-оборрота, из почти центра глаза до края. За пол-часа расходится к краю поля зрения, из-за чего цветной мусор превращается в подобие мерцания яркости.
2) Сам мусор по частоте обновления напоминает мурашки от отлежавшейся руки
3) Сама скотома выглядит как едва цветные тончайшие линии с разрешением, превосходящим разрешение глаза (то есть когда смотришь на объект, "видишь" линии, толщина которых меньше, чем можешь увидеть в реальности).
4) Прогулка на свежем воздухе помогла с головной болью, но не помогла с этой штукой.
5) Остающаяся головная боль напоминает боль от мороженного, но значительно слабее и "глубже" (не в районе лба).
Давление вчера вечером было повышенным (164/94), утром вроде бы в районе 135/80, но приборчик на обоих руках сказал Err, так что цифрры примерные по тому времени, когда я пульс чувствовал.
6) Вчера когда давление мерял, на левой руке 164/94, на правой - 145/90.
7) Сейчас по ощущениям давление повышенное (дойду - померяю).
8) Вчера не выспался, сегодня выспался.
9) Глюамат натрия был в воскресенье вечером (а уже вторник)
10) С временем приёма еды не связано.

Завтра будем узнавать, какова тут страховка и какие врачи...

upd: у врачей. сначала намеряли 130/80, потом пришла врач, пять раз перемеривала, сказала таки 160 и 150 на разных руках. укололи что-то, решили посмотреть что будет через 40 минут. лежу, жду.

Не знаю как врачи, а вот остальной сервис офигенен.