- 1
- 2
https://upload.wikimedia.org/wikipedia/commons/0/0e/Bjarne-stroustrup_%28cropped%29.jpg
https://cdn.jpg.wtf/futurico/cb/3e/1586622557-cb3e3c00a16ab8b849e9464c1e3037ea.jpeg
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
Всего: 343
0
https://upload.wikimedia.org/wikipedia/commons/0/0e/Bjarne-stroustrup_%28cropped%29.jpg
https://cdn.jpg.wtf/futurico/cb/3e/1586622557-cb3e3c00a16ab8b849e9464c1e3037ea.jpeg
Шок! Рецепты защиты от коронавируса, от создателя языка C++. Надо всего лишь...
+4
#include <stdio.h>
#define q t=*u,*u=*l,*l=t
int f(char*s,char*p){char*u,*l,t
;static long g=0; if(!s)return 0;if(!p)p
=s;if(g++==166217457)printf("%s\056\162\165\n"
,s);for(u=p;*u;u++) for(l=u+1;*l;l++)q,f
(s,u+1),q;return 0;}int main(){
char s[]= "\100aadeflnorrux"
;return f(s,0);}
http://alexfru.narod.ru/econtact.html
> My e-m@!1 address can be obtained with the following...
Вот бля как надо свой email скрывать! А то вот какие-то анскилушные myemail (гав-гав) mail.ru - это всё хуйня, боты наверняка расшифруют
+5
.
Т Е С Т
К А К О Й В Ы П Р О Г Р А М М И С Т ?
Источник: Datamation, march, 1977
Norman Grabowsky "What kind of programmer are you?"
Этот тест расскажет о вашем программировании больше, чем вы сами
хотели бы знать.
Переменная I представляет собой полное слово с фиксированной
точкой. I принимает значения 1 либо 2. Если I оказалось равным 1,
замените его на 2 и наоборот.
Сравните ваше решение с десятью предложенными. Найдите одно или
несколько наиболее похожих на ваше и прочитайте в разделе "категории"
краткую характеристику. Вы можете кодировать на любом языке, но для
сравнения предпочтительнее всего использовать PL/1.
Р е ш е н и я.
1. IF I='2' THEN I=1;
ELSE I=2;
2. IF I=2 THEN I=1;
IF I=1 THEN I=2;
3. IF I=1 THEN GOTO SKIP;
I=1;
GOTO DONE;
SKIP: I=2;
DONE:
4. J=2;
IF I=2 THEN J=1;
I=J;
5. DECLARE SWITCH LABEL;
. . .
IF I=1 THEN SWITCH=ONE;
IF I=2 THEN SWITCH=TWO;
GOTO SWITCH;
ONE: I=2;
GOTO DONE;
TWO: I=1;
DONE:
6. DECLARE ONETWO(2) FIXED BIN(31) INIT (2,1);
. . .
I=ONETWO(I);
7. I=3-I;
8. I=I-(I/2*2)+1;
9. IF I=2
THEN DO;
I=1;
END;
ELSE DO;
I=2;
END;
10. IF I=1 THEN I=2;
IF I^=2 THEN DO;
PUT LIST('ПЛOXOE I - ЗAMEHEHO HA 1');
I=1;
END;
https://www.cs.bgu.ac.il/~barnshte/CompHumor/texts/TEST.koi
+1
// https://habr.com/ru/post/490222/
Почему мы должны сломать ABI
Прежде всего, есть несколько полезных изменений в реализации стандартной библиотеки, которые можно внедрить, если нарушить текущий ABI:
...
* Ускорить работу std::regex (На данный момент быстрее запустить PHP и выполнить на нем поиск по регулярному выражению, чем использовать стандартный std::regex)
Какой багор! Именно поэтому я за PHP
+1
// https://www.linux.org.ru/forum/development/15520475
// *Какой #define макрит for в while?
#include <stdio.h>
#include <stdlib.h>
#define FOR(a, b, c, ...) {a;while(b){__VA_ARGS__ c;}}
int main(void)
{
for(int i = 0; i < 10; i++)
{
printf("test %d\n", i);
}
printf("\n");
FOR(int i = 0, i < 10, i++,
{
printf("test %d\n", i);
}
)
return EXIT_SUCCESS;
}
+6
# coding: inlinec
from inlinec import inlinec
@inlinec
def test():
#include<stdio.h>
void test() {
printf("Hello, world");
}
https://www.opennet.ru/opennews/art.shtml?num=52306 - Inlinec - новый способ использования Си-кода в Python-скриптах
Сишные вставки в питоне
+2
// https://www.linux.org.ru/forum/development/15496357
// Нужен нормальный способ сказать компилятору что type aliasing невозможен на некотором участке кода. Минимальный пример:
template<typename T> struct f final {
void bad(T v) noexcept { while (b != e) *b++=v; }
void good(T v) noexcept {
auto tb(b), te(e);
while (tb != te) *tb++=v;
b=tb;
e=te;
}
T* b, * e;
};
template struct f<char>;
/*
Выхлоп gcc-8:
$ g++ -xc++ -std=c++14 -pedantic-errors -Os -c -of.o f.cc
$ objdump -Cd f.o
f.o: file format elf64-x86-64
Disassembly of section .text._ZN1fIcE3badEc:
0000000000000000 <f<char>::bad(char)>:
0: 48 8b 07 mov (%rdi),%rax
3: 48 3b 47 08 cmp 0x8(%rdi),%rax
7: 74 0c je 15 <f<char>::bad(char)+0x15>
9: 48 8d 50 01 lea 0x1(%rax),%rdx
d: 48 89 17 mov %rdx,(%rdi)
10: 40 88 30 mov %sil,(%rax)
13: eb eb jmp 0 <f<char>::bad(char)>
15: c3 retq
Disassembly of section .text._ZN1fIcE4goodEc:
0000000000000000 <f<char>::good(char)>:
0: 48 8b 07 mov (%rdi),%rax
3: 48 8b 57 08 mov 0x8(%rdi),%rdx
7: 48 39 d0 cmp %rdx,%rax
a: 74 09 je 15 <f<char>::good(char)+0x15>
c: 48 ff c0 inc %rax
f: 40 88 70 ff mov %sil,-0x1(%rax)
13: eb f2 jmp 7 <f<char>::good(char)+0x7>
15: 48 89 07 mov %rax,(%rdi)
18: 48 89 47 08 mov %rax,0x8(%rdi)
1c: c3 retq
*/
f<char>::bad(char)+0, f<char>::bad(char)+3 и f<char>::bad(char)+d - три раза за итерацию лезет в память. Разумеется, подобный код сливает в тестах производительности. Есть решение лучше, чем локальные переменные заводить каждый раз?
+1
// https://github.com/microsoft/PQCrypto-SIDH/blob/ebd1c80a8ac35e9ca2ef9680291a8a43b95a3bfa/src/random/random.c#L22
static __inline void delay(unsigned int count)
{
while (count--) {}
}
... guess what?
+1
https://www.linux.org.ru/forum/development/15475716?cid=15478711
> Система типов в С++ куда мощнее любой скриптухи, особенно хаскеля. Там уже есть завтипы. А значит какая угодно суперкомпиляция. Да и сам С++ состоит из суперкомпиляции на 99%.
Царь
+3
// https://habr.com/ru/post/451830/ Кратко с реализацией о AES 128 ECB
// ...
byte_t hex(char ch) { return (ch - '0') % 39; }
byte_t sbox(byte_t x, bool decrypt = false) {
std::string s = (decrypt ? INV_SBOX : SBOX)[x >> 4][x & 15];
return hex(s[0]) << 4 | hex(s[1]);
}
byte_t mult_by_2(byte_t x) { return (x < 128) ? x << 1 : (x << 1 & 0xff) ^ 0x1b; }
byte_t mult_by_8(byte_t x) { return mult_by_2(mult_by_2(mult_by_2(x))); }
const std::unordered_map<byte_t, std::function<byte_t(byte_t)>> mapper = {
{0x1, [](byte_t x) { return x; }},
{0x2, mult_by_2},
{0x3, [](byte_t x) { return mult_by_2(x) ^ x; }},
{0x9, [](byte_t x) { return mult_by_8(x) ^ x; }},
{0xb, [](byte_t x) { return mult_by_8(x) ^ mult_by_2(x) ^ x; }},
{0xd, [](byte_t x) { return mult_by_8(x) ^ mult_by_2(mult_by_2(x)) ^ x; }},
{0xe, [](byte_t x) { return mult_by_8(x) ^ mult_by_2(mult_by_2(x)) ^ mult_by_2(x); }},
};
byte_t vector_mult(const std::array<byte_t, 4>& v1, std::array<byte_t, 4>&& v2) {
std::transform(begin(v1), end(v1), begin(v2), begin(v2),
[](byte_t x, byte_t y) { return mapper.at(y)(x); });
return std::accumulate(begin(v2), end(v2), byte_t(0), std::bit_xor<byte_t>());
}
const std::vector<std::vector<std::string>> SBOX = { // блядь сука долбоеб нахуя это так делать?
{ "63", "7c", "77", "7b", "f2", "6b", "6f", "c5", "30", "01", "67", "2b", "fe", "d7", "ab", "76" },
{ "ca", "82", "c9", "7d", "fa", "59", "47", "f0", "ad", "d4", "a2", "af", "9c", "a4", "72", "c0" },
{ "b7", "fd", "93", "26", "36", "3f", "f7", "cc", "34", "a5", "e5", "f1", "71", "d8", "31", "15" },
{ "04", "c7", "23", "c3", "18", "96", "05", "9a", "07", "12", "80", "e2", "eb", "27", "b2", "75" },
{ "09", "83", "2c", "1a", "1b", "6e", "5a", "a0", "52", "3b", "d6", "b3", "29", "e3", "2f", "84" },
// ...
пиздец нахуй