Archiwum miesiąca: wrzesień 2013

Lua: Operacje na tablicach

Kolejna ściągawka składniowa.

Zadeklarowanie tablicy:

    NazwaZmiennej = {}

Zadeklarowanie tablicy z początkowymi danymi:

    NazwaZmiennej = {"tekst 1", 3, InnaTablica= {"pole w innej tablicy","drugie pole w innej tablicy"},"kolejny napis w glownej tablicy"}

Push:

    a = {}

    table.insert(a,"jakiś tekst")

 

Pop:

    table.remove(a,1)

Ile elementów ma tablica?

    print(table.getn{10,2,4})          -- 3
    print(table.getn{10,2,nil})        -- 2
    print(table.getn{10,2,nil; n=3})   -- 3
    print(table.getn{n=1000})          -- 1000

    a = {}
    print(table.getn(a))               -- 0
    table.setn(a, 10000)
    print(table.getn(a))               -- 10000

    a = {n=10}
    print(table.getn(a))               -- 10
    table.setn(a, 10000)
    print(table.getn(a))               -- 10000

inną opcją jest użycie operatora #. Ma on jednak jedną wadę! Nie liczy, tylko wyświetla wartość najwyższego indeksu:

    t = {"a", "b", "c"}
    = #t
    3

Pętla po parach w tablicy:

    t = {"a", "b", [123]="foo", "c", name="bar", "d", "e"}
    for k,v in pairs(t) do print(k,v) end
    1       a
    2       b
    3       c
    4       d
    5       e
    123     foo
    name    bar

można też wykorzystać ipairs. Gwarantuje to, że zawsze otrzymamy rekordy w poprawnej kolejności. To rozwiązanie wyświetla jednak tabelę tylko po indeksach, nie po kluczach.

    t = {"a", "b", "c"}
    for i, v in ipairs(t) do print(i, v) end
    1       a
    2       b
    3       c

Czytaj dalej Lua: Operacje na tablicach

SecureVNC Plugin – szyfrowanie sesji UltraVNC

Adam D. Walling stworzył genialnie prosty w użyciu plugin, pozwalający zaszyfrować silnym kluczem nasze połączenie VNC realizowane za pomocą UltraVNC.

Plugin w podstawowej (i zalecanej) wersji działa bezobsługowo. Cała praca polega na jego dograniu do katalogu OpenVNC i znaczeniu w konfiguracji, że chcemy w niego korzystać (zarówno na serwerze, jak i stacji klienckiej). Nie generujemy kluczy! Plugin sam zadba o szyfrowanie.

openvmc securevnc pluginStandardowo plugin pracuje z wykorzystaniem kluczy 2048-bit RSA i 256-bit AES.

Oczywiście można zmienić zarówno używane sposoby szyfrowania, jak i wielkość kluczy, jednak nie jest to konieczne, ani zalecane.

Plugin można pobrać bezpośrednio ze strony: http://adamwalling.com/SecureVNC/

OpenVMS dla hobbystów, czyli jak zdobyć własną licencję

Na początek musimy zostać członkami DECUServe. Automatyczne założenie konta możliwe jest przez telnet (telnet decuserve.org). Jako username podajemy REGISTRATION i wykonujemy kolejne kroki. Ważne jest, abyśmy zanotowali sobie nasz numer członkowski, który wygląda mniej więcej tak US000000.

Kolejny krok, to wypełnienie ankiety na stronie: http://www.openvms.org/pages.php?page=Hobbyist
Oczywiście musimy podać tam nasz numer DECUServe.

Teraz pozostaje oczekiwanie. Ja swojego PAK’a po 3 dniach od wysłania ankiety.

Crontab – składnia

Notorycznie zapominam składni w plikach crona, także… ściągawka.

$ crontab -e
0 2 * * * /usr/bin/skrypt.sh
PoleDozwolone wartości
Minuta0–59
Godzina0–23
Dzień miesiąca1–31
Miesiąc1–12
Dzień tygodnia0–7 (0 i 7 to niedziela)

Przykładowo:

0 2 3 4 * oznacza, że cron wystartuje o 2:00 trzeciego dnia kwietnia. Niezależnie od tego jaki to będzie dzień tygodnia.

*/5 * * * 1-5 oznacza, że wykonanie nastąpi co 5 minut, ale tylko od poniedziałku do piątku

0 17,18 * * * uruchomi job o 17:00 i 18:00, codziennie.

FreeAXP™ – Darmowa wirtualna Alpha

Emulator, dzięki któremu można na x86 zasymulować komputer z procesorem Alpha.

Do ściągnięcia ze strony: https://www.migrationspecialties.com/index.php/virtual-systems/alpha/freeaxp

Niezbędne rozwiązanie dla osób, które nie mając dostępu do sprzętu chciałyby zająć się np. nauką systemu OpenVMS.

FreeAXP w skrócie:

  • Darmowy do zastosowań komercyjnych i prywatnych
  • Brak konieczności rejestrowania
  • Wirtualne środowisko w którym można zainstalować OpenVMS i Tru64 UNIX
  • Wsparcie dla Windowsów 32 i 64bit
  • Prosta konfiguracja
  • Pracuje także na maszynach wirtualnych (vmware->windows->FreeAxp)

Dostępne komponenty 'sprzętowe’:

  • 32 – 128MB wirtualnego ramu
  • do siedmiu dysków twardych
  • Jeden fizyczny CD ROM
  • Dwie karty sieciowe

Obsługiwane systemy operacyjne (do uruchomienia wewnątrz emulatora)

  • OpenVMS 6.2
  • OpenVMS 6.2-1H3
  • OpenVMS 7.0
  • OpenVMS 7.1
  • OpenVMS 7.1-1H1
  • OpenVMS 7.2
  • OpenVMS 7.2-1
  • OpenVMS 7.3
  • OpenVMS 7.3-1
  • OpenVMS 7.3-2
  • OpenVMS 8.2
  • OpenVMS 8.3
  • OpenVMS 8.4
  • Digital UNIX V3.2C
  • Digital UNIX V3.2G
  • Digital UNIX V4.0B
  • Digital UNIX V4.0D
  • Digital UNIX V4.0E
  • Digital UNIX V4.0F
  • Digital UNIX V4.0G
  • Tru64 UNIX V5.0
  • Tru64 UNIX V5.0A
  • Tru64 UNIX V5.1
  • Tru64 UNIX V5.1A
  • Tru64 UNIX V5.1B
  • Tru64 UNIX V5.1B-5
  • Tru64 UNIX V5.1B-6

Zarządzanie użytkownikami w OpenVMS – add username, modify i nie tylko

OpenVMS ma dość nietypową składnię przy zakładaniu nowych użytkowników.

Całość operacji można podsumować krótkim kodem:

$ set process/privileges=all
$ set default sys$system:
$ run authorize
UAF> show [group,*] /brief
UAF> add username /uic=[group,member] /account=account
UAF> modify /password=password
UAF> modify username /device=sys$sysdevice
UAF> modify username /directory=[directory]
UAF> modify username /owner="Given Name"
UAF> modify username /nopwdexpir /flag=nodisuser
UAF> modify username /defprivileges=(...) /privileges=(...)
UAF> modify username /flags=nodisuser
UAF> exit
$ create /directory /owner=[group,member] sys$sysdevice:[directory]

Czyli po kolei:

  1. $ set process/privileges=all – uzyskanie pełnych uprawnień
  2. $ set default sys$system: – przejście do katalogu sys$system:
  3. $ run authorize – uruchomienie narzędzia do zarządzania userami
  4. UAF> show [group,*] /brief – wyświetlenie krótkiej listy userów z 'grupy’
  5. UAF> add username /uic=[group,member] /account=account – dodajemy użytkownika 'username’ o UIC [group,member]
  6. modyfikujemy mu konkretne flagi, przyznajemy uprawnienia itd

Uwaga! Niezalecane jest kasowanie użytkowników. Jeżeli chcemy kogoś usunąć z systemu, lepiej jest wykonać: modify username /flags=nodisuser

UltraVNC – problemy z odświeżaniem ekranu

UltraVNC potrafi w niektórych przypadkach nie zadziałać Out Of Box w pełni poprawnie. Jednym z problemów, na które natrafiłem było strasznie wolne odświeżanie ekranu klienckiego.

Na szczęście rozwiązanie jest bardzo proste i polega na poprawnym skonfigurowaniu klienta UltraVNC. W pliku UltraVNC.INI musimy mieć ustawione następujące opcje:

[poll]
TurboMode=1
PollUnderCursor=0
PollForeground=1
PollFullScreen=1
OnlyPollConsole=0
OnlyPollOnEvent=0
EnableDriver=1
EnableHook=1
EnableVirtual=0
SingleWindow=0
SingleWindowName=

Dodatkowo, jeżeli uruchamiasz klienta na Windowsie XP w niektórych przypadkach trzeba również załadować driver video.

Rozwiązanie znalazłem na stronie: http://www.itninja.com/question/ultravnc-refresh-issue?from=appdeploy.com