Kashiash's Blog

o programowaniu inaczej : jak zrobić i się nie narobić

Archive for Lipiec 2010

LINQ jest też w clarion#

Posted by kashiash w dniu 31 lipca, 2010

…dlatego warto się nim zainteresować:

http://en.wikipedia.org/wiki/Language_Integrated_Query

some tutorials (quick google returned this one, I haven’t looked at it)

http://www.deitel.com/ResourceCenters/Programming/MicrosoftLINQ/Tutorials/tabid/2673/Default.aspx

101 LINQ Samples

http://msdn.microsoft.com/en-us/vcsharp/aa336746.aspx

Posted in Uncategorized | Leave a Comment »

Kilka ciekawych linków

Posted by kashiash w dniu 31 lipca, 2010

http://www.sarasotadev.net/VS2010LaunchEvent/Resources.aspx

Narzędzia dla programistów … nie tylko clarionowych
http://www.hanselman.com/blog/ScottHanselmans2009UltimateDeveloperAndPowerUsersToolListForWindows.aspx
www.hanselman.com/tools

Posted in Uncategorized | Leave a Comment »

Google Maps i Clarion

Posted by kashiash w dniu 24 lipca, 2010

Skoro mamy własna przeglądarkę to poogladajmy sobie w niej mapy z googlemaps.
Najpierw te prostsze statyczne np do pokazania lokalizacji wybranych współrzednych lub do pokazania mapy o podanym adresie.

Dokumnatacj na google jest tutaj:
http://code.google.com/intl/pl-PL/apis/maps/documentation/staticmaps/#Zoomlevels

w skrócie wystarczy spreparować odpowiedni link i sprawa z głowy 😉
np
http://maps.google.com/maps/api/staticmap?center=40.714728,-73.998672&zoom=12&size=400×400&maptype=satellite&sensor=true_or_false

http://maps.google.com/maps/api/staticmap?center=40.714728,-73.998672&zoom=12&size=400×400&maptype=hybrid&sensor=true_or_false

http://maps.google.com/maps/api/staticmap?center=40.714728,-73.998672&zoom=12&size=400×400&maptype=roadmap&sensor=true_or_false

 http://maps.google.com/maps/api/staticmap?center=40.714728,-73.998672&zoom=12&size=400×400&maptype=terrain&sensor=true_or_false

lub z podaniem jawnym adresu:

http://maps.google.com/maps/api/staticmap?center=Brooklyn+Bridge,New+York,NY&zoom=14&size=512×512&maptype=roadmap
&markers=color:blue|label:S|40.702147,-74.015794&markers=color:green|label:G|40.711614,-74.012318
&markers=color:red|color:red|label:C|40.718217,-73.998284&sensor=false

ekran z programu

i jeszcze w wyszukiwaniu przez adres

Kod żródlowy i sam program (plik spakowany w formacie ZIP – usunąć .PDF na końcu)

Wersja z małym bajerem, wersja stayczna z przeijaniem ;). Kod żrodlowy poniżej

DOWNLOAD HERE! – Kod zródlowy do wersji gdzie widać ze mi sie nudzi 😉

Posted in Clarion, Google Apps, kurs clariona | Leave a Comment »

Web Browser w Clarionie

Posted by kashiash w dniu 24 lipca, 2010

Niekiedy przydaje się pokazywanie zawartości stron HTML na oknie aplikacji. Do dyspozycji jest kilka szablonów, za które niestety trzeba zapłacić. Tutaj pokaże jak można to zrobic wykorzystując to co standardowo wykorzystuje clarion.

Tworzymy nowy projekt , w nim puste okienko, nastepnie:
1. do okienka dodajemy OLE Control z control Template List (patrz poniżej).
2. We własciwościach ustawiamy Control Type na Microsoft Web Browser
3. Zmieniamy nazwe kontrolki na ?NAV (uczymy sie dobrych nawyków ;))
na przycisku GO wpisujemy kod do wywolania wpisanego linka i już 😉


?Nav{'Navigate(URL="' & Clip(MyURL) & '",Flags=14)'}

Wiecej na ten temat tu:

http://clarionmag.com/cmag/v3/v3n7webocx.html
http://msdn.microsoft.com/library/default.asp?url=/workshop/browser/webbrowser/reference/Objects/WebBrowser.asp
http://msdn.microsoft.com/library/default.asp?url=/workshop/browser/webbrowser/reference/ifaces/iwebbrowser2/iwebbrowser2.asp
http://www.attryde.com/clarion/cw_ieocx.htm
http://msdn.microsoft.com/library/default.asp?url=/workshop/browser/WebBrowser/RefList_VB.asp

Aplikacja w akcji:

DOWNLOAD HERE: trzeba usunąć .PDF na końcu, którego dodałem z przyczyn technicznych.

Posted in kurs clariona | Leave a Comment »

Komunikacja z Google za pomocą Clariona

Posted by kashiash w dniu 24 lipca, 2010

Niekiedy używam Google Calendar, niestety do planowania uzywam innych narzedzi – często własnoręcznie napisanych lub wzbogaconych moimi aplikacjami pomocniczymi. Stwierdziłem, że przydałby sie moduł wymiany pewnych zdarzeń pomiędzy moimi aplikacjami a Google Calendar.

Na stronie google jest w miarę sympatyczny opis (niestety po pogańsku – ale to jest i będzie normą)
http://code.google.com/intl/pl-PL/apis/calendar/data/2.0/developers_guide_protocol.html

W skrócie:
na adres https://www.google.com/accounts/ClientLogin
należy wysłać dane konta: email, haslo , identyfikator programu – dowolna nazwę, identyfikator serwisu google – w tym przypadku „cl”

np: Email=kashiash@gmail.com&Passwd=MojeTajneHaslo&source=goalsapp&service=cl

w kodzie clariona:

ThisWebClient.init()
ThisWebClient.SetAllHeadersDefault()
ThisWebClient.ContentType = 'application/x-www-form-urlencoded'
PostURL = 'https://www.google.com/accounts/ClientLogin'
Email = 'kashiash@gmail.com'
Passwd = 'MojeTajneHaslo'
PostString = 'Email=' & clip(Email) &'Passwd='&clip(Passwd)&'&source=goalsapp&service=cl'
ThisWebClient.Post(PostURL,PostString)

Odpowiedz z serwisu pobieramy na zdrzeniu ThisWebClient.PageReceived w ten sposób

PageString = ThisWebClient.Page [1 : ThisWebClient.PageLen]

Teraz w PageString między innymi powinniśmy dostać taki fragment tekstu:

Auth=DQAAAJQaAACGjSBJgK7sR7j6bZn8M5ws0gdxIX8YQziVVVFJ8BUGE5O83eafjj9qyOiGx9hPBNEDrj1hjVC54DZcejKuMSQX-pEDXKrJj7m0UJ9ZLPs52VWXvOgFQ0DDvuY0hmFOrlR8PJYzEo9DgX5eo1qkDFP-xAXs5PwpL7oaMIBsVIVlY-JogqAS2ZdknX1EDgdmkzBO4-lGSgQhu615iiLOZkaq

będzie nam potrzebny do autoryzacji.

pobierzemy liste dostepnych kalendarzy:

ThisWebClient.Authorization = 'GoogleLogin Auth=DQAAAJQaAACGjSBJgK7sR7j6bZn8M5ws0gdxIX8YQziVVVFJ8BUGE5O83eafjj9qyOiGx9hPBNEDrj1hjVC54DZcejKuMSQX-pEDXKrJj7m0UJ9ZLPs52VWXvOgFQ0DDvuY0hmFOrlR8PJYzEo9DgX5eo1qkDFP-xAXs5PwpL7oaMIBsVIVlY-JogqAS2ZdknX1EDgdmkzBO4-lGSgQhu615iiLOZkaq'
URL = http://www.google.com/calendar/feeds/default/allcalendars/full
ThisWebClient.Fetch(URL)

Odpowiedź z serwisu pobieramy podobnie jak za pierwszym razem:

PageString = ThisWebClient.Page [1 : ThisWebClient.PageLen]

niestety wygląda mało sympatycznie, ale napisanie procedury która sparsuje odpowiedź nie jest czymś skomlikowanym 😉

teraz sprobujmy sobie założyc nowy kalendarz:

na adres:   POST http://www.google.com/calendar/feeds/default/owncalendars/full

wysyłamy nastepujący wpis:

<entry xmlns='http://www.w3.org/2005/Atom'
xmlns:gd='http://schemas.google.com/g/2005'
xmlns:gCal='http://schemas.google.com/gCal/2005'>
<title type='text'>bbbbbbbbbbbb</title>
<summary type='text'>Nowy testowy kalendarzyk.</summary>
<gCal:timezone value='America/Los_Angeles'></gCal:timezone>
<gCal:hidden value='false'></gCal:hidden>
<gCal:color value='#2952A3'></gCal:color>
<gd:where rel='' label='' valueString='Oakland'></gd:where>
</entry>

należy zmienić tylko contntent type na application/atom+xml

ThisWebClient.init()
ThisWebClient.SetAllHeadersDefault()
ThisWebClient.ContentType = 'application/atom+xml'
PostURL = 'http://www.google.com/calendar/feeds/default/owncalendars/full'
PostString = EntryValue  ! W tej zmiennej mamy przygotowany wpis entry jak powyżej
ThisWebClient.Authorization = 'GoogleLogin Auth=DQAAAJQaAACGjSBJgK7sR7j6bZn8M5ws0gdxIX8YQziVVVFJ8BUGE5O83eafjj9qyOiGx9hPBNEDrj1hjVC54DZcejKuMSQX-pEDXKrJj7m0UJ9ZLPs52VWXvOgFQ0DDvuY0hmFOrlR8PJYzEo9DgX5eo1qkDFP-xAXs5PwpL7oaMIBsVIVlY-JogqAS2ZdknX1EDgdmkzBO4-lGSgQhu615iiLOZkaq'
ThisWebClient.Post(PostURL,PostString)

 W odpowiedzi dostajemy informacje o założonym kalendarzu lub ewentualnym błędzie w dobrze juz znany sposób

PageString = ThisWebClient.Page [1 : ThisWebClient.PageLen]

Aby pobrać listę zdarzeń z kalendarza w okreslonym zakresie dat wystarczy wysłać:

GET http://www.google.com/calendar/feeds/default/private/full?start-min=2006-03-16T00:00:00&start-max=2006-03-24T23:59:59

i potem tylko sparsować przesłany wynik 😉

Wpis zdarzenia to jedyne :

<entry xmlns='http://www.w3.org/2005/Atom' xmlns:gCal='http://schemas.google.com/gCal/2005'>
<content type="html">Tennis with John April 11 3pm-3:30pm</content>

<title>title musi byc, bo inaczej dostaniemy komunikat o błędzie<>
<gCal:quickadd value="true"/>
</entry>

wysłane na adres: POST http://www.google.com/calendar/feeds/default/private/full

Zdarzenie z wieksza ilościa informacji w dodatku powtarzające sie, wpiszemy wysyłając na ten sam adres następujący wpis:

<entry xmlns='http://www.w3.org/2005/Atom'
xmlns:gd='http://schemas.google.com/g/2005'>
<category scheme='http://schemas.google.com/g/2005#kind'
term='http://schemas.google.com/g/2005#event'></category>
<title type='text'>Tuesday Tennis Lessons with Jane</title>
<content type='text'>Meet on Tuesdays for a quick lesson.</content>
<gd:transparency
value='http://schemas.google.com/g/2005#event.opaque'>
</gd:transparency>
<gd:eventStatus
value='http://schemas.google.com/g/2005#event.confirmed'>
</gd:eventStatus>
<gd:where valueString='Rolling Lawn Courts'></gd:where>
<gd:recurrence>DTSTART;VALUE=DATE:20070501
DTEND;VALUE=DATE:20070502
RRULE:FREQ=WEEKLY;BYDAY=Tu;UNTIL=20070904
</gd:recurrence>
</entry>

Żródlo:

 http://code.google.com/intl/pl-PL/apis/calendar/data/2.0/developers_guide_protocol.html

http://capesoft.com/docs/NetTalk/nettalk3.htm#Jump Start for Web

jestem w trakcie dopieszczania programu z powyższymi przykładami, jak unzam że jest wystarczająco dopieszczony podeślę go tutaj …

Posted in Uncategorized | Leave a Comment »

Pojawił się Clarion 7.2

Posted by kashiash w dniu 24 lipca, 2010

Tak naprawdę już ponad miesiąc temu miałem go w rękach. Niestety uzywam wielu bibliotek dodatkowych i nie miałem każdej kompatybilnej z nowym clarionem. Przedwczoraj dostałem ostatnia brakującą i połowa wczorajszego dnia zajęta była instalowaniem. Problem nie jest z Clarionem, tylko ze mną. okazało sie, że pomimo posiadanej zbiorczej listy szablonów do niektórych kody aktywacyjne są nieaktyalne lub po prostu z lenistwa ich nie wpisałem. Wiekszośc czasu zajęło mi przeszukiwanie inboxa w poczcie prywatnej oraz w firmowej w celu wyszukania potrzebnych informacji. W końcu mam działającego nowego clariona (o tym co nowe napisze w kolejnym wpisie). Z poprzedniego dnia wyciągnałem nastepujace wnioski.

lista z kodami aktywacyjnymi powinna być aktualna (wczoraj ja zaktualizowałem)
powinna też mieć linki skąd pobrać najnowszą wersję
wszystko co skompletujemy do instalacji należy zarchiwizować i trzymać w bezpiecznym miejscu
w przypadku pojawiania sie aktualizacji bibliotek lista i katalog programów instalacyjnych powinny być aktualizowane na bieżaco
wtedy zamiast stracić pół dnia, wystarczy pół godziny

Posted in Clarion, Dobre praktyki | Leave a Comment »