piątek, czerwca 29, 2007

Piątek
  1. Przy podejściu do wytwarzania aplikacji na platformie Java można wybrać dwie drogi:
    1. ewolucyjna - powoli przechodzić na tę platformę (impelmentując najpierw servlety i ajax - tka jak to zademosntrowałem. Muszę jeszcze nagrać show jak to się robi
    2. rewolucyjna - rzucamy wszystko i uczymy się. Po roku może będzie jakiś efekt.
  2. Google dostrzegł nową możliwość marketinową - ogłosił epokę gadżetów (tzw. gadget ecosystem) - jest to segment oprogramowania zorientowany wokół małych programów dodatkowych, uruchamianych w środowisku desktop pracujących w tle. Do ich uruchomienia wymagane jest runtime. W przypadku Google jest to oparty o XML Desktop platform. Produkcję wichajstrów zapoczątkował Apple. Googel oferuje swoje w dwóch wersjach: lokalnej jako Desktop lub ze swojej strony. Dodatkowo firma ta ogłosiła projekt open-source Jackfield do uruchamiania gadżetów na Linuksie (docelowo ma uruchamiać gadżety z Yahoo Widget Engine, MS Sidebar i Mac). Na podstawie betanews.
  3. Informacja o Yahoo:kupiła w zeszłym (2006) roku serwis photo-sharing Flickr oraz Konfabulator, który wytwarza aplikacje desktopowe zwane "widgets," lub dodatki (add-ons).
  4. Należy przeszukać Google API dla: Gear, Base, Docs and Spreadsheets ...
  5. Tutaj jest strona do API dla gadżetów - http://www.google.com/apis/gadgets/
  6. Tworzenie, zbieranie i udostępnianie danych w środowisku pracy grupowej to dopiero czybek góry lodowej, następny poziom to publikowanie tych danych w postaci strumienia RSS. Google zachęca by w swych produktach do wizualizacji danych wykorzystywać dokumenty i arkusze poprzez API.
  7. Uwaga Google faktycznie ma już wykresu w arkuszu.
  8. Ciekawe odnośniki:
    1. Blog na temat dokumentów - http://google-d-s.blogspot.com/
    2. GData - http://code.google.com/p/google-gdata/
    3. Data API blog - http://googledataapis.blogspot.com/2007/05/see-your-google-spreadsheet-data-in.html
    4. Gadgets API - http://www.google.com/apis/gadgets/
    5. Najprostszy - http://www.google.com/apis/gadgets/gs.html
    6. Więcej o tym - http://www.google.com/apis/gadgets/docs-home.html
    7. GWT - http://googlewebtoolkit.blogspot.com/
    8. Gears - http://gearsblog.blogspot.com/

środa, czerwca 27, 2007

Ciekawe adresy zebrane w środę:
  1. http://msdn2.microsoft.com/en-us/library/ms268890(VS.80).aspx - wprowadzenie do SMART TAG
  2. Poszukiwarka rozwiązań programistycznych - http://www.koders.com/
  3. Szukanie prawdy - What’s Your Ethics IQ? (http://www.hemispheresmagazine.com/nov06/cybersidebar.html)
  4. By Bruce Weinstein, Ph.D.The Ethics Guy®

    Introduction
    The secret to living a satisfying, happy life is to be found in five simple principles. We’ve known about these principles for more than 5,000 years. Nearly every religious tradition in the world teaches them, as do parents in every country. Without them, civilization would be impossible, because there would be nothing but chaos. These principles have a transforming effect on who we are and where we go in life. They are the principles of ethics, and they are as follows:

    1. Do no harm.
    2. Make things better.
    3. Respect others.
    4. Be fair.
    5. Be loving.

    Yes, these principles are simple, but deceptively so, because too often we let fear, anger, or other negative emotions get us off track. This creates a downward spiral, and it’s sometimes difficult to get back to where we want to be.

    For example, how often do we really keep “do no harm” in mind during our daily interactions with people? If a clerk at the grocery store is nasty to us, don’t we return the nastiness and tell ourselves, “Serves them right?” We may, but if we do, we harm the other person. In so doing, we harm our own soul—and this is one of the reasons why we shouldn’t return nastiness with more of the same.
    You might wonder, “If these principles are so commonplace, why do I need to be reminded about them?”

    It’s true that they’re commonplace, but it’s also true that in our hectic, overcommitted lives, we get so caught up in the details of getting through the day that it’s easy to forget how important these principles are in everything we do. We’re also tempted every day to ignore them and to place value on things that ultimately aren’t that important. So taking a few steps back to consider these principles is helpful.

    On the surface, the principles are about making a difference in the lives of other people. To this extent, taking them seriously seems like something we have to do, something we ought to do, something that, quite frankly, we’d rather not do.
    What we’ll discover through this quiz, however, is that making ethics our central concern is actually the best way to lead a richer, more fulfilled life. A life that helps us get the things we want: the right partner, a job we love, and a place where we want to live. By taking ethics seriously, we serve as role models to our children and increase the chances that they will go into the world and make us proud.

    Recent scandals in the news show the risks we take when we neglect these principles: public humiliation, shame, and in some cases, a lengthy visit to prison. But the main reason for taking ethics seriously is not the dangers of failing to do so, but rather because it’s the right thing to do.

    The path to a happier, more fulfilled life lies in becoming reacquainted with the principles of ethics, which tell us how we should treat one another. When we act with integrity, we feel better about ourselves. We then create the conditions for making many wonderful choices in our own lives. When we take the high road in all that we do, we give a gift to others—and ourselves. It’s the greatest gift of all.

    I’ll show you why

  5. Problem JINI - http://www.infoq.com/articles/in-process-java-net-integration, http://reyelts.dyndns.org:8080/jace/release/docs/index.html
  6. Co robi RH - http://blogs.tedneward.com/2007/03/22/RedHat+Inc+The+Next+Microsoft.aspx
  7. Co może RESIN - http://www.caucho.com/download/ - łączy PHP i J2EE
  8. InterOp Forms Toolkit dla VFPhttp://weblogs.foxite.com/bernardbout/archive/2007/06/20/4126.aspx
  9. http://openid.net/ - OpenID

wtorek, czerwca 26, 2007

Toolbar.live.com
Windows.Live.Favorities
JAVA
  1. http://www.visualbuilder.com/jsp/tutorial/pageorder/14/
  2. http://www.jspin.com/
  3. http://www.scbr.com/docs/products/dhtmlxGrid/
  4. http://www.jspin.com/home/tutorials
  5. http://www.jsptut.com/Scriptlets.jsp
  6. http://www.developer.com/tech/article.php/626401
  7. http://www.betanews.com/article/Microsoft_VP_Interoperability_CrossPlatform_Efforts_Go_Back_30_Years/1182788179
  8. http://www.isvinnovation.com/

  1. Każda aplikacja w tym i internetowa składa się z warstw:
    1. Klient lokalny:
      1. przeglądarka internetowa (niekompatybilne implementacje języka JavaScript, brak dostępu do zasobów lokalnych)
      2. inny kontener np. klient MS VS - niweluje te braki
      3. Bazujemy na języki JavaScript z jego rozszerzeniami obiektowymi (wychodzimy poza ramy podstawowe)
      4. Wymagane jest przyjęcie rozwiązań szkieletowych w zakresie GUI i operacji na DOM, ułatwiających tworzenie
    2. Serwer internetowy:
      1. Tradycyjny serwer internetowy oparty o rozszerzenie mod Apache (np. mod_python)
      2. Integracja platformy języka skryptowego np PHP z Apache (skompilowanie do Apache)
    3. Serwer aplikacji:
      1. Podział na wyspecjalizowane serwery aplikacyjne np. ZOPE
      2. Kontener dla uruchamiania języka JAVA zgodny ze specyfika J2EE: Tomcat (wzorcowy), WebSphere CE (CodeGlue), pełny WebSphere oraz wiele innych niezgodnych w szczegółach ze sobą implementacji BEA, JBOSS
      3. MS IIS 7.0
    4. Serwer bazodanowy:
      1. Oracle
      2. Informix
      3. DB2
  2. Warstwa
    C/s
    Web 1.0
    Web 1.0
    Web 2.0 AJAX
    Klient
    90%-100%
    0%
    5%
    85%
    Serwer internetowy

    100%
    5%
    5%
    Serwer aplikacyjny

    0%
    85%
    5%
    Serwer bazodanowy
    10%-0%
    0%
    5%%
    5%

  3. Wydaje się, że obecnie najbardziej rozwojowe są dwie hermetyczne platformy komercyjne (oferujące pełne, spójne i ciągle rozwijane technologie):
    1. Platforma .Net
    2. Platforma J2EE
  4. Wzorowane na J2EE ale znaczne bogatsze i rozbudowane środowisko .NET firmy MS oferuje pełna gamę narzędzi deweloperskich i środowisk wykonywalnych (serwerów) od urządzeń mobilnych aż po serwery korporacyjne. Wykorzystanie serwerów jest przeźroczyste dla programisty.
  5. MS Visual Studio 2005 jest wzorcem dla innych środowisk
  6. Wiele firm trzecich udostępnia (płatne oczywiście) ale o dużej jakości dodatki, które b. dobrze się integrują z klientem i serwerami MS (bo wiedzą jakie maja API) np. BO, CR.
  7. Światełko w tunelu - istnieje jednak interoperability między .NET i J2EE, chociażby poprzez WebServices
  8. Istnieje środowisko analogiczne po stronie Java (na etapie doganiania) ale jest rozczłonkowane:
    1. Chaos i brak stabilizacji
    2. Każda technologia jest innej firmy lub grupy deweloperów nic ich nie jednoczy poza chęcią wypromowania swej implementacji danego standardu
    3. Brak wspólnej platformy i jednolitego API
    4. Wykorzystuje się wiele projektów open-source ("pasożytnictwo" ponieważ na nich powstają wersje płatne), które dostosowuje się do własnych potrzeb (a to jest podatne na błędy i wymaga naprawdę dużej wiedzy)
    5. Mnogość dostępnych rozwiązań jest przeszkodą, przecież w końcu trzeba wybrać jakieś jedno rozwiązanie końcowe, dobrze gdy wybierzemy rozwiązanie "prawidłowe", które jest rozwijalne i powszechnie stosowane
    6. Niekompatybilność nawet między implementacją (rozszerzeniami) nawet EJB
    7. Tarcie wśród deweloperów jakie rozwiązanie jest jedynie słuszne np. Java Suna, IBM Java, czy Open Java
  9. Przekonanie o awaryjności i braku skalowalności rozwiązań serwerowych MS jest nieprawdziwe
  10. Środowisko MS jest tanie (koszt oprogramowania i sprzętu) i ma małe wymagania sprzętowe
  11. Elastyczność (agility). Można i należy budować aplikacje w środowisku heterogenicznym (już nawet baza nie musi być wspólna nie mówiąc o serwerach aplikacyjnych czy internetowych, wspólny musi być klient (czyli JavaScript) i mechanizm jednokrotnego logowania np. OpenID). Kryterium wyboru platformy musi być zgodne z wyborem klienta
  12. Możliwa i konieczna jest symbioza i wymienialność na poziomie serwerów: od wspólnego serwer baz danych.
  13. Przeciwieństwo podejścia hermetycznego - powstają aplikacje Web 2.0 gdzie część serwerowa jest mniej ważna, główny nacisk kładzie się na przetwarzaniu po stronie klienta
  14. Oparcie się na lokalnej przeglądarce internetowej (gruby klient w klasycznej architek.) jako kontenerze pozwala na mashup, czyli na konwergencję wielu platform serwerowych i przykrycie ich wspólną warstwą, nierozróżnialną przez klienta
  15. Dynamiczne języki mają się dobrze, mało kto pamięta, że MS pierwszy rozpoczął promocję języków skryptowych wprowadzając i rozwijając sławny Basic a potem Visual Basic. Wygląda na to, że teraz po latach wraca do swego pomysły. Na tegorocznym TechEd wprowadził temat DLR (dynamic language runtime obok działającej już CLR) platformy .NET Framework 3.5, w której poczesne miejsce będą miały właśnie te języki (od IronPython po IronRuby). Ukłon w stronę open-source - będą otwarte dla wszystkich chętnych. Z jednym zastrzeżeniem - serwisy SOA, tam mają królować jedynie CLR (wraz z WCF i serwerami w stylu BizTalk).
  16. Wg. MS języki dynamiczne mają swoje miejsce i to jest front-end aplikacji (tj. ASP.NET, Windows Forms, WPF, dynamic languages w śrosowisku ASP). Oznacza to funkcję wykorzystania i pobierania serwisów.(Na podstawie serwisu BetaNews: Microsoft's .NET Evangelist Spells Out Future Role for Dynamic Languages)
  17. Sun również widzi konieczność uproszczenia procesu wytwarzania oprogramowania poprzez wsparcie w środowisku Java języków dynamicznych (JavaScript, Python, Ruby). Java została otwarta dla środowiska open source, ale Sun ma tutaj wiodącą rolę.
  18. Kryzys głównych założeń J2EE, szczególnie EJB. Proponuje się lekkie EJB 3.0.
  19. Rozwój aplikacji WEB 2.0 (mashup) opartych o AJAX
  20. Google - oferuje wsparcie dla technologii mashup oraz narzędzia dla programistów w środowisku Java, .NET, Python, PHP. Google WebToolkit, Google Gears.
  21. Powstają bezpłatne rozwiązania szkieletowe tzw. framework np. Yahoo (głównie GUI), prototype (głównie niewizualne), dojo, rico. Dr.Dobbs - opis i ocena tych szkieletów. Jest wiele szkieletów specjalistycznych bazujących na tych rozwiązaniach.
  22. Demokracja jest dobra, ale musi ktoś rządzić.
  23. Powstaje wiele rozwiązań firm trzecich oferujących rozwiązania płatne np. Nitobi, Infragristic.
  24. IBM - przyjmuje postawę wyczekującą. Środowisko Eclipse (kupione przez IBM od firmy kanadyjskiej) zostało usamodzielnione (niezależne od IBM). Niesamowita ilość wtyczek, niezgodność wtyczek z wersjami brak koordynacji. IBM daje wolną rękę grupie Eclipse skupia się natomiast na rozwoju płatnego środowiska Rational po przejęciu tej firmy (formalna metodyka). Wielkie plany i projekty ale mało konkretów (czyli brak wersji produkcyjnych). Otwarta platforma Eclipse jest w fazie rozwoju, płatne rozwiązanie WSAD (z Rational) jest dopracowane
  25. Jython (JPython) - wersja 2.2 (ostatnia wersja 2.1 -była w 2001 roku). Numer wersji odzwierciedla wersję CPythona z której przejęto biblioteki. Uwaga przewiduje się wersję 3.0, która podobnie jak wersja CPythona nie będzie kompatybilna z poprzednimi wersjami.
  26. Głównym kontenerem do uruchamiania aplikacji jest ciągle przeglądarka internetowa. Rozwiązania szkieletowe skutecznie niwelują niezgodności między przeglądarkami.
  27. Istnieje możliwość wykonywania aplikacji internetowych w innych klientach lokalnych (obiekty XMLHTTP, oraz komponenty WebBrowser oparte o silniki IE lub FF) co ma swoje zalety (obsługa natywna lokalnych zasobów) i wady (konieczność instalacji - ale to nie jest aż taka przeszkoda dzięki platformie .NET)
  28. Głównym środowiskiem uruchamiania jest platforma Windows Client i nie wolno tego bagatelizować, część rozwiązań internetowych musi wykorzystywać wspierane przez MS technologie czyli głównie .NET.
  29. Coraz większy nacisk kładzie się na przetwarzanie w przeglądarce (co jest zgodne z AJAX)
  30. Ajax jest pojęciem szerokim, ma dwie strony implementacji
  31. Niezależnie od wyboru technologii krótko czy długoplanowej należy:
    1. Przeszkolić ponownie w zaawansowanym wykorzystaniu JavaScript w oparciu o obiektowość i szkielet
    2. Wybrać i zatwierdzić) metodologię tworzenia aplikacji (AJAX?)
    3. Wybrać i wdrożyć pomocne rozwiązania szkieletowe w zakresie obsługi GUI w przeglądarce oraz DOM
    4. Wybrać środowisku do tworzenia aplikacji w HTML (HateHTML, PSPad, MS VWD)
    5. Przeszkolić w zakresie narzędzi do testowania HTML (MS VWD, FireBug) oraz metodologii formalnych opartych na jUnit
    6. Wybrać i wdrożyć protokół przekazywania danych między warstwami: XML, JSON
    7. Rozpoznać środowisko Eclipse i wybrać niezbędne do pracy wtyczki oraz elementy z oferty Rational dla wsparcia środowiska Java
    8. Przeszkolić w Java
    9. Wybrać i zakupić komponenty serwerowe
  32. Należy obserwować rozwój aplikacji w Google, Yahoo, MS, Eclipse
15.11.2006
  • Firma TrendMicro - udostępnia również jak i inne firmy skanner online. Jego instalacja odbywa się poprzez technologię ActiveX (zresztą tak działają wszystkie przeglądarkowe skanery) i jakoś to działa. Dziwne, że nikt nie zrobił skanera dla Mozilli. Może jeszcze za mały rynek dla tych rozwiązań.
  • Użyteczne programy: ba.exe - bios agent do poznania wszystkich wersi BIOS (ważne gdy chcemy go zaktualizować), PC-Clean do czyszczenie systemu, PC Wizard + CPU Z.
  • Siatki do wyświetlania danych - danych w większości przypadków jest dużo, nie mieszczą się na ekranie (formularzu, stronie webowej). Zachodzi potrzeba ich porcjowania. Problemów jest wiele: porcjowanie ma być elastyczne (podawać można jako parametr liczbę wierszy do jednorazowego wyświetlenia), wydajne (nie pobieramy od razu wszystkich danych do pamięci operacyjne lecz jedynie tzw. porcje), efektywne (zwalniamy pulę połączeń z bazą). Aby porcjowanie miało sens musi mieć wsparcie w motorze bazy danych, np. instrukcja SQL SELECT musi wspierać możliwość ograniczenia pobrania danych (FIRST 10, LIMIT 10). Musi być także jakiś mechanizm zaznaczania aktualnej pozycji w tabeli (MS nazywa to bookmark). Do problemu wykorzystania mechanizmów motora bazy można podejść dwojako Należy przeszukać możliwości w zakresie zaznaczania porcji danych w mechanizmach metod dostępu poprzez ODBC (sprawdzone - te mechnizmy działają, patrz przykład w tabelce poniżej)/ JDBC (lub ich odpowiedniki w innych językach np. ADODB w PHP) lub też podejść na niski poziom i wykorzystać specyfikę polecenia SQL SELECT dla danej bazy (korzystać z ROWID, FIRST, procedur wbudowanych) oraz specyfiki aplikacji (specjalne wykorzystanie kluczy głównych). Tak czy inaczej jest to trudny problem dla developera i raczej lepiej zdać się na jakieś gotowe narzędzia, za które czasami trzeba trochę zapłacić. A warto, gdyż możemy od razu skupić się na merytoryce zagadnienia szczególnie gdy klient chce od siatki sortowania, przesuwania (w lewo/prawo) i sortowania kolumn. Czasami mamy szczęście i w danym języku czy środowisku programowania mamy wbudowane takie narzędzia (.NET ma DataGrid, PHP ma tzw. pager'a - notabene kiepsko u niego z wydajnością, JDeveloper/Netbeans oferuje siatki danych całkiem dobrej jakości). Alternatywne podejścia:
    • Inna sprawa to filozoficzna, czy możemy użytkownikowi ukryć dane przez pokazanie mu tylko ich części. Czasami nieświadomy użytkownik szuka jakiś danych na ekranie i stweirdza, że ich tam nie ma (a tym czasem są one na następnych stronach). Przy takim potraktowniu problemu można zrobić tak: użytkownik niech sam określi zapytanie i wybierze jakie dane chce oglądać (nalezy mu udostępnić filtr selekcji bazujący na jego wiedzy o tym co chce zobaczyć + Limit ilości wybranych wierszy w zapytaniu). Nie czarujmy się zbyt dużo danych i tak nie przeanalizuje.
    • Dane mają być porcjowane nie na serwerze ale u klienta. W tym przypadku klient pobiera dane z serwera i wkłada do pojemnika lokalnego zwalniając zasoby połączeniowe z bazą (oddając do puli połączenie). Dzięki temu wszystkie operacja odbywają się lokalnie (na sprzęcie skądinąd coraz bardziej wyrafinowanym). Tak myśli MS - tzw. offline dataset. Nawiasem mówiąc VFP w wersji miał pojęcie tzw. offline table. Dane są przetwarzane lokalnie. Najważniejsze jest to co będzie potem - synchronizacja z danymi na serwerze. Wybrano metodę optymistyczna tj. wolno wszystko edytować i zmieniać a dane są zapisywane do bazy centralnej zakładając, że nie ma konfliktów. Ważną sprawą jest wybór pojemnika klient, może to być nawet przeglądarka internetowa lub coś bardziej skomplikowanego.
  • Zasoby:

Przykład "żywcem" wzięty z produkcji (chodzi!)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- #include file="adovbs.inc" --><HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=8529">

<SCRIPT LANGUAGE=javascript>
<!--
function mSkocz(iSkocz)
{
window.location.href="Karta_List.asp?page="+iSkocz;
}
//-->
</SCRIPT>

<%
Response.Expires = -1000 'Makes the browser not cache this page
Response.Buffer = True 'Buffers the content so our Response.Redirect will work

iRozmiarStr = 10
mW = ""

If Request.QueryString("page") = "" Then
iBiezacaStr = 1
Else
iBiezacaStr = CInt(Request.QueryString("page"))
End If

set cn = CreateObject("ADODB.Connection")
set rs = CreateObject("ADODB.Recordset")
rs.PageSize = iRozmiarStr
' rs.CursorLocation = adUseClient ' Bardzo ważne w przypadku bazy Informix
rs.CacheSize = iRozmiarStr
cnstr = "DSN=mssql;UID=inventuser;PWD=userinvent"
cn.ConnectionString = cnstr
cn.Open
rs.ActiveConnection = cn
rs.Open "Select nr_inw,admin_id,typ_sprz,lokalizacja, pokoj from sprzet order by 1 asc", cnstr, adOpenStatic, adLockReadOnly, adCmdText

iLiczbaStr = rs.PageCount

If iBiezacaStr > iLiczbaStr Then iBiezacaStr = iLiczbaStr
If iBiezacaStr < 1 Then iBiezacaStr = 1

Response.Write "<table FONT='Arial Narrow' ALIGN='CENTER' border='1'>" & vbCrLf

Response.Write vbTab & "<tr>" & vbCrLf

For I = 0 To rs.Fields.Count - 1
Response.Write vbTab & vbTab & "<th>"
Response.Write rs.Fields(I).Name
Response.Write "</th>" & vbCrLf
Next

rs.AbsolutePage = iBiezacaStr

iNRWiersza = 1

Response.Write vbTab & "</tr>" & vbCrLf
Do While iNrWiersza <= iRozmiarStr And Not rs.EOF
Response.Write vbTab & "<tr>" & vbCrLf
Response.Write vbTab & vbTab & "<td>"
Response.Write mPokazLink(rs.Fields(0))
Response.Write "</td>" & vbCrLf
For I = 1 To rs.Fields.Count - 1
Response.Write vbTab & vbTab & "<td>"
Response.Write rs.Fields(I)
Response.Write "</td>" & vbCrLf
Next 'I
Response.Write vbTab & "</tr>" & vbCrLf
iNRWiersza = iNRWiersza + 1
rs.MoveNext
Loop

Response.Write "</table>" & vbCrLf
Response.Write "<p ALIGN='CENTER'>Strona " & iBiezacaStr & " / " & iLiczbaStr
Response.Write ", Rozmiar strony=" & iRozmiarStr & "<p>"
%>
<BODY>
<%
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
%>
</P><P ALIGN='CENTER'>
<%
iNast = iBiezacaStr + 1
iPoprz = iBiezacaStr - 1
iOst = iLiczbaStr
iPierw = 1
Response.Write "<INPUT id=button1 type=button value='Pierwszy' name=button1 onclick='mSkocz(" & iPierw & ")'>"
Response.Write "<INPUT id=button2 type=button value='Poprzed.' name=button2 onclick='mSkocz(" & iPoprz & ")'>"
Response.Write "<INPUT id=button3 type=button value='Następny' name=button3 onclick='mSkocz(" & iNast & ")'>"
Response.Write "<INPUT id=button4 type=button value='Ostatni ' name=button4 onclick='mSkocz(" & iOst & ")'>"
Function mPokazLink(mPole)
mPokazLink = "<B><A HREF='wiersz.asp?mID=" & mPole & "'>" & mPole & "</A></B>"
end function
%>
</P>
</BODY></HTML>

<%
Response.Expires = -1000 'Makes the browser not cache this page
Response.Buffer = True 'Buffers the content so our Response.Redirect will work

' If Session("UserLoggedIn") <> "true" Then
' Response.Redirect("login.asp")
' End If

mKlucz = Request.QueryString("mID")

Response.Write "<P><B>KLUCZ=" & mKlucz & "<P>"

if mKlucz <> "" then
mWhere = " where nr_inw = '" & mKlucz & "'"
end if
set cn = CreateObject("ADODB.Connection")
set rs = CreateObject("ADODB.Recordset")
' cnstr = "DSN=mssql;UID=sa;PWD=piotrola"
cnstr = "DSN=mssql;UID=inventuser;PWD=userinvent"
cn.ConnectionString = cnstr
cn.Open
rs.ActiveConnection = cn
rs.Open "Select * from sprzet" & mWhere, cnstr

Response.Write "<table FONT='Arial Narrow' ALIGN='CENTER' border='1'>" & vbCrLf
For I = 0 To rs.Fields.Count - 1
Response.Write vbTab & "<tr>" & vbCrLf

Response.Write vbTab & vbTab & "<td>"
Response.Write rs.Fields(I).Name
Response.Write "</td>" & vbCrLf

if rs.Fields(I).Type <= 14 then
mAlign = "<td align='right'>"
else
mAlign = "<td align='left'>"
end if
Response.Write vbTab & vbTab & mAlign
Response.Write rs.Fields(I)
Response.Write "</td>" & vbCrLf

Response.Write vbTab & "</tr>" & vbCrLf
Next 'I
Response.Write "</table>" & vbCrLf
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing

%>

sdsds

poniedziałek, czerwca 25, 2007

Lista plików związana z korektami:
  1. mLib_kor.js
    Biblioteka funkcji JS
    testarr.php
    Tworzenie tablicy do edycji korekt
    kor_zapisz.php
    Zapisz korektę do tablicy tymczasowej
    dok_zapisz.php
    Zapisz dokument o korekcie
    korektaZam.php
    Wejście do korekt zamówień
    dok_weryf.php

    pokazKor.php

    style_kor.css

    syle.css

    editKor.php

    kor_pobierz.php

    jestKorekta.php
    Czy jest podobna korketa w toku
    pobierzKlucz.php
    kor_form
    proc wbudowana do korekt
    dod_form
    proc wbudowana do planu










  2. Sprawy organizacyjne - serwer weglokoksowy - 192.168.254.166 (admincoig/ginewr@951)(marekw/zaq12wsx)
  3. VFP gdy wysyła znaki do internetu poprzez XMLHTTP zawsze przekodowuje je na UTF-8 (automatycznie), dlatego skrypt po stronie serwera powinien przekodować je na ISO Latin 2 (bo taki jest standard przechowania danych w polach tekstowych)
  4. Ciekawe strony:
    1. www.ajaxpro.info - przykładowa lekcja: http://www.ajaxpro.info/Examples/DataSets/default.aspx
    2. jsc.sourceforge.ne - przykłady appletów
    3. ajaxrain.com
    4. gliff - dla dzieci
  5. Usuń znaki "dziwne" w polach tekstowych
  6. Co z escape i innymi funkcjami w JS
  7. Quintura - ciekawa przeglądarka
  8. Zasoby publiczne - jarjawor
  9. Wykorzystanie możliwości InterOp Form
  10. Wybór frameworka dla AJAX - "AJAX: selecting a framework that fits" - http://www.drdobbs.com/dept/webservices/199203087
  11. Kursy ASP.NET dla JSP - http://www.learn2asp.net/jsp/Campaign.aspx?RefID=CMP001
  12. Jakis framework musi być dla JS
  13. Tigermouse - framework dla AJAX w PHP - http://tigermouse.epsi.pl/doku.php?id=otherframeworks
  14. IBM DB2 przechowuje XML natywnie - http://www.db2mag.com/story/showArticle.jhtml?articleID=191502768, uwaga na dostęp do nowych typów danych: "C/C++ and scripting solutions such as PHP and Perl often use an ODBC interface to SQL data. The DB2 CLI extends the ODBC 3.51 API with support for additional types, including the new XML type.

    When writing CLI programs, the symbolic SQL data type for XML columns is SQL_XML and the default symbolic C data type is SQL_C_BINARY. Permissible conversions include SQL_C_CHAR, SQL_C_WCHAR, and SQL_C_DBCHAR. The default precision for XML columns is 0, but it's a defined length for external routines.

    IBM is deprecating the type 2 JDBC driver for DB2 9. It suggests moving to the IBM DB2 Driver for JDBC and SQLJ, a single driver that combines type 2 and type 4 features. It supports the Java Transaction Service (JTS), Java Transaction API (JTA), JDBC 3.0 API, and SQLJ capabilities that have JDBC counterparts.

    To access DB2 from Java, developers can use static SQL with SQLJ and dynamic SQL with JDBC. Java does not have an XML type, so invoking the JDBC GetTypeInfo metadata method will report the type of an XML column as java.sql.Types.OTHER.

    Using JDBC ResultSet.getXXX methods, you can retrieve an entire XML column or a sequence from the column. When you retrieve XML data using a JDBC getXXX method, it's in a serialized string format. The getXXX method will output the result in the format corresponding to the method name (for example, getAsciiStream). In the case of ResultSet.getObject, you can cast the object to the DB2Xml type, assign it to a DB2Xmlobject and use a DB2Xml.getDB2XXX method to output the data to the desired type.

    An enhanced set of add-ins for Microsoft Visual Studio 2005 include support for building and testing .Net applications using XML data stored in DB2 9. DB2 includes providers for OLE DB and ADO.Net, including the DB2 .Net Data Provider, the OLE DB .Net Data Provider and the DB2 Data Provider for .Net Framework 2.0. The OLE DB Provider and OLE DB .Net Data Provider don't support the new XML type. To access an XML column with use the ODBC .Net Data Provider, you map it to SQL_LONGVARCHAR."


Niedziela
  1. http://www.netzgesta.de/glossy/
  2. Historia rozwoju przeglądarek - http://upload.wikimedia.org/wikipedia/commons/7/74/Timeline_of_web_browsers.svg
  3. Filozofia historii - http://www.friesian.com/philhist.htm
  4. http://popurls.com/
  5. http://web2.0slides.com/ - przegląd aplikacji web2, są aplikacje, które nawet filozofom sie nie śniły
  6. Sposoby na wydajność i osiągnięcie sukcesu (http://zenhabits.net/2007/02/top-10-productivity-hacks-overview/)
    1. Pamiętaj o MIT (most important things) w ciągu dnia (mimo wielu przeszkód)
    2. Wstawaj wcześnie
    3. Filtruj czytane przez siebie informcje
    4. Utrzymuj ład i porządek w miejscu pracy
    5. Zacznij pracę wcześniej
    6. Unikaj spotkań
    7. Unikaj niekoniecznych prac, rób to co posuwa cię do celu
    8. Zacznij dzień od najtrudniejszych zadań
    9. Pracuj bez sieci jak długo to jest możliwe
    10. Zrób coś co cię bardzo pasjonuje
  7. Yahoo GUI - np. menu jest świetne w konteście nowego Portalu AS, problem tylko jak zapewnić bezpieczny login
  8. Obserwuj stronę - ajaxian.com
  9. JayRock - implementacja JSON w .NET
  10. http://braincast.nl/samples/jsoneditor/ - edytor struktur JSON (ciekawy)
  11. Dywagacje na temat Pink Floyd - http://amix.dk/blog/viewEntry/19139
  12. MagicDom - http://amix.dk/blog/viewEntry/19196
  13. Co nowego w Google Gears - http://ajaxian.com/archives/audible-ajax-episode-21-dojo-offline-on-google-gears
  14. Nowe, rewolucyjne podejście do uwierzytelnienia - http://whobar.org/related-resources/
  15. Wynalazki Google jako API:
    1. http://code.google.com/support/bin/answer.py?answer=70654
    2. Google Account Authentication API
  16. Dean Edwards - http://dean.edwards.name/weblog/
  17. 7 technik, ktore warto poznać - http://www.digital-web.com/articles/seven_javascript_techniques/
  18. Calvin Hsia - June 21 - http://blogs.msdn.com/calvin_hsia/ - uruchom dowolny program w VFP
  19. Rick S - JavaScript dilema - http://west-wind.com/weblog/
  20. Bezpieczeństwo w MS WS- http://msdn.microsoft.com/msdnmag/issues/03/04/ws-security/default.aspx
  21. Korzystanie w WS w kliencie JS - http://www.codeproject.com/useritems/clientproxyfor_webservice.asp
  22. http://domscripting.com/book/sample/
  23. Kursy MS - http://www.learn2asp.net/web/Campaign.aspx