1. Java / Говнокод #25392

    +4

    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
    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
    /*
     * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
     * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     *
     * This code is free software; you can redistribute it and/or modify it
     * under the terms of the GNU General Public License version 2 only, as
     * published by the Free Software Foundation.
     *
     * This code is distributed in the hope that it will be useful, but WITHOUT
     * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
     * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
     * version 2 for more details (a copy is included in the LICENSE file that
     * accompanied this code).
     *
     * You should have received a copy of the GNU General Public License version
     * 2 along with this work; if not, write to the Free Software Foundation,
     * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
     *
     * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
     * or visit www.oracle.com if you need additional information or have any
     * questions.
     */
    
    /* @test
       @bug 4890726
       @summary Check the correctness of KOI8_U by comparing to KOI8_R
     */
    
    import java.util.*;
    import static java.lang.Character.UnicodeBlock;
    
    public class UkrainianIsNotRussian {
        private static String decode(byte[] bytes, String encoding) throws Throwable {
            String s = new String(bytes, encoding);
            equal(s.length(), 1);
            check(Arrays.equals(s.getBytes(encoding), bytes));
            return s;
        }
    
        private static void realMain(String[] args) throws Throwable {
            final byte[] bytes = new byte[1];
            int differences = 0;
            for (int i = 0; i < 0xff; i++) {
                bytes[0] = (byte) i;
                final String r = decode(bytes, "KOI8_R");
                final String u = decode(bytes, "KOI8_U");
                if (! r.equals(u)) {
                    differences++;
                    final char rc = r.charAt(0);
                    final char uc = u.charAt(0);
                    final UnicodeBlock rcb = UnicodeBlock.of(rc);
                    final UnicodeBlock ucb = UnicodeBlock.of(uc);
                    System.out.printf("%02x => %04x %s, %04x %s%n",
                                      i, (int) rc, rcb, (int) uc, ucb);
                    check(rcb == UnicodeBlock.BOX_DRAWING &&
                          ucb == UnicodeBlock.CYRILLIC);
                }
            }
            equal(differences, 8);
        }
    
        //--------------------- Infrastructure ---------------------------
        static volatile int passed = 0, failed = 0;
        static void pass() {passed++;}
        static void fail() {failed++; Thread.dumpStack();}
        static void fail(String msg) {System.out.println(msg); fail();}
        static void unexpected(Throwable t) {failed++; t.printStackTrace();}
        static void check(boolean cond) {if (cond) pass(); else fail();}
        static void equal(Object x, Object y) {
            if (x == null ? y == null : x.equals(y)) pass();
            else fail(x + " not equal to " + y);}
        public static void main(String[] args) throws Throwable {
            try {realMain(args);} catch (Throwable t) {unexpected(t);}
            System.out.printf("%nPassed = %d, failed = %d%n%n", passed, failed);
            if (failed > 0) throw new AssertionError("Some tests failed");}
    }

    https://github.com/AdoptOpenJDK/openjdk-jdk11/blob/master/test/jdk/sun/nio/cs/UkrainianIsNotRussian.java

    Запостил: j123123, 21 Февраля 2019

    Комментарии (158) RSS

    • Где бы этот «bug 4890726» почитать… Там явно есть что-то интересненькое.
      Ответить
      • https://bugs.openjdk.java.net/browse/JDK-4890726
        Ответить
        • Никакой багор (((
          Ответить
        • Значит, «KOI8-U» в «JDK» включить забыли, а в «KOI8-R» нет букв «ґ», «є», «ї», «і».

          А в 2019-м году в «Java» кто-нибудь пользуется восьмибитными кодировками?
          Ответить
          • конечно, как иначе запускать джаву в win95 или линуксовой консоли без фреймбуфера?
            Ответить
            • Поди ещё на «Микроше» и на «Корвете» не запустится.
              Ответить
              • вообще я понимаю боль автора

                OpenJDK это стопудово линукс
                линукс в 2003 году это стопудово KOI потому что настраивали его без всякого понимания по мануалу на citforum от 1998 года
                Ответить
                • Судя по тому, что некоторые программы на «Винде» и сейчас нежелательно устанавливать в директорию, имя которой содержит нелатинские символы, привычка всё делать по старым мануалам не ограничивается «Линуксом» и 2003-м годом.

                  Был почтовый сервис http://е-письмо.рф/ –— не взлетел. С таким ящиком нельзя было зарегистрироваться на форумах ни как вася@е-письмо.рф, ни как %D0%B2%D0%B0%D1%81%D1%[email protected]. А всё потому, что кто-то всё делает по старым мануалам.
                  Ответить
                  • лучше не использовать длинные имена папок и пробелы
                    рул о самб
                    Ответить
                    • LEHA, LEHA, TY MOGU^.
                      MOVET DAVE ZLOEBU^.
                      Ответить
                      • тоже вспомнил лёху

                        какой это год? 2003й?
                        Ответить
                        • «Офис XP». Файл «cdrimp32.flt». В 2004-м году на форумах это уже называли баяном.
                          Ответить
                          • да, помню как чел притащил это на sysadmins как раз году в 2004м и там ему сказали что идея не свежа

                            ну XP этогод типа 2002й

                            Интересно, где сейчас тот Лёха?
                            Ответить
                  • Не нелатинские, а символы которых нет в 8битной кодировке (типа русских символов на английской винде). Да че там, прыщеговно нельзя ставить в путь с пробелами.
                    Ответить
                    • прыщеговно ставить можно, но лучше не нужно: придется аскейпить
                      Ответить
                      • Нельзя. Сигвин в program files не работает, пришлось в корень в папку "прыщеговно".
                        Ответить
                        • а, ты про ссцыгвин, то да

                          в чистом лялихе можно указывать кодировку при прикручивании файлосимстемы

                          ну надо конечно чтобы у клиента коидровка тоже такаябыла
                          Ответить
                          • Вроде была проблема с make. Он не может правильно распарсить правила в makefile, если попадаются пути с пробелами.
                            Ответить
                          • А цвгвин то не прыщеговно типа.
                            Ответить
                            • у тебя какое-то непонятное определение прыщеговна

                              если прыщеговно это линукс, то в цигвине линукса нет
                              Ответить
                              • Классический уход линуксоидов от ответственности:

                                Когда про уязвимости - то линукс - это ядро
                                Когда про функционал - то линукс - это навороченные дорогие коммерческие дистрибутивы
                                Когда про цену - то линукс - это бесплатные сборки с минимальным функционалом и без поддержки
                                Когда про аналоги - это "в принципе можно дописать в любой момент, а до сих пор никто не сделал потому что нахуй никому не надо"

                                Так и живут враскоряку, бедные, постоянно наизготовку соврать и лихорадочно думая, чтобы соврать именно то, что надо в данный момент.
                                Ответить
                      • > эскейпить
                        Ага. И надеяться, что во всех сборочных скриптах не забыли это сделать.

                        Имхо, проще для разработки юзать пути без пробелов. Даже на венде. Зачем себе грабли раскладывать?
                        Ответить
                        • представляешь сколько боли принесли "c:\documents and settings"?
                          Ответить
                          • Именно поэтому в «Висте» создали директорию «C:\Users» без пробелов.
                            Ответить
                          • Путь еще в некоторых виндах локализованный был.
                            Ответить
                    • Я спотыкался о русские символы в русской винде. Уже не помню, что за софт такой был.
                      Ответить
                      • спотыкнуться можно. пути в файловой системе кодируются в cp866 (Во всяк случае в fat32).

                        есть вероятность отсосать если кодировка 1251 и ты пытаешься передать ее куда-нить в стандартную библиотеку не знающую таких вещекй
                        Ответить
                        • Винапи с A на конце 1251 и принимало.
                          Ответить
                          • ну оно принимало если у тебя "кодировка для однобайтовых программ" стоит правильная

                            а если ты перенесешь это на какую-нить чешскую винду или греческую то будет может и пиздц
                            Ответить
                            • В некотором софте проблема была, даже если на чужую винду не переносить. В старых версиях «Delphi» файловые функции зачем-то по поводу и без повода гоняли функции OemToAnsi и AnsiToOem, которые на русской Винде переводили из 1251 в 866 и обратно. Т. е. программист отправлял имя в правильной кодировке, а библиотека «Delphi» его ещё раз перекодировала.
                              Ответить
                              • как в рашенапаче))

                                зачем вооще дельфи cp866 кроме как для файла?
                                Ответить
                                • Я уже не помню. Вероятно, разработчики библиотеки предполагали, что ты исходник будешь набирать в досовском редакторе (например, в синенькой IDE на «Turbo Vision»), поэтому он у тебя будет в 866 (OEM), а не в 1251 (ANSI). Хотя в то же время сами для формошлёпства наклепали гуёвую IDE, которая сохраняет в 1251 (ANSI).

                                  Похоже, что новую IDE и библиотеку делали разные отделы.
                                  Ответить
                        • В FAT (12/16/32) для каждого файла в каталоге создавались две записи: одна в формате DOS (8.3, cp866), другая в формате VFAT (длинное имя, кодировка UCS-2 или UTF-16, т. е. юникодное).

                          Винда смотрела досовскую запись, только если длинное имя отсутствовало или было запорото.
                          Ответить
                          • а с "а на конце"?
                            Ответить
                            • Смотри пример: у одной директории есть имена «Program Files» (в юникоде) и «PROGRA~1» (в кодировке 866); у другой «Мои документы» (в юникоде) и «МОИДОК~1» (в кодировке 866).

                              Если бы функция «с A на конце» не умела читать юникодные имена, она не смогла бы обработать запросы к «Program Files» и к «Мои документы». Внутри функциям «с A на конце» приходилось совершать нелепую операцию: расширять входную строку в локальной кодировке до юникода (возможно, это расширение происходило где-то в недрах драйвера файловой системы).
                              Ответить
                              • P.S. Ну а FindFirstFileA приходилось наоборот найденное имя зожимать до локальной кодировки.
                                Ответить
                              • ЕМНИП в NT в драйвер фойловой системы (как и всякий дройвер который жаждет предоставить дсотуп к какому-то объекту менеджеру IO) получает зопрос IRP_MJ_CREATE с пораметром FILE_OBJECT,а там имя это UNICODE_STRING

                                Потому что внутрях винды все unicode.

                                Так что я думаю что A функция превращала чаровую строку в wchar_t "МОИДОК~1" а дорайвер ФС просто знал что у объекта два имени

                                Думаю тут броманд доолжен знать, он вроде кишки винды ковырял
                                Ответить
                                • Внешне оно работало примерно одинаково и в «Windows 95», и в «Windows NT». Где именно происходило преобразование, интересно только писателям драйверов файловых систем. Кстати, был неофициальный драйвер ext2.vxd. Если его кинуть в соответствующую директорию «Windows 95», он автоматически монтировал разделы ext2. Значит, как минимум, его писатели знали, как всё работает.

                                  *****

                                  Представь себе, что ты по ошибке создал директорию «Цыплёнок» и хочешь переименовать её в «Индюшонок». Вызываешь MoveFileA("Цыплёнок", "Индюшонок");

                                  Что будет дальше? Мои догадки:
                                  1. "Цыплёнок" из 1251 будет преобразована в Unicode.
                                  2. Драйвер будет искать "Цыплёнок" в Unicode.
                                  3. Если не найдёт (например, директория была создана в голом DOS), преобразует в 866 и будет искать "ЦЫПЛЁНОК" (хотя он и в предыдущем пункте будет искать так же, ибо в Винде файлы регистронезависимы).
                                  4. Теперь нужно переименовать. Второй аргумент ("Индюшонок") будет преобразован из 1251 в Unicode.
                                  5. Длинное имя будет заменено на "Индюшонок". Если его не было (директория была создана в голом DOS), оно будет создано.
                                  6. Для совместимости с DOS нужно обновить и короткое имя. "Индюшонок" будет преобразовано в 866, затем в верхний регистр. Если не влезло в 8 символов или есть символы, запрещённые в DOS, имя будет усечено с добавлением тильды и произвольного числа для предупреждения коллизий. В данном случае нужно будет записать "ИНДЮШО~1".

                                  Windows NT, в отличие от 95, уже не всегда генерирует осмысленные короткие имена. Вместо "ИНДЮШО~1" она может сгенерировать "65A8FC~1". Какой багор)))
                                  Ответить
                                  • P.S. Итого простая операция MoveFileA выполняла следующие преобразования:
                                    1. Первый аргумент 1251→Unicode.
                                    2. Опционально Unicode→866 (если длинное имя не найдено).
                                    3. Второй аргумент 1251→Unicode.
                                    4. Unicode→866 (для генерации короткого имени).

                                    Функция MoveFileW тратила меньше сил, ибо аргументы уже были в Unicode.
                                    Ответить
                                    • В моей Win10 x64 MoveFileA() вызывает MoveFileWithProgressTransactedA(), в которой для обоих аргументов вызывается Basep8BitStringToDynamicUnicodeString(), после чего управление передаётся в MoveFileWithProgressTransactedW(), в которой и происходят всякая питушня (в частности, для имён файлов вызывается RtlDosPathNameToNtPathName_U(), а после некоторой обработки происходит само перемещение обычной связкой BasepCopyFileExW() — DeleteFileW()).
                                      Ответить
                                  • Слушай, ну что MoveFile что MoveFileA все равно под капотом вызовет NtCreateFile

                                    А тот получит ObjectAttributes с полем
                                    PUNICODE_STRING ObjectName

                                    То-есть дальше уже всё целиком уникодное.

                                    Все отличие A и не A в том, что A получит обычные чары и преобразует их в юникод (в соответствие с однобайтовой страницей в настройках пинды), а без А ничо преобразовывать не надо.


                                    Колгда это все достигнет драйвера ФС, тот прочтет юникодное имя, возьмет volume к которому он подключен (в случае простого диска с MBR это просто будет смещение по диску) и пойдет уже читать оттуда байтики через драйвер диска.

                                    А вот как он эти байтики интерпретирует -- это его дело. Может хоть EBDICом их считать.

                                    И я думаю что он поищет сначала Цыплёнок(двбайтовый) а потом ЦИПЛЁН~1 в однобайтовой кодировке

                                    Но вообще надо MSDN читат как минимум
                                    Ответить
                                    • >> Слушай, ну что MoveFile что MoveFileA все равно под капотом вызовет NtCreateFile

                                      >> А тот получит ObjectAttributes с полем
                                      PUNICODE_STRING ObjectName

                                      На NT понятно. Но самое смешное, что в «Windows 95» была та же семантика, хотя никакого ntoskrnl не было.
                                      Ответить
                                    • >> он поищет сначала Цыплёнок(двбайтовый) а потом ЦИПЛЁН~1 в однобайтовой кодировке

                                      Неверно. Он сначала поищет Цыплёнок (двубайтовый), а потом ЦЫПЛЁНОК в однобайтовой кодировке.

                                      ЦЫПЛЁН~1 он искать НЕ будет, если мы явно именно так с тильдой не попросим найти.

                                      *****

                                      С этим связан прикол. В реестре путь к «Program Files» в некоторых местах прописан как «C:\Program Files», а в некоторых как «C:\PROGRA~1». В свежеустановленной винде обычно они соответствуют одной и той же директории, поэтому никаких проблем юзер не замечает.

                                      Сценарий диверсии:
                                      1. Временно переименовываем «Program Files» в «Pituh».
                                      2. Создаём «C:\Programms». В 8 символов не уложились, поэтому создастся короткое имя «C:\PROGRA~1» (других директорий, начинающихся на «PROGRA» сейчас в корне нет, поэтому будет единичка).
                                      3. Переименовываем «Pituh» обратно в «Program Files». Поскольку «PROGRA~1» уже занято, будет создано короткое имя «PROGRA~2».
                                      4. Итог: «PROGRA~2» связано с «Program Files», а «PROGRA~1» связано с другой директорией.

                                      Теперь у нас «PROGRA~1» и «Program Files» соответствуют разным директориям.
                                      Ответить
                                      • > В реестре путь к «Program Files» в некоторых местах прописан как «C:\Program Files», а в некоторых как «C:\PROGRA~1».
                                        Какой же адский багор. Уже много лет Microsoft ратуют за использование «SHGetKnownFolderPath()», а сами продолжают хардкодить пути в сраном «8.3», сдохшем задолго до рождения многих современных программистов?
                                        Ответить
                                        • SHGetKnownFolderPath можно использовать не везде. В некоторых местах нужно указывать полный путь (да, можно создать значение типа REG_EXPAND_SZ, но тогда придётся предварительно заносить имена общеизвестных папок в переменные окружения, чтобы было что подставлять).

                                          «MS Office» и адобовские продукты любят срать в реестр путями в формате «8.3». Ещё инсталяторы зачастую прописывают пути к деинсталяторам в таком же формате.
                                          Ответить
                                          • > но тогда придётся предварительно заносить имена общеизвестных папок в переменные окружения
                                            Ну, всякие %ProgramFiles, %AppData%, %SystemRoot%, %Temp% и им подобные вроде как уже сто лет в винде существуют.

                                            > «MS Office» и адобовские продукты любят срать в реестр путями в формате «8.3». Ещё инсталяторы зачастую прописывают пути к деинсталяторам в таком же формате.
                                            Печально всё это.
                                            Ответить
                                  • Глянь, какой багор ))):
                                    https://blogs.msdn.microsoft.com/arvindsh/2013/06/19/debugging-story-slowness-due-to-ntfs-short-file-8-3-name-generation/

                                    И вот оттуда ссылка:
                                    https://support.microsoft.com/en-us/help/121007/how-to-disable-8-3-file-name-creation-on-ntfs-partitions
                                    Ответить
                                    • Ты разраб под винду?
                                      Ответить
                                    • справедливости ради надо сказать что отключать disable8dot3 через fsutil учили еще аникейщиков, примерно так же прыщеводы знают про atime.

                                      А вот на кой хуй он включен по умолчанию на win10 в моем 2019 году я хз.
                                      Ответить
                                      • На съёмных носителях короткие имена (в формате 8.3) генерировали в целях совместимости со старыми ОС, однако, дискеты были в формате FAT12, флешки –— в форматах FAT16 (до 2...4 ГБ) и FAT32 (до 32 ГБ). В NTFS дискеты и флешки никто не форматировал.

                                        Допустим, на картах памяти с файловой системой FAT короткие имена нужны, чтобы их видел фотоаппарат или плеер.

                                        На NTFS короткие имена могли быть задействованы в следующих случаях:

                                        1. Досовской программой, запущенной из-под NTVDM. Сейчас неактуально, поскольку в 64-битных виндах нет NTVDM (неофициальный проект NTVDM64 сейчас не рассматриваем).

                                        2. Досовской программой, запущенной через эмулятор (DOSBOX и всякие виртуалки). Однако, в этом случае генератор коротких имён можно встроить в сам эмулятор. Нет никакой нужды поддерживать его системой.

                                        3. DOS'ом через неофициальный драйвер NTFS. Однако, и в этом случае генератор коротких имён можно встроить в драйвер.

                                        И правда, на NTFS генерировать короткие имена сейчас нет смысла. Разве что ради всякого говна, которое любит прописываться в C:\PROGRA~1, но на этот случай можно сделать симлинк (или directory join).
                                        Ответить
                            • Ты теперь представляешь, что такое «Windows 95»? С одной стороны, апгрейд FAT до юникодных имён файлов, юникодные шрифты, «Офис 97» с юникодным текстом. С другой стороны, функции с A на конце.
                              Ответить
                      • у меня помню какой-то дельфи-говнософт на винде не работал, если там десятичный разделитель выставлен как ","
                        а если выставить "." то работает
                        Ответить
                        • В более "продвинутом" говнософте обычно заменяли точки на сепаратор из локали.

                          З.Ы. Kerbal Space Program падал на линупсах с аналогичной ошибкой. Так что и на C# на те же самые грабли с локалями наступают...
                          Ответить
                          • А все потому что в России запятая а в западных странах -- точка.


                            Борманд, как в прыщах получить дерево устройств не ковыряя вручную /sys и не вызывая охулиард ls{pci,scsi,usb}?

                            Почему в windows у меня есть device manager с "show by connection", в bsd у меня есть сообщения в dmesg типа "pci0 at acpi0, uhci0 at pci0" и в linux у меня хуй да нихуя?
                            Ответить
                            • >> А все потому что в России запятая а в западных странах -- точка.

                              В западных –— это в США и в Великобритании.

                              Страны, принявшие нормы ISO, пишут запятую.
                              Ответить
                              • а какие еще бывают сесепарараратороы?
                                Ответить
                                • https://en.wikipedia.org/wiki/Decimal_separator

                                  У арабов свой сепаратор, но у них и цифры другие (хотя мы свои цифры называем арабскими).

                                  В довоенных академических британских журналах я видел точку, поставленную в середине строки. Вот так, например: 3·14159265. И это не умножение, а именно сепаратор.

                                  В Канаде жопа. В Квебеке и в прочих франкоговорящих провинциях используют запятую, mon tabarnac! А в англоговорящих –— точку.

                                  Подозреваю, что швейцарец Никлаус Вирт использовал в «Паскале» не родную запятую, а точку и английские ключевые слова, чтобы сделать его популярным в США, иначе «Бройлер Паскаля» и «Дельфи» мы бы не увидели. Хотя с другой стороны, язык с циклом в стиле «für i:=0 nach 9» мог бы заинтересовать «SAP»...
                                  Ответить
                                  • у арабов другие цифры
                                    https://cs6.pikabu.ru/images/previews_comm/2015-04_1/14282411913728.jpg


                                    а SAP разве на немецком?


                                    Кстати, про швейцарский немецкий.
                                    Когда вводили печатномашинки то легатура эсцет (которая заменяет у немцев SS, Сёма это так?) не нашла места в швейцарии, ведь там пришлось освобождать место для хранцузских буков

                                    И с тех пор немцы пишут эсцет, а швейцарцы пишут SS (Роман, это так?)

                                    Так вот в 17 мговениях весны Блюменштрассе в Швейцарии написано через легатуру эсцет
                                    И это клюква! Швейцарцы её не используют
                                    Ответить
                                    • >> у арабов другие цифры

                                      Причём есть ещё персидский вариант (начертание пары значков отличается).
                                      Ответить
                            • lshw ?
                              Ответить
                              • показывает токма шины

                                блядь, вот хоть садизь и пиши сам.
                                Ответить
                        • Я против использования "," как "десятичного разделителя", "," —– это разделитель элементов в списке.
                          Ответить
                          • Помню как преподы, чтобы как-то убрать эту неоднозначнось, писали запятые разного размера. (на доске или в тетради)
                            Ответить
                            • Это уже как какая-то типографика из школы дизайнеров. Как с чёрточками: дефис, символ переноса, разделитель в номере телефона, минус, короткое тире, длинное тире, ещё 100500 питушарских символов, которые на практике всё равно перепутают.
                              Ответить
                          • Полностью поддерживаю.
                            Ответить
                          • А мне нравится. Только тогда нужен такой синтаксис списков, чтобы не путать. Например, разделять элементы списка точкой с запятой или придумать что-нибудь со скобками.
                            Ответить
                            • > нужен такой синтаксис списков, чтобы не путать
                              Например в '(LISP) {TCL} и [Red] вообще нет разделителей, всё пишется через пробелы.

                              В "Red" кстати можно использовать в дробях и "," и ".", а ещё в нём 3 или более числа разделённых точкой —– это кортеж (с запятыми, почему-то, такого нет). Кстати, в {Red} полно разных 'литералов на все случаи жизни:
                              Red []
                              
                              write %red-literals.html read/binary https://tio.run/##[email protected]@[email protected]@jcZNi5CSuEEY7wSUivAdrwHE856/[email protected]@ONs/X8QU7DQUgF9X/[email protected]zBTsIsL8/[email protected]/YYvW7EB9cZ3Aweu4NbixOqzdv2Lao3bYf
                              
                              a: [
                                42
                                3.1415
                                2,7182
                                2.6.5
                                127.0.0.1
                                255.255.255.255.255
                                word
                                :get-word
                                set-word:
                                'lit-word
                                "string"
                                {string}
                                #"C"
                                (paren)
                                [block]
                                this/is/path
                                %../../../etc/passwd
                                http://govnokod.ru/
                                [email protected]
                                00:30:00
                                13-09-2019
                              ]
                              
                              foreach i a [
                                probe reduce [i type? i]
                              ]
                              Ответить
                          • если ты низкоуровневый то ты говоришь не про то.
                            Давай лучше вот про что:

                            ты знаешь что разгонять проц увеличивая множитель можно пися в MSR регистры через wrmsr?

                            wrmsr можно только с нулевого кольца, так что нужен драйвер (Intel Xtreme Tuning так делает, и фирмвари иногда тоже умеют).

                            Драйвер следит чтобы к нему через ioctl обращались только админы, так что разогнать проц может только админ. в Linux Драйвер экспортит MSR в /dev/cpu, но и там нужно быть rootом.

                            А вот как дела с виртуалками? Я так понимаю что в VMCS (структуре данных которую гипервизор заполняет перед запуском виртуалки) есть поле MSR Bitmap, посредством которого указывается какие MSR можно виртуалке трогать.

                            Выходит что обычной виртуалке (не главной) никак не разогнать проц?

                            То-есть сломать железо из витуалки никак нельзя?
                            Ответить
                            • > если ты низкоуровневый то ты говоришь не про то
                              Я хотел пиздеть про осемблеры, форты, сишки, но как зарегал файку почему-то всё прошло.

                              > То-есть сломать железо из витуалки никак нельзя?
                              Ну не зря же виртуалки придумали. Хотя, может быть и можно, но Крис умир, а борманд молчит,не у кого спросить.

                              А вообще-то я своим петушиным моском нихуя не понял, что ты нопейсал. Что делает Вирт у Аллки?
                              Ответить
                            • Сброс множителя от перегрева, емнип, аппаратный и не отключается. Так что и с хоста не сломаешь. Разве что повесишь.
                              Ответить
                              • а что будет если поднять напряжение, все равно не сгорит?
                                Ответить
    • Путин - хуйло!
      Ответить
      • Простите?
        Ответить
      • Не кокококомпилируется:
        https://ideone.com/aTABMJ

        Оператор "-" для строк в «Java» не определён, а перегрузки операторов в этом языке нет.
        Ответить
        • а + переопределен

          Путин + хуйло

          работает
          Ответить
        • #include <stdio.h>
          
          int main(void)
          {
              puts("Путин" - "хуйло");
              return 0;
          }
          Segmentation fault.

          Я не понял, мой конплукхтер за Путена? То ли дело "DOS".
          Ответить
        • Если не рассматривать морально-политические аспекты, у автора было два идентификатора, а не две строки. Соответственно, если это числа, то минус вполне оправдан. Вот с восклицательным знаком будет проблема.
          А если считать, что это строки, то можно вообще всё в строку записать и радоваться.
          system.out.println("Миру - мир!") - и ни минус, ни восклицательный знак не мешают.
          Ответить
          • > Вот с восклицательным знаком будет проблема.
            Может быть автор вычел Путена из того что лежало в стеке, и сохранил результат по адресу хуйла.
            Ответить
          • А если смотреть с точки зрения математики, то из Путена вычли факториал хуйла.
            Ответить
            • В "PHP" нет ни Путина, ни хуйла, ни факториала. Поэтому я за "PHP".
              Ответить
    • equal(differences, 8);

      Константа Сёмы.
      Ответить
    • NikogdaMiNeBudemBratjami.java
      Ответить
    • Была же история про чувака который по заказу MS делал cp866.
      Он старался вместить туда все буквы восточнославянских алфавитов чтобы получить одну кодь, точнее говоря такова была его задача от MS.

      У украинцев и беларусов была І.
      У украинцев кроме того была Ї и Є (но не было Ы, твердого знака и Ё), а у беларусов была Ў (но не было И, и Ё (в отличие от русского) был не опционален).
      У русских была И и Ы, но не было ни І ни Ї и, теоретически, можно было забить на Ё.

      В итоге все удалось впихнуть в однобайтову кодстраницу.

      И тут вдруг Украина ввела букву Ґ. Отличие от обычной буквы Г которая фрикативна (читается как такое кхэ) новая буква читалась мягко.

      Места букве не было, и украинцы приняли свою кодировку, выкинув на мороз букву Ў (русские буквы выкидывать было стремно -- слишком много на русском текстов, а белорусский язык их мало волновал)

      В итоге получилось две разных кодировки. Таким образом чувак задание завалил.


      А KOI, чья прелесть была лишь в том, что при обрезании восьмого бита получился cudesni volopuk, kotori vse ese mozno citat, утеряла свой смысл ровно в тот момент когда в прыщи завезли фреймбуфер.

      В последнее время граф. сосноль завезли даже в бзду.

      Это я уж молчу о том, что последние 20 лет 99% прыщеводов не вылазит из иксов и им там проблемы однобайтовой хуйни вообще не интересны
      Ответить
      • >> cudesni volopuk, kotori vse ese mozno citat

        ^udesnyj [email protected], kotoryj wse e]e movno ^itatx.

        Кстати, некоторые украинцы не знают, что у них в раскладке есть «Ґ». Они даже не знают, в каких словах (кроме «ґавно») она употребляется.
        Ответить
        • лол, ты не поленился типа энднуть с 7F?
          Ответить
          • Я наизусть помню некоторые соответствия. Вот сейчас честно пишу по памяти, проверяй: в=w, ж=v, й=j, ц=c, ч=^, ш=[, щ=], ъ=_, ы=y, ь=x, э=\, ю[email protected], я=q.

            Знакомство компьютером с кодировкой «КОИ-7» и клавиатурой с раскладкой «JCUKEN» не прошло бесследно.
            Ответить
            • питончик< например
              >>> "".join(chr(b & 127) for b in "моя набайтойобил, гляди".encode("koi8-r"))
              'MOQ NABAJTOJOBIL, GLQDI'
              Ответить
              • блядь, как вставить кириллицу из буфера в ipython?
                Ответить
                • Никак, используй «python» без обвеса.

                  Кириллицу и другие юникодные символы портит хуйлайтер.
                  Ответить
                  • Или ipython без хуйлайтера:
                    ipython --simple-prompt

                    В таком режиме кириллица вставляется.
                    Ответить
                    • Выяснил, что глючит пакет pygments. Нашёл в нём файл unistring.py с регэкспами для юникодных символов. В нём такой комментарий:
                      Used for matching in Unicode-aware languages. Run to regenerate.

                      Запустил его, чтобы он перегенерировал регулярки. Теперь кириллица с хуйлайтером вставляется, латиница нет.

                      Какой багор )))

                      Чувствую, что исходники пакета «Pygments» можно целиком публиковать на «Говнокоде».

                      В общем, запускайте пока ipython без него (с ключом --simple-prompt).
                      Ответить
                      • >кириллица с хуйлайтером вставляется, латиница нет.
                        То же самое если раскладку клавиатуры поменять.

                        >--simple-prompt)
                        Это с какой версии?
                        Ответить
                        • Соответствующая опция конфига появилась в 5.x:
                          TerminalInteractiveShell.simple_prompt : Bool
                          
                              Default: True
                          
                              Use raw_input for the REPL, without completion and prompt colors.
                          
                              Useful when controlling IPython as a subprocess, and piping STDIN/OUT/ERR. Known usage are: IPython own testing machinery, and emacs inferior-shell integration through elpy.
                          
                              This mode default to True if the IPY_TEST_SIMPLE_PROMPT environment variable is set, or the current terminal is not a tty.

                          https://ipython.readthedocs.io/en/5.x/config/options/terminal.html

                          В документации по 6.x уже появилась строчка «CLI option: --simple-prompt»:
                          https://ipython.readthedocs.io/en/6.x/config/options/terminal.html

                          В четвёрке не было ни того, ни другого.
                          Ответить
                          • У меня четверка, мне не понравился автокомплит в последней версии и я откатился назад.

                            >without completion
                            Точно нахуй.
                            Ответить
                  • Та ты ебнулся? Там даже комплита нету.
                    Ответить
                    • юзай пушарм
                      там есть комплит в коносли путона без ипутона
                      Ответить
                      • Пушарм вроде бы ему не подходил по каким-то системным требованиям.
                        Ответить
                        • >по каким-то
                          Хуясе. Это самая прожорливая IDE которую я видел.
                          Ответить
                        • плохо работает на Pentium 4 Coppermine с 256Мегабайт RAM под управлением Windows XP
                          Ответить
                          • Ещё бы! Она же написана на «Java».
                            Ответить
                            • Visual Studio 2017 не написана на Java. Знаешь сколько она грузитс?
                              Ответить
                              • Именно поэтому я за "Geany".
                                Ответить
                              • Секунд 5-10. Плюс несколько минут если у тебя дохуищща проектов и файлов.

                                З.Ы. Кстати, по ощущениям она шустрее предыдущих и её реже фризит.
                                Ответить
                                • Борманд, ты со своим коффелейк, DDR4 и еще небось с NVME сюда пришел, да?

                                  мы говорил про Сёму, у которого комп с помойки

                                  У тебя и PyCharm загрузится за 4 секунды


                                  ах да, чуть не забыл: поставь себе R#. И замерь время загрузки
                                  Ответить
                                  • > R#
                                    Впизду его. Я не дождусь пока он распарсит файлы.
                                    Ответить
                                    • отож)

                                      а без него толку с той студии как с козла молочка
                                      Ответить
                                      • > толку
                                        А что в R# есть реально полезного помимо рефакторинга?
                                        Ответить
                                  • > кофелейк
                                    Не, это на хасвелле.

                                    > nvme
                                    Обычный ssd.
                                    Ответить
                                    • ну все равно

                                      у сёмы, как мы помним, даже AHCI нету
                                      Ответить
                              • А кто тебя заставляет ставить именно 2017?
                                Ответить
                                • ну 2015, какая разница?
                                  Ответить
                                  • У меня 2012 была, кажется. Работала сносно. С pycharm рядом даже не стояла, даже с решарпером.
                                    Ответить
                          • пиздабол тут ты
                            Coppermine это Petnirum III
                            А P IV это Northwood
                            Ответить
            • q NAIZUSTX [email protected] NEKOTORYE SOOTWETSTWIQ. wOT SEJ^AS ^ESTNO PI[U PO PAMQTI,
              Ответить
              • dA, TY PRAW. bOLX[IE I MALENXKIE BUKWY NAOBOROT, A E]E "[" - \TO "ш", A "{" - \TO "Ш"; "\" - \TO "э", A "|" - \TO "Э". nU I TAK DALEE.

                pROSTO W "koi-7" SIMWOLOW `{|}~ NE BYLO, PO\TOMU Q IH NE SRAZU WSPOMNIL.
                Ответить
        • некоторые украинцы и на украинском-то пишут примерно как Лесь Поддервянский
          Ответить
        • Надо, чтобы естественные языки разрабатывали те, кто разрабатывает искусственные.
          С искусственными языками по мере накопления опыта понимаешь, где нормально, а где говно, из-за которого программирование превращается в лютый ад.
          А в естественных всё время "кококо, это наше наследие" и "кококо, а мне норм, я привык".
          Например, питушню с запятыми в русском языке надо жестоко давить гидравлическим прессом.
          Ответить
          • > Например, питушню с запятыми в русском языке надо жестоко давить гидравлическим прессом.
            А что с ней не так? Абсолютное большинство запятых вполне чётко определяют место, в котором при прочтении будет стоять пауза.
            Ответить
            • Много упоротых правил. Ещё коварные слова, которые не то прилагательные, не то причастия, не то ещё какое говно, из-за которых запятую просто так не поставишь. Да и в причастных оборотах она иногда стоит, а иногда - нет. Неконсистентное говно со 100500 правилами, которые не запомнишь.
              Ответить
              • Мне очень нравится, когда твой владелец переходит на тебя; на мой взгляд, ты - самая удачная его файка.
                Но не кажется ли тебе обидным, что он пишет также и с других фаек, коих у него целый гарем?
                Ответить
                • Основная учётка - всегда самая удачная файка.
                  Ответить
                • читая твои пёрлы создаётся впечатление полной твоей безгрещности - на фоне содмии других. Ты бы хоть постеснялся писать такое, хотя бы потому, что у тебя не меньше ботов, взять хотя бы меня. Поставил минус патрону.
                  Ответить
              • Ну хуй знает. Большинство этих правил просто формализуют то, как текст чисто интуитивно читается, а паузы, в свою очередь, передают важную часть смысла.
                Ответить
          • 1023 опять троллит ради троллинга. Игнорируйте его.
            Ответить
          • --скажи, зачем вам этот ебланиский this в JS?
            --кококо, это наше наследие
            Ответить
            • –— Скажи, зачем вам этот препроцессор в «C» и в «C++»?
              —– Кококо, это наше наследие!
              Ответить
              • –— Скажи, ты понимаешь что из за отсутствия препроцессора в Java ты вынужден двадцать раз писать одно и тоже?
                —– Кококо, зато стабильно. Мне препод говорил что препроцессор говно
                Ответить
                • Уже представил код на «Java» с дефайнами, пропускаемый через «cpp»...

                  А вообще в «Java» уже лет 15 как есть генерики.
                  Ответить
                  • >препроцессор
                    >генерики

                    ну ты правда что ли?
                    Ответить
                    • А давай перечислим случаи, когда в сишке используется препроцессор. Ты сам упомянул про «двадцать раз писать одно и то же», значит, одно из применений –— эмуляция обобщённого программирования.

                      Ещё препроцессор используется для эмуляции констант, потому что в старой сишке не было слова «const».

                      Ещё препроцессор используется для эмуляции модульной системы: прототипы функций копируются в h-файлы.

                      Для чего ещё?
                      Ответить
                      • Обобщи мне такое программирование на джаве, пожалуйста
                        #ifdef PITUH
                        #include <petuh.h>
                        #endif
                        
                        void doAll() {
                        #ifdef PITUH
                          petuxPrefix();
                        #endif
                         koko();
                         pepe();
                        }


                        Компилируется как на черных зонах -- платформах где есть петухи, так и в колониях-поселениях где сидят фраера и никаких питухов там нету
                        Ответить
                        • «Java» –— принципиально объектно-ориентированный язык, причём с наследованием реализации.

                          Создаём класс для колонии-поселения без петухов, а от него наследуем класс для чёрной зоны с петухами.
                          Ответить
                          • В "C++" тоже так можно, но кода получается много кода, впрочем как и в "Java", впрочем как и везде где используется ООП:
                            #include <stdio.h>
                            
                            struct AbstractBasePetuh
                            {
                                virtual void kukarek(void) = 0;
                            };
                            
                            struct BasePetuh : AbstractBasePetuh
                            {
                                void kukarek(void) override
                                {
                                    puts("Сижу на насесте в темнице сырой.\n"
                                         "Вскормлённый в неволе петух молодой,");
                                }
                            };
                            
                            struct Petuh : BasePetuh
                            {
                                void kukarek(void) override
                                {
                                    BasePetuh::kukarek();
                                    puts("Безумный товарищ, махая крылом,\n"
                                         "Жирную жабу клюёт под окном.");
                                }
                            };
                            
                            int main(void)
                            {
                                Petuh petuh;
                                petuh.kukarek();
                                return 0;
                            }
                            Ответить
                          • покажи мне реализацию метода doAll
                            Ответить
            • Жс за 20 с лишним лет вон как поменялся. В русском языке за это время только неумело заимствовали слово "блоггер", потеряв букву.
              Ответить
      • > Места букве не было, и украинцы приняли свою кодировку, выкинув на мороз букву Ў
        Напомнило анекдот про то, как из-за одного слова создали новый язык.
        https://vinauto777.livejournal.com/21145.html
        Ответить
        • Мокшанские анекдоты :) Когда Киев был, в Москве на болоте лягушки квакали.
          Ответить
        • Т.е. из-за одного слова вопят о насильстенной украинизации? :)
          Ответить
    • NASTOQ]EMU @NIKSOIDU HWATIT SEMI BIT
      Ответить
      • nASTOQ]EMU INDEJCU NUVNO TOLXKO ODNOGO,
        dA I TO SOWSEM NEMNOGO, DA PO^TI ^TO NI^EGO.
        eSLI TY, ^UWAK, INDEEC, TY NAJDE[X SEBE OTTQG.
        nASTOQ]EMU INDEJCU ZAWSEGA WEZDE NI[TQK.
        Ответить
        • Кстати, большим аполгетом кои был Аче

          https://tools.ietf.org/html/rfc1489
          Author's Address
          
             Andrew A. Chernov
             RELCOM Development Team
             Moscow, Russia
          
             EMail: [email protected]
             FIDOnet: 2:5020/23.34


          Совершенно ебанутый чел, бывший коммитер freebsd, не так давно умер:(
          https://upload.wikimedia.org/wikipedia/ru/1/10/%D0%90%D0%BD%D0%B4%D1%80%D0%B5%D0%B9_%D0%A7%D0%B5%D1%80%D0%BD%D0%BE%D0%B2.jpg
          Ответить
          • Кстати, а за что его в Мурикосию на конференцию фряхи не пустили?
            Ответить
            • не знаю, я со свечкой не стоял
              а чо было?
              Ответить
    • txt = '''
      Ще не вмерли України і слава, і воля,
      Ще нам, браття молодії, усміхнеться доля.
      Згинуть наші воріженьки, як роса на сонці.
      Запануєм i ми, браття, у своїй сторонці.
      '''
      
      print("".join(chr(b & 127) for b in txt.encode("koi8-u")))



      }E NE WMERLI uKRA'NI & SLAWA, & WOLQ,
      }E NAM, BRATTQ MOLOD&', USM&HNETXSQ DOLQ.
      zGINUTX NA[& WOR&VENXKI, QK ROSA NA SONC&.
      zAPANU$M i MI, BRATTQ, U SWO'J STORONC&.
      Ответить

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