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

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
const ttfMeta = require('ttfmeta');
const fs = require('fs');

let oldName = process.argv[2];

ttfMeta.ttfInfo(oldName, (err, result) => {
  if (err) {
    console.log('error', err)
  } else {
    let newName = result.tables.name[6];

    if(newName.charCodeAt(0) === 0) {
        let buf = new ArrayBuffer(newName.length);
        let bufView = new Uint16Array(buf);
        for (let i = 0, strLen = newName.length / 2; i < strLen; i++) {
          bufView[i] = (newName.charCodeAt(2 * i) << 8) + newName.charCodeAt(2 * i + 1);
        }
        newName = String.fromCharCode.apply(null, bufView);
    }
    
    newName = 'renamed/' + newName + '.ttf';
    fs.createReadStream(oldName).pipe(fs.createWriteStream(newName));
  }
});

Дано: 100500 ttf-файлов с рандомными именами файла (цифры, гуиды, что угодно, но только не название шрифта).
Требуется: переименовать файлы так, чтобы название хоть как-то было похоже на имя шрифта.
Решение: есть 100500 библиотек на сишке для вытаскивания метушни из ttf-файлов, но мы же извращенцы, поэтому напишем на скриптушне.

Багор: пакет «ttfmeta» из «npm» иногда возвращает нормальные текстовые строки, а иногда хуйню (детектируемую условием newName.charCodeAt(0) === 0), когда пара соседних «символов» — это на самом деле половинки кодпоинта из кодировки utf16be. «Нода» умеет только в toString('utf16le'), а кодировку с большим индейцем ('utf16be') не знает.

Izumka Izumka, (Updated )

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

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

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
if (this.$arg0 == 'inc')    this.$ret = this.$math = args[0] + 1;
        if (this.$arg0 == 'dec')    this.$ret = this.$math = args[0] - 1;
        if (this.$arg0 == 'div')    this.$ret = this.$math = args[0] / args[1];
        if (this.$arg0 == 'ceil')   this.$ret = this.$math = Math.ceil(args[0]);
        if (this.$arg0 == 'floor')  this.$ret = this.$math = Math.floor(args[0]);
        if (this.$arg0 == 'sqrt')   this.$ret = this.$math = Math.sqrt(args[0]);
        if (this.$arg0 == 'exp')    this.$ret = this.$math = Math.exp(args[0]);
        if (this.$arg0 == 'log')    this.$ret = this.$math = Math.log(args[0]);
        if (this.$arg0 == 'sin')    this.$ret = this.$math = Math.sign(args[0]);
        if (this.$arg0 == 'log10')  this.$ret = this.$math = Math.log10(args[0]);
        if (this.$arg0 == 'cos')    this.$ret = this.$math = Math.cos(args[0]);
        if (this.$arg0 == 'tan')    this.$ret = this.$math = Math.tan(args[0]);
        if (this.$arg0 == 'acos')   this.$ret = this.$math = Math.acos(args[0]);
        if (this.$arg0 == 'atan')   this.$ret = this.$math = Math.atan(args[0]);
        if (this.$arg0 == 'round')  this.$ret = this.$math = Math.round(args[0]);
        if (this.$arg0 == 'atan2')  this.$ret = this.$math = Math.atan2(args[0]);

Исходный код интерпретатора компилятора (!) Языка Программирования «AsmX».
https://github.com/langprogramming-AsmX/AsmX/blob/main/compiler.js#L215

ISO ISO, (Updated )

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

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

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
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
Как считаете, когда всё приложение встанет колом?

alek0585 alek0585, (Updated )

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

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

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
<div v-if="type" v-show="item.item.personalDiscount" class="item__price" style="background: none !important">
                    <span style="background: none !important">
                        {{ `${item.item.personalDiscount} %` }}
                    </span>
                    <span class="item__exchange">
                        {{ $t('pdf.personalDiscount') }} -
                        {{ getExchange(item.item.personalDiscountFinal) }}
                    </span>
                </div>
                <div v-if="type" class="item__totalPriceContainer">
                    <span class="item__totalPrice">{{ $t('pdf.itemTotal') }}:</span>
                    <div class="item__price">
                        <span>{{ getTotalOneCartPrice(item.item) }}</span>
                        <span class="item__exchange">
                            {{ $t('pdf.vat') }} —
                            {{
                        getOneCartTotalPriceExchangeNDS(
                          item.item.nds,
                          item.item.basketPriceExchange
                        )
                      }}
                        </span>
                    </div>
                </div>

vue js

Timofey Timofey, (Updated )

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

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

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
export function compareTwoObjectExceptTime (obj1, obj2) {
  const obj1Copy = { ...obj1 }
  const obj2Copy = { ...obj2 }
  delete obj1Copy.ScheduledStartOn
  delete obj1Copy.ScheduledFinishOn
  delete obj1Copy.FinishedStartOn
  delete obj1Copy.FinishedFinishOn
  delete obj1Copy.ScheduledDuration
  delete obj1Copy.FinishedDuration
  delete obj1Copy.tasks

  delete obj2Copy.ScheduledStartOn
  delete obj2Copy.ScheduledFinishOn
  delete obj2Copy.FinishedStartOn
  delete obj2Copy.FinishedFinishOn
  delete obj2Copy.ScheduledDuration
  delete obj2Copy.FinishedDuration
  delete obj2Copy.tasks
  return JSON.stringify(obj1Copy) === JSON.stringify(obj2Copy)
}

tosetac135 tosetac135, (Updated )

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

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

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
const o = {};
o.operationsBtn = '<a class="button" href="market/user/1/payments" style="display:inline-flex;align-items:center">...</a>';
const q = {};
q.renamemodal = '<div class="xenOverlay" style="top: 10%;"><div class="scroll-wrapper sectionMain scrollbar-macosx scrollbar-dynamic" style="position: relative;"><div class="sectionMain scrollbar-macosx scrollbar-dynamic scroll-content" id="SelectForumOverlayScrollbar" style="height: auto; margin-bottom: 0px; margin-right: 0px; max-height: 332px;"><h1 class="heading h1" style="font-size: 1.5em; text-align: center; font-weight: 600; padding: 14px;">Переименовать пользователя</h1><a class="close OverlayCloser"></a><div style="padding: 20px;"><div class="textHeading" style="margin-top: 0">Введите новый никнейм</div><input id="lztnextrename_input" class="textCtrl" style="width: 100%;" maxlength="50"><div style="margin-top:20px"><button class="button primary" id="lztnextrenamesave">Сохранить</button><button class="button" style="margin-left:10px" id="lztnextrenamereset">Сбросить</button><div id="show_renamed_users" style="opacity: 0.4; cursor: pointer; margin-top: 18px; float: right;">Показать переименованных</div></div></div></div></div></div>';
const G = {};
G.admin = o, G.lztnext = q;
const j = G;
function L() {
  return "aboba";
}
const b = abc, c = CryptoJS;
let Z = {};
const d = {};
d.md5 = "abc", d.CryptoJS = "crypto";
const D = d;
for (const rQ of Object.entries(D)) {
  window[rQ[1]] = window[rQ[0]];
}
if (location.host.match(/\./g).length !== 1 || ["lolz.guru", "zelenka.guru"].indexOf(location.hostname) === -1) return;
const n = {}, E = GM_info.script.updateURL.split("/")[4].split(".")[0];
if (eval != unsafeWindow.eval) {
  alert("пашол нахуй");
  return;
}
NodeList.prototype.forEach = function (rf) {
  return Array.from(this).forEach(rf);
};
const T = [];
ra("#lztnext-custom-smilies {margin-bottom: 20px}");
let i = {get: (...rf) => {
  if (i.s) return typeof GM_getValue !== "undefined" ? GM_getValue(...rf) : localStorage.getItem(...rf);
}, set: typeof GM_setValue !== "undefined" ? GM_setValue : localStorage.setItem, cache: {get: rf => {
  if (i.s) return i.get("_cache_" + rf);
}, set: (rf, rP) => {
  return i.set("_cache_" + rf, rP);
}, clear: (rf = "") => {
  i.keys().forEach(rp => {
    if (rp.startsWith("_cache_" + rf) && !rp.match(/(banned)/)) i.del(rp);
  });
}}, del: typeof GM_deleteValue !== "undefined" ? GM_deleteValue : localStorage.removeItem, keys: typeof GM_listValues !== "undefined" ? GM_listValues : () => {
  return Object.keys(localStorage);
}, s: true};
const U = i.get("v");
if (!U || GM_info.script.version > U) {
  i.cache.clear(), location.reload(), i.set("v", GM_info.script.version);
}
!i.get("start") && (["hide_contests_content", "start", "hide_ads", "hide_backgrounds"].forEach(rP => i.set(rP, "true")), i.set("theme", "next"));
let I = i.get("xenforo_uuid") || localStorage.getItem("xenforo_uuid"), z = i.get("user_id") || localStorage.getItem("uid");
(!I || !z) && rr();
const Y = false;
let g = JSON.parse(i.cache.get("themes") || "null") || {default: {name: "Обычная", source: "data:text/plain,", author: "Lolzteam", palette: ["rgba(52, 52, 52)", "rgb(214,214,214)"]}, next: {name: "Next", source: "https://lztnext.0-day.pw/assets/themes/next.css", author: "кустик, zoto_ff", palette: ["rgba(33, 33, 33)", "rgb(13, 179, 121)"]}};
const {fetch: k} = unsafeWindow, l = {};
l.headers = {};
const N = (rP, rp = l) => {
  return new Promise((a1, a2) => {
    rp.headers = rp.headers || {};
    if (rP.match(u)) {
      if (!z) return;
      rp.headers["lztnext-payload"] = E, rp.headers.Authorization = rp.headers.Authorization || "Bearer " + I.split("%")[0], rp.headers["lolz-user-id"] = z, rp.headers["lztnext-version"] = GM_info.script.version;
      const a5 = Math.floor(Date.now() / 1e3), a6 = a5 + "," + b(L() + ("-" + rp.headers["lztnext-payload"] + "-" + rp.headers.Authorization + "-" + rp.headers["lolz-user-id"] + "-" + rp.headers["lztnext-version"] + "-" + (a5 - a5 % 22)));
      rp.headers["lztnext-hash"] = a6;
    }
    rp.onabort = () => a2(), rp.onerror = () => a2(), rp.ontimeout = () => a2(), rp.onload = a8 => {
      a1(a8.response);
    }, rp.url = rP, GM_xmlhttpRequest(rp);
  });
};
if (Y) unsafeWindow.storage = i;
const u = "https://lztnext.0-day.pw/";
function t(rP = null, rp = false) {
  rM(rP), rO(rP);
  if (i.get("hide_avatars") === "true") {
    document.querySelectorAll(".avatar img, .avatar span.img").forEach(a3 => rJ(a3));
    if (rp) {
      const a3 = $$(".avatarScaler");
      if (a3.length) {
        const a4 = a3.find("img"), a5 = $$("#page_info_wrap .username span");
        let a6 = a5.attr("data-renamed") || a5.text();
        a4.replaceWith(re(a4, a6, true));
      }
    }
  } else document.querySelectorAll(".avatar img").forEach(async a7 => {
    var _U$Cv, _c$CS;
    const a9 = await rw(a7.src);
    if (!a7.ad) a7.src = a9;
  }), document.querySelectorAll(".avatar span.img.s").forEach(async a7 => {
    const a8 = await rw(a7.style["background-image"].slice(5, -2));
    if (!a7.ad) a7.style["background-image"] = "url(" + a8 + ")";
  });
  const a1 = i.get("redirect");
  if (a1 && a1 !== "none") {
    const a7 = a1 === "lolz" ? "zelenka.guru/" : "lolz.guru/", a8 = a1 === "zelenka" ? "zelenka.guru/" : "lolz.guru/";
    document.querySelectorAll('a[href*="' + a7 + '"]').forEach(async a9 => {
      a9.href = a9.href.replace(a7, a8);
    }), Array.from($('a:contains("' + a7 + '")')).forEach(async a9 => {
      a9.innerHTML = a9.innerHTML.replace(new RegExp(a7.replace(/\//g, "\\/"), "g"), a8);
    });
  }
}

jcyozmzl jcyozmzl, (Updated )

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