niedziela, 19 grudnia 2010

AVR 3D FPS

Popularny, ośmiobitowy mikrokontroler jest też zdolny do generowania takich widoków:


To nic innego jak mała reinkarnacja Wolfensteina 3D. Mapa, sprite broni i tekstury są bezpośrednio zaszyte w ważącym 32KiB kodzie źródłowym. Silnik wykorzystuje bibliotekę graficzną Arduino GLCD przeznaczoną dla wyświetlaczy zgodnych z KS0108, takich jak np. ten.

Kod źródłowy można pobrać ze strony projektu.

niedziela, 7 listopada 2010

ARES CAD tutorial cz.1

Wpis ten dotyczy linuksowej wersji programu CAD ARES Commander Edition.
ARES jest jednym z programów CAD dostępnych na Linuksa. Co prawda trudno go nazwać, podobnie jak AutoCAD-a czy Bricscada, nowoczesnym programem, ale spełnia on dobrze funkcje deski kreślarskiej. Wyżej wymienione programy są bardzo podobne i wszystkie operują na plikach *.dwg. Poznanie obsługi jednego z nich bardzo ułatwia adaptację do innego.
Cykl tutoriali może być rozszerzony o darmowy Draftsight, kiedy tylko zostanie wydany na Linuksa.

Jak pobrać, zainstalować?
ARES CE może być pobrany ze strony producenta. Dostępne są paczki *.rpm, *.tar.gz i *.deb. W przypadku Ubuntu wystarczy zainstalować paczkę *.deb i ARES pojawi się w menu Programy-Grafika.



Po uruchomieniu widzimy okno z opcjami:
  • Aktywuj - gdy chcemy mieć w pełni funkcjonalną wersję przez 30-dni lub gdy chcemy kupić wersję nieograniczoną czasowo,
  • Uruchom - program uruchamiany jest bez ograniczeń czasowych, ale nie jest możliwe drukowanie ani zapis do pliku.
 Pierwsze spojrzenie


Czarny obszar z  układem współrzędnych YX to miejsce na którym można rysować. Oprócz niego widoczny jest:
  1. pasek z najważniejszymi narzędziami jak rysowanie linii, okręgów czy fazowanie i zaokrąglanie,
  2. menedżer warstw - w nim utworzymy warstwy, dzięki którym praca z rysunkiem będzie łatwiejsza,
  3. wiersz poleceń - bardzo przydatny, można w nim określać opcje po wybraniu jakiegoś narzędzia,
  4. przyciski określające jak ma się zachowywać narzędzie do rysowania, np. włączenie ORTO pozwala tylko narysowanie linii poziomych lub pionowych.
Pierwsze linie
Wybierzmy narzędzie Linia (pierwsze w trzeciej kolumnie 1). W wierszu poleceń (3) pojawi się*:
Określ punkt początkowy
Jeśli np. wpiszemy tam 0,0 i wciśniemy Enter to zobaczymy linię zaczynającą się w początku układu współrzędnych. Jednak na razie zignorujmy to. Kliknijmy w dowolnym punkcie by ustawić początek linii.

Mamy pierwszy punkt linii, chcemy określić drugi tak aby otrzymać poziomą linię o długości 50.


W (3) widzimy:
Określ następny punkt
Nie interesuje nas w którym miejscu jest pierwszy punkt, użyjemy więc współrzędnych względnych, które w ARES-ie poprzedzane są embrionikiem @:
Określ następny punkt @50,0
Wciskamy Enter i widzimy swoją linię. Zatrzymujemy edycję wciskając Esc. Jeślibyśmy nie wcisnęli Esc, a kontynuowali podawanie kolejnych punktów, otrzymalibyśmy łamaną.

Zróbmy kolejną linię zaczynającą się w lewym końcu pierwszej, ale tym razem pionową.


Teraz spróbujemy wykonać linię poziomą zaczynającą się u dołu drugiej i mającą połowę długości pierwszej. Gdy utworzymy już początek linii, najeżdżamy kursorem na środek pierwszej linii aż zobaczymy żółty trójkącik. Po delikatnym przesunięciu w dół powinna pojawić się pionowa prosta.


Możemy po niej przesuwać kursor aż do zaplanowanej wysokości. Żółty trójkącik oznaczał jedną z metod przyciągania - symetrię, czyli w naszym przypadku środek odcinka. Pozostałe metody można zobaczyć klikając prawym przyciskiem na (4) Przyciąganie elementów i wybierając Ustawienia.


Oczywiście wyciśnięcie Przyciąganie elementów wyłącza całkowicie przyciąganie.
Do wyświetlania prowadnic (czyli tych pomocniczych prostych) musi być wciśnięty także przycisk Etrack.
Jak można było zauważyć, pojawiały się także prowadnice do ustawiania linii pod kątem 90 stopni. To dzięki przyciskowi Biegunowy. Inne kąty można ustawić klikając prawym przyciskiem na Biegunowy i wybierając Ustawienia.

Kontynuując spróbujmy uzyskać odwrócone L.
Zaokrąglimy jeden z narożników promieniem 30. W pierwszej kolumnie (1) widoczne jest narzędzie Zaokrąglij. Po jego wybraniu w wierszu poleceń pojawi się:
Opcje: Wiele, Polilinia, proMień, Tryb przycięcia, Cofnij
Wciśnijmy m (i oczywiście Enter), aby zmienić promień. Wpisujemy 30 i wciskamy Enter. 
Teraz tylko klikamy kolejno na dwa odcinki przy narożniku, który chcemy zaokrąglić. 

W następnych odcinkach
To tyle na dziś. W przyszłości zajmiemy się lustrami, przycinaniem, kreskowaniem czy kartami Sheet. Nie wiem czy będzie w ogóle opisywana praca w trybie 3D, bo jest on dość ułomny i bardzo niewygodny w porównaniu z tym z nowoczesnych programów (Pro/Engineer, NX itp.).

* będę pomijał znak zachęty z uwagi na ułomności Bloggera

Niebieski jest be! - Facebook Blocker

Cel: wyrzucić z wyświetlanych stron wszystkie aplety tego ohydnego niebieskiego czegoś.

Rozwiązanie: wtyczka Facebook Blocker. Na stronie domowej można znaleźć wersje dla Safari, Chrome i Firefoksa. Instalację w tej ostatniej przeglądarce można wykonać także z wykorzystaniem repozytoriów Mozilli.

Uwaga: wtyczka nie została jeszcze sprawdzona przez Mozillę.

środa, 29 września 2010

ARES Commander Edition wydany na Linuksa



Program CAD ARES doczekał się wersji na Linuksa. ARES jest kolejnym (po Bricscadzie) klonem AutoCADa (programem zgodnym z DWG) wydanym na tę platformę. Grabert (twórca ARESa) wybrał całkowicie inną politykę niż Bricsys, wydając droższą, bogatszą w funkcję wersję Commaner Edition.
Program posiada polską wersję językową i dystrybuowany jest w postaci paczek *.deb, *.rpm lub *.tar.gz. 30-dniową wersję demonstracyjną można pobrać stąd.

Podczas instalowania na 64-bitowej odmianie Ubuntu należy przedsięwziąć dodatkowe kroki. Uaktywnienie zapisu i generowania wydruków wymaga bezpłatnej rejestracji.

Amnesia: The Dark Descent - kilka spostrzeżeń

Nie chcę tu pisać recenzji. Profesjonalne serwisy zrobiły to już za mnie. Poniższe uwagi będą dotyczyły wersji linuksowej.

Fizyka
Jedną z najważniejszych zalet gry jest zastosowanie silnika Newton Game Dynamics. Można rzucać, przenosić, przesuwać przedmioty czy wykorzystywać grawitację na swoją korzyść. Niestety interaktywność środowiska jest nieco mniejsza niż w Penumbrze: niektórych kamieni czy skrzyń nie da się ruszyć.

Dźwięk i ciemność
Naprawdę robią wrażenie. Człowiek oddycha z ulgą gdy wchodzi do jaśniejszego pomieszczenia. Bohatera cały czas śledzą "cienie" i doprowadzają do szaleństwa. Zachowuje się on wtedy jakby obalił samodzielnie "półkę". Naprawdę.

Strach
W większości gier metoda na przestraszenie gracza polega na wstawieniu potwora za jego plecami. W Amnesii nawet potwór nie jest potrzebny. Przykład:
  1. otwieram szafkę, z której wypadają czaszki,
  2. bohater (Daniel) zostaje przestraszony - jego "zdrowie psychiczne" spada,
  3. jednym z objawów są zmiany widzenia - spoglądam na obraz Aleksandra znajdujący się na ścianie,
  4. zamiast jego podobizny widzę potwornie zniekształconą twarz...
To co prezentuje demo i początek gry jest NICZYM względem tego co się dzieje później. Daniel czyta notki, które zostawił sam dla siebie przed utratą pamięci i przypomina sobie przeszłość. Powracające wspomnienia są bardzo brutalne, a nasz bohater niekoniecznie jest "tym dobrym".

Zagadki
Nie są przesadnie trudne. Zniknęły irytujące, znane z Penumbr: "odkręć zawory lub wlej w odpowiedniej kolejności". Nie oznacza to, że zagadki są banalne. Przy ostatniej (Agrippa's Tonic) utknąłem na dłużej.

Historia
Trochę mnie zawiodła. Reprezentuje dobry poziom, ale niestety pamiętam jeszcze Penumbrę: Czarną Plagę. Tam brak wiedzy o tym co jest rzeczywistością a co urojeniami robił znacznie mocniejsze wrażenie, nawet bez uciekania się do, zastosowanej w Amnesii, nadmiernej brutalności. Pod tym względem starsza gra jest znacznie lepsza.

Grafika
Nie jest idealna... ale wszędzie jest tak ciemno, że trudno zauważyć jej niedoskonałości. Nie zauważyłem artefaktów ani innych błędów wyświetlania (ATI FGLRX).

Wymagania sprzętowe
Zbliżone do Dooma 3. Przy niskich rozdzielczościach można grać nawet z wykorzystaniem zintegrowanej grafika ATI/AMD. 
 
It's not bug, it's feature
Gra przejmuje całkiem system zapisu stanów gry. Widziałem, że w niektórych recenzjach marudzono na dość specyficzne zachowanie się gry po nagłej śmierci bohatera. Po wczytaniu ostatniego stanu gry, potwór (sprawca) pojawiał się w innym miejscu lub w ogóle znikał.
Tymczasem podręcznik opisuje to jako zmianę świata gry:
If your health reaches zero you will die. However, death does not
work like it usually does in traditional games. In this game; instead of simply restarting, you will not loose any progress, but something in the game world will change. This change can come in many different forms and you will never be sure what it will be.

piątek, 10 września 2010

Mechanizm makr we FreeCADzie

FreeCAD umożliwia tradycyjne nagrywanie makr jak i tworzenie ręczne. Wszystko jest zapisywane w postaci kodu Pythona. Przykład makra z wiki przedstawia poniższe wideo:



Tworzenie skryptu z oknem dialogowym opisywałem w jednym z wcześniejszych postów. 

Więcej o makrach na wiki FreeCADa (PL)

czwartek, 9 września 2010

Ukazała się finalna wersja Bricscad V10 dla Linuksa - naprawdę działa

Ceny pełnej wersji zaczynają się od 275 dolarów amerykańskich. U nas jest to niestety aż 1104 zł. Za darmo można ściągnąć 30-dniowy trial. Dostępny jest DEB RPM i TGZ, wymagane jest podanie tylko adresu e-mail.





Działanie Bricscada pod Ubuntu 10.04 (32-bit) osobiście sprawdziłem.



Niebawem powinien ukazać się także ARES dla Linuksa.

sobota, 14 sierpnia 2010

Koniec świata: Id Tech 5 na iPhone 4

Tym razem sprawcą zamieszania wśród Jabcolowców był sam mistrz gier FPP - John Carmack. Zademonstrował on pracę silnika Id Tech 5 na iPhone 4.
Podobno było 60 kl./s. Możliwe?

iPhone 4 ma rozdzielczość 960x640, 512 MiB RAM, CPU Cortex 1GHz i układ graficzny SGX 535 - o ile Wikipedia nie kłamie:)

O SGX niewiele wiadomo, przy 200 MHz ma osiągać 14 mln trójkątów i 1 mld pikseli na sekundę. To wartości zbliżone, co najwyżej, do Geforce 2 GTS. SGX 535 jest też elementem składowym GMA500, który nie zebrał najlepszych opinii.

Trzeba jednak zaznaczyć, że Id było pionierem (przy Id Tech 4 z D3, Q4 i QW) normal mapping, dzięki któremu ilość trójkątów znajdujących się w scenie była znacznie mniejsza. 

O ilość RAM też raczej nie trzeba się martwić, bo Id Tech 5 (i unowocześniona wersja Id Tech 4 z Quake Wars) wykorzystuje MegaTexture.




Jeszcze dwie ciekawostki:
  1. Podobno Id Tech 5 nie ma być licencjonowany.
  2. Id wydało źródła RTCW i W: ET - są na ich ftp:
Po ostatniej wtopie Epic, Id Tech 5 był jedyną nadzieją dla Linuksa. Jeśli nie ma być licencjonowany... resztę dopowiedzcie sobie sami. 

    piątek, 30 lipca 2010

    Zewnętrzny system komentarzy na Bloggerze

    Na drugim blogu postanowiłem zainstalować zewnętrzny system komentarzy. Wyboru dokonałem pomiędzy IntenseDebate a Disqusem.
    Niestety w przypadku tego pierwszego przeczytałem:
    Please note: our Blogger importer and exporter are currently disabled due to some bugs. We plan on offering it again in the future. Our apologies for the inconvenience.
    Pozostał Disqus, który oferuje odpowiedni mechanizm importu. Problem w tym, że w moim przypadku komentarze nie chciały się zaimportować. 1100 wypowiedzi zniknęło (zostały ukryte, nie usunięte).
    Po kontakcie ze wsparciem technicznym Disqusa problem został usunięty - trwało to ok. 2 dni. Uff.

    Przydatną funkcją jest synchronizacja komentarzy Disqusa ze systemem komentarzy Bloggera. Dzięki temu mogę w każdej chwili wrócić do domyślnego układu, bez utraty któregokolwiek z komentarzy.

    Sama instalacja jest banalna, w zasadzie potrzebne jest tylko rejestracja i pozwolenie Disqusowi na zainstalowanie widżetu.

    Jeśli go usuniemy - wracamy do systemu komentarzy Bloggera.

    Plusy zewnętrznego systemu komentarzy:
    • aktywne linki,
    • miniaturki obrazków i wideo,
    • zaawansowana moderacja, 
    • możliwość odpowiadania,
    • jakieś pierdoły tłitero-fejsowate.

    Pozostał jeden problem: na stronach (tych co są w kartach) zewnętrzny system komentarzy nie działa.

    wtorek, 27 lipca 2010

    WebGL pod Ubuntu w 6 krokach

    Aplikacje 3D korzystające z WebGL mogą być w przeglądarce Firefox (Minefield) lub Chromium 6.0. Ta druga na razie sprawia znacznie mniej problemów.
    Przepis na WebGL w Chromium na Ubuntu:
    1. Dodajemy klucz do repozytorium:  sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 4E5E17B5
    2. Dodajemy repozytorium: sudo add-apt-repository ppa:chromium-daily
    3. Aktualizujemy: sudo apt-get update
    4. Instalujemy przeglądarkę: sudo apt-get install chromium-browser
    5. Uruchamiamy przeglądarkę: chromium-browser --enable-webgl
    6. Udajemy się na jedną z poniższych stron, żeby przetestować WebGL:
    Gry 3D
    http://playwebgl.com/
    Quake II
    http://tatari.se:8080/GwtQuake.html

    Bilard
    http://o3d.googlecode.com/svn/trunk/samples_webgl/o3d-webgl-samples/pool.html

    Dema CopperLicht (silnika wywodzącego się z Irrlicht)
    http://www.ambiera.com/copperlicht/demos.html
    Dema GLGE
    http://www.glge.org/category/demos/

    Wydajność?
    Na razie marna. Quake II dla WebGL jest (na 790GX) ok. 3x wolniejszy od napisanego w Javie Jake2 - z którego zresztą się wywodzi.

    niedziela, 4 lipca 2010

    BenQ V2410 Eco - wrażenia po 3 miesiącach użytkowania

    Chciałem kupić monitor który jest po prostu energooszczędny. Początkowo wybór padł na BenQ G2420 HDBL - 24 cale TN z podświetleniem LED. Niestety z uwagi na braki w magazynach musiałem kupić V2410 Eco (też TN + LED).

    Oprócz durnowatej nazwy (Eco), monitor ten ma durnowaty napis na stopce "Keep the Earth Lookin' Great". Za to, w przeciwieństwie do V2400 Eco, nie posiada on miejsca na doniczkę z kwiatkiem. Za przesył sygnału odpowiada HDMI (dostępny też D-Sub).

    Przechodząc do konkretów - zalety:
    • niezłe podświetlenie,
    • czysty obraz z uwagi na przesył przez złącze cyfrowe,
    • energooszczędny: fabryka podaje 28 W, w testach bliźniaczy V2400 ma 22,8 W dla 100% jasności i 10,8 W dla 0%,
    • minimalna jasność jest dla mnie wystarczająca nawet w dzień (patrz 10,8 W :),
    • niezłe skalowanie z mniejszych rozdzielczości,
    • 1920x1080 jest dobre do filmów,
    • cena!
    Wady:
    • kolory wydają się gorsze niż w CRT,
    • nawet 0% jasności to zbyt wiele w nocy (oczywiście przy włączonym świetle),
    • wiotka obudowa i stopka - nawet dotknięcie przycisku zasilania powoduje  ruch monitora,
    • po podłączeniu przez HDMI obraz początkowo zajmuje tylko 85% powierzchni - trzeba zmienić ustawienia w panelu sterowania karty graficznej,
    • nie ma głośników (jest wyjście słuchawkowe),
    • niewygodne przyciski sterujące,
    • 1920x1080 nie jest dobre do prac biurowych.
    Trzy miesiące minęły: do tej pory nie było żadnych awarii czy bad pikseli.

    niedziela, 13 czerwca 2010

    Nagrywanie aplikacji 3D i konwersja do formatu przyjaznego Youtube

    Mogę polecić dwa programy do nagrywania pulpitu pod GNU/Linuksem:
    • Istanbul Desktop Session Recorder (istanbul) - koduje w locie do Theory, zapisuje pliki z rozszerzeniem OGG. By zacząć zapis wystarczy kliknąć na czerwone kółko w zasobniku systemowym. 
    • gtk-recordMyDesktop (gtk-recordmydesktop) - nakładka na recordmydesktop, domyślnie koduje po zakończeniu zapisu, pliki mają rozszerzenie OGV.

    Nagrywanie aplikacji 3D wymaga zrzucania całych klatek: w Istanbul klikamy prawym na ikonkę i wybieramy Record 3D. W gtk-recordMyDesktop wybieramy Zaawansowane-Wydajność-Pełny zrzut co każdą klatkę.

    Niestety Youtube nie lubi naszych plików OGV i OGG. Na szczęście możemy je przekonwertować np. Mencoderem (mencoder):
    mencoder -ovc lavc -lavcopts vbitrate=1500:vcodec=mpeg4 -oac copy naszenagranie.ogv -o plikwyjsciowy.avi

    Gdy nagrywany z dźwiękiem może zastosować (zamiast -oac copy):
    -oac pcm
    lub
    -oac mp3lame
    pcm to dźwięk nieskompresowany, a mp3lame to oczywiście MP3.
    Powyższe ustawienia wystarczają do uzyskania przyzwoitej jakości w 1920x1080. Niestety kodowanie w Youtube HD pozostawia wiele do życzenia. Przykład nagrania zrobionego gtk-recordMyDesktop widoczny jest poniżej:

    poniedziałek, 17 maja 2010

    FreeCAD i Python - od linii poleceń do kreatora...

    Jedną z najmocniejszych stron FreeCADa jest interpreter Pythona. Widoczny jest on na dole okna, po wybraniu w menu View-Views-Python Console.

    Pierwsza próba.
    Po wklejeniu takiego kodu:
    import Part
    from FreeCAD import Base
    cylinder1 = Part.makeCylinder(5,20,Base.Vector(20,0,0),Base.Vector(0,0,1),180)
    Part.show(cylinder1)


    Otrzymamy połowę walca - parametry w makeCylinder to: promień, wysokość, punkt startowy, kierunek (wektor jednostkowy), kąt obrotu.
    Ostatnia linia odpowiada natomiast za wyświetlenie elementu.

    Łączenie elementów
    Kod który pozwolić wyświetlić cztery połączone (fuse) walce:
    import Part
    from FreeCAD import Base
    cyl1 = Part.makeCylinder(5,15,Base.Vector(0,0,0),Base.Vector(1,0,0),360)
    cyl2 = Part.makeCylinder(7,5,Base.Vector(15,0,0),Base.Vector(1,0,0),360)
    cyl3 = Part.makeCylinder(6,7,Base.Vector(20,0,0),Base.Vector(1,0,0),360)
    cyl4 = Part.makeCylinder(4,10,Base.Vector(27,0,0),Base.Vector(1,0,0),360)
    fuse1 = cyl1.fuse(cyl2)
    fuse1.Solids
    fuse2 = fuse1.fuse(cyl3)
    fuse2.Solids
    fuse3 = fuse2.fuse(cyl4)
    fuse3.Solids
    Part.show(fuse3)

    Należy zauważyć, że łączenie odbywa się po kolei a wyświetlanie wywoływane jest na samym końcu.



    Szkic i wyciąganie
     Coś trudniejszego. Rysujemy dwa łuki i dwa odcinki, zaczynając od określenia położenia 6 (V1, V2, V3, V4, VC1, VC2) punktów (końce odcinków i łuków oraz "środki" łuków). Następnie łączymy odcinki i łuki (S1 = Part.Shape([C1,C2,L1,L2])) i tworzymy powierzchnię (F = Part.Face(W)). Wyciągamy powierzchnie by uzyskać bryłę (P = F.extrude(Base.Vector(0,0,10))). Trzy liczby w nawiasie decydują o kierunku i wysokości wyciągnięcia.
    Kod:
    import Part
    from FreeCAD import Base
    #punkty
    V1 = Base.Vector(0,10,0)
    V2 = Base.Vector(30,10,0)
    V3 = Base.Vector(30,-10,0)
    V4 = Base.Vector(0,-10,0)
    #pierwszy łuk
    VC1 = Base.Vector(-10,0,0)
    C1 = Part.Arc(V1,VC1,V4)
    #drugi łuk
    VC2 = Base.Vector(40,0,0)
    C2 = Part.Arc(V2,VC2,V3)
    #linie
    L1 = Part.Line(V1,V2)
    L2 = Part.Line(V4,V3)
    #polaczenie wszystkiego
    S1 = Part.Shape([C1,C2,L1,L2])
    #zamknieta linia
    W = Part.Wire(S1.Edges)
    #powierzchnia
    F = Part.Face(W)
    #wyciagniecie
    P = F.extrude(Base.Vector(0,0,10))
    Part.show(P)


    Wszystko razem + wycinanie
    Wycinając (różnica diff = fuse3.cut(P)) wyciągnięty kształt w naszym wałku otrzymujemy ładny wałek z rowkiem na wpust. By skrypt był bardziej uniwersalny, dodano odpowiednie zależności geometryczne.
    Kod:
    import Part
    from FreeCAD import Base
    #srednice
    d1=20
    d2=30
    d3=40
    d4=35
    #dlugości
    l1=40
    l2=30
    l3=35
    l4=42
    #wymiary rowka
    g=5
    sz=7
    dl=25
    #punkty dla rowka
    x1=(l1+l2+l3+(l1+l2))/2-(dl/2)
    x2=(l1+l2+l3+(l1+l2))/2+(dl/2)
    y1=sz/2
    y2=-sz/2
    z=d3/2
    xp=x1-sz/2
    xk=x2+sz/2
    #walki
    cyl1 = Part.makeCylinder(d1/2,l1,Base.Vector(0,0,0),Base.Vector(1,0,0),360)
    cyl2 = Part.makeCylinder(d2/2,l2,Base.Vector(l1,0,0),Base.Vector(1,0,0),360)
    cyl3 = Part.makeCylinder(d3/2,l3,Base.Vector(l1+l2,0,0),Base.Vector(1,0,0),360)
    cyl4 = Part.makeCylinder(d4/2,l4,Base.Vector(l1+l2+l3,0,0),Base.Vector(1,0,0),360)
    fuse1 = cyl1.fuse(cyl2)
    fuse1.Solids
    fuse2 = fuse1.fuse(cyl3)
    fuse2.Solids
    fuse3 = fuse2.fuse(cyl4)
    fuse3.Solids
    #punkty
    V1 = Base.Vector(x1,y1,z)
    V2 = Base.Vector(x2,y1,z)
    V3 = Base.Vector(x2,y2,z)
    V4 = Base.Vector(x1,y2,z)
    #pierwszy luk
    VC1 = Base.Vector(xp,0,z)
    C1 = Part.Arc(V1,VC1,V4)
    #drugi luk
    VC2 = Base.Vector(xk,0,z)
    C2 = Part.Arc(V2,VC2,V3)
    #linie
    L1 = Part.Line(V1,V2)
    L2 = Part.Line(V4,V3)
    #polaczenie wszystkiego
    S1 = Part.Shape([C1,C2,L1,L2])
    #zamknieta linia
    W = Part.Wire(S1.Edges)
    #powierzchnia
    F = Part.Face(W)
    #wyciagniecie
    P = F.extrude(Base.Vector(0,0,-g))
    #roznica
    diff = fuse3.cut(P)
    diff.Solids
    Part.show(diff)





    Kreator
    Ręczne wpisywanie kodu nie jest wygodne. Lepsze jest okienko z miejscami, gdzie możemy wpisać odpowiednie wartości. Trzeba tylko stworzyć autorski kreator.
    Tu z pomocą przychodzi Qt Designer. Tworzymy tu okienko odpowiadające naszemu zmysłowi estetycznemu. Warto elementom nadać własne nazwy, np. przycisk nazwałem "przycisk":) Efekt zapisujemy jako plik *.ui, który konwertujemy:
    pyuic4 walekokienko.ui > walekokienko.py

    Otrzymany plik należy poddać odpowiednim modyfikacjom (dodane części kodu):

    # -*- coding: utf-8 -*-

    # Form implementation generated from reading ui file 'walekokienko.ui'
    #
    # Created: Mon May 17 17:13:56 2010
    #      by: PyQt4 UI code generator 4.7.2
    #
    # WARNING! All changes made in this file will be lost!

    from PyQt4 import QtCore, QtGui
    import FreeCAD, Part
    from FreeCAD import Base

    class Ui_Dialog(object):
        def setupUi(self, Dialog):
            Dialog.setObjectName("Dialog")
            Dialog.resize(373, 436)
            self.przycisk = QtGui.QPushButton(Dialog)
            self.przycisk.setGeometry(QtCore.QRect(230, 370, 131, 61))
            self.przycisk.setObjectName("przycisk")
            self.sredn1 = QtGui.QLineEdit(Dialog)
            self.sredn1.setGeometry(QtCore.QRect(80, 90, 113, 25))
            self.sredn1.setObjectName("sredn1")
            self.sredn2 = QtGui.QLineEdit(Dialog)
            self.sredn2.setGeometry(QtCore.QRect(80, 120, 113, 25))
            self.sredn2.setObjectName("sredn2")
            self.sredn3 = QtGui.QLineEdit(Dialog)
            self.sredn3.setGeometry(QtCore.QRect(80, 150, 113, 25))
            self.sredn3.setObjectName("sredn3")
            self.sredn4 = QtGui.QLineEdit(Dialog)
            self.sredn4.setGeometry(QtCore.QRect(80, 180, 113, 25))
            self.sredn4.setObjectName("sredn4")
            self.label = QtGui.QLabel(Dialog)
            self.label.setGeometry(QtCore.QRect(80, 60, 57, 15))
            self.label.setObjectName("label")
            self.label_2 = QtGui.QLabel(Dialog)
            self.label_2.setGeometry(QtCore.QRect(46, 90, 21, 20))
            self.label_2.setObjectName("label_2")
            self.label_3 = QtGui.QLabel(Dialog)
            self.label_3.setGeometry(QtCore.QRect(46, 120, 21, 20))
            self.label_3.setObjectName("label_3")
            self.label_4 = QtGui.QLabel(Dialog)
            self.label_4.setGeometry(QtCore.QRect(46, 150, 21, 20))
            self.label_4.setObjectName("label_4")
            self.label_5 = QtGui.QLabel(Dialog)
            self.label_5.setGeometry(QtCore.QRect(47, 180, 20, 20))
            self.label_5.setObjectName("label_5")
            self.label_6 = QtGui.QLabel(Dialog)
            self.label_6.setGeometry(QtCore.QRect(220, 60, 57, 15))
            self.label_6.setObjectName("label_6")
            self.dlugosc1 = QtGui.QLineEdit(Dialog)
            self.dlugosc1.setGeometry(QtCore.QRect(200, 90, 113, 25))
            self.dlugosc1.setObjectName("dlugosc1")
            self.dlugosc2 = QtGui.QLineEdit(Dialog)
            self.dlugosc2.setGeometry(QtCore.QRect(200, 120, 113, 25))
            self.dlugosc2.setObjectName("dlugosc2")
            self.dlugosc3 = QtGui.QLineEdit(Dialog)
            self.dlugosc3.setGeometry(QtCore.QRect(200, 150, 113, 25))
            self.dlugosc3.setObjectName("dlugosc3")
            self.dlugosc4 = QtGui.QLineEdit(Dialog)
            self.dlugosc4.setGeometry(QtCore.QRect(200, 180, 113, 25))
            self.dlugosc4.setObjectName("dlugosc4")
            self.label_7 = QtGui.QLabel(Dialog)
            self.label_7.setGeometry(QtCore.QRect(80, 220, 57, 15))
            self.label_7.setObjectName("label_7")
            self.dlrow = QtGui.QLineEdit(Dialog)
            self.dlrow.setGeometry(QtCore.QRect(80, 240, 113, 25))
            self.dlrow.setObjectName("dlrow")
            self.szerrow = QtGui.QLineEdit(Dialog)
            self.szerrow.setGeometry(QtCore.QRect(80, 270, 113, 25))
            self.szerrow.setObjectName("szerrow")
            self.glerow = QtGui.QLineEdit(Dialog)
            self.glerow.setGeometry(QtCore.QRect(80, 300, 113, 25))
            self.glerow.setObjectName("glerow")
            self.label_8 = QtGui.QLabel(Dialog)
            self.label_8.setGeometry(QtCore.QRect(6, 240, 61, 20))
            self.label_8.setObjectName("label_8")
            self.label_9 = QtGui.QLabel(Dialog)
            self.label_9.setGeometry(QtCore.QRect(0, 270, 71, 16))
            self.label_9.setObjectName("label_9")
            self.label_10 = QtGui.QLabel(Dialog)
            self.label_10.setGeometry(QtCore.QRect(0, 300, 71, 16))
            self.label_10.setObjectName("label_10")

            self.retranslateUi(Dialog)
        QtCore.QObject.connect(self.przycisk,QtCore.SIGNAL("pressed()"),self.stworzWalek)
            QtCore.QMetaObject.connectSlotsByName(Dialog)

        def retranslateUi(self, Dialog):
            Dialog.setWindowTitle(QtGui.QApplication.translate("Dialog", "Generator wałków", None, QtGui.QApplication.UnicodeUTF8))
            self.przycisk.setText(QtGui.QApplication.translate("Dialog", "Utwórz", None, QtGui.QApplication.UnicodeUTF8))
            self.label.setText(QtGui.QApplication.translate("Dialog", "Średnica", None, QtGui.QApplication.UnicodeUTF8))
            self.label_2.setText(QtGui.QApplication.translate("Dialog", "1", None, QtGui.QApplication.UnicodeUTF8))
            self.label_3.setText(QtGui.QApplication.translate("Dialog", "2", None, QtGui.QApplication.UnicodeUTF8))
            self.label_4.setText(QtGui.QApplication.translate("Dialog", "3", None, QtGui.QApplication.UnicodeUTF8))
            self.label_5.setText(QtGui.QApplication.translate("Dialog", "4", None, QtGui.QApplication.UnicodeUTF8))
            self.label_6.setText(QtGui.QApplication.translate("Dialog", "Długość", None, QtGui.QApplication.UnicodeUTF8))
            self.label_7.setText(QtGui.QApplication.translate("Dialog", "Rowek", None, QtGui.QApplication.UnicodeUTF8))
            self.label_8.setText(QtGui.QApplication.translate("Dialog", "Długość", None, QtGui.QApplication.UnicodeUTF8))
            self.label_9.setText(QtGui.QApplication.translate("Dialog", "Szerokość", None, QtGui.QApplication.UnicodeUTF8))
            self.label_10.setText(QtGui.QApplication.translate("Dialog", "Głębokość", None, QtGui.QApplication.UnicodeUTF8))

        def stworzWalek(self):
           try:
               # aprawsdzenie wpisanych licz
               d1 = float(self.sredn1.text())
               d2 = float(self.sredn2.text())
               d3 = float(self.sredn3.text())
               d4 = float(self.sredn4.text())
               l1 = float(self.dlugosc1.text())
               l2 = float(self.dlugosc2.text())
               l3 = float(self.dlugosc3.text())
               l4 = float(self.dlugosc4.text())
               sz = float(self.szerrow.text())
               g = float(self.glerow.text())
               dl = float(self.dlrow.text())
           except ValueError:
               print "Wpisz właściwe wartości!"
           else:
           #punkty dla rowka
           x1=(l1+l2+l3+(l1+l2))/2-(dl/2)
           x2=(l1+l2+l3+(l1+l2))/2+(dl/2)
           y1=sz/2
           y2=-sz/2
           z=d3/2
           xp=x1-sz/2
           xk=x2+sz/2
           #walki
           cyl1 = Part.makeCylinder(d1/2,l1,Base.Vector(0,0,0),Base.Vector(1,0,0),360)
           cyl2 = Part.makeCylinder(d2/2,l2,Base.Vector(l1,0,0),Base.Vector(1,0,0),360)
           cyl3 = Part.makeCylinder(d3/2,l3,Base.Vector(l1+l2,0,0),Base.Vector(1,0,0),360)
           cyl4 = Part.makeCylinder(d4/2,l4,Base.Vector(l1+l2+l3,0,0),Base.Vector(1,0,0),360)
           fuse1 = cyl1.fuse(cyl2)
           fuse1.Solids
           fuse2 = fuse1.fuse(cyl3)
           fuse2.Solids
           fuse3 = fuse2.fuse(cyl4)
           fuse3.Solids
           #punkty
           V1 = Base.Vector(x1,y1,z)
           V2 = Base.Vector(x2,y1,z)
           V3 = Base.Vector(x2,y2,z)
           V4 = Base.Vector(x1,y2,z)
           #pierwszy luk
           VC1 = Base.Vector(xp,0,z)
           C1 = Part.Arc(V1,VC1,V4)
           #drugi luk
           VC2 = Base.Vector(xk,0,z)
           C2 = Part.Arc(V2,VC2,V3)
           #linie
           L1 = Part.Line(V1,V2)
           L2 = Part.Line(V4,V3)
           #polaczenie wszystkiego
           S1 = Part.Shape([C1,C2,L1,L2])
           #zamknieta linia
           W = Part.Wire(S1.Edges)
           #powierzchnia
           F = Part.Face(W)
           #wyciagniecie
           P = F.extrude(Base.Vector(0,0,-g))
           #roznica
           diff = fuse3.cut(P)
           diff.Solids
           Part.show(diff)

    class walek():
        d = QtGui.QWidget()
        d.ui = Ui_Dialog()
        d.ui.setupUi(d)
        d.show()

               



    Prawidłowo sformatowane źródła (Python jest wrażliwy na wcięcia): py, ui.
    Efekt:

    Wcześniejsze posty o FC: wkupiesila.blogspot.com/2009/12/rozgryzamy-freecad-krok-po-kroku.html, wkupiesila.blogspot.com/2009/12/freecad-poznajemy-klawisz-f5.html


    Dokładniejsze informacje - WIKI FreeCAD:

    Co nowego w świecie otwartych CADów 3D?

    Obecnie istnieją trzy wolne (otwarte) programy CAD oparte o kernel OpenCASCADE.


    FreeCAD (modularny, skrypty w pythonie, GPL/LGPL)- wspominałem już o nim niejednokrotnie. Niedawno została wydana wersja 0.10 dla Windows, Linuksa (deb dla Lucid, nieoficjalny rpm dla openSUSE) i Mac OS X. Nie przynosi ona rewolucyjnych zmian - dodano możliwość wyboru dowolnej płaszczyzny czy "klikany" generator sprężyny (właściwie prymitywu - spirali).

    Obecnie nacisk kładziony jest na rozwój:
    • szkicownika - potrzebny jest wygodny i zaawansowany szkicownik rozwiązujący zależności geometryczne (równoległości itp.),
    • arkuszy rysunków 2D - nawet obecnie same modele 3D nie są wystarczające, każdy szanujący się program CAD musi mieć możliwość rzutowania i tworzenia dokumentacji 2D,
    • symulacji robotów przemysłowych - chodzi o możliwość przewidzenia ruchów 6-osiowych robotów - takich ja na halach produkcyjnych,
    • raytracingu - przede wszystkim eksport scen do POV-Raya.
    Powstają także bardziej oryginalne pomysły - np. współpraca ze skanerem 3D DAVID.




    Heekscad (licencja BSD) - zwarty program dla systemów Windows/Linux. Tworzy go tylko jeden człowiek: Daniel Heeks. Sam program wyróżnia się wsparciem do obrabiarek CNC. Blog twórcy zapełniony jest wynikami prac z frezem palcowym:)




    NaroCAD (licencja GPL, .NET/Mono) - aktualnie można pobrać tylko wersję dla Windows (w przyszłości także Linux/Mono). NaroCAD jako jedyny z omawianych programów posiada specyfikację, która powinna zapewnić przewidywalny rozwój. PDF można ściągnąć stąd.
    Rozwój można śledzić na blogu projektu. 


    Czemu się nie połączą?
    Tworzenie trzech różnych programów na jednym jądrze OpenCASCADE wydaje się dziwne. Problem w tym, że każdy z nich ma inny kierunek rozwoju. Trudno połączyć minimalistycznego Heekscada z modularnym FreeCADem. Z NaroCADem jest jeszcze gorzej, choćby z uwagi na .NET i wątpliwą przenośność.
    Oby tylko żaden z nich nie podzielił losu Wildcat-CAD (klonu CATII)...



    Z ostatniej chwili...
    CADDD - prace nad programem rozpoczęły się w marcu. Relację można śledzić na stronie CADDD.
    Słowa autora:
    My mission is to build an open source, cross platform, easy to use, 3D CAD system.  This system needs to have the basic stripped down functionality of Inventor or Solidworks.  Inventor and Solidworks easily are the top two solid modeling software packages.  (To be clear, I don't want to clone these packages.  I want to make a unique package that can accomplish the same tasks just as easily as they can.) I am naming my project and eventually the software CADDD.  The three D's are to signify 3D.

    Zrzuty ekranu pochodzą ze stron/blogów projektów.

    sobota, 15 maja 2010

    Problemy z FGLRX po aktualizacji do Ubuntu 10.04

    Czasami nawet tak rutynowa czynność jak aktualizacja dystrybucji potrafi spłatać figla. U mnie po prostu przestały działać sterowniki AMD/ATI. Odpuścić nie miałem zamiaru - w końcu za parę $ zamówiłem kilka gierek na Humble Indie + kolekcję Penumbry za $5 - zamknięte sterowniki musiały być!


    Diagnoza
    Log wyglądał ciekawie:

    (II) Module fglrxdrm: vendor="FireGL - ATI Technologies Inc."
        compiled for 1.7.1, module version = 8.72.11
    (II) ATI Proprietary Linux Driver Version Identifier:8.72.11
    (II) ATI Proprietary Linux Driver Release Identifier: 8.723.1 
                                  
    (II) ATI Proprietary Linux Driver Build Date: Apr  8 2010 21:40:29(II) fglrx(0): [uki] DRM interface version 1.0
    (II) fglrx(0): [uki] created "fglrx" driver at busid "PCI:1:5:0"
    (II) fglrx(0): [uki] added 8192 byte SAREA at 0xc000
    (II) fglrx(0): [uki] mapped SAREA 0xc000 to 0xb758d000
    (II) fglrx(0): [uki] framebuffer handle = 0xd000
    (II) fglrx(0): [uki] added 1 reserved context for kernel
    (II) fglrx(0): swlDriScreenInit done
    (II) fglrx(0): Kernel Module Version Information:
    (II) fglrx(0):     Name: fglrx
    (II) fglrx(0):     Version: 8.72.5
    (II) fglrx(0):     Date: Apr  6 2010
    (II) fglrx(0):     Desc: ATI FireGL DRM kernel module
    (WW) fglrx(0): Kernel Module version does *not* match driver.
    (EE) fglrx(0): incompatible kernel module detected - HW accelerated OpenGL will not work
    (II) fglrx(0): [uki] removed 1 reserved context for kernel
    (II) fglrx(0): [uki] unmapping 8192 bytes of SAREA 0xc000 at 0xb758d000
    (WW) fglrx(0): ***********************************************
    (WW) fglrx(0): * DRI initialization failed!                  *
    (WW) fglrx(0): * (maybe driver kernel module missing or bad) *
    (WW) fglrx(0): * 2D acceleraton available (MMIO)             *
    (WW) fglrx(0): * no 3D acceleration available                *
    (WW) fglrx(0): ********************************************* *
    (II) fglrx(0): FBADPhys: 0xc4900000 FBMappedSize: 0x10000000
    (II) fglrx(0): Reserved 0x04900000 bytes of sideport memory for power saving
    (EE) fglrx(0): Failed to map FB memory
    (II) fglrx(0): === [atiddxScreenInit] === end

    Dziwnym trafem numerki się nie zgadzały - podczas instalacji paczki nie został nadpisany moduł jądra.


    Rozwiązanie

    Wykopałem (i usunąłem) moduł 8.72.5:
    sudo rmmod fglrx
    sudo rm -f /lib/modules/2.6.32-22-generic/updates/dkms/fglrx.ko

    Wymusiłem instalację paczki z FGLRX (która zwykle po aktualizacji znajduje się w katalogu cache apta):
    cd /var/cache/apt/archives/
    sudo dpkg -i --force-overwrite fglrx_2%3a8.723.1-0ubuntu4_i386.deb

    Sprawdziłem nowy moduł:
    sudo modprobe fglrx

    Po wpisaniu:
    dmesg | grep fglrx
    Powinno widnieć coś w stylu:
    [    6.873369] [fglrx] module loaded - fglrx 8.72.11 [Apr  8 2010] with 1 minors
    Na koniec oczywiście:
    sudo aticonfig --initial

    i restart:)

    czwartek, 13 maja 2010

    MEDUSA4 Personal - CAD 2D/3D, darmowy do użytku domowego

    Instalacja
    Postępujemy wg instrukcji ze strony
    www.cad-schroer.com:
    • Wypełniamy formularz, musimy podać MAC (może być odczytany automatycznie) - licencja będzie przywiązana do konkretnego komputera.
    • Dostajemy e-mail, odpowiadamy na niego bez dopisywania treści - w kolejnym mailu dostaniemy plik z licencją.
    • Instalujemy csh: sudo apt-get install csh
    • Ściągamy instalator dla Linuksa. Nadajemy mu prawo do wykonywania:
      chmod +x medusa4_v4_0_0_linux_personal.sh
      i uruchamiamy:
      sudo ./medusa4_v4_0_0_linux_personal.sh
    •  W czasie instalacji podajemy lokalizację pliku z licencją i przeglądarki internetowej (np. /usr/bin/firefox).
    • Skrót do programu zandujemy (w kilku miejscach!) menu GNOME.
    Działanie

    MEDUSA4 zajmuje, po uruchomieniu, ok. 70 MiB. Praca z nią jest dość specyficzna. Działamy niejako od tyłu (na partyzanta): najpierw tworzymy rzuty 2D, potem model 3D. Przydatne tutoriale poniżej:





    Co z użyciem komercyjnym? Przy niewielkiej ilości rysunków ma nam pomóc portal  calltracking.cad-schroer.com, tam za opłatą (3€ za PDF,  5€ za DXF) możemy przekonwertować naszą pracę w arkusz bez znaków wodnych.

    Lista wspieranych dystrybucji: 
    • CentOS 5
    • Fedora 11, 12
    • RedHat EL 5
    • SuSE   11 (OSS)
    • Ubuntu 9.04, 9.10

    niedziela, 9 maja 2010

    Bricscad V10 (klon AutoCADa) na Linuksa - paczki deb, rpm i tarballe

    Bricscad to bardzo podobny do AutoCADa, komercyjny program CAD. Był już kiedyś wydany w wersji 6. 
    Teraz Bricscad powraca. Na stronie czytamy:
    Świat Linux'a wciąż szuka silnego, oferującego standardy DWG rozwiązania CAD. Ponieważ firma Bricsys rozumie potrzeby stale rosnącej wspólnoty Linux informuje, iż wersja Bricscad V10 dla Linux jest na ostatnim etapie tworzenia.
     Tymczasem można ściągnąć rozwojową, testową wersję 10.4.2. Można ją używać do 31 maja 2010. Po tym adresem znajdziecie wersje *.deb, *.rpm i *.tgz. Problemów z uruchomieniem pod Ubuntu 9.10 i ze stabilnością na razie nie zauważyłem. Jedynie rendering 3D potrafi  gryźć się z Compizem. Program po starcie pochłania ok. 90 MiB RAMu.

    Główne cechy Bricscada:
    • dobre wsparcie formatu DWG,
    • praca zarówno w 2D jak i 3D,
    • cena (jakieś 2200 zł za wersję Pro) niższa niż w przypadku AutoCADa.

    poniedziałek, 3 maja 2010

    Z88 - program MES dla GNU/Linuksa, Maca i Wingrozy

    Nie zdążyłem jeszcze Z88 przetestować (pewnie zrobię to w weekend), ale chciałbym zwrócić na niego uwagę. Z kilku powodów:
    • program jest na GPL,
    • znajduje się także w repozytoriach* Ubuntu 10.04,
    • może importować pliki z Pro/ENGINEERa,
    • ma dobry, liczący 185 stron podręcznik.  
    Strona domowa programu to z88.uni-bayreuth.de/english.html
    Dodaję go też do mojej listy programów CAD/CAE dla Linuksa.


    *co ciekawe pojawił się tam też FreeCAD

    sobota, 17 kwietnia 2010

    Niedziałający MPlayer (SMPlayer) po aktualizacji Ubuntu 9.10 - rozwiązanie

    Objawy:
    • MPlayer wyrzuca błąd: mplayer: symbol lookup error: mplayer: undefined symbol: codec_wav_tags
    • SMPlayer: exit code 127
    • ewentualnie MPlayer jest usuwany podczas aktualizacji i nie daje się zainstalować.
    Problem można ominąć dodając dedykowane repozytoria dla MPlayera i SMPlayera. dodatkową korzyścią powinno być uzyskanie nowszych, bardziej funkcjonalnych wersji oprogramowania. Kolejność działania:
    • Terminal (dodajemy klucze):   sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com E4A4F4F4
    • sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com E4A4F4F4
    • Synaptic - wybieramy Ustawienia->Repozytoria->Inne oprogramowanie->Dodaj Dodajemy:


      deb http://ppa.launchpad.net/rvm/mplayer/ubuntu karmic main 
      deb http://ppa.launchpad.net/rvm/smplayer/ubuntu karmic main  
    • Klikamy Odśwież oraz instalujemy/aktualizujemy (zaznaczając "ptaszki" na liście) SMPlayera i MPlayera

    sobota, 10 kwietnia 2010

    Athlon II 240 OC test

    Pewnych rzeczy trzeba być świadomym. Wyniki mojego dzisiejszego testu OC (dla pracy stabilnej):
    • Athlon II 240 X2 3,78 GHz @ 1,45V (standardowo 2,8)
    • IGP w 790GX 900 MHz (standardowo 700), napięcie na Auto
    • pamięci Sideport nie ruszałem (1333 MHz), RAM na 1440 MHz
    • procesor chłodzony "boxowym" zestawem, mostek północny pasywnie
    • temperatura procesora nie przekroczyła 50C
    • PCIE i częstotliwość bazowa procesora ustawione asynchronicznie: 100 i 270 MHz
    • HT pracowało na 2,7 GHz

    piątek, 2 kwietnia 2010

    Test HDMI: BenQ V2410 Eco + chipset 790GX

    Tym razem postanowiłem sprawdzić czy warto inwestować w kabel HDMI. Test odbył się pod nadzorem Ubuntu 9.10 i Catalystów 10.3.

    Podłączam...
    ...i widzę czarne pasy na brzegach monitora. Ich usunięcie jest proste:
    Programy ATI Catalyst Control Center->;Odbiornik DTV->Dostosowanie->Wyk. cał. pow. ek.

    Obraz okazał się znacznie ostrzejszy niż przy wykorzystaniu D-Sub. No, ale w końcu pominęliśmy konwersję CA i AC:)

    Dźwięk przez HDMI
    Z uwagi na to, że ten model ma wyjście słuchawkowe, postanowiłem sprawdzić działanie dźwięku. Tu niestety należało wykonać dość długą procedurę:
    1. włączyć HDMI w BIOS-ie (Asrock M3A790GXH/128M),
    2. wydać polecenie aplay -l i znaleźć numer urządzenia HDA ATI HDMI (zwykle 2)
    3. Uruchomić alsamixer -c 2 (gdzie 2 to numer urządzenia) i wcisnąć m, żeby wyłączyć wyciszenie na IEC958
    4. Uruchomić System->Preferencje->Dźwięk->Wyjście i wybrać RS 780 Azalia (HDMI)
    Po tych wszystkich zabiegach mogłem się cieszyć dźwiękiem przez HDMI.

    sobota, 20 lutego 2010

    Samsung/Xerox w Archu/Chakrze na przykładzie ML-2010

    Wstęp jest nie potrzebny, wydajemy polecenie:
    sudo pacman -S splix
    Restartujemy CUPS:
    sudo /etc/rc.d/cups start
    Otwieramy w przeglądarce stronę administracyjną:
    http://localhost:631/

    Administracja->Dodawanie drukarki (wpisujemy nazwę użytkownika i hasło).
    Wybieramy podłączoną drukarkę z listy. I to wszystko. Przy próbie wydruku powinniśmy zobaczyć naszą drukarkę...


    Lista drukarek wspieranych przez sterownik SpliX splix.ap2c.org

    sobota, 13 lutego 2010

    Reset ustawień ipla lite

    Jakimś dziwnym trafem ipla postanowiła mi się pogryźć z gnome-keyring. Startowała, ale nie łączyła się z serwerem. Receptą było usunięcie ustawień ipli. Zgodnie z tradycją linuksowych programów szukałem katalogu ~/.ipla

    Tymczasem konfiguracja aplikacji skryła się w:
     ~/.appdata/iplalite.***

    Usunięcie tego katalogu "naprawiło" iplę.

    PS gnome-keyring przechowuje ustawienia w ~/.gnome2/keyrings
    Przez ~ oznaczam oczywiście katalog domowy - w moim przypadku /home/adi

    czwartek, 4 lutego 2010

    Iplex.pl + Linux = problemy [solved?]

    Sporo szumu narobiła strona Iplex.pl, która oferuje kilka pozycji VoD. Niestety zastosowany odtwarzacz Vividas nie wspiera GNU/Linuksa. I tu pojawia się miejsce na inwencję twórczą - jak obejść ten problem?

    Od razu mówię, że wtyczka User Agent Switcher nie umożliwia na obejrzenie filmu.
    Spróbowałem zrobić to inaczej:
    1. Zainstalowałem WINE (1.1.31)
    2. Potem doinstalowałem windowsową wersję Firefoksa 3.6 i Javy (6u18)
    3. Otworzyłem stronę, wybrałem film i zaakceptowałem aplet Javy:

    Niestety film dalej nie ma chęci na załadowanie się. Ma ktoś pomysł na rozgryzienie problemu?

    UPDATE:
    Instrukcja uruchomienia Iplex na GNU/Linuksie: michalsubtelny.pl/2010/02/vividas-player-w-ubuntu-9-10-czyli-iplex-pl-na-24-calach/

    niedziela, 31 stycznia 2010

    Statystyki, SMS, książka adresowa - dla karty 3G pod Linuksem

    Jak zapewne wszyscy zauważyli, "mobilne" połączenie z Internetem nie nastręcza problemów ostatnim wersjom Ubuntu. Wszystko robi Network Manager. Gorzej jeśli szukamy większej funkcjonalności, np:
    • statystyk,
    • odbierania sms,
    • informacji o sile sygnału.
    Tu z pomocą przychodzi nam Vodafone Mobile Connect. 


    Instalacja dla Ubuntu 9.10
    1. Ściągamy i instalujemy przez GDebi pliki ze strony Betavine Forge.
    2. Najpierw ozerocdoff_0.4-2_i386.deb 
    3. Następnie vodafone-mobile-connect_2.15.01-2_all.deb - pozostałe zależności zostaną zainstalowane automatycznie.
    4. Uruchamiamy Programy->Internet->Vodafone Mobile Connect
    Dalsza konfiguracja jest zależna od operatora. Dla Play:
    Profile name: play
    APN host: internet
    Można też dodać OpenDNSy:
    Primary DNS: 208.67.222.222
    Secondary DNS: 208.67.220.220
    Następnie w Tools->SMS preferences należy dodać numer centrum SMS:
    SMSC Number: +48790998250



    Problemy
    Wysyłanie SMS szwankuje (E220), z odbieraniem nie ma problemu.

    niedziela, 24 stycznia 2010

    Flashowanie biosu bez użycia Windows

    Wczoraj nadarzyła mi się okazja do małego flashowania. Ostatni raz robiłem to w czasach AwdFlasha bądź UniFlasha i dyskietek. Oj, co to był wtedy za stres "żeby tylko nie było byka na dyskietce":)

    Obecnie producenci płyt preferują programy uruchamiane pod Windows. Oczywiście dla mnie nie jest to rozwiązanie.

    ASRock
    Pacjentami były dwie płyty ASRock M3A770DE i M3A790GXH/128M. Bios ASRocków dostarcza funkcję nazwaną Instant Flash, która pozwala na update BIOSu bez wykorzystywania systemu operacyjnego. W punktach:
    • Potrzebny jest pendrive lub dysk sformatowany na FAT. Polecam tę pierwszą opcję.
    • Wrzucamy rozpakowany pliczek ze strony ASRocka na pendrive.
    • Przy starcie komputera wciskamy F2 i wchodzimy w Smart->Instant Flash.
    • Postępujemy zgodnie z instrukcjami na ekranie. BIOS sam znajdzie plik na pendrive. 
    • Teraz tylko modlimy się aby nikt nam nie wyłączył prądu podczas flashowania:) 
    Inni producenci:

    ASUS EZ Flash 2 - analogiczne rozwiązanie od ASUSA
    Gigabyte Q-Flash - pomysł Gigabyte

    poniedziałek, 11 stycznia 2010

    Bootowalny antywirus, czyli Linux kontraatakuje:)

    W przypadku systemów, których nazwy nie chcę wymawiać, czasami można złapać wrednego wirusa. Jeśli rozprzestrzenia się on w zastraszającym tempie, np. doklejając się do wszystkich plików *.exe, to najlepszym rozwiązaniem może być natychmiastowe wyłączenie systemu (tego na W) i niezależne uruchomienie antywirusa z bootowalnej płyty.

    Takich płyt ratunkowo-skanujących, które bazują na Linuksie, jest wiele. Dziś chciałbym przedstawić dystrybucję Aviry. Obraz ISO można ściągnąć z www.avira.com/en/support/support_downloads.html. Aktualna wersja waży zaledwie 55 MiB (znacznie mniej niż np. propozycja Kaspersky'ego). Należy pobrać Avira AntiVir Rescue System




    • Po wybraniu 1 (ewentualnie 3 lub 4) powinniśmy zobaczyć główny widok w j. niemieckim. Klikamy na flagę brytyjską by zmienić język na angielski:


    • Po wciśnięciu Start scanner rozpocznie się skanowanie wszystkich dysków. Nie ma problemu z NTFS, bo Avira używa ntfs-3g.
    • Jeśli dość dawno pobraliśmy obraz płyty, to możemy zaktualizować bazę wirusów klikając Update. Potrzebne jest tylko połączenie z Internetem: