LINUX.ORG.RU
ФорумTalks

Как прекрасен юникс-вей в 2020-х...

 , ,


6

1

…не зря Майкрософт еще в 80-х хотела с ДОСа мигрировать на Юникс. Но не вышло у пацанов, не фартануло.

Попросили вчера помочь с нетривиальной конфигурацией винды. Назанимался нетрадиционным секасом с в ней вдоволь… или вдоль. Точнее сказать, под любым юникс-лайк вся конфигурация была бы тривиальной, но это ж винда.

Большая часть действий делается через тупой GUI, в котором надо лазить по меню и натыкивать галки. Если нужно изменить конфиг, проверить и в случае чего вернуть как было, или протестировать разные варианты, то сидишь и надрачиваешь мышь. Система была рассчитана на людей, которые не могут выразить команду высшим достижением эволюции: человеческим языком.

Некоторые вещи вообще только через реестр. Ну сам реестр это отдельная история. Никакого вам аналога diff, meld, невозможно без дебильных приседаний с экспортом-импортом в текстовый файлик положить конфигурацию в git. Спасибо, хоть экспорт-импорт приделать не забыли. (В этом месте я вернулся сюда из абзаца, в котором писал про кодировки, и еще раз напишу: спасибо! От этих … специалистов можно было бы вполне ожидать, что и этого не будет.)

Система всё время ставит палки в колеса, если нужно часть действий выполнить от имени администратора. Типа, запускаю ФМ с полными правами админа. Создаю в нём файл. Открываю его в Notepad++ — а всё, Notepad++ уже работает не с полными правами админа. Может это, конечно, баг самого NPP, я хз.

Интерфейсы для работы с правами доступа находятся глубоко в категории «рисовал программист» и не обновлялись со времён NT. Там под виндой даже не столько сама система прав доступа сложная, сколько GUI к ней убогий.

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

Чтобы сделать аналог линуксового «запуск фиксированной команды через sudo без пароля», нужно добавлять задание в тамошний аналог крон!. А чтобы сделать аналог «запуск фиксированной команды через sudo без пароля, но только для конкретной группы пользователей», я вообще не знаю, что делать. Тут моих навыков гуглёжки не хватило.

Описания системных сервисов переведены на русский, такое впечатление, что машинным надмозгом. А описания сторонних сервисов часто вообще не заполнены. Документации на это тоже, понятно, часто нет.

Если ты хочешь взять обычный Блокнот и написать в нём cmd-скрипт, то хрен там ночевал - Блокнот сохраняет файлы в кодировке 1251, а запускается скрипт в кодировке 866!!!! КАКОГО ХРЕНА?!

А если ты берешь весь из себя такой знаменитый Notepad++ с поддержкой кодировок и хочешь перекодировать уже написанный файл, то он не умеет конвертировать между этими кодировками!

Если в системе что-то сломалось, то хрен ты откатишь пакет для теста, нет в ней ни пакетов, ни внятной модели использования файловой системы. Всё навалено кучами легаси-хлама. Внутри папки system32 (которая теперь в целях совместимости теперь навечно будет system32, будь там под капотом хоть 128 бит в регистрах) вперемешку валяются драйвера, пользовательские библиотеки, конфиги, куски интерфейса и чёрт знает что. При этом есть еще такой смешной момент, что несмотря на кучи легаси-винегрета, стабильных расположений путей в ней тоже нет. Например, расположение папки с содержимым меню Пуск переезжало с места на место в каждой (!) крупной версии винды.

Когда что-то гуглишь по вопросам системной конфигурации, обычно попадаешь или на ВИО, где отвечающий тупее вопрощающего, или на официальные места поддержки, где ответ чаще всего «такая штука в Windows не поддерживается, но вы можете попробовать самостоятельно станцевать в гамаке на лыжах», или на поисковый спам.

Эта шляпа еще и на HDD стояла, а я уже забыл, что такое 64-битная винда на HDD. Это ад и израиль, сраный лагодром с загрузками по 5 минут, во время которых пытаются просраться несколько десятков системных сервисов и еще куча говнокода в пользовательском сеансе. И пока они не просрутся, Проводник висит, и весь гуй вместе с ним. Да по сравнению с этим что systemd, что до-systemd-шная баше-лапша - просто вершины архитектуры и топ производительности.

Кен Томпсон, Деннис Ритчи, Ричард Столлман, Линус Торвальдс, и вся Red Hat целиком, и все остальные причастные к Линуксу, и еще разработчики всех BSD, и даже почившая Sun Microsystems с Солярой, СПАСИБО вам всем! Что мы имеем технологичную, конфигурируемую, понятную ОС, и даже целое множество разных ОС. И не привязаны к этой жалкой пародии на OpenVMS, мутировавшей на отравленных землях MS-DOS-а, и по какой-то злой шутке судьбы дожившей до 2020-х!

…уф. Выдохнул.

★★

Последнее исправление: wandrien (всего исправлений: 8)

Ответ на: комментарий от firkax

Например, браузеру совершенно нечего иметь право шариться в .local/bin

Как ты это нормально реализуешь с помощью uid/gid?

cvs-255 ★★★★★
()
Последнее исправление: cvs-255 (всего исправлений: 2)
Ответ на: комментарий от fernandos

Дык юзерам нужны не ОС, а программы. Раньше в микрософте это понимали, на чем и поднялись. Как ОС винда всегда была ни о чем, но теперь превратили её в какое-то чудище, требующее ежедневного обслуживания. Вот эти бесконечные обновления это же фейспалм. А я думал, чего это почтовый ящик завален спамом от «компьютерных мастеров». Ну теперь понятно, микрософт поддерживает самозанятых.

bread
()
Последнее исправление: bread (всего исправлений: 1)
Ответ на: комментарий от cvs-255

Например, браузеру совершенно нечего иметь право шариться в .local/bin

Как ты это нормально реализуешь с помощью uid/gid?

Странный вопрос. Ты как будто считаешь, что это нельзя сделать без acl, но можно с acl?

Можно браузеру сделать отдельного юзера например. И как тебе acl тут что-то улучшит я не знаю, он всё равно на uid-ы опирается и без выноса браузера в отдельного юзера он ничего не даст.

Ну и надо не забывать, что кроме раздачи прав доступа на файлы (коих два варианта: традиционный uid/gid и нетрадиционный acl) есть и другие способы управления доступом: selinux/apparmor, различные контейнеры, начиная с chroot, и виртуалки.

Вообще, uid/gid/mode доступ можно считать частным случаем acl, только все списки доступа тут строго из трёх строчек: некий uid, некий gid и «для всех». В acl же строчек может быть сколько угодно, но ценой запутывания всех.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)

Если ты хочешь взять обычный Блокнот и написать в нём cmd-скрипт, то хрен там ночевал - Блокнот сохраняет файлы в кодировке 1251, а запускается скрипт в кодировке 866!!!! КАКОГО ХРЕНА?!

Это называется legacy. По этому пофиксить невозможно. Только обойти костылями. Блокнот может сохранить в utf-8. Кодировку консоли можно сменить на utf-8. Окну консоли можно назначить unicode-совместимый шрифт.

По этому пилят PowerShell и новый Windows Terminal, в которых такой йни быть не должно.

atrus ★★★★★
()
Ответ на: комментарий от atrus

Это называется legacy. По этому пофиксить невозможно. Только обойти костылями. Блокнот может сохранить в utf-8. Кодировку консоли можно сменить на utf-8. Окну консоли можно назначить unicode-совместимый шрифт.

Пофиксить можно: добавить в блокнот поддержку 866 (если её там нет).

firkax ★★★★★
()

Да. У нубов именно так всё и происходит. Хоть с С++, хоть с Rust, хоть с Linux, хоть с Windows. Если бы ты был специалистом, то всё бы быстренько решил. Но этому нужно учиться, прочитать несколько самоучителей хотя бы. А пока будет лишь попытка нагуглить за одну минуту когда в голове пусто, то будет лишь боль и страдания. Так и задумано :)

fsb4000 ★★★★★
()
Ответ на: комментарий от fsb4000

Да-да, рассказывай. У ненубов сразу косяки интерфейса винды исправляются сами, содержимое C:\Windows по пакетам расходится, реестр заменяется на нормальные конфиги и тэпэ. А еще её можно прикладывать к больному месту вместо святой воды.

wandrien ★★
() автор топика
Ответ на: комментарий от eternal_sorrow

Не знаю, я такими терминами не оперирую. Пришёл сюди из спец. топика.

xaizek ★★★★★
()
Ответ на: комментарий от Zhbert

Нету там никакой бзди, эта информация устарела лет на 10.

leave ★★★★★
()
Ответ на: комментарий от X512

В Windows 10 можно переключиться на UTF-8 на системном уровне.

Это достижение, конечно. А на кои-8 можно?

leave ★★★★★
()
Ответ на: комментарий от dk__

4.2 в event viewer нет ничего полезного, а mmc просто запредельно убога. Алсо, как в винде управлять уровнями логирования?

leave ★★★★★
()

Большая часть действий делается через тупой GUI, в котором надо лазить по меню и натыкивать галки

Не осилил повершел, дальше не читал

Lordwind ★★★★★
()
Ответ на: комментарий от wandrien

Там же ещё была история про недокументированные возможности MS-DOS 2, можно его было использовать с - для опций программ и / для разделения каталогов. Только я ссылку потерял.

luke ★★★★★
()
Ответ на: комментарий от leave

Пройди выше в ветке по каментам.

А вообще даже я (!) порой в логах находил себе подсказки по тем или иным проблемам.

dk__
()
Ответ на: комментарий от Zhbert

Хоре распостранять мракобесие! В макоси нет и никогда не было никакой из бздей! Юзерспейс там только бздшный, в плане консольных утилит coreutils, они там не гнутые и всё.

untitl3d
()
Последнее исправление: untitl3d (всего исправлений: 1)
Ответ на: комментарий от fornlr

выше уже писал – это дефолт

Я вообще тоже так думал, но у человека почему-то похоже не так. На XP что ли до сих пор сидит?

atrus ★★★★★
()
Ответ на: комментарий от firkax

Пофиксить можно: добавить в блокнот поддержку 866 (если её там нет).

Так-то да, но оно там на хер никому не нужно. Те немногие, кто занимаются написательством скриптов под cmd.exe всё равно поставят какой-нибудь notepad++ с подсветкой, а всем остальным OEM DOS кодировка на фиг не упёрлась.

atrus ★★★★★
()
Ответ на: комментарий от atrus

Она не OEM. OEM это кодировка с закорючками всякими из неангл европейских языков. OEM кирилица была в некоторых старых компах но она там не 866.

Но вообще да, блокнот так и так для технических нужд не особо подходит, лучше в FAR всё редактировать, там и кодировки нужные всегда были.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)

Если в системе что-то сломалось, то хрен ты откатишь пакет для теста, нет в ней ни пакетов, ни внятной модели использования файловой системы.

Есть точки восстановления. Модель есть. Не то чтобы очень внятная, но есть. (Если мы об одном и том же и ты про аналог Linux filesystem hierarchy.)

Внутри папки system32 (которая теперь в целях совместимости теперь навечно будет system32, будь там под капотом хоть 128 бит в регистрах)

А знаешь почему? Из-за рукожопов, которые тупо хардкодят пути, а потому просто перенесли их в 64-бит тупо перекомпилировав. И нет, мир Linux уже давно точно такой же. https://bugzilla.redhat.com/show_bug.cgi?id=638477#c129

atrus ★★★★★
()
Ответ на: комментарий от firkax

Она не OEM.

Always has been. (C)

https://web.archive.org/web/20111102135644/http://msdn.microsoft.com/en-us/go...
«Windows OEM Code Pages»
«866 (Russian)»

https://docs.microsoft.com/en-us/windows/win32/intl/code-pages
«Original equipment manufacturer (OEM) code pages are code pages for which non-ASCII values represent line drawing and punctuation characters. These code pages were originally used for MS-DOS and are still used for console applications.»
«Windows code page 1252 and OEM code page 437 are generally used in the United States.»

atrus ★★★★★
()
Ответ на: комментарий от firkax

Там ничего нет про пути.

Ну... Думать-то надо. Там про то, что обеспечить работоспособность пользовательского ПО важнее соблюдения стандартов. Здесь - та же система. Ради того, чтобы куча рукожопных программ нормально работала в 64 бит M$ пришлось городить такую хрень с System32 в которой лежит 64 бит и WoW32 или как оно там, с виртуализацией для остального.

atrus ★★★★★
()
Ответ на: комментарий от atrus

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

firkax ★★★★★
()

до смешного - винда более для корпораций,компаний и сетей, а linux более для отдельных серверов и прочих локалхостов.

блин, там (в венде) всё проще меж собой интегрируется в итоге. И управляется.

в домохозяйстве это не нужно, потому на локалхост забит болт.

и даже игори теперь постепенно переползают в *nix. Win как сейчас есть - со страшной силой устремился в корпоративный сегмент. Оставляя десктопы под linux, android и т.п.

MKuznetsov ★★★★★
()
Ответ на: комментарий от atrus

Нет, там как раз всякие оптимизаторы нарушили негласный стандарт во имя понтов. Негласный стандарт был в том что memcpy копирует снизу вверх. Оптимизаторы рещили что где-то будет быстрее на 1 такт копировать сверху вниз и сломали этим кучу софта. Линус кстати тоже плохо предлагает алиасить её на memmove - она тоже копирует сверху вниз иногда, но для других целей.

firkax ★★★★★
()
Ответ на: комментарий от atrus

чтобы куча рукожопных программ нормально работала в 64 бит M$ пришлось городить такую хрень с System32 в которой лежит 64 бит и WoW32 или как оно там, с виртуализацией для остального

Не понимаю зачем. 32-битный софт ищет библиотеки в захардкоденном system32, там бы и оставили. При перекомпиляции в 64-бит разработчики софта уже сами разобрались бы что путь надо сменить на system64 (это бы выяснилось на этапе тестирования). Никакой старый софт бы не сломался.

firkax ★★★★★
()
Ответ на: комментарий от firkax

Видеокарты с кирилицей в дефолтном знакогенераторе почти не производились (на западе - вообще не производились), а те, что производились - были не 866 а своя кодировка.

Вы слишком обособляете Россию. В первую очередь это было не для нас. Но да, именно так и было. Регионально шрифты раньше зашивались в BIOS. К моменту распространения PC у нас видеокарты уже позволяли подменять зашитые шрифты на образы в памяти. Но название OEM осталось.

Собственно, 866 разработана у нас, M$ лишь стали использовать её, потому что она была подавляюще популярной. ~90% пользователей пользовались ей.

atrus ★★★★★
()
Ответ на: комментарий от firkax

Не понимаю зачем.

Я вижу. :)

При перекомпиляции в 64-бит разработчики софта уже сами разобрались бы что путь надо сменить на system64 (это бы выяснилось на этапе тестирования).

Oh my sweet summer child. (C) Правда более шокирующая. Ни хера они не тестировали. Просто перекомпилировали и в продажу. А претензии потом пошли в адерс Microsoft. Потому что пользователь разбираться не будет. Пользователь: «Я пользовался этой программой в 32-бит Windows. А теперь обновился до 64-бит версии, скачал 64-бит программу, а она не работает. Это всё рукожопые Microsoft!»

Почитайте на досуге, как M$ занимается обеспечением совместимости. У них там в венде огромная база кривых но популярных программ, для которых имитируются всякие глюки и старые баги. Например, программа в Windows 95, в которой можно было из-за особенностей менеджера памяти использовать память после освобождения, запускается в XP+ за счёт того, что в конкретном месте менеджер памяти откладывает освобождение память для отдельной программы, просто чтобы она не упала.

atrus ★★★★★
()

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

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

i-rinat ★★★★★
()
Ответ на: комментарий от wandrien

Да-да, рассказывай. У ненубов сразу косяки интерфейса винды исправляются сами, содержимое C:\Windows по пакетам расходится, реестр заменяется на нормальные конфиги и тэпэ. А еще её можно прикладывать к больному месту вместо святой воды.

не нубы в папку Windows не заходят. Косяков интерфейса тоже нет. Реестр на голову выше текстовых конфигов и тэпэ.

fsb4000 ★★★★★
()
Ответ на: комментарий от firkax

Это не баг фм. В винде принято для открытия файла использовать ShellExec, это такой аналог xdg-open, который запускает ассоциированое приложение в текущей сессии. Это как если бы xdg-open смотрел по своим парентам из какой сессии он запущен и через сессионный dbus этой сессии стартовал приложение. В Linux просто до этого еще не додумались

cobold ★★★★★
()

Полностью поддерживаю

mittorn ★★★★★
()
Ответ на: комментарий от atrus

Я возможно непонятно выразился. Есть 32-бит софт, он работает и в нём ничего не сломается если в system32 останутся 32-бит библиотеки.

64-бит релизы софта под винду могут появиться только после того, как эта винда появилась сама, и появятся они только после того, как разработчики их скомпилят. Если компилить win32 прогу тупо 64-бит режимом компилятора - у неё по-любому будет очень много проблем. Так что просто скомпилить и не заметить, что она не запускается (или не компилируется даже) - невозможно. Вобщем, переход с 32 на 64 в реалиях винды это мажорный релиз, который никуда не денется от прохождения всех сопутствующих процедур.

И тем более не надо приплетать сюда обратную совместимость. Обратная совместимость - это совместимость с тем софтом, который вышел для старой платформы.

А теперь обновился до 64-бит версии, скачал 64-бит программу, а она не работает.

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

firkax ★★★★★
()

Так там PowerShell есть. Почти все из консольки можно настроить. Но синтаксис да, не очень приятный.

dvetutnev
()
Ответ на: комментарий от thunar

И поэтому в rh-like все плотно обмазано acl через selinux? Расскажешь какой в Linux удобный гуй для управления selinux policy? Ай блин промахнулся комментом

cobold ★★★★★
()
Последнее исправление: cobold (всего исправлений: 1)
Ответ на: комментарий от cobold

selinux это не acl

acl это те же rwx, но не три варианта как обычно а сколько хочешь под разные uid'ы

firkax ★★★★★
()
Ответ на: комментарий от n_play

попробуй игрули на венде на отличный от диска Ц в папец GAMES ставить (в конечном итоге обосрёсси).

Мне кажется вы не правду говорите. Всяческие брэндючие установки из каробки разбивают диск на два, C: под систему D: под всю остальную фигню. Если бы гамки не ставились на диск отличный от C: вою бы давно было не то что много, а очень много.

anc ★★★★★
()
Ответ на: комментарий от firkax

Если компилить win32 прогу тупо 64-бит режимом компилятора - у неё по-любому будет очень много проблем.

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

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

Знаете, вы всё-таки погуглите историю поддержки вендой сторонних программ. Это интересно.

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

atrus ★★★★★
()
Ответ на: комментарий от James_Holden

А вот интересно, как винда отслеживает что это именно та программа? По названию бинарника?

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

atrus ★★★★★
()
Ответ на: комментарий от fernandos

ничего не вызывает, win 10 лучшая десктопная ос

hakavlad ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.