- 1
- 2
- 3
- 4
- 5
function main() {
(function () {
print("Hello World!");
})();
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+1
function main() {
(function () {
print("Hello World!");
})();
}
а ваш С компилятор может так говнокодить? а мой компилятор может :)
0
function f1()
{
print("Hello World!");
}
function run(f: () => void)
{
f();
}
function main() {
const x = f1;
x();
run(x);
}
// LLVM IL
; ModuleID = 'LLVMDialectModule'
source_filename = "LLVMDialectModule"
target datalayout = "e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-pc-windows-msvc"
@frmt_11120820245497078329 = internal constant [4 x i8] c"%s\0A\00"
@s_11208736881023205110 = internal constant [14 x i8] c"Hello World!\00\00"
declare i8* @malloc(i64)
declare void @free(i8*)
declare i32 @printf(i8*, ...)
define void @f1() !dbg !3 {
%1 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @frmt_11120820245497078329, i64 0, i64 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @s_11208736881023205110, i64 0, i64 0)), !dbg !7
br label %2, !dbg !9
2: ; preds = %0
ret void, !dbg !9
}
define void @run(void ()* %0) !dbg !10 {
%2 = alloca void ()*, align 8, !dbg !11
store void ()* %0, void ()** %2, align 8, !dbg !11
%3 = load void ()*, void ()** %2, align 8, !dbg !11
call void %3(), !dbg !13
br label %4, !dbg !14
4: ; preds = %1
ret void, !dbg !14
}
define void @main() !dbg !15 {
%1 = alloca void ()*, align 8, !dbg !16
%2 = alloca void ()*, align 8, !dbg !19
store void ()* @f1, void ()** %2, align 8, !dbg !19
%3 = load void ()*, void ()** %2, align 8, !dbg !19
call void %3(), !dbg !20
%4 = load void ()*, void ()** %2, align 8, !dbg !19
%5 = bitcast void ()** %1 to i8*, !dbg !16
call void @llvm.lifetime.start.p0i8(i64 8, i8* %5), !dbg !16
store void ()* %4, void ()** %1, align 8, !dbg !16
%6 = load void ()*, void ()** %1, align 8, !dbg !16
call void %6(), !dbg !21
%7 = bitcast void ()** %1 to i8*, !dbg !22
call void @llvm.lifetime.end.p0i8(i64 8, i8* %7), !dbg !22
br label %8, !dbg !23
8: ; preds = %0
ret void, !dbg !23
}
; Function Attrs: argmemonly nofree nosync nounwind willreturn
declare void @llvm.lifetime.start.p0i8(i64 immarg, i8* nocapture) #0
; Function Attrs: argmemonly nofree nosync nounwind willreturn
declare void @llvm.lifetime.end.p0i8(i64 immarg, i8* nocapture) #0
attributes #0 = { argmemonly nofree nosync nounwind willreturn }
продолжаем говнокодить компилятор аля TypeScript в нативный код. ну это как С компилятор только без тупо-уродо-* у имен переменных
1) компилим точно также как и до этого в постах
2) получаем результат
>> Hello World!
Hello World!
−2
const connectToServerEpic = (
action$,
) => (
action$
.pipe(
ofType(CONNECT_TO_SERVER),
switchMap(({
hostname,
port,
protocol,
protocolVersion,
reconnectionTimeout,
}) => (
action$
.pipe(
ofType(RECONNECT_TO_SERVER),
takeUntil(
action$
.pipe(
ofType(DISCONNECT_FROM_SERVER),
)
),
startWith(null),
map(() => (
webSocket({
protocol: protocolVersion,
url: (
protocol
.concat('://')
.concat(hostname)
.concat(':')
.concat(port)
),
WebSocketCtor: WebSocket,
})
)),
switchMap((
webSocketConnection$,
) => (
webSocketConnection$
.pipe(
takeUntil(
action$
.pipe(
ofType(
RECONNECT_TO_SERVER,
DISCONNECT_FROM_SERVER,
),
)
),
catchError(() => (
timer(
reconnectionTimeout,
)
.pipe(
takeUntil(
action$
.pipe(
ofType(
RECONNECT_TO_SERVER,
DISCONNECT_FROM_SERVER,
),
)
),
mapTo(reconnectToServer()),
)
)),
map(receivedWebSocketMessage),
startWith(
connectionReady(
webSocketConnection$,
)
),
)),
)),
)
)),
)
)
https://itnext.io/simplifying-websockets-in-rxjs-a177b887f3b8
0
function main()
{
const ac = [1, 2, 3];
let a = ac;
print(ac[0]);
print(ac[1]);
print(ac[2]);
print(a[0]);
print(a[1]);
print(a[2]);
const ac2 = [1.0, 2.0, 3.0];
let a2 = ac2;
print(ac2[0]);
print(ac2[1]);
print(ac2[2]);
print(a2[0]);
print(a2[1]);
print(a2[2]);
const ac3 = ["item 1", "item 2", "item 3"];
let a3 = ac3;
print(ac3[0]);
print(ac3[1]);
print(ac3[2]);
print(a3[0]);
print(a3[1]);
print(a3[2]);
}
// LLVM output
; ModuleID = 'LLVMDialectModule'
source_filename = "LLVMDialectModule"
target datalayout = "e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-pc-windows-msvc"
@frmt_11120820245497078329 = internal constant [4 x i8] c"%s\0A\00"
@s_13298922352840505641 = internal constant [8 x i8] c"item 3\00\00"
@s_13297965777724151296 = internal constant [8 x i8] c"item 2\00\00"
@s_13300835503073214331 = internal constant [8 x i8] c"item 1\00\00"
@a_14124738666956595718 = internal constant [3 x i8*] [i8* getelementptr inbounds ([8 x i8], [8 x i8]* @s_13300835503073214331, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @s_13297965777724151296, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @s_13298922352840505641, i64 0, i64 0)]
@frmt_11108397963124010376 = internal constant [4 x i8] c"%f\0A\00"
@a_17125214420326958200 = internal constant [3 x float] [float 1.000000e+00, float 2.000000e+00, float 3.000000e+00]
@frmt_11106471618751763154 = internal constant [4 x i8] c"%d\0A\00"
@a_2366260266165782651 = internal constant [3 x i32] [i32 1, i32 2, i32 3]
declare i8* @malloc(i64)
declare void @free(i8*)
declare i32 @printf(i8*, ...)
define void @main() !dbg !3 {
%1 = alloca i32*, align 8, !dbg !7
store i32* getelementptr inbounds ([3 x i32], [3 x i32]* @a_2366260266165782651, i64 0, i64 0), i32** %1, align 8, !dbg !7
%2 = load i32*, i32** %1, align 8, !dbg !7
%3 = alloca i32*, align 8, !dbg !9
store i32* %2, i32** %3, align 8, !dbg !9
%4 = load i32*, i32** %1, align 8, !dbg !7
%5 = getelementptr i32, i32* %4, i32 0, !dbg !10
%6 = load i32, i32* %5, align 4, !dbg !10
%7 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @frmt_11106471618751763154, i64 0, i64 0), i32 %6), !dbg !11
%8 = load i32*, i32** %1, align 8, !dbg !7
%9 = getelementptr i32, i32* %8, i32 1, !dbg !12
%10 = load i32, i32* %9, align 4, !dbg !12
%11 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @frmt_11106471618751763154, i64 0, i64 0), i32 %10), !dbg !13
%12 = load i32*, i32** %1, align 8, !dbg !7
%13 = getelementptr i32, i32* %12, i32 2, !dbg !14
%14 = load i32, i32* %13, align 4, !dbg !14
%15 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @frmt_11106471618751763154, i64 0, i64 0), i32 %14), !dbg !15
%16 = load i32*, i32** %3, align 8, !dbg !9
%17 = getelementptr i32, i32* %16, i32 0, !dbg !16
%18 = load i32, i32* %17, align 4, !dbg !16
%19 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @frmt_11106471618751763154, i64 0, i64 0), i32 %18), !dbg !17
%20 = load i32*, i32** %3, align 8, !dbg !9
%21 = getelementptr i32, i32* %20, i32 1, !dbg !18
%22 = load i32, i32* %21, align 4, !dbg !18
%23 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @frmt_11106471618751763154, i64 0, i64 0), i32 %22), !dbg !19
%24 = load i32*, i32** %3, align 8, !dbg !9
%25 = getelementptr i32, i32* %24, i32 2, !dbg !20
%26 = load i32, i32* %25, align 4, !dbg !20
%27 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @frmt_11106471618751763154, i64 0, i64 0), i32 %26), !dbg !21
%28 = alloca float*, align 8, !dbg !22
store float* getelementptr inbounds ([3 x float], [3 x float]* @a_17125214420326958200, i64 0, i64 0), float** %28, align 8, !dbg !22
%29 = load float*, float** %28, align 8, !dbg !22
%30 = alloca float*, align 8, !dbg !23
store float* %29, float** %30, align 8, !dbg !23
%31 = load float*, float** %28, align 8, !dbg !22
%32 = getelementptr float, float* %31, i32 0, !dbg !24
%33 = load float, float* %32, align 4, !dbg !24
%34 = fpext float %33 to double, !dbg !25
%35 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @frmt_11108397963124010376, i64 0, i64 0), double %34), !dbg !25
%36 = load float*, float** %28, align 8, !dbg !22
%37 = getelementptr float, float* %36, i32 1, !dbg !26
%38 = load float, float* %37, align 4, !dbg !26
%39 = fpext float %38 to double, !dbg !27
%40 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @frmt_11108397963124010376, i64 0, i64 0), double %39), !dbg !27
продолжаем нашу е..блю с компилятором а ля "C" но только используя синтакс TypeScript
дальше это гвно при запуска tsc.exe --emit=llvm c:\1.ts
получаем равернутую раскладку го-в-на которе можно перевести в Obj файл
а если запустим EXE получим такую Х типа "1 2 3 1 2 3 1.0 2.0 3.0 1.0 2.0 3.0 item 1 item 2 item 3 item 1 item 2 item 3"
и никакой е..бли в указателями все сука компилятор делает сам
0
type User = {
status: 'lamer' | 'junior' | 'govnokoder';
login: string;
iq: number;
}
type ChangeListener<T, K extends keyof T> = {
name: `${K & string}_Listener`;
on(newValue: T[K])
}
const UserIqListener: ChangeListener<User, 'iq'> = {
name: "iq_Listener", //ничто другое не скомпилируется
on(event: number) { //понятно, что string тут не скомпилируется
}
}
const UserStatusListener: ChangeListener<User, 'status'> = {
name: "status_Listener",
on(newValue: User["status"]) {
switch (newValue) {
case "govnokoder": { //понятно, что неверный тип тут не скомпилируется
}
}
}
}
Почему у нас нет "TypeScript"?
0
function validateUSDate( strValue )
{
var objRegExp = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/;
if(!objRegExp.test(strValue))
return false; //doesn't match pattern, bad date
else
{
var strSeparator = strValue.substring(2,3); //find date separator
var arrayDate = strValue.split(strSeparator); //split date into month, day, year
//create a lookup for months not equal to Feb.
var arrayLookup = { '01' : 31,'03' : 31, '04' : 30,'05' : 31,'06' : 30,'07' : 31,
'08' : 31,'09' : 30,'10' : 31,'11' : 30,'12' : 31};
var intDay = (arrayDate[1]);
//check if month value and day value agree
if(arrayLookup[arrayDate[0]] != null)
{
if(intDay <= arrayLookup[arrayDate[0]] && intDay != 0)
return true; //found in lookup table, good date
}
//check for February
var intYear = parseInt(arrayDate[2]);
var intMonth = parseInt(arrayDate[0]);
if( ((intYear % 4 == 0 && intDay <= 29) || (intYear % 4 != 0 && intDay <=28)) && intDay !=0)
return true; //Feb. had valid number of days
}
return false; //any other values, bad date
}
А вот этот шедевр ещё и работает...
0
function isNumeric(str) //for non-numeric fields
{
var FlagS=0, FlagN=0;
var str1=new Array();
for(var i=0;i<str.length;i++) //convert string to a char array
{
str1[i]=str.charAt(i);
}
for(i=0;i<str1.length;i++) //check for digits
{
if(str1[i]>='0'&&str1[i]<='9' )
{
FlagN=1;
}
}
if(FlagS==1||FlagN==1) //give a final decision
{
FlagS=FlagN=0;
return true;
}
}
Красота по-индийски. FlagS не понадобился, ну и хер с ним :)
0
$(".reg_button").on("click", function(){
console.log("hello world jquery");
$(".main").css("display", "none");
$(".register-main").css("display", "block");
$(`input[type="text"]`).css("width", "14vw");
$(`input[type="password"]`).css("width", "14vw");
$(`input[type="email"]`).css("width", "14vw");
// Обработка нажатия на кнопку регистрации
});
const recovery = {
login: "",
email: "",
}
const regExp = {
login: /^[a-z0-9_-]{5,20}$/,
pass: /^[A-Za-z0-9_-]{6,16}$/,
email: /^[A-Z0-9._%+-]+@[A-Z0-9-]+.+.[A-Z]{2,4}$/i,
}
const state = {
reg: {
login: "",
pass: "",
email: "",
agreement: ""
},
auth: {
login: "",
pass: "",
agreement: false
}
}
$(".back").on("click", function() {
$(".register-main").css("display", "none");
$(".main").css("display", "flex");
$(`input[type="text"]`).css("width", "21.5vw");
$(`input[type="password"]`).css("width", "21.5vw");
// Обработка нажатия на кнопку "Назад"
});
$(".auth_forgotPassword").on("click", function() {
console.log("Система восстановления пароля в разработке.")
/* $(".main").css("display", "none");
$(".recovery").css("display", "block");
$(".recovery-step-one").css("display", "block");
$(`input[type="text"]`).css("width", "14vw");
$(`input[type="password"]`).css("width", "14vw"); */
})
$(".recovery-back").on("click", function() {
$(".recovery").css("display", "none");
$(".recovery-step-one").css("display", "none");
$(".main").css("display", "flex"); // кнопка назад, в восстановления пароля.
$(`input[type="text"]`).css("width", "21.5vw");
$(`input[type="password"]`).css("width", "21.5vw");
})
$(".recovery-back2").on("click", function() {
$(".recovery-step-two").css("display", "none");
$(".recovery").css("display", "block");
$(".recovery-step-one").css("display", "block"); // кнопка назад, в восстановления пароля.
$(`input[type="text"]`).css("width", "14vw");
$(`input[type="password"]`).css("width", "14vw");
})
// $(".recovery-button").on("click", function() {
/*recovery.login = $(".step_login").val()
recovery.email = $(".step_email").val()
alt.emit("click:recovery")
if(recovery.login == "" || recovery.email == "" )
{
console.log("Необходимые поля пустые!")
}
else {
alt.on("recovery-step-two", (args) => {
if(args == true) {
$(".recovery-step-one").css("display", "none");
$(".recovery-step-two").css("display", "block");
}
else {
console.log("Введены неверные данные или аккаунта с такой почтой не существует.")
}
})
}
*/
// })
$(".recovery_button2").on("click", function() {
$(".recovery-step-two").css("display", "none");
$(".recovery-step-three").css("display", "block");
})
$('.button-wrap').on("click", function(){
$(this).toggleClass('button-active');
if ($(this).hasClass('button-active')) {
localStorage.checkbox = 1
} else {
localStorage.checkbox = 0
}
console.log(localStorage.checkbox)
});
$(".confirm-back2").on("click", () => {
$(".authentication").css("display", "none");
Логика работы меню авторизации :)
Собственно первая моя верстка была, как и использование jquery)
0
// These are equivalent:
fn`some string here`;
fn(['some string here']);
Джаваскриптеры переизобрели руби (ладно-ладно, скрестили с FormattableString из шарпа)
https://styled-components.com/docs/advanced#tagged-template-literals
0
// Since styled-components allows you to use arbitrary input as interpolations, you must be careful to sanitize that input.
// Using user input as styles can lead to any CSS being evaluated in the user's browser that an attacker can place in your application.
// This example shows how bad user input can even lead to API endpoints being called on a user's behalf.
// Oh no! The user has given us a bad URL!
const userInput = '/api/withdraw-funds'
const ArbitraryComponent = styled.div`
background: url(${userInput});
/* More styles here... */
`
в процессе многолетнего пересоздания ruby on rails с нуля фронтендеры умудрились accidentally a bottle of injections
https://styled-components.com/docs/advanced#security