Куча говна / Говнокод #26671 Ссылка на оригинал

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
IT Оффтоп #47


#1: https://govnokod.ru/18142 https://govnokod.xyz/_18142
#2: https://govnokod.ru/18378 https://govnokod.xyz/_18378
#3: https://govnokod.ru/19667 https://govnokod.xyz/_19667
#4: https://govnokod.ru/21160 https://govnokod.xyz/_21160
#5: https://govnokod.ru/21772 https://govnokod.xyz/_21772
#6: (vanished) https://govnokod.xyz/_24063
#7: https://govnokod.ru/24538 https://govnokod.xyz/_24538
#8: (vanished) https://govnokod.xyz/_24815
#9: https://govnokod.ru/24867 https://govnokod.xyz/_24867
#10: https://govnokod.ru/25328 https://govnokod.xyz/_25328	
#11: (vanished) https://govnokod.xyz/_25436
#12: (vanished) https://govnokod.xyz/_25471
#13: (vanished) https://govnokod.xyz/_25590
#14: https://govnokod.ru/25684 https://govnokod.xyz/_25684
#15: https://govnokod.ru/25694 https://govnokod.xyz/_25694

#16: https://govnokod.ru/25725 https://govnokod.xyz/_25725
#17: https://govnokod.ru/25731 https://govnokod.xyz/_25731
#18: https://govnokod.ru/25762 https://govnokod.xyz/_25762
#19: https://govnokod.ru/25767 https://govnokod.xyz/_25767
#20: https://govnokod.ru/25776 https://govnokod.xyz/_25776
#21: https://govnokod.ru/25798 https://govnokod.xyz/_25798
#22: https://govnokod.ru/25811 https://govnokod.xyz/_25811
#23: https://govnokod.ru/25863 https://govnokod.xyz/_25863
#24: https://govnokod.ru/25941 https://govnokod.xyz/_25941
#25: https://govnokod.ru/26026 https://govnokod.xyz/_26026
#26: https://govnokod.ru/26050 https://govnokod.xyz/_26050
#27: https://govnokod.ru/26340 https://govnokod.xyz/_26340
#28: https://govnokod.ru/26372 https://govnokod.xyz/_26372
#29: https://govnokod.ru/26385 https://govnokod.xyz/_26385
#30: https://govnokod.ru/26413 https://govnokod.xyz/_26413
#31: https://govnokod.ru/26423 https://govnokod.xyz/_26423
#32: https://govnokod.ru/26440 https://govnokod.xyz/_26440
#33: https://govnokod.ru/26449 https://govnokod.xyz/_26449
#34: https://govnokod.ru/26456 https://govnokod.xyz/_26456
#35: https://govnokod.ru/26463 https://govnokod.xyz/_26463
#36: https://govnokod.ru/26508 https://govnokod.xyz/_26508
#37: https://govnokod.ru/26524 https://govnokod.xyz/_26524
#38: https://govnokod.ru/26539 https://govnokod.xyz/_26539
#39: https://govnokod.ru/26556 https://govnokod.xyz/_26556
#40: https://govnokod.ru/26568 https://govnokod.xyz/_26568
#41: https://govnokod.ru/26589 https://govnokod.xyz/_26589
#42: https://govnokod.ru/26600 https://govnokod.xyz/_26600
#43: https://govnokod.ru/26604 https://govnokod.xyz/_26604
#44: https://govnokod.ru/26627 https://govnokod.xyz/_26627
#45: https://govnokod.ru/26635 https://govnokod.xyz/_26635
#46: (vanished) https://govnokod.xyz/_26646
#46: (vanished) https://govnokod.xyz/_26654

Запостил: bagrinho bagrinho, (Updated )

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

        • Гляжу, к Фрязино присоединяется Долгопа
          Ответить
            • Алипханов Батырхан Умарович — российский спортсмен, двукратный победитель первенства мира по универсальному бою (2013—2014) победитель первенств России по разным видам спорта (рукопашный бой, универсальный бой, самбо).

              И команда Кефир

              Очень многие шутки созданы на игре слов и каламбурах: в частности, в первой игре в Высшей Лиге КВН 2010 года звучало:
              — Моня, ты где баян взял?
              — Забрал у Юрия Лозы.
              — Правильно, на фига Лозе баян.
              Ответить
                • как назвать 16 бит ("слово" не предлагать)?
                  Хекстет?
                  Хексада?

                  Я не умею ни в латынь, ни в греческий((
                  Ответить
                    • Значит, надо называть декаэксада.

                      Потому что группы по три бита называют триадами (в честь китайской мафии), а группы по четыре нибл тетрадами (в честь тетрадок видимо).
                      Ответить
                      • Погуглил слово «декаэксада» — ни одного сайта на русском в результатах, везде только «δεκαεξάδα» на греческих сайтах.

                        Мы будем первыми, кто внедрит этот термин в русском.

                        P.S. Даже «декагексада», «decahexada», «decaexada» не гуглятся.
                        Ответить
                          • Тоже пока не гуглится. Скоро все результаты поиска редких числительных будут вести на «Говнокод».

                            Действительно, есть же термины duodecimal, tredecimal, tetradecimal, pentadecimal.
                            Ответить
                  • Интересно, что в новогреческом «шесть» будет «экси», в латыни «шесть» будет «секс» (да, именно так).

                    Откуда тогда взяли «хекс»? Из древнегреческого?
                    Ответить
              • Кстати, помнишь NIBBLES.BAS?

                Игрушка рисовала змейку псевдографикой. Разрешение по вертикали было в два раза больше, чем количество строк, потому что игрушка использовала символы ▀ и ▄.
                Ответить
                • это которые с досом и куууик-байсиком выдавались?

                  CASE 5
                          FOR i = 13 TO 39
                              Set i, 21, colorTable(3)
                              Set i, 59, colorTable(3)
                          NEXT i
                          FOR i = 23 TO 57
                              Set 11, i, colorTable(3)
                              Set 41, i, colorTable(3)
                          NEXT i
                          sammy(1).row = 25: sammy(2).row = 25
                          sammy(1).col = 50: sammy(2).col = 30
                          sammy(1).direction = 1: sammy(2).direction = 2


                  программирование -- это скучно
                  Ответить
                  • Их даже в NT клали вплоть до 4.0. В двухтонник уже перестали.

                    Ещё там был HUNTER.BAS. В некоторых комплектах был GORILLAS.BAS. Ещё вроде «Реверси» было.
                    Ответить
    • >>> Okay, weakly typed to be more precise.
      Чо, правда?
      Ох уж эти самки макакp, которые бросаются терминами, не понимая их значения.
      Ответить
      • то-есть она сначала обосралась, а потом обосралась
        Ответить
      • Кстати, вопрос на засыпку (без иронии)

        Perl строго типизирован, или нет?
        Ответить
        • Да какая ж там строгая типизация, если неявные касты на каждом шагу...
          Ответить
          • Касты во что? Приведи пример неявного каста в перле
            Ответить
            • Да любой оператор кастит любое говно в нужный для его исполнения тип. Где тут строгость?
              Ответить
              • >тип
                какой такой тип?

                В перле есть три основных типа
                * Скаляр
                * Массив
                * Хеш

                Если оператор ожидает, скажем, массив, то передать туда скаляр будет проблематично.


                Некоторые наивные люди думают, что в перле оператор минус неявно кастит строку к числу.

                Дескать,

                '0' - 0 == 0

                Но ты-то знаешь, что никаких чисел и строк в Перле нет. А скаляр и есть скаляр. И его принимает и оператор "+" и оператор "."
                Верно?
                Ответить
                • Зато если оператор ожидает скаляр, то массивы и хеши туда вполне норм заходят.

                  И вообще "скаляр" - ахуенный тип. Эдак и в js типизация строгая, просто тип один, jsvalue.
                  Ответить
                  • >Зато если оператор ожидает скаляр, то массивы и хеши туда вполне норм заходят.
                    хе-хе, если он ожидает скаляр, то массивы и хеши оказываются в скалярном контексте, и возвращают свою длину. Верно?

                    По сути, тут происходит кастинг в другой тип, причем вполне ожидаемый. Почти как в С++ конструктор, принимающий тип.

                    >И вообще "скаляр" - ахуенный тип.
                    Ну это же не я придумал: это в доке по перлу написано
                    Ответить
                    • > тут происходит кастинг в другой тип, причём вполне ожидаемый

                      Ну в жс преобразование объекта в [Object object] тоже вполне ожидаемое и документированное.
                      Ответить
                      • [Object object] нужен никогда
                        а длина очень даже нужна

                        люди подумали...
                        Ответить
                        • Как это не нужен? А из чего буквы для jsfuck'а набирать?
                          Ответить
                          • >jsfuck
                            false       =>  ![]
                            true        =>  !![]
                            undefined   =>  [][[]]

                            Слабая типизация, мой рот, это прекрасно
                            Ответить
                • В кишках «Перла» есть разделение на числа и строки, есть куча функций преобразования. Но снаружи этого не видно, да и не нужно, потому что у «Перла» для каждого типа свои операторы.

                  В «Жопоскрипте» плюсик может означать и сложение чисел, и кокококонкатенацию строк. В силу слабости и неявности типизации в «Жопоскрипте» возникают неожиданные касты, из-за чего программисты ломают голову, что будет, если «сложить» строку с числом.

                  В «Перле» таких неожиданностей нет, потому что конкатенация и сложение обозначены разными знаками. В «Перле» нет перегруженных операторов.
                  Ответить
                  • Именно поэтому я за пхп, где конкатенация и сложение тоже обозначены разными знаками.
                    Ответить
                    • При этом в пхп есть отдельные типы для строк и чисел.

                      Что еще раз говорит нам о том, что пхпшники -- карго-идиоты.

                      Точку и плюс они скопировали с перла даже не включая мозг, даже не пытаясь подумать ПОЧЕМУ там так сделано, и нужно ли им это.
                      Ответить
                • Кстати, python-то слабый, хоть и кукарекает о том, что сильный:
                  1 + 1.0 работает, хотя type(1) != type(1.0).
                  Ответить
                  • Это правда

                    Паскаль бы кажется такое не позволил
                    Ответить
                    • По-моему складывал же. И даже делил 2 инта. Просто результат всегда флоатовый получался.
                      Ответить
                      • Подтверждаю, делить два инта можно. Но в «Паскале» два оператора деления: div и /. Результатом div всегда является целый питух, результатом / — всегда плавающий, поэтому путаницы не возникает.
                        Ответить
                          • В третьем тоже, причём именно с такой семантикой:
                            >>> 10 / 3, 10 / 10
                            (3.3333333333333335, 1.0)
                            >>> 10 // 3, 10 // 10
                            (3, 1)
                            Ответить
                            • Я сказал с точностью до наоборот
                              Это в третьем так

                              Во втором кажется всегда делили как целое
                              Ответить
                              • Ничего не понял: кто кому отвечал, на что отвечал, что отвечал и отвечал ли вообще.

                                Ну ладно.
                                Ответить
                                          • Вторая буква на две кодовые позиции меньше первой. Сходу в голову приходят такие сочетания:
                                            ВА, ДВ, ЕГ, ЖД, ЗЕ, ИЖ, КИ, МК, НЛ, ОМ, ПН, РО, СП, ТР, УС, ФТ, ХУ, ЧХ (убрал плохо читаемые). Нужно угадать третью букву.

                                            Что же это за слово?
                                            Ответить
                                          • ну давай думать:
                                            сколько тут бит?
                                            10001000101

                                            Больше восьми. Стало быть, кодировка у нас явно не однобайтовая.

                                            Может быть это utf-8?
                                            Но тогда первый байт должен быть 127. А он у нас четыре. Выходит, это не utf. Хм..

                                            Дальше сам
                                            Ответить
                                            • В школе преподаватели информатики тренировали нас на пакете «Роботландия» (Ищи пакеты «Хиты Роботландии» или «Зимние вечера», если хочешь поиграть). Там были разные головоломки, развивающие представления об алгоритмах. Рассчитана «Роботландия» была на младших школьников, но нам её показали в старших классах, потому что в младших у нас не было информатики.

                                              http://www.botik.ru/~robot/sale/robot.htm

                                              К чему это я? В пакете была программа «Буквоед» (рубрика «Чёрные ящики»). Программа представляла собой чёрный ящик, в котором лежало несколько пронумерованных алгоритмов преобразования текстовых строк. Введя несколько реальных примеров и посмотрев ответы, нужно было угадать алгоритм.

                                              Так вот очень быстро угадывалось, что алгоритм №13 каждую букву в строке заменяет следующей по алфавиту. Угадай, какое слово тут же попробовали ввести мои одноклассники. Правильно, слово «ФТИ».
                                              Ответить
                                            • ну что, питузы? никто не справился с заданием?
                                              двойка вам в четверти
                                              Ответить
                                                • Хуй что ли? Первая на 2 больше второй. Подходит.
                                                  Ответить
                                                • Я загадал слово "Язу".
                                                  Это такая река в штате Миссисипи.

                                                  Сначала нужно прибавить к каждому числу 10 (то-есть сдвинуть, как при шифре Цезаря), и получить юникодные кодпоинты

                                                  Зачем мне река?
                                                  Ответить
                                                  • Может быть, у тебя скрытое желание покорить её на вёсельной лодке?
                                                    Ответить
                            • Сначала показалось что питух возвращает кортеж из частного и остатка.
                              >>> 10 // 3
                              (3, 1)

                              Удивился, неужели в скриптуху завезли божественный std::div
                              Ответить
                          • А в «Бейсике» был бекслеш для целочисленного деления. Но «Бейсик» более слабый: он может округлить плавающего питуха до целого, не предупредив.
                            Ответить
                        • >Но в «Паскале» два оператора деления: div и /.
                          >Результатом div всегда является целый питух

                          А в няшной результатом выполнения div является div_t.
                          Остаток получаем бесплатно, экономя одну/пару инструкций.
                          Ответить
                    • «Паскаль» позволил бы. У него неявный каст работает в одну сторону: он может неявно расширить целого питуха до плавающего, а наоборот (урезать плавающего до целого) не может. Т. е. 1 + 1.0 работает, результатом будет плавающий питух, но записать результат в целочисленную переменную нельзя.
                      Ответить
                    • позволил бы
                      говно!

                      хочу язык, где всё надо кастить явно
                      Ответить
                        • Спасибо!
                          Причем там еще и вывод типов и паттерн матчинг хороший, если я верно помню.

                          Ушел писать на окамле
                          Ответить
                          • Ну и хаскель ещё, но у хаскеля литералы неявно кастятся в числовые типы. Не то чтобы это чему-то мешало.
                            Ответить
                            • Это чтобы магических констант не было. Хочешь строгую питушню - сохраняй число в именованное значение.
                              Ответить
                      • В языке «Ада» можно так сделать: объявить новые типы, а операторы каста для них не задать.

                        В принципе, в некоторых языках с ООП так можно, в тех же крестах. Создаёшь класс, а операторы преобразования не определяешь.
                        Ответить
                      • Пример в Ди:
                        double f = 9.8;
                        int a = 1+f; //Error: cannot implicitly convert expression `1.00000 + f` of type `double` to `int`
                        Ответить
                        • В точности, как в «Паскале»: неявно привести 1 к вещественному типу можно, а чтобы преобразовать обратно в целое, нужно явно вызвать функцию округления.
                          Ответить
                  • Нет. Слабость и малость сильность — это не бинарный показатель.
                    Слабой типизация считается тогда, когда в ней присутствует достаточно много неявных и неоднозначных приведений. Поэтому неявное приведение инта к плавпитуху — не признак слабой типизации, в отличие от, например, возможности сложить массив с объектом и получить какую-то хуйню.
                    Ответить
                    • python на 95% сильнее js. Страуструпом не запрешено, питоню где хочу!
                      Ответить
    • 3 часа? Приведи реальный пример, когда тебе нужно было посмотреть трёхчасовой ролик.
      Ответить
    • Я не смотрел, если честно

      У меня шапошный знакомый в долине работает, я с ним один раз пил, он как приехал, так сразу и американизировался. Ненавидит Трампа теперь, поддерживает всякие меньшинства.

      Я знаю, что Дуров там серанул после этого видео. Говорит, в долине дорого, плохо, и вообщем он не советует россиянам туда ехать.
      Ответить
    • Бля, у них девушке < 25% населения
      Именно поэтому в Сан Франциско много педорасов
      Ответить
      • В городе [Сан-Франциско] расположено множество музеев необычной тематики: Интернациональный музей женщин...

        В Сан-Франциско ходят в музей, чтобы посмотреть на женщин.

        С такими тенденциями они вымрут, как мамонты.
        Ответить
      • Именно по этому многие сообщества (python, django, ruby, rails) активно привлекают девушек в программирование
        Ответить
            • возможно. Я сам не достаточно бородат и красноглаз для этого
              Ответить
        • А это идея для стартапа. Социальная сеть для программистов, где не допускается дисбаланс. В виде сбалансированного дерева. У красно-чёрного количество красных и чёрных примерно одинаково? Нужно только инвестора найти..
          // поехавший кукухой
          Ответить
  • ГЦушки пробивают очередное дно.

    Помните ручные счетчики ссылок? IUnknown::AddRef() в COM?
    retain/release в ObjC помните?

    Встречаем ручную регистрацию питухов!
    https://github.com/JetBrains/intellij-community/blob/master/platform/util/src/com/intellij/openapi/util/Disposer.java

    Конечно, в отличие от счетчика сцылок тут можно три раза сделать register, и за это ничего не будет.
    Но сам факт того, что строить parent/child иерархию надо вручную меня дичайше лулзит.

    Вдумайтесь: мало получить строгую ссылку, надо еще явно сделать Disposer.register.

    То-есть ГЦшный скам сначала двадцать лет ездил нам по ушам, что "ГЦ всё разрулит", потом сказал "ну ладно, для ресурсов я сделаю исключение" и завёз все эти use / with / Closeable.

    А теперь настало время узнать, что и граф ссылок надо строить вручную.

    Ворст фром зе бос ворлдс.

    Если еще один сраный питуз начнет вам рассказывать, что "гарбич каллектор это круто", то бейте его, срите ему в рот, и насмехайтесь над ним.

    Джобс, царство небесное, был всё таки гениальный чувак, когда послал ГЦ нахуй и стал пропихивать язык с нормальным (а не педерастичным) управлением памятью.

    Ебагые гцшки, бля, зла не хватает
    Ответить
    • Сука, гцшники мне напоминают скриптослизь.
      Она тоже нам четверть века рассказывала как пиздато жить без статической типизации, как это гибко и мощно, а теперь серит в штаны завозя pep-484 в питона и пиля тайпскрипт.
      Ответить
      • Динамическая типизация хороша в шкриптиках на 2 экрана.
        Статическая типизация хороша в больших программах и для поддержки IDE.
        Сколько лет ушло у фитоноблядков, чтобы это осознать. Сколько лет ушло до этого, чтобы сделать интерфейсы вместо утиной типизации.
        Ответить
        • >нам четверть века рассказывала как пиздато жить без статической типизации, как это гибко и мощно
          >а теперь серит в штаны завозя pep-484 в питона и пиля тайпскрипт.

          Дно днищенское.
          В то время как статически типизированные языки научились выводить типы сами, избавляя программиста от нужны их писать.
          Скриптухи опять решили сделать всё наоборот:
          def greeting(name: str) -> str:
              return 'Hello ' + name
          
          from typing import Callable
          
          def feeder(get_next_item: Callable[[], str]) -> None:
              # Body
          
          def async_query(on_success: Callable[[int], None],
                          on_error: Callable[[int, Exception], None]) -> None:
              # Body

          https://www.python.org/dev/peps/pep-0483/
          https://www.python.org/dev/peps/pep-0484/
          Ответить
          • Нет, ну чем эти все Callable, Exception, Iterable, LinkedList, Optional отличаются от явы?
            Разве что нет фигурных операторных скобок и женерики квадратные.

            T = TypeVar('T')
            
            class LinkedList(Sized, Generic[T]):
                ...
            
            K = TypeVar('K')
            V = TypeVar('V')
            
            class MyMapping(Iterable[Tuple[K, V]],
                            Container[Tuple[K, V]],
                            Generic[K, V]):
            
            class MyIterable(Iterable):  # Same as Iterable[Any]
            Ответить
            • > Нет, ну чем эти все Callable, Exception, Iterable, LinkedList отличаются от явы?
              Необязательностью. Можно писать, можно не писать, можно только в критических местах писать. Можно даже игнорировать и передавать что-нибудь другое, всё равно в рантайме проверок нет.
              Ответить
              • Вот это годно:
                Union[t1, t2, ...]. Types that are subtype of at least one of t1 etc. are subtypes of this.
                
                    Unions whose components are all subtypes of t1 etc. are subtypes of this. Example: Union[int, str] is a subtype of Union[int, float, str].

                А тут пока слабенько:
                We might add:
                    Intersection[t1, t2, ...]. Types that are subtype of each of t1, etc are subtypes of this. (Compare to Union, which has at least one instead of each in its definition.)
                        The order of the arguments doesn't matter. Nested intersections are flattened, e.g. Intersection[int, Intersection[float, str]] == Intersection[int, float, str].
                Ответить
              • Сколько не выделяй памяти, сколько не хитри с аппликатурой, а Москва таки не резиновая.
                Ответить
          • Ну ты слишком сурово к этому относишься. Крестам, вон, сколько лет понадобилось, чтобы автовывод добавить? Больше двух десятков? Вот и в «Python»/«TS», глядишь, через N годиков завезут. Им же приходится с нуля это всё придумывать!
            Ответить
            • Так понятно, что идеальный язык должен выглядеть как скриптуха, но статически отлавливать ошибки.

              >глядишь, через N годиков завезут
              Смеюсь:
              If type hints become successful we may well decide to add new syntax in the future
              to declare the type for variables, for example var age: int = 42.

              Зачем? Зачем?
              Тут люди десяток лет боролись чтоб никогда НЕ ПИСАТЬ этот int. А они его завозят.

              Я о том, что скриптухе проще. Она выглядит гораздо ближе к идеалу.
              Делайте автовывод типов и проверки, НЕ МЕНЯЯ язык.
              Ответить
              • > declare the type for variables
                Дык оно уже есть и работает.
                Ответить
                • var нету.
                  Я же говорю, все языки идут к старому-доброму яваскрипту (ещё первым его версиям).
                  Ответить
                  • В «ECMAScript 4» была добавлена статическая типизация. Именно так:
                    var age: int = 42

                    Реализовано было только в экспериментальных сборках некоторых веб-браузеров. Не выжило, в ES5 этот синтаксис отменили.

                    Выжило в «ActionScript». Но «ActionScript» уже сам полутруп, потому что с «Флеша» все уходят.
                    Ответить
                    • Идеальный язык, как по мне, должен быть похожим на бейсик и жс. Иметь при этом примерно такой вид:
                      a = 42;
                      С одним существенным отличием.
                      a по умолчанию константа. То есть внутри это интепретируется так:
                      const a:int = 42;
                      А ещё лучше конечно так int[42:42]
                      Если хочешь переменную — пиши var.
                      Ответить
          • Потому, что все языки идут к одному суперязыку, где будут все возможные фичи.
            Я уже давно говорил, что надо делать одну платформу, а под неё 100500 языков, которые различаютсся только синтаксисом. Чтоб такую питушню вроде явности указания типов и вывода только флажком коньпелятора менять. Тогда сразу реализовать суперязык и ничего заново не делать.
            Ответить
            • >Потому, что все языки идут к одному суперязыку
              И это яваскрипт.

              >Я уже давно говорил, что надо делать одну платформу
              А я уже давно говорил, что в какой-то момент некое универсальное подмножество js можно будет свободно скомпилировать в любом статическом языке от C#, Java заканчивая С++ (#define var auto).
              Ответить
            • >Потому, что все языки идут к одному суперязыку
              И это LLVM с десятками фронтендов с возможностью генерить ARM, x86, x86-64, PowerPC, MIPS, SPARC, RISC-V и вроде как даже web asm.
              Ответить
          • > В то время как статически типизированные языки научились выводить типы сами

            - иронично, что именно сегодня я снова встретился с "The compiler is unable to type-check this expression in reasonable time; try breaking up the expression into distinct sub-expressions"
            Ответить
        • Гэцухи такие смешные. Так героически бороться с гц — это надо иметь сильную волю и железные нервы!
          Ответить
    • >что и граф ссылок надо строить вручную.
      >завёз все эти use / with / Closeable.
      А раньше анскильные сектанты и прочая гц-мразь постоянна говорила что malloc/free это сложно дохуя.

      Вместо этого нам предлагают вполне "простой" идиоматичный код:
      Resource r=null;
      try{
          r =  initPituz();
          r.doSomething();
      }catch(PituzException pe){
        ...
      }finally{
         try { r.close() ;}catch(Exception unused) {}
      }


      >Если еще один сраный питуз начнет вам рассказывать, что "гарбич каллектор это круто"
      Просто отбросы сектантские.
      Ответить
    • > в отличие от счетчика сцылок тут можно три раза сделать register, и за это ничего не будет.
      > throws com.intellij.util.IncorrectOperationExce ption If child has been registered with parent before;

      ??

      > retain/release в ObjC помните?
      - retain/release имеет к gc косвенное отношение.
      Ответить
      • А, гест8 наверное про то, что не будет потенциальных утечек.
        Ответить
      • Но со счётчиком ссылок ты тупо не можешь лишний раз позвать декремент. Потому что в нормальных реализациях он юзеру недоступен. И такой проблемы вообще нет.
        Ответить
          • В нормальных реализациях, где ты его юзаешь только в извращённых ситуациях. А не где его руками на каждый чих звать надо как в сишке.
            Ответить
            • это как умный указитель в крестах чтоли?
              Ответить
              • Да. Там конечно тоже можно явно отстегнуть или пристегнуть объект. Но это очень редко юзается на практике и все такие места легко найти и прочитать. А с самим счётчиком вообще ничего не сделать.
                Ответить
                • Получается, что приведенный мною пример более низкоуровнеый

                  С одной стороны нужно вурчную все дергать, с другой -- можно не дергать лишний раз (а умный указатель сам дергает постоянно)

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

                    Ну не хочешь дёргать инкремент лишний раз - перемещай или свопай указатель вместо копирования. На возврате из функции это автоматом работает.
                    Ответить
                  • Да, с ARC не только release нельзя позвать руками, но и retain 🙂

                    Я, правда, всё равно не понял, как это, когда увеличить руками можно, а уменьшить нельзя.
                    Ответить
    • попробуй так

      * V (включает выделение)
      * G (выделяет все)
      * "+y (копирует всё в буфер твоей ОС)
      Ответить
      • пишет, что скопировано, но видимо не в буфер обмена моего ноута (я по ssh)
        но ты ближе всех был к рабочему вореанту
        Ответить
        • если ты по SSH, то копируй мышью.

          отключи у vim поддержку мыши, чтобы не мешал
          :set mouse=
          выдели нужный тебе текст
          далее действуй в зависимости от своего терминального эмулятора. Как бы ты копировал обычный текст и3 командной строки?
          Ответить
          • ахаха
            прыщебляди соснули, всё ясно
            > отключи у vim поддержку мыши, чтобы не мешал
            не подходит, я её с большим трудом включил
            мне нужно большой файл копировать, мышкой выделять не вореант
            Ответить
            • >не подходит, я её с большим трудом включил
              это делается одной командой. потом выйдешь из вима, зайдешь обратно, и все восстановится.

              >мне нужно большой файл копировать, мышкой выделять не вореант
              Шаринг буфера по SSH не завезли, извините.

              Предлагаю варианты:
              * Поднять иксы локально, сделать X11 forwarding, и запустить vim на удаленной машине с аутпутом локально. Тогда "+y попадет тебе в буфер иксов.
              * Скопировать файл локально (по sftp, scp, или как-то иначе)
              * Перейти на Windows: по RDP передается буфер
              Ответить
              • > scp

                Ну в общем-то лучший вариант. Обычно так и копировал если на экран не влезает.
                Ответить
                • я написал тут хуйню, и удалил её только что

                  извините
                  Ответить
                • +
                  Когда файлов много, или файл часто меняется, то ещё лучше — rsync. Но нужно немного повозиться.
                  Ответить
              • >* Поднять иксы локально, сделать X11 forwarding
                Ты не понял.
                Если он это сделает, тогда vim ему более не нужен.
                Он запустит gedit, geany или какой-то n++ и сделает всё что нужно.
                Ответить
          • > поддержку мыши

            shift же можно зажать при выделении текста. Или с vim эта фишка не работает?
            Ответить
            • что shift?
              что оно делает?

              Я вполне могу чего-то не знать
              Ответить
              • Выделение текста с зажатым шифтом работает даже если на том конце мышку умеют обрабатывать. Как-то так.
                Ответить
                • Это в каком-то конкретном эмуляторе терминала или во всех?
                  лол, в путти работате

                  а это часть какой-то спецификации?
                  Ответить
    • Посему можно вывести ещё одно достоинство женственности в языках программирования: возведения процесса компиляции в ранг акта. Общеизвестно, что программист всегда хочет компилировать, однако не всегда может сделать это успешно (например он не написал ещё исходный код). Компилятор же всегда может скомпилировать, при условии готовности программиста. Отсюда и злоупотребления, описанные в предыдущем параграфе. Женственный компилятор уж конечно будет компилировать не только когда может (может то он всегда), но тогда и только тогда, когда хочет.


      http://okante.narod.ru/D/lwmn.html
      Ответить
      • А ПХПшники вообще не компилиуют, ахахаха
        Ответить
      • Ведь если программист начнет компилировать более чем программировать, то он превратится в компиляциониста.
        Ответить
      • Чел просто с конпеляторами verilog и vhdl не работал. Вот уж где женственный конпелятор, который иногда через раз код собирает.
        Ответить
    • § 1. Описание проблемы

      Когда я исследовал язык Д как подмножество русского языка, я понял что не только слова, но и числа в нём должны быть на русском языке. Ведь в программировании числа тоже несут смысл, а не только значение.

      Иногда программисты пишут 0xBAADF00D или 0xDEADFEAD. Но это в шутку, к тому же английских букв не хватает. Поэтому нужна более лучшая система.

      Также, изучая языки программирования, я заметил, что в некоторых из них есть некие константы. Тo есть когда слово ассоциируют с каким-нибудь числом. Я подумал, что это чвляется избыточностью и придумал лучшее решение.

      § 2. Решение проблемы

      Для поддержки чисел на русском языке необходимо использовать специальную систему счисления. Существующие системы счисления слишком малы, потому что имеют малое основание. Русские буквы не помешаются в него.

      Итак вот разработанная система:

      Основание системы: 43

      http://okante.narod.ru/D/kb/kb000002.html
      Ответить
      • Чтобы удобно переводить из этой системы в другие, нужно просто запомнить степень сорока трех хотя-бы до десяти
        Ответить
      • Новое прочтение ответа на вопрос о смысле жизни, вселенной и всего такого: 42 - Я.
        Ответить
    • Для классификации языков программирования применяется понятие уровень. Если этот уровень высок, то по идее программист должен расходовать меньше времени на процесс программирования. В языке высокого уровня программист работает с более высокими категориями, поэтому меньше нажимает кнопок чем программист языка низкого уровня. Идея сама по себе хороша. Она, по идее, позволяет избежать таких стресстовых болезней как артрит.

      [...]

      Оказывается для того, чтобы программировать на высокоуровневом языке необходимо очень много его учить. А программист для этого не приспособлен. Он хорошо считает и вообще любит математику, и, как правило, не любит учить. Это ведет к следующему извращению — извращению иерархической лестницы. Программист программирующий программы (homo programis) уже никому не нужен, а нужен программист выучивший и знающий язык высокого уровня (homo kakus). Поэтому программист учащий становится выше программиста программирующего. Воникает диссонанс, а от диссонанса усталость (причем у обоих). Усталость ведет к стрессу.

      http://okante.narod.ru/D/high.html

      homo makakus
      Ответить
      • >очень много его учить. А программист для этого не приспособлен
        Это правда

        >Он хорошо считает
        На калькуляторе

        > вообще любит математику,
        Арифметику, если точнее

        > и, как правило, не любит учить.
        Да
        Ответить
      • >Он хорошо считает и вообще любит математику
        Ращка.
        Ответить
          • Пидо рашка триггернулась. Ты почему беженцев на своих кавказцев ровняешь?
            Ответить
              • Я в соседнем треде писал. А у вас как дела на помойке?
                Ответить
                • Не знаю, я туда не хожу. Если тебе очень интересно могу сходить, спросить у местных бомжей.

                  Хотя нет, ну нахуй.
                  Ответить
                  • Пидо рашка, плес. https://www.youtube.com/watch?v=6KySz72PaJg

                    >мне как-то по школоте приснилось, что мне показали целый овраг, заваленный такими девайсами. когда проснулся - плакал, минут пять успокоиться не мог((( Тёмыч, круто быть тобой!
                    >А у нас в только одни пластмасски да ошметки от плат остаются ,повадилась ребетня платы на цветмет долбить ,вырывают даже алюминивые радиаторы
                    >Тёмушка, молодец, не слушай недалёких комментаторов, умеющих в своих руках держать только свой детородный орган и не видящих дальше своего носа. Настоящий творец-изобретатель всегда исследует работу и внутренности изобретённых до него электронно-механических изделий и на базе этого создаёт новое изделие, которое до него никто не додумался сделать. Покупать такие вещи для ознакомления у нашего брата никаких средств не хватит, а так пусть даже найденные на помойке, либо на металлоломе внутренности этих изделий принесут пользу и тебе и всем нам технарям, которые подписаны на твой канал. Сам грешен этим, заедеш бывает на металлоприёмку, а там "ЭЛЬДОРАДО", волокёш домой полные мешки, затем сортируеш день-два, а попутно рождается проект нового рукотворного "шедевра", который греет душу создателя и не даёт состариться. Мне уже 68 годиков стукнуло, а всё никак не уймусь - изобретаю, хорошо хоть домашние поддерживают...
                    >Повезлооо куча радиодеталей добыл, класс!
                    Ответить
                    • Какой хабар )))

                      А его можно обменять на несколько пачек маргарина?
                      Ответить
                    • > полные мешки

                      А я люблю обкладываться несвежими радиодеталями и паять. Каждый день я хожу с черным мешком для мусора и собираю в него все платы, которые я вижу. На два полных мешка целый день уходит. Зато после тяжелого дня я прихожу домой, и включаю горячий паяльник... ммм... и выпаиваю им свои сокровища. Мне вообще кажется, что радиодетали умеют думать, что у них есть свои семьи, города, чувства. Не выбрасывайте их на помойку, лучше приютите их у себя, паяйте их, говорите с ними. А вчера мне приснился сон, как-будто я нырнул в море и оно превратилось в радиодетали, рыбы, водоросли, медузы, все из радиодеталей, даже небо, даже Аллах!
                      Ответить
  • НЕ КОНСОЛЬ, А ЭМУЛЯТОР ТЕРМИНАЛА
    НЕ ЛИНУКС, А GNU/LINUX
    Ответить
  • Хуле ебаная видюха Nvidia орет вентилятором на максимальных оборотах, пока венда не загрузится? Вчера сука винда апдейты ставила, так грохот стоял такой, что мне пришлось родной вентилятор отключить, а снизу поставить другой. Как с этим бороться? Есть аппаратный переходник, понижающий обороты? Там 4 провода. На видюхе свой биос есть, а там настройки есть?
    На проце та же хуйня. Нашел как в биосе снизить обороты, но там нельзя сделать меньше 50%, а после этого вентилятором нельзя управлять из speedfan.
    Ответить
    • Вероятно ее вентилятором управляет или драйвер, или прошивка, которую грузит драйвер
      Ответить
      • В винде драйвер управляет. А вне винды что делать?
        Ответить
        • Если у карты нету своего биос (прости, Борманд) Optional ROM с опциями настройки, то ничего не делать.
          Прошифка твоей мамы про карту ничего не знает, и управлять ей не может.

          Спроси на форуме nVidia
          Ответить
          • Там таки биос. При загрузке первым появляется экран от самой видюхи. Но как зайти в сетап? Похоже проще будет резистор в цепь включить.
            Ответить
            • Ну я не писал тот биос. В документации к карте есть чо?
              Ответить
              • В какой документации? Там сама карта стоит 10-15€. ,Проще в провод резистор впаять.
                Ответить
    • > переходник, понижающий обороты

      Есть, у меня в комплекте с кулером такой прилагался. Тупо резистор во второй провод.

      А насчёт оборотов видюхи до загрузки виндового драйвера - это вроде только перепрошивкой видюхи рулится, настроек я не видел.
      Ответить
      • Можешь сфоткать или ссылку дать?
        Карточка такого уровня с доставкой будет стоить не больше 15€, думаю, так что много пердолиться смысла нет. Однако, нахуя делать такие большие обороты? Запас на случай если все пылью забьется? Как можно видюху в стресс тест отправить?
        Ответить
        • Тот кулер я продал, к сожалению, поэтому сфоткать не смогу. Погугли по "резистор замедление кулера".

          > нахуя делать такие большие обороты

          У бюджетных карт обычно мелкое говнецо вместо кулеров. А оно шумит и визжит намного больше, чем пара-тройка нормальных больших вертушкек. Даже при тех же самых оборотах.

          > видюху в стресс тест

          3d mark. Там есть непрерывный режим который тест в цикле гоняет.

          З.Ы. Если кулер прям гремит - походу подшипники сорвало, поменяй его.
          Ответить
          • После загрузки на 33% все норм. Слегка ненормально шумит. Шум от оборотов зависит очень нелинейно. И пока не перегревалась ни разу, так что зачем эти обороты? Чтобы пыль продуть из радиатора?
            Ответить
            • Да моторы и контроллеры в вертушках вроде стандартные, поэтому у них такие большие обороты доступны. Никто их не дорабатывает под конкретное применение, просто программно ШИМом скорость убавляют.
              Ответить
              • Но не убавляют же? Для вентилятора проца есть опция в биосе, но ниже 50% скорость понизить низя.
                И что за стандарт? У меня несколько вентиляторов и все разные, с разной мощностью и уровнем шума.
                Ответить
                • Ниже 50% в спидфане, там даже на 0 1000 оборотов.
                  Ответить
                • Убавляют, в винде же у тебя всё норм?

                  А факапы с управлением кулером даже у дорогих карт бывают. Например карта может не крутить кулер несколько минут а потом одним рывком дунуть на все 100% и остыть за секунду. Благо эта херня только под нагрузкой, а там уже винда загружена и через какой-нибудь afterburner можно нормально настроить...

                  Про биос и 50% - х.з. На старых материнках часто такое видел. Видимо боятся, что ниже 50% некоторые кулера могут тупо не стартануть. Там трёхпроводное подключение вертушки поди, не четырёх? А спидфан ты юзаешь на свой страх и риск, поэтому там весь диапазон доступен.

                  > все разные

                  Ну они разные. Но максимальные обороты у всех довольно большие. И никто никогда не будет обрезать обороты на самой вертушке, если это можно сделать бесплатно на уровне софта.
                  Ответить
  • Во что сейчас народ играет? В чем время проводить?
    Ответить
  • Есть такая мысль: если каждому человеку при рождении ампутировать по пальцу на руке (например по безымянному -- он нахуй не нужен так-то), и в школе вместо десятичной учить восьмиричную систему.
    Если восемь пальцев, то и система должна быть восьмиричная.

    Тогда переводить в hex и bin будет куда проще (тупо через триады и тетрады). Людям станет легче понимать информатику, будет больше инженеров, и прогресс пойдет быстрее.

    Только подумайте: если бы мы хотя-бы сто лет так делали, то уже наверное человечество в другие галактики бы летало.
    Ответить
    • А надо? Обычно по разъёму и так понятно. А если у тебя xp и дров на xhci нету, то эти порты обычно тупо не работают*.

      * кроме некоторых материнок, где разрабы упоролись и костыль для любителей некрофилии запилили
      Ответить
      • В идеале если разъем НЕ синий, то это двойка
        Но хочется знать навеняка.

        Я вот узнал, что моя коробочка для внешних винтов (пеерехожник sata/usb) давно устарела: там usb2 и sataII, и с SSD как-то не очень хорошо.
        Надо заказать новую
        Ответить
  • https://habr.com/ru/post/503366/
    >>> Почему тире становится вопросом? Или проблемы с кодированием данных на SQL
    >>> Загружается товар с таким названием «ABM3C‐25‐D4Y‐T».
    >>> Получаем в списке после загрузки «ABM3C?25?D4Y?T».
    >>> По привычке проверила параметры сортировки у самой базы данных, всё хорошо — Cyrillic_General_CI_AS, как и рекомендовано при установке.
    >>> Ответ разработчика сначала сильно удивил: «Надо использовать тип данных Nvarchar, а у Вас видимо используется Varchar». Запись ведется в поле с типом данных nvarchar (ставится по умолчанию при создании поля в конфигураторе).
    >>> Получила совет — перед первой одинарной кавычкой поставить N.

    Шёл 2020-й год, люди продолжали ебаться с кодировками…
    Ответить
    • Да, будет неприятно, если родственники пришедшие навестить могилу, увидят на ней не фио усопшего, а белиберду.
      Ответить
    • Это как u' в питоне видимо

      без n' он однобатовый
      Ответить
    • Настройка через пельменную окружения. А в «autoexec.bat» и в «config.sys» ничего добавлять не нужно?
      Ответить
  • У вас бывает, что когда ПМ спрашивает оценку на исправление баги, то отвечаете: исправить - 4-6 часов, подмандить - 30 мин?
    Ответить
    • ПМ не нужен, тем более если он сам не может дать оценку.
      Ответить
      • Офицеры про «ПМ» так говорят: «Только застрелиться».

        То ли дело «АК» или «СВД»...
        Ответить
      • сухябы пм должен давать оценку вместо программиста?
        Ответить
          • Либо ты доверяешь программистам, либо оцениваешь коллективно а-ля пленинг покер

            Давать оценку за другого человека нельзя.
            Ответить
            • Когда ПМ != руководитель - это хуёво, имхо. А руководитель и так знает лучше тебя сколько на что времени примерно уйдёт.
              Ответить
              • Я гораздо лучше своего руководителя знаю тонкости того, чем занимаюсь, потому он может оценить только примерно.
                Если руководитель будет ковыряться в моем коде, то значит я либо студент-джун, за которым надо три раза перепроверять, либо руководителю делать нехуй, а у него его дела по важнее.

                Но дело не в этом: только программист может дать обещание сделать фичу за N дней (причем талантливый руководитель еще сроки умножит).

                А когда программисту сверху спускают сроки на разработку -- это всегда пиздец.
                Ответить
            • > пленинг покер

              Это кто меньше ставку даст, тот и делает таску? )
              Ответить
              • Примерно:)
                Это игра такая в скраме. Если от тебя реально ОЧЕНЬ СИЛЬНО требуют сроки (спойлер: так бывает далеко не всегда), то питузы садятся за стол, и ведущий говорит:

                "Таска Foo. За сколько бы мы могли её сделать?"

                Чтобы оценить таску всем программистам приходится про неё подумать.
                Затем, все кладут на стол карты (рубашкой вверх) с числом, означающим количество дней.

                Если у всех совпало, то примерно понятно, сколько таска займет (миллион мух не могут ошибаться).

                Если у одного таска три дня, а у другого три недели, то другой явно что-то знает, чего первый не учел, и это надо обсудить.

                Карты нужны, чтобы нельзя было тупо всегда подпёздывать всем, и не включать голову.


                Покер пиздец как отъедает время.
                Команда на шесть человек может потратить день планируя спринт на две недели.
                Шесть человекодней это ОЧЕНЬ дохуя.

                Но это единственный способ более-ли-менее точно оценить задачи.

                А когда один ПМ сам себе в уголке подумал, и сказал тебе "Вот issue, у тебя есть три дня" или в курилке у тебя спросил, то это не дело
                Ответить
                • Хорошо, что у нас в команде такой хуйни нет. У нас раньше была каждую неделю встреча, где все обсуждают всё, а теперь (на время удалёнки) - каждый день (чтобы хуи не пытались пинать усиленно).
                  Ответить
                  • У нас вообще редко собрания (может 2-3 раза за год) и только по большим/новым фичам. Продукт один. ПМы хотелки заказчиков в задачи превращают. Задач много (у меня штук 80, на 2-3 месяца хватит), разрабов мало. Строгого контроля графика работы нет (хотя возможно я чего-то не знаю). Но вроде никто не отлынивает, все люди серьезные.
                    Ответить
                    • > продукт один
                      > разрабов мало
                      > ПМы

                      Зачем вам столько ПМов?
                      Ответить
                      • чтобы общаться с десятками заказчиков каждый. Вроде их было 5.
                        Ответить
                          • У каждого своя зона ответственности, свои заказчики. Х.з. как их работу оценивают.
                            Еще есть account manager - тоже самое, но меньше полномочий.
                            Кстати для арабских стран приходится назначать парней, т.к. женщин там не уважают и не доверяют им решать сложные вопросы.
                            Ответить
                              • Сразу видно, что ты анимешник. У тебя аниме на аватарке.
                                Ответить
                              • Они согласуют с техдиром необходимость повышения приоритета задачам. Но обычно просто в кучу добавляют.
                                Иногда заказчик разоряется, и нерешенные задачи удаляются )))
                                Ответить
                            • У нас была такая хуня на одной работе: там на тебя набрасывались менеджеры, и каждый просил повысить приоритеты задачи для именно его заказчика

                              Некоторые заказчики вообще отличались только брендом: то-есть один и тот же продукт перерисовывали, и продавали разным людям
                              Ответить
                • Некоторые особо продвинутые устраивают пленинг покер в разношёрстной команде. И тогда бэкендщик пытается оценить работу мобильщика, а мобильщик работу телеком-инженера, а QA работу их всех. Насколько смешно, настолько же и безобразно.
                  Ответить
  • ЕБАНАЯ СУКА ВИНДА ПРОБУЖДАЛА КОМП ЧЕРЕЗ ПАРУ МИНУТ ПОСЛЕ ТОГО КАК Я ЕГО ОТПРАВЛЯЛ В СПЯЩИЙ РЕЖИМ! КАКОГО ХУЯ Я ДОЛЖЕН БЛЯДЬ ГУГЛИТЬ КАК ЭТО ВЫКЛЮЧИТЬ????? ГНИДЫ!!!!
    А ЕЩЕ ОНА ВО ВРЕМЯ ИГРЫ ПОКАЗЫВАЛА МНЕ ОКНО ЧТО НАДО ПЕРЕЗАГРУЖАТЬСЯ! И САМА КОМП ПЕРЕЗАГРУЗИЛА КОГДА Я ОТОШЕЛ! ЕБАНОЕ ГОВНО!
    ДЛЯ КОГО ВИНДА СДЕЛАНА - ДЛЯ ЮЗЕРА ИЛИ ДЛЯ АПДЕЙТОВ?


    Такое впечателение, что с прыщами было бы меньше проблем. С ведром так точно. Такое впечатление, что винда все свободные ресурсы воспринимает как свои. На бесшумном планшете, включенном круглосуточно это мб и оправдано, но на шумном компе, который выключают и ни дай бог там еще стоит винт а не ссд?
    Ответить
    • Ну х.з., у меня копропротивная версия 10-ки дома всегда вежливо спрашивает перед перезагрузкой и ждет сколько потребуется (хоть 3 дня). Но если у компа включено питание, то может включиться ночью и обновиться, похерив спящий режим (обычно это на работе так, вероятно так админ настроил).
      Ответить
      • У меня дома так. Какой админ это настроил? Впрочем, нашел. Всего одну галочку надо было снять. Но батхерта от этого сколько, блядь.
        Ответить
        • Где эта галочка? Помню, пришлось много всего поотключать, и не было уверенности, что винда не перестала так делать.
          Ответить
          • Обновления - Пробуждать компьютер для установки, что-то такое.
            Ответить
    • отключи в настройках обновления перезагрузку
      Ответить
    • Люто, бешено плюсую. Парень с ботами, сделай этому комментарию +1000.
      Похоже, винда сделана для апдейтов. Но не только. Если апдейты выключить, винда всё равно начинает что-то ресурсозатратное делать, когда пользователь отходит от компьютера.
      Ответить
    • Самая жопа с ноутбуками — у них в меню «BIOS/UEFI Setup» часто нет доступа к таймерам. А Винда, сука такая, заводит эти таймеры, чтобы в четыре часа ночи проверить обновления или выполнить какие-нибудь сервисные операции, даже если в планировщике нет ни одного задания. Были случаи, когда у людей ноутбуки перегревались в закрытой сумке из-за того, что включались в неподходящее время.

      Есть ли способ отключения этих таймеров? Винда как-то умеет их включать, значит, программный доступ к ним есть. Или единственный надёжный способ — это выдёргивать стационарный комп из розетки, а у ноутбука выдёргивать аккумулятор?
      Ответить
      • Их в планировщике задач вроде видно. Что-то в духе "пробуждать пеку для выполнения задачи".
        Ответить
        • Нет. Я удалил все задачи у планировщика, потом остановил и запретил службу «Schedule» (Start=4). В схеме питания тоже запретил пробуждать. Всё равно пробуждается. Команда «powercfg -lastwake» выдаёт причину последнего пробуждения «[0] 0» (или типа того).

          Погуглил. На куче форумов нашёл жалобу на самопроизвольное включение с такими же симптомами. Решения в найденных темах не было.
          Ответить
            • Помнится, РКГ предложил декомпилировать таблицы ACPI и по ним написа́ть свою программу управления таймерами. Но я тупая обезьяна.
              Ответить
              • Если ты - тупая, то какая тогда умная?
                Ответить
            • ты же рубиш в ACPI. Есть у винды апи чтобы из юзерленда через дайвер отключить эти таймеры?
              Ответить
              • Ну в MSDN написано, что банальный SetWaitableTimer() можно юзать чтобы пробуждать систему из сна и гибернации. Если это правда, то любой сервис может создать такой таймер и будить тачку. И ты заебёшься это выпиливать.
                Ответить
          • Точно все задачи удалил? Их там вообще-то охулиард (включая полезные, которые удалять не надо) спрятано в папочке «Microsoft/Windows».

            У меня была абсолютно такая же проблема — комп просыпался в три-четыре утра. Вызывалась она действительно задачей из планировщика (кажется, что-то из «Microsoft/Windows/UpdateOrchestrator»). Что характерно, после удаления эта задача возвращалась на место как другими задачами (что-то связанное с «восстановлением службы обновлений» или какой-то такой хуйнёй), так и службой (опять же, что-то связанное с восстановлением).
            Ответить
            • Точно, и скрытые задачи удалил, и все job-файлы в C:\Windows\Tasks грохнул, и после всего даже службу планировщика остановил, и автоматический поиск обновлений отключил, и в схеме питания всё поотключал.

              Какое-то время всё работает нормально, потом начинаются самопроизвольные пробуждения. Причём не только из спящего режима, но и из гибернации.
              Ответить
              • > Какое-то время всё работает нормально, потом начинаются самопроизвольные пробуждения.
                Похоже, что служба восстановления «чинит» задачи обратно, проверь.
                Ответить
                • Задач нет, сто раз проверял.

                  Это не через задачи работает. Какой-то процесс взводит аппаратные таймеры и, вероятно, что-то добавляет в однократный автозапуск (типа RunOnce).

                  Я не знаю, как поймать виновника, потому что не знаю, какой драйвер может взводить аппаратные таймеры и через какие функции API это делается.

                  Отследить всех, кто пишет в RunOnce? А если они не через RunOnce что-то делают, а через pending.xml или ещё через какой-нибудь механизм?
                  Ответить
        • Ты планировщик десятки-то видел?
          Ответить
          • Ты ведь Сёма, правда?

            Кто еще мог задать такой прекрасный вопрос?
            Это всё равно, что спросить Боманда, видел-ли он компилятор С++
            Ответить
          • Эм, ну я его в 2008 серваке впервые увидел. С тех пор вроде ничего не менялось.
            Ответить
            • Думаю, он имел ввиду, что там дохуя всего. Очень дохуя.
              В XP там было нихуя. А начиная с Висты -- дохуя
              Ответить
              • Я так и не нашёл среди этих задач ни одного реального примера полезной. Точнее, нашёл одну: запуск переключателя клавиатуры. Вместо этой задачи можно прописать ctfmon.exe в автозапуск.
                Ответить
      • А зачем выдергивать? Просто выключить недостаточно? Ноуты разве пробуждаются не только из стендбая?
        Ответить
        • Недостаточно.

          Ноуты пробуждаются даже из полностью выключенного состояния («Завершение работы»). В меню «Setup» моделей, которые я видел, таймеров нет, поэтому для их выключения нужен софт.
          Ответить
          • Какой-то ёбаный Ад. Из S5 можно пробуиться и нельзя это отключить??
            Ответить
            • Windows 2k, XP: «Мой компьютер».
              Windows Vista, 7: «Компьютер».
              Windows 8, 10: «Этот компьютер».

              Компьютер уже не ваш. Смиритесь.
              Ответить
              • Потом все в облаке будет. Даже не будешь знать где твой комп.
                Ответить
              • Leave everything to us

                Недвусмысленный намёк во время установки винды.
                Ответить
                  • Сразу видно, что ты поехавший. У тебя горилла на аватарке.
                    Ответить
                    • А по моей аватарке что можешь нагадать? Если что там Malloy.
                      Ответить
                      • Сразу видно, что ты на «ГК» сидишь. У тебя аватарка коричневая.
                        Ответить
                    • Сразу видно, что ты гуест8. У тебя гуест8 на аватарке.
                      Ответить
  • ГЦбляди продолжают смоктать хуя.

    Питуз имеет в памяти массив байт, и хочет сажать их zstd и записать его на диск.
    Чтобы не копировать результат сначала в heap, питуз берет direct buffers: это такие буферы, которые джава создает в памяти процесса. Один такой буфер это замапленный файл (через FileChannels), другой -- просто кусок памяти.

    zsdt потом в нативном коде разжимает данные и результат пишет сразу на диск, в замапленный файл.

    Настало врремя узнать, что буфер замапленного файла нельзя флашнуть. Он сам флашнется, когда его заколлектят.

    Чтобы анмапнуть нужен класс Cleaner, котоый в JDK8 вообще не документирован, а в JDK11 лежит в ДРУГОМ месте, и требует разрещшения доступа к себе (так как он считается небезопасным)

    Еще раз: mmapнуть можно, а закрыть нельзя. FileChannels таким образом хороши или для скриптов (котоые быстро завешаются) или для read.
    Всё.

    Сука пидары зла не хватает.
    Ответить
      • Поясню на простой задаче.
        Я хочу заполнить двадцатимегабайтный файл рендомными данными через mmap.

        Есть код.
        import jdk.internal.ref.Cleaner;
        import sun.nio.ch.DirectBuffer;
        
        import java.io.IOException;
        import java.nio.channels.FileChannel;
        import java.nio.file.Path;
        import java.nio.file.Paths;
        
        import static java.nio.file.StandardOpenOption.*;
        
        public class DirectBufExample {
            public static void main(String[] args) throws IOException {
                long size = 1024 * 1024 * 20;
                var path = Paths.get("c:/temp/foo");
                fillRandomUsingDirectBuffer(size, path);
        
                // Second op. will fail with The requested operation cannot be performed on a file with a user-mapped section open.
                // because file is not unmapped
                fillRandomUsingDirectBuffer(size, path);
            }
        
            private static void fillRandomUsingDirectBuffer(long size, Path path) throws IOException {
                try (
                        var open = FileChannel.open(path, TRUNCATE_EXISTING, WRITE, READ)
                ) {
                    var directBuffer = open.map(FileChannel.MapMode.READ_WRITE, 0, size);
                    for (long i = 0; i < size; i++) {
                        directBuffer.put((byte) (Math.random() * 1000));
                    }
        
                    // Uncomment to unmap.
                    // You need "--add-exports java.base/jdk.internal.ref=ALL-UNNAMED" to tun this            
                    //Cleaner cleaner = ((DirectBuffer) directBuffer).cleaner();
                    //cleaner.clean();
                }
            }
        }
        Ответить
          • Ладно, но как переписать этот код так, чтобы он везде работал, и не использовал .sun?
            Только через рефлексию (Sun всё равно будет правда).

            Буст по скорости в полтора раза в моем примере
            https://govnokod.xyz/_26671/#comment-532903
            Ответить
            • Напиши 2 реализации одного интерфейса. И условно конпелируй/загружай одну из них по версии жабы.
              Ответить
              • Мне такие фокусы могут и не разрешить: я не одинок на проекте)
                Но видимо придется как-то так делать.
                Ответить
            • Чтобы везде и быстро, придётся питушиться:
              if (8_ява_и_ниже){
              ...
              }else{
              ....
              }

              А чтобы быстро и не везде, использовать классы, которые завезли в 9ю яву.
              А чтобы работал везде, но медленно — стандартные классы из старых яв.
              Ответить
      • далее следует продолжение

        Второй вызов "fillRandomUsingDirectBuffer" упадет, так как файл не размаплен обратно. Полагаю, что и другие процессы его тоже не увидят, пока:
        * Или джава не завершится (и тогда ОС его отмапит)
        * Или переменную directBuffer заколлектит ГЦ
        * Или я раскомментирую строчку ``((DirectBuffer) directBuffer).cleaner()``

        Проблемаы с ``Cleaner``
        * в 11й джаве я должен сказать ``--add-exports java.base/jdk.internal.ref=ALL-UNNAMED`` (потому что нет доступа к этому пакету или модулюб)
        * в 8-й джаве он лежит в другом пакете. Без рефлексии обе версии джавы не поддержать.

        Кто-то спросит: "а зачем тебе direct buffer"?

        Отвечаю: С ним zstd быстрее распаковывает большие файлы, потому что может из нативного кода сразу писать в замапленный файл, а не в буфер в куче джавы (чтобы я оттуда потом писал в файл).

        https://github.com/luben/zstd-jni/blob/master/src/main/java/com/github/luben/zstd/ZstdDecompressCtx.java#L105
        Ответить
        • > быстрее

          Насколько? Или ты не замерял и просто преждевременно оптимизируешь.
          Ответить
          • лол, если включить native order, то получается еще на пол секунды быстрее
            Ответить
              • протестируем
                public class OrderTest {
                
                    static final int capacity = 1024 * 1024 * 1000;
                
                    public static void main(String[] args) {
                        final ByteBuffer buffer = ByteBuffer.allocate(capacity).order(ByteOrder.nativeOrder()); //Comment .order and rerun
                        testBuffer(buffer);
                    }
                
                    private static void testBuffer(ByteBuffer buffer) {
                        final int sizeInInt = OrderTest.capacity / 4;
                        long t = System.currentTimeMillis();
                
                        for (var q = 0; q < 10; q++) {
                            for (int i = 0; i < sizeInInt; i++) {
                                buffer.putInt(i);
                            }
                            buffer.rewind();
                            for (int i = 0; i < sizeInInt; i++) {
                                final int anInt = buffer.getInt() + 1;
                            }
                            buffer.rewind();
                        }
                
                
                        System.out.println(System.currentTimeMillis() - t);
                    }
                }


                Разница 1110 VS 1300.

                Трудно назвать это большой разницей. Интересно, что увеличение размера до long не дает сильного буста: c интом джава видимо лучше работает
                Ответить
                • > c интом джава видимо лучше работает
                  Полагаю, это потому что у них там стек четырёхбатовый, а long'и просто эмулируются запихиванием джвух четырёхбатных кусков.
                  Ответить
                  • Да, и это отсос на x64 джаве, нет?
                    Ответить
                    • Да нет, JIT должен справиться. В джавке стек строго типизированный, нельзя что попало и когда попало с него снимать. Поэтому превратить этот стек обратно в переменные труда не составляет. И в реальности после jit'а он вообще не обязан существовать, что-то может и в регистрах оказаться.
                      Ответить
                • >Разница около 20%
                  >Трудно назвать это большой разницей

                  Чтоааа??? Да Царь за такую разницу в пирфомансе просто придушит.
                  А штеуд берёт за разницу в 15-20% по частоте (4 vs 5 ггц) лишние полсотни долларов.
                  Ответить
          • Нет, судя по тому что его использует куча крупных проектов (http://govnokod.ru/26671#comment549731) игра таки стоит свеч.

            Я сам смутно помню, что когда игрался с memory mapped io, там были какие-то приколы с этими буферами из-за чего пирфоманс проседал в 1.5-2х.
            Ответить
            • > приколы с этими буферами из-за че
              У них по умолчанию byteorder не совпадает с x86, его надо явно менять через 'order()", иначе запись массива байт будет не очень шустрая.
              Ответить
              • Эээ, а массив байт то почему тормозит, на него же byte order никак не влияет? Ладно я понимаю там лонгов или интов...
                Ответить
                • -массива байт
                  +массива интов
                  конечно же.

                  Если делать putByte, то будет пофиг скорее всего. А если putInt, то нет
                  Ответить
                • лол, я придумал, как юзать байт ордер при копировании буферов

                  Правда, даже 8/long не шибко влияет на скорость. Кажется что то-ли JIT умеет заменить серию копирования байт в копирование лонгов, толи процессор один хуй читает линейку кеша, а туда много байт влазит


                  (пример на коко)
                  val n = data.remaining()
                          if (n % 2 == 0) {
                              repeat((n / 2)) {
                                  buffer.putShort(data.short)
                              }
                          } else {
                  buffer.put(data.get())


                  Чуваки! Байтоёбство в моей джаве!11
                  Ответить
                  • >Кажется что то-ли JIT умеет заменить серию копирования байт в копирование лонгов

                    По-моему уже даже самые убогие компилеры научились копирующие циклы превращать в simd.
                    Ответить
                    • Это прошлое проплывает перед глазами тебя, находящегося в предсмертной агонии. Просто лови себя на мысли, что ты уже не властен что-то изменить.
                      Ответить
              • Интересно.
                Помню что нашёл наиболее быстрое решение, и забил.
                Но там какая-то загадочная питушня, когда было три версии кода.
                И одна работала быстрее чем ByteArrays в 1.5 раза, а вторая в 2 раза быстрее ByteArrays.
                Ответить
        • >* в 11й джаве я должен сказать ``--add-exports java.base/jdk.internal.ref=ALL-UNNAMED`` (потому что нет доступа к этому пакету или модулю

          Питушня 11ой явы. Точнее 9ой.
          У всех такие проблемы, т.к. в 9ой они распилили стандартную либу на кучу кусков (https://openjdk.java.net/projects/jigsaw/). И заодно похерили обратную совместимость (я об этом писал).

          >import sun.nio.ch.DirectBuffer;
          Пакеты из sun.* не рекомендуется использовать, они их скоро выкинут/переместят. Либо уже переместили, и ты на это наступил.
          Ответить
        • Как все грустно в джаве. То ли дело D:
          import std.stdio, std.mmfile, std.random, std.typecons;
          
          void fillWithRandom(ulong size, string path)
          {
              try
              {
                  auto f = scoped!MmFile(path, MmFile.Mode.readWriteNew, size, null);
                  
                  for(ulong i = 0; i < size; i++)
                  {
                      f[i] = cast(ubyte)uniform(0, 255);
                  }
                  
                  writeln("Fill file '" ~ path ~"'");
              }
              catch(std.file.FileException e)
              {
                  writeln("Error filling file '" ~ path ~"'");
              }
          }
          
          void main()
          {
              fillWithRandom(1024*1024*5, "test1.dat");
              fillWithRandom(1024*1024*5, "test1.dat");
          }

          Но да, ГЦ напрягает после плюсов.
          Ответить
          • Я из-за GC про D даже читать не хочу. Какой он нахуй системный язык.
            Ответить
            • А это - хороший вопрос. Видимо только через destroy(mmfile)
              Ответить
          • Если без scoped, то класс MmFile создастся в куче (так все классы делают, только структуры работают по значению) и тоже не закроет маппинг 🙁
            Ответить
            • А, так ди умеет классы на стеке и закрывать их при выходе из видимости?
              Ну чтож, это уже лучше, чем Java
              Ответить
    • Всё. Я понял.

      Ты хочешь использовать проприетарный Cleaner из пакета sun.

      Который является недокументированными кишками явы.
      Равно как и известный sun.misc.Unsafe, позволяющий выстрелить себе в ногу не хуже сишки прямую работу с указателями.

      То есть используешь вендор-онли-вещи, и при этом хочешь иметь портируемый код.

      Утверждается что для каждой фичи из sun.* существует адекватная замена. Раньше компилятор явы честно писал ворнинг что пакеты из sun.* использовать не нужно. Их МОГУТ выпилить или поменять.

      Как я понял в 11ой они перенесли Cleaner из sun.* в jdk.* чтобы вынести полезный класс в jdk.* где его можно спокойно использовать.