- 1
$ find ~ -name .git -type d -prune -printf "***\n%p\n***\n" -exec git -C '{}/..' status \;
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
$ find ~ -name .git -type d -prune -printf "***\n%p\n***\n" -exec git -C '{}/..' status \;
0
#include <iostream>
#include <ctime>
using namespace std;
#define SIZE 200000000
struct StackRazrivator {
int data[SIZE];
};
void razorvi() {
cout << "nachinau razrivat\n";
StackRazrivator r;
}
void razrivator() {
cout << "razrivator\n";
razorvi();
}
int main() {
cout << "start" << endl;
razrivator();
return 0;
}
Что выведет программа, если скомпилировать без оптимизаций и почему?
https://godbolt.org/z/75Yzer
+3
// https://deadlockempire.github.io/
// Игра, где надо играть за планировщик чтоб вызвать дедлок
// https://deadlockempire.github.io/#2-flags
// First Army
while (true) {
while (flag != false) {
;
}
flag = true;
critical_section();
flag = false;
}
// Second Army
while (true) {
while (flag != false) {
;
}
flag = true;
critical_section();
flag = false;
}
The day finally came. The Deadlock Empire opened its gates and from them surged massive amounts of soldiers, loyal servants of the evil Parallel Wizard. The Wizard has many strengths - his armies are fast, and he can do a lot of stuff that we can't. But now he set out to conquer the world, and we cannot have that.
You are our best Scheduler, commander! We have fewer troops and simpler ones, so we will need your help. Already two armies of the Deadlock Empire are approaching our border keeps. They are poorly equipped and poorly trained, however. You might be able to desync them and break their morale.
+2
function main()
{
f1();
}
function f1(a = 10)
{
return a;
}
// code for 1
module @"1.ts" {
func @main() {
%c0_i32 = constant 0 : i32
%0 = typescript.undef : i32
%1 = call @f1(%c0_i32, %0) : (i32, i32) -> i32
return
}
func private @f1(%arg0: i32, %arg1: i32) -> i32 attributes {OptionalFrom = 1 : i8} {
%c10_i32 = constant 10 : i32
%c1_i32 = constant 1 : i32
%0 = alloca() : memref<i32>
%1 = cmpi ult, %arg0, %c1_i32 : i32
%2 = scf.if %1 -> (i32) {
scf.yield %c10_i32 : i32
} else {
scf.yield %arg1 : i32
}
store %2, %0[] : memref<i32>
%3 = load %0[] : memref<i32>
return %3 : i32
}
}
// code for 2
; ModuleID = 'LLVMDialectModule'
source_filename = "LLVMDialectModule"
target datalayout = "e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-pc-windows-msvc"
declare i8* @malloc(i64)
declare void @free(i8*)
define void @main() !dbg !3 {
%1 = call i32 @f1(i32 0, i32 undef), !dbg !7
ret void, !dbg !9
}
define i32 @f1(i32 %0, i32 %1) !dbg !10 {
%3 = alloca i32, i64 ptrtoint (i32* getelementptr (i32, i32* null, i64 1) to i64), align 4, !dbg !11
%4 = insertvalue { i32*, i32*, i64 } undef, i32* %3, 0, !dbg !11
%5 = insertvalue { i32*, i32*, i64 } %4, i32* %3, 1, !dbg !11
%6 = insertvalue { i32*, i32*, i64 } %5, i64 0, 2, !dbg !11
%7 = icmp ult i32 %0, 1, !dbg !11
br i1 %7, label %8, label %9, !dbg !11
8: ; preds = %2
br label %10, !dbg !11
9: ; preds = %2
br label %10, !dbg !11
10: ; preds = %8, %9
%11 = phi i32 [ %1, %9 ], [ 10, %8 ]
br label %12, !dbg !11
12: ; preds = %10
%13 = extractvalue { i32*, i32*, i64 } %6, 1, !dbg !11
store i32 %11, i32* %13, align 4, !dbg !11
%14 = extractvalue { i32*, i32*, i64 } %6, 1, !dbg !11
%15 = load i32, i32* %14, align 4, !dbg !11
ret i32 %15, !dbg !13
}
История о том как я компайлер писал. (предисторию знают думаю все). Посмотрите на код и сравните с ужасным кодом на С. Это простенький javascript который тоже може быть скомпиленным в исполняемый год. а что для этого надо. просто несколько шагов.
1) компилим код через чудо компилятор tsc.exe --emit=mlir-affine c:\1.ts
llc.exe --filetype=obj -o=out.o 1.ll
0
SELECT sum(t4.value) as "План", STR_TO_DATE(t4.date, '%d-%m-%Y') AS "time" FROM
(SELECT t.id, t.subject, t3.depth, t.value,
CASE WHEN t.field_name = "Август 2020 (план)" THEN "2020-08-01"
WHEN t.field_name = "Август 2020 (факт)" THEN "2020-08-01"
WHEN t.field_name = "Апрель 2020 (план)" THEN "2020-04-01"
WHEN t.field_name = "Апрель 2020 (факт)" THEN "2020-04-01"
WHEN t.field_name = "Декабрь 2020 (план)" THEN "2020-12-01"
WHEN t.field_name = "Декабрь 2020 (факт)" THEN "2020-12-01"
WHEN t.field_name = "Июль 2020 (план)" THEN "2020-07-01"
WHEN t.field_name = "Июль 2020 (факт)" THEN "2020-07-01"
WHEN t.field_name = "Июнь 2020 (план)" THEN "2020-06-01"
WHEN t.field_name = "Июнь 2020 (факт)" THEN "2020-06-01"
WHEN t.field_name = "Май 2020 (план)" THEN "2020-05-01"
WHEN t.field_name = "Май 2020 (факт)" THEN "2020-05-01"
WHEN t.field_name = "Март 2020 (план)" THEN "2020-03-01"
WHEN t.field_name = "Март 2020 (факт)" THEN "2020-03-01"
WHEN t.field_name = "Ноябрь 2020 (план)" THEN "2020-11-01"
WHEN t.field_name = "Ноябрь 2020 (факт)" THEN "2020-11-01"
WHEN t.field_name = "Октябрь 2020 (план)" THEN "2020-10-01"
WHEN t.field_name = "Октябрь 2020 (факт)" THEN "2020-10-01"
WHEN t.field_name = "Сентябрь 2020 (план)" THEN "2020-09-01"
WHEN t.field_name = "Сентябрь 2020 (факт)" THEN "2020-09-01"
WHEN t.field_name = "Февраль 2020 (план)" THEN "2020-02-01"
WHEN t.field_name = "Февраль 2020 (факт)" THEN "2020-02-01"
WHEN t.field_name = "Январь 2020 (план)" THEN "2020-01-01"
WHEN t.field_name = "Январь 2020 (факт)" THEN "2020-01-01" end AS DATE
FROM (
SELECT i.id AS id, i.subject AS subject, i.updated_on as updated_on,
cf.name AS field_name,
cv.value AS value
FROM issues i
LEFT JOIN custom_values cv
ON i.id = cv.customized_id
LEFT JOIN custom_fields cf
ON cv.custom_field_id=cf.id
WHERE cv.customized_type="Issue" and (i.project_id = 2284)) t
LEFT join
(SELECT t2.id,
GROUP_CONCAT(DISTINCT(CASE WHEN t2.field_name = "Код бюджета" THEN t2.value else null END)) AS depth
FROM (
SELECT i.id AS id, i.subject AS subject, i.updated_on as updated_on,
cf.name AS field_name,
cv.value AS value
FROM issues i
LEFT JOIN custom_values cv
ON i.id = cv.customized_id
LEFT JOIN custom_fields cf
ON cv.custom_field_id=cf.id
WHERE cv.customized_type="Issue" and (i.project_id = 2284)) t2
GROUP BY t2.id) t3
ON t.id=t3.id
WHERE INSTR(t.field_name, "план")>0 ) t4
WHERE substr(t4.date,1,7) in ($time) and t4.value!=0 and t4.depth=1 and t4.subject = 'Себестоимость реализованной готовой продукции (товаров, работ, услуг)'
group by t4.date
https://t.me/dba_ru/131122
0
~ >>> ls -1 text.txt | xargs cat
cat: ''$'\033''[0m'$'\033''[00;32mtext.txt'$'\033''[0m': No such file or directory
Ну охуеть теперь.
zsh c подстветкой синтаксиса бля.
кастую СёмаРиал, объясни, что надо сделать с терминфо
0
function check_cur_zak(id_zak, obj)
{
obj.getElementsByTagName('img')[0].style.display='none';
obj.getElementsByTagName('img')[1].style.display='block';
var ch_ids_tree_dse = arr2_ids_dse[id_zak].split('|');
var ch_names_tree_dse = arr2_names_dse[id_zak].split('|');
var ch_obozs_tree_dse = arr2_obozs_dse[id_zak].split('|');
var ch_child_tree_dse = arr2_child_dse[id_zak].split('|');
var cur_tree_dse = '';
if(document.getElementById('nav_tekysh_3').name>0)
{
console.log(arr_oprs_c_r_2)
var spl_op_res = arr_oprs_c_r_2[document.getElementById('nav_tekysh_3').name].split('|');
var spl_op_res_arr = [];
for (var spl_f_ar=0; spl_f_ar<spl_op_res.length; spl_f_ar++)
spl_op_res_arr[spl_op_res[spl_f_ar]] = spl_op_res[spl_f_ar];
}
for (var ch_t_f_d=0; ch_t_f_d < (ch_ids_tree_dse.length-1); ch_t_f_d++)
{
var cur_tree_oper_cur_dse = '';
var jv3_arr_full_tbl_1_spl = jv2_arr_full_tbl_1_spl[ch_ids_tree_dse[ch_t_f_d]].split('|');
var jv3_arr_full_tbl_2_spl = jv2_arr_full_tbl_2_spl[ch_ids_tree_dse[ch_t_f_d]].split('|');
var jv3_arr_full_tbl_3_spl = jv2_arr_full_tbl_3_spl[ch_ids_tree_dse[ch_t_f_d]].split('|');
var jv3_arr_full_tbl_4_spl = jv2_arr_full_tbl_4_spl[ch_ids_tree_dse[ch_t_f_d]].split('|');
var jv3_arr_full_tbl_5_spl = jv2_arr_full_tbl_5_spl[ch_ids_tree_dse[ch_t_f_d]].split('|');
var jv3_arr_full_tbl_5_1_spl = jv2_arr_full_tbl_5_1_spl[ch_ids_tree_dse[ch_t_f_d]].split('|');
var jv3_arr_full_tbl_6_spl = jv2_arr_full_tbl_6_spl[ch_ids_tree_dse[ch_t_f_d]].split('|');
var jv3_arr_full_tbl_7_spl = jv2_arr_full_tbl_7_spl[ch_ids_tree_dse[ch_t_f_d]].split('|');
var jv3_arr_full_tbl_8_spl = jv2_arr_full_tbl_8_spl[ch_ids_tree_dse[ch_t_f_d]].split('|');
var jv3_arr_full_tbl_9_spl = jv2_arr_full_tbl_9_spl[ch_ids_tree_dse[ch_t_f_d]].split('|');
var jv3_arr_full_tbl_10_spl = jv2_arr_full_tbl_10_spl[ch_ids_tree_dse[ch_t_f_d]].split('|');
var jv3_arr_full_tbl_11_spl = jv2_arr_full_tbl_11_spl[ch_ids_tree_dse[ch_t_f_d]].split('|');
var jv3_arr_full_tbl_12_spl = jv2_arr_full_tbl_12_spl[ch_ids_tree_dse[ch_t_f_d]].split('|');
var jv3_arr_full_tbl_14_spl = jv2_arr_full_tbl_14_spl[ch_ids_tree_dse[ch_t_f_d]].split('|');
var jv3_arr_full_tbl_15_spl = jv2_arr_full_tbl_15_spl[ch_ids_tree_dse[ch_t_f_d]].split('|');
var jv3_arr_full_tbl_16_spl = jv2_arr_full_tbl_16_spl[ch_ids_tree_dse[ch_t_f_d]].split('|');
jv3_arr_full_tbl_17_spl = jv2_arr_full_tbl_17_spl[ch_ids_tree_dse[ch_t_f_d]].split('|');
jv3_arr_full_tbl_18_spl = jv2_arr_full_tbl_18_spl[ch_ids_tree_dse[ch_t_f_d]].split('|');
jv3_arr_full_tbl_19_spl = jv2_arr_full_tbl_19_spl[ch_ids_tree_dse[ch_t_f_d]].split('|');
var cur_dse_op_dse = '';
var cur_id_op_dse = '';
var cur_vp_op_dse = '';
for (var ch_t_f_o=0; ch_t_f_o < (jv3_arr_full_tbl_1_spl.length-1); ch_t_f_o++)
{
var clas_tr_col = 'fff';
var clas_tr_br = 'fff';
var clas_tr_pr = 'fff';
var clas_tr_park = 'fff';
var zadel_op = 0;
var stl_b_tr_pr = '';
var js_vp_op = '0<br>0.00';
var js_ksz_op = '0<br>0.00';
// if (jv3_arr_full_tbl_14_spl[ch_t_f_o]>0)
// {
// clas_tr_col='ddffdd';
// clas_tr_br='ddffdd';
// clas_tr_pr='ddffdd';
// clas_tr_park='ddffdd';
// }
if(document.getElementById('nav_tekysh_3').name>0)
{
if (spl_op_res_arr[jv3_arr_full_tbl_16_spl[ch_t_f_o]])
{
clas_tr_pr='99ff99';
stl_b_tr_pr = 'font-size:150%; color:#13BD13;padding-left:5px';
}
var parks_for_cur_res = document.getElementById('park_sel_cur_res').options.length;
for (var p_f_c_r=0; p_f_c_r<parks_for_cur_res; p_f_c_r++)
{
if ((document.getElementById('park_sel_cur_res').options[p_f_c_r].value !== '0')&&(document.getElementById('park_sel_cur_res').options[p_f_c_r].value !== ''))
{
if (jv3_arr_full_tbl_5_1_spl[ch_t_f_o]==document.getElementById('park_sel_cur_res').options[p_f_c_r].value)
clas_tr_park='99ddff';
}
}
}
if (jv3_arr_full_tbl_12_spl[ch_t_f_o]==1)
clas_tr_br='ff9999';
if (jv3_arr_full_tbl_15_spl[ch_t_f_o]==0)
{
if(jv3_arr_full_tbl_3_spl[ch_t_f_o]=='')
jv3_arr_full_tbl_3_spl[ch_t_f_o]='0';
if(jv3_arr_full_tbl_6_spl[ch_t_f_o]=='')
jv3_arr_full_tbl_6_spl[ch_t_f_o]='0.00';
if(jv3_arr_full_tbl_7_spl[ch_t_f_o]=='')
jv3_arr_full_tbl_7_spl[ch_t_f_o]='0';
if(jv3_arr_full_tbl_8_spl[ch_t_f_o]=='')
+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
В результате мы имеем пачку долбоебов, из-за которых оперирующие (мапами / объектами / словарями / как угодно назовите)
нормальные люди должны вести себя как типичные гошники.
0
Питушня #13
#1: https://govnokod.ru/26692 https://govnokod.xyz/_26692
#2: https://govnokod.ru/26891 https://govnokod.xyz/_26891
#3: https://govnokod.ru/26893 https://govnokod.xyz/_26893
#4: https://govnokod.ru/26935 https://govnokod.xyz/_26935
#5: (vanished) https://govnokod.xyz/_26954
#6: (vanished) https://govnokod.xyz/_26956
#7: https://govnokod.ru/26964 https://govnokod.xyz/_26964
#8: https://govnokod.ru/26966 https://govnokod.xyz/_26966
#9: https://govnokod.ru/27017 https://govnokod.xyz/_27017
#10: https://govnokod.ru/27045 https://govnokod.xyz/_27045
#11: https://govnokod.ru/27058 https://govnokod.xyz/_27058
#12: https://govnokod.ru/27182 https://govnokod.xyz/_27182
0
static int callback_from_db_message(void *data, int argc, char **argv, char **azColName) {
int *userSocket = data;
long time = atol(argv[1]);
bool edit = atoi(argv[2]);
char *sTime = mx_strnew(26);
ctime_r(&time, sTime);
char *buffer = new_messageClient1(argv[0], argv[3],sTime,edit);
usleep(10000);
int receive = send(*userSocket, buffer, mx_strlen(buffer), 0);
return argc - argc + mx_strlen(azColName[0] ? "" : "0") - mx_strlen(azColName[0] ? "" : "0");
}
Компилятор жалуется, что не используется переменная?
И при быстром отправке в сокет, сообщения соединяются в один?
Вот решение!