Záznam z našeho příspěvku na Microsoft DevTest a DevOps Day (15.11.2017), který jsme spolupořádali. Je publikován na našem HAVIT YouTube Channel. Téma prezentoval Miroslav Holec:
Dotčená témata:
- Azure Logic Apps
- Azure Functions
- Azure Event Grid
Záznam z našeho příspěvku na Microsoft DevTest a DevOps Day (15.11.2017), který jsme spolupořádali. Je publikován na našem HAVIT YouTube Channel. Téma prezentoval Miroslav Holec:
Dotčená témata:
Záznam z našeho příspěvku na Microsoft DevTest a DevOps Day (15.11.2017), který jsme spolupořádali. Je publikován na našem HAVIT YouTube Channel. Téma prezentoval Miroslav Holec:
Dotčená témata:
Záznam z interního vzdělávacího okénka HAVIT z 23.11.2017 je publikován na našem HAVIT YouTube Channel. Téma prezentoval Jiří Činčura a záznam zahrnuje i větší část následné diskuze (omluvte sníženou kvalitu zvuku v této části):
Záměrem tohoto setkání bylo shrnutí a designová rozprava nad smysluplností používání IoC/DI pro line-of-business aplikace a custom-development. V HAVITu se snažíme dávat přednost odbornému porozumění a hledání konsensu před silovým uplatňováním standardů. Setkání nám pomohlo utřídit myšlenky, prostor dostal i alternativní pohled na věc.
(Počáteční narážka na performance statických metod viz předcházející Twitter diskuze a z ní indukované srovnání výkonu statických a instančních volání metod od Jirky Činčury.)
Jak přišlo na začátku roku Visual Studio 2017, rozhodl jsem se jako obvykle zkusit svůj #NoResharper challenge. S každou novou major-verzí VS zkouším, jestli by se dala používat bez Resharperu. Obecně mám rád mnoho z funkcí Resharperu, ale cena, kterou za to mám zaplatit ztrátou výkonu a stability je velkým protivníkem. Štve mě taky, že R# není v podstatě rozšířením, ale znásilní VS tak, že překryje dost podstatnou část jeho funkcí zcela vlastní implementací. Snažím se proto opakovaně najít light-weight setup bez Resharperu, kde bych si vystačil jen s čistým VS a pár lehkými doplňky do něj.
Resharper jsem v minulosti používal intenzivně. V dobách Visual Studio .NET a Visual Studio .NET 2003 to byla nezbytnost. VS2005 přišlo s prvními refaktoringy, tehdy mi to stačilo a fungoval jsem bez R# až zhruba do VS2013, kdy jsem se nechal přesvědčit dát R# další šanci. Resharper mi tehdy výborně posloužil pro nové výzvy spojené s moderními vývojářskými technikami (IoC/DI, unit-testing, …), protože pro mnoho jeho funkcí nebyla rozumná „lehká“ alternativa (dosud nepřekonané T-navigace, Go to definition, Introduce and initialize a field from constructor parameter, Adjust namespaces, atp.).
S příchodem Visual Studia 2017 se poměr sil opět změnil. VS2017 se svojí vylepšenou T-navigací (Go to…), s pomocí Roslyn-based refactorings (e.g. Roslynator) a updaty přinášejícími stále nové vylepšení produktivity mě nejenom zlákalo pro další #NoResharper challenge, ale po zhruba deseti měsících mohu konstatovat, že mi Resharper vůbec nechybí.
Moje aktuální Visual Studio je:
Když tak koukám na ten seznam, vypadá to, že bych vlastně mohl fungovat s úplně čistým VS2017 bez větších kompromisů. Největší překvapení pro mě bylo zjištění, že mám Roslynator vypnutý a ani jsem si toho nevšiml. (Vypnul jsem ho s příchodem VS2017 15.3 update, kdy jsem chtěl vyzkoušet novinky v něm.)
(Roslynator Refactorings jsem si zase zapnul, protože mi nepřinášel žádné komplikace, jen drobné příjemné pomůcky pro kódování. Nicméně se ukázalo, že kdyby se mělo sebemenší zaváhání objevit, klidně se obejdu bez něj.)
UPDATE: Pokud postrádáte CamelHumps, zkuste Subword Navigation extension.
Od 15. do 17. listopadu proběhla online vývojářská konference Microsoft Connect(); 2017, která přinesla řadu zásadních oznámení a novinek. Pro základní orientaci přináším přehled těch nejdůležitějších. Záznamy jednotlivých session si můžete stále přehrát.
https://blogs.msdn.microsoft.com/bharry/2017/11/15/connect-announcements/
https://blog.xamarin.com/xamarin-announcements-microsoft-connect-2017/
Zaznělo mnoho dalších drobností a náznaků, spousta produktů releasovalo drobnější updates. Směřující myšlenky se točily rozhodně kolem AI.
Záznam z interního vzdělávacího okénka HAVIT z 9.11.2017 je publikován na našem HAVIT YouTube Channel. Téma prezentoval Jiří Kanda:
Dotčená témata:
Záznam z interního vzdělávacího okénka HAVIT z 2.11.2017 je publikován na našem HAVIT YouTube Channel. Téma prezentoval Martin Havel:
Dotčená témata:
Při použití cookie authentizace z nuget balíčku Microsoft.AspNetCore.Authentication.Cookies 2.0.0 odpovídá server na požadavky nepřihlášených uživatelů se status code 302 (redirect na přihlášení). Pohledem do zdrojových kódů zjistíme, že je to trochu složitější – status kód je 302 nebo 401:
public Func<RedirectContext<CookieAuthenticationOptions>, Task> OnRedirectToLogin { get; set; } = context =>
{
if (IsAjaxRequest(context.Request))
{
context.Response.Headers["Location"] = context.RedirectUri;
context.Response.StatusCode = 401;
}
else
{
context.Response.Redirect(context.RedirectUri);
}
return Task.CompletedTask;
};
private static bool IsAjaxRequest(HttpRequest request)
{
return string.Equals(request.Query["X-Requested-With"], "XMLHttpRequest", StringComparison.Ordinal) ||
string.Equals(request.Headers["X-Requested-With"], "XMLHttpRequest", StringComparison.Ordinal);
}
Takže odpověd je různá pro ajax requesty a ostatní. Přičemž ajax request je rozpoznáván dle hlavičky requestu. Pro cross domain požadavky se tato hlavička nepoužívá, pokud není pomocí CORS nastaveno jinak.
Pokud bychom chtěli návratovou hodnotu vždy 401 (a nikdy 302), lze to řešit jednoduchou úpravou:
services. ... .AddCookie(CookieAuthenticationDefaults.AuthenticationScheme, options =>
{
// Vestavěná metoda OnRedirectToLogin rozlišuje Ajaxové a ostatní requesty. Pro Ajaxové se vrací 401, pro ostatní 302 (Redirect).
// Rozlišení requestů je dáno existencí hlavičky X-Requested-With, avšak ta se v cross domain requestech neposílá.
// Proto metodu nahrazujeme tak, aby vždy vracela 401.
options.Events.OnRedirectToLogin = context =>
{
context.Response.StatusCode = 401;
return Task.CompletedTask;
};
});
Záznam z interního vzdělávacího okénka HAVIT z 19.10.2017 je publikován na našem HAVIT YouTube Channel. Téma prezentoval Jiří Kanda:
Dotčená témata:
Záznam z interního vzdělávacího okénka HAVIT z 27.4.2017 je publikován na našem HAVIT YouTube Channel. Téma prezentoval Vít Heřman:
Dotčená témata: