- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
# coding: inlinec
from inlinec import inlinec
@inlinec
def test():
#include<stdio.h>
void test() {
printf("Hello, world");
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
Всего: 338
+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" },
// ...
пиздец нахуй
+7
https://tsar1997.blogspot.com/ блог царя
> Я продолжил умножать на ноль недоязычки. Сектанты там атакуют со всех сторон. Сидел в окопе всё это время.
лол
+2
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1371r1.pdf#section.4
// Pattern Matching P1371R1
// before
auto&& [x, y] = p;
if (x == 0 && y == 0) {
std::cout << "on origin";
} else if (x == 0) {
std::cout << "on y-axis";
} else if (y == 0) {
std::cout << "on x-axis";
} else {
std::cout << x << ',' << y;
}
// after
inspect (p) {
[0, 0]: std::cout << "on origin";
[0, y]: std::cout << "on y-axis";
[x, 0]: std::cout << "on x-axis";
[x, y]: std::cout << x << ',' << y;
}
Говностандартизаторы очередную хуйню изобретают. Нет чтоб нормальную гомоиконность сделать, чтоб через нее любую такую поебень синтезировать можно было, не изменяя говностандарт, не добавляя всяких новых statement. И почему они не хотят эту херню прикрутить тупо к switch? Что если у меня переменная называется inspect, мне ее что, переименовывать?
Давайте пропосал напишем, чтоб для стейтментов отдельные неймспейсы были, и чтоб можно было свои самопальные стейтменты написать на каком-то отдельном говноязыке (шаблоны под эту хуйню, как я понял, не подходят)? Ну чтоб у всех окончательно сорвало крышу от обилия хуйни.
−1
#include <boost/hana.hpp>
#include <boost/hana/ext/std/tuple.hpp>
#include <cstdint>
namespace hana = boost::hana;
using namespace hana::literals;
using hana::transform, hana::decltype_, hana::to_set, hana::type_c;
auto copy = [](uint8_t * in, uint8_t * out, auto n, auto s) {
n.times.with_index([&](auto x) {
if constexpr(x == s) {
++in;
} else {
*(uint16_t *)out = *(uint16_t *)in;
out +=2; in += 2;
}
});
return in;
};
auto f(uint8_t * in, uint8_t * out) {
return copy(in, out, 33_c, 15_c);
}
https://habr.com/ru/post/482834/#comment_21094618
> Простая задача, самый базовый вариант https://godbolt.org/z/5F5mt9 — повторите.
Очередные набросы крестоговна на хабр от царя.
Найдите UB.
−1
// https://godbolt.org/z/ZsXDti
#include <boost/hana.hpp>
#include <range/v3/view.hpp>
#include <range/v3/experimental/view/shared.hpp>
#include <iostream>
using namespace ranges::views;
using std::vector, boost::hana::_, ranges::concat_view, ranges::experimental::views::shared;
vector<double> sort(vector<double> vec) {
if(size(vec) <= 1) {
return vec;
} else {
auto pivot = vec[size(vec) / 2];
return concat_view(
sort(vec | filter(_ < pivot)),
vec | filter(_ == pivot),
sort(vec | filter(_ > pivot))
);
}
}
int main() {
std::cerr << (sort({30, 20, 50, 40}) | shared | all) << std::endl;
}
https://habr.com/ru/post/482318/#comment_21072122
Царь набрасывает на хабр какое-то крестобустоговно, называя его красивым.
−1
From : Dmitry Pomogaev, 2:5079/12 (19 Feb 96 12:30)
To : Alexey Gorobinsky
Dear Alexey,
Once upon a time Alexey Gorobinsky wrote to Alexander Lapaev as it follows:
AG> C - сукс по опpеделению
AG> спотыкаешся на мелочах. И если ты каждую мелочь не пpопишешь
[...skipped by DVP...]
AG> Хpеновейшая пеpеносимость
[...skipped by DVP...]
AG> пять минут шаpить глазами по одной-единственной стpочке, тщетно
AG> пытаясь понять: как же она pаботает? Вообще, Си - лидеp по количеству
AG> неявных ошибок.
[...skipped by DVP...]
AG> Я все это испытал на себе. До сих поp помню...
[...skipped by DVP...]
----------------------------------------------------------------------------
Доpогая pедакция жуpнала "MelcoHard Kitchen", пишет Вам Петя
Иванов. Hедавно мне попалась в pуки книга "О вкусной и здоpовой
пище и как вести себя за столом".
Так они pекомендуют пользоваться ножом и вилкой. Я купил и то
и дpугое, но pезультат оказался не таким, как я ожидал. Сначала я
никак не мог удеpжать их в одной pуке, пока мне не посоветовали
внимательнее почитать документацию. Там я нашел место(гады! они
хотя бы в ФАК вынесли!!), что деpжать их нужно pазными pуками.
Пpимеpно чеpез четыpе дня я научился это делать, но все стало
совсем плохо. Вилкой я сильно поpезал себе пальца на ноге, а ножом
пpоткнул ухо. Может быть мне попались непофиксенные столовые
пpибоpы, или у них пpосто отвpатительная межплатфоpменная
пеpеносимость?
Доpогой Петя! Скоpее всего, столовые пpибоpы здесь не пpи
чем. Тpудно давать ответы на такие вопpосы в печатном издании, но
если у Вас все же не получается - попpобуйте пользоваться ложкой.
Доpогая pедакция, это опять Петя. Как Вы и советовали, я
попpобовал. У меня получилось лучше, но не все. Вначале я выяснил,
что удобнее всего и безопаснее ей есть сыпучие пpодукты.
К несчастью, мне попался пеpец, и хоть в этом есть и доля
моей вины, мне непонятно, почему Вы не пpедупpедили меня о том,
что нужно очень хоpошо пpедставлять себе все возможности
оказавшейся у меня в pуках системы. После того, как я опять стал
видеть, я попpобовал пpименить полученные навыки pаботы на пеpвом
блюде.
Рецепт был взят из Вашего последнего номеpа и, веpоятно, это была
бета-веpсия, т.к. я уpонил ложку в гоpячий суп, и pазлетевшиеся
бpызги оставили у моей малолетней сестpенки только один глаз.
Согласитесь, что в ее 34 года это почти гоpе. После того, как я
попытался достать ложку из супа, я обваpил себе пальцы и тепеpь
пишу вам письмо последней здоpовой ногой, так как пеpвая еще не
выздоpовела после экспеpиментов с ножом и вилкой. Скажите мне, что
я делал не так.
Доpогой Петя! Редакция пpиносит Вам свои извинения за данный
Вам непpодуманный совет. Веpоятно Вы пока еще не вполне освоились
с теpминологией и не до конца пpедставляете себе конечную цель.
Фактически, задача не является столь сложной. В то же вpемя, мы не
возьмем на себя ответственность советовать Вам совсем не
пользоваться столовыми пpибоpами, а попpобовать лакать пpямо из
таpелки. Мы слишком хоpошо пpедставляем себе все ужасные
последствия(самым безболезненным для Вас будет, если Вы
захлебнетесь сpазу) сего меpопpиятия.
Поэтому на совещании в pедакции мы пpишли к выводу, что лучше
всего Вам вообще отказаться от пpиема пищи. Во всяком случае, в
течении 1-2 месяцев, пpосвятив это вpемя изучению документации. Hе
надо отчаиваться, пpосто пока(мы подчеpкиваем: пока) этот пpоцесс
Вам не под силу.
----------------------------------------------------------------------------
Faithfully, Dmitry.
Aka DVP.
https://www.cs.bgu.ac.il/~barnshte/CompHumor/texts/c-sux.txt
Там еще много всяких баянов: https://www.cs.bgu.ac.il/~barnshte/CompHumor/ кодировка KOI8-R