- 1
Здравствуйте. Удалите, пожалуйста, мой аккаунт.
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+1
Здравствуйте. Удалите, пожалуйста, мой аккаунт.
Я запросил удаление своего аккаунта через почту, указанную в обратной связи около 2-х недель назад, но мне так и не ответили. Тогда, я с этого же аккаунта -- подтверждаю, что хочу удалить этот аккаунт.
Спасибо! Мой прощальный торт со вкусом php.
(
)
(o)
,|,
|~\
o@@@@@@@@\ |@@@@@I@@r@
oo@@@@@@@@@@@@|`|@@@@@@@@@@@T@@
o@@@@@@@@@@@@@@@@@\ |@@@@@@@@@@@@@R@@@@o
o@@@y@@@@@@@@@@@@@@@|`\@@@@@@@@@@@@@@K@@ @@@o
@@@@@@o@@@@@@@@@@@@@@\ |@@@@@@@@@@@@@@@a@@@@@@
p@@@@@@@u@@@@@@@@@@@@@@@@@@@@@@@@@@@@F@@ @@@@@q
@@o@@@@@@@@t@@@@@@@@@@@@@@@@@@@@@@@j@@@@ @@@o@@
@:@@@o@@@@@@@@u@@@@@@@@@@@@@@@@@@l@@@@@@ o@@::@
::@@::@@o@@@@@@@.@@b@e@@/@@Y@@6@@@@@@o@@:@@::@
::@@::@@@@::oo@@@@oo@@@@@ooo@@@@@o:::@@@ ::::::
%::::::@::::::@@@@:::@@@:::::@@@@:::::@@ :::::%
%%::::::::::::@@::::::@:::::::@@:::::::: ::::%%
::%%%::::::::::@::::::::::::::@::::::::: :%%%::
.#::%::%%%%%%:::::::::::::::::::::::::%% %%%::%::#.
.###::::::%%:::%:%%%%%%%%%%%%%%%%%%%%%:% :::%%:::::###.
.#####::::::%:::::%%::::::%%%%:::::%%::: :%::::::::::#####.
.######`:::::::::::%:::::::%:::::::::%:: ::%:::::::::'######.
.#########``:::::::::::::::::::::::::::: ::::::::''#########.
`.#############```:::::::::::::::::::::: ::'''#############.'
`.###################################### ################.'
` .###########,._.,,,. #######<_\##################. '
` .#######,;: `,/____,__`\_____,_________,_____
` .###;;;`. _,;>-,------,,--------,----------'
` `,;' ~~~ ,'\######_/'####### . '
''~`'''' - .'/; - '
+1
Функция ЭтоVIN(Знач Значение, Знач ПробелыЗапрещены = Истина) Экспорт
Если ТипЗнч(Значение) <> Тип("Строка") Тогда
Возврат Ложь;
КонецЕсли;
Если Не ПробелыЗапрещены Тогда
Значение = СтрЗаменить(Значение, " ", "");
КонецЕсли;
Возврат ЗначениеЗаполнено(Значение)
И (СтрДлина(Значение) = 17)
И
// Если содержит только цифры, то в результате замен должна быть получена пустая строка.
// Проверять при помощи ПустаяСтрока нельзя, так как в исходной строке могут быть пробельные символы.
СтрДлина(
СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить(
СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить(
СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить(
СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить(
СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить(
СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить(
СтрЗаменить( СтрЗаменить( СтрЗаменить(
Значение, "0", ""), "1", ""), "2", ""), "3", ""), "4", ""), "5", ""), "6", ""), "7", ""), "8", ""), "9", "")
, "A", ""), "B", ""), "C", ""), "D", ""), "E", ""), "F", ""), "G", ""), "H", ""), "J", ""), "K", ""), "L", ""), "M", "")
, "N", ""), "P", ""), "R", ""), "S", ""), "T", ""), "U", ""), "V", ""), "W", ""), "X", ""), "Y", ""), "Z", "")) = 0;
КонецФункции
Функция определяет является ли строка VIN, метода выбрана забавная - в строке удаляются все допустимые символы, то что осталось, по мнению автора - мусор, т.е. vin невалидный. Видимо просто проверить каждый символ на вхождение в допустимый алфавит это слишком просто ;).
+1
/// <summary>
/// перобразуем DateTime? в DateTime, если не получается, то возвращаем текущую дату
/// </summary>
/// <param name="date"></param>
/// <returns></returns>
private DateTime DateTimeHelper(DateTime? date)
{
try
{
return (DateTime)date;
}
catch
{
return DateTime.Now;
}
}
+1
if ($text[2] == 'www.' or $text[2] == 'Www.' or $text[2] == 'wWw.' or $text[2] == 'wwW.' or $text[2] == 'WwW.' or $text[2] == 'WWw.' or $text[2] == 'wWW.' or $text[2] == 'WWW.')
Можно было так: if(strtolower($text[2]) == 'www.')
+1
$tempname = '__temp__.apk';
copy($origname, $tempname);
exec('C:\Android\android-sdk\build-tools\34.0.0\aapt.exe dump badging ' . '"'.$tempname.'"', $output);
unlink($tempname);
Понадобилось по-быстрому наговнякать переименоватор apk-файлов. Решил метушню из манифеста вытянуть с помощью «aapt» из официальных «Android build tools». Оказалось, что «aapt» не может открыть файл, если его имя содержит символы за пределами базового ASCII. CHCP не помогает вообще никак.
При передаче в aapt имени в 866 выводится «asset... Asset path... is neither a directory nor file (type=1)», при передаче имени в других кодировках (1251, UTF-8) выводится сообщение «ziparchive... Invalid byte sequence». Так и не смог подобрать кодировку, в которой заработает.
Шёл 2024-й год.
+1
React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED
+1
void text::draw()
{
CmdWinGUI::draw();
COORD temp = startCo; //Разный мусор
COORD tempEnd = startCo;
int16_t _al = 0;
int16_t _an = 0;
int16_t remain = 0;
uint8_t a = 0;
bool fullRow = 1; //Флаги, не изменять
bool alignPrepare = 0;
if (tableLine)
{
temp.Y = temp.Y + lineShift + sepShift;
}
if (!tableFormat)
{
if (alignSetting == ALIGN_C)
{
_al = sizeCo.X/2;
for (uint8_t a = 0;a < 0xFF;++a) //Измеряем длину текстового поля
{
if (textBuffer[a] == NULL)
break;
++remain;
}
temp.X=startCo.X+ _al-remain/2; //Корректируем курсор в соответствии с расчётами
if (temp.X < startCo.X) //Если предыдущие вычисления дали ошибку - выход за предел рамки слева
temp.X = startCo.X; //Корректируем
}
for (;;)
{
SetConsoleCursorPosition(hCon, temp);
if (textBuffer[a] == NULL)
break;
printf("%c", textBuffer[a]);
++temp.X;
++a;
if (temp.X == startCo.X + sizeCo.X - 1) //Проверяем достигло ли рамки, иначе обрываем цикл
break;
}
return;
}
for (uint8_t b = 0;b<=filledRows;++b)
{
if (!fullRow)
{
temp.X = tempEnd.X;
}
tempEnd.X += tableRowSize[b] - 1;
if (alignSetting == ALIGN_C)
{
--temp.X;
//Предварительные расчеты смещения
if (!alignPrepare)
{
for (SHORT a = temp.X;a < 0xFF;++a)
{
if (a == tempEnd.X) //Проверяем достигло ли рамки, иначе обрываем цикл
{
--_an;
break; //половина длины поля таблицы
}
++_an;
}
for (uint8_t a = 0;a < 0xFF;++a)
{
if (tableText[b][a] == NULL)
{
_al = a; //половина длины слова
break;
}
}
alignPrepare = 1; //Подымаем флаг готовности
}
//Коррекция положения курсора в соответствии с результатами блока предварительных расчётов
temp.X += abs(_an / 2) - abs(_al / 2);
_an = 0;
}for (;;){
SetConsoleCursorPosition(hCon, temp); //Ставим курсор в начало/середину/конец поля
if (tableText[b][a] == NULL)
{
fullRow = 0; //При окончании поля текста до заполнения поля снимаем флаг заполнения поля
break;
}
++temp.X;
if (temp.X == tempEnd.X) //Проверяем достигло ли рамки, иначе обрываем цикл
{
fullRow = 1; //При окончании поля в таблице до завершения поля текста прекращаем вывод и выходим из цикла
break;
}
printf("%c", tableText[b][a]);
++a;
}
a = 0;
alignPrepare = 0; //Сбрасываем флаг для следующей итерации
}
if (isChanged)
this->editFlagSwitch();
}
Рендер текста с учётом коллизии слева и справа
+1
#include "Windows.h"
void line::draw()
{
CmdWinGUI::draw();
uint8_t modB = 0; //modeByte
COORD tempSt = lineStart;
COORD tempEn = lineEnd;
SHORT dX = abs(lineEnd.X - lineStart.X);
SHORT dY = abs(lineEnd.Y - lineStart.Y);
SHORT sX = lineStart.X < lineEnd.X ? 1 : -1;
SHORT sY = lineStart.Y < lineEnd.Y ? 1 : -1;
SHORT dErr = dX - dY;
SHORT dErr2 = 0;
if (scan)
{
SetConsoleCursorPosition(hCon, lineStart);
for (uint8_t a = 0;a <= lineEnd.X-lineStart.X;++a)
{
modB = lineAtrBuffer[a];
SetConsoleTextAttribute(hCon, modB);
printf("%c", lineSymBuffer[a]);
}
if (isChanged)
this->editFlagSwitch();
return;
}
for (;;)
{
SetConsoleCursorPosition(hCon, tempSt);
printf("%c", lineSym);
if (tempSt.X == tempEn.X&&tempSt.Y == tempEn.Y)
break;
dErr2 = dErr * 2;
if (dErr2 > -dY)
{
dErr -= dY;
tempSt.X += sX;
}
if (dErr2 < dX)
{
dErr += dX;
tempSt.Y += sY;
}
}
if (isChanged)
this->editFlagSwitch();
}
Отрисовка произвольной графической линии в консоли
+1
import std.stdio;
interface A {
void M();
}
interface B : A {
final void M() {
writeln("BBBB");
}
}
class C : B {
}
void main() {
auto c = new C();
c.M();
}
а багры здесь тихие
> Error: class `C` interface function `void M()` is not implemented
+1
using System;
using System.Linq;
namespace TheBestGenerator
{
class Symbols
{
protected const string Letters = "abcdefghijklmnopqrstuvwxyz";
protected const string Numbers = "0123456789";
protected const string DefaultSpecialSymbols = @"!#$%&*@\";
protected static Random rand = new Random();
}
class Program
{
static void Main(string[] args)
{
while (true)
{
Console.WriteLine("Введите длину пароля:");
int Len = Convert.ToInt32(Console.ReadLine());
Console.WriteLine(Generator.Password(Len));
}
}
}
class Generator: Symbols
{
static char[] Array_()
{
return (Numbers+Letters+Letters.ToUpper()+DefaultSpecialSymbols).ToCharArray();
}
static char[] Password_Symbols()
{
return Array_().OrderBy(Symbol => rand.Next()).ToArray();
}
public static string Password(int Len )
{
char[] password = Password_Symbols();
Array.Resize(ref password, Len);
return (string.Join("", password));
}
}
}
Генератор паролей. Говнокод с наследованием. Почти ничего не понимаю в нем, но "прогу" с ним написал.