Удивительный проект из далекого далекого прошлого, 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км от Тюмени, где я учился и жил.