O tworzeniu rozwiązań mobilnych z punktu widzenia front-end dewelopera. Omówienie istniejących rozwiązań oraz głębsza analiza biblioteki NativeScript wraz z demem.
Demo #1: https://github.com/pawelkondraciuk/nativescript-hello-world-demo-1
Demo #2: https://github.com/pawelkondraciuk/sample-groceries-demo-2
Franciszek Krasowski: Zastanawialiście się kiedyś nad tym, czym jest PHP-PM? Jak działa? Jak wypada w porównaniu do innych popularnych rozwiązań? Czy jest wystarczająco stabilny? Franciszek Krasowski odpowie na wszystkie te pytania (a także na te, których jeszcze nie zadaliście).
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...The Software House
Niezależnie od tego, czy jesteście developerami, sysadminami, czy też DevOps Engineers – prawie na pewno mieliście doświadczenie z webowymi panelami dostawców usług infrastrukturalnych takich jak AWS, GCP czy też OVH. Z poziomu tych paneli da się “wyklikać” wszystko, czego potrzeba, ale… czy aby na pewno tędy droga? Środowiskiem bardziej naturalnym dla każdego inżyniera jest wszakże edytor tekstu (czy też IDE) oraz różnorakie polecenia wydawane komputerowi w formie skryptów. Czemu by więc z tego nie skorzystać? Jeśli od klikania bez możliwości pomyłki boli Was ręka, zainwestuj w podkładkę pod mysz… ale przede wszystkim wpadnij na prelekcję Piotra, na której to opowie o założeniach podejścia IaC, jego zaletach oraz przedstawi najpopularniejsze narzędzia.
Adrian Chlubek: Czy PHP jest gotowy na websockety? Czy architektura samego języka nie stoi na przeszkodzie? Zobaczymy jakie mamy możliwości pracy z Websocketami, porównamy trzy popularne rozwiązania umożliwiające taką komunikację, a następnie odpowiemy sobie na pytanie – czy to ma sens?
Adrian Chlubek: Dowiemy się, czym jest Swoole, w jakim celu został stworzony i jakie funkcjonalności oferuje – wszystko to na żywych przykładach. Przede wszystkim jednak spróbujemy odpowiedzieć sobie na pytanie: czy używanie Swoole ma sens?
Repozytorium z przykładami: https://github.com/achlubek/swoole_experiments
Dokumentacja Swoole: https://www.swoole.co.uk/docs/
LocalStack to framework udostępniający łatwe w użyciu mocki usług stosu AWS. Podczas prezentacji Maciej skorzystał z serwisu zbudowanego z użyciem serverlessowego Boilerplate autorstwa The Software House oraz skorzystał z takich usług AWS jak API Gateway, DynamoDB, Lambda, StepFunctions czy SQS. Następnie omówił podejście do testowania rozwiązania. Dzięki prezentacji możecie poznać wady i zalety LocalStack. A na koniec Maciej pokazuje przepływ testowy w GitHub Actions, który zwiększy pewność przyszłych zmian.
Nowe, potężne narzędzia do tworzenia stron internetowych pojawiają się niemal codziennie. My w zespole postanowiliśmy jednak cofnąć się o krok i postawić na to co proste, ale użyteczne. Efekt? Korzyści dla zespołu i dla klienta. Podczas prezentacji opowiem o tym, co zyskaliśmy oraz wprowadzę słuchaczy w świat Hugo – nowoczesnego generatora stron statycznych.
Czym tak naprawdę jest deployment, co może pójść nie tak i w jaki sposób możemy się przed tym zabezpieczyć, korzystając z Kubernetesa i jego ekosystemu. Zaczniemy od tego, jakie są rodzaje deploymentów, po czym wspomnimy dlaczego należy uważac z healthcheckami. Czym jest Circuit Breaker i jak może nam pomóc? Jak wygląda Canary Analysis w praktyce? Odpowiedzi na te wszystkie pytania z pewnością sprawią, że przycisk “Deploy To Production” przestanie być taki straszny.
Franciszek Krasowski: Zastanawialiście się kiedyś nad tym, czym jest PHP-PM? Jak działa? Jak wypada w porównaniu do innych popularnych rozwiązań? Czy jest wystarczająco stabilny? Franciszek Krasowski odpowie na wszystkie te pytania (a także na te, których jeszcze nie zadaliście).
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...The Software House
Niezależnie od tego, czy jesteście developerami, sysadminami, czy też DevOps Engineers – prawie na pewno mieliście doświadczenie z webowymi panelami dostawców usług infrastrukturalnych takich jak AWS, GCP czy też OVH. Z poziomu tych paneli da się “wyklikać” wszystko, czego potrzeba, ale… czy aby na pewno tędy droga? Środowiskiem bardziej naturalnym dla każdego inżyniera jest wszakże edytor tekstu (czy też IDE) oraz różnorakie polecenia wydawane komputerowi w formie skryptów. Czemu by więc z tego nie skorzystać? Jeśli od klikania bez możliwości pomyłki boli Was ręka, zainwestuj w podkładkę pod mysz… ale przede wszystkim wpadnij na prelekcję Piotra, na której to opowie o założeniach podejścia IaC, jego zaletach oraz przedstawi najpopularniejsze narzędzia.
Adrian Chlubek: Czy PHP jest gotowy na websockety? Czy architektura samego języka nie stoi na przeszkodzie? Zobaczymy jakie mamy możliwości pracy z Websocketami, porównamy trzy popularne rozwiązania umożliwiające taką komunikację, a następnie odpowiemy sobie na pytanie – czy to ma sens?
Adrian Chlubek: Dowiemy się, czym jest Swoole, w jakim celu został stworzony i jakie funkcjonalności oferuje – wszystko to na żywych przykładach. Przede wszystkim jednak spróbujemy odpowiedzieć sobie na pytanie: czy używanie Swoole ma sens?
Repozytorium z przykładami: https://github.com/achlubek/swoole_experiments
Dokumentacja Swoole: https://www.swoole.co.uk/docs/
LocalStack to framework udostępniający łatwe w użyciu mocki usług stosu AWS. Podczas prezentacji Maciej skorzystał z serwisu zbudowanego z użyciem serverlessowego Boilerplate autorstwa The Software House oraz skorzystał z takich usług AWS jak API Gateway, DynamoDB, Lambda, StepFunctions czy SQS. Następnie omówił podejście do testowania rozwiązania. Dzięki prezentacji możecie poznać wady i zalety LocalStack. A na koniec Maciej pokazuje przepływ testowy w GitHub Actions, który zwiększy pewność przyszłych zmian.
Nowe, potężne narzędzia do tworzenia stron internetowych pojawiają się niemal codziennie. My w zespole postanowiliśmy jednak cofnąć się o krok i postawić na to co proste, ale użyteczne. Efekt? Korzyści dla zespołu i dla klienta. Podczas prezentacji opowiem o tym, co zyskaliśmy oraz wprowadzę słuchaczy w świat Hugo – nowoczesnego generatora stron statycznych.
Czym tak naprawdę jest deployment, co może pójść nie tak i w jaki sposób możemy się przed tym zabezpieczyć, korzystając z Kubernetesa i jego ekosystemu. Zaczniemy od tego, jakie są rodzaje deploymentów, po czym wspomnimy dlaczego należy uważac z healthcheckami. Czym jest Circuit Breaker i jak może nam pomóc? Jak wygląda Canary Analysis w praktyce? Odpowiedzi na te wszystkie pytania z pewnością sprawią, że przycisk “Deploy To Production” przestanie być taki straszny.
Testy wydajnościowe to nie tylko JMeter. Podobnie jak w przypadku testów automatycznych, liczba frameworków do badania wydajności stale rośnie. Poza wprowadzeniem w tematykę testów wydajnościowych, w trakcie prezentacji przyjrzymy się ich implementacji we frameworku k6. Opowiemy również dlaczego w The Software House postawiliśmy na jego wybór i jak dzięki prostym skryptom testowym zoptymalizowaliśmy kilka naszych projektów.
Trudne jest zarządzanie własną infrastrukturą. Trochę prościej jest użyć chmury, jednak wciąż czeka nas sporo konfiguracji. A co, gdyby wszystkie potrzebne usługi skonfigurowały się “same”, a nam pozostało tylko doglądanie całości? AWS Elastic Beanstalk umożliwia zautomatyzowane skonfigurowanie środowiska w chmurze AWS pod konkretne aplikacje. Można dzięki niemu wygodnie uruchomić Dockerowe kontenery i właśnie tym zajmiemy się na prezentacji. Opowiemy pokrótce jak działa Beanstalk i przeprowadzimy deployment przykładowego programu). I to wszystko bez zastanawiania się nad infrastrukturalnymi szczegółami.
Laravel Poznań Meetup #3 - Uruchomienie i praca z Laravel w wirtualnym konten...HighSolutions Sp. z o.o.
Prezentacja, która miała miejsce 2018-04-25 w Poznaniu. Wykonanie: Marek Tenus (HighSolutions).
Jak zainstalować i skonfigurować Dockera? Czym się różni od innych rozwiązań? Jakie są korzyści z korzystania z Dockera?
O mojej skrzynce z narzędziami, w której znajdziemy: #ansible #terraform #packer #docker #vagrant #capistrano.
Video: https://www.youtube.com/watch?v=fPZ7JZJGPTE
Core Web Vitals to metryki przygotowane przez Google w celu pomiaru wydajności aplikacji oraz User Experience. Są one składowymi wyniku “Performance” obliczanego przez narzędzie Lighthouse. W swojej prezentacji Marcin przybliży temat poszczególnych metryk, a następnie na kilku przykładach postaram się zaprezentować problemy wpływające na niższy wynik oraz jak sobie z nimi poradzić. Całość prezentacji opierać się będzie na prostej aplikacji Next.js, której wynik będziemy starać się poprawić, korzystając z kilku ciekawych narzędzi.
Wykład ze styczniowego spotkania grupy UW@IT pt. "Ansible w praktyce".
Ansible jest narzędziem wykorzystywanym do automatyzacji codziennych działań związanych z tworzeniem oraz utrzymaniem infrastruktury IT.
Docker jest wspaniałą technologią. Przy pomocy Dockera w prosty sposób możemy rozwiązać jeden problem, a na jego miejsce stworzyć dwa inne, nowe, bardziej skomplikowane... Co jest powodem takiego stanu rzeczy? Czy przyczyną jest architektura Dockera? Brak zrozumienia? A może coś więcej?
Bartosz Tkaczewski: Zarządzanie kontenerami może być proste, a nawet przyjemne. Na prezentacji dowiesz się, jak szybko uruchomić klaster na chmurze Googla oraz jak w szybki i wygodny sposób wdrożyć aplikację. Nie zabraknie liźnięcia technikaliów – tych podstawowych i tych nie do końca oczywistych. Aby wilk był syty, a i owca nadal beczała.
Link do repozytorium: https://github.com/tkaczu/uszanowanko-k8s
GWINT: Przetwarzanie rozproszone z wykorzystaniem komunikacji asynchronicznej...GOG.com dev team
GWINT jako gra online nastawiona na obsługę milionów graczy wymaga wyjątkowo skalowalnej architektury. Opowiemy między innymi o tym:
– jak API zbudowane na Symfony w modelu mikro serwisów wykorzystuje asynchroniczną komunikację pomiędzy usługami i klientem (system notyfikacji),
– jak optymalizujemy procesowanie zdarzeń wymagających współpracy kilku usług (kolejki zadań), jak monitorujemy i testujemy integrację poszczególnych webservice’ów. Przewiną się także technologie takie jak: PHP7, HHVM, RabbitMq, Redis,
Krzysztof Sobczak GOG.com Team
RT Info-Sheet (Hose Reel Payout & Rewind)Stuart Morgan
- Any unstored hose deployed on the ground presents risks that must be managed by the owner/operator to prevent potential injuries.
- Proper use of modern hose reels designed with safety features like controlled rewind speeds promotes easier and safer storage of hoses which reduces risks.
- When deploying hoses, only pull out manageable portions and ensure hoses are laid flat on the ground to reduce trip hazards. Never deploy more hose than needed for the job.
Testy wydajnościowe to nie tylko JMeter. Podobnie jak w przypadku testów automatycznych, liczba frameworków do badania wydajności stale rośnie. Poza wprowadzeniem w tematykę testów wydajnościowych, w trakcie prezentacji przyjrzymy się ich implementacji we frameworku k6. Opowiemy również dlaczego w The Software House postawiliśmy na jego wybór i jak dzięki prostym skryptom testowym zoptymalizowaliśmy kilka naszych projektów.
Trudne jest zarządzanie własną infrastrukturą. Trochę prościej jest użyć chmury, jednak wciąż czeka nas sporo konfiguracji. A co, gdyby wszystkie potrzebne usługi skonfigurowały się “same”, a nam pozostało tylko doglądanie całości? AWS Elastic Beanstalk umożliwia zautomatyzowane skonfigurowanie środowiska w chmurze AWS pod konkretne aplikacje. Można dzięki niemu wygodnie uruchomić Dockerowe kontenery i właśnie tym zajmiemy się na prezentacji. Opowiemy pokrótce jak działa Beanstalk i przeprowadzimy deployment przykładowego programu). I to wszystko bez zastanawiania się nad infrastrukturalnymi szczegółami.
Laravel Poznań Meetup #3 - Uruchomienie i praca z Laravel w wirtualnym konten...HighSolutions Sp. z o.o.
Prezentacja, która miała miejsce 2018-04-25 w Poznaniu. Wykonanie: Marek Tenus (HighSolutions).
Jak zainstalować i skonfigurować Dockera? Czym się różni od innych rozwiązań? Jakie są korzyści z korzystania z Dockera?
O mojej skrzynce z narzędziami, w której znajdziemy: #ansible #terraform #packer #docker #vagrant #capistrano.
Video: https://www.youtube.com/watch?v=fPZ7JZJGPTE
Core Web Vitals to metryki przygotowane przez Google w celu pomiaru wydajności aplikacji oraz User Experience. Są one składowymi wyniku “Performance” obliczanego przez narzędzie Lighthouse. W swojej prezentacji Marcin przybliży temat poszczególnych metryk, a następnie na kilku przykładach postaram się zaprezentować problemy wpływające na niższy wynik oraz jak sobie z nimi poradzić. Całość prezentacji opierać się będzie na prostej aplikacji Next.js, której wynik będziemy starać się poprawić, korzystając z kilku ciekawych narzędzi.
Wykład ze styczniowego spotkania grupy UW@IT pt. "Ansible w praktyce".
Ansible jest narzędziem wykorzystywanym do automatyzacji codziennych działań związanych z tworzeniem oraz utrzymaniem infrastruktury IT.
Docker jest wspaniałą technologią. Przy pomocy Dockera w prosty sposób możemy rozwiązać jeden problem, a na jego miejsce stworzyć dwa inne, nowe, bardziej skomplikowane... Co jest powodem takiego stanu rzeczy? Czy przyczyną jest architektura Dockera? Brak zrozumienia? A może coś więcej?
Bartosz Tkaczewski: Zarządzanie kontenerami może być proste, a nawet przyjemne. Na prezentacji dowiesz się, jak szybko uruchomić klaster na chmurze Googla oraz jak w szybki i wygodny sposób wdrożyć aplikację. Nie zabraknie liźnięcia technikaliów – tych podstawowych i tych nie do końca oczywistych. Aby wilk był syty, a i owca nadal beczała.
Link do repozytorium: https://github.com/tkaczu/uszanowanko-k8s
GWINT: Przetwarzanie rozproszone z wykorzystaniem komunikacji asynchronicznej...GOG.com dev team
GWINT jako gra online nastawiona na obsługę milionów graczy wymaga wyjątkowo skalowalnej architektury. Opowiemy między innymi o tym:
– jak API zbudowane na Symfony w modelu mikro serwisów wykorzystuje asynchroniczną komunikację pomiędzy usługami i klientem (system notyfikacji),
– jak optymalizujemy procesowanie zdarzeń wymagających współpracy kilku usług (kolejki zadań), jak monitorujemy i testujemy integrację poszczególnych webservice’ów. Przewiną się także technologie takie jak: PHP7, HHVM, RabbitMq, Redis,
Krzysztof Sobczak GOG.com Team
RT Info-Sheet (Hose Reel Payout & Rewind)Stuart Morgan
- Any unstored hose deployed on the ground presents risks that must be managed by the owner/operator to prevent potential injuries.
- Proper use of modern hose reels designed with safety features like controlled rewind speeds promotes easier and safer storage of hoses which reduces risks.
- When deploying hoses, only pull out manageable portions and ensure hoses are laid flat on the ground to reduce trip hazards. Never deploy more hose than needed for the job.
Descripción de Gestar ITIL. Gestión de procesos de Service Desk, Gestión de Incidentes, Problemas, Cambios, Base de Configuraciones y Acuerdos de Niveles de Servicio, en el marco de ITIL, ISO-20000 y CoBit.
This document summarizes and compares various Ruby driver and ORM libraries for MongoDB, including Mongoid, MongoMapper, Mongomatic, and MongoODM. It discusses their features like querying syntax, associations, embedded documents, validation, and ActiveModel integration. It also provides code examples for creating and querying documents using these different libraries.
This document provides an introduction to MongoDB and building a sample library management application using MongoDB. It discusses key MongoDB concepts like using documents and collections instead of tables and rows, embedding documents, indexing, and querying. Examples are given of inserting, updating, and querying book and author documents to model the library application. The document emphasizes that MongoDB allows flexible schema evolution and complex queries on nested and array data.
MongoDB 3.4: Deep Dive on Views, Zones, and MongoDB CompassMongoDB
Thomas Boyd, Principal Solutions Architect, MongoDB
MongoDB Evenings San Francisco
March 21, 2017
MongoDB 3.4 was released in November 2016 and contains a wealth of new features that allow developers, DBAs, architects, and data scientists to tackle a wide variety of use cases. After an overview of 3.4, Thomas will provide a deep dive on using MongoDB views to encapsulate complex aggregation logic and to enhance MongoDB security, using zones to create a cross-continent, multi-master MongoDB cluster, and using MongoDB Compass to browse and interact with the data stored in your cluster.
The Top Skills That Can Get You Hired in 2017LinkedIn
We analyzed all the recruiting activity on LinkedIn this year and identified the Top Skills employers seek. Starting Oct 24, learn these skills and much more for free during the Week of Learning.
#AlwaysBeLearning https://learning.linkedin.com/week-of-learning
Co nowego w VS 2013 dla programistów ASP.NET?Bartlomiej Zass
Sesja z konferencji Microsoft Technology Summit 2013 na temat nowości, które pojawiły się w ASP.NET 4.5.1 oraz Visual Studio 2013 dla web deweloperów. Poruszane zagadnienia to m.in.: zmiany w IDE / Web Essentials, Web Forms, ASP.NET MVC 5, OWIN, SignalR, Web API 2
Aplikacje mobilne tworzone w technologiach webowychTomasz Borowski
Android, iOS, Windows Phone... Czy zróżnicowanie platform i języków programowania musi być przeszkodą w tworzeniu aplikacji mobilnych? Na szczęście nie! Dzięki technologiom webowym możemy tworzyć oprogramowanie działające na wielu platformach, a posiadane doświadczenie w HTML i JavaScript może znacznie przyspieszyć pracę i ukończenie projektu. Podczas wystąpienia zostaną przedstawione dostępne narzędzia i biblioteki do tworzenia cross-platformowych aplikacji mobilnych.
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...Mateusz Paprocki, PMP
Każdy zespół pracujący w środowisku mikroserwisów boryka się z podobnymi problemami: jak dbać o jakość kodu, organizować feature branche, testować zmiany, budować kolejne wersje aplikacji, zarządzać środowiskami, czy, finalnie, doprowadzić do automatycznych release’ów. W prezentacji przygotowanej przez trójmiejski software house Neoteric zobaczymy jedną z koncepcji rozwiązania problemów. Przygotujcie się na solidną dawkę Jenkinsa, Dockera, GitFlow oraz Sonara!
Silverlight i PHP - jak budować interfejs nowoczesnych aplikacji internetowych?PHPCon Poland
Autor: Michał Żyliński
Projektujesz serwisy lub aplikacje internetowe i czujesz, że popadasz w rutynę? Zobacz, co może zaoferować Silverlight, ninja i czarny koń technologii RIA.
Współdzielenie kodu aplikacji Windows Phone i Windows 8Bartlomiej Zass
Przegląd technik współdzielenia kodu aplikacji między Windows Phone i Windows 8 (WinRT). Omawiane jest zarówno podejście opierające się o HTML i Javascript jak i aplikacje natywne (wzorzec MVVM, portable class libraries, wybrane praktyki architektoniczne i sztuczki w IDE).
Kivy to biblioteka pythonowa do tworzenia wieloplatformowych aplikacji GUI.
Samples: https://github.com/daftcode/pywaw_kivy_na_androidzie/blob/master/README.md
Krótka prezentacja na temat możliwości platformy Google Web Toolkit oraz przedstawienie sposobu stworzenia nowego projektu dla GWT w środowisku Eclipse.
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.
Similar to Jak zostać mobile deweloperem w 1 dzień (20)
19. Architektura
• Brak DOM
• Natywne komponenty
• JavaScript Virtual Machine
• Moduły node.js
Google V8 JavaScript Engine
WebKit JavaScript Core
20. Appcelerator Titanium
• Płatny $36/miesiąc
• Słaba dokumentacja
• Słabe wsparcie
• Wolny
„If I had a time machine, I’d stay away from this.”
21. React Native
• Naucz się raz, pisz wszędzie
• Shadow DOM
• JS, JSX, style objects
• oddzielne widoki na iOS i Android
• dostęp do API przez natywne
moduły
22. Hello World!
import React, { Component } from 'react';
import { AppRegistry, Text } from 'react-native';
class HelloWorldApp extends Component {
render() {
return (
<Text>Hello world!</Text>
);
}
}
AppRegistry
.registerComponent('HelloWorldApp', () => HelloWorldApp);
29. Brak API Wrappers
• Android
• iOS
var time = new android.text.format.Time();
time.set(1, 0, 2015);
console.log(time.format("%D"));
var alert = new UIAlertView();
alert.message = "Hello world!";
alert.addButtonWithTitle("OK");
alert.show();
32. Metadane
1. Generowanie listy dostępnego API
2. Budowanie drzewa metadanych
3. Wstrzykiwanie zależności do globalnego zakresu
API
Metadata.dat
android
util
Config() Log()
nfc
Tag()
Global
33. Jak to działa?
var file = new java.io.File(path);
java.lang.StringKonwersja typów
java.io.File()Metadane
java.io.File() file = FileProxyCall dispatcher
JavaScript Virtual Machine
43. Podsumowanie
• Mobilki to nie tylko Java/ObjC/C#
• JavaScript to potężny język
• Jeden dzień to za mało żeby zostać mobile deweloperem
• Wystarczą dwa
Moim zdaniem główne punkty do przemycenia byłyby takie:
- robimy od nowa fajne projekty dla dobrych klientów;
- staramy się zawsze z klientem wywalczyć maksymalną dowolność w wyborze technologii;
- stack technologiczny wybieramy także pod kątem szczęśliwości naszych developerów;
- nie boimy się wchodzić w nowe rzeczy (np. Elixir/Phoenix na backendzie, Angular 2 na froncie);
- nie robimy tylko CRUDów, potrafimy ogarnąć naprawdę skomplikowane rzeczy - np. codebeat;
- robimy też swoje rzeczy - na razie codebeat, ale w przyszłości będzie tego więcej;
- stawiamy na rozwój osobisty programistów, zachęcamy do nauki, także finansowo;
- mamy dobrze ogarnięty proces:
- code review, także pomiędzy projektami;
- pair programming dla chętnych;
- używamy najlepszych dostępnych na rynku narzędzi nawet jeśli są najdroższe (np. Slack);
- atmosfera (memy, PlayStation, V2MOM, godna płaca) ;
Kiedyś było łatwo, Windows albo Web. 2007 iPhone WWDC Steve Jobs
Dostęp przez api przeglądarki (notyfikacje, lokalna baza), często wymaga oddzielnego szablonu dla aplikacji mobilnych
Wiele wersji kodu
Wymaga wielu zespołów
Wydłuża proces
Jest kosztowne
Trudne w utrzymaniu
Powtarzalne błędy
Zmiany są jeszcze bardziej kosztowne
Dostęp do natywnego API
Wydajność
Look and Feel
Kompilacja skośna.
dostęp do API przez wrappery.
Ios kompilowany(Ahead-of-time) do natywnego ARM,
Android do języka pośredniego (IL), który jest JIT’owany do natwynego języka gdy aplikacja zostaje uruchomiona.
przejęty przez Microsoft i zintegrowany z Visual Studio.
OPEN SOURCE
Ograniczenia android: brak konstruktora, generyczne klasy są częściowo wspierane
Ograniczenia ios: Ograniczenia w dziedziczeniu NSObjects i dynamicznego generowania kodu System.Reflection.Emit
https://developer.xamarin.com/guides/cross-platform/application_fundamentals/building_cross_platform_applications/part_1_-_understanding_the_xamarin_mobile_platform/
Jedna baza kodu,
brak możliwości korzystania z UI Widgets
natywne API jest opakowane przez pluginy,
używa WebView i operuje na 1 watku więc jest niska wydajność,
niski koszt dewelopmentu, słaba dokumentacja.
Cordova to silnik renderujący używany przez PhoneGap (coś jak webkit dla Chorme).
Ionic to framework który renderuje wszystkie widoku w pojedynczym WebView (menu, nawigacja, zakładki jako dyrektywy AngularJS) a zmiany ekranów są animowane za pomocą CSSa. Material design
Supersonic wiele WebView, które przetrzymują różne dokumenty (index.html, contact.html). Nawigacja jest natywna. Zmiana ekranu odbywa się przez przejście do drugiego WebView (przejścia są wykonywane natywnie) a stan poprzedniego ekranu jest taki sam. Supersonic pozwala na używanie natywnych komponentów (np. Action bara) przez definiowanie ich w HTMLu
W skrócie Ionic to czysty AngularJS a Supersonic bardziej wykorzystuje natywność.
http://developer.telerik.com/featured/what-is-a-hybrid-mobile-app/
Na początku roku przeszli na płatny model i zamkneli forum społeczności. 36$ za najniższy plan
Rozbudowany ReactJS
W przypadku braku modułu trzeba znać ObjC/Java:
- mapowanie typów
- obsługa callbacków
- obsługa wątków
- rejestracja modułw
UI Thread: standard main thread for the platforms
Shadow Thread: Where measuring and layout occur. In a world where UI is constructed off the main thread, like in ComponentKit (an idea we’re hoping to ship soon), this is where that occurs.
JS Thread: Where React and Relay run.