2018-10-26
Od dzisiaj na platformie Udemy dostępny jest kurs „Linux dla początkujących”. Z tej okazji przez krótki czas kurs będzie dostępny za darmo! To taki give-back dla społeczności, bez której samodzielne rozwiązywanie wielu problemów byłoby koszmarne.
Jeśli zdążyłeś/aś to poniższy link pozwoli na darmowe zapisanie się na szkolenie. Jeśli kurs został już sklasyfikowany jako płatny, to z tym linkiem możesz go kupić w najniższej możliwej cenie.
Zapisz się na kurs Linux dla początkujących – mistrz linii komend
A co w samym kursie?
- Przygotowanie środowiska do kursu (instalacja Linux)
- Praca z Linuxem z linii komend
- Polecenia do operacji na plikach i katalogach
- Uprawnienia i polecenia związane ze zmianą uprawnień
- Tworzenie kont użytkowników i grup
- Przegląd popularnych poleceń z linii komend
W sumie ponad 5 godzin materiału wideo, a do każdej lekcji quiz i zadania do samodzielnego rozwiązania (z propozycją rozwiązań)
Zapraszam – pracuj na Linuxie jak PRO!
2018-10-24
Podczas budowania modelu predykcyjnego dane, na których model się uczy dzielone są na dane uczące (+/-80%) i dane testowe (+/-20%). Idea jest taka, aby algorytm mając do dyspozycji dane uczące „zauważył” i „nauczył” się reguł, które wpływają na powiązanie danych. Pozostałe dane testowe są na tym etapie ukryte przed algorytmem. Może się to wydawać trochę dziwne, bo przecież kiedy zależy nam na uzyskaniu możliwie najlepszego modelu, to należało by go ćwiczyć na wszystkich dostępnych danych. Jest jednak za tym ukryta pewna idea.
Dzięki danym testowym można mianowicie sprawdzić czy model jest dobry i na ile dobry. Po zakończonym ćwiczeniu modelu, należy wziąć dane testowe i sprawdzić, czy model dobrze przewiduje wartości. Ma to sens, bo przecież dane testowe zostały losowo wyłonione ze wszystkich dostępnych danych i jak by nie było są rzeczywistymi obserwacjami, które model powinien dobrze przewidywać.
Ocena modelu polega na wyznaczeniu przez model przewidywanych wartości i ich porównaniu z rzeczywistymi danymi z danych testowych. Co pozostaje problemem to miara błędu. Do dyspozycji jest:
- Błąd średniokwadratowy, średni błąd kwadratowy (MSE, ang. Mean Squared Error) – średnia kwadratów błędów dla każdej wartości ze zbioru testowego. Dlaczego kwadratów? Bo gdzieniegdzie błąd jest dodatni, a gdzieniegdzie ujemny – jak się go podniesie do kwadratu, to otrzymana wartość będzie liczbą dodatnią. Ta miara jednak jest zależna od tego co podlega obserwacji – np. przewidywana cena samochodu z błędem +/-1000 jest całkiem niezła w porównaniu z przewidywaną ceną bukietu kwiatów +/-100 zł. Do wyznaczenia tej wartości korzystamy z sklearn.metrics.mean_squared_error
- Średni błąd bezwzględny (MAE, ang. Mean absolute error) – podobny do MSE, ale zamiast sumy kwadratów błędów liczymy sumę wartości bezwzględnej błedu – miara bardziej oddaje wielkość błędu, ale nadal jest specyficzna dla modelu tak jak MSE. Do wyznaczenia tej wartości korzystamy z sklearn.metrics.mean_absolute_error
- Współczynnik determinacji (coefficient of determination, R²) – Informuje o tym, jaka część zmienności zmiennej objaśnianej została wyjaśniona przez model. Wartość ta jest wyrażona przez procent, co pozwala uwolnić się od wielkości szacowanych wartości. Wynik 80% będzie więc oznaczał, że model jest godny zaufania na 80%. Im R² jest większe, tym lepiej! Przy okazji współczynnika determinacji mówi się też czasami o współczynniku zbieżności. Zależność między obiema wartościami jest dość prosta:
współczynnik determinacji = 1 – współczynnik zbieżności
i co za tym idzie, model jest tym lepszy i mniejszy współczynnik zbieżności. Wartość wyznaczamy korzystając z sklearn.metrics.r2_score
Umownie można przyjąć następujące znaczenie dla współczynnika determinacji:
0,0 – 0,5 – dopasowanie niezadowalające
0,5 – 0,6 – dopasowanie słabe
0,6 – 0,8 – dopasowanie zadowalające
0,8 – 0,9 – dopasowanie dobre
0,9 – 1,0 – dopasowanie bardzo dobre
2018-10-07
Poniżej zamieszczam przykładową klasę zaimplementowaną w C# Visual Studio 2017 zawierającą:
- funkcję Split zamieniającą napis rozdzielany separatorami na tabelę wartości
- funkcję ListFiles zwracającą w postaci tabeli pliki znajdujące się w określonym katalogu
- funkcję ListDirs zwracającą w postaci tabeli katalogi znajdujące się w określonym folderze
- funkcję skalarną GetDBCount zwracającą informację o ilości baz znajdujących się na serwerze
- funkcję agregującą WeightedAvg wyznaczającą średnią ważoną
- procedurę GetWindowsLocale pobierającą informację o ustawieniach regionalnych z systemu Windows i zwracającą te informacje przez tekst w SQL
- trigger DropTableTrigger uruchamiany podczas kasowania tabel i zwracający kilka informacji o tej operacji w postaci tekstu
- typ Point pozwalający na zdefiniowanie punktu, jego parsowanie, wyświetlanie oraz wyznaczanie odległości między punktami na płaszczyźnie
Czytaj dalej »
2018-10-07
Tutorial krok po kroku, jak podpisać i zaiportować moduł CLR
W tym artykule pokażę jak od A do Z zaimplementować w .NET dwie metody służące do listowania plików i katalogów i zaimportować te funkcje do SQL 2017 z uwzględnieniem aktualnych best practice (z opcją 'clr strict security’). Czym jest ta opcja i jakie ma działanie zobacz w https://www.mobilo24.eu/sql-clr-w-wersji-2017opcja-clr-strict-security/
Utwórz klasę w Visual Studio (uwaga – koniecznie wybierz Class Library .NET) – inaczej nie będzie do dyspozycji wszystkich wymaganych referencji (https://stackoverflow.com/questions/48130887/visual-studio-not-recogonizing-microsoft-sqlserver-namespace):
Napisz swój kod, co może wyglądać o tak: Czytaj dalej »
2018-10-07
SQL 2017 wprowadził pewną zmianę w zakresie CLR.
Otóż od tej pory bardzo wiele zależy od opcji 'clr strict security’ (konfigurowana przez sp_configure).
Jeżeli jej wartość to „0” (NIEZALECANE), to wszystko działa po staremu, tzn.:
- każdy assembly posiada swój permission set, który może być równy:
- SAFE – nie wychodzimy poza „proces” – jakieś dane dostaliśmy na wejściu i je przetwarzamy
- EXTERNAL ACCESS – możliwe jest korzystanie z zasobów zewnętrznych, jak np. sieć lub system plików
- UNSAFE – można wywołać kod niezarządzany
- żeby zaimportować moduł SAFE właściwie nie trzeba wykonywać żadnej specjalnej konfiguracji,
- ale dla EXTERNAL ACCESS lub UNSAFE należy:
- podpisywać assembly certyfikatem lub kluczem asymetrycznym (ZALECANE)
- lub ustawiać parametr TRUSTWORTHY dla bazy na ON a właścicielem bazy powinien być login z uprawnieniem UNSAFE ASSEMBLY (NIEZALECANE)
Jeżeli wartość parametru to 1 (ZALECANE), to permission set nadal należy określać, ale… nie służy on już do niczego. Każdy assembly będzie traktowany i tak jako UNSAFE, a do uruchomienia kodu musisz podpisać kod (ZALECANE) lub zmienić TRUSTWORTHY na ON (NIEZALECANE).
Ponieważ TRUSTWORTHY ustawione na on może naruszać bezpieczeństwo systemu, oczywiście zaleca się stosowanie podpisywania kodu.
https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/clr-strict-security?view=sql-server-2017
2018-09-30
Funkcja została zdefiniowana w dość prosty sposób:
[SqlFunction(DataAccess = DataAccessKind.Read,
SystemDataAccess = SystemDataAccessKind.Read)]
public static int GetDBCount()
{
using (SqlConnection conn
= new SqlConnection("context connection=true"))
{
conn.Open();
SqlCommand cmd = new SqlCommand(
"SELECT COUNT(*) AS 'NumberOfDatabases' FROM sys.databases", conn);
return (int)cmd.ExecuteScalar();
}
}
Niestety jej wykonanie kończyło się błędem:
This statement has attempted to access data whose access is restricted by the assembly. Czytaj dalej »
2018-09-27
Jeden z komputerów z Windows 10 na pokładzie przestał być widoczny dla innych maszyn w sieci. Najbardziej bolesne było to, że na ten komputer miały trafiać skany z drukarki, która była skonfigurowana do zapisywania plików w udostępnianym katalogu na tym komputerze.
Po ciężkiej walce w której zmieniałem dziesiątki różnych ustawień doszedłem do następujących najważniejszych zmian, które spowodowały, że komputer się znowu pokazał.
W services.msc należało włączyć kilka usług (pewnie wymieniam ich tu za dużo, ale sam nie wiem, która zmiana w końcu pomogła):
- [x] Klient DNS (DNSCache)
- [x] Odnajdywanie SSDP (SSDPSRV)
- [x] TCPIP Netbios (lmhosts)
- [x] Publikowanie nazw komputerów PNRP (PNRPAutoReg)
- [x] Publikacja zasobów odnajdywania funkcji (FDResPub)
- [x] Host dostawcy odnajdywania funkcji (fdPHost)
Jeśli udostępnianie ma być włączone dla urządzeń bez Windows, jak np. Linux lub po prostu drukarka zapisująca na zasób sieciowy (mój przypadek), to dodatkowo wykonaj:
Panel sterowania >> Programy i funkcje >> Dodaj usuń składniki systemu windows
[x] – zaznaczyć „Usługa udostpniania plików SMB 1.0/CIFS„