mongoDB Instalacja na Ubuntu 11.10

Dodanie 10gen do repozytoriów. Ich pakiety są zawsze świeże, czego nie można powiedzieć o pakietach Canonical dotyczących mongo.

Do etc/apt/sources.list dodać:

1
deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen

Instalacja.

1
2
3
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10
sudo apt-get update
sudo apt-get install mongodb-10gen

Uruchomienie terminala mongo.

1
  mongo --nodb

Git diff

Dobra znajomość komendy diff jest kluczem dosprawnego posługiwania się Gitem.
diff służy do określania różnic pomiędzy różnymi stanami/rewizjami repozytorium.

Domyślnie komenda użyta bez żadnych parametrów pokazuje różnicę pomiędzy ostatnią rewizją (HEAD) a zmianami, które nie znalazły się jeszcze w indeksie w plikach, które są już obecne w repozytorium. Innaczej mówiąc pokazuje zmiany wprowadzone od ostatniego komita, które NIE ZOSTANĄ zakomitowane

1
git diff

Opcja staged użyta z komendą diff całkowicie zmienia jej działanie. Teraz diff pokaże różnicę pomiędzy ostatnią rewizją (HEAD) a nowymi zmianami ustawionymi w indeksie w plikach, które są już obecne w repozytorium. Inaczej mówiąc pokazuje zmiany wprowadzone od ostatniego komita, które ZOSTANĄ zakomitowane.

1
git diff --staged

Powszechnym błędem popełnianym przez nowych użytkowników git, jest uznawanie że diff wyświetli wszystkie zmiany w stosunku do ostatniej rewizji. Należy zwrócić uwagę na 2 rzeczy:

- Jak napisano wyżej: „(…)w plikach, które są już obecne w repozytorium” oznacza to, że nowe pliki nie będą brane pod uwagę przez polecenie diff. Do odnalezienia tego typu plików służy komenda git status.
- Aby wyświetlić zmiany, które znalazły się już w indeksie konieczne jest użycie opcji staged (lub jej wcześniej używanego synonimu ‘cashed’)

Git – wycofywanie zmian.

Zmiana ostatniego komita poprzez git commit –amend

Opcja amend (ang. „zmień/popraw”) użyta przy poleceniu commit pozwala na zastąpienie ostatnio wykonanego komita nowym obecnie wykonywanym komitem.

1
git commit --amend

Jeżeli od ostatniego komita nie wprowadzono żadnych zmian to powyższe polecenie pozwoli na zmianę treści wiadomości wprowadzanej do logu.

Jeżeli od ostatniego komita wprowadzono zmiany (np. dodano lub usunięto pliki lub zmieniono treść istniejących plików) to zmiany te „zleją się” z tymi, które zostały wprowadzone przez ostatni komit. W rezultacie ostatni i obecny komit (ten z opcją amend) staną się jednym.

1
2
3
4
5
6
7
8
9
10
11
mkdir testrepo
cd testrepo
git init

touch jeden.txt
git add jeden.txt
git commit -m 'pierwszy plik'

touch dwa.txt
git add dwa.txt
git commit --amend -m 'pierwszy i drugi plik'

Polecenie git log potwierdzi, że historia repozytorium zawiera jedynie komit z adnotacją ‘pierwszy i drugi plik’ w którym wprowadzono dwa pliki jeden.txt i dwa.txt.

Wycofywanie plików z indeksu (ze stanu staged na unstaged)

Przygotowując repozytorium do nowego komita wstawiamy (ang. „stage”) nowe pliki do indeksu. Zdarza się. że wstawimy do indeksu gita więcej plików niż chcieli byśmy zakomitować. Do wycofania pliku z indeksu służy komenda: git reset HEAD

1
2
3
4
5
6
7
8
mkdir testrepo
cd testrepo
git init

touch jeden.txt
git add jeden.txt

git reset HEAD jeden.txt

Polecenie git status potwierdzi, że w indeks repozytorium jest pusty. Warto zauważyć, że polecenie status wydane na indeksie z nowo wprowadzonymi plikami, które nie są jeszcze obecne w indeksie podpowiada wyżej opisaną komendę. Można to zbadać wydając w naszym przykładzie polecenie git status zaraz po git add jeden.txt.

Powrót do stanu z ostatniego komita

Aby powrócić do stanu w którym pliki znajdowały się w ostatnim komicie można posłużyć się poleceniem checkout.

1
2
3
4
5
6
7
8
9
mkdir testrepo
cd testrepo
git init

touch jeden.txt
git add jeden.txt
git commit -m 'pierwszy plik'
echo 'tekst' > jeden.txt
git checkout jeden.txt

Polecenie git status potwierdzi, brak zmodyfikowanych plików w repozytorium. Git checkout pobiera stan pliku z ostatniej rewizji (HEAD) co oznacza że nie da się odtworzyć przy jego pomocy stanu plików, które w danej rewizji nie istniały, czyli takich, które nie zostały nigdy zakomitowane.

Źródła:
1. http://progit.org

Wyłączanie touchpad dla ubuntu 11.04 przy podłączaniu myszy

1. Otwieramy terminal i wpisujemy komendy

1
2
3
  sudo add-apt-repository ppa:atareao/atareao
  sudo apt-get update
  sudo apt-get install touchpad-indicator

Po udanej instalacji należy otworzyć (np. poprzez „Panel główny”) aplikację Touchpad Indicator Posiada ona opcję „Wyłącz touchpad kiedy myszka jest podłączona” a także inne opcje do sterowania aktywnością touchpada. Touchpad Indicator jest odtąd dostępny w górnym pasku.

Domyślnie wyłączenie/włączenie touchpada uzyskujemy poprzez skrót klawiszowy „CTRL + SHIFT + C”

PostgreSQL 9.1 na ubuntu 11.10. pgAdminIII phpPgAdmin. Instalacja i podstawy.

PostgreSql

PostgreSql

Instalacja PostgreSQL

Instalacja z konsoli:

1
sudo apt-get install postgresql

Logowanie z konsoli

Aby zalogować się do konsoli administracyjnej serwera PostgreSQL należy użyć polecenia:

1
sudo -u postgres psql

Gdzie:
‘sudo -u postgres’ – przełącza na użytkownika systemowego postgres.
‘psql’ – jest wywołaniem konsoli administracyjnej serwera PosrgreSQL.

Podczas instalacji PostgreSQL użytkownik postgres jest automatycznie dodawany do systemu, przez polecenia inicjalizowane z pakietów instalacyjnych. Aby dostać się do konsoli nowo zainstalowanego serwera PostgreSQL konieczne jest więc zmiana użytkownika systemowego, łączącego się z tym serwerem na użytkownika postgres.

Domyślne dane dostępowe dla nowo zainstalowanego systemu to:

  • user: postgres
  • password: (blank)

Dalej przedstawiony zostanie opis zmiany hasła dla użytkownika postgres. Pozostawienie pustego hasła jest złym rozwiązaniem także na instalacjach testowych/developerskich.

Nowo zainstalowany PostgreSQL pozwala na dostęp poprzez konsole, aby administrować serwerem przy pomocy narzędzi zewnętrznych takich jak phpPgAdmin czy pgAdminIII konieczne będą małe akrobacje opisane w ‘Ustawienie dostępu dla nowo zainstalowanego serwera’

Zarządzanie stanem serwera

Zarządzanie stanami serwera odbywa się porzez polecenie:

1
sudo service postgresql

Niektóre zmiany w ustawieniach serwera wymagają przeładowania jego konfiguracji poprzez opcję reload.

1
sudo service postgresql reload

Aby wyłączyć serwer możemy użyć opcji stop

1
sudo service postgresql stop

Aby uruchomić serwer używamy opcji start

1
sudo service postgresql start

Restart jest jednoznaczny z wyłączeniem i włączeniem serwera

1
sudo service postgresql restart

Ustawienie dostępu dla nowo zainstalowanego serwera

1. Przejście do terminala i uruchomienie psql:

1
:~$ sudo su postgres psql

Pojawia się znak zachęty psql:

1
postgres=#

2. Zmiana/Ustawienie hasła dla użytkownika:

1
# ALTER USER postgres WITH ENCRYPTED PASSWORD 'postgres';

Istotne jest aby każde polecenie kończyć średnikiem. Samo użycie enter/return powoduje jedynie przejście do nowej linii i kontynuacje polecenia.

‘postgres’ to identyfikator domyślnego użytkownika z uprawnieniami administratora.
Domyślnie użytkownik ten nie posiada hasła. Zalecane jest więc nadanie mu hasła jak najszybciej po instalacji.
Powyższy przykład ustawia hasło, które jest identyczne z identyfikatorem użytkownika, co oczywiście w realnych zastosowaniach nie jest dobrym pomysłem.

4. Utworzenie nowej bazy danych:

1
# CREATE DATABASE lesson1;

‘lesson1′ jest tutaj identyfikatorem nowo tworzonej bazy danych. Podczas wyboru identyfikatora bazy danych należy unikać słów kluczowych związanych ze standardem SQL czy słów specjalnych dla serwera PostgreSQL. Dobra nazwa bazy może być związana z domeną, lub też powinna jak najlepiej oddawać to co sobą reprezentuje i nie należy obawiać się długich nazw.

5. Utworzenie nowego użytkownika:

1
# CREATE USER dbuser WITH ENCRYPTED PASSWORD 'dbpass';

*dbuser to identyfikator nowo utworzonego użytkownika.
*dbpass to hasło

6. Przydzielenie wszystkich przywilejów dla użytkownika w ramach określonej bazy:

1
# GRANT ALL PRIVILEGES ON DATABASE lesson1 TO dbuser;

*ALL – oznacza wszystkie możliwe przywileje. Klauzule ta można zamienić na wybrane przywileje według dokumentacji.
*lesson1 – identyfikator bazy danych
*dbuser – identyfikator użytkownika

Pliki dostępowe dla PostgreSQL

Pliki konfiguracyjne PostgreSQL znajdują się w katalogu:

1
/etc/postgresql/9.1/main/

Przy ustawieniach dostępu do serwera na szczególną uwagę zasługuje plik:

1
/etc/postgresql/9.1/main/pg_hba.conf

Zawiera on dość dobry opis z którym warto się zapoznać. Treści zaczynające się do znaków # są komentarzami nie mającymi wpływu na działanie serwera. Końcówka pliku zawiera klauzule ustawiające dostęp.

Przykładowo fragment pliku:

1
2
# IPv4 local connections:
host all all 127.0.0.1/32 md5

Oznacza, że w przypadku wszystkich prób dostępu do serwera za pomocą interfejsu sieciowego, po adresie 127.0.0.1 serwer będzie dostarczane hasła przetwarzał funkcją haszującą md5. Odpowiada to wcześniej użytym komendom:

1
[CREATE/UDPATE] USER dbuser WITH ENCRYPTED PASSWORD 'dbpass';

Gdzie ENCRYPTED odnosi się właśnie do metody hashującej md5. Także ustawienie hasła bez opcji encrypted w sytuacji kiedy autoryzacja dla danego przypadku ustawiona jest na md5 spowoduje, błędy podczas prób logowania. Jest to dość pospolity problem z którym zmagają się  początkujący użytkownicy PostgreSQL.

Także komendy użyte podczas prac administracyjnych jak dodawanie użytkowników muszą uwzględniać ustawienia dostępu dla serwera zawarte w pg_hba.conf.

Klauzule dostępu w pliku pg_hba.conf mogą być rozbudowywane/zmieniane w miarę pojawiania się nowych użytkowników o różnych ustawieniach dostępu do serwera.

Instalacja pgAdmin3

Instalacja z konsoli:

1
sudo apt-get install pgadmin3

pgAdmin3 jest aplikacją okienkową także jego instalacja wymaga serwera okien, który jest domyślnie dostępny w każdej instalacji ubuntu.

Po uruchomieniu programu należy wybrać opcję „Zdefiniuj połączenie dla serwera” i uzupełnić dane połączenia zgodnie z wcześniej ustawionymi identyfikatorami użytkownika, bazy danych i hasłem.

Instalacja phpPgAdmin

Instalacja z konsoli:

1
sudo apt-get install phppgadmin

phpPgAdmin jest programem działającym pod przeglądarką internetową także do jego uruchomienia potrzebny jest serwer ww oraz interpreter języka PHP.

Apache2:

1
2
sudo apt-get install apache2
sudo vim /etc/apache2 httpd.conf

umieszczamy:

1
ServerName: localhost

i uaktualniamy konfigurację dla serwera:

1
sudo /etc/init.d/apache2 reload

PHP:

1
sudo apt-get install php5

Program jest teraz dostępny pod domeną: http://localhost/phppgadmin/

phpPgAdmin domyślnie nie pozwala na logowanie się użytkownikom nie posiadającym hasła. Także użytkownik ‘postgres’ oraz inni użytkownicy, których identyfikatory (pgsql, postgres, root, administrator) wskazują na to, że są użytkownikami administracyjnymi, nie będą mogli się zalogować.

Konfigurację tego ograniczenia znaleźć można w pliku:

/etc/phppgadmin/config.inc.php

Przestawienie opcji:

1
$conf['extra_login_security'] = true;

rozwiąże problem z dostępem. Oczywiście jest to rozwiązanie dobre dla serwerów testowych/developerskich i ze względów bezpieczeństwa nie dopuszczalne dla serwerów produkcyjnych.

Załadowanie bazy zrzuconej uprzednio do pliku

1
sudo -u postgres psql -U postgres -d dbname -f schema.sql

gdzie:

postgres – urzytkownik systemowy

postgres –  urzytkownik PostgreSQL

dbname – nazwa bazy

schema.sql – plik ze schematem bazy

psql

Wybrane opcje linii poleceń psql (używane podczas uruchamiania programu):

      - U – Ustawia Użytkownika bazy danych (domyślnie: $PGUSER lub aktualnie zalogowany użytkownik systemu)

Wybrane komendy wewnętrzne psql (używane z poziomu programu):

      \c – Lista wszystkich komend
      \q – Wyjście
      \set – Ustawia zmienną wewnętrzną serwera
      \unset – Resetuje zmienną wewnętrzną serwera
      \h [komenda] – Wyświetla pomoc (dokładny opis) dla wybranej komendy
      \c[onnect] [bazwa|- [użytkownik]] – Łączy do nowej bazy danych
      \l – Lista baz danych
      \dn – Lista schematów
      \encoding – Ustawia kodowanie (UTF8 jest tym co tygrysy lubią najbardziej)

Wybrane polecenia SQL

Wylistowanie użytkowników bazy

1
select * from pg_shadow;

lub

1
select * from pg_user;

polecenia mogą przekierowywać wyjście na edytor vim. W takim wypadku należy wpisać :q i zatwierdzić poprzez enter.

DateTime w php 5.3

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$date1 = new DateTime('2010-11-11 12:22:02');
$date2 = new DateTime('2000-01-01 01:35:22');

$diff = date_diff($date1, $date2);

echo 'years: ' . $diff->y;
echo 'months:' . $diff->m;
echo 'days:' . $diff->d;
echo 'houres:' . $diff->h;
echo 'minutes:' . $diff->i;
echo 'seconds:' . $diff->s;
echo 'inverted:' . $diff->invert;

echo 'period rounded to days:' . $diff->days;
1
years: 10months:10days:10houres:10minutes:46seconds:40inverted:1period rounded to days:3967

Muzeum Techniki Siemens-Nixdorf w Paderborn.

Wszystkim, którzy będą w Niemczech pobliżu Paderborn, w landzie Nadrenia Północna-Westfalia polecam wizytę w tamtejszym muzeum techniki. Miałem okazję spędzić w nim parę godzin w lipcu 2010 i pewnie wybiorę się ponownie, bo chociaż nie jest to  duża placówka to zagęszczenie eksponatów robi spore wrażenie. Każde z pięter budynku podzielone jest tematycznie na epokę tak, że pierwsze piętro reprezentuje eksponaty z przełomu 18/19 wieku, a w miarę przechodzenia w górę znajdujemy rzeczy coraz bardziej współczesne a więc i znajome. Obrazy warte są więcej niż słowa…

Strona muzeum: http://en.hnf.de/

Muzeum

Budynek muzeum widziany od frontu.

Pierwsze piętro

Pierwsze piętro.

Gramofon

Gramofon, a włąściwie urządzenie które poprzedzało gramofon.

Skaner

Pierwsze systemy do odczytów kodów kreskowych kosztowały majątek.

Słynny w swoim czasie japoński robot.

Japoński robot.

Cudo jak od jubilera...

Takiego cuda nie znajdziecie w Cepeli :) Wyleciało mi z głowy do czego to służyło, może któryś z Was podpowie?

Enigma.

Orginalny egzemplarz Enigmy, używany podczas II Wojny Światowej przez III Rzeszę.

Wersja handlowa Enigmy

Miałem okazję zakodować swoje imię i nazwisko. Ta wersja Enigmy pozstała długo po wojnie, była budowana na licencji przez szwajcarów i eksporotwana głównie do państw arabskich, nieświadomych faktu że nabywają dawno złamaną technologię.

Sieć telegrafów na terenach niemieckich

Jak się okazuje Szczecin bardzo szybko został podłączony do sieci telegraficznej.

Lampa elektronowa z początku zeszłego wieku

Lampa elektronowa.

Centrala telefoniczna

Centrala telefoniczna z lat 50 XX wieku. Wciąż na chodzie, i udostępnione są 2 aparaty z których można dzwonić.