Новосибирск залило говном. В водопроводе - говно, поэтому воду отключили.
Новосибирск залило говном. В водопроводе - говно, поэтому воду отключили.
http://dump.bitcheese.net/files/usejalu/blagochina.png
Судя по трекингу, Благовещенск полностью захвачен Китаем. Ну или моей посылкой играют в футбол через границу.
Зачем-то среди ночи включил говноящик. Смотрю, как кремлёвские говноаналитики пиздя о кризисе в США. Интересно, сколько bullshit они могут прокукарекать прежде, чем это аллегорическое дерьмо каким-нибудь диалектическим переходом трансмутирует в реальное и польётся у них изо ртов?
На дворе стоял 2002 год. У меня был доступ к ЭВМ системы 486DX4-100MHz/32Mb, оборудованной ОС "Microsoft Windows 95". Когда мне хотелось послушать фонограммы в формате Движущиеся Картинки Три (в народе именуемый "эм эр зэ"), на данной ЭВМ с этим справлялась ровно одна программа - CoolPlayer (до сих пор помню, охуеть). Причем во время прослушивания можно было даже играть в "сапера", но без резких движений мышью - фонограмма начинала заикаться.
Сейчас на дворе заканчивается 2013 год. У меня в кармане лежит ЭВМ системы ARM Cortex-A9 1.2GHz/512Mb, оборудованный ОС "Google Android 4.0.4". Через неделю аптайма этот ебаный кусок говна начинает вести себя в несколько раз хуже, чем тот 486: плеер убивается нахуй при попытке открыть менюшку, которая при этом нещадно тормозит. И даже если ничего не делает, убивается нахуй. Приходится останавливаться, лезть в рюкзак и включать обратно. Руками. Думаю, о невозможности запуска чего-нибудь параллельно (например, жсм-трекера, от которого требуется раз в секунду получать 50 байт из последовательного порта и записывать их в файлик на флешку), не стоит и говорить.
Идите нахуй со своим прогрессом. И в пизду.
[19:07:23]<L29Ah> тестовые выезды - ня
[19:07:45]<L29Ah> китайцы - мудаки, в лигераде слишком уж много непродуманной или хуёво собранной фигни
[19:08:06]<L29Ah> алсо, я лёгким движением руки свернул болт M6
[19:08:10]<L29Ah> из нержи
[19:09:42]<L29Ah> усилием порядка десяти ньютон-метров
Больше всего я ненавижу пидарасов, которые указывают, какие символы можно использовать в пароле, а какие нет. Вас, блядь, ебет? Боитесь, блядь, инъекций в пароле? Выкиньте, блядь, свое похопе. Боитесь что жопорукий юзер введет символы, которые не сможет вспомнить? Его, блядь, проблемы. Пароль должен хешироваться и пихаться в БД побайтово. Пидарасы.
Самые брутальные персонажи аниме: http://www.youtube.com/watch?v=HKMncaF1xbU ЧСХ, все представленые мультики — неведомая ёбаная хуйня из 90-х. Почему такого больше не делают? Сейчас только шлак гонят про девочек и школу…
Проверял GCC на предмет того, как он умеет рекурсию оптимизировать.
Вот такая штука
unsigned int plus(unsigned int a, unsigned int b)
{
if (b == 0) return a;
return plus (a+1, b-1);
}
Относительно успешно сворачивается сложение. Получается такая шняга:
movl %edi, %eax
addl %esi, %eax
ret
Хотя в идеале можно было бы обойтись
leal (%rsi,%rdi), %eax
ret
Что касается умножения, там ситуация более печальная
inline unsigned long int product_0(const unsigned int a, const unsigned int b, const unsigned long int tmp)
{
if (b == 0) return tmp;
return product_0(a, b-1, tmp+a);
}
unsigned long int product(const unsigned int a, const unsigned int b)
{
return product_0(a, b, 0);
}
В ассемблере получается такая фигня
product:
.LFB34:
.cfi_startproc
xorl %eax, %eax
testl %esi, %esi
je .L7
leal -1(%rsi), %eax
mov %edi, %edi
addq $1, %rax
imulq %rdi, %rax
.L7:
rep
ret
.cfi_endproc
Тут оно зачем-то зануляет значение регистра, в котором хранится возврашемое из функции значение и сравнивает с нулем значение регистра, в котором в функцию передается число. Если ноль то прыгаем в конец функции, возвращая 0. Тогда внезапно появляется смысл в этом rep ret http://repzret.org/p/repzret/
Why? Because “The processor is unable to apply a branch prediction to the single-byte near-return form (opcode C3h) of the ret instruction.” Thus, “Use of a two-byte near-return can improve performance”, because it is not affected by this shortcoming.
Ну а дальше через leal из регистра rsi число копируется в eax, уменьшаясь при этом на 1 (нахрена?) и потом из регистра edi двигается в edi (НАХРЕНА??), увеличиваем rax на 1 через addq (ну тут понятно зачем, перед этим ведь оно было непонятно зачем уменьшено на 1, но нахрена уменьшать и потом увеличивать? И вообще, для увеличения на 1 лучше incq использовать) ну и в итоге компилятор таки вставляет инструкцию imulq. Распознать умножение в этой рекурсивной хрени компилятор смог, но при этом как-то через жопу все, нагенерировал кучу говна всякого. Можно было намного проще сделать
movl %esi, %eax
imull %edi, %eax
gcc version 4.5.1 если что
... формочка генрирует файл, который нужно распечатать (та самая форма 10, но заполненная заранее), подписать, отсканировать обратно и залить на сервер. Дальше нужно отсканировать квитанцию из банка и ИНН.
После этого сканы нужно подписать уже электронной подписью. Это делается прямо на сайте, а поскольку закон запрещает передавать приватный ключ, то с сайта грузится жава-апплет, считает подписи локально и на сервер грузит только результат.
...
Регистрационный портал - это очень страшный сайт по адресу http://rp.irc.gov.ua. В отличии от таксера, там даже не жава-апплет, а целый силверлайтовый ад, который требует поставить в систему дополнительные библиотеки и только после этого работает. Конечно же - только под виндами и только после трех ребутов.
....
Похоже не меня одного заебало онеме? Похоже модно стало делать треш.
Логарифм — это операция, которая при применении её к числу делает его гораздо меньше (подобно взятию квадратного корня).
Итак, первая вещь, которую вы должны запомнить:
логарифм возвращает число, меньшее, чем оригинал.
http://habrahabr.ru/post/195996/
число, меньшее, чем оригинал.
число, меньшее, чем оригинал.