Куча говна / Говнокод #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.* где его можно спокойно использовать.
      Ответить
      • Как я понял в 9ой они вынесли полезные api из кишок sun в стандартную либу.

        https://bugs.java.com/bugdatabase/view_bug.do?bug_id=JDK-8132928
        https://bugs.java.com/bugdatabase/view_bug.do?bug_id=8148117

        Removing the open issue referring to sun.misc.Cleaner.

        sun.misc.Cleaner was previously listed as a critical internal API, but on further investigation has been removed, for the following reasons: 1) its primary use in the JDK is within NIO direct buffers to release native memory. The base module cannot have a dependency on jdk.unsupported so will need to be updated to use an alternative cleaner, 2) the usage of Cleaner outside the JDK, as determined by corpus analysis, has largely been observed to hack into private fields of the internal NIO direct buffer classes to explicitly release native memory. As stated in 1), the type of the cleaner used by NIO direct buffers will have to change. Given this, and the fact that JDK 9 has a new general purposed cleaner API, java.lang.ref.Cleaner, the value of keep sun.misc.Cleaner is questionable. See JDK-8148117 for further details.

        Ну и правильно сделали.
        Ответить
      • Мы точно знаем куча софта использует sun.misc.Cleaner

        А теперь давайте его СЛОМАЕМ! Азаза.

        Uses of sun.nio.ch.DirectBuffer.*
        
        The following methods can be replaced via reflection, however, using an API (even an internal one) is nicer.
        
        sun.nio.ch.DirectBuffer.address() to get the address of a ByteBuffer
        sun.nio.ch.DirectBuffer.cleaner() to release memory deterministically.
        
        In low GC systems, by design, you cannot assume that the GC will run often or regularly.  
        Ideally, the system should run for 24 hours to a week between minor GCs. If you are producing < 700 KB/s of garbage this is possible. 
        In such an environment, with the bulk of your data off-heap, you need to be able to clean up these resources directly
        
        
        Examples of projects/products using sun.nio.ch.DirectBuffer
        
        Chronicle Bytes
        Apache Spark
        Kryo
        Cassandra
        
        Uses of sun.misc.Cleaner
        sun.misc.Cleaner is used to handle cleanup of memory allocated via Unsafe
        
        There is no alternative using reflection or JNI. 
        In some cases reflection is used to get the Cleaner from ByteBuffer, in some cases, a cast to sun.nio.ch.DirectBuffer is used and in some cases, 
        Cleaners are created directly.
        Examples of projects/products using sun.misc.Cleaner
        
        Chronicle Bytes - NativeBytesStore
        Netbeans
        Quartet FS (Probably)
        Netty and IntelliJ
        JDBM
        Apache Lucene
        Kryo
        VoltDB
        cleakka
        SAP (Probably)
        jMonkeyEngine
        fqueue
        imageio-ext
        exs-aion-emu
        Aeron
        Agrona
        Ответить
        • >Apache Lucene
          >Netty and IntelliJ
          >Cassandra
          Ого, да у меня неплохие соседи:)

          Почему питузы не сделали его Closeable?!!
          Ответить
          • Да, я почитал за багор и понял что это пиздец.

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

            Вместо того чтобы в новой яве для начала починить хуёвое апи, или сделать новое, хорошее с autoflush.
            Они СОЗНАТЕЛЬНО переместили класс, СОЗНАТЕЛЬНО же ломая с десяток крупных известных проектов. И сотни, тысячи неизвестных.
            Ответить
        • > Ideally, the system should run for 24 hours to a week between minor GCs.
          > with the bulk of your data off-heap

          Вот вам и сборщик мусора...
          Ответить
          • Да, охуенно.
            И это из внутреннего документ разрабов явы.
            То есть они знали что такой-то софт использует и сломается.

            >sun.nio.ch.DirectBuffer.cleaner() to release memory deterministically.
            Эти люди годами, десятилетиями говорили зачем вам malloc/free, зачем ручное управление памятью?
            Ответить
            • > Эти люди годами, десятилетиями говорили зачем вам malloc/free, зачем ручное управление памятью?
              А это фундаментальная проблема гэцухов. Они взяли один из ресурсов — память — и наговнякали систему, позволяющую им управлять. Но, поскольку у гэцухов, как и у всех питухов, мозг очень маленький, простой факт того, что память — это всего лишь один из множества видов ресурсов, в их мозги не влез. В результате гэцухи решили (прямо скажем, хуёво решили) проблему управления памятью… совершенно забив на всё остальное. Вот и приходится им городить тупые костыли, от одного вида которых крестобояре начинают ржать.

              А всё потому, что единообразные задачи нужно решать единообразным способом. Управление памятью — это всего лишь частный случай управления ресурсами. Крестобояре это поняли гавным-гавно и сделали божественный «RAII», для которого нет никакой разницы, какой ресурс освобождать: память, файлы, сокеты, хэндлы или чёрта из ступы. Всем этим «RAII» может эффективно, просто, безопасно и детерминировано управлять.

              Именно поэтому я за «RAII».
              Ответить
              • Да, но не совсем. Это надо для каждой питушни аккуратно определять, как она умирает и что с собой уносит.
                Нужна какая-то прозрачная питушня с хранением по указателю - настолько же прозрачная, как хранение по значению. Должна указываться вореция владения - только я, счётчик ссылок, слабая ссылка. И компилятор должен проверять, чтобы у одного питуха не было нескольких владельцев, а слабые ссылки проверялись на пустуха перед использованием.
                Ответить
                • > только я
                  std::unique_ptr

                  > счётчик ссылок
                  std::shared_ptr

                  > слабая ссылка
                  std::weak_ptr

                  > слабые ссылки проверялись

                  Они проверяются. Более того, ты обязан их залочить в сильную ссылку перед использованием чтобы объект не сдох пока ты с ним работаешь. И если ты забудешь это сделать - код просто не скомпилится.
                  Ответить
                  • Но это длинная питушня. Нужна какая-то директива using common_sense;, при которой все эти *, &, && заменялись на std::unique_ptr, std::shared_ptr, std::weak_ptr. Аналогично, анскильные * и [] чтоб означали std::vector и std::array. В других языках std::map встроено в язык, а в C++ придумывают пидоротрические шаблонные лямбды и функции Бесселя.

                    Иначе это провал, ведь для написания нормального кода надо писать std::боль_ше std::бес_полезных std::сим_волов, а для написания ненадёжного говна - один символ.
                    Ответить
                • Если крестухи на словах кукарекают про RAII, то по факту встретится достаточное количество проектов, где без чтения кода не поймёшь, кто владеет объектом. Также неясно, какие объекты какое время тебе надо удалять. А если пишешь свою реализацию абстрактушни - должен знать не только методы родителей, но и порядок удалений, который принят у пользователей твоего кода, которые находятся вне твоего пакета!

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

                  То ли дело Java. На ней надо постараться, чтобы написать код, который зависит от негласного порядка удаления.
                  Ответить
                  • > по факту

                    Да потому что нормально всё это стало работать относительно недавно. Раньше из смартпоинтеров был только убогий std::auto_ptr. Вот народ и писал как умел. А инерция и совместимость ещё лет на 10 переход затянут.
                    Ответить
                  • >где без чтения кода не поймёшь, кто владеет объектом.

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

                    У яблока во время ручного reference counting были четкие правила (да и сейчас наверное остались на для кода на НЕОБЪЕКТНОЙ сишечке):
                    https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmRules.html

                    В системах на няшной обычно тоже есть правила кто делает malloc и когда он делает free.

                    Я не верю, что "понимать граф объектов в памяти" это такая пиздец нерешаемая задача для хорошего программиста
                    Ответить
                    • > правила кто кем владеет. Их надо выработать и соблюдать.
                      Ну питушня же.

                      Крестушки за такое JS ругают. Мол кококо, в JS всякая неочевидная питушня, макаки набегают и стреляют в ногу. Хотя на JS можно писать хороший код, если у тебя опыт и культура программирования на уровне хорошего крестовика.
                      А когда дело касается крестов, оказывается, что это не язык говно, это надо получить степень доктора крестовых наук, и тогда только писать.

                      > "понимать граф объектов в памяти" это такая пиздец нерешаемая задача для хорошего программиста
                      А зачем это надо понимать, если как-то можно автоматизировать?
                      Вспомним операторы в JS. Заучить таблицу 6*6 для каждого оператора - простая задача для хорошего программиста. Но потом оказывается, что кванты пердолинга накапливаются в большую БНОПНю с [object Object] и undefined.

                      Вы так размышляете, как будто программисту можно только понять этот сраный граф, а программа после этого сама напишется. Но нет, у программиста ещё много задач. И чем больше он будет уделять время графу пердольности, тем меньше останется на бизнес-логику.

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

                      Так почему бы не отдать рутину компилятору? Со статической типизацией сделали ровно это, хотя цари могут на память знать все объекты в JS.
                      Ответить
                      • > JS всякая неочевидная питушня,
                        Владение объектом достаточно очевидно

                        >А зачем это надо понимать, если как-то можно автоматизировать?
                        Это крайне плохо автоматизируется для любого проекта сложнее веб-магазина по продаже шоколадных печений.

                        Всё равно программисту нужно думать про граф объектов, иначе память забьется

                        >Вы так размышляете, как будто программисту можно только понять этот сраный граф, а программа после этого сама напишется

                        Нет, но программа напишется гораздо более лучше, если он его поймет.

                        > программа будет зашкварена UB и багами.
                        А с ГЦ парограмма будет зашкварена ликами и тормозами ГЦ.

                        Вообще, было бы удобно иметь галочку:

                        "Окей ЯП, я достаточно скильный, чтобы не делать цыклов. Позволь мне иметь референс каунтинг хотя-бы такого уровня, как у яблока"

                        Или "Окей ЯП, я не хочу думать про память: хочу срать кодом, и течь. Ты уж там подчисти чего, если вдруг памяти не хватит"

                        К сожалению, это значит, что придется написать каждой библиотеки (включая стандартную) по два вида: для RC и для GC.

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


                        Не нужно иметь голову размером с Линуса Торвальдса чтобы писать на языке без ГЦ.
                        Ответить
                        • В D давно есть структура-обертка RefCounted и в этом направлении активно движутся, добавляя поддержку для файлов, сокетов, своих структур. Т.о. есть тот самый переключатель.
                          Ответить
                        • > Это крайне плохо автоматизируется для любого проекта сложнее веб-магазина по продаже шоколадных печений.
                          Ну веб-магазин по продаже шоколадных печений - это уже достаточно большой проект. Это уровень eBay.
                          Большинство проектов поменьше будут, язык с GC с ними справится.

                          Не стоит возводить в абсолют. Если GC начинает тормозить на 1% проектов, то не стоит называть GC анскильным говном. Остаётся ещё 99%, с которыми он нормально работает.

                          Это как с проблемой постанова на питушне Питуринга. Кто-то считает, что она нерешаема, и начинает ныть. А кто-то просто ставит лимит на питушение, и у него всё работает.

                          > Вообще, было бы удобно иметь галочку
                          Да.
                          Ответить
                          • Если бы eBay продавал ТОЛЬКО шоколадные печенья, то он не был бы eBay.

                            А магазины размером с eBay уже достаточно тяжелые (и долгоживущие) чтобы начать думать про память.
                            Ответить
                            • В книге по хаскелю вообще магазин по продаже машин времени в качестве примера делают.
                              Ответить
                            • > ТОЛЬКО шоколадные печенья
                              Я понимаю, если один вид, который можно захардкодить.
                              А если несколько видов, то это уже не сильно отличается от питушни, которая торгует чем угодно.
                              Разве что количество клиентов влияет. Если их немного, оптимизировать дорого. Если много - не оптимизировать дорого.
                              Ответить
                              • Если ты торгуешь только печением, то у тебя никогда не будет миллион пользователей в день

                                Столько печений просто не нудно никому
                                Ответить
                  • > Также неясно, какие объекты какое время тебе надо удалять. А если пишешь свою реализацию абстрактушни - должен знать не только методы родителей, но и порядок удалений, который принят у пользователей твоего кода, которые находятся вне твоего пакета!
                    Чего? В том-то и прелесть «RAII»: тебе не надо заботиться ни о каком порядке удаления, он строго определён в стандарте. Объект, созданный первым, удаляется последним — всё, больше ничего знать не надо.
                    Ответить
                    • > Объект, созданный первым, удаляется последним — всё, больше ничего знать не надо.
                      Питушня, справедливая только для питушни, которая по значению.

                      Пример 1: функция каррирования или любая питушня с замыканием
                      let curry = f => x => y => f(x, y);

                      Питушне из замыкания (f и x) нужно искусственно продлевать жизнь. И, в отличие от JS/Haskell с GC, в C++ делать это надо явно, иначе UB. В языке с GC и замыканиями всё и так работает.

                      Пример 2: ненужная фабрика с контекстом
                      object_t* create(id_t id) {
                        factory_t f;
                        return f.create(id);
                      }

                      Если объект, который создала фабрика, ссылается на неё (ради какого-то контекста), RAII питух укококошит фабрику, и объект будет зашкварен.
                      В случае языка с GC контекст будет оставаться с объектом столько, сколько он ему будет нужен.

                      Вишенка на торте: благодаря инкапсуляции ссылка на factory_t у decltype(factory_t().create(id)) будет в приватном питухе. То есть она будет деталью реализации, которая скрыта от пользователя, но существенна для написания кода.
                      А значит вся эта хрень нарушает и так хрупкого питуха инкапсуляции.
                      Ответить
                      • > любая питушня с замыканием

                        Захватывай shared/weak и всё будет норм. В boost::asio на таком захвате всё основано. Обработали ивент, объект больше никому не нужен, тут же его и убили. Либо он подписался на следующее событие и за счёт этой подписки остаётся в живых.

                        > объект ссылается на фабрику

                        Дык он через shared ссылается. Т.е. если фабрика кому-то ещё нужна - она выживет. Если нет - ну и хуй с ней, пусть убивает, он последний юзер.

                        Х.з. такие ситуации довольно часто встречаются и особых проблем с ними нет. Если не смешивать всё это с сырыми указателями и ссылками, конечно.
                        Ответить
                        • О питушне с фабрикой должен подумать пользователь библиотеки. Он должен заранее предугадать, что фабрика кому-то может когда-то понадобиться и сразу создавать умные указатели на неё, даже если объекты на неё не ссылаются. А пользователь ничего из этого не знает.

                          Иначе потом, когда на фабрику начнут таки ссылаться, придётся создать свои костыли и велосипеды, сделав из фабрики только обёртку над shared питушнёй.

                          В то время, когда с GC это ноль проблем и ноль усилий.

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

                            Именно так. После этого обычные указатели начинают смотреться как нечто инородное и сразу бросаются в глаза.

                            Я за пять лет по-моему ни разу не поюзал new. А delete вообще забыл как выглядит. Как на собеседованиях про них рассказывать - х.з.
                            Ответить
                            • А что можно рассказывать на собеседованиях про new и delete?

                              Их всего два вида: со скобочками для массивов, и без скорбочек для немассивов

                              нет?
                              Ответить
                              • Ещё есть «placement new», который конструирует объект на заранее выделенном куске памяти, и «new(std::nothrow)», который в случае невозможности выделения развращает nullptr, а не кидает исключение. Существует ещё, кстати, довольно распространённый багор, когда питузы проверяют результат обычного «new» на nullptr — и тем самым проёбываются.
                                Ответить
                                • >проверяют результат обычного «new» на nullptr
                                  это питузы с нящным бекграундом
                                  как malloc, да?
                                  Ответить
                                  • Ага.
                                    // Заебись
                                    int *arr1 = malloc(sizeof(int) * 42);
                                    if (arr1 == NULL) { perror("Couldn't allocate arr1"); exit(1); }
                                    
                                    // Хуйня: при недостатке памяти упадёт из-за несловленного std::bad_alloc
                                    int *arr2 = new int[42];
                                    if (arr2 == nullptr) { std::perror("Couldn't allocate arr2"); std::exit(1); }
                                    Ответить
                                    • Вроде это у страуструпа в главе по динам память на первой странице написано
                                      Ответить
                      • >В языке с GC и замыканиями всё и так работает.
                        Бесчисленное число случаев я видел, когда питух в джавовой и кокошной лямбде ловко захватывал какую-то перменную (сам тоже даже не понимая), а потом приходил OOM.
                        Ответить
                      • Ну, собственно, Борманд всё написал: во всех примерах проблемы не из-за «RAII», а из-за сырых указателей, которые говно. И в примере с фабрикой — ещё из-за системы памяти (выделения на стеке) конкретно в крестах.
                        Ответить
                • >Это надо для каждой питушни аккуратно определять, как она умирает и что с собой уносит.
                  В крупном проекте на джаве -- тоже.

                  Если ты не будешь думать по памяти ("потому что ГЦ разберется") то потом твоя программа съест всю память, упадет в ООМ, и ты будешь дампы читать.

                  Мантра "программисту не нужно думать про память -- про нее думает ГЦ" НЕ работает для больших, долгоживующих проектов.

                  Это как с ORM, например.
                  ORM хорошо, можно не знать SQL, но как только у тебя что-то сложнее персонального блога, так сразу оказывается, что SQL знать нужно.

                  Я в коде видел много слабых ссылок для всяких кешей ровно потому, что программисты вынуждены думать про память
                  Ответить
                  • То есть думать о памяти нужно только тогда, когда GC уже не справляется должным образом, а не в каждом конкретном случае работы с памятью.
                    Так и происходит в остальных отраслях. Автоматизируют всё, что можно автоматизировать, а выходящую за рамки питушню делают руками за большие деньги.
                    Ответить
                    • Да, на маленьких задачах можно не думать, это правда
                      Ответить
                    • https://habr.com/ru/company/ruvds/blog/503312/
                      Производительность — это ключ к успеху веб-приложения.
                      Поэтому разработчикам нужно знать о том, как возникают утечки
                      памяти, и о том, как с ними бороться.
                      
                      Эти знания особенно важны в том случае, когда приложение, которым
                      занимается разработчик, достигает определённого размера. Если уделять
                      утечкам памяти недостаточно внимания, то всё может закончиться тем,
                      что разработчик, в итоге, попадёт в «команду по устранению утечек памяти»
                      (мне доводилось входить в состав такой команды).

                      >>> Как вызвать утечку памяти в Angular-приложении?

                      Гыгыгы.
                      Ответить
                      • ngOnDestroy(): void {
                        this.destroy$.next();
                        this.destroy$.complete();
                        }

                        Очень легко забыть добавить в компонент destroy$,

                        Я настоятельно рекомендую вам пользоваться этим набором правил в своих проектах.
                        --------------


                        Ах, как же живут эти нещастные референскаунт питухи? Наверняка они постоянно текут памятью!

                        Как хорошо, что у нас в джаваскрипте ничего не надо делать руками, и все делается автоматичечеи

                        ГЦ ПОЗАБОТИТСЯ О ТЕБЕ.

                        Ах
                        Ответить
    • "You are being watched. The government has a secret system: a machine that spies on you every hour of every day." Person of Interest (TV series)
      Ответить
    • >Партия прямой демократии

      Ахахаха, хаброёбы уже какие-то мурзилькины говнопартии пиарят) Скоро статьи про лдпр пойдут
      Ответить
  • Как правильно «офлайн», или «оффлайн»?
    Ответить
  • Очередной systemd-bagor.

    В общем решил я попробовать systemd в MX Linux, благо всё переключение сводится к выбору пункта меню в grub.

    Система действительно стала грузиться заметно быстрее: вместо 20 секунд, теперь всё происходит за 10. Из которых в кернеле 6 (systemd-analyze time).

    Правда пришлось отключить
    systemctl mask NetworkManager-wait-online.service

    C ним было 14 секунд (systemd-analyze critical-chain).

    А вот и первый багор. Сломался dns в openvpn.
    Симптомы такие: подключается, первые пару минут всё работает. А потом, хуяк: host not found.
    https://askubuntu.com/questions/1032476/ubuntu-18-04-no-dns-resolution-when-connected-to-openvpn
    БЛЯДЬ, НУ ВОТ КАК-ТО. ДЖЕДЯТЬ ЛЕТ ВСЕМ МИРОМ ДЕЛАЛИ СИСТЕМД. ПЕРЕСАДИЛИ НА НЕЁ ВСЕ ОСНОВНЫЕ ДИСТРЫ. И ВОТ ТАКОЕ.
    Ответить
    • systemd-resolved всё сломал?

      Почему вообще в Linux есть что-то НЕ systemd?
      nginx -> systemd-webd
      bind -> systemd-resolved-serverd
      postix --> systemd-maild
      bash --> systemd-shelld (via dbus)
      python --> systemd-scriptd (via dbus)
      Ответить
        • БЛЯДЬ, какие-то шкрипты, обёртки для абасракций.
          Ubuntu 18.04 uses systemd-resolved, so all you have to do is install the openvpn helper script for systemd-resolved via
          
          sudo apt install openvpn-systemd-resolved
          Я вот не понимаю, неужели нельзя просто сделать паралельный бут, не ломая и не переписывая при этом половину системы (системные пути, dnsы).
          Ответить
          • Кстати, а почему эти скрипты по-умолчанию не встали? Вроде же логично их автоматом накатить если у тебя ставится openvpn и systemd-resolved.
            Ответить
            • >Вроде же логично их автоматом накатить если у тебя ставится openvpn и systemd-resolved.

              Логично.
              Но это же убунта. Охуенный дистр с пакетным менеджером и зависимостями, собранный профи.

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

              Прошло полтора года с момента выхода дистра, и... НИХУЯ НЕ РАБОТАЕТ.

              Unfortunately this didn’t work for a vpn which is using tcp, sites outside vpn are not resolved, hence I started using client.pritunl.com/#install found useful – Saisurya Kattamuri Oct 2 '19 at 16:31
              Ответить
              • > полгода

                Это хуйня. Торбраузер и эклипс больше года мёртвые валялись. Походу у ШаттлВрота бабло закончилось и на десктоп они забили.
                Ответить
                • >Торбраузер и эклипс больше года мёртвые валялись
                  Пиздец.

                  Хотя помню мне знакомый жаловался: поставил я твой линукс(убунту) поставил из маркета нетбингс/эклипс, а они не работают.

                  > полгода
                  Полтора же.
                  Oct 2 '19 at 16:31
                  18.04 вышла в апреле 2018.

                  > ШаттлВрота бабло закончилось и на десктоп они забили
                  Да они всю жизнь ложили на свои баги. Чинили только то что само чинилось простым обновлением кернела и библиотек.

                  Там просто анскилябры работают. Ни разу не видел, чтобы какой-то каноникл-убунтоид-бой комитил фикс в ядро.
                  Ответить
          • https://github.com/jonathanio/update-systemd-resolved/blob/master/update-systemd-resolved

            # OpenVPN helper to add DHCP information into systemd-resolved via DBus.


            ебать говно
            for (( i = 0 ; i < ${#tokenized_segments[@]}; i ++ )); do
                    # Skip groups that aren't zero-runs
                    [[ "${tokenized_segments[i]:0:1}" == "$nonzero_prefix" ]] && continue
            
                    if (( tokenized_segments[i] > largest_run )); then
                      (( largest_run_i = i ))
                      largest_run="${tokenized_segments[i]}"
                    fi
                  done
            Ответить
            • Забавно что 95% людей тупо вобьют команды в консоль и выполнят от рута неизвестный скрипт, который они даже не читали.

              Причём ссылка ведь не на хеш комита, а на мастер.

              sudo wget https://raw.githubusercontent.com/jonathanio/update-systemd-resolved/master/update-systemd-resolved
              Ответ-то заплюсовали. А завтра автор запушит в мастер rm -rf. И чо тогда?
              Ответить
      • >systemd-resolved всё сломал

        Да.
        Эти 10 секунд экономии на буте явно не стоят дальнейшего прожигания жизни ЧАСАМИ.
        Почему нужно устраивать еблю с баграми systemd и гуглением стековерфловочки.
        Ответить
        • я буквально 2 недели назад поебался с днс в опенвпн на фоне нетворк-менеджера и системд-резолвед!
          решил проблему

          там косяк, если недописать в хвост конфига клиента опенвпна одну строчку, то хуево работает
          строчка вот такая
          dhcp-option DOMAIN-ROUTE ~.


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

          поэтому в конфигурации в /etc/NetworkManager/system-connections/<yourvpnname>.nmconnection в секции [ipv4] надо добавить руками опцию
          dns-search=~.;


          а ещё лучше сразу дохуя опций, чтобы наверняка:
          dns=<vpn dns ip>;
          dns-search=~.;
          ignore-auto-dns=true
          method=auto
          never-default=true


          тогда будет щястье - системд-резолвд начинает понимать в днс, пришедший через впн, и выставлять ему приоритет повыше, чем, например, днс от вафли
          Ответить
      • А как вам советы уровня «качай говно с интернетов @ запускай от рута»:
        https://askubuntu.com/a/1036725
        sudo wget https://raw.githubusercontent.com/jonathanio/update-systemd-resolved/master/update-systemd-resolved -P /etc/openvpn/scripts/
        sudo chmod +x /etc/openvpn/scripts/update-systemd-resolved


        Я всегда говорил, что убунта позиционируется как дистр для домохозяек.
        Но на самом деле по ебле превосходит арч и слаку.
        Потому что дрочиться нужно столько же, плюс обходить заковырки пакетного минетжера.
        Ответить
  • Где можно нанять юзера, чтобы он выкачал файлы с помоек и залил в облако?
    Ответить
    • Предложи Сёме, он один хуй без работы
      И в помойках шарит
      Ответить
      • Сёма не из нищестраны, вот рус-ню бы или хохла.
        Ответить
          • Сёма писал же вроде, его пособие равно примерно средней зарплате веб-макаки в Роиссе
            Правда, Сёме еще квартиру оплачивает государство, но там и цены выше.

            Конечно, пособиие в Раше ниже. Так что если ты собираешься быть безработным и искать себе вещи на помойке, то лучше делать это в Германии
            Ответить
            • Ты можешь быть в Германии безработным, получать как веб-макака в рашке и в освободившееся время троллить рус-ню и лазить по мусоркам.
              Ответить
  • А мне 3д принтер пришёл - ща тестирую его печать
    Ответить
        • Поставил 5 звезд китайцу на алиэкспресс за этот принтер. Написал лишь "заебись". Ну как Сёма?
          Ответить
            • Ну ты же орал что зачем на али ставят 5 звезд китайцам, и при этом стоят никчёмный коменты типа "норм"
              Ответить
    • Сколько стоил? Что с ним делать будешь?

      У меня тут кстати неподалеку лазерный резак есть. Акрил, фанеру режет.
      Ответить
        • Он его ещё не взял. Видишь он написал "неподалеку [...] есть"? Значит он его видел на соседней помойке, но пока ещё не забрал его.
          Ответить
        • Нипочем, на нем можно за бабки работать.
          Ответить
            • Какую блядь аренду? Ты приходишь, загружаешь файл и резак работает. Это у вас аренда называется? Если ты приходишь на ксероксе копии делать - ты его арендуешь?
              Ответить
              • Не ебу зачем нужен такой резак и как он выглядит.
                Ответить
                • Я ж написал
                  >Акрил, фанеру режет.
                  Акрил выглядит как заводская штамповка.
                  Ответить
      • Я ссылку кидал сколько он в бачах стоил. Напоминаю что он стоил 250 бакса. И уже раз сотый говорил что я сним буду делать.
        Ответить
        • Ты думаешь я что, блядь, за тобой слежу?
          Ответить
      • ту панч зе рустер, лол

        Играл в децтве в морталкомбат? Там были панчи и кики
        Ответить
        • кики
          кикики ки кики
          кикики ки ки ки ки ки

          куууууик
          Ответить
  • «Я в гэмблинг сходил, мне не понравилось. Через пару месяцев сбежал. Плюсы: хорошо платят. Минусы: для кармы вроде не очень хорошо, подводные камни: примеры с https://govnokod.ru выглядят как best practices 🙂 но как справедливо заметили - все от компании зависит.»

    Взято отсюда:
    https://twitter.com/dkorobtsov/status/1264863957359230977
    Ответить
  • Почему на одних сайтах рекапчу спрашивают иногда, а на других - каждый первый раз?
    Ответить
  • ΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣ
    Ответить
  • Теперь другая проблема. Поставил тулзы - а модули на питоне блядь не компилируются.
    Ответить
    • Приведи реальный пример пакета, которого нет в скомпилированном виде. Хочу проверить, компилируется ли у меня.
      Ответить
      • >Приведи реальный пример
        Тебя так задело? Ты знаешь откуда эта фраза пошла?

        mitmproxy на 3.8, какие-то зависимости не компилируются.
        Ответить
        • Вообще хуй знает, в чем твои проблемы.
          Я запустил 15-ю студию, из нее зашел в tools, там сказал pip install, и всё собралось.

          Ты какой-то очень невезучий видимо
          Ответить
      • Пишет то же самое что и до этого. Судя по всему, установщик их не видит.
        Ответить
        • Компилятор при вызове из «Питона» не видит «basetsd.h». Этот файл лежит не в студии, а в «Windows SDK». Нужно поставить SDK хоть какой-нибудь версии и установить переменные окружения INCLUDE и LIB:
          set INCLUDE=C:\Program Files\Microsoft SDKs\Windows\v7.1A\Include 
          set LIB=C:\Program Files\Microsoft SDKs\Windows\v7.1A\Lib


          Вообще это не дело. Надо придумать, как пропатчить питоновский пакет distutils, чтобы он автоматически находил SDK.
          Ответить
          • Лучше подумай о том, куда денется нажитое тобой добро, когда тебя не станет.
            Ответить
          • не надо так

            у студии есть спец батфайл, которы это все натаивает
            на сайте MS есть спец SDK с этим бат файлом
            не надо вучную ничего никуда пописывать
            Ответить
        • А я ебу что он писал до этово?
          Ответить
  • Внимание! Очень важный вопрос!

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

      > когда он срывается

      Разбежавшись прыгну со скалы, вот я был и вот меня не стало.

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

        Меня тупо тошнит от бесплатного программирования. Все что не получается хуяк-хуяк - тупо не нужно.

        >можно вечно дрочить на оптимальность и красоту кода
        Тут то просто: работает - больше не трогай, ну кроме самого базового рефакторинга после того как заработает.
        Ответить
        • Да хер знает. Не скажу за питон, но в крестах выбор и сборка либ - это всегда один из самых рискованных этапов, я на работе обычно умножаю его на 2-3. Потому что всегда какое-нибудь говно и ёбля вылезают что на венде что на прыщах.

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

          > хуяк-хуяк

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

            >смело выделяй на это пол недели.
            Ээээ нахуй.
            Мне нужно сделать перехватывающий прокси и кой-что подменять в трафике. С бизнес-логикой я не затяну, но ебать-копать, сколько времени надо просрать на поиск и запуск модуля? Сука, на такой хуйне зависнуть - установка модуля! Причем на прыщах всё 100% работает изкоробки.
            Ответить
            • А я вообще всегда начинаю с хуяк-хуяк. Можно и поиграться с результатом и показать кому-то и какие-то фатальные косяки быстро заметить.

              > эээ нахуй

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

              > на прыщах работает

              Может на этом и остановиться? Зароутить через виртуалку и т.п. Один хер же для себя.
              Ответить
              • с wsl2 вообще не проблема кстати
                Ответить
                • докер с линуксовым контейнером на винде запускает виртуалку под капотом
                  проверь
                  Ответить
                  • устанавливать винду ради этого? нет

                    похуй что он там запускает, главное, что это не миллион кликов в ебанутых оконных программах, а тупо docker run с опциями

                    небось ещё и детачед есть, как у взрослых - заебенил, оно само как сервис работает, жрать не просит
                    Ответить
                    • там гиперви, и оно детачд, да
                      там даже при желании кажется даже консоль не получить

                      в пинде есть wsl2, это еще быстрее, и тоже линукс
                      Ответить
                      • как ни приду на говнокод, вечно форсят свой сраный WCT
                        походу, новую мажорную версию сделали
                        скоро начнут как хром, галопирующую версионность
                        бедлам
                        Ответить
                        • Там действительно Принципиально Новая Версия.

                          wsl1 это была симуляция linux ABI, то-есть весь юзерленд был из дистра, а вместо ядра -- поделка MS,

                          А в WSL2 уже честная виртуалка с настоящим (хотя и патченным) ядром. Работает весьма хорошо
                          Ответить
                          • >> СоХабр закрыт.
                            >> С 13.05.2019 изменения постов больше не отслеживаются, и новые посты не сохраняются.

                            Какой багор )))
                            Ответить
                            • Ага. Правда, сам кабр наконец-то сделал мобильную версию.
                              Ответить
                    • Пошла нахуй, прыщеблядь. Ты хуже стерторова ишака.
                      Ответить
              • >Ну а хули ты хотел
                Еще раз: я это пишу для себя, т.е забесплатно.

                >Может на этом и остановиться? Зароутить через виртуалку и т.п
                Ну нахуй. У меня аж 3 компа, тут даже между компами перекидывать заебешься.
                Ответить
                • Время Семы стоит слишком дорого, чтобы тратить его на изучение основ сей и изучение того, как питономодули компилиуются на его родной ОС
                  Ответить
                  • "Сёма" на этом не зарабатывает.
                    Ответить
                    • Пятиминутка культпросвета.

                      Чтобы собрать что-то под пинду нужны два стула:

                      1. Компилятор, линкер и либы/инклуды рантайма. Называется тулчейн.

                      2. WinSDK. Без него конечно можно, но дальше ANSI C ты не продвинешься, так что сложнее лабы ничего не напишешь.
                      SDK это тоже охулион инклудов и либ.

                      Со студией идет и то, и то. Но можно скачать отдельно.
                      На сайт MS отдельно это идет для бидона, называется buildtools.

                      Важно чтобы тулчейн совпадал с питонячим (для SDK это менее важно, так как ABI винды не менятся, а рантайм может).

                      Список тулчейнов для питонов есть на сайте питона.

                      С этой питушней в комплекте идет cmd или bat файл. Обычно называется что-то-там-tools. Он сам в меню винды добавится.

                      А если поставишь студию, то там он будет в меню tools.

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

                      Проверить просто: пишешь такой файл.
                      #include <Windows.h>
                      #include <stdio.h>
                      
                      void main() {}


                      компилируешь его через cl, и смотрришь,что всё собралось и получился запускаемый экзешник.

                      Если получилось -- то можешь прямо там запускать pip.

                      Если нет -- значит пытаешься понять что не работает.
                      Это не сложно. Школьник справится.
                      Ответить
                      • Нахуй оно мне надо, блядь? Это чужой модуль.
                        Ответить
                        • нахуй прогарммисту на питоне под винду уметь собирать модули для питона под винду?

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

                Типичная сишкопроблема.
                Ответить
                • эммм

                  ну типа когда они некомпилиуются, они обычно пишут ошибку

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

                      Оказывается, даже питономакаке надо немножечко знать си, хотя бы чтобы уметь прочитать ошибку.


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

                          в 99% случаев это неверная сдк или тулчейн
                          Ответить
                          • Да если бы и был, температуру ты ими не собьёшь.

                            Ты предпочитаешь быть завернутым в атлас или таки в рогожу?
                            Ответить
                          • В сишке бывают странные глюки из-за плохих макросов. Бывает, что при перестановке строчек с #include результат компиляции меняется.
                            Ответить
                            • Бывает
                              Но есть мнение, что автор кода уже как-то его компилиовал

                              Семе нужно
                              * взять ровно тот самый SDK и тулчейен, которы соответствует его питону. Эта инфоация есть на сайте пайтон огг
                              * Скачать это с микрософт ком
                              * Запустить бат файл, котоый настроит переменные окружегия
                              * Всё
                              Ответить
                              • При этом на прыщах работает простой pip install-
                                Ответить
                                • Не всегда. Бывает нужно поставить какой-то пакет, а для этого нужна другая убунта - и ты пососешь. А на «Windows» кликнул на инсталлятор и збс.
                                  Ответить
                        • Оказалось, что компиляция работает.

                          Автор вопроса просто не осилил запустить vcvars32.bat
                          Ответить
                          • Хм, а зачем тогда вся эта хуйня с автодетектом версии студии, если все равно руками надо этот батник пинать?
                            Ответить
                            • для тех, кто не умеет в этот файл видимо


                              но если пнуть файл руками, то всё работает
                              всегда
                              у всех

                              в отличие от автодетека, которому трудно найти студию в одном с семи мест, где она может встретиться

                              не очень сложно
                              Ответить
                      • К сожалению, да. Жаваёбам и сишарпоблядкам намного проще. Я дико ржу когда вижу https://xkcd.ru/353/ Ага, блядь, это до первой ошибки, а если ни дай бог сегфолт - всё, суши весла.
                        Ответить
                        • Жаваёбам иногда нужно собррать JDK, и это всегда такая боль, что лучше сразу уйти в кочегары

                          а питон у меня студией с первого раза собрался
                          Ответить
                          • В твоей сопливой фантазии, да?
                            Ответить
                            • нет, вполне в реальной жизни.

                              Это только тупой хуесос сема не в состоянии выполнить три шага по инструкции. Обычные программисты (даже макаки) с этим как-то справляются.
                              Ответить
                              • Почему мне никогда не приходилось собирать JDK? Если тебе приходилось - тебе за это или платят, или ты пердоля и твоё время нихуя не стоит. Что так, что так - твои проблемы.
                                Ответить
              • Там судя по всему установщик не видит build tools.
                Ответить
                • В девятый раз я не буду писать как сделать так, чтобы установщик увидел билд тулс.
                  Предлагаю тебе найти эту информацию в этой теме
                  Ответить
    • Для себя не выделяю, за деньги выделяю конечно. Без дедлайна можно играца вечно
      Ответить
      • А если проебал дедлайн и низуя не сделал?
        Ответить
        • Я стараюсь ставить маленькие майлстоны, не больше двух-трех дней.

          Мне надо сделать задачу. Я разбиваю ее на подзадачи по 3 дня. Составляю план, в какой день какую задачу сделать.

          Если я вижу, что не успеваю с одной задачей, то стараюсь сделать ее максимально просто и быстро, чтобы не сорвать обший срок
          Ответить
          • А если тебе нужно поставить модуль, как Сёме, и не справляешься совсем?
            Ответить
            • ឵
                                                        $"   *.    
                            d$$$$$$$P"                  $    J
                                ^$.                     4r  "
                                d"b                    .db
                               P   $                  e" $
                      ..ec.. ."     *.              zP   $.zec..
                  .^        3*b.     *.           .P" .@"4F      "4
                ."         d"  ^b.    *c        .$"  d"   $         %
               /          P      $.    "c      d"   @     3r         3
              4        .eE........$r===e$$$$eeP    J       *..        b
              $       $$$$$       $   4$$$$$$$     F       d$$$.      4
              $       $$$$$       $   4$$$$$$$     L       *$$$"      4
              4         "      ""3P ===$$$$$$"     3                  P
               *                 $       """        b                J
                ".             .P                    %.             @
                  %.         z*"                      ^%.        .r"
                     "*==*""                             ^"*==*""
              Ответить
              • Написать всё самому? Тут опять же, трудно оценить сроки и сравнить с работой с чужим модулем.
                Ответить
            • Если у меня задача, которую я совсем не могу решить?
              Ну тогда нужно передумывать архитектуру, чтобы эта задача стала не нужна.
              В случае Сёмы -- использовать другой модуль.

              Есть еще вариант обратиться за помощью, с кем-то посоветоваться.

              И наконец можно изучить проблему, и решить задачу (в случае Сёмы -- изучить си, понять проблему, и как-то её починить). Но это сроки надо умножать на 10 сразу
              Ответить
              • Там судя по всему установщик не видит build tools. Но туда нырять тоже не хочется, это проблемы автора, и вообще, на прыщах же всё работает, хуле я должен куда-то нырять? Тут невозможно оценить сроки, вот в чем проблема.
                Ответить
    • Так, мы как-то отошли от темы. Вопрос был не о решении конкретной проблемы, вопрос был о ситуации вообще.
      Ответить
      • Как обычно, анонимные пидарасы всё засрали.
        Ответить
    • Для себя явно не выделяю. Занимаюсь, пока есть мотивация.
      Если получился неудобный интерфейс, дорабатываю, когда использование совсем задолбает.
      Если встретилось что-то сложное или какая-то проблема, которая не сильно задолбала - могу бросить на несколько лет, а потом вернуться.
      Если нет принципиально сложного - доделываю до тех пор, пока не станет удобным для использования, либо пока не утрачу интерес. Интересную питушню могу долго доделывать, пока не надоест.
      Ответить
  • Почему масштабирование в 10 выглядит почти во всех программах как гавно, причем именно в самой винде? Даже таск менеджер мыльный! Какой масштаб у вас стоит?
    Ответить
    • Х.з, попробовал сменить со 100% на 150%, мыла нету. Попробуй мастер настройки ClearType пройти, возможно просто дефолтный антиалиасинг для твоего моника не подходит.
      Ответить
      • Нет, там именно растянута картинка.
        А ты на 100% сидишь? Не мелко?
        Ответить
        • Ну у меня не 4к моник, а 24" 1080р на 100% в очках норм.

          И масштаб я по старой памяти вообще боюсь крутить. Раньше от него половину софта пидорасило.
          Ответить
          • Ты очкарик? Бля, нахуй ты этотнаписал? ) Я тебя по другому представлял.
            Ответить
            • > очкарик

              Только за компом. В реале мыльцо не особо мешает, поэтому лень очки носить.
              Ответить
          • Ты шо, в очках за компом сидишь?
            >масштаб я по старой памяти вообще боюсь крутить.
            Прыщепроблемы?
            Ответить
            • спермопроблемы

              Я как-то выкрутил маштаб на 150%, и пиздой накрылся resmon на win7, погугли про это
              Ответить
              • Что значит пиздой накрылся?
                >погугли
                Ну нахуй.
                Ответить
                • разъехался весь, пользоваться стало невозможно

                  в десятке починили
                  Ответить
              • Скорее ХРпроблемы. Там каждую вторую прогу пидорасило до неюзабельности. Кнопки уезжали за экран и т.п. С тех пор я масштаб вообще не крутил.
                Ответить
                • >Кнопки уезжали за экран
                  Ахаха, я понял 🙂 У меня и на xp масштаб стоит. Я какой-то пиратский инсталлятор запускал - переключатель лицензионного соглашения уехал за экран. Пришлось элемены окна удалять, чтобы нажать ок. Но в 10 лучше. просто картинку растягивает с мыльцом.
                  Ответить
                • Я уже рассказывал про чудо-нетбук «HP Mini» с разрешением «1024×600»? Там в «Семёрке» кнопки уезжают за края экрана. Ещё и в дефолтной поставке пробная версия «Офиса» с «ленточным» интерфейсом («ribbon»), так что для твоего документа остаётся узенькая амбразура.

                  P.S. ААААА! У них в линейке ещё есть модель с разрешением 1024×576:
                  https://ru.wikipedia.org/wiki/HP_Mini
                  Ответить
          • Ха-ха, недолго осталось так читерствовать. Работоспособные ноутбуки с экранами ниже FullHD уже почти ушли. Мониторы пока держатся, но вот лет через пять...
            Ответить
            • Я кстати так и не понял, как проги работают с этим масштабированием. В вин10 в том же Notepad++ для 125-150% уже мыло, приходится в винде отключать для него масштабирование.
              Это npp так криво написан, что думает, что у всех одно и то же DPI? Или винда ему не может передать?
              Ответить
    • Ахаха, хотите прикол? Оно даже VNC Viever пыталось масштабировать, т.е. тупо картинку увеличить. Слава богу, смог отключить.
      Ответить
    • можно сделать, чтобы только винда масштабировалась?
      Ответить
  • Зашел по VNC на комп с видной (естественно) без монитора - нету 1920*1080. С подключенным монитором появляется. ЧЗХ?
    Ответить
    • Юзай RDP, там любые разрешения и количество моников.

      VNC вроде всегда в виндовом разрешении работает, х.з. что там без моника у нее... Дефолтные 1024? Посмотри, может можно зафорсить другое как-то именно в той винде, на которую заходишь. Во времена CRT моников я как-то ставил больше чем моник предлагал.
      Ответить
      • Так я же написал, в настройках нету фулл хд если Моник не подключен.
        Ответить
        • Ну дык ищи как зафорсить нужное разрешение на винде без моника или юзай RDP. Нафиг тебе VNC для headless тачки то?
          Ответить
          • Да вообще странно как-то. То разрешение есть в настройках, то его нет.

            А чем рдп лучше? Оно меняет разрешение под разрешение устройства с которого подключаешься, для планшета это минус - там разрешение маленькое, окна сжимает так что нихуя не увидишь.
            Ответить
            • > то разрешение есть то его нет

              Винда берет список разрешений из моника. Если его нет ну или дрова на видюху хуёвые, то она берет дефолтный список. Как-то так.

              А VNC тупо работает в том разрешении, которое сейчас в венде. Как тимвьювер и прочие.

              Ищи как зафорсить разрешение в обход инфы от моника. Раньше это вроде даже через гуйню как-то делалось, галочкой в духе "показать неподдерживаемое".
              Ответить
              • Точнее говоря видяха берет список режиом в у моника по EDID, и отдает операционке, а та показывает список режимов (если их карта умеет конечно)
                Ответить
              • А если моника нету, откуда берет?
                Ответить
              • Мне это не так принципиально, просто выложил интересный баг.
                Ответить
            • RDP в охулион раз быстрее, а кроме того все программы знают, что они в RDP, и отключают пирделки

              размер экрана заказывает RDP клиент
              Ответить
              • И даже количество экранов, а не только их размер. Можно, к примеру, юзать три моника даже если на том конце один или два и они вообще в другом разрешении.
                Ответить
                • угу

                  можно в теории вообще сервер без видеокарты запустить.

                  Реально, существует 0 случаев, когда нужен VNC на винде
                  Ответить
                  • > 0 случаев, когда нужен VNC на винде
                    Когда винда домашняя, нужен, т.к. RDP сервер выключен.
                    Ответить
                    • > домашняя

                      Ахаха, это маркетинговая хуйня, всё можно подхачить
                      Ответить
                      • > всё можно подхачить
                        Можно написать свою ОС, украть ключ от готовой копии или подхачить.
                        Но это лишний пердолинг, нестандартная и иногда незаконная питушня.
                        Ответить
              • Я выше и написал, что с планшета оно мне нахуй не надо.
                Ответить
  • Как в «Питоне» обновить все пакеты?
    Ответ:
    py -3 -m pip list --format=freeze >list.txt
    sed "s/==/>=/" list.txt >requirements.txt
    py -3 -m pip install -r requirements.txt --upgrade
    Ответить
  • Давайте ругать «Андроид».

    Возникла проблема: после выключения забываются пароли «Wi-Fi», и после включения приходится вводить их заново. После введения пароля устройство подключается к точке доступа, но после следующего включения приходится вводить их заново.

    Как вы сразу догадались, испортился файл
    /data/misc/wifi/wpa_supplicant.conf


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

      wpa_supplicant реализует на прыщах wpa2
      Ответить
    • Я бы просто сделал бекап софта, сбросил настройки и вернул бекап.
      Ответить
      • Я просто удалил один файл. Но у меня был рут.

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

Добавить комментарий для bormand Отменить ответ

Семь раз отмерь — один отрежь, guest!

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


    8