Как стать автором
Обновить
29
0
SB AWE64 Gold Audio Adapter @AWE64

Пользователь

Отправить сообщение

Причуды абстракций

Время на прочтение10 мин
Количество просмотров33K
image

За годы преподавания и коммерческой разработки я повстречал много студентов и разработчиков, которые не до конца понимают смысл слова абстракция. Из многочисленных попыток разъяснить смысл этого термина получилась настоящая статья. Что Вы найдете под катом:
  • Определение понятия абстракции и объяснение откуда оно взялось в ООП.
  • Объяснение на простых примерах, что такое барьер абстракции, побочный эффект абстракции.
  • Как получается хардкод.

Читать дальше →
Всего голосов 35: ↑27 и ↓8+19
Комментарии26

Как написать автоматический тест на алгоритмическую сложность?

Время на прочтение4 мин
Количество просмотров9.8K
Изначально задача возникла больше из академического интереса, чем из практических соображений. После того, как я узнал о Mock-объектах, мне стало интересно, а существует ли такая ситуация, для которой можно написать тест с помощью Mock-объекта, но нельзя с помощью тестов состояния. Буквально первая мысль, которая пришла в голову, была про вычислительную сложность алгоритмов. Можно ли написать автоматический тест, проверяющий, что в конкретной ситуации используется алгоритм определенной сложности?

Читать дальше →
Всего голосов 27: ↑24 и ↓3+21
Комментарии25

Advanced Locationbar для Firefox

Время на прочтение2 мин
Количество просмотров6.8K
Firefox славится своей расширяемостью не просто так, ведь он позволяет авторам расширений изменять любую часть своего интерфейса для реализации самых смелых идей. Но у подобной гибкости есть и серьёзный недостаток — одно неосторожное движение может легко сломать браузер.

Locationbar² отлично демонстрирует это. Данное расширение добавляет в стандартную адресную строку возможность простым кликом по нужному сегменту URL подняться на несколько уровней вверх по структуре сайта, причём это «волшебное» поведение активируется только в том случае, если вести курсором мыши слева-направо от иконки типа соединения (можно рассматривать это как жест) или при нажатии Ctrl/Alt/Shift. Однако, кроме этого полезного изменения, как оказалось, Locationbar² ломает работоспособность доменов IDN — они отображаются в закодированном виде, а субдомен и вовсе целиком отбрасывается. Расширение не дорабатывается с 2011 года, со временем в нём возникли небольшие конфликты с новыми версиями Firefox, а автор расширения не выходит на связь.

Пришло время сделать форк: встречайте Advanced Locationbar!
Читать дальше →
Всего голосов 32: ↑27 и ↓5+22
Комментарии10

История операционных систем Apple. Часть 2. Взлет Macintosh

Время на прочтение11 мин
Количество просмотров136K
Продолжаем знакомиться с историей операционных систем Apple. Сегодня Lisa, Macintosh вплоть до System 7 и ранние попытки использовать Unix.
Первая часть: habrahabr.ru/post/194696

Приход графики


image
Apple представил компьютер Lisa в январе 1983 года, за год до Макинтоша. Стартовая цена составляла $9995. Сердцем новинки был 32-битный процессор Motorola 68000. При создании разработчики явно вдохновлялись Xerox PARC, см. habrahabr.ru/post/194696. Этому способствовала договоренность между Xerox и Apple — акции в обмен на технологию. Следует заметить, что проект Lisa начали еще до причащения к PARC. В целом непонятно, какие именно идеи позаимствовали у Xerox, а какие изобрели своими силами.

Lisa OS

Lisa Office System (OS), операционная система этого компьютера, имела полностью графический интерфейс. Был файловый менеджер с иконками, при клике запускалось соответствующее приложение. В комплекте также был табличный процессор LisaCalc, программа для рисования диаграмм LisaGraph, продвинутый редактор списков LisaList, менеджер проектов LisaProject, рисовалка LisaDraw, эмулятор ANSI терминала LisaTerminal и т. д. Кроме того, на Lisa поддерживалась работа SCO Xenix.
Читать дальше →
Всего голосов 152: ↑141 и ↓11+130
Комментарии27

История операционных систем Apple. Часть 1. Дографическая эпоха

Время на прочтение8 мин
Количество просмотров173K
Начинаю перевод весьма основательного труда Амита Сингха по истории операционных систем Apple. Часть картинок добавлена при переводе для наглядности. Планирую 3 или 4 части, смотря как будет получаться по объему. В этой части посмотрим, что было до Macintosh и Apple Lisa.

Первые байты кода


В конце 1975 года Стив Возняк завершил прототип компьютера, который вскоре станет известен как Apple I. Возняк в то время работал в НР. Но этот проект был им неинтересен, так что он попросил дать им вольную. 1 апреля 1976 года Стив Джобс, Стив Возняк и инженер из Atari Рональд Уэйн основали Apple. Первым продуктом под этим именем был компьютер Возняка.

Apple I

Apple I был основан на 8-битном процессоре MOS Technology 6502, с частотой меньше 1 МГц. Это был упрощенный вариант более дорогого чипа Motorola 6800. Примерно аналогичным по параметрам был и Intel 8080, но он при этом был дороже. У компьютера был встроенный выход на телевизор, разъемы для 8 Кб памяти, интерфейсы клавиатуры и кассетного магнитофона. Корпус, БП, клавиатура и телевизор в комплект не входили, покупатель должен был раздобыть их самостоятельно.
image
Читать дальше →
Всего голосов 109: ↑103 и ↓6+97
Комментарии26

Автоматическая нумерация сборки на примере haxe

Время на прочтение2 мин
Количество просмотров1.5K

Введение


В настоящее время, я работаю над проектом, одним из основных инструментов, в котором является язык haxe. В качестве среды разработки для haxe, в данном проекте, я использую FlashDevelop. В течение дня, проект собирается множество раз, и надо точно знать, какая сборка, сейчас, выложена в общий доступ. Для этого необходимо нумеровать сборки. Так как, ни в haxe, ни во FlashDevelop стандартного средства генерации номера сборки найдено не было, предлагаю для решения этой задачи, провернуть определённый трюк.
Читать дальше →
Всего голосов 6: ↑5 и ↓1+4
Комментарии2

Работа для программиста в США: 5 простых шагов

Время на прочтение5 мин
Количество просмотров292K
image Статья про то, что делать тем, кто хочет переехать работать в США. Я предполагаю инженерные позиции, на которые проще всего получить визы, но, возможно, статья окажется полезна и другим специалистам.

Мой опыт несколько отличается от нижеописанного (я попала на работу в США после стажировки). Но за 4 года в США пообщалась с людьми, которые попали сюда разными путями и набрала кое-какой опыт. Так что если бы я очень хотела найти работу в США сегодня, то я бы действовала примерно так, как описано ниже.

Заранее извиняюсь, если мой тон кому-то покажется наставническим — я не имею амбиций учить других жизни, просто иногда у меня получается такой стиль.
Читать дальше →
Всего голосов 166: ↑152 и ↓14+138
Комментарии138

0 dB Бесшумный компьютер. Версия 1.0

Время на прочтение27 мин
Количество просмотров331K
Не кажется странным, что навязчивое гудение компьютера всеми воспринимается «как норма»? Можно вообразить весь ужас происшествия, если внезапно эти же звуки начнёт издавать любимый телевизор. Расценивать такое событие можно будет только как серьёзную поломку. Так почему компьютер не сделать, подобно телевизору, таким же уютно тихим?!

Итак, настала пора отступить от стереотипов и поменять хорошее на лучшее!

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

Цель статьи — поделиться исследовательским и практическим опытом в компоновке компьютера, который при работе не издавал бы ни единого звука.
Читать дальше →
Всего голосов 170: ↑149 и ↓21+128
Комментарии269

OS/2 четверть века спустя: почему IBM проиграла, а Microsoft выиграла

Время на прочтение20 мин
Количество просмотров217K
Двадцать пять лет назад IBM представила генеральный план восстановления контроля над рынком PC. В ноябре 1987 года в магазины отправились первые дискеты с OS/2 версии 1.0. Microsoft разрабатывала ее вместе с IBM и в случае успешной реализации этих планов мир был бы совсем иным. И мир уже начал меняться.

Сейчас о OS/2 обычно вспоминают только в связи с той ролью, которую она сыграла в промышленной войне, окончившейся триумфальной победой Microsoft. На момент выпуска OS/2 в Microsoft работало 1800 человек, меньше, чем сейчас работает в ливерпульском телемагазине QVC. Microsoft даже не была крупнейшим производителем программ для PC. Но всего через несколько лет компания стала не только крупнейшим игроком отрасли, но и одной самых дорогих компаний в мире; один лишь слух о выходе Microsoft в новую нишу вызывал панику у существующих игроков.

Согласно традициям нашего издания я вернул старые программы к жизни и оценил OS/2 с современной точки зрения. Но гораздо интереснее вновь задать иной вопрос: могла ли IBM победить? Если именно OS/2 стала причиной поражения Синего Гиганта, то смогли бы они остановить Microsoft с помощью более хитрых планов? Давайте вернемся в те времена, когда мир еще не знал слов «платформа» и «экосистема» и вспомним, как выглядела отрасль информационных технологий в середине 1980-х.


Читать дальше →
Всего голосов 160: ↑157 и ↓3+154
Комментарии73

Какую роль играла MS-DOS в составе Windows 95?

Время на прочтение5 мин
Количество просмотров59K
MS-DOS в составе Windows 95 использовалась для двух целей:
  • Она служила загрузчиком.
  • Она выступала в качестве слоя совместимости с 16-битными драйверами.
Когда Windows 95 стартовала, сначала загружалась специальная версия MS-DOS, именно она обрабатывала ваш файл CONFIG.SYS, запускала COMMAND.COM, который выполнял ваш AUTOEXEC.BAT и в конце концов выполнял WIN.COM, который в свою очередь начинал процесс загрузки 32-битного менеджера виртуальных машин VMM.

Эта специальная версия MS-DOS была полностью функциональна в той мере, в которой слова «полностью функциональна» вообще применимы к MS-DOS. По-другому и быть не могло, при выходе в режим эмуляции MS-DOS только эта версия и оставалась работать.

Программа WIN.COM начинала загрузку того, что большинство людей называют собственно «Windows». Посредством копии MS-DOS она загружала менеджер виртуальных машин, считывала файл SYSTEM.INI, загружала драйверы виртуальных устройств, затем выключала EMM386 (если таковой был) и переключалась в защищённый режим. «Настоящая Windows» с точки зрения большинства людей — именно защищённый режим.

В защищённом режиме драйверы виртуальных устройств творили свою магию. В числе их действий было вытаскивание всего состояния MS-DOS, перевод его в состояние 32-битной файловой подсистемы и отключение MS-DOS. Все дальнейшие файловые операции направлялись в 32-битную файловую подсистему. Когда программа обращалась к int 21h, ответственной за обработку оказывалась 32-битная файловая подсистема.

Здесь вступает в игру вторая роль MS-DOS. Видите ли, программы и драйверы MS-DOS любили встраиваться в глубины операционной системы. Они могли заменять обработчик прерывания 21h, они могли патчить код системы, они могли заменять низкоуровневые дисковые обработчики int 25h и int 26h. Они могли также творить умопомрачительные вещи с прерываниями BIOS типа int 13h, ответственного за работу с дисками.

Читать дальше →
Всего голосов 113: ↑104 и ↓9+95
Комментарии21

Почему Windows 95 подвисала при форматировании дискеты?

Время на прочтение4 мин
Количество просмотров101K
Рэймонд Чен отвечает на известную шутку:
— Папа, покажи, какая винда многозадачная!
— Сейчас, сынок, только дискету доформатирую...

Кто же целыми днями форматирует дискеты? Оказывается, многие гики только этим и заняты. (Вообще-то, можно покупать дискеты уже отформатированными, только тссс!) Но почему Windows 95 подвисала при форматировании дискеты?

Всё дело в совместимости с MS-DOS.

Как мы видели немного раньше, MS-DOS в Windows 95 выступала как слой для старых 16-битных драйверов. Несмотря на то, что в итоге операции ввода-вывода обрабатывались 32-битной файловой подсистемой, все они проходили через 16-битный код, чтобы 16-битные драйверы, TSR и подобные обработчики видели «нормальные 16-битные операции» и работали в привычном им окружении.

В 16-битном мире форматированием занималось программное прерывание 13h, и многие программы использовали этот факт, перехватывая прерывание так, чтобы получать управление при форматировании дискеты. Так делали некоторые TSR, программы для бэкапов (программы для бэкапов, разработанные для Windows 3.0, включали в себя 32-битные драйверы под Windows 3.x, называемые VxD, для отслеживания операций с дискетами). Но это объясняет не всё. В конце концов, Windows 95 прогоняла весь дисковый ввод-вывод, а не только форматирование дискет, через 16-битный код. Почему же форматирование дискет так существенно влияло на систему?

Читать дальше →
Всего голосов 116: ↑108 и ↓8+100
Комментарии92

Что делать, если «кина не будет» или как обойти блокировку сайта провайдером

Время на прочтение6 мин
Количество просмотров1.5M
Настал мой законный выходной и, выбрав время для просмотра фильма (люблю я старую классику), я занялся его поиском. Зайшел на один из привычных для меня сайтов, и наткнулся на такую вот блокировку данного ресурса.

блокировка

«Вот те раз!» — подумал я. Ни в одном реестре запрещенных сайтов данный ресурс не присутствовал и, с чего билайн его заблокировал — непонятно. Естественно после таких вот «заявочек» в голову полезли страшные мысли: «а что если завтра любимого „кина“ не будет!». Данные мысли тут же подвигли меня начать искать способы борьбы с данной ситуацией, и написать, для тех кому будет интересно, маленький обзор нескольких решений по обходу блокировки сайтов. (под катом скрины)
Читать дальше →
Всего голосов 120: ↑96 и ↓24+72
Комментарии87

Old-Hard коммуникации, или “передача файлов через COM и LPT-порты”

Время на прочтение4 мин
Количество просмотров37K
Давненько не кидали на старые компьютеры данные через дискеты, COM или LPT порты? А вот мне недавно пришлось этим заняться, и подробности этого опыта – под катом. Там же несколько графиков, табличка сравнения и пара десятков фото под вторым катом.
Читать дальше →
Всего голосов 21: ↑18 и ↓3+15
Комментарии65

Оптимизация производительности в C++ приложениях (Windows)

Время на прочтение2 мин
Количество просмотров4.7K
Все думаю уже знают, но все же. Иногда нужно оценить, сколько процессорного времени занимает выполнение тех или иных функций программы(преимущественно я говорю сейчас о C++). Ну и ниже привожу свой способ, простой, но вполне меня устраивает.

Можно проинструментировать код различными специальными инструментами(не пробовал, вроде DevPartner один из них, думаю их немало сейчас).
Функции привязанные к времени не очень то хорошо работают, в WinAPI или в каком либо другом API я их не нашел.

Две функции которые мне весьма пришлись по вкусу:

QueryPerformanceFrequency
QueryPerformanceCounter

Вообще, тут можно заканчивать чтение статьи, чуть погуглить и хватит:)

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

Собственно, QueryPerformanceFrequency возвращает количество элементарных операций которые может выполнить ваш процессор за одну секунду.
QueryPerformanceCounter возвращает количество элементарных операций, которое он уже выполнил с момента запуска компьютера.

«GetTickCount» — вроде как альтернатива, но ее точности мне как то не хватило, либо меня не устроило ее поведение, которое не слишком то внятно описано в MSDN, скорее ее можно использовать только для UI-расчетов.

Вычислить, сколько cекунд занимает вызов какой либо функции (метода класса) DoWork() с использованием QueryPerformanceFrequency/QueryPerformanceCounter собственно весьма просто:

LARGE_INTEGER performanceCounter;
::QueryPerformanceFrequency(&performanceCounter);

LARGE_INTEGER performanceCounterStart;
::QueryPerformanceCounter(&performanceCounterStart);

DoWork();

LARGE_INTEGER performanceCounterEnd;
::QueryPerformanceFrequency(&performanceCounterEnd);

double timeElapsed = (double*)(performanceCounterEnd) - (double*)(performanceCounterEnd)



Грешный код конечно, я лишь показал идею, может вдруг кому и пригодится.
Вообще, QueryPerformanceCounter, это «ReaD Time Stamp Counter(RDTSC)» инструкция ассемблера(вру о5, название инструкции #0f, #31, хотя постесняюсь сказать, на каких процессорах она работает, за что прошу меня простить:)

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

CalculateSinus (cobst Double &x)
{
    return sin(x);
}

static const double x = PI / 4;
double y = CalculateSinus(x)


преобразуют так, что вообще ее не нужно будет считать во время выполнения, и y=sin(PI/4) будет просчитан на стадии компиляии.
Всего голосов 12: ↑5 и ↓7-2
Комментарии9

Опыт общения с CyanogenMod 10.1

Время на прочтение5 мин
Количество просмотров167K

Доброго дня, Хабровчане.
Неделю назад, я, как и многие любители операционной системы Android, прилип к экрану монитора с любимым нексусом в руке в ожидании выставки Google I/O 2013. На ней ожидалась презентация новой версии любимой операционной системы 4.3, а то, чем черт не шутит, и 5.0. Но надежды и мечтания миллионов разбились об эго амбиций поискового гиганта, который приказал ждать до 10 июня. Что делать, сели и стали ждать.
Но моей душе неутомимого экспериментатора не сидится спокойно без обновлений, и целый месяц ожиданий — это пытка, ведь копаться негде, все изучено и неинтересно. Что же делать? И вот тогда пришла в голову безумная идея: а не поставить ли мне CyanogenMod? А поставить — решил я.
И тут все заверте...
Всего голосов 49: ↑29 и ↓20+9
Комментарии41

Как я нанимаю программистов

Время на прочтение2 мин
Количество просмотров24K
Захожу на гитхаб, ищу репозитории проектов, сходные по профилю с теми, для которых мы ищем программистов.
Просматриваю issues, выбираю подходящие — такие, для которых не потребуется слишком много времени (идеально — вечер) и для которых потребуется разобраться в самом проекте.

У каждого соискателя я спрашиваю ссылку на профиль на гитхабе (или других сервисах) или еще какие способы посмотреть на то, что соискатель делал. Если способа показать свой код у соискателя нет (или, например, на гитхабе только один репозиторий и тот с конфигами) — я кидаю ему ссылку на одну из issues и прошу отправить мне ссылку на pull request по завершении.

По pull request'у сразу видно как соискатель умеет разбираться в чужом коде и как он пишет код. Я не даю классических тестовых заданий — это убийство времени в никуда, этот код будет выброшен, он не поможет никому решить какую-либо задачу.
Читать дальше →
Всего голосов 312: ↑254 и ↓58+196
Комментарии125

Что нужно знать о трудовых правах каждому работнику

Время на прочтение9 мин
Количество просмотров243K
После опубликования статьи «Борьба за свои права…» мне написало много айтишников, что, если честно, стало приятной неожиданностью. Но, помимо вдохновляющих слов поддержки и советов, хабраюзеры также делились своими похожими ситуациями, в которых нарушались их трудовые права. Ситуации самые разные: от неуплаты заработной платы до неоформления в штате фирмы. Но все они были схожи в одном: они случались и зачастую заканчивались плачевно из-за низкой юридической грамотности работников в вопросах трудовых прав. Вот лишь один пример такой ситуации:

Andrey: у меня была точно такая же ситуация с банкротством конторы, сейчас я уже вижу, где поступил неправильно. Нас так же кормили «завтраками», или, как мы их называли, «микроплатежами», когда срок переносится на неделю, потом ещё на неделю. В итоге сказали, что банкротят. Также предложили написать заявление на отпуск без содержания на 3 месяца. Это основное условие получения текущей зп. Только нам выплачивали не всю зп. Остаток должны были выплатить по договору с головной американской конторой. Какая у меня была ошибка:

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

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

image

Поэтому у нас родилась идея* на основе реальных историй трудовых конфликтов собрать советы и рекомендации, как вести себя, на что обращать внимание при ведении трудовой деятельности. Мы планируем сделать серию статей на тему трудовых прав. Первая статья посвящена вопросам устройства и увольнения с работы. В самом обзоре сказано много общеизвестных и очевидных вещей, но, как показывает практика, именно на таких «очевидных» вещах чаще всего и допускаются ошибки при решении трудовых вопросов. Мы надеемся, что эта статья поможет в будущем избежать возможных неприятностей на работе.
Читать дальше →
Всего голосов 98: ↑91 и ↓7+84
Комментарии112

Робот-пылесос Kärcher RC 3000: опыт эксплуатации

Время на прочтение33 мин
Количество просмотров731K
В своей жизни я встречал людей, которым нравится пылесосить. Да, именно так, сам процесс наведения чистоты доставляет удовольствие. Причина может быть разной — от демонстрации собственной нужности до мизофобии.

Однако среди широкого спектра придуманных человечеством мотивов для проведения ежедневной уборки жилища, я не смог найти свой. Лень неизменно одерживала верх как над рациональными доводами о необходимости пылесосить каждый день, так и над эмоциональными порывами, энергии которых хватало только на то, чтобы выругаться: "Почему опять никто не убрался!"

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

Прочного и надежного робота-уборщика, способного нормально функционировать в самых тяжелых условиях:



Мой выбор пал на RC 3000 от Karcher, впечатлениям от эксплуатации которого и посвящается данная статья.

Осторожно: под катом много фотографий и видеороликов
Всего голосов 317: ↑303 и ↓14+289
Комментарии330

Смысл и качество жизни программиста

Время на прочтение5 мин
Количество просмотров11K
Прочтение текста вынудит решать новые задачи. У Вас есть право на незнание. Не читайте далее если Вас сейчас все устраивает.
Цель статьи показать, что есть люди с особым мышлением и психикой, что эти свойства определяют специфичные задачи и только положительное решение задач позволяет быть в гармонии с обществом, психологическом здравии и ощущении счастья.
Если кратко – что надо делать программисту, чтобы быть здоровым и счастливым.
Читать дальше →
Всего голосов 53: ↑23 и ↓30-7
Комментарии35

Разоблачение 12 юридических заблуждений о программах для ЭВМ

Время на прочтение7 мин
Количество просмотров182K


Заблуждение / опасная привычка На самом деле … Наш совет прост:
1. Мы создали программу и автоматически стали ее авторами и правообладателями. Для охраны и продажи программы никаких документов оформлять не нужно, ведь она охраняется авторским правом — ©! Действительно: программа для ЭВМ охраняется авторским правом как литературное произведение (п.1 ст. 1259, ст. 1261 ГК РФ).

Но то, что для возникновения авторских прав не требуется регистрация или соблюдение каких-либо иных формальностей (п.4 ст. 1259 ГК РФ), ни в коем случае не освобождает:
− от соблюдения набора критериев, установленных законом;
− от необходимости документально доказать факт создания программы и свои права на них.

Неоформленный SOFT закон не охраняет.

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

Коротко говоря: нет документов = нет интеллектуальной собственности = нет нарушений прав = нет компенсации за нарушение прав.
Оформляйте много хороших и разных документов при создании программ для ЭВМ:
— договоры с авторами;
— договоры с подрядчиками;
— технические задания;
— протоколы совещаний и тестов;
— соглашения между соавторами;
— авторское свидетельство;
— сертификат признания интеллектуальной собственности;
— спецификация РИД;
— свидетельство о регистрации программы для ЭВМ (Роспатент).
Читать дальше →
Всего голосов 149: ↑119 и ↓30+89
Комментарии210

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность