- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 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
И команда Кефир
Очень многие шутки созданы на игре слов и каламбурах: в частности, в первой игре в Высшей Лиге КВН 2010 года звучало:
— Моня, ты где баян взял?
— Забрал у Юрия Лозы.
— Правильно, на фига Лозе баян.
Или нибл
как-то так там было
«Шестнадцать» по-латыни будет «седецим»:
https://en.wiktionary.org/wiki/sedecim
По-гречески будет «декаэкси»:
https://en.wiktionary.org/wiki/δεκαέξι
Значит, седецимет или декаэксада.
Мы будем первыми, кто внедрит этот термин в русском.
P.S. Даже «декагексада», «decahexada», «decaexada» не гуглятся.
Действительно, есть же термины duodecimal, tredecimal, tetradecimal, pentadecimal.
Откуда тогда взяли «хекс»? Из древнегреческого?
Игрушка рисовала змейку псевдографикой. Разрешение по вертикали было в два раза больше, чем количество строк, потому что игрушка использовала символы ▀ и ▄.
Ещё там был HUNTER.BAS. В некоторых комплектах был GORILLAS.BAS. Ещё вроде «Реверси» было.
https://twitter.com/mayaposch/status/1262782546213036034
самка макаки не знает, что такое вывод типов.
Чо, правда?
Ох уж эти самки макакp, которые бросаются терминами, не понимая их значения.
И вообще "скаляр" - ахуенный тип. Эдак и в js типизация строгая, просто тип один, jsvalue.
Ну в жс преобразование объекта в [Object object] тоже вполне ожидаемое и документированное.
Слабая типизация, мой рот, это прекрасно
В «Жопоскрипте» плюсик может означать и сложение чисел, и кокококонкатенацию строк. В силу слабости и неявности типизации в «Жопоскрипте» возникают неожиданные касты, из-за чего программисты ломают голову, что будет, если «сложить» строку с числом.
В «Перле» таких неожиданностей нет, потому что конкатенация и сложение обозначены разными знаками. В «Перле» нет перегруженных операторов.
1 + 1.0 работает, хотя type(1) != type(1.0).
Это в третьем так
Во втором кажется всегда делили как целое
Ну ладно.
ВА, ДВ, ЕГ, ЖД, ЗЕ, ИЖ, КИ, МК, НЛ, ОМ, ПН, РО, СП, ТР, УС, ФТ, ХУ, ЧХ (убрал плохо читаемые). Нужно угадать третью букву.
Что же это за слово?
http://www.botik.ru/~robot/sale/robot.htm
К чему это я? В пакете была программа «Буквоед» (рубрика «Чёрные ящики»). Программа представляла собой чёрный ящик, в котором лежало несколько пронумерованных алгоритмов преобразования текстовых строк. Введя несколько реальных примеров и посмотрев ответы, нужно было угадать алгоритм.
Так вот очень быстро угадывалось, что алгоритм №13 каждую букву в строке заменяет следующей по алфавиту. Угадай, какое слово тут же попробовали ввести мои одноклассники. Правильно, слово «ФТИ».
http://www.botik.ru/~robot/pic/robot01.gif
https://www.old-games.ru/game/1151.html
Каким надо быть больным человеком, чтобы вообразить себе такую похабщину?
Мне твой код не понять
Ну вот этот язык ты знаешь наверняка:
Удивился, неужели в скриптуху завезли божественный std::div
>Результатом div всегда является целый питух
А в няшной результатом выполнения div является div_t.
Остаток получаем бесплатно, экономя одну/пару инструкций.
говно!
хочу язык, где всё надо кастить явно
Причем там еще и вывод типов и паттерн матчинг хороший, если я верно помню.
Ушел писать на окамле
В принципе, в некоторых языках с ООП так можно, в тех же крестах. Создаёшь класс, а операторы преобразования не определяешь.
Слабой типизация считается тогда, когда в ней присутствует достаточно много неявных и неоднозначных приведений. Поэтому неявное приведение инта к плавпитуху — не признак слабой типизации, в отличие от, например, возможности сложить массив с объектом и получить какую-то хуйню.
Очевидно же. Веб-браузеры контент с таким заголовком не показывают на странице, а предлагают сохранить в файл.
В Сан-Франциско ходят в музей, чтобы посмотреть на женщин.
С такими тенденциями они вымрут, как мамонты.
>а теперь серит в штаны завозя pep-484 в питона и пиля тайпскрипт.
Дно днищенское.
В то время как статически типизированные языки научились выводить типы сами, избавляя программиста от нужны их писать.
Скриптухи опять решили сделать всё наоборот:
https://www.python.org/dev/peps/pep-0483/
https://www.python.org/dev/peps/pep-0484/
Разве что нет фигурных операторных скобок и женерики квадратные.
Необязательностью. Можно писать, можно не писать, можно только в критических местах писать. Можно даже игнорировать и передавать что-нибудь другое, всё равно в рантайме проверок нет.
А тут пока слабенько:
>глядишь, через N годиков завезут
Смеюсь:
Зачем? Зачем?
Тут люди десяток лет боролись чтоб никогда НЕ ПИСАТЬ этот int. А они его завозят.
Я о том, что скриптухе проще. Она выглядит гораздо ближе к идеалу.
Делайте автовывод типов и проверки, НЕ МЕНЯЯ язык.
Дык оно уже есть и работает.
Я же говорю, все языки идут к старому-доброму яваскрипту (ещё первым его версиям).
Реализовано было только в экспериментальных сборках некоторых веб-браузеров. Не выжило, в ES5 этот синтаксис отменили.
Выжило в «ActionScript». Но «ActionScript» уже сам полутруп, потому что с «Флеша» все уходят.
С одним существенным отличием.
a по умолчанию константа. То есть внутри это интепретируется так:
А ещё лучше конечно так 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"
Ахахаха. Им что Disposable было малость?
>https://github.com/JetBrains/intellij-community/blob/master/platform/util/src/com/intellij/openapi/Disposable.java
https://govnokod.ru/26439#comment528166
>завёз все эти use / with / Closeable.
А раньше анскильные сектанты и прочая гц-мразь постоянна говорила что malloc/free это сложно дохуя.
Вместо этого нам предлагают вполне "простой" идиоматичный код:
>Если еще один сраный питуз начнет вам рассказывать, что "гарбич каллектор это круто"
Просто отбросы сектантские.
> throws com.intellij.util.IncorrectOperationExce ption If child has been registered with parent before;
??
> retain/release в ObjC помните?
- retain/release имеет к gc косвенное отношение.
Ну не хочешь дёргать инкремент лишний раз - перемещай или свопай указатель вместо копирования. На возврате из функции это автоматом работает.
Я, правда, всё равно не понял, как это, когда увеличить руками можно, а уменьшить нельзя.
https://stackoverflow.com/questions/1620018/copy-all-the-lines-to-clipboard
Ни один сука ответ не сработал.
отключи у vim поддержку мыши, чтобы не мешал
:set mouse=
выдели нужный тебе текст
далее действуй в зависимости от своего терминального эмулятора. Как бы ты копировал обычный текст и3 командной строки?
Ну в общем-то лучший вариант. Обычно так и копировал если на экран не влезает.
Когда файлов много, или файл часто меняется, то ещё лучше — rsync. Но нужно немного повозиться.
Ты не понял.
Если он это сделает, тогда vim ему более не нужен.
Он запустит gedit, geany или какой-то n++ и сделает всё что нужно.
shift же можно зажать при выделении текста. Или с vim эта фишка не работает?
http://okante.narod.ru/D/lwmn.html
Когда я исследовал язык Д как подмножество русского языка, я понял что не только слова, но и числа в нём должны быть на русском языке. Ведь в программировании числа тоже несут смысл, а не только значение.
Иногда программисты пишут 0xBAADF00D или 0xDEADFEAD. Но это в шутку, к тому же английских букв не хватает. Поэтому нужна более лучшая система.
Также, изучая языки программирования, я заметил, что в некоторых из них есть некие константы. Тo есть когда слово ассоциируют с каким-нибудь числом. Я подумал, что это чвляется избыточностью и придумал лучшее решение.
§ 2. Решение проблемы
Для поддержки чисел на русском языке необходимо использовать специальную систему счисления. Существующие системы счисления слишком малы, потому что имеют малое основание. Русские буквы не помешаются в него.
Итак вот разработанная система:
Основание системы: 43
http://okante.narod.ru/D/kb/kb000002.html
[...]
Оказывается для того, чтобы программировать на высокоуровневом языке необходимо очень много его учить. А программист для этого не приспособлен. Он хорошо считает и вообще любит математику, и, как правило, не любит учить. Это ведет к следующему извращению — извращению иерархической лестницы. Программист программирующий программы (homo programis) уже никому не нужен, а нужен программист выучивший и знающий язык высокого уровня (homo kakus). Поэтому программист учащий становится выше программиста программирующего. Воникает диссонанс, а от диссонанса усталость (причем у обоих). Усталость ведет к стрессу.
http://okante.narod.ru/D/high.html
homo makakus
Хотя нет, ну нахуй.
А его можно обменять на несколько пачек маргарина?
А я люблю обкладываться несвежими радиодеталями и паять. Каждый день я хожу с черным мешком для мусора и собираю в него все платы, которые я вижу. На два полных мешка целый день уходит. Зато после тяжелого дня я прихожу домой, и включаю горячий паяльник... ммм... и выпаиваю им свои сокровища. Мне вообще кажется, что радиодетали умеют думать, что у них есть свои семьи, города, чувства. Не выбрасывайте их на помойку, лучше приютите их у себя, паяйте их, говорите с ними. А вчера мне приснился сон, как-будто я нырнул в море и оно превратилось в радиодетали, рыбы, водоросли, медузы, все из радиодеталей, даже небо, даже Аллах!
НЕ ПРЫЩИ, А ЧЁРНЫЙ ЭКРАН
Напрыщил тебе за щеку. Проверь.
Бинарному оператору передали один операнд
И причем тут семантика?
https://youtu.be/2e0xiB_M5-U
https://www.graycell.ru/picture/big/uef.jpg
Не плавают, а ходят.
https://www.youtube.com/watch?v=j4vmKzXZIf0
Есть, у меня в комплекте с кулером такой прилагался. Тупо резистор во второй провод.
А насчёт оборотов видюхи до загрузки виндового драйвера - это вроде только перепрошивкой видюхи рулится, настроек я не видел.
> нахуя делать такие большие обороты
У бюджетных карт обычно мелкое говнецо вместо кулеров. А оно шумит и визжит намного больше, чем пара-тройка нормальных больших вертушкек. Даже при тех же самых оборотах.
> видюху в стресс тест
3d mark. Там есть непрерывный режим который тест в цикле гоняет.
З.Ы. Если кулер прям гремит - походу подшипники сорвало, поменяй его.
А факапы с управлением кулером даже у дорогих карт бывают. Например карта может не крутить кулер несколько минут а потом одним рывком дунуть на все 100% и остыть за секунду. Благо эта херня только под нагрузкой, а там уже винда загружена и через какой-нибудь afterburner можно нормально настроить...
Про биос и 50% - х.з. На старых материнках часто такое видел. Видимо боятся, что ниже 50% некоторые кулера могут тупо не стартануть. Там трёхпроводное подключение вертушки поди, не четырёх? А спидфан ты юзаешь на свой страх и риск, поэтому там весь диапазон доступен.
> все разные
Ну они разные. Но максимальные обороты у всех довольно большие. И никто никогда не будет обрезать обороты на самой вертушке, если это можно сделать бесплатно на уровне софта.
* кроме некоторых материнок, где разрабы упоролись и костыль для любителей некрофилии запилили
>>> Почему тире становится вопросом? Или проблемы с кодированием данных на SQL
>>> Загружается товар с таким названием «ABM3C‐25‐D4Y‐T».
>>> Получаем в списке после загрузки «ABM3C?25?D4Y?T».
>>> По привычке проверила параметры сортировки у самой базы данных, всё хорошо — Cyrillic_General_CI_AS, как и рекомендовано при установке.
>>> Ответ разработчика сначала сильно удивил: «Надо использовать тип данных Nvarchar, а у Вас видимо используется Varchar». Запись ведется в поле с типом данных nvarchar (ставится по умолчанию при создании поля в конфигураторе).
>>> Получила совет — перед первой одинарной кавычкой поставить N.
Шёл 2020-й год, люди продолжали ебаться с кодировками…
К сожалению пропускает только цифры и латинские буквы, ентити тоже не хавает.
То ли дело «АК» или «СВД»...
> разрабов мало
> ПМы
Зачем вам столько ПМов?
Еще есть account manager - тоже самое, но меньше полномочий.
Кстати для арабских стран приходится назначать парней, т.к. женщин там не уважают и не доверяют им решать сложные вопросы.
Иногда заказчик разоряется, и нерешенные задачи удаляются )))
Похоже, винда сделана для апдейтов. Но не только. Если апдейты выключить, винда всё равно начинает что-то ресурсозатратное делать, когда пользователь отходит от компьютера.
Есть ли способ отключения этих таймеров? Винда как-то умеет их включать, значит, программный доступ к ним есть. Или единственный надёжный способ — это выдёргивать стационарный комп из розетки, а у ноутбука выдёргивать аккумулятор?
Погуглил. На куче форумов нашёл жалобу на самопроизвольное включение с такими же симптомами. Решения в найденных темах не было.
У меня была абсолютно такая же проблема — комп просыпался в три-четыре утра. Вызывалась она действительно задачей из планировщика (кажется, что-то из «Microsoft/Windows/UpdateOrchestrator»). Что характерно, после удаления эта задача возвращалась на место как другими задачами (что-то связанное с «восстановлением службы обновлений» или какой-то такой хуйнёй), так и службой (опять же, что-то связанное с восстановлением).
Какое-то время всё работает нормально, потом начинаются самопроизвольные пробуждения. Причём не только из спящего режима, но и из гибернации.
Похоже, что служба восстановления «чинит» задачи обратно, проверь.
Это не через задачи работает. Какой-то процесс взводит аппаратные таймеры и, вероятно, что-то добавляет в однократный автозапуск (типа RunOnce).
Я не знаю, как поймать виновника, потому что не знаю, какой драйвер может взводить аппаратные таймеры и через какие функции API это делается.
Отследить всех, кто пишет в RunOnce? А если они не через RunOnce что-то делают, а через pending.xml или ещё через какой-нибудь механизм?
И вот ещё: https://docs.microsoft.com/en-us/windows/win32/power/system-wake-up-events.
Ноуты пробуждаются даже из полностью выключенного состояния («Завершение работы»). В меню «Setup» моделей, которые я видел, таймеров нет, поэтому для их выключения нужен софт.
Windows Vista, 7: «Компьютер».
Windows 8, 10: «Этот компьютер».
Компьютер уже не ваш. Смиритесь.
Недвусмысленный намёк во время установки винды.
https://twitter.com/virocracy/status/1076000118468423680
Продолжая использовать классы из пакета sun ты рискуешь налажать, опять сделав непортабельный код. Поскольку существуют реализации jvm отличные от sunовской.
https://stackoverflow.com/questions/49446181/pyspark-nosuchmethoderror-sun-nio-ch-directbuffer-cleaner-when-inserting-data-i
if (8_ява_и_ниже){
...
}else{
....
}
А чтобы быстро и не везде, использовать классы, которые завезли в 9ю яву.
А чтобы работал везде, но медленно — стандартные классы из старых яв.
Насколько? Или ты не замерял и просто преждевременно оптимизируешь.
https://pastebin.com/MW0FSECK
Direct: 4867
Streams: 8593
Byte arrays: 8747
Век живи — век учись.
>The default is big endian even on little endian systems.
>Can you try ByteOrder.nativeOrder() as this should be faster for you.
https://stackoverflow.com/questions/19265835/bytebuffer-putlong-2x-faster-with-non-native-byteorder
Полагаю, это потому что у них там стек четырёхбатовый, а long'и просто эмулируются запихиванием джвух четырёхбатных кусков.
>Трудно назвать это большой разницей
Чтоааа??? Да Царь за такую разницу в пирфомансе просто придушит.
А штеуд берёт за разницу в 15-20% по частоте (4 vs 5 ггц) лишние полсотни долларов.
Я сам смутно помню, что когда игрался с memory mapped io, там были какие-то приколы с этими буферами из-за чего пирфоманс проседал в 1.5-2х.
По-моему уже даже самые убогие компилеры научились копирующие циклы превращать в simd.
Помню что нашёл наиболее быстрое решение, и забил.
Но там какая-то загадочная питушня, когда было три версии кода.
И одна работала быстрее чем ByteArrays в 1.5 раза, а вторая в 2 раза быстрее ByteArrays.
Питушня 11ой явы. Точнее 9ой.
У всех такие проблемы, т.к. в 9ой они распилили стандартную либу на кучу кусков (https://openjdk.java.net/projects/jigsaw/). И заодно похерили обратную совместимость (я об этом писал).
>import sun.nio.ch.DirectBuffer;
Пакеты из sun.* не рекомендуется использовать, они их скоро выкинут/переместят. Либо уже переместили, и ты на это наступил.
Но да, ГЦ напрягает после плюсов.
Ты хочешь использовать проприетарный Cleaner из пакета sun.
Который является недокументированными кишками явы.
Равно как и известный sun.misc.Unsafe, позволяющий выстрелить себе в ногу не хуже сишки прямую работу с указателями.
То есть используешь вендор-онли-вещи, и при этом хочешь иметь портируемый код.
Утверждается что для каждой фичи из sun.* существует адекватная замена. Раньше компилятор явы честно писал ворнинг что пакеты из sun.* использовать не нужно. Их МОГУТ выпилить или поменять.
Как я понял в 11ой они перенесли Cleaner из sun.* в jdk.* чтобы вынести полезный класс в jdk.* где его можно спокойно использовать.
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.
Ну и правильно сделали.
А теперь давайте его СЛОМАЕМ! Азаза.
>Настало врремя узнать, что буфер замапленного файла нельзя флашнуть. Он сам флашнется, когда его заколлектят.
Вместо того чтобы в новой яве для начала починить хуёвое апи, или сделать новое, хорошее с autoflush.
Они СОЗНАТЕЛЬНО переместили класс, СОЗНАТЕЛЬНО же ломая с десяток крупных известных проектов. И сотни, тысячи неизвестных.
> with the bulk of your data off-heap
Вот вам и сборщик мусора...
И это из внутреннего документ разрабов явы.
То есть они знали что такой-то софт использует и сломается.
>sun.nio.ch.DirectBuffer.cleaner() to release memory deterministically.
Эти люди годами, десятилетиями говорили зачем вам malloc/free, зачем ручное управление памятью?
А это фундаментальная проблема гэцухов. Они взяли один из ресурсов — память — и наговнякали систему, позволяющую им управлять. Но, поскольку у гэцухов, как и у всех питухов, мозг очень маленький, простой факт того, что память — это всего лишь один из множества видов ресурсов, в их мозги не влез. В результате гэцухи решили (прямо скажем, хуёво решили) проблему управления памятью… совершенно забив на всё остальное. Вот и приходится им городить тупые костыли, от одного вида которых крестобояре начинают ржать.
А всё потому, что единообразные задачи нужно решать единообразным способом. Управление памятью — это всего лишь частный случай управления ресурсами. Крестобояре это поняли гавным-гавно и сделали божественный «RAII», для которого нет никакой разницы, какой ресурс освобождать: память, файлы, сокеты, хэндлы или чёрта из ступы. Всем этим «RAII» может эффективно, просто, безопасно и детерминировано управлять.
Именно поэтому я за «RAII».
Нужна какая-то прозрачная питушня с хранением по указателю - настолько же прозрачная, как хранение по значению. Должна указываться вореция владения - только я, счётчик ссылок, слабая ссылка. И компилятор должен проверять, чтобы у одного питуха не было нескольких владельцев, а слабые ссылки проверялись на пустуха перед использованием.
std::unique_ptr
> счётчик ссылок
std::shared_ptr
> слабая ссылка
std::weak_ptr
> слабые ссылки проверялись
Они проверяются. Более того, ты обязан их залочить в сильную ссылку перед использованием чтобы объект не сдох пока ты с ним работаешь. И если ты забудешь это сделать - код просто не скомпилится.
Иначе это провал, ведь для написания нормального кода надо писать std::боль_ше std::бес_полезных std::сим_волов, а для написания ненадёжного говна - один символ.
В итоге в контракт записывается много лишней питушни. Пользователь должен копировать из документации паттерны использования, поскольку проверки типов не достаточно для работоспособности кода. Программист должен знать диаграмму классов и диаграмму потоков данных, причём последнюю - заучивать наизусть, т.к. компилятор в этом случае никак не помогает.
То ли дело 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.
Ну веб-магазин по продаже шоколадных печений - это уже достаточно большой проект. Это уровень eBay.
Большинство проектов поменьше будут, язык с GC с ними справится.
Не стоит возводить в абсолют. Если GC начинает тормозить на 1% проектов, то не стоит называть GC анскильным говном. Остаётся ещё 99%, с которыми он нормально работает.
Это как с проблемой постанова на питушне Питуринга. Кто-то считает, что она нерешаема, и начинает ныть. А кто-то просто ставит лимит на питушение, и у него всё работает.
> Вообще, было бы удобно иметь галочку
Да.
А магазины размером с eBay уже достаточно тяжелые (и долгоживущие) чтобы начать думать про память.
Я понимаю, если один вид, который можно захардкодить.
А если несколько видов, то это уже не сильно отличается от питушни, которая торгует чем угодно.
Разве что количество клиентов влияет. Если их немного, оптимизировать дорого. Если много - не оптимизировать дорого.
Чего? В том-то и прелесть «RAII»: тебе не надо заботиться ни о каком порядке удаления, он строго определён в стандарте. Объект, созданный первым, удаляется последним — всё, больше ничего знать не надо.
Питушня, справедливая только для питушни, которая по значению.
Пример 1: функция каррирования или любая питушня с замыканием
Питушне из замыкания (f и x) нужно искусственно продлевать жизнь. И, в отличие от JS/Haskell с GC, в C++ делать это надо явно, иначе UB. В языке с GC и замыканиями всё и так работает.
Пример 2: ненужная фабрика с контекстом
Если объект, который создала фабрика, ссылается на неё (ради какого-то контекста), RAII питух укококошит фабрику, и объект будет зашкварен.
В случае языка с GC контекст будет оставаться с объектом столько, сколько он ему будет нужен.
Вишенка на торте: благодаря инкапсуляции ссылка на factory_t у decltype(factory_t().create(id)) будет в приватном питухе. То есть она будет деталью реализации, которая скрыта от пользователя, но существенна для написания кода.
А значит вся эта хрень нарушает и так хрупкого питуха инкапсуляции.
Захватывай shared/weak и всё будет норм. В boost::asio на таком захвате всё основано. Обработали ивент, объект больше никому не нужен, тут же его и убили. Либо он подписался на следующее событие и за счёт этой подписки остаётся в живых.
> объект ссылается на фабрику
Дык он через shared ссылается. Т.е. если фабрика кому-то ещё нужна - она выживет. Если нет - ну и хуй с ней, пусть убивает, он последний юзер.
Х.з. такие ситуации довольно часто встречаются и особых проблем с ними нет. Если не смешивать всё это с сырыми указателями и ссылками, конечно.
Иначе потом, когда на фабрику начнут таки ссылаться, придётся создать свои костыли и велосипеды, сделав из фабрики только обёртку над shared питушнёй.
В то время, когда с GC это ноль проблем и ноль усилий.
А в случае с C++, чтобы избежать такой питушни, надо все указатели заранее менять на умные. Только тогда код будет расширяем как расширяем код на питушне с GC.
Именно так. После этого обычные указатели начинают смотреться как нечто инородное и сразу бросаются в глаза.
Я за пять лет по-моему ни разу не поюзал new. А delete вообще забыл как выглядит. Как на собеседованиях про них рассказывать - х.з.
В крупном проекте на джаве -- тоже.
Если ты не будешь думать по памяти ("потому что ГЦ разберется") то потом твоя программа съест всю память, упадет в ООМ, и ты будешь дампы читать.
Мантра "программисту не нужно думать про память -- про нее думает ГЦ" НЕ работает для больших, долгоживующих проектов.
Это как с ORM, например.
ORM хорошо, можно не знать SQL, но как только у тебя что-то сложнее персонального блога, так сразу оказывается, что SQL знать нужно.
Я в коде видел много слабых ссылок для всяких кешей ровно потому, что программисты вынуждены думать про память
Так и происходит в остальных отраслях. Автоматизируют всё, что можно автоматизировать, а выходящую за рамки питушню делают руками за большие деньги.
>>> Как вызвать утечку памяти в Angular-приложении?
Гыгыгы.
В общем решил я попробовать systemd в MX Linux, благо всё переключение сводится к выбору пункта меню в grub.
Система действительно стала грузиться заметно быстрее: вместо 20 секунд, теперь всё происходит за 10. Из которых в кернеле 6 (systemd-analyze time).
Правда пришлось отключить
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
БЛЯДЬ, НУ ВОТ КАК-ТО. ДЖЕДЯТЬ ЛЕТ ВСЕМ МИРОМ ДЕЛАЛИ СИСТЕМД. ПЕРЕСАДИЛИ НА НЕЁ ВСЕ ОСНОВНЫЕ ДИСТРЫ. И ВОТ ТАКОЕ.
Я вот не понимаю, неужели нельзя просто сделать паралельный бут, не ломая и не переписывая при этом половину системы (системные пути, dnsы).
Логично.
Но это же убунта. Охуенный дистр с пакетным менеджером и зависимостями, собранный профи.
Вестимо анскильные обезьяна всё слизали с дебиана. Но т.к. в дебиане до последнего момента не было 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.
> ШаттлВрота бабло закончилось и на десктоп они забили
Да они всю жизнь ложили на свои баги. Чинили только то что само чинилось простым обновлением кернела и библиотек.
Там просто анскилябры работают. Ни разу не видел, чтобы какой-то каноникл-убунтоид-бой комитил фикс в ядро.
Причём ссылка ведь не на хеш комита, а на мастер.
Ответ-то заплюсовали. А завтра автор запушит в мастер rm -rf. И чо тогда?
Да.
Эти 10 секунд экономии на буте явно не стоят дальнейшего прожигания жизни ЧАСАМИ.
Почему нужно устраивать еблю с баграми systemd и гуглением стековерфловочки.
решил проблему
там косяк, если недописать в хвост конфига клиента опенвпна одну строчку, то хуево работает
строчка вот такая
т.к. на ноуте мне почему-то не хотелось возвращаться на подключение через сервис, а хотелось мышкой пыщ пыщ из системного меню - а нетворк-менеджер умеет в опенвпн, то ясен хуй, когда подключение уже создано, мышкой уже не натыкать такую опцию
поэтому в конфигурации в /etc/NetworkManager/system-connections/<yourvpnname>.nmconnection в секции [ipv4] надо добавить руками опцию
а ещё лучше сразу дохуя опций, чтобы наверняка:
тогда будет щястье - системд-резолвд начинает понимать в днс, пришедший через впн, и выставлять ему приоритет повыше, чем, например, днс от вафли
https://askubuntu.com/a/1036725
Я всегда говорил, что убунта позиционируется как дистр для домохозяек.
Но на самом деле по ебле превосходит арч и слаку.
Потому что дрочиться нужно столько же, плюс обходить заковырки пакетного минетжера.
Всегда так делаю. Только сначала пытаюсь запустить на «Ideone».
https://govnokod.ru/25839
Зацени. И мне не стыдно за это.
P.S. «to punch» означает «проткнуть»?
кикики ки кики
кикики ки ки ки ки ки
куууууик
Взято отсюда:
https://twitter.com/dkorobtsov/status/1264863957359230977
https://youtu.be/6c9Rf1FPTzY
У меня кнопка «Загрузить» переадресовывает на https://visualstudio.microsoft.com/ru/downloads/ , а там «Visual C++ Build Tools» спрятаны в какую-то жопу под кат, но найти можно.
Листаем почти до конца, в секции «Все файлы для скачивания» разворачиваем кат «Инструменты для Visual Studio 2019». Там самая последняя ссылка:
https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=BuildTools&rel=16
Она приводит к скачиванию онлайн-установщика:
Я и на сайтах других компаний такое видел. Всё нужное под катами, всё нужно разворачивать, как будто делали не для людей. Зато «так модно».
Вообще это не дело. Надо придумать, как пропатчить питоновский пакет distutils, чтобы он автоматически находил SDK.
> когда он срывается
Разбежавшись прыгну со скалы, вот я был и вот меня не стало.
А если серьезно, то выброшу какие-то опциональные фичи, оставлю неотрефакторенный говнокод и т.п. Если совсем жопа - можно и подвинуть дедлайн, но в одиночку этим лучше не злоупотреблять.
Т.е. если думаешь, что за вечер поставишь - смело выделяй на это пол недели.
> хуяк-хуяк
Вот кстати хороший, годный, подход. Как бы его не ругали.
> эээ нахуй
Ну а хули ты хотел, добро пожаловать в реальный мир. Взаимодействие с чужим кодом - это всегда самая рискованная и непредсказуемая часть.
> на прыщах работает
Может на этом и остановиться? Зароутить через виртуалку и т.п. Один хер же для себя.
зачем она нужна, когда докер даже на винде работает
похуй что он там запускает, главное, что это не миллион кликов в ебанутых оконных программах, а тупо docker run с опциями
небось ещё и детачед есть, как у взрослых - заебенил, оно само как сервис работает, жрать не просит
походу, новую мажорную версию сделали
скоро начнут как хром, галопирующую версионность
бедлам
>> С 13.05.2019 изменения постов больше не отслеживаются, и новые посты не сохраняются.
Какой багор )))
Типичная сишкопроблема.
Ты предпочитаешь быть завернутым в атлас или таки в рогожу?
Создаёшь пустую директорию, переходишь в неё и вводишь команды типа таких:
И смотришь, на что ругается вторая команда.
«pip» можно попросить сохранить лог, добавив аргумент --log pitushnya.txt
Если получился неудобный интерфейс, дорабатываю, когда использование совсем задолбает.
Если встретилось что-то сложное или какая-то проблема, которая не сильно задолбала - могу бросить на несколько лет, а потом вернуться.
Если нет принципиально сложного - доделываю до тех пор, пока не станет удобным для использования, либо пока не утрачу интерес. Интересную питушню могу долго доделывать, пока не надоест.
И масштаб я по старой памяти вообще боюсь крутить. Раньше от него половину софта пидорасило.
Только за компом. В реале мыльцо не особо мешает, поэтому лень очки носить.
P.S. ААААА! У них в линейке ещё есть модель с разрешением 1024×576:
https://ru.wikipedia.org/wiki/HP_Mini
Это npp так криво написан, что думает, что у всех одно и то же DPI? Или винда ему не может передать?
VNC вроде всегда в виндовом разрешении работает, х.з. что там без моника у нее... Дефолтные 1024? Посмотри, может можно зафорсить другое как-то именно в той винде, на которую заходишь. Во времена CRT моников я как-то ставил больше чем моник предлагал.
Винда берет список разрешений из моника. Если его нет ну или дрова на видюху хуёвые, то она берет дефолтный список. Как-то так.
А VNC тупо работает в том разрешении, которое сейчас в венде. Как тимвьювер и прочие.
Ищи как зафорсить разрешение в обход инфы от моника. Раньше это вроде даже через гуйню как-то делалось, галочкой в духе "показать неподдерживаемое".
Когда винда домашняя, нужен, т.к. RDP сервер выключен.
Можно написать свою ОС, украть ключ от готовой копии или подхачить.
Но это лишний пердолинг, нестандартная и иногда незаконная питушня.
Ответ:
Возникла проблема: после выключения забываются пароли «Wi-Fi», и после включения приходится вводить их заново. После введения пароля устройство подключается к точке доступа, но после следующего включения приходится вводить их заново.
Как вы сразу догадались, испортился файл
По какой-то причине он оказался недописанным, и система, из-за того, что содержимое этого файла невалидно, боялась его редактировать, поэтому настройки держала только в оперативке. Об этом система никак не предупреждала пользователя. После ручного удаления этого файла (немножко пердолинга с отключением SELinux и правкой атрибутов директорий) система его создала заново, и настройки снова стали сохраняться.
А без рута, пожалуй, только бекап и сброс настроек.