- 1
Петух иньо забыл продлить домен
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+1
Петух иньо забыл продлить домен
0
def getMyIPAddress():
global __ip__
if __ip__:
return __ip__
with suppress(Exception):
__ip__ = get('https://api.my-ip.io/ip', timeout=.1).text
with suppress(Exception):
__ip__ = get('https://ipwhois.app/json/', timeout=.1).json()["ip"]
with suppress(Exception):
__ip__ = get('https://ipinfo.io/json', timeout=.1).json()["ip"]
with suppress(Exception):
__ip__ = ProxyTools.Patterns.IP.search(get('http://checkip.dyndns.org/', timeout=.1).text)
with suppress(Exception):
__ip__ = ProxyTools.Patterns.IP.search(get('https://spaceiran.com/myip/', timeout=.1).text)
with suppress(Exception):
__ip__ = get('https://ip.42.pl/raw', timeout=.1).text
return getMyIPAddress()
Что имел в виду автор? Кто понял?
−3
https://t.me/stdvector
го в вектор
+2
export $(grep PROJECT_NAME .env | xargs)
export $(grep USERID .env | xargs)
docker exec -it -u ${USERID} ${PROJECT_NAME}_application bash -l
На минуточку в проекте написанный лично разрабом до меня docker-compose.
0
https://250bpm.com/blog:36/
> At that point every semi-decent programmer curses spaghetti code in general and the author of the function in particular and embarks on the task of breaking it into managable chunks, trying to decompose the problem into orthogonal issues, layer the design properly, move the common functionality into base classes, create convenient and sufficiently generic extension points et c.
<…>
It turns out that the 1500-line function was parsing a network protocol. It is a 30-year old, complex and convoluted Behemoth of a protocol, defined by many parties fighting over the specification, full of compromises and special cases, dragged through multiple standardisation bodies and then anyway slightly customised by each vendor.
<...>
Unfortunately, it turns out that the tweak intersects the boundary between two well-defined components in the implementation. The right thing to do would be to re-think the architecture of the parser and to re-factor the codebase accordingly. <
Вот так вот. Не стоит спешить любую портянку из 100+ строк кода называть "спагетти-кодом". Код может быть функцией микроконтроллера в котором вызов функции достаточно дорогой по памяти/времени, сложным алгоритмом и пр. Спагетти - это про организацию кода. Монолитный (но хорошо мапящийся на домен) код понять проще, чем солянку из функций, классов и пр. которые решают непонятно какую задачу (это и есть спагетти-код). Алсо https://en.wikipedia.org/wiki/Wikipedia:Chesterton%27s_fence
+1
#include <conio.h>
void activateAlarm(int channelID) {
int key = 0;
while(temperatureChannel[channelID].currentTemperature > temperatureChannel[channelID].highLimit
||temperatureChannel[channelID].currentTemperature < temperatureChannel[channelID].lowLimit) {
beep(350,100);
if (_kbhit()) {
key = _getch();
if(key == 'P');
break;
}
}
}
0
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 поддержкой.
0
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) => {
})
Авторизация ВКонтакте для лаунчера, вместо пыхи, решил использовать ноду)
0
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.");
}
Интерфесы для абстрактых обьектов.. а ваш говно компилятор может так?
+1
Функция ОпределитьВидКонтрагента(Контрагент) Экспорт
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Контрагент", Контрагент);
ТекстЗапроса = "ВЫБРАТЬ
| Контрагенты.Ссылка КАК Контрагент,
| Контрагенты.Представление КАК Представление,
| Контрагенты.ЮрФизЛицо КАК ЮрФизЛицо
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
|ГДЕ
| Контрагенты.ЮрФизЛицо = ЗНАЧЕНИЕ(Перечисление.ЮрФизЛицо.ЮрЛицоНеРезидент)
| И Контрагенты.Ссылка = &Контрагент";
Запрос.Текст = ТекстЗапроса;
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Возврат Ложь;
КонецЕсли;
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Если Контрагент = Выборка.Контрагент Тогда
Возврат Истина;
Иначе
Возврат Ложь;
КонецЕсли;
КонецЦикла;
КонецФункции