All streams
Search
Write a publication
Pull to refresh
17
0
Дмитрий @cdkrot

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

Send message
Полностью согласен. В конце концов даже теже самые googleapps(почта и пр.) легко раздобыть самостоятельно.
Этот скратч не компилируется в бинарники. Только сам скратч умеет его исполнять. К тому же его возможности очень ограничены.
И в этом причина.
(y1 — у0)/(x1 — x0)

А если x1=x0?
(y1 — у0)/(x1 — x0)

А если x1=x0?

Извините
(y1 — у0)/(x1 — x0)

А если x1=x0?
Вы всерьёз думаете что можно читать с такой скоростью?)
Нельзя сказать, чтобы JSR47 проигрывал в производительности. Местами он обгонял log4j за счет поддержания в памяти специального представления своей конфигурации (что, кстати, одновременно усложняло эту самую конфигурацию). Однако, как выяснилось, JSR47 в обязательном порядке собирал так называемую Caller Information, то бишь «откуда логгируется данное сообщение». Получение Caller Information — операция довольно дорогостоящая, протекает она с использованием Native-кода. Опытные дяди из log4j это знали, поэтому предоставляли эту возможность с оговоркой «лучше не включайте».

Может я не понимаю, но разве это нельзя получить через new Exception().getStackTrace()?
Про Уотсона и Крика:
Уотсон написал книгу «Двойная спираль». Именно об открытии.
Спасибо, хорошая статья, но хотел обратить на один момент
Ничего так размерчик для одной функции, да? Автор, наверное, пытался сэкономить целый десяток наносекунд на вызов каждого отдельного кусочка кода через отдельную функцию. Молодец, сэкономил. И получил код, в котором противно копаться и нужно тратить кучу времени на понимание и исправление.

Почему бы не использовать тогда просто не использовать inline функции?
И немного сэкономить время, и читаемо.
Вот тут получается что математика необходима:
Нужно найти кол-во расстановок(число сочетаний)
В данном случае ответ это число сочетаний из 30 по 6, что равно 30!/(24!*6!)
Для 72 аналогично;
У меня логика есть. У меня тип без знаковый если не написано иначе(знаковые S_1b и т.п.).
T_1b означает Type 1 Byte
P. S. Давайте не будем спорить о вкусах.
Да, я слышал о чём-то подобном, но всё-равно использую свой. Удобно. Типы короткие (4 символа) и понятная логика названий.
В вашем же примере:
auto i = 42;        // i - int
auto l = 42LL;      // l - long long(!)
auto p = new foo(); // p - foo*

На мой взгляд auto — очень не аккуратная вещь.
Его рекомендуют использовать только при объявлении лямбды.

Гораздо проще сделать хедэр в котором написано
///...
typedef unsigned char            T_1b;          /* 1 byte unsigned */
typedef unsigned short           T_2b;          /* 2 byte unsigned */
typedef unsigned int                T_4b;          /* 4 byte unsigned */
typedef unsigned long long      T_8b;          /* 8 byte unsigned */

и т.д.
Это скорее иллюстрация другого пункта:
чтобы избежать большого скандала или «замять», оставить незамеченным какое-нибудь важное, но неприятное событие, часто используется простой, но хитрый и ловкий приём, который англоязычные политтехнологи называют «Wag the dog», а русскоязычные — «Хвост виляет собакой». Он заключается в том, чтобы вовремя поднять волну обсуждения вокруг вопроса второстепенной важности, на фоне которой другое, более важное событие или действие пройдёт незаметно.

Как обычно сущий пустяк «раздули» до масштабов новости.
Интересное задание, я призадумался. Написал бы наверное
int main()
{
unsigned long long* k = new unsigned long long[0xFFFFFFFF];
delete []k;//для очистки совести
return 0;
}

памяти нужно 2^3*(2^32-1) = 2^35 байт = 32 гб без малого при восприятии как unsigned. Иначе 0xFFFFFFFF=-1.
std::bad_alloc. по-любому.
Неплохо, спасибо!

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Registered
Activity