ЙажаСценарий / Говнокод #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) RSS

  • SEO-псто: #nodejs #npm #скриптушня #извращения #utf16 #utf16le #utf16be #ttf #truetype #ttfmeta #шрифтыговно #йажасцриптговно #кодировки #нескучныеобои
    Ответить
  • Что-то последнее время заметил за собой такую хуйню, что лень делать нормально, сделаю ка костыль или "на отъебись" или без тестов, потому что как всё сложно и именно поэтому я за "PHP" ебись оно всё конём.
    Что делать?
    Ответить
    • Добавляй комментарий с todo: когда отъебутся — переделаешь нормально
      Ответить
    • Я обычно делаю так: исправляю регрессию, добавляю две новых. Исправляю две регрессии, и добавляю четыре новых. Через год такой работы приходит желание делать нормальные API, внятные абстракции, покрывать код тестами, и писать документацию

      А может тебе просто проект надоел, и надо сменить
      Ответить
      • А представь ты вот это всё делаешь: нормальный API, внятные абстракции, тесты, доку. А через год это всё нахуй не нужно: поделите переходит на поддержку и ты уже делаешь другое. А мог бы x3 говна настрогать и бизнес бы больше заработал.
        Ответить
        • Мне похуй совершенно: я хожу на работу чтобы делать нормально. Деланье нормально делает меня более нормальным программистом, и я чуствую себя более защищенно.

          Если бы мне было интересно "3x гавна настрагать" то я на freelance.ru делал бы сайты на UMI.CMS, и тёк. Целый день я ходил бы с черным мешком, и делал бы все сайты, которые вижу. На два полных сайта целый день уходил бы.

          И кстати, продукт на поддержке очень сильно выигрывает от доки и тестов. Особенно когда эта поддержка случается через 10 лет, и все, кто видел этот код, давно уже уволились
          Ответить
  • Участники берутся в кругу за руки (по принципу: мальчик и девочка). В центр круга выходит водящий, закрывает глаза и вытягивает руки (стрелой) в любом направлении. Круг начинает двигаться по часовой стрелке, а водящий - в противоположном направлении. При движении все повторяют хором слова: "арам-шим-шим, арам-шим-шим, арамия-дульсия - покажи-ка на меня! И раз, и два, и три!" На счет "три" все останавливаются. Игрок противоположного пола, на которого при остановке указал водящий выходит в центр круга. Эти игроки становятся спиной друг к другу и закрывают глаза, а остальные участники хором начинают считать до трех. На счет "три" игроки в центре поворачивают головы в любом направлении. Если повернули в одну сторону - целуются в щёчку, если нет - жмут друг другу руки
    Ответить
    • Очень хорошая игра, хорошо раскрепощающая людей. На первый взгляд немного детская, но очень увлекательная! Хорошо помогает познакомиться новым людям. Место применения: студенческие походы, лагеря, институты, Дни рожденья и т.п. Для игры необходимо большое количество человек – от 10 и больше. Желательно равное количество юношей и девушек. Все берутся за руки и становятся в круг в порядке – М-Ж-М-Ж-М-Ж и т.д. Ведущий - один человек (два, три – если участвует очень много людей) становится в центр круга, закрывает глаза, одну руку вытягивает вперед и начинает вращаться. Остальные начинают в другую сторону водить вокруг него хоровод, при этом хором говоря: «Арам Шим-Ши, Арам Шим-Ши, Арамея-Зульфия – покажи-ка на меня! Раз, два, три!» Все останавливаются. После этого в центр из общего круга должен выйти тот человек, на кого показал ведущий (противоположного пола). Он становится спиной к спине с ведущим. Головы держат ровно – затылок к затылку. Все хором считают: «Раз, два, три!». Оба резко поворачивают головы в любую сторону. Если стороны совпали – игроки целуются в губы, если не совпали – в щеку. Затем ведущий занимает место в кругу, и все повторяется с начала. Нацеловаться можно вдоволь! 😉
      Ответить
      • Я не понял, к чему здесь упомянута широтоимпульсная модуляция.
        Ответить
        • И ещё я не понимаю, к чему цифро-аналоговый преобразователь в этом стихотворении:

          Ехал грека через реку,
          Видит грека — в реке рак.
          Сунул грека в реку руку,
          Греку рак за руку ЦАП.
          Ответить
          • Ехал Гитлер через Гитлер
            Видит Гитлер - в Гитлер Гитлер!
            Сунул Гитлер Гитлер в Гитлер.
            Гитлер Гитлер Гитлер Гитлер..
            Ответить
            • Ехал ахтунг через реку,
              Видит ахтунг — в реке ахтунг.
              Сунул ахтунг ахтунг а ахтунг.
              Ахтунг. Ахтунг. Ахтунг. Ахтунг.
              Ответить
        • Это неверный перевод. В Оригинале там было Арам Цам Цам

          ЦАМ (ZAMAK) – семейство цинковых сплавов, открытых в 1929 году американской компанией The New Jersey Zinc Corporation

          Ну а Арам (библейский регион) — согласно Ветхому Завету, регион, где обитали все народы Сирии и Месопотамии
          Ответить
    • Пиздец


      А если какая-то тян не хочет целовать какого-нить куна в щечку? Он может быть занудный, у него слюна на губах белеет, он сально шутит, и от него пахнет несвежестью?

      Кун тоже не всякую тян целовать хочет, но нам с этим всё таки проще
      Ответить
      • Значит нужен судья, который обеспечивает допуск или недопуск к игре.
        Ответить
    • "Ручеек"
      Число играющих не ограничено. Внезапно одного из игроков признают ведущим и привязывают к стулу, а затем все остальные игроки в течение 5-6 часов поят ведущего пивом. Игра считается законченной, когда появляется ручеек.
      Ответить
      • "Бутылочка"
        Число играющих не ограниченно. Игроки располагаются кругом. В центре круга ведущий, отвязанный к тому времени от стула и переодетый в форму рядового игрока, раскручивает пустую бутылочку на длинной веревочке. Игрок, воскликнувший : "Ой, йё!" и схватившийся за голову, не только считается, но и является выбывшим из игры. Игра продолжается до тех пор, пока либо не останется игроков в круге, либо кто-нибудь из них не сможет подобраться к ведущему и вновь привязать его к стулу. В последнем случае с новой силой возобновляется игра "ручеек".
        Ответить
        • Чепуха"
          Число игроков немного ограничено предыдущими играми. Внезапно одного из игроков признают ведущим и привязывают к стулу, а затем остальные игроки поят его пивом в течение 2-3 часов. По сравнению с 5-6 часами игры в "ручеек" происходящее кажется ведущему просто чепухой.
          Отсюда и название игры.
          Ответить
          • "Прятки"
            Число играющих не ограничено. Внезапно одного из игроков признают ведущим и привязывают его к стулу. Затем первый игрок громко и внятно говорит : "У нас есть лишних 20 литров пива. Куда бы нам их спрятать за 5-6 часов ?" После чего начинается собственно игра в прятки.
            Ответить
            • "Жмурки"
              Число играющих не ограничено. Одному из игроков (по желанию) завязывают шею шарфом и раскручивают ещё на 20 литров пива для ведущего. Игрок идёт за пивом, а ведущий недовольно жмурится.
              Ответить
              • "Морская фигура, замри!"
                Морскую фигуру отвязывают от стула и кладут на диван. Все игроки
                расходятся по домам, а морская фигура замирает до утра. Выигрывает тот, кому утром морская фигура позвонит последнему.
                Ответить
    • Ребята, ну сколько раз я вам уже говорил, не говорите такое на говнокоде!!! Ведь Мистера-Страйкра посадят, и где мы тогда будем гыгыкать?!

      А, точно, есть же XYZ, тогда можете продолжать.
      Ответить
      • Попытаюсь исправить. Товарищ майор, ---------- — это не тире, а означает, что они в противоположных углах ринга. И nyTuH, конечно же, победит.
        Ответить
          • На выборах президента Российской Федерации две тысячи двадцать четвёртого года Владимира Владимировича Путина я отдам свой голос за кандидата в президенты Российской Федерации, действующего президента Российской Федерации, Верховного главнокомандующего Владимира Владимира Путина (nugopa). А ты?
            Ответить
        • Кстати, был как-то оправдательный приговор, когда психолингвистическая экспертиза не смогла доказать, что речь идёт именно о том самом nyTuHe. Мало ли в мире однофамильцев?
          Ответить
  • Я придумал анекдот.

    Разговаривают двое на улице:
    — Знаешь, какая разница между nymuHblM и nugopoM?
    Подходит серый человечек:
    — Ну и какая между ними разница?
    — Ааа, никакой, никакой, никакой!
    Ответить

Добавить комментарий

Переведи на "PHP", guest!

    А не использовать ли нам bbcode?


    8