W naszym świecie tzn. ludzi, różnych relacji, sieci teleinformatycznych i maszyn obliczeniowej różnej skali na co dzień tworzymy szczególny rodzaj zjawisk: przyczynowo - skutkowe. Jest to zgodne z ogólnie przyjętą logiką, że zdarzenie lub działanie niesie za sobą skutki działa, czy też efekty. Tutaj dochodzimy do pewnego faktu: jeśli chcielibyśmy wyszkolić sztuczną inteligencję z dostrzegania tak specyficznej logiki, w której to na co dzień działamy my ludzie, droga jeszcze daleka.
Posiłkując się różnymi artykułami naukowi warto dodać, że puki sztuczna inteligencja nie będzie zbyt mądra, jeśli komputery nie pojmą przyczyny i skutku, możemy zapomnieć na długo, że użyjemy AI jako potężnego wsparcia w dziedzinie życia ludzi. Dlaczego, bo z pojęciem przyczyny i skutku mają problem nawet ludzie :-), więc skoro nie jesteśmy w stanie dokonać zapisu numerycznego/macierzowego tego zjawiska, maszyny liczące nie zastąpią intuicji, kolektywnej inteligencji i powszechnie nauczanej logiki.
Nauce zwanej informatyka wystarczyła niecałą dekada, aby komputery stały się wyjątkowo dobre w diagnozowaniu chorób, tłumaczeniu języków i transkrypcji mowy, podpowiadaniu trendów, wsparciu w kilku procentach naszych zawodów. Maszyny liczące mogą ograć ludzi w skomplikowanych grach strategicznych, tworzyć fotorealistyczne obrazy i sugerować przydatne odpowiedzi na wiadomości e-mail. Mogą rysować obrazki i generować teksty, mogą też podstawiać mowę jednego człowieka do mimiki innego.
Jednak pomimo tylu niesamowitych i imponujących osiągnięć sztuczna inteligencja ma rażące słabości.
Systemy uczenia maszynowego mogą zostać oszukane lub zdezorientowane sytuacjami, w których wcześniej nie były szkolone. Autonomiczny samochód zostaje zdezorientowany przez scenariusz, z którym ludzki kierowca mógłby sobie łatwo poradzić i wybrnąć z niego w ułamku sekund. System AI z trudem przeszkolony do wykonywania jednego zadania (powiedzmy, identyfikacja psów) musi zostać ponownie nauczony, aby robić coś innego (identyfikowanie koni). Podczas tego procesu może stracić część swojej bazy wiedzy, jaką posiadał w pierwotnym zadaniu. Informatycy nazywają ten problem „katastrofalnym zapominaniem”.
Te niedociągnięcia mają coś wspólnego: istnieją, ponieważ systemy AI nie rozumieją związku przyczynowego. Widzą, że niektóre zdarzenia są powiązane z innymi, ale nie ustalają, które rzeczy bezpośrednio powodują inne. To tak, jakbyś wiedział, że obecność chmur wiąże się z deszczem, ale nie wiedziałbyś, że właśnie dzięki chmurom deszcz w ogóle może spaść.
Zrozumienie przyczyny i skutku jest dużym aspektem tego, co nazywamy zdrowym rozsądkiem, i jest to obszar, w którym systemy AI „nie mają pojęcia”, mówią naukowcy t.j. Elias Bareinboim.
Pomysły naukowcóœ to np: przekazanie badaniom nad sztuczną inteligencją spostrzeżeń ze stosunkowo nowej nauki o przyczynowości, dziedzinie ukształtowanej w ogromnym stopniu przez Judeę Pearl, zdobywcę nagrody Turinga.
Jak to opisują w/w naukowcy Bareinboim i Pearl, zdolność AI do wykrycia korelacji - np. daktu, że chmury zwiększają prawdopodobieństwo deszczu - jest jedynie najprostszym poziomem przyczynowego rozumowania. To wystarczy, aby w ostatnim dziesięcioleciu rozwinąć technikę sztucznej inteligencji znaną jako głębokie uczenie się - Deep Learning.
Biorąc pod uwagę dużą ilość danych o znanych sytuacjach, ta metoda może prowadzić do bardzo dobrych prognoz. Komputer może obliczyć prawdopodobieństwo, że pacjent z pewnymi objawami ma określoną chorobę, ponieważ nauczył się, jak często tysiące, a nawet miliony innych osób z tymi samymi objawami cierpiały na tę chorobę. To zdecydowanie może wspierać nas w jednej dziedzinie i klasyfikacji jednej, konkretnej choroby, ale diagnozowanie nie jest banalną klasyfikacją.
Istnieje jednak rosnąca zgoda co do tego, że postęp w sztucznej inteligencji utknie w martwym punkcie, jeśli komputery nie będą w stanie lepiej radzić sobie z przyczyną. Gdyby maszyny mogły zrozumieć, że pewne rzeczy prowadzą do innych rzeczy, nie musiałyby cały czas uczyć się wszystkiego od nowa - mogłyby wziąć to, czego się nauczyły w jednej dziedzinie i zastosować to w innej. A gdyby maszyny mogły kierować się zdrowym rozsądkiem, moglibyśmy zaufać im, by podejmowali działania samodzielnie, wiedząc, że prawdopodobnie nie popełnią głupich błędów.
Dzisiejsza sztuczna inteligencja ma jedynie ograniczoną zdolność wnioskowania o wynikach danej akcji. W uczeniu się przez wzmocnienie, technice Reinforcement Learning, która pozwoliła maszynom opanować gry takie jak szachy i Go, system wykorzystuje rozległe próby i błędy, aby rozpoznać, które ruchy zasadniczo spowodują, że wygrają. Ale to podejście nie działa w bardziej chaotycznych ustawieniach w prawdziwym świecie. Nie pozostawia nawet maszyny z ogólnym zrozumieniem, w jaki sposób może grać w inne gry.
Jeszcze wyższym poziomem myślenia przyczynowego byłaby zdolność rozumowania, dlaczego tak się stało, i zadawania pytań "co się stanie jeśli?". Pacjent umiera podczas badania klinicznego: czy to wina medycyny eksperymentalnej czy coś innego? Spadają wyniki testów szkolnych: jakie zmiany zasad najbardziej je poprawiłyby? Tego rodzaju rozumowanie znacznie wykracza poza obecne możliwości sztucznej inteligencji.
Tego sposobu myślenia chcemy nauczyć maszyny, ale okazuje się, że dziedzina życia ludzi nie jest uproszczona do kilkunastu powiązań a do milionów prawdopodobnych powiązań. To dzięki logice i tzw. intuicji potrafimy działać skutecznie, dobrowolnie, zgodnie z naszymi zasadami życia. To jest zagadka dla sztucznej inteligencji i moim zdaniem kwestią czasu jest poznanie nowego kernela matematycznego, w których zachowanie ludzi poddaje się modelowaniu. Jeśli stworzymy dedykowaną dziedzinę, która być może będzie kolejną odnogą informatyki i psychologii, cybernetyki oraz kilku innych, będziemy w stanie kiedyś współdzielić ziemię z nowymi bytami AI.
Ciekawe linki:
- https://www.artefakt.pl/blog/seo/algorytm-google-reinforcement-learning
- https://xbpeng.github.io/projects/Robotic_Imitation/ + https://arxiv.org/pdf/2004.00784.pdf
- https://landing.ai/landing-ai-creates-an-ai-tool-to-help-customers-monitor-social-distancing-in-the-workplace/
- https://blog.edrone.me/pl/co-to-jest-deep-learning-i-jak-mozemy-go-wykorzystac/ + https://www.youtube.com/watch?v=6M5VXKLf4D4
- https://www.technologyreview.com/2020/02/19/868178/what-ai-still-cant-do/
Pokazywanie postów oznaczonych etykietą informatyka. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą informatyka. Pokaż wszystkie posty
22 czerwca 2019
Najważniejsze typy czujników używane w Internecie Rzeczy - IoT
IoT, to zdecydowanie najgorętsze hasło technologiczne ostatnich lat. Idea Internet of Things polega na gromadzeniu, udostępnianiu i analizowaniu danych oraz tworzeniu z nich wartości. Wszystko pięknie, ale nawet najbardziej wydumany system dzisiaj bez wnioskowania wiedzy z danych (podejmowania decyzji i wykonywania algorytmów w środowisku rzeczywistym) stanowi bezużyteczną stertę technologiczną.
Stąd też bardzo duże znaczenie mają czujniki i elementy wykonawcze w Internecie Przedmiotów (IoT), które umożliwiają mu pobieranie danych ze świata i działanie w ramach jego środowiska.
Internet przedmiotów składa się z kilku warstw technologii, które umożliwiają zwykłym rzeczom udostępnianie danych, które gromadzą przez Internet, aby ostatecznie zapewnić inteligencję, autonomiczne działanie i wartość, które w dużej mierze zależą od jakości samych danych. Dlatego czujniki i urządzenia wykonawcze są nieodzowną częścią stosu technologicznego IoT i czynnikiem decydującym o rozwoju każdego systemu IoT.
Stąd też bardzo duże znaczenie mają czujniki i elementy wykonawcze w Internecie Przedmiotów (IoT), które umożliwiają mu pobieranie danych ze świata i działanie w ramach jego środowiska.
Znaczenie sensorów IoT i elementów wykonawczych w Internecie Rzeczy
Czujniki i elementy wykonawcze są ważne dla Internetu Rzeczy, ale czym one są?
Czujnik, zwany także przetwornikiem, to urządzenie, którego zadaniem jest wykrywanie zdarzeń lub zmian w jego bezpośrednim otoczeniu i przekształcanie tych zjawisk fizycznych (takich jak temperatura, światło, wilgotność powietrza, ruch, obecność substancji chemicznych i wiele innych) w impulsy elektryczne które następnie można w znaczący sposób interpretować. Z drugiej strony siłownik można postrzegać jako narzędzie działające odwrotnie niż czujnik. Interpretując impulsy elektryczne wysyłane z układu sterowania i przekształcając je w ruch mechaniczny, w rzeczywistości wprowadza zmiany w jego fizycznym otoczeniu za pomocą szeregu prostych czynności, w tym między innymi otwierania i zamykania zaworów, zmiany pozycji innych urządzeń lub kąt, aktywowanie ich lub emitowanie dźwięków lub światła. Mówiąc prościej, siłownik nazywany jest „napędem”.
Podczas gdy zwykłe czujniki elektryczne i siłowniki istnieją od dziesięcioleci i są wszechobecne we współczesnych zastosowaniach przemysłowych, pojawienie się Internetu przedmiotów otworzyło zupełnie nowe możliwości zastosowania czujników IoT nie tylko w sektorze przemysłowym, ale także w dziedzina użytku komercyjnego i domowego. Jako niezbędny czynnik IoT czujniki i urządzenia uruchamiające pomagają monitorować, kontrolować i usprawniać operacje w prawie każdym sektorze, od inteligentnych pojazdów po ochronę lasów deszczowych. Internet rzeczy zrewolucjonizował sposób ich stosowania i rozszerzył zakres ich zastosowania, dzięki czemu czujniki działają w potężnym, opartym na chmurze oprogramowaniu analitycznym do opracowywania inteligentnych rozwiązań dla maszyn, ludzi i środowiska.
Biorąc powyższe pod uwagę, nie ma wątpliwości, że aby utrzymać szybką ewolucję, której doświadcza, Internet Rzeczy potrzebuje coraz bardziej wydajnych (a najlepiej tanich) rozwiązań czujnikowych. Niezawodny system czujników i urządzeń wykonawczych stanowi podstawę każdego udanego inteligentnego wdrożenia, dlatego konieczne jest, aby zdawać sobie sprawę z rodzajów dostępnych rozwiązań czujników IoT. Przyjrzyjmy się najpopularniejszym typom czujników używanych w IoT.
Czujniki mogą być albo samodzielnymi urządzeniami, albo wbudowane w zwykłe obiekty lub maszyny, aby uczynić je inteligentnymi, i można je podzielić na kategorie pod względem zjawiska fizycznego, które mają być mierzone. Poniższa lista zawiera przegląd niektórych typów czujników najczęściej stosowanych w IoT.
Czujniki IoT wilgoci
Siłowniki, jak sama nazwa wskazuje, mogą działać w swoim bezpośrednim środowisku, aby umożliwić poprawne działanie maszyn lub urządzeń, w które są wbudowane. Choć są małe, rzadko są widoczne podczas pracy, ale efekty ich pracy można odczuć w pojazdach, maszynach przemysłowych lub innym sprzęcie elektronicznym wykorzystującym technologie automatyzacji. Można je podzielić na cztery główne kategorie w zależności od modelu konstrukcji i roli, jaką odgrywają w określonym środowisku Internetu Rzeczy:
Czujniki IoT to mały, pozornie nieistotny sprzęt, który przekazuje dane do systemów IoT, które są prawdziwą tkaniną, na której zbudowana jest inteligencja maszyny. Z drugiej strony siłowniki stanowią (dosłownie!) siłę napędową każdego inteligentnego przedsiębiorstwa. W obu przypadkach Internet przedmiotów interesuje nie tylko to, co wyczuwają i jak działają, ale także rzeczy, które pozwalają nam robić szybciej i lepiej.
Biorąc powyższe pod uwagę, nie ma wątpliwości, że aby utrzymać szybką ewolucję, której doświadcza, Internet Rzeczy potrzebuje coraz bardziej wydajnych (a najlepiej tanich) rozwiązań czujnikowych. Niezawodny system czujników i urządzeń wykonawczych stanowi podstawę każdego udanego inteligentnego wdrożenia, dlatego konieczne jest, aby zdawać sobie sprawę z rodzajów dostępnych rozwiązań czujników IoT. Przyjrzyjmy się najpopularniejszym typom czujników używanych w IoT.
Rodzaje czujników IoT
Czujniki mogą być albo samodzielnymi urządzeniami, albo wbudowane w zwykłe obiekty lub maszyny, aby uczynić je inteligentnymi, i można je podzielić na kategorie pod względem zjawiska fizycznego, które mają być mierzone. Poniższa lista zawiera przegląd niektórych typów czujników najczęściej stosowanych w IoT.
Czujniki temperatury
Ten najbardziej podstawowy typ czujnika znajduje zastosowanie w każdym rodzaju zastosowania Internetu Rzeczy, w którym niezbędne jest śledzenie warunków termicznych powietrza, środowiska pracy, maszyn lub innych obiektów. Czujniki temperatury są szczególnie przydatne w zakładach produkcyjnych, magazynach, systemach raportowania pogody i rolnictwie, gdzie temperatura gleby jest monitorowana, aby zapewnić zrównoważony i maksymalny wzrost.
Czujniki IoT wilgoci
Choć ich najbardziej oczywiste i powszechne zastosowanie znajduje się w stacjach meteorologicznych do raportowania i prognozowania pogody, dość zaskakujące jest to, że czujniki wilgotności i wilgotności są również szeroko stosowane w rolnictwie, monitorowaniu środowiska, łańcuchu dostaw żywności, HVAC i monitorowaniu zdrowia.
Lekkie czujniki IoT
W zależności od natężenia światła otoczenia inteligentne telewizory, telefony komórkowe lub ekrany komputerowe mogą regulować jasność dzięki czujnikom światła, jednak czujniki do wykrywania światła otoczenia są nie tylko powszechne w elektronice użytkowej, ale także w aplikacjach inteligentnego miasta. Są coraz częściej stosowane do dostosowania oświetlenia ulicznego lub oświetlenia miejskiego w celu zwiększenia oszczędności.Akustyczne i akustyczne czujniki IoT
Inteligentne czujniki akustyczne pozwalają monitorować poziom hałasu w danym otoczeniu. Będąc w stanie mierzyć i dostarczać dane, które pomagają zapobiegać zanieczyszczeniu hałasem, akustyczne czujniki IoT zyskują popularność w rozwiązaniach inteligentnych miast.Czujniki IoT poziomu wody
Aby zapobiec klęskom żywiołowym, dane gromadzone przez czujniki monitorujące poziom wody mogą być wykorzystywane w systemach ostrzegania przed powodzią do analiz i prognoz. Oprócz ochrony środowiska czujnik ten znajduje zastosowanie w różnych aplikacjach przemysłowych do kontroli i optymalizacji procesów produkcyjnych.Czujniki IoT obecności i bliskości
Emitując elektromagnetyczną wiązkę promieniowania, ten typ czujnika jest w stanie wykryć obecność obiektu docelowego i określić odległość, która dzieli oba te obiekty. Dzięki wysokiej niezawodności i długiej żywotności nie dziwi fakt, że szybko dotarli do tak wielu sektorów Internetu Rzeczy, takich jak inteligentne samochody, robotyka, produkcja, maszyny, lotnictwo, a nawet inteligentne rozwiązania parkingowe.Czujniki ruchu IoT
System inteligentnego budynku jest prawdopodobnie najbardziej banalną aplikacją IoT dla czujnika ruchu, jaką można sobie wyobrazić. Chociaż ta oczywistość jest w dużej mierze prawdziwa, oprócz pomagania w monitorowaniu prywatnych lub publicznych przestrzeni przed włamaniem i włamaniem, zastosowanie czujników ruchu obejmuje także rozwiązania do zarządzania energią, inteligentne kamery, urządzenia automatyczne i wiele innych.Żyroskopowe czujniki IoT
Zadaniem tego rodzaju czujnika jest wykrywanie obrotu i pomiar prędkości kątowej, co czyni go idealnym do systemów nawigacyjnych, robotyki, elektroniki użytkowej i procesów produkcyjnych obejmujących obrót. W celu codziennej aplikacji IoT czujniki żyroskopowe są coraz częściej instalowane w urządzeniach IoT używanych przez sportowców do dokładnych pomiarów ruchów ciała w celu analizy i poprawy wyników sportowych.Chemiczne czujniki IoT
Czujniki wykrywające związki chemiczne (ciała stałe, ciecze i gazy) są niezbędnymi elementami w przemysłowych systemach bezpieczeństwa, rozwiązaniach w zakresie ochrony środowiska i, co oczywiste, badaniach naukowych. Co więcej, zdobyli już wsparcie w zakresie monitorowania jakości powietrza wspieranego przez Internet Rzeczy, który pomaga miastom i stanom w walce ze szkodliwym wpływem zanieczyszczenia powietrza i wody.Czujniki IoT obrazu
Przetwarzając dane optyczne na impulsy elektryczne, czujnik obrazu umożliwia podłączonemu obiektowi oglądanie otaczającego go środowiska i działanie na nim z wykorzystaniem inteligencji uzyskanej z analizy dostarczonych danych. Czujniki obrazu są używane, gdy zachodzi potrzeba, aby inteligentne urządzenie „zobaczyło” swoje bezpośrednie otoczenie, w tym inteligentne pojazdy, systemy bezpieczeństwa, sprzęt wojskowy, taki jak radary i sonary, urządzenia do obrazowania medycznego i oczywiście aparaty cyfrowe.Typy siłowników IoT
Siłowniki liniowe
Służą do umożliwienia ruchu obiektu lub elementu w linii prostej.
Silniki
Umożliwiają precyzyjne ruchy obrotowe elementów urządzenia lub całych obiektów.
Ta kategoria obejmuje siłowniki elektromagnesowe do obsługi przełączników mocy w lampach, grzejnikach, a nawet inteligentnych pojazdach.
Elektrozawory
Najczęściej stosowane w sprzęcie AGD jako część mechanizmów blokujących lub wyzwalających, działają również jako sterowniki w systemach monitorowania wycieków gazu i wody na bazie Internetu Rzeczy.
12 lipca 2018
Cloud Builders' Day Poznań 2018 - darmowe warsztaty z chmury AWS
Jak zwyczajnie bywa ciekawy temat mnie wzywa :-) i tak trafiłem na wydarzenie "Cloud Builders' Day Poznań 2018". Chciałbym podzielić się z Wami kilkoma faktami i przybliżyć czym jest taki dzień.
W czasach hybrydowych podejść do budowania infrastruktury rozproszonych aplikacji i mikroserwisów warto poznawać chmury publiczne. Wiedziałem po kilku fajnych dniach spędzonych w konsoli AWS oraz w Berlinie na AWS Summit Berlin, jak sprytnie i szybko można stworzyć produkcyjną usługę z kilkoma linijkami kodu. Jednak kiedy chcemy wrócić do tematu, gdy nie używamy wielu uslug z chmur publicznych na co dzień i zgłębić dziedzinę, z pomocą przychodzi wydarzenie Cloud Builders' Day. Rekomenduję każdemu, kto się zastanawia nad wzięciem udziału.
Głównie dlatego, aby w niektórych przypadkach przed rozpoczęciem napisania własnej implementacji wykonać tzw. MVP (minimalna wersja produktu), PoC (udowodnienie konceptu) na klockach przygotowanych dla nas w chmurze. To na prawdę wspaniałe narzędzie do szybkiego prototypowania a w wielu powtarzalnych przypadkach do wdrożeń produkcyjnych. Decyzję pozostawiam Wam, bo ilość zmiennych w decyzjach architektonicznych jest zależna od postawionego problemu.
Chmury publiczne bardzo dostosowują się do potrzeb developerów i czasów, dlatego pomijanie ich w branży IT jest niejako ignorancją dobrobytu jaki niesie za sobą wszechobecna technologia.
Oto slajd z rozpoczęcia warsztatów.
Moje pozytywne wrażenia zawarte są w doświadczeniu praktycznym podczas tego warsztatu, kiedy poznawaliśmy tajniki konfiguracji i budowania aplikacji oraz infastruktur dla:
W czasach hybrydowych podejść do budowania infrastruktury rozproszonych aplikacji i mikroserwisów warto poznawać chmury publiczne. Wiedziałem po kilku fajnych dniach spędzonych w konsoli AWS oraz w Berlinie na AWS Summit Berlin, jak sprytnie i szybko można stworzyć produkcyjną usługę z kilkoma linijkami kodu. Jednak kiedy chcemy wrócić do tematu, gdy nie używamy wielu uslug z chmur publicznych na co dzień i zgłębić dziedzinę, z pomocą przychodzi wydarzenie Cloud Builders' Day. Rekomenduję każdemu, kto się zastanawia nad wzięciem udziału.
Głównie dlatego, aby w niektórych przypadkach przed rozpoczęciem napisania własnej implementacji wykonać tzw. MVP (minimalna wersja produktu), PoC (udowodnienie konceptu) na klockach przygotowanych dla nas w chmurze. To na prawdę wspaniałe narzędzie do szybkiego prototypowania a w wielu powtarzalnych przypadkach do wdrożeń produkcyjnych. Decyzję pozostawiam Wam, bo ilość zmiennych w decyzjach architektonicznych jest zależna od postawionego problemu.
Chmury publiczne bardzo dostosowują się do potrzeb developerów i czasów, dlatego pomijanie ich w branży IT jest niejako ignorancją dobrobytu jaki niesie za sobą wszechobecna technologia.
Oto slajd z rozpoczęcia warsztatów.
Moje pozytywne wrażenia zawarte są w doświadczeniu praktycznym podczas tego warsztatu, kiedy poznawaliśmy tajniki konfiguracji i budowania aplikacji oraz infastruktur dla:
- serwerów aplikacyjnych automatycznie skalujących się zależnie od metryk obciążenia/ruchu
- małego klastra Hadoop do analityki Big Data
- usługi tłumaczącej pismo na mowę i wysyłającej SMSa dzięki 'funkcji lambda'
- składowania danych w magazynie obiektów (AWS S3 object storage)
- budowania klastrów ECR i EMR
- narzędzi wspomagających pracę developerską
- ambitnych zadań z Machine Learning (ML)
- ... i kilku innych praktycznych przykładów
A wszystko w 8 godzin i dla zdobycia odznak chmurowych :-) + dobrej zabawy w programowanie pod okiem ekspertów wprost z Amazona. Dzięki prowadzącemu Tomaszowi Stachlewskiemu warsztaty odbieram jako zabieg wyrafinowany, skrojony na miarę współczesnych potrzeb oraz dopracowany w każdej minucie :-)
7 stycznia 2010
Przodują Java + C a PHP w górę się pnie ;)
Na stronie Tiobe podejrzymy interesujące statystyki sporządzane wymyślnym algorytmem dot. populrności języków programowania. Oto raport w postaci wykresu udostępniany w ramach serwisu Tiobe:

W postaci uproszczonej widać ciekawe wyniki w tabeli:
Warto podkreślić, że serwis agreguje dane z różnych przeglądarek oraz przetwarza je po czym wyznacza na podstawie sporządzonego przez siebie - i opublikowanego - wzoru rankingi.

W postaci uproszczonej widać ciekawe wyniki w tabeli:
Position
Feb 2010 Position
Feb 2009 Delta in Position Programming Language Ratings
Feb 2010 Delta
Feb 2009 Status
1 1 Java 17.348% -2.05% A
2 2 C 16.602% +0.76% A
3 5 PHP 10.001% +1.22% A
4 3 C++ 9.447% -0.19% A
5 4 (Visual) Basic 7.051% -1.79% A
6 6 C# 5.015% -0.05% A
7 7 Python 4.314% -0.25% A
8 8 Perl 3.600% -0.52% A
9 9 Delphi 2.656% -0.97% A
10 10 JavaScript 2.636% -0.90% A
11 11 Ruby 2.439% -0.84% A
12 32 Objective-C 1.779% +1.60% A
13 - Go 1.778% +1.78% A-
14 14 SAS 0.771% -0.06% A
15 13 PL/SQL 0.738% -0.25% A
16 17 ABAP 0.661% +0.09% B
17 16 Pascal 0.606% -0.08% B
18 18 ActionScript 0.579% +0.04% B
19 23 Lisp/Scheme 0.563% +0.13% B
20 24 MATLAB 0.536% +0.12% B
Warto podkreślić, że serwis agreguje dane z różnych przeglądarek oraz przetwarza je po czym wyznacza na podstawie sporządzonego przez siebie - i opublikowanego - wzoru rankingi.
17 czerwca 2009
Przyspieszenie aplikacji z Google Perftools
Wielu ludzikom, którzy nie biorą na poważnie optymalizacji lub nie mają z nią potencjalnych problemów na codzień takie pojęcie jak profilowanie bywa długo obce. Mogą tylko się z tego cieszyć, bo w rękach ich bardziej doświadczonych kolegów od profilowania aplikacji spoczywa pewna magiczna moc.
Czasami bywamy pytani o to, jak można coś zrobić szybciej lub napisać tak, aby działało szybciej na tej samej maszynie. W sytuacji w której tematem optymalizacji jest jakiś nieskomplikowany język skryptowy typu Python, PHP, czy Ruby mamy do dyspozycji napisanie modułu w języku C. Zasadniczo te języki są napisane w C (C++) i zakładamy, że moduł napisany w języku źródłowym, w którym napisano dany język będzie szybszy. Sprawa się nieco komplikuje, gdy nie mamy takiego pomostu jak możliwość napisania kodu modułu w kodzie źródłowym języka. Jeszcze częściej nie mamy wpływu na sposób zarządzania pamięcią oraz wielowątkowością w danym języku skryptowym. Posłużę się dla przykładu językiem PHP, który posiada źródłową konwencję nazwaną Zend Engine. Jest to narzucony silnik stworzony poprzez firmę Zend i rozwijany przez deweloperów woluntariuszy na całym świecie. Niestety naleciałości, które ciągną się za nim od wielu lat ograniczają znacząco działanie tak istotnych mechanizmów języka jak wielowątkowość i odśmiecanie pamięci. Język ten w samych swoich źródłach jest pod tym kątem niedojrzały. Inna sytuacja jest w przypadku języka Python i Ruby. Słynna translacja języka Python w samym RPython (Restricted Python) - statycznym podzbiorze Pythona, który można skompilować do kodu bajtowgo Javy, CLR czy C, czyli projekt PyPy. Pozwala na bardzo rozwinięte horyzonty działania, które dla niewiedzących prowadzić mogą do definowania np: własnych zasad odśmiecania pamięci, sposobu działania wielowątkowości i całej gamy innych drobiazgów, które stawiają dość wysoko język Python na podeście :-) Nie znam dokładnie źródeł języka Ruby, ale widziałem, że są czytelne i można po nich wywnioskować, że doruwnuą projektowi takiemu jak Python, ale też zostawiają w tyle PHP Zend Engine.
Rozpisałem się o ogólnym spojrzeniu na źródła powszechnych języków skryptowych, aby naświetlić tylko, że dla niektórych języków temat optymalizacji, czyli profilowania na poziomie źródeł języka jest dość ograniczony. Lecz z kolei są takie języki skryptowe, które można profilować na poziomie wątków oraz zarządzania pamięcią. Projekty w ramach których dość czytelnie to zaprezentowano zawierają materiały dodatkowe. Wspomnę jeszcze, że nasz ulubiony googiel też się podpisuje do takich praktyk i posiada dość spore doświadczenie w tej materii. W soich serwerowniach dobierają procesory oraz z tego co mi wiadomo na farmach maszyn odbywa się również profilowane kompilowanego oprogramowania, aby jak najwięcej wycisnąć. Jest to jedna z nielicznych firm, która używa selekcjonowanych i wygrzewanych partii procesorów Pentium III oraz serwerownie stanowią klastry słabszych maszyn o przewidywalnej mocy obliczeniowej oraz przewidywalnym zużyciu energii. Skoro google udowodniło, że można nie kupować drogich serwerów IBM, czy Suna, czy tez HP jestem zgodny z nimi, że wówczas bez profilowania oraz optymalizacji zarówno hardware a przede wszystkim software nie wiele zdziałamy.
Przechodząc do części praktycznej chciałbym uchylić fragment tajemnicy przyspieszania aplikacji z Google Perftools. Materiał na temat przykładu profilowania znajdziecie tutaj.
Życzę pomyślnej lektury i zapraszam do podzielenia się refleksjami na ten temat.
Materiały dodatkowe:
Mastering the Art of Indexing
High Availability and Scalability Patches from Google
More on using Google Perftools with MySQL
Using the Google Perftools to speed up your MySQL server
Using the Google Perftools to speed up your MySQL server - example
Fast, multi-threaded malloc() and nifty performance analysis tools
Simple HTTP server for use with google-perftools pprof
TCMalloc : Thread-Caching Malloc
prof/PerfTools
This page describes how to setup and use PerfTools.
This CPU profiler used at Google
Spinlock
Practical Concurrency Patterns: Spinlock
Practical Concurrency Patterns: Lock-Free Operations
Spinlock example code
The performance of spin lock alternatives for shared-memory multiprocessors
HP - Spinlock Pool Parameter Summary
.NET Framework Class Library - SpinLock Structure
The Hoard Memory Allocator and Memory Management Studies
Generate Ruby Profiling Charts With Perftools
Profiling Ruby With Google’s Perftools
Distributed Innodb Caching with memcached
InnoDB: Innovative Technologies for Performance and Data Protection
Czasami bywamy pytani o to, jak można coś zrobić szybciej lub napisać tak, aby działało szybciej na tej samej maszynie. W sytuacji w której tematem optymalizacji jest jakiś nieskomplikowany język skryptowy typu Python, PHP, czy Ruby mamy do dyspozycji napisanie modułu w języku C. Zasadniczo te języki są napisane w C (C++) i zakładamy, że moduł napisany w języku źródłowym, w którym napisano dany język będzie szybszy. Sprawa się nieco komplikuje, gdy nie mamy takiego pomostu jak możliwość napisania kodu modułu w kodzie źródłowym języka. Jeszcze częściej nie mamy wpływu na sposób zarządzania pamięcią oraz wielowątkowością w danym języku skryptowym. Posłużę się dla przykładu językiem PHP, który posiada źródłową konwencję nazwaną Zend Engine. Jest to narzucony silnik stworzony poprzez firmę Zend i rozwijany przez deweloperów woluntariuszy na całym świecie. Niestety naleciałości, które ciągną się za nim od wielu lat ograniczają znacząco działanie tak istotnych mechanizmów języka jak wielowątkowość i odśmiecanie pamięci. Język ten w samych swoich źródłach jest pod tym kątem niedojrzały. Inna sytuacja jest w przypadku języka Python i Ruby. Słynna translacja języka Python w samym RPython (Restricted Python) - statycznym podzbiorze Pythona, który można skompilować do kodu bajtowgo Javy, CLR czy C, czyli projekt PyPy. Pozwala na bardzo rozwinięte horyzonty działania, które dla niewiedzących prowadzić mogą do definowania np: własnych zasad odśmiecania pamięci, sposobu działania wielowątkowości i całej gamy innych drobiazgów, które stawiają dość wysoko język Python na podeście :-) Nie znam dokładnie źródeł języka Ruby, ale widziałem, że są czytelne i można po nich wywnioskować, że doruwnuą projektowi takiemu jak Python, ale też zostawiają w tyle PHP Zend Engine.
Rozpisałem się o ogólnym spojrzeniu na źródła powszechnych języków skryptowych, aby naświetlić tylko, że dla niektórych języków temat optymalizacji, czyli profilowania na poziomie źródeł języka jest dość ograniczony. Lecz z kolei są takie języki skryptowe, które można profilować na poziomie wątków oraz zarządzania pamięcią. Projekty w ramach których dość czytelnie to zaprezentowano zawierają materiały dodatkowe. Wspomnę jeszcze, że nasz ulubiony googiel też się podpisuje do takich praktyk i posiada dość spore doświadczenie w tej materii. W soich serwerowniach dobierają procesory oraz z tego co mi wiadomo na farmach maszyn odbywa się również profilowane kompilowanego oprogramowania, aby jak najwięcej wycisnąć. Jest to jedna z nielicznych firm, która używa selekcjonowanych i wygrzewanych partii procesorów Pentium III oraz serwerownie stanowią klastry słabszych maszyn o przewidywalnej mocy obliczeniowej oraz przewidywalnym zużyciu energii. Skoro google udowodniło, że można nie kupować drogich serwerów IBM, czy Suna, czy tez HP jestem zgodny z nimi, że wówczas bez profilowania oraz optymalizacji zarówno hardware a przede wszystkim software nie wiele zdziałamy.
Przechodząc do części praktycznej chciałbym uchylić fragment tajemnicy przyspieszania aplikacji z Google Perftools. Materiał na temat przykładu profilowania znajdziecie tutaj.
Życzę pomyślnej lektury i zapraszam do podzielenia się refleksjami na ten temat.
Materiały dodatkowe:
Mastering the Art of Indexing
High Availability and Scalability Patches from Google
More on using Google Perftools with MySQL
Using the Google Perftools to speed up your MySQL server
Using the Google Perftools to speed up your MySQL server - example
Fast, multi-threaded malloc() and nifty performance analysis tools
Simple HTTP server for use with google-perftools pprof
TCMalloc : Thread-Caching Malloc
prof/PerfTools
This page describes how to setup and use PerfTools.
This CPU profiler used at Google
Spinlock
Practical Concurrency Patterns: Spinlock
Practical Concurrency Patterns: Lock-Free Operations
Spinlock example code
The performance of spin lock alternatives for shared-memory multiprocessors
HP - Spinlock Pool Parameter Summary
.NET Framework Class Library - SpinLock Structure
The Hoard Memory Allocator and Memory Management Studies
Generate Ruby Profiling Charts With Perftools
Profiling Ruby With Google’s Perftools
Distributed Innodb Caching with memcached
InnoDB: Innovative Technologies for Performance and Data Protection
16 lutego 2009
Microkontrolery AVR i Arduino - prostota i fenomen otwartego sprzętu
Nagła potrzeba poznania kilku prezentacji spowodowała wystąpienie owego artykułu w szeregi moich dodatkowych zajęć i odświeżenie tematyki mikrokontrolerów jednoukładowych AVR. Ostatnio moim celem jest zbudowanie sobie własnego modułu Arduino i przetestowanie go we współpracy z Linuxem. Cel szczytny, czasu mało, do tego w kraju nabyć gotowca lub chociaż PCB nie da się :) więc lutownica + laminat + wytrawianie obwodów drukowanych moim przyjacielem ... po walkach postaram się zaprezentować coś w rodzaju wrażeń z budowy mojego Arduino na początek z mikrokontrolerem AVR ATmega8 + port szeregowy (ot takie wspomnienie - wiem, że USB jest dziś standardem). Argumentem jest najpewniej chęć używania rozwiązań OpenHardware i OpenSource ze wsparciem społeczności ludzi zainteresowanych rozwojem w kierunku tworzenia robotów i innych coraz popularniejszych tworów współczesności. Jednym słowem mam dość tworzenia od zera API do kolejnego systemu uP, testowanie, kodowanie swojego systemu osadzonego, obsługi IO, etc ... koniec z odkrywaniem już odkrytego ;-)
Aha, może nie każdy sobie zdaje sprawę, ale w takim telefonie komórkowym temat systemów wbudowanych oraz mikrokontrolerów przewija się w każdym calu. Android, Symbian i wiele innych systemów osadzonych to przykłady pokrewnych tematów. Same hasła powinny wyjaśnić rangę budowy jakże prostego i taniego systemu dydaktycznego, od którego te szczytne hasła wyrosły. Niebawem zaprezentuję efekry prac, tymczasem zmykam do lutowania :-)
Oto prezentacje, które warto zobaczyć:
Aha, może nie każdy sobie zdaje sprawę, ale w takim telefonie komórkowym temat systemów wbudowanych oraz mikrokontrolerów przewija się w każdym calu. Android, Symbian i wiele innych systemów osadzonych to przykłady pokrewnych tematów. Same hasła powinny wyjaśnić rangę budowy jakże prostego i taniego systemu dydaktycznego, od którego te szczytne hasła wyrosły. Niebawem zaprezentuję efekry prac, tymczasem zmykam do lutowania :-)
Oto prezentacje, które warto zobaczyć:
Avr Microcontrollers
View more presentations from Nirmala Last.
4 lutego 2009
Materiały pomocne dla lubujących się w szablonach i typografii
Polecam następujące strony, które kształcą na przykładach w zakresie prostych (darmowych) layoutów stron www oraz zasad typografii. Ponadto pod poniższymi linkami znajdziecie generatory różnych elementów stron internetowych t.j. zakładki, web 2.0 badgets, wypełnień tła, kolorów, opakowań z produktem i wiele innych ciekawych gadżetów:
- 25+ Web 2.0 Generators to rescue ( Be Lazy)
- freepsd, freetemplates
- typechart, typography, font typography example
- free zen cart templates, free webpages templates
- free psd web designers, free psd links
- PSDtoANY - PSD to HTML / XHTML, Wordpress, Joomla, osCommerce etc
- psd to html xhtml
- typography essentials free fonts tools and tutorials
- psd to html xhtml
- typography essentials free fonts tools and tutorials
- My Top 20 Free Fonts + Typography Roundup + Resources
- WhatTheFont
- Dafont - font catalog
- SimplytheBest Fonts
- fontleech
- 40+ Excellent Freefonts For Professional Design
- smashingmagazine - category - fonts
- monday inspiration - typography in motion
- i love typography
- super cool frilly bits typography
- myfonts - exljbris - anivers
- 80 beautiful fonts typefaces for professional design
- Sexi fonts
- Ancient fonts
- fonts - essays
- 1001 free fonts
- type free
- font catalog
- Microsoft's Typography
- 60 Brilliant Typefaces For Corporate Design
- logo design trends 2009
- blueprint CSS framework
- Logo design processes and logo inspiration
5 stycznia 2009
Ewolucja robotów - przegląd
Po zapoznaniu się z pewnym artykułem p.t. Bunt maszyn - początek już był! stwierdzam, że bardzo niewiele brakuje, aby technologie, które w bazach wojskowych przechodzą testy wymknęły się spod kontroli i zaszkodziły populacji. Być może to jest nieco tragiczny początek .... bynajmniej prawdopodobny ;-)
W patykiem po wodzie pisanym kodeksie robota nie jest przecież istotne co ten robot robi, ale ważne jest do czego zaprogramował go człowiek. I będzie to robił z precyzją na jaką pozwalają podzespoły, z jakością napisanych dla robota algorytmów oraz w ramach dostępnych zasobów sprzętowych/peryferiów.
Istnieje wiele pomysłów na roboty. Ba istnieje spora liczba zaprogramowanych robotów, które na dzień dzisiejszy są dość skomplikowanymi maszynami mechaniczno-elektronicznymi, lecz za kilkadziesiąt lat będą to maszyny podstawowego wyposażenia naszych gospodarstw domowych. Te oparte o jednostki centralne sporej mocy obliczeniowej urządzenia czeka w dobie rozproszonych sieci komputerowych niebanalny rozkwit. Pytanie tylko, jak długo jeszcze będą odbywały się próby naśladowania istoty żyjących i podstaw mechaniki podczas konstruowania robotów...
Moim zdaniem prawdziwa era robotów nadejdzie, gdy człowiek wyzbędzie się podczas ich tworzenia zasad, których wyuczył się i zna z życia codziennego a zacznie szukać robotów, które żyją w dniu dzisiejszym jako wirtualne twory przeszukujące i przemierzające ogólnodostępną sieć internet. Nie mam tutaj na myśli wirusów komputerowych, lecz można je spokojnie wykorzystać jako wagon transportowy dla takiego tworu :-)
Nie byłbym sobą, gdybym nie wspomniał o roli programistów w tym procesie.
Już dziś można otwarcie napisać Panowie i Panie to do nas świat należy. Programista zaczyna od wielu na całym świecie być ceniony za swoją abstrakcyjną pracę, lecz jak dotąd nic nie przebija - od początków cywilizacji - zwykłych i niezwykłych handlarzy (bez urazy oczywiście) Pozwolę sobie ich nazwać współczesną gwarą biznesmenami, bo właśnie potencjalni handlowcy napędzają sprzedaż tworów programistycznych :-) Jak najbardziej nie mam zamiaru wywyższać zawodów, pisać, że tym jest być lepiej lub gorzej. Nie osądzam - tak tylko fantazjuję ;)
O ile mogę polecić literaturę fantastyczną zasygnalizowany dziś temat Pana Stanisława Lema, o tyle też zachęcam do spojrzenia na dzisiejsze osiągnięcia w dziedzinie robotyki chociażby okiem youtube. Odkrywając dziś i przyzwyczajając się do egzystencji robotów w naszym życiu tworzymy dalej technologicznie sprawniejszą cywilizację. Ci których interesuje od strony kinematografii również znajdą coś dla siebie.
Linki:
Gwiezdne wojny: Prawo robotyki – część 1
Asimo - robotyka
Robo Sapiens. Ewolucja nowego gatunku
W patykiem po wodzie pisanym kodeksie robota nie jest przecież istotne co ten robot robi, ale ważne jest do czego zaprogramował go człowiek. I będzie to robił z precyzją na jaką pozwalają podzespoły, z jakością napisanych dla robota algorytmów oraz w ramach dostępnych zasobów sprzętowych/peryferiów.
Istnieje wiele pomysłów na roboty. Ba istnieje spora liczba zaprogramowanych robotów, które na dzień dzisiejszy są dość skomplikowanymi maszynami mechaniczno-elektronicznymi, lecz za kilkadziesiąt lat będą to maszyny podstawowego wyposażenia naszych gospodarstw domowych. Te oparte o jednostki centralne sporej mocy obliczeniowej urządzenia czeka w dobie rozproszonych sieci komputerowych niebanalny rozkwit. Pytanie tylko, jak długo jeszcze będą odbywały się próby naśladowania istoty żyjących i podstaw mechaniki podczas konstruowania robotów...
Moim zdaniem prawdziwa era robotów nadejdzie, gdy człowiek wyzbędzie się podczas ich tworzenia zasad, których wyuczył się i zna z życia codziennego a zacznie szukać robotów, które żyją w dniu dzisiejszym jako wirtualne twory przeszukujące i przemierzające ogólnodostępną sieć internet. Nie mam tutaj na myśli wirusów komputerowych, lecz można je spokojnie wykorzystać jako wagon transportowy dla takiego tworu :-)
Nie byłbym sobą, gdybym nie wspomniał o roli programistów w tym procesie.
Już dziś można otwarcie napisać Panowie i Panie to do nas świat należy. Programista zaczyna od wielu na całym świecie być ceniony za swoją abstrakcyjną pracę, lecz jak dotąd nic nie przebija - od początków cywilizacji - zwykłych i niezwykłych handlarzy (bez urazy oczywiście) Pozwolę sobie ich nazwać współczesną gwarą biznesmenami, bo właśnie potencjalni handlowcy napędzają sprzedaż tworów programistycznych :-) Jak najbardziej nie mam zamiaru wywyższać zawodów, pisać, że tym jest być lepiej lub gorzej. Nie osądzam - tak tylko fantazjuję ;)
O ile mogę polecić literaturę fantastyczną zasygnalizowany dziś temat Pana Stanisława Lema, o tyle też zachęcam do spojrzenia na dzisiejsze osiągnięcia w dziedzinie robotyki chociażby okiem youtube. Odkrywając dziś i przyzwyczajając się do egzystencji robotów w naszym życiu tworzymy dalej technologicznie sprawniejszą cywilizację. Ci których interesuje od strony kinematografii również znajdą coś dla siebie.
Linki:
Gwiezdne wojny: Prawo robotyki – część 1
Asimo - robotyka
Robo Sapiens. Ewolucja nowego gatunku
25 maja 2008
Lektura branżowa: Moja Praca Emigruje do Indii
Każdego ranka budzimy się po "lekturze snów" lub na lekturze interesującej książki, którą czytaliśmy wczoraj wieczorem :) Już dawno nie czytałem dzieła branżowego, które nie pozwoliłoby mi zasnąć na nim :) Zakup nastąpił natychmiast, kiedy w poszukiwaniu książek n. t. GWT natknąłem się na książkę p.t. Moja Praca Emigruje do Indii autorstwa Chad Fowler (z lubelskiego wydawnictwa powernet). Sprawna transakcja, bezproblemowa wysyłka - gratis. Dosłownie chwilę po tym, jak ją otrzymałem zasięgnąłem kilku mądrych rad n.t. "52 sposobów na zdobycie i zachowanie pracy". Jestem w trakcie lektury i zarazem pod wrażeniem przekazu ... niebawem spróbuję dodać kilka wypowiedzi po jej przeczytaniu.
Oto wygląd okładki dla ciekawskich:
Oto wygląd okładki dla ciekawskich:
Subskrybuj:
Posty (Atom)

















