LINUX.ORG.RU

Сообщения filin

 

4 Shaman007

mantigorahvps: управление высоковольтными источниками питания мантигора под Линукс

Сообщение удалено Shaman007 по причине 'очень низкий уровень материала (0)'

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

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

Я почему-то всегда думал, что ЛОР — площадка, помогающая пользователям решать проблемы с Линукс.

 

filin
()

гугловоды опутывают ниточками мир

http://www.osnews.com/story/22860/Google_To_Set_up_Fibre_Network_Becomes_ISP

Google To Set up Fibre Network, Becomes ISP

The Mom of all internet companies, Google, has announced today that it will effectively become an internet service provider. The company is planning on building a number of ultra high-speed broadband networks in select locations in the United States, serving anywhere between 50000 and 500000 users.

гугловоды что-то задумали...

filin
()

как создать фиктивную IO memory?

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

filin
()

UPS CyberPower OP 1000E

поменял упс у файл-сервера с дискововым массивом на сабж (свинцовый кислотный аккум служит три года, зараза, потом упс становится фильтром), включаю упс - пищит, лампочка оранжевым светит, работа от батареи. Оказалось сработал предохранитель сетевого фильтра (он же разветвитель и удлиннитель). Не долго думая втопил кнопку предохранителя в боевое положение, из фильтра раздался БАБАХ, полетели искры, пошёл дым. Сгорел короче фильтр, после отходняка (ни валерианки ни спиртного не было, походил, подышал свежим воздухом) нашёл второй фильтр, воткнул упс. Из-за угла, спрятавшись, включаю упс - пискнул, лампочка переключилась на зелёный, всё нормально. Вроде не пятница и не тринадцатое, что было - не понял...

>>>

filin
()

полезно ли крутить хвосты и заплетать косы?

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

"А кто обещал, что системы 10GBase-T будут работать по СКС категории 6?

Доналд Латхэм

...

Кабели категории 6 создавались с тем расчетом, что развитие сетей 1000Base-T пойдет по пути, аналогичному тому, по которому в свое время шла технология 100Base-T (Fast Ethernet), т. е. по пути миграции с механизма передачи по четырем парам на механизм передачи по двум парам. Учитывая тот факт, что число передатчиков и приемников при этом сокращается вдвое, передача по двум парам означает снижение стоимости оборудования. Когда появилась сеть Fast Ethernet стандарта 100Base-T4, она была предназначена для передачи данных по четырем парам кабеля категории 3. Лишь позднее, с выходом поддерживающей работу по двум парам кабеля категории 5 спецификации 100Base-TX, технология Fast Ethernet достигла пика своей популярности. Хотя это позволило снизить стоимость сетевого оборудования, требовались более качественные кабели категории 5. Что же касается спецификации 1000Base-TX (определяющей работу сети Gigabit Ethernet с использованием для передачи сигнала двух пар кабеля категории 6), то необходимые для ее реализации микросхемы, хотя и были разработаны, так никогда и не получили широкого распространения.

Приложив уйму усилий и потратив много денег на исследования, мы наконец поняли, что, несмотря ни на что, СКС категории 6 не обладает полосой пропускания, достаточной для передачи данных со скоростью 10 Гбит/с на расстояние 100 м. Кроме того, “неожиданно” оказалось, что институт IEEE не заинтересован в разработке новых стандартов на сети Ethernet с протяженностью каналов до 100 м и скоростями ниже 10 Гбит/с.

Учитывая так и оставшиеся невыполненными обещания относительно СКС категории 6, можно ли нам надеяться на то, что новые решения расширенной категории 6 (Augmented Category 6 — 6А) оправдают наши надежды? Что нужно сделать, чтобы укрепить нашу уверенность в том, что, использовав СКС категории 6А, мы не окажемся обманутыми? И какой аргумент будет решающим в пользу перехода на эту категорию?

Сегодняшние кабели категории 6 не обладают электрическими характеристиками, которые обеспечивали бы должную работу сети 10GBase-T. К сожалению, к заметной деградации пропускной способности кабельной системы могут приводить использование комбинации кабелей различного типа и стягивание их хомутами. Основной причиной такой деградации являются перекрестные наводки — результат влияния электромагнитной энергии на соседние витые пары, что приводит к искажению и ослаблению передаваемого по ним сигнала.

...

Термин “межкабельные наводки” (alien crosstalk) используется тогда, когда вредный сигнал поступает извне защитной оболочки кабеля. И когда сигналы 10GBase-T передаются по группе связанных между собой или пролегающих в одном кабелепроводе кабелей категории 6, основную проблему представляют наводки от пар соседних кабелей. Для снижения этих наводок зазор между передающими парами кабелей должен быть больше, чем тот, который обеспечивает защитная оболочка существующих кабелей категории 6, поэтому нормально работать на скоростях передачи 10GBase-T эти кабели не будут. Проблему можно решить, лишь изменив саму конструкцию кабеля и, в частности, его защитной оболочки.

Поскольку при разработке конструкции кабеля категории 6 подавление межкабельных наводок не принималось во внимание, то он не сильно препятствует излучению сигнала в окружающее пространство, и, следовательно, нельзя не учитывать негативное воздействие элементов категории 6 на соседние кабели кабельной связки или кабелепровода. По этой причине использование кабелей категории 6 в одном кабельном канале с кабелями категории 6А (для передачи данных 10GBase-T) может приводить к деградации эффективной пропускной способности последних."

учитывая что коммутатор 24х1Gb сейчас можно купить за <$200 (например http://www.dlink.ru/products/prodview.php?type=13&id=434# как утверждает производитель пропускная способность 48Gb/s), 10Gb уже не за горами, посему коблы могут стать проблемой, что думаете?

filin
()

ну и где пингвин, я вас спрашиваю?

filin
()

LTO Ultrium 2

потестил свежекупленный Tandberg LTO-2 HH (420LTO)  	 

http://www.tandbergdata.com/index.php?option=com_content&task=view&id=173&sid=1
&Itemid=245&pdbl=1&a=8

зависимость средней скорости записи от размера блока (в тестах писал
три разных авишки по 700 мегабайт размером):

bs   rate

64M  11.3 MB/s
64M  11.8 MB/s
64M  12.4 MB/s

32M  14.6 MB/s
32M  14.5 MB/s
32M  15.5 MB/s

16M  16.3 MB/s
16M  15.5 MB/s
16M  14.5 MB/s

8M   17.3 MB/s
8M   14.3 MB/s
8M   13.2 MB/s

4M   17.0 MB/s
4M   19.6 MB/s
4M   19.7 MB/s

2M   16.9 MB/s
2M   19.2 MB/s
2M   19.5 MB/s

1M   15.6 MB/s
1M   16.0 MB/s
1M   19.2 MB/s

512K 18.8 MB/s
512K 19.6 MB/s
512K 19.7 MB/s

256K 16.9 MB/s
256K 19.3 MB/s
256K 19.5 MB/s

128K 16.8 MB/s
128K 14.5 MB/s
128K 17.6 MB/s

64K  18.7 MB/s
64K  17.5 MB/s
64K  17.6 MB/s

32K  16.6 MB/s
32K  19.6 MB/s
32K  15.7 MB/s

16K  15.7 MB/s
16K  17.2 MB/s
16K  19.8 MB/s

8K   18.9 MB/s
8K   17.5 MB/s
8K   19.4 MB/s

4K   14.5 MB/s
4K   13.8 MB/s
4K   14.1 MB/s

2K   10.1 MB/s
2K   10.7 MB/s
2K   10.6 MB/s

1K   6.9 MB/s
1K   6.6 MB/s
1K   6.7 MB/s

(default)
512  3.8 MB/s
512  3.8 MB/s
512  3.8 MB/s

с компрессией как-то странно, авишки пишутся с компрессией с максимальной наблюдаемой в тестах скоростью (около 19 MB/s), а без компрессии чуть-чуть побыстрее, текстовые файлы пишутся без компрессии с той же максимальной скоростью в тестах, а с компрессией максисмум 25.5 MB/s, никаких 48 MB/s (декларируемое производителем удвоение скорости при сжатии) и рядом не лежало (использовал текстовый файл размером полгига -- tar дерева сорсов, ужимается gzip'ом в 2.5 раза)

компрессия вкл/выкл:

mt -f /dev/nst0 compression 1
mt -f /dev/nst0 compression 0
filin
()

помощь забывающим про команду nice

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


> cat > /usr/sbin/renice.sh
#!/bin/bash
# renice user cpu-burning processes, uid=2005 - special user

ps ar -o uid=,bsdtime=,nice=,pid= |awk '{ t=strtonum($2); if ( $1 >= 500 && $1 != 2005 ) if ( t >= 15 && $3 < 19 ) system("renice 19 "$4); else if ( t >= 5 && $3 < 15 ) system("renice 15 "$4) }'
^D

добавляем строку в /etc/crontab:
...
* * * * * root /usr/sbin/renice.sh

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

filin
()

«Они не такие, как мы»

думаю немалому числу "йа пингвинко!" будет интересно прочитать и провести параллель с собой ;)

http://info.sibnet.ru/?id=26768

стырено отсюда: http://krevedko.academ.org/

filin
()

перевёл словцо у себя в урле, долго ржал...

млин, надо иногда всё-таки переводить значение слов, которые используешь :))))))

http://lingvo.yandex.ru/en?text=teaser

teaser
['ti:zə]

сущ.

1)

а) задира; любитель подразнить, задираться; действующий на нервы человек

б) жеребец или баран (используемые только для возбуждения женских особей, но ни в коей мере не для осеменения)

Syn:

stallion, ram 1.

в) разновидность чайки, настойчиво отнимающей пищу у других чаек; тж. gull-teaser

2) текст. ворсильщик

3) разг.

а) трудная задачка, головоломка

eye teaser — (графическая) головоломка

б) спорт., уст. трудный мяч

4) что-л. дразнящее, привлекательное или соблазнительное

а) разг. привлекательная и недоступная женщина (тж. cock-teaser)

Syn:

chick I 1., babe

б) стриптиз; стриптизный трюк; стрип-танцорша

Syn:

strip-tease

в) амер. привлекательное рекламное объявление

Syn:

advertisement

г) амер. блесна или чаще наживка

д) "тещин язык" (игрушка)

Syn:

bait I 1.

5) короткий занавес на просцениуме

filin
()

сcылка на характеристики DLT/SDLT/LTO(Ultrium) магнитофонов в одном месте...

по заданию начальника слепил табличку по некоторым характеристикам ленточных магнитофонов во внешнем исполнении (тк старенький DLT на 20GB уже не потянет текущие требования), выложил и опубликовал на гугле, можно поглазеть по сцылке:

http://spreadsheets.google.com/pub?key=pcY7axEo1Kg1xfoL8E_-dNg

цены понятно со временем уплывут, но характеристики останутся (кстати характеристики не на 100% достоверны - кое-какие скорости по аналогии заполнил, не всё удалось отыскать, да и продавцы не всегда дают верные данные)

filin
()

Даёшь библиотеку на ЛОРе!

товарищ президент сказал, что надо создавать национальную библиотеку (имени первого президента России), предлагаю организовать на ЛОРе её филиал и делиться электронными книжками. Доступ можно ограничить для местных айпишников с логинами. Готов внести посильный вклад.

filin
()

планировщик ввода-вывода на с/с++

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

* есть фифо в виде темплейта, параметрами коей являются тип хранимых данных, индексный тип (для счётчиков/размеров), операция смещения (functor), data storage, block states. Фифо непростая, иначе бы не стал её делать, хранит данные блоками произвольной длины (кратной типу), причём каждый блок может увеличиваться в несколько приёмов, для чего и нужна операция смещения, чтобы сместить блок, если он вылез за верхнюю границу буфера (буфер тоже разный мб - сплошной кусок или порезанный на равные куски). Выделение/освобождение блоков - операция конкурентная и может выполняться в разных тредах/процессах одновременно, по сути получился template-конструктор, подставляя разные параметры в который получается фифо для разных типов данных/хранилищ данных/синхро-примитивов. Реализовал для тредов (pthreads/boost::thread), UNIX processes, зашла речь об distributed fifo, вот тут и возник сабж.

* описанние фифо помещено для понимания, что хотелось бы написать интерфейс для "слейва ввода-вывода" подобный вышеописанному темплейту, параметрами которого дб коротенькие (как и в случае фифо) классы (тем не менее содержащие весь необходимый функционал), реализующие конкретный специфичный случай, например: асинхронный ввод-вывод в том же треде (когда слейв как dedicated поток управления отсутствует), или в slave треде/процессе, балансировка нагрузки если несколько разных фифо обслуживаются одним IO slave, фифо дублируемое на mirror hosts и тд. Изучаю разный софт по теме: http://www.monkey.org/~provos/libevent/, http://liboop.ofb.net/. Конкретные реализации main loop'ов мне мало интересны, хотелось бы иметь легко адаптируемый под конкретную задачу подход.

хотелось бы услышать какие-нибудь (желательно ценные :) ) идеи по такому интерфейсу

ЗЫ повторю: замечания вроде "вот ссылка на проект N c планировщиком M" мне не интересны, интересны идеи (или ссылки на них) интерфейса, в который, например, легко интегрируется любой планировщик или интерфейс ввода-вывода.

ЗЗЫ идеи "жирных" интерфейсов (под каждый конкретный случай своя реализация) идут лесом, нужен конструктор.

filin
()

The 2006 Linux File Systems: день второй и третий

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

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

День Второй: Идеи
-----------------
Второй день начался с поломки лампы проектора что было здорово для нас поскольку препятствовало использованию очень скушного slideware (прим перев - видимо имеется ввиду софт для презентаций). Мы приписали часть удивительной продуктивности конфы отсутствию проектора и факту, что большинство из нас не имели никакой сетевой связи из комнаты конференций, что заставило нас уделить внимание происходящему а не чтению почты.

Второй день был посвящён обсуждению интересных идей в архитектуре ФС. Нам повезло с присутствием экспертов в главных ФС (ext2/3, reiserfs, XFS, JFS) также как экспертов в других ФС (OCFS2, Lustre, ZFS) и конечно символический представитель подсистемы ввода-вывода (SCSI).

Для начала краткий обзор наших целей. Нам нужна ФС которая легко обнаруживает и исправляет дисковую порчу без перевода ФС в офф-лайн на часы или дни. Мы особенно не хотим терять целую ФС или её большие куски кода портится малая часть диска. Восстановление ФС должно занимать много меньше времени чем откат из бекапа; фактически мы должны проектировать размещение ФС с производительностью fsck в уме, а не просто производительностью ФС. Эти цели могут быть выражены как "repair-driven file system design" - проектирование нашей ФС для быстрого и лёгкого востановления с самого начала, а не допиливание впоследствии.

Мы также хотим избежать двойной записи, перевыделения блоков на каждую запись и слишком сложных реализаций, которые трудны для понимания и способствуют багам (прим перев - "keep it simple stupid" - одна из основополагающих идей UNIX является одним из главных условий создания новой ФС :) ). Мы хотим эффективно хранить маленькие файлы и с другой стороны желаем пожертвовать дисковым пространством в угоду надёжности. Мы можем воспользоваться кешируемыми дисковыми треками и сфокусироваться на уменьшении числа поисков вместо расположения данных точно последовательно.

filin
()

Подвисания со SCSI, P-IV(HT), linux-2.4.37, linux-2.6.9

Есть файл-сервер на асусовской материнке, четвёртым пнём с гипертредингом и скази-контроллером, на котором железный рейд. Две сгоревших гигабитных сетевухи (марвел, одна была встроенная) были замененны на гигабитные тренднетовские. Под большой сетевой нагрузкой система виснет, повторить сложно, от чего зависит непонятно. Смена системы - slc3(rhel3, ядро 2.4.37 не smp) на slc4(rhel4, ядро 2.6.9 не smp) - не помогла. Мемтест проходит без проблем. Есть ещё одна машина на той же материнке с пнём без гипертрединга и без скази-контроллера, никаких проблем. Интересно что скази-контроллер негативно влияет на скорость ФС на идешном диске, последний работает на операциях с ФС в полтора раза медленнее значения, которое даёт hdparm на тесте.

Есть ещё машина на 2xP-III со скази-контроллером, никаких проблем не было за несколько лет.

У кого-нибудь похожие проблемы были?

filin
()

HA & cluster-related тема

Есть предложение выделить новую тему в новостях и форуме: cluster & high availability (туда же и grid). Если даже игрушки выделяются в отдельный раздел, то почему эта серьёзная и самостоятельная тема не выделяется? Конечно она перекрывается и с железом и с администрированием, но эта тема всё же весьма специфическая и часто вопросы по ней несмотря на схожесть вопросов по железу и администрированию имеют несколько другие ответы, главным образом вследствие учёта архитектуры кластеров. Возможно далеко не всем посетителям ЛОРа она будет интересна, но не все уже существующие темы всем интересны. Возможно не будет много новостей, но будут новые люди, которым эти новости интересны и у которых будет чему поучиться остальным посетителям, потому что по этой весьма горячей теме активно проводятся исследования тут же уходящие в прикладную область.

Если тема появится, то обещаю регулярно добавлять новости по ней и поддерживать разговоры :)

filin
()

Пробовал ли кто-нибудь DRDB?

Если кто пробовал/работал сам с DRDB (http://www.drbd.org), поделитесь плиз опытом. Как оно живёт при перегрузке сети/ЦПУ? есть ли проблемы с потерей данных при сбоях primary/secondary? Не пробовали ли организовать локальные диски рабочих нодов кластера в цепочку primary-secondary (каждая нода содержит свой primary и secondary одного соседа)?

filin
()

Compex RL1000T 32-bit 10/100/1000Mbps - дерьмо!

Народ, не покупайте subj, у мну из десяти карточек сломалась одна, плюс ещё две строенные на мамках, все на том же жуке (Marvell) меньше, чем за год работы, причём сломались под P4, на атлонах пока живут, все мамки ASUS.
Пока меняю её на TrendNet TEG-PCITXR (10/100/1000Mbps, PCI), надеюсь проживут дольше (у них гарантия 5 лет, а не год как у comdex)

filin
()

настраиваем удалённый запуск утилит

В случаях, когда пользователи не имеют возможности залогинится на 
batch nodes в кластере под управлением одной из batch submission 
systems провести полноценную отладку и мониторинг становится 
невозможным, тк встроенные "куцие" возможности батчёвых систем по 
мониторингу заданий (обычно утилитой qstat) не дают полной информации 
о системе и процессах на нодах. Администратор системы для удобства 
может настроить ssh-аутентификацию по ключу без пароля, чем и можно 
воспользоваться для удалённого запуска утилит. Ниже описывается вся 
процедура:

* генерим RSA ключ для ssh-аутентификацию по ключу:

bash> ssh-keygen -t rsa # generate RSA keys for SSH protocol version 2
<Enter># enter empty passphrase (no passphrase)
bash> ssh-keygen -t rsa # generate RSA keys for SSH protocol version 2
... # enter empty passphrase (no passphrase)
bash> PUB_KEY=`cat $HOME/.ssh/id_rsa.pub`
bash> ssh sgeadmin@bn001 echo $PUB_KEY '>> $HOME/.ssh/authorized_keys2'
sgeadmin@bn001's password: # enter remote host password
bash> ssh sgeadmin@bn001
remotehost:bash> # voila! login without password

если в настройках удалённого ssh-сервера была разрешена аутентификация
 по ключу, мы сможем залогиниться без ввода пароля, если нет, 
попробуйте запустить клиента в verbose mode и заодно посмотреть лог на
 удалённом хосте, ssh-сервер пишет в логах какие методы аутентификации
 были опробованы. Аналогично копируем public-key на остальные ноды.


* создаём скрипт "туннелирующий" нужную утилиту и её вывод и запускаемый через sudo:

bash> cat > /home/sgeadmin/bin/cluster_utility_starter.sh
#!/bin/bash

function usage() {
    echo "Usage: PROGRAM [OPTION]... [HOST]
Run a program from list:
  ${util_nm[*]}
on HOST from list:
  $batch_host_list
Exit program by SIGINT/^C if a programm is looped.

 -h       print help and exit
 -l       List available hosts and exit"
}

# cluster work nodes
readonly batch_host_list="@bn001 @bn002 @bn003" # batch nodes

# util list for remote execution
util_nm[0]="Qtop"
util_cm[0]="/usr/bin/top b"

util_nm[1]="Qps"
util_cm[1]="/bin/ps"

util_nm[2]="Qfree"
util_cm[2]="/usr/bin/free"

util_nm[3]="Qvmstat"
util_cm[3]="/usr/bin/vmstat"

util_nm[4]="Qstat"
util_cm[4]="/usr/bin/stat"

util_nm[5]="Qls"
util_cm[5]="/bin/ls"

util_nm[6]="Qcat"
util_cm[6]="/bin/cat"

util_nm[7]="Qpstree"
util_cm[7]="/usr/bin/pstree"


if test $# -le 1
then usage $0
     exit 1
fi

i=0
cmd_name="$1"
shift
util_name=""

while :; do
    if test $i -ge ${#util_nm[*]}; then
	echo >&2 "$cmd_name: no such command"
	usage
	exit 1
    fi
    if test "${util_nm[$i]}" == "$cmd_name"; then
	util_name="${util_cm[$i]}"
	break
    fi
    let $((++i))
done

host_name=""
options=""

while test $# -gt 0
  do case "$1" in
        -h) echo -e "Copyright (C) 2005 Alexey Filin\n"
            usage
            exit ;;
        -l) echo -n "Available batch hosts: "
            echo $batch_host_list
            exit ;;
        @*) if test -n "$host_name"; then
		usage
		exit
           fi
	   for i in $batch_host_list; do
		if test "$i" == "$1"; then
		    host_name="$1"
		    break
		fi
	   done
           if test -z "$host_name"; then
		echo "$1: no such host name"
		exit
	   fi
           shift ;;
        *) options="$options $1"
	   shift ;;
        esac
     done
if test -n $host_name; then
    #echo ssh -x "sgeadmin$host_name" "sudo -u $SUDO_USER $util_name $options"
    ssh -x "sgeadmin$host_name" "sudo -u $SUDO_USER $util_name $options"
else
    usage
    exit
fi
exit
^D
bash> chmod +x /home/sgeadmin/bin/cluster_utility_starter.sh

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

«обучение» на физфаке

господа, занимаюсь тут "образованием" физфаков на тему линуха, униха, да и программизма тоже (не в качестве часов учебной программы, а по соб желанию, сидючи за компом рядом со студентами). В общем народ пишет диплом по обработке, а в работе под унихом, да и в программизме полный ноль. Я знаю старшекласников, которые уже в школе с линухом "на ты". Что за фигня творится в МГУ? Я заканчивал физтех в 90-х и работать в унихе (на альфах) приходилось учиться самому, но нас хотя бы в сях натаскивали в вузе, а тут народ почти ноль. Кто имеет возможность, поставьте на вид разработчикам учебной программы физфаков, пусть добавят некое число часов в учебную программу для обучения программизму и работе под унихом для приобретения базиса, а то стыд и срам лучшему универу страны. :(

filin
()

RSS подписка на новые темы