Data, wszędzie wpisuj datę!

Dzisiaj krótko i na banalny temat. Zapisywanie dat!

Tworzysz Stasha w Gicie? Daj w nazwie nie tylko informacje co stash zawiera, ale również datę.

Robisz kopię zapasową folderu ze stroną na serwerze i nie zamierzasz go usuwać w najbliższym czasie? Dodaj datę! Zamiast folderów „strona – kopia”, ”strona – kopia 2“, bedziesz mieć od razu informacje jak stara jest dana kopia, oraz czy jej już nie usunąć.

I jeszcze jedna fajna rzecz – najlepszym formatem dla dat jest YYYY-MM-DD, bądź wersja z kropkami. Dlaczego? Sortowanie! 🙂 Gdy lista jest sortowana alfabetycznie, z automatu masz poprawnie posortowane daty 😀

data.png

Instalacja Umbraco – problem z ProfiledDbConnection.cs

A więc instaluję sobie Umbraco. Wybrałem login i hasło admina, szablon strony itd. Poczekałem aż pasek instalacji przesunie się do końca, i… Nic.

Czekam, czekam a pasek stoi w miejscu.

Wracam do VisualStudio a tam wita mnie nowe okienko:

Zrzut ekranu 2016-09-20 o 01.24.23a.png

Jeśli damy Cancel, dostaniemy piękny exception:

loaderlock2

To jest dość stary problem z instalacją Umbraco. Żeby go rozwiązać, trzeba odznaczyć LoaderLock w Menu->Debug->Windows->Exception Settings->Managed Debug Assistants->LoaderLock:

loaderlock4

Highlight all occurrences – wtyczka do Chrome

Siema, napisałem ostatnio wtyczkę do Chrome i chciałem się pochwalić 😀

Wtyczka służy do szybkiego wyszukiwania wszystkich wystąpień zaznaczonego tekstu na stronie. W prostych słowach – zaznaczasz na stronie słowo „kupa” i wszystkie kupy na stronie są podświetlone!

Link: https://chrome.google.com/webstore/detail/highlight-all-occurrences/odhbnpahcahiihjfkmdnnallndmmibpk

Wiele razy przeglądałem na stronach w necie opublikowany kod źródłowy. Podczas czytania kodu mam zwyczaj zaznaczania wybranych zmiennych aby zobaczyć wszystkie ich wywołania. W edytorach tekstu dla programistów, zaznaczenie od razu podświetla wszystkie wystąpienia na ekranie – i właśnie czegoś takiego potrzebowałem 🙂

unnamed

unnamed.png

unnamed-2.png

git.ignore dla leniwych

OK – utworzyłem nowy projekt w VisualStudio. Pliki początkowe stworzone. Odpalam gita, inicjalizuję repo i bum! Masa plików, które na repo iść nie powinny. No to co? Jeśli używam SourceTree, to daję lewym na pliku i klikam „ignore” po czym ustawiam, żeby ignorował np cały katalog, czy co tam mi odpowiada. Operację powtarzam kilka razy i mam pierwszy git.ignore.

Super, pierwszy commit poleciał. To teraz może dodam parę nugetów i przebuduję projekt. Zaglądam do Source Tree a tam znowu brudno. Dll’ki w katalogu bin, to samo w katalogu packages – itd. No to znowu muszę się pobawić w ignorowanie.

 

Jeśli to któryś z kolei projekt danego typu to pewnie na samym początku przekopiowałem git.ignore z jednego ze starych projektów.

Można jednak jeszcze szybciej. I lepiej… (chyba)…

Wystarczy wbić na http://www.gitignore.io i wybrać z listy interesującą nas pozycję:

gitignore-io-1

Po tym dajemy „Generate” i już:

gitignore-io-2

Mamy gotowy git.ignore.

Czasem będzie trzeba coś do niego dodać… ale ogólnie sprawuje się nieźle.

Używasz TFS, używaj też GIT’a

W pracy repozytorium mamy postawione na TFS’ie. Przejście na GIT’a jest (przynajmniej na tą chwilę) nie planowane 😦 Trzeba więc zacisnąć zęby i korzystać z tego co mamy..

Ale kurde… do tej pory korzystałem praktycznie zawsze z GIT’a i trochę mnie to jednak boli :/

Przykłady:

  • TFS nie ogarnia zmian na plikach, jeśli nie zostały wprowadzone z poziomu Visual Studio. Żeby zmiany pojawiły się w „Pending changes”, muszę ten plik otworzyć w VS’ie, dodać np spację i zapisać plik. To bynajmniej nie jest działanie, którego oczekuję od systemu kontroli wersji… Przed „check in’em” muszę przypomnieć sobie wszystkie pliki, które zmieniałem o_O… To raczej okno „Pending changes” powinno widzieć wszystkie zmiany, a nie żebym ja musiał je pilnować…
  • TFS ciągle wrzuca mi do „Pending changes” pliki, które nie mają w sobie żadnych zmian.. Nie wiem czy to pliki, które zmodyfikowałem a później cofnąłem wprowadzone zmiany… czy on tak sam z siebie, z nudów… W każdym razie, przed „Check in’em” zawsze przeglądam wszystkie pozycje na liście i usuwam zwykle przynajmniej pół z nich… ale jeśli już jesteśmy przy przeglądaniu zmian…
  • Podgląd zmian na TFS’ie jest toporny. Korzystałem zawsze z SourceTree i tam wystarczyło kliknąć w plik na liście i po prawej widzimy zmiany. W „Pending changes” muszę kliknąć prawym klikiem na pliku, wybrać „Compare” a następnie „With latest version”. Po tym dopiero otwiera się nowe okno, które dopiero pokazuje mi zmiany… Nie mam w zwyczaju commitowania wszystkich zmienionych plików „jak leci” (żeby nie wkleić jakichś śmieci), więc przeglądam wszystkie pozycje :/

Można jeszcze sporo wymienić… no ale do sedna 🙂

Takim tymczasowym rozwiązaniem, czy może bardziej „pomocą”, jaką sobie podałem jest… używanie GIT’a 🙂 W folderze projektu zainicjalizowałem nowe repozytorium GIT’a i podłączyłem go do SourceTree. Teraz wszystkie pliki jakie zmieniam, widoczne są w pięknym i wygodnym podglądzie w SourceTree 🙂

Niestety Visual Studio ma wbudowaną obsługę repozytoriów GIT’owych i gdy tylko wykrył takie na folderze solucji… zablokował mi możliwość „checkinowania” kodu do TFS’a xD
Próbowałem to rozwiązać przenosząc folder .git wyżej, ale VS nadal go wykrywał. Dalej znalazłem rozszerzenie „nogit”… ale nie działa ono z najnowszym VS 2015… :/

W końcu znalazłem rozwiązanie (http://stackoverflow.com/questions/21150060/how-can-you-disable-git-integration-in-visual-studio-2013-permanently) – należy zainicjalizować repozytorium gitowe w ten sposób, aby folder GIT’a nazywał się „_git” zamiast „.git”, oraz stworzyć skrót do „_git” o nazwie „.git”.

git init --separate-git-dir _git

Visual Studio szuka folderu „.git”, znajdzie tylko skrót, wiec nie zadziała. No i można „checkinować” kod do TFS’a 🙂

Pracy jest trochę wiecej, trzeba ogarniać dwa systemy kontroli wersji a nie jeden (choć na gicie nie trzeba tak się starać o czystość commitów). Nadal też muszę klikać „Compare” w Visual Studio, ale przynajmniej mam pewność, że nie zapomniałem „zacheckinować” jakiegoś pliku, który edytowałem poza Visual Studio. Wystarczy, że porównam listę „Pending Changes” w VS z listą zmian w Source Tree 🙂

 

Dziwactwa Swift’a cz.1

Nie wiem czemu, ale w Swift’cie przy wywoływaniu funkcji, która przyjmuje więcej niż jeden parametr, trzeba obowiązkowo podawać nazwy parametrów, jakie są zdefiniowane w deklaracji funkcji. To może być jeszcze przydatne: np żeby nie pomylić ich kolejności. Gdy przesyłamy trzy stringi bez etykietowania ich, moglibyśmy je przekazać w złej kolejności.

Jednak ciekawostka, której rozgryźć nie umiem, jest w tym, że pierwszego parametru nie etykietujemy… Jeśli spróbujemy to zrobić, dostajemy błąd:

Zrzut ekranu 2016-06-19 o 13.10.06

Ficzery Google Translate

Ostatnio zauważyłem, że gdy jesteśmy zalogowani w przeglądarce kontem Google, to w Google Translate mamy dwa małe przyciski gwiazdek:
googletranslate

Służą one do zapisywania tłumaczonych słówek na prywatnej liście słówek. Klikając na pierwszy dodajemy tłumaczone słówko do naszej listy. Listę możemy sobie podejrzeć klikając na drugi przycisk:

Zrzut ekranu 2016-06-18 o 20.03.17

Widzimy wtedy listę wszystkich ‚polubionych’ słówek na naszym koncie. I co najlepsze, powyżej listy, po prawej stronie mamy przycisk „Eksport do Arkuszy Google” 😀 Można więc je tam wypluć a następnie zrobić z nimi co się chce – np wyeksportować do Anki czy innego programu z fiszkami.

Sam się często łapałem na tym, że wiele razy tłumaczę w Google to samo słowo, bo nie zapamiętuję go za pierwszym razem, dlatego ta opcja wygląda mi na bardzo przydatną 🙂

Krótko o CDN

Siema, chciałem napisać trochę o CDN (Content Delivery Network). CDN to systemy dostarczania treści. Łatwo spotkać się z nimi gdy korzystamy z frameworków JS’owych takich jak Bootstrap czy jQuery. Dla nich mamy wiele darmowych CDN’ów. Są też płatne, pozwalające na hostowanie naszych własnych treści, ale to już grubsza sprawa, i jeszcze jej nie zbadałem na tyle by móc coś więcej napisać.

Wracając do naszych darmowych CDN’ów:
Gdy korzystamy z ww. Bootstrapa, jQuery etc, do naszego html’a musimy załączyć plik wybranego frameworka. Można to zrobić za pomocą linku do kopii przechowywanej na CDN:

< script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>

albo do kopii przechowywanej na naszym własnym serwerze:

< script src="js/bootstrap.min.js"></script>

Plik bootstrap.js zajmuje jednak, tak jak patrzę teraz, 37kB. Wrzucenie go więc na nasz własny, nie ważne jak bardzo limitowany pojemnościowo serwer, nie zaboli nas tak bardzo. W takim razie dlaczego tego nie zrobić?

No lepiej nie. Lepiej skorzystać z pliku przechowywanej na jednym z popularnych CDN’ów. A teraz powody:

  1. Na tworzonej stronie, podpinamy plik za pomocą tego samego linku co masa innych stron. Przeglądarki są na tyle mądre, że gdy raz już ten plik pobrały, nie ściągają go ponownie. Ponieważ ogrom innych stron w internecie korzysta z serwerów CDN dla tych plików, mamy bardzo duże prawdopodobieństwo, że użytkownik już ten plik posiada.
    Efekt – nasza strona ładuje się szybciej.
  2. Serwery CDN są rozsiane ‚często i gęsto’. Podstawowym celem serwerów CDN, jest dostarczenie treści do użytkownika z serwera, który znajduje się jak najbliżej, a który zawiera kopię danych. Ma to zapobiegać chorobie internetu, czyli spowolnieniu go poprzez zbyt duże trasy, które muszą pokonywać pakiety pomiędzy serwerami a użytkownikami. Najpopularniejsi dostawcy CDN mają serwery rozsiane bardzo gęsto, i możemy mieć pewność, że użytkownik otrzyma plik w mega krótkim czasie.
  3. Zyskujemy w rankingach wyszukiwarek. To akurat wynika z poprzednich dwóch punktów, ale i tak warto wspomnieć:
    Takie Google przyznaje stronom punkty. Na podstawie punktów, decydowane jest jak wysoko dana strona pojawi się w wynikach wyszukiwania. Jeśli strona zwracana jest użytkownikowi szybko, dostaje dużo punktów. Możliwe też (chociaż tego już nie sprawdziłem), że za samo użycie CDN Google przydziela bonusowe punkty.
    W każdym bądź razie, zwykle chcemy być w wynikach wyszukiwania jak najwyżej więc każde kolejne punkty są nam na rękę.

I to w sumie tyle… Temat jest na pewno dużo głębszy ale te 3 punkty wyżej są chyba najważniejsze. Nie powiedziałem prawie nic o użyciu CDN’ów dla własnych plików, ale sam jeszcze nie wiem z czym to się je, więc mogę do tego wrócić jak trochę ogarnę temat 🙂

 

Post na rozpęd -hakowanie hasła Windows 10 gdy mamy PIN

Siema,

To taki post na początek. Relacja z dzisiejszego hakowania Windows 10.

Wpadłem do cioci zainstalować office’a. Na lapku był Win 8, a że darmowy update do Win 10 kończy się w lipcu to zaktualizowałem go od razu. Dalej chciałem podpiąć konto Live, na którym był przypisany Office 365, ale trzeba było podać aktualne hasło… którego nie ma… Na kompie był ustawiony PIN i to wystarczało do tej pory…

Małe googlowanie pokazało, że większość poradników odnosi się do resetowania hasła przez aplikacje bootowalne z pendrive’a. Nygustwo nakazało mi jednak szukać innej metody.

W panelu sterowania, gdzieś w zarządzaniu użytkownikami, znalazłem kreatora „dysku usb restartującego hasło”. Brzmi trochę za ładnie, ale spróbujmy. Podpinam pendrive, robię na nim małą partycję na nowe dane, wybieram partycje w ww. kreatorze i… prośba o podanie aktualnego hasła systemowego… A jednak…

Ale wtedy pomyślałem… a co z innymi kontami użytkowników? Szybko zrobiłem nowe konto. Bez podawania aktualnego hasła przydzieliłem mu prawa admina (wtf?), przelogowałem się na niego, wbijam do panelu sterowania / zarządzanie użytkownikami i bum… zmieniam hasło pierwszego użytkownika…

Nie jest to nic ambitnego w sumie… ale to wygląda na coś co powinno być zablokowane… Mając dostęp do kompa, bez podawania hasła można utworzyć nowego użytkownikami z prawami admina…

Nie wiem…