niedziela, 26 stycznia 2014

Synchronizacja danych między Raspberry Pi a kontem Google.

Nasze Raspberry możemy wykorzystać do synchronizacji danych z naszym kontem na serwerach google'a.

1) Wymagane pakiety oraz konfiguracja:

apt - get install git cmake build-essential libgcrypt11-dev libjson0-dev libcurl4-openssl-dev libexpat1-dev libboost-filesystem-dev libboost-program-options-dev binutils-dev qt4-dev-tools libyajl-dev libboost-all-dev

git clone git://github.com/Grive/grive.git
cd grive

cmake .

Przed kompilacją musimy wprowadzić pewne zmiany w kodzie źródłowym:

nano libgrive/src/drive/State.cc

Zamieniamy linie 251, 252, 256:

last_sync.Add( "SEC",   JSON(m_last_sync.SEC() ) );

last_sync.Add( "NSEC",  JSON(m_last_sync.NanoSec() ) );

na:

last_sync.Add( "SEC", JSON((boost::uint64_t)m_last_sync.SEC()));
last_sync.Add( "NSEC",  JSON((boost::uint64_t)m_last_sync.NanoSec() ) );

Raspberry Pi jako serwer Proxy - Squid

W poprzednim wpisie zmieniliśmy nasze Raspberry w AP, teraz chciałbym dodać do niego jeszcze możliwość cache'owania często przeglądanych stron. Polecenia wykonujemy z konta root.

1) Instalacja Squid:

apt - get install squid

Zachowamy oryginalną konfigurację:

cd /etc/squid/sudo 

cp squid.conf squid.conf.origin

nano squid.conf 

na końcu pliku dodajemy naszą sieć:

ACL LocalNet src 192.168.0.0/24
ACL LocalNet2 src 192.168.1.0/24

Pozwólmy wszystkim na dostęp do naszego proxy:

http_access allow localhost

http_access allow LocalNet

http_access allow LocalNet2


http_access deny all

restartujemy squid:

 /etc/init.d/squid reload

Możemy rozszerzyć nasz config o inne polecenia, opis Tutaj.

Raspberry Pi jako Access Point

Nasze Raspberry przy odrobinie pracy może stać się Acess Pointem, oczywiście możemy kupić gotowy AP, jednak dzięki dostępowi do systemu będziemy mogli również skonfigurować Squid'a, dzięki czemu strony będące często używane szybciej będą się"ładować".

1) Wymagania:

- Raspberry Pi z Raspianem,
- Karta Wifi TP-Link TL-WN722N lub inna (pozwalająca na pracę w trybie master),
- Dostęp do internetu po kablu ,

2) Karta WiFi:

Po podpięciu karty oraz wykonaniu polecenia iwconfig, powinniśmy zobaczyć naszą kartę na liście:


root@raspberrypi:~# iwconfig
lo        no wireless extensions.

wlan0     IEEE 802.11bgn  ESSID:off/any
          Mode:Managed  Access Point: Not-Associated   Tx-Power=20 dBm
          Retry  long limit:7   RTS thr:off   Fragment thr:off
          Encryption key:off

          Power Management:off


Możemy ręcznie spróbować włączyć tryb master dla karty, jednak otrzymamy przynajmniej teraz błąd:

root@raspberrypi:~# iwconfig wlan0 mode master
Error for wireless request "Set Mode" (8B06) :
    SET failed on device wlan0 ; Invalid argument. 

sobota, 25 stycznia 2014

Raspberry Pi jako serwer ASP.NET na Raspian

Możemy nasze Raspberry wykorzystać jako prosty serwer obsługujący ASP.NET, czyli odpowiednik PHP w Microsoft.
Cały proces przeprowadzamy na Raspian (okrojona wersja Debiana przystosowana dla Raspberry oraz konta root).

1) Potrzebne pakiety:

 apt - get install nginx
 apt - get install mono-fastcgi-server4


2) Plik konfiguracyjny:

nano /etc/nginx/sites-available/asp

Dodajemy:

Server {

 listen 8080;

 server_name localhost;

 access_log /var/log/nginx/asp.access.log;

 error_log /var/log/nginx/asp.error.log;

    rental / {

      root/var/www/asp /.;

      index index.html index.htm default.aspx Default.aspx;

      fastcgi_index Default.aspx;

      fastcgi_pass 127.0.0.1:9000;

      include/etc/nginx/fastcgi_params;

     }

 }

SQL,PL/SQL - Funkcje agregujące - Oracle 10/11 cz.10

Następną istotną rzeczą w SQL są tzw. funkcje agregujące, dzięki nim otrzymujemy jeden wynik z kilku danych, np. sumę pensji naszych pracowników, czy też ich średnią pensję.

1) AVG-średnia:

Poniższej zapytanie pokazujące średnią pensję naszych pracowników:

SELECT ROUND(AVG(salary)) AS "Średnia pensja" FROM employees;


2) COUNT-Suma wierszy:

Przy pomocy Count możemy zliczyć wystąpienia wierszy zgodnych z zapytaniem:

SELECT count(*) AS "liczba pracujących" FROM employees;



3) MIN/MAX:

Działanie jest raczej oczywiste:

SELECT MIN(salary) AS "Min pensja", MAX(slary) AS "Max pensja" FROM eomployees;


4) SUM+DISTINCT:

SUM sumuje wartości z podanych w zapytaniu wierszy, natomiast DISTINCT pozwala zsumować wartości niepowtarzalne:

SELECT SUM(DISTINCT salary) FROM employees;







SQL,PL/SQL - Data - Oracle 10/11 cz.9

Oracle daje nam możliwość wykorzystania wbudowanych funkcji, jedną z nich jest ta dotycząca dat.
W bazie istnieje tabela o nazwie DUAL, z której możemy w czasie rzeczywistym pobierać dane dotyczące naszej bazy. Na dacie możemy również wykonywać obliczenia dokładnie tak samo jak na zwykłych liczbach.

Możemy pokazać obecną datę (RRRR/MM/DD) przy pomocy:

SELECT sysdate FROM DUAL;




Poniższe zapytanie w wyniku poda nam zaokrągloną wartość reprezentującą różnicę w latach pomiędzy dzisiejszą datą, a datami kolejnych wierszy w kolumnie hire_date z tabeli employees:

SELECT ROUND(((SELECT sysdate FROM DUAL)-(hire_date))/366) AS "Róźnica w latach" FROM employees;



sobota, 18 stycznia 2014

Raspberry Pi monitoring przy pomocy USB/IP Logitech C110

W jednym z poprzednich wpisów przedstawiłem pokrótce korzystanie z kamerki wpiętej w slot na płycie głównej. Dziś chciałbym pokazać konfigurację kamerki, do której możemy dostać się po adresie IP z okna przeglądarki.

Wymagane komponenty:
1) Raspberry Pi  B,
2) Kamerka na usb (ja używam Logitech'a C110, może być inna).
3) Skonfigurowane połączenie do internetu (Wi-Fi / LAN)

1) Potrzebne oprogramowanie:

Kamerkę podłączamy pod usb przed jego uruchomieniem.
Wykonanie poniższego polecenia pozwoli na pobranie wszystkich aktualizacji dla systemu oraz wszystkich paczek potrzebnych do działania kamerki:

sudo apt-get update && echo 'y' && sudo apt-get upgrade

sudo apt-get install motion -y && sudo apt-get install mplayer -y && sudo apt-get install ffmpeg -y  && sudo apt-get install feh -y  && sudo apt-get install screen -y 

niedziela, 12 stycznia 2014

Konfiguracja WiFi pod Raspberry Pi

Pół soboty walczyłem z ustawieniem Raspberry Pi, przy pomocy telewizora, kabla hdmi oraz pożyczonej z pracy klawiatury USB;).
Procesor pokręcony na Medium=900MHz, dobrze że mam kaloryferki założone, trzeba będzie sprawdzić jak działa na Higth=1GHz. Jak na razie jest ok, aczkolwiek na X-ach trochę się przycina, dlatego piszę w konsoli. Jako że mam internet mobilny musiałem poustawiać hotspota na S3, żebym w ogóle miał internet.
Do tego konfiguracja WiFi, na pulpicie znajduje się graficzna aplikacja w której można wszystko wyklikać, ten sam efekt można otrzymać przy pomocy konsoli.

1) Konfiguracja przy pomocy WiFi Config:


Na pulpicie klikamy na WiFi Config:


Pojawi się okienko w któym widzimy naszą kartę opisaną jako wlan0, klikamy na button  Scan:

Serwer czasu Windows 2008 R2, synchronizacja na stacjach roboczych

W ostatnim czasie w pracy walczyłem z punktowymi zanikami dostępu do internetu, brak poczty, skype'a oraz przeglądania stron. Nie pomagały restarty komputerów, przypisywanie / zmiana adresu IP oraz DNS.
Dopiero podczas przeglądania logów na stacjach końcowych zauważyłem błędy związane z DNS oraz DHCP. Było to dość dziwne, ponieważ adres pobierany był w poprawny sposób (brama,maska, dns).
Jednak później okazało się, że problemem był serwer czasu. Stacje lokalne źle pobierały czas, który w dodatku był róży od tego na serwerze, co powodowało problemy z zarejestrowaniem hosta w DNS.
Rozwiązanie okazało się proste, zaktualizować czas na serwerze oraz wymusić aktualizację czasu na stacjach roboczych.

1) Aktualizacja czasu na serwerze:

Otwieramy cmd na serwerze, wpisujemy tam:

net stop w32time

Podpinamy czas naszego serwera do Głównego Urzędu Miar i Wag, ważne jest, aby na końcu przy wpisaniu adresu jako nazwy domenowej dodać 0x1. Jeżeli wpiszemy adres IP wtedy wpisujemy 0x8.

w32tm /config /syncfromflags:manual /manualpeerlist:tempus1.gum.gov.pl,0×1

Wymuszamy, aby nasz kontroler domeny był źródłem czasu dla stacji roboczych.

w32tm /config /reliable:yes

net start w32time

W logach w zakładce System powinien pokazać się podobny do poniższego wpis:

 Dostawca czasu NtpClient otrzymuje obecnie prawidłowe dane o czasie z tempus1.gum.gov.pl, (ntp.m|0×0|0.0.0.0:123->adres_naszego_serwera:123).

Od tej chwili na kontrolerze powinien być poprawny czas.

sobota, 11 stycznia 2014

SQL,PL/SQL - Funkcje numeryczne - Oracle 10/11 cz.8

Wiele czynności z danymi nie byłoby możliwe bez funkcji matematycznych, choćby zaokrąglenie liczb.
Poniżej najpopularniejsze funkcje numeryczne:

1) ROUND (x,[y]) - zaokrąglenie wyrażenia X do parametru Y, który określa liczbę miejsc po przecinku, jeżeli parametr Y jest pusty miejsc po przecinku nie będzie.

2) TRUNC (x,[y]) - przy jego pomocy wyrażenie X możemy pozbawić kilku miejsc po przecinku, tak jak powyżej jeżeli Y nie ma wartości domyślnie wstawiane jest 0, tak więc wyrażenie pokazane zostaje pokazane tak jak zostało w bazie zapisane.

3)  SQRT(x) - pierwiastek X do potęgi 2.

4)  POWER(x,y) - potęga X do Y.

5) SIGN(x) - zwraca 0, 1 lub -1 w zależności od parametru X.

6) ABS(x) - wartość bezwzględna z parametru X, jeżeli X ma wartość ujemną po wykorzystaniu ABS będzie miał wartość dodatnią.

7) MOD(x,y) - reszta z dzielenia X przez Y, przy parametrze Y=0 zwracana jest wartość parametru X.

8) SIN(x),COS(x),TAN(x)- najpopularniejsze funkcje trygonometryczne.




niedziela, 5 stycznia 2014

Raspcontrol- panel kontrolny dla Raspberry Pi

Pojawiło się w miarę proste oraz wygodne narzędzie do kontroli naszego Raspberry Pi zdalnie - Raspcontrol. Wszystkie operacje wykonujemy jako root.

1) Przygotowanie:


sudo apt-get install apache2

sudo apt-get install php5

sudo apt-get install libapache2-mod-php5


sudo /etc/init.d/apache2 restart

apt-get install git

git clone https://github.com/Bioshox/Raspcontrol.git

mkdir /etc/raspcontrol

nano /etc/raspcontrol/database.aptmnt

Dodajemy do niego "bazę danych", która zawiera informacje o loginie oraz haśle które może korzystać z tego narzędzia:

{
   "user":"WpisujemyLogin", "password":"WpisujemyHasło"

}

OwnCloud na Raspberry Pi

W jednym z poprzednich wpisów przedstawiłem kroki potrzebne do instalacji OwnCloud dla Debiana. Możliwe jest również postawienie takiego systemu na Raspberry Pi. Wszystkie poniższe kroki konfiguracyjne wykonujemy na koncie z uprawnieniami root'a.

1) Przygotowanie serwera www:

Na początek zaktualizujmy pakiety do najnowszej wersji:

apt-get update && apt-get upgrade

Pobieramy oraz instalujemy lighttpd oraz pakietu do obsługi PHP 5: 

apt-get install lighttpd php5-cgi

Po instalacji restartujemy Raspberry:

reboot

SQL,PL/SQL - Funkcje znakowe (UPPER, LOWER itd.)- Oracle 10/11 cz.7

Funkcje znakowe w przeważającej ilości pomagają uatrakcyjnić wyniki naszych zapytań niż mają nam ułatwić ich wykonywanie, jednak czasami pomagają nam stworzyć ładniejsze raporty dla szefów;)

1) UPPER - przy jej pomocy w wynikach naszych zapytań pojawią się tylko i wyłącznie duże litery.

SELECT LAST_NAME, UPPER(LAST_NAME) FROM EMPLOYEES;


2) LOWER - przeciwieństwo w/w  funkcji zamienia wszystkie znaki na małe.

SELECT LAST_NAME, LOWER(LAST_NAME) FROM EMPLOYEES;


sobota, 4 stycznia 2014

SQL,PL/SQL - Filtrowanie wyników zapytań (WHERE, BETWEEN, LIKE) - Oracle 10/11 cz.6

Tworząc zapytania do bazy możemy chcieć wybrać ze wszystkich wyników tylko te które posiadają specyficzną wartość, np. tylko te osoby które zarabiają określoną kwotę lub określony zakres kwot.

1) WHERE:

Zapytanie w którym używamy klauzuli WHERE pozwala wyświetlić tylko te wartości które odpowiadają naszym ograniczeniom.

Poniżej zapytanie dzięki któremu pokażemy wszystkie informacje

SELECT * FROM EMPLOYEES WHERE EMPLOYEE_ID=108;



Możemy również wyświetlić informacje o miesięcznej pensji pracowników, chcemy pokazać tych którzy zarabiają poniżej 1000$. Dodatkowo w zapytaniu została wykorzystana funkcja to_char  dzięki czemu wyliczenie miesięcznej pensji zostanie przedstawione w formie do 6 zanków przed przecinkiem oraz tylko 2 znaków po przecinku.

SELECT FIRST_NAME,LAST_NAME, SALARY, TO_CHAR((SALARY/12),'999999.99') as "Month Salary" FROM EMPLOYEES WHERE (SALARY/12)< 1000




czwartek, 2 stycznia 2014

SQL,PL/SQL - Operatory - Oracle 10/11 cz.5

Żaden język nie może obyć się bez operatorów, dzięki którym możemy dodawać, mnożyć, odejmować  czy dzielić, ale również porównywać parametry ze sobą.
Poniżej lista dostępnych operatorów, z których możemy skorzystać podczas pracy z SQL.

1) Operatory arytmetyczne:

Najczęściej używane operatory:

1.1)  + - dodawanie,
1.2)  -  - odejmowanie,
1.3) * - mnożenie,
1.4) / - dzielenie

2) Łączenie dwóch ciągów znakowych:

Możemy połączyć dwa ciągi znakowe możemy użyć konkatenacji - ||.

3) Porównywanie zmiennych:

Zmienne możemy również ze sobą porównywać:

3.1) > - większe niż,
3.2) >= - większe lub równe niż,
3.3) = - równe,
3.4) < - mniejsze niż,
3.5) <= - mniejsze lub równe niż,
3.6) <> - wartości zmiennych są różne od siebie,
3.7) != -  wartości zmiennych są różne od siebie (brak zgodności ze standardem ISO),

środa, 1 stycznia 2014

Uwierzytelnianie użytkownika MSSQL 2008 cz.13

Tak jak w każdym systemie również dostęp do bazy danych jest ograniczony przez jakiś sposób uwierzytelnienia, czyli powiedzenia bazie że ja to faktycznie ja.
Występuje 5 sposób uwierzytelnienia się jak użytkownika w bazie danych:

1) Konto logowania MS SQL 2008,
2) Konta logowania systemu Windows,
3) Wykorzystanie grup systemu Windows,
4) Certyfikaty,
5) Klucze asymetryczne

 Konto logowania zakładane jest bezpośrednio w MS SQL w bazie master.Takie konto może być również zmapowane na konto Windows lub też grupę która występuje bezpośrednio w systemie Windows.
Mówiąc prosto jeżeli dodamy do MS SQL konto lub grupę które występują w Windows baza pozwoli na logowanie się do niej oraz dodatkowo możliwe będzie przejęcie ograniczeń nałożonych na takie konto.

Jeżeli chcemy utworzyć nowe konto bezpośrednio w MS SQL możemy użyć polecenia SQL:

CREATE LOGIN Test 
    WITH PASSWORD = 'Test';
USE AdventureWorks2012;
GO
CREATE USER AbolrousHazem FOR LOGIN AbolrousHazem;
GO