Университет Торонто предлагает программу стажировки под названием Профессиональная инженерная стажировка (PAY). Каждый год студенты присоединяются к компании на 16 месяцев, чтобы получить опыт (либо в разработке программного обеспечения, либо в нескольких других областях). Прошлый год/этот год (май 2017-август 2018) Я проходил стажировку в софтверной компании Red Hat. Red Hat – это компания, которая вносит огромный вклад в различные проекты с открытым исходным кодом (возможно, вы знаете их по Fedora или RHEL ). Всем стажерам был назначен другой проект с открытым исходным кодом для работы. В моем случае я работал над несколькими разными вещами, в основном над языковым сервером YAML, Eclipse Che и Eclipse Thea.
Первоначально я начал работать над языковым сервером YAML для файлов YAML. Для тех, кто не знаком с языковыми серверами, это, по сути, поставщик языковой поддержки для интеграции таких функций, как автозаполнение, переход к определению, поиск всех ссылок и тому подобное для языков программирования или форматов файлов[1]. Языковые серверы работают по протоколу языкового сервера, который определяет, какие данные будут отправляться на сервер во время различных событий. Кроме того, он определяет, какие результаты будут отправлены обратно с сервера клиенту в качестве ответа. Например, если вы редактируете файл YAML и хотите выполнить автозаполнение в определенном месте, клиент отправит запрос на завершение на сервер, и сервер ответит действительными завершениями. Я работал над проектом языкового сервера YAML в основном в одиночку, поэтому я отвечал за создание всех функций (наведение курсора, проверка, автоматическое завершение и т.д.). До релиза прошло около 4 месяцев, и с тех пор количество загрузок неуклонно растет. В настоящее время я работаю неполный рабочий день в Red Hat так что я все еще поддерживаю его.
После того, как был выпущен языковой сервер YAML, я начал работать над Eclipse Che. Для тех, кто не сталкивался с Eclipse Che, он сильно отличается от традиционного настольного Eclipse (это два совершенно разных продукта, оба находятся под Eclipse foundation ). Во-первых, Eclipse Che – это облачный инструмент управления рабочим пространством и программное обеспечение. Это означает, что вы можете получить доступ к своему рабочему пространству/коду из любого места в любое время в вашем браузере и предлагает образы docker со всем установленным, так что вам не придется выполнять какую-либо настройку для вашей IDE. С другой стороны, традиционный Eclipse – чрезвычайно тяжеловесная среда разработки. Он является одним из ведущих Java Ide уже более 10 лет, обладает разнообразным набором функций и ориентирован только на среду рабочего стола. Большая часть моей работы в Eclipse была сосредоточена на интеграции языковых серверов и обеспечении правильной работы предопределенных стеков. Чтобы убедиться, что предопределенные стеки работают, мне пришлось много изучать docker и понимать требования, которые были необходимы для каждого образа docker. Например, для стека Java мы хотели бы убедиться, что в используемом образе установлена последняя версия Java tooling. Что касается интеграции языкового сервера для Eclipse Che, я специально работал над интеграцией языкового сервера YAML и в настоящее время поддерживаю ее, а также помогал с интеграцией языкового сервера Java.
Прямо сейчас я работаю над Eclipse Thea. Eclipse Thea также является облачной ide, но отличается от Eclipse Che несколькими различными способами. Eclipse Che – очень тяжелая IDE, построенная с использованием Java, в то время как Eclipse Thea легче и построена с использованием typescript. Кроме того, Eclipse Che – это комбинация workspace management + IDE, в то время как Eclipse Thea – это всего лишь ИДЕЯ. Eclipse Это основано на Monaco (редакторе, который поддерживает VS Code) и в настоящее время находится на пути к эмуляции API VSCode внутри Eclipse Theia. Это означает, что однажды вы сможете запускать свои расширения VS Code в облаке. Что касается моей работы, я в основном работаю над дополнительной поддержкой Java, добавляя такие функции, как возможность просмотра внешних библиотек Java, настройка вашего пути к классу, поиск реализации интерфейсов. Совсем недавно меня попросили помочь эмулировать одну из конечных точек VSCode внутри ia.
Ссылки для любопытных: [1] – https://langserver.org
https://microsoft.github.io/language-server-protocol/ https://github.com/redhat-developer/yaml-language-server https://github.com/eclipse/che https://github.com/theia-ide/theia
Оригинал: “https://dev.to/jpinkney/my-16-months-at-red-hat-3kmf”