#LaravelPolandMeetup #23
Laravel Poland MeetUp #23 online
Temat: WebRTC+Websockety - Jak stworzyłem aplikację do kamerek internetowych w Laravelu
W jaki sposób można zrealizować połączenie WebRTC w aplikacji opartej o Laravel+Vue
Autor: Mateusz Garbarczyk, MirIT
Web Dev Insider prezentuje: nowości ze świata wydajności frontendu. Nowinki, nowe narzędzia i techniki optymalizacji - przydatne z perspektywy techniczego SEO oraz front-end developmentu.
PLNOG19 - Krzysztof Banel - Nowe modele bezpieczeństwa w sieciach SDNPROIDEA
Co modelowanie sieci z poziomu kontrolera SDN oznacza dla bezpieczeństwa? Kompatybilność bezpieczeństwa systemów dedykowanych, zwirtualizowanych i skonteneryzowanych. Segmentowanie mikrousług jako kolejny etap migracji ze środowisk monolitycznych. Ujednolicanie usług bezpieczeństwa w redundantnych i rozproszonych modelach przetwarzania. Konwergencja bezpieczeństwa infrastruktury kampusowej i centrum przetwarzania.
Cometari Dedicated Solutions jest firmą technologiczną zlokalizowaną w Krakowie. Posiadamy wiedzę i kompetencje w zakresie projektowania, produkcji i utrzymania
złożonych systemów informatycznych. Nasi inżynierowie posiadają wieloletnie doświadczenie branżowe dzięki czemu do każdego tematu podchodzimy indywidualnie. Kładziemy nacisk na szybkość komunikacji z klientem oraz jakość wytwarzanych rozwiązań. Specjalizujemy się w produkcji zaawansowanych systemów serwerowych jak również lekkich rozwiązań webowych oraz mobilnych. Jeśli potrzebujesz rzetelnego partnera technologicznego jesteśmy do dyspozycji.
Web Dev Insider prezentuje: nowości ze świata wydajności frontendu. Nowinki, nowe narzędzia i techniki optymalizacji - przydatne z perspektywy techniczego SEO oraz front-end developmentu.
PLNOG19 - Krzysztof Banel - Nowe modele bezpieczeństwa w sieciach SDNPROIDEA
Co modelowanie sieci z poziomu kontrolera SDN oznacza dla bezpieczeństwa? Kompatybilność bezpieczeństwa systemów dedykowanych, zwirtualizowanych i skonteneryzowanych. Segmentowanie mikrousług jako kolejny etap migracji ze środowisk monolitycznych. Ujednolicanie usług bezpieczeństwa w redundantnych i rozproszonych modelach przetwarzania. Konwergencja bezpieczeństwa infrastruktury kampusowej i centrum przetwarzania.
Cometari Dedicated Solutions jest firmą technologiczną zlokalizowaną w Krakowie. Posiadamy wiedzę i kompetencje w zakresie projektowania, produkcji i utrzymania
złożonych systemów informatycznych. Nasi inżynierowie posiadają wieloletnie doświadczenie branżowe dzięki czemu do każdego tematu podchodzimy indywidualnie. Kładziemy nacisk na szybkość komunikacji z klientem oraz jakość wytwarzanych rozwiązań. Specjalizujemy się w produkcji zaawansowanych systemów serwerowych jak również lekkich rozwiązań webowych oraz mobilnych. Jeśli potrzebujesz rzetelnego partnera technologicznego jesteśmy do dyspozycji.
PLNOG23 - Bartosz Belter & dr hab. inż. Andrzej Bęben - Techniki przetwarzani...PROIDEA
Chmury obliczeniowe zapewniają powszechny, wygodny dostęp do teoretycznie „nieograniczonych” zasobów obliczeniowych umożliwiających oferowanie nowych usług wykorzystujących nowe modele biznesowe bazujące na zasadzie „płać za użycie”. Jednakże, konieczność przesyłania danych pomiędzy użytkownikiem a centrum danych często zlokalizowanym w znacznej odległości, stanowi barierę dla rozwoju usług wymagających przetwarzania danych w czasie zbliżonym do czasu rzeczywistego, np. AR/VR, gier interaktywnych, czy 360 wideo. Nowym rozwiązaniem jest wykorzystanie zasobów obliczeniowych dostępnych poza chmurami obliczeniowymi, zgodnie z koncepcją tzw. „mgły obliczeniowej” (Fog computing), obejmującą zarówno zasoby obliczeniowe na brzegu sieci oferowane w ramach systemów MEC (Multi-Access Edge Computing) jak i zasoby urządzeń zlokalizowanych w otoczeniu użytkownika (mist computing). W ramach prezentacji zostaną przedstawione: i) założenia, koncepcja oraz różnice pomiędzy systemami Fog/Edge/MEC Computing, ii) architektura tych systemów, iii) przykłady nowych aplikacji i usług, które wykorzystują nowe możliwości oferowane przez systemy Fog/Edge/MEC, iv) stan rozwoju techniki przetwarzania na brzegu sieci, obejmujący zarówno stan standaryzacji (np. ETSI MEC), jak i kierunki prac badawczych. W szczególności, pokrótce zostaną omówione obecnie realizowane prace w ramach projektów międzynarodowych tworzących otwarte oprogramowanie oraz rozwiązanie obecnie opracowywane w kraju dla Systemu MEC oferującego usługi przetwarzania danych na brzegu sieci.
Prezentacja z MTS 2010 w ktrórej mówiłem o możliwościach korzystania z Windows Azure jako platformy uruchamiania technologii rozwijanych jako Open Source. W czasie sesji prezentację uzupełniał pokaz na żywo (wykorzystanie WebPI, OGDI).
Wprowadzenie do Kubernetesa oraz omówieni korzyści K8S w kontekście mojego doświadczenia z dwóch startupów, jeden z branży mobile ecommerce i jeden FinTech.
GET.NET - Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...Michal Furmankiewicz
Azure oferuje wiele platform na których możesz uruchomić swoją aplikację. Każda ma swoje zalety i wady. Zrobiłem przegląd tych platform dla Ciebie. W prezentacji wyrażam swoją prywatną opinię.
O zagadnieniu:
Czy następuje taki moment w życiu programisty, kiedy może on stwierdzić, że jego warsztat jest już doskonały? Nie, jeżeli pracuje w technologiach internetowych. Ta dziedzina informatyki rozwija się w niesamowicie szybkim tempie, a stworzone wczoraj rozwiązania warto stosować już dziś!
Cel i korzyści spotkania:
Podczas spotkania słuchacze poznają aktualnie wykorzystywane technologie oraz kluczowe umiejętności w produkcji aplikacji internetowych, jak również metody programowania ekstremalnego i techniki zwinnego wytwarzania oprogramowania. Osobom, które dopiero zaczynają swoją przygodę z web development, zostanie przedstawiona propozycja działań, których sumienne podjęcie się gwarantuje odniesienie sukcesu zawodowego.
4Developers 2015: Szybciej niż Struś Pędziwiatr - WebSockets w aplikacjach we...PROIDEA
Krzysztof Rychlicki-Kicior
Language: Polish
Dawno temu, gdy w kodzie HTML królowały znaczniki FONT i MARQUEE, a zamiast AJAX-a stosowano ukryte ramki, błyskawiczną i dwustronną komunikację z serwerem można było osiągnąć jedynie za pomocą specjalnych wtyczek - np. we wszelkiej maści czatach królowała wówczas Java i applety. Z upływem lat sytuacja poprawiła się, dzięki zastosowaniu AJAX-a czy long pollingu, jednak wciąż była daleka od ideału. Na szczęście, obecnie programiści są w znacznie lepszej sytuacji - dzięki WebSocketom bez żadnego problemu są w stanie zaimplementować komunikację w czasie rzeczywistym, niezbędną np. do gier online, aplikacji do komunikacji czy aplikacji finansowych.
W ramach tego wykładu słuchacze zapoznają się z różnymi koncepcjami stosowanymi w komunikacji pomiędzy przeglądarką a serwerem HTTP, z uwzględnieniem WebSocketów. Oprócz tego zostaną przedstawione mechanizmy obsługi WS od strony serwera, na przykładzie Node.js i Socket.IO. Różne rozwiązania zostaną poddane porównaniu pod kątem wydajności. Mimo licznych zalet, WebSockety niosą za sobą pewne problemy - zostaną one również poddane analizie.
#LaravelPolandMeetup #22
Laravel Poland MeetUp #22 online
Temat: Kilka slajdów o castowaniu atrybutów w Eloquent
Autor: Miłosz Dziurzyński, HighSolutions
Kiedy warto skorzystać z Custom Casts? Jaka jest przewaga interfejsu #Castable? Jak napisać uniwersalną klasę castującą do Value Object?
More Related Content
Similar to WebRTC+Websockety - Jak stworzyłem aplikację do kamerek internetowych w Laravelu
PLNOG23 - Bartosz Belter & dr hab. inż. Andrzej Bęben - Techniki przetwarzani...PROIDEA
Chmury obliczeniowe zapewniają powszechny, wygodny dostęp do teoretycznie „nieograniczonych” zasobów obliczeniowych umożliwiających oferowanie nowych usług wykorzystujących nowe modele biznesowe bazujące na zasadzie „płać za użycie”. Jednakże, konieczność przesyłania danych pomiędzy użytkownikiem a centrum danych często zlokalizowanym w znacznej odległości, stanowi barierę dla rozwoju usług wymagających przetwarzania danych w czasie zbliżonym do czasu rzeczywistego, np. AR/VR, gier interaktywnych, czy 360 wideo. Nowym rozwiązaniem jest wykorzystanie zasobów obliczeniowych dostępnych poza chmurami obliczeniowymi, zgodnie z koncepcją tzw. „mgły obliczeniowej” (Fog computing), obejmującą zarówno zasoby obliczeniowe na brzegu sieci oferowane w ramach systemów MEC (Multi-Access Edge Computing) jak i zasoby urządzeń zlokalizowanych w otoczeniu użytkownika (mist computing). W ramach prezentacji zostaną przedstawione: i) założenia, koncepcja oraz różnice pomiędzy systemami Fog/Edge/MEC Computing, ii) architektura tych systemów, iii) przykłady nowych aplikacji i usług, które wykorzystują nowe możliwości oferowane przez systemy Fog/Edge/MEC, iv) stan rozwoju techniki przetwarzania na brzegu sieci, obejmujący zarówno stan standaryzacji (np. ETSI MEC), jak i kierunki prac badawczych. W szczególności, pokrótce zostaną omówione obecnie realizowane prace w ramach projektów międzynarodowych tworzących otwarte oprogramowanie oraz rozwiązanie obecnie opracowywane w kraju dla Systemu MEC oferującego usługi przetwarzania danych na brzegu sieci.
Prezentacja z MTS 2010 w ktrórej mówiłem o możliwościach korzystania z Windows Azure jako platformy uruchamiania technologii rozwijanych jako Open Source. W czasie sesji prezentację uzupełniał pokaz na żywo (wykorzystanie WebPI, OGDI).
Wprowadzenie do Kubernetesa oraz omówieni korzyści K8S w kontekście mojego doświadczenia z dwóch startupów, jeden z branży mobile ecommerce i jeden FinTech.
GET.NET - Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...Michal Furmankiewicz
Azure oferuje wiele platform na których możesz uruchomić swoją aplikację. Każda ma swoje zalety i wady. Zrobiłem przegląd tych platform dla Ciebie. W prezentacji wyrażam swoją prywatną opinię.
O zagadnieniu:
Czy następuje taki moment w życiu programisty, kiedy może on stwierdzić, że jego warsztat jest już doskonały? Nie, jeżeli pracuje w technologiach internetowych. Ta dziedzina informatyki rozwija się w niesamowicie szybkim tempie, a stworzone wczoraj rozwiązania warto stosować już dziś!
Cel i korzyści spotkania:
Podczas spotkania słuchacze poznają aktualnie wykorzystywane technologie oraz kluczowe umiejętności w produkcji aplikacji internetowych, jak również metody programowania ekstremalnego i techniki zwinnego wytwarzania oprogramowania. Osobom, które dopiero zaczynają swoją przygodę z web development, zostanie przedstawiona propozycja działań, których sumienne podjęcie się gwarantuje odniesienie sukcesu zawodowego.
4Developers 2015: Szybciej niż Struś Pędziwiatr - WebSockets w aplikacjach we...PROIDEA
Krzysztof Rychlicki-Kicior
Language: Polish
Dawno temu, gdy w kodzie HTML królowały znaczniki FONT i MARQUEE, a zamiast AJAX-a stosowano ukryte ramki, błyskawiczną i dwustronną komunikację z serwerem można było osiągnąć jedynie za pomocą specjalnych wtyczek - np. we wszelkiej maści czatach królowała wówczas Java i applety. Z upływem lat sytuacja poprawiła się, dzięki zastosowaniu AJAX-a czy long pollingu, jednak wciąż była daleka od ideału. Na szczęście, obecnie programiści są w znacznie lepszej sytuacji - dzięki WebSocketom bez żadnego problemu są w stanie zaimplementować komunikację w czasie rzeczywistym, niezbędną np. do gier online, aplikacji do komunikacji czy aplikacji finansowych.
W ramach tego wykładu słuchacze zapoznają się z różnymi koncepcjami stosowanymi w komunikacji pomiędzy przeglądarką a serwerem HTTP, z uwzględnieniem WebSocketów. Oprócz tego zostaną przedstawione mechanizmy obsługi WS od strony serwera, na przykładzie Node.js i Socket.IO. Różne rozwiązania zostaną poddane porównaniu pod kątem wydajności. Mimo licznych zalet, WebSockety niosą za sobą pewne problemy - zostaną one również poddane analizie.
#LaravelPolandMeetup #22
Laravel Poland MeetUp #22 online
Temat: Kilka slajdów o castowaniu atrybutów w Eloquent
Autor: Miłosz Dziurzyński, HighSolutions
Kiedy warto skorzystać z Custom Casts? Jaka jest przewaga interfejsu #Castable? Jak napisać uniwersalną klasę castującą do Value Object?
#LaravelPolandMeetup #22
Laravel Poland MeetUp #22 online
Temat: Licencje otwartego oprogramowania
Autor: Joanna Rewak
Jakie są zasady działania licencji otwartego oprogramowania?
Jak należy rozumieć #licencje otwartego oprogramowania na przykładzie #Laravel i jego zależności? Czy możemy zarabiać na programach, które wykorzystują różne biblioteki? Czy musimy dodawać nazwiska twórców wykorzystywanych zależności?
#LaravelPolandMeetup #22
Laravel Poland MeetUp #22 online
Temat: Jak przyspieszyłem aplikację produkcyjną o ponad 40%
Autor: Patryk Filipiak
Czy #PHP może być szybki? Jak stworzyć kod, który sprawi, że #aplikacja będzie szybka? Jak mierzyć wydajność tworzonej aplikacji?
3. Czym się dzisiaj zajmiemy?
● WebRTC - co to? Do czego służy?
● Websockety - dlaczego ich potrzebujemy?
4. Czym jest WebRTC
WebRTC (Web Real-Time Communication) – wolny (od wolności, a nie od
szybkości) i otwartoźródłowy projekt wbudowany w (nowoczesne)
przeglądarki internetowe jako część standardu HTML5 zaimplementowany
jako API javascriptowe.
Pozwala na komunikację typu peer-to-peer w czasie rzeczywistym między
przeglądarkami internetowymi.
Najczęściej służy do przesyłu audio i wideo, czyli grupowe czaty itp.
Największym plusem protokołu jest fakt, że nie wymaga instalacji żadnych
wtyczek czy innych aplikacji, wystarczy zaktualizowana przeglądarka
internetowa na komputerze lub smartfonie.
5. Jakie wyróżniamy sieci WebRTC
Wyróżniamy 3 rodzaje sieci dla połączeń WebRTC
● Mesh - który omawia dzisiejsza prezentacja
● SFU
● MCU
Grafika pochodzi z https://bloggeek.me
6. Kroki przy tworzeniu połączenia WebRTC
1. Signaling
2. Connecting
3. Securing
4. Communicating
Istotny szczegół - każdy krok musi zostać wykonany w 100% zanim
przejdziemy do kolejnego.
7. Zanim zaczniemy się łączyć - Websockety
Websocket - protokół zapewniający dwukierunkowy kanał wymiany danych między klientem
(przeglądarką) a serwerem. Zwykle używany przy chatach.
Przeglądarka łączy się z serwerem za pomocą zdefiniowanego kanału i nasłuchuje na wydarzenia
(eventy) emitowane przez serwer.
Dla Laravela możemy użyć kilku rozwiązań:
● Soketi (TypeScript) - substytut Pushera
● Pusher (rozwiązanie komercyjne)
● Socket.IO
● BeyondCode Laravel Websockets - substytut Pushera
● Ratchet
8. Przykładowy event w Laravelu
<?php
namespace AppEvents;
class CommentDeleted implements ShouldBroadcast
{
use Dispatchable, InteractsWithSockets, SerializesModels;
public function __construct(
public CommentBroadcastResource $comment
) {
}
public function broadcastOn()
{
return new Channel('projects.'.$this->comment->project_id);
}
}
10. Przykładowy event w Laravelu
this.channel = this.pusher.subscribe(
'presence-session.' + this.session_id
)
this.channel.bind('comment-deleted', data =>
this.delete(JSON.parse(data.comment))
)
11. Powrót do WebRTC - Signalling
Kiedy już mamy skonstruowany protokół służący nam do szybkiej i dwustronnej komunikacji klient-serwer,
możemy przejść do punktu pierwszego nawiązywania połączenia WebRTC. Wspomniałem wcześniej, że
WebRTC to protokół komunikacji przeglądarka-przeglądarka, ale najpierw musimy je ze sobą jakoś
skontaktować, w tym celu posłużą nam Websockety.
Signalling - pierwszy i najważniejszy krok. W tym celu odsyłam przede wszystkim do
dokumentacji i hasła PERFECT NEGOTIATION.
Signalling w skrócie polega na tym, że za pomocą javascriptu “przejmujemy kontrolę” nad
lokalnymi mediami - mikrofon, kamerka, obraz, po czym przesyłamy wszelkie informacje o
nich do drugiej przeglądarki za pomocą Websocketów jako SDP (Session Description
Protocol).
12. Powrót do WebRTC - Signalling cd.
const signaling = new SignalingChannel(); // handles
JSON.stringify/parse
const constraints = {audio: true, video: true};
const configuration = {iceServers: [{urls: 'stun:stun.example.org'}]};
const pc = new RTCPeerConnection(configuration);
async function start() {
try {
const stream = await
navigator.mediaDevices.getUserMedia(constraints);
for (const track of stream.getTracks()) {
pc.addTrack(track, stream);
}
selfView.srcObject = stream;
} catch (err) {
console.error(err);
}
}
13. Powrót do WebRTC - Signalling cd.
let makingOffer = false;
let ignoreOffer = false;
let isSettingRemoteAnswerPending = false;
// let the "negotiationneeded" event trigger offer generation
pc.onnegotiationneeded = async () => {
try {
makingOffer = true;
await pc.setLocalDescription();
signaling.send({description: pc.localDescription});
} catch (err) {
console.error(err);
} finally {
makingOffer = false;
}
};
14. WebRTC - Connecting
Kolejnym krokiem jest wymiana informacji o możliwości połączenia się między przeglądarkami (adresy ip,
porty), w tym celu służą ICE (Interactive Connectivity Establishment) candidates. Zwykle nasze sieci mogą
stać za firewallami itd, co może skutecznie blokować połączenie. Dlatego polecam skonfigurować
dodatkowo ice servers (STUN/TURN). W internecie jest kilka darmowych, ale jeśli chcemy używać
WebRTC dla wzmożonego ruchu - warto zakupić własny.
Grafika pochodzi z
https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API/Connectivity
15. Powrót do WebRTC - Perfect Negotiation
W prawdziwych warunkach nic nie jest idealne, może dojść do opóźnień lub zakleszczeń - obie
przeglądarki wyślą offer w tym samym momencie, dlatego warto zastosować design pattern zwany
Perfect Negotiation. Jest on o tyle dobry, że mamy jeden codebase, który wszystkim zarządza.
Pattern zakłada, że jedna przeglądarka występuje w roli polite, druga impolite - jak je podzielić zależy od
developera, u mnie decyduje o tym, kto pierwszy podłączył się do websocketów. Następnie obie
przeglądarki mogą do siebie wysyłać w tym samym czasie SDP i ICE, a jeśli dojdzie do zakleszczenia -
algorytm sam go rozwiąże - przeglądarka impolite zignoruje offer drugiej, jeśli sama go już wysłała.
Polecam wzorować się na tym przykładzie z samej dokumentacji na stronie
mozilli lub w3c.github.io - pozwala uniknąć błędów i frustracji.
16. WebRTC - Securing i Communicating
Krok securing odbywa się automatycznie i nie da się w niego zaingerować w żaden
sposób.
Communicating polega na przesyle obrazu/audio między połączonymi przeglądarkami w
obiektach MediaStream. W międzyczasie można do woli podmieniać źródła obrazu i
dźwięku - wtedy od nowa powinno się ustanowić połączenie, ale to zabezpiecza nam
perfect negotiation.
17. Tips & tricks
Żadne znane mi rozwiązanie związane z Websocketami nie oferowały prostego
przesyłu client eventu za pomocą websocketu zamiast requestu HTTP, jednak Laravel
Websockets po lekkim zmodyfikowaniu idealnie się do tego nadaje (jednak wymusza
to na nas forkowanie projektu i/lub nadpisywanie kilku klas i zatrzymanie wersji
paczki w composer.json).