- 1
Просто оффтоп #16
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+1
Просто оффтоп #16
#1: https://govnokod.ru/20162 https://govnokod.xyz/_20162
#2: https://govnokod.ru/25329 https://govnokod.xyz/_25329
#3: https://govnokod.ru/25415 https://govnokod.xyz/_25415
#4: (vanished) https://govnokod.xyz/_25472
#5: https://govnokod.ru/25693 https://govnokod.xyz/_25693
#6: (vanished) https://govnokod.xyz/_26649
#7: https://govnokod.ru/26672 https://govnokod.xyz/_26672
#8: https://govnokod.ru/26924 https://govnokod.xyz/_26924
#9: https://govnokod.ru/27072 https://govnokod.xyz/_27072
#10: https://govnokod.ru/27086 https://govnokod.xyz/_27086
#11: https://govnokod.ru/27122 https://govnokod.xyz/_27122
#12: https://govnokod.ru/27153 https://govnokod.xyz/_27153
#13: https://govnokod.ru/27159 https://govnokod.xyz/_27159
#14: https://govnokod.ru/27200 https://govnokod.xyz/_27200
#15: https://govnokod.ru/27237 https://govnokod.xyz/_27237
+1
// https://docs.docker.com/engine/api/v1.24/#create-a-container
POST /v1.24/containers/create HTTP/1.1
Content-Type: application/json
Content-Length: 12345
{
"Hostname": "",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": true,
"AttachStderr": true,
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"FOO=bar",
"BAZ=quux"
],
...
}
Ядро предоставляет сисколл execve. Execve принимает переменные окружения в виде массива строк A=B -
не знаю конкретных причин, почему так сделано, но скорее всего просто потому что писать хэшмапу под
это дело, которая еще и будет выкинута из памяти через относительно небольшое время - дело дорогое и
ненужное, плюс наверняка какой-нибудь лишний пердолинг со стеком.
https://man7.org/linux/man-pages/man2/execve.2.html
Го, "человеческий язык" с поддержкой обычных мап из коробки, ничтоже сумляшеся не замечает никакой
проблемы и заставляет пользователя передавать переменные окружения в том же формате, потому что у
языка не только синтаксис должен быть таким же тупым, как программист на нём и вообще мы же тут
делаем вид, что мы C, только лучше.
https://golang.org/pkg/os/exec/#example_Command_environment
Докер, "человеческий сервис" с HTTP API, использующим формат JSON с поддержкой обычных мап из коробки,
ничтоже сумляшеся не замечает никакой проблемы и заставляет пользователя передавать переменные
окружения в том же формате, потому что на программист на языке должен быть тупым, как этот язык.
https://docs.docker.com/engine/api/v1.24/#create-a-container
В результате мы имеем пачку долбоебов, из-за которых оперирующие (мапами / объектами / словарями / как угодно назовите)
нормальные люди должны вести себя как типичные гошники.
+1
.
https://vc.ru/flood/149783-podgotovte-nomer-pablik-steytik-dzhava-tochka-pomoshchnik-oleg-zachital-sboy-vo-vremya-testa-v-koll-centre-tinkoff
+1
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Регистратор", ЭтотОбъект.Отбор.Регистратор.Значение);
Запрос.УстановитьПараметр("НачалоПериода", ЭтотОбъект.Отбор.Регистратор.Значение.МоментВремени());
Запрос.УстановитьПараметр("КонецПериода", ЭтотОбъект.Отбор.Регистратор.Значение.МоментВремени());
Запрос.Текст =
"ВЫБРАТЬ
| ТаблицаСоставаДокумента.Склад,
| ТаблицаСоставаДокумента.Номенклатура,
| ТаблицаСоставаДокумента.Качество,
| ТаблицаСоставаДокумента.ХарактеристикаНоменклатуры,
| ТаблицаСоставаДокумента.СерияНоменклатуры
|ПОМЕСТИТЬ ВТ_Состава_Документа
|ИЗ
| &ТаблицаСоставаДокумента КАК ТаблицаСоставаДокумента
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| СвободныеОстаткиОстаткиИОбороты.Склад,
| СвободныеОстаткиОстаткиИОбороты.Номенклатура,
| СвободныеОстаткиОстаткиИОбороты.Качество,
| СвободныеОстаткиОстаткиИОбороты.ХарактеристикаНоменклатуры,
| СвободныеОстаткиОстаткиИОбороты.СерияНоменклатуры,
| СвободныеОстаткиОстаткиИОбороты.КоличествоНачальныйОстаток,
| СвободныеОстаткиОстаткиИОбороты.КоличествоКонечныйОстаток
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(
| &НачалоПериода,
| &КонецПериода,
| Запись,
| Движения,
| НЕ Номенклатура.ВидНоменклатуры = ЗНАЧЕНИЕ(Справочник.ВидыНоменклатуры.Продукция)
| И НЕ Номенклатура.ВестиУчетПоСериям
| И (Склад, Номенклатура, Качество, ХарактеристикаНоменклатуры, СерияНоменклатуры) В
| (ВЫБРАТЬ
| ВТ_СоставаДокумента.Склад,
| ВТ_СоставаДокумента.Номенклатура,
| ВТ_СоставаДокумента.Качество,
| ВТ_СоставаДокумента.ХарактеристикаНоменклатуры,
| ВТ_СоставаДокумента.СерияНоменклатуры
| ИЗ
| ВТ_Состава_Документа КАК ВТ_СоставаДокумента)) КАК СвободныеОстаткиОстаткиИОбороты
|ГДЕ
| СвободныеОстаткиОстаткиИОбороты.Регистратор = &Регистратор
| И СвободныеОстаткиОстаткиИОбороты.КоличествоКонечныйОстаток < 0";
Проверка на отрицательные остатки.....
+1
$txtdd = $DI_Date;
$DI_Date = explode(".",$DI_Date);
$DI_YY = $DI_Date[2];
$DI_LYY = $DI_YY;
$DI_NYY = $DI_YY;
$MY = $DI_Date[1].".".$DI_Date[2];
$DI_MM = $DI_Date[1]-1;
$DI_LMM = $DI_MM-1;
if ($DI_LMM<0) $DI_LMM = 11;
$DI_NMM = $DI_MM+1;
if ($DI_NMM>11) $DI_NMM = 0;
if ($DI_MM==0) $DI_LYY = $DI_YY-1;
if ($DI_MM==11) $DI_NYY = $DI_YY+1;
$DI_DD = 1;
$lastM = $DI_MM;
$yy = $DI_YY;
if ($lastM<1) {
$lastM = 12+$lastM;
$yy = $yy - 1;
}
$lastM = $DI_DD.".".$lastM.".".$yy;
$nextM = $DI_MM+2;
$yy = $DI_YY;
if ($nextM>12) {
$nextM = $nextM-12;
$yy = $yy + 1;
}
$nextM = $DI_DD.".".$nextM.".".$yy;
$lastY = $DI_DD.".".($DI_MM+1).".".($DI_YY-1);
$nextY = $DI_DD.".".($DI_MM+1).".".($DI_YY+1);
+1
Немного богословия.
In the beginning was the word; and version of this Word was 1.0
+1
// https://quuxplusone.github.io/blog/2021/01/13/conversion-operator-lookup/
struct A {
using T = T1;
using U = U1;
operator U1 T1::*();
operator U1 T2::*();
operator U2 T1::*();
operator U2 T2::*();
};
inline auto which(U1 T1::*) { return "gcc"; }
inline auto which(U1 T2::*) { return "icc"; }
inline auto which(U2 T1::*) { return "msvc"; }
inline auto which(U2 T2::*) { return "clang"; }
int main() {
A a;
using T = T2;
using U = U2;
puts(which(a.operator U T::*()));
}
> As of this writing (but perhaps not for very much longer!) the four mainstream compilers on Godbolt Compiler Explorer give four different answers for this simple C++ program:
> According to the current draft standard, it sounds like the conforming answer is “they should both be looked up in the scope of A”; i.e., GCC’s answer is correct and the others are wrong in three different ways.
Какой багор )))
+1
void testToken(const char *value, size_t tokenExpected)
{
antlr4::ANTLRInputStream input(value);
typescript::TypeScriptLexerANTLR lexer(&input);
auto tokens = lexer.getAllTokens();
printTokens(lexer, tokens);
auto token = tokens.front().get();
std::ostringstream stringStream;
stringStream << "Expecting: [" << lexer.getTokenNames()[tokenExpected] << "] \"" << value << "\" but get: [" << lexer.getTokenNames()[token->getType()] << "] \"" << token->getText() << "\".";
auto msg = stringStream.str();
ASSERT_EQUAL_MSG(token->getType(), tokenExpected, msg);
ASSERT_THROW_MSG(token->getText().compare(value) == 0, msg);
}
void testOctalIntegerLiteral()
{
testToken("01", l::OctalIntegerLiteral);
}
Мой расказ о том как жизни было нехрен делать и я начал писать копилятор для TypeScript. как это "пинание х..я" кончиться я не знаю. но вот начал с простого. собрал минимум для разработки это LLVM и ANTLR4. И уже написал свой первый (ну не совсем) lexer.
вот тут можно посмотреть на убогость говнокода.
https://github.com/ASDAlexander77/TypeScriptCompiler
+1
board = [" ", " ", " "], \
[" ", " ", " "], \
[" ", " ", " "]
i = 1
win = True
place_chek = True
def show():
print("---------")
print("|" + board[0][0] + " " + board[0][1] + " " + board[0][2] + "|")
print("|" + board[1][0] + " " + board[1][1] + " " + board[1][2] + "|")
print("|" + board[2][0] + " " + board[2][1] + " " + board[2][2] + "|")
print("---------")
def move(i):
if i % 2 == 0:
return "X"
else:
return "0"
def choise(x, y):
board[x][y] = move(i)
def repeat(x, y):
global i
global place_chek
if board[x][y] == "0":
print()
print("Choose another location")
print()
place_chek = False
elif board[x][y] == "X":
print()
print("Choose another location")
print()
place_chek = False
elif board[x][y] == " ":
i = i + 1
place_chek = True
def win_check():
global win
if board[0][0] == board[0][1] == board[0][2] == "X" or \
board[1][0] == board[1][1] == board[1][2] == "X" or \
board[2][0] == board[2][1] == board[2][2] == "X" or \
board[0][0] == board[1][0] == board[2][0] == "X" or \
board[0][1] == board[1][1] == board[2][1] == "X" or \
board[0][2] == board[1][2] == board[2][2] == "X" or \
board[0][0] == board[1][1] == board[2][2] == "X" or \
board[0][2] == board[1][1] == board[2][0] == "X":
print("X won")
win = False
elif board[0][0] == board[0][1] == board[0][2] == "0" or \
board[1][0] == board[1][1] == board[1][2] == "0" or \
board[2][0] == board[2][1] == board[2][2] == "0" or \
board[0][0] == board[1][0] == board[2][0] == "0" or \
board[0][1] == board[1][1] == board[2][1] == "0" or \
board[0][2] == board[1][2] == board[2][2] == "0" or \
board[0][0] == board[1][1] == board[2][2] == "0" or \
board[0][2] == board[1][1] == board[2][0] == "0":
print("0 won")
win = False
show() # first time show
while win:
x, y = input("Enter the coordinates: ").split()
repeat(int(x) - 1, int(y) - 1)
if place_chek:
choise(int(x) - 1, int(y) - 1)
show()
win_check()
Крестики нолики на питоне. Самый большой позор это способ определение победы, не смог ничего придумать и сделал такой позор
+1
#include <iostream>
#include <cmath>
#include "govno.h"
using namespace std;
class SqrtQual {
const string not_kor = "Нет корней!\n";
struct ABC {
long double kA;
long double kB;
long double kC;
} gABC;
long double diskrim(long double a, long double b, long double c);
void diskrim_zero(long double a, long double b);
void diskrim_bolshe(long double a, long double b, long double d);
void vspomog();
void konez();
void m_bx_plus_c();
public:
void hello();
} obj;
int main() {
obj.hello();
}
void SqrtQual::hello() {
cout << "\nПрограмма вычисления корней квадратного уравнения по формуле: ";
cout << "aX^2 + bX + c = 0\n";
Govnokod obj;
gABC.kA = obj.opros('a');
gABC.kB = obj.opros('b');
gABC.kC = obj.opros('c');
cout << endl;
konez();
}
long double SqrtQual::diskrim(long double a, long double b, long double c) {
long double ac4 = 4*a*c;
long double bkv = pow(b, 2);
long double d = bkv - ac4;
cout << "Дискриминант = " << d << endl;
return d;
}
void SqrtQual::diskrim_zero(long double a, long double b) {
if (a == 0)
cout << not_kor;
else {
long double x = -b/(2*a);
cout << "X = " << x;
}
}
void SqrtQual::diskrim_bolshe(long double a, long double b, long double d) {
if (a == 0)
cout << not_kor;
else {
long double dsqrt = sqrt(d);
long double a2 = a * 2;
long double x1 = (-b + dsqrt) / a2;
long double x2 = (-b - dsqrt) / a2;
cout << "X1 = " << x1 << endl;
cout << "X2 = " << x2 << endl;
}
}
void SqrtQual::m_bx_plus_c() {
long double x = -gABC.kC/gABC.kB;
cout << "X = " << x << endl;
}
void SqrtQual::vspomog() {
long double D = diskrim(gABC.kA, gABC.kB, gABC.kC);
if (D < 0)
cout << not_kor;
else if (D == 0)
diskrim_zero(gABC.kA, gABC.kB);
else
diskrim_bolshe(gABC.kA, gABC.kB, D);
}
void SqrtQual::konez() {
bool any_digit = ((gABC.kA == 0) and
(gABC.kB == 0) and
(gABC.kC == 0));
bool not_equal_zero = ((gABC.kA == 0) and
(gABC.kB == 0) and
(gABC.kC != 0));
bool equal_zero_v1 = ((gABC.kA == 0) and
(gABC.kB != 0) and
(gABC.kC == 0));
bool equal_zero_v2 = ((gABC.kA != 0) and
(gABC.kB == 0) and
(gABC.kC == 0));
bool equal_zero = equal_zero_v1 or equal_zero_v2;
bool bx_plus_c = ((gABC.kA == 0) and (gABC.kB != 0));
if (any_digit)
cout << "X -- любое число.";
else if (not_equal_zero) {
cout << gABC.kC << " -- Не равно нулю!";
cout << not_kor; }
else if (equal_zero)
cout << "X = 0";
else if (bx_plus_c)
m_bx_plus_c();
else vspomog();
}
Вот для этой проги я писал предыдущие говнокоды. Тут нет решений для множества комплексных чисел пока что.