Auth - vse
OAuth2, OpenID Connect (OIDC), SAML
--------------------------
OAuth 2.0 is a framework that controls authorization to a protected resource such as an application or a set of files, while OpenID Connect and SAML are both industry standards for federated authentication.
OpenID Connect is built on the OAuth 2.0 protocol and uses an additional JSON Web Token (JWT), called an ID token, to standardize areas that OAuth 2.0 leaves up to choice, such as scopes and endpoint discovery. It is specifically focused on user authentication and is widely used to enable user logins on consumer websites and mobile apps.
SAML is independent of OAuth, relying on an exchange of messages to authenticate in XML SAML format, as opposed to JWT. It is more commonly used to help enterprise users sign in to multiple applications using a single login.
OAuth - obecný framework na prava (authorizace), OpenID implementace nad ním pro authentikace (poda ten token), SAML mimo, FIDO novinka
OpenID Connect (OIDC) is an authentication layer on top of OAuth 2.0, an authorization framework.
Oauth (code flow - frontend + backend, implicit flow - jen frontend js)
Authentication - KDO
Authorization - CO
IdentityServer is an open-source authentication server that implements OpenID Connect (OIDC) and OAuth 2.0 standards for ASP.NET Core
Active Directory is a database based system that provides authentication, directory, policy, and other services in a Windows environment
LDAP (Lightweight Directory Access Protocol) is an application protocol for querying and modifying items in directory service providers like Active Directory, which supports a form of LDAP.
Short answer: AD is a directory services database, and LDAP is one of the protocols you can use to talk to it.
Lightweight Directory Access Protocol or LDAP, is a standards based specification for interacting with directory data. Directory Services can implement support of LDAP to provide interoperability among 3rd party applications.
Active Directory is Microsoft's implementation of a directory service that, among other protocols, supports LDAP to query it's data.
Kerberos is a network authentication protocol. It is designed to provide strong authentication for client/server applications by using secret-key cryptography.
Clients authenticate to Active Directory using the Kerberos protocol.
AD je ta db, kerberos je protokol (kerberos vs openid jde porovnat - obe protokoly)
Azure Active directory - je ta db v azure, včetne services, je to identity provider - umi pres openid snad
Identity server je framework co pouziju pro napsani serveru, ale nema to tu spravu dat co ma AD a ui, to si musim poskladat
----
Oauth flow
Implicit - uz nedoporucovana, jen ciste spa
The application opens a browser to send the user to the OAuth server
The user sees the authorization prompt and approves the app’s request
The user is redirected back to the application with an access token in the URL fragment *****
Code flow
The application opens a browser to send the user to the OAuth server
The user sees the authorization prompt and approves the app’s request
The user is redirected back to the application with an authorization code in the query string ******
The application exchanges the authorization code for an access token ******
0 notes
Connect 2018
intellicode - lepší intelisence, i podle toho kde jsme v kódu, v jakém projektu apod.
Cloud Native Application Bundle (CNAB) - jako budle resourcu pro apku? neco jako docker compose - multiple images in one?
v devops Run Azure Cosmos DB emulator container - pro testy
health checky - net core 2.2, potrebuji pro aks
api analyzer - pro swagger, rekne napr ze neco neni zdokumentovane
api konvence - aby se nemuselo u kazde action psat response type, tak default ApiConventions na assembly
aspnetcorehosting model - inprocess v csproj, performance
aks - virtual nodes - nejaka optimalizace rychlejsi start novych nodu
csharp 8 - nullable enable - opt in - nullable types cannot be null, enable Person?, string? apod
async streams - IAsyncEnumerable.. await foreach..
array range - slice people[1..3]
0 notes
Ignite 2018
afinita - pri load balanceru - stejny klient chodi na stejny server, možná i jako geo u cache apod?
retence=napr u zaloh jak stare odmazavat
webjob= WebJob is a feature of Azure App Service that enables you to run a program or script in the same context as a web app, background process, long running
cqrs = Command Query Responsibility Segregation - zvláštní api/model na write a read, opak je crud
webhook = obrácené api, zavolá clienta pokud se něco změní (dostane eventu)
docker - muze byt vice kontejneru v jedné appce, docker-compose.yml
azure má nějaké container registry - tam se nahraje image (napr website)
a ten se pak deployne někam např. app service, ale jiné image nemusí
container registry - není veřejné narozdíl do dockeru, někdo jiný z teamu může si stáhnout
azure functions 2 - v GA
xamarin - ui je vlastne access k native api, ale v csharp
projekty - shared, a special pro ios a android
ML.NET - je to framework pro machine learning
hosting SPA na azure storage
static website - teoreticky hodně výhod, cachování, levné hosting
devops - automate everything you can
sponge - learn constantly
multi-talented - few thinks amazing, rest good
konverzace, teaching, presenting, positivity, control
share everything
powershell - future, object based CLI to MS tech
powerShell ISE - editor - uz je ve windows, ale ted VS code
cmdlets - mini commands, hlavni cast, .net classy
[console]::beep()
function neco {
params{[int] Seconds}
}
pipeline - chain processing - output je input pro dalsi atd
dir neco | Select-object
modules - funkce dohromady, k tomu manifest
web single sign-on = fedaration - nekdo jiny se zaruci ze ja neco muzu a ze jsem to ja
federation=trust
data jsou na jednom miste
SAML - security assertion markup language, jen web, složité
API Security - header Authorization Basic (username, heslo zakodovane)
OAuth2 - misto toho tokeny (vstupenka)
openid connect - id token, access token - všechny platformy,
code flow doporučené, jiné implicit flow?
fido - fast identity online - abstrakce uh wtf, private public key pair per origin - nejde phising
ldap. kerberos - jak to zapada?
httprepl - cli swagger
asm.js - polyfil pro web assembly, web assembly je native kod v browseru - napr .net = blazzor
svet bez hesel
windows hello - windows login - face nebo fingerprint
ms authenticator - mobilni apka - matchnu vygenerovany kod
FIDO2 - novy security standart - mam u sebe privatni klic, server posle neco (nonce), to zakryptuju privatnim pošlu zpátky - přes veřejný rozšifruje a má potvrzené, pak to samé s tokenem
cosmos db transakce - jen pouzitim stored procedure, single partition
default index na vše, jde omezit při vytváření kolekce
change feed - log of changes, in order
trik jak dostat rychle document count - meta info o kolekci a naparsovat key-value
cosmos - vyhody globalni distribuce, eventy, multimodel, pro big data asi
AKS
- container - appka, orchestrator - komunikace mezi kontejnery, správa kontejnerů, healthchecks, updates
AKS - orchestrator - nejčastější orchestrátor, standart, extensible, self healing
představa něco jako cli nebo klient - řeknu jaké kontejnery, počet apod
uvnitř se to nějak zařídí - api server, workers atd.. - je to managed kubernetes v azure, customer se stará jen o to co nasadit a kdy - ci/cd
aks = azure kubernetes service
dev spaces - share aks cluster for dev (ne ci/cd), realne dependency (bez mock jiných service apod)
extension do VS, pracuju lokalne, sync do azure,
využíví namespace v aks (každý má svojí verzi service) - normalne frontned.com, já mám ondra.frontend.com a svojí api, pokud se zeptá na url tak se koukne jestli běží lokálně, když ne tak se zeptá team verze
respektive je to celé v azure, ale je tam moje verze aplikace
kubernets - master (api server) - jeden
Node - vice, VMs, v nem pods - containers, mají unikátní ip, networking - basic pro dev, advanced pro live
nody a pody jsou interní věc, ven přes services
helm - něco jako worker co se o to stará? jako docker-compose - vic imagu, help je pro aks??, arm template pro aks (skrpit jak postavit prostředí)
event notification patern - objednávky do fronty, ostatní systémy zpracují, co nejvíce info v eventě
event sourcing - ukládat změny - inserted, updated, updated, updated, místo get update save, jde také udělat přes event, materialized view - spočítání stavu podle těch event, jdě dělat jednou za čas
event grid - event routing
azure function - zip, z něj to spustí (vyhneme se problemu při update file by file), přes proměnné, nyní default
ve 2.0 je startup, kde je možné připravit DI a funkce pak přes konstruktor
už se dá kombinovat s kontejnery, aks atd
durable functions - složitější věci s návaznostmi funkci, long running, local state, code-only, orchestartor function - vola activity function, má vnitrni stav, probudi se dela do prvni aktivity, tu spusti, spi, probudi se checkne jestli dobehla, pokracuje dal
logic apps - design workflow, visual
azure function runtime jde teoreticky hostovat na aks?
v devops pro non .net jazyky potreba instalovat zvlast extension
v2 - vice lang, .net core - bezi vsude, binding jako extension
key vault - v 2008 ani preview
funkce hosting - consuption = shared, app service - dedicated
microservice=1 function app, jeden jazyk, jeden scale
api management = gateway - na microservices, jde rozdělat na ruzné service
azure storage tiery - premium (big data), hot (aplikace, levne transakce, drahy store), cold (backup, levny store, drahe transakce), archive (dlouhodobý archiv) - ruzné ceny/rychlosti, soft delete - po dobu retence je možnost obnovit smazané, data lifecycle management - automaticky presouvat data mezi tiery, konfigurace json
hybric cloud - integrace mezi on premise a cloudem - azure stack - azure které běží on premise někde
use case: potřebujeme hodně rychle/jsme offline, vyhovění zákonům, model
místo new HttpClient, raději services.AddHttpCLient(addretry, addcircuitbreaker apod) a pak přes konstruktor, používá factory, používání Polly (retry apod..) - pro get, pro post - davat do queue
people led, technology enpowered
service fabric 3 varianty - standalone (on prem), azure (clustery vm na azure), mesh (serverless), nějaká json konfigurace zase, umí autoscale (trigger a mechanism json konfig), spíš hodně interní věc - běží na tom věci v azure, předchudce aks, jednoduší, proprietární, stateful, autoscale apod..
důležitá věc microservices - vlastní svoje data, nemají sdílenou db
principy: async publish/subscr komunikace, healt checks, resilient (retry, circuit breaker), api gateway, orchestrator (scaleout, dev)
architektura - pres api gateway na ruzne microservice (i ms mezi sebou) - ocelot
orchestrator - kubernetes - dostane cluster VMs a ty si managuje
helm = package manager pro kubernetes, dela deploy, helm chart = popis jak deploynout standartni
key valut - central pro všechny secrets, scalable security, aplikace musí mít MSI (nějaké identity - přes to se povolí přístup)
Application Insights - kusto language, azure monitor
search in (kolekce) "neco"
where neco >= ago(30d)
sumarize makelist(eventId) by Computer - vraci Comuter a k tomu list eventId, nebo makeset
umí funkce nějak let fce=(){...};
join kind=inner ... bla
let promenna - datatable napr
hodně data - evaluate autocluster_v2() - uděla grupy cca, podobně evaluate basket(0.01)
pin to dashboard, vedle set alert
ai oriented architecture: program logic + ai, trend dostat tam ai nejak
0 notes
Build 2018
Csharp
-----------
async main - už má fungovat
default - není nutné uvádět typ
genericke where jde nove Delegate a enum
unsafe - sekce kde se pracuje s ukazateli int* pointer, &neco - posilam referenci
volatile - neoptimalizovat
extern - externi implementeace, atribut dllImport
extension metody muzou být na ref také this ref neco - neco lze modifikovat
parameter in int i - je jako readonly ref - nejde modifikovat uvnitř, out musí
ref - jako navratova hodnota je ukazatel static ref int Metoda - vraci referenci na int, return ref i
ref int i = ref Metoda..
jde být i readonly ref readonly neco...
Span<T> - ukazatel na T jakoby do paměti, hodně jako ref
nullable reference types - zakáže null v reference types, musí se říct string? např.
trochu jiný switch zapsaný jako expression return neco switch lambda..
rekurzivni patterny / dekonstruct ...wtf..
System.Index / .Range - jiné práce s poli - index od zadu, od-do apod
stack - pamet pro promene zname v dobe kompilace + ulozeni volani funkci, mala - per program, stack per funkce
heap - pamět za běhu - rozhazena, pomalejší, gc, omezení jen kolik je ram
from history:
https://channel9.msdn.com/Series/Three-Essential-Tips-for-Async/Three-Essential-Tips-For-Async-Introduction
async/await - flow dojde k await, na heap se vytvoří záznam o tasku, jakmile se task resolvne, vrátí se na to tu řádku await a pokračuje dál, to za tím se provede až po návratu, mezitím se vrací do callera.. konec async metody znamena resolvnuti tasku
Visual Studio
----------------
multikurzor - jako s alt ale různá místa
IntelliCode - intelisence založený na strojovém učení z github repository
git - doporučení vše kolem master, dělat feature a hotfix branche, ale přes feature flag rovnou merge do master, pull requesty - po otestování, review - merge do master, release přes novou branch, ale fixy na master a pak cherry pick do release
vs code - font ligature - ze znaků na symboly, např. šipka, cobalt2 - nejlepší pro oči
interactive playground - test nových feature
ctrl p p - přepínání file
ctrl shift p - command palette
zen mode - fullscreen code
prettier - code styles formating
emmet - triky s generovani html apod..
docker, af extension
TS
-----------------
použitý ve VS, VS code, atd..
Babel 7 - první TS type checking, pak babel jako emit code
Angular, Vue, React
webpack - používá TS jako type checking
.net core
------------------
SignaR - je na .net core teď, lighter client, open source specs, je na azure (hub jako controller, registrace v app start, js client)
razor class libraries - razor do knihovny, jde pak přepsat, ale přepisuje se celý file..
https on by defaut - má default certifikát
gdpr - cookies, v identity sablone
testing - referencuje se mvc app, a volá se přímo to přes http
httpClientFactory - pro všechny httpClient, faster
templaty pro SPA
SignalR
-------------------
registrace přes routes v Configure methods - app start
MapHub - routa přímo na Hub
js knihovna není jQuery
protokol - json, message něco binary
stream - přes channel writer v csharp, v connection.stream, subscribe - callback
signalR service - jen load balancing connection? přeposilá do aplikace, klient jde webové requesty do app, signalR jde na balancer, ten přeposílá do aplikace
Hub - na serveru, kam se pripojuje klient, v tom je Client.All.Send atd, + registrace v Start
Na clientovi: connection...build() start, connection.on něco... connection.Send..
Scaling: více aplikací potřebuje společný backplane (redis) nebo nyní Azure
https://channel9.msdn.com/Shows/On-NET/Going-real-time-with-SignalR-Core-and-the-Azure-SignalR-Service
--------------
ML.net - machine learning framework
blazer - .net razor běží v prohlížeči client side - web asembly/asm.js, podporuje .net standart
Angular elemets
---------------
přes ES6 jde v domu definovat nové elementy, pak se chovají jako normální dom, jde navázat na angular
Azure
------------------
azure má svoje cli na správu, je extension do vs code
Kubernetes
Dev Spaces - ? něco s microservices, když chci debugovat jednu microservice, abych nemusel vše ostatní rozjíždět lokálně
Cosmos DB - MRU units- pamět + cpu k provedení dotazu
- má nějaký interní formát A(tom)R(ecored)Sequence - nad tím ty různá api
- správné určení partition key - ????
- má spoustu requestOptions apod, RequestCharge - kolik zabral dotaz - logovat
app service - hosting app
function app - event driven execution, serverless
azure storage - blobs, table, queues, files
cosmos DB - db
application insights - logy
event grid - manage events
logic apps - design workflow
durable functions - preview na build 2018 v js, GA pro csharp, na co - fce spouští jinou nebo více a chce zpátky výsledek, event agregations, async, je definované v kódu, v logic apps je to UI, spuštění podobné jako functions z url například
trik: tasky dávat do listu a pak await Task.WhenAll
functions chaining - AF přes queue, durable - orchestrator
functions - trigger by events
pozn: pro v2 runtime ve VS nutné nuget extension pro různé binding
jde publishnout i settings samostatně, public static - sdílení v instanci - přes více execution, v1 vs v2 - v1 jen net a jeden host, v2- .net core a lang services (přes nějaký protokol komunikuje s hostem - net.core)
serverless - bez infrastruktury, event driven, microbilling - platí se za operace (fce nebo kontejnery)
-serverless = functions, logic apps, event grid
cloudevents - normalizace eventu přes prostředí, json formát, podporuje event grid
signal R service
arm - azure resource manager, teoreticky deklarativni konfigurace celeho prostredi v azure, má to api
moznosti delploy - portal, cli, vs ts online
0 notes
JS test
x = "" && 0 && 'abcd'
empty string
[0, 1, 2, 3, 4].filter(Boolean).filter(x => x % 2 === 1).map(x => x * 2)
[0, 2, 6]
jen 2 a 6
const a = [2, 1, 5]; const b = a.sort((x, y) => x - y)
2,1,5 125
oboje 1 2 5
x = "" || 0 || 'abcd'
empty
abcd spravne
0/0
NaN
0 notes
Connect 2017
Visual Studio Live Share
- VS + VS code
- colaborative programing - propojení IDE - share editace, debug
- Cosmos DB - no sql db
.net embeding - embed .net kod do objective c apod pro mobile app, volání z androida i ios
- visual studio app center - ci/cd sjednocení - deploy, test, distribute, crash, analytics, push
Kubernetes - něco s konteinery/microservice zase
- simulace prostředí se všemi microservice, přes containery v azure
- normálně je aplikace rozdělená do hodně microservices - více app v různých tech, je problém lokálně rozjet, ve VS je AKC connected enviroment, které to vyřeší přes azure
debug se nějak se nějak propojí s azure, kubernetes udělá i proxy pro url cally
VSTS - používá MS pro win i vsts
DevOps - v azure je new resource, azure devops projekt - nastaví se jaký projekt, jazyk, platforma - vytvoří vsts projekt, ci build - checkin = build, cd - nasazování, release management, u buildů jsou různá fáze - tasky, jde vytvořit vlastní přes powershell/nodejs
release plan - vytvoří se prostředi, podmínky za jakých to postupuje, zase serie tasku
https://channel9.msdn.com/Events/Connect/2017/B103 - cool, ale overkill trochu, hodně plánování
VS
- git merge tagy - rozpona v editoru
- ctrl T - go to all, zkratky f - file apod
- ctrl a kliknuti - go to definition
- nove code fixy - null check apod
- code sugestion - podle pravidel coding styles - .editorconfig - directory level
- extension pro code sugestions..
- smart variable names sugestions
VScode
- multiroot workspace - více složek otevřených, uložení nastavení
- vylepšení práce se source control - zvýraznění v editoru inline diff i v solution
- regiony, refaktoring - import v js, extract method js
TS
- string enums - enum Color Red = "Red"..
- week type checking - nyní blíž csharp objekty musí mít alespoň nějaký stejný property
react, ionic, cordova - mobilní aplikace 100procent code reuse
live player - VS propojení s mobilem pro dev, xamarin
azure functions - mále fce v azure, není potřeba server, zajímavé prozkoumat
VS .net core + docker support
více devops
optimalizace prý
https://channel9.msdn.com/Events/Connect/2017/T122
Csharp 7.1
- tuples - select (jmeno: hodnot, jmeno2: hodnota)
- async Task main
- zkrácené default
Csharp 7.2
- struct - pass by value, lepší pro paměť ref, povoleno pro extension metody aby první bylo ref
- ref jde změnit, místo toho nový parametr IN - fce(in this Trida neco) - neco je readonly v metodě
- ref může být i v returnu, ale když nechceme změnit tak public static ref readonly
Csharp 8
- nullable reference types - string?, nakonec přiznak kompileru?
Span
https://channel9.msdn.com/Events/Connect/2017/T125
na stack, blbě vysvětlený
- mnohem lepší http://adamsitnik.com/Span/ - je to jednoduchý hodnotový typ, zajišťuje správnou manipulaci s pamětí a typy, něco podobného jako pole, velký bonus na výkonu
- paměť v .net - stack (malé do 1MB, per fce), unmanaged - bez GC specialni api, managed - new, GC
.net 4.7.1
- net standart 2.0
- configuration builder - inject konfigurace do ConfiguraionManager z external zdrojů, např enviroment variables, přidání sekce do web.configu, a configbuilders tag, naše třída, která rozšiřuje konfiguraci, u např appSettings pak povolit dany builder
modernizace aplikace
- winforms hdpi, docker/kontejner, azure
- windows compatibility pack for .net core - vrátí chybějící api v core pro windows - drawing, registry.. - nuget, je extension pro analýzu co nepujde na linuxu
- trik MVC - img source je akce Home/GetImage, vrací File(byte array, content type)
- nuget snapshotcollector - poznamená info o vyjímce - jde stáhnout do VS
Microservices
https://channel9.msdn.com/Events/Connect/2017/T116
packages - dll/exe nebo odkaz na kontejner
config packages
- dohromady - service package - nasadi se na nody
umí balancování podle kapacity, automaticky, u stateless
docker - mam aplikaci a image (treba win s net) - misto popisu jak nasadit aplikaci, docker stáhne image a rozběhne aplikaci podle napsané konfigurace
kubernetes - mam hodne aplikaci v dockeru - microservice, potřebuje je nasadit na vice node, load balancovat, a debugovat jako bych je měl lokalne - orchestrator
Sql Operation Studio - podobné VS code, snaží se pomoci s sql projekty - go to definition, script, statistiky, sledování dotazů
0 notes
React learning
import defaultExport from "module-name"; - tohle funguje když mám export default, je jedno jak se to default jmenuje při exportu
import { export } from "module-name"; - tohle když mám export { Jedna, Dva }, musí se to jmenovat stejně jako při exportu
když mám from složka - tak to hledá index.js, když dám from soubor tak hledá v něm
tj. indexem se zařídí, že se oddělí název
Javascript uses a pass by value strategy for primitives but uses a call by sharing for objects. Call by sharing is largely similar to pass by reference in that the function is able to modify the same mutable object but unlike pass by reference isn't able to assign directly over it
exports = module.exports = {} - jakoby na začátku file
module.exports = { Jedna, Dva } a var t = require('module..') pak t.Jedna, t.Dva...
- je to starší zápis toho výše export/import
React props: komponenta má jen ty props co tam pošlu, když chci i ostatní tak ...this.props - a na prvním místě nebo se to ne/přepíše
.map - jako select v linq, na kazdem prvku pole spusti fci a vrati pole
.reduce - to same, ale vysledek vrati jako argument dalsi funkci, vysledek je jedna hodnota pole.reduce(function(accumulator, prvek pole) { ... }, default)
.filter - jako where v linq
construktor - ještě nemám this.props, ale můžou být parameterem
vypisovani state vs props - do props Dva dam state z Jedna, ve Dva vypisuju z props, v Jedna ze state, při update se překresli ve dva i v jedna
trik pokud je potřeba this v handleru - this.handleClick = this.handleClick.bind(this);
this.handleClick = this.handleClick.bind(this); - lepší nedělat v render, ale v konstruktoru protože jinak se provede při každém render - perf
logicky je UI immutable, při změně se vytvoří nové, ale technicky react propíše do DOM jen změny
props neměním uvnitř komponenty, state je naopak privatni v komponente
componentDidMount - ve chvili kdy se vyrenderuje do dom, teoreticky stejné jako construktor?
state - nemodifikovat přímo, je async - v případě zavilosti používat variantu s fcí, updaty se merguji - stačí jednu propertu v setState nastavit
A component may choose to pass its state down as props to its child components
do eventu jde přidat eventArgs a preventDefault klasicky
v render return null nevykresli nic
má v sobě zabudovanou ochranu proti více odeslání - throttle, debounce
formy - proste vzdy handler s eventem a name a setState, nebo Formik
práce se state - dvě komplnenty potřebují sdílet stav, tak se vytáhne do společného předka, a pošle se tam jako props, a zároveň delegát na onChange funkci
setState spouští render - nejdůležitější idea, všechny změny přes setState, vše je jen stav aplikace - single source of truth
nestování komponent - jde out of box, vypíše se props.children anebo prostě v props - zápis v chlupatých závorkách
dědičnost - v reactu se nepoužívá, vše kompozice přes props
react fiber - reimplmentace core reactu
code spliting - normálně vše do jednoho bundle, buď divné zápisu nebo react.lazy, nejlépe asi podle route
React.createContext - kontext, který se nepředává přes props, použití obalené v MyContext.Provider a v childred static ct = ContextName a this.context, teoreticky pro user, theme, lang...
error boundary - jakoby catch pro chyby při renderování, musí se definovat static getDerivedStateFromError() or componentDidCatch(), nefunguje na eventy - na ty obyčejné try/catch
React.Fragment - jen seskupuje, v return jde i list, ale toto se zabalí bez extra divu napr.
názvy začínají velkým písmenem
dekonstruct - const { kind, ...other } = props;
Portals provide a first-class way to render children into a DOM node that exists outside the DOM hierarchy of the parent component.
event bubling - při click na child se spustí event na child, pak na parentu až k dokumentu
event capturing - naopak - od window až k targetu, ale obyčejně se nepoužívá, addEventListener bez třetího atributu
jsx - je syntaktic sugar pro ten zapis <Component /> bez toho jde ReactDOM.render..
propTypes - validace props, forma type checkingu (jine - TS, flow), jde i default určit
ref - přistup k domu child komponent (focus, animace, 3rd party), this.textInput = React.createRef(); a pak this.textInput.current.focus();, je to jak props, dělám tim něco na child, ale přímo a ne přes props, když je to dom element tak current vrací element, když je to komponenta, tak komponentu.. na co to je?
render prop - komponenta má jako prop metodu render, prostě obyčejná metoda která se zavolá v render s nějakým parametrem, aby se tam dalo vykreslit cokoliv a chování zůstalo zapouzdřené v parent komponentě, ale předává parametery do child, je to pattern jen
Kdyby se nejmenovalo render ale children, dá se napsat jako podelement prostě, kde bude funkce s parametry
HOC - také pattern - higher-order component is a function that takes a component and returns a new component, HOC composes the original component by wrapping it in a container component. A HOC is a pure function with zero side-effects. Trik je v tom, že HOC přidá komponentě do props nějaké další info/funkce
function logProps(WrappedComponent) {
return class extends React.Component {
render()... WrappedComponent ...this.props
jiný zápis
const withStorage = (WrappedComponent) => {
class HOC extends React.Component {
s props
const Loading = loadingProp => WrappedComponent => {
return class LoadingHOC extends Component {
----------------------
Foo a = new Foo { Name = "a" };
Foo b = a;
b.Name = "b";
Console.WriteLine(a.Name);//pro Foo struct A, pro class B
- Functions, Serverless Compute
- Logic Apps, Serverless Workflow
- Event Grid, Serverless Events
------------------------
promisy
var promise1 = new Promise(function(resolve, reject) {
setTimeout(function() {
resolve('foo');
}, 300);
});
volá vždy resolve nebo reject - v promise
v then když se volá return tak podle toho co to je - když promise nebo přímo ta hodnota
proto promise.all aby bylo jen then?
0 notes
Git branching model
A successful Git branching model - git-flow nejznámější článek, ale počítá s function freeze, umožňuje spravovat více releasů, fixy na odpovídající branch
Jiný přístup: Platform/enviroment/ENV branching
http://www.creativebloq.com/web-design/choose-right-git-branching-strategy-121518344 - ok, ale bez feature selection
https://www.deployinc.com/tips-tricks/branching-strategy/ - dobré ale ne úplně ono
https://www.wearefine.com/mingle/env-branching-with-git/ - nejlepší
Základní pravidla:
- všechen vývoj na feature branch i hotfixi (hotfix může vlastní branch)
- branch pro každé prostředí (stage/uat/prod), nikdy nezmergovat do sebe, nikdy přímo commit sem, ale jen přes merge
0 notes
Immutable.JS
- List - klasický list, indexované - zaručené pořadí
- Stack - zásobník, zaručené pořadí
- Map - dictionary, negarantované pořadí, ale pořád stejné
- OrderedMap - jako map ale pořadí podle přidání
- Set - unikátní hodnoty, pořadí nedefinované, ale stále
- OrderedSet - jako set, ale pořadí podle přidání
- Record - jako JS objekt, musí mít inicializované hodnoty
- Seq - jako ienumerable, samo je immutable, řetězí metody map/filter apod.
https://facebook.github.io/immutable-js/
0 notes
Redux
JS knihovna - pro manipulaci se state aplikace
stav aplikace je reprezentovaným jedním objektem, který se mění jen pomocí akcí,modifikace jsou čisté funkce bez side-efektu.
Máme 3 základní objekty: akce - actions, jen js objekt s typem, a dalšími property co jsou potřeba, obvykle máme funkce action creators, reducer - dostane state a akci a podle toho vrátí nový stav - nesmí mofikovat stávající stav, ale vrací nový - Object.assign, musí být čistá funkce, store - spojuje akce a reducery - umí vrátit stav, dispatch a subsribe akcí, je jen jeden v celé aplikaci
obvykle se akce a reducery rozdějí do více souborů, helper combineReducers při inicializaci store
async - nemůže být v reduceru - není pure, řeší se pomocí middleware, udělají se akce pro start, received, error např + se promítne do state nějak, při inicializaci se store přidá middleware thunk - to způsobí, že výsledkem action creatoru nemusí být objekt ale funkce (creator vrací funkci), která má jako parametr metodu dispatch - tu zavolá např na začátku, request start, a pak zavolá ajax a v callbacku znovu dispatch - creator nemusí být pure funkce, takže to může udělat. Jak se udělá ajax je jedno, např nějaký fetch api
Top level použítí store =createStore(reducer, initialState, middleware), reducer je např combineReducers.. a pak store.dispatch(actionCreatror(parametry))
https://redux.js.org
0 notes
dotnetConf 2017
https://channel9.msdn.com/Events/dotnetConf/2017/T314
https://channel9.msdn.com/Events/dotnetConf/2017/K111
- pro nové fce jazyka potřeba občas dotáhnout nuget
- object neco... neco is string s; s
- Func neco neco = default; - default bez závorek nice
- inline methods - ošetření vyjímek před task nebo ienumerable
- non nulable types - string! c, v budoucnosti
- 7.1 - async main, tuples
- promena ?? throw new Exception..
- parametr fce (Exception e = default)
Xamarin
- 2 možnosti - backend + různé UI pro platformy, nebo xamarin forms - shared i UI
.net standart
- vyšší verze více api, nižší verze více podporovaných platform
- pro různé target jde přidávat různé reference, řešení v kódu IFDEF
https://channel9.msdn.com/Events/dotnetConf/2017/T221
EF - mapování na fieldy, dbcontext pool, compiled queries
Fable - fsharp to JS
giraffe, suave - knihony pro webserver v fsharp
0 notes
Build 2017
Csharp
https://channel9.msdn.com/Events/Build/2017/B8104
7.1 - male vylepseni
7.2 - safe, efficient, lowlevel code
tuples - jsou struct immutable, ale properties mutable...
tj jde tuple.neco++; ale i tuple = (tuple.neco + 1, ...)
async Task Main
ValueTask - nealokuje task pro případ, že výsledek už je k dispozici
VS - suggestion parameter names
dekonstruction (int s, int c) = Neco .. a (int s, int c) Neco
vynechani (s, _) .. podrzitko nas nezajima
var (s, _) - zkráceně
lokální funce void a přiřazuje do r - r se mění, protože to je lokální funkce - closure, jinak asi ne
int.parse(s, out var i)
VS2017 - git merge v kodu <<<< pozná, enter ve stringu přidá +
možná novika: default interface implementation, třeba jedna metoda v interface naimplentovaná, ale jde přepsat v jednotlivých implementujících třídách, něco jako abstraktní, není to vícenásobná dědičnost? je to kvůli jave a xamarinu
další možné string?, flow analýza na null ve VS
web forms
https://channel9.msdn.com/Events/Build/2017/T6009
async session - důležité v async JS pokud používá session - více requestů pro jedno session id
async cache, sql server vylepšení
execution step - kod pred konstruktorem stranky
configuration builders - různé vylepšení konfigurace - přes variable systemu
visual studio
https://channel9.msdn.com/Events/Build/2017/B8083
editor config možná?
.net core 2
https://channel9.msdn.com/Events/Build/2017/B8048
zjednodušení dotnet new web
balíček pro vše
zjednodušení konfigurace
razor pages - jako mvc view, ale nema controller, default Pages/Neco.cshtml localhost/neco
jde tam napsat csharp do neceho, :PageModel, zjednodušené mvc, splácané s webforms trochu - tag helpers
Azure AD - indentity as service
.net standart
https://channel9.msdn.com/Events/Build/2017/B8001
snapshot debuger - misto standartiho breakpointu to udela snapshot, ktery posle do VS, aplikace pokračuje dál - debug in prod
https://channel9.msdn.com/Events/Build/2017/C9R04
prograsive web apps - spoleha na nejmodernější fce prohlížeče, feature detection
jako win aplikace, ale napsaná jako web stránka
podle dostupných funkcí prostředí má více funkcí aplikace
service worker - js file, bezi na pozadi stranky, prijima udalosti stranky
https://channel9.msdn.com/Events/Build/2017/T6051
micro services - male moduly se vsemi vrstvami, vcetne dat - kazda svoje data
https://channel9.msdn.com/Events/Build/2017/B8073
vylepšený JS editor, browser link, lint - extension, debug js ve VS v chrome, js doc - vylepšení intelisence
tag helper prerender module - pro js angular misto loading se vykresli serverove
library installer - zjednodušené instalování js knihoven, cdn js, nebo filesystem
https://channel9.msdn.com/Events/Build/2017/B8088
typescript - podpora angular, react - tsx - umí i typy, rozumí syntaxi
non-nullable types - strict checking v tsconfig, default vse neni null ani undefined, lze povolit string | undefined
object literal { kind: neco} pak swithc na kind, v default bude typ never - kontrola že jsme nezapomněli na kind
Bazel - google použivá pro build všeho
Angular2 - vždycky přidá ten template component, závislosti přes DI
Aurelia - client app platform, web, desktop, mobile, TS, modulární, na konvence, standarty, rychlost, normální class v js, ve view html v template, value.bind, submit.trigger
EF core
https://channel9.msdn.com/Events/Build/2017/B8050
mapování na fieldy, automaticke doplnění do dotazu v OnModelCreating nebo override saveChanges
context pooling - context per request pres pool
GIT
https://channel9.msdn.com/Events/Build/2017/P4101
když by na repository pracovalo více lidí, nešlo by vlastně pushnout protože by pořád přibývali commity - řešení pull request - merge se udělá na serveru
používá se jako branch per feature to vypadá, některé větve nás nezajímají - limited branches - coming soon
velké soubory - přes git-LFS - ukazatel na file, jinak se stahují všechny commity a verze souboru
velké repository - podobný princip, jen ukazatele, při práci se skutečně stáhne
React Native
https://channel9.msdn.com/Events/Build/2017/P4080
platformy - ios, android, win, jazyky - js, ts, es6
klasické react komponenty class, render(), <view> - přeloží se na view podle platformy - tj nativní UI
potřeba přibalit js engine nebo chakracore pro win
podobné jako xamarin, ale je v csharpu psaný, react je v Js, cordova - jiné není native, jen tak vypadá
starting file - index.android.js - ruzne pro platformy, ale odkazují na stejný js App.js
code push - service ms pro updaty, při startup se zeptáme na update
visual studio mobile center - devops pro mobile
0 notes
VS launch 2017
live unit testing - enterprise
open folder
new exception helper, run to click
lazy loading solution
installer do vice casti
zapis notes = notes ?? thrown new exception..
vylepšený intelisence - zvýraznovani, typy
ctrl T - go to all - go to s ruznym hledanim např metoda, property...
code suggestions/convention - editor config - obecny config editoru
move to new file - class
find all references obarvene
csproj - zjednodušené kvuli core
.net core tooling
místo project.json souboru, migrace je ve VS2017 z původních csproj
ve VS jde editovat csproj primo
umi podobne veci jako project.json - vsechny soubory auto include, package pridanim restoruje apod
microservices - misto jedne app data/bll/ui, více jednotlivých service které mají svoje dal/bll
xamarin - spousta věcí
dev ops - continuous integration - automatizace vseho od checkinu po release/telemetrie
trusted, scalable - velke projekty
redgate data tools
většina v enterprise verzi
automate everything you can (not everything)
VS17 - start debugging in chrome měli by fungovat breakpointy v JS
roaming extension - extension prenasene jako nastaveni na ostatni pc
Csharp7
-binary literals 0b101001, digit separators - zapis cisel
-tuples - vice navratovych hodnot, pojmenovani vs item1/2
-local functions - jako js
-patter matching neco is int i, switch on anything, case int i, case string i, case..when
VS2017 - web
- nový engine pro JS editor, language service - úplně nové
postavené na TS, lepší intelisence
- pokud jen js, tak .d.ts stahuje na pozadi podle knihoven
build in ESLint, s configem, může být na pozadí nebo v projektu ten má prioritu
debug JS ve VS v chrome - používá source map
- Vue JS - .vue file, v- u tagu, nějaká nová knihovna
- jsdoc podpora, vcetne formatu
- podpora pro react, class ktera dedi z react.component, konstruktor, render v tom to pseudohtml
Docker
- u projektu add docker support pridani nejaky ten konfiguracni soubor
jinak je to vlastne image v cloudu a jeho zmeny, pri deploy se spoji
vs umi run, debug, jakoby vzdalene..
continuos integration
nejaky plugin, projekt do gitu - configure CI
build, release definitions, app service - aplikace v azure
po push do git se zbuildi a pripadne udela release nebo build fail notification
konfigurace-varianta v tfs online nebo pres extension ve VS
infrastructure as code - co musi byt v azure popis, je to jako projekt template ve VS, prida se do solution
0 notes
Gulp ve VS
gulpfile a package.json musí být v rootu projektu - pokud je ve složce vytvořit tam projekt další
pokud nefunguje ES6 - přidat do external tools cestu k nodejs a presunout na prvni misto
pres cmd: node install -g gulp aby znalo gulp
0 notes
PS verze .netu
(Get-ItemProperty ‘HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full’ -Name Release).Release
0 notes
Learning Angular 2
https://channel9.msdn.com/Shows/webdevshow/2
na pozadí má virtuální dom, na něm změny, pak angular updatne rychle jen ten reálny, využívá na to zone.js nebo to rdx?
komponenty - vše se dělí do stromu komponent, rodč/potomek - události od listů ke kořenu
základní části: tsconfig - TS konfigurace, packages.json - npm konfigurace, npm start je vlastně příkaz jako dotnet run neco- kde start je v packages.json definovaný příkaz - build, watch, serve, npm install - stazení závislostí - ang jich má několik,
app.component - root komponenta - třída s dekoratorem - selektor - css selector, template
export class - kde je export je jinde import - tady je v main.js - kde je bootstrap ang - rozběhne aplikaci - tj ang si to celé řídí sám - celé js based aplikace, single page app
jinak začátek v index.html kde se nareferencují závislosti ang a system.js což je jako requirejs podobné a přes to se natáhne main.js který spustí ten bootstrap a to ty komponenty, a nakonec je tam ten selektor co je v komponentě
v nové verzi se ještě komponenty strkají do modulů
https://channel9.msdn.com/Blogs/semjs/semjs201512Ang
{{neco}} v template - one way databinding, multiline `
v template jde i nějak odkaz na .html
imput s value={{fff - one way, two way - [(ng-model)]="neco", NgModel je potřeba importovat a directives v dekoratoru
import {neco, neco} from 'angular/angular2'
cyklus *ng-for neco of kolekce, * jako direktiva, *ng-if jako KO
https://channel9.msdn.com/Events/Ignite/2016/BRK2193
komponent - kus viditelný - jako view
komponenta: moduleId, selektor, templateUrl - hurá
struktura: app komponenta, v ní header, footer, content komponenta
do class component - tam logika asi
VS code - ctrl + kliknout na neco - F12
v komponentě žádná logika, jen view, použité ngOnInit - při startu
*ngFor, *ngIf
tempates - html s binding, propojení přes templateUrl
komponenty - potřeba deklarovat v app.module
stylesUrls - nějak sváže styly s tou komponentů
v konstruktoru DI
komponent + teplate + metadata - základ
binding: {{expression}} [property]="expression" (event)="statement" [(ngModel)]="property" - jedine obousmerne, je jako property + event
moduly - obsahují komponenty a services, @ngModule třída - použítí lazy loading, security
u hlavního modulu: imports - různé jiné moduly, které se budou používat, declarations - komponenty, které tam máme, providers - service do konstruktoru atd, bootstrap - kde začít
0 notes