oskarj.wordpress.com blog

czerwiec 16, 2008

Jak w kodzie dodać kontrolki w .NET 3.5 (WPF) ?

Kategoria wpisu: Academic, Kod — oskarj @ 7:01 pm
Tags:

Jak w kodzie dodać kontrolki w .NET 3.5 (WPF) ?

W pracy dyplomowej mam funkcjonalność do zaimplementowania – mapa stolików w restauracji. Na mapie stolików wykonanej w AutoCAD nakładam przyciski, więc wczytuje z pliku XML położenia moich stolików na mapie bitowej (wysokość i szerokość w pikselach), po czym właśnie w tym miejscu dodaję nową kontrolkę – button, posiadającą handler dla Click.

foreach (Seat seat in seats)

{

System.Windows.Controls.Button button = new Button();

button.Content = seat.Sala + “-” + seat.Stolik;

//ustawienie pozycji przycisku

button.Width = 40;

button.Height = 40;

Thickness thick = new Thickness();

thick.Left = seat.Width + 160;

thick.Top = seat.Height + 20;

thick.Right = 0;

thick.Bottom = 0;

button.Margin = thick;

// ulozenie

button.HorizontalAlignment = HorizontalAlignment.Left;

button.VerticalAlignment = VerticalAlignment.Top;

// przypisanie akcji przyciskowi

button.Click += new RoutedEventHandler(newButt_Click);

// koloryzacja

button.IsEnabled = false;

button.Background = buttonBrushes[2];

// dodanie do layoutu

{… implementacja …}

if (seat.Sala == Image.selected + 1) LayoutRoot.Children.Add(button);

}

}

private void newButt_Click(object sender, RoutedEventArgs e)

{

Button button = (Button)sender;

if (button.Background.Equals(buttonBrushes[3]))

{

// odzaznaczenie rezerwacji w przypadku edycji

}

{…kod implementacji…}

}

Polecam lekturę:

http://arcanecode.wordpress.com/2007/09/07/adding-wpf-controls-progrrammatically/

kwiecień 13, 2008

Milionerzy ?

Kategoria wpisu: 1, Recenzja, przemyślenia — oskarj @ 2:14 pm
Tags:

Pewnie każdy z nas od czasu ogląda ten tvn-owski teleturniej, ale nie wie dokładnie, jak wygląda proces eliminacji. Należy wysłać dokładnie 3 smsy na numer 7244, z czego pierwszy jest tylko zgłoszeniowy, dwa następne to twoje odpowiedzi na pytania z bazy danych pytań, a wygląda ona następująco:

1. Blues narodził się w:
B) Ameryce Północnej

2. Czy słodka włóknista masa z nasion oleistych i karmelu to:
C) chałwa

3. Słynny 24-godzinny wyścig samochodowy odbywa się we Francji w
C) Le Mans

4. Czy łacińska maksyma chwytaj dzień to w oryginale
A) carpe diem

5. Marszałkiem pierwszego sejmu III RP zwanego kontraktowym był
C) Kozakiewicz

6. Przechodzenie ciała stałego w stan lotny bez topnienia to
B) sublimacja

Jeżeli jesteś w pierwszej setce osób, które odpowiedziały najszybciej (dlatego najlepiej wysyłać odpowiedzi z komputera poprzez PC-Suite), to w przeciągu miesiąca do trzech miesięcy zadzwoni do ciebie konsultant, po czym wypyta o dane osobowe, zainteresowania i zada od siedmiu do dwudziestu pytań.. i teraz nie ma wariantów abc, tylko musisz znać odpowiedź ;P Finalnie zaproszenie do studia w Krakowie. Ja na razie czekam aż ktoś oddzwoni ;P. Może będę miał równie łatwe pytania jak te, które zostały zadane przy głównej wygranej.

marzec 30, 2008

No i jestem..

Kategoria wpisu: 1, Academic, project management — oskarj @ 4:00 pm

po kolejnym wdrożeniu. Zainstalowałem serwer IIS u klienta na systemie Win XP (a czemu nie :)) ), dołączyłem webaplikację w aspach za pomocą konsoli mmc i odpowiedniej przystawki. Za pierwszym razem nie zadziałało, dostałem komunikat iż nie mam dostępu do metadanych IIS. Spowodowane to było złą kolejnością instalacji, najpierw należy instalować IIS, dopiero potem .NET framework 2.0 . Opcja repair w intalatorze .net frameworka pomogła poradzić sobie z tym problemem. Następnie konfiguracja wyjątków w firewallu, otwarcie portu 80, i wszystko hula w całej sieci.

Teraz powoli rozkręcam z innymi studentami projekt za pomocą metodyki PRINCE 2 na warsztaty z Project Management. Miałem przyjemność uczestniczyć w wykładzie dr. Kosieradzkiego (firma P2Ware , oprogramowanie Product Base Planner) i wszystko powoli staje się jasne na temat procesu planowania. Może dojdzie do realizacji pewnego portalu internetowego w Polsce o tematyce…. , kto wie :)

marzec 20, 2008

bez ładu, bez składu

Kategoria wpisu: 1, historia podróży, przemyślenia — oskarj @ 1:43 pm

Jako że według mojej Almy Mater mam teraz wolne, postanowiłem coś dopisać ;)

Ostatnie dni mijały w różnoraki sposób, zabawa przeplatana z próbą podejmowania różnych prac. Nauka jazdy na snowboardzie w Österreich. Wizyta w Poznaniu, domóweczka, klub „Stare kino”, ciekawy powrót na osiedle Piastowskie. Odpoczynek, po czym kierunek - Warszawa. Zwiedzanie Nowego Świata, kawiarnie, rozmowy. Prezenty urodzinowe.

Inne pozytywne aspekty: nowe zlecenia, nowe doświadczenia.

Pracowałem nad systemem który pomaga firmom zarządzać procesami, czyli usuwać, dodawać, śledzić zmiany, przypisywać osoby odpowiedzialne itp.

Połączenie z bazą danych mySQL po wielu bojach ustanowione za pomocą sterownika ODBC Connector, i to w poprzedniej wersji, bo 3.51.
Na Microsoft Server skonfigurowałem połączenie z poziomu narzędzia dostępnego w ‘Administrative Tools’, ustawiłem port, hasło do roota oraz kodowanie UTF-8
Co ciekawsze, podczas pisania web aplikacji w Visual Studio 2008 (naturalnie język C# która powala na kolana swoją składnia takiego VBasica czy tez C++) byłem zmuszony używać obiektów klasy OdbcConnection zamiast np. SQLConnection. Wynik ten sam, kilka linijek kodu umożliwiło mi wygodne wysyłanie poleceń SQL. Zupełne inne podejście spowodowane chociażby tym, że nazwy tabel w nawiasach kwadratowych zostaną zignorowane, z tego właśnie powodu trzeba każdy GridView ręcznie oprogramować instrukcjami SQL.

Środowisko akademickie.

Wiele rzeczy, które mi się podoba. Legitymacja studencka, w której mam kodowane bilety do komunikacji miejskiej (czemu wiele uczelni wciąż z tym zwleka??), brak indeksów (choć podobno są też minusy tego), rozbudowany system obsługi studenta – USOS (na który wszyscy psioczymy, ale prawdą jest to, że lepszy produkt chyba nie istnieje), w którym miło jest ujrzeć wpisaną ocenę 5! (z wykrzyknikiem)

Darmowy ‘Wall Street Journal’, ‘Żółte strony’, ‘Parkiet’ na Wydziale Zarządzania UW. Jedyny minus to brak sieci WLAN. Kto ze mną przebuduje strukturę sieciową? Bierzemy zlecenie? ;)

styczeń 7, 2008

Podróże, małe i duże

Kategoria wpisu: 1, google, historia podróży, ligthstalkers, maps, podróże, travel — oskarj @ 12:25 przed południem

Pochłonięty lekturą www.tokyobynight.pl (szykowałem prezentację o Japonii na angielski na UW) natrafiłem na odsyłacz do rewelacyjnego serwisu “lightstalkers”, w którym można między innymi stworzyć własną mapkę z dokonanych podróży, za pomocą mechanizmu google maps.

Przykładowo wygląda to tak

mapka podróży

Serwis posiada jeszcze wiele innych ciekawych funkcji których nie zdążyłem odkryć.

Tymczasem dziękuję za liczbę odwiedziń bliską 2.000, przede mną ciężki styczeń zaliczeń, po którym nadejdą zasłużone ferie (mam nadzieje, że śnieżne! …ale tylko w górach ;-)) ).

wrzesień 22, 2007

Digital Fortress – Dan Brown się pomylił

Kategoria wpisu: Dan Brown, Kryptografia, Recenzja — oskarj @ 5:57 pm

Z chęci przeczytania jakiejś lektury na zakończenie wakacji zdecydowałem się na wydanie anglojęzyczne. W Empiku dorwałem „Cyfrową twierdzę” (tak to się tłumaczy?) Dan Browna w cenie 35zł, minus zniżka z Euro26. Ale to nieistotne. Tłem w tej lekturze są komputery i kryptografia, i choć w tej drugiej dziedzinie nie jestem ekspertem, zauważyłem wiele drażniących nieścisłości, które moim zdaniem, potrafią zepsuć odbiór książki.

Autor wynalazł parę rzeczy, szczególnie w dziedzinie matematyki oraz informatyki, które tak naprawdę nie istnieją. Co najlepsze, wg. Browna, dwóch eks-agentów NSA pomagało współtworzyć utwór „Digital Fortress”, co wydaję się trochę śmieszne.

Ostrzeżenie: poniżej szczegóły fabuły.

“The notion of a rotating cleartext function was first put forth in an obscure, 1987 paper by a Hungarian mathematician, Josef Harne. Because brute-force computers broke codes by examining cleartext for identifiable word patterns, Harne proposed an encryption algorithm that, in addition to encrypting, shifted decrypted cleartext over a time variant. In theory, the perpetual mutation would ensure that the attacking computer would never locate recognisable word patterns and thus never know when it had found the proper key. The concept was somewhat like the idea of colonising Mars—fathomable on an intellectual level, but, at present, well beyond human ability.”

O ile wspomniany matematyk – Josef Harne – tak naprawdę nie istniał, o tyle zdaje się, że możemy uwierzyć w owy pomysł nowatorskiego algorytmu kodowania. Niesłusznie, skoro algorytm produkował dane które zmieniały się w pewnym odstępstwie czasowym, to i tak zakodowana treść byłaby do odczytania – po prostu do klucza dodano by trochę więcej informacji (związanych cyfrowo z czasem), a każdy klucz pasujący do szyfru można odgadnąć metodą brute-force, prędzej czy później.

“Susan had learned about the Bergofsky Principle early in her career. It was a cornerstone of brute-force technology. It was also Strathmore’s inspiration for building TRANSLTR. The principle clearly stated that if a computer tried enough keys, it was mathematically guaranteed to find the right one. A code’s security was not that its pass-key was unfindable but rather that most people didn’t have the time or equipment to try.”

Kolejna niespodzianka – coś takiego jak zasada, reguła Bergofskiego nie istnieje i została wymyślona na potrzeby utwory, tak, aby fabuła trzymała się kupy, czego i tak nie osiągnięto. Wg niej komputer byłby w stanie ZNALEŹĆ każdy klucz do szyfru jeżeli posiadałby wystarczającą moc obliczeniową. Komputer nie znajduje, komputer TESTUJE wszystkie możliwe kombinacje i znajduje tą właściwą.

“Now Susan was even more doubtful. Encryption algorithms were just mathematical formulas, recipes for scrambling text into code. Mathematicians and programmers created new algorithms every day. There were hundreds of them on the market—PGP, Diffie-Hellman, ZIP, IDEA, El Gamal. TRANSLTR broke all of their codes every day, no problem. To TRANSLTR all codes looked identical, regardless of which algorithm wrote them.”

PGP – system który pozwala szyfrować i deszyfrować dane jest programem, który bazuje na algorytmie RSA – PGP sam w sobie algorytmem nie jest. ZIP – format kompresji, zaprojektowany przez Phila Katza dla PKZIP, w aktualnej postaci korzysta z algorytmu deflate.

“Public-key encryption was a concept as simple as it was brilliant. […] The only way to unscramble the message was to enter the sender’s “pass-key”—a secret series of characters that functioned much like a PIN number at an automatic teller.”

Dan zapewne pomylił szyfrowanie asymetryczne z symetrycznym – w tym pierwszym wykorzystuje się parę kluczy – jeden publiczny, jeden prywatny, W tym drugim, np. AES klucz jest jeden.

Może teraz coś na rozluźnienie:

“Cranberry juice was a popular drink in Spain, but drinking it alone was unheard of.”

Czy jemu nie chodziło przypadkiem o Sangrię, pitą z owocami i lodem w wysokich szklankach, od Katalonii po Andaluzję?

Na początku powieści Dan Brown stwierdza, że tylko 3% procent amerykanów jest świadoma istnienia ‘National Security Agency’.. czy to możliwe ? Heh

Mimo tego wszystkie zamierzam skończyć czytać Digital Fortress do końca.

sierpień 18, 2007

FUJABA

Kategoria wpisu: Academic, Java, Kod, UML — oskarj @ 4:46 pm

Przeglądając płytę CD dołączoną do książki „Język UML 2.0” natrafiłem na narzędzie do modelowania w języku UML o nietuzinkowej nazwie – Fujaba, co znaczy „From UML to Java And Back Again”. Jest ono systematycznie rozwijane przez pracowników naukowych uniwersytetu w Paderborn (Niemcy, Nadrenia Północna - Westfalia)

Poniżej prosty, wręcz banalny model klasy, oraz.. kod Java wygenerowany przez to narzędzie.

 

fujaba

 

package ZaJavka;

import java.util. *;

/**

* UMLClass: ‘Komunikator’.

*/

public class Komunikator

{

/**

* UMLAttr: ‘userName : String’.

*/

private String userName = “”;

/**

* UMLMethod: ‘- getUserName (): String’.

*/

private String getUserName ()

{

return this.userName;

}

/**

* UMLMethod: ‘- setUserName (newUserName: String): Void’.

*/

private void setUserName (String newUserName)

{

if ((this.userName == null) || (this.userName != null && !this.userName.equals (newUserName)))

{

this.userName = newUserName;

} // if

}

/**

* UMLMethod: ‘+ removeYou (): Void’.

*/

public void removeYou ()

{

//Statement

}

}

 

Jak widać, nie zapomniano nawet o hermetyzacji zmiennych.

sierpień 17, 2007

Nukezone

Kategoria wpisu: Bez kategorii — oskarj @ 6:33 pm

Ha!

Gierka tekstowa MMOTBS znana mi z czasów liceum wróciła do łask!

Jeżeli ktoś chce pograć w równie wciągająca grę jak Ogame,

niech się zaloguje na:

www.nukezone.nu

 

Nukezone

lipiec 21, 2007

Access i makra

Kategoria wpisu: Access, Bazy danych, Kod, VBA — oskarj @ 7:43 pm

Kumpel, pracujący i zdobywający doświadczenie w USA, zwrócił się do mnie z prośbą o pomoc w sprawie tabelki w Accessie. Problem polegał na tym, że istniała kolumna, która zawierała dane w postaci tekstowej – nazwy kategorii oddzielone przecinkami. Należało rozdzielić te nazwy na oddzielne rekordy, zachowując ten sam model encji.

 

Access - before

 

Czyli jeżeli jedna pozycja zawierała w kolumnie ‘Category’ : CN, CoI, RU

To powinny być w miejsce tego rekordu 3 rekordy, a w kategorii wpisane : CN , poniżej CoI, a trzecie RU

 

Access - after

Problem mógłby rozwiązać jakiś prosty skrypcik. Znalazłem na forach dyskusje na temat obiektów klasy Recordset w VBA, więc napisałem procedurę:

 

Option Compare Database

Sub reproduce()

Dim db As DAO.Database, rs As DAO.Recordset, dest As DAO.Recordset, table As String

Set db = CurrentDb

table = InputBox(”Please insert table name, e.g. like: ” & vbNewLine & “[Table no 2]“)

Set rs = db.OpenRecordset(”SELECT * FROM ” & table)

Set dest = db.OpenRecordset(”SELECT * FROM ” & table)

While Not rs.EOF

Dim txt As String

Dim x As Variant

Dim i As Long

txt = rs.Fields(6)

x = Split(txt, “,”)

For i = 0 To UBound(x)

dest.AddNew

For j = 0 To rs.Fields.Count - 1

dest.Fields(j) = rs.Fields(j)

Next j

dest.Fields(6) = Trim(x(i))

dest.Update

Next i

rs.Delete

rs.MoveNext

Wend

rs.Close

Set rs = Nothing

End Sub

 

Druga sprawa – nazwa choroby bez myślników, a z przecinkami.

Jeżeli w rekordzie jest wpisane w kolumnie ‘choroba’:

Arthritis-Rheumatoid Arthritis

To powinno to wyglądać tak:

Arthritis, Rheumatoid Arthritis

 

Problem rozwiązuje następujący kodzik:

 

Option Compare Database

Sub reproduceDisease()

Dim db As DAO.Database, rs As DAO.Recordset, table As String, line As String

Set db = CurrentDb

table = InputBox(”Please insert table name, e.g. like: ” & vbNewLine &

“[Table No 2]“)

Set rs = db.OpenRecordset(”SELECT * FROM ” & table)

While Not rs.EOF

Dim txt As String

Dim x As Variant

Dim i As Long

txt = rs.Fields(7)

x = Split(txt, “-”)

line = “”

For i = 0 To UBound(x) - 1

line = line & x(i) & “, “

Next i

rs.Edit

rs(”Disease/disorder”).Value = line & x(UBound(x))

rs.Update

rs.MoveNext

Wend

rs.Close

Set rs = Nothing

End Sub

 

Miłe zaskoczenie - Visual Basic for Access zawiera funkcję Split() pozwalajaca na rozdzielenie Stringów, tak jak java za pomocą klasy StringTokenizer. I nie tylko spacje, ale również dowolne znaki.

lipiec 19, 2007

Rico and prototype

Kategoria wpisu: Internet, Kod — oskarj @ 7:37 pm

Rico (hiszp. bogaty) - biblioteka javascriptowa, która wraz z prototype.js pozwala na proste animacje, drag-and-drop na stronce, wszystko na bazie architektury AJAX

http://openrico.org/

Przykładowa strona - komunikacja z serwerem. Kod z biblioteką Rico jest teraz bardziej przejrzysty.

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”>
<html>
<head>
<title>Testujac OpenRico</title>
<script src=”prototype.js” ></script>
<script src=”rico.js” ></script>
<script type = “text/javascript“>
function callRICO()
{
ajaxEngine.registerRequest(’myRequest’,'ricotest.php’);
ajaxEngine.registerAjaxElement(’display’);
ajaxEngine.registerAjaxElement(’heading’);
}
</script>
</head>
<body onLoad = “callRICO()“>
<div id = “heading”><h3>Demonstracja Rico</h3></div>
<input type = “button” value = “Pobierz dane z serwera” onclick = “ajaxEngine.sendRequest(’myRequest’);”/>
<div id = “display”><p>Ten tekst powinien zostac zastapiony tekstem z serwera…</p></div>
</body>
</html>

ricotest.php:

<?php
header(”Content-Type: text/xml”);
header(”Cache-Control: no-cache”);
header(”Pragma: no-cache”);
echo “<ajax-response><response type=\”element\”
id=\”display\”><p>”.$_SERVER['SERVER_SIGNATURE'].”
</p></response><response type=\”element\” id=\”heading\”>
<h3>Kilka informacji o serwerze</h3></response></ajax-response>”;
?>

Następna strona »

Blog at WordPress.com.