sobota, stycznia 27, 2007

Badanie podstawowe. Przesyłanie danych m. JS (klient) a serwerem (PHP). Po stronie serwera stosujemy 'escape' do kodowania danych i encodeURIcomponent (encodeURI) aby przesłać adresy zasobów URI. Należy zrobić i uruchomić taki przykład. Może po drugiej stronie nie trzeba niczego odkodowywać? Innym sposobem jest wykorzystanie kodowania base64. W PHP jest wsparcie ale czy w JS? Jest w nim dodatkowa biblioteka.

Z bibliotekami to należy postępować ostrożnie. Biblioteki dodatkowe są wspaniałe ale nie są oficjalnie autoryzowane przez twórców języka. Kto wie co jeszcze w środku robią? Dlatego powstała konieczność ujawniania kodu źródłowego bibliotek i innych dodatkowych komponentów języka z uwagi na podejrzenie "matactwa" w kodzie. Z drugiej strony zmuszeni do ujawnienia swego pomysłu zaklętego w kodu, twórcy bibliotek chcieli mieć z tego jakąś satysfakcję i uznanie dlatego wymyślili różne formy gratyfikacji swego pomysłu. I tak powstała zasada udostępniania kodu wg. warunków GPL.

środa, stycznia 24, 2007

Podsumowanie nie jest dostępne. Kliknij tutaj, by wyświetlić tego posta.

Gnizada w C. Zasoby:

  1. Akademickie - http://www.cs.rpi.edu/courses/sysprog/sockets/sock.html
  2. IBM - http://www-128.ibm.com/developerworks/views/opensource/libraryview.jsp:
    1. http://www.ibm.com/developerworks/edu/l-dw-linux-sock2-i.html
    2. http://www.ibm.com/developerworks/edu/l-dw-linux-sock-i.html
Standard HTML i kodowanie
W standardzie wyróżniamy następujace tagi do określenia języka:
  1. <meta http-equiv="content-type" content="text/html; charset=UTF-8"> tzw. meta tag (http://www.htmlquick.com/reference/tags/meta.html)
  2. character entity - do prezentowanie znaków nie należących do zestawu znaków dokumentu.
  3. language code np.pl
  4. country code, najczęściej występują w parze - "LanguageCode-CountryCode" np.pl-pl, en-us
A to po to aby:<p lang="es">Este es un p&aacute;rrafo en espa&ntilde;ol.</p>

Typy MIME - po to by opisać zasoby i informacje co z nimi robić (http://www.htmlquick.com/reference/mime-types.html)

URI/URL
Zasoby a świecie są definiowane przy pomocy URI (adres w sieci), URL opisuje miejsce w sieci danego dokumentu. URL składa się z protokołu (http), nazwy domeny (www.coig.com), ścieżki katalogowej ( opis/dokumentacja/) i nazwy dokumentu.

http://www.htmlquick.com - zawiera również wiele tutoriali

wtorek, stycznia 23, 2007

Pomysły:
Lub http://evolt.org/node/28553 na temat formularzy. i tu http://jeffhowden.com/code/css/forms/

http://www.trackingshot.com/ - kapitalne

http://www.pcworld.pl/news/105472/13.html - zdalny dostęp do innej maszyny

http://newsvac.newsforge.com/article.pl?sid=07/01/22/1837219&from=rss - CakePHP

http://www-128.ibm.com/developerworks/opensource/library/os-php-cake5/?ca=dgr-lnxw03CakePHP5 + 5 pomysłów IBM (http://www-128.ibm.com/developerworks/library/x-ajaxxml1/index.html) + przekształcenie XML na JSON (http://www-128.ibm.com/developerworks/library/x-xml2jsonphp/index.html)

http://pl.php.net/htmlentities

http://orangoo.com/labs/GreyBox/
Znowu wraca Java - IntelliJ IDEA jest bardzo dobrym narzędziem to tworzenia aplikacji w Javie. Na te j stronie znalazłem parę ciekawych odnośników np. do wraperów dla COM+ - http://www.teamdev.com/java_integration.jsf są podane narzędzia do integracji J ze środowiskiem Windows (JNIWrapper, ComfyJ, JExcel, JExplorer a także WinPack - bezpłatny) a to wszystko na http://www.teamdev.com/winpack/index.jsf. Odnośniki tamże do:
  1. http://www.javalobby.org/,
  2. http://www.theserverside.com/,
  3. www.refactoring.com
Warto popatrzeć na dema: http://www.jetbrains.com/idea/training/how_to_start.html
Aplikacje Java chcące być zainstalowane poprzez web (stronę) muszą korzystać z zhttp://java.sun.com/products/javawebstart/
JNIWrapper kosztuje 150 dolarów.
Ciekawostki z betanews:
  1. Hamachi
  2. Inscape
  3. VideoInspector
  4. Izarc
  5. PC Wizard 2007

Uwagi na temat implementacji korekt w PHP.
Wydaje się, że ze względu na specyfikę wymagań trzeba pójść własną drogą i zrobić skastomizowaną edycję pól w korektach. Do tego celu trzeba znależć:
  1. Obsługę zdarzeń (wybranie komórki i jej przekształcenie w input),
  2. Sprawdzanie wartości komórki z zależności od innych komórek

niedziela, stycznia 21, 2007

Świetny serwer - http://pengoworks.com/index.cfm?action=get:qforms. Daje:
  1. Formularze -qForms
  2. Mask edit
  3. Alternatywa do AJAX - iFrame
Drążyć FireBuga
Dustin Diaz - świetny blog plus prototype inny help - http://www.sergiopereira.com/articles/prototype.js.html
http://blogs.msdn.com/ie/archive/2005/05/10/416156.aspx
http://del.icio.us/popular/css - popularne w del.icio.us
http://ajax.phpmagazine.net/ahah/ - i inne
http://oat.openlinksw.com/ - fajny framework
Zasoby formularzowe:
  1. http://wufoo.com/tour/
  2. http://www.smashingmagazine.com/2006/11/11/css-based-forms-modern-solutions/
  3. http://www.dynamicdrive.com/ np.: http://www.dynamicdrive.com/dynamicindex16/
  4. http://www.dhtmlgoodies.com/ - np lista (select) pozwalająca wprowadzić nowe wartości - http://www.dhtmlgoodies.com/scripts/form_widget_editable_select/form_widget_editable_select.html, http://www.dhtmlgoodies.com/scripts/highlight-active-input/highlight-active-input.html
  5. http://www.gwtwindowmanager.org/ - manager okien
  6. Generalnie napisy dla INPUT powinny być nad elementami.


Infoxmix - procedury wbudowane
Wywołanie procedury - "execute procedure raise_price(5)" lub "execute procedure baza@servername:raise_price(5)", aby móc wywołać SP trzeba być właścicielem jej lub mieć zezwolenie na jej wykonanie (poprzez mechanizm GRANT). Inne wywołanie "execute procedure raise_price(ile=5)", gdzie "ile" to zmiena-parametr w nagłówku definiującym procedurę. Można zwrócić dane poprzez deklarację RETURNING w nagłówku oraz wykonanie RETURN. Uwaga - można zwrócić max. 32KB danych. Zwracane wielu wyników (wierszy) - poprzez stosowanie kursora.
  1. Ciekawe podcasty - http://softwareas.com/ - zawiera również dużo innych przemyśleń np. tworzenie ciekawych gradientów z poziomu linii poleceń ImageMagic . Powstał ciekawy projekt uruchamiania JS po stronie serwera - https://phobos.dev.java.net/, opiera sie na projekcie jMaki i bibliotece Dojo. Aha oto właściwa strona pddcastow/pokazów: http://softwareas.com/category/ajax/
  2. http://softwareas.com/ajaxjavascript-8-ways-to-create-graphics-on-the-fly - tworzenie grafiki
  3. Ajaxian - http://ajaxian.com/
  4. Przykłady z ksiązki "Ajax Design patterns" - http://ajaxiify.com/run/
  5. AjaxPatterns.org
  6. http://ajaxpatterns.org/Frameworks - opis frameworkow. Obrazek - http://ajaxpatterns.org/Frameworks_Matrix
  7. Jak zmienić styl standardowych kontrolek HTML - http://www.456bereastreet.com/archive/200701/styling_form_controls_with_css_revisited/
  8. http://simonwillison.net/2006/Dec/20/json/ -JSON, ale jak w PHP
  9. Przechowywanie stanu w IFrame - http://codinginparadise.org/weblog/2005/08/ajax-tutorial-saving-session-across.html jako odpowiedź na http://www.codeguru.com/cpp/i-n/ieprogram/displayinginformation/article.php/c12397__2/ i źródło http://msdn.microsoft.com/library/default.asp?url=/workshop/author/behaviors/reference/behaviors/userdata.asp
  10. Client-site Coding
  11. Ciekawy kod:

As promised, here is the complete script. Notice the last line, which assigns the externalLinks function to the window's onload event handler. This triggers the function when the document has finished loading.

function externalLinks() {
if (!document.getElementsByTagName) return;
var anchors = document.getElementsByTagName("a");
for (var i=0; i<anchors.length; i++) {
var anchor = anchors[i];
if (anchor.getAttribute("href") &&
anchor.getAttribute("rel") == "external")
anchor.target = "_blank";
}
}
window.onload = externalLinks;


AHAH - hę? co to? - http://microformats.org/wiki/rest/ahah
Asynchronous HTTP and HTML - uproszczona wersja AJAX-a, wykorzystuje JS do dynamicznego uaktualnienia strony. Używa XMLHttpRequest (XHR) do pobrania fragmentów HTML i osadznia ich na stronie przy użyciu CSS. Jest to podzbiór AJAX-a i cechuje się prostotą, przesyła fragmenty HTML (nie musi parsować XML). Dobre przy wizualizacji strony a nie dla przesyłania danych (do tego lepiej używać XML).
function ahah(url, target, delay) {
document.getElementById(target).innerHTML = 'waiting...';
if (window.XMLHttpRequest) {
req = new XMLHttpRequest();
} else if (window.ActiveXObject) {
req = new ActiveXObject("Microsoft.XMLHTTP");
}
if (req != undefined) {
req.onreadystatechange = function() {ahahDone(url, target, delay);};
req.open("GET", url, true);
req.send("");
}
}

function ahahDone(url, target, delay) {
if (req.readyState == 4) { // only if req is "loaded"
if (req.status == 200) { // only if "OK"
document.getElementById(target).innerHTML = req.responseText;
} else {
document.getElementById(target).innerHTML="ahah error:n"+req.statusText;
}
if (delay != undefined) {
setTimeout("ahah(url,target,delay)", delay); // resubmit after delay
//server should ALSO delay before responding
}
}
}
Executing Javascript

Since the browser won't execute <script> tags when changing innerHTML, you may want to apply the following function call on document.getElementById(target):
var bSaf = (navigator.userAgent.indexOf('Safari') != -1);
var bOpera = (navigator.userAgent.indexOf('Opera') != -1);
var bMoz = (navigator.appName == 'Netscape');
function execJS(node) {
var st = node.getElementsByTagName('SCRIPT');
var strExec;
for(var i=0;i<st.length; i++) {
if (bSaf) {
strExec = st[i].innerHTML;
}
else if (bOpera) {
strExec = st[i].text;
}
else if (bMoz) {
strExec = st[i].textContent;
}
else {
strExec = st[i].text;
}
try {
eval(strExec.split("<!--").join("").split("-->").join(""));
} catch(e) {
alert(e);
}
}
}
Ach te ramki.
MS wprowadził w IE 4 koncepcję ramek wewnętrznych, Netscape - ilayer. Idea MS zwycięzyła - mamy w W3C iFrame. Dzięki nim można bardzo łatwo aktualizować zawartość strony bez widocznego przeładowania - http://pengoworks.com/index.cfm?action=articles:gatewayApi.