Hello world!
Welcome to WordPress. This is your first post. Edit or delete it, then start writing!
Welcome to WordPress. This is your first post. Edit or delete it, then start writing!
Zauważyłem ostatnio , że czasami zdarza mi się , że czytnik odcisków palców przestaje działać pod Windows 10 i trzeba logować się za pomocą pinu, lub o zgrozo wpisywania hasła. Sprawdziłem w menadżerze urządzeń i okazało, się że czytnik jest w w węźle urządzenia biometryczne, tylko, że system raportuje, że urządzenie jest wyłączone. Lekarstwem na to jest wejście do BIOSu przy starcie i przywrócenie ustawień domyślnych
Jeżeli zachodzi potrzeba żeby w naszej aplikacji chcemy mieć razorowe widoki, standardowa konfiguracja nie daje nam intelisense. Powoduje to, że czas stworzenia widoku znacznie się wydłuża, bo visual krzyczy nam błędami co chwilę i podkreśla wszystko na czerwono. Jest jednej sposób który pozwala załatwić sprawę. Do naszego class library trzeba naturalnie dodać refrencję do System.Web.MVC 5, a następnie dodać prowizoryczny Web.config o następującej treści :
<xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>
</configSections>
<appSettings>
<add key="webpages:Version" value="3.0.0.0" />
<add key="webpages:Enabled" value="false" />
</appSettings>
<system.web>
<compilation debug="true" targetFramework="4.5" />
</system.web>
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Optimization"/>
<add namespace="System.Web.Routing" />
</namespaces>
</pages>
</system.web.webPages.razor>
</configuration>
Ten błąd jest konsekwencją architektury providera SQL Server dla linq to entities, który całe zapytanie konwertuje na SQL. W SQL nie ma polecenia last a jedynie za pomocą Polecenia SELECT TOP X można uzyskać pierwszych X wierszy. Prostym rozwiązaniem jest zamiana wywołania Last() na OrderByDescending(x => x.ID).First();
Jeżeli zdarzy się wam że nie można znaleźć programu przez wyszukiwanie w 10 , pozostaje prawdziwy dramat klikanie w menu start i odnalezienie programu ręcznie. Jeżeli chcemy szybko coś odpalić i jesteśmy w czasie sesji debugowania to ten błąd potrafi bardzo zaburzyć flow 🙂 Podaję prostą receptę na tą dolegliwość :
Zamknij
Explorer.exe
przy użyciu menadżera zadańHKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionExplorer FolderTypes{ef87b4cb-f2ce-4785-8658-4ca6c63e38c6}TopViews{00000000-0000-0000-0000-000000000000}
Explorer.exe
ponownieJeżeli używacie oprogramowania Time Doctor do monitorowania czasu spędzonego na programowaniu warto zajrzeć na ustawienia skrótów klawiszowych :
Niedawno w projekcie pisałem małą apkę która wykonywała pewne działanie, które muszą być uruchamiane cyklicznie. W celu uzyskania dostępu do katalogu aplikacji użyłem zmiennej
System.Environment.CurrentDirectory .
Wszystko działało podczas debugowania. Jakies było moje zdziwienie, gdy okazało się, że zmienna ta wskazuje na katalog C:WindowsSystem32 podczas uruchamiania procesu przez Task Scheluder, zamiast katalogu aplikacji. Po długich lecz owocnych 🙂 poszukiwaniach udało mi się znaleźć rozwiązanie. Pewnym i niezawodnym sposobem na uzyskanie katalogu w którym znajduje się aplikacja jest :
System.IO.Path.GetDirectoryName(System.Reflection.Assembly._ GetExecutingAssembly().Location)
.
Co rozumiem przez tryb offline ? Jest to przejście w taki tryb pracy gdzie wszystkie requesty przekierowane są na pewien landing page może informować np. że jest przeprowadzana aktualizacja, albo aplikacja jest przenoszona na nowy serwer, albo np. trwa aktualizacja serwera baz danych itp. Dzięki temu wysyłamy użytkownikom czytelny komunikat co się dzieje i nie stresujemy ich serwerem w ogóle nie odpowiadającym na requesty albo rzucający exceptionami na lewo i prawo bo schemat bazy się zmienił w między czasie. W ASP.NET od wersji 2.0 można to osiągnąć wrzucając plik app_offline.htm do głównego katalogu aplikacji. Po tym wszystkie requesty zostaną przekierowane na ten plik i użytkownik zobaczy cokolwiek tam wrzucimy. Funkcja ta działa także w ASP.NET MVC . Przykładowy plik może wyglądać tak (podaję za blogiem Scotta Guthrie)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Site Under Construction</title>
</head>
<body>
<h1>Under Construction</h1>
<h2>Gone to Florida for the sun...</h2>
<!--
Adding additional hidden content so that IE Friendly Errors don't prevent
this message from displaying (note: it will show a "friendly" 404
error if the content isn't of a certain size).
<h2>Gone to Florida for the sun...</h2>
<h2>Gone to Florida for the sun...</h2>
<h2>Gone to Florida for the sun...</h2>
<h2>Gone to Florida for the sun...</h2>
<h2>Gone to Florida for the sun...</h2>
<h2>Gone to Florida for the sun...</h2>
<h2>Gone to Florida for the sun...</h2>
<h2>Gone to Florida for the sun...</h2>
<h2>Gone to Florida for the sun...</h2>
<h2>Gone to Florida for the sun...</h2>
<h2>Gone to Florida for the sun...</h2>
<h2>Gone to Florida for the sun...</h2>
<h2>Gone to Florida for the sun...</h2>
-->
</body>
</html>
Jak widać jest to zwykły plik html. Dla starszych wersji IE ważne jest aby rozmiar dokumentu przekraczał 512 bajtów, inaczej pokaże się przyjazna strona z IE zamiast naszego landing page.
Jeśli chcemy zapisać plik tym czasowy np. w ten sposób
string tempFileName = Path.GetTempFileName();
File.WriteAllText(tempFileName, "example");
Możemy dostać komunikat o błędzie „The File exists”. Wbrew pozorom nie jest to spowodowane istnieniem pliku o tej samej nazwie, zresztą dla metody WriteAllText nie stanowi to problemu – plik zostałby nadpisany. Powodem wystąpienia tego błędu jest ograniczenie mówiące , że w katalogu c:windowstemp może znajdować się tylko 65535 plików. Po przekroczeniu tej wielkości kolejne próby utworzenia pliku tymczasowego kończą się wystąpieniem wyjątku. Aby temu zaradzić trzeba oczywiście wyczyścić katalog z plikami tymczasowymi.
Autorzy książki Ross Mistry i Stacia Misner opublikowali na blogu Microsoft Press najnowszą książkę na temat SQL Sever 2012 . Plik zajmuje ok 10 MB w formacie PDF. Plik można pobrać stąd.
Na stronie źródłowej można przeczytać spis treści oraz przybliżoną cenę wersji papierowej – 14$ .
źródło