Борис Могила "Isomorphic React apps in production"Fwdays
Універсальні додатки дають можливість поєднати краще з сереверного і браузерного рендерінгу. Доповідь присвячена основним проблемам універсального коду на React:
універсальна робота з АРІ
обробка асинхронних запитів на севері
робота по виведенню SEO
потреба збірки серверного коду при використанні babel
універсальний роутінг
Також буде розглянутий можливий стек технологій та варіанти вирішення даних проблем за допомогою них.
07 - vysnovky z tdd, pohliad pochatkivtsia - vitalii zinchenko it event 2013...Igor Bronovskyy
07 - Висновки з TDD, погляд початківця - Віталій Зінченко - IT Event 2013 (5)
Буде розглянуто підхід розробки програмного забезпечення та тестів, який дозволить досягти наступних цілей:
- глибокий та детальний аналіз вимог;
- одне розуміння функціональності продукту для усіх членів команди;
- хороша взаємодія між командами розробників та тестувальників;
- високий рівень покриття продукту тестами;
- скорочення часу необхідного для тестування;
Результатом виконання перелічених пунктів стане налагоджений процес розробки продукту, порозуміння між учасниками команди і найголовніше - якісне ПЗ.
Віталій Зінченко
http://itevent.if.ua/lecture/visnovki-z-tdd-poglyad-pochatkivtsya
"How I don't need a state management library in React app", Tetiana Melnyk Fwdays
A short compilation of my own experience with state management in React applications, or how I went from loving Redux to not using it at all, and do not regret it.
Борис Могила "Isomorphic React apps in production"Fwdays
Універсальні додатки дають можливість поєднати краще з сереверного і браузерного рендерінгу. Доповідь присвячена основним проблемам універсального коду на React:
універсальна робота з АРІ
обробка асинхронних запитів на севері
робота по виведенню SEO
потреба збірки серверного коду при використанні babel
універсальний роутінг
Також буде розглянутий можливий стек технологій та варіанти вирішення даних проблем за допомогою них.
07 - vysnovky z tdd, pohliad pochatkivtsia - vitalii zinchenko it event 2013...Igor Bronovskyy
07 - Висновки з TDD, погляд початківця - Віталій Зінченко - IT Event 2013 (5)
Буде розглянуто підхід розробки програмного забезпечення та тестів, який дозволить досягти наступних цілей:
- глибокий та детальний аналіз вимог;
- одне розуміння функціональності продукту для усіх членів команди;
- хороша взаємодія між командами розробників та тестувальників;
- високий рівень покриття продукту тестами;
- скорочення часу необхідного для тестування;
Результатом виконання перелічених пунктів стане налагоджений процес розробки продукту, порозуміння між учасниками команди і найголовніше - якісне ПЗ.
Віталій Зінченко
http://itevent.if.ua/lecture/visnovki-z-tdd-poglyad-pochatkivtsya
"How I don't need a state management library in React app", Tetiana Melnyk Fwdays
A short compilation of my own experience with state management in React applications, or how I went from loving Redux to not using it at all, and do not regret it.
«Слова і кулі». Письменники, що захищають Україну. Єлизавета Жаріковаestet13
До вашої уваги історія про українську поетку, бойову медикиню, музикантку – Єлизавету Жарікову, яка з початку повномасштабної війни росії проти України приєдналася до лав ЗСУ.
Регіональний центр євроатлантичної інтеграції України, що діє при відділі документів із гуманітарних, технічних та природничих наук, підготував віртуальну виставку «Допомога НАТО Україні».
Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...tetiana1958
29 травня 2024 року на кафедрі зоології, ентомології, фітопатології, інтегрованого захисту і карантину рослин ім. Б.М. Литвинова факультету агрономії та захисту рослин Державного біотехнологічного університету було проведено відкриту лекцію на тему «Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випробувань пестицидів: шлях до підвищення якості та надійності досліджень» від кандидата біологічних наук, виконавчого директора ГК Bionorma, директора Інституту агробіології Ірини Бровко.
Участь у заході взяли понад 70 студентів та аспірантів спеціальностей 202, 201 та 203, а також викладачі факультету та фахівці із виробництва. Тема лекції є надзвичайно актуальною для сільського господарства України і викликала жваве обговорення слухачів та багато запитань до лектора.
Дякуємо пані Ірині за приділений час, надзвичайно цікавий матеріал та особистий внесок у побудову сучасного захисту рослин у нашій країні!
2. AJAX (Asynchronous Javascript And Xml) –
технологія взаємодії з сервером, яка не
потребує перезавантаження всієї сторінки
Докладніше. AJAX:
•Вміє читати дані з сервера навіть після того, як
сторінка вже завантажена
•Оновлює дані на сторінці без
перезавантаження сторінки
•Надсилає дані на сервер у фоновому режимі
3. Механізм роботи AJAX
1. На сторінці відбувається подія
(завантажується сторінка, натискається
кнопка тощо)
2. JavaScript створює об’єкт XMLHttpRequest
3. Об’єкт XMLHttpRequest надсилає запит на
сервер
4. Сервер обробляє запит
5. Сарвер надсилає на сторінку відповідь
6. JavaScript читає відповідь
7. JavaScript виконує відповідну дію (наприклад,
оновлення інформації на сторінці)
4. Об’єкт XMLHttpRequest
Об’єкт XMLHttpRequest можна використовувати
для обміну даними з сервером “за сценою”.
Об’єкт XMLHttpRequest вбудований у сучасні
браузери.
Синтаксис:
variable = new XMLHttpRequest();
Приклад:
var xhttp = new XMLHttpRequest();
5. З міркувань безпеки веб-сторіка і XML-файл,
який сторінка намагається завантажити,
повинні знаходитись на тому самому
сервері.
Щоб надіслати запит серверу,
використовуються методи об’єкта
XMLHttpRequest open() і send():
xhttp.open("GET", "demo.txt", true);
xhttp.send();
6. Метод open():
open(method, url, async)
•method: тип запиту: GET або POST
•url: адреса сервера чи файла
•async: true (асинронно) or false (синхронно)
Метод send():
send() – надсилає запит серверу GET-
методом
send(string) – надсилає запит серверу POST-
методом
GET- і POST-методи – ознайомитись самостійно.
7. Простий приклад GET-запиту
xhttp.open("GET", "data/demo.txt",
true);
xhttp.send();
Щоб уникнути кешування, можна писати так:
xhttp.open("GET",
"data/demo.txt?t=" + Math.random(),
true);
xhttp.send();
8. Передавати інформацію у GET-запиті можна
за таким зразком:
xhttp.open("GET",
"data/demo.txt?user=Ivan&age=28",
true);
xhttp.send();
9. Простий приклад POST-запиту
xhttp.open("POST", "demo.txt", true);
xhttp.send();
Щоб передати POST-методом дані,
наприклад, з HTML-форми, треба додати
HTTP-заголовок методом setRequestHeader
(). Дані надсилаються методом send():
xhttp.open("POST", "test.asp", true);
xhttp.setRequestHeader("Content-type",
"application/x-www-form-urlencoded");
xhttp.send("user=Ivan&age=28");
10. url – файл на сервері
xhttp.open("GET", "test.asp", true);
xhttp.send();
Файл може бути будь-якого типу: .txt, .xml,
або серверні програмні скрипти .asp, .php.
При асинхронному запиті
xhttp.open("GET", "ajax_test.asp", true);
JavaScript не зобов’язаний чекати відповіді
сервера. Натомість в процесі очікування він
може виконувати інші скрипти чи опрацювати
відповідь при її надходженні.
11. Властивість onreadystatechange:
З об’єктом XMLHttpRequest можна визначити
функцію, яка буде виконуватись, коли запит
отримає відповідь. Ця функція визначається
у властивості onreadystatechange об’єкта
XMLHttpResponse:
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status
== 200) {
document.getElementById("demo").innerHT
ML = this.responseText;
}
};
xhttp.open("GET", "info.txt", true);
xhttp.send();
12. Відгук сервера
Властивості об’єкта XMLHttpRequest:
onreadystatechange – визначає функцію, яка викликається, коли
властивість readyState змінюється
readyState – показує стан об’єкта XMLHttpRequest.
0: запит не ініціалізовано
1: встановлено з’єднання з сервером
2: запит отримано
3: запит обробляється
4: запит завершено і відповідь готова
status – основні значення:
200: "OK"
403: "Forbidden"
404: "Page not found"
statusText – повертає status-text (наприклад, "OK" або "Not
Found")
13. Функція onreadystatechange викликається кожного
разу, коли змінюється readyState.
Коли readyState стає рівним 4, а status – 200,
відгук готовий:
<button type="button"
onclick="loadDoc()">Click</button>
function loadDoc() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200)
{
document.getElementById("demo").innerHTML =
this.responseText;
}
};
xhttp.open("GET", "info.txt", true);
xhttp.send();
}
14. Задача 83.0
Створіть файл anekdot.txt, в який
помістіть 5-7 анекдотів, розділивши їх
символами “*****”. Збережіть у кодуванні
utf-8.
Створіть html-сторінку з кнопкою “Читати
анекдот” і DIV’ом.
Натискання на кнопку повинно
завантажувати у DIV вміст файлу
anekdot.txt. Подбайте про естетику.
19. Callback Function
Callback-функція – це функція, яка передається як
параметр іншій функції.
Якщо ви на сайті маєте більше ніж одне AJAX-завдання,
треба створити одну функцію для виконання об’єкту
XMLHttpRequest і по одній функції для кожного AJAX-
завдання. Виклик функції повинен містити URL і ім’я
функції, яка має викликатись, коли відповідь з сервера
готова.
Приклад (HTML-частина сторінки):
<button type="button" onclick="loadDoc('data/demo1.txt',
myFunction)">Запит1</button>
<button type="button" onclick="loadDoc('data/demo2.txt',
myFunction)">Запит2</button>
<p id="demo"></p>
20. JavaScript-частина:
<script>
function loadDoc(url, cFunction) {
var xhttp;
xhttp=new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
cFunction(this);
}
};
xhttp.open("GET", url, true);
xhttp.send();
}
function myFunction(xhttp) {
demo.innerHTML = xhttp.responseText;
}
</script>
21. Властивості Server Response
responseText – отримує дані як рядок
responseXML – отримує дані у XML-форматі
Приклади:
demo.innerHTML = xhttp.responseText; //
див. попередні приклади
xmlDoc = xhttp.responseXML;
Об’єкт XML HttpRequest містить вбудований
XML-парсер.
Властивість responseXML повертає з
сервера відповідь у вигляді XML DOM
об’єкта.
22. Приклад:
<p id="demo"></p>
<script>
var xhttp, xmlDoc, txt, x, i;
xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
xmlDoc = this.responseXML;
txt = "";
x = xmlDoc.getElementsByTagName("AUTHOR");
for (i = 0; i < x.length; i++) {
txt = txt + x[i].childNodes[0].nodeValue + "<br>";
}
document.getElementById("demo").innerHTML = txt;
}
};
xhttp.open("GET", "data/books2.xml", true);
xhttp.send();
</script>
24. Приклад 2. JavaScript-частина:
<script>
function loadXML(event) {
var xhttp, xmlDoc, txt, x, i, tagName;
if (event.target.id == "btn_autor") tagName = "AUTHOR";
if (event.target.id == "btn_title") tagName = "TITLE";
xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
xmlDoc = this.responseXML;
txt = "";
x = xmlDoc.getElementsByTagName(tagName);
for (i = 0; i < x.length; i++) {
txt = txt + x[i].childNodes[0].nodeValue + "<br>";
}
document.getElementById("demo").innerHTML = txt;
}
};
xhttp.open("GET", "data/books2.xml", true);
xhttp.send();
}
</script>
25. Приклад 3. Навігація по книжках
<div id='showBook'></div><br>
<input type="button" onclick="previous()" value="<<">
<input type="button" onclick="next()" value=">>">
<script>
var i = 0;
displayBook(i);
function next() {
if (i < x.length-1) {
i++;
displayBook(i);
}
}
function previous() {
if (i > 0) {
i--;
displayBook(i);
}
} // див наступну сторінку
26. Приклад 3 (продовження)
function displayBook(i) {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
myFunction(this, i);
}
};
xmlhttp.open("GET", "data/books2.xml", true);
xmlhttp.send();
}
function myFunction(xml, i) {
var xmlDoc = xml.responseXML;
x = xmlDoc.getElementsByTagName("BOOK");
showBook.innerHTML = "Автор: " +
x[i].getElementsByTagName("AUTHOR")[0].childNodes[0].nodeValue
+ "<br>Назва: " +
x[i].getElementsByTagName("TITLE")[0].childNodes[0].nodeValue +
"<br>Сторінок: " +
x[i].getElementsByTagName("PAGES")[0].childNodes[0].nodeValue;
}
</script>
27. Задача 84
• Завантажте файл goo.gl/KQwAqs
• Виправте помилки, щоб зробити
додаток працездатним.
• Додайте у XML-файл дані про рік
видання книги (придумайте самі).
• Внесіть зміни у HTML-файл, щоб
додана інформація відображалась