Обновить
-15
0
Сергей @kovserg

Инженер

Отправить сообщение
// Задержка в мс
async me_delay(struct async *pt, uint32_t ticks)
{
    async_begin(pt);
    static uint32_t timer_delay; // <<<--- если забыть static будут прикольно
    timer_delay = timer + ticks;
    while(!LoopCmp(timer, timer_delay)) {
...

У себя использовал похожую схему. Я использовал - "постепенно исполняемые функции" (afn - async fn). Вообще любая такая функция просто набор 3х указателей: 1-состояние асинхронной функции (ctx), 2-обработчик сигналов (setup), 3-обработчик итерации (loop)

afn.h
typedef struct afn_t {
  void *ctx;
  int (*setup)(void *ctx,int sev);
  int (*loop)(void *ctx);
} afn_t;

enum SetupEvents { sevInit, sevDone };

Если функция loop вернула 0 то она закончила, если 1-еще рабоает, остальные коды прерывания можно использовать для запросов. Функция setup тоже 0=ok. Фунция гарантируется что если вызвали setup(sevInit) то обязательно будет вызван setup(sevDone). И то что функция loop быполняет итерацию за конечное время. И самое главное предача кванта управления выполняется явно.

А вот для реализации итераций в обработчике loop была такая же схема как и тут на switch-е. Но не на LINE а на COUNTER. И все переменные которые использует асинхронная функция она явно описывает в своём состоянии. Примерно так:

example.c
/* example.c */
#include <stdio.h>
#include "afn.h"
#include "loop-fn.h"

typedef struct fn1_ctx {
	loop_t loop;
	int i;
} fn1_ctx;

int fn1_setup(fn1_ctx *my,int sev) {
	if (sev==sevInit) LOOP_RESET(my->loop);
	return 0;
}
int fn1_loop(fn1_ctx *my) {
	LOOP_BEGIN(my->loop)
	printf(" fn1.begin");
	LOOP_POINT
	printf(" fn1.step1");
	LOOP_POINT
	for(my->i=0;my->i<3;my->i++) {
		printf(" fn1.i=%d",my->i);
		LOOP_POINT
	}
	printf(" fn1.end");
	LOOP_END
}

int main(int argc,char** argv) {
	fn1_ctx fn1[1]; int it,rc;
	fn1_setup(fn1,sevInit);
	for(it=0;it<10;it++) {
		printf("it=%2d fn1=%2d",it,fn1->loop);
		rc=fn1_loop(fn1);
		if (!rc) printf(" [fn1 is done]");
		printf("\n");
		if (!rc) break;
	}
	fn1_setup(fn1,sevDone);
	return 0;
}

output:

it= 0 fn1= 0 fn1.begin
it= 1 fn1= 1 fn1.step1
it= 2 fn1= 2 fn1.i=0
it= 3 fn1= 3 fn1.i=1
it= 4 fn1= 3 fn1.i=2
it= 5 fn1= 3 fn1.end [fn1 is done]
loop-fn.h
/* loop-fn.h - sequential execution function */
#ifndef __LOOP_FN_H__
#define __LOOP_FN_H__

typedef int loop_t;

#define LOOP_RESET(loop) { loop=0; }
#if defined(__COUNTER__) && __COUNTER__!=__COUNTER__
#define LOOP_BEGIN(loop) { enum { __loop_base=__COUNTER__ }; \
    loop_t *__loop=&(loop); __loop_switch: int __loop_rv=1; \
    switch(*__loop) { default: *__loop=0; case 0: {
#define LOOP_POINT { enum { __loop_case=__COUNTER__-__loop_base }; \
    *__loop=__loop_case; goto __loop_leave; case __loop_case:{} }
#else
#define LOOP_BEGIN(loop) {loop_t*__loop=&(loop);__loop_switch:int __loop_rv=1;\
    switch(*__loop){ default: case 0: *__loop=__LINE__; case __LINE__:{
#define LOOP_POINT { *__loop=__LINE__; goto __loop_leave; case __LINE__:{} }
#endif
#define LOOP_END { __loop_end: *__loop=-1; case -1: return 0; \
	{ goto __loop_end; goto __loop_switch; } } \
	}} __loop_leave: return __loop_rv; }
#define LOOP_SET_RV(rv) { __loop_rv=(rv); } /* rv must be non zero */
#define LOOP_INT(n) { __loop_rv=(n); LOOP_POINT } /* interrupt n */
#define LOOP_POINT_(name) { *__loop=name; goto __loop_leave; case name:{} }
#define LOOP_INT_(n,name) { __loop_rv=(n); LOOP_POINT_(name) }

#endif /* __LOOP_FN_H__ */

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

У USB клавиатур есть куча кодов которые можно было бы использовать.
Например LANG1..LANG9 или даже какой-нибудь F13..F24.

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

Более того можно было бы сделать тумблер или колесо для переключения языка или вообще отдельную педаль :)

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

Уже кнопу для копилота сделали, но кнопки переключения раскладки досих пор нет. Вроде тривиальная идея, но её досих пор нет.

Неволнуйтесь, скоро микрософт поправит компилятор visual studio и он по умолчанию будет генерить код который перестанет пускаться на windows 10. После этого все python-ы и браузеры перестанут поддерживать win10. Это уже отработанная тактика. Так что банер это только начало.

Интересно к какому "классу защищенности" относится мессенджер MAX и как он относится к приказам ФСТЭК, особенно в свете его интенсивного массового "внедрения"?

Новости чем дальше тем всё больше похожи на детсадовские.

Измеритель скорости есть, теперь можно и штрафы за превышение вводить 8-)

Лучше уж такая книжка: Practical C++ Game Programming with Data Structures and Algorithms
ISBN 978-1-83588-986-2 Она на базе raylib. А для изучения c++ можно такую книгу посмотреть

Здорово. Но как там с заводами по производству подшипников из этих материалов. Есть условия для их создания и роста или попрежнему это экономически бесперспективно?

А есть такой моноширинный шрифт что бы unicode-символы были одной ширины и не разъёзжались

Например шрифт IBM 3270 показывает как должно быть, а все остальные лютый треш
1-01[                                ] |
1-02[░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░] |
1-03[▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒] |
1-04[▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] |
1-05[████████████████████████████████] |

2-01[                                ] |
2-02[▘▘▘▘▘▘▘▘▘▘▘▘▘▘▘▘▘▘▘▘▘▘▘▘▘▘▘▘▘▘▘▘] |
2-03[▝▝▝▝▝▝▝▝▝▝▝▝▝▝▝▝▝▝▝▝▝▝▝▝▝▝▝▝▝▝▝▝] |
2-04[▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀] |
2-05[▖▖▖▖▖▖▖▖▖▖▖▖▖▖▖▖▖▖▖▖▖▖▖▖▖▖▖▖▖▖▖▖] |
2-06[▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌] |
2-07[▞▞▞▞▞▞▞▞▞▞▞▞▞▞▞▞▞▞▞▞▞▞▞▞▞▞▞▞▞▞▞▞] |
2-08[▛▛▛▛▛▛▛▛▛▛▛▛▛▛▛▛▛▛▛▛▛▛▛▛▛▛▛▛▛▛▛▛] |
2-09[▗▗▗▗▗▗▗▗▗▗▗▗▗▗▗▗▗▗▗▗▗▗▗▗▗▗▗▗▗▗▗▗] |
2-10[▚▚▚▚▚▚▚▚▚▚▚▚▚▚▚▚▚▚▚▚▚▚▚▚▚▚▚▚▚▚▚▚] |
2-11[▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐] |
2-12[▜▜▜▜▜▜▜▜▜▜▜▜▜▜▜▜▜▜▜▜▜▜▜▜▜▜▜▜▜▜▜▜] |
2-13[▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄] |
2-14[▙▙▙▙▙▙▙▙▙▙▙▙▙▙▙▙▙▙▙▙▙▙▙▙▙▙▙▙▙▙▙▙] |
2-15[▟▟▟▟▟▟▟▟▟▟▟▟▟▟▟▟▟▟▟▟▟▟▟▟▟▟▟▟▟▟▟▟] |
2-16[████████████████████████████████] |

3-01[                                ] |
3-02[▏▏▏▏▏▏▏▏▏▏▏▏▏▏▏▏▏▏▏▏▏▏▏▏▏▏▏▏▏▏▏▏] |
3-03[▎▎▎▎▎▎▎▎▎▎▎▎▎▎▎▎▎▎▎▎▎▎▎▎▎▎▎▎▎▎▎▎] |
3-04[▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍] |
3-05[▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌] |
3-06[▋▋▋▋▋▋▋▋▋▋▋▋▋▋▋▋▋▋▋▋▋▋▋▋▋▋▋▋▋▋▋▋] |
3-07[▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊] |
3-08[▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉] |
3-09[████████████████████████████████] |

4-01[                                ] |
4-02[▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁] |
4-03[▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂] |
4-04[▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃] |
4-05[▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄] |
4-06[▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅] |
4-07[▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆] |
4-08[▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇] |
4-09[████████████████████████████████] |

5-01[                                ] |
5-02[▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔] |
5-03[🮂🮂🮂🮂🮂🮂🮂🮂🮂🮂🮂🮂🮂🮂🮂🮂🮂🮂🮂🮂🮂🮂🮂🮂🮂🮂🮂🮂🮂🮂🮂🮂] |
5-04[🮃🮃🮃🮃🮃🮃🮃🮃🮃🮃🮃🮃🮃🮃🮃🮃🮃🮃🮃🮃🮃🮃🮃🮃🮃🮃🮃🮃🮃🮃🮃🮃] |
5-05[▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀] |
5-06[🮄🮄🮄🮄🮄🮄🮄🮄🮄🮄🮄🮄🮄🮄🮄🮄🮄🮄🮄🮄🮄🮄🮄🮄🮄🮄🮄🮄🮄🮄🮄🮄] |
5-07[🮅🮅🮅🮅🮅🮅🮅🮅🮅🮅🮅🮅🮅🮅🮅🮅🮅🮅🮅🮅🮅🮅🮅🮅🮅🮅🮅🮅🮅🮅🮅🮅] |
5-08[🮆🮆🮆🮆🮆🮆🮆🮆🮆🮆🮆🮆🮆🮆🮆🮆🮆🮆🮆🮆🮆🮆🮆🮆🮆🮆🮆🮆🮆🮆🮆🮆] |
5-09[████████████████████████████████] |

6-01[                                ] |
6-02[🮎🮎🮎🮎🮎🮎🮎🮎🮎🮎🮎🮎🮎🮎🮎🮎🮎🮎🮎🮎🮎🮎🮎🮎🮎🮎🮎🮎🮎🮎🮎🮎] |
6-03[▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀] |
6-04[🮏🮏🮏🮏🮏🮏🮏🮏🮏🮏🮏🮏🮏🮏🮏🮏🮏🮏🮏🮏🮏🮏🮏🮏🮏🮏🮏🮏🮏🮏🮏🮏] |
6-05[🮐🮐🮐🮐🮐🮐🮐🮐🮐🮐🮐🮐🮐🮐🮐🮐🮐🮐🮐🮐🮐🮐🮐🮐🮐🮐🮐🮐🮐🮐🮐🮐] |
6-06[🮑🮑🮑🮑🮑🮑🮑🮑🮑🮑🮑🮑🮑🮑🮑🮑🮑🮑🮑🮑🮑🮑🮑🮑🮑🮑🮑🮑🮑🮑🮑🮑] |
6-07[▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄] |
6-08[🮒🮒🮒🮒🮒🮒🮒🮒🮒🮒🮒🮒🮒🮒🮒🮒🮒🮒🮒🮒🮒🮒🮒🮒🮒🮒🮒🮒🮒🮒🮒🮒] |
6-09[████████████████████████████████] |

7-01[                                ] |
7-02[🬀🬀🬀🬀🬀🬀🬀🬀🬀🬀🬀🬀🬀🬀🬀🬀🬀🬀🬀🬀🬀🬀🬀🬀🬀🬀🬀🬀🬀🬀🬀🬀] |
7-03[🬁🬁🬁🬁🬁🬁🬁🬁🬁🬁🬁🬁🬁🬁🬁🬁🬁🬁🬁🬁🬁🬁🬁🬁🬁🬁🬁🬁🬁🬁🬁🬁] |
7-04[🬂🬂🬂🬂🬂🬂🬂🬂🬂🬂🬂🬂🬂🬂🬂🬂🬂🬂🬂🬂🬂🬂🬂🬂🬂🬂🬂🬂🬂🬂🬂🬂] |
7-05[🬃🬃🬃🬃🬃🬃🬃🬃🬃🬃🬃🬃🬃🬃🬃🬃🬃🬃🬃🬃🬃🬃🬃🬃🬃🬃🬃🬃🬃🬃🬃🬃] |
7-06[🬄🬄🬄🬄🬄🬄🬄🬄🬄🬄🬄🬄🬄🬄🬄🬄🬄🬄🬄🬄🬄🬄🬄🬄🬄🬄🬄🬄🬄🬄🬄🬄] |
7-07[🬅🬅🬅🬅🬅🬅🬅🬅🬅🬅🬅🬅🬅🬅🬅🬅🬅🬅🬅🬅🬅🬅🬅🬅🬅🬅🬅🬅🬅🬅🬅🬅] |
7-08[🬆🬆🬆🬆🬆🬆🬆🬆🬆🬆🬆🬆🬆🬆🬆🬆🬆🬆🬆🬆🬆🬆🬆🬆🬆🬆🬆🬆🬆🬆🬆🬆] |
7-09[🬇🬇🬇🬇🬇🬇🬇🬇🬇🬇🬇🬇🬇🬇🬇🬇🬇🬇🬇🬇🬇🬇🬇🬇🬇🬇🬇🬇🬇🬇🬇🬇] |
7-10[🬈🬈🬈🬈🬈🬈🬈🬈🬈🬈🬈🬈🬈🬈🬈🬈🬈🬈🬈🬈🬈🬈🬈🬈🬈🬈🬈🬈🬈🬈🬈🬈] |
7-11[🬉🬉🬉🬉🬉🬉🬉🬉🬉🬉🬉🬉🬉🬉🬉🬉🬉🬉🬉🬉🬉🬉🬉🬉🬉🬉🬉🬉🬉🬉🬉🬉] |
7-12[🬊🬊🬊🬊🬊🬊🬊🬊🬊🬊🬊🬊🬊🬊🬊🬊🬊🬊🬊🬊🬊🬊🬊🬊🬊🬊🬊🬊🬊🬊🬊🬊] |
7-13[🬋🬋🬋🬋🬋🬋🬋🬋🬋🬋🬋🬋🬋🬋🬋🬋🬋🬋🬋🬋🬋🬋🬋🬋🬋🬋🬋🬋🬋🬋🬋🬋] |
7-14[🬌🬌🬌🬌🬌🬌🬌🬌🬌🬌🬌🬌🬌🬌🬌🬌🬌🬌🬌🬌🬌🬌🬌🬌🬌🬌🬌🬌🬌🬌🬌🬌] |
7-15[🬍🬍🬍🬍🬍🬍🬍🬍🬍🬍🬍🬍🬍🬍🬍🬍🬍🬍🬍🬍🬍🬍🬍🬍🬍🬍🬍🬍🬍🬍🬍🬍] |
7-16[🬎🬎🬎🬎🬎🬎🬎🬎🬎🬎🬎🬎🬎🬎🬎🬎🬎🬎🬎🬎🬎🬎🬎🬎🬎🬎🬎🬎🬎🬎🬎🬎] |
7-17[🬏🬏🬏🬏🬏🬏🬏🬏🬏🬏🬏🬏🬏🬏🬏🬏🬏🬏🬏🬏🬏🬏🬏🬏🬏🬏🬏🬏🬏🬏🬏🬏] |
7-18[🬐🬐🬐🬐🬐🬐🬐🬐🬐🬐🬐🬐🬐🬐🬐🬐🬐🬐🬐🬐🬐🬐🬐🬐🬐🬐🬐🬐🬐🬐🬐🬐] |
7-19[🬑🬑🬑🬑🬑🬑🬑🬑🬑🬑🬑🬑🬑🬑🬑🬑🬑🬑🬑🬑🬑🬑🬑🬑🬑🬑🬑🬑🬑🬑🬑🬑] |
7-20[🬒🬒🬒🬒🬒🬒🬒🬒🬒🬒🬒🬒🬒🬒🬒🬒🬒🬒🬒🬒🬒🬒🬒🬒🬒🬒🬒🬒🬒🬒🬒🬒] |
7-21[🬓🬓🬓🬓🬓🬓🬓🬓🬓🬓🬓🬓🬓🬓🬓🬓🬓🬓🬓🬓🬓🬓🬓🬓🬓🬓🬓🬓🬓🬓🬓🬓] |
7-22[▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌▌] |
7-23[🬔🬔🬔🬔🬔🬔🬔🬔🬔🬔🬔🬔🬔🬔🬔🬔🬔🬔🬔🬔🬔🬔🬔🬔🬔🬔🬔🬔🬔🬔🬔🬔] |
7-24[🬕🬕🬕🬕🬕🬕🬕🬕🬕🬕🬕🬕🬕🬕🬕🬕🬕🬕🬕🬕🬕🬕🬕🬕🬕🬕🬕🬕🬕🬕🬕🬕] |
7-25[🬖🬖🬖🬖🬖🬖🬖🬖🬖🬖🬖🬖🬖🬖🬖🬖🬖🬖🬖🬖🬖🬖🬖🬖🬖🬖🬖🬖🬖🬖🬖🬖] |
7-26[🬗🬗🬗🬗🬗🬗🬗🬗🬗🬗🬗🬗🬗🬗🬗🬗🬗🬗🬗🬗🬗🬗🬗🬗🬗🬗🬗🬗🬗🬗🬗🬗] |
7-27[🬘🬘🬘🬘🬘🬘🬘🬘🬘🬘🬘🬘🬘🬘🬘🬘🬘🬘🬘🬘🬘🬘🬘🬘🬘🬘🬘🬘🬘🬘🬘🬘] |
7-28[🬙🬙🬙🬙🬙🬙🬙🬙🬙🬙🬙🬙🬙🬙🬙🬙🬙🬙🬙🬙🬙🬙🬙🬙🬙🬙🬙🬙🬙🬙🬙🬙] |
7-29[🬚🬚🬚🬚🬚🬚🬚🬚🬚🬚🬚🬚🬚🬚🬚🬚🬚🬚🬚🬚🬚🬚🬚🬚🬚🬚🬚🬚🬚🬚🬚🬚] |
7-30[🬛🬛🬛🬛🬛🬛🬛🬛🬛🬛🬛🬛🬛🬛🬛🬛🬛🬛🬛🬛🬛🬛🬛🬛🬛🬛🬛🬛🬛🬛🬛🬛] |
7-31[🬜🬜🬜🬜🬜🬜🬜🬜🬜🬜🬜🬜🬜🬜🬜🬜🬜🬜🬜🬜🬜🬜🬜🬜🬜🬜🬜🬜🬜🬜🬜🬜] |
7-32[🬝🬝🬝🬝🬝🬝🬝🬝🬝🬝🬝🬝🬝🬝🬝🬝🬝🬝🬝🬝🬝🬝🬝🬝🬝🬝🬝🬝🬝🬝🬝🬝] |
7-33[🬞🬞🬞🬞🬞🬞🬞🬞🬞🬞🬞🬞🬞🬞🬞🬞🬞🬞🬞🬞🬞🬞🬞🬞🬞🬞🬞🬞🬞🬞🬞🬞] |
7-34[🬟🬟🬟🬟🬟🬟🬟🬟🬟🬟🬟🬟🬟🬟🬟🬟🬟🬟🬟🬟🬟🬟🬟🬟🬟🬟🬟🬟🬟🬟🬟🬟] |
7-35[🬠🬠🬠🬠🬠🬠🬠🬠🬠🬠🬠🬠🬠🬠🬠🬠🬠🬠🬠🬠🬠🬠🬠🬠🬠🬠🬠🬠🬠🬠🬠🬠] |
7-36[🬡🬡🬡🬡🬡🬡🬡🬡🬡🬡🬡🬡🬡🬡🬡🬡🬡🬡🬡🬡🬡🬡🬡🬡🬡🬡🬡🬡🬡🬡🬡🬡] |
7-37[🬢🬢🬢🬢🬢🬢🬢🬢🬢🬢🬢🬢🬢🬢🬢🬢🬢🬢🬢🬢🬢🬢🬢🬢🬢🬢🬢🬢🬢🬢🬢🬢] |
7-38[🬣🬣🬣🬣🬣🬣🬣🬣🬣🬣🬣🬣🬣🬣🬣🬣🬣🬣🬣🬣🬣🬣🬣🬣🬣🬣🬣🬣🬣🬣🬣🬣] |
7-39[🬤🬤🬤🬤🬤🬤🬤🬤🬤🬤🬤🬤🬤🬤🬤🬤🬤🬤🬤🬤🬤🬤🬤🬤🬤🬤🬤🬤🬤🬤🬤🬤] |
7-40[🬥🬥🬥🬥🬥🬥🬥🬥🬥🬥🬥🬥🬥🬥🬥🬥🬥🬥🬥🬥🬥🬥🬥🬥🬥🬥🬥🬥🬥🬥🬥🬥] |
7-41[🬦🬦🬦🬦🬦🬦🬦🬦🬦🬦🬦🬦🬦🬦🬦🬦🬦🬦🬦🬦🬦🬦🬦🬦🬦🬦🬦🬦🬦🬦🬦🬦] |
7-42[🬧🬧🬧🬧🬧🬧🬧🬧🬧🬧🬧🬧🬧🬧🬧🬧🬧🬧🬧🬧🬧🬧🬧🬧🬧🬧🬧🬧🬧🬧🬧🬧] |
7-43[🬨🬨🬨🬨🬨🬨🬨🬨🬨🬨🬨🬨🬨🬨🬨🬨🬨🬨🬨🬨🬨🬨🬨🬨🬨🬨🬨🬨🬨🬨🬨🬨] |
7-44[▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐▐] |
7-45[🬩🬩🬩🬩🬩🬩🬩🬩🬩🬩🬩🬩🬩🬩🬩🬩🬩🬩🬩🬩🬩🬩🬩🬩🬩🬩🬩🬩🬩🬩🬩🬩] |
7-46[🬪🬪🬪🬪🬪🬪🬪🬪🬪🬪🬪🬪🬪🬪🬪🬪🬪🬪🬪🬪🬪🬪🬪🬪🬪🬪🬪🬪🬪🬪🬪🬪] |
7-47[🬫🬫🬫🬫🬫🬫🬫🬫🬫🬫🬫🬫🬫🬫🬫🬫🬫🬫🬫🬫🬫🬫🬫🬫🬫🬫🬫🬫🬫🬫🬫🬫] |
7-48[🬬🬬🬬🬬🬬🬬🬬🬬🬬🬬🬬🬬🬬🬬🬬🬬🬬🬬🬬🬬🬬🬬🬬🬬🬬🬬🬬🬬🬬🬬🬬🬬] |
7-49[🬭🬭🬭🬭🬭🬭🬭🬭🬭🬭🬭🬭🬭🬭🬭🬭🬭🬭🬭🬭🬭🬭🬭🬭🬭🬭🬭🬭🬭🬭🬭🬭] |
7-50[🬮🬮🬮🬮🬮🬮🬮🬮🬮🬮🬮🬮🬮🬮🬮🬮🬮🬮🬮🬮🬮🬮🬮🬮🬮🬮🬮🬮🬮🬮🬮🬮] |
7-51[🬯🬯🬯🬯🬯🬯🬯🬯🬯🬯🬯🬯🬯🬯🬯🬯🬯🬯🬯🬯🬯🬯🬯🬯🬯🬯🬯🬯🬯🬯🬯🬯] |
7-52[🬰🬰🬰🬰🬰🬰🬰🬰🬰🬰🬰🬰🬰🬰🬰🬰🬰🬰🬰🬰🬰🬰🬰🬰🬰🬰🬰🬰🬰🬰🬰🬰] |
7-53[🬱🬱🬱🬱🬱🬱🬱🬱🬱🬱🬱🬱🬱🬱🬱🬱🬱🬱🬱🬱🬱🬱🬱🬱🬱🬱🬱🬱🬱🬱🬱🬱] |
7-54[🬲🬲🬲🬲🬲🬲🬲🬲🬲🬲🬲🬲🬲🬲🬲🬲🬲🬲🬲🬲🬲🬲🬲🬲🬲🬲🬲🬲🬲🬲🬲🬲] |
7-55[🬳🬳🬳🬳🬳🬳🬳🬳🬳🬳🬳🬳🬳🬳🬳🬳🬳🬳🬳🬳🬳🬳🬳🬳🬳🬳🬳🬳🬳🬳🬳🬳] |
7-56[🬴🬴🬴🬴🬴🬴🬴🬴🬴🬴🬴🬴🬴🬴🬴🬴🬴🬴🬴🬴🬴🬴🬴🬴🬴🬴🬴🬴🬴🬴🬴🬴] |
7-57[🬵🬵🬵🬵🬵🬵🬵🬵🬵🬵🬵🬵🬵🬵🬵🬵🬵🬵🬵🬵🬵🬵🬵🬵🬵🬵🬵🬵🬵🬵🬵🬵] |
7-58[🬶🬶🬶🬶🬶🬶🬶🬶🬶🬶🬶🬶🬶🬶🬶🬶🬶🬶🬶🬶🬶🬶🬶🬶🬶🬶🬶🬶🬶🬶🬶🬶] |
7-59[🬷🬷🬷🬷🬷🬷🬷🬷🬷🬷🬷🬷🬷🬷🬷🬷🬷🬷🬷🬷🬷🬷🬷🬷🬷🬷🬷🬷🬷🬷🬷🬷] |
7-60[🬸🬸🬸🬸🬸🬸🬸🬸🬸🬸🬸🬸🬸🬸🬸🬸🬸🬸🬸🬸🬸🬸🬸🬸🬸🬸🬸🬸🬸🬸🬸🬸] |
7-61[🬹🬹🬹🬹🬹🬹🬹🬹🬹🬹🬹🬹🬹🬹🬹🬹🬹🬹🬹🬹🬹🬹🬹🬹🬹🬹🬹🬹🬹🬹🬹🬹] |
7-62[🬺🬺🬺🬺🬺🬺🬺🬺🬺🬺🬺🬺🬺🬺🬺🬺🬺🬺🬺🬺🬺🬺🬺🬺🬺🬺🬺🬺🬺🬺🬺🬺] |
7-63[🬻🬻🬻🬻🬻🬻🬻🬻🬻🬻🬻🬻🬻🬻🬻🬻🬻🬻🬻🬻🬻🬻🬻🬻🬻🬻🬻🬻🬻🬻🬻🬻] |
7-64[████████████████████████████████] |
IBM 3270
IBM 3270

Ряд стран также инвестируют в так называемые малые модульные реакторы. Идея заключается в том,

Идея в том чтобы их ставить в подземные города, что бы отсидеться во время ядерной зимы?

А вот пример не дружественного svg

<svg viewBox="0 0 200 200" xmlns="http://www.w3.org/2000/svg">
<defs>
<g id="g0"><line x1="0" y1="0" x2="200" y2="200" stroke="red"/></g>
<g id="g1"><use href="#g0"/><use href="#g0"/><use href="#g0"/><use href="#g0"/><use href="#g0"/><use href="#g0"/><use href="#g0"/><use href="#g0"/><use href="#g0"/><use href="#g0"/></g>
<g id="g2"><use href="#g1"/><use href="#g1"/><use href="#g1"/><use href="#g1"/><use href="#g1"/><use href="#g1"/><use href="#g1"/><use href="#g1"/><use href="#g1"/><use href="#g1"/></g>
<g id="g3"><use href="#g2"/><use href="#g2"/><use href="#g2"/><use href="#g2"/><use href="#g2"/><use href="#g2"/><use href="#g2"/><use href="#g2"/><use href="#g2"/><use href="#g2"/></g>
<g id="g4"><use href="#g3"/><use href="#g3"/><use href="#g3"/><use href="#g3"/><use href="#g3"/><use href="#g3"/><use href="#g3"/><use href="#g3"/><use href="#g3"/><use href="#g3"/></g>
<g id="g5"><use href="#g4"/><use href="#g4"/><use href="#g4"/><use href="#g4"/><use href="#g4"/><use href="#g4"/><use href="#g4"/><use href="#g4"/><use href="#g4"/><use href="#g4"/></g>
<g id="g6"><use href="#g5"/><use href="#g5"/><use href="#g5"/><use href="#g5"/><use href="#g5"/><use href="#g5"/><use href="#g5"/><use href="#g5"/><use href="#g5"/><use href="#g5"/></g>
<g id="g7"><use href="#g6"/><use href="#g6"/><use href="#g6"/><use href="#g6"/><use href="#g6"/><use href="#g6"/><use href="#g6"/><use href="#g6"/><use href="#g6"/><use href="#g6"/></g>
<g id="g8"><use href="#g7"/><use href="#g7"/><use href="#g7"/><use href="#g7"/><use href="#g7"/><use href="#g7"/><use href="#g7"/><use href="#g7"/><use href="#g7"/><use href="#g7"/></g>
<g id="g9"><use href="#g8"/><use href="#g8"/><use href="#g8"/><use href="#g8"/><use href="#g8"/><use href="#g8"/><use href="#g8"/><use href="#g8"/><use href="#g8"/><use href="#g8"/></g>
</defs>
<use href="#g9"/>
</svg>

Надежное программирование

А где erlang?
И как там с надёжностью промтопрограмированая на chatgpt ?

ps: Вообще человеки уже давно придумали как делать надёжные системы из не надёжных подсистем, а так же оценивать вероятность их отказа. Так что дублируем системы добавляем watchdog-и и ваш яп тут нафиг не нужон. Особенно если ваше супер надёжное по работает на не надёжном железе.

Timon & Pumbaa's Jungle Games - Bugs Drop
https://youtu.be/uRGNI2scvUg?t=2369

Он содержит код остановки и неисправный системный драйвер, что упрощает пользователям Windows и IT-администраторам определение причины возникновения сбоя на ПК.

«Это попытка внести ясность и предоставить более подробную информацию, которая позволяет нам и клиентам действительно понять суть проблемы, чтобы мы могли быстрее её исправить»

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

Для упрощения диагностики надо выдавать краткую сводку которую можно передать голосом по телефону, а не эти 0% complete без возможности его пройти т.к. ос не предоставляет вообще никаких инструментов.

Не говоря уже об автоматическом решении проблем, которое вообще никогда не работало.
ps: хотя бы таймер с последнего BSOD вывели "0 дней без BSOD"

Интересно чем закончится эксперимент. Морская вода довольно агрессивная среда, плюс всякие отложения, взвеси и живые организмы. Так что срок службы скорее всего в 50-60 лет выбран чтобы показать красивые цифры. Более того тепло которые будут выделять эти конденсаторы (кпд75% остальное в тепло) будет создавать конвективные потоки и если таких сфер будет много то интересно как эти тёплые течения повлияют на местную флору и фауну. Так что экологичность тоже еще надо доказать.
Да и в случае аварии обслуживать эту установку на глубине 600-800 метров то еще удовольствие, что может значительно увеличить стоимось хранения.

Информация

В рейтинге
Не участвует
Откуда
Калужская обл., Россия
Дата рождения
Зарегистрирован
Активность

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

Инженер встраиваемых систем, Архитектор программного обеспечения
Старший
От 750 000 ₽
Linux
C++
PHP
Java
Docker
SQL
Hibernate
Java Spring Framework
Высоконагруженные системы