- 1
- 2
- 3
- 4
- 5
Срочно нужна помощь с засылкой на хабр!
Желательно перед этим почитать от того, что не пропустит анальная модерация и сектанты.
Предложения так же жду в комментах. По тексту и в целом.
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
Срочно нужна помощь с засылкой на хабр!
Желательно перед этим почитать от того, что не пропустит анальная модерация и сектанты.
Предложения так же жду в комментах. По тексту и в целом.
https://tsar1997.blogspot.com/2020/05/blog-post_54.html
Исходник пасты - просьба кидать патчи. Позже зашлю на хабр.
https://pastebin.com/raw/haeHPx89
0
dev_t name_to_dev_t(const char *name)
{
char s[32];
char *p;
dev_t res = 0;
int part;
#ifdef CONFIG_BLOCK
if (strncmp(name, "PARTUUID=", 9) == 0) {
name += 9;
res = devt_from_partuuid(name);
if (!res)
goto fail;
goto done;
} else if (strncmp(name, "PARTLABEL=", 10) == 0) {
struct device *dev;
dev = class_find_device(&block_class, NULL, name + 10,
&match_dev_by_label);
if (!dev)
goto fail;
res = dev->devt;
put_device(dev);
goto done;
}
#endif
if (strncmp(name, "/dev/", 5) != 0) {
unsigned maj, min, offset;
char dummy;
if ((sscanf(name, "%u:%u%c", &maj, &min, &dummy) == 2) ||
(sscanf(name, "%u:%u:%u:%c", &maj, &min, &offset, &dummy) == 3)) {
res = MKDEV(maj, min);
if (maj != MAJOR(res) || min != MINOR(res))
goto fail;
} else {
res = new_decode_dev(simple_strtoul(name, &p, 16));
if (*p)
goto fail;
}
goto done;
}
name += 5;
res = Root_NFS;
if (strcmp(name, "nfs") == 0)
goto done;
res = Root_CIFS;
if (strcmp(name, "cifs") == 0)
goto done;
res = Root_RAM0;
if (strcmp(name, "ram") == 0)
goto done;
if (strlen(name) > 31)
goto fail;
strcpy(s, name);
for (p = s; *p; p++)
if (*p == '/')
*p = '!';
res = blk_lookup_devt(s, 0);
if (res)
goto done;
/*
* try non-existent, but valid partition, which may only exist
* after revalidating the disk, like partitioned md devices
*/
while (p > s && isdigit(p[-1]))
p--;
if (p == s || !*p || *p == '0')
goto fail;
/* try disk name without <part number> */
part = simple_strtoul(p, NULL, 10);
*p = '\0';
res = blk_lookup_devt(s, part);
if (res)
goto done;
/* try disk name without p<part number> */
if (p < s + 2 || !isdigit(p[-2]) || p[-1] != 'p')
goto fail;
p[-1] = '\0';
res = blk_lookup_devt(s, part);
if (res)
goto done;
fail:
return 0;
done:
return res;
прыщи 32, 10
0
<script src="3.js"></script>
<script> alert("part2") </script>
<script src="1.js"></script>
в 3.js
'use strict'
let age = Number(null)
alert(age)
почему-то результат разный = то part2 то 0, ничего не меняю, просто результат разный каждый раз
0
import sequtils
when not declared(unzip):
proc unzip*[S, T](s: openArray[(S, T)]): (seq[S], seq[T]) =
result[0] = newSeq[S](s.len)
result[1] = newSeq[T](s.len)
for i in 0..<s.len:
result[0][i] = s[i][0]
result[1][i] = s[i][1]
let a = @[('a', 1), ('b', 2), ('c', 3)]
let b = unzip(a) # version 1.0 will use the proc declared above
# version 1.2 will use sequtils' proc
assert b == (@['a', 'b', 'c'], @[1, 2, 3])
Если в библиотеке нет нужного метода, вы можете написать его сами и кинуть в сторону своих пользователей.
+1
template<typename CharType>
class Formatter
{
private:
static int _ToString(Int32 Value){
return CString<CharType>::Snprintf(
(CharType*)GSupportToStringBuffer,
TO_STRING_BUFFER_SIZE,
"%" PRId32,
Value);
}
static int _ToString(float Value){
return CString<CharType>::Snprintf(
(CharType*)GSupportToStringBuffer,
TO_STRING_BUFFER_SIZE,
"%f",
Value);
}
template<typename First, typename ... Args>
static void _ConvertArgs(Array<GenericString<CharType>>& _ArgBuffer, const First& _First, const Args& ... _Args) {
_ArgBuffer.Add(ToString(_First));
_ConvertArgs(_ArgBuffer, _Args ...);
}
template<typename First>
static void _ConvertArgs(Array<GenericString<CharType>>& _ArgBuffer, const First& _First) {
_ArgBuffer.Add(ToString(_First));
}
static bool _ScanPlaceholder(const CharType* Format, size_t Index, size_t Length, size_t& Placeholder, size_t& LastIndex) {
size_t i = Index;
size_t j = 0;
while (i < Length && Format[i] != FormatterPlaceholder<CharType>::End)
{
if (!Char<CharType>::IsDigit(Format[i]))
{
return false;
}
else
{
GSupportToStringBuffer[j] = Format[i];
j++;
}
i++;
}
if (i == Length)
return false;
GSupportToStringBuffer[j] = 0;
#if defined(64BIT)
Placeholder = CString<CharType>::Atoi64((const CharType*)GSupportToStringBuffer);
#else
Placeholder = CString<CharType>::Atoi((const CharType*)GSupportToStringBuffer);
#endif
LastIndex = i;
return true;
}
public:
template<typename T>
static GenericString<CharType> ToString(const T& Value) {
int Length = Formatter<CharType>::_ToString(Value);
return GenericString<CharType>((char*)GSupportToStringBuffer, Length);
}
template<typename ... Args>
static GenericString<CharType> Format(const CharType* Format, const Args& ... _Args) {
Array<GenericString<CharType>> _FormatedArgs;
_FormatedArgs.Reserve(sizeof...(Args));
Formatter<CharType>::_ConvertArgs(_FormatedArgs, _Args ...);
const size_t _Length = CString<CharType>::Strlen(Format);
size_t Index = 0;
for (size_t i = 0; i < _Length; i++)
{
if (Format[i] == FormatterPlaceholder<CharType>::Begin)
{
size_t Placeholder = 0;
size_t LastIndex = 0;
if (_ScanPlaceholder(Format, i + 1, _Length, Placeholder, LastIndex) && Placeholder < sizeof...(Args))
{
Memory::Copy(GSupportFormatBuffer + Index, _FormatedArgs[Placeholder].Data(), _FormatedArgs[Placeholder].Length() * sizeof(CharType));
Index += _FormatedArgs[Placeholder].Length();
i = LastIndex;
}
}
else
{
GSupportFormatBuffer[Index] = Format[i];
Index++;
}
}
GSupportFormatBuffer[Index] = 0;
return GenericString<CharType>((const CharType*)GSupportFormatBuffer);
}
};
template<typename T>
forceinline String ToString(const T& Value){
return Formatter<char>::ToString<T>(Value);
}
template<typename ... Args>
forceinline String Format(const char* Format, const Args& ... _Args){
return Formatter<char>::Format(Format, _Args ...);
}
Три года назад писал printf аля Console.WriteLine в C#. Тут порезал до ста строк. https://pastebin.com/8BCLuBEm
0
IT Оффтоп #44
#10: https://govnokod.ru/25328 https://govnokod.xyz/_25328
#11: (vanished) https://govnokod.xyz/_25436
#12: (vanished) https://govnokod.xyz/_25471
#13: (vanished) https://govnokod.xyz/_25590
#14: https://govnokod.ru/25684 https://govnokod.xyz/_25684
#15: https://govnokod.ru/25694 https://govnokod.xyz/_25694
#16: https://govnokod.ru/25725 https://govnokod.xyz/_25725
#17: https://govnokod.ru/25731 https://govnokod.xyz/_25731
#18: https://govnokod.ru/25762 https://govnokod.xyz/_25762
#19: https://govnokod.ru/25767 https://govnokod.xyz/_25767
#20: https://govnokod.ru/25776 https://govnokod.xyz/_25776
#21: https://govnokod.ru/25798 https://govnokod.xyz/_25798
#22: https://govnokod.ru/25811 https://govnokod.xyz/_25811
#23: https://govnokod.ru/25863 https://govnokod.xyz/_25863
#24: https://govnokod.ru/25941 https://govnokod.xyz/_25941
#25: https://govnokod.ru/26026 https://govnokod.xyz/_26026
#26: https://govnokod.ru/26050 https://govnokod.xyz/_26050
#27: https://govnokod.ru/26340 https://govnokod.xyz/_26340
#28: https://govnokod.ru/26372 https://govnokod.xyz/_26372
#29: https://govnokod.ru/26385 https://govnokod.xyz/_26385
#30: https://govnokod.ru/26413 https://govnokod.xyz/_26413
#31: https://govnokod.ru/26423 https://govnokod.xyz/_26423
#32: https://govnokod.ru/26440 https://govnokod.xyz/_26440
#33: https://govnokod.ru/26449 https://govnokod.xyz/_26449
#34: https://govnokod.ru/26456 https://govnokod.xyz/_26456
#35: https://govnokod.ru/26463 https://govnokod.xyz/_26463
#36: https://govnokod.ru/26508 https://govnokod.xyz/_26508
#37: https://govnokod.ru/26524 https://govnokod.xyz/_26524
#38: https://govnokod.ru/26539 https://govnokod.xyz/_26539
#39: https://govnokod.ru/26556 https://govnokod.xyz/_26556
#40: https://govnokod.ru/26568 https://govnokod.xyz/_26568
#41: https://govnokod.ru/26589 https://govnokod.xyz/_26589
#42: https://govnokod.ru/26600 https://govnokod.xyz/_26600
#43: https://govnokod.ru/26604 https://govnokod.xyz/_26604
+2
//Начало новый код
|select
| НомерСтроки,
| Номенклатура,
| ЕдиницаИзмерения,
| Партия,
| КоличествоВозврата как Количество
|поместить ДанныеДок
|from Документ.РеализацияКассаВозврат.Номенклатура
|where (ссылка=&ТекДок)
//Конец новый код
|;
|
|select
| Номенклатура,
| ЕдиницаИзмерения,
| Партия,
//Основание изменения:
//Ускорение процесса:
//Начало старый код
//| Количество как Количество,
//| СтоимостьРуб как СтоимостьРуб,
//| СуммаНДСРуб как СуммаНДСРуб,
//| СтоимостьУпр как СтоимостьУпр
//|поместить ДанныеСклад
//|from РегистрНакопления.ПартииТоваровНаСкладах
//|where
// (Период <= &Дата) и (Организация=&Организация и Подразделение=&Подразделение)
//Конец старый код
//Начало новый код
| СУММА(КоличествоПриход) как Количество,
| СУММА(СтоимостьРубПриход) как СтоимостьРуб,
| СУММА(СуммаНДСРубПриход) как СуммаНДСРуб,
// Тригубович Л. 2016.06.29
//Основание изменения:
//Задача № 4036: Корректировка баз в связи с деноминацией
//Начало новый код
| СУММА(СтоимостьBYNПриход) как СтоимостьBYN,
| СУММА(СуммаНДСBYNПриход) как СуммаНДСBYN,
//Конец новый код
| СУММА(СтоимостьУпрПриход) как СтоимостьУпр
|поместить ДанныеСклад
//Основание изменения:
//Договор комиссии:
//Начало старый код
//|from РегистрНакопления.ПартииТоваровНаСкладах.Обороты(,&Дата, Регистратор, Организация=&Организация и Подразделение=&Подразделение)
//Конец старый код
//Начало новый код
|from РегистрНакопления.ПартииТоваровНаСкладах.Обороты("+?(Подразделение.Инглот И Дата >= '20140701', "ДатаВремя(2014,07,01)", "")+",&Дата, Регистратор, Организация=&Организация и Подразделение=&Подразделение)
//Конец новый код
|where
//Конец новый код
| (Номенклатура в (select Номенклатура from ДанныеДок))
//Основание изменения:
//Письмо Александровской Ольги от 01.02.2013 (п.2)
//Начало новый код
| и (Партия в (select Партия from ДанныеДок))
//Конец новый код
| и (Регистратор ссылка Документ.ПоступлениеТМЦ или Регистратор ссылка Документ.ПоступлениеТМЦИмпорт ИЛИ Регистратор ссылка Документ.ПеремещениеТМЦ ИЛИ Регистратор ссылка Документ.Пересорт ИЛИ Регистратор ссылка Документ.КомплектацияНаборов ИЛИ Регистратор ссылка Документ.РазукомплектацияНаборов ИЛИ Регистратор ссылка Документ.СкидкиПоСрокамГодности)
|group by Номенклатура,ЕдиницаИзмерения,Партия
|;
|
//Основание изменения:
//Учтем данные по продажам
//Начало новый код
|select
| Номенклатура,
| ЕдиницаИзмерения,
| Партия,
| СУММА(-КоличествоОборот) как Количество,
| СУММА(-СтоимостьРубОборот) как СтоимостьРуб,
| СУММА(-СуммаНДСРубОборот) как СуммаНДСРуб,
//Основание изменения:
//Задача № 4036: Корректировка баз в связи с деноминацией
//Начало новый код
| СУММА(-СтоимостьBYNОборот) как СтоимостьBYN,
| СУММА(-СуммаНДСBYNОборот) как СуммаНДСBYN,
//Конец новый код
| СУММА(-СтоимостьУпрОборот) как СтоимостьУпр
|поместить ДанныеПродаж
|from РегистрНакопления._ИмяРегистра_.Обороты("+?(ДатаРеализации = '00010101', "", "&ДатаНач")+",&ДатаКон, Регистратор, Организация=&Организация и _УсловиеПодразделение_)
|where
| Номенклатура в (select Номенклатура from ДанныеДок)
| и Партия в (select Партия from ДанныеДок)
| и (Регистратор ссылка Документ.РеализацияКасса ИЛИ Регистратор ссылка Документ.РеализацияКассаВозврат)
|group by Номенклатура,ЕдиницаИзмерения,Партия
|;
|
//Конец новый код
|// сводные данные
|select
//Основание изменения:
//Управленческий учет:
//Начало новый код
| док.НомерСтроки КАК НомерСтрокиДокумента,
//Конец новый код
такое мог изобразить только ональный говноклоун
сразу, на двух языках, блеать, вот бы еще украинского туда. Осмысленность и нужность комментариев феноменальна.
анус мой от вида таких поделок полыхает.
+1
(() => {
const urlPrefix = 'https://distrochooser.de/en/';
const msgs = [];
let msg = '';
for (let i = 479076; i > 0; --i) {
const url = urlPrefix + i;
if (msg.length + url.length + 1 < 2000) {
msg += '\n';
msg += url;
} else {
msgs.push(msg);
msg = url;
}
}
return msgs;
})()
Проходим мимо, не обращаем внимания.
Ведутся SEO-работы.
0
struct Base { virtual const char *getName() = 0; virtual ~Base() = default; };
struct SE_0 : Base { virtual const char *getName() override { return "SE_0"; } };
struct SE_1 : Base { virtual const char *getName() override { return "SE_1"; } };
struct SE_2 : Base { virtual const char *getName() override { return "SE_2"; } };
enum TypesEnum {
E__BEGIN = 0,
E_0 = E__BEGIN,
E_1,
E_2,
E__END
};
template<TypesEnum>
struct Registry {};
template<>
struct Registry<E_0> {
static constexpr const char *name = "The first type (SE_0)";
using type = SE_0;
};
template<>
struct Registry<E_1> {
static constexpr const char *name = "A second type (SE_1)";
using type = SE_1;
};
template<>
struct Registry<E_2> {
static constexpr const char *name = "And the last type (SE_2)";
using type = SE_2;
};
template<TypesEnum CurrentType>
std::unique_ptr<Base> createTypeImpl(const char *name)
{
if constexpr (CurrentType < E__END) {
if (strstr(Registry<CurrentType>::name, name)) {
return std::make_unique<typename Registry<CurrentType>::type>();
}
return createTypeImpl<static_cast<TypesEnum>(CurrentType + 1)>(name);
} else {
(void)name; // Silence 'unreferenced formal parameter' warning
return nullptr;
}
}
std::unique_ptr<Base> createType(const char *name)
{
return createTypeImpl<E__BEGIN>(name);
}
int main()
{
std::cout << "first type: " << createType("first type")->getName() << std::endl;
std::cout << "second type: " << createType("second type")->getName() << std::endl;
std::cout << "last type: " << createType("last type")->getName() << std::endl;
return EXIT_SUCCESS;
}
Упоролся.
https://ideone.com/c11fz4
+4
'use strict';
const isOdd = require("is-odd");
module.exports = function isIsOdd(func) {
return func == isOdd;
}
https://www.npmjs.com/package/is-is-odd
Why
Some functions are not is-odd but they might make you think they're is-odd, this package helps you identify these functions with a simple interface.
Нить бессмысленных npm-модулей.