missing SignTool.exe w Visual Studio 2015

Aktualizacja do Visual Studio 2015 dawno za mną. Tak dzisiaj wyszło, że dzisiaj chciałem opublikować za pomocą ClickOnce jedną rzecz.

Kod działa, publikacja też, zawsze działała a tu klops.

missing SignTool.exe

i pomyśleć, że wystarczy w instalce zaznaczyć ClickOnce Publishing Tools.

ClickOnce Publishing Tools

Więc jeśli Tobie też nie działa to Dodaj usuń programy, Visual Studio 2015, (w Windows 10 odinstaluj) i zmodyfikuj swoją instalację. I już można pracować.

Windows 10 + VS2015 + SpecFlow

Windows 10 na wolności, mojego 8.1 po prostu zaktualizowałem. Wszystko poszło elegancko, wszystko działa poza SpecFlow-ami. SpecFlow-y uruchamiam przez NCrunch-a. Jedyne co dostaję to błąd buildowania i komunikat:

..\packages\SpecFlow.1.9.0\tools\TechTalk.SpecFlow.targets (47, 5): The „TechTalk.SpecFlow.Tools.MsBuild.GenerateAll” task could not be loaded from the assembly C:\Users\USER.PROFILE\AppData\Local\NCrunch\9392\20\packages\SpecFlow.1.9.0\tools\specflow.exe. Nie można załadować pliku lub zestawu ‚Microsoft.Build.Utilities.v3.5, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a’ lub jednej z jego zależności. Nie można odnaleźć określonego pliku. Confirm that the <UsingTask> declaration is correct, that the assembly and all its dependencies are available, and that the task contains a public class that implements Microsoft.Build.Framework.ITask.

Na 8.1 wszystko działało a po aktualizacji przestało. Ponieważ NCrunch odpala specflow.exe to ze ścieżki packages\SpecFlow.1.9.0\tools\ odpaliłem specflow.exe i co?

specflow

 

 

No tak, brakuje .net 2.0/3.0. Dziwne bo przed aktualizacją działało bez problemu. Czyli aktualizacja 8.1 do Windows 10 po prostu coś wycięła. Dobrze, że komunikat coś mówiący i jest button do pobrania. Po wybraniu Pobierz i zainstaluj tę funkcję wszystko śmiga jak należy.

 

VPN to podstawa czyli jak postawić VPN na Raspberry PI

Internet jest tak podstawową rzeczą, że coraz więcej osób w ogóle nie zastanawia się nad kwestiami bezpieczeństwa. Problem jednak jest spory bo z internetu korzystamy praktycznie nonstop. Niestety często z dziwnych sieci w dziwnych miejscach. Jak konferencje, hotele czy kafejki. Wszystko jest ok do póki mamy wieloskładnikowe hasła do poczty czy innych ważnych serwisów albo przeglądamy przysłowiowego pudelka. Co jednak jeśli potrzebujemy zrobić coś co wymaga większego bezpieczeństwa? Ja korzystam z VPN-a. Nowoczesne smartfony bardzo dobrze sobie radzą z VPN-ami więc wystarczy kilka kliknięć i mamy wirtualnego kondomka.

VPN w routerze

Wiele poważniejszych routerów ma wbudowany serwer VPN. Wystarczy skonfigurować i używać. Problem jest tylko taki, ze trzeba mieć odpowiedni router, który niekoniecznie musi być tani. Nawet jeśli ten, który masz teraz ma opcję VPN server to następny niekoniecznie. Po co zawężać sobie możliwość wyboru routera. Ja proponuję zrobić własny VPN.

Własny VPN

Do zrobienia własnego serwera VPN będziemy potrzebować:

  • 1x Raspberry PI
  • 1x kabel sieciowy lub wifi tak aby malinka była widoczna w naszej domowej sieci
  • 1x karta sd bo na czyms trzeba to postawić
  • 1x Linux – taki do malinki 😉

Instalacja

Mając poprawnie działającą malinę wystarczy z poziomu cmder-a odpalić ssh


ssh -l <userName> <ip malinki np:192.168.1.2>

sprawdzamy czy system ma odpowiednie moduły:


sudo modprobe ppp-compress-18

jeśli nic się nie wyświetliło to (podobno) jest okej

dalej instalujemy pptpd


sudo apt-get install pptpd -y

PPTP to nie jest najlepszy najbezpieczniejszy i najwspanialszy VPN pod słońcem. W firmie nie wdrożyłbym go ale do celów domowych jest w zupełności wystarczający więc jedziemy dalej.

Trzeba to cudo skonfigurować czyli:


sudo nano /etc/pptpd.conf

i na końcu wrzucamy:


localip <ip malinki np.: 192.168.1.2>
remoteip <ip jakie dostaną klienci np.: 192.168.1.100-110>

następny plik pptpd-options


sudo nano /etc/ppp

i na końcu wrzucamy:


nobsdcomp

ms-dns <ip routera np.: 192.168.1.1>
noipx
mtu 1490
mru 1490

teraz najważniejsze czyli super tajne hasło


sudo nano /etc/ppp/chap-secrets

i wpisujemy:


# Secrets for authentication using CHAP
# client server secret IP addresses
<nazwa uzytkownika> * <hasło> *

Gwiazdki są potrzebne – bez nich nie działa. Wszystko rozdzielamy tabulatorami bo inaczej też nie działą (kocham białe znaki 😐 ).

Na koniec jeszcze


sudo nano /etc/sysctl.conf

i na końcu wrzucamy:


net.ipv4.ip_forward=1

Restart malinki i vpn powinien działać. (albo restart samej usługi sudo /etc/init.d/pptpd restart).

Teraz pozostaje tylko na routerze włączyć przekierowanie. Jeśli chcesz stawiać VPN to wiem że wiesz o co chodzi. Więc tylko dla formalności przekierowujemy port 1723 (lub zakres 1723-1723) na IP naszej malinki.

W tym momencie wystarczy w komórce wyłączyć WiFi i skonfiguroawć VPN na nasze IP (swoje IP sprawdzisz  tutaj https://www.whatismyip.com/) Jeśli wszystko jest dobrze skonfigurowane to się połączysz, jeśli się nie połączysz to nie :)

 

Zmienne IP

Co jak mam zmienne IP? Wiele routerów potrafi zarejestrować się w DynDnsie ale problem jest taki, że DynDns jest płatny. Niewiele ale płatny. Co gorze, różne routery różne dynamic dns-y wspierają. Więc znowu przy zmianie routera może się okazać, że trzeba by zmienić usługodawcę. Na szczęście można prościej. Niechaj nasza malinka ogarnie wszystko. Instalujemy DDClient-a


sudo apt-get install ddclient

 

DDClient potrafi obsłużyć całkiem sporo dostawców dynamic dns. Więc do wyboru do koloru. Ja zaczynałem dawno dawno temu z DynDnsem potem się zrobił płatny. Potem długi czas używałem właśnie przez DDClienta No-Ip ale oni co miesiąc wysyłają maila, żeby przedłużyć dzierżawę – bojąc się, że zapomnę kliknąć na czas co by skutkowało, że po zamknięciu konta akurat potrzebowałbym tego bezwzględnie przesiadłem się na freedns (http://freedns.afraid.org)

zatem moja konfiguracja DDClienta dla freedns:


sudo nano /etc/ddclient.conf


daemon=1m
timeout=10
use=web, web=checkip.dyndns.com/, web-skip='IP Address'

ssl=yes
protocol=freedns
server=freedns.afraid.org
login=<moj login>
password=<moje haslo>
<moja domena np.: dom.mooo.com>

Od teraz nie straszne nam zmienne IP, nie straszna nam zmiana routera. Mamy własny osobisty VPN. Co najlepsze, możemy go zabrać do kieszeni i postawić gdziekolwiek w 3 min (pamiętając jedynie o przekierowaniu tego 1 portu na routerze).

Koszty malinki są tak niskie, że można spokojnie żyć zgodnie z Single Responsibility Principle. 1 Serwer jedna odpowiedzialność, 1 malina = VPN-a i jesteśmy szczęśliwi i mocno niezależni.

 

 

 

SpecFlow + XUnit

Specflow fajny jest, piszemy scenariusze czytelne dla ludzi a pod spodem szaleje xunit i sprawdza. Jest tylko jedne problem, aktualnie specflow.xunit instaluje xunit 2.0 a do pliku .feature.cs generuje kod:

MyProjFeature : Xunit.IUseFixture

No i klops, IUseFeature już nie jest dostępny w xunit 2. Można jednak sobie poradzić mieszając trochę w pakietach. Po prostu trzeba po instalacji specflow.xunit odinstalować wszystko związane z xunit 2.0 (use the –Force Luke) i zainstalować xunit 1.9.2 i wszystko śmiga. Poniżej zestaw magicznych zaklęć:

install-package -ProjectName "MyProj.Specs" specflow.xunit
uninstall-package -ProjectName "MyProj.Specs" xunit –Force
uninstall-package -ProjectName "MyProj.Specs" xunit.abstractions –Force
uninstall-package -ProjectName "MyProj.Specs" xunit.extensions –Force
uninstall-package -ProjectName "MyProj.Specs" xunit.assert –Force
uninstall-package -ProjectName "MyProj.Specs" xunit.core –Force
uninstall-package -ProjectName "MyProj.Specs" xunit.extensibility.core –Force
install-package -ProjectName "MyProj.Specs" xunit -Version "1.9.2"
install-package -ProjectName "MyProj.Specs" xunit.extensions -Version "1.9.2"

Re: Sekrety udanych prezentacji

infomeet-iot

Tydzień temu miałem przyjemność wystąpić na katowickim InfoMEET gdzie poopowiadałem trochę o Internet of Things. Nie pierwszy raz występowałem na InfoMEET ale tym razem chyba najlepiej mi się mówiło, jakoś tak bardzo płynnie szło no i patrząc na oceny to podobało się więc jest git. Jeśli temat kogoś interesuje to będę z nim jeszcze w Krakowie w kwietniu i Wrocławiu w bodajże czerwcu. Jeśli byłeś/byłaś na mojej prezentacji i chcesz się podzielić jakimiś wrażeniami/opiniami to zapraszam do komentarzy lub od formularza kontaktowego.

Będąc natomiast przy prezentacjach to nawiążę do ostatniego wpisu Maćka o sekretach udanych prezentacji i dodam swoje 3 grosze. Nie jako kontrargumenty a raczej uzupełnienie i mój punkt widzenia.

Czas na przygotowanie

U mnie to wygląda tak, że prezentacja rodzi się w głowie i tam się układa później przelewam to na PowerPointa – głównie dlatego, że ma widok prezentera, który u mnie działa :) Natomiast fakt, warto mieć czas na przygotowanie i mieć wiedzę na temat o jakim będziemy mówili. Prezentacja na temat o którym nie mamy pojęcia jest naprawdę ciężka do przeprowadzenia.

Na scenie bądź zdecydowany

Tu uważam, że potrzeba energii. Jeśli temat nie jest jakiś specjalnie lotny ale prelegent mówi fajnie, ciekawie i jest pewny siebie to da się słuchać, gorzej jeśli osoba przedstawiająca temat mówi cicho i pod nosem wtedy widać brak pewności siebie i jakoś to wtedy nie idzie.

Slajdy

MAŁO TEKSTU – nic tak nie zabija jak slajd z napaćkaną wielką ilością tekstu. Czasem trzeba wrzucić tekst, ale wtedy daj uczestnikom chwilę na przeczytanie tego co tam zostało wklejone. Jeśli nie będzie tego spora część zacznie czytać tekst zamiast słuchać. Generalnie zasada jest taka, prezentacja to tło do tego co będzie mówione. Pod żadnym pozorem to nie są karteczki do czytania. Tak to nie działa. Jeśli zaś są tłem do tego co będzie mówione to i obrazek i animka i bardzo krótki tekst jest ok. Co mnie natomiast męczy bardzo to fikuśne przejścia. Imho albo brak przejść albo jedno, szybkie i w miarę zgrabne. Nie wiem po co w PowerPoincie zrobili ich tyle i co jedno to gorsze… Na szczęście jest już lepiej. Kilka lat temu spora większość prezentacji jakie widziałem to było prezi. Prezi jest fajne pierwszy raz, może drugi a potem po prostu męczy. Szczególnie jeśli cały czas widać napis unregistered czy co on tam wypisywał.

Nie przepraszaj

To moja pierwsza prezentacja więc proszę o….. ziew. No sorry. Albo stajesz przed ludźmi i gadasz najlepiej jak umiesz albo nie ale nie zaczynaj od przepraszania, no chyba że się spóźnisz, wtedy naprawdę warto przeprosić armię ludzi, której zmarnowałeś kawałek swojego życia – miej naprawdę dobry powód. Bo to nieprofesjonalne – bardzo nieprofesjonalne.

Demo

No cóż. Imho to wymaga dużo skill-a i wewnętrznego spokoju bo prawie zawsze coś idzie nie tak. Jeśli masz dostęp do pilota to za wczas sprawdź czy działa freeze. To potrafi uratować życie. Jak widzisz, że komputer nie daje rady daj freeze i wtedy możesz go nawet zrestartować. Jak przy tym nie stracisz zimnej krwii to nikt się nie zorientuje.

Woda!

Oprócz mlaskania o którym pisał Maciek to są jeszcze dwa powody. Jeśli to Twoja pierwsza prezentacja to może się zdarzyć, że w pół sekundy od rozpoczęcia będziesz miał w ustach Sahare. wtedy łyk wody i jakoś pójdzie. Drugi powód to zbudowanie takiego lekkiego zawieszenia. Dajesz coś do poczytania i robisz łyk, albo przed czymś ważnym, cisza, robisz łyk, automatycznie wiele osób koncentruje uwagę bo coś się zmieniło.

“Tryb prezentera”

Mi działa i sobie cenię głównie ze względu na timer. Zresztą PowerPoint pod tym względem jest fajnie rozbudowany, może sam zmieniać slajdy jeśli ustawimy timing. Możemy robić próby i zapisywać czas per slajd etc. Dla mnie najważniejsze to właśnie notatki, wypunktowane rzeczy, które przy slajdzie chcę powiedzieć i często zaznaczone tzw transition sentence czyli zdanie lub zwrot, który pozwoli mi ładnie przejść do następnego slajdu.

Kolory

No właśnie, czy to prezentacja czy kod czy cokolwiek innego powinny być czytelne na PROJEKTORZE, czyli bez delikatnych kolorków, ma być konkret, to musi być czytelne ot i tyle. Warto za wczasy poznać działanie Win +/- w nowych systemach do robienia zoomu, sprawdzić jak powiększyć wielkość liter czy to w VS czy chromie czy innym IDE którego będziesz używać

Pulpit

Nic tak nie rozbraja jak pierwsze podłączenie laptopa gdzie na wielkim projektorze pokazuje się piękny burdel na pulpicie. W Windowsie zanim podłączysz się pod cokolwiek, wyłącz ikony pulpitu, to po prostu wygląda lepiej. No i tapeta przydała by się jakaś przyzwoita a nie roznegliżowane żona/kochanka/mąż/kochanek.

Timing

No i na koniec najważniejsze. Nie przedłużaj sesji dłużej niż to trzeba. Niektórzy chcą iść zrzucić coś z jelita, inni potrzebują kawy. Jakkolwiek interesująca by była sesja to nie przepadam jeśli przedłuża się w nieskończoność. Szczególnie na konferencjach, gdzie przerwy krótkie. Serio, prelegencie miałeś swój czas, ludzie siedzieli cicho słuchając Ciebie, uszanuj to i okaż szacunek wobec innych i nie kradnij ich czasu. Jest tylko kilka osób, u których takie zachowanie bym zaakceptował – tylko, że one tak nie robią.

Wuluzuj/A jak się nie uda…

To nic się nie stanie. Miałem kiedyś okazję być na wykładzie gościa, bodajże ~17 latka. Który wyszedł przed ok 70 osób odpalił slajdy i go po prostu zamurowało. Nie wiedział co powiedzieć. Normalnie zżarła go trema i to w najgorszy możliwy sposób. I co się stało? Przeprosił i chciał uciekać ale ktoś z sali zaczął ciągnąć gościa za język żeby powiedział o czym miał powiedzieć. Potem ktoś inny zapytał i jakoś tak wspólnie “lud” pociągną tą prezentację i z tego co pamiętam to była fajna merytorycznie prezentacja. Gość dopiął swego i wyszedł z tarczą. Jak on to zrobił to Ty też możesz.

Zatem do dzieła!

 

foto:InfoMEET