LINUX.ORG.RU

Вышел sed 4.5

 ,


1

3

Чуть больше чем через год после предыдущего релиза (версии 4.4) состоялся релиз GNU sed 4.5.

В новой версии:

  • sed теперь выдаёт ошибку при сравнении длинных (больше чем 2 Гб) строк вместо прежнего молчаливого игнорирования проблемы;
  • sed теперь не обрезает комментарии и закрывающие скобки после команды «y///»;
  • «sed -E --posix» теперь больше не игнорирует специальное назначение символов '+', '?' и '|';
  • «sed -i» теперь создаёт selinux контекст, основанный на контексте симлинка, а не на том файле, на который указывает симлинк (при наличии selinux); поведение «sed -i --follow-symlinks» остаётся прежним (модифицируется файл на который указывает симлинк с сохранением симлинка);
  • '\x5c' (обратная косая черта) теперь для sed'а литерал, а не спецсимвол для экранирования;
    старое поведение:
         $ echo z | sed -E 's/(z)/\x5c1/' # идентично 's/(z)/\1/'
         z
    
    новое поведение:
         $ echo z | sed -E 's/(z)/\x5c1/'
         \1
    

>>> Скачать

★★★★★

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

Ответ на: комментарий от A-234

У меня на заводе начальник на одном проекте дедок лет за 80. С паскалевым бекграундом. Он не заморачивается именованием переменных, порой в именах часть слов на инглише, часть транслитом типа isRazborOk. Ну это если не вспоминать глобальную переменную с дивным именем bb1. Плюс привычка переиспользовать переменные для разных вещей так как в паскле для объявления новой переменной приходилось мотать в голову функции, что было влом и захламляло область видимости.

На счет goto, его вполне заменили эксепшены. И вообще главное - как организовывать код, а не какие слова произносить в коде нехорошо. Говнокод можно на любом подмножестве любого языка наваять, в то же время норм накодить можно хоть на асме.

q0tw4 ★★★★
()
Ответ на: комментарий от A-234

Ну да, все что мне нужно - просто, а все что я не осилил - не нужно. Эту вашу позицию я уже понял.

Зачем осиливать то, чего задачи не требуют;)

плохо структурированного кода

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

с торчащими goto

Так это же хорошо - отсутствует хентай его заменяющий.

Транслитом!

А то как-же, буржуйского и в документации много, надо уменьшать его количество.

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

Так он же вроде математик или около того. У них в математике тупо нет аналога гото, вот они и срут кирпичами от алгоритмов плохо выражающихся математически. Но это их личные проблемы.

За многие годы я утвердился во мнении о том, что квалификация программистов - функция, обратно зависящая от частоты появления операторов go to в их программах.1968 год. 50 лет и никакого прогресса.

За неиспользование гото надо доплачивать, также как и за использования некоторых ненужных языков. С 8 до 17 платят - делаем что говорят, хоть резинвативы вилами разгружаем. С 17 за фигню не платят - да ну её нафиг! Это и есть профессионализм.

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

Так он же вроде математик или около того.

Дейкстра по образованию был физик-теоретик но всю свою жизнь посвятил программированию. Программирование это в общем и есть «математика или около того».

За неиспользование гото надо доплачивать...

По вашему, структурное программирование это «фигня» за которую нужно доплачивать.

Это и есть профессионализм.

На этом тему можно закрывать.

A-234 ★★★★★
()
Ответ на: комментарий от q0tw4

предложи концепт.

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

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

Deleted
()
Ответ на: комментарий от A-234

Программирование это в общем и есть «математика или около того».

Математика есть лишь частный случай проявления логики.

По вашему, структурное программирование это «фигня» за которую нужно доплачивать.

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

Это и есть профессионализм.

На этом тему можно закрывать.

Лохотрон не прокатил.

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

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

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

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

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

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

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

Iron_Bug ★★★★★
()

'\x5c' (обратная косая черта) теперь для sed'а литерал, а не спецсимвол для экранирования;

В продакшен нельзя.

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

Я тут было решил от Баша отказаться в пользу чего-нибудь более детерминированного

Я попробовал на PHP перелезть. Пару десятков скриптов уже написал — полет нормальный, доволен, читабельность взлетела ракетой.

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

// с каких пор gpl-ному проеку нужны майкросовтские либы для компиляции? он же gcc-шкой компилируется? или где?

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

Математика есть лишь частный случай проявления логики

Простите, что!?
Или Вы под математикой подразумеваете школьно-арифметическое понимание предмета?
«Математика относится к фундаментальным наукам, предоставляющим общие языковые средства прочим наукам, выявляя структурные связи с целью определения общих законов природы.» (недословно из вики, не то чтобы это первостепенный источник информации, но в данном случае сформулировано очень удачно, как раз «по-математически»).

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

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

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

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

Поэтому логика в качестве подмножества присутствует практически во всех науках, в основном в качестве инструмента.

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

Попячся, логика - раздел философии.

Физика и социология тоже относятся к «фундаментальным» наукам.

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

Попячся, логика - раздел философии.

Да.
Также как и «раздел» прочих научных дисциплин.
Ознакомьтесь с предметом нескоько глубже — поймете (или хотя бы прочитаете и запомните).
И используется в качестве инструмента.

Поменяй местами логику с математикой и будешь прав.

!?!?
Даже комментировать не стану!
«Учитесь и дано будет Вам...»

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

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

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

Тебе и не надо ничего комментировать - рано еще. Когда выучишься, пойдёшь в ВУЗ, тогда узнаешь ...

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

а математика, строго говоря, вообще не наука, а вспомогательная дисциплина.

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

b4rk1n6w0lff
()
Ответ на: комментарий от next_time

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

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

пойдёшь в ВУЗ, тогда узнаешь, что науки изучают окружающий нас мир

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

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

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

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

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

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

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

b4rk1n6w0lff
()
Ответ на: комментарий от Iron_Bug

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

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

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

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

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

Более чем согласен.
Но самое печальное, что ответ-то подобный мы слышим не от «дворника», а от человека мнящего себя «программистом» и «IT-шником». Это лишнее подтверждение появления массового класса «программистов-дворников» и тенденции его процентного роста с постепенным (видимо, уже свершившимся) установлением лидирующих позиций в массовых разработках.

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

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

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

Математика есть лишь частный случай проявления логики.

Логика — раздел математики, а не взад

В твоей математике даже нет значка гото и числа до---.

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

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

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

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

Так и запишем - идусские С++ кодеры - говнокодеры.

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

По вашему, структурное программирование это «фигня» за которую нужно доплачивать.

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

Как бы структурное программирование подразумевает далеко не только наличие структур в коде. :-)

В соответствии с данной методологией любая программа строится без использования оператора goto из трёх базовых управляющих структур: последовательность, ветвление, цикл; кроме того, используются подпрограммы. При этом разработка программы ведётся пошагово, методом «сверху вниз».

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

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

математика какбэ не изучает мир. мир изучают естественные науки. математика к ним не относится

Абсолютно верно.

О чём же ты тогда с LamerOk спорил? Он ровно то же самое говорил.

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

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

!?!?!?
Математика... goto...
Что?
Вам дорога в повара — такой винегрет из понятий замесили...

Так и запишем - идусские С++ кодеры - говнокодеры.

Подразумевались не программисты индийской или пакистанской принадлежности, а именно устойчивое определение конкретной категории как единой сущности — «индусско-пакистанским говнокодером» с равным успехом может быть русский, немец, чукча, еврей, и вообще кто угодно.
Есть понятия, имеющие более широкий смысл, чем сумма прямых значений слов. Как пример — школьник (в IT-приложении). Школьником может быть и великовозрастный, окончивший ВУЗ, даже пытающийся работать в технически-интеллектуальной сфере, субъект.

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

b4rk1n6w0lff
()
Ответ на: комментарий от aureliano15

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

У сложной функции должна быть одна точка выхода а не распылённое по объёму множество, как у арбуза семечки. Стало быть Дейкстру можно слать по гото далеко и очень далеко.

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

Вы не совсем уловили сути проблемы в его отношении к математике — его цитата:

математика, строго говоря, вообще не наука, а вспомогательная дисциплина.

Математика же является квинтэссенцией, способом описать и смоделировать явления любой научной области, представить в виде чёткой математической модели, и продолжить её исследование в фундаметальном русле. Это относится к любой отрасли знания — математика всеобъемлюща и способна к изучению любых, а не частных, объектов и явлений.

Поэтому я спорил как раз с отношением к математике, как арифметически-приклодному рассчётному инструменту — это, простите, восприятие на уровне средней школы (очень средней школы).

b4rk1n6w0lff
()
Ответ на: комментарий от Napilnik

У сложной функции должна быть одна точка выхода … Стало быть Дейкстру

Интересно, ты в двери пролезаешь еще или приходиться краном, через балкон, ходить?

anonymous
()
Ответ на: комментарий от Napilnik

У сложной функции должна быть одна точка выхода а не распылённое по объёму множество, как у арбуза семечки. Стало быть Дейкстру можно слать по гото далеко и очень далеко.

Когда функция имеет только один выход, это лучше в плане читабельности и вероятности не наделать ошибок, чем когда их много, с этим согласен. Но goto ещё хуже, т. к. он вообще делает функцию практически нечитабельной, если используется часто, и логических ошибок из-за него может появиться гораздо больше. А уменьшить число return'ов без ущерба лаконичности и производительности можно и по-другому. Например, разбить слишком сложную функцию на несколько более простых. Или в условных конструкциях сначала использовать условия, в которых выполняется что-то, кроме возврата, а return оставить на конец. Или просто пересмотреть алгоритм (последнее зависит от задачи и алгоритма).

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

математика всеобъемлюща и способна к изучению любых, а не частных, объектов и явлений.

С этим полностью согласен.

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

Но goto ещё хуже, т. к. он вообще делает функцию практически нечитабельной, если используется часто

Это как?

procedure qwerty;
label
1, 100;
begin
if A=B then goto 100;
B:=B+C;
if C=R then goto 100;
if X>Y then goto 1;
X:=X+A;
if G<E then goto 100;
1:
............
.... then goto 100;
............
100:
end;

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

Например, разбить слишком сложную функцию на несколько более простых.

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

Или просто пересмотреть алгоритм (последнее зависит от задачи и алгоритма).

Когда используешь goto, то просто делаешь структуру и насыщаешь её «мясом». А когда уже хорошо сделано и отлажено, то зачем переписывать плохо?

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

а математика, строго говоря, вообще не наука, а вспомогательная дисциплина

Во. Два кофеинума этому парню

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

математика всеобъемлюща и способна к изучению любых, а не частных, объектов и явлений.

С этим полностью согласен.

Ну и как математически изучить программу, код которой мы не видим, но догадываемся что он состоит из 1*10^1000000 байтов?

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

проще поставить goto для выхода из 2 вложенных циклов сразу

В нормальных языках для этого есть метки на циклах. Когда пишешь break можно ему в аргумент передать метку цикла, из которого следует выйти. И безопасно и (вкупе с исключениями) исчерпывает все юзкейсы goto. Но пока мы пишем на всяком старье приходится терпеть боль.

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

Если в математике нету гоуту — его следовало бы туда придумать )

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

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

Если эту логику заменить математикой

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

переписывать и тестировать - а оно мне надо?
...профессионализм... (было выше в Ваших высказываниях топика)

Ага, точно, это он самый, вижу-вижу ))

b4rk1n6w0lff
()
Ответ на: комментарий от pihter

В математике при моделировании языков программирования спокойно так есть goto, хотя его функционал наверно немного отличается от реального.

q0tw4 ★★★★
()
Ответ на: комментарий от Napilnik
procedure qwerty;
label
1, 100;
begin
if A=B then goto 100;
B:=B+C;
if C=R then goto 100;
if X>Y then goto 1;
X:=X+A;
if G<E then goto 100;
1:
............
.... then goto 100;
............
100:
end;

А почему бы то же самое не написать как-то так (пишу на си, т. к. мне так проще, но не в языке дело, кому надо, может оттранслировать в паскаль):

if(a!=b)
{
  b=b+c;
  if(c!=r && x<=y)
    x=x+a;
  if(x>y || g>=e)
    // bla-bla-bla-1
}
aureliano15 ★★
()
Ответ на: комментарий от Napilnik

Ну и как математически изучить программу, код которой мы не видим, но догадываемся что он состоит из 1*10^1000000 байтов?

Если код состоит из 10^миллион байт, то такой код надо срочно удалить, и анализ тут не требуется, а освободившееся место на диске использовать для оцифровки всей Вселенной, должно хватить. :-)

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

проще поставить goto для выхода из 2 вложенных циклов сразу

В нормальных языках для этого есть метки на циклах.

Испокон века теоретики программирования ругали метки и goto. А теперь нашлись некие умники, «кардинально решившие» проблему. Они просто оставили те же метки, а оператор goto переименовали в break и назвали это «нормальными языками». :-) А если я goto переименую в «идти на», это тоже будет тру-язык? Типа goto просто слово такое нехорошее, заменим его на что-нибудь другое, и будет нам щастье? :-)

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

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

Можно лишь посоветовать ему вернуться к основам, тогда пришло бы и понимание.
О существовании таких вещей, как, например, теорема Бёма—Джакопини человек даже не подозревает.
Базовые основы не нужны? Добро пожаловать в мир «простых профессиональных» решений от отрицающих математичность программирования.

b4rk1n6w0lff
()
Ответ на: комментарий от pihter

Логика — раздел математики

математическая Логика — раздел математики, а Логика — раздел философии

anonymous
()
Ответ на: комментарий от b4rk1n6w0lff

Можно лишь посоветовать ему вернуться к основам

Что я и делаю. Все когда-то что-то не знали. Да и любой самый умный человек не знает куда больше, чем знает, даже дожив до седин. :-)

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

математическая Логика — раздел математики, а Логика — раздел философии

Вы немного свалили всё в кучу.
Логика в математика не ограничена лишь математической логикой — это суть различные сущности. Математическая логика — прикладной раздел для изучения и анализа (если упрощённо говорить) решаемость и доказуемость математических объектов.
В то же время логика (без приставки «математическая») является также частью математики (равно как и философии и ряда других фундаментальных наук), выступая инструментом нахождения пути решения (исключительно в нормативно-описательном плане при анализе путей решения). Это обусловлено тем, что логика является
нормативной наукой, что значит она самостоятельно не изучает ничего и не способна к описанию никаких явлений и сущностей, являясь инструментом для нормирования и описания путей решения и контроля их действенности.

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