• Master Coders - Niezawodne oprogramowanie dla firm

Hello world!

Czytnik odcisków palców w Thinkpadzie przestaje działać w Windows 10

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

Działające intelisense dla Razor w projekcie class library

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.RazorWebSectionGroupSystem.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
      <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSectionSystem.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
      <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSectionSystem.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.MvcWebRazorHostFactorySystem.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>
We właściwościach projektu w zakładce build ustawiamy katalog wyjściowy na bin zamiast bindebug. Zamykamy wszystkie otwarte pliki buildujemy solucję, otwieramy plik cshtml i bang!:) wszystko działa


Zmora programisty – niedziałający Windows Search w Windows 10

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ść :

  1. Zamknij Explorer.exe przy użyciu menadżera zadań
  2. Usuń ten klucz rejestru

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionExplorer FolderTypes{ef87b4cb-f2ce-4785-8658-4ca6c63e38c6}TopViews{00000000-0000-0000-0000-000000000000}


  1. Uruchom Explorer.exe ponownie

dzięki ci superuser.com !

TimeDoctor i jego skróty klawiszowe

Jeżeli używacie oprogramowania Time Doctor do monitorowania czasu spędzonego na programowaniu warto zajrzeć na ustawienia skrótów klawiszowych :

Widać tutaj że do kontynuowania ostatniego zadania został przypisany skrót klawiszowy Ctrl+X , co domyślnie blokuje w Visual Studio i innych programach za opcję wytnij . Taki mały trolling ze strony twórców Time Doctora 🙂 

Jedyny i niezawodny sposób na otrzymanie bieżącego katalogu

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) 

.

Przełączenie aplikacji asp.net w tryb offline

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.

Błąd „The File Exists” podczas próby zapisania nowego pliku w katalogu tymczasowym

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.