ЙажаСценарий / Говнокод #27843 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
async init() {
                const engine = this.engine = new BABYLON.WebGPUEngine(this.canvas);
                await engine.initAsync();
            }

            async initCompute() {
                const supportCS = this.engine.getCaps().supportComputeShaders;
                if (!supportCS) {
                    return true;
                }

                const computeShaderSource = document.getElementById("calculate").value.replace('WORK_GROUP_SIZE', this.WORK_GROUP_SIZE);
                this.computeShader = new BABYLON.ComputeShader("compute", this.engine, { computeSource: computeShaderSource }, {
                    bindingsMapping:
                    {
                        "params": { group: 0, binding: 0 },
                        "ssboIn": { group: 0, binding: 1 },
                        "ssboOut": { group: 0, binding: 2 },
                    }
                });

                const simParamsBuffer = new BABYLON.UniformBuffer(this.engine);
                simParamsBuffer.updateFloat2("time", t, this.numInstances);
                simParamsBuffer.update();

                const ssboInBuffer = new BABYLON.StorageBuffer(this.engine, this.ssboData.byteLength);
                ssboInBuffer.update(this.ssboData);

                const ssboOutBuffer = new BABYLON.StorageBuffer(this.engine, this.ssboData.byteLength);

                this.computeShader.setUniformBuffer("params", simParamsBuffer);
                this.computeShader.setStorageBuffer("ssboIn", ssboInBuffer);
                this.computeShader.setStorageBuffer("ssboOut", ssboOutBuffer);
                                
                const handler = () => {
                    ssboOutBuffer.read().then((res) => {
                        const resFloats = new Float32Array(res.buffer);
                        //console.log(resFloats);
                        this.ssboData.set(resFloats);

                        ssboInBuffer.update(this.ssboData);
                        this.computeShader.setStorageBuffer("ssboIn", ssboInBuffer);
                        this.computeShader.dispatchWhenReady(this.numGroups).then(handler);                

                        this.loadPositions();
                    });
                };

                this.computeShader.dispatchWhenReady(this.numGroups).then(handler);                
            }

Наговнокодить кому нибудь Compute Shader для WebGPU? полный код тут https://pastebin.com/EigxhfqV . Тут короче симуляция гравитации расчетным методом... просто было делать нехрен и скушно... что бы запустить это говно надо Chrome Canary с включенным WebGPU поддержкой.

ASD_77 ASD_77, (Updated )

Комментарии (20, +20)

ЙажаСценарий / Говнокод #27818 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
  67. 67
  68. 68
  69. 69
  70. 70
  71. 71
  72. 72
  73. 73
  74. 74
  75. 75
  76. 76
  77. 77
  78. 78
  79. 79
  80. 80
  81. 81
  82. 82
  83. 83
  84. 84
const express = require('express')
const app = express()
const port = 3000;
const bodyparser = require("body-parser")
const applications = 2341;
const https = require('https');
const util = require('util');
var sha1 = require("sha1");
const secret = '123афкуф';
const connection = require("./mysql")
var log4js = require("log4js");
var logger = log4js.getLogger();
function generatePassword(len){
  if(len > 10) len = 10;
    len = len * (-1);
		return Math.random().toString(36).slice(len);
	}
	app.listen(port, () => {
			logger.info(`VK Auth is started!`)
	})

let net =  require("net");
 app.get('/', (req, res) => {
  var code = req.query['code'];
  var state = req.query['state'];
  var computer = req.query['computer']; 
  var ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress ||  req.socket.remoteAddress || req.connection.socket.remoteAddress;
  res.sendFile(__dirname + "/index.html");
  console.log(`https://oauth.vk.com/access_token?client_id=${applications}client_secret=${secret}&code=${code}&redirect_uri=http://31.25.243.145:3000/?computer=${computer}`)
   https.get(`https://oauth.vk.com/access_token?client_id=${applications}&client_secret=${secret}&code=${code}&redirect_uri=http://31.25.243.145:3000/?computer=${computer}`, (res) => 
	{
		res.on("data", (data) => {
			data = data.toString('utf8');
			let obj = JSON.parse(data)
			if(obj.error == undefined)
			{   connection.query("SELECT idvk FROM whitelist WHERE idvk = ?", [obj.user_id] ,(err,result1) => {
				if(err)
				{
					return logger.main.error(err)
				}
				if(result1.length === 0)
				{
					//socket.write("Auth|accessdenied")
				}
				else {
					connection.query("SELECT AccessToken FROM users WHERE VK = ?",[obj.user_id],(err, result,row) => {
				if (err) {
					logger.main.error(err)
				}
				
				if (result.length === 0) {
                connection.query("INSERT INTO users(ipaddress,profileid,hwid,AccessToken,RegTime,VK,nickname,token,Auth) VALUES (?,?,?,?,NOW(),?,?,?,?)",[ip.substr(7),0,computer,obj.access_token,obj.user_id,"",sha1(generatePassword(10)),1], (err,res) => {
					if (err) {
						return console.log(err);
					}
					console.log( ip.substr(7) + " успешно зарегистрирован!")
					})
				}
				else {
					// Обновляем access токен если аккаунт есть, но токен недействителен
					connection.query("UPDATE users SET AccessToken = ?, Auth = ? WHERE VK = ?", [obj.access_token,1,obj.user_id], (err,res) => {
					if(err) {
						return logger.main.error(err);
					}
					    
					console.log(ip.substr(7) + " : токен обновлен")
					})
				}
				
				
			})
			}
			})
			}
			else {
				//socket.write("ERRORAUTH")
			}
		}) 
		
	})
	})
	app.use(bodyparser.urlencoded({extended: false}));
	app.post('/', (req, res) => {
	})

Авторизация ВКонтакте для лаунчера, вместо пыхи, решил использовать ноду)

lovecode lovecode, (Updated )

Комментарии (24, +24)

ЙажаСценарий / Говнокод #27811 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
let checks: boolean[] = [];

      languages.value.map((language) => {
        checks.push(name.value.hasOwnProperty(language.locale) && !!name.value[language.locale]);
        checks.push(description.value.hasOwnProperty(language.locale) && !!description.value[language.locale]);
      });

      return !checks.includes(false);

hulkmaster hulkmaster, (Updated )

Комментарии (25, +25)

ЙажаСценарий / Говнокод #27808 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
function test_nest_capture_of_this() {
    let deck = {
        val: 1,
        funcWithCapture: function () {
            return () => {
                return this.val;
            };
        },
    };

    let funcInst = deck.funcWithCapture();
    print(funcInst());
}

function main() {
    test_nest_capture_of_this();
    print("done.");
}

а вот мой компилятор может так говнокодить .. а ваш? (коментов не будет - сайт все блокирует) на этот раз скину дампик
https://pastebin.com/MXVLGnGM

результат работы

C:\temp\MLIR_to_exe>1.exe
1
done.

ASD_77 ASD_77, (Updated )

Комментарии (14, +14)

ЙажаСценарий / Говнокод #27805 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
  67. 67
  68. 68
  69. 69
  70. 70
  71. 71
  72. 72
  73. 73
  74. 74
  75. 75
  76. 76
  77. 77
  78. 78
  79. 79
  80. 80
  81. 81
  82. 82
  83. 83
  84. 84
  85. 85
  86. 86
  87. 87
  88. 88
  89. 89
  90. 90
  91. 91
  92. 92
  93. 93
  94. 94
  95. 95
  96. 96
  97. 97
  98. 98
  99. 99
  100. 100
class RayTracer {
    private maxDepth = 5;

    private intersections(ray: Ray, scene: Scene) {
        let closest = +Infinity;
        let closestInter: Intersection = undefined;
        for (let i in scene.things) {
            let inter = scene.things[i].intersect(ray);
            if (inter != null && inter.dist < closest) {
                closestInter = inter;
                closest = inter.dist;
            }
        }

        return closestInter;
    }

    private testRay(ray: Ray, scene: Scene) {
        let isect = this.intersections(ray, scene);
        if (isect != null) {
            return isect.dist;
        } else {
            return undefined;
        }
    }

    private traceRay(ray: Ray, scene: Scene, depth: number): Color {
        let isect = this.intersections(ray, scene);
        if (isect === undefined) {
            return Color.background;
        } else {
            return this.shade(isect, scene, depth);
        }
    }

    private shade(isect: Intersection, scene: Scene, depth: number) {
        let d = isect.ray.dir;
        let pos = Vector.plus(Vector.times(isect.dist, d), isect.ray.start);
        let normal = isect.thing.normal(pos);
        let reflectDir = Vector.minus(d, Vector.times(2, Vector.times(Vector.dot(normal, d), normal)));
        let naturalColor = Color.plus(Color.background,
            this.getNaturalColor(isect.thing, pos, normal, reflectDir, scene));
        let reflectedColor = (depth >= this.maxDepth) ? Color.grey : this.getReflectionColor(isect.thing, pos, normal, reflectDir, scene, depth);
        return Color.plus(naturalColor, reflectedColor);
    }

    private getReflectionColor(thing: Thing, pos: Vector, normal: Vector, rd: Vector, scene: Scene, depth: number) {
        return Color.scale(thing.surface.reflect(pos), this.traceRay({ start: pos, dir: rd }, scene, depth + 1));
    }

    private getNaturalColor(thing: Thing, pos: Vector, norm: Vector, rd: Vector, scene: Scene) {
        const addLight = (col: Color, light: Light) => {
            let ldis = Vector.minus(light.pos, pos);
            let livec = Vector.norm(ldis);
            let neatIsect = this.testRay({ start: pos, dir: livec }, scene);
            let isInShadow = (neatIsect === undefined) ? false : (neatIsect <= Vector.mag(ldis));
            if (isInShadow) {
                return col;
            } else {
                let illum = Vector.dot(livec, norm);
                let lcolor = (illum > 0) ? Color.scale(illum, light.color)
                    : Color.defaultColor;
                let specular = Vector.dot(livec, Vector.norm(rd));
                let scolor = (specular > 0) ? Color.scale(Math.pow(specular, thing.surface.roughness), light.color)
                    : Color.defaultColor;
                return Color.plus(col, Color.plus(Color.times(thing.surface.diffuse(pos), lcolor),
                    Color.times(thing.surface.specular(pos), scolor)));
            }
        }
        //return scene.lights.reduce(addLight, Color.defaultColor);
        let resColor = Color.defaultColor;
        for (const light of scene.lights) {
            resColor = addLight(resColor, light);
        }

        return resColor;
    }

    render(scene: Scene, screenWidth: number, screenHeight: number) {
        const getPoint = (x: number, y: number, camera: Camera) => {
            const recenterX = (x: number) => (x - (screenWidth / 2.0)) / 2.0 / screenWidth;
            const recenterY = (y: number) => - (y - (screenHeight / 2.0)) / 2.0 / screenHeight;
            return Vector.norm(Vector.plus(camera.forward, Vector.plus(Vector.times(recenterX(x), camera.right), Vector.times(recenterY(y), camera.up))));
        }

        for (let y = 0; y < screenHeight; y++) {
            for (let x = 0; x < screenWidth; x++) {
                let color = this.traceRay({ start: scene.camera.pos, dir: getPoint(x, y, scene.camera) }, scene, 0);
                let c = Color.toDrawingColor(color);
                //ctx.fillStyle = "rgb(" + String(c.r) + ", " + String(c.g) + ", " + String(c.b) + ")";
                //ctx.fillRect(x, y, x + 1, y + 1);
		// next line eats stack (or memory?)
		print(`<rect x="${x}" y="${y}" width="1" height="1" style="fill:rgb(${c.r},${c.g},${c.b});" />`);
            }
        }
    }
}


function defaultScene(): Scene {

шас я вас залью кодик т.к. все не влазит ловите код на https://pastebin.com/qMZmnCqT так вот это вот компилиться и работает на новом компиляторе

ASD_77 ASD_77, (Updated )

Комментарии (20, +20)

ЙажаСценарий / Говнокод #27772 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
interface Something {
    r: number;
    g: number;
    b: number;
    toString: () => string;
}

function main() {
    const something = {
        r: 11.0, g: 12.0, b: 13.0, toString() {
            return "Hello " + this.b;
        }
    };

    const iface = <Something>something;
    print(iface.toString());

    print("done.");
}

Интерфесы для абстрактых обьектов.. а ваш говно компилятор может так?

ASD_77 ASD_77, (Updated )

Комментарии (24, +24)

ЙажаСценарий / Говнокод #27763 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
let textarea = document.querySelector('textarea')
let list = document.querySelector('ol')
let newTask = document.createElement('li')
newTask.innerText = textarea.value

function submitTask() {
    list.appendChild(newTask)
}

При попытке добавлять новый HTML элемент функция добавления срабатывает только один раз, к тому же для добавления используется не то значение которое я ввожу в текстовое поле, а только дефолтное. Так как я перепробовал уже массу вариантов и с инпутом, и с событием нажатия Enter, какие-то варианты, которые уже забыл, я подозреваю, что проблема, вероятно, в appendChild, но не уверен, и не понимаю её.

shuric shuric, (Updated )

Комментарии (9, +9)