it-history
August 7

Удивительный проект из далекого далекого прошлого, 2005й год!

Разбирая старые архивы, откопал нечто действительно древнее: один из моих первых проектов на Java, созданный аж 20 лет назад.

Так выглядела страница авторизации

Посреди сибирской тайги

Посреди сибирской тайги есть маленький город Ханты-Мансийск, столица Ханты-Мансийского автономного округа.

Чтобы вы примерно представляли где находится эта «сказочная пердь»:

Ну город и город, «медвежьи места», коих много в нашей необъятной стране. Только на 2005й год был один нюанс:

в этом маленьком городке оседали налоги с нефтедобывающих компаний всего ХМАО, например от компании Юганскнефтегаз.

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

Все было настолько хорошо, что Ханты-Мансийск регулярно называли «Сибирской Швейцарией», ну прикиньте сами — в каком еще городе России в 2005м году (кроме столицы) был собственный.. биатлонный центр (!):

Собственный ледовый дворец:

и картинная галерея:

И даже собственный кафедральный собор, причем не оставшийся с царских времен а построенный с нуля:

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

Тюмень — столица деревень

В этом блоге можно найти еще фото, снятые с разных точек как в самом Ханты-Мансийске, так и в окрестностях.

ЮНИИТ

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

Цитируя статью на CNEWS:

28 ноября 2002 года в Ханты-Мансийске в Югорском НИИ Информационных технологий состоялось открытие одного из самых мощных в России Суперкомпьютерного вычислительного центра. Производительность центра на сегодняшний день составляет более 130 млрд. операций в секунду. Ресурсы вычислительного центра позволят хранить десятки терабайт данных. Ресурсы вычислительного центра также позволят организовывать крупные веб-сайты и интернет-порталы, работающие с большими объемами данных и выдерживающие интенсивные обращения.

Собственно виновник торжества Sun Fire 15000:

Сохраню для истории примерную техническую спецификацию этого чуда, хотя какая точно «сборка» была тогда в юниитовском Sun 15k уже не помню:

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

Хорошие были времена, простые.

Паспорта социальных объектов

Это был первый проект, который мне тогда поручили вести в стенах института.

На тот момент, уже существовало некое «наколенное» приложение, разработанное на Microsoft Access, представляющее собой собственно базу и интерфейс пользователя.

Выглядело оно примерно так:

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

Результат выглядел как-то так:

Да, мне стыдно за такую расцветку.

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

Сейчас расскажу почему.

Обновленные «Паспорта Социальных объектов» представляли собой классическое веб-приложение на Java с базой данных, но только все целиком было реализовано... своими силами.

Там не было ни Apache Tomcat, ни Velocity или JSP/JSTL ни даже стандартного пула подключений к базе.

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

Почему я не использовал что-то готовое?

Ну потому что банально не знал — знания языка не означают автоматически знания инстументов и библиотек, не поверите.

Да и не особо хотел — после PHP и Apache, еще и c опытом программирования на С++ (реализовывал HTTP-сервер на плюсах в качестве одной из лабораторных работ в ВУЗе), J2EE даже в своей примитивной форме, в виде сервлет-контейнера и JSP мне показалась тогда крайне переусложненной.

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

Сколько это заняло по времени?

Примерно месяц работ, разумеется в режиме «экстремального аврала».

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

Но самое главное:

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

И все сопутствующие проблемы, например практику поиска и устранения утечек памяти, причем прямо на проде.

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

Так что свой первый watchdog я применил как раз тут ;)

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

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

В качестве СУБД выступал аж целый Oracle 10g, который я собственноручно развернул и настроил.

Если кто-то из читателей вдруг не знает:

Оракл это самая сложная, дорогая и навороченная реляционная СУБД, породившая термин «ораклист» и отдельную профессию DBA.

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

И вот эту йобу я смог самостоятельно развернуть в 23 года:

Затем на бис спор развернул Оракл еще и на Slackware Linux, для тестов, но это уже другая, не менее эпическая история.

Тут стоит пояснить:

СУБД Oracle можно установить без магии и плясок с бубном только на поддерживаемые дистрибутивы Linux, Solaris или Windows.

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

Помимо ряда параметров системы, заданных через sysctl.

Slackware Linux это полная противоположность фразы «официально поддерживается» и самый отбитый дистрибутив для самых отъявленных гиков. Каковым остается до сих пор.

И вот туда я умудрился поставить Oracle 10g и заставил его работать.

Это уже сильно потом, собеседуя кандидатов я узнал, что оказывается «навык установки СУБД Oracle не входит в компетенции DBA» и вообще такое мало кто умеет, даже из опытных сисадминов.

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

Еще одной интересной особенностью было то что как минимум половину работ по этому проекту я сделал работая на.. Sun Solaris (!)

На десктопе (!):

Так это примерно выглядело.

Солярис тогда был еще Sun Solaris, поскольку Оракл пока еще не купил Sun Microsystems, а в качестве среды разработки я использовал Netbeans, который еще не стал Apache Netbeans.

Эпилог

Я описал лишь один из реализованных проектов тех лет и лишь потому что материалы чудом сохранились.

А была еще первая в моей жизни встреча с SGI Irix, причем на сервере — была специальная железка, занимавшаяся обработкой спутниковых снимков. Был первый городской форум «khanty.org», был проект «Дети Югры», где я делал гиперкуб и срезы данных.

Все это блядство и разврат происходило в мой первый год после выпуска из ВУЗа и было мне тогда... 23 года.

За очень короткий срок моего пребывания в ЮНИИТе, я набил столько фрагов набрал столько опыта, что следующей карьерной остановкой стала Германия, где я впрочем надолго не задержался.

Но это уже тема для следующей поучительной истории ;)

P.S.

Смогли бы вы дорогой читатель повторить мой путь, как думаете?

Сделать и запустить вот такое за месяц, лишь с базовым знанием языка Java:

Без какой-либо поддержки и помощи, в новом коллективе новой компании, которая еще и находилась за ~1000км от Тюмени, где я учился и жил.

Рискнете повторить?