Server-side Web
09 януари 2020
Административни неща
- Мислете за проекти!
- Пишете домашно!
За боба, 'леба и уеба
За боба, 'леба и уеба
- Rust все още му е малко рано за сериозен web. Но е използваем! https://www.arewewebyet.org/
За боба, 'леба и уеба
- Rust все още му е малко рано за сериозен web. Но е използваем! https://www.arewewebyet.org/
- Доста работа се влага в client-side неща, но има и доста server-side
За боба, 'леба и уеба
- Rust все още му е малко рано за сериозен web. Но е използваем! https://www.arewewebyet.org/
- Доста работа се влага в client-side неща, но има и доста server-side
- Фреймуърците са по-скоро "библиотеки". Прости, композируеми
За боба, 'леба и уеба
- Rust все още му е малко рано за сериозен web. Но е използваем! https://www.arewewebyet.org/
- Доста работа се влага в client-side неща, но има и доста server-side
- Фреймуърците са по-скоро "библиотеки". Прости, композируеми
- Не подценявайте стойността на добре организиран фреймуърк. Уеба е "лесен" в такъв смисъл, че индивидуалните проблеми са сравнително лесни, но са много и обикновено трябва да се решават бързо. Организиран, подреден codebase означава удобен flow, лесно намиране на бъгове, лесна работа с други хора.
- Фреймуърк, който ви дава адекватна структура, ви позволява да се концентрирате върху бизнес логиката, вместо върху организационни глупости.
За боба, 'леба и уеба
- Rust все още му е малко рано за сериозен web. Но е използваем! https://www.arewewebyet.org/
- Доста работа се влага в client-side неща, но има и доста server-side
- Фреймуърците са по-скоро "библиотеки". Прости, композируеми
- Не подценявайте стойността на добре организиран фреймуърк. Уеба е "лесен" в такъв смисъл, че индивидуалните проблеми са сравнително лесни, но са много и обикновено трябва да се решават бързо. Организиран, подреден codebase означава удобен flow, лесно намиране на бъгове, лесна работа с други хора.
- Фреймуърк, който ви дава адекватна структура, ви позволява да се концентрирате върху бизнес логиката, вместо върху организационни глупости.
- (Уви, рядко се стига до 100% подреденост. Но спокойно може да е "good enough")
За боба, 'леба и уеба
Накратко как работи Интернета:
- Една машина стартира безкраен цикъл, който чака за заявки с определен протокол (HTTP) на определен порт. Стандартния порт е 80 за некриптирани, 443 за криптирани връзки. Но може да се използва който и да е.
За боба, 'леба и уеба
Накратко как работи Интернета:
- Една машина стартира безкраен цикъл, който чака за заявки с определен протокол (HTTP) на определен порт. Стандартния порт е 80 за некриптирани, 443 за криптирани връзки. Но може да се използва който и да е.
- Някой си отваря браузъра ("клиент") и търси нашия адрес и порт, който се превежда до IP адрес и порт от някакъв DNS (Domain Name Server).
За боба, 'леба и уеба
Накратко как работи Интернета:
- Една машина стартира безкраен цикъл, който чака за заявки с определен протокол (HTTP) на определен порт. Стандартния порт е 80 за некриптирани, 443 за криптирани връзки. Но може да се използва който и да е.
- Някой си отваря браузъра ("клиент") и търси нашия адрес и порт, който се превежда до IP адрес и порт от някакъв DNS (Domain Name Server).
- Клиента праща определени параметри, базирано на които програмата-сървър решава какъв низ да върне.
За боба, 'леба и уеба
Накратко как работи Интернета:
- Една машина стартира безкраен цикъл, който чака за заявки с определен протокол (HTTP) на определен порт. Стандартния порт е 80 за некриптирани, 443 за криптирани връзки. Но може да се използва който и да е.
- Някой си отваря браузъра ("клиент") и търси нашия адрес и порт, който се превежда до IP адрес и порт от някакъв DNS (Domain Name Server).
- Клиента праща определени параметри, базирано на които програмата-сървър решава какъв низ да върне.
- Този низ е във формат HTML, който браузъра знае как да интерпретира като структуриран текст
За боба, 'леба и уеба
Накратко как работи Интернета:
- Една машина стартира безкраен цикъл, който чака за заявки с определен протокол (HTTP) на определен порт. Стандартния порт е 80 за некриптирани, 443 за криптирани връзки. Но може да се използва който и да е.
- Някой си отваря браузъра ("клиент") и търси нашия адрес и порт, който се превежда до IP адрес и порт от някакъв DNS (Domain Name Server).
- Клиента праща определени параметри, базирано на които програмата-сървър решава какъв низ да върне.
- Този низ е във формат HTML, който браузъра знае как да интерпретира като структуриран текст
- Или във формат CSS, който казва на браузъра "тази страница има шарени цветове и закръглени ръбчета"
За боба, 'леба и уеба
Накратко как работи Интернета:
- Една машина стартира безкраен цикъл, който чака за заявки с определен протокол (HTTP) на определен порт. Стандартния порт е 80 за некриптирани, 443 за криптирани връзки. Но може да се използва който и да е.
- Някой си отваря браузъра ("клиент") и търси нашия адрес и порт, който се превежда до IP адрес и порт от някакъв DNS (Domain Name Server).
- Клиента праща определени параметри, базирано на които програмата-сървър решава какъв низ да върне.
- Този низ е във формат HTML, който браузъра знае как да интерпретира като структуриран текст
- Или във формат CSS, който казва на браузъра "тази страница има шарени цветове и закръглени ръбчета"
- Или във формат Javascript, който инструктира браузъра да кара текста да мига и да копае биткойни.
За боба, 'леба и уеба
Сървъра е просто един цикъл, който чака низова информация в определен формат и връща низова информация в определен формат. Може да го напишем на shellscript, ако искаме (но ще го пишем на Rust).
Разбира се, в реални условия е доста по-сложно да се докарат всички детайли.
Spotiferris
Ще разгледаме (началото на) малък проект за хостинг на музика. Stack-а:
Документация
- От документацията има какво да се желае. Иска се експериментиране и ровене из examples.
- За препоръчване е, ако искате да правите уеб проект, да минете през всички достъпни guides, и всички examples, и на gotham, и на diesel.
- Не игнорирайте и API документацията. Rust е език, в който import-ите могат да се проследяват, и можете да се ориентирате успешно във, примерно, http://docs.diesel.rs/diesel/index.html
- Алтернативен начин за работа с база данни: SQLx
Spotiferris
Diesel
- Трябва ви
diesel_cli
: https://lib.rs/crates/diesel_cli - Трябва ви
macro_use
вlib.rs
и вmain.rs
:
1
2
#[macro_use]
extern crate diesel;
- Трябва ви да прочетете guide-овете и tutorial-ите, и доста търпение :)
- Какво прави
table!
? Тук има дълго обяснение: http://diesel.rs/guides/schema-in-depth/ - Diesel и Gotham потенциално имат малко по-добра интеграция, включително за тестове, вижте "diesel" примера в gotham репо-то: https://github.com/gotham-rs/gotham/blob/master/examples/diesel/src/main.rs
Spotiferris
Проблеми
Spotiferris
Проблеми
- Бавно :/. Автоматично компилиране и рестартиране би помогнало.
Spotiferris
Проблеми
- Бавно :/. Автоматично компилиране и рестартиране би помогнало.
- Не се логва достатъчно в development.
Spotiferris
Проблеми
- Бавно :/. Автоматично компилиране и рестартиране би помогнало.
- Не се логва достатъчно в development.
- Форма с файл -- никаква идея.
Spotiferris
Проблеми
- Бавно :/. Автоматично компилиране и рестартиране би помогнало.
- Не се логва достатъчно в development.
- Форма с файл -- никаква идея.
- Интеграцията между библиотеките иска работа.
Spotiferris
Проблеми
- Бавно :/. Автоматично компилиране и рестартиране би помогнало.
- Не се логва достатъчно в development.
- Форма с файл -- никаква идея.
- Интеграцията между библиотеките иска работа.
- Всичките библиотеки са версия 0.x -- нестабилни са като интерфейс.