- 1
Приватный дневник-тред, который никто не прочтёт, чтобы писать сюда всякие секреты.
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+1
Приватный дневник-тред, который никто не прочтёт, чтобы писать сюда всякие секреты.
Это место для тех, кто устал от публичности социальных сетей.
Здесь можно взять любой логин, не указывая настоящего имени,
вести свой дневник, закрыв его от части или всего виртуального
мира. До 75% записей на сайте подзамочные — для избранных
читателей. Можно писать в тред, который кроме вас вообще
никто не прочтет.
+1
// https://github.com/torvalds/linux/blob/b6dad5178ceaf23f369c3711062ce1f2afc33644/rust/alloc/alloc.rs#L376
pub const fn handle_alloc_error(layout: Layout) -> ! {
const fn ct_error(_: Layout) -> ! {
panic!("allocation failed");
}
fn rt_error(layout: Layout) -> ! {
unsafe {
__rust_alloc_error_handler(layout.size(), layout.align());
}
}
unsafe { core::intrinsics::const_eval_select((layout,), ct_error, rt_error) }
}
// https://github.com/torvalds/linux/blob/b6dad5178ceaf23f369c3711062ce1f2afc33644/rust/kernel/lib.rs#L96-L103
fn panic(info: &core::panic::PanicInfo<'_>) -> ! {
pr_emerg!("{}\n", info);
// SAFETY: FFI call.
unsafe { bindings::BUG() };
// Bindgen currently does not recognize `__noreturn` so `BUG` returns `()`
// instead of `!`. See <https://github.com/rust-lang/rust-bindgen/issues/2094>.
loop {}
}
// https://github.com/torvalds/linux/blob/master/include/asm-generic/bug.h#L51-L68
/*
* Don't use BUG() or BUG_ON() unless there's really no way out; one
* example might be detecting data structure corruption in the middle
* of an operation that can't be backed out of. If the (sub)system
* can somehow continue operating, perhaps with reduced functionality,
* it's probably not BUG-worthy.
*
* If you're tempted to BUG(), think again: is completely giving up
* really the *only* solution? There are usually better options, where
* users don't need to reboot ASAP and can mostly shut down cleanly.
*/
#ifndef HAVE_ARCH_BUG
#define BUG() do { \
printk("BUG: failure at %s:%d/%s()!\n", __FILE__, __LINE__, __func__); \
barrier_before_unreachable(); \
panic("BUG!"); \
} while (0)
#endif
О том, как в ядре Linux говнораст обрабатывает ошибку аллокации
+1
// Всем привет. Я тоже принёс говнокода, но в необычном формате.
// А именно, я написал мини-книгу "60 антипаттернов для С++ программиста".
// https://pvs-studio.ru/ru/blog/posts/cpp/1053/
Там вы найдёте и реальный C++ говнокод и просто вредные советы в духе "Пишите код так, как будто его будет читать председатель жюри IOCCC и он знает, где вы живёте (чтоб приехать и вручить вам приз)".
Если сразу не понятно почему "совет" вреден, то там есть соответствующий разбор.
Готов подискутировать про написанное. Ну и приглашаю накидывать в комментариях аналогичные советы.
P.S. Предупреждаю: там много букв. Сразу запасайтесь кофе/энергетиком. Или попкорном :)
+1
Функция СоответствиеСодержитКлюч(Соответствие, Ключ)
Если НЕ Соответствие[Ключ] = Неопределено Тогда
Возврат Истина;
КонецЕсли;
КоличествоЭлементов = Соответствие.Количество();
Соответствие.Удалить(Ключ);
Если КоличествоЭлементов = Соответствие.Количество() Тогда
Возврат Ложь;
КонецЕсли;
Соответствие.Вставить(Ключ);
Возврат Истина;
КонецФункции
Как тебе такое Илон (зачеркнуто) Нуралиев?!
+1
if(pfocus=="Balanced")
if(StatRank>=4)
if(Age>=4&&Age<=10)
Str+=0.4*StrMod*timemult*StatRank*HBTCMod*World_Stat_Mod
End+=0.4*EndMod*timemult*StatRank*HBTCMod*World_Stat_Mod
Spd+=0.4*SpdMod*timemult*StatRank*HBTCMod*World_Stat_Mod
Base_BP+=1*BPMod*timemult*StatRank*HBTCMod*World_Stat_Mod
MaxKi+=1*KiMod*timemult*StatRank*HBTCMod*World_Stat_Mod
else
Str+=4*StrMod*timemult*StatRank*HBTCMod*World_Stat_Mod
End+=4*EndMod*timemult*StatRank*HBTCMod*World_Stat_Mod
Spd+=4*SpdMod*timemult*StatRank*HBTCMod*World_Stat_Mod
Base_BP+=1*BPMod*timemult*StatRank*HBTCMod*World_Stat_Mod
MaxKi+=1*KiMod*timemult*StatRank*HBTCMod*World_Stat_Mod
if(Age>=10&&Age<=15)
Str+=0.4*StrMod*timemult*StatRank*HBTCMod*World_Stat_Mod
End+=0.4*EndMod*timemult*StatRank*HBTCMod*World_Stat_Mod
Spd+=0.4*SpdMod*timemult*StatRank*HBTCMod*World_Stat_Mod
Base_BP+=1*BPMod*timemult*StatRank*HBTCMod*World_Stat_Mod
MaxKi+=1*KiMod*timemult*StatRank*HBTCMod*World_Stat_Mod
else
Str+=4*StrMod*timemult*StatRank*HBTCMod*World_Stat_Mod
End+=4*EndMod*timemult*StatRank*HBTCMod*World_Stat_Mod
Spd+=4*SpdMod*timemult*StatRank*HBTCMod*World_Stat_Mod
Base_BP+=1*BPMod*timemult*StatRank*HBTCMod*World_Stat_Mod
MaxKi+=1*KiMod*timemult*StatRank*HBTCMod*World_Stat_Mod
if(Age>=15&&Age<=20)
Str+=0.4*StrMod*timemult*StatRank*HBTCMod*World_Stat_Mod
End+=0.4*EndMod*timemult*StatRank*HBTCMod*World_Stat_Mod
Spd+=0.4*SpdMod*timemult*StatRank*HBTCMod*World_Stat_Mod
Base_BP+=1*BPMod*timemult*StatRank*HBTCMod*World_Stat_Mod
MaxKi+=1*KiMod*timemult*StatRank*HBTCMod*World_Stat_Mod
else
Str+=4*StrMod*timemult*StatRank*HBTCMod*World_Stat_Mod
End+=4*EndMod*timemult*StatRank*HBTCMod*World_Stat_Mod
Spd+=4*SpdMod*timemult*StatRank*HBTCMod*World_Stat_Mod
Base_BP+=1*BPMod*timemult*StatRank*HBTCMod*World_Stat_Mod
MaxKi+=1*KiMod*timemult*StatRank*HBTCMod*World_Stat_Mod
if(Age>=20&&Age<=25)
Str+=0.4*StrMod*timemult*StatRank*HBTCMod*World_Stat_Mod
End+=0.4*EndMod*timemult*StatRank*HBTCMod*World_Stat_Mod
Spd+=0.4*SpdMod*timemult*StatRank*HBTCMod*World_Stat_Mod
Base_BP+=1*BPMod*timemult*StatRank*HBTCMod*World_Stat_Mod
MaxKi+=1*KiMod*timemult*StatRank*HBTCMod*World_Stat_Mod
и далее ещё 300 строк такого говна. я не думал, что кроме мемов, ещё когда-нибудь с таким столкнусь
+1
Statement stmt1 = null;
ResultSet rs1 = null;
try {
StringBuilder sb = new StringBuilder(2000);
String sql = "";
String ss = "";
String ss_begin = "";
String ss_middle = "";
String ss_end = "";
int xcount = 0;
String XXX_ID = "";
String XXX_NAME = "";
if (c.XLANG_ID == 1) {
sql = sql + " SELECT 99 , 'Исходные' FROM dual union all ";
sql = sql + " SELECT 1 , 'Непарные исходные' FROM dual union all ";
sql = sql + " SELECT 2 , 'Временная' FROM dual union all ";
sql = sql + " SELECT 3 , 'Встречные' FROM dual ";
//sql = sql + " SELECT 4 , 'Непарные встречные' FROM dual ";
} else if (c.XLANG_ID == 2) {
sql = sql + " SELECT 99 , 'Base BPEBs' FROM dual union all ";
sql = sql + " SELECT 1 , 'Base BPEBs unpaired' FROM dual union all ";
sql = sql + " SELECT 2 , 'Temporary BPEB' FROM dual union all ";
sql = sql + " SELECT 3 , 'Generated BPEBs' FROM dual ";
//sql = sql + " SELECT 4 , 'Generated BPEBs unpaired' FROM dual ";
}
stmt1 = this.con.createStatement();
rs1 = stmt1.executeQuery(sql);
while (rs1.next()) {
xcount = xcount + 1;
XXX_ID = rs1.getString(1);
XXX_NAME = rs1.getString(2);
sb = sb.append("<msg>")
.append("<xid>").append(XXX_ID).append("</xid>")
.append("<xname>").append(vtb.budget.osa.tools.Tools.stringToXML(XXX_NAME)).append("</xname>")
.append("</msg>");
}
rs1.close();
stmt1.close();
ss_begin = ss_begin + "<xml id='XML_table1'>"
+ "<tab1>";
ss_end = ss_end
+ "</tab1>"
+ "</xml>";
if (xcount == 0) {
ss_middle = ss_middle + "<msg>"
+ "<xid></xid>"
+ "<xcode></xcode>"
+ "<xname></xname>"
+ "</msg>";
} else {
ss_middle = sb.toString();
}
ss = ss_begin + ss_middle + ss_end;
ss_begin = null;
ss_middle = null;
ss_end = null;
sb = null;
return ss;
}
+1
https://pastebin.com/MarcPuJc
говно для подтирания важных комментов в вк. Весь не поместился, прилегаю ссылку.
+1
private async getNewKey(): Promise<string> {
let i: number = 0;
let key: string;
while (i < 50000) {
key = this.generateKey(MIN_REFERRAL_NAME_LENGTH);
const inDatabase: number = await ReferralEntity.count({ where: { name: key }, transaction: this._transaction });
if (inDatabase === 0) {
const inProcess: boolean = newKeyInProcess.has(key);
if (!inProcess) {
newKeyInProcess.add(key);
break;
}
}
i++;
}
return key;
}
Тайпскрипт. MIN_REFERRAL_NAME_LENGTH = 3
Как считаете, когда всё приложение встанет колом?
+1
В одном из минувших топиков приподымали тему POP SMDб я тоже решил напейсать генератор паролей к этой игре.
https://pastebin.com/ANHTMmeM
на основе исходников roman-pro
+1
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
void PasswordChecker(void);
void sub_BB4F(unsigned char* Password);//subroutine $BB4F and so on...
void sub_BB21(void);
void sub_BBE0(void);
void sub_BBEA(void);
void SEC_SBC_6502(unsigned char operand);
void ADC_6502_simplified(unsigned char operand);
unsigned char Password[8];//$0766 to $076D in RAM, when a player enters it
unsigned char Invalidity=0;//$0764 in RAM
unsigned char Level;//$$0070 in RAM
unsigned char TimeTens;//$04c5 in RAM
unsigned char TimeOnes;//$04c6 in RAM
unsigned char Byte4BF, Byte17, Byte18;
unsigned char a, x;
unsigned char c=0;//carry flag
//former char Byte76A is Password[4] now, former char Byte76C is Password[6] now
void PasswordGenerator(void);
void BuildORTable(void);
unsigned char* BuildParticularLevelsArray(unsigned char DesiredLevel);//will think of it later...
void SimplifiedLevelGenerator(unsigned char* PassToFill,unsigned char Level);//finds just one 2nd,3rd,6th,8th digit combo
int main()
{
int Choice;
printf("Enter g if you'd like to generate a new password.\nEnter a to analyze an existing password.\n");
Choice=fgetc(stdin);
flushall();
if (Choice=='a')
PasswordChecker();
if (Choice=='g')
PasswordGenerator();
if (Choice=='s')//'level function' is basic when generating a pass
BuildORTable();//so here a bit of 'hidden' investigation, which will be useful
//if I ever decide to rewrite this prog to output all passes possible, not just one
printf("Press any key to quit.\n");
getch();
return 0;
}
void PasswordChecker(void)
{
char InputString[9];//one extra byte needed due to fgets
int i;
printf("Please enter your password to test:\n");
fgets(InputString,9,stdin);
for(i=0;i<8;i++)
{
if ((InputString[i]>57)||(InputString[i]<48))
{
printf("This string contains non-digits.\n");
return;
}
else
Password[i]=InputString[i]-48;//ascii to digit
}
sub_BB4F(Password);
if (Invalidity==1)
{
printf("This password is invalid.\n");
return;
}
printf("%s%d","Level: ",Level);
printf("%s%d%d\n"," Time: ",TimeTens,TimeOnes);
if (Level==15)
printf("Level 15 doesn't exist. So-called level 15 passwords are programming mistakes and cause system hang.\n");
if (Level==16)
printf("Level 16 doesn't exist. So-called level 16 passwords are programming mistakes and lead you to a buggy screen where Prince can't move.\n");
return;
}
void sub_BB4F(unsigned char* Password)//$BB4F
{
a=0;
x=0;
while (x<8)
{
a=a+Password[x];
x++;
}
if(a==0)
{
Invalidity=1;//$BBC0
return;
}
Byte17=Password[4];//$BB63
Byte18=Password[6];
Password[4]=0;
Password[6]=0;
sub_BB21();//$BB72,calculates and writes 1st checksum to Password[4], 2nd checksum to Password[6]
if (Password[4]!=Byte17)
{
Invalidity=1;
return;
}
Генератор паролей для игры Prince Of Perisa. Пришлось немного повозиться...
if (Password[6]!=Byte18)//$BB7C
{
Invalidity=1;
return;
}
Invalidity=0;//$BB85
a=Password[7];
sub_BBEA();
a=a&3;//$BB8E
a=a*4;
Password[7]=a;
a=Password[1];
sub_BBE0();//$BB98
a=a|Password[7];
Level=a+1;//+1 is my insertion
//if (Level!=1)//I chose to omit this $BBA2-$BBA4 code b/c it's unknown what byte at $06EE means
a=Password[0];
sub_BBE0();//$BBAA
TimeTens=a;
a=Password[3];
sub_BBEA();
TimeOnes=a;
return;//$BBBF
}
void SEC_SBC_6502(unsigned char operand)
{
c=1;
if ((a-operand)>=0)
a=a-operand;
else
{
a=a-operand+256;
c=0;
};
}
void ADC_6502_simplified(unsigned char operand)
{
if ((a+operand)<256)
a=a+operand;
else a=a+operand-256;
}
void sub_BB21(void)
{
x=0;
BB23: a=Password[4];
a=a+Password[x];
if(a<10)
{
BB46: Password[4]=a;//$BB46
x++;
if (x!=8)
goto BB23;
else return;//$BB4E
}
else //$BB2E
{
Byte4BF=a;
a=Password[6];
a++;//we came here b/c c=1
if (a<10)
goto BB3D;
else
SEC_SBC_6502(10);//can we get here? I doubt...
BB3D: Password[6]=a;
a=Byte4BF;
SEC_SBC_6502(10);//$BB44, no danger of negative result
goto BB46;
}
}