Нужна простейшая функция для генерации\шифровки\дешифровки с помощью пары приватный ключ\паблик ключ. Нужно проверить один прототип, и очень не хочется долбаться с подключением библиотеки крипто и проч. Хотелось бы что-то что можно самостоятельно закодить в 20 строк каждую.
В свое время было столько ора о том что HTTP2 спасет мир, что везде будет счастье, что не будет больше хаков с spritemap, что сайты будут грузиться на 80% быстрее, что волосы будут мягкими и шелковистыми и х будет снова стоять.
Прошло 4 года...
И где это все? Когда-то отчитывались, что 70% сайтов поддержвают HTTP2 и хром с лисой сами делают upgrade. Даже SPDY от радости прикопали и обоссали.
#define TEST_SPEED_FABS_LOOPS ((U32_MAX >> 3) + bxi_randu8())
static void check_fabs_speed(void)
{
u32 i;
f64 iterator = 1.1;
f64 value = 0.0;
f64 sum_org = 0;
f64 sum_new = 0;
u32 loops = TEST_SPEED_FABS_LOOPS;
test_time_start();
{
for (i = 0; i < loops; i++)
{
iterator *= -1.5;
value += iterator;
sum_org += fabs(value - 50.0);
if (value > 1e8)
value = 0.0;
if (iterator > 1e8)
iterator = 1.1;
}
}
test_time_finish();
test_time_print("fabs");
iterator = 1.1;
value = 0.0;
test_time_start();
{
for (i = 0; i < loops; i++)
{
iterator *= -1.5;
value += iterator;
sum_new += bxi_fabs(value - 50.0);
if (value > 1e8)
value = 0.0;
if (iterator > 1e8)
iterator = 1.1;
}
}
test_time_finish();
test_time_print("bxi_fabs");
printf("%f\n%f\n", sum_org, sum_new);
if (sum_org != sum_new)
test_failed();
}
+ rand добавлен для того, чтобы компилятор это не свернул в `mov eax 24355184302566256`.
Суть кода - проверяет скорость и точность самописного fabs. Два блока кода почти идентичны, за исключением имени функции. Запускаем на Ubuntu 16.04, libc-2.23, x86_64:
24355184302566256.000000
24355184302566256.000000
То есть функция работает точно, различия только в скорости.
Теперь переносим это на машину с Minix, libc-12-187, x86:
24355184305680488.000000
24355184302566256.000000
А теперь собственно, вопрос - А КАКОГО ФИГА? Первое число - сумма вычисленная системным fabs. Самописный посчитал одинаково на обоих платформах. Что там можно было сделать не так? Там нет математических вычислений, fabs(x) = |x|! Там 2 условия должно быть:
if (isnan(x)) return -x;
return x > 0 ? x : -x;
В общем у меня подгорает - автоматические тесты фейлятся, система говорит что я дурак, а баг на самом деле в разработчиках Minix.
Что делать? Как это решить? Почему разный результат?
Да, на -O0, но очень часто приходится собирать в debug для прод-узлов, а там -O0. SHA1 сильно базируется на rol, для отладки нужна дебажная инфа, файлы чекаются по 200+ ГБ, тут каждая секунда уже помогает.
Все стадии кроме последней идут успешно. Вываливается не всегда, а в 1-0.5% случаев. Обычно когда переподключение приходится делать несколько раз (устройство режектит или проблемы связи). Успешно проходит через все стадии и валится на SSL_connect. Примерно так:
#2 0xb727bba0 in ?? () from /lib/libcrypto.so.0
#3 0xb727bc4a in ?? () from /lib/libcrypto.so.0
#4 0xb727c32c in ERR_get_state () from /lib/libcrypto.so.0
#5 0xb727ae91 in ERR_clear_error () from /lib/libcrypto.so.0
#6 0xb7339091 in ssl23_connect () from /lib/libssl.so.0
#7 0xb7348dea in SSL_connect () from /lib/libssl.so.0
#8 0xb7535cd9 in RDeviceSSLCreate (device=5)
at ./code/libratatoskr/devices/devices.c:255
Иногда сваливается на отправке:
Program terminated with signal 11, Segmentation fault.
#0 0xb734576c in ssl3_write () from /lib/libssl.so.0
#0 0xb734576c in ssl3_write () from /lib/libssl.so.0
#1 0xb735afa2 in SSL_write () from /lib/libssl.so.0
#2 0xb754cc78 in sendall (index=1, bytes=..., portindex=0)
at ./code/libratatoskr/definitions/serials.c:114
Может надо что-то еще проверять? Нагуглить удалось только один подобный случай (код матч 99%), но там не сегфолт, а просто без ошибки выходило - оказалось что у него был неблокирующий сокет (у нас блокирующий) и просто не успевало подключиться.
Пытаюсь затрейсить изображение, ставлю по цвету, 256 слоев, ставлю все галки типа «оптимизировать», «убрать фон» и пр, жму «ок», жду 15 минут и получаю зеленые ободки вокруг каждой группы. При экспорте в png сохраняются, так что дело не в баге отрисовки, оно реально делает группу слоев с border color = green.
Дело происходит в LibreOfficeBase (HSQLDB), так как эта зараза не умеет в умную группировку с сабсуммами в отчетах, приходится делать SQL-view с этой самой группировкой.
Вот я написал блок группы:
SELECT 'Категория' as "col1",
' ' as "col2",
"Категории"."name" as "col3"
FROM "Категории"
WHERE "Категории"."key" = 2
UNION ALL
SELECT "Расходы"."date" as "col1",
"Расходы"."sum" as "col2",
"Расходы"."name" as "col3"
FROM "Расходы"
WHERE DATEDIFF( 'day', "Расходы"."date", CURRENT_DATE ) < 30
AND "Расходы"."category" = 2
UNION ALL
SELECT ' ' as "col1",
sum("Расходы"."sum") as "col2",
'Сумма' as "col3"
FROM "Расходы"
WHERE DATEDIFF( 'day', "Расходы"."date", CURRENT_DATE ) < 30
AND "Расходы"."category" = 2
GROUP BY
"Расходы"."category"
UNION ALL
SELECT ' ' as "col1",
' ' as "col2",
' ' as "col3"
FROM "DUAL"
Теперь мне надо повторить этот блок для каждой строки таблицы «Категории» (поля key и name), заменяя 2 на «Расходы».«key».
Я пробовал сделать `select * from ( ... = B2.key ) as B1, Расходы as B2`, но ругаемси на то что B2.key не существует.
Но блин, когда он select union select не считает запросом селект это как? При этом в «Сервис -> Выполнить SQL» ВНЕЗАПНО это хороший запрос, а как VIEW это плохой запрос. Как тогда в этом кривом барахле делать отчет с полем «общая сумма»?
Притом если вместо 0 ставить просто пустые строки (", ", "), чтобы не сильно похабить отчет - то, парам-пам-пам, выскакивает вообще java exception по поводу кривой конвертации.
SELECT "A"."amount"
+ IFNULL( ( SELECT COALESCE ( SUM( "I2"."sum" ), 0 ) FROM "Доходы" AS "I2" WHERE "I2"."active" = "A"."key" GROUP BY "I2"."active" ), 0 )
- IFNULL( ( SELECT COALESCE ( SUM( "I3"."sum" ), 0 ) FROM "Расходы" AS "I3" WHERE "I3"."active" = "A"."key" GROUP BY "I3"."active" ), 0 ) AS "result",
"A"."name" AS "name",
"V"."short" AS "cur",
("A"."amount"
+ IFNULL( ( SELECT COALESCE ( SUM( "I2"."sum" ), 0 ) FROM "Доходы" AS "I2" WHERE "I2"."active" = "A"."key" GROUP BY "I2"."active" ), 0 )
- IFNULL( ( SELECT COALESCE ( SUM( "I3"."sum" ), 0 ) FROM "Расходы" AS "I3" WHERE "I3"."active" = "A"."key" GROUP BY "I3"."active" ), 0 )) * "V"."rate" AS "in_rub"
FROM "Активы" AS "A",
"Валюты" AS "V"
WHERE "A"."currency" = "V"."key"
UNION ALL
SELECT '0' AS "result",
'0' AS "name",
'0' AS "cur",
SUM(("A"."amount"
+ IFNULL( ( SELECT COALESCE ( SUM( "I2"."sum" ), 0 ) FROM "Доходы" AS "I2" WHERE "I2"."active" = "A"."key" GROUP BY "I2"."active" ), 0 )
- IFNULL( ( SELECT COALESCE ( SUM( "I3"."sum" ), 0 ) FROM "Расходы" AS "I3" WHERE "I3"."active" = "A"."key" GROUP BY "I3"."active" ), 0 )) * "V"."rate") AS "in_rub"
FROM "Активы" AS "A",
"Валюты" AS "V"
WHERE "A"."currency" = "V"."key"
Вопросы: фиксится ли его кривизна отрисовки?
Как нормальные люди делают строчку total?
Есть таблица «активы», есть таблица «доходы». Связка `[actives.id (1) -> (n) incomes.active]`. Когда пару лет назад делал себе базу учета, то текущее значение суммы актива вычислялось как начальное + sum(select value from incomes). Вопрос: так и надо делать, или есть способ модифицировать значение incomes.value, чтобы запрос на текущее состояние счета не требовал сложения 2000 столбцов?
Пишу тут как хобби мессенджер с end-point шифрованием и возможностью защищенной работы при захвате сервера.
Хочу реализовать следующие фичи:
* Отсутствие базы на сервере
* Как следствие - отсутствие авторизации на сервере
* Передача public ключа между пользователями физически («на флешках»), чтобы избежать его палева по сети.
Пока уперся в следующую проблему:
Алиса хочет послать сообщение Бобу.
Алиса шифрует сообщение своим приватным и публичным Боба
Алиса шлет сообщение на сервер с пометкой «Бобу»
Сервер видит, что у него залогинено три Боба.
Дальше два варианта развития событий:
1. Сервер шлет сообщение Алисы всем Бобам, ведь все равно расшифровать его сможет только тот, кому адресовано.
2. Сервер запрашивает у Бобов образец сообщения (например текущее время, шифрованное с публичным ключом Алисы), потом шлет все эти сообщения Алисе и после того как Алиса скажет кто из них кто отсылает сообщение нужному Бобу.
Первой вариант - плохо, потому что требует выслать всем Бобам «лишние» сообщения. Если их 100, то они будут получать непрерывный поток хлама, адресованный не им.
Второй вариант - плохо, потому что если Бобов 100, то это займет очень много времени.
Как такую задачу уже решили? Хочу авторизацию через клиентов и чтобы на сервере не было публичных ключей пользователей.
Управление делами президента (УДП) РФ не сумело в срок выполнить заявленные показатели по импортозамещению и перейти с американской ОС Windows на российскую Astra Linux. Согласно графику, в 2017 году доля использования отечественной ОС Astra Linux Special Edition производства НПО «РусБИТех» должна была составить 10%, а по факту составила 0%.
Согласно опубликованному на сайте УДП плану-графику перехода на использование отечественного офисного ПО в 2017–2020 годах, импортозамещение текстовых редакторов и коммуникационного ПО также составляет 0%. Доля отечественных почтовых приложений пока тоже 0%.
Причиной невыполнения плана в УПД назвали недостаточную готовность Astra Linux. Тестирование продуктов показало преждевременность их внедрения. Разработчикам этой ОС поручили «доработать дистрибутив и код программного обеспечения».
Щелкает (и очень громко) даже если просто листать 9gag с выключенным звуком, где все ролики по умолчанию в mute. Щелкает не только встроенными колонками, но и в наушниках, если они вставлены.
Началось после недавнего обновления на Ubuntu 16.04
Чет не нашел я как в бубунте (16.04) искаропки сделать чтобы при подключении адаптера питания сразу стало MAX частота процессора, а при вытыкании снова powersafe?
На xU16.04 (lenovo thinkpad L560) наблюдаю следующую проблему - периодически (раз-два в неделю) залипает клавиша на клавиатуре - обычно либо влево, либо пробел, либо backspace либо ctrl. В связи с этим только одно решение - ребут, ибо на сочетания клавиш из-за залипания не реагирует (даже в tty не перейти). После ребута все ок, так что подозреваю софтовую проблему. В /var/log/syslog ничего подозрительного.
Зависает обычно в starbound (влево) или в QtCreator (пробел\ctrl). Иногда (редко) решает так - включением и отключением режима FnLk. В wow не залипало никогда, так что подозреваю что дело в одновременном нажатии какого-то ряда клавиш.
При залипании функциональные клавиши продолжают работать (Fn+F2 - звук тише и проч).
Как отладить и решить? Может это вообще какой-то режим типа виндового shiftx5 включается?
dmesg забит
[ 2372.596719] ACPI: \_SB_.PCI0.LPCB.EC0_.ECRD: 1 arguments were passed to a non-method ACPI object (RegionField) (20150930/nsarguments-230)
[ 2382.604509] ACPI: \_SB_.PCI0.LPCB.EC0_.ECRD: 1 arguments were passed to a non-method ACPI object (RegionField) (20150930/nsarguments-230)
[ 2382.604557] ACPI: \_SB_.PCI0.LPCB.EC0_.ECRD: 1 arguments were passed to a non-method ACPI object (RegionField) (20150930/nsarguments-230)
, когда-то пытался решить, но неосилил после исправления этого косяка исправить еще 200+ ошибок компиляции.
Уже битый час бьюсь, не могу понять, можно ли решить это нормальным способом. В C всего лишь указатель на A, поэтому скорее всего можно как-то задекларить.
Такой вопрос: есть такая вещь как __attribute__ ((constructor)). Предположим я использую его в инициализации библиотеки. Потом использую его в приложении, которое использует эту библиотеку. Я правильно понимаю, что библиотечный ((constructor)) будет вызван раньше приложенческого? Отвечаю на вопрос, зачем мне это нужно - мне надо вызвать функцию библиотеки в инициализаторе приложения, а эта функция работать без инициализатора библиотеки не будет.
Нужен официальный пруф.
Вопрос номер два. А будет это работать в более сложной цепочке? A.so (init A) <- B.so (init B, related on A) <- C.elf (init C, related on B)
На текущей Intel® HD Graphics 520 можно нормально играть в Saints Row IV. Ну, думаю, со Starbound под онтопик проблем не будет. А фиг там:
Доходит до главного меню, потом зависание и вылет.
intel_do_flush_locked failed: Input/output error
Нагуглил что предлагают выставить хардкорный запрет аппаратного ускорения. Понятно, что современная игруля, какой бы примитивной графикой не обладала чисто на проце будет нещадно лагать даже в главном меню.