RUI – библиотека для создания web-приложений на языке go / Хабр
Хочу представить вам свой проект – библиотеку RUI (Remote User Interface). Библиотека предназначена для создания web-приложений на языке go.
Особенностью библиотеки заключается в том, что вся обработка данных осуществляется на сервере, а браузер используется как тонкий клиент. Для связи клиента и сервера используется WebSocket. Для разработки вам не нужны HTML/CSS/JavaScript. Все разрабатывается на языке go.
Другие особенности библиотеки: поддержка светлой и темной тем, поддержка стилей оформления, мультиязыковая поддержка, поддержка экранов с разной плотностью пикселей
Библиотека бесплатна и распространяется под MIT лицензией. В данный момент библиотека находится в статусе беты
Если вас это заинтересовало, то начнем
И начнем конечно с приложения “Hello world”
package main import "github.com/anoshenko/rui" type helloWorldSession struct { } func (content *helloWorldSession) CreateRootView(session rui.Session) rui.View { return rui.NewTextView(session, rui.Params { rui.Text : "Hello world!!!", }) } func createHelloWorldSession(session rui.Session) rui.SessionContent { return new(helloWorldSession) } func main() { app := rui.NewApplication("Hello world", "icon.svg", createHelloWorldSession) app.Start("localhost:8000") }
В функции main создается rui приложение и запускается основной цикл. При создании приложения задаются 3 параметра: имя приложения, имя иконки и функция createHelloWorldSession. Функция createHelloWorldSession создает структуру, реализующую интерфейс SessionContent:
type SessionContent interface { CreateRootView(session rui.Session) rui.View }
Для каждой новой сессии создается свой экземпляр структуры.
Функция CreateRootView интерфейса SessionContent создает корневой элемент. Когда пользователь обращается к приложению набрав в браузере адрес “localhost:8000”, то создается новая сессия, для нее создается новый экземпляр структуры helloWorldSession и в конце вызывается функция CreateRootView. Функция createRootView возвращает представление строки текста, создаваемое с помощью функции NewTextView.
Если вы хотите, чтобы приложение было видно вне вашего компьютера, то поменяйте адрес в функции Start:
app.Start(rui.GetLocalIP() + ":80")
Давайте немного украсим нашу надпись: расположим ее по центру, добавим рамку, тень. Для этого изменим функцию CreateRootView
func (content *helloWorldSession) CreateRootView(session rui.Session) rui.View { return rui.NewGridLayout(session, rui.Params{ rui.Width: rui.Percent(100), rui.Height: rui.Percent(100), rui.CellVerticalAlign: rui.CenterAlign, rui.CellHorizontalAlign: rui.CenterAlign, rui.Content: []rui.View{ rui.NewTextView(session, rui.Params{ rui.Text: "Hello world!!!", rui.FontName: "Arial", rui.TextSize: rui.Pt(24), rui.TextColor: rui.White, rui.BackgroundColor: rui.Blue, rui.Padding: rui.Px(40), rui.Border: rui.NewBorder(rui.Params{ rui.Style: rui.SolidLine, rui.Width: rui.Px(2), rui.ColorProperty: 0xff808080, }), rui.Radius: rui.Px(8), rui.Shadow: rui.NewViewShadow(rui.Px(2), rui.Px(2), rui.Px(4), rui.Px(2), 0x80808080), }), }, }) }
Данный текст, по-моему, довольно ясен. Поэтому сделаю к нему всего пару пояснений.
Функции rui.Percent, rui.Pt и rui.Px используются для задания размеров, соответственно, в процентах, pt и пикселях
Для того чтобы разместить текст по центру мы помещаем его в контейнер GridLayout.
Пространство контейнера GridLayout разбито на ячейки в виде таблицы. Все дочерние элементы располагаются в ячейках таблицы. В наше примере у GridLayout одна ячейка, в которую помещается текст.
Помимо GridLayout в библиотеке имеются следующие контейнеры:
ListLayout – дочерние элементы располагаются в виде списка (вертикального или горизонтального)
StackLayout – дочерние элементы занимают все пространство контейнера и располагаются один над одним. Виден только один верхний
ColumnLayout
AbsolutLayout – положение и размеры дочерних элементов задаются вручную
DetailsView – сворачиваемый контейнер
Resizable – контейнер меняющий размер путем перетаскивания сторон его рамки
Для работы с данными библиотека имеет ряд контролов. Помимо уже использованного TextView есть следующие:
ListView, TableView, DropDownList, Button, Checkbox, EditView, NumberPicker, ColorPicker, DatePicker, TimePicker, ProgressBar, ImageView, AudioPlayer, VideoPlayer
Назначение данных контролов понятно из их названия.
Кроме них есть еще CanvasView. Это контрол на котором вы можете рисовать используя различные геометрические фигуры и изображения.
На этом пока все. Если вас заинтересовала моя библиотек, то почитать подробнее о ней можно в readme файле git репозитория (в нем библиотека описана довольно подробно).
Git репозиторий библиотеки
По адресу
Располагается demo программа которая показывает возможности библиотеки.
И в конце просьба не пинать меня сильно в коментах. Это просто проект для души, а не коммерческая библиотека.
RUI HAI 1, General Cargo Ship – Данные судна и текущее положение – IMO 9178070
General Cargo Ship, IMO 9178070
Судно RUI HAI 1 (IMO: 9178070, MMSI: 511475000) – General Cargo Ship построенное в 1998 и ходит под флагом Palau.
AIS данные
Track on Map Добавить фотоLASHAN.CHN
ETA: Mar 15, 17:00
Predicted ETA | – |
Distance / Time | – |
Курс / Скорость | |
Осадка | 6.6 m |
Navigation Status | Under way |
Position received | 2 hours ago |
IMO / MMSI | 9178070 / 511475000 |
Позывной | T8A2559 |
Флаг | Palau |
Длина / Ширина | 97 / 17 m |
Noshiro, Japan
ATD: Mar 10, 09:18 UTC
Позиция на карте & Weather
Newer position via Satellite
Заходы в портах
Historical AIS Data
Vessel Utilization
Регистровые данные
IMO номер | 9178070 |
Имя судна | RUI HAI 1 |
Тип | General Cargo Ship |
Флаг | Palau |
Порт приписки | |
GT | 4724 |
DWT (t) | 6175 |
Длина (m) | 97 |
Ширина (m) | 17 |
Осадка (m) | |
Год постройки | 1998 |
Судостроитель | |
Место постройки | |
Номер верфи | |
TEU | – |
Жидкие НП (bbl) | – |
Gas (m3) | – |
Зерно | |
Гарантия | |
Classification Society | |
Судовладелец | |
Менеджер/Оператор |
История
Имя судна | Судовладелец | Год |
---|---|---|
AYA MARU NO.![]() | 2013 | |
ASIA SYMPHONY | EOS Sg SA | 2000 |
ASIA SYMPHONY | Masaki KK | 1999 |
ASIA SYMPHONY | EOS Sg SA | 1998 |
Similar vessels
Судно | Постройка | GT | DWT | Размеры (m) |
---|---|---|---|---|
1999 | 4726 | 6205 | 97 / 17 | |
1995 | 4735 | 6918 | 97 / 17 | |
4735 | 6298 | 97 / 17 | ||
1994 | 4740 | 6833 | 97 / 17 | |
1996 | 4738 | 6238 | 97 / 17 | |
1996 | 4736 | 6243 | 97 / 17 | |
1997 | 4697 | 6223 | 97 / 17 | |
1997 | 4690 | 6803 | 97 / 17 | |
1996 | 4743 | 6607 | ||
1997 | 4749 | 6607 | 97 / 18 |
Предупреждение
RUI HAI 1 текущая позиция и история портов захода основана на данных полученных через AIS. Техническая спецификация, тоннаж и менеджмент получены от базы данных VesselFinder. Данные только для информационных целей и VesselFinder не отвечает за точность данных относящихся к RUI HAI 1.
RIU.com | Предложения | Бронируйте лучшие курорты и отели
RIU.com | Предложения | Бронируйте лучшие курорты и отели
Эксклюзивные преимущества Riu Class
Почему стоит выбрать Riu Hotels & Resorts?
Опыт и любовь к делу
RIU Hotels & Resorts — это гостиничная сеть, основанная в 1953 году с небольшим отелем в Плайя-де-Пальма, Испания. Наш более чем 60-летний опыт заботы о наших клиентах в лучших уголках мира подтверждает миссию компании: благополучие наших гостей.
Около 100 отелей в 19 странах
День за днем мы работаем над тем, чтобы предлагать лучшие удобства и эксклюзивные услуги почти в 100 отелях, расположенных в 19 странах. Все они, кроме того, с гарантией качества и стандарта обслуживания, которые сделают ваш отдых поистине уникальным.
Продолжайте просмотр и откройте для себя лучшее из RIU Hotels & Resorts!
Изделия РИУ
Отели Riu Plaza — это городские отели, всегда расположенные в нервных центрах крупных мегаполисов. Там вы найдете лучшие услуги, путешествуете ли вы по делам или для удовольствия.
Подробнее»
Отели Riu Palace делают пребывание наших гостей еще более роскошным, совершенным и изысканным. Эти отели всегда расположены прямо на пляже и предлагают лучшие услуги, гарантирующие непревзойденный отдых.
Подробнее»
Отели «Только для взрослых» предназначены для людей, которые хотят расслабиться и насладиться отдыхом вдвоем или с друзьями в эксклюзивной обстановке.
Подробнее»
RIU Hotels & Resorts отличается эксклюзивным сервисом «Все включено» во многих своих отелях для отдыха. Услуга, в которой все предназначено для того, чтобы наши клиенты могли забыть о своей повседневной рутине и просто получать удовольствие, исключая все остальное.
Посмотреть больше»
Приложение Riu Hotels & Resorts
- Регистрация
- 0800 723 43 60 *
- Языки
Мы с нетерпением ждем встречи с вами на
{{::title}}
Загрузите
новое приложение и используйте его, чтобы:- Зарегистрироваться онлайн и не ждать в очередях по прибытии в отель
- Ознакомьтесь с расписанием мероприятий и меню ресторана, и в большинстве из них вы даже можете забронировать столик!
- Получите доступ к своей учетной записи Riu Class или станьте участником прямо сейчас, чтобы пользоваться эксклюзивными преимуществами
- Спросите на стойке регистрации любую необходимую вам услугу : наполнение мини-бара, дополнительное полотенце и т.
д. Забронируйте столик в большинстве ресторанов
- Получите доступ к своей учетной записи Riu Class или зарегистрируйтесь сейчас
- Спросите у администратора о любых услугах , которые вам нужны: наполнение мини-бара, дополнительное полотенце и т. д.
Скачать приложение Доступно на iOS и Android
лучших направлений мира – резервный отель
лучших направлений мира – резервный отельОткройте для себя наши направления и отели.0021 незабываемые каникулы
. В наших отелях вы найдете все необходимое, где сможете насладиться обширным гастрономическим предложением, лучшими развлечениями и множеством эксклюзивных услуг , которые характеризуют компанию.Выберите один из наших курортных, городских, семейных отелей или отелей только для взрослых и насладитесь отдыхом в своем любимом месте. Получите уникальные впечатления от RIU!
Выберите отель Riu
В Riu Hotels & Resorts есть различные типы отелей, чтобы удовлетворить все потребности наших гостей.

Классические отели RIU
Гостиницы для отдыха предназначены для предоставления наилучших услуг семьям, парам, компаниям друзей или гостям, путешествующим в одиночку и желающим насладиться комфортабельными номерами, отличными удобствами и услугами для отдыха и релаксации , а также разнообразная и вкусная еда и напитки.
Найдите идеальное жилье для семейного отдыха , незабываемого медового месяца, проведения конференций или празднования свадьбы и в целом для наслаждения уникальный опыт .
Дополнительная информация
Отели RIU Plaza
Городские отели с лучшими удобствами для тех, кто путешествует по делам , и в то же время удовлетворяя потребности туристов. Они всегда расположены в основных узлах крупных городов для быстрого и легкого доступа к самым интересным местам.
Отели RIU Plaza — это здание с современной элегантной архитектурой , специально спроектированное с учетом всех технических и эстетических требований, предъявляемых к отелям 21 века.
Дополнительная информация
RIU Palace Hotels
Эта категория добавит дополнительный штрих роскоши, совершенства и изысканности в самый расслабляющий отдых. Всегда расположенные на пляже, эти отели демонстрируют тщательно продуманный архитектурный дизайн в красивейшем природном окружении. Отели RIU Palace гарантируют гостям расслабляющий отдых, где они могут насладиться спа- и велнес-услугами , спортивными и развлекательными мероприятиями, а также отличными предложениями в различных буфетах и 9 ресторанах.0021 тематические рестораны .
Курорты, где вы можете оставить свои заботы и сосредоточиться на удовольствии отдыха в лучших отелях, расположенных в райских уголках .
Дополнительная информация
Приложение Riu Hotels & Resorts
- Регистрация
- 0800 723 43 60 *
- Языки
Мы с нетерпением ждем встречи с вами на
{{::title}}
Загрузите
новое приложение и используйте его, чтобы:- Зарегистрироваться онлайн и избежать ожидания в очередях по прибытии в отель
- Проверить расписание мероприятий и меню ресторана, и в большинстве из них вы даже можете забронировать столик!
- Получите доступ к своей учетной записи Riu Class или станьте участником прямо сейчас, чтобы пользоваться эксклюзивными преимуществами
- Спросите на стойке регистрации любую необходимую вам услугу : пополнение мини-бара, дополнительное полотенце и т.