LINUX.ORG.RU
ФорумTalks

Может быть, алгоритм решения проблем с программами существует?

 


0

1

Вот не работает у пользователя железо. Он что делает? Всё просто. Вводит его модель в поиск гуглом по ЛОРу, находит команды, копипастит их, железо работает. Как правило это будет: заблэлистить какой-то модуль, собрать какой-то модуль, обновить/обстарить ядро, собрать ядро, поставить прошивку.

А если не работает программа? Вот как я сейчас думаю, тут официального метода траблшутинга не существует, и меня это бесит. Но может быть я не прав? Что делает пользователь? Собирает из исходников версию программы, которая работает? Так для этого надо пройти dependency hell, и после этого набегут мерзкие зануды и поднимут вой, что это всё неофициально и вообще нельзя делать. Ставит из PPA или флатпака актуальную версию? Зануды тоже будут занудствовать. Может предполагаемый сценарий, что пользователь вообще ничего не должен чинить, а он просто репортит это как баг? Ок, но как отличить баг от не бага и как понять в каком пакете баг? И кому его репортить, мейнтейнеру пакета или разработчику программы?

★★★

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

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

cobold ★★★★★
()

официального метода траблшутинга

учишься на погроммиста, погроммируешь и дебажишь - чем не метод?

репортить, мейнтейнеру пакета или разработчику программы

разработчику, если дистростроители патчей своих не наложили

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

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

Просто может быть, я как-то не так рассуждаю. Я не должен ничего собирать и отлаживать. Конечный продукт тут дистрибутив. Это такой неделимый комбайн. И вот в этом комбайне программ не выполняется некоторый юзкейс. Тогда это баг в программе под названием Ubuntu/Debian/Alt/Slackware/etc.

Вообще на каком основании в мире СПО что-то называют официальным, а что-то левым/васянским/сторонним?

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

Каких? В арче просто заходишь на страницу пакета и читаешь комментарии, лень разбираться - ставишь преднастроенную из Flatpak

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

Вот пример https://aur.archlinux.org/packages/vesktop-bin

Смотришь там комментарии

@v1993 Thanks for your feedback. The problem with the flags I’ve fixed, and env ELECTRON_OZONE_PLATFORM_HINT=auto was according to https://wiki.archlinux.org/title/Wayland#Environment_variable

Делаешь тож самое.


Но если по описанию проблем к пакетам пройтись, то видно, что они как правило генерализованные, системные

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

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

Удачи в опровержении.

Ygor ★★★★★
()

Вот не работает у пользователя железо. Он что делает? Всё просто. Вводит его модель в поиск гуглом по ЛОРу, находит команды, копипастит их, железо работает.

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

А если не работает программа? Вот как я сейчас думаю, тут официального метода траблшутинга не существует

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

Собирает из исходников версию программы, которая работает? Так для этого надо пройти dependency hell, и после этого набегут мерзкие зануды и поднимут вой, что это всё неофициально и вообще нельзя делать.

Как правило, не так страшен чёрт, как его малюют.

Да и, допустим, в Арче, можно просто PKGBUILD изменить, чтоб другая версия с git (или откуда там ещё) качалась, а собиралось всё так же. В Gentoo, Void, и др. похоже.

Ставит из PPA или флатпака актуальную версию?

Тоже вариант. Или из AUR. Или ещё откуда-то. Почему нет?

Может предполагаемый сценарий, что пользователь вообще ничего не должен чинить, а он просто репортит это как баг? Ок, но как отличить баг от не бага и как понять в каком пакете баг?

Не работает как задумано — баг. Работает как задумано — не баг. Всё просто.

Из какого пакета программа не работает, в том и баг.

И кому его репортить, мейнтейнеру пакета или разработчику программы?

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

и после этого набегут мерзкие зануды и поднимут вой

Зануды тоже будут занудствовать

Прошу прощения за прямоту, конечно, но тут у меня кроме короткого вопроса из двух слов ничего нет:

И чо?

CrX ★★★★★
()

Существует. Пользуешься только FOSS, если что-то сломалось – читаешь исходники, правишь, пересобираешь. Профит!

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

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

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

Как правило, не так страшен чёрт, как его малюют.

Черт, который из ада зависимостей или который форумными токсиками управляет? Первый реально страшный.

Не работает как задумано — баг. Работает как задумано — не баг. Всё просто.

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

Из какого пакета программа не работает, в том и баг.

Тоже не так очевидно. Был тот известный баг на Ubuntu 18.04, когда флешка открывалась в GUI только со второго раза. На одной версии udisks2 у людей работало, на более новой - нет. Казалось бы, регрессия в udisks2? А вот нет, неправильно работала либа solid. Есть такая в кедах, отвечает за управление устройствами из графических утилит. Но пользователь узнать что о том, что о другом пакете может только найдя баг на гитхабе. Для него неработающая программа - это Dolphin или вот этот виджет кедовый, на нём не написано даже, как он называется.

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

пользователь не обязан знать

Меинтейнеры или авторы софтины тоже не обязаны целовать этого тупого пользователя в жопу.

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

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

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

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

Интересно, что случится раньше - эта вся прогрессивная потребительская повесточка в IT сожрёт сама себя или линукс будет доведён до стадии когда только идиот захочет им пользоваться?

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

Пользователь не может читать логи, он может их только запостить на форум, чтобы гуру их прочитали.

Пользователь бывает разный. Нормальный пользователь читать умеет. Читать не умеет ламер, а не пользователь.

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

Да никто никому ничего не обязан, само собой. Хотя в большинстве случаев можно просто догадаться, посмотрев на список (не надо приводить примеры случаев «хрен догадаешься», я знаю, что они есть, поэтому и говорю, что в большинстве, а не всегда).

Но это знает интернет.

Ну да.

а оказалось, что я не то нажимал. Надо было настроить папки в ящике перед использованием

Это недоработка в UI тогда. Вроде как софтина для хомячков, гуёвая, значит не должно быть так. Можно всё равно зарепортить, чтоб хотя бы вот это «оказалось» было очевидно из выдаваемой ошибки, как самый минимум. Ну или чтоб из коробки было настроенго как ожидает средний пользователь, как максимум. Да, могут сказать, что ты ничего не понимаешь, и так надо, но попробовать стоит.

Тоже не так очевидно. Был тот известный баг

Отдельные анекдотические случаи, происходящие раз в десять лет, не меняют общего курса действий. Зарепортишь куда-то в таком случае — ну там почешут репу, поймут, что проблема не на их стороне, и сами зарепортят куда надо (ну или в крайнем случае тебе скажут «это не к нам, репорть в спортлото либу). Не стоит этого так уж бояться. Да, по возможности надо самому репортить туда, куда надо, но если случай вот такой запутанный, и ты ошибёшься, ничего страшного не произойдёт, и всё равно в итоге будет зарепорчено куда надо.

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

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

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

К сожалению, софт на сях никуда не денется. А там никакая обработка от кривых рук не поможет — сегфолт и всё.

InterVi ★★★★★
()

Вопрос очень важный. И алгоритм такой, конечно же, есть!

Он крайне прост, и в то же время крайне сложен.

Чтобы программа работала, нужно запускать ее РОВНО в том окружении, в котором она разрабатывалась и тестировалась.

Тому, кто хочет это соблюсти, надо: 1) выяснить, в каком окружении работает разработчик программы 2) научиться воспроизводить нужное окружение у себя.

James_Holden ★★★★
()

Кто тебя обидел? Вот тебе Nix, не мучайся.

t184256 ★★★★★
()

Для повышения ремонтопригодности как железа, так и софта, средство одно - использовать при создании принцип KISS.

Ну и введение дополнительных контрольных точек никто не отменял.

vaddd ★☆
()

А если не работает программа?

Запустить в терминале, посмотреть ошибки
Если есть логи - изучить
ldd, strace

Собирает из исходников версию программы, которая работает?

собрать chroot окружение (или контейнер) в котором заработает

Kolins ★★★★
()

Хочешь чуть меньше страдать от флатпаков и PPA - попробуй бомжару. Если в репах чего-то нет, оно 99% есть в AUR'е без ручного компиляния исходников. Свежий софт в бубунте, да и в любых LTS, это утопия.

yu-boot ★★★★★
()

Так для этого надо пройти dependency hell

Нет конечно. Там всё ещё проще, даже гугл не нужен. как make начинает срать так смотришь чем он срёт и делаешь apt install что-то там на что make выругался-dev и даже не думаешь dev тебе надо или не dev. Если всё собралось молодец. Дальше когда всё для сборки есть и ты убедился что всё собирается, портянка зависимостей определена, смотришь deb/rpm пакет в твоём/родственном/debian/fedora дистрибутиве, открываешь у своего дистрибутива аналог вот этого https://www.debian.org/doc/manuals/maint-guide/ , достаёшь большую ложку и начинаешь тщательно жевать всё это добро. Если всё сделал правильно и смог напрячь пару извилин, то на выходе имеешь красивый софт без всратых костылей типа флетпаков/снапов и прости Господи аппимейджей. Если извилина одна и та только от головного убора, то конечно всё плохо бида пичаль.

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

Меинтейнеры или авторы софтины тоже не обязаны целовать этого тупого пользователя в жопу.

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

CrX пишет:

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

Да чтобы хотя бы в инструкции было написано, что это надо. А то оно только с GMail'ом работает из коробки.

InterVi пишет:

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

Да. По-нормальному из сообщения об ошибке должно следовать, как ее исправить.

t184256, а в Nix какой алгоритм траблшутинга? Так-то я не против, но к нему реально не понятно, с какой стороны подступиться. Там настройки через свой файл. Т.е. всё что я до этого 10 лет учил про Линукс, мне не пригодится? А как настройки через этот файл совместно работают с настройками через GUI? А в репах Nix все проги есть или как в дебилане?

yu-boot, так я типа хочу использовать то, что проверено когда-то кем-то. Говорят, в Слаке всё рабочее.

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

что-то там на что make выругался-dev

Этого ничего не будет в репах или оно будет протухшее. Его тоже собирать из исходников, а у него тоже зависимости протухшие.

Ну я типа того и делал. Только это все пердолинг и этого не должно существовать. Люди на это зря тратят время своих жизней. Его надо тратить на решение задач, на саму жизнь.

Но ок, вопрос не об этом. А как предполагалось, что пользователь будет этим пользоваться? Даже не я, умеющий собирать, а сферический пользователь, который знает только интерфейс программы, которая ему нужна. Он просто репортит на сайт дистрибутива и ждёт пока оно починится с обновлениями? Так я много раз видел, что оно зарепорчено, а на это забивают. А если не починят, то такова жизнь?

Или GNU/Linux вообще не предназначался для пользования, это просто такой конструктор, чтоб играться?

damix9 ★★★
() автор топика

Вот не работает у пользователя

Если он сам не разбирается, то просто зовёт того, кто разбирается. В случае чего просто забивает и считает что ему и так норм.

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

Про Nix рассказать линуксоиду — как виндузятнику про линукс. Никакого комментария не хватит. Там окружение разработчика воспроизводится на раз-два; все, что ты 10 лет учил про линукс, будет тебе так же отрицательно полезно, как виндопривычки на лине; конфигурация системы — это ты попутал с NixOS, а я тут говорил просто про Nix; про гуй ты также не в кассу; что там в дебиане, я не знаю уже, тут софта больше, non-free тоже есть.

t184256 ★★★★★
()

А если не работает программа?

Мой рецепт прост, если что-то не работает, то я ищу этот пакет в AUR, там обычно уже есть патчи и указано как это все дело накладывать и собирать в Pkgbuild. Соотвественно дальше уже собираю пакет по примеру как там. А обычно даже это не надо, достаточно погуглить ошибку. Например у меня тут недавно Braid не работал после установки, я просто смотрю и вижу, что одну либу забыли с игрой положить. Установил эту либу через менеджер пакетов и все заработало.

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

Ок, но Nix в NixOS установлен по умолчанию. Но как бы наверное лучше всего Nix и использовать на NixOS. Или нет?

Может есть какой-то хороший getting started?

Ну вот например главный вопрос темы. Как в NixOS (или в другом дистрибутиве с установленным ПМ Nix) происходит траблшутинг бажного приложения? Именно как предполагается (и предполагается ли вообще) что юзер будет его осуществлять?

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

Но как бы наверное лучше всего Nix и использовать на NixOS

Лучше, конечно.

Может есть какой-то хороший getting started?

Штук 6 их, за месяц интенсива вкатиться реально. Даже проще, чем с винды на линукс =P

Как в NixOS (или в другом дистрибутиве с установленным ПМ Nix) происходит траблшутинг бажного приложения?

Из дистра?

  1. Пользователь находит несоответствие ожиданий и реальности (для простоты, пусть htop с опцией --help сегфолтится)

  2. Пользователь проверяет воспроизводимость в чистом профиле.

  3. Пользователь постит «nix run nixpkgs/0be2gfceaaaa#htop -- --help сегфолтится»

  4. Разраб делает то же самое

  5. Разраб делает nix develop nixpkgs/0be2gfceaaaa#htop -- --help и шагает пошагово по сборке докуда надо

  6. ААА!

  7. время фиксить

При этом у него тот же libc, те же либы (но другое ядро, другие версии видеодров и ещё какой-нибудь pipewire). Система разраба при этом может быть другой мажорной версией другого дистриба.

Еще вкуснее, когда прямо в апстриме есть flake.lock, относительно которого можно репортить.

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

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

Матан изучить для постановки эксперимента, всякие головоломные теории не тупой, а минимальные знания по компьютерной технике и программированию получить - внезапно тупой. Ага. Это по-другому назыывается в таком случае - высокомерная мразь. И ещё вопрос - как это создание вообще закончило микробиологический или астрономический факультет, без знаний в области программирования? Нынче без численных методов и прикладного программирования даже каким-нибудь, прости Господи, социологом не стать без взяток или покупки диплома.

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

Злобный хам.

Это по-другому назыывается в таком случае - высокомерная мразь.

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

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

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

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

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

Матан изучить для постановки эксперимента, всякие головоломные теории не тупой, а минимальные знания по компьютерной технике и программированию получить - внезапно тупой. Ага. Это по-другому назыывается в таком случае - высокомерная мразь. И ещё вопрос - как это создание вообще закончило микробиологический или астрономический факультет, без знаний в области программирования? Нынче без численных методов и прикладного программирования даже каким-нибудь, прости Господи, социологом не стать без взяток или покупки диплома.

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

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

vaddd ★☆
()

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

Сам себе противоречишь, вот и задаёшь такие вопросы. Возможно (!), ты просто больше железячник и тебе кажется, что описанные тобой в первом абзаце действия очевидны и для других юзверей. Но енто не так. :)

Тут точно такие же действия. Немного логики, немного желания читать логи (их обычно пишут более или менее воспринимаемыми), немного умения гуглить. В худшем случае, надо уметь сформулировать на правильном сайте хороший вопрос.

Если ты ещё и Issue умеешь заводить, то ты вообще не юзер, а сказка.

witaway
()

Вот не работает у пользователя железо. Он что делает?

У какого, я извиняюсь, пользователя? Пользователь идет в магазин, покупает компьютер/смартфон/планшет с предустановленной ОС и никогда даже не задается мыслью устанавливать себе линуксы, вейланды, тайловые менеджеры окошек, он юзает то что есть из коробки.

А если не работает программа?

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

Собственно всё. Все сценарии. Есть еще исчезающе малый процент кулхацкеров, которые вместо того, чтобы наслаждаться жизнью, чего-то там компилируют, собирают, проходят dependency hell… ну так это фича подобного вида хобби, ты сам этого хотел. Нормальные люди всем этим не занимаются

FishHook
()

Зануды тоже будут занудствовать.

Haters gonna hate. Может не надо обращать внимания на такое?

Ну или по крайней мере обращать внимание только на содержательную часть.

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

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

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

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

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

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

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

Что-то более-менее юзабельное из проприетарщины в сфере матана это MATLAB, но с ним без программирования, внезапно, не обойтись. :)

А ещё - 100.00000% статей, которые были retracted за мухлёж и подтасовки данных, включая всякое клоуновирусное и климатченджевое гонево были сделаны с использованием венды и вендовых софтин типа маткада и всякой прочей сделанной чтобы «даже идиот мог воспользоватся» дряни. И в этом нет ничего удивительного.

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

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

Так компы продаются с линуксами, так что такой сценарий возможен :)

И без ОС они тоже продаются.

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

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

damix9 ★★★
() автор топика

высер --> ЖЖ. Харе на людях мир познавать, иди гугли «алгоритм поиска неисправностей», начиная с WD-40 и синей изоленты.

slackwarrior ★★★★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)