niedziela, 30 marca 2014

Kurs Python'a - String cz.7

W najbliższych wpisać przyjrzymy się bliżej operacjom na ciągach znaków,listach, krotkach oraz słownikach.

1) Dostęp do zmiennych:

Zacznijmy od inicjacji zmiennych:

var1='Hello World'
var2="Python programming"

Wykorzystamy je w programie:

#!/usr/bin/python

var1 = 'Hello World!'
var2 = "Python Programming"

print "var1[0]: ", var1[0]
print "var2[1:5]: ", var2[1:5]

W wyniku otrzymamy wycięte odpowiednie fragmenty naszych napisów:

var1[0]:  H

var2[1:5]:  ytho







2) Update zmiennych:


Jesteśmy w stanie przy pomocy zakresów zmienić pewne dane w naszych zmiennych:


#!/usr/bin/python

var1 = 'Hello World!'

print "Updated String :- ", var1[:6] + 'Python'



Wynik:

Updated String :-  Hello Python


Ze starego ciągu zostawiamy 6 pierwszych znaków, od 7 znaku wstawimy 'Python'.

sobota, 29 marca 2014

Synchronizacja plików Robocopy.exe Vista/2008 i wyższe

W firmie wykorzystujemy xcopy do kopiowania plików zawierających techniczne dane  potrzebne do produkcji, jednak istnieje dużo lepsze według mnie narzędzie do tego celu, pozwalające na wyświetlenie dużej liczby potrzebnych czasami danych, pominięcie pewnych danych - Robocopy.exe. Narzędzie to dostępne jest od Windows Vista, oraz 2008 jeżeli chodzi o wersję serwerową.

Szablon działania jest prosty:

robocopy.exe źródło_plików cel_plików /opcjonalne_przełączniki

1) Kopiowanie katalogów z pominięciem pustych:

robocopy.exe D:\WaznePliki E:\WaznePlikiKopia

2) Kopiowanie katalogów wraz z pustymi:

robocopy.exe D:\WaznePliki E:\WaznePlikiKopia /E

niedziela, 16 marca 2014

Kurs Python'a - Operacje na typach liczbowych cz.6

Python posiada wiele wbudowanych  przydatnych operacji matematycznych, takich jak wartość bezwzględna, funkcje trygonometryczne itd.

1) Przypisanie / usunięcie wartości zmiennej:

var1=1
var2=2

Jeżeli chcemy usunąć wartość zmiennej, a tym samym zwolnić miejsce w pamięci robimy:

del var1, var2








2) Konwersja między typami:


Dane jednego typu możemy konwertować na inny:

int(x)- konwersja x do integera,
long(x) - konwersja x do long'a;
float(x)- konwersja x do float'a;
complex(x) - konwersja x do postaci zespolonej, gdzie część rzeczywista to x, urojona natomiast 0;
complex(x,y) - konwersja x do postaci zespolonej, gdzie część rzeczywista to x, urojona natomiast y

sobota, 15 marca 2014

Kurs Python'a - Pętle cz.5

Po instrukcjach warunkowych przyszedł czas na pętle, dzięki którym będziemy w stanie wykonać powtarzające się czynności.

1) While:

Założenie jest dość proste:

while expression:
   statement(s)

Statement jest wykonywana do czasu poprawności expression.

#!/usr/bin/python

count = 0
while (count < 9):
   print 'The count is:', count
   count = count + 1

niedziela, 9 marca 2014

Serwer MineCraft na Raspberry PI

Raspberry Pi możemy wykorzystać jako serwer do popularnej gry MineCraft, oczywiście jedna maszynka, nawet pokręcona może nie wystarczyć, ale możemy zmontować klasterek i mieć prawie serwer;)-przydatny wpis http://geek-admin.blogspot.com/2014/03/klaster-raspberrypi.html.

1) Przygotowanie oprogramowania:

Aktualizacja:

sudo apt-get update && sudo apt-get upgrade

Java:

sudo wget --no-check-certificate http://www.java.net/download/jdk8/archive/b102/binaries/jdk-8-ea-b102-linux-arm-vfp-hflt-07_aug_2013.tar.gz

Instalacja Javy:

mkdir -p /opt

sudo tar zxvf jdk-8-ea-b102-linux-arm-vfp-hflt-07_aug_2013.tar.gz -C /opt 

rm jdk-8-ea-b102-linux-arm-vfp-hflt-07_aug_2013.tar.gz

sudo /opt/jdk1.8.0/bin/java -version

Klaster RaspberryPi

Być może klaster w stosunku do czegoś tak małego jak Raspberry Pi do za duże słowo, jednak gdy jest ich np. 20 daje nam to już wystarczająco dużo mocy, aby postawić w miarę sensowny serwer www. Poza Raspberry Pi będziemy potrzebowali jeszcze drugi komputer.

Klaster Raspberry Pi:

1) W każdym 4GB na kracie pamięci,
2) 16MB dla układu graficznego,
3) Podkręcenie procesora do 800MHz,
4) Włączenie SSH,
5) Ustawienie hostname,
6) Ustawienie hasła do maszyny,
7) Włączenie Expand fs,
8) Ustawienie IP z zakresu 192.168.1.xxx
9) Instalacja potrzebnego oprogramowania, w tym przypadku Apache, libxml2 oraz python-libxml2 na każdym Raspberry Pi,

Drugi komputer jako Load Balancer:

1) Wymagane 2 interfejsy:
1.1) Pierwszy do kontaktu z router'em, np. 192.168.0.3,
1.2) Drugi do podpięcia klastra 192.168.1.1,
2) Wymagania sprzętowe: 512MB ramu, procesor 2.7GHz,
3) Zainstalowany Lubuntu ()odchudzona wersja Ubuntu), ewentualnie Ubuntu gdy mamy mocniejszy sprzęt

niedziela, 2 marca 2014

Zautomatyzowanie wdrożenia środowiska Debian GNU/Linux wraz z utworzeniem skrótów na pulpicie

Otrzymałem zapytanie w jednym z komentarzy w jaki sposób w miarę bezboleśnie zainstalować GNU/Linux na 15 komputerach, do tego wyciągnąć skróty na pulpit, instalację środowiska lxde oraz wymusić zmianę hasła przy następnym logowaniu.

Na początek warto zadać sobie pytanie czy warto biegać z plikami do tych 15 komputerów i rozpoczynać na nich instalację nawet biorąc pod uwagę wersję net install, czy może lepiej uruchomić wszystko poprzez instalację sieciową.

Cały opis dotyczy instalacji na systemie Debian 7.0
Jeżeli chcemy zainstalować wszystko po staremu wystarczy że  zapoznasz się z moim wpisem dotyczącym instalacji Debiana na pendrive'ie.

1) Przygotowanie środowiska do instalacji sieciowej (PXE):

Na początek musimy zorganizować komputer lub ustawić maszynę wirtualną na której będziemy mogli udostępnić pliki instalacyjne.Ja wybrałem pierwszą opcję, jako że w firmie mamy dużo starego sprzętu;), karta sieciowa oraz bios musi wspierać PXE-czyli bootowanie z sieci lokalnej.Jeżeli w sieci mamy serwer DHCP lekko problematyczne robi się ustawienie dodatkowego serwera z DHCP na nasze potrzeby możemy dodatkowo skonfigurować NAT na Debianie na naszym serwerze, lub postawmy zwykły router dlinka (musimy wyłączyć przydzielanie adresu przez DHCP) za 50zł+switch 24 portowy, w ten sposób będziemy mieli własną podsieć oraz nie będziemy przeszkadzać pozostałej części naszej sieci.

1.1) Serwer TFTP:

Pobieramy na nasz serwer netboot systemu Debian:

cd /home/beadmin/Desktop                                                                                                                                               wget  http://ftp.nl.debian.org/debian/dists/wheezy/main/installer-amd64/current/images/netboot/netboot.tar.gz

Następnie rozpakujemy plik tar -zxf netboot.tar.gz.

Musimy zainstalować tftp:

apt-get install  tftpd-hpa

Konfigurujemy:

nano /etc/default/tftpd-hpa

Dodajemy:

RUN_DAEMON=”yes”
OPTIONS=” /var/lib/tftpboot” # katalog na pliki

Zapisujemy zmiany. Następnie utworzymy katalog na pliki w systemie:

 mkdir -p /var/lib/tftpboot

Uruchomienie usługi:

 /etc/init.d/tftpd-hpa start


Na koniec kopiujemy pliki z netboot do naszego katalogu na ftp:

cp /home/beadmin/Dekstop/netboot/* /var/lib/fttpboot/


sobota, 1 marca 2014

Kurs Python'a - Instrukcje warunkowe cz.4

Kolejnym elementem praktycznie każdego języka są instrukcje warunkowe, pozwalające na sterowanie programem w zależności od możliwych scenariuszy.

Najprostszą wersją pętli if jest taka, która sprawdza tylko jeden warunek, jeżeli warunek jest poprawny instrukcja if zostanie wykonana.

#!/usr/bin/python

var1 = 100
if var1:
   print "Zmienna var1 ma wartosc:"
   print var1


Dobrze jednak gdy otrzymamy również informację gdy warunek nie zostanie spełniony, w tym celu musimy użyć słowa kluczowego else.Wywołanie kodu z var1=100 spowoduje wywołania napisu o poprawności zmiennej, natomiast gdy wartość będzie 0 (zerowa) zostanie wyświetlona informacja o fałszu zmiennej.

#!/usr/bin/python

var1 = 100
if var1:
   print "Zmienna var1 jest poprawna"
   print var1
else:
   print "Zmienna var1 jest fałszywa"

   print var1