1. JavaScript / Говнокод #28792

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    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, 05 Июня 2023

    Комментарии (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 литров пива для ведущего. Игрок идёт за пивом, а ведущий недовольно жмурится.
                Ответить
                • "Морская фигура, замри!"
                  Морскую фигуру отвязывают от стула и кладут на диван. Все игроки
                  расходятся по домам, а морская фигура замирает до утра. Выигрывает тот, кому утром морская фигура позвонит последнему.
                  Ответить
    • nyTuH ————————— nugop
      Ответить
      • Ребята, ну сколько раз я вам уже говорил, не говорите такое на говнокоде!!! Ведь Мистера-Страйкра посадят, и где мы тогда будем гыгыкать?!

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

                    СР — такая оппозиция...
                    Ответить
                    • Выходит и правда будет только 1 кандидат. Все остальные откажутся.
                      Ответить
                      • Я вспомнил лозунг охранки: «На переправе коней не меняют.»

                        Как думаешь, их можно засудить за неуважение, ведь они назвали Нитуха конём?
                        Ответить
                      • Зачем тратить деньги на выборы, если можно отправить средства на нужды СВО?
                        Ответить
              • Конь дидат от народа!
                Ответить
          • Кстати, был как-то оправдательный приговор, когда психолингвистическая экспертиза не смогла доказать, что речь идёт именно о том самом nyTuHe. Мало ли в мире однофамильцев?
            Ответить
    • Я придумал анекдот.

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

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