Pokazywanie postów oznaczonych etykietą narzędzia. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą narzędzia. Pokaż wszystkie posty

1 listopada 2020

Teachable Machine - Machine Learning to takie proste !

 Teachable Machine to projekt tworzony m.in. przez Google, który ułatwia wejście w podstawy uczenia maszynowego (ang. Machine Learning) poprzez praktykę. Tak wiele kroków należy uczynić, aby zrozumieć w praktyce Machine Learning, podstawy matematyczne, typowe algorytmy, algorytmy pozwalające na uzyskanie wysokiej skuteczności per różne dziedziny, frameowrki i programowanie, trenowanie modeli, dopieszczanie modeli, zapewnienie wlaściwych zbiorów danych do trenowania, itd. Jak widać z potoku pojęć, jest kilka tematów, które warto poznać, aby zrozumieć ML :-) 

Jednak poznanie Machine Learning nie musi być wcale takie trudne, kiedy mamy odpowiednie oparte o interfejs wizualny narzędzia. Oto docieramy do projektu Teachable Machine, dzięki któremu wytrenujemy rozpoznawanie różnych stanów/przedmiotów/obiektów w kilka minut. Sprawdźcie sami, bo tak banalny interfejs pokazuje, że problemy klasyfikacji nie są wcale trudne do zrozumienia w podstawach ML

To co zobaczmy - po kliknięciu w link - to przyjazny interfejs, który pozwala na podłączenie się z przeglądarki do kamerki lub upload obrazków dla poszczególnych klas służących do klasyfikacji.

 

Dzięki takiej sprytnej koncepcji możemy zrobić modele, wytrenować w locie nasz model i oglądać rezultaty w czasie rzeczywistym np: z podłączonej do laptopa kamerki.


Projekt nie ogranicza nas za bardzo, jeśli chcemy użyć wyobraźni to jest jak zawsze dozwolone ;-) W związku z tym wyjściem może być mowa lub dźwięk zależnie od ścieżki klasyfikacji.

Zachęcam do pokazania tego narzędzia dzieciom, bo jest to jak mi się wydaje najbardziej praktyczny sposób na odpowiedź dziecku na podstawowe pytanie: "co to jest machine learning?". Zapewniam Was, że nie zawsze odpowiedź na to pytanie udaje się znaleźć łatwo, stąd dzielę się tym znaleziskiem, być może wzmocnicie pojęcie ML u przyszłych pokoleń wynalazców ;-).

Więcej przykładów i sugestii do nauki Machine Learning z Teachable Machine przez zabawę możecie też wyszukać na YT, np:  


Jeśli udało Wam się ułożyć jakąś ciekawą klasyfikację, dajcie znać w komentarzach.

9 maja 2020

Clonezilla - narzędzie OpenSource do kopiowania, klonowania dysków i partycji + backupów



W okolicy w roku 2000 kiedy poznawałem na co dzień system FreeDOS, FreeBSD oraz zalążek systemu Linux - a precyzyjniej MINIXa - używałem jeszcze wtedy Windows.

Bardzo wygodnym narzędziem do zamrażania stanu systemu był wtedy Norton Ghost.

Jego głównym zadaniem był backup (kopia) całego obrazu dysku lub partycji systemowej do pliku. Mając taki plik, można było odtworzyć system do stanu z momentu backupu. To nowatorskie narzędzie - jak na tamte czasy działające z własnym GUI w konsoli systemu DOS - pozwoliło po zainstalowaniu systemu obraz w sterowników do niego, zrobić kopię całego obrazu, która mogła być wykorzystywana wielokrotnie. Było to wtedy związane z tym, że rejestr systemu Windows łatwo się zaśmiecał wraz z instalacją oprogramowania.




Po około 20 latach okazało się, że zechciałem zrobić klon dysku inną metodą niż przy pomocy programu disk dump w skrócie dd.

Po drodze sprawdziłem GParted oraz gnome-disks, jednak te narzędzia służą do zarządzania dyskami i partycjami, nie specjalizują się w klonowaniu dysków, czy też partycji.




Jak wiadomo podszedłem do tego od razu tak, że poszukałem oprogramowania otwartego i moim oczom ukazał się obraz systemu operacyjnego Linux pod nazwą Clonezilla - dedykowana dystrybucja Linuxa do klonowania, kopiowania, backupowania dysków i partycji.

Zanim jednak użyłem dedykowanego narzędzie Clonezilla, postanowiłam próbować wykorzystać program disk dump w skrócie dd i zrzucić obraz systemu na którym pracuje.

Wiedziałem że będzie w domu skazane na niepowodzenie ale nie widziałem żadnego komunikatu z kernela Linuksa który zabezpiecza system w takich sytuacjach.

Najprostsze użycie:

dd if=/dev/sda of=/dev/sda bs=16MB



Oczywiście, jak się spodziewacie efektem ubocznym nie był sławetny blue screen, lecz alarm z jądra systemu Linux dotyczący naruszenia obszarów, które mapują fizyczny dysk na logiczny File system. Poniżej zrzut ekranu wraz z komunikatem:




Na tyle mi wystarczyło rozgrzewki potwierdzającej, że w systemie Linux są zabezpieczenia, które nie pozwalają w trakcie działania żywego systemu robić klon dysku. Na pewno nie taką prymitywną metodą z użyciem polecenia dd.

Każdy eksperyment daje nam pewność w hipotezie, którą sobie stawiamy. Ja zakładałem, że tak właśnie się to powinno zakończyć i wróciłem do softu Clonezilla.



Jak przebiega proces klonowania dysku z użyciem Clonezilla?

Na początku warto zorientować się, jakie oznaczenia w /dev mają dyski, które podłączyliśmy fizycznie do komputera. Ja wykorzystywałem adapter serwisowy dla dysku docelowego, źródłowy był w komputerze zamontowany.

Polecenia Linuxa, które odsłania nam listę urządzeń dyskowych to:


df -h - pokazuje dyski, partycje wraz z zajętością oraz podmontowane

lsblk - pokazuje urządzenia przenośne, pendrive lub karty SD

lsusb - pokazuje, czy nasz kabelek lub narzędzie do podłączenia dysku na USB jest widoczne.


Oczywiście warto wspomnieć o poleceniu dmesg, dzięki któremu w logu systemowym zobaczymy fakt fizycznego podłączenia dysku oraz nadaną ścieżkę dla dysku np: /dev/sdb.


Na wstępie pobieramy obraz systemu ISO dla Clonezilla z oficjalnej strony.

Po czym używając np: dd lub gnome-disks zapisujemy na pendrive lub innym dysku obraz z systemem backupującym Clonezila, z którego następnie uruchamiamy komputer. Naszym oczom pojawia się taki komunikat i po wybraniu w konfiguracji właściwych opcji (źródłowy dysk, docelowy dysk, czy kopiujemy MBR) wygląd klonowania przedstawiają poniższe zdjęcia:













Dla dysku źródłowego SSD na docelowy 320GB 5400 WD BLUE, proces trwał ok. 45 minut, na laptopie DELL z 4 core CPU i 16GB RAM.


Po wykonaniu klona, restartu i uruchomeniu z laptopa ze sklonowanego dysku, po ok. 10 minutach cały system wystartował pomyślnie i można go używać bez żadnych problemów.

Polecam narzędzie Clonezilla jako świetne i wygodne narzędzie warsztatowe do backupów dysków. Oczywiście, o czym nie wspomniałem, tak jak Norton Ghost to narzędzie potrafi zapisać obraz dysku do pliku, a nawet wykonywać przyrostowe backupy.

Warto nadmienić, że Clonezilla można zainstalować niezależnie oraz uruchomić z dysku jako Clonzilla Live, w powyżej opisanym przypadku używałem wersji Live z odrębnego dysku.

Jest jeszcze jedna ważna kwestia - Clonzilla potrafi zaszyfrować plik backupem :-) Powodzenia podczas buckupowania lub / i klonowania dysków / partycji.

19 grudnia 2013

Perl - język programowania z historycznym 25-letnim garbem

Każdy programista słyszał o zacnym ;-) skryptowym języku programowania Perl. Jego historia sięga 25 lat i doczekała się wersji Perl 5 (przy czym Perl 6 jest w przygotowaniu). Uroczystość świętowania urodzin Pela ;) to tradycja dla kilku wiekowych już fanatyków rozwiązań powstałych w tym języku. Tradycyjnie jak co roku stawiają piwko i tort na stół obgadując nowinki w kolejnych wersjach.
Wszystko byłoby w normie, gdyby nie fakt że grupę programistów języka Perl można policzyć na palcach ... poprawcie mnie jeśli się mylę ?!

Zastanawiam się, czy ta impreza nie powinna być nazywana stypą, kiedy patrzę na statystyki stosowania w nowych projektach oraz wdrażania produkcyjnych rozwiązań. Postanowiłem nieco przyjrzeć się w tym artykule nieco współczesnym wdrożeniom aplikacji w języku Perl.

Zapewne Larry Wall, który jest ojcem tego języka programowania pokładał w swoim projekcie wielkie nadzieje i wierzyny wszyscy, że był to wytwór epokowy. Za co należy oddać szacunek ojcowi Larremu ;-). Tak się składa, że CPAN, jako repozytorium stabilnych modułów do języka Perl utrzymuje się i rozwija w stanie jak 25 lat temu. Aczkolwiek programiści sięgający do tego języka czują jego fenomen a zarazem odrazę patrząc na wiele linii kodu wytworzonego wiele lat temu. Oczywiście nie ma co oceniać algorytmów, które mają swoje pokrycie testami. Na myśli mam zastosowane wzorce architektoniczne w produktach Open Sourcewytworzonych przy pomocy języka Perl. W sumie to ciężko odgadnąć czasmi co autor miał na myśli czytając źródła, ale zastanawiam się często czytają kod Perla, czy musi zawierać nieczytelne komplikacje składniowe. No cóż, okazuje się, że to są właśnie podstawy tego języka: $#, @, $@, &$@ i kilka innych trickow. ...

Chciałbym poruszyć też pewną kwestię historyczną, kiedy ok. 13 lat temu społeczność Perla przegrała z ruchem w językach PHP oraz Python. Tak się skłąda, że obserwowałem jako praktykujący programista ten trend i dzisiaj widzę po wykresach, że czas szykować się na stypę, która może odbędzie się niedługo. Oto zrzut trendów zainteresowania Perlem w porównaniu do alternatywnych języków skryptowych:

Podkreślić należy - bo większość zapomniała - że język PHP wzorował się na Perlu. Dodać trzeba, że jeśli chodzi o przetwarzanie wielkich ilości tekstu oraz stosowanie przy tym wyrażeń regularnych, to inne języki skryptowe mogą się kłaniać, w Perlu działa to na prawdę wydajnie. Znam adminół i devopsów, którzy nie boją się powiedzieć "mamy w du..e pythony, ruby, bash, zsh i inne ... przecież w każdym UNIXie jest Perl i działa od zawsze !". Tutaj nie mogę się kłucić, bo faktycznie od kiedy pamiętam to Perl był zawsze w OSach, od VxWorx, QNX, FreeBSD, UNIX, poporzez Linuxy aż do co ciekawe Androida, których używam na codzień ;-).

Język Perl posiada kilka liczących się na świecie wdrożeń słynnego systemu OTRS, czyli wsparcia dla obsługi klienta (helpdesk). W aktualnej wersji dodano nawet wsparcie dla całego procesu obsługi zgodnego z metodyką ITIL. System wspiera grupy klientów, bazy klientów, obsługę zgłoszeń w systemie kolejkowym z priorytetami i SLA. Od wersji 3.2 posiada skalowalne i konfiigurowalne API, zarówno SOAP jak i REST z bindingami do metod wewnętrznych, dzięki którym w prosty sposób można integrować np: z Call Center, czy obsługą telefoniczną zgłoszeń.

Oto jak autor wypowiada się o swoim ulubionym języku programowania ;-)

Pozdrawiam serdecznie wszystkich z okazji ukończenia 25 rocznicy języka programowania Perl i mam nadzieję, że się nie obrażą na moje wypowiedzi o obumierającej już społeczności tego języka. Z trendów wynika, że pozycja 9 w 2012, 12 w 2013, czyli z pierwszej dwudziestki Perl najpewniej wyleci za kilka lat ... lub stawiam kratę, jeśli okaże się za kilka lat, że jest to język wiecznie żywy;)

Linki:
 * http://adambard.com/blog/top-github-languages-for-2013-so-far/
 * http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html


9 lutego 2012

Narzędzia do pomiar wydajności i optymalizacji strony www

Istnieje wiele metod mierzenia wydajności naszejj strony internetowej. Najsensowniejsza wydaje się mierzona w regioniach geolokalizacyjnych, w których chcemy ją promomwać. Oczywiście są narzędzia, które testują naszą stronę z różnych serwerów z całego świata i podają rankingi wyników.
Najbardziej pożytecznymi argumentami, które stoją za pomiarem wydajności stron internetowych są czynniki oraz odczucia użytkownika.
Składają się one na aspekty typu:

  • czas wczytywania części strony widocznej na ekranie: czas, który upływa od momentu wysłania żądania nowej strony do momentu wyrenderowania części strony widocznej na ekranie przez przeglądarkę
  • czas pełnego wczytania strony: czas, który upływa od momentu, gdy użytkownik wysyła żądanie nowej strony do momentu, gdy strona zostanie w pełni wyrenderowana przez przeglądarkę
Okazuje się, że istnieje wiele czynników, które mogą zaburzać nam te jakżde oczywiste dwie metryki.
W narzędziach prezentowanych poniżej bardzo łatwo po znaczących kolorach i procencie dobrej roboty można obserwować, jak dużo pracy przed nami albo też za nami :-)

Chcąć się odnieść do kryteriów oceny warto wymienić niniejsze:

  • czy poprawnie działa cache
  • ilość plików CSS
  • ilość i JavaScript
  • kompresja i minimalizacja plików
  • czy obrazki są optymalnego formatu
  • czy obrazy załączone do strony są optymalne pod względem cachowania
  • jaki jest stopień optymalizacji wielkości obrazów w danym formacie + sugestie zmian formatu lub wielkości
  • jak stronę widzą typowe boty internetowe
  • jak możemy poprawić stronę pod kątem wygody dla nie w pełni sprawnych osób przeglądających naszą stronę

Gdybyście poszukiwali narzędzia wskazującego co dzieje się z Waszą stroną i gdzie można poszukać uchybień wydajności, polecam gtmetrix. W gtmetrix performance Report jaki można uzyskać z tego narzędzia składa się z wielu praktycznych wskazówek wyrażonych w punktach procentowych i klasyfikuje na tej podstawie do klasy wydajnościowej (skala od A do F, gdzie A to najlepsza ocena). Wygodnych ficzerem jest możliwość porównania z innymi wersjami strony lub innymi stronami.

Jednak na rynku króluje od pewnego czasu PageSpeed i temu narzędziu nie mam na prawdę niczego do zarzucenia. Przemyślane, wspierające urządzenia mobilne, darmowe i co najważniejsze wyniki testu są do przejrzenia pod linkiem przez innych. Ten ostatni ficzer czyni to narzędzie bardzo współczesnym i praktycznym.

Dzięki temu, że Page Speed Insights mierzy wydajność stron na urządzeniach przenośnych i komputerach. Dwukrotnie pobiera URL: poprzez komórkowego i komputerowego klienta użytkownika.


Oczywiście fani Firefoxa mogą zainstalować wtyczkę YSlow analizującą wydajność stron internetowych.

Wspominając o wydajności nie można pominać tzw. Waterfall Chart, czyli rejestru procesu ładowania stron przez przeglądarkę. Uzmysłowi nam to co tak naprawdę może być blokerem dla wydajności. Oto przykładowy widok takiego rejestru wodospadu:

Jeśli natomiast nie jesteśmy webmasterem i chcemy kilka zobaczyć kilka podstawowych kryteriów wydajności strony, możemy użyć page scoring. Oto bardzo czytelny i ogólny raport:

29 października 2008

Google API - sprawny kod, który rozdają za nic



Na stronie google API znajdziemy kilka istotnych linków do konkretnych serwisów sieciowych promowanych w ostatnim czasie przez giganta.

Skoro masa firm trzecich potrafi utrzymywać się z tego, że używają Google Translation API lub Google Adwords API, do tego dodając MUSUPy bazujące na Google Maps API, wychodzi nam bardzo złożona kanapka, którą tylko wystarczy mądrze wykorzystać :)

Czekam z niecierpliwością na Open Office pracujący on-line w przeglądarce z wymarzonym API do arkusza kalkulacyjnego, aby opierać swoje DLSe na takich rozwiązaniach bazujących na np: Google Spreadsheets API :)

Oto kilka z nich:
http://code.google.com/apis/ajaxlibs/documentation/#AjaxLibraries
http://code.google.com/apis/ajax/
http://code.google.com/apis/ajaxlibs/documentation/#mootools

4 września 2008

Modna zabawa w wirtualizację OSów


Nie tylko GIKoWskA moda, ale i wygoda sprawiają, że stajesz się adminem ;-) i masz swoją wymarzoną wirtualizację w wirtualnym świecie marzeń admina, haahahaaa ...


Ulepszona wirtualizacja KVM w jądrze Linux ma swoich fanów. Najciekawsze, że nie tylko amatorów, ale również komercyjne wielkie firmy, które budują rozwiąznai klastrowe i skalujące się dzięki wirtualizacji w każdym wymiarze. W razie awarii szybka kopia działającej instancji i magiczny skrypt admina, co powoduje, że w 15 minut mamy brakującego noda ;) na produkcji, w którym napełniają się cache.

Ja potrzebowałem wykonać konwersje dysku fizycznego na wirtualny, aby się dobrze bawić wirtualizacją i do tego 2 rdzeniowego laptopa, aby zabawa w wirtualizację systemów operacyjnych była przyjemniejsza. Kiedy okazało się, że w wirualnych obrazach można mieć Win NT oraz Win XP, co tego OpenSolaris, QNX + Neutrino i jeszcze FreeBSD, byłem wniebowzięty ;-)

Dzięki np: wirtualizacji DOSa w określonej przez mojego klienta wersji mogłem zasiąść do starego Turbo Pascala 7.0 i napisać pod określoną werjsę wirtualizując w DOSEMU środowisko docelowe. Ba nawet typowe dla danej wersji DOSa błędy można włączać w takiej wirtualizacji - miodzio :)

Temat wirtualizacji i parawirtualizacji rozkręcił się na dobre ... od kiedy zacząłemm używać aplikacji Virtual BOX. Wszystko takie intuicyjne i takie skalowalne, że wypada załączyć tylko orazek i wrócić do zabawy wirtualnkami :)