Обновить
57
70.5

Пользователь

Отправить сообщение

на коленке реально

Как всегда, всё зависит от вашей коленки.

У кого-то нет ни станков, ни 3D-принтера.

А у кого-то коленка выглядит так:

Коленка

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

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

Нужен просто микроскоп Mantis.

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

Vision Engineering MANTIS ELITE
Vision Engineering MANTIS ELITE

Но цена...

Он такой же цифровой, как аналоговый. У матрицы RGB-выходы аналоговые.

Так в это и цель, КМК.

Раньше руководители фирм давали аутсорс-бухгалтерараи ЭЦП для авторизации и отправки всевозможных документов. Сейчас передачу ЭЦП запретили и ввели за это большой штраф.

Расстояние между фазами на ВЛ представляете?

Вот для примера опора типа У110-3:

Это всего лишь 110-ка. На 330, 500, 750 кВ (где двухцепные ВЛ чрезвычайно редки) все ещё больше.

Нужен не дрон, а небольшой вертолёт, чтобы устроить межфазное.

Не в ту степь вы думаете. Гуглите, что такое трансформатор тока и трансреактор.

Расскажите про CGNAT властям Казахстана.

С недавних пор налоговая отслеживает, с каких IP-адресов отправляются формы налоговой отчетности.

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

Соответственно, все такие юрлица берутся «на карандаш».

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

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

–6.5 дптр не считая приличного астигматизма.

У всех разная нервная система, разная сила выраженности всяких вшитых защитных рефлексов.

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

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

Например запотевание - задержись на несколько секунд под тепловой завесой

Не хватает нескольких секунд. Приходится снимать очки, вставать под завесу и на вытянутых руках подносить их прямо под струи воздуха их тепловой завесы (я же написал про этот девайс). Обычно требуется 1.5—2 минуты на размораживание.

Это имеет сразу два проблемных фактора:

  1. Тепловые завесы стоят над входными дверьми, и стояние под завесой = стояние во входной двери. Это тормозит поток посетителей, входящих/выходящих в магазин.

  2. В ряде случаев это ещё и возбуждает ненужный интерес у охраны заведения.

От капель сверху спасает бейсболка или зонтик.

Бейсболка раз и навсегда отпадает, если вы примите во внимание пункт #29 из моего списка.

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

В конце концов размести капюшон "козырьком" над очками.

Я не могу носить капюшоны, они у меня вызывают лютый дискомфорт. Во-первых, у меня шибко развитое боковое зрение. Может оно у всех так развито, но не все так привыкли на него полагаться (а предпочитают покрутить глазами и головой). В случае с капюшоном остаётся только вариант «крутить головой как радарная установка». Т.е. капюшон работает как «шоры» у лошади и я не вижу, что происходит по бокам: вдруг кто-то надвигается на меня. С распространением электросамокатов проблема стала ещё острее. Во-вторых, я также очень хорошо на слух рисую картину того, что происходит у меня за спиной. Кто идёт, кто бежит, едет ли велосипедист, машина, трактор и так далее — картинка всего происходящего позади прекрасно воссоздаётся на слух. В капюшоне этот канал информации разрушается на 100% — ощущение настолько же неприятное, как когда мыльная пена попадает в уши.

Специальная тряпочка в кармане каждых штанов решит твою неприязнь к жирным и иным пятнам на стёклах.

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

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

  1. Оно не габаритное и пропадание из кармана не ощущается уменьшением натияжения ткани брюк/штанов.

  2. Оно невесомое, и изменение веса содержимого кармана и следующее отсюда уменьшение натяжения ткани тоже никак не ощущается.

  3. Оно упадёт беззвучно.

  4. Оно легко цепляется за те же ключи или легко прилипает к телефону.

Насчёт сварочной маски - даже не знаю... Девочка с канала Наташка+ отлично справляется.

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

Сам я руками делать ничего не умею, так что своего опыта нет.

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

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

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

И каким образом повторное заземление PEN влияет на сопротивление петли L-N?

Нет, ну строго говоря, разумеется влияет (в масштабах долей процента), но влияние от изменений погоды через изменения влажности грунтов и изменение сопротивления растяканию НА ПОРЯДОК МЕНЬШЕ, чем влияние погоды через ТКС проводов.

Вот есть у вас сеть TN-C с Z[L-N] таким, что ТКЗоф = 700 ампер. Теперь всюду обрезали повторные заземления, превратив эту сеть в IT. И каким стал ток короткого замыкания между фазным и нулевым рабочим после этого? Уменьшился вдвое? Втрое? В 10 раз? Или на 1 процент?

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

Есть одна вещь, которую автор не учёл.

Место под стек нового фибера автор разметил где? В массиве, который является частью структуры (класса) FiberDescriptor.

Сама структура FiberDescrptor аллоцируется где? В теории может аллоцироваться где угодно (в том числе и на стеке), однако с учётом того, что автор использует std::make_unique<T>, внутри которой будет вызов new T(...) , T — а в нашем случае FiberDescriptor будет аллоцироваться на дефолтной C++-куче. Или на не-дефолтной, если кто-то решит перегрузить оператор new глобально или только для FiberDescriptor. В любом случае, едва ли даже перегрузкой оператора new можно заставить структуру аллоцироваться где-то кроме как в какой-то куче.

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

И именно в этом месте начинается конфликт: с таким подходом ломается совместимость с SEH (если мы пишем под Windows).

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

Кусочек RtlDispatchException из ReactOS — для тех, кто не хочет идти дизасмить ntdll или лезть в утёкшие исходники Windows

На 24-й строке — получение границ стека из TIB, 38...40 — сама проверка на принадлежность фрейма стеку потока.

BOOLEAN
NTAPI
RtlDispatchException(IN PEXCEPTION_RECORD ExceptionRecord,
                     IN PCONTEXT Context)
{
    PEXCEPTION_REGISTRATION_RECORD RegistrationFrame, NestedFrame = NULL;
    DISPATCHER_CONTEXT DispatcherContext;
    EXCEPTION_RECORD ExceptionRecord2;
    EXCEPTION_DISPOSITION Disposition;
    ULONG_PTR StackLow, StackHigh;
    ULONG_PTR RegistrationFrameEnd;
 
    /* Perform vectored exception handling for user mode */
    if (RtlCallVectoredExceptionHandlers(ExceptionRecord, Context))
    {
        /* Exception handled, now call vectored continue handlers */
        RtlCallVectoredContinueHandlers(ExceptionRecord, Context);
 
        /* Continue execution */
        return TRUE;
    }
 
    /* Get the current stack limits and registration frame */
    RtlpGetStackLimits(&StackLow, &StackHigh);
    RegistrationFrame = RtlpGetExceptionList();
 
    /* Now loop every frame */
    while (RegistrationFrame != EXCEPTION_CHAIN_END)
    {
        /* Registration chain entries are never NULL */
        ASSERT(RegistrationFrame != NULL);
 
        /* Find out where it ends */
        RegistrationFrameEnd = (ULONG_PTR)RegistrationFrame +
                                sizeof(EXCEPTION_REGISTRATION_RECORD);
 
        /* Make sure the registration frame is located within the stack */
        if ((RegistrationFrameEnd > StackHigh) ||
            ((ULONG_PTR)RegistrationFrame < StackLow) ||
            ((ULONG_PTR)RegistrationFrame & 0x3))
        {
            /* Check if this happened in the DPC Stack */
            if (RtlpHandleDpcStackException(RegistrationFrame,
                                            RegistrationFrameEnd,
                                            &StackLow,
                                            &StackHigh))
            {
                /* Use DPC Stack Limits and restart */
                continue;
            }
 
            /* Set invalid stack and bail out */
            ExceptionRecord->ExceptionFlags |= EXCEPTION_STACK_INVALID;
            return FALSE;
        }

Тут автор может сказать: ну так мы не будем использовать SEH из фиберов, и вообще, у нас тут C++ и мы будем использовать C++-исключения.

Не вы используете SEH, а SEH использует вас. Вы-то в своём коде вполне можете не использовать SEH, но вы можете вызывать WinAPI, а WinAPI за милую душу используют SEH внутри себя.

Поэтому вызывая WinAPI из фибера, вы «зайдёте» в WinAPI с ESP/RSP, указывающим не на стек потока, а на какое-то место в самодельном стеке. Код внутри вызванной вами WinAPI сконструирует новый SEH-фрейм и спокойно поставит его в начало цепочки (mov fs:[0], esp или 64-битный эквивалент этого), дальше в ходе работы WinAPI-произойдёт исключение и при попытке штатно обработать его произойдёт глобальный облом.

А SEH внутри себя используют очень многие WinAPI. Из банального: IsGoodReadPtr, IsGoodWritePtr, IsGoodCodePtr устанавливают SEH-фрейм и пытаются, например, прочитать из запрошенного адреса.

Поэтому, какой выход?

  1. Патчить поля TIB при переключении фиберов. Именно так делает сама kernel32.dll, когда переключает фиберы. Но это рискованный способ, просто потому, что кто вам гарантировал неизменность лэйаута TIB от версии к версии Windows?

  2. С помощью #ifdef...#endif при компиляции под Windows начинка методов классов должна меняться на такую, которая просто является переходниками на WinAPI-функции по работе с фиберами.

Вот и я хотел спросить: почему было не использовать setjmp/longjmp — получился бы сразу кроссплатформенный вариант.

Видимо — в учебно-демонстрационных целях.

Вы наверное и инвалидов убеждаете, что и без ног достаточно быстро бегается и вообще, все неудобства отсутствия ног надуманные.

Я добавлю ваш коммент в закладки. Будет зима — я не поленюсь под видеозапись заснять, сколько времени уходит на восстановления.

Хорошо, если в магазине есть тепловая завеса (тепловая пушка над дверью). Или радиаторы отопления доступны касания посетителями. Но даже такие способы формирования не укладываются в 30 секунд.

да и то лечится протиранием.

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

Информация

В рейтинге
104-й
Откуда
Петропавловск, Северо-Казахстанская обл., Казахстан
Зарегистрирован
Активность

Специализация

Десктоп разработчик, Инженер встраиваемых систем
Pure C
Assembler
X86 asm
Win32 API
Visual Basic
MySQL
Git
ООП
Разработка электроники
Обратная разработка