Не зрозуміло завдання 2. Потрібно її вірішити зробив завдання на голих сокетах або можна використовувати якісь інші більш високорівневі компоненти? Бо там сайт Наса робить редірект на HTTPS протокол.
Так - це означає редірект. Якщо ви відриєте будь-яку з картинок, то побачете, що браузер робить редірект. Спробуйте відкрити: mars.jpl.nasa.gov/msl-raw-images/proj/msl/redops/ods/surface/sol/00300/opgs/edr/fcam/FRB_424113030EDR_F0060308FHAZ00323M_.JPG і вас перенаправить на mars.nasa.gov/msl-raw-images/proj/msl/redops/ods/surface/sol/00300/opgs/edr/fcam/FRB_424113030EDR_F0060308FHAZ00323M_.JPG Щоб в коді зробити відповідний редірект, вам треба перевіряти статус код відповіді (в даному випадку він 302 MOVED PERMANENTLY), а тоді витягувати з хедера "Location" посилання, куди робити редірект і по ньому виконувати новий запит.
@@Bobocode Чудово, дякую, розв'язав. Завдяки цьому починаю розуміти, що таке хедери. Фотографія: mars.jpl.nasa.gov/msl-raw-images/proj/msl/redops/ods/surface/sol/00010/soas/rdr/ccam/CR0_398381250PRCLF0030000CCAM05010L1.PNG
Дуже цікаво. Дякую за таке чудове відео. Насправді, рік тому, я спробував створити простенький багато-поточний чат, так як цікавився тим як працюють компʼютерні мережі на низькому рівні. Спочатку тестував на локальному хості. Потім, прокинувши порт, спробував передати повідомлення на інший компʼютер через маршрутизатор. Далі я зохітв протестувати програму по мережі, але зʼєднання з хостом не відбулося. Помучившись і почитавши різноманітну інфу, я зрозумів, що з’єднання по мережі не вийде через те, що ip адреса мого маршрутизатора була приватною. Хоча можна було відправляти повідомлення через сусідський wifi, такий от експіріенс😢😅
Привіт, дуже класні уроки, дякую! В завданні про custom json converter як раз вдало підходить використання String Block, згаданий в записі Modern Java)
Якщо це жарт - то 😂. Якщо ж ні, то до ноута Тараса ви можете підключитися тільки, якщо він ввімкнений, "слухає" конкретний сокет, до якого ви намагаєтеся підключитися і відповідний порт відкритий на зовні...
Не бачу приводу не подякувати)) лекцiя во👍 ДЗ во🤟 Хто буде робити ДЗ напишiть розмір найбільшої картинки, я зміг знайти тiльки content-length=[178] і той у всіх однаковий
На момент комента це картинка mars.nasa.gov/msl-raw-images/proj/msl/redops/ods/surface/sol/00010/soas/rdr/ccam/CR0_398381250PRCLF0030000CCAM05010L1.PNG і Content-Length - 548726
для прикладу моя реалізація @SneakyThrows private static T jsonToObj(String json, Class userClass) { var constructor = userClass.getConstructor(); T user = constructor.newInstance(); for (String line : json .replaceAll("\"", "") .split(" ")) { if (!line.contains(": ")) continue; //parsing String[] fieldValue = line .replaceFirst(",", "") .trim() .split(": "); //deserialize var declaredField = userClass.getDeclaredField(fieldValue[0]); var value = fieldValue[1]; declaredField.set(user, value); } return user; }
не зовсім зрозуміло чому джава не працює з TCP, ми ж можемо створити server socket і вказати в ньому любий порт, а основна робота TCP це ж робота з портами, чи тут вся фішка в тому що ми ці порти створює в віртуальній машині а не операційній системі?
👉 Навчання від Bobocode: bit.ly/3IRrJhj
ДЗ:
1. Реалізувати примітивний JSON мапер (41:04)
2. Знайти картинку з найбільшим розміром (01:01:57)
3. Вправа hello-network-socket (bit.ly/3rGyThg)
Не зрозуміло завдання 2. Потрібно її вірішити зробив завдання на голих сокетах або можна використовувати якісь інші більш високорівневі компоненти? Бо там сайт Наса робить редірект на HTTPS протокол.
@@goodvin8554 HTTPS запит також можна зробити через "голий" сокет, просто треба трохи налаштувань.
@@Bobocode через SSLSocketFactory ?
Спробував зробити домашнє завдання, але у другій вправі запит повертає "moved permanently". Чи нормально це?
Так - це означає редірект. Якщо ви відриєте будь-яку з картинок, то побачете, що браузер робить редірект.
Спробуйте відкрити: mars.jpl.nasa.gov/msl-raw-images/proj/msl/redops/ods/surface/sol/00300/opgs/edr/fcam/FRB_424113030EDR_F0060308FHAZ00323M_.JPG і вас перенаправить на mars.nasa.gov/msl-raw-images/proj/msl/redops/ods/surface/sol/00300/opgs/edr/fcam/FRB_424113030EDR_F0060308FHAZ00323M_.JPG
Щоб в коді зробити відповідний редірект, вам треба перевіряти статус код відповіді (в даному випадку він 302 MOVED PERMANENTLY), а тоді витягувати з хедера "Location" посилання, куди робити редірект і по ньому виконувати новий запит.
@@Bobocode Чудово, дякую, розв'язав. Завдяки цьому починаю розуміти, що таке хедери. Фотографія:
mars.jpl.nasa.gov/msl-raw-images/proj/msl/redops/ods/surface/sol/00010/soas/rdr/ccam/CR0_398381250PRCLF0030000CCAM05010L1.PNG
Дякую, дуже якісний контент в українському інтернет-просторі.
1:03:56 гарний поінт
Дякую за чудову лекцію 😊😊
Дякую
Дуже дякую.
Дуже цікаво. Дякую за таке чудове відео. Насправді, рік тому, я спробував створити простенький багато-поточний чат, так як цікавився тим як працюють компʼютерні мережі на низькому рівні. Спочатку тестував на локальному хості. Потім, прокинувши порт, спробував передати повідомлення на інший компʼютер через маршрутизатор. Далі я зохітв протестувати програму по мережі, але зʼєднання з хостом не відбулося. Помучившись і почитавши різноманітну інфу, я зрозумів, що з’єднання по мережі не вийде через те, що ip адреса мого маршрутизатора була приватною. Хоча можна було відправляти повідомлення через сусідський wifi, такий от експіріенс😢😅
Привіт! Якщо нема статичного IP, Ви можете встановити собі ngrok.
Дякую за пораду! Не знав, що є таке обхідне рішення.
Привіт, дуже класні уроки, дякую! В завданні про custom json converter як раз вдало підходить використання String Block, згаданий в записі Modern Java)
😂
Намагаюсь підключитись до ноута Тараса як у відео, щось не виходить. Підскажіть що не так?)
Якщо це жарт - то 😂.
Якщо ж ні, то до ноута Тараса ви можете підключитися тільки, якщо він ввімкнений, "слухає" конкретний сокет, до якого ви намагаєтеся підключитися і відповідний порт відкритий на зовні...
@@Bobocode звісно жарт, не все так погано :D
@@connection_failed 😅
Не бачу приводу не подякувати)) лекцiя во👍 ДЗ во🤟
Хто буде робити ДЗ напишiть розмір найбільшої картинки, я зміг знайти тiльки content-length=[178] і той у всіх однаковий
На момент комента це картинка mars.nasa.gov/msl-raw-images/proj/msl/redops/ods/surface/sol/00010/soas/rdr/ccam/CR0_398381250PRCLF0030000CCAM05010L1.PNG
і Content-Length - 548726
Також всюди 178, дивно може від api_key залежить
Скоріше за все у вас статус 301 і ви не зробили редірект.
@@baibula дякую. Саме так, там всюди треба опрацьовувати редірект.
По завданню "Реалізувати примітивний JSON мапер" не вистачає прикладу реалізації.
Та це міні дз, реалізація за вами)
для прикладу моя реалізація
@SneakyThrows
private static T jsonToObj(String json, Class userClass) {
var constructor = userClass.getConstructor();
T user = constructor.newInstance();
for (String line : json
.replaceAll("\"", "")
.split("
")) {
if (!line.contains(": ")) continue;
//parsing
String[] fieldValue = line
.replaceFirst(",", "")
.trim()
.split(": ");
//deserialize
var declaredField = userClass.getDeclaredField(fieldValue[0]);
var value = fieldValue[1];
declaredField.set(user, value);
}
return user;
}
не зовсім зрозуміло чому джава не працює з TCP, ми ж можемо створити server socket і вказати в ньому любий порт, а основна робота TCP це ж робота з портами, чи тут вся фішка в тому що ми ці порти створює в віртуальній машині а не операційній системі?
Java працює з TCP. Точніше в Java ми, зазвичай використовуємо TCP і працюємо поверх нього.
@@Bobocode дякую