- 1
- 2
- 3
https://habr.com/ru/post/459312/
Всегда считал, что "Agile" - говно.
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−1
https://habr.com/ru/post/459312/
Всегда считал, что "Agile" - говно.
−4
Who is watching this amazing video in 2019???)
--------------------------------------------------------------------
2019 anyone????
--------------------------------------------------------------------
Still dope in 2019!!!
--------------------------------------------------------------------
2019 anyone?
--------------------------------------------------------------------
2019 anyone?
--------------------------------------------------------------------
WHO IS LISTENING TO THIS IN JUNE 2019?
--------------------------------------------------------------------
July 2019?
--------------------------------------------------------------------
who's watching in July 2019?
Правила пользования "YouTube" должны состоять лишь из одного запрета - НЕ ПОСТИТЬ, БЛЯДЬ, ЭТУ ХУЙНЮ ЕБУЧУЮ ПОД КАЖДЫМ ВИДЕО, КОТОРОМУ БОЛЬШЕ ГОДА. ЗАЕБАЛИ. ЗАЕБАЛИ. ЗАЕБАЛИ. ЗАЕБАЛИ. ЗАЕБАЛИ.
ЗАЕБАЛИ, БЛЯДЬ. ПРОСТО ЗАЕБАЛИ. ЗАЕБАЛИ. ЗАЕБАЛИ. ЗАЕБАЛИ. ЗАЕБАЛИ.
0
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
Master_Slave_Check();
if (CtrlBrd_Mode == 1) //MasterMode
{
SSPC_Check_Proc();
Read_ADC();
Logic();
RS_Enable();
Obmen_RS();
//CAN_Enable();
//Obmen_CAN();
//if (SoftFlag.Flag1.bit.History_Wr_Req)
//{
// SoftFlag.Flag1.bit.History_Wr_Req = 0;
// Write_History();
//}
HAL_IWDG_Refresh(&hiwdg); //Dog reset
Migalka(); //Working LED blink
}
else if (CtrlBrd_Mode == 0) //SlaveMode
{
Slave_DeInit();
while(1)
{
Master_Slave_Check();
if (CtrlBrd_Mode == 1) //если плата снова стала мастером, когда сдох основной мастер,
HW_RESET(); //делаем аппаратный сброс для перезапуска (нога выставляется в 1, отпирает транзюк VT9, который садит на землю вход управления тракой)
HAL_IWDG_Refresh(&hiwdg); //Dog reset
Migalka();
}
}
}
/* USER CODE END WHILE */
}
Так реализовал параллельную работу двух одинаковых плат управления, одна из которых висит в режиме ожидания.
0
void Obmen_RS1(void)
{
uint8_t txbuf[7], rxbuf[43], CheckSum;
//если сформирован запрос на чтение по RS1 - SSPC data
if (SoftFlag.RS_Flag3.bit.RS1_Read_Req)
{
txbuf[0] = 0x7B; //{
txbuf[1] = SSPC_Addr_RS[RS1_Counter];
txbuf[2] = 0x00; //d0, b00000000 - команда для формирования и отправки посылки данных от SSPC
txbuf[3] = 0x00;
txbuf[4] = 0x00;
txbuf[5] = txbuf[1];//(txbuf[1] ^ txbuf[2] ^ txbuf[3] ^ txbuf[4]); //xor [1..4]
txbuf[6] = 0x7D; //}
HAL_UART_Transmit(&huart1, (uint8_t *)&txbuf, 7, 1);
//HAL_Delay(1)
if (HAL_UART_Receive(&huart1, (uint8_t *)&rxbuf, 43, 9) == HAL_OK)
{ //если пришел правильный пакет
if ((rxbuf[0] == 0x5B)
&& (rxbuf[40] == SSPC_Addr_RS[RS1_Counter])
&& (rxbuf[42] == 0x5D))
{ //считаем КС
for (j = 1; j < 41; j++)
CheckSum ^= rxbuf[j];
if (CheckSum == rxbuf[41]) //Если КС совпадает
{
for (j = 1; j < 41; j++) //Сохраняем пакет в двумерный буфер
RS1_Paket[RS1_Counter][j] = rxbuf[j];
}
else
{
for (j = 1; j < 41; j++)
RS1_Paket[RS1_Counter][j] = 0; //Иначе пишем нули
}
}
}
RS1_Counter++;
if (RS1_Counter > 15)
RS1_Counter = 0;
SoftFlag.RS_Flag3.bit.RS1_Read_Req = 0; //сбрасываем флаг запроса чтения данных и ждем следующего по таймеру (100мс)
}
}
Процедура чтения данных от 16 модулей управления нагрузками по RS-485...
для STM32F4x с использованием калокуба
−2
Я долгие годы вел наблюдение. И я могу сделать уверенное заявление.
Lure Of Chaos это златохуй.
−1
А что, если смартфоны с трипофобными батареями камер - чистой воды наёбка, и
все две/три/пять/семь камер, кроме одной, - тупо стёклышко? Не могут маркетологи
крупнейших корпораций, отменные психологи, столь свято верить в высочайшие
умственные способности блядей из "Instagram", позволяющие одном небрежным
взором опытного голливудского оператора отличить кадр с одинарной камеры от
якобы "сложенного из нескольких разных силою уникального искусственного интеллекта".
0
Зачем "\r", если достаточно "\n"?
−16
https://habr.com/ru/company/alfa/blog/447416/
Тестирование от профессионалов показало, что одинарные кавычки в "PHP" быстрее двойных; а, между тем,
именно по одинарным кавычкам я всегда и тёк (двойные вечно казались мусором). Всегда, после того, как я
машинально-нервически производил в чужом коде замену двойных кавычек на одинарные после мамкиных
дипломатов влажных "Курсов PHP за две недели", замечал, что код начинает работать значительно быстрее.
Поэтому я за "PHP" - в нём задачи оптимизации работы сайтов решаются проще пареного хуя.
+1
#define SWITCHCALL \
dtrick \
switch(cnt){ \
case 0: r = fp(); break; \
case 1: r = fp(d[0]); break; \
case 2: r = fp(d[0], d[1]); break; \
case 3: r = fp(d[0], d[1], d[2]); break; \
case 4: r = fp(d[0], d[1], d[2], d[3]); break; \
case 5: r = fp(d[0], d[1], d[2], d[3], d[4]); break; \
case 6: r = fp(d[0], d[1], d[2], d[3], d[4], d[5]); break; \
case 7: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6]); break; \
case 8: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7]); break; \
case 9: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7], \
d[8]); break; \
case 10: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7], \
d[8], d[9]); break; \
case 11: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7], \
d[8], d[9], d[10]); break; \
case 12: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7], \
d[8], d[9], d[10],d[11]); break; \
case 13: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7], \
d[8], d[9], d[10],d[11],d[12]); break; \
case 14: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7], \
d[8], d[9], d[10],d[11],d[12],d[13]); break; \
case 15: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7], \
d[8], d[9], d[10],d[11],d[12],d[13],d[14]); break; \
case 16: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7], \
d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15]); break; \
case 17: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7], \
d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15], \
d[16]); break; \
case 18: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7], \
d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15], \
d[16],d[17]); break; \
case 19: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7], \
d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15], \
d[16],d[17],d[18]); break; \
case 20: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7], \
d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15], \
d[16],d[17],d[18],d[19]); break; \
case 21: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7], \
d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15], \
d[16],d[17],d[18],d[19],d[20]); break; \
case 22: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7], \
d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15], \
d[16],d[17],d[18],d[19],d[20],d[21]); break; \
case 23: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7], \
d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15], \
d[16],d[17],d[18],d[19],d[20],d[21],d[22]); break; \
case 24: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7], \
d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15], \
d[16],d[17],d[18],d[19],d[20],d[21],d[22],d[23]); break; \
case 25: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7], \
d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15], \
d[16],d[17],d[18],d[19],d[20],d[21],d[22],d[23], \
d[24]);break; \
case 26: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7], \
d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15], \
d[16],d[17],d[18],d[19],d[20],d[21],d[22],d[23], \
d[24],d[25]);break; \
case 27: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7], \
d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15], \
d[16],d[17],d[18],d[19],d[20],d[21],d[22],d[23], \
d[24],d[25],d[26]);break; \
case 28: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7], \
d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15], \
d[16],d[17],d[18],d[19],d[20],d[21],d[22],d[23], \
d[24],d[25],d[26],d[27]);break; \
case 29: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7], \
d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15], \
d[16],d[17],d[18],d[19],d[20],d[21],d[22],d[23], \
d[24],d[25],d[26],d[27],d[28]);break; \
case 30: r = fp(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7], \
d[8], d[9], d[10],d[11],d[12],d[13],d[14],d[15], \
d[16],d[17],d[18],d[19],d[20],d[21],d[22],d[23], \
d[24],d[25],d[26],d[27],d[28],d[29]);break; \
/******* ну вы понели *******/
Какой кавай )))
https://github.com/jsoftware/jsource/blob/master/jsrc/x15.c
+1
/* Create a JSON object from JSON data stream. The stream should be opened and configured. All other behavior of this method is the same as the JSONObjectWithData:options:error: method.
*/
open class func jsonObject(with stream: InputStream, options opt: ReadingOptions = []) throws -> Any {
var data = Data()
guard stream.streamStatus == .open || stream.streamStatus == .reading else {
fatalError("Stream is not available for reading")
}
repeat {
var buffer = [UInt8](repeating: 0, count: 1024)
var bytesRead: Int = 0
bytesRead = stream.read(&buffer, maxLength: buffer.count)
if bytesRead < 0 {
throw stream.streamError!
} else {
data.append(&buffer, count: bytesRead)
}
} while stream.hasBytesAvailable
return try jsonObject(with: data, options: opt)
}
Потоковое чтение JSON от авторов "iСделаль"