wtorek, 11 marca 2014

Udostępnianie drukarki między komputerami z Ubuntu

Chciałem udostępnić drukarkę podłączoną do mini serwera, na którym postawiłem Ubuntu Server innemu komputerowi z Ubuntu. Oczywiście pierwszym pomysłem było użycie Samby. Jednak wszelkie gimnastyki nie zdały się na nic. Mimo przeszukiwania forów i próbowania różnych rozwiązań nie udało mi się wydrukować poprzez Sambę. Próbowałem sprawdzić również to samo na dwóch komputerach z Ubuntu i też nic z tego nie wyszło. Co dziwne gdy używałem wersji 10.04 udostępnienie drukarki można było po prostu wyklikać w GUI i wszystko działało jak należy. Dopiero spojrzenie na schemat na stronie ubuntu.com uświadomiło mi, że być może Ubuntu w ogóle przestało wspierać udostępnianie drukarki dla innego komputera z Ubuntu. Jednak narzędzie GUI do udostępniania drukarki również nie działa. Dopiero po dłuższym poszukiwaniu w internecie udało mi się znaleźć rozwiązanie. Należy ustawić protokół ipp. ipp://ipserwera/printers/nazwadrukarkiwcups wcześniej należy w CUPS na serwerze ustawić udostępnianie drukarki w sieci. W Ubuntu 14.04 drukarka udostępniona w CUPS przez ipp znajdowana jest automatycznie.

czwartek, 6 marca 2014

Programowanie Lego Minestorm NXT z lejOS

System LeJOS to fimeware do Lego NXT wgrywany zamiast oryginalnego oprogramowania. Wywodzi się z maszyny wirtualnej Javy TinyVM. Umożliwia on pisanie programów sterujących działaniem robota Lego w Javie. Pobierając wtyczkę do Eclipse ze strony projektu mamy wygodny edytor kodu, który przy odpowiedniej konfiguracji pozwala edytować oraz wysyłać i uruchamiać kod w naszym robocie Lego.

Instalacja leJOS

Do tworzenia programów w leJOS potrzebna jest Java 32bit również JDK, może być to openJDK. Należy ją zainstalować w wersji 32-bit nawet na 64-bitowym systemie: sudo apt-get install openjdk-7-jdk:i386 Sprawdzamy wersję jre i ustawiamy na 32-bitową: sudo update-alternatives --config java Pobieramy 32-bitowe Eclipse ze strony https://www.eclipse.org/downloads/ Następnie pobieramy biblioteki leJOS wybierając najnowszą wersję i paczkę dla naszego systemu ze strony: http://sourceforge.net/projects/lejos/files/lejos-NXJ/ i rozpakowujemy je do katalogu /opt/leJOS_NXT Teraz otwieramy Eclipse i w menu help->Eclipse Marketplace wyszukujemy wtyczkę leJOS dla NXT.Instalujemy i restartujemy Eclipse. W opcji tworzenia nowych projektów pojawił się pojekt lejOS NXT oraz nowe menu LeJOS NXJ z wgrywaniem firmware.

Programowanie w Java

Jednym z wzorcowych modeli robotów jakie możemy wykonać dzięki klockom Lego NXT jest shooterbot. Potrafi on strzelać kulkami. Z przodu robota ustawiony jest czujnik ultradźwiękowy pozwalający mierzyć odległość od przeszkód. W napisanym programie testowym robot ma się obracać czekając na „wroga”. Jeżeli ktoś zbliży się do niego na małą odległość (30cm), zatrzymuje się i oddaje strzał. Po strzale dalej obraca się. Schemat algorytmu:

Kojo - nauka programowania od dziecka do inżyniera

Nauczanie podstaw programowania na poziomie szkoły podstawowej i gimnazjum jest dość trudnym zadaniem. Pomocą służą w tym względzie różne odmiany LOGO, w których za pomocą prostych poleceń słownych przemieszcza się żółwia po płótnie, a żółw zostawia ślad toru swojego ruchu. Jednym z najbardziej popularnych tego typu programów w polskich szkołach jest Logomocja-Imagine. Jest to jednak program komercyjny, płatny i jedynie wersja demonstracyjna jest udostępniana bezpłatnie. Do tego program ten działa wyłącznie na Windows. Na Linuksie dysponujemy kilkoma podobnymi programami. Jednym z nich jest KTurtle, który jest świetnym i przydatnym programem, chociaż jego możliwości są znacznie mniejsze niż wspomnianej Logomocji. Niestety program ten nie obsługuje takich elementów jak tablice, ani nie potrafi wypełniać figur kolorem. Drugi podobny program Turtle Block z pakietu Sugar jest szczególnie wygodny dla młodszych ponieważ umożliwia budowanie programu z klocków – bloków. Podobnie jednak do KTurtle jego możliwości są dość ograniczone. Innym LOGO podobnym programem jest UCBLogo. Jego składnia oparta jest jednak o Lisp (to oryginalne LOGO) i nie jest łatwa dla kogoś kto nigdy nie miał kontaktu z tym językiem. To dobra pozycja do nauki dla starszych uczniów, ale trudno ją polecać początkującym. Sam program jest już dość starym projektem, niezbyt wygodnym w użyciu. Na szczęście powstała całkiem niedawno nowa wersja tego typu programu. Jest to program KOJO w który jest wolny o bolączek poprzednio wymienionych programów. Program posiada opcje brakujące pozostałym. Możemy wstawać lub komponować dźwięki, wstawiać własne grafiki, wypełniać figury kolorem. Program składa się z modułów takich jak rysowanie 2D, 3D, nauka arytmetyki oraz wbudowana Geogebra. W tym artykule skupimy się tylko na rysowaniu 2D.
Program ten jest otwarto-źródłowy na licencji GPLv2 i pracuje na maszynie wirtualnej Javy. Oznacza to, że jest dostępny na każdej popularnej platformie i do tego można go używać bezpłatnie zarówno w szkole jak i w domach. Dzięki temu dzieci mogą ćwiczyć w domu i odrabiać prace domowe jeśli tylko posiadają dostęp do komputera, niezależnie od posiadanego systemu operacyjnego. Program jest w dużym stopniu spolszczony. Poza polskim menu, można używać polskich komend. Wielką zaletą tego programu jest coś czego nie ma żaden inny program tego typu. Otóż w programie tym korzystamy z pełnego języka programowania nazywanego Scalą. Jest to język funkcyjny, kompilowany statycznie, działający na JVM. (Główny język używany przez inżynierów w takich projektach jak Twitter czy Foresquare, umożliwia korzystanie z kodu napisanego w Javie). Uczeń może więc rozpocząć naukę od bardzo prostych poleceń podobnych do tych z innych wersji LOGO, służących do sterowania żółwiem. Jednak z czasem po osiągnięciu większych umiejętności w razie chęci i potrzeby dalszego uczenia się, może zacząć korzystać z coraz bardziej zaawansowanych elementów programowania. Dzięki temu, aby przejść na wyższy etap nauki, nie musi zmieniać środowiska, do którego się przyzwyczaił. Naukę można kontynuować na wyższym etapie kształcenia, a z czasem nawet zmienić IDE i zacząć korzystać z całej gamy narzędzi dostępnych w środowisku Javy. Przykładowy program w Kojo:

czyść()
skoczDo(-360, 100)
tło(niebieski)
ustawWypełnieKolorem(żółty)
kolor(żółty)
ustawKąt(0)
powtarzaj(5) {
 naprzód(200)
 prawo(144)
}
podnieśPisak()
skoczDo(-350, -50)
kierunek(-350, 0)
opuśćPisak()
rozmiarCzcionki(40)
pisz("Witaj w Kojo")

Wynik działania programu:
Standardowo tak jak w klasycznych IDE po napisaniu kilku liter i wciśnięciu Ctrl+Spacja pojawiają się podpowiedzi do funkcji. W programie jest w opcjach dokumentacja, przykładowy kod i tutorial, ale niestety tylko w języku angielskim.
Składnia podstawowych poleceń w Kojo po polsku: epodrecznik.edu.pl
Pobieranie Kojo:kojo