poniedziałek, maja 28, 2007

  1. Szyfrowanie w .NET (można ją również odczytać ze strony):
  • Odpowiada za to przestrzeń System.Security.Cryptography.
  • Szyfrowanie/Odkodowanie danych jednostronne (służy autentykacji):
  • Obliczanie funkcji HASH. Wiele sytuacji wymaga przechowywania hasła bez jego znajomości. W ym celu korzysta się z tej funkcji do zapamiętania "skrótu" hasła w polu w bazie zamiast samego hasła. Minusem tego rozwiązania jest, że nie wiadomo jakie jest hasło (jeżeli ulegnie zapomnieniu, to trzeba wygenerować je na nowo). Zapewnia ona: a) mapowanie długich nazw na ich krótkie skrótu, b) skróty dla różnych łańcuchów wejściowych są praktycznie zawsze różne, c) nie można odtworzyć łańcucha wejściowego na podstawie znajomości skrótu. Są dwie implementacje tej metody: SHA1 i MD5.
  • Hash z jądrem (salted hash) - wadą poprzedniego rozwiązania jest to, że dwa łańcuchy we. produkują te same skróty. Można temu zapobiec "dosalając" dane wejsciowe innymi, specyficznymi dla użytkownika danymi np. e-mail, data uruodzenia. Jednak praktycznie stosuje się do tego generator liczb pseudolosowych, aby zapobie atakowi słownikowemu.
  • Szyfrowanie/Odkodowanie danych dwustronne. Rozróżniamy dwa sposoby: symetryczne i asymetryczne.
  • Szyfrowanie symetryczne (używając klucza prywatnego), szybkie zaszyfrowanie danych we. kluczem którego zna tylko odbiorca i nadawca (i tu leży główna słabość, klucz musi być tajny). Stosowane algorytmy: DES, RC2, Rijndael, and TripleDES.
  • Szyfrowanie asymetryczne (używając klucza publicznego, a właściwie pary: klucz publiczny/klucz prywatny), wada - bardzo obciążające procesor. Nadaje się tylko dla małych porcji informacji.
  • Rozróżniamy dwa komplementarne scenariusze:
  • Susan wysyła dane do Boba szyfrując dane jego kluczem publicznym, Bob i tylko on (ponieważ ma drugi element pary - klucz prywatny) może dane rozszyfrować. Metoda ta zapewnia szyfrowanie informacji.
  • Susan wysyła dane do Boba szyfrując je swoim kluczem prywatnym, Bob korzystając z ogólnie dostępnego klucz publicznego Susan może odczytać informację (ale nie tylko on). Ta metoda zapewnia niezaprzeczalność otrzymanej informacji.

Zasoby na poniedziałek:

  1. http://www.onlamp.com/pub/a/onlamp/2007/04/05/the-lighttpd-web-server.html - serwer lighttp, specjalna odmiana serwera wzorowana na Apache, ale bardzo lekka. Ogrzebano moduł fastCGI. Apache czasami jest bardzo wolny i ma różne implementacje wieloprocesowości tzw MPM (multi-processing-model): a) prefork - zawczasu generuje pulę procesów i nią zarządza (powoduje to duży narzut na RAM - 30 MB) lub b) worker - stosuje wielowątkowość (można zyskać na szybkości działania, ale serwer i jego wszystkie komponenty i moduły muszą być tzw. threadsafe. Apache 2.0 i mod_php są, ale inne moduły już nie). Autorem jest Niemiec, Jan Kneschke (2003).
  2. http://ajaxwidgets.com/AllControlsSamples/ - Gaia projektAJAX
  3. www.dzone.com - ciekawy, szczególnie snippety: http://snippets.dzone.com/
  4. Jak naprawdę rozpocząć przygodę z Eclipse i Tomcat-em - http://www.devarticles.com/c/a/Java/Getting-Started-with-Java-Web-Development-in-Eclipse-and-Tomcat/3/

piątek, maja 25, 2007

Myśli:
  1. Instalacja VPN dla Staszic
  2. Poprawienie wydruków
  3. Kocierz - kontrolka do Excela z pobraniem danych z Internetu
  4. Opracuj "moje" pomysły na tworzenie oprogramowania(wypróbuj CR, google API)
  5. Tutaj mamy - http://joeon.net/AJAX_Frameworks_List.htm - listę wszystkich frameworków do AJAX-a, należy zwrócić szczególną uwagę na ten, które mają wsparcie dla JSP/Java lub JEE oraz wspierające siatki danych - firma nitobi. Dodatkowo:
    1. http://wiki.apache.org/incubator/xap
    2. http://gi.tibco.com - TIBCO
    3. http://ajaxwidgets.com/get_excited.aa - w ASP.NET
    4. http://jsc.sf.net for examples - C# świetna!!! - przykład interakcji appletu z JS
  6. Przesyłanie dużych ilości danych (>1GB) - wiele jest serwisów - np. xdrive (źródło )
  7. Pamiętasz o SELENIUM (FireFox)
  8. Serwis dzone.
  9. JSON może być niebezpieczny - Bruce Shneier
  10. Wyjaśnienie dlaczego "svhost" tak szaleje - http://entmag.com/news/article.asp?EditorialsID=8596 - jest na to poprawka MS z 23.05
  11. Program w IDG dla animacji GIF na podstawie filmu - movie2gif.zip
  12. 'Popfly' To Help Bring Silverlight to the Masses
  13. Nowe polityka MS w zakresie rozszerzenia dostępu i wsparcia do języków dynamicznych, obok IronPython ma być też Managed JScript i Ruby. Chodzi o projekt DLR (dynamic language runtime) i Silverlight. Można to ściągnąć stąd http://www.asp.net/downloads/futures/default.aspx?tabid=62.
  14. Ciekawe linki:
    1. http://msdn2.microsoft.com/en-us/asp.net/default.aspx - główna strona ASP.NET
    2. http://www.codeproject.com/Ajax/AjaxASPdotNET.asp - jak rozpocząć przygodę z AJAX-em
    3. http://www.codeproject.com/useritems/C__Instant_Oracle.asp - prosty program jak rozpocząć przygodę z Oraclem w C#
    4. http://www.oracle.com/technology/tech/java/ajax.html - co ma Oracle do powiedzenia odnośnie AJAX-a
    5. http://www.oracle.com/technology/tech/java/ajax.html - płatny portal developerów
    6. http://ejohn.org/apps/jselect/event.html
    7. http://json.org/JSONRequest.html - J(son)AJAX zamiast AJAX

środa, maja 16, 2007

Stylowe style
  1. Świetny tutorial na temat stylów w listach, selektorach, ramkach pływających - http://css.maxdesign.com.au/index.htm
  2. Strona prowadzona przez grupę zwolenników standardów webowych, pragmatyków i antagonistów W3C - http://www.webstandards.org/buzz/#a000203
  3. Lekcje na temat DOM - http://www.webstandards.org/2006/10/18/video-presentation-douglas-crockford-on-the-theory-of-the-dom/
  4. Polepszenie dostępności formularzy - http://www.webaim.org/
  5. To jest źródło tych artykułów - http://www.456bereastreet.com/lab/developing_with_web_standards/full/

piątek, maja 11, 2007

Piątek - weekednu początek:
  1. Dla mojego domowego notebooka - FinalBurner Free (nagrywa nawet DVD) - fb_free.exe
  2. Dla developerów IE - IEDeveloperToolBar - wersja 1.0, to dopiero początek
  3. Co trzeba spełnić w IE 7 (http://blogs.msdn.com/ie/archive/2006/02/14/532211.aspx):
    1. E7 includes an enhanced experience for sites that include upcoming higher assurance SSL certificates including the lock icon with a green filled address bar. Along with other browsers, the Certificate authority industry is working with us towards a tougher SSL standard for the enhanced experience. This past Sunday and Monday, we met to work on the standard with the American Bar Association here in San Jose. The certificate authorities who coolaborated with us this weekend include Geotrust, Verisign, Identrus, Comodo, Cybertrust, Go Daddy and X-Ramp. To see what the experience will be like, you can try out the enhanced experience by downloading a test root certificate and then visiting our demo site using IE7 Beta 2 Preview. If you think your site should have this experience, contact your certificate authority to learn about their plans to offer higher assurance SSL certificates that will be recognized by the IE7 address bar.
    2. In the upcoming Beta 2 release, IE7 will let users sign into web sites using visual "InfoCards" rather than passwords. This eliminates a number of common attacks because when no password is typed, there is none to be stolen (and none to forget). The "InfoCard" system uses certificates to make it harder for imposter sites to pass themselves off as genuine.
    3. IE7 checks the signatures on downloaded programs such as ActiveX controls and executables to make it easy for customers to identify your code. If you distribute software over the internet, you should sign your code with a valid code signing certificate.
  4. Funkcjonalność usunięta z IE 7 (http://msdn2.microsoft.com/en-us/ie/aa740486.aspx):
    1. Offline Favorites--Offline Favorites and Scheduled Offline Favorites have been removed from Internet Explorer 7. Internet Explorer supports RSS feeds, which provide scheduled updates to web content and offline reading of this content. For more information about RSS feeds, read the RSS Blog.
    2. Scriptlets--Internet Explorer 7 disables Dynamic HTML (DHTML) scriptlets by default. (Scriptlets were phased out in Internet Explorer 5). They can be re-enabled by system administrators by changing the advanced settings in the Internet Control Panel. To change the setting, open Internet Explorer, click Tools, and then click Internet Options. In Internet Options, click the Advanced tab, and then scroll down to find Allow Scriptlets. If you are a developer and your programs rely on scriptlets, we recommend that you use more efficient DHTML behaviors. Disabling scriptlets by default is done to deemphasize unsupported technology in Internet Explorer.
    3. ActiveX controls--The new Internet Explorer 7 ActiveX Opt-In feature disables ActiveX controls on a user's machine. When the user visits a webpage that is trying to use a disabled ActiveX control, they see an Information bar to enable the control. Controls which were used in Internet Explorer 6 before upgrading to Internet Explorer 7, along with some pre-approved controls, are not disabled.
    4. Channel Definition Format (CDF)--All CDF support was removed from Internet Explorer 7 and replaced with the RSS feed reading experience. Feeds that the user is subscribed to are available to other applications through the RSS Platform. For details, read the RSS Platform.
    5. DirectAnimation--All DLLs to support the Internet Explorer DirectAnimation component were removed in Internet Explorer 7.
    6. XBM-- XBM, an imaging format designed for X-based systems, is no longer supported.
    7. SSL--Support for weak SSL ciphers was removed from Windows Vista and support for SSLv2 was disabled for Internet Explorer 7 on all platforms.
    8. BASE Element--Internet Explorer 7 strictly enforces the BASE element rule, as documented in the HTML 4.01 standard. We no longer allow BASE tags outside of the HEAD of the document. The standard specifies that the base element must appear within the head of the document, before any elements that refer to an external source.

    9. window.opener and window.close--Internet Explorer 7 no longer allows the window.opener trick to bypass the window.close prompt. Browser windows cannot close themselves unless the windows were created in script. This security enhancement no longer allows browsing to a random site when the main browser window closes unexpectedly.

    10. Changes that affect modal or modeless dialogs created from script--Modal or modeless dialogs created from script in Internet Explorer 7 might seem to be slightly bigger than their Internet Explorer 6 counterparts. This is caused by a change to the behavior of the dialogWidth and dialogHeight properties, which now set and retrieve dimensions of the content area of a dialog (from Internet Explorer 7 and later). It will no longer be necessary to calculate the area lost by elements of a dialog’s frame. Information on these changes will be posted on the Internet Explorer Blog.

    11. Generic Spoofing Risk Reduction in Internet Explorer 7--The window.prompt script method is blocked and the gold Information bar is displayed by default in Internet Zone for Internet Explorer 7. The helps prevent websites from spoofing things such as the logon screens of other websites. This is a new security enhancement for Internet Explorer 7.

    12. WWW-Auth--Internet Explorer 7 changes the precedence rules for WWW-Auth. Previous releases of Internet Explorer used the first header encountered. Internet Explorer 7 uses the first header except when the header is Basic. Internet Explorer 7 uses Basic authentication if no other authentication mechanism is present.

    13. HTTPOnly Cookies--HTTPOnly cookies can no longer be overwritten from scripts.

      _SEARCH--The _SEARCH sidebar is disabled by default in Internet Explorer 7. It is now a setting and can be turned by checking Enable websites to use the search pane in the Advanced tab of the Internet control panel.

      View Source--The view-source protocol no longer works in Internet Explorer 7.

      Gopher Protocol--Support for the Gopher protocol was removed at the WinINET level. (Gopher support was turned off by default in Internet Explorer 6.)

    14. window.external.ImportExportFavorites--window.external.ImportExportFavorites has been removed in Internet Explorer 7.

      Telnet--The Telnet protocol handler is no longer supported in Internet Explorer 7.

    15. SysImage URL Scheme--The SysImage URL Scheme has been removed from Internet Explorer 7.

      Status Bar Scripting--Scripts will no longer be able to set the status bar text through the window.status and window.defaultStatus methods by default in the Internet and Restricted Zones. This helps prevent attackers from leveraging those methods to spoof the status bar. To revert to previous behavior and allow scripts to set the status bar through window.status and window.defaultStatus, follow these steps:

      1. Open Internet Explorer, click the Tools button, click Internet Options, and then click the Security tab.
      2. Click Internet or Restricted sites, and then click the Custom level button.
      3. Scroll down to Allow status bar updates via script, select Enable.
      4. Click OK until you return to Internet Explorer.
    16. Security Settings for Script Access to the Clipboard--New security-related updates for Microsoft Internet Explorer 7 include a change in the default security settings for Script Access to the clipboard. Sites using scripts to access the clipboard in the Internet and Trusted sites zones will receive a prompt that will inform the user that their clipboard is being accessed by script. The prompt will require user permission to continue. Giving permission will allow the website to save information to the clipboard, and read any existing information from the clipboard. This security setting is designed to help prevent the possibility of information disclosure through script access to the clipboard.
    17. Installing Internet Explorer 7 with The Microsoft Windows Server® 2003 operating systems with Service Pack SP1 (SP1)--The home page will be reset to the secure page (res://shdoclc.dll/hardadmin.htm).
    18. Upgrading from Internet Explorer 6 to Internet Explorer 7 on Windows Server® 2003 operating systems with Service Pack SP1 (SP1)--Users upgrading from Internet Explorer 6 to Internet Explorer 7 on Windows Server® 2003 with the setting Enhance Security Configuration turned on might notice that the machine will not be set to the correct Enhanced Security Configuration (Internet Explorer Hardening) defaults for Internet Explorer 7. To change the settings back to the correct defaults, an administrator should turn OFF Enhanced Security Configuration and then turn it ON again. To do this,
      1. Open the Control panel.
      2. Select Add/ Remove Programs.
      3. Locate the Enhanced Security Configuration option.
      4. Turn it OFF.
      5. And now turn it ON again.
      6. Your server settings would be set to the correct Enhanced Security Configuration defaults for Internet Explorer 7.
    1. Active Desktop--Active Desktop has been removed from Windows Vista. It is still available on 32-bit versions of Windows 2003 Server and Windows XP SP2 with reduced functionality. The following features have changed:
      1. Synchronization of Active Desktop with online content is no longer supported.
      2. The ability to restore Active Desktop if software or the operating system stops responding is no longer supported.
      3. The Active Desktop item’s window does not show the title of the webpage (it shows the address of the webpage).
      4. For a webpage restricted by Content Advisor, the Action Cancelled page is not displayed.
  1. Skype 3.2 Gold - nowe możliwości.
  2. Concept Draw - witryny http://www.giveawayoftheday.com/
  3. Ciekawe programy -www.dobreprogramy.pl

czwartek, maja 10, 2007

Co nowego w czwartek:

  1. W betanews - nowa wersja Yahoo widgets
  2. Część pierwsza świetnego tutoriala do uruchomienia na platformie AIX środowiska PHP/JAVA - ciekawe czy będą nastepne? Są dwa sposoby na uruchomienie tych dwóch technologii: "There is no convenient direct link between Java and PHP technology—they are two different technologies using completely different logic, binary, and deployment environments. However, one way that you could enable both systems to communicate with each other is to employ Service-Oriented Architectures (SOAs) and Web services to exchange information. In this example scenario, you would expose your Java application through a series of Web services. The PHP application would then act as a Web services client to communicate with the Java Web services interface.

    The other alternative is to use the PHP Java Bridge, which provides a direct object interface that allows you to share Java and PHP code directly within the same application."

  3. Nowy atak SUN w kierunku upowszechnienia Java w środowisku NetBeans - powstaje wersja 6 (oferowana jako early access na konferencji JavaOne), która umożliwi uruchamianie JavaScript i Ruby (JRuby w środowisku JVM). Język JS będzie potraktowany jako pełnoprawny obywatel w tym RAD. Ogólna dostępność - koniec 2007.
  4. Zalecenia odnośnie jak tworzyć w JS (autorstwa doświadczonego programisty Mat Kruse)
  5. Nowy rywal dla Google Apps - "Bringing OpenOffice to the Internet,” Mahdi Abdulrazak, Chief GravityZoo Evangelist, proclaimed to me."
  6. Ciekawe linki z VFP - http://www.cetus-links.org/oo_visual_foxpro.html - duże zasoby do sprawdzenia (źródło - http://www.foxclub.ru/)
  7. http://www.computerworld.com.au/index.php?id=1472160102&eid=-301 - dywagacje na temat PostgreSQL prowadzone przez autora.
  8. Nowy, ciekawy portal dla PHP - http://www.codewalkers.com/ coś ala developershed (http://www.devshed.com/c/a/Oracle/Data-Manipulation-and-More-for-HTML-DB-Applications/)
  9. Stosowanie MS SQL 2005 z produktami Expression - http://www.sqlservercentral.com/articles/articlelink.asp?articleid=2993
  10. Tutorialsy na różne tematy - http://www.tutorialdownloads.com/tutorials/C%20SHARP/C%20sharp-books-shelf1.html
  11. Dev shed na teamt Flex-a
  12. Zrozumieć JS - http://www.devshed.com/c/b/JavaScript/

środa, maja 09, 2007

Ciekawe artykuły:
  1. http://www.lifetrainingonline.com/blog/how_to_read_people.htm
  2. http://www.devx.com/dotnet/Article/32421/0/page/1 -dekorowanie właściwosci w C#
  3. http://news.zdnet.com/2100-3513_22-6181922.html?tag=nl.e539 - Sun być może na konfrencji JavaOne ogłosi udostępnienie JavaFX script - uproszczonego język skryptowego do Javy
  4. http://www.oracle.com/technology/tech/oci/instantclient/index.html - dostęp do bazy 10gi bez konieczności "zabawiania się" plikami i zmiennymi konfiguracyjnymi.
  5. http://www.javascripttoolbox.com/bestpractices/ - Mathew Kruse - rady dla JS
  6. http://bignosebird.com/ - kolejny poradnik dla webmasterów
  7. http://www.codeproject.com/useritems/C__Instant_Oracle.asp - jak wystartować w C# z programowaniem do bazy Oracle 10gi przy pomocy "instant" oracle
  8. http://davidhayden.com/blog/dave/archive/2006/03/14/2883.aspx - blog dewelopera w C#
  9. http://www.eol.org/home.html
  10. http://www.motherearthnews.com/gallery.aspx?id=113446
  11. http://www.ndesign-studio.com/blog/mac/css-dock-menu
  12. http://brainden.com/logic-puzzles.htm

wtorek, maja 08, 2007

Wtorek 8 maja:
  1. Ciekawe na temat możliwości JS - JavaScript allows you to perform an assignment at the same time as testing if the assignment worked. This can be used inside any conditional, including inside an 'if', 'for', 'while' and 'do - while'.

    if( x = document.getElementById('mydiv') ) {...}
    do {
    alert( node.tagName );
    } while( node = node.parentNode );

    Note that Internet Explorer on Mac will produce an error if you try to do this with an array, when it steps off the end of the array.

  2. To samo dotyczy instrukcji break, podobnie działa continue -
    myForLoop:
    for( var x = 1; x < 5; x++ ) {
    var y = 1;
    while( y < 7 ) {
    y++;
    if( y == 5 ) { break myForLoop; }
    document.write(y);
    }
    }
  3. DHTMLxGrid - dhtmlxGrid is flexible JavaScript grid control with powerful API and Ajax support. It provides client-side solution for displaying, editing and sorting tabular data. Using dhtmlxGrid you can easily create dynamic tables with scroll bars, frozen columns, fixed multiline headers and multiple cell types (text, image, checkbox, radio button, combobox etc.). Smart rendering and paging output allow this grid to work effectively with large datasets.
  4. Biblioteka w JS dla base64 i sprintf (document.writeln('Result: ' + sprintf("Decimal %+05d, Float %07.2f, String '%-10.4s', Hexadecimal %05X", 123, 123, 'abcdefg', 123123));).
  5. To wszystko powyższe wziąłem z http://www.roscripts.com/.
  6. Writing after the page has loaded

    After the page has completed loading, the rules change. Instead of adding content to the page, it will replace the page. To do this, you should firstly open the document stream (most browsers will automatically do this for you if you just start writing). Then you should write what you want, and finally, you should close the document stream. Again, most browsers will automatically close the stream for you. The notable exception here is the Mozilla/Firefox family of browsers, that will continue to show a loading graphic until you close the stream. Some other browsers may fail to render part or all of the content. Just to be safe, make sure you always close the stream.

    <script type="text/javascript">
    document.open();
    document.write('<p>What ever you want to write</p>');
    document.write('<p>More stuff you want to write</p>');
    document.close();
    </script>

    That will remove everything that is currently being shown and replace it with what you write in there. This is the equivalent of moving the user to a completely new page. You should put <html> tags and things like that in there too if you want to use that method.

    You may notice that I close my HTML tags inside the script with a backslash before the forward slash in the closing tag. This is a requirement of the specification (and can cause the HTML validator not to validate your page if you forget it), although all browsers will understand if you omit the backslash.

    However, since you can write HTML with script, you can write style or even script tags with it, making one script import another. If you omit the backslash on any </script> tags that you are writing with the script, the browser will read that as the closing tag for the current script, and your script will fail.

    The same applies to opening or closing comments (although I fail to see why you would want to write comments using a script). These can be written as '<'+'!--' and '-'+'->'. When the script runs, the plus sign tells it to append the strings, creating a valid HTML comment.

  7. Ciekawe dywagacje na temat funkcji - http://www.howtocreate.co.uk/tutorials/javascript/functions
  8. Zabezpieczenie tarnsmisji -

    Normally, this cannot be done with JavaScript using the Internet alone. You can encrypt text at the user's end and unencrypt it at your end. The problem is that the user has to encrypt it with a password that you know so that you can unencrypt it. They would have to tell you by telephone or post. Alternatively, you could put the password in the source of the page and get the function to encrypt using that key. But this password would have to be sent over the internet in plain text. Even if you did encode it, it would not be too much work for a snooper to crack it. In fact, the encryption could even be broken with brute force techniques. So what do you do?

    The best possible technique would be to create a symmetric encryption key using a twin public/private key pair as with techniques such as Diffie-Hellman or SSL, or use an asymetric public/private key pair and encryption technique as with PGP or RSA. The problem is that in order to prevent brute force cracking techniques, these require the browser to handle numbers as high as 2x10600 or higher. JavaScript is just not natively capable of working with numbers as high as this. As yet, I have found no solution to this, although on http://shop-js.sourceforge.net/ there is an algorithm for emulating large number handling, and an example of JavaScript powered RSA. The technique seems to work and takes only a few seconds to create keys, by using complex mathematics and algorithms (look at the source of crypto.js) to emulate large number handling.

    Even so, if doing the equivalent of RSA (etc.), it is still not possible for the user to verify your identity as with SSL certificates, so it would be possible for a third party to inject their own code and have the information sent to them instead, without the user's knowledge. For the best security, stick to real SSL.

  9. Obiekty z JS - http://www.howtocreate.co.uk/tutorials/javascript/javascriptobject.
  10. Struktura DOM - http://www.howtocreate.co.uk/tutorials/javascript/domstructure

sobota, maja 05, 2007

Nowe pomysły:

  1. Kontrolki webowe zbliżają się w swojej funkcjinalności i wyglądzie do kontrolek natywnych WINDOWS. Tylko wtedy aplikacje typu ajax mogą wyprzeć wszystkie aplikacje client/server.
  2. http://www.owlfish.com/software/simpleTAL/ - TAL-e ale bez narzutu Zope (niestety tylko Python).
  3. Papervision 3D nie był pierwszy - http://www.actionscriptarchitect.com/2007/02/28/flash-video-on-3d/
  4. Jak sterować Visio poprzez VFP - http://www.aksel.com/whitepapers/VisioAutomation.htm
  5. Ciekawa definicja (http://www.higheredblogcon.com/webdev/lawson/index.html): The DIV and SPAN elements, in conjunction with the id and class attributes, offer a generic mechanism for adding structure to documents. These elements define content to be inline (SPAN) or block-level (DIV) but impose no other presentational idioms on the content.
  6. Ciekawy link do VFP - http://www.thefoxshow.com/ i ciekawy blog - http://akselsoft.blogspot.com/
  7. Miejsce gdzie są darmowe szkolenia z technologii MS wspierane przez Dr.Dobbs - http://www.learn2asp.net/?RefID=CMP001
  8. http://weblogs.foxite.com/vassilisaggelakos/archive/2007/04/24/3726.aspx - o rysowaniu przy pomocy GDI+ w VFP.
  9. Porady na temat REPLACE - To summarize, follow these rules when using REPLACE: -
    1. Always use the "IN" clause!
    2. Examine decimal data and decide if boundary checks are necessary before a REPLACE.
    3. _TALLY will let you know if a REPLACE occurred. If you want to be absolutely sure that a REPLACE happened, you can try to ASSERT _TALLY>0 after your REPLACE command. This will alert you while testing your application that a REPLACE didn't occur.
  10. Porównanie implementacji SQL - http://troels.arvin.dk/db/rdbms/
  11. Ciekay blog natemat VFP - http://todmeansfox.blogspot.com/2006_12_01_archive.html
  12. Projekty VFP na codeplex

sobota, kwietnia 21, 2007

Linki z soboty:
  1. http://dbachrach.com/blog/2007/04/15/spotlight-like-search-as-you-type-with-css-ajax-js/ - ciekawe podejście i wykorzystywanie js. Zawiera również odnośnik do przykładów editInPlace.
  2. Przykłady:
  3. function hideSearchTypes (i,j) {
  4. var theDiv = document.getElementById(j).getElementsByTagName(‘li’);
  5. for(var d = 1; d < theDiv.length; d++) {
  6. var theID = ‘res-’+i+‘-’+d;
  7. document.getElementById(theID).style.display = ‘none’;
  8. }
  9. }
Inny przykład:
  1. <form id="search_form" action="" method="get">
  2. <input type="text" value="" name="q" id="q" autocomplete="off" onkeyup="doSearch();" />
  3. <input type="image" id="search_image" onclick="doSearch();return false;" src="search_icon.png" alt="Search" />
  4. </form>
  5. <div id="searchResultsDiv">
  6. Start typing. Your results will show below instantly.
  7. </div>
Biblioteka google - http://code.google.com/p/jslibs/wiki/JavascriptTips - przeznaczone do obsługi biblioteki seamonkey (silnika JS w Mozilli)

  1. Binary with XmlHTTPRequest

    var req = new XMLHttpRequest();
    req.open('GET', "http://code.google.com/images/code_sm.png",false);
    req.overrideMimeType('text/plain; charset=x-user-defined');
    //req.overrideMimeType('application/octet-stream');
    req.send(null);
    var val = req.responseText;
    Print( escape(val.substr(0,10)) );

poniedziałek, kwietnia 02, 2007

Linki poniedziałek 2 kwietnia
http://worrydream.com/MagicInk/
http://www.mozilla.org/js/spidermonkey/tutorial.html - emulator JS napisany w C
http://developer.mozilla.org/en/docs/Introduction_to_the_JavaScript_shell - powłokado uruchamiania skryptów w JS
http://www.spket.com/features.html - nowe IDE dla JS w środowisku Eclipse
http://code.google.com/p/clipperz/ - biblioteka funkcji kryptograficznch w JS
http://www.clipperz.com/learn_more/crypto_foundations - więcej informacji na ten temat
http://erik.eae.net/archives/2005/09/15/00.18.07/
http://erik.eae.net/archives/2005/09/14/13.42.07
http://blogs.msdn.com/ie/archive/2005/09/13/465338.aspx

sobota, marca 31, 2007

Pomysły Ajaxowe: na bazie http://www.miniajax.com/
http://prototype-window.xilinus.com/download.html
http://orangoo.com/labs/GreyBox/
http://www.pjhyett.com/posts/190-the-lightbox-effect-without-lightbox
http://www.amcharts.com/pie/
http://www.robertnyman.com/ask/content.php
http://www.solutoire.com/plotr
http://livepipe.net/projects/control_modal/

piątek, marca 30, 2007

Komunikat
W związku z planowanym wprowadzeniem szerszego wykorzystania bezpiecznego podpisu cyfrowego w aplikacjach internetowych Portalu AS wynikają następujące problemy techniczne:
  1. Wsparcie dla platform systemów operacyjnych MS Windows (koniec życia niektórych wersji klienckich)
  2. Wsparcie dla różnych przeglądarek internetowych (standaryzacja wersji)
  3. Bezpieczny dostęp do lokalnych zasobów komputerów klienckich
Proponujemy następują rozwiązania powyższych problemów:
  1. W związku z zakończeniem w zeszłym roku wsparcia technicznego firmy MS dla MS Windows 98 oraz zaleceniami wystawcy certyfikatów firmą Sigillum sugerujemy szybkie przejście na nowsze wersje klienckich systemów operacyjnych tj. zalecamy MS Windows XP SP2 (koniecznie z aktualizacją SP2) lub MS Vista
  2. Dostęp do Internetu możliwy jest poprzez różnego rodzaju oprogramowanie użytkowe. Szczególnie rozpowszechnione jest, z uwagi na dostępność, programowanie narzędziowe zwane przeglądarkami Internetowymi. Nie są one wszystkie w pełni zgodne ze standardami W3C i WASP. Dlatego zalecamy użycie wbudowanej (i zintegrowanej z systemem) w system operacyjny MS Windows, a więc dostępną od zaraz, przeglądarki MS Internet Explorer w wersji 7. Stosowanie jej powoduje zwiększoną ochronę i automatyczną comiesięczną aktualizację pod kątem różnych zabezpieczeń przed atakami z sieci. Dodatkowo pozwala na pełną i lepszą obsługę oprogramowania dostarczonego i rozwijanego przez firmę Sigillum (można wykorzystać całą jej funkcjonalność). Zwiększy to też ergonomię i szybkość pracy tj. w odniesieniu do funkcjonalności Portalu AS pozwoli na składanie bezpiecznego podpisu cyfrowego w przeglądarce bez konieczności instalowanie i uruchamiania oprogramowania dodatkowego (obecnie do podpisania zamówienia konieczny jest program kliencki Klient Portalu AS popularnie zwany 'liskiem'). Oczywiście można stosować do obsługi Portalu AS inne przeglądarki internetowe w tym przypadku zalecamy oprogramowanie Firefox ("ognisty lisek") w wersji 2 lub wyżej. Może jednak nastąpić pewna utrata funkcjonalności i komfortu pracy np. do podpisania dokumentu trzeba będzie zainstalować dodatkowe oprogramowanie, które należy ściągnąć na naszej witryny.
  3. Przez dostęp do lokalnych zasobów należy rozumieć przede wszystkim obsługę podpisu cyfrowego na karcie inteligentnej i czytnika kart. Wszystkie przeglądarki mają wbudowany "szlaban" na dostęp do zasobów lokalnych użytkownika. Gdyby tego nie było, złośliwe oprogramowanie z Internetu mogłoby spowodować niewyobrażalne szkody w zasobach na komputerze użytkownika Internetu np. od przechwycenie kont i haseł dostępu do banku, poprzez kradzież dokumentów aż po zniszczenie zawartości dysków twardych (i wszystkich danych). Dlatego próba dostępu do czytnika kart oraz zawartości na kartach inteligentnych (certyfikat i klucz prywatny) z poziomu przeglądarki jest utrudniona. Dlatego należy stosować "zaufane" przeglądarki oraz "zaufane" oprogramowanie systemowo-narzędziowe, w przypadku platformy Microsoft jest to przeglądarka MS Internet Explorer, oprogramowanie obsługi kryptografii firmy Microsoft MS CAPICOM wersja 2 lub wyżej, platforma MS .NET oraz homologowane biblioteki do składania podpisu cyfrowego firmy Sigillum. Istnieje dodatkowa możliwość obsługi podpisu cyfrowego poprzez napisanie programu klienckiego uruchamianego lokalnie i wysyłającego dane (podpisane dokumenty) do serwera internetowego. Tak właśnie działa Klient Portalu AS. Po jego zainstalowaniu na komputerze lokalnym macie Państwo możliwość składania podpisu pod dokumentami zamówień. Udostępniamy teraz nową wersję tego oprogramowania. Nowa wersja pozwala bezpiecznie przeglądać i podpisywać nie tylko te dokumenty związane z zamówieniami ale również inne np. korekty do zamówień. Dodatkową cechą nowej wersji jest jej specjalizacja - można tylko przeglądać i podpisywać dokumenty, dlatego nikomu nie będzie się "myliło" w jakim środowisku pracuje (przeglądarce internetowej gdzie wszystko "działa" z wyjątkiem podpisu czy w "lisku" gdzie "kuleje" awizacja i upoważnienia). Teraz uruchomienie nowej wersji Klienta Portalu AS pozwala tylko podpisywać. Ta nowa wersja jest dedykowana szczególnie dla użytkowników, którzy chcą stosować inne wersje przeglądarek internetowych oprócz MS IE 7.

poniedziałek, marca 19, 2007

Znowu WS security w wykonaniu Oracle
http://www.oracle.com/technology/oramag/oracle/05-jan/o15web.html
  • WS posługuje się protokołem HTTP, dlatego wszystkie metody zabezpieczenia tego całego protokołu (czyli na poziomie warstwy transportowej) nadal obowiązują (autentykacja bazowa, SSL). Niestety rozwiązania te mimo, że są skuteczne (efektywne) ale niewygodne z uwagi na potrzebę zabezpieczenia samej koperty SOAP (a więc na znacznie niższym poziomie szczegółowości). Wynika to z dwóch przesłanek
    1. dane zawarte w kopercie przechodzą wiele kroków pośrednich, wynikających z potrzeb integracji rozwiązań i niepożądanym jest aby były zapisane w "czystym" tekście.
    2. koperty SOAP skaczą po całym Internecie, nie można zagwarantować gdzie się znajdą (przesłanka mniejszej wagi)
  • Z tego wynika potrzeba zabezpieczenia kopert SOAP niezależnie od protokołu (zamiast HTTP może być wybrany inny protokół np. SMTP) oraz potrzeba zawarcie w kopercie obok danych również dodatkowych informacji o zabezpieczeniach i adresacie przesyłki
  • OASIS wydało w 2004 rekomendację w tym zakresie pt. "WS-Security", wprowadzając mechanizmy zabezpieczeń na trzech poziomach:
    1. authentication tokens - żetony autentykacji pozwlające na wysłanie w nagłówku komunikatu SOAP pary użytkownik/hasło lub certyfikatu X.509,
    2. XML encryption - pozwala na szyfrowanie danych całego lub części komunikatu (w przypadku O Appication Server 10g rel. 10.1.3 są to 3DES, AES-128 i AES-256.
    3. XML Digital Signature - podpis cyfrowy (hash) treści przy pomocy DSA-SHA1, RSA-SHA1/MD5 lub HMAC-SHA1

wtorek, marca 13, 2007

AJAX=JAVA
Tworzenie aplikacji w Javie na serwerze niezmiennie polega na posiłkowaniu się frameworkiem. mamy do wyboru JSP (wzmocnione przez STRUTS lub SPRING), lub bardziej skomplikowany TAPESTRY lub WICKET. W prostych apliakcjach można posłużyć się prostymi środkami np:


Można np. wybrać DWR (Direct Web Remoting) jako implementację AJAX-a. Jest to klasyczne podejście polegające na odwróceniu kota ogonem tj. wywoływaniu na serwerze klas do generowania JS po stronie klienta (podobne podejścia prezentuje SAJAX czy XAJAX) tak samo jak Google GWT. Unika się konieczności programowania w dwóch językach (JS po stronie klienta i Java po stronie serwera)


niedziela, marca 11, 2007

Bezpieczenstwo WS wersja IBM
  1. https://www6.software.ibm.com/developerworks/education/dw-rt-secureservices/section6.html -Build Secure WS - świetny wstęp zawiera odwołanie do dokumentacji (handbook ), a w niej jest szczegółowy opis. IBM wychodzi trochę przed orkiestrę implmentując obok standardowego podejścia -document SOAP, drugie rozwiazanie rpc SOAP. Dodatkowo w komunikatach stosuje mapowanie danych z XML na odpowiedniki w Javie.
  2. Kolejny zasób to mapa drogowa bezpieczeństwa WS - też IBM
  3. Wymogi bezpieczeństwa WS:
    1. WS wymaga autentykacji (dowiedz, że jesteś tym za kogo się powołujesz) - do tego celu używa się:
      1. bazowej autentykacji lub
      1. opartej na żetonach (Kerberos lub PKI) - UsernameToken 1.0, X.509 Certificate Token 1.0
      1. Autentykacja bazowa wymaga stosowania SSL z uwagi na jawność przesyłanie konta i hasła. Robi się to przy pomocy konsoli administratora, proces podobny do MS WSE.
    1. Poufność - uzyskuje się poprzez szyfrowanie dokumentu XML lub jego części i dodanie węzła <wsse:Security>. Szyfruje się kluczem symetrycznym, który przesyła się do odbiorcy zaszyfrowany jego kluczem publicznym. Odbiorcy odszyfrowuje swoim kluczem prywatnym otrzymany zaszyfrowany klucz symetryczny i już może odszyfrować nim treść <body>.
    2. Integralność - można zaszyfrować treść (body) komunikatu lub klucz symetryczny służący do szyfrowania, bądź znacznik czasu (timestamp).
  4. Maszynką do uruchamiania i tworzenia aplikacji jest WebSphere Application Server V6.0 i nowy 6.1. Mechanizmy implementacji WS w obu maszynach wirtualnych są różne (standard się rozwijał + inne wersje JVM). Konfiguracja WS-Security odbywa się przy pomocy Rational Application Developer (RAD). Wszystko działa ale widać, że jest to sklecone z wielu klocków wyciągnietych z technologii open source (HTTP Apache, AXIS).
  5. Tu wypada porównać IBM z MS:
  • Microsoft ma narzędzia SPÓJNE, ZINTEGROWANE w miarę SZYBKIE i co najważniejsze PROSTE (przeznaczone dla zwykłych śmiertelników, chociaż brnąc głebiej w ich technologie też zaczynają się "schody"
  • IBM ma narzędzia ROZMAITE (pochodzące z różnych źródeł), CUDZE (zakupione jak Rational lub "podebrane" jak Apache, AXIS czy JAVA), WOLNE i BARDZO SKOMPLIKOWANE (chociaż trzeba im przyznać, że naśladując MS dużo robią aby można tworzyć oprogramowanie przy pomocy WIZARDÓW)

piątek, marca 09, 2007

Dywagacje na temat certyfikatu
  1. Czy można korzystać z certyfikatu kwalifikowanego (podpisu) nie instalując do w repozytorium (np. gdy ma się go na karcie)
  2. W naszej firmie i innych, które nam ufają warto postawić serwer PKI. Można wtedy wystawiać certyfikaty własne (trzeba im wtedy zaufać). Zbyszek mi przygotuje środowisko
  3. To samo w odniesieniu do Kerberosa
  4. Sprawdzanie ważności certyfikatu to jest niełatwa sprawa, trudno tu bez przygotowania zrobić coś poprawnie. Można jednak pokusić się o jakieś rozwiązanie:
    1. Użytkownik dostaje dane podpisane certyfikatem jakiegoś innego użytkownika. Jak możne zweryfikować jego ważność?
    2. Weryfikacja może być:
      1. online - poprzez sprawdzenie listy CRL:
        1. ze strony poprzez usługę OCSP - niektóre firmy wystawiające certyfikat jej nie świadczą
        2. poprzez kontakt ze stroną zawierającą CRL - zapamiętaniu jej lokalnie
      2. offline - poprzez weryfikację na liście CRL w cache repozytorium. Do repozytorium ściągnąć aktualną listę można poprzez automatyczą aktualizację po kliknięciu na stronę zawierającą listę crl.
    3. Może na podstawie certyfikatu lub danych podpisanych "wyciągnąć" unikalny numer seryjny użytkownika tego certyfikatu
    4. Co jeszcze można "wypruć" z certyfikatu/podpisanego dokumentu. Ten ostatni jest lepszy, nie musimy "zdobywać" certyfikatu?
  5. Ciąg dalszy nastąpi...
  6. Można usługę wystawiania certyfikatów i podpisu zaoferować KHW
  7. Linki (praca):
    1. Szukaj informacji na forum dyskusyjnym - microsoft.public.security.crypto
    2. http://groups.google.com/group/microsoft.public.security.crypto/index/browse_frm/month/2004-12?_done=%2Fgroup%2Fmicrosoft.public.security.crypto%2Fbrowse_frm%2Fmonth%2F2004-12%3F&
    3. http://www.derkeiler.com/Newsgroups/microsoft.public.platformsdk.security/2004-12/0043.html -capicom / cryptoapi certificate chain verification error 0x80092004

Date: Fri, 03 Dec 2004 18:16:28 +0100

Hello,
I was trying to use capicom from VB6 code to verify the validity of a
certificate, but Kelvin Yiu from MS posted a message
(news://msnews.microsoft.com:119/eV9j2id0EHA.1392@tk2msftngp13.phx.gbl)
in which he says "There is no way to use CAPICOM to access the CRLs used
to validate the chain. You must call the Win32 API".

Then, David Cross suggested to use capimon to trace the error. Such
trace (see previous post "meaning of
CAPICOM_TRUST_REVOCATION_STATUS_UNKNOWN or the attached capimon output)
shows the error 0x80092004.

I didn't write any code to access the api directly yet, I just want to
understand what is this error: the description "Cannot find object or
property." does not mean anything to me.
David suggested it could be a problem with CRL, but the certificate I'm
trying to validate incudes a reachable CRL Distribution Point (via http;
it also has other 2 DP, SMB and HTTP wich are not reachable, but the
third is).

Actually, If I access the distribution point with a browser I can
download the CRL, so that I believe this is not the problem.
Can anybody help me understanding?

thanks,
al.


    1. Sprawdzenie OCSP (skrypt):#!/bin/sh
      ##
      ## Copyright (c) 1998-2005 Unizeto Technologies S.A. All rights reserved.
      ##
      ## Online Certificate Status Protocol
      ##

      # Config default for openssl 0.9.7

      VAFILE="/usr/share/ssl/ocsp.pem" # http://www.certum.pl/keys/vs.pem
      ISSUER="/usr/share/ssl/CA.pem" # http://www.certum.pl/CA.pem

      URL="http://ocsp.certum.pl"

      if [ "$1" = "" ]; then
      echo -e "Usage: $0 serialn"
      echo -e "tserial:tSerial number to checkn"
      exit 0
      fi

      openssl ocsp
      -issuer "$ISSUER"
      -serial "$1"
      -url "$URL"
      -resp_text
      -respout /dev/null
      -VAfile "$VAFILE"
      exit 0

    2. http://support.microsoft.com/kb/304298 -How To Perform CRL Checking with CAPICOM
    3. http://files.redfoxuk.com/Shared%20Files/CAPICOM%20Interface%20Definition.HTML#class115 - CAPICOM interfejs, opis wszystkich stałych
    4. http://www.derkeiler.com/Newsgroups/microsoft.public.platformsdk.security/2003-10/0431.html - How to force CAPICO for CRL checking + lista dyskusyjna
    5. JENSIGN -świetny
    6. http://www.tutorials-se.com/platformsdksecurity/verify-certificate/ - How to verify certificate with CAPICOM + Impersonate + lista dyskusyjna + list programu (http://www.tutorials-se.com/platformsdksecurity/CAPICOM-documentation/)!
    7. Kod z powyższego źródła:
      Impersonating access to AzMan Policy Store 

      I have a console app that runs under the identity UserA. UserB has
      access to AzMan and ADAM.

      Whenever I try to impersonate UserB for the call to the
      AuthorizationStore, I get the exception: ArgumentException: "Value does
      not fall within the expected range"

      However, if I right click on the app and "Run As" UserB, everything
      works fine.

      I am verifying in code (using WindowsIdentity.GetCurrent()) that the
      impersonation is acutally succeeding. Has anyone had this issue?

      Here is my code:



      [DllImport("advapi32.dll")]
      public static extern int LogonUserA(String lpszUserName, String
      lpszDomain, String lpszPassword, int dwLogonType, int dwLogonProvider,
      ref IntPtr phToken);
      [DllImport("advapi32.dll", CharSet = CharSet.Auto, SetLastError
      = true)]
      public static extern int DuplicateToken(IntPtr hToken, int
      impersonationLevel, ref IntPtr hNewToken);
      [DllImport("advapi32.dll", CharSet = CharSet.Auto, SetLastError
      = true)]
      public static extern bool RevertToSelf();
      [DllImport("kernel32.dll", CharSet = CharSet.Auto)]
      public static extern bool CloseHandle(IntPtr handle);

      private void button1_Click(object sender, EventArgs e)
      {
      try
      {
      WindowsImpersonationContext ctx =
      ImpersonateValidUser("UserB", "domain", "password");
      AzAuthorizationStoreClass authorizationStore = new
      AzAuthorizationStoreClass();
      Console.WriteLine(WindowsIdentity.GetCurrent().Name);
      authorizationStore.Initialize(0,
      "msldap://techarch2:389/CN=Company, DC=compan,DC=com", null);
      ctx.Undo();

      }
      catch(Exception ex)
      {
      Console.WriteLine(ex.Message);
      }
      }

      private static WindowsImpersonationContext
      ImpersonateValidUser(String userName, String domain, String password)
      {
      WindowsImpersonationContext impersonationContext;
      WindowsIdentity tempWindowsIdentity;
      IntPtr token = IntPtr.Zero;
      IntPtr tokenDuplicate = IntPtr.Zero;

      if (RevertToSelf())
      {
      if (LogonUserA(userName, domain, password, 2, 0, ref
      token) != 0)
      {
      if (DuplicateToken(token, 2, ref tokenDuplicate) !=
      0)
      {
      tempWindowsIdentity = new
      WindowsIdentity(tokenDuplicate);
      impersonationContext =
      tempWindowsIdentity.Impersonate();
      if (impersonationContext != null)
      {
      CloseHandle(token);
      CloseHandle(tokenDuplicate);
      return impersonationContext;
      }
      }
      }
      }
      if (token != IntPtr.Zero)
      CloseHandle(token);
      if (tokenDuplicate != IntPtr.Zero)
      CloseHandle(tokenDuplicate);
      return null;
      }

    8. A oto wyciąg z MS: 
      Chain.Status

      The Status property retrieves the validity status of the chain or a specific certificate in the chain.

      Property Status( _
      ByVal Index As Long _
      ) As Long

      Parameters

      Index
      Index of certificate, or chain, to check validation. The default value is zero. The following table shows the possible values.
      Value Meaning
      0 Returns the status of the entire chain.
      1 Returns the status of the end certificate.
      i Returns the status of the Certificates.Item[i] certificate.
      Certificates.Count Returns the status of the root certificate.

      Property Value

      A LONG value that represents the validity status indicator of the chain or the specified certificate. The following table shows the possible values. This property will contain zero if the chain or specified certificate is valid. Otherwise, this property will contain a combination of one or more of the following values.

      CAPICOM_TRUST_IS_NOT_TIME_VALID
      &H00000001
      This certificate or one of the certificates in the certificate chain is not time valid.
      CAPICOM_TRUST_IS_NOT_TIME_NESTED
      &H00000002
      Certificates in the chain are not properly time nested.
      CAPICOM_TRUST_IS_REVOKED
      &H00000004
      Trust for this certificate or one of the certificates in the certificate chain has been revoked.
      CAPICOM_TRUST_IS_NOT_SIGNATURE_VALID
      &H00000008
      The certificate or one of the certificates in the certificate chain does not have a valid signature.
      CAPICOM_TRUST_IS_NOT_VALID_FOR_USAGE
      &H00000010
      The certificate or certificate chain is not valid for its proposed usage.
      CAPICOM_TRUST_IS_UNTRUSTED_ROOT
      &H00000020
      The certificate or certificate chain is based on an untrusted root.
      CAPICOM_TRUST_REVOCATION_STATUS_UNKNOWN
      &H00000040
      The revocation status of the certificate or one of the certificates in the certificate chain is unknown.
      CAPICOM_TRUST_IS_CYCLIC
      &H00000080
      One of the certificates in the chain was issued by a certification authority that the original certificate had certified.
      CAPICOM_TRUST_INVALID_EXTENSION
      &H00000100
      One of the certificates has an extension that is not valid.
      CAPICOM_TRUST_INVALID_POLICY_CONSTRAINTS
      &H00000200
      The certificate or one of the certificates in the certificate chain has a policy constraints extension, and one of the issued certificates has a disallowed policy mapping extension or does not have a required issuance policies extension.
      CAPICOM_TRUST_INVALID_BASIC_CONSTRAINTS
      &H00000400
      The certificate or one of the certificates in the certificate chain has a basic constraints extension, and either the certificate cannot be used to issue other certificates, or the chain path length has been exceeded.
      CAPICOM_TRUST_INVALID_NAME_CONSTRAINTS
      &H00000800
      The certificate or one of the certificates in the certificate chain has a name constraints extension that is not valid.
      CAPICOM_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT
      &H00001000
      The certificate or one of the certificates in the certificate chain has a name constraints extension that contains unsupported fields. The minimum and maximum fields are not supported. Thus minimum must always be zero and maximum must always be absent. Only UPN is supported for an Other Name. The following alternative name choices are not supported:

      • X400 Address
      • EDI Party Name
      • Registered Id
      CAPICOM_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT
      &H00002000
      The certificate or one of the certificates in the certificate chain has a name constraints extension, and a name constraint is missing for one of the name choices in the end certificate.
      CAPICOM_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT
      &H00004000
      The certificate or one of the certificates in the certificate chain has a name constraints extension, and there is not a permitted name constraint for one of the name choices in the end certificate.
      CAPICOM_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT
      &H00008000
      The certificate or one of the certificates in the certificate chain has a name constraints extension, and one of the name choices in the end certificate is explicitly excluded.
      CAPICOM_TRUST_IS_OFFLINE_REVOCATION
      &H01000000
      The revocation status of the certificate or one of the certificates in the certificate chain is either offline or stale.
      CAPICOM_TRUST_NO_ISSUANCE_CHAIN_POLICY
      &H02000000
      The end certificate does not have any resultant issuance policies, and one of the issuing CA certificates has a policy constraints extension requiring it.
      CAPICOM_TRUST_IS_PARTIAL_CHAIN
      &H00010000
      The certificate chain is not compete.
      CAPICOM_TRUST_CTL_IS_NOT_TIME_VALID
      &H00020000
      A CTL used to create this chain was not time valid.
      CAPICOM_TRUST_CTL_IS_NOT_SIGNATURE_VALID
      &H00040000
      A CTL used to create this chain did not have a valid signature.
      CAPICOM_TRUST_CTL_IS_NOT_VALID_FOR_USAGE
      &H00080000
      A CTL used to create this chain is not valid for this usage.
    9.  Sprawdź czy coś nie tak (poniżej)
    10. Checking Certificate Revocation Status

      CAPICOM does not enable certificate revocation checking by default. However, certificate revocation checking can be enabled programmatically for a particular certificate through the IsValid.CheckFlag property of a Certificate object. After the appropriate value of CheckFlag has been set, accessing the Certificate object's IsValid.Result property or building the certificate's verification path using a Chain object's Build method forces revocation checking.

      _language="Visual Basic">

      In the following example, cert has been instantiated as a valid CAPICOM certificate.

      Dim cert As Certificate
      Dim LocalStore As New Store

      ' Open the My store.
      LocalStore.Open LocalStore.Open CAPICOM_CURRENT_USER_STORE, _
      CAPICOM_MY_STORE, CAPICOM_STORE_OPEN_READ_WRITE

      ' Get the first certificate in the My store.
      set cert = LocalStore.Certificates.Item(1)

      cert.IsValid.CheckFlag = CAPICOM_CHECK_TRUSTED_ROOT Or _
      CAPICOM_CHECK_TIME_VALIDITY Or _
      CAPICOM_CHECK_SIGNATURE_VALIDITY Or _
      CAPICOM_CHECK_ONLINE_REVOCATION_STATUS
      If cert.IsValid.Result Then
      'CERTIFICATE IS VALID!
      Else
      Dim chain As New Chain
      chain.Build (cert)
      If CAPICOM_TRUST_IS_REVOKED And chain.Status Then
      'AT LEAST ONE CERTIFICATE IN THE CHAIN HAS BEEN REVOKED
      End If
      If CAPICOM_TRUST_REVOCATION_STATUS_UNKNOWN And chain.Status Then
      'THE REVOCATION STATUS COULD NOT BE DETERMINED
      End If
      End If

      The preceding applies to an individual certificate, no matter how it was obtained. Performing revocation checking on the certificates in a SignedData object is no different because the SignedData object's Verify method cannot be used for this purpose because enabling CAPICOM_VERIFY_SIGNATURE_AND_CERTIFICATE does not cause CRL checking.

      _language="Visual Basic">

      Instead, the CheckFlag must be set for each signer's certificate. Consider the following example where sData has been instantiated as a valid CAPICOM SignedData object.

      Dim cert As Certificate
      Dim chain As New Chain

      ' sData is an existing SignedData object.

      For I = 1 To sData.Certificates.Count
      set cert = sData.Certificates(I)
      cert.IsValid.CheckFlag = _
      CAPICOM_CHECK_TRUSTED_ROOT Or _
      CAPICOM_CHECK_TIME_VALIDITY Or _
      CAPICOM_CHECK_SIGNATURE_VALIDITY Or _
      CAPICOM_CHECK_ONLINE_REVOCATION_STATUS
      If cert.IsValid.Result Then
      'THE CERTIFICATE IS VALID!
      Else
      chain.Build cert
      If CAPICOM_TRUST_IS_REVOKED And chain.Status Then
      'AT LEAST ONE CERTIFICATE IN THE CHAIN HAS BEEN REVOKED
      End If
      If CAPICOM_TRUST_REVOCATION_STATUS_UNKNOWN And chain.Status Then
      'THE REVOCATION STATUS COULD NOT BE DETERMINED
      End If
      End If
      Next I
KISS - to nie na dzień kobiet

David Chappell - znany ewangelista technologii MS pisze:
  • Dlaczego firmy chcą za stworzenie aplikacji w J2EE ok. 30% więcej niż w .NET? - http://www.davidchappell.com/blog/2006_12_01_weblog.htmlWiększe trudności w pracy w środowisku J2EE, które z założenia było stworzone dla zawodowców, podczas gdy .NET przeznaczony jest dla amatorów (byłych programistów VB 6.0). Specyfikacja standardów J2EE jest niespójna, tworzona przez otwartą społeczność, w przpadku MS tworzy ją jedna firma.
  • J2EE 5 jest platformą zunifikowaną, ale piekielnie SKOMPLIKOWNĄ. Do uproszczenia tego podchodzą dwa obozy SUN (poprzez JCP - otwarcie procesu tworzenia nowych funkcji poprzez dyskusję i głosowanie ze środowiskiem deweloperów najczęściej z otwartej społeczności) i IBM (Oracle, BEA i inni poprzez zamknięcie w SCA , tak zamknięcie tego procesu i stworzenie spójnej ramy technologicznej bez wkładu OBCYCH zdolnej do uruchomienia rozwiązań zainteresowanych firm).
  • Wiele wysiłku twórcy J2EE (od niedawna przemianowanej na po prostu JEE) wkładają w uproszczenie wykorzystania mnogości technologii wchodzących w skład tego standardu. Z drugiej strony firmy komercyjne (IBM, Oracle, BEA), nierzadko rywalizujące ze sobą, zaangażowane w wykorzystanie w swych rozwiązaniach JEE same dochodzą do wspólnego zdania i publikują SCA (Service Component Architecture ). Promują SCA jako alternatywę do Java EE. (http://www.davidchappell.com/blog/2006_08_01_weblog.html). A wszystko po to żeby zwiększyć stopień wykorzystania raz stworzonych gotowców, tych pochodzących z SCA lub przy jego pomocy stworzonych.
  • Tak naprawdę motywy stworzenia SCA są proste: stworzyć przeciwwagę firmie SUN polegającej na rozwijaniu Java przy pomocy metod demokratycznych JCP (Java Community Process) oraz wyjść na przeciw inicjatywie MS - stworzyć analog patformy WCF (Windows Communication Foundation)
  • Stosowanie WCF znacząco usprawnia i upraszcza proces stworzenia oprogramowania w środowisku .NET (które sądząc po ilości klas - namespaces zawiera wiele skorelowanych ze sobą technologii). Tego brakowało Javie.
  • SOA i WS zmniejszyły wagi i znaczenia platformy uruchamiającej serwerową część aplikacji, to co ma znaczenie to precyzyjnie zdefiniowany interfejs. Implementacje jego przy pomocy XML i HTTP stanowi wspólny mianownik każdego takiego rozwiązania. Nie potrzeba do tego jak twierdzą zwolennicy JEE skomplikowanych technologii, ani zunifikowanej platformy uruchomieniowej, to co "chodzi" na serwerze jest nieważne, liczy się jedynie interface między usługami (http://rss.techtarget.com/80.xml + "Analysts see Java EE dying in an SOA world").
  • WCF to UNIFIKACJA - Introducing WCF (MS) + Introducing the .NET 3.o framework.
  • Porównanie WCF z SOA - polegają na WS-* w zakresie bezpieczeństwa. To ważne. Przeglad bezpiecznych WS - tu.


środa, marca 07, 2007

Podpis cyfrowy ciąg dalszy
====================
  1. http://www.pki-page.org/ - rozbiegówka na temat OCSP i Sigillum
  2. http://www.inza.com/pki.html - info
  3. http://www.certum.pl/certum/cert,oferta_kwalifikowane_OCSP.xml - sposoby sprawdzenia statusu certyfikatu kwalifikowanego
  4. http://www.openssl.org/docs/apps/ocsp.html - openssl to prawdziwy kombajn, też może sprawdzić OCSP
  5. http://www.openvalidation.org/en/info/requests.html - Artykuł - stosowanie OCSP w aplikacjach końcowych
  6. http://www.microsoft.com/technet/security/guidance/cryptographyetc/tshtcrl.mspx - sprawdzenie statusu certyfikatu
  7. http://msdn2.microsoft.com/en-us/library/system.net.security.remotecertificatevalidationcallback.aspx - sprawdzenie certyfikatu SSL
  8. https://www.certum.pl/certum/cert,certyfikaty_oprogramowanie.xml - darmowy certyfikat testowy
  9. https://www.certum.pl/services/ocsp.html?status=0&serial=37A6D - sprawdzanie statusu mojego certyfikatu (marek.wawrzynczyk)
  10. http://www.art-bit.pl/content/view/84/100/= ALE TYLKO NIEKWALIFIKOWANEGO w Certum usługa sprawdzenia statusu CLR poprzez OCSP jest bezpłatna. Majc openssl - należy stosować adres: http://ocsp.certum.pl. Jeżeli posiadają Państwo jedną z aplikacji: Netscape 6.0, iPlanet, Certum OCSP lub OpenSSL 0.9.7 w celu automatycznego weryfikowania statusu certyfikatów, powinno się wysyłać żądania do: http://ocsp.certum.pl .

Sprawdzanie CRL poprzez "ściąganie" listy z serwera dostawcy:
  1. Uruchomić na serwerze internetowym IIS procesu "ściągającego" co godzinę dane z wirtyny dostawcy i zapisujący do pliku "ca1.crl" i przetworzenie go do formatu .txt.
  2. Program kliencki odpytywuje stronę na tym serwerze podając jako parametr numer seryjny certyfikatu klienta. Wtedy:
    1. program na serwerze szuka w pliku tekstowym tego numeru, jeżeli jest to certyfikat klienta jest nieważny
    2. program serwera sprawdza czy nie należy przypadkiem ściągnąć najnowszą wersję listy z serwera dostawcy certyfikatów.
Inny sposób - wykorzystać bibliotekę Sigillum i odpytać poprzez ich funkcje OCSP jak to jest z CRL

wtorek, marca 06, 2007

Bezpieczeństwo WS
Jak to jest z tym bezpieczeństwem? Jest wiele rozwiązań. Właściwie przynajmniej trzy:
  • W3C ma swoje dokumenty na temat ochrony XML i SOAP. Trzy standardy:
    • XML Encryption - szyfrowanie (za kodowanie całości lub części XML odpowiada <EncryptionMethod>),
    • XML Signature - podpisywanie jest to podpis cyfrowy (skrót),
    • SOAP Security Extension: Digital Signature (http://www.w3.org/TR/SOAP-dsig/)
  • OASIC (Organization for the Advancement of Structured Information Standards) wydało w 2001 r najnowszą wersję SAML (Security Assertion Markup Language) członkowie - Boeing, Citrix, HP, IBM, Microsoft, Netscape, and Sun. Korzysta z XML Signature oraz SSL/TLS i wymaga nakładów na PKI.
  • a w kwietniu 2002 WS-I (Web Services Interoperability Organization) - IBM i MS - opublikowała początkową specyfikację WS-Security (Web Services Security Language). Członkowie - IBM, Microsoft, and VeriSign. Brak SSO oraz nie wymagaja infrastruktury kluczy, zabezpieczają pojedyńczą tranzakcję. Nagłówek zawiera element z tokenem zawierajacym informacje o autentykacji (X.509 lub żeton Kerberosa), autoryzacji wystawcy, może być również podpisany.
Porównanie: SAML zapewnia SSO, ale jest wolniejszy i wymaga infrastruktury, WS-Security chroni pojedyńczy komunikat.
Implementacje również wybierają różne rozwiązania np. Liberty Alliance (http://www.projectliberty.org/) posługuje się SAML, podczas gdy MS wybrał w swym rozwiązaniu TrustdBridge (http://msdn.microsoft.com/library/default.asp?url=/library/enus/dnwebsrv/html/wsfederate.asp?frame=true) WS-Security.
Cel całej tej zabawy zapewnienie komunikatom SOAP:
  1. integrity,
  2. confidentiality,
  3. authentication,
  4. authorization
Uwaga: samo SSL nie wystarcza kiedy przesyłamy komunikaty poza scenariusz point-to-point. Szyfrowanie z kolei, dostępne poprzez standardy lub S/MIME lub PGP nie są wystarczające, gdyż szyfrują całość komunikatu a tu chodzi o szyfrowanie fragmentów, inne fragmenty są widoczne np. dla osób weryfikujacych przesyłkę. Dlatego wymyślono XML Encryption.
Inne linki:
  1. http://www.onjava.com/pub/a/onjava/2005/02/09/wssecurity.html - wstęp z punktu widzenia Java i w oparciu o standardu, które wszyscy mają gdzieś.
  2. http://www.onjava.com/pub/a/onjava/2005/03/30/wssecurity2.html?page=1 - cz.2
  3. Coraz więcej mówi się o współdziałaniu MS .NET i Java
  4. Jak rozwiązuje to Google w swoim API
  5. The Project The XML Security project is aimed at providing implementation of security standards for XML. Currently the focus is on the W3C standards :XML-Signature Syntax and Processing; and XML Encryption Syntax and Processing. Once these are implemented, XML Key Management is likely to be the next focus for the project. Two libraries are currently available. A Java library, which includes a mature Digital Signature implementation. Encryption is currently under development. A C++ library is also now available. Functionality is currently more basic than that provided by the Java library. http://xml.apache.org/security/
  6. http://xml.apache.org/security/faq.html - świetne wprowadzenie
  7. Klasyka:
    1. http://www.w3c.org/Signature
    2. http://www.w3c.org/Encryption
    3. http://www.cacr.math.uwaterloo.ca/hac/ Applied Cryptography
    4. http://www.w3c.org/Signature
    5. http://www.nue.et-inf.uni-siegen.de/~geuer-pollmann/xml_security.html -bezpieczeństwo XML
    6. http://webservices.xml.com/pub/a/ws/2003/01/15/ends.html -
  8. http://forum.java.sun.com/index.jspa - świetna strona początkowa do forum Java (na różne tematy)
  9. http://pywebsvcs.sourceforge.net/ -pyhon też ma, ale co z implementacją bezpieczenstwa?
  10. Googel/yahoo - search: securing WS/webservice/AJAX/zope/php/python/AHAH tez
  11. Z drugiej strony po co szukać w starociach, lepiej przyjrzeć się nowością implementowanym w JSE 1.6 i NetBeans
  12. http://java.sun.com/products/plugin/1.3/docs/jsobject.html - interakcja applet - javascript
  13. http://java.sun.com/docs/books/tutorial/networking/ -sieciowanie w Javie
  14. http://forum.webcity.pl/index.php?s=e46b296c82f1dedc085ee20ce27dc2bf&showtopic=4433&pid=29711&st=0&#entry29711 - ajax uproszczony
  15. http://advajax.anakin.us/index-pl.htm
  16. http://www-128.ibm.com/developerworks/views/webservices/libraryview.jsp?search_by=python+web+services+developer
  17. http://www.javaworld.com/cgi-bin/mailto/x_java.cgi - Bardzo ważny przykład szyfrowanie/deszyfrowania XML przy pomocy Java i JSR od IBM
  18. http://www.javaworld.com/javaworld/jw-10-2002/jw-1011-securexml.html?page=1
  19. http://webservices.xml.com/pub/a/ws/2003/01/15/ends.html - przykłady XML Signature
  20. http://digger.computerworld.pl/
  21. http://www.javaworld.com/javaworld/jw-09-2006/jw-0911-jsf.html
  22. http://xml.sys-con.com/read/307584.htm

niedziela, marca 04, 2007

Niedziela 4 marca
  1. https://www14.software.ibm.com/iwm/web/cc/earlyprograms/ibm/java6/?ns=7307 - nowa maszyna JVM od IBM (ale dostępna na razie tylko dla Linux i Aix) -IBM SDK for Java 6
  2. Ochrona danych w węzłach XML

    After the structure has been created, we can add data between the XML node elements. This data will be used to display in the corresponding parts of the accordion component. Accepting HTML in any node element will make this component much more flexible and can be very easily achieved by simply adding CDATA tags between the content elements. Here is an example of how easy this is to accomplish:

    <content><![CDATA[<b>html text goes here</b>]]></content>
    Adding CDATA tags allows us to use any HTML that we would like to display in any given panel. We could display everything from complex tables, images, and even other components.
  3. http://www.informit.com/articles/article.asp?p=686162&rl=1 - implementing internet communication in Python
  4. Mocny Python. Odczyt skrzynki -
    import poplib
    import getpass

    mServer = poplib.POP3('mail.sfcn.org')

    #Login to mail server
    mServer.user(getpass.getuser())
    mServer.pass_(getpass.getpass())

    #Get the number of mail messages
    numMessages = len(mServer.list()[1])

    print "You have %d messages." % (numMessages)
    print "Message List:"

    #List the subject line of each message
    for mList in range(numMessages) :
    for msg in mServer.retr(mList+1)[1]:
    if msg.startswith('Subject'):
    print 't' + msg
    break
    mServer.quit()
  5. Google kontra MS kto wygra? Ostatnia oferta płatnej usługi edytora i arkusza od Google wywołała spore ozywienie na rynku usług. Po raz pierwszy G wszedł w sposób otwarty na terytorium MS - tzw. produkty wspomagające pracowników biurowych. Czy mu się uda? Wiele firm (AOL, Yahoo, Oracle, Sun) próbowało zmienić swoją linię biznesową na produkcję oprogramowania uniwersalnego jak to robi MS. Obecna oferta G przypomina podrecznikowy scenariusz technologii rozłamowej (disruptive technology) - "lider rynku tak opanował sytuację, że jego produkt osiągnął stan nasycenia funkcjonalnością i zaczyna sprawiać wrazenie przesytu formy (over serve). Użytkownicy mają wrażenie ociężałości pracy z tak przeładowanym pakietem, dlatego widząc na rynku produkt prostszy i szybszy zwracają się ku niemu, zawsze mając śwaidomosc posiadania w zanadrzu "kombajnu" funkcyjnego choć z niego coraz rzadziej korzystają. Na poczatku ta sytuacja nie niepokoi lidera, gdyż jego pakiet używają klienci korporacyjni znani z wysokich wymagań i potrzeb oraz poziomu wsparcia. Ale wraz z nakręcającą się spiralą wzrostu funkcjonalności, obsługa pakietu ulega takiej komplikacji, że nawet ci "power userzy" chcą czegoś "świeżego". I tu mamy przykłady firm "spiących gigantów" jak DEC, Sears, AOL, które przespały zmiany i musiały odejść jak dinozaury (coś w tym jest, ponieważ w filmach reklamowych MS Office 2007, występują pracownicy z głowami tych starożytnych gadów). Oczywiście oficjalne komunikaty MS będą wszystkiemu zaprzeczać, przecież MS jest od dawna liderem aplkacji on-line, ale oferując je traci na sprzedaży swych aplikacji desktopowych. Z drugiej strony G ryzykuje nie tylko porażką w segmencie aplikacji biurowych, ale może stracić pierwszeństwo w swych podstawowym biznesie - wyszukiwaniem informacji. Sprzedaż reklam a świadczenie usług to są dwie różne rzeczy i wymagają wyspecjalizowanych służb i biur marketingowych - http://www.forbes.com/2007/02/23/microsoft-google-software-oped_cx_0223blodget.html?partner=tentech_newsletter

  6. Percepcja konsumenta - Jeszcze do niedawna wydawało się, że produkt obsługujacy dwie rzeczy jest lepszy od produktu obsługującego pojedyńczą funkcję. Ostatnie badanie wykazały jednak paradoks, produkty reklamujące się jako "all-in-one" postrzegane są jako gorsze użytkowo od wyspecjalizowanych. Na tej fali pojawiają się produkty wyspecjalizowane na obsługę jednej funkcji ale robiącej to doskonale (po co komu kombajn - radio, telefon i aparat cyfrowy, kiedy żadena z tych funkcji nie jest wykonywana perfekcyjnie, lepiej kupić taniej tylko telefon, który w swych przeznaczeniu doskonale realizuje swoje funkcje). Ryzyko firmy zaczynajacej od produktu jednofunkcyjnego i zmierzajacego do wielofunkcjonalności jest duże (firma Montblanc - od producenta piór do producenta luksusowych dóbr, czy Porsche od samochodów sportowych do pomocniczych). Czasami może to się udać np. iPhone (apple) czy kombajn (drukarka+faks+scanner+cos tam jeszcze) HP. Jednakże badania rynku wykazują nieufność konsumenta do takich produktów (szczególnie łączących tak różne obszary technologiczne) i obawa i poprawne działanie wszystkich elementów. Drugim utrudniem jest wybór ceny takiego produktu. Propozycja cenowa HP, który wycenił kombajn na poziomie zwykłej drukarki wzbudza nieufność klienta (jak? za tą samą cenę mamtrzy razy więcej możliwości?). Jest wyjatek - rynek oprogramowania - percepcja odbiorcy produktów softwarowych jest taka, że dostaje tę samą technologię różniącą się jedynie WARTOŚCIĄ DODANĄ tj. ludzkim IP (intelectual property). Dlatego powyższa reguła nie działa w stosunku do oprogramownia. Tu działa natomiast prawo, byle nie za tanio ponieważ coś może być zrobione po "łebkach" (ponieważ nie starczyło czasu i pieniędzy choćby na testowanie i projektowanie) - http://www.forbes.com/2007/02/16/all-in-one-inferior-biz_cx_ee_0219papers.html?partner=tentech_newsletter
  7. http://www.mindomo.com/main.php - online mind mapping

wtorek, lutego 27, 2007

Kodowanie

Kodowanie uniwersalne - projekt:

  1. Klient opakowuje swoje dane (traktuje je jako ciąg -strumień binarny). Do tego celu używa kodowania base64 (biblioteka w JS jest na stronie http://www.webtoolkit.info/javascript-base64.html lub instrukcja STRCONV(,13) w VFP).
  2. Dane są bezpiecznie wysłane do serwera jako ciąg znaków ASCII - nie są widziane jako dane binarne.
  3. Serwer rozpakowuje dane posługując się base64 (dekoduje) wbudowaną w PHP

To samo dzieje się w drugą stronę

poniedziałek, lutego 19, 2007

Konspiracja
Biblioteki kryptograficzne w JS kompatybilne z PHP
  1. http://pajhome.org.uk/crypt/md5/auth.html - strona poświęcona ochronie i autentykacji danych + algorytmy szyfrowania md5, sha-1
  2. http://www.koders.com/javascript/fidC1E98D74CAF85084CE28804642822DC623843BDF.aspx?s=md5 - inna implementacja
  3. http://www.md5encryption.com/?mod=encrypt - test poprawności działania md5
  4. http://anmar.eu.org/projects/jssha2/ - dla opornych SHA-1

piątek, lutego 09, 2007

Kurs - "Tworzenie bogatych aplikacji internetowych w oparciu o technologię AJAX"

Zagadnienia:
  1. Przegląd technologii internetowych
  2. Przykłady rozwiązań przed AJAXem (Form Submit) i rozwiązań alternatywnych (iFrame)
  3. Definicja AJAX, podstawowe elementy i komponenty, diagram interakcji, przykłady aplikacji Web 2
Razem 1.5 godz.
  1. Narzędzia do tworzenia rozwiązań opartych o AJAX - przegląd wzorców, bibliotek i frameworków (Yahoo, Atlas, advAjax)
Razem 1.5 godz.
  1. Podstawy AJAX w oparciu o JavaScript:
    1. Wprowadzenie do elementów potrzebnych do uruchomienia AJAX w JS
    2. Oprogramowanie po stronie klienta (PHP, .NET)
Razem 2 godz.
  1. Warsztat - tworzenie aplikacji korzystającej z techologii AJAX
    1. Aplikacja minimalistyczna - korzystająca z podstawowych składników (XMLHttpRequest, DHTML, JS, CSS) -1 godz.
    2. Aplikacja pełna - korzystająca z biblioteki "prototype" - 1 godz.
    3. Aplikacja pełna niezależna od przeglądarki internetowej (porównanie modelu DOM i BOM w MS IE i FireFox) - 1 godz.
  2. Narzędzia wspomagające testowanie aplikacji internetowych - JavaScript Shell, FireBug, Fiddler - 0.5 godz.
  3. Tworzenie aplikacji uwzględniających różnorodne standardu kodowania polskich liter (iso-8859, utf-8, windows-1250) - 1 godz.
  4. Wykorzystanie technologii Ajax w aplikacjach desktopowych (widgets - wichajstry w Yahoo/Opera/Google, Visual FoxPro 9.0) - 1 godz.
  5. Nowe kierunki - oprogramowanie usług webowych firmy Google (docs, spreadsheets, calendar) poprzez Google API - 0.5 godz.
Wszystko razem - 12 godz + czas na wykonanie samodzielne ćwiczeń, konsultacji, pytania i odpowiedzi

Uzasadnienie:

  1. Nowe aplikacje (w architekturze klient serwer z bogatym interfejsem tzw. Rich Client Interface - RCI) wymagają uruchamiania w środowisku graficznym (w przeciwieństwie do obecnych aplikacji znakowych w środowisku emulatora terminala).
  2. Jedyną alternatywą (ze względu na przyzwyczajania, ergonomiczność i wsparcie użytkownika końcowego) do starych rozwiązań jest środowisko MS Windows Client (MS Windows XP i wyżej, ale już nie Windows 98).
  3. W środowisku MS Windows Client działają pakiety biurowe z najbardziej popularnym MS Office.
  4. Firma MS oprócz środowiska uruchomieniowego dla aplikacji graficznych dostarcza również narzędzi do tworzenia aplikacji.
  5. MS Windows Client cechuje doskonałe wsparcie dla ogromnej gamy urządzeń peryferyjnych (wbudowane sterowniki, bije o głowę pod tym względem inne systemy operacyjne np. Linux) oraz posiada standardowe narzędzia do tworzenia nowych sterowników obsługi tych urządzeń (drukarki fiskalne, czytniki kart kryptograficznych).
  6. Firmy dostarczające urządzenia peryferyjne np. czytniki kart, drukarki fiskalne, wagi, kamery itd. dostarczają również gotowe sterowniki dla tego środowiska w postaci uniwersalnych bibliotek dll do wykorzystania przez wszystkie aplikacje Windows.
  7. Biznesowe rozwiązanie informatyczne np. obsługa PKI ze strony klienta wymagają wręcz instalacji u niego środowiska MS Windows (korzystają w dostępie do Internetu MS IE 6.x i wyżej) , dostarczając w zamian oprogramowanie klienckie do konfigurowania, testowania i korzystania z PKI (patrz narzędzia do podpisu elektronicznego firmy Sigillum i Certum).
  8. Nowoczesne rozwiązanie Internetowe oparte o usługi webowe (Web Services) są wbudowane w narzędzia deweloperskie firmy MS (jest to MS Visual Studio 2005 Professional) oraz mają wsparcie w infrastukurze serwerów MS (jest to serwer Internetowy MS IIS oraz akcelerator MS IAS). Firma MS wraz z IBM są jedynymi dostawcami kompleksowych rozwiązań usług webowych (poza tym są one założycielami organizacji WSI i głównym motorem rozwoju standardów w tym zakresie).
  9. Dodatkowo MS jest jedyną firmą, która dostarcza kompleksowe rozwiązanie do tworzenia i uruchamiania własnego autorstwa aplikacji w środowisku MS Windows (począwszy od aplikacji konsolowych, poprzez klasyczne Windows Form i Web Forms aż po serwisy systemowe i serwisy Internetowe) w środowisku Windows) w oparciu o jednolite narzędzia do zarządzanie innymi serwerami (Internetowymi – MS IIS, bazodanowymi – MS SQL Server, zarządzanie infrastrukturą – Active Directory, usługi portalowe – SharePoint) i które doskonale integrują się ze stosowanymi przez użytkownika pakietami biurowymi MS Office.

Rozwoj Mozilli
Oparta na motorze Gecko jest świetną przeglądarką. To czego jej brakuje to niemożność wbudowania jej w inne aplikacje. Rozwiązaniem tego problemu jest projekt http://www.iol.ie/~locka/mozilla/control.htm zwierający motor przeglądarki FF w technologii ActiveX. Z punktu widzenia dewelopera ma to samo API co kapitalnie ułatwia przenoszenie aplikacji z IE na FF. Technicznie, jest to wrapper w styli IE (IWebBrowser) do Gecko (która jest interfejsem API do XPCOM (COM-like), historia i opis - http://developer.mozilla.org/en/docs/Gecko_FAQ). Co zostało imlementowane:
  • IWebBrowser (basic web browsing functions for navigation and son on)
  • IWebBrowserApp (some extended functions for IE, the application)
  • IWebBrowser2 (some more functions for IE, the application)
  • DWebBrowserEvents (basic navigation events)
  • DWebBrowserEvents2 (more events, mainly for the IE app)
Artykuł z MSDN dużo wyjaśnia jak tworzyć takie aplikacje - http://msdn.microsoft.com/workshop/browser/WebBrowser/WebBrowser.asp
Jest tam kompletna instrukcja jak włączyć taką kontrolkę (mozctlx.dll, po rejestracji) do aplikacji w Delphi (zasoby i trochę historii o Netscape - http://www.paranoia.clara.net/articles/taming_the_lizard_with_delphi.html), VB , VB .NET.
Nawet jest PATCHER do aktualizacji kodu binarnego istniejących rozwiązań korzystających z IE!

wtorek, lutego 06, 2007

Wiara
W pracy każdy programista na każdym kroku musi okazywać wiarę. Wiarę, że wierzy w realność i poprawne działanie elementów środowiska w którym pracuje. Musi wierzyć, że:
  1. Komputer działa dobrze
  2. System operacyjny i narzędzi w którym pracuje (RAD) działa dobrze
  3. Gotowe biblioteki działają dobrze
  4. Procedury wbudowane przygotowane przez projektanta działają dobrze
  5. Protokołu transmisji działają dobrze
Bez tego i wielu innych elementów nie sposób cakolwiek zdziałać, bez przerwy trzeba by sprawdzać poprawność różnych rzeczy i interfejsów.