- 1
- 2
- 3
- 4
- 5
- 6
- 7
while ( port->available() )
{
au8Buffer[ u8BufferSize ] = port->read();
u8BufferSize ++;
if (u8BufferSize >= MAX_BUFFER) bBuffOverflow = true;
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+3
while ( port->available() )
{
au8Buffer[ u8BufferSize ] = port->read();
u8BufferSize ++;
if (u8BufferSize >= MAX_BUFFER) bBuffOverflow = true;
}
Если буфер переполнился – попробуем это запомнить и... продолжим затирать память! Реальный кусок из библиотеки работы с RS485 – протоколом, применяющимся в промышленных контроллерах и все такое.
+1
См. что пишут на лОре:
"... на сайте царила приятная атмосфера олдскульности, а контент был не хуже, чем на Хабре. [...]
неадекватный человек, который много лет спамит и оскорбляет участников. Из -за него а также из-за бездействия админа ушли многие участники и сайт запустел :("
−3
1)
const
OUT_OF_BOUNDS:TPoint=(X:-1; Y:-1);
var
INT_OUT_OF_BOUNDS:Integer absolute OUT_OF_BOUNDS;
TargetForm.Perform(WM_LBUTTONUP,0,INT_OUT_OF_BOUNDS);
2)
const
ZERO_ZERO:TPoint=(X:0; Y:0);
var
INT_ZERO_ZERO:Integer absolute ZERO_ZERO;
TargetForm.Perform(WM_LBUTTONUP,0,INT_ZERO_ZERO);
3)
TargetForm.Perform(WM_LBUTTONUP,0,0);
Болею. Стояла задача воспроизвести системное меню. Но оказалось, что при клике на элемент фейкового системного меню, форме не посылается WM_LBUTTONUP и кнопка-иконка не перекрашивается в ненажатый вид. Решил перформить WM_LBUTTONUP прямо при клике, но туда нужно передавать координаты мышки куда был совершён клик в High(lParam) и Low(lParam). Сначала хотел передавать -1;-1 но подумал что передавать туда $FFFFFFFF как-то некрасиво, а прямое приведение типов а-ля Integer(Point(-1,-1)) оно у меня хавать не захотело, и поэтому красоты ради наговнокодил первый вариант кода. Потом подумал, а что если там только положительные значения, будет же 65535;65535 непорядок, лучше буду передавать нули. Впихнуть туда просто 0 сразу в голову не пришло (болею же, башка квадратная) и наговнокодил второй вариант.
Потом, конечно же, написал всё по нормальному.
+3
template <typename T>
void f() {
if constexpr (std::is_arithmetic_v<T>)
// ...
else
static_assert(false, "Must be arithmetic"); // ill-formed: invalid for every T
}
// The common workaround for such a catch-all statement is a type-dependent expression that is always false:
template<class T> struct dependent_false : std::false_type {};
template <typename T>
void f() {
if constexpr (std::is_arithmetic_v<T>)
// ...
else
static_assert(dependent_false<T>::value, "Must be arithmetic"); // ok
}
То есть «static_assert(false)» в шаблоне — это UB. Чтобы оно было не UB и можно было спокойно отключать ненужные специализации — надо городить ёбанный костыль. Пиздец. Почему стандартизаторы не могут просто взять и сделать что-то удобное? Что-то, для чего не требуется городить по десятку костылешаблонов, заставляющих его работать? Что-то без ёбанной явной специализации для bool? Почему любой высер крестокомитета обязательно должен быть максимально сложным, вербозным, неочевидным говном с кучей подводных камней и UB?
0
std::tuple<int, int, int, bool> cock;
std::get<bool>(cock)
Сначала не понимал нахуй нужен геттер по типу, но при очередном добавлении нового int и забытии поменять индекс у була, заюзал его.
Бтв, почему нету cock.get<0>?
−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.
−3
void push_stack(node *topPTR, int value) {
node newPTR = malloc(sizeof(Stack));
if (newPTR != NULL) {
newPTR->alpha = value;
newPTR->nxtPTR = *topPTR;
*topPTR = newPTR;
}
else {
puts("error");
}
}
void push_stack_2(node_2 *topPTR_2, double value) {
node_2 newPTR = malloc(sizeof(Stack_2));
if (newPTR != NULL) {
newPTR->alpha = value;
newPTR->nxtPTR_2 = (void *) *topPTR_2;
*topPTR_2 = newPTR;
}
else {
puts("error");
}
}
int pop(node *fix) {
int value = 0;
node temp = *fix;
value = (*fix)->alpha;
*fix = (*fix)->nxtPTR;
free(temp);
return value;
}
double pop_2(node_2 *fix) {
double value = 0;
node_2 temp = *fix;
value = (*fix)->alpha;
*fix = (void *) (*fix)->nxtPTR_2;
free(temp);
return value;
}
char check_stack(node data) {
return data->alpha == 0 ;
}
int isOperator(char c) {
return c == '/' || c == '*' || c == '-' || c == '+' || c == '^' ;
}
int precedence(char data_1, char data_2) {
switch(data_1){
case '(':
return -1;
case '^':
if(data_2 == '^' ){
return 0;
}
else if (data_2 == '*' || data_2 == '/' || data_2 == '+' || data_2 == '-' ){
}
case '/' :
case '*':
if(data_2 == '^' ){
return -1;
}
else if( data_2 == '/' || data_2 == '*' ){
return 0;
}
else if( data_2 == '+' || data_2 == '-' ){
return 1;
}
case '+':
case '-':
if(data_2 == '^' || data_2 == '/' || data_2 == '*' ){
return -1;
}
else{
return 0;
}
}
}
calc 3
−1
double end_line( char data[0][200]){
double x = 0 , y = 0, sum = 0,ml = 0 ;
char *point = strtok( &data[1][0] , " " );
while( point != '\0' ){
if(isdigit( *point ) ){
ml = atof( (char *) point ) ;
push_stack_2( &topPTR_2,ml);
}
else if ( isOperator ( *point ) == 1 ){
y = pop_2(&topPTR_2);
x = pop_2(&topPTR_2);
if( *point == '^' ){
sum = pow(x, y) ;
push_stack_2( &topPTR_2, sum );
}
if( *point == '*' ){
push_stack_2(&topPTR_2, x * y );
}
if( *point == '+' ){
push_stack_2(&topPTR_2, x + y );
}
if( *point == '/' ){
push_stack_2(&topPTR_2, x / y );
}
if( *point == '-' ){
push_stack_2(&topPTR_2, x - y );
}
}
point = strtok(NULL , " " ) ;
return pop_2(&topPTR_2);
}
int in_line(char data[][200] , int lng ){
double x = 0 , y = 0, sum = 0 ;
int j = 0 , k = 0 , d = 0;
data[0][lng ] = ')';
push_stack(&topPTR, '(');
for (k = 0; check_stack((void *) &topPTR) != 1 ; k++) {
if ( isdigit(data[0][k]) || data[0][k] == '.' ) {
data[1][j++] = data[0][k];
}
if (data[0][k] == '(') {
push_stack(&topPTR, infix[0][k]);
}
if (isOperator(data[0][k]) == 1) {
data[1][j++] = ' ';
for (; precedence(topPTR->alpha, data[0][k]) != -1 ; ) {
data[1][j++] = pop(&topPTR);
data[1][j++] = ' ';
}
push_stack(&topPTR, data[0][k]);
push_stack(&topPTR, ' ' );
}
if (data[0][k] == ')') {
d = pop(&topPTR);
for (; d != '(' ; d = pop(&topPTR)) {
data[1][j++] = d;
}
}
else if (isalpha(data[0][k] ) ) {
puts ("error");
return 0;
}
}
return 1;
}
calc 2
−2
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
#include <math.h>
struct stack {
int alpha;
struct stack *nxtPTR;
};
typedef struct stack Stack;
typedef Stack *node;
struct stack_2 {
long double alpha;
struct stack *nxtPTR_2;
};
typedef struct stack_2 Stack_2;
typedef Stack_2 *node_2;
node topPTR = NULL;
node_2 topPTR_2 = NULL;
char check_stack(node data);
int isOperator(char c);
int precedence(char data_1, char data_2);
void push_stack(node *topPTR, int value);
void push_stack_2(node_2 *topPTR_2, double value);
int pop(node *fix) ;
double pop_2(node_2 *fix);
char infix[2][200];
double end_line( char data[0][200]);
int in_line(char data[][200] , int lng );
int main(void) {
fgets(&infix[0][0], sizeof(infix), stdin);
int k = strlen(&infix[0][0]);
double sl = 0;
if (in_line( infix , k ) == 1){
puts( &infix[1][0] );
puts(" ");
sl = end_line(infix);
printf("%.6f\n", sl );
}
return 0;
}
Calc 1
0
// ==UserScript==
// @name Unnamed Script 230178
// @version 1
// @grant none
// @include https://www.instagram.com/*
// ==/UserScript==
window.addEventListener('load', function(){
console.log("my script starting...");
const body = document.querySelector('body');
const config = {
attributes: true,
attributeFilter: ["style"]
};
const callback = function(mutationsList, observer) {
console.log("mutation aaargh-aaarghrghrhg");
for (let mutation of mutationsList) {
console.log('zaloop');
// if (mutation.type === 'attributes' && mutation.attributeName === 'style') {
try {
body.setAttribute('style', '');
document.querySelector('.RnEpo').setAttribute('style', 'display: none;');
observer.disconnect();
console.log("#hide");
} catch (e) {
console.log(e);
}
// }
}
};
const observer = new MutationObserver(callback);
observer.observe(body, config);
console.log("my script stop");
});
Ночью не спал
Инстаграм листал
Чтобы баннер не мешал
Такой скрипт написал.