środa, 15 lipca 2009

XPath

public static void main(String[] args) throws XPathExpressionException, ParserConfigurationException, SAXException, IOException {
xmlParser app = new xmlParser();
//app.parse();

app.findBooksGenreRomance();

}

private void findBooksGenreRomance() throws ParserConfigurationException,
SAXException, IOException, XPathExpressionException {

DocumentBuilderFactory domFactory = DocumentBuilderFactory
.newInstance();
domFactory.setNamespaceAware(true);
DocumentBuilder builder = domFactory.newDocumentBuilder();
Document doc = builder.parse("books.xml");

XPathFactory factory = XPathFactory.newInstance();
XPath xpath = factory.newXPath();
XPathExpression expr1 = xpath.compile("//book[genre='Romance']");

Object result1 = expr1.evaluate(doc, XPathConstants.NODESET);
NodeList nodes1 = (NodeList) result1;

for (int i = 1; i < nodes1.getLength()+1; i++) {
System.out.println("Book " + i + ":");

XPathExpression expr = xpath.compile("//book[genre='Romance']["+i+"]/*/text()");

Object result = expr.evaluate(doc, XPathConstants.NODESET);
NodeList nodes = (NodeList) result;
for (int x = 0; x < nodes.getLength(); x++) {
System.out.println(nodes.item(x).getNodeValue());
}

System.out.println("##########################################");
}

}

wtorek, 14 lipca 2009

Modyfikacja Oli

public static void main(String[] args) {
System.setSecurityManager( new RMISecurityManager() );
try {
RMIInterface r = (RMIInterface)Naming.lookup ("rmi://10.10.0.131/ServiceName");
r.setInfo("Test");
String s = r.getInfo();
while(true)
{
Thread.sleep(200);
String s2 = r.getInfo();

if(s2 != null && !s2.equals(s))
{
System.out.println("Current info: " + r.getInfo());
s = r.getInfo();
}
}
} catch(Exception e) { e.printStackTrace(); }
}

Innowacja :P do klasy Client (tylko fragment bloku try)

try {
RMIInterface r = (RMIInterface) Naming.lookup("rmi://10.10.0.131/ServiceName");
System.out.println("Current info: " + r.getInfo());
String s = r.getInfo();
while(true)
{
Thread.sleep(200);

if (!s.equals(r.getInfo()))
{

System.out.println("Current info: " + r.getInfo());
s = r.getInfo();
}
}
}

poniedziałek, 6 lipca 2009

Zintegrowane Systemy Informatyczne:

MRP (Material Requirements Planning)
-zarządzanie magazynem
-minimalizowanie kosztów produkcji
-kontrola wykorzystania zapasów

MRP II(Manufacturing Resource Planning)
-planowanie działalności
-harmonogramowanie produkcji
-planowanie zapotrzebowania materiałowego
-planowanie zapotrzebowania potencjału
-sterowanie produkcją

ERP(Enterprise Resource Planning)
MRP II + zasięg wielofabrykatowy

ERP II(Enterprise Resource Planning Internet Integration)
ERP + CRM + www + sklepy internetowe

piątek, 3 lipca 2009

Dzień 5 programy

Archiwum

Obrotowy samochód

public Point[] GetCarBoundaries()
{
Point[] corners=new Point[4];
//
//
// nar2************nar1
// * *
// * loc *--------- 0 rad
// * *
// nar3************nar4

double d=Math.Sqrt(Math.Pow(0.5*this.carSize.Width,2.0)+Math.Pow(0.5*this.carSize.Height,2));
double katOdchyleniaNaroznika = Math.Asin(0.5*this.carSize.Width/d);

corners[0].X = (int)( Math.Cos(this.AxisDirection / 180 * Math.PI + katOdchyleniaNaroznika) * d + this.carLocation.longitude);
corners[0].Y = (int)( Math.Sin(this.AxisDirection / 180 * Math.PI + katOdchyleniaNaroznika) * d + this.carLocation.latitude);

corners[1].X = (int)( -(Math.Cos(this.AxisDirection / 180 * Math.PI - katOdchyleniaNaroznika) * d) + this.carLocation.longitude);
corners[1].Y = (int)( -(Math.Sin(this.AxisDirection / 180 * Math.PI - katOdchyleniaNaroznika) * d) + this.carLocation.latitude);

corners[2].X = (int)( -(Math.Cos(this.AxisDirection / 180 * Math.PI + katOdchyleniaNaroznika) * d) + this.carLocation.longitude);
corners[2].Y = (int)( -(Math.Sin(this.AxisDirection / 180 * Math.PI + katOdchyleniaNaroznika) * d) + this.carLocation.latitude);

corners[3].X = (int)( Math.Cos(this.AxisDirection / 180 * Math.PI - katOdchyleniaNaroznika) * d + this.carLocation.longitude);
corners[3].Y = (int)( (Math.Sin(this.AxisDirection / 180 * Math.PI - katOdchyleniaNaroznika) * d) + this.carLocation.latitude);

return corners;
}

Dzień 5

Delegaty
podejscie do programowania w formie interfejsu graficznego-> Systemy sterowane zdarzeniowo(gdzie zdarzeniem moze byc np. klikniecie myszka, przesuniecie kursora, przytrzymanie klawisza)

Zeby system mogl sie skomunikowac z programem musi znac wskaznik(czyli delegat) do funkcji ktora ma uruchomic (zasada callback)

czwartek, 2 lipca 2009

Dzień 4

Projekty dzień 4
Projekt Grafy
Graphviz
Quickgraph

Kolekcje

static void Main(string[] args)
{
Kolor czarny;
czarny.Red=0;
czarny.Green=0;
czarny.Blue=0;
czarny.Transparency=0;

//ArrayList
ArrayList lista = new ArrayList();
lista.Add(new Point(10, 1));
lista.Add(new Point(3, 4));
lista.Add(new Triangle(czarny,czarny,"t1",3,4,5));

Console.WriteLine("Pojemność={0}",lista.Capacity);

Console.WriteLine("Liczba elementów={0}",lista.Count);

Console.WriteLine(lista[2]);
Wypisz(lista);

//QUeue
Console.WriteLine("kolejka");
Queue kolejka = new Queue(lista);
kolejka.Enqueue(new Rectangle(czarny, czarny, "r1", 1, 123));
kolejka.Dequeue();

Wypisz(kolejka);
//Stack
Console.WriteLine("stos");
Stack stos = new Stack(kolejka);
Wypisz(stos);

stos.Push(new Triangle(czarny,czarny,"na górze trójkąt",5,6,7));
Console.WriteLine("stos z nowym elementem");
Wypisz(stos);

stos.Pop();
Console.WriteLine("stos po zdjęciu elementu");
Wypisz(stos);

//Hashtable
Console.WriteLine("hashtable");
Hashtable htab = new Hashtable();
htab.Add(lista[0].GetHashCode(), lista[0]);
htab.Add(lista[1].GetHashCode(), lista[1]);
htab.Add(lista[2].GetHashCode(), lista[2]);

Wypisz(htab);
}

private static void Wypisz(ICollection kolekcja)
{
foreach (Object o in kolekcja)
{
Console.WriteLine(o.ToString());
}
}

Programy z dnia 3

Archiwum z dnia 3

Dzień 4

Dziedziczenie i polimorfizm.

Dziedziczenie:
Stworzenie klasy potomnej i określenie kto jest jej rodzicem
W c# można zabezpieczyć klasę przed dziedziczeniem używając polecenia sealed

Polimorfizm:
Wielopostaciowość - wielopostaciowe są klasy i obiekty.
Przysłanianie metod - override

Metoda abstrakcyjna to taka, która nie ma ciała.

Interfejs:
Klasa, która zawiera wyłącznie metody abstrakcyjne. Definiuje tylko nazwy metod.
Porządkuje klasy
Możemy implementować wiele interfejsów w jednej klasie.

Rzutowanie:
Tymczasowa zmiana typu zmiennej lub obiektu.


Obsługa wyjątków.
Wyjątki systemowe i Aplikacyjne.
  • Systemowe - nie wymaga obsłużenia.
  • Aplikacyjne - muszą zostać obsłużone, wymaga tego kompilator


Klasy wewnętrzne:
Mają dostęp do wszystkich składowych klasy zewnętrznej w stosunku o niej.
Są wykorzystywane do obsługi zdarzeń.

Garbage collector :
Przegląda pamięć w poszukiwaniu el. do usunięcia i je usuwa. Pamięć staje się ponownie dostępna. Ogranicza zużywanie rzadkich zasobów sieciowych.
Dwie metody: finalize, dispose (uruchamiana ręcznie).
Rzadkie zasoby systemowe - np. połączenia sieciowe, otwarte pliki.

Kolekcje:
Typy kolekcji:
  • Kolejka (FIFO)
  • Lista (Rozmiar to max. dostępnej pamięci operacyjnej włącznie z plikiem wymiany)
  • Stos (LIFO)
  • Słownik (Hashtable) - Przechowuje pary "klucz-wartość" Pozwala na szybkie dostanie się do obiektu, oszczędzając dostępne zasoby. Klucz jedno znacznie identyfikuje obiekt.

Typy generyczne:
Pozwalają określić jakiego typu obiekty są składowane w kolekcjach.

Tworzenie grafu dla programu Graphviz przy użyciu biblioteki QuickGraph

Aby program nie interpretował danego łańcucha znaków wstawiamy symbol "@"

Tworzenie gry - jazda samochodem między przeszkodami.

środa, 1 lipca 2009

Skręcanie w Lewo i Prawo -.-

public void TurnLeft()
{
if (speed > 0.0)
{
if (AxisDirection == 360)
{
AxisDirection = 0;
AxisDirection = AxisDirection + 10;
}
else
{
AxisDirection = AxisDirection + 10;
}
}
}

public void TurnRight()
{
if (speed > 0.0)
{
if (AxisDirection == 0)
{
AxisDirection = 360;
AxisDirection = AxisDirection - 10;
}
else { AxisDirection = AxisDirection - 10; }
}
}

Do czytania

http://pl.wikipedia.org/wiki/Sortowanie_topologiczne

http://pl.wikipedia.org/wiki/Skierowany_graf_acykliczny

http://pl.wikipedia.org/wiki/Graf_skierowany

http://pl.wikipedia.org/wiki/Graf_(matematyka)

DZIEŃ 3.

Operatory logiczne w C#


i  -  &&
lub  -  ||
różne  -  !



Programowanie strukturalne a obiektowe


 
Programowanie strukturalne:
  • ciąg instrukcji, tworzących pewną strukturę

  • struktury tworzone są na stosie

Programowanie obiektowe:
  • program to już nie jest struktura poleceń a zbiór obiektów, wchodzących między sobą w interakcję

  • występują obiekty i klasy*

  • obiekty tworzone na stercie (ciągłej przestrzeni pamięci dostępnej w programie)

  • na obiektach można wykonywać operacje

Filary programowania obiektowego
  • hermetyzacja

  • dziedziczenie

  • polimorfizm

*klasa - pewien wzorzec tego, jak będą wyglądać poszczególne obiekty


[ Ćwiczenia z programowania obiektowego ]


Podsumowanie dnia 2 - projekty

Archiwum projektów z dnia 2

wtorek, 30 czerwca 2009

ildasm - przegladanie programu z perspektywy assemblera
Typy danych w .NET FrameWork:

http://msdn.microsoft.com/pl-pl/netframework/cc511286.aspx
DZIEN 2 :
C++ -
skupienie sie na sprzęcie
Visual Basic- odsuniecie sie od sprzetu

Microsoft:
pomysl 1:

Pomysl 2:
- stworzenie kilku języków programowania jak np. C#, .NETFramework

WinApi- zbiór kilkuset funkcji których komupter pozwala nam używać. W bibliotece windows.h zdefiniowane są funkcje.
przykład: ShowWindow, DestroyWindow

Java - pojawienie się wirtualnej maszyny i dzięki niej zarządzanie pamięcią
COM - aplikacja opierająca się na komponentach np. kontrolka kalendarza



poniedziałek, 29 czerwca 2009

DZIEŃ 1

1. Ogólny zarys praktyk

2. TortoiseSVN - System kontroli wersji
Nieoceniony przy prowadzeniu wszelkiego rodzaju projektów (c++, delphi, www, php) gdy pracujemy w grupie. Umożliwia połączenie się z repozytorium (musimy mieć skonfigurowany serwer) i wrzucenie aktualizacji naniesionych przez nas w projekcie lub pobranie aktualizacji z repozytorium dokonanych przez innych programistów.

3. LaTeX
Oprogramowanie do zautomatyzowanego składu tekstu, a także związany z nim język znaczników, służący do formatowania dokumentów tekstowych i tekstowo-graficznych (na przykład: broszur, artykułów, książek, plakatów, a nawet stron HTML).

4.JabRef
Program służący do tworzenia bibliografii. Umożliwia w łatwy i szybki sposób przeniesienia jej do naszej pracy pisanej w LaTeX-ie


Programy:

  1. TortoiseSVN
  2. LaTeX Ediotr
  3. JabRef
  4. MiKTeX 2.7



Wacek jest gruby!

Elo elo 3 2 0