Powroty

Sun shining down

Postanowiłem sobie, że w tym roku odświężę tego bloga. Będzie mniej o programowaniu a bardziej o różnych rzeczach które na codzień chodzą mi po głowie, a których nie mam gdzie przemyśleć, zostawić i wrócić do nich. 

Nie będzie to stricte blog. Bo i nie lubię blogów. Raczej czysta intelektualna drukarka moich myśli.

Podstawy SQLAlchemy

Logo SQLAlchemyW niniejszym wpisie postaram się wyjaśnić działanie SQLAlchemy oraz pokazać jego działanie na paru bardzo prostych przykładach.
Czym jest SQLAlchemy?
SQLAlchemy jest to zespół narzędzi do pracy z bazami danych i Pythonem. Składa się on z Narzędzi SQL i Mappera Obiektowo Relacyjnego. W poniższym wpisie będę starał wytłumaczyć zasady działania Mappera Obiektowo Relacyjnego.
Czym jest Mapper Obiektowo Relacyjny(ORM– Object Relational Mapper)?
ORM jest to narzędzie pozwalające na operowanie na relacyjnych bazach danych bez większej znajomości języka SQL. Zapytania SQL do bazy tworzone są automatycznie na podstawie metod czy funkcji których się używa. Jest to bardzo wygodne narzędzie do szybkiego tworzenia bazy danych oraz jej zarządzania. SQLAlchemy jest niezależny od bazy i pozwala operawać na między innymi:
– DB2
Firebird
– Microsoft SQL Server
MySQL
– Oracle
PostgreSQL
SQLite
– Sybase ASE
Jeżeli nie masz zainstalowanego SQLAlchemy polecam instalację przez:

easy_install sqlalchemy

lub

pip install sqlalchemy

Załóżmy na początęk, że chcę stworzyć tabele Książek i Autorów.
Stwórzmy plik database.py

from sqlalchemy import Integer, Column, String, ForeignKey, Date
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import create_engine

Base = declarative_base()

class Book(Base):
    __tablename__ = 'book'

    id = Column(Integer, primary_key=True)
    title = Column(String(20))
    data_publish = Column(Date)
    def __init__(self, title, data_publish):
        self.title = title
        self.data_publish = data_publish
    def __repr__(self):
        return "Title: %s" % (self.title)

class Author(Base):
    __tablename__ = 'author'

    id = Column(Integer, primary_key=True)
    first_name = Column(String(10))
    last_name = Column(String(10))
    def __init__(self, first, last):
        self.first_name = first
        self.last_name = last
    def __repr__(self):
        return "User: %s %s " % (self.first_name, self.last_name)

def make_engine():
    engine = create_engine('sqlite:///bazka.sql')
    return engine

Stwórzmy plik create.py

from database import Base, make_engine

def create_database():
    Base.metadata.bind = make_engine()
    Base.metadata.create_all()

create_database()

I wykonaj:

python create.py

Dzięki temu utworzysz podstawową strukturę Bazy Danych w pliku bazka.sql

Teraz trochę wytłumaczenia kodu:

from sqlalchemy import Integer, Column, String, ForeignKey, Date
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import create_engine

Importujemy klasy Column oraz typów danych w bazie(Integer, String, Date, ForeignKey(obecnie jeszcze nie użyte).

Pewnie zastanawiacie się czym jest declarative_base otóż według dokumentacji jest to konstruktor klasy bazowej do definiowania reszty klas.

Base = declarative_base()

Definiowanie klasy bazowej

Tworzenie klasy Book(książek):

class Book(Base):

nazwa tabeli w bazie danych:

__tablename__ = ‘book’

I dalej deklaracje kolejnych kolumn

Pole id powinno mieć wpisane w Column poza typem, również primary_key=True aby było indeksem danej tabeli.

Utworzyłem sobie jedną pomocniczą funkcje make_engine która tworzy mi połączenie z bazą danych do jej utworzenia.

def __init__(self, first, last):

    self.first_name = first
    self.last_name = last

def __repr__(self) – funkcja ta służy do reprezentowania obiektów z bazy typu Book w pythonie.

W pliku create.py mamy

importowanie z pliku data.py Base oraz funkcji make_engine()

Funkcja create_database() binduje połączenie z bazą danych zadeklarowana w make_engine() i tworzy strukturę bazy danych. Domyślnie sprawdza czy taka struktura już istnieje, jeżeli tak to nie robi nic. Jeżeli jej nie ma to tworzy strukturę bazy danych.

Reguły Autoryzacji w DSpace

Logo DSpaceSystem autoryzacji DSpace bazuje na połączeniu(przypisywaniu) akcji do obiektów i list E-Osób które mogą je wykonywać. Połączenia(przypisywanie) nazywamy Zasobami Reguł, i listy E-Osób nazywamy Grupami. Istnieją dwie specjalne grupy: “Administratorzy“, którzy mogą robić wszystko na systemie, oraz “Anonimowi“, którzy są listą zawierającą wszystkich użytkowników. Przypisywanie reguł dla akcji na obiekcie dla anonimowego użytkownika oznacza uzyskanie przez wszystkich praw do wykonania danej akcji. (Dla przykładu, dla większości obiektów w systemie DSpace posiadają one regułę dla “anonimowych” CZYTAJ)
Możliwe są podane akcje:
  • Kolekcja
  1. DODAJ/USUŃ – dodaj lub usuń pozycję ( DODAJ = prawo do wysyłania pozycji )
  2. DOMYŚLNE_CZYTAJ_POZYCJE – dziedziczone jako CZYTAJ przez wszystkie wysłane pozycje
  3. DOMYŚLNE_CZYTAJ_DANE – dziedziczone jako CZYTAJ dla danych z wszystkich wysłanych pozycji.
  4. ADMIN_KOLEKCJI – Administratorzy Kolekcji mogą edytować pozycję w kolekcji, wycofywać pozycję, mapować inne pozycje do tej kolekcji.
  • Pozycja
  1. DODAJ/USUŃ – dodaj lub usuń
  2. CZYTAJ – może przeglądać pozycję (metadane pozycją są zawsze widoczne)
  3. ZAPISZ – może zmieniać pozycję
  • Pakiet
  1. DODAJ/USUŃ – dodaj lub usuń dane z pakietu
  • Dane
  1. CZYTAJ – przeglądaj dane
  2. ZAPISZ – modyfikuj dane
Zauważ, że nie ma akcji “SKASUJ”. W przypadku “KASOWANIA” obiektu (np. pozycji) z archiwum musisz posiadać pozwolenie na usuwanie wszystkich obiektów (w tym wypadku kolekcji) które posiadają ją. Osierocona pozycja jest automatycznie kasowana.
Reguły mogą być ustawiane indywidulanie dla E-Osób i grup E-Osób.

Wymagania DSpace

Logo DSpaceOprogramowanie DSpace jest w pełni oparte o komponenty Open Source. Pozwala to na uruchomienie DSpace na wielu przeróżnych platformach sprzętowych i systemowych. Samo oprogramowanie serwerowe DSpace zostało napisane w języku Java.  Zamieszczam osobno wymagania co do oprogramowania dla *NIX i dla systemów z rodziny Windows, gdyż posiadają nieznaczne równice.

Minimalne wymaganie DSpace dla platformy *NIX(Linux-większość dystrybucji powinna posiadać oprogramowanie poniżej, HP-UX itd.) :

  1. Sun Java JDK 5
  2. Apache Maven 2.0.8 lub nowsza wersje
  3. Apache Ant 1.7 lub nowsza wersja
  4. Relacyjna Baza Danych:
    – PostgreSQL co najmniej 7.3 lub 7.4 zalecana wersja to jednak 8.0 lub wyższa
    – Oracle co najmniej wersja 9
  5. Serwer serwletów Javy:
    – Apache Tomcat
    – Jetty
    – Caucho Resin
    – I wszystkie równorzędne
  6. Perl

Wymagania dla DSpace na platformę Windows

  1. Java SDK 1.5 lub nowsza
  2. Relacyjna Baza Danych:
    -PostgreSQL 8.0 lub nowszy
    -Oracle 9 lub nowszy
  3. Apache Ant w wersji co najmniej 1.6.2 lub nowszej
  4. Apache Tomcat 5.0 lub nowszy
  5. Apache Maven 2.0.8 lub nowszy

Podczas instalacji na platformie Windows trzeba pamiętać o ustawieniu zmiennych środowiskowych takich jak: JAVA_HOME i ustawieniu PATH do katalogu instalacyjnego [ApacheAnt]\bin

E-nyklopedia otwarta!

Logo E-ncyklopedii

W ubiegłu piątek (tj. 28.05.2010) miało miejsce otwarcie E-ncyklopedii Historii Kościoła na Górnym Śląsku czyli prawie wszystko o Archidiecezji Katowickiej.

Jako członek redakcji miałem (i nadal mam ) w tym projekcie swój skromny udział jako informatyk. Encyklopedia obecnie dochodzi do 3000 tysięcy haseł zatem ma niezwykle dużą objętość haseł napisaną przez ścisłe grono redaktorskie.

Podczas otwarcia E-ncyklopedii odbyła się konferencja naukowa na której podejmowaliśmy temat praw autorskich, szans i zagrożeń Wikipedii, Wikifikacji wiedzy oraz sharizm web 2.0. Prelegentami byli:

  1. ks. prof. Jerzy Myszor
  2. ks. dr Damian Bednarski
  3. Ewa Kustra
  4. Adrian Blondzik
  5. Mgr Krzysztof Kanclerz

Zapraszam wszystkich serdecznie do objerzenia  samego dzieła:
http://encyklo.pl/start

http://encyklo.pl/index.php

Otwarte Oprogramowanie dla Bibliotek Cyfrowych czyli… DSpace

Logo DSpace

DSpace jest platformą oprogramowania Open Source dająca możliwości do:
  • Przechwytywania i opisu materiałów w postaci cyfrowej
  • Dystrybucji treści cyfrowych które należą do organizacji, oraz ich przeszukiwania
  • Oprogramowania DSpace pozwala na stworzenie własnej Biblioteki Cyfrowej(BC) bez większego nakładu finansowego za licencje.
Dane przechowywane w DSpace mają konkretną hierarchie i strukturę. Postaram się opisać podstawowe pojęcia związane z DSpace.
Model Danych:
  1. Społeczność(Community) -> Podspołeczność(Sub-community) – Np. Zakład Filozofii Chrześcijańskiej Uniwersytetu Śląskiego
  2. Kolekcja – Np. Dzieła Tomasza z Akwinu
  3. Pozycja – Suma Teologiczna
  4. Pakiet – np. Grupa Plików HTML i Pliki obrazków itd.
  5. Dane – np pojedyńczy plik HTML, pojedyńczy obrazek itd.
  6. Format Danych – np. HTML 4.01, JPEG, GIF, PDF itd.
Obecnie DSpace obsługuje min. takie technologie i funkcjonalności jak:
  • OpenURL
  • OAI (Open Archive Initiative) protokół do zbierania metadanych. Pozwala ono między innymi na dołączenie się chociażby do Polskiej Federacji Bibliotek Cyfrowych.
  • Wsparcie dla licencji Creative Commons
  • Subskrypcje
  • Wsparcie dla digitalizacji dokumentów HTML (całych stron Web)
  • Wsparcie dla systemu CNRI Handle System [http://www.handle.net/]. Pozwala to na swobodną zmianę adresów/serwerów. Gdyż same zasoby dzięki handle.net zachowują prawidłowy link.
  • Bardzo dokładne Statystyki

Obecnie rozpocząłem tłumaczenie całego pakietu oprogramowania DSpace. Chętnie wykonam też instalacje testowe na serwerach gdyż już posiadam w nich doświadczenie.
Zainteresowanych wsparciem, pomocą, testowaniem proszę o kontakt w zakładce o tejże nazwie.