5
mysql_real_escape_string / Говнокод #26859
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
SELECT
`1000, 1000000 field`
(SELECT group_concat(band_category_languages.name SEPARATOR ', ')
FROM calendar_entry_categories
LEFT JOIN band_category_languages ON band_category_languages.band_category_id = calendar_entry_categories.band_category_id
WHERE calendar_entry_categories.calendar_entry_id = calendar_entries.id
AND band_category_languages.language_id = 1
GROUP BY calendar_entry_categories.calendar_entry_id) AS band_category_string,
(SELECT entry.id
FROM calendar_entries AS entry
WHERE entry.entry_kind_parent_id = calendar_entries.id
AND entry.profile_type_id = 10869
AND entry.profile_type = 1) AS move_to_personal_calendar,
(SELECT count(moved_entry.id)
FROM calendar_entries AS moved_entry
WHERE moved_entry.entry_kind_parent_id = calendar_entries.id
AND moved_entry.status = 3) AS count_moved,
(SELECT user_images.image
FROM calendar_entries AS calendar_entries1
LEFT JOIN user_images ON user_images.id = calendar_entries1.image
WHERE calendar_entries1.id = calendar_entries.entry_kind_parent_id
AND calendar_entries.entry_kind = 4) AS festival_image,
(SELECT countries1.code
FROM calendar_entries AS calendar_entries1
LEFT JOIN locations AS locations1 ON locations1.id = calendar_entries1.location_id
LEFT JOIN countries AS countries1 ON countries1.id = locations1.country_id
WHERE calendar_entries1.id = calendar_entries.entry_kind_parent_id
AND calendar_entries.entry_kind = 4) AS festival_country_code,
(SELECT count(*)
FROM calendar_entry_likes
WHERE calendar_entry_likes.calendar_entry_id = calendar_entries.id) AS count_of_likes,
(SELECT count(*)
FROM calendar_entry_likes
WHERE calendar_entry_likes.calendar_entry_id = calendar_entries.id
AND calendar_entry_likes.user_id = 10869 ) AS is_like,
(SELECT group_concat(entry_type_languages.name SEPARATOR ', ')
FROM calendar_entry_types
LEFT JOIN entry_type_languages ON entry_type_languages.entry_type_id = calendar_entry_types.entry_type_id
WHERE (calendar_entry_types.calendar_entry_id = calendar_entries.id
OR calendar_entry_types.calendar_entry_id = calendar_entries.entry_kind_parent_id)
AND entry_type_languages.language_id = 1
GROUP BY calendar_entry_types.calendar_entry_id) AS entry_types_string,
(SELECT band_addresses.city_name
FROM band_addresses
WHERE band_addresses.band_id = calendar_entries.profile_type_id) AS band_city_name,
(SELECT countries.code
FROM band_addresses
LEFT JOIN countries ON countries.id = band_addresses.country_id
WHERE band_addresses.band_id = calendar_entries.profile_type_id) AS band_country_code,
(SELECT group_concat(genre_languages.name SEPARATOR ', ')
FROM calendar_entry_genres
LEFT JOIN genre_languages ON genre_languages.genre_id = calendar_entry_genres.genre_id
WHERE calendar_entry_genres.calendar_entry_id = calendar_entries.id
AND genre_languages.language_id = 1
GROUP BY calendar_entry_genres.calendar_entry_id) AS genre_string
FROM `calendar_entries`
LEFT JOIN `locations` ON `locations`.`id` = `calendar_entries`.`location_id`
LEFT JOIN `calendar_entries` AS `festival` ON `festival`.`id` = `calendar_entries`.`entry_kind_parent_id`
LEFT JOIN `locations` AS `festival_location` ON `festival_location`.`id` = (
SELECT calendar_entries1.id
FROM calendar_entries AS calendar_entries1
WHERE calendar_entries1.id = calendar_entries.entry_kind_parent_id
AND calendar_entries.entry_kind = 4
)
LEFT JOIN `countries` ON `countries`.`id` = `locations`.`country_id`
LEFT JOIN `country_languages` ON `country_languages`.`country_id` = `locations`.`country_id`
LEFT JOIN `states` ON `states`.`id` = `locations`.`state_id`
LEFT JOIN `bands` ON `bands`.`id` = `calendar_entries`.`profile_type_id`
AND `bands`.`soft_delete` = 0
AND `bands`.`status` = 1
LEFT JOIN `band_images` ON `band_images`.`id` = `calendar_entries`.`image`
LEFT JOIN `band_privacy_settings` ON `band_privacy_settings`.`band_id` = `calendar_entries`.`profile_type_id`
WHERE (`bands`.`soft_delete` = 0 OR `bands`.`soft_delete` IS NULL)
AND (`bands`.`status` = 1 OR `bands`.`status` IS NULL)
AND ((
(SELECT count(*)
FROM band_administrators
WHERE band_administrators.band_id = bands.id
AND band_administrators.user_id = 10869 ) > ? OR `band_privacy_settings`.`band_privacy_level` != ?
) AND (
(SELECT user_type
FROM users
WHERE users.id = 10869 ) = ? OR `band_privacy_settings`.`band_privacy_level` != ?
) AND (
(SELECT count(*)
FROM user_bands
WHERE user_bands.band_id = bands.id
AND user_bands.status = 1
AND user_bands.user_id = 10869 ) > ? OR `band_privacy_settings`.`band_privacy_level` != ?
) OR `band_privacy_settings`.`band_privacy_level` IS NULL
) AND (`festival`.`entry_kind` = ? OR `festival`.`id` IS NULL)
AND (date(`calendar_entries`.`date_from`) >= ?)
AND `calendar_entries`.`soft_delete` = ?
AND (`country_languages`.`language_id` = ? OR `country_languages`.`language_id` IS NULL)
AND `calendar_entries`.`entry_kind` IN (?, ?)
AND `calendar_entries`.`event_class` IN (?, ?)
AND `calendar_entries`.`status` = ?
GROUP BY `1000, 1000000 field`
ORDER BY calendar_entries.date_from
LIMIT 1000, 20
Сидить замовник такий не тужить тай думку гадає, а що це я буду платити півтори куска спеціалусту за роботу, як є "профі" за 500 доларів, а тут ше і Вася програміст каже, а шо це ти будеш платити таку суму, як я зроблю дешевше за 300! Настрій хороший, угода укладена, робота кипить. Проходить не так багато часу, як замовник каже, а що це сторінка 2хв грузиться, а Вася каже, то нічо ми то все оптимізуємо! Проходить ще декілька місяців, а результату нема. Тоді замовнек розуміє, що Вася не профі і шукає профі в Х рази дорощого! Не так багато часу пройшло, як профі за 1000 каже, я в два рази оптимізував, більше не реально! Замовник пригнічений, шукає профі, і в один прекрасний момент знаходиться дійсно профі, який по домовленості в зарплату X оптимізував, повикидував, переписав, дописав і в результаті 50 мс при 500000 записів. Підсумок: 300 + 1000 + X != 300 :)
Змея / Говнокод #26847
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
def __gc(self, state):
userdata = self.lib.luaL_testudata(self.state, 1, b'python.object')
if userdata:
obj_ptr = (c.cast(userdata, c.POINTER(c.py_object))).contents
if obj_ptr:
c.pythonapi.Py_DecRef(obj_ptr)
return 0
def push_object(self, obj):
userdata = self.lib.lua_newuserdata(self.state, c.sizeof(c.py_object))
(c.cast(userdata, c.POINTER(c.py_object)))[0] = c.py_object()
if self.lib.luaL_newmetatable(self.state, b'python.object'):
self.gc_thunk = c.CFUNCTYPE(c.c_int, c.c_void_p)(self.__gc)
self.lib.lua_pushcclosure(self.state, self.gc_thunk, 0)
self.lib.lua_setfield(self.state, -2, b'__gc')
self.lib.lua_pushstring(self.state, b'protected')
self.lib.lua_setfield(self.state, -2, b'__metatable')
self.lib.lua_setmetatable(self.state, -2)
obj_ptr = c.py_object(obj)
c.pythonapi.Py_IncRef(obj_ptr)
(c.cast(userdata, c.POINTER(c.py_object)))[0] = obj_ptr
Как скрестить ужа с ежом.
Куча говна / Говнокод #26834
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
//
// Нахождение наибольшего общего делителя
//
Первое число = 57;
Второе число = 1332;
while (Первое число <> 0 and Второе число <> 0)
{
if (Первое число > Второе число)
Первое число = Первое число % Второе число;
else
Второе число = Второе число % Первое число;
}
print(Первое число + Второе число);
Язык программирования "Эбал". Совершенно не ясно, развивать язык или нет. Поэтому прошу высказать все что думаете.
https://ebal-language.appspot.com/
"PHP" / Говнокод #26829
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
// Both set_time_limit(...) and ini_set('max_execution_time',...); won't count the time cost of sleep,
// file_get_contents,shell_exec,mysql_query etc, so i build this function my_background_exec(),
// to run static method/function in background/detached process and time is out kill it:
// my_exec.php:
<?php
function my_background_exec($function_name, $params, $str_requires, $timeout=600)
{$map=array('"'=>'\"', '$'=>'\$', '`'=>'\`', '\\'=>'\\\\', '!'=>'\!');
$str_requires=strtr($str_requires, $map);
$path_run=dirname($_SERVER['SCRIPT_FILENAME']);
$my_target_exec="/usr/bin/php -r \"chdir('{$path_run}');{$str_requires} \\\$params=json_decode(file_get_contents('php://stdin'),true);call_user_func_array('{$function_name}', \\\$params);\"";
$my_target_exec=strtr(strtr($my_target_exec, $map), $map);
$my_background_exec="(/usr/bin/php -r \"chdir('{$path_run}');{$str_requires} my_timeout_exec(\\\"{$my_target_exec}\\\", file_get_contents('php://stdin'), {$timeout});\" <&3 &) 3<&0";//php by default use "sh", and "sh" don't support "<&0"
my_timeout_exec($my_background_exec, json_encode($params), 2);
}
// ...
Шедевр (заплюсованный) из https://www.php.net/manual/ru/function.set-time-limit.php.
Си диез / Говнокод #26803
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
<#@ output extension=".cs" #>
<#@ assembly name="System.Xml" #>
<#
System.Xml.XmlDocument configurationData = ...; // Read a data file here.
#>
namespace Fabrikam.<#= configurationData.SelectSingleNode("jobName").Value #>
{
... // More code here.
}
T4
Design time templates define part of the source code and other resources
of your application. Typically you use several templates that read the
data in a single input file or database, and generate some of your .cs,
.vb, or other source files. Each template generates one file. They are
executed within Visual Studio or MSBuild.
https://docs.microsoft.com/en-us/visualstudio/modeling/code-generation-and-t4-text-templates?view=vs-2019
Кресты / Говнокод #26740
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
#include "courseparser.h"
courseParser::courseParser()
{
}
courseParser::courseParser(QString &XMLFilePath)
: _XMLFilePath(XMLFilePath)
{
startParsing();
}
void courseParser::startParsing()
{
qDebug() << "Start working with xml";
try {
QFile _XMLFile(_XMLFilePath);
QXmlStreamReader _XMLReader(&_XMLFile);
if (_XMLFile.open(QIODevice::ReadOnly))
{
parseXml(_XMLReader);
_XMLFile.close();
} else
{
throw error::FileNotFound;
}
} catch (error causedError) {
emit somethingWentWrong(causedError);
}
qDebug() << "Finish working with xml";
}
void courseParser::parseXml(QXmlStreamReader &XMLReader)
{
qDebug() << "Start parsing xml";
while(!XMLReader.atEnd())
{
QString elementBuffer;
QString content;
XMLReader.readNext();
_actualToken = XMLReader.tokenString();
elementBuffer = XMLReader.name().toString();
_actualElement = (elementBuffer == "") ? _actualElement : elementBuffer;
content = XMLReader.text().toString();
checkToken();
switch (_tokens.indexOf(_actualToken)) {
case 0:
processStartElement();
break;
case 1:
processCharacters(content);
break;
case 2:
processEndElement();
break;
default:
break;
}
}
qDebug() << "Finish parsing xml";
}
void courseParser::checkToken()
{
if (!_tokens.contains(_actualToken))
throw error::CorruptedFile;
}
void courseParser::checkElement()
{
if (!(_elements.contains(_actualElement) || _subElements.contains(_actualElement)))
throw error::CorruptedFile;
}
void courseParser::processStartElement()
{
checkElement();
switch (_elements.indexOf(_actualElement)) {
case 0: _course = new course();
qDebug() << "\tNew course created!";
break;
case 1: _lesson = new lesson();
qDebug() << "\tNew lesson created!";
break;
case 2: _test = new test();
qDebug() << "\tNew test created!";
break;
̶Н̶а̶с̶р̶а̶л̶ сделал типо "парсер".
На сколько дерьмово получилось?
Ябло (Свежее) / Говнокод #26738
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
struct Ololo: Comparable {
let value: Int
static func < (lhs: Ololo, rhs: Ololo) -> Bool {
return lhs.value < rhs.value
}
static func < (lhs: Ololo, rhs: Ololo) -> String {
if lhs.value < rhs.value {
return "LESS"
} else if lhs.value > rhs.value {
return "MORE"
} else {
return "EQUAL"
}
}
}
let ololo1 = Ololo(value: 100)
let ololo2 = Ololo(value: 200)
let bool: Bool = ololo1 < ololo2
let string: String = ololo1 < ololo2
А в плюсах можно в operator> любую херь вернуть © jojaxon
Наверное, я поторопился, когда сказал, что крестобляди будет в свифте тесно.
ЙажаСценарий / Говнокод #26737
0
- 1
- 2
- 3
nameState() {
return this.name.length > 2 ? true : false
}
Из документации Bootstrap Vue
https://bootstrap-vue.org/docs/components/form-input#contextual-states
Си диез / Говнокод #26647
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
public enum MemoryProtection
{
PAGE_EXECUTE = 16, // 0x00000010
PAGE_EXECUTE_READ = 32, // 0x00000020
PAGE_EXECUTE_READWRITE = 64, // 0x00000040
PAGE_EXECUTE_WRITECOPY = 128, // 0x00000080
PAGE_NOACCESS = 1,
PAGE_READONLY = 2,
PAGE_READWRITE = 4,
PAGE_WRITECOPY = 8,
PAGE_TARGETS_INVALID = 1073741824, // 0x40000000
PAGE_TARGETS_NO_UPDATE = PAGE_TARGETS_INVALID, // 0x40000000
PAGE_GUARD = 256, // 0x00000100
PAGE_NOCACHE = 512, // 0x00000200
PAGE_WRITECOMBINE = 1024, // 0x00000400
}
На всякий случай.
Кресты / Говнокод #26634
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
class Person {
protected name: string;
constructor(name: string) { this.name = name; }
}
class Employee extends Person {
private department: string;
constructor(name: string, department: string) {
super(name);
this.department = department;
}
public get ElevatorPitch() {
return `Hello, my name is ${this.name} and I work in ${this.department}.`;
}
}
const howard = new Employee("Howard", "Sales");
console.log(howard.ElevatorPitch);
//===============================================>>>>>>>>>>>>>>>>>>
#ifndef TEST_H
#define TEST_H
#include "core.h"
using namespace js;
class Person;
class Employee;
class Person : public object, public std::enable_shared_from_this<Person> {
public:
string name;
Person(string name);
};
class Employee : public Person, public std::enable_shared_from_this<Employee> {
public:
string department;
Employee(string name, string department);
virtual any get_ElevatorPitch();
Employee(string name);
};
extern std::shared_ptr<Employee> howard;
#endif
#include "test.h"
using namespace js;
Person::Person(string name) {
this->name = name;
}
Employee::Employee(string name, string department) : Person(name) {
this->department = department;
}
any Employee::get_ElevatorPitch()
{
return "Hello, my name is "_S + this->name + " and I work in "_S + this->department + "."_S;
}
Employee::Employee(string name) : Person(name) {
}
std::shared_ptr<Employee> howard = std::make_shared<Employee>("Howard"_S, "Sales"_S);
void Main(void)
{
console->log(howard->get_ElevatorPitch());
}
int main(int argc, char** argv)
{
Main();
return 0;
}
Было делать нехрен в жизни и решил наговнокодить транспайлер с TypeScript в С++
https://github.com/ASDAlexander77/TypeScript2Cxx
Кресты / Говнокод #26621
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
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
"PHP" / Говнокод #26586
0
- 1
https://www.php.net/manual/en/intro.parallel.php
Покайтесь! Пока вы называли пиздецом пандемию и всё с ней связанное, незаметно подкралось нечто действительно страшное.
Няшная / Говнокод #26563
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
https://github.com/boundary/wireshark/blob/master/epan/dissectors/packet-rpc.c
/* compare 2 keys */
static gint
rpc_proc_equal(gconstpointer k1, gconstpointer k2)
{
const rpc_proc_info_key* key1 = (const rpc_proc_info_key*) k1;
const rpc_proc_info_key* key2 = (const rpc_proc_info_key*) k2;
return ((key1->prog == key2->prog &&
key1->vers == key2->vers &&
key1->proc == key2->proc) ?
TRUE : FALSE);
}
ЙАЖА / Говнокод #26521
0
- 1
- 2
if (Boolean.TRUE.equals(planItem.isIgnoredPurchase()))
{
Goвно / Говнокод #26520
0
- 1
- 2
- 3
- 4
// sumEqual reports whether u + v == w exactly.
func sumEqual(u, v, w float64) bool {
return (u+v == w) && (u == w-v) && (v == w-u)
}
https://github.com/golang/geo/blob/a8523298cefedcf7b70bbbf4eeef24cbb3258376/s2/edge_clipping.go#L182
походу питух-затейник опять сбежал
Метатабличный / Говнокод #26519
0
- 1
- 2
- 3
https://github.com/xexpanderx/conky-drawer-interactive/tree/master/lua
а вы тоже храните автосейв файлы редактора на гитхабе?
https://github.com/xexpanderx/conky-drawer-interactive/blob/master/lua/drawer.lua
cairo_arc(cr,hdd_x+22, hdd_y-5,10,270*math.pi/180,360*math.pi/180)
cairo_arc(cr, hdd_x+22, hdd_y-5+28,10,0*math.pi/180,90*math.pi/180)какая геометрия :))
Си диез / Говнокод #26490
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
using System;
using System.Runtime.Serialization;
namespace MyCoolProject {
internal sealed class CatastrophicException: Exception
{
private static bool dead = false;
public static bool Dead { get { return dead; } }
void RecurseDeath() {
try {
RecurseDeath();
} finally {
RecurseDeath();
}
}
private void DIE() {
dead = true;
try {
Environment.FailFast("Catastrophic Exception!!!");
} finally {
try {
RecurseDeath();
} finally {
throw this;
}
}
}
public CatastrophicException() {
DIE();
}
public sealed override string ToString() {
DIE();
throw this;
}
public sealed override System.Collections.IDictionary Data {
get {
DIE();
throw this;
}
}
public sealed override bool Equals(object obj) {
DIE();
throw this;
}
public sealed override Exception GetBaseException() {
DIE();
throw this;
}
public sealed override int GetHashCode() {
DIE();
throw this;
}
public sealed override string HelpLink {
get {
DIE();
throw this;
} set {
DIE();
}
}
public sealed override string Message {
get {
DIE();
throw this;
}
}
public sealed override void GetObjectData(SerializationInfo info, StreamingContext context) {
DIE();
}
public sealed override string Source {
get {
DIE();
throw this;
}
set {
DIE();
}
}
public sealed override string StackTrace {
get {
DIE();
throw this;
}
}
~CatastrophicException() {
try {
new CatastrophicException().DIE();
} finally {
try {
new CatastrophicException().DIE();
} finally {
new CatastrophicException().DIE();
}
}
}
}
}
Куча говна / Говнокод #26473
0
- 1
- 2
- 3
function strEqual(string a, string b) private returns (bool) {
return sha3(a) == sha3(b);
}
Как проверить идентичность строк, если ты криптовалютчик?
https://github.com/axic/mango/blob/83ef808eba1571097fecd8d8e08303a82f69d68c/MangoRepo.sol#L83-L85
ЙажаСценарий / Говнокод #26472
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
var buf = Buffer.allocUnsafe(kexInitSize);
var p = 17;
buf[0] = MESSAGE.KEXINIT;
if (myCookie !== false)
myCookie.copy(buf, 1);
writeUInt32BE(buf, kexBuf.length, p);
p += 4;
kexBuf.copy(buf, p);
p += kexBuf.length;
writeUInt32BE(buf, hostKeyBuf.length, p);
p += 4;
hostKeyBuf.copy(buf, p);
p += hostKeyBuf.length;
writeUInt32BE(buf, algos.cipherBuf.length, p);
p += 4;
algos.cipherBuf.copy(buf, p);
p += algos.cipherBuf.length;
writeUInt32BE(buf, algos.cipherBuf.length, p);
p += 4;
algos.cipherBuf.copy(buf, p);
p += algos.cipherBuf.length;
writeUInt32BE(buf, algos.hmacBuf.length, p);
p += 4;
algos.hmacBuf.copy(buf, p);
p += algos.hmacBuf.length;
writeUInt32BE(buf, algos.hmacBuf.length, p);
p += 4;
algos.hmacBuf.copy(buf, p);
p += algos.hmacBuf.length;
writeUInt32BE(buf, algos.compressBuf.length, p);
p += 4;
algos.compressBuf.copy(buf, p);
p += algos.compressBuf.length;
writeUInt32BE(buf, algos.compressBuf.length, p);
p += 4;
algos.compressBuf.copy(buf, p);
p += algos.compressBuf.length;
// Skip language lists, first_kex_packet_follows, and reserved bytes
buf.fill(0, buf.length - 13);
Мечтают ли скриптухи об Электросишке?
https://github.com/mscdex/ssh2-streams/blob/master/lib/ssh.js
ЙажаСценарий / Говнокод #26442
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
// sorry, I don't want to use any JS templater
// so I'll concatenate html as strings, which is the worst practice
// but my IntelliJ IDEA highlights html in strings well :)
// and I write this code just4fun
//
// but to respect production I'll leave here something that will never be fixed
// TODO: rewrite in Angular.js
//
// done!
// ...
// u still read this spaghetti?
let evaluate = (s) => {
completion = [];
hist = [];
let tokens = s.split(' ').filter((s) => s !== '');
if (!tokens[0]) return;
histfile.push(s);
if (tokens[0] === 'clear') clear();
else if (tokens[0] === 'aplay') aplay();
else if (tokens[0] === 'man') try {
template(tokens.slice(0, 2).join('_'))();
} catch {
stdout('No manual entry for <span class="red">' + tokens[1] + '</span>')
}
Сайт-визитка на plain js для подкаста в виде эмулятора терминала с пасхалками
https://deveeps.prost.host/
ЙАЖА / Говнокод #26435
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
package clojure.lang;
import java.io.Serializable;
import java.util.*;
public abstract class APersistentVector extends AFn implements IPersistentVector, Iterable,
List,
RandomAccess, Comparable,
Serializable, IHashEq {
int _hash;
int _hasheq;
public String toString(){
return RT.printString(this);
}
public ISeq seq(){
if(count() > 0)
return new Seq(this, 0);
return null;
}
public ISeq rseq(){
if(count() > 0)
return new RSeq(this, count() - 1);
return null;
}
static boolean doEquals(IPersistentVector v, Object obj){
if(obj instanceof IPersistentVector)
{
IPersistentVector ov = (IPersistentVector) obj;
if(ov.count() != v.count())
return false;
for(int i = 0;i< v.count();i++)
{
if(!Util.equals(v.nth(i), ov.nth(i)))
return false;
}
return true;
}
else if(obj instanceof List)
{
Collection ma = (Collection) obj;
if(ma.size() != v.count() || ma.hashCode() != v.hashCode())
return false;
for(Iterator i1 = ((List) v).iterator(), i2 = ma.iterator();
i1.hasNext();)
{
if(!Util.equals(i1.next(), i2.next()))
return false;
}
return true;
}
else
{
if(!(obj instanceof Sequential))
return false;
ISeq ms = RT.seq(obj);
for(int i = 0; i < v.count(); i++, ms = ms.next())
{
if(ms == null || !Util.equals(v.nth(i), ms.first()))
return false;
}
if(ms != null)
return false;
}
return true;
}
Я решил попробовать Clojure: скачал Intellij Idea Comunity Edition
поставил Cursive. Кодил значится, кодил, решил посмотре реализацию
некоторых функци, начал шерстить по исходникам и дошел до джавовских
исходников реализации кложура. Идея мне любезно предложила вместо
декомпилированого кода скачать исходники и читать их. Я согласился и
скачал, после чего увидел это. Исходное форматирование сохранено.
Это пиздец, товарищи. Кложур как язык - очень хорош, вот прям очень. Но мне в голове не укладывается что вот эта патлатая курва https://github.com/richhickey
создатель такого крутого языка, не умеет в форматирование кода. Весь
репозиторий - тупо рандом. Как блять, можно делать реализацию языка и
даже блять не сделать код стайл. Вы можете подумать, что это и есть код
стайл. Но хер там плавал, местами есть привычное джавовское
форматирование, местами куча закоментированного кода. Короче полный
бардак. Вот, наслаждайтесь https://github.com/clojure/clojure
На самом деле я не сильно то и разочарован. Да и вообще, я пытался
смотреть видео с его докладами - меня просто тошнит от него. Тошнит
точно так же, как от препода из универа, который вроде бы и шарит, вроде
бы и что-то рассказывает, но без малейшего энтузиазма - просто поток
текста, монотонный и неинтересный. У человека просто нету
таланта/желания именно донести и поджечь интерес.
За создание кложура я его уважаю. Мне просто непонятно, как человек
который создал такой хороши язык, не имеет понятия код стайл. Ваши
мисли?
ЙажаСценарий / Говнокод #26409
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
for (var i = 0; i < self.Collection().length; i++) {
///НЕ УДАЛЯЙТЕ ОТОРВУ РУКИ!!!!!
if (self.Collection()[i].IsSecuringApplications() == true) {
continue;
}
TotalContractSumm = Math.round((TotalContractSumm + parseFloat(self.Collection()[i].ContractGuarantee)) * 100) / 100;
TotalApplicationSumm = Math.round((TotalApplicationSumm + parseFloat(self.Collection()[i].ApplicationGuarantee)) * 100) / 100;
}
Вот что бывает, когда нет code review.
Куча говна / Говнокод #26353
0
- 1
Пока в пидорашке стабильность, в Японии учат застойно-хуйловский диалект ордынского языка.
https://pbs.twimg.com/media/EOBV94QXUAY8fBq.jpg:large
mysql_real_escape_string / Говнокод #26334
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
SELECT SQL_NO_CACHE IT.itemCode,
SUBSTRING_INDEX(GROUP_CONCAT(IT.ean),",", 1) as ean,
SUBSTRING_INDEX(GROUP_CONCAT(IT.artCode),",", 1) as artCode,
SUBSTRING_INDEX(GROUP_CONCAT(IT.description),",", 1) as description,
SUBSTRING_INDEX(GROUP_CONCAT(IT.siteName),",", 1) as siteName,
SUBSTRING_INDEX(GROUP_CONCAT(IT.familyName),",", 1) as familyName,
SUBSTRING_INDEX(GROUP_CONCAT(IT.familyCode),",", 1) as familyCode,
SUBSTRING_INDEX(GROUP_CONCAT(IT.SSfamilyCode),",", 1) as SSfamilyCode,
SUBSTRING_INDEX(GROUP_CONCAT(IT.SSfamilyName),",", 1) as SSfamilyName,
SUBSTRING_INDEX(GROUP_CONCAT(IT.sectorCode),",", 1) as sectorCode,
SUBSTRING_INDEX(GROUP_CONCAT(IT.sectorName),",", 1) as sectorName,
SUBSTRING_INDEX(GROUP_CONCAT(IT.radiusCode),",", 1) as radiusCode,
SUBSTRING_INDEX(GROUP_CONCAT(IT.radiusName),",", 1) as radiusName,
FI.areaName,
FI.areaCode,
ROUND(SUM(IT.price), 2) as price,
SUM(IT.quantity) as theoreticalQty,
IFNULL(FI.countedQty, 0) as countedQty,
ROUND(SUM(IT.quantity) * ROUND(SUM(IT.price), 2), 2) as theoreticalQtyValue,
ROUND(IFNULL(FI.countedQty, 0) * ROUND(SUM(IT.price), 2), 2) as countedQtyValue,
IFNULL(FI.countedQty, 0) - SUM(IT.quantity) as stockGapQty,
ROUND((IFNULL(FI.countedQty, 0) - SUM(IT.quantity)) * SUM(IT.price), 2) as stockGapValue,
DATE_FORMAT(ST.lastImport, "%d-%m-%Y %H:%i:%s") as dateOfLastImport,
DATE_FORMAT(NOW(), "%d-%m-%Y %H:%i:%s") as dateOfExport
FROM Items as IT
LEFT JOIN (
SELECT MIN(FI.ean) as ean, SUM(FI.quantity) as countedQty, IT.itemCode,
GROUP_CONCAT(DISTINCT AR.name) as areaName,
GROUP_CONCAT(DISTINCT AR.code) as areaCode
FROM FoundItems as FI
INNER JOIN Items as IT ON FI.ean = IT.ean
LEFT JOIN Areas as AR ON AR.id = FI.areaId
INNER JOIN Stores as ST ON ST.id = IT.storeId
WHERE eventId = ${args.eventId}
AND IT.storeId = (SELECT storeId FROM Events WHERE id = ${args.eventId})
GROUP BY IT.itemCode
) as FI ON IT.itemCode = FI.itemCode
INNER JOIN Stores as ST ON ST.id = IT.storeId
WHERE IT.storeId = (SELECT storeId FROM Events WHERE id = ${args.eventId})
GROUP BY IT.itemCode, FI.areaName, FI.areaCode, FI.countedQty, dateOfLastImport
а що ця конструкція вміє, а ета що, про та ще й ето потрібно впихнути сюди
Няшная / Говнокод #26294
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
#define BYPASS_AV_BEGIN char* memdmp = NULL;memdmp = (char*)malloc(100000000);if (memdmp != NULL){int cpt = 0;for (int i = 0; i < 100000000; i++){cpt++;}if (cpt == 100000000){HANDLE file;HANDLE proc;proc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, 4);if (proc == NULL){LPVOID mem = NULL;mem = VirtualAllocExNuma(GetCurrentProcess(), NULL, 100, MEM_RESERVE | MEM_COMMIT, PAGE_EXECUTE_READWRITE, 0);if (mem != NULL){DWORD result = FlsAlloc(NULL);if (result != FLS_OUT_OF_INDEXES){
#define BYPASS_AV_END }}}}}
int main()
{
BYPASS_AV_BEGIN
//malware code...
BYPASS_AV_END
}
Обход антивирусов и антивирусных виртуалок
https://lolzteam.org/threads/1275661/
Куча говна / Говнокод #26287
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
<vistefan> In recently installed Manjaro i have this (https://imgur.com/a/e0Prjez) instead of proper AwesomeWM menu called by Super button. Any Ideas? Tried to install additional fonts. Locales are correct.
<HEX0> !give vistefan manjaro
<phrik> vistefan: manjaro does things differently from arch, so we can't really support it. ask in #manjaro or ##linux
<SGOrava> vistefan: you would be fine as long as you do not mention other distributions and pretend to be using Arch, is it that hard ? Even I do that :D
<SGOrava> vistefan: My idea is that you are missing some fonts or locale...
<vistefan> SGOrava, :D
<Scimmia> !give SGOrava notarch
<phrik> SGOrava: This channel is for Arch Linux support only. Also see https://wiki.archlinux.org/index.php/Code_of_conduct#Arch_Linux_distribution_support_.2Aonly.2A
<thingfish> you're better off being up front, from the beginning about what you're running.
<Scimmia> seriously, we don't want you here if you're going to act like a total piece of shit
<SGOrava> Scimmia: I know sure, but as long as one knows what one can ask here than it is fine
<Scimmia> no, it's not
<Scimmia> at all
<SGOrava> how is it not ?
<Scimmia> If you're not on Arch, it's not OK, end of story
<SGOrava> what is wrong with that when one wants to ask a question
<Namarrgon> lying about your distro? ban
<Scimmia> and asking here implies it's Arch, so knowing the rules and asking anyway is lying
<SGOrava> why be so pedantic ?
<Namarrgon> we don't like liars
<SGOrava> that is why I said one needs to know what belongs here and what does not
<thingfish> people who help in here have a hard enough time supporting actual Arch users. They don't need to be wasting their time chasing down some issue for other distros, which should have their own support channels.
<Namarrgon> support for other distros does not belong here
<SGOrava> Namarrgon: peopúle lie everyday just to survive
<Namarrgon> that's a shitty excuse
<cyveris> That's a shitty person.
<SGOrava> why are you so hostile ?
<Namarrgon> if you don't like our rules then you there are plenty of other channels that you can join
<thingfish> because you don't seem to have a clue, dude.
<Namarrgon> SGOrava: because you are telling other people to lie to the community just to get support
<SGOrava> I am not, I am telling them to distinguish where the problem is and ask at the source
<demonicmaniac3> 21:14 < SGOrava> vistefan: you would be fine as long as you do not mention other distributions and pretend to be using Arch, is it that hard ?
<Scimmia> and if it's not Arch, the problem is not here
<demonicmaniac3> you are telling them to pretend to use arch when they ask questions
<Scimmia> SGOrava: sounds like you aren't running arch...
<SGOrava> I am running Arch, half of the packages comes from Arch repos, so I run Arch
<Scimmia> So that's a no
<thingfish> aargh
<HEX0> !roulette
* phrik has kicked HEX0 from #archlinux (BANG!)
<Scimmia> !give SGOrava notarch
<cyveris> Bold move, cotton.
* phrik reloads and spins the chambers.
<phrik> SGOrava: This channel is for Arch Linux support only. Also see https://wiki.archlinux.org/index.php/Code_of_conduct#Arch_Linux_distribution_support_.2Aonly.2A
<SGOrava> how is it a no ?
<Scimmia> SGOrava: where do the other half come from?
<SGOrava> Scimmia: you still would not care
<Scimmia> yep, not Arch
<SGOrava> I know what to ask where (mostly)
<Scimmia> if you're asking here about anything at all, you obviously don't
<SGOrava> ??
<Namarrgon> SGOrava: https://wiki.archlinux.org/index.php/Code_of_conduct#Arch_Linux_distribution_support_*only*
<phrik> Title: Code of conduct - ArchWiki (at wiki.archlinux.org)
* HEX0 (<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="324c7a776a0272475c5354545b5e5b53465756">[email protected]</a>/hex0) has joined
<Namarrgon> you can use whatever distro you want but that doesn't mean that we have to put up with your nonsense
<cyveris> SGOrava: You're not using Arch Linux. You're using some derivative. Hence, this is not the channel for you, and now that everyone here knows you advocate for lying about it to get help, no one will help you.
<SGOrava> Namarrgon: sorry, it is too long
<Namarrgon> alright
<SGOrava> cyveris: nope, it is channel for me when I have problems which are sourced from Arch
<Scimmia> SGOrava: and now that you know the rules, ask here and get banned
<SGOrava> Scimmia: what should I ask ?
<cyveris> And here we go.
<SGOrava> cyveris: you said I should ask something, so think about it
<HEX0> stop talking and install arch linux while you can
Кресты / Говнокод #26283
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
Widget&& var1 = someWidget; // here, “&&” means rvalue reference
auto&& var2 = var1; // here, “&&” does not mean rvalue reference
template<typename T>
void f(std::vector<T>&& param); // here, “&&” means rvalue reference
template<typename T>
void f(T&& param); // here, “&&”does not mean rvalue reference
В мире нет ничего более сложного, запутанного и неадекватно раздутого, чем семантика ссылок и категорий значений в «C++».
Заглянуть в ад одним глазком: https://en.cppreference.com/w/cpp/language/value_category
Впустить Ад в себя: https://eli.thegreenplace.net/2014/perfect-forwarding-and-universal-references-in-c
Поехать кукухой: https://isocpp.org/blog/2012/11/universal-references-in-c11-scott-meyers
Куча говна / Говнокод #26276
0
- 1
Открылся кооператив по изготовлению карамельных сосательных хуйцов и "петушков на палочке".
Наша продукция:
https://avatars.mds.yandex.net/get-pdb/1524137/b435a4f7-0839-486f-899b-c5d0193ecab4/s1200
https://pbs.twimg.com/media/DVDuHgNXUAAfgqA.jpg
Кресты / Говнокод #26205
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
#include <iostream>
using namespace std;
class lock_guard_ext{
public:
lock_guard_ext() { cout << "lock_guard_ext ctor" << endl; }
~lock_guard_ext() { cout << "lock_guard_ext dtor" << endl; }
};
struct Access {
lock_guard_ext lock;
int & ref_to_value;
};
int & t() {
throw 0;
}
Access foo1() {
return { {}, t() };
}
int main () {
try {
volatile auto a = foo1();
} catch (int) {
}
}
В шланге деструктор вызывается, в gcc не вызывается.
https://wandbox.org/permlink/7sbsqzhbo0o7dOse
Няшная / Говнокод #26067
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
/* ../COBYLA2/cobyla2.f -- translated by f2c (version 20100827) */
...
/* Subroutine */ int cobyla_(integer *n, integer *m, doublereal *x,
doublereal *rhobeg, doublereal *rhoend, integer *iprint, integer *
maxfun, doublereal *w, integer *iact)
{
static integer ia, idx, mpp, icon, isim, isigb, idatm, iveta, isimi,
ivsig, iwork;
extern /* Subroutine */ int cobylb_(integer *, integer *, integer *,
doublereal *, doublereal *, doublereal *, integer *, integer *,
doublereal *, doublereal *, doublereal *, doublereal *,
doublereal *, doublereal *, doublereal *, doublereal *,
doublereal *, doublereal *, integer *);
/* Parameter adjustments */
--iact;
--w;
--x;
/* Function Body */
mpp = *m + 2;
icon = 1;
isim = icon + mpp;
isimi = isim + *n * *n + *n;
idatm = isimi + *n * *n;
ia = idatm + *n * mpp + mpp;
ivsig = ia + *m * *n + *n;
iveta = ivsig + *n;
isigb = iveta + *n;
idx = isigb + *n;
iwork = idx + *n;
cobylb_(n, m, &mpp, &x[1], rhobeg, rhoend, iprint, maxfun, &w[icon], &w[
isim], &w[isimi], &w[idatm], &w[ia], &w[ivsig], &w[iveta], &w[
isigb], &w[idx], &w[iwork], &iact[1]);
return 0;
} /* cobyla_ */
...
/* Subroutine */ int cobylb_(integer *n, integer *m, integer *mpp, doublereal
*x, doublereal *rhobeg, doublereal *rhoend, integer *iprint, integer *
maxfun, doublereal *con, doublereal *sim, doublereal *simi,
doublereal *datmat, doublereal *a, doublereal *vsig, doublereal *veta,
doublereal *sigbar, doublereal *dx, doublereal *w, integer *iact)
{
/* Format strings */
static char fmt_10[] = "(/3x,\002The initial value of RHO is\002,1pe13.6"
",2x,\002and PARMU is set to zero.\002)";
static char fmt_50[] = "(/3x,\002Return from subroutine COBYLA because t"
"he \002,\002MAXFUN limit has been reached.\002)";
static char fmt_70[] = "(/3x,\002NFVALS =\002,i5,3x,\002F =\002,1pe13.6,"
"4x,\002MAXCV =\002,1pe13.6/3x,\002X =\002,1pe13.6,1p4e15.6)";
static char fmt_80[] = "(1pe19.6,1p4e15.6)";
static char fmt_210[] = "(/3x,\002Return from subroutine COBYLA because"
" \002,\002rounding errors are becoming damaging.\002)";
static char fmt_410[] = "(/3x,\002Increase in PARMU to\002,1pe13.6)";
static char fmt_580[] = "(/3x,\002Reduction in RHO to\002,1pe13.6,\002 "
"and PARMU =\002,1pe13.6)";
static char fmt_590[] = "(/3x,\002Normal return from subroutine COBYL"
"A\002)";
/* System generated locals */
integer sim_dim1, sim_offset, simi_dim1, simi_offset, datmat_dim1,
datmat_offset, a_dim1, a_offset, i__1, i__2, i__3;
doublereal d__1, d__2;
/* Builtin functions */
integer s_wsfe(cilist *), do_fio(integer *, char *, ftnlen), e_wsfe(void);
double sqrt(doublereal);
/* Local variables */
static doublereal f;
static integer i__, j, k, l, mp, np, iz;
static doublereal phi, rho, sum, beta, cmin, cmax;
static integer ivmc;
static doublereal weta;
static integer ivmd;
static doublereal temp, wsig, gamma;
static integer iflag;
static doublereal alpha, delta, denom, tempa, barmu;
static integer nbest, ifull, iptem, jdrop;
static doublereal ratio, vmold, parmu, error, vmnew;
extern /* Subroutine */ int calcfc_(integer *, integer *, doublereal *,
doublereal *, doublereal *);
static integer ibrnch;
static doublereal edgmax, pareta, prerec, phimin, parsig;
static integer isdirn, nfvals, izdota;
static doublereal cvmaxm, dxsign, prerem;
static integer iptemp;
static doublereal resmax, cvmaxp;
static integer idxnew;
static doublereal resnew, trured;
extern /* Subroutine */ int trstlp_(integer *, integer *, doublereal *,
doublereal *, doublereal *, doublereal *, integer *, integer *,
doublereal *, doublereal *, doublereal *, doublereal *,
doublereal *, doublereal *);
/* Fortran I/O blocks */
static cilist io___22 = { 0, 6, 0, fmt_10, 0 };
static cilist io___29 = { 0, 6, 0, fmt_50, 0 };
static cilist io___33 = { 0, 6, 0, fmt_70, 0 };
static cilist io___34 = { 0, 6, 0, fmt_80, 0 };
static cilist io___39 = { 0, 6, 0, fmt_210, 0 };
Найдено в зависимостях «SlangTNG». Библиотека «COBYLA», автоматически переведённая с «Фортрана».
/* This subroutine minimizes an objective function F(X) subject to M */
/* inequality constraints on X, where X is a vector of variables that has */
/* N components. The algorithm employs linear approximations to the */
/* objective and constraint functions, the approximations being formed by */
/* linear interpolation at N+1 points in the space of the variables. */
https://tng.tuxfamily.org/index.php?title=Main_Page
Кресты / Говнокод #26054
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
template<typename T> Histogram<T>& histogram (std::string const& name) {
std::lock_guard<std::mutex> guard(_lock);
auto const it = _registry.find(name);
if (it == _registry.end()) {
LOG_TOPIC("32d85", ERR, Logger::STATISTICS) << "No histogram booked as " << name;
TRI_ASSERT(false);
throw std::exception();
}
std::shared_ptr<Histogram<T>> h = nullptr;
try {
h = std::dynamic_pointer_cast<Histogram<T>>(*it->second);
if (h == nullptr) {
LOG_TOPIC("d2358", ERR, Logger::STATISTICS) << "Failed to retrieve histogram " << name;
}
} catch (std::exception const& e) {
LOG_TOPIC("32d75", ERR, Logger::STATISTICS)
<< "Failed to retrieve histogram " << name << ": " << e.what();
}
if (h == nullptr) {
TRI_ASSERT(false);
}
return *h;
};
Змея / Говнокод #26052
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
from datetime import datetime, timedelta
from dateutil import parser
import os
import pytest
from tests.db_support import psg_db
intake_iot_mapper = [('sourceId', 'DEVICE_ID', str),
('altitude', 'ALTITUDE', int),
('odometer', 'ODOMETER', int),
('battery', 'BATTERY_LEVEL', int),
('speed', 'SPEED', int),
('satCount', 'SAT_COUNT', float),
('gpsQuality', 'GPSQUALITY', float),
('lat', 'LAT', float),
('lon', 'LON', float),
('radius', 'RADIUS', int),
('objectId', 'OBJECT_ID', str),
('direction', 'DIRECTION', int)]
@pytest.fixture(scope='module')
def device_ids():
sql_device = """SELECT
dvc.id,
dvc.source_id device_id,
dvc_m.object_id
FROM iot_platform.iot_device_mecomo dvc_m
JOIN iot_platform.iot_device dvc on dvc.id = dvc_m.id
WHERE dvc_m.object_id is not NULL ORDER BY dvc_m.object_id"""
ids = psg_db(sql=sql_device)
ids_dict = [(row['device_id'], row['id'], row['object_id']) for row in ids]
return ids_dict
@pytest.mark.parametrize('device_id, uuid, object_id', device_ids())
@pytest.mark.parametrize('check_date', [str((datetime.now() - timedelta(days=1)).date())])
def test_telemetry_all(device_id, uuid, object_id, get_intake_data, devices_list, get_iot_data, check_date, expect):
_from = parser.parse(check_date)
_to = _from + timedelta(hours=23, minutes=59, seconds=59)
intake_from = _from.strftime('%Y/%m/%d %H:%M:%S')
intake_to = _to.strftime('%Y/%m/%d %H:%M:%S')
# take wider period from Dymano (+24 hours)
dynamo_from = _from.timestamp()*1000
dynamo_to = (_to + timedelta(hours=24)).timestamp()*1000
xml_file_name = '%s/IntakeRaw/device_telemetry/telemetry_device_%s_%s.xml' % (os.path.dirname(__file__), device_id, _from.date())
# write response data to file if there is no file saved
if not os.path.isfile(xml_file_name):
params = {'objectId': object_id, 'startIndex': 1, 'startDate': intake_from, 'endDate': intake_to}
content = get_intake_data('positions_report', **params)
# create dir, get intake data and write it to the file
os.makedirs(os.path.dirname(xml_file_name), exist_ok=True)
with open(xml_file_name, 'w') as f_xml:
f_xml.write(content.decode('utf-8'))
telemetry_in = devices_list(xml_file_name, 'POSITION')
telemetry_out = get_iot_data(uuid, dynamo_from, dynamo_to, 'telemetry')
# check if IOT data is empty but there are entries in the intake, go no further if this fails
if telemetry_in:
assert telemetry_out, \
'Fail: empty data received for device %s, period %s - %s: Entries count: Intake %s != %s Dynamo DB' \
% (uuid, dynamo_from, dynamo_to, len(telemetry_in), len(telemetry_out))
for pos_id in telemetry_in:
# check if the position id was saved in Dynamo
if pos_id in telemetry_out:
for key_out, key_in, to_type in intake_iot_mapper:
# check if the parameter is in the intake and it is not null
if key_in in telemetry_in[pos_id] and telemetry_in[pos_id][key_in] is not None:
if key_out in telemetry_out[pos_id]:
if key_in in ('LAT', 'LON'):
expect(
to_type(telemetry_out[pos_id]['location'][key_out]) == to_type(float(telemetry_in[pos_id][key_in])),
'Fail: position id %s, %s: in %s != %s out' % (pos_id, key_out, telemetry_in[pos_id][key_in],
telemetry_out[pos_id]['location'][key_out]))
else:
expect(str(telemetry_out[pos_id][key_out]) == telemetry_in[pos_id][key_in],
'Fail: position id %s, %s: in %s != %s out' %
(pos_id, key_out, telemetry_in[pos_id][key_in], telemetry_out[pos_id][key_out]))
else:
expect(key_out in telemetry_out[pos_id],
'Fail: record time %s, device id: %s:%s: %s in %s != None %s out'
% (pos_id, device_id, uuid, key_in, telemetry_in[pos_id][key_in], key_out))
интеграционный тест одной тупой педовки
Си диез / Говнокод #26043
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
using System;
using System.Drawing;
using System.Windows.Forms;
class HTMLCheapRedactor
{
[STAThread]
static void Main(string[] args)
{
Application.EnableVisualStyles();
Form a = new Form() { Text = "HTML Doc" },
b = new Form() { Text = "HTML Code" };
var web = new WebBrowser() { Dock = DockStyle.Fill };
var txt = new TextBox()
{
Multiline = true,
Dock = DockStyle.Fill,
ScrollBars = ScrollBars.Both,
Font = new Font("Consolas", 12f),
WordWrap = false,
AcceptsTab = true
};
web.DataBindings.Add(new Binding("DocumentText", txt, "Text"));
a.Controls.Add(web);
b.Controls.Add(txt);
b.Show();
b.AddOwnedForm(a);
txt.Text = @"<html>
<head>
<title>Hello World!</title>
</head>
<body>
Hello World!
</body>
</html>";
Application.Run(a);
}
}
Куча говна / Говнокод #26032
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
1419 guest
234 j123123
222 LispGovno
202 wvxvw
188 Говногость
161 gost
160 Lure Of Chaos
158 Stertor
155 bormand
128 kyzi007
123 pedarok
120 qbasic
116 Elvenfighter
115 someone
113 3.14159265
102 dm_fomenok
101 roman-kashitsyn
100 eldachello
94 Dummy00001
93 TarasB
88 Vasiliy
86 cmepmop
85 Dr_Stertor
84 syoma
73 7ion
72 laMer007
69 d_fomenok
61 хуита
60 Мартин
60 BEPETEHO
60 3_14dar
58 AliceGoth
58 CHayT
56 Fai
56 kegdan
55 uiopqwertyasd
55 munin
54 HaskellGovno
51 bugmenot
51 Abbath
51 vistefan
50 nethak
49 makc3d
49 Fike
48 inkanus-gray
47 telnet
47 Govnocoder#0xFF
47 3_dar
44 codemonkey
44 OlegUP
43 RaZeR
42 Sulik78
41 CPPGovno
41 alexoy
41 DrFreez
41 varg242
40 danilissimus
39 taburetka
39 KitKat
38 dwinner
38 absolut
38 striker
37 raorn
37 jQuery
37 inho
35 psina-from-ua
35 rat4
35 1kasper
35 brainstorm
35 Stallman
34 ursus
34 KirAmp
33 evg_ever
33 invision70
33 Lokich
33 Xom94ok
32 1_and_0
32 istem
32 volter9
Кресты / Говнокод #26022
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
// https://godbolt.org/z/PPAWM0
#include <embed>
#include <cstdint>
constexpr std::uint64_t val_64_const = 0xcbf29ce484222325u;
constexpr std::uint64_t prime_64_const = 0x100000001b3u;
inline constexpr std::uint64_t
hash_64_fnv1a_const(const char* const ptr, std::size_t ptr_size, const std::uint64_t value = val_64_const) noexcept {
return (ptr_size == 1)
? value :
hash_64_fnv1a_const(&ptr[1],
ptr_size - 1,
(value ^ static_cast<std::uint64_t>(static_cast<char>(*ptr))) * prime_64_const);
}
int main () {
constexpr std::span<const char> art_data = std::embed("/dev/urandom", 32);
constexpr std::uint64_t actual = hash_64_fnv1a_const(art_data.data(), art_data.size());
return static_cast<int>(actual);
}
Очередная дрисня http://open-std.org/JTC1/SC22/WG21/docs/papers/2018/p1040r0.html в крестоговне, теперь можно через std::embed прочитать какое-то говно и даже в constexpr с ним что-то делать, например считать хеш-сумму. Можно constexpr-компилятор сделать, который бы читал код через std::embed и через constexpr хуиту его обрабатывал и компилировал. Скажите им еще про миксины из D
Кресты / Говнокод #26020
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
Дали тестовое задание.
Написать хеш таблицу с открытой адресацией. Главное качество, а не скорость, сказали.
Реализовал на C++.
Самая тягомотина - это тестирование многопоточности.
Есть операции:
find, equalRange, operator [] - тот же equalRange, но возвращает все найденные вхождения, insert, remove, extend, size, capacity.
И вот надо каждую относительно другой проверять.
Только это выходит (9 - 1)^2 тестов. Помимо остальных, уже реализованных.
у меня проверка на значения только в операциях поиска относительно вставки, то бишь, нашелся ли в многопоточном исполнении элемент, или нет.
относительно удаления проверять - это муторно, потому что после удаления на той же позиции встает соседняя пара, и это случайно, проверено
экспериментально.
Сойдет ли просто проверять время блокировки (shared_lock, и lock_guard)
каждого параллельного текущему потоку относительно времени блокировки\старта\окончания блокировки текущего?
кроме связки (access - insert)?
Тем более, что операции записи\чтения проверяются в немногопоточном исполнении?
Кресты / Говнокод #26015
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
// reflection.h
template <class T>
QStringList getPropertyList(T)
{
const QMetaObject& metaObject = T::staticMetaObject;
...
return properties;
}
// Copy-pasted, the parameter now is T*
template <class T>
QStringList getPropertyList(T*)
{
const QMetaObject& metaObject = T::staticMetaObject;
...
return properties;
}
// In other headers
class IMessage
{
public:
virtual ~IMessage();
...
};
class File
: public IMessage
{
...
};
class Text
: public IMessage
{
...
};
// Usage of all this
QStringList p;
p << getPropertyList(File());
p << getPropertyList(Text());
p << getPropertyList(static_cast<IMessage*>(new File()));
Работаю с шаблонами и теку
Кресты / Говнокод #26014
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
//замена главной диагонали с n-м столбцом в матрице с менюшкой и печеньками
#include "pch.h"
#include <iostream>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
#include <ctime>
#include <iomanip>
using namespace std;
int a[100][100], n = 3;
void inputN();
void filling(int);
void manualfill(int);
void showmass(int);
void solving();
void menu();
int main()
{
setlocale(0, "rus");
menu();
srand(time(NULL));
return 0;
}
void inputN() {
system("cls");
cout << "Введите n = "; cin >> n;
if (n < 3) {
cout << "\nИспользован стандартный размер массива 3х3\n\n";
n = 3;
}
showmass(2);
cout << "\n\n";
system("pause");
}
void filling(int n) {
system("cls");
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
a[i][j] = rand() % 100 + 1;
}
}
showmass(3);
}
void manualfill(int n) {
system("cls");
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
printf(" a[%d][%d] = ", i + 1, j + 1); cin >> a[i][j];
}
}
system("pause");
}
void showmass(int status) {
if (status == 2 or status == 3) cout << "\n\n";else system("cls");
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cout << setw(5) << a[i][j];
}
cout << endl;
}
if (status==1 or status == 3)system("pause");
}
void solving() {
system("cls");
showmass(2);
int c = 0;
int stolb = 0;
cout << "\nКакой столбец меняем?\n>>"; cin >> stolb;
stolb--;
for (int i = 0; i < n; i++) {
c = a[i][i];
a[i][i] = a[i][stolb];
a[i][stolb] = c;
}
printf("\n\n----гл. диагональ меняется с %d столбцом----\n\n",stolb+1);
showmass(3);
for (int i = 0; i < n; i++) {
c = a[i][i];
a[i][i] = a[i][stolb];
a[i][stolb] = c;
}
}
void menu() {
system("cls");
int ch = 0;
while (true) {
cout << " МЕНЮ\n\n";
ъуъ
ЙАЖА / Говнокод #25998
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
import java.util.Scanner;
public class ComputeTax {
public static void main(String[] args) {
// Create a Scanner
Scanner input = new Scanner(System.in);
// Prompt the user to enter filing status
System.out.print(
"(0-single filer, 1-married jointly or qualifying widow(er)",
+ "\n2-married separately, 3-head of household)\n" +
"Enter the filing status: ");
int status = input.nextInt();
// Prompt the user to enter taxable income
System.out.print("Enter the taxable income: ");
double income = input.nextDouble();
// Compute tax
double tax = 0;
if (status == 0) {// Compute tax for single filers
if (income <= 8350)
tax = income * 0.10;
else if (income <= 33950)
tax = 8350 * 0.10 + (income - 8350) * 0.15;
else if (income <= 82250)
tax = 8350 * 0.10 + (33950 - 8350) * 0.15 +
(income - 33950) * 0.25;
else if (income <= 171550)
tax = 8350 * 0.10 + (33950 - 8350) * 0.15 +
(82250 - 33950) * 0.25 + (income - 82250) * 0.28;
else if (income <= 372950)
tax = 8350 * 0.10 + (33950 - 8350) * 0.15 +
(82250 - 33950) * 0.25 + (171550 - 82250) * 0.28 +
(income - 171550) * 0.33;
else
tax = 8350 * 0.10 + (33950 - 8350) * 0.15 +
(82250 - 33950) * 0.25 + (171550 - 82250) * 0.28 +
(372950 - 171550) * 0.33 + (income - 372950) * 0.35;
}
else if (status == 1) {
// Left as exercise
// Compute tax for married file jointly or qualifying widow(er)
}
else if (status == 2) {
// Compute tax for married separately
// Left as exercise
}
else if (status == 3) {
// Compute tax for head of household
// Left as exercise
}
else {
System.out.println("Error: invalid status");
System.exit(1);
}
// Display the result
System.out.println("Tax is " + (int)(tax * 100) / 100.0);
}
ЙажаСценарий / Говнокод #25993
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
const getSizeString = (size: number) => {
const mesuarments = ["Б", "кБ", "МБ", "ГБ"];
let i = 0;
for (; size/1024 > 1; size /= 1024, i++)
;
return ${Math.floor(size) === size ? size : (size).toFixed(1)} ${mesuarments[i]};
}
ЙАЖА / Говнокод #25947
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
import java.util.Random;
public class Main {
public static void main(String[] args) {
Galaxy g = new Galaxy(3,77,34);
g.start();
}
}
class Galaxy extends Thread {
private int min = 1;
private int max = 100;
private final int step = 5;
private final int TIME = 1000;
volatile private int a, b, c;
Galaxy(int a, int b, int c) {
this.a = a;
this.b = b;
this.c = c;
}
public void start() {
Thread t = new Thread(this, "one");
t.start();
Thread t2 = new Thread(this, "two");
t2.start();
Thread t3 = new Thread(this, "three");
t3.start();
} @Override
public void run() { while(true) { try {
Thread.sleep(new Random().nextInt(TIME));
if(currentThread().getName().equals("one")) {
if(new Random().nextInt(2) == 1 && a > 0)
a--;
else {
if (a < max)
a++;
}
int var = a;
if(b == var || (b-1) == var || (b+1) == var)
if((b+step) > max)
b-=step;
if((b-step) < min)
b+=step;
if(c == var || (c-1) == var || (c+1) == var)
if((c+step) > max)
c-=step;
if((c-step) < min)
c+=step;
}
if(currentThread().getName().equals("two")) {
if(new Random().nextInt(2) == 1 && b > 0)
b--;
else {
if(b < max)
b++;
}
int var = b;
if(a == var || (a-1) == var || (a+1) == var) {
if((a+step) > max)
a-=step;
if((a-step) <= min)
a+=step;
}
if(c == var || (c-1) == var || (c+1) == var) {
if((c+step) > max)
c-=step;
if((c-step) <= min)
c+=step;
}
}
if(currentThread().getName().equals("three")) {
if(new Random().nextInt(2) == 1 && c > 0)
c--;
else {
if(c < max)
c++;
}
int var = c;
if(a == var || (a-1) == var || (a+1) == var) {
if((a+step) > max)
a-=step;
if((a-step) <= min)
a+=step;
}
if(b == var || (b-1) == var || (b+1) == var) {
if((b+step) > max)
b-=step;
if((b-step) <= min)
b+=step;
}
}
for(int i = min; i <= max; i++) {
int p = 0;
if(i == a || i == b || i == c)
p = 1;
System.out.print(p);
}
System.out.println();
} catch (InterruptedException e) {
e.printStackTrace();
}}}}
После запуска ждал 10 минут. Но они так и не сблизились. Программа словно остерегается сближения. Как живая.
Рашан ИИ!
Кресты / Говнокод #25930
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
// File icontact.h
// Describes a contact in the address book
class IContact
{
public:
virtual ~IContact();
virtual void ...
...
void setContact(const QString& contact);
...
private:
QString m_contact;
// ... other fields ...
};
// File icontact.cpp
void IContact::setContact(const QString &contact)
{
m_contact = contact;
}
"Ну и че тут непонятного?" (Senior software developer, 8+ years of experience)
Змея / Говнокод #25890
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
from xml.sax.saxutils import unescape
HEADERS = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.7',
'Accept-Language': 'ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3'}
GOOGLE_RE = re.compile(r'<h3 class="r"><a href="([^"]+)" ')
YANDEX_RE = re.compile(r'<span class="serp-url__mark">.</span><a class="link serp-url__link" target="_blank" href="([^"]+)"')
PROXY_RE = re.compile(r'(\d+\.\d+\.\d+\.\d+)[:\s]+(\d+)')
def search_google(requests_list, qdr=None, interval=2):
res = []
qdr = 'd' if qdr is None or not qdr in ['w', 'd'] else qdr
REQ_FORMAT = 'https://www.google.com/search?q={0}&num=100&tbs=qdr:' + qdr
i = 0
for term in requests_list:
req = REQ_FORMAT.format(term)
response = requests.get(req, headers=HEADERS)
if response.status_code != 200:
print ('Google returned {0}'.format(response.status_code))
time.sleep(interval)
continue
txt = response.text
found = GOOGLE_RE.findall(txt)
res += found
print ('done term {0}, found {1} URLs'.format(i, len(found)))
i += 1
time.sleep(interval)
map(unescape, res)
return res
Древняя граббилка открытых прокси при помощи поисковых систем. Когда-то даже работала.
"PHP" / Говнокод #25889
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
<?php
$fin = fopen($argv[1], 'r');
if($fin === false) die();
$fout = fopen('dump.csv', 'w');
if($fout === false) die();
while(!feof($fin)) {
$rawline = fgets($fin);
if(!preg_match('#\[+(.*)\]+,?#', $rawline, $matches)) continue;
$fields = str_getcsv($matches[1]);
$parts = explode(')', $fields[0]);
if(count($parts) < 2) continue;
list($host, $path) = $parts;
$domains = explode(',', $host);
$dirs = explode('/', $path);
if($domains[0] === 'ru' && $domains[1] === 'mail') {
$email = $dirs[2] . '@' . $dirs[1] . '.ru';
$hash = md5($email);
fputcsv($fout, array($hash, $email));
} else if($domains[0] === 'ru' && $domains[1] === 'rambler' && $dirs[1] = 'users') {
if(strpos($dirs[2], '@') === false) {
$email = $dirs[2] . '@rambler.ru';
} else {
$email = $dirs[2];
}
$hash = md5($email);
fputcsv($fout, array($hash, $email));
} else if($domains[0] === 'ru' && $domains[1] === 'ya') {
$email = $domains[2] . '@yandex.ru';
$hash = md5($email);
fputcsv($fout, array($hash, $email));
$email = $domains[2] . '@yandex.by';
$hash = md5($email);
fputcsv($fout, array($hash, $email));
$email = $domains[2] . '@yandex.ua';
$hash = md5($email);
fputcsv($fout, array($hash, $email));
$email = $domains[2] . '@yandex.kz';
$hash = md5($email);
fputcsv($fout, array($hash, $email));
$email = $domains[2] . '@yandex.com';
$hash = md5($email);
fputcsv($fout, array($hash, $email));
$email = $domains[2] . '@ya.ru';
$hash = md5($email);
fputcsv($fout, array($hash, $email));
} else if($domains[0] === 'ru' && $domains[1] === 'yandex' && $dirs[1] = 'users') {
$email = $dirs[2] . '@yandex.ru';
$hash = md5($email);
fputcsv($fout, array($hash, $email));
$email = $dirs[2] . '@yandex.by';
$hash = md5($email);
fputcsv($fout, array($hash, $email));
$email = $dirs[2] . '@yandex.ua';
$hash = md5($email);
fputcsv($fout, array($hash, $email));
$email = $dirs[2] . '@yandex.kz';
$hash = md5($email);
fputcsv($fout, array($hash, $email));
$email = $dirs[2] . '@yandex.com';
$hash = md5($email);
fputcsv($fout, array($hash, $email));
$email = $dirs[2] . '@ya.ru';
$hash = md5($email);
fputcsv($fout, array($hash, $email));
}
}
fclose($fout);
fclose($fin);
Генератор радужных таблиц для е-мейлов.
Особенность программы в том, что «JSON» парсится как «CSV» в целях экономии оперативки.
Бухгалтерия / Говнокод #25865
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
<КоммерческаяИнформация ВерсияСхемы="2.03" ДатаФормирования="2016-08-11">
<ПакетПредложений>
<Ид>0f6acf08-0501-11e5-a1ed-000ea6f880f2#</Ид>
<Наименование>Пакет предложений</Наименование>
<ИдКаталога>0f6acf08-0501-11e5-a1ed-000ea6f880f2</ИдКаталога>
<ИдКлассификатора>0f6acf08-0501-11e5-a1ed-000ea6f880f2</ИдКлассификатора>
<ТипыЦен>
<ТипЦены>
<Ид>0f6acf0e-0501-11e5-a1ed-000ea6f880f2</Ид>
<Наименование>Rozn</Наименование>
<Валюта>UAH</Валюта>
<Налог>
<Наименование>НДС</Наименование>
<УчтеноВСумме>false</УчтеноВСумме>
</Налог>
</ТипЦены>
<ТипЦены>
<Ид>0f6acf0d-0501-11e5-a1ed-000ea6f880f2</Ид>
<Наименование>Zakup</Наименование>
<Валюта>UAH</Валюта>
<Налог>
<Наименование>НДС</Наименование>
<УчтеноВСумме>false</УчтеноВСумме>
</Налог>
</ТипЦены>
</ТипыЦен>
<Предложения>
<Предложение>
<Ид>1eb6ad86-a729-11e2-be44-000a5e5fa127</Ид>
<Артикул>0084</Артикул>
<Артикулл>00000002839</Артикулл>
<Наименование>COLORPLAST Автобус "Бусик №1"</Наименование>
<БазоваяЕдиница Код="2009" НаименованиеПолное="Штука" МеждународноеСокращение="">шт</БазоваяЕдиница>
<Цены>
<Цена>
<Представление>61,88 UAH за шт</Представление>
<ИдТипаЦены>0f6acf0e-0501-11e5-a1ed-000ea6f880f2</ИдТипаЦены>
<ЦенаЗаЕдиницу>61.88</ЦенаЗаЕдиницу>
<Валюта>UAH</Валюта>
<Единица>шт</Единица>
<Коэффициент>1</Коэффициент>
</Цена>
<Цена>
<Представление>44,2 UAH за шт</Представление>
<ИдТипаЦены>0f6acf0d-0501-11e5-a1ed-000ea6f880f2</ИдТипаЦены>
<ЦенаЗаЕдиницу>44.2</ЦенаЗаЕдиницу>
<Валюта>UAH</Валюта>
<Единица>шт</Единица>
<Коэффициент>1</Коэффициент>
</Цена>
</Цены>
<Количество>24</Количество>
</Предложение>
<СодержитТолькоИзменения>false</СодержитТолькоИзменения>
</ПакетПредложений>
</КоммерческаяИнформация>
Кресты / Говнокод #25855
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
// https://www.opennet.ru/opennews/art.shtml?num=51508
// Microsoft открыл код стандартной библиотеки С++, поставляемой в Visual Studio
// https://github.com/microsoft/STL/blob/7f65140761947af4ed7f9dfc11adee8c86c9e4c2/stl/inc/unordered_map#L712
#if _HAS_CXX17
template <class _Iter, class _Hasher = hash<_Guide_key_t<_Iter>>, class _Keyeq = equal_to<_Guide_key_t<_Iter>>,
class _Alloc = allocator<_Guide_pair_t<_Iter>>,
enable_if_t<
conjunction_v<_Is_iterator<_Iter>, _Is_hasher<_Hasher>, negation<_Is_allocator<_Keyeq>>, _Is_allocator<_Alloc>>,
int> = 0>
unordered_map(_Iter, _Iter, _Guide_size_type_t<_Alloc> = 0, _Hasher = _Hasher(), _Keyeq = _Keyeq(), _Alloc = _Alloc())
->unordered_map<_Guide_key_t<_Iter>, _Guide_val_t<_Iter>, _Hasher, _Keyeq, _Alloc>;
template <class _Kty, class _Ty, class _Hasher = hash<_Kty>, class _Keyeq = equal_to<_Kty>,
class _Alloc = allocator<pair<const _Kty, _Ty>>,
enable_if_t<conjunction_v<_Is_hasher<_Hasher>, negation<_Is_allocator<_Keyeq>>, _Is_allocator<_Alloc>>, int> = 0>
unordered_map(initializer_list<pair<_Kty, _Ty>>, _Guide_size_type_t<_Alloc> = 0, _Hasher = _Hasher(), _Keyeq = _Keyeq(),
_Alloc = _Alloc())
->unordered_map<_Kty, _Ty, _Hasher, _Keyeq, _Alloc>;
template <class _Iter, class _Alloc, enable_if_t<conjunction_v<_Is_iterator<_Iter>, _Is_allocator<_Alloc>>, int> = 0>
unordered_map(_Iter, _Iter, _Alloc)
->unordered_map<_Guide_key_t<_Iter>, _Guide_val_t<_Iter>, hash<_Guide_key_t<_Iter>>, equal_to<_Guide_key_t<_Iter>>,
_Alloc>;
template <class _Iter, class _Alloc, enable_if_t<conjunction_v<_Is_iterator<_Iter>, _Is_allocator<_Alloc>>, int> = 0>
unordered_map(_Iter, _Iter, _Guide_size_type_t<_Alloc>, _Alloc)
->unordered_map<_Guide_key_t<_Iter>, _Guide_val_t<_Iter>, hash<_Guide_key_t<_Iter>>, equal_to<_Guide_key_t<_Iter>>,
_Alloc>;
template <class _Iter, class _Hasher, class _Alloc,
enable_if_t<conjunction_v<_Is_iterator<_Iter>, _Is_hasher<_Hasher>, _Is_allocator<_Alloc>>, int> = 0>
unordered_map(_Iter, _Iter, _Guide_size_type_t<_Alloc>, _Hasher, _Alloc)
->unordered_map<_Guide_key_t<_Iter>, _Guide_val_t<_Iter>, _Hasher, equal_to<_Guide_key_t<_Iter>>, _Alloc>;
template <class _Kty, class _Ty, class _Alloc, enable_if_t<_Is_allocator<_Alloc>::value, int> = 0>
unordered_map(initializer_list<pair<_Kty, _Ty>>, _Alloc)->unordered_map<_Kty, _Ty, hash<_Kty>, equal_to<_Kty>, _Alloc>;
template <class _Kty, class _Ty, class _Alloc, enable_if_t<_Is_allocator<_Alloc>::value, int> = 0>
unordered_map(initializer_list<pair<_Kty, _Ty>>, _Guide_size_type_t<_Alloc>, _Alloc)
->unordered_map<_Kty, _Ty, hash<_Kty>, equal_to<_Kty>, _Alloc>;
template <class _Kty, class _Ty, class _Hasher, class _Alloc,
enable_if_t<conjunction_v<_Is_hasher<_Hasher>, _Is_allocator<_Alloc>>, int> = 0>
unordered_map(initializer_list<pair<_Kty, _Ty>>, _Guide_size_type_t<_Alloc>, _Hasher, _Alloc)
->unordered_map<_Kty, _Ty, _Hasher, equal_to<_Kty>, _Alloc>;
#endif // _HAS_CXX17
Ну и хуйня! Впрочем, разве могло быть иначе?
Куча говна / Говнокод #25830
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
RZ(z=tail(w)); k=AN(z)<<bplg(AT(z)); // k=length of input cell in bytes
// fill in the shape, offset, and item-count of the virtual block
AN(a)=AN(z); AK(a)+=(n-1)*k; MCISH(AS(a),AS(z),r-1); // make the virtual block look like the tail, except for the offset. We start out pointing
// to the last item; the pointer is unused in the first iteration, and we then back up to the second-last item, which is the first one we
// process as a
#define ZZPOPNEVER 1 // we mustn't TPOP after copying the result atoms, because they are reused. This will leave the memory used for type-conversions unclaimed.
// if we implement the annulment of tpop pointers, we should use that to hand-free results that have been converted
// We have to dance a bit for BOXATOP verbs, because the result comes back unboxed, but it has to be put into a box
// to be fed into the next iteration. This is still a saving, because we can use the same box to point to each successive result.
// Exception: if the reusable box gets incorporated, it is no longer reusable and must be reallocated. We will use the original z box,
// which will NEVER be virtual because it is an atom whenever BOXATOP is set, as the starting pointer to the prev boxed result
A boxedz = z; z=(state&ZZFLAGBOXATOP)?AAV(z)[0]:z; // init current pointer for the temp box; if BOXATOP, use >{:y as the first (to-be-boxed) result
#define ZZDECL
#define ZZSTARTATEND 1 // build result from bottom up
#include "result.h"
ZZPARMS(1,n,2)
#define ZZINSTALLFRAME(optr) *optr++=n;
AD * RESTRICT zz=0;
for(i=0;i<n;++i){ // loop through items, noting that the first is the tail itself
if(i){RZ(z=CALL2(f2,a,z,fs));} // apply the verb to the arguments (except the first time)
#define ZZBODY
#include "result.h"
// If BOXATOP, we need to reinstate the boxing around z for the next iteration.
if(state&ZZFLAGBOXATOP){
// If boxedz itself has been incorporated into the result, we have to reallocate it. We don't need the usual check for z==boxedz, because we know we INCORPed z into
// the boxed result, so if it was the same as boxedz, the usecount of boxedz was incremented then
if(!ACIPISOK(boxedz))GAT0(boxedz,BOX,1,0); // reallocate boxedz if needed
AAV(boxedz)[0]=z; z=boxedz; // point boxedz to the previous result, and make that the new argument for next time
}
// if result happens to be the same virtual block that we passed in, we have to clone it before we change the pointer
else if(a==z){RZ(z=virtual(z,0,AR(a))); AN(z)=AN(a); MCISH(AS(z),AS(a),r-1);}
AK(a)-=k; // back up to next input
}
A jtscansp(J jt,A w,A self,AF sf){A e,ee,x,z;B*b;I f,m,j,r,t,wr;P*wp,*zp;
wr=AR(w); r=(RANKT)jt->ranks; r=wr<r?wr:r; RESETRANK; f=wr-r;
wp=PAV(w); e=SPA(wp,e); RZ(ee=over(e,e));
if(!equ(ee,CALL1(sf,ee,self))){
RZ(x=denseit(w));
R IRS1(x,self,r,sf,z);
}else{
RZ(b=bfi(wr,SPA(wp,a),1));
if(r&&b[f]){b[f]=0; RZ(w=reaxis(ifb(wr,b),w));}
j=f; m=0; DQ(wr-f, m+=!b[j++];);
}
wp=PAV(w); e=SPA(wp,e); x=SPA(wp,x);
RZ(x=IRS1(x,self,m,sf,z));
t=maxtype(AT(e),AT(x)); RZ(e=cvt(t,e)); if(TYPESNE(t,AT(x)))RZ(x=cvt(t,x));
GASPARSE(z,STYPE(t),1,wr+!m,AS(w)); if(!m)*(wr+AS(z))=1;
zp=PAV(z);
SPB(zp,e,e);
SPB(zp,x,x);
SPB(zp,i,ca(SPA(wp,i)));
SPB(zp,a,ca(SPA(wp,a)));
R z;
} /* f/\"r or f/\."r on sparse w */
static DF1(jtsscan){A y,z;I d,f,m,n,r,t,wn,wr,*ws,wt;
RZ(w);F1PREFIP;
wt=AT(w);
if(SPARSE&wt)R scansp(w,self,jtsscan);
wn=AN(w); wr=AR(w); r=(RANKT)jt->ranks; r=wr<r?wr:r; f=wr-r; ws=AS(w); RESETRANK;
PROD(m,f,ws); PROD1(d,r-1,f+ws+1); n=r?ws[f]:1; // will not be used if WN==0, so PROD ok. n is # items along the selected rank
y=FAV(self)->fgh[0]; // y is f/
if(((n-2)|(wn-1))<0){if(vaid(FAV(y)->fgh[0])){R r?RETARG(w):reshape(over(shape(w),num[1]),w);}else R IRS1(w,self,r,jtsuffix,z);} // if empty arg, or just 1 cell in selected axis, convert to f/\ which handles the short arg
//
Кресты / Говнокод #25816
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
class BasicData {
public:
virtual ~BasicData() = default;
virtual std::vector<std::byte> bytes() const = 0;
protected:
BasicData() = default; // <-- сабж
};
Я не знаю зачем (строчка 8), но походу шоб всякие дядьки не дергали что им не можно. spoiler: Только вот так или иначе не дернут.
"PHP" / Говнокод #25800
0
- 1
https://www.php.net/manual/en/migration70.deprecated.php
> The salt option for the password_hash() function has been
deprecated to prevent developers from generating their own (usually
insecure) salts.
Какой анскилл )))
Си диез / Говнокод #25773
0
- 1
- 2
- 3
- 4
public class clsActMarriage
{
...
}
Трудности перевода из серии "Ясные печеньки".
Как вам название сущности? Буквально "Акт женитьбы".
Оглянулся на 300+ строк вокруг и понял что это на самом деле "Акт брака" в контексте товара.
Класс занимается созданием и наполнением документа о наличии брака по утвержденной форме.
Ну кто так называет? Откуда это: лень, глупость или неграмотность? Как это пропустили на ревью?
Почему не "FlawReport" не "DefectBulletin" или
на худой конец "DocumentOfUnquality" если по инглишу в школе неуд был.
Кто-то в прошлом сэкономил 1 минуту, а в настоящем это обернулось потерей 20 минут на раскуривание.
Плохие имена переменных которые нельзя изменить - боль кровавого энтерпрайза.
Ух, пичот! (╯°□°)╯︵┻━┻
Няшная / Говнокод #25766
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
case 1342:
{
if(!response) return true;
//ShowPlayerDialogEx(playerid,1342,DIALOG_STYLE_LIST, "Рыбалка","Начать / Закончить рыбалку\nНакопать червей\nПриготовить рыбу\nСъесть рыбу\nИнформация\nПомощь", "Выбор", "Выход");
switch(listitem)
{
case 0:
{
//if(!IsAtFishPlace(playerid)) return SendClientMessage(playerid,0x81DA99AA,"Вы должны находиться возле причала");
if(!GetPVarInt(playerid,"fish_began"))
{
if(!GetPVarInt(playerid,"fish_rod")) return SendClientMessage(playerid,0x81DA99AA,"У вас нет удочки");
if(!GetPVarInt(playerid,"fish_gear")) return SendClientMessage(playerid,0x81DA99AA,"У вас нет снастей");
if(!GetPVarInt(playerid,"fish_worms")) return SendClientMessage(playerid,0x81DA99AA,"У вас нет червей");
UpdateFish(playerid);
PlayerTextDrawShow(playerid,FishingText[playerid]);
SetPlayerAttachedObject(playerid, 0,18632,6,0.079376,0.037070,0.007706,181.482910,0.000000,0.000000,1.000000,1.000000,1.000000);
SetPVarInt(playerid,"fish_began",1);
DeletePVar(playerid,"fish_time");
DeletePVar(playerid,"fish_ready");
}
else
{
//if(ribachit[playerid] == 1) return SendClientMessage(playerid,0x81DA99AA,"В данный момент нельзя завершить рыбалку");
RemovePlayerAttachedObject(playerid,0);
DeletePVar(playerid,"fish_began");
DeletePVar(playerid,"fish_ready");
DeletePVar(playerid,"fish_time");
ClearAnimations(playerid);
PlayerTextDrawHide(playerid,FishingText[playerid]);
}
}
case 1:
{
if(!IsPlayerInRangeOfPoint(playerid, 25,1957.3359,206.6625,30.5146) && !IsPlayerInRangeOfPoint(playerid, 25,10.2461,-85.6648,3.1094) &&
!IsPlayerInRangeOfPoint(playerid, 25,-200.7619,6.3196,3.1094) && !IsPlayerInRangeOfPoint(playerid, 25,-1120.5344,-997.0002,129.2188) && !IsPlayerInRangeOfPoint(playerid, 25,-224.8588,-1363.7963,7.2658)) return SendClientMessage(playerid,0x81DA99AA,"Неудачное место для поиска");
if(random(2) == 1) ApplyAnimation(playerid, "BOMBER", "BOM_Plant", 6.1, 0, 0, 0, 0, 0,1), SetPVarInt(playerid,"fish_worms",GetPVarInt(playerid,"fish_worms")+10), SendClientMessage(playerid,0x81DA99AA,"Вы нашли 10 червей!"), ShowPlayerDialogEx(playerid,1342,DIALOG_STYLE_LIST, "Рыбалка","Начать / Закончить рыбалку\nНакопать червей\nПриготовить рыбу\nСъесть рыбу\nПродать рыбу\nИнформация\nПомощь", "Выбор", "Выход");
else return ApplyAnimation(playerid, "BOMBER", "BOM_Plant", 6.1, 0, 0, 0, 0, 0,1), SendClientMessage(playerid,0x81DA99AA,"Вы ничего не нашли"), ShowPlayerDialogEx(playerid,1342,DIALOG_STYLE_LIST, "Рыбалка","Начать / Закончить рыбалку\nНакопать червей\nПриготовить рыбу\nСъесть рыбу\nПродать рыбу\nИнформация\nПомощь", "Выбор", "Выход");
}
case 2:
{
if(PTEMP[playerid][pFishesPach] >= 25) return SendClientMessage(playerid,0x81DA99AA,"У вас 25 / 25 пачек рыбы");
if(PTEMP[playerid][pFishes] < 20) return SendClientMessage(playerid,0x81DA99AA,"Для создания требуется 20 кг. рыбы");
PTEMP[playerid][pFishesPach]++;
PTEMP[playerid][pFishes]-=float(20);
SendMes(playerid,0x81DA99AA,"Вы приготовили рыбу. У вас %i / 25 пачек.",PTEMP[playerid][pFishesPach]);
ShowPlayerDialogEx(playerid,1342,DIALOG_STYLE_LIST, "Рыбалка","Начать / Закончить рыбалку\nНакопать червей\nПриготовить рыбу\nСъесть рыбу\nПродать рыбу\nИнформация\nПомощь", "Выбор", "Выход");
}
case 3:
{
if(PTEMP[playerid][pFishesPach] < 1) return SendClientMessage(playerid,0x81DA99AA,"Недостаточно рыбы");
PTEMP[playerid][pFishesPach]--;
PTEMP[playerid][pSatiety]=100;
SendMes(playerid,0x81DA99AA,"«Сытость» пополнена до 100. У вас %i / 25 пачек.",PTEMP[playerid][pFishesPach]);
ShowPlayerDialogEx(playerid,1342,DIALOG_STYLE_LIST, "Рыбалка","Начать / Закончить рыбалку\nНакопать червей\nПриготовить рыбу\nСъесть рыбу\nПродать рыбу\nИнформация\nПомощь", "Выбор", "Выход");
}
case 4:
{
for(new i = 1; i <= TotalBizz; i++)
{
if(PTEMP[playerid][pFishes] < 2) return SendClientMessage(playerid,0x81DA99AA,"Недостаточно рыбы");
if (PlayerToPoint(10, playerid,BizzInfo[i][bBarX], BizzInfo[i][bBarY], BizzInfo[i][bBarZ]) && BizzInfo[i][bType] == 2 && GetPlayerVirtualWorld(playerid) == BizzInfo[i][bVirtualWorld])
{
PTEMP[playerid][pCash] +=floatround(PTEMP[playerid][pFishes])*5;
if(BizzInfo[i][bProducts]+floatround(PTEMP[playerid][pFishes]) < 2000) BizzInfo[i][bProducts]+=floatround(PTEMP[playerid][pFishes]);
else BizzInfo[i][bProducts]=2000;
format(YCMDstr,sizeof(YCMDstr), "Вы продали %.1f кг. рыбы. Выручка: %i вирт",PTEMP[playerid][pFishes],floatround(PTEMP[playerid][pFishes]));
SendClientMessage(playerid,0x81DA99AA,YCMDstr);
PTEMP[playerid][pFishes] = 0;
ShowPlayerDialogEx(playerid,1342,DIALOG_STYLE_LIST, "Рыбалка","Начать / Закончить рыбалку\nНакопать червей\nПриготовить рыбу\nСъесть рыбу\nПродать рыбу\nИнформация\nПомощь", "Выбор", "Выход");
break;
}
}
}
И так ещё 2мб кода. Кому интересно глянуть полный перл - добро пожаловать на пастбин https://pastebin.com/JCyBWUVy. Язык - обрубок C для неумеющих в управление памятью, который называется Small. Сам кусок перла - часть хайлоад проекта с 1000 игроков онлайн одновременно(http://samp-rp.ru).
"PHP" / Говнокод #25764
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
$products = $this->cart->getProducts();
foreach ($products as $product) {
$product_total = 0;
foreach ($products as $product_2) {
if ($product_2['product_id'] == $product['product_id']) {
$product_total += $product_2['quantity'];
}
}
....
}
Поечему опенкарт так странно вычисляет количество товаров в корзине? неужели нет способа изящней?
Метатабличный / Говнокод #25726
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
Есть случаи когда нужно 2 вызывать сборку помойки...
A = {x = "this is A"}
B = {f = A}
setmetatable(B, {__gc = function (o) print(o.f.x) end})
A, B = nil
collectgarbage() -- this is A
Роберту это называет Воскресение (Воскрешение)
https://stackoverflow.com/questions/28320213/why-do-we-need-to-call-luas-collectgarbage-twice
Си диез / Говнокод #25711
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
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 с использованием калокуба
Ябло (Свежее) / Говнокод #25705
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
/* 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Сделаль"
"PHP" / Говнокод #25687
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
<script>
var myMap;
var ymapsReady = function () {
myMap = new ymaps.Map('<?= $options['containerId'] ?>', {
center: [55.751574, 37.573856],
zoom: 9,
controls: []
}, {
searchControlProvider: 'yandex#search'
});
<?php
if(isset($options['centerCoordinates'])){
?>
myMap.setCenter(<?= $options['centerCoordinates'] ?>);
<?php
}elseif(isset($options['centerAddress'])){?>
ymaps.geocode('<?= $options['centerAddress'] ?>', {
results: 1
}).then(function (res) {
var firstGeoObject = res.geoObjects.get(0),
coords = firstGeoObject.geometry.getCoordinates();
myMap.setCenter(coords);
});
<?php
}
if (!empty($options['salesOffices'])) {
foreach( $options['salesOffices'] as $i => $salesOffice ) {
$address = ArrayHelper::getValue($salesOffice, 'actual_address');
?>
ymaps.geocode('<?= $address ?>', {
results: 1
}).then(function (res) {
let firstGeoObject = res.geoObjects.get(0),
coords = firstGeoObject.geometry.getCoordinates();
ymaps.geocode(coords, {
kind: 'metro',
results: 2
}).then(function (res) {
res.geoObjects.each(function (geoObject) {
$('#placemark_<?= $i ?>').find('.metro').append("<div class='metro-item'>" + geoObject.getPremise().replace(/(^|\s)метро(\s|$)/g, '').replace(/(^|\s)станция(\s|$)/g, '') + '</div>');
});
});
let customIcon = ymaps.templateLayoutFactory.createClass('<div id="placemark_icon_<?= $i ?>" class="placemark-block"><div class="placemark"></div><div class="placemark-text"><?= ArrayHelper::getValue($salesOffice, 'name') ?></div></div>');
myPlacemark[<?= $i ?>] = new ymaps.Placemark(coords,
{
balloonContent: '<?= ArrayHelper::getValue($salesOffice, 'name') ?>',
iconCaption: customIcon,
iconLayout: 'default#imageWithContent',
iconContentLayout: customIcon
}, {
hintContent: '<?= ArrayHelper::getValue($salesOffice, 'name') ?>',
iconLayout: 'default#imageWithContent',
iconImageHref: '',
iconImageOffset: [-15, -27],
iconContentLayout: customIcon
});
myMap.geoObjects.add(myPlacemark[<?= $i ?>]);
});
<?php
}
}
?>
};
setTimeout(function () {
ymaps.ready(ymapsReady);
}, <?=( isset($options['isModal']) ? 500 : 0 )?>);
</script>
Си диез / Говнокод #25672
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
private async Task CountResultAsync(IProgress<bool> progress)
{
object sync = new object();
await Task.Run(() => Parallel.For(0, _dataList.Count, i =>
{
lock (sync)
{
var index = _dataList.FindIndex(m => m.FullPath.Equals(_dataList[i].FullPath));
_dataList[index] = new GridModel()
{
FullPath = _dataList[i].FullPath,
Name = _dataList[i].Name,
Checksum = GetFileChecksum(_dataList[i].FullPath),
IsCompleted = true
};
}
}));
}
Когда кто-то пытается написать параллельный код, но что-то идет не так.
Метатабличный / Говнокод #25667
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
gr = love.graphics
win = love.window
lk = love.keyboard
require("button")
require("t")
function love.load()
local loading = {}
loading = serialize.load("records.lua")
font = gr.newFont("NotoSans.ttf",14)
mini = gr.newFont("NotoSans.ttf",10)
big = gr.newFont("NotoSans.ttf",30)
flag = nil --Flag = nil -menu, Flag = 1 -records, Flag = 2 -type game, Flag = 3 -type game standart, Flag = 4 -type game impulse, Flag = 5 -type game Invers, Flag = 6 -type game Unreal
kube = {x = 96, y = 196, colx = 8, coly = 8}
speed = 1
timer = 0
umber = {}
records = {{"Standart", 0},{"Impulse", 0},{"Invers", 0},{"Unreal", 0},{"XY diagonal", 0},{"Perpendiculars", 0}}
if loading and #loading > 0 then
for i = 1, #loading do
records[i][2] = loading[i]
end
end
score = 0
mb = {utton:create(200-font:getWidth(">Play<")/2,125,">Play<"),utton:create(200-font:getWidth(">Records<")/2,160,">Records<"),utton:create(200-font:getWidth(">Exit<")/2,195,">Exit<")}
tgb = {utton:create(200-font:getWidth(">Standart<")/2,60,">Standart<"),utton:create(200-font:getWidth(">Impulse<")/2,90,">Impulse<"),utton:create(200-font:getWidth(">Invers<")/2,120,">Invers<"),utton:create(200-font:getWidth(">Unreal<")/2,150,">Unreal<"),utton:create(200-font:getWidth(">XY diagonal<")/2,180,">XY diagonal<"),utton:create(200-font:getWidth(">Perpendiculars<")/2,210,">Perpendiculars<")}
back = utton:create(200-font:getWidth(" >Back< ")/2,300," >Back< ")
r = utton:create(200-font:getWidth(" >Restart< ")/2,250," >Restart< ")
end
local function restart()
kube = {x = 96, y = 196, colx = 8, coly = 8, speed = 350}
speed = 1
timer = 0
umber = {}
score = 0
toch = nil
end
My первый игра сделаная на love2d. Аж всплакнул.
Си диез / Говнокод #25657
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
var type = shape switch
{
Rectangle((0, 0), 0, 0) => "Point at origin",
Circle((0, 0), _) => "Circle at origin",
Rectangle(_, var w, var h) when w == h => "Square",
Rectangle((var x, var y), var w, var h) =>
$"A {w}×{h} rectangle at ({x},{y})",
_ => "something else"
};
https://habr.com/ru/post/454446/#comment_20232586
Какой бароп )))
Кресты / Говнокод #25634
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
std::queue<char *> outQueue2;
std::lock_guard<std::mutex> lock(mtx);
mtx.lock();
if (outQueue.size() > 0) {
std::swap(outQueue2, outQueue);
outQueue = {};
}
std::lock_guard<std::mutex> unlock(mtx);
со слов автора:
у меня 2 исходящие очереди
в одну соседний поток ложит
потом приходит тик
врубает симафор
копирует по-бырому очередь
и чистит её
дальше отпускает поток
чтобы не ждать
пока всё отправится
и спокойно в соседнем потоке уже начинает BYtestream...
и всё такое
разьве не так делают в домах парижу?
Змея / Говнокод #25621
0
- 1
- 2
- 3
- 4
def test_wash_table_column_name(self):
testcase_ok = "Programmer"
testcase_injection = "' OR ''='"
self.assertEqual(dbquery.real_escape_string(testcase_ok), testcase_ok)
"PHP" / Говнокод #25607
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
<?php
/**
* $URL: svn://svn.subversion.ru/usr/local/svn/mzz/trunk/system/forms/validators/formHostnameRule.php $
*
* MZZ Content Management System (c) 2005-2007
* Website : http://www.mzz.ru
*
* This program is free software and released under
* the GNU/GPL License (See /docs/GPL.txt).
*
* @link http://www.mzz.ru
* @version $Id: formHostnameRule.php 3864 2009-10-21 04:50:04Z zerkms $
*/
/**
* formHostnameRule: правило, проверяющее имя хоста
*
* @package system
* @subpackage forms
* @version 0.1.1
*/
class formHostnameRule extends formAbstractRule
{
private $validTlds = array(
'ac', 'ad', 'ae', 'aero', 'af', 'ag', 'ai', 'al', 'am', 'an', 'ao',
'aq', 'ar', 'arpa', 'as', 'at', 'au', 'aw', 'ax', 'az', 'ba', 'bb',
'bd', 'be', 'bf', 'bg', 'bh', 'bi', 'biz', 'bj', 'bm', 'bn', 'bo',
'br', 'bs', 'bt', 'bv', 'bw', 'by', 'bz', 'ca', 'cat', 'cc', 'cd',
'cf', 'cg', 'ch', 'ci', 'ck', 'cl', 'cm', 'cn', 'co', 'com', 'coop',
'cr', 'cu', 'cv', 'cx', 'cy', 'cz', 'de', 'dj', 'dk', 'dm', 'do',
'dz', 'ec', 'edu', 'ee', 'eg', 'er', 'es', 'et', 'eu', 'fi', 'fj',
'fk', 'fm', 'fo', 'fr', 'ga', 'gb', 'gd', 'ge', 'gf', 'gg', 'gh',
'gi', 'gl', 'gm', 'gn', 'gov', 'gp', 'gq', 'gr', 'gs', 'gt', 'gu',
'gw', 'gy', 'hk', 'hm', 'hn', 'hr', 'ht', 'hu', 'id', 'ie', 'il',
'im', 'in', 'info', 'int', 'io', 'iq', 'ir', 'is', 'it', 'je', 'jm',
'jo', 'jobs', 'jp', 'ke', 'kg', 'kh', 'ki', 'km', 'kn', 'kr', 'kw',
'ky', 'kz', 'la', 'lb', 'lc', 'li', 'lk', 'lr', 'ls', 'lt', 'lu',
'lv', 'ly', 'ma', 'mc', 'md', 'me', 'mg', 'mh', 'mil', 'mk', 'ml', 'mm',
'mn', 'mo', 'mobi', 'mp', 'mq', 'mr', 'ms', 'mt', 'mu', 'museum', 'mv',
'mw', 'mx', 'my', 'mz', 'na', 'name', 'nc', 'ne', 'net', 'nf', 'ng',
'ni', 'nl', 'no', 'np', 'nr', 'nu', 'nz', 'om', 'org', 'pa', 'pe',
'pf', 'pg', 'ph', 'pk', 'pl', 'pm', 'pn', 'pr', 'pro', 'ps', 'pt',
'pw', 'py', 'qa', 're', 'ro', 'ru', 'rw', 'sa', 'sb', 'sc', 'sd',
'se', 'sg', 'sh', 'si', 'sj', 'sk', 'sl', 'sm', 'sn', 'so', 'sr',
'st', 'su', 'sv', 'sy', 'sz', 'tc', 'td', 'tf', 'tg', 'th', 'tj',
'tk', 'tl', 'tm', 'tn', 'to', 'tp', 'tr', 'travel', 'tt', 'tv', 'tw',
'tz', 'ua', 'ug', 'uk', 'um', 'us', 'uy', 'uz', 'va', 'vc', 've',
'vg', 'vi', 'vn', 'vu', 'wf', 'ws', 'ye', 'yt', 'yu', 'za', 'zm',
'zw'
);
protected function _validate($value)
{
if (preg_match('#^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$#', $value)) {
return true;
}
$domainParts = explode('.', $value);
if (sizeof($domainParts) < 2) {
return false;
}
if (strlen($value) > 254 || strlen($value) < 4) {
return false;
}
$tld = array_pop($domainParts);
if (!in_array(strtolower($tld), $this->validTlds)) {
return false;
}
$validChars = 'a-z0-9\-';
foreach ($domainParts as $part) {
if (strpos($part, '-') === 0 || (strlen($part) > 3 && strpos($part, '--', 2) === 2) || substr($part, -1) === '-') {
return false;
}
if (!preg_match('#^[' . $validChars . ']{1,63}$#i', $part)) {
return false;
}
}
return true;
}
}
?>
Домены валидировали-валидировали, да недовалидировали.
https://github.com/wiistriker/govnokod_legacy/blob/master/mzz/system/forms/validators/formHostnameRule.php
Куча говна / Говнокод #25560
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
var v: List[Int?] = <a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="470b2e343307">[email protected]</a>{1, 2, none, 4};
//Chained - <a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="98d4f1ebecd8">[email protected]</a>{1, 4, 16}
v->filter(fn(x) => x != none)->map[Int](fn(x) => x*x)
//Piped none filter - <a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="bff3d6cccbff">[email protected]</a>{1, 4, 16}
v |> filter(fn(x) => x != none) |> map[Int](fn(x) => x*x)
//Piped with noneable filter - <a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="74381d070034">[email protected]</a>{1, 4, 16}
v |??> map[Int](fn(x) => x*x)
//Piped with none to result - <a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="206c49535460">[email protected]</a>{1, 4, none, 16}
v |?> map[Int](fn(x) => x*x)
// 5.15 Merge
entity Baz {
field f: Int;
field g: Int;
field k: Bool
}
var t = @[ 1, 2, 3 ];
t<+(@[5]) //@[1, 2, 3, 5]
t<+(@[3, 5]) //@[1, 2, 3, 3, 5]
var r = @{ f=1, g=2, k=true };
r<+(@{g=5}) //@{f=1, g=5, k=true}
r<+(@{g=3, k=false}) //@{f=1, g=3, k=false}
r<+(@{g=5, h=0) //@{f=1, g=5, k=true, h=0}
var e = <a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="eba98a91ab">[email protected]</a>{ f=1, g=2, k=true };
e<+(@{g=5}) //@{f=1, g=5, k=true}
e<+(@{g=3, k=false}) //@{f=1, g=3, k=false}
e<+(@{g=5, h=0) //error field not defined
«Буквально несколько дней назад компания Microsoft представила публике
новый язык программирования. Языку дали название Bosque. Главная миссия
дизайна языка — чтобы он был прост и понятен как для человека, так и
для компьютера»
А вот кому новый, простой и понятный язык? Содержание спецсимволов всего на 54% превосходит таковое у «C++»!
h/448814
https://github.com/Microsoft/BosqueLanguage/blob/master/docs/language/overview.md
Кресты / Говнокод #25558
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
https://habr.com/ru/article/448466/
*/
А последние пару лет набирает популярность boost.hana. Это boost.fusion,
но с constexpr'ом и лямбдами. Автор hana, Луис Дионе (Louis Dionne),
используя на полную мощь все возможности новых стандартов, в некотором
смысле очеловечил метапрограммирование. С помощью hana всяческие
манипуляции с типами, их кортежами, отображениями, а также компайл- и
рантайм-работа с ними обрели практически человеческое лицо и читаемый
вид. Ну, с поправкой на синтаксис C++, разумеется. Вот, например, как выглядит
универсальный сериализатор структур, написанный с помощью hana:
*/
// 1. Give introspection capabilities to 'Person'
struct Person {
BOOST_HANA_DEFINE_STRUCT(Person,
(std::string, name),
(int, age)
);
};
// 2. Write a generic serializer (bear with std::ostream for the example)
auto serialize = [](std::ostream& os, auto const& object) {
hana::for_each(hana::members(object), [&](auto member) {
os << member << std::endl;
});
};
// 3. Use it
Person john{"John", 30};
serialize(std::cout, john);
/*
Ну да, структуры приходится описывать особым образом. А кому сейчас легко?
И тут хочется также отметить библиотеку tinyrefl за авторством Manu Sánchez
(Мануэля Санчеса). Довольно неплохая попытка принести в мир C++-разработки
статическую рефлексию без расширения компилятора. Для своей работы библиотека
требует стороннюю утилиту (cppast), но зато предоставляет довольно удобный доступ
к информации о структурах, которую можно использовать в процессе разработки
программы. Преимущество этой библиотеки (по сравнению с другими) в том, что для
работы с ней не надо использовать «птичий язык», а элементы структур (как и сами
структуры) можно произвольным образом атрибутировать прямо в исходном коде:
*/
struct [[serializable]] Person {
std::string name;
int age;
};
template<typename Class>
auto serialize(std::ostream& os, Class&& object) -> std::enable_if_t<
tinyrefl::has_metadata<std::decay_t<Class>>() &&
tinyrefl::has_attribute<std::decay_t<Class>>("interesting"),
std::ostream&>
{
tinyrefl::visit_member_variables(object, [&os](const auto& /* name */, const auto& var) {
os << var << std::endl;
});
return equal;
}
/*
Таких примеров можно привести ещё много (или найти на гитхабе или гитлабе).
Объединяет все эти библиотеки и инструменты одна особенность: значительно
облегчая жизнь своим пользователям, они имеют такую реализацию, что остаётся
лишь предполагать, какое количество страданий испытали их разработчики. Достаточно
заглянуть в реализацию, увидеть забор из ifdef'ов и угловых скобок — и всё понятно.
Нередко эти реализации делаются на грани возможностей компиляторов. workaround'ы
банальных ошибок (или особенностей реализации языка конкретной версии конкретного
компилятора с конкретными флагами) здорово раздувают их код. Желание поддерживать
несколько стандартов сразу заставляет придумывать зубодробильные конструкции.
Безусловно, простая попытка реализовать что-нибудь подобное здорово поднимает уровень
владения языком (иногда — и самооценку). Но в какой-то момент, после многочасовой возни
с очередной ошибкой, или непроходящим тестом, или крэшем компилятора руки опускаются,
хочется плюнуть и бросить, ибо силы бороться иссякают.
*/
Именно поэтому я за гомоиконность
Куча говна / Говнокод #25540
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
# это комментарий #
COMMENT это понятно что COMMENT
CO это тоже ко-ко-коментарий CO
CO функция принимает 3 параметра типа INT и возвращает ссылку на массив CO
PROC range = (INT start, end, step)REF[]INT : (
INT length = ABS((end - start) % step);
NEW [0 : length - 1]INT result; CO массив в куче CO
CO LWB —– нижний индекс массива, UPB —– верхний CO
FOR i FROM LWB result TO UPB result
DO
result[i] := start + i * step
OD;
result CO функции возвращают результат последнего вычесленного выражения CO
);
CO можно определять свои операторы CO
OP RANGE = (INT start, end)REF[]INT: range(start, end, (start < end | 1 | -1));
PRIO RANGE = 5; CO для бинарных операторов нужно задать приоритет, у сложения/вычитания приоритет = 6 CO
CO для операторов возможна перегрузка по количеству и типу аргументов CO
OP RANGE = (INT end)REF[]INT: 0 RANGE end;
OP ACCUM = ([]INT x, PROC(INT,INT)INT f)INT : (
INT length = UPB x - LWB x;
IF length = 0 THEN
1
ELIF length = 1 THEN
x[LWB x]
ELSE
INT result;
result := x[LWB x];
FOR i FROM LWB x + 1 TO UPB x
DO
result := f(result, x[i])
OD;
result
FI
);
PRIO ACCUM = 5;
CO правый операнд у ACCUM —– лямбда CO
OP ! = (INT x)INT: 1 RANGE x + 1 ACCUM ((INT x, y)INT: x * y);
printf(($g(0), "! = ", g(0), l$, 7, !7));
OP MAP = ([]INT x, PROC(INT)INT f)REF[]INT : (
NEW [LWB x : UPB x]INT result;
FOR i FROM LWB x TO UPB x
DO
result[i] := f(x[i])
OD;
result
);
PRIO MAP = 5;
PROC pow = (INT x, n)INT: x ^ n;
CO каррирование CO
printf(($g(0), " "$, RANGE 10 MAP pow(2, )));
print(new line);
OP FOREACH = (REF[]INT x, PROC(REF INT)VOID f)VOID : (
FOR i FROM LWB x TO UPB x
DO
f(x[i])
OD
);
PRIO FOREACH = 5;
REF[]INT a = -5 RANGE 6;
a FOREACH ((REF INT x)VOID:
x := x ^ 2
);
printf(($g(0), " "$, a))
https://tio.run/##jVVdbxJBFH3nV1xbTXZ1iaBpNVQfkFIlKV2C1T40mJBIkYRgUzFdEx@wtRpTPx70hyCWlkLBvzDzF/wj9dw7s0uBmgiF7syce@fOuecM5Xr1ZX3xbvX8fJ70F72nRqT6aqTO8O6qISbauqV66pTmYxk/n8@urUe438AN9TcMhhjqjzJrQQCHOP5Sx6oriePR18wGGT8mUe/1PhL29QfV09@wiywP8TlTbdXVe3Sbt@aoNufQe/zEu/R4mnKoUPVIdbDFierwov5kI/U7vA/VANn3CTnbxEl5FsEdrqBQ9DO0U25UK3SfHM71qlneaXpUaTz38FzZdovZlc0Sr6TIiRFe/FyvNKrNF4hJP3jsOABT3ES6dM2ELQl2LbtBmwmE2oA4JSXXTuXV63pzCSVMlsR/KFZ/BH8oj1MAsrrxgP60fvxpfSdh5li@T0mIOgKvff1uIo9qe/SkMA7qgI6WPrBhNvGKX6QarRT9vGxgSqJ1XyLNSHDLBs4vM7tZK1Hqvjkv3UCO63JkQfnL5uA221SDL2mU/sqNauEQJ8AN9GeRyJ7IDYcZYOEI4V31izXY0YfMjV0YshLHC6yQY5lmJeGUaELMMDwSzoAbicC6wtqAxaw/QyZSVE9WmSkuALu39CFn8QtUTK89zM4qJNJGymjIuSgeM6B7PKK3lMQnnnRRUqGY86OMC0YDR1wMqZ/SUdb6EOc5mCkIYwhkCKLscU5w5CNexTGsdRjWAxwG8Ai6F65GY2JuWhIZ07ZczYaitMXQomF1lxZj2hky3CaLQb/A3z6W@mbSXjQDbCANRI4Ou7JnrczPfPBfCAqvipEx6XQDJplP2EXMot3ApjOZJ3nGGtsGHrHLOdLDx@W5LfefhmbxB/ApWyIwWs6tjJcTtP4ouxYZIilP2dWLkOQkJNiUVCWLfJyNVi5cBFMOY3uFceO1KcMG8F4y9GsQoS7YdTLhlmOePaSuldwIFVp2jDbXQy4WijVkdMH66bdYDTLiOyhSBd9FLDiDDq8eKAf9/Mkqtb28EvYxcKWBSdtAcx4T7Ti2dW8MJsAd84btvL1TazS3HOdq1Um4Hs1xsjmPzKh@1aM7Hl25wzbjrfLpwqVCsCKYudrlujbcpgytpekmzTRhogH/uiu3nDHnk1dkRLKplSmWH6Xtl7sRTx41QhqeUcM2oc92EcOKE42Xzc/GNEk0B2IMycmEbITszi2PXCZK0E6jskv1WqNimcMxs@nMIy4hYikkEBOsXfepn1sGi/IvZPC/6ZlkJGJhvC8zEW1dxkR8wZ5hcSlWjoBOWA7kxJWkJGMgDgJbt2KXqUYIKbvu@flfДавайте течь от "Algol-68".
Кресты / Говнокод #25498
0
- 1
https://en.cppreference.com/w/cpp/language/lambda
> Explanation
> > <tparams>
> Like in a template declaration, the template parameter list may be
followed by an optional requires-clause, which specifies the constraints
on the template arguments.
> optional requires-clause
небязательные обязательные пункты.
Переводил почти час.
Сборный / Говнокод #25491
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
Решил я значит от нехуй делать нарисовать свой пиксельный шрифт
(кому интересно - вот промежуточный результат https://i.imgur.com/2vIJoio.png)
и решил посмотреть, какие там вообще бывают под GNU/Linux редакторы для
шрифтов, и какие вообще шрифты бывают
Так вот, нашел я вот такую хрень http://mensis.sourceforge.net/overview.html
Вижу, что там какой-то ассемблер http://mensis.sourceforge.net/ttfcv-all.png или
байткод ебаный. Погуглил по этим говноинструкциям со скриншота:
Оказывается в TTF шрифтах есть встроенный тьюринг-полный ЯП, используемый
для всяких там подсказок, типа "куда дорисовать пиксель вот при таком-то условии"
и прочая подобная херота
А еще в шиндошс (до Windows 10) этот шрифтоговнобайткод интерпретировался в
пространстве ядра (ну тупыыые..) и разумеется таким образом удалось винду хакнуть
https://security.stackexchange.com/a/91395 (разве могло быть иначе?)
про шрифтоговнобайткод можно почитать например тут
https://docs.microsoft.com/en-us/typography/opentype/spec/tt_instructions
https://developer.apple.com/fonts/TrueType-Reference-Manual/RM05/Chap5.html#instructions
На кой вообще хер делать тьюринг-полный язык для отрисовки глифов? Ну и раз вы его уже
делаете, то заебошьте там что-нибудь на основе LLVM байткода, чтоб JIT, или вообще все глифы
сразу компилировать в натив, или даже (чего мелочиться) под GPU. Типа мы хотим
нарисовать какую-то букву с размером 10 - вызываем функцию
drawA(10, bufptr, x, y); - рисуется десятого размера буква в буфер. И никаких непонятных
говнобайткодов. Четко и дерзко!
Си диез / Говнокод #25485
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
private bool IsOsTurn()
{
if (turn.Text.Equals(oString))
return true;
return false;
}
private bool ADiagonalIsSame()
{
if (LeftToRightDiagonalIsSame()) { return true; }
if (RightToLeftDiagonalIsSame()) { return true; }
return false;
}
private bool IsAWin()
{
if (ARowIsSame() || AColumnIsSame() || ADiagonalIsSame())
return true;
else return false;
}
Взято из кода "крестики-нолики", работающем через DataGridView // <- да, это изврат!
Такое чувство, что автор сука не умеет работать с булевыми значениями.
Удивлен, что не встретил что-то вроде:
if (turn.Text.Equals(oString) == true)
Куча говна / Говнокод #25461
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
Very strange dream which was partly cast by debate between supporters and opponents of OOP dreamed me...
In a dream I saw a church porch on which the bald little man similar to Solovyov acted. He very much worried, every minute wiping a scarf a face and the top.
Misters! - at last he declared. Today historical day! We will listen to debate of the parties, in the person of the master of OOP and the adherent of functional style.
Storm of applause was distributed, and allegorical figures stepped on the stage. The old man in a magnificent gold cloak and a wreath, the adherent of a funktsionalshchina - the reserved young man who is very elegantly dressed appeared the master of OOP a severe look.
Except them two, I rose by a church porch as well the young man in a hunting hat, with a piece of cervine wool instead of a feather.
- Tomasz Gryshtar, he was presented, and took leave. He strongly burred, but was perfectly polite, nearly falling from feet from complaisance.
The compere rubbed hands. So misters, we will pass to business. Today we will lift from an ocean floor (joke) in this world merits and demerits of both paradigms and we will be helped with it by our friend Thomas. Let in dispute the truth will open.
- OOP isn't necessary, - the Adherent inconsiderately blurted out.
- Oh, this very bold statement! - the compere laughed.
The master densely reddened, but didn't utter words.
- What you on it will tell, the sir?
The master sat with a dead-pan. The compere, without having waited for the answer, I transferred the right of the word to Thomas
- I believe that our friend-assemblershchik too has the right to express.
That got a graceful gold shkatulochka because of a bosom and, having started the handle, opened her. The gentle melody was distributed.
The master at last interrupted a silence vow:
- And what was become with your "Titan"?
- I... E-e-e. I lost source codes...
- Very regrettably. But you kept the compiler?
- "Fasm", sir.
- Misters, misters! We after all gathered for the sake of an important issue, and still anything efficient didn't find.
- OOP irrationally uses memory, - the adherent again interfered.
At these words Master the loud scratch swayed slightly, distributed, his cloak was lifted up. It appeared that he sits in a wheelchair.
Thomas again got a shkatulochka, it is obvious to relieve the tension.
- OOP teaches bad style. The adherent took out a rosette from a buttonhole and began to smell her. He had an indifferent person.
The master sighed, inclined the head, but answered nothing.
Thomas again got a shkatulochka.
The compere wiped sweat from a forehead and declared: - Misters, it seems to me, we in vain spend time.
Shkatulochka suddenly was mistaken. Thomas lifted her over the head, shook - and about horror! - the thunderous crash was distributed and in a flash Thomas was buried under a heap of gears, springs and cranked shaft. The compere and the Master hurried to him to the aid. The adherent kept coolness, without having moved even a finger.
- Debate is ended. The compere clapped and quitted the stage. It was visible that he is deeply vulnerable.
The person in a frock coat approached the adherent and patted him shoulder. The young man squealed and discontentedly turned back.
It appeared that it is the semi-idiot, obviously, the patient with a Down syndrome. The trustee handed him threads from red and yellow balloons, why the infantile face of the young man lit up with pleasure. They slowly went on a footpath...
Tomasz and Metr long looked to him following.
- How you think, the colleague, whether asmovstavka in language of high level are pertinent?
- Why not?
- I am glad that you so consider.
Вариант перевода одного из рассказов c помощью translate.ru
ЙажаСценарий / Говнокод #25446
0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
// http://pacipfs2.antizapret.prostovpn.org/proxy-ssl.js
function FindProxyForURL(url, host) {
if (d_ipaddr.length < 10) return "DIRECT"; // list is broken
if (!az_initialized) {
var prev_ipval = 0;
for (var i = 0; i < d_ipaddr.length; i++) {
d_ipaddr[i] = parseInt(d_ipaddr[i], 36) + prev_ipval;
prev_ipval = d_ipaddr[i];
}
for (var i = 0; i < special.length; i++) {
special[i][1] = nmfc(special[i][1]);
}
az_initialized = 1;
}
var shost;
if (/\.(ru|co|cu|com|info|net|org|gov|edu|int|mil|biz|pp|ne|msk|spb|nnov|od|in|ho|cc|dn|i|tut|v|dp|sl|ddns|dyndns|livejournal|herokuapp|azurewebsites|cloudfront|ucoz|3dn|nov|linode|amazonaws|sl-reverse|kiev)\.[^.]+$/.test(host))
shost = host.replace(/(.+)\.([^.]+\.[^.]+\.[^.]+$)/, "$2");
else
shost = host.replace(/(.+)\.([^.]+\.[^.]+$)/, "$2");
// Script optimization, see https://bugs.chromium.org/p/chromium/issues/detail?id=678022
for (var k in dn) {
var r = new RegExp('\\.'+k+'$');
if (r.test(shost)) {shost = shost.replace(r, dn[k]); break;}
}
var curarr;
if (/^[a-d]/.test(shost)) curarr = d_ad;
else if (/^[e-h]/.test(shost)) curarr = d_eh;
else if (/^[i-l]/.test(shost)) curarr = d_il;
else if (/^[m-p]/.test(shost)) curarr = d_mp;
else if (/^[q-t]/.test(shost)) curarr = d_qt;
else if (/^[u-z]/.test(shost)) curarr = d_uz;
else curarr = d_other;
var oip = dnsResolve(host);
var iphex = "";
if (oip) {
iphex = oip.toString().split(".");
iphex = parseInt(iphex[3]) + parseInt(iphex[2])*256 + parseInt(iphex[1])*65536 + parseInt(iphex[0])*16777216;
}
var yip = 0;
if (iphex) {
for (var i = 0; i < d_ipaddr.length; i++) {
if (iphex === d_ipaddr[i]) {yip = 1; break;}
}
}
for (var i = 0; i < curarr.length; i++) {
if (yip === 1 || shost === curarr[i]) {
return "HTTPS proxy.antizapret.prostovpn.org:3143; PROXY proxy.antizapret.prostovpn.org:3128; DIRECT";
}
}
for (var i = 0; i < special.length; i++) {
if (isInNet(oip, special[i][0], special[i][1])) {return "PROXY CCAHIHA.antizapret.prostovpn.org:3128; DIRECT;";}
}
return "DIRECT";
}
CCAHIHA
-
Си / Говнокод #26864
0
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
#include <stdio.h> #include <stdlib.h> #define SPLICE(a,b) SPLICE_1(a,b) #define SPLICE_1(a,b) SPLICE_2(a,b) #define SPLICE_2(a,b) a##b #define PP_ARG_N( \ _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, \ _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, \ _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, \ _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, \ _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, \ _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, \ _61, _62, _63, N, ...) N /* Note 63 is removed */ #define PP_RSEQ_N() \ 62, 61, 60, \ 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, \ 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, \ 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, \ 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, \ 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, \ 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 #define PP_NARG_(...) PP_ARG_N(__VA_ARGS__) /* Note dummy first argument _ and ##__VA_ARGS__ instead of __VA_ARGS__ */ #define PP_NARG(...) PP_NARG_(_, ##__VA_ARGS__, PP_RSEQ_N()) #define PRINT_1(a1) \ printf(a1); #define PRINT_2(a1, b1) \ printf(a1, b1); #define PRINT_3(a1, b1, a2) \ PRINT_2(a1, b1); PRINT_1(a2) #define PRINT_4(a1, b1, a2, b2) \ PRINT_2(a1, b1); PRINT_2(a2, b2); #define PRINT_5(a1, b1, a2, b2, a3) \ PRINT_4(a1, b1, a2, b2); PRINT_1(a3); #define PRINT_6(a1, b1, a2, b2, a3, b3) \ PRINT_4(a1, b1, a2, b2); PRINT_2(a3, b3) #define PRINT_7(a1, b1, a2, b2, a3, b3, a4) \ PRINT_6(a1, b1, a2, b2, a3, b3); PRINT_1(a4) #define PRINT_8(a1, b1, a2, b2, a3, b3, a4, b4) \ PRINT_6(a1, b1, a2, b2, a3, b3); PRINT_2(a4, b4); //..... дальше лень ... #define PRINTS_(N, ...) \ SPLICE(PRINT_, N)(__VA_ARGS__) #define PRINTS(...) \ PRINTS_(PP_NARG(__VA_ARGS__), __VA_ARGS__) int main(void) { PRINTS("10 = %d", 10, "; 3 + 3 = %d", 3+3, "\n" ); return EXIT_SUCCESS; }Имитация крестопарашного cout через препроцессор
https://wandbox.org/permlink/px4DCDSCGfUlbcFLКомментарии (6) -
Си / Говнокод #26848
0
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
#include <stdio.h> #include <stddef.h> #include <stdlib.h> #include <stdint.h> #define GEN_NAME(type) struct myvec_ ## type #define MK_VEC_TYPE(type) GEN_NAME(type) {size_t sz; type arr[];}; #define MK_VEC_NEW(type) \ GEN_NAME(type) *myvec_new_ ## type (size_t num) \ { \ struct myvec_ ## type *tmp = malloc(sizeof(type) * num); \ if (tmp == NULL) \ { \ return NULL; \ } \ tmp->sz = num; \ return tmp; \ } #define MK_VEC_DELETE(type) \ void myvec_delete_ ## type (GEN_NAME(type) *v) \ { \ free(v); \ } #define MK_VEC_GET(type) \ type myvec_get_ ## type (GEN_NAME(type) *v, size_t pos) \ { \ if(pos < v->sz) \ { \ return v->arr[pos]; \ } \ else \ { \ exit(-1); \ } \ } // исключения - говно #define MK_VEC_SET(type) \ void myvec_set_ ## type (GEN_NAME(type) *v, size_t pos, type val) \ { \ if(pos < v->sz) \ { \ v->arr[pos] = val; \ } \ else \ { \ exit(-1); \ } \ } #define MK_VEC_GETSZ(type) \ size_t myvec_getsz_ ## type (GEN_NAME(type) v) \ { \ return v.sz; \ } #define MK_SHIT(type) \ MK_VEC_TYPE(type) \ MK_VEC_NEW(type) \ MK_VEC_DELETE(type) \ MK_VEC_GET(type) \ MK_VEC_GETSZ(type) \ MK_VEC_SET(type) MK_SHIT(int) MK_SHIT(float) MK_SHIT(double) #define test(a) _Generic(a, int : 1, GEN_NAME(int) : 2, default : 0) #define MTD_C(val,mtd) _Generic( val,\ GEN_NAME(int): myvec_ ## mtd ##_int, \ GEN_NAME(float): myvec_ ## mtd ##_float, \ GEN_NAME(double): myvec_ ## mtd ##_double, \ default: 0) // хуй там! #define GET(vec,pos) MTD_C(vec,get)(&vec,pos) #define SET(vec, pos, val) MTD_C(vec,set)(&vec,pos,val) #define GETSZ(vec) MTD_C(vec,getsz)(vec) int main(void) { GEN_NAME(int) *vec1 = myvec_new_int(10); SET(*vec1, 0, 123); size_t size = GETSZ(*vec1); printf("vector size is %zu\n", size); printf("vector vec1[0] is %d\n", GET(*vec1,0)); return 0; }Какое ООП)))
Комментарии (3) -
Python / Говнокод #26778
0
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
# https://www.opennet.ru/opennews/art.shtml?num=53248 # Гвидо ван Россум предложил включить в Python операторы для сопоставления с образцом # Отмечается, что предложенные операторы позволят улучшить читаемость кода, # упростят сопоставление произвольных Python-объектов и отладку, а также повысят # надёжность кода благодаря возможности расширенной статической проверки типов. def http_error(status): match status: case 400: return "Bad request" case 401|403|404: return "Not allowed" case 418: return "I'm a teapot" case _: return "Something else" # Например, возможна распаковка объектов, кортежей, списков и произвольных последовательностей # для привязки переменных на основе имеющихся значений. Допускается определение вложенных # шаблонов, использование в шаблоне дополнительных условий "if", применение масок ("[x, y, *rest]"), # маппинга связок ключ/значение (например, {"bandwidth": b, "latency": l} для извлечения значений # "bandwidth" и "latency" и словаря), извлечения подшаблонов (оператор ":="), использования именованных # констант в шаблоне. В классах возможна настройка поведения при сопоставлении при помощи метода "__match__()". from dataclasses import dataclass @dataclass class Point: x: int y: int def whereis(point): match point: case Point(0, 0): print("Origin") case Point(0, y): print(f"Y={y}") case Point(x, 0): print(f"X={x}") case Point(): print("Somewhere else") case _: print("Not a point") match point: case Point(x, y) if x == y: print(f"Y=X at {x}") case Point(x, y): print(f"Not on the diagonal") RED, GREEN, BLUE = 0, 1, 2 match color: case .RED: print("I see red!") case .GREEN: print("Grass is green") case .BLU E: print("I'm feeling the blues :(")Какой прогресс)))
Ждем когда добавят цикл for как в сишкеКомментарии (82) -
Си / Говнокод #26767
+1
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
// https://habr.com/ru/company/oleg-bunin/blog/493242/ // Алгоритмы быстрой обработки HTTP-строк // ..... // Как устроен парсер? Мы, как nginx, определяем массив байт и по нему // проверяем входные данные — это пролог функции. Здесь мы работаем // только с короткими сроками, используем likely, потому что branch misprediction // для коротких строк болезненнее, чем для длинных. Выносим этот код наверх. // У нас есть ограничение в 4 из-за последней строчки — мы должны написать // достаточно мощное условие. Если будем обрабатывать больше 4 байт, то условие // будет тяжелее, а код медленнее. static const unsigned char uri_a[] __attribute__((aligned(64))) = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ... // Branch misprediction is more crucial for short strings if (likely(len <= 4)) { switch (len) { case 0: return 0; case 4: c3 = uri_a[s[3]]; // fall through to process other chars case 3: c2 = uri_a[s[2]]; case 2: c1 = uri_a[s[1]]; case 1: c0 = uri_a[s[0]]; } return (c0 & c1) == 0 ? c0 : 2 + (c2 ? c2 + c3 : 0); } // Основная петля и большой хвост. В основном цикле обработки мы делим // данные: если они достаточно длинные, обрабатываем по 128, 64, 32 или // по 16 байт. Имеет смысл обрабатывать по 128: мы параллельно используем // несколько каналов процессора (несколько pipeline) и суперскалярность процессора. for ( ; unlikely(s + 128 <= end); s += 128) { n = match_symbols_mask128_c(__C.URI_BM, s); if (n < 128) return s - (unsigned char *)str + n; } if (unlikely(s + 64 <= end)) { n = match_symbols_mask64_c(__C.URI_BM, s); if (n < 64) return s - (unsigned char *)str + n; s += 64; } if (unlikely(s + 32 <= end)) { n = match_symbols_mask32_c(__C.URI_BM, s); if (n < 32) return s - (unsigned char *)str + n; s += 32; } if (unlikely(s + 16 <= end)) { n = match_symbols_mask16_c(__C.URI_BM128, s); if (n < 16) return s - (unsigned char *)str + n; s += 16; }... пиздец. Там еще в той статье пишут, что CloudFlare через AVX2 какое-то говно оптимизируют в говнопаринге http запросов.
Поэтому я за бинарную сериализацию, без всей этой хуйни человекочитаемойКомментарии (312) -
1C / Говнокод #26734
+1
- 1
- 2
https://infostart.ru/public/72175/ 1C.Net:Предприятие + DirectX = 3D-графика на формах 1С:ПредприятиеЗачем? Зачем?
Комментарии (15) -
C++ / Говнокод #26703
+1
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
// https://godbolt.org/z/QAR_nT // https://govnokod.ru/26701#comment550329 #include <cstddef> #include <string> #include <cassert> struct assert_failure { explicit assert_failure(const char *sz) { std::fprintf(stderr, "Assertion failure: %s\n", sz); std::quick_exit(EXIT_FAILURE); } }; // эта херня не совсем корректно будет обрабатывать всякую хрень вроде ", , , " - оно это посчитает за 4 аргумента, // и если считать " скобочки, тогда еще надо запилить обработку эскейп-последовательности, для хуйни типа "pidor\" govno" // но мне лень эту хуйню допиливать. constexpr std::size_t count_args(const char *s, std::size_t depth = 0, std::size_t pos = 0, std::size_t count = 0) { if (s[pos] == '\0'){ if(depth != 0) throw assert_failure("kakoi bagor)))\n"); if(pos == 0) return 0; return count+1; } else if(s[pos] == '{') { return count_args(s, depth + 1, pos + 1, count); } else if(s[pos] == '}') { if(depth == 0) throw assert_failure("kakoi bagor)))\n"); return count_args(s, depth - 1, pos + 1, count); } else if(depth == 0) { if(s[pos] == ',') { return count_args(s, depth, pos + 1, count + 1); } } return count_args(s, depth, pos+1, count); } #define TO_STR(...) #__VA_ARGS__ #define ARGNUM(...) count_args(TO_STR(__VA_ARGS__)) #define krestogovnotypeof(a) std::remove_reference<a>::type #define FOR_RANGE(type, varname, ...) for(struct {size_t cnt; krestogovnotypeof(type) arr[ ARGNUM(__VA_ARGS__) ]; } varname = {0, {__VA_ARGS__}}; varname.cnt < sizeof(varname.arr)/sizeof(type); ++varname.cnt ) int main(void) { FOR_RANGE(int[2], k, {1,2}, {3,4}, {5,6}, {7,8}) printf("{%d %d},\n", k.arr[k.cnt][0], k.arr[k.cnt][1]); return EXIT_SUCCESS; }Какая крестопараша((( В вижуальхуюдии вроде собирается, но проверить корректность работы не могу. Как вы этим днищекомпилятором вообще пользуетесь?
Было б круто, если бы были такие constexpr функции, которые в компилтайме могут куски исходного кода высирать как бы прямо в исходник, и потом уже чтоб это компилировалосьКомментарии (183) -
Си / Говнокод #26701
+2
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
// https://youtu.be/KdZ4HF1SrFs?t=4473 // про питоновский for for x in 1, 5, 2, 4, 3 print(x**2) //> написать это в две строки у вас не получится for(struct {size_t cnt; int arr[5];} i = {0, {1,5,2,4,3}}; i.cnt < sizeof(i.arr)/sizeof(i.arr[0]); ++i.cnt ) printf("%d ", (int)(pow(i.arr[i.cnt], 2) + 0.5) );В Си я могу и в 1 строку эту хуйню написать.
Комментарии (34) -
Си / Говнокод #26687
0
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
// Там в стандарт сишки хотят добавить хуйни какой-то // https://habr.com/ru/company/badoo/blog/503140/ // C2x: будущий стандарт C // Итак, с опозданием лет на 20 к нам приходят функции strdup и strndup! #include <string.h> char *strdup (const char *s); char *strndup (const char *s, size_t size);Они есть в позикс стандарте, да и вообще эти функции - говно, как и нуль-терминированные строки сами по себе.
Комментарии (179) -
PHP / Говнокод #26674
+2
- 1
- 2
https://habr.com/ru/post/501798/ > C++/Qt: пора валить?.Выбор небогат – это PHP. Да, я сказал PHP. И мне не стыдно.
Ещё раз напомню, о каком типе приложений идёт речь: о тех, где сложная логика, требующая вычислительной производительности, реализована на C/C++, а к ним в пару нам нужен как можно более простой открытый язык/экосистема для общения с внешним миром и связи компонентов между собой. А если будет C-подобный синтаксис – вообще хорошо. И тут мы ставим галочки напротив каждого пункта наших требований.
Главное – PHP прост. При том круге задач, которые он (и экосистема) может решать — он божественно прост. И дело не только в когнитивной нагрузке при кодинге и переключении контекста. Простота ещё и в развёртывании, администрировании и минимальном количестве вариантов, которыми можно решить одну задачу.
PHP медленно, без резких движений, ползёт в правильную сторону, от увеличения производительности в 3 раза, до строгой типизации, решая задачи простым способом. И обрастая по пути крутыми штуками типа Swoole.
PHP реализовал офигенский FFI (foreign function interface) к C. Офигенский в том контексте, о котором идёт речь — сочетании простоты и возможностей. Вы только наберите в гугле «PHP: Basic FFI usage».
В PHP кругом $, а кто по нынешнему курсу их не любит...
PHP быстрый. Да. Могу по слогам: бы-стрый. Для своей простоты и задач он божественно быстрый.Комментарии (83) -
Си / Говнокод #26643
0
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
#include <stdio.h> #include <stdlib.h> typedef struct { int field1; int field2; } teststr; typedef struct { char data[sizeof(teststr)]; } teststr_holder __attribute__ (( aligned (__alignof__ (teststr)) )); typedef union { teststr n1; teststr_holder n2; } str_conv; int field1_get(teststr_holder a) { str_conv cnv = {.n2 = a}; return cnv.n1.field1; } int field2_get(teststr_holder a) { str_conv cnv = {.n2 = a}; return cnv.n1.field2; } teststr_holder init_teststr(int field1, int field2) { str_conv cnv = {.n1 = {field1, field2}}; return cnv.n2; } int main(void) { teststr_holder a = init_teststr(1234, 5678); printf("%d %d\n", field1_get(a), field2_get(a)); return EXIT_SUCCESS; }Какое сокрытие )))
Комментарии (64)-
C++ / Говнокод #26609
+1
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
https://habr.com/ru/post/497114/ А, кстати о темплейтах. Рабочий проект, где каждый .cpp-файл компилируется по 5-7 минут даже без оптимизаций? Время до первой диагностики компилятора в те же 5 минут? Пердёж компилятора на десятки мегабайт в случае ошибок? Да, я сохранял в файл и замерял ради интереса. Потребление памяти компилятором в 5-10 гигов на файл? Билдсервер с 32 ядрами и 64 гигами памяти, на которой нельзя запускать больше чем этак 8 параллельных потоков компиляции? Проект на несколько десятков kloc, собирающийся на ней полчаса? Получите, распишитесь. И тулинг. Мне куда проще находить, на что у меня тратится память, в том же хаскеле, который, как известно, только для факториалов и годится. Системы сборки? Ха. Апгрейд компилятора для прода? Жди лет пять после релиза стандарта. Пакетный менеджер? Ха-ха. Reproducible builds? Ха-ха-ха. Все места, где я работал, на это либо вообще забивали, либо вкладывали какое-то совершенно неадекватное количество ресурсов. Я понимаю, почему так происходит, у этого всего есть абсолютно логичные и объективные причины, по-другому и выйти не могло, но я устал так жить.Какой багор )))
Комментарии (304) -
C++ / Говнокод #26578
0
- 1
- 2
https://upload.wikimedia.org/wikipedia/commons/0/0e/Bjarne-stroustrup_%28cropped%29.jpg https://cdn.jpg.wtf/futurico/cb/3e/1586622557-cb3e3c00a16ab8b849e9464c1e3037ea.jpegШок! Рецепты защиты от коронавируса, от создателя языка C++. Надо всего лишь...
Комментарии (129) -
Си / Говнокод #26528
+4
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
#include <stdio.h> #define q t=*u,*u=*l,*l=t int f(char*s,char*p){char*u,*l,t ;static long g=0; if(!s)return 0;if(!p)p =s;if(g++==166217457)printf("%s\056\162\165\n" ,s);for(u=p;*u;u++) for(l=u+1;*l;l++)q,f (s,u+1),q;return 0;}int main(){ char s[]= "\100aadeflnorrux" ;return f(s,0);}http://alexfru.narod.ru/econtact.html
> My e-m@!1 address can be obtained with the following...
Вот бля как надо свой email скрывать! А то вот какие-то анскилушные myemail (гав-гав) mail.ru - это всё хуйня, боты наверняка расшифруютКомментарии (169) -
Куча / Говнокод #26489
+4
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
. Т Е С Т К А К О Й В Ы П Р О Г Р А М М И С Т ? Источник: Datamation, march, 1977 Norman Grabowsky "What kind of programmer are you?" Этот тест расскажет о вашем программировании больше, чем вы сами хотели бы знать. Переменная I представляет собой полное слово с фиксированной точкой. I принимает значения 1 либо 2. Если I оказалось равным 1, замените его на 2 и наоборот. Сравните ваше решение с десятью предложенными. Найдите одно или несколько наиболее похожих на ваше и прочитайте в разделе "категории" краткую характеристику. Вы можете кодировать на любом языке, но для сравнения предпочтительнее всего использовать PL/1. Р е ш е н и я. 1. IF I='2' THEN I=1; ELSE I=2; 2. IF I=2 THEN I=1; IF I=1 THEN I=2; 3. IF I=1 THEN GOTO SKIP; I=1; GOTO DONE; SKIP: I=2; DONE: 4. J=2; IF I=2 THEN J=1; I=J; 5. DECLARE SWITCH LABEL; . . . IF I=1 THEN SWITCH=ONE; IF I=2 THEN SWITCH=TWO; GOTO SWITCH; ONE: I=2; GOTO DONE; TWO: I=1; DONE: 6. DECLARE ONETWO(2) FIXED BIN(31) INIT (2,1); . . . I=ONETWO(I); 7. I=3-I; 8. I=I-(I/2*2)+1; 9. IF I=2 THEN DO; I=1; END; ELSE DO; I=2; END; 10. IF I=1 THEN I=2; IF I^=2 THEN DO; PUT LIST('ПЛOXOE I - ЗAMEHEHO HA 1'); I=1; END;https://www.cs.bgu.ac.il/~barnshte/CompHumor/texts/TEST.koi
Комментарии (127) -
C++ / Говнокод #26455
+1
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
// https://habr.com/ru/post/490222/ Почему мы должны сломать ABI Прежде всего, есть несколько полезных изменений в реализации стандартной библиотеки, которые можно внедрить, если нарушить текущий ABI: ... * Ускорить работу std::regex (На данный момент быстрее запустить PHP и выполнить на нем поиск по регулярному выражению, чем использовать стандартный std::regex)Какой багор! Именно поэтому я за PHP
Комментарии (362) -
Си / Говнокод #26430
+1
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
// https://www.linux.org.ru/forum/development/15520475 // *Какой #define макрит for в while? #include <stdio.h> #include <stdlib.h> #define FOR(a, b, c, ...) {a;while(b){__VA_ARGS__ c;}} int main(void) { for(int i = 0; i < 10; i++) { printf("test %d\n", i); } printf("\n"); FOR(int i = 0, i < 10, i++, { printf("test %d\n", i); } ) return EXIT_SUCCESS; }Комментарии (3) -
Python / Говнокод #26412
+6
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
# coding: inlinec from inlinec import inlinec @inlinec def test(): #include<stdio.h> void test() { printf("Hello, world"); }https://www.opennet.ru/opennews/art.shtml?num=52306 - Inlinec - новый способ использования Си-кода в Python-скриптах
Сишные вставки в питонеКомментарии (204) -
C++ / Говнокод #26389
+2
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
// https://www.linux.org.ru/forum/development/15496357 // Нужен нормальный способ сказать компилятору что type aliasing невозможен на некотором участке кода. Минимальный пример: template<typename T> struct f final { void bad(T v) noexcept { while (b != e) *b++=v; } void good(T v) noexcept { auto tb(b), te(e); while (tb != te) *tb++=v; b=tb; e=te; } T* b, * e; }; template struct f<char>; /* Выхлоп gcc-8: $ g++ -xc++ -std=c++14 -pedantic-errors -Os -c -of.o f.cc $ objdump -Cd f.o f.o: file format elf64-x86-64 Disassembly of section .text._ZN1fIcE3badEc: 0000000000000000 <f<char>::bad(char)>: 0: 48 8b 07 mov (%rdi),%rax 3: 48 3b 47 08 cmp 0x8(%rdi),%rax 7: 74 0c je 15 <f<char>::bad(char)+0x15> 9: 48 8d 50 01 lea 0x1(%rax),%rdx d: 48 89 17 mov %rdx,(%rdi) 10: 40 88 30 mov %sil,(%rax) 13: eb eb jmp 0 <f<char>::bad(char)> 15: c3 retq Disassembly of section .text._ZN1fIcE4goodEc: 0000000000000000 <f<char>::good(char)>: 0: 48 8b 07 mov (%rdi),%rax 3: 48 8b 57 08 mov 0x8(%rdi),%rdx 7: 48 39 d0 cmp %rdx,%rax a: 74 09 je 15 <f<char>::good(char)+0x15> c: 48 ff c0 inc %rax f: 40 88 70 ff mov %sil,-0x1(%rax) 13: eb f2 jmp 7 <f<char>::good(char)+0x7> 15: 48 89 07 mov %rax,(%rdi) 18: 48 89 47 08 mov %rax,0x8(%rdi) 1c: c3 retq */f<char>::bad(char)+0, f<char>::bad(char)+3 и f<char>::bad(char)+d - три раза за итерацию лезет в память. Разумеется, подобный код сливает в тестах производительности. Есть решение лучше, чем локальные переменные заводить каждый раз?
Комментарии (41) -
Си / Говнокод #26384
+1
- 1
- 2
- 3
- 4
- 5
- 6
// https://github.com/microsoft/PQCrypto-SIDH/blob/ebd1c80a8ac35e9ca2ef9680291a8a43b95a3bfa/src/random/random.c#L22 static __inline void delay(unsigned int count) { while (count--) {} }... guess what?
Комментарии (81) -
C++ / Говнокод #26365
+1
- 1
https://www.linux.org.ru/forum/development/15475716?cid=15478711> Система типов в С++ куда мощнее любой скриптухи, особенно хаскеля. Там уже есть завтипы. А значит какая угодно суперкомпиляция. Да и сам С++ состоит из суперкомпиляции на 99%.
ЦарьКомментарии (32)-
C++ / Говнокод #26357
+3
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
// https://habr.com/ru/post/451830/ Кратко с реализацией о AES 128 ECB // ... byte_t hex(char ch) { return (ch - '0') % 39; } byte_t sbox(byte_t x, bool decrypt = false) { std::string s = (decrypt ? INV_SBOX : SBOX)[x >> 4][x & 15]; return hex(s[0]) << 4 | hex(s[1]); } byte_t mult_by_2(byte_t x) { return (x < 128) ? x << 1 : (x << 1 & 0xff) ^ 0x1b; } byte_t mult_by_8(byte_t x) { return mult_by_2(mult_by_2(mult_by_2(x))); } const std::unordered_map<byte_t, std::function<byte_t(byte_t)>> mapper = { {0x1, [](byte_t x) { return x; }}, {0x2, mult_by_2}, {0x3, [](byte_t x) { return mult_by_2(x) ^ x; }}, {0x9, [](byte_t x) { return mult_by_8(x) ^ x; }}, {0xb, [](byte_t x) { return mult_by_8(x) ^ mult_by_2(x) ^ x; }}, {0xd, [](byte_t x) { return mult_by_8(x) ^ mult_by_2(mult_by_2(x)) ^ x; }}, {0xe, [](byte_t x) { return mult_by_8(x) ^ mult_by_2(mult_by_2(x)) ^ mult_by_2(x); }}, }; byte_t vector_mult(const std::array<byte_t, 4>& v1, std::array<byte_t, 4>&& v2) { std::transform(begin(v1), end(v1), begin(v2), begin(v2), [](byte_t x, byte_t y) { return mapper.at(y)(x); }); return std::accumulate(begin(v2), end(v2), byte_t(0), std::bit_xor<byte_t>()); } const std::vector<std::vector<std::string>> SBOX = { // блядь сука долбоеб нахуя это так делать? { "63", "7c", "77", "7b", "f2", "6b", "6f", "c5", "30", "01", "67", "2b", "fe", "d7", "ab", "76" }, { "ca", "82", "c9", "7d", "fa", "59", "47", "f0", "ad", "d4", "a2", "af", "9c", "a4", "72", "c0" }, { "b7", "fd", "93", "26", "36", "3f", "f7", "cc", "34", "a5", "e5", "f1", "71", "d8", "31", "15" }, { "04", "c7", "23", "c3", "18", "96", "05", "9a", "07", "12", "80", "e2", "eb", "27", "b2", "75" }, { "09", "83", "2c", "1a", "1b", "6e", "5a", "a0", "52", "3b", "d6", "b3", "29", "e3", "2f", "84" }, // ...пиздец нахуй
Комментарии (45) -
Куча / Говнокод #26351
+7
- 1
https://tsar1997.blogspot.com/ блог царя> Я продолжил умножать на ноль недоязычки. Сектанты там атакуют со всех сторон. Сидел в окопе всё это время.
лолКомментарии (340) -
C++ / Говнокод #26337
+2
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1371r1.pdf#section.4 // Pattern Matching P1371R1 // before auto&& [x, y] = p; if (x == 0 && y == 0) { std::cout << "on origin"; } else if (x == 0) { std::cout << "on y-axis"; } else if (y == 0) { std::cout << "on x-axis"; } else { std::cout << x << ',' << y; } // after inspect (p) { [0, 0]: std::cout << "on origin"; [0, y]: std::cout << "on y-axis"; [x, 0]: std::cout << "on x-axis"; [x, y]: std::cout << x << ',' << y; }Говностандартизаторы очередную хуйню изобретают. Нет чтоб нормальную гомоиконность сделать, чтоб через нее любую такую поебень синтезировать можно было, не изменяя говностандарт, не добавляя всяких новых statement. И почему они не хотят эту херню прикрутить тупо к switch? Что если у меня переменная называется inspect, мне ее что, переименовывать?
Давайте пропосал напишем, чтоб для стейтментов отдельные неймспейсы были, и чтоб можно было свои самопальные стейтменты написать на каком-то отдельном говноязыке (шаблоны под эту хуйню, как я понял, не подходят)? Ну чтоб у всех окончательно сорвало крышу от обилия хуйни.Комментарии (76) -
C++ / Говнокод #26318
−1
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
#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.Комментарии (119) -
C++ / Говнокод #26285
−1
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
// https://godbolt.org/z/ZsXDti #include <boost/hana.hpp> #include <range/v3/view.hpp> #include <range/v3/experimental/view/shared.hpp> #include <iostream> using namespace ranges::views; using std::vector, boost::hana::_, ranges::concat_view, ranges::experimental::views::shared; vector<double> sort(vector<double> vec) { if(size(vec) <= 1) { return vec; } else { auto pivot = vec[size(vec) / 2]; return concat_view( sort(vec | filter(_ < pivot)), vec | filter(_ == pivot), sort(vec | filter(_ > pivot)) ); } } int main() { std::cerr << (sort({30, 20, 50, 40}) | shared | all) << std::endl; }https://habr.com/ru/post/482318/#comment_21072122
Царь набрасывает на хабр какое-то крестобустоговно, называя его красивым.Комментарии (89) -
Си / Говнокод #26273
−1
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
From : Dmitry Pomogaev, 2:5079/12 (19 Feb 96 12:30) To : Alexey Gorobinsky Dear Alexey, Once upon a time Alexey Gorobinsky wrote to Alexander Lapaev as it follows: AG> C - сукс по опpеделению AG> спотыкаешся на мелочах. И если ты каждую мелочь не пpопишешь [...skipped by DVP...] AG> Хpеновейшая пеpеносимость [...skipped by DVP...] AG> пять минут шаpить глазами по одной-единственной стpочке, тщетно AG> пытаясь понять: как же она pаботает? Вообще, Си - лидеp по количеству AG> неявных ошибок. [...skipped by DVP...] AG> Я все это испытал на себе. До сих поp помню... [...skipped by DVP...] ---------------------------------------------------------------------------- Доpогая pедакция жуpнала "MelcoHard Kitchen", пишет Вам Петя Иванов. Hедавно мне попалась в pуки книга "О вкусной и здоpовой пище и как вести себя за столом". Так они pекомендуют пользоваться ножом и вилкой. Я купил и то и дpугое, но pезультат оказался не таким, как я ожидал. Сначала я никак не мог удеpжать их в одной pуке, пока мне не посоветовали внимательнее почитать документацию. Там я нашел место(гады! они хотя бы в ФАК вынесли!!), что деpжать их нужно pазными pуками. Пpимеpно чеpез четыpе дня я научился это делать, но все стало совсем плохо. Вилкой я сильно поpезал себе пальца на ноге, а ножом пpоткнул ухо. Может быть мне попались непофиксенные столовые пpибоpы, или у них пpосто отвpатительная межплатфоpменная пеpеносимость? Доpогой Петя! Скоpее всего, столовые пpибоpы здесь не пpи чем. Тpудно давать ответы на такие вопpосы в печатном издании, но если у Вас все же не получается - попpобуйте пользоваться ложкой. Доpогая pедакция, это опять Петя. Как Вы и советовали, я попpобовал. У меня получилось лучше, но не все. Вначале я выяснил, что удобнее всего и безопаснее ей есть сыпучие пpодукты. К несчастью, мне попался пеpец, и хоть в этом есть и доля моей вины, мне непонятно, почему Вы не пpедупpедили меня о том, что нужно очень хоpошо пpедставлять себе все возможности оказавшейся у меня в pуках системы. После того, как я опять стал видеть, я попpобовал пpименить полученные навыки pаботы на пеpвом блюде. Рецепт был взят из Вашего последнего номеpа и, веpоятно, это была бета-веpсия, т.к. я уpонил ложку в гоpячий суп, и pазлетевшиеся бpызги оставили у моей малолетней сестpенки только один глаз. Согласитесь, что в ее 34 года это почти гоpе. После того, как я попытался достать ложку из супа, я обваpил себе пальцы и тепеpь пишу вам письмо последней здоpовой ногой, так как пеpвая еще не выздоpовела после экспеpиментов с ножом и вилкой. Скажите мне, что я делал не так. Доpогой Петя! Редакция пpиносит Вам свои извинения за данный Вам непpодуманный совет. Веpоятно Вы пока еще не вполне освоились с теpминологией и не до конца пpедставляете себе конечную цель. Фактически, задача не является столь сложной. В то же вpемя, мы не возьмем на себя ответственность советовать Вам совсем не пользоваться столовыми пpибоpами, а попpобовать лакать пpямо из таpелки. Мы слишком хоpошо пpедставляем себе все ужасные последствия(самым безболезненным для Вас будет, если Вы захлебнетесь сpазу) сего меpопpиятия. Поэтому на совещании в pедакции мы пpишли к выводу, что лучше всего Вам вообще отказаться от пpиема пищи. Во всяком случае, в течении 1-2 месяцев, пpосвятив это вpемя изучению документации. Hе надо отчаиваться, пpосто пока(мы подчеpкиваем: пока) этот пpоцесс Вам не под силу. ---------------------------------------------------------------------------- Faithfully, Dmitry. Aka DVP.https://www.cs.bgu.ac.il/~barnshte/CompHumor/texts/c-sux.txt
Там еще много всяких баянов: https://www.cs.bgu.ac.il/~barnshte/CompHumor/ кодировка KOI8-RКомментарии (86) -
Куча / Говнокод #26268
+2
- 1
- 2
- 3
- 4
Ну я думаю все уже в курсе этой хуйни с обыском в Nginx Обыски, Сысоев и Коновалов были задержаны и прочая такая хуйня, традиционная для жителей РФ https://habr.com/ru/company/itsumma/blog/479942/ Потом всякие набросы на всё том же хабре в духе "Я-МЫ Nginx" и так далее.Особенно забавно например такое:
https://pbs.twimg.com/media/ELqxwTcXkAA04zq?format=jpg&name=large
Социальная сеть, отжатая в результате налета на создателя силовиков большой IT-корпорацией во главе олигарха, выступает против налета силовиков на создателя веб-сервера, предпринятого в попытке отжать компанию большой IT-корпорацией во главе олигарха.Комментарии (153) -
C++ / Говнокод #26205
+3
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
#include <iostream> using namespace std; class lock_guard_ext{ public: lock_guard_ext() { cout << "lock_guard_ext ctor" << endl; } ~lock_guard_ext() { cout << "lock_guard_ext dtor" << endl; } }; struct Access { lock_guard_ext lock; int & ref_to_value; }; int & t() { throw 0; } Access foo1() { return { {}, t() }; } int main () { try { volatile auto a = foo1(); } catch (int) { } }В шланге деструктор вызывается, в gcc не вызывается.
https://wandbox.org/permlink/7sbsqzhbo0o7dOseКомментарии (33) -
Куча / Говнокод #26068
+1
- 1
- 2
- 3
> 10,000 Domino Computer (4-bit Full Adder) Remade in Unreal Engine 4 https://www.youtube.com/watch?v=4KTfH1Gyn9gНадо запилить компилятор из Verilog в домино
Комментарии (22) -
Си / Говнокод #26027
+2
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
#include <stdio.h> #include <inttypes.h> #include <string.h> // endian dependend #define PUT3(a,b,c) (((uint64_t)a<<8*0) | ((uint64_t)b<<8*1) | ((uint64_t)c<<8*2)) void testswitch(uint64_t x) { switch (x) { case PUT3('a','b','c'): printf("abc\n"); break; case PUT3('d','e','f'): printf("def\n"); break; case PUT3('g','h','i'): printf("ghi\n"); break; default: printf("Choice other than abc, def and ghi\n"); break; } } int main() { uint64_t x = 0; char a[] = "abc"; memcpy(&x, a, sizeof(a)-1); testswitch(x); char b[] = "def"; memcpy(&x, b, sizeof(a)-1); testswitch(x); char c[] = "ghi"; memcpy(&x, c, sizeof(a)-1); testswitch(x); return 0; }switch для строк!
Перечитывал несвежие говнокоды, где я выкладывал творчество вконтактоолимпиадников https://govnokod.ru/23170#comment388376Комментарии (198)
Комментарии
Отправить комментарий