wtorek, września 02, 2008

Technologie ... co wybrać?

Technologie w JAVA

The Right Java Tool for the Right Job

By Michael Bardash, Gerhard Bayer, Max Dolgicer

Earlier this summer in these columns, we took a high-level view of the Java side in the e-business middleware clash between Microsoft's .NET and Java 2 Extended Edition from Sun Microsystems Inc. and its partners. This month, we look more closely at the relationship between Java servlets and Enterprise JavaBeans (EJBs), and at how the two technologies can be best used separately in some cases and as complements in others.

In the earlier ''Servlets and EJBs: Friends or foes?'' article, we offered some thoughts on the evolution of the middleware platform so far. We also concluded that the phrase ''less is more'' is certainly applicable when it comes to the development of new, component-based e-business applications now that there are just two middleware platforms to choose from -- J2EE and .NET.

In that article, we noted in passing a question that we have been asked repeatedly during the past few years: Should Java servlets or EJBs be used as a foundation for e-business applications?

This is an important question, since the servlet model offers more simplicity than EJBs. The servlet model is also easier for IT developers and managers to comprehend as they get started with the technology. Our opinion is clear. If an application is presentation-centric and does not require support for high-end middleware services -- distributed transactions, persistence, application-level load balancing, state management and asynchronous messaging, among others -- then opting for heavy EJB usage is overkill. However, if an application requires at least a partial list of such high-end middleware services, then EJBs become the only game in town, assuming of course that the customer has selected or is about to select a J2EE-based application server.

Scalability

Both servlets and EJBs scale well. A number of features -- such as server clustering, DB connection pooling and location transparency -- can facilitate scalability.

Each technology -- or rather the products that implement the technologies -- has been built to support each of these concepts. However, servlet scalability is based mostly on proprietary, vendor-created implementations of servlet pools and load-balancing mechanisms, which are not stipulated by the servlet API. On the other hand, the EJB architecture was designed from the beginning with a vision of addressing scalability.

The essential point of distinction here is that while servlets can scale at the server level, EJBs can scale at the architecture level. Server-level scalability depends on specific product features (which, no doubt, are almost universally supported nowadays by best-of-breed products, and are thus sufficiently mature and comprehensive). Reliance on product characteristics rather than on a robust, scalable architecture is a gamble because, in some cases, loads can quickly outgrow product capacity and require emergency re-architecting, which is a very expensive necessity.

Load balancing

Both EJB servers and servlet engines can provide mechanisms for load balancing that include resource pooling, default dispatch mechanisms and entity clustering. While benchmarking results of servlet engines vs. EJB application servers show more or less compatible performance curves under heavy loads, a load-balanced EJB-based application has a better guarantee of operational integrity.

There is no enforcement on an individual servlet design to mandate its guaranteed incorporation into the distributed environment. As a result, load balancing has to be accounted for at design time and thus becomes a condition to proper architecture design and mature vision.

If load balancing is not taken into account, later attempts to introduce new resources create the potential for resource sharing conflicts, breach of transactional guarantees, or for sub-optimal performance caused by custom dispatch decisions or resource locking. On the other hand, EJBs can supply an infrastructure with rich component management capabilities that allow for the plug-and-play-style introduction of new resources.

Business logic hosting

Because servlets have no impositions on their internal structure and therefore have to manage all aspects of their existence explicitly, they attain only a mediocre level of separation between business functionality and cooperation management (such as database connection management calls, for example).

Business logic becomes intermingled with service calls to databases, name servers or other infrastructure services. EJBs, by design, attain a good level of business separation. Another limitation imposed on servlets' capability to host business logic is their responsiveness obligations. Because they operate within an HTTP session, a lengthy calculation -- which may be necessitated by the business functionality -- could time out the user session.

Business agility

EJBs and servlets do not preclude design-level atomization of business services, so application components can be replaced with other components transparently to the overall architecture. However, because of its more flexible cooperation model, an EJB provides a better vehicle to handle paradigm shifts.

For example, if a browser client must be replaced for some reason with a programmatic agent (such as in the case of business process automation), servlets would not be able to handle the change, while an EJB-based solution would require only modest and well-confined modifications.

Integrity

An EJB application is homomorphic throughout: The same component model is utilized for the component hierarchy, and all components are guaranteed to function under the single umbrella of transactional and security services.

In contrast, a servlet-based application is free to agglomerate any technology without restrictions, with the unavoidable risk of creating points of tension, and the consequent need to account for technology blending at the analysis and architecture stages.

High availability

Both EJB application server and servlet engine products are designed to provide high availability of services on the front end. This is achieved through clustering and failover mechanisms that, though differing between implementations, still pursue the same goal with more or less compatible effectiveness.

However, on the back end -- at the level of business logic implementation -- EJBs use advanced component distribution techniques, such as object factories and smart proxies, that are not available to servlets.

Failover

In the case of EJB, a failover mechanism is a prescribed key functionality and is readily available without any additional analysis or design effort. EJB failover is facilitated by automatic persistence guarantees and by automatic failure detection. Servlets have no equivalent mechanisms unless they are coded explicitly.

Deployment

Deployment is not a priority issue for servlets, but in the EJB worldview, deployment is considered to be one of the key elements of application delivery.

For this purpose, EJBs define a whole methodology for defining deployment characteristics that is supported by extensive APIs dealing with environment, deployment descriptors and object properties. As a rule, deployment description is declarative in nature, and the container is capable of adjusting runtime characteristics (such as transaction guarantees) automatically.

Portability

Both servlets and EJBs are published standards that are backed up by reference implementations and product compliance certification programs.

Despite that, vendors choose to introduce non-standard elements that, in their opinion, enhance product functionality. Because of the huge difference in the breadth of coverage and depth of penetration between servlets and EJBs, EJBs more easily fall victim to such enhancements; so, applications developed over different EJB products carry a greater risk of not being completely portable.

Management and administration

Runtime management and administration is a high priority for both EJBs and servlets, and most products supply facilities for component start and stop, configuring operational parameters, event logging and health monitoring.

EJBs supply a runtime environment that enables easier component monitoring and management. Integrating a component into a management infrastructure is a seamless activity with EJBs, whereas with servlets, if it is feasible at all, it requires the use of product-specific APIs.

Development ergonomics

Servlets is a relatively simple standard that requires basic knowledge of Java and HTML, at the most. EJBs, on the other hand, are complex and multifaceted, and require an understanding of the J2EE platform, as well as proficiency with essential computer science fundamentals (such as threading, transacting, object technologies and so on).

It is probably clear at this point to the development world that Enterprise JavaBeans are better suited for enterprise application platforms than pure servlets are. We say ''pure'' servlets to underscore the fact that a complete (though, as explained, not necessarily adequate for certain uses) architecture can be built exclusively upon servlets supplemented with a mix of other Java technologies. In reality, however, there are shades of gray between pure EJB and pure servlet solutions.

First, many servlet engines are embedded into app servers and share a common implementation architecture with EJB servers. This allows vendors to merge the servlet execution environment with the EJB server and thus bring servlet execution under the same failover and load balance guarantees as EJBs.

Second, EJBs by definition declare compatibility with the other J2EE standards, including Java Server Pages (JSP), a technology that aims for the same goals as servlets (though admittedly in a different way). Moreover, JSP uses servlets as an implementation vehicle, as JSPs are compiled and cached as servlets.

If we return to our initial assertion -- that servlets are a narrowly specialized technology that is excellent for delivering dynamic HTML content, and that EJBs are a wide, generalized specification designed to componentize business functionality -- it becomes apparent that the class of enterprise-strength applications dealing with browser-based clients can benefit from both servlet and EJB technologies simultaneously and without inherent conflict.

The browser client initiates an HTTP request that is served by a servlet. Rather than implementing complex business logic, the servlet simply redirects the call, along with parameters and perhaps some identification information, to a session bean. The session bean implements the top-level process flow associated with the call, but delegates specific activities to the specialized entity beans. These serve later as proxies to various resources both inside and outside the application server. Developers should notice that all of the business logic is under EJB container management and that it benefits fully from the rich infrastructure services and container-side management.

It should be noted that this architecture has the inherent flexibility to support not only browser-based clients, but also richer clients (in an intranet scenario). In addition, it can be easily extended to make business functionality available through new interface mechanisms -- for example, Web services or whatever the next great idea might be.

In conclusion, it is easy to see that because servlets are good at exposing Java interfaces to the Web, and EJB is the tool to enable good Java interfaces, there seems to be a perfect match in using a lightweight servlet as a Web-exposing front end to EJB-encapsulated business functionality.

Wklejono z <http://www.adtmag.com/article.aspx?id=6670&amp;page=>


Servlets and EJBs: Friends or foes?

7/1/2002

By Michael Bardash, Gerhard Bayer, Max Dolgicer


Our return to the columns of ADT after a two-year absence comes after a period of intense change -- the demise of the dot.com phenomenon (which almost overnight became the dot.bomb experience), the introduction of too many buzzwords and standards, a plethora of new products that implement -- or just claim to implement -- the latest buzzwords and standards, and much, much more. As always in this business, vendor marketing dollars moved quickly from yesterday's ''du jour'' technologies a couple of years ago and are now promoting J2EE, .NET and, of course, Web services.


However, though the ever-increasing number of buzzwords does create a degree of confusion, one can oftentimes easily follow the common thread and common sense of what we call ''the buzzword evolution.''


A couple of years ago one of our engineers jokingly declared: ''after the invention of the state machine everything in computing is a hack.'' While this is far from reality, many industry veterans would concur that while the buzzwords and standards do change all the time, the basic principles of distributed computing and middleware remain the same. Just follow the trail of ''buzzword evolution'' in the common vocabulary of magazines. IDL (Interface Definition Language) ''got replaced'' by WSDL (Web Services Definition Language); SII (Static Invocation Interface), DII (Dynamic Invocation Interface) and RMI (Remote Method Invocation) ''were taken over'' by SOAP (Simple Object Access Protocol); and finally, Service Oriented Architecture replaced ''Whatever Oriented Architecture'' was in vogue.


Yes, there are more standards now than ever before (skeptics are referred to the list of XML standards governed by the World Wide Web Consortium, or W3C). But at the end of the day, only a few standards matter to developers.


The ''buzzwords and standards'' evolution begs the question of whether middleware choices are more confusing for IT executives and development managers now than they were two years ago. As a consulting company always trying to stay at the front of the middleware revolution (and evolution), taking advantage of many opportunities to implement important projects using a multitude of middleware technologies, we can report that unfortunately, the answer to the question is not a binary yes or no. The good news is that there are some middleware choices that are becoming close to binary. And at least when it comes to the development of brand-new component-based e-business applications there are really only two middleware platforms to choose from -- J2EE and .NET.


However, the reality is that most companies have long focused less on developing new applications than on integrating existing applications. That reality is even more true today as IT budgets undergo more scrutiny than ever before. According to recent monthly CIO surveys conducted by investment firm Morgan Stanley, application integration was cited consistently as a top priority for 2002 and beyond. The bad news is that no single middleware solution has emerged from the pack to become an obvious choice for projects that are focused on application integration. So the technologies and products that enterprises can evaluate today remain very complex and are even more confusing than they were in earlier years. Today, viable integration technologies include Message Oriented Middleware (MOM), Message Brokers, CORBA, J2EE-based application servers and Microsoft's .NET.


As middleware consultants, important questions we hear regularly include: Are the J2EE-based application servers ready to undertake complex EAI projects? And what are the long-term risks associated with the use of proprietary Message Brokers?


In this and future articles we'll try to answer some of the most asked technical questions, including: What are the differences and similarities between J2EE and .NET frameworks? Are J2EE-based application servers ready to become the technology of choice for EAI projects? And what are the key challenges in the development and deployment of J2EE applications?


In this article we tackle a question that we have been asked repeatedly during the past few years. As J2EE-based application servers like BEA's WebLogic Server and IBM's WebSphere gain more widespread acceptance, should Java servlets or Enterprise JavaBeans (EJBs) be used as a foundation for e-business applications? Most of the early Web-based J2EE applications have been developed using servlets as a base for two main reasons. First, the servlet model offers more simplicity than EJBs and is easier for IT developers and managers to comprehend as they get started with the technology. And second, the majority of the early projects are focused on the so-called ''low-hanging fruit,'' or new e-business applications that focus on presentation-centric applications and do not have high developer demands in terms of complexity, scalability, availability, reliability and extensibility.


Meanwhile, the vendors state that the purpose of J2EE application servers is to support high-end enterprise applications and to serve as the new, strategic middleware platform for all application development and deployment. It is therefore important to understand the difference in capabilities of servlets vs. EJBs so that the suitability of one approach over the other can be determined given the requirements of a particular project, the readiness of IT personnel, budgets and realistic time-to-market.


Popular technologies

Both Java servlets and Enterprise JavaBeans are popular technologies, and both can play a prominent role in enterprise architectures. Frequently, suppliers and users view these technologies as competitive, especially for Web-centric applications. Indeed, on the surface, servlets and EJBs can both be used to allow thin clients, such as browsers, PDAs and the like, to access enterprise data. Two variations on a classical architecture -- a thin client (such as a browser) accessing a servlet that is in turn connected to a back-end system or database; and a second variation that shows a client accessing an EJB through a presentation gateway, such as an HTML servlet -- illustrate this contention.


Indeed, from the browser client perspective, there is not much difference between the two technologies -- both bridge between presentation and back-end functionality. And, in many cases, servlets are considered to be a better choice because their coding and deployment requires simpler skills and shorter times than those required for using EJBs, which deal with a whole spectrum of complex issues, including many additional APIs and rules. Of course, when an enterprise-strength architecture is in question, neither the browser client perspective nor the simplification of the development process is a good enough justification for the choice of technology.


The fundamental difference between servlets and EJBs becomes apparent when such essential design objectives as architectural robustness and business agility are brought into focus. Then, issues like scalability, state management, flexibility of entity relationships and richness of the cooperation metaphor start to play a prominent role in the technology selection process. We intend to show why EJB-based architectures can handle such concerns better than servlets-based technologies, and why a clear understanding and recognition of this conclusion is required when new, complex applications are being developed.


We may be giving readers the impression that we are biased toward EJBs as the preferred vehicle for enterprise architectures. However, our view is that EJBs and servlets are orthogonal technologies that, rather than competing directly, are mostly complementary. To compare EJBs and servlets is not like comparing apples to apples. It is not even like comparing apples to oranges -- it is more like comparing apples and oranges to the crates and barrels that are used to store and transport them. This becomes obvious when the essential differences in intent, focus and, if you like, domain philosophy of the two standards are investigated.


Servlets cater primarily to the delivery of dynamic content to browser-based clients. They are narrowly focused on facilitating presentation, such as programmatic translation and preparation of HTML, and on relief from handling lower-level details of HTTP. This is the extent of the role servlets play in the framework of the J2EE standard.


On the other hand, the EJB standard was devised with the vision of a common pattern for component architectures in mind. It deals principally with enabling the development and deployment of a business application as a collection of components into a framework of powerful and comprehensive infrastructure services (which can include Java Database Connectivity (JDBC), Java Transactional Service (JTS)/ Java Transaction API (JTA), Java Messaging Service (JMS) and the like). Rather than prescribing any specific role (such as HTML rendering or HTTP encapsulation), the Enterprise JavaBean component model is a mold for generic business components whose exact specialization is left to the application designer to establish. In other words, the servlets specification is a somewhat narrow standard specialized on the presentation layer of applications, while the EJB standard is a broad enabling technology.


This distinction becomes more apparent when directly comparing the characteristics of EJBs and servlets to evaluate their respective applicability to enterprise architectures.


* A servlet is a faceless Java object. Beyond some features mandated by its base class, it is amorphous and can have arbitrary internal composition. On the other hand, by contract, an EJB is obliged to implement specific interfaces (such as the home interface, activation and deactivation interfaces) and mandatory properties (such as primary key, for example) that promptly tie it into the cooperation environment (the container).


* A servlet has to implement a rigid set of methods with predefined signatures just as Enterprise JavaBeans need to implement a set of methods imposed by the EJB specification to fulfill the contract with the container. However, the EJB can also define arbitrary methods that best suit its business semantics.


* Servlets have very thin support from the environment they are deployed into, which is mostly limited to HTTP-related matters; EJBs enjoy a wide range of powerful and comprehensive infrastructure services that are provided by the container. Examples include the generation and handling of remote interfaces, component factory services, component instance identification, distributed transactions, automatic persistence for Entity Beans and declarative security.


* Basically, servlets are focused on one task: reacting to HTTP requests with HTML responses in a stateless manner (in fact, state may be maintained via an HttpSession object, but it is not comprehensive and requires explicit client cooperation via session cookies). EJB behavior is defined at a higher level of abstraction: EJB method invocation does not stipulate any syntax or semantics to the invocation arguments or to the maintained state.


* By design, the aim of EJB is to segregate business functionality from infrastructure services (such as life cycle management, transaction and security contexts and persistence). Because servlets are not integrated with the J2EE infrastructure services, they encourage application developers to deal with lower-level J2EE APIs directly, and entangle business functionality with logic related to infrastructure services.


* The servlets specification does not address enterprise concerns such as load balancing and failover. On the contrary, inherent scalability and high availability of services is a declared responsibility of the EJB container. (It should be noted that some servlet engines do support clustering and load balancing. Curiously enough, these are the engines that are embedded into EJB application servers such as WebSphere and WebLogic).


In other words, servlets do one thing and do it well -- they provide a shell for the presentation layer of a Web-based application; EJB is a complex framework for implementing widely dissimilar business functionality in a coherent and comprehensive fashion.


Servlets expose; EJBs encapsulate

The other point of distinction between servlets and EJBs is that, in our experience, in the majority of cases, servlets are used to expose business data, whereas EJBs are used to encapsulate business functionality.


A classic use of a servlet would be to parse an HTTP request, access a database for inquiry or update, and to compose an outgoing HTML reply. (A less common use of a servlet would involve passing a serialized Java object between itself and a browser-side applet. This scenario will be discussed later.) For example, a browser may submit a request for an airline schedule, and the servlet will fetch the data from the database and format the reply as an HTML table. Also, the browser may submit a filled form whose elements will be stored by the servlet in a database table. In either case, it is the data, not the behavior, the client is interested in.


Arguably, HTML data-level cooperation achieves a great level of independence between the presentation at a client (in this case the browser) and the processing at the server (the servlet). The interface between the client and the server is primarily concerned with passing data; there is no API specific to any particular business function. The browser client displays HTML returns unconditionally (subject to its validity, of course). Thus, if the servlet implementation is changed to render richer replies (such as embedding sound clips, for example), the client will benefit from this extended business functionality automatically and transparently. However, if the servlet is changed to display, for example, the latest cricket results instead of stock quotes, all the same data will be unconditionally rendered by the client, much to the user's dismay.


In other words, the client's horizon extends all the way to the data and the servlet acts merely as a rendering agent that enables the client to access the database.


Separating the presentation by the browser client and the processing in servlets achieves a higher degree of independence compared to an EJB-based architecture because it does not rely on the strong coupling that the interface of an EJB with rigid business semantics imposes. However, this comes at the cost of compromising business process integrity. This might not be a cause for concern for simple Web browsing interactions, but from an enterprise-strength B2B/B2C perspective, cohesiveness of the end-to-end business process flow must be protected. This objective is best achieved by encapsulating business behavior in services, and service granulation and exposition is precisely the domain of the EJB.


With a typical EJB implementation, a client gains access to business functionality through a presentation gateway, whereby the latter provides a rendering agent for business functionality as opposed to data. Thus, a typical use of an EJB would be for the client to remotely invoke the server-side service, which may or may not result in any data being returned to the client, but which would definitely result in some meaningful processing having taken place at the server side.


Two-tier vs. three-plus tier

Another way to contrast servlets and EJBs is to assert that servlets by intent serve to accommodate a classical two-tier application (where the presentation and data access/business logic tiers are commingled within the servlet and the data store). On the other hand, EJBs tend to three-tier or multitier complex cooperative environments.


Apparently, the flexibility of interpretation built into the servlets standard permits us to break this data-only paradigm easily. Nothing prevents a servlet from being engineered in such a way that it encapsulates a business service. Practically, this can be achieved in a number of ways. For example, instead of only accessing a database, a servlet implementation may invoke back-end functionality that has been written in Java via an RMI call, or a servlet may exchange serialized Java objects with a browser-resident applet. These and other design patterns that turn servlets into business logic capsules are well known and quite popular.


In practice, it has become a common architecture approach to allow servlets to benefit from their amorphous ''anything goes'' internal structure -- or, better yet, their lack of any internal structure. Nothing prevents servlet implementations from internally integrating with a variety of technologies like RMI/CORBA, JNDI, JMS, JTS/JTA and so on; just as no out-of-the-box transparency exists for JDBC -- a main vehicle to access databases from within a servlet -- the constructs within a servlet for all of the above technologies have to be manually coded on a case-by-case basis. Nevertheless, the ability to embed the whole spectrum of Java platform solutions on the client's behalf turns servlets into a powerful middleware mechanism that extends the Java APIs to the Web.


It seems that both the servlets and the EJB technology are suitable platforms for an enterprise application. Furthermore, they both seem suitable for presentation-centric applications that do not require support for ''hard-core'' distributed services such as transactions, load balancing, persistence, state management and message queuing, among others. The use of servlets might be even more appropriate and certainly more straightforward. However, even though it is possible to use servlets for truly distributed applications, such use would be sub-optimal. The reason for this far-reaching statement will be clarified in Part II of this article, in which we will compare these two technologies in more detail. Stay tuned.

Wklejono z <http://www.adtmag.com/print.aspx?id=6465>

Comparing servlets and EJBs

By Michael Bardash, Gerhard Bayer, Max Dolgicer

This table compares and contrasts the servlets and EJBs, and provides a more detailed insight into how they stack up against each other using a set of objective parameters.

APPLICATION TOPOLOGY

Servlets

Web-centric model (client connects via Web server only)

EJBs

* Web-centric model (via presentation gateway, e.g., HTML servlet)

* LAN-based model (clients access services over LAN or WAN via remote method invocations without any intermediary)

* Local (several tiers of services collocated within a single host, either in intra- or inter-process fashion)

Comments

EJB permits for much more flexible deployment topographies. Web server is not a prerequisite.

CLIENT ACCESS

Servlets

HTTP only

EJBs

HTTP

* RMI and/or CORBA

* IIOP HTTP tunneling

* Value-added proprietary protocols such as t3

Comments

HTTP is a stateless protocol optimized for request-reply style text transfer. An attempt to engage it for generic use, such as may be required by common cooperation metaphors like stateful session, involves significant overhead and is not trivial to implement. On the other hand, technologies like RMI and CORBA are specifically optimized for distributed computing and easily account for a variety of cooperation metaphors. HTTP tunneling allows circumventing a firewall in cases when direct client access is precluded.

TRANSACTIONAL SUPPORT

Servlets

* Transactions must be coordinated manually through integration with JTS.

* A client cannot easily pass transaction context to a servlet.

* Attempt to allow a single transaction to spawn multiple servlet invocations is at least non-trivial.

EJBs

* All transaction functions are performed by the container implicitly on behalf of an EJB, including context propagation and transaction demarcation. However, the bean is not precluded from taking full control over transaction management.

* Transaction rules are declarative in nature and can be changed at deployment time.

Comments

Though a servlet can ultimately be made as transactional as an EJB, this attempt will involve significant effort, both at design and development times. EJB strongly relieves these concerns.

SECURITY

Servlets

There is no security mechanism readily available to servlets. Rudimentary access security is managed by the servlet engine in a superficial manner (in most cases, limited to differentiating between trusted and untrusted modes).

EJBs

Comprehensive security mechanism is managed by the server. EJBs are instantiated into security context and service invocations are authorized against access control lists. Security definition is declarative and defined at deployment time.

Comments

In a Web-centric environment, both standards benefit from technologies like SSL and digital certificates. But implementation of these features is not mandated by either standard and is left to the discretion of specific products. Most app servers and servlet engines (especially those embedded in app servers) support an end-to-end Web security model.

PERSISTENCE

Servlets

No specific mechanism exists to provide for servlet persistence, though of course nothing prevents a servlet from implementing persistence on its own by explicitly integrating with JDBC.

EJBs

EJB allows persisting objects automatically. Support for this comes from two angles. Introspecting the bean can automatically generate database schemas. Container-provided life-cycle management automatically passivates and activates objects as needed and provides for synchronization of EJB state with the database.

OBJECT IDENTIFICATION AND CONTEXT ASSOCIATION

Servlets

To identify a Servlet into context (such as in the case of a session context, for example) requires explicit cooperation between the client and the engine. Client-side cookies are needed, and additional coding is required on the server side for session tracking. Integration with a naming service is not possible at the client side, and has to be manually coded at the server side.

EJBs

EJB differentiates between stateless and stateful objects. While the former are created on demand and do not outlive single invocation, the latter are uniquely identified by a primary key, which permits unambiguous context identification.

Comments

EJB benefits from its implicit integration with persistence and naming services. Moreover, while servlets leave the topic to the user's discretion, EJB supplies ground rules and a comprehensive framework for identification of EJBs.

ENVIRONMENT ACCESS

Servlets

Servlets have no access to the runtime environment other than regular Java mechanisms.

EJBs

The EJB container manages environment properties on behalf of individual EJBs. These can be defined at deployment time, allowing for greater deployment flexibility.

Comments

EJB provides better ergonomics of the runtime environment management, an essential part of system administration.

NAMING AND DIRECTORY SERVICES

Servlets

No integration with JNDI except when manually coded. No client-side access to directory services.

EJBs

JNDI is fully integrated into the server and the namespace is managed transparently. EJB provides naming context and automates object registration.

Comments

The servlet client's inability to discriminate its server object is a limiting factor for component-based architectures.

LIFE-CYCLE MANAGEMENT

Servlets

Servlets are bound into the end-user context only for the duration of a single request. Servlet instances are managed by the server only to assure that the configured number of instances of a certain kind has been pooled.

EJBs

EJB instance life span can vary from per-request instantiation to the duration of a session, to the persistence over many user sessions. The persistence mechanism allows bean-based implementations to survive catastrophic session failures and container shutdowns.

STATE MANAGEMENT

Servlets

Servlets do not have any prescribed state management policies.

EJBs

The container cooperates with the EJB to maintain the state. In contrast to servlets, stateful EJBs are required to implement activation/passivation methods to enable the container to invoke them automatically to persist the EJB's state at well-defined points.

Comments

EJBs must comply with the state management contract, which in some scenarios may be perceived as an unnecessary burden. However, a well-articulated and standardized state persistence policy is a definite advantage to application designers.

RESOURCE BINDING

Servlets

The association of a servlet with back-end resources must be hard-coded.

EJBs

Back-end resource access is encapsulated in entity beans that act like resource proxies to the session-level objects.

Comments

To achieve the same level of indirection and encapsulation as available with EJB, servlets have to manually provide for resource management. This may be prohibitively complex, especially when resource management needs to be integrated with transactional and security management.

RESOURCE SHARING

Servlets

Resource locking must be manually implemented and coordinated across servlet instances. It is easy to break resource sharing, as there is no centralized enforcement authority.

EJBs

Resource sharing is managed at the level of entity beans. The container manages access to the entity beans and synchronizes access to them according to the defined sharing policy.

Comments

An EJB resource-sharing mechanism creates an essential foundation for resource load balancing.

RELATIONSHIP MULTIPLICITY

Servlets

The relationship between the client and the servlet is one-to-one only, for the duration of single request.

EJBs

The multiplicity of relationships between client and server-side objects is not defined. The client may reference many entity and/or session beans simultaneously.

Comments

The relationship between client and servlet is inherently damaged by the limitations of the HTTP protocol. However, a number of work-around techniques may be suggested, like having a single servlet to multiplex all types of client requests. The drawbacks of such a scheme are obvious.

DATABASE INTEGRATION

Servlets

Servlets rely on JDBC facilities to pool database connections. This pooling is managed explicitly. SQL statements have to be prepared manually.

EJBs

The database connection pool is managed by the server, according to the deployment time policy. The container manages object persistence. SQL statements can be generated automatically.

INVOCATION ARGUMENTS

Servlets

Servlets require manual marshalling of call arguments from their HTML representation. Analogously, return values have to be embedded in HTML. The Servlet API defines a number of programmatic facilities that assist in this task.

EJBs

EJB invocations do not have fixed signatures, and arguments can be represented as a structure of arbitrary complexity, including, but not limited to HTML strings.

Comments

Direct HTML rendering provided by servlets is a strong advantage for a browser-based client.

THREADING MODEL

Servlets

Servlets do not have any inherent threading or synchronization model. Threading safety is left to the discretion of the developer. A single threading model is devised specifically to ensure that all calls are single-threaded.

EJBs

Bean invocations run in dedicated threads. The container manages thread synchronization. Thread pooling is available for performance optimization.

METAPHOR

Servlets

Servlets essentially support a single metaphor: request-reply. It is possible to identify requests into a client session, but this requires additional design and, because of API limitations, is not a comprehensive solution.

EJBs

EJBs support a wide spectrum of metaphors, including request/reply in both stateless and stateful manner, asynchronous communication through message-driven beans, as well as session and persistent session.

CHAINING

Servlets

Servlets can be chained to each other to process client requests in a sequential manner.

EJBs

An EJB that receives the client request can fan out consequent service invocations.

Please see the related story 'The right Java tool for the right job.'



Wiedza o AXdES:

Opis standardu XADES (ze strony http://www.w3.org/TR/XAdES):

Jest to rozszerzenie standardu XML -owego formatu podpisu elektronicznego XMLDSIG o możliwość niezaprzeczalności oraz rozszerzalność zgodnie z dyrektywą unijną "Directive 1999/93/EC of the European Parliament and of the Council of 13 December 1999 on a Community framework for electronic signatures". Rozszerzenie polega na dodaniu węzła ds.:Object. Sam format ma co najmniej trzy warianty:

  • XAdES (Basic) - rozszerza XMLDSIG o dodatkowe pola podpisane (SigningTime, SigningCertificate, SignaturePolicyIdentifier, SignatureProductionPlace, SignerRole, AllDataObjectsTimeStamp, IndividualDataObjectsTimeStamp, DataObjectFormat oraz CommitmentTypeIndication) i jedno niewymagające podpisania (CounterSignature). Nie wymaga dostępu on-line do serwera znaczników
  • XAdES-T ze znacznikiem czasu utworzonym zaraz po utworzeniu
  • XAdES-C z pełną walidacją

Posługiwanie się wariantem - podpisujący może się posługiwać formą podstawową, ale wtedy weryfikujący odbiorca musi utworzyć znacznik czasu otrzymania (albo poprzez utworzenie XAdES-T lub poprzez inne bezpieczne źródło czasu) - wybór wariantu podpisu jest niejasny, dodatkowo są rozszerzenia np. dotyczące archiwizacji.

Znaczenie znaczników (myślę, że lepiej będzie to opisane w specyfikacji XMLSIG):

  • SignedInfo - zawiera informację o tym co będzie podpisywane ( informacja o przekształceniach kanonicznych oraz algorytmie użytym przy podpisywaniu)

<ds:Reference URI="<http://www.example.org/docToBeSigned>" Id="FirstSignedDocument">
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha"/>
<ds:DigestValue>h9kmx3rvDH75vKtNpi4NbeBGDnl=</ds:DigestValue>
</ds:Reference>

  • SignedInfo->Reference - zawiera wartość funkcji mieszającej (hash value) jako ciąg bajtów zakodowany base-64 oraz nazwę użytego algorytmu dla każdego obiektu, który ma być podpisany. Dodatkowo musi być wskaźnik do tego obiektu (zwykle jest to lokator zasobów URI w postaci adresu internetowego) wraz z unikalnym 'id'. Takich referencji może być więcej np. reference do części dokumentu XAdES (poprzez wskazanie id) zawierającego sekcję elementów związanych z podpisem, które chcemy dodatkowo podpisać (w celu ochrony przed zmianą).
  • SignedInfo->SignatureValue - zawiera podpis cyfrowy sekcji SignedInfo (base-64), ale ściślej mówiąc wartość przekształcenia wszystkich hash value przy pomocy klucza prywatnego podpisującego

<ds:SignatureValue>....</SignatureValue>

  • SignedInfo->KeyInfo - informacja o certyfikacie w celu zweryfikowania podpisu
  • Przestrzeń ds.:Object - zawiera te nowości, które wprowadza XAdES

Więcej informacji na podstawie http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/:

  • Dokument XML służący do utworzenia i przedstawienia podpisu cyfrowego (digital signature) i może być użyty do dowolnego obiektu cyfrowego (ze słownika w3 jest to digital object) włączając w to XML. Można wyróżnić wersję zakopertowaną (enveloped) i kopertującą (enveloping) kiedy dane do podpisu są w tym samym dokumencie co sam podpis. Jest jeszcze wersja zewnętrzna (detached) kiedy dane są poza plikiem z podpisem.

poniedziałek, września 01, 2008

Wiadomosci encyklopedyczne o pdpisie XML-owym (XML Sign) z wikipedii
Jest to rekomendacja W3C definiująca postać podpisu cyforwego. Wybrano do jego reprezentacji format XML. Funkcjonalnie format jest zbliżony do PKCS#7 ale ma większe możliwości rozszerzenia. Służy do popdpisywania danych tzw. zasobów dowolnego typu np. dokumentów XML, ale mogą to być dowolne zasoby dostępne przez URL. Jeżeli podpis XML-owy podpisuje dokument "leżący" poza nim to mamy do czynienia z zewnętrznym podpisem (detached). Jeżeli podpis XML stosuje się wewnątrz jakiegoś dokumentu to mamy do czynienia z podpisem wewnętrznym, w kopercie (enveloped). Jeżeli zawiera dane podpisane wewnątrz siebie to mówi się o podpisie zakopertowanym (enveloping). Wygląda to tak:
Signature    SignedInfo - co zostało podpisane i jakim algorytmem     SignatureMethod  -------------          CanonicalizationMethod -------     Reference -------------------- odwołanie do zasobu URI        Transforms ----------------- ewentualne transformacje        DigestMethod --------------- algorytm mieszający        DigestValue ----------------- wynik mieszania w Base-64     Reference ...    SignatureValue ----------------- wartość podpisu    KeyInfo ------------------------ klucz publiczny (do weryfikacji)    Object ------------------------- dane będące podpisywane (gdy podpis enveloping), opcjonalne 
Na czym polega walidacja. Musi zadziałać procedura Core Validation:
  1. Reference Validation - sprawdza każdy zasób i porównuje jego wynik mieszania z DigestValue
  2. Signature Validation - weryfikacja sygnatury
Schematycznie to wygląda tak:
 Signature - znaczy digital signature - jest to przekształcenie message przy pomocy private key. 

Pierwszy września
  1. Aptana znana jest nie tylko z IDE ale z Jaxer - serwer interpretujący JS natywnie (podobnie jak w MS). Nawet IBM sie tym zainteresował ale chyba tylko po to by zamacić w głowie.
  2. IBM opublikował "najlepsze praktyki" związane z rozwojem aplikacji J2EE
  3. IBM opublikował listę elementów wymagań niefunkcjonalnych:
    1. niezawodność
      1. bezpieczeństwo
      2. transakcyjność
    2. użyteczność
    3. efektywność
      1. wydajność
      2. skalowalność
    4. zarządzalność
    5. przenaszalność
  4. Portal do podpisu http://www.jensign.com/
  5. Portal mistrza kryptografii i bezpieczeństwa - Bruce Schneier
  6. Portal kryptografii - http://eprint.iacr.org/complete/
  7. Portal bezpieczeństwa MS (SDL - Security development Cycle)
  8. Co nowego w IE:
    1. Sam blog o IEhttp://blogs.msdn.com/ie/
    2. Oraz release notes - http://support.microsoft.com/kb/949787
  9. Bardzo profesjonalnie o JS - http://mattsnider.com/category/languages/javascript/
  10. Super wyszukiwarki: cuil, hakia, tafiti, ms dewey, ...
  11. Scanner antywirusowy MS - http://onecare.live.com/site/en-US/center/howsafe.htm?s_cid=mscom_msrt
  12. Narzędzie do usuwania złośliwego oprogramowania - http://www.microsoft.com/downloads/details.aspx?FamilyId=AD724AE0-E72D-4F54-9AB3-75B8EB148356&displaylang=en
  13. Trick w HTML - przewijanie tabeli z nieruchomymi nagłówkami - http://www.siteexperts.com/tips/html/ts04/page1.asp
  14. Bardzo ciekway blog - http://ckwong.wordpress.com/2008/08/31/web-server-interfaces-and-w3c-standards/

niedziela, sierpnia 31, 2008

Po Pilicy:
  1. Tzw. Cloud computing - Gartner chwali Nick Carr za jego wizje. Dzialy IT tracą na znaczeniu z uwagi na kombinację cloud computing i SaaS. Ale jak słusznie zauważa autor IT jest ważne z uwagi na znajomość procesów zachodzących w przedsiębiorstwie. IT uwolnione od trosk związanych z obsługą infrastruktury informatycznej może się skupić na obsłudze procesów biznesowych.
  2. W artykule o krytykowanym przez społeczość internetową rozwiązaniu komunikatu o błednym certyfikacie danej strony można się dowiedzieć o tym, że coraz wiecej poważnych instytucji ma nieważne (wygasłe) certyfikaty. Nawet do 14% firm z puli Fortune 500.
  3. Zaspokojenie własnego ego - piramida Abraham Maslowa (1943) - "A theory of human motivation". Poziomy: fizjologiczny, bezpieczeństwo i spokój (securuity and safety), docenianie (samo- i przez innych), psychologiczny.
  4. Super samouczki z AJAX i JS - http://ajaxexperience.techtarget.com/east/html/tutorials.html?track=NL-946&ad=658322&Offer=AEajssf826h&asrc=EM_UTC_4313159&uid=267959
  5. Nowe kierunki w JS - http://www.infoworld.com/article/08/08/26/35NF-javascript-2-direction_1.html?source=NLC-DAILY&cgd=2008-08-26
  6. http://ajaxexperience.techtarget.com/resources/html/presentations.html
  7. Biblioteka edycji HTMLArea - http://www.dynarch.com/projects/htmlarea/
  8. Biblioteka graficzna - http://www.kylescholz.com/blog/projects/jsviz/
  9. http://ajaxian.com/archives/animation-data-visualization-in-javascript
  10. Eich o JS - http://www.scribemedia.org/2007/02/15/firefox-javascript-eich/ wzięte z http://ajaxexperience.techtarget.com/html/index.html
  11. http://ajaxexperience.techtarget.com/html/index.html
  12. DWR - http://ajaxian.com/archives/hands-on-dwr, nauka - http://directwebremoting.org/dwr/getstarted
  13. XSS - http://www.owasp.org/index.php/Top_10_2007-A1 na czym to polega i jak sie temu ustrzec
  14. SDL - http://blogs.msdn.com/sdl/
  15. Pobieranie kawałków stron przy pomocy Aptana - http://www.aptana.com/blog/uri/dom_scraping_with_jaxer_part_2
  16. Rywalem dla HTMLArea jest Java http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/text/html/HTMLEditorKit.html


czwartek, sierpnia 21, 2008

Java i XMLDsig (i nie tylko)
  1. Zgodnie z projektem JSR-000105 XML Digital Signature APIs powstały założenie impelentacji podpisu. Sun udostępnia tutorial Java Web Service Developers Pack gdzie opisuje m.in. podpis cyfrowy dokumentów. Do ściągnięcia jest też sam WSDP w wersji 2.0. Ale ponieważ na konferrencji 2006 JavaOne w San Francisco Sun ogłosił przeniesienie go do projektu GlassFish (blog na ten temat) to tam trzeba szukać dalszych rozwiązań. Artykuł na ten temat ukazał się tu - http://today.java.net/pub/a/today/2006/11/21/xml-signature-with-jsr-105.html z niego wynika, że w wersji Java SE 6 będzie to włączone.
  2. Od dawna wiadomo, że nie należy ufać danym wprowadzonym przez użytkownika i wysyłanym do serwer aprzez GET lub POST. Dlatego proponuje się rozwiązanie polegające na szyfrowaniu danych w URL.
  3. Wady i zalety różnych JPA - http://today.java.net/pub/a/today/2007/12/18/adopting-java-persistence-framework.html
  4. Uruchaminaie skryptów w Java - http://today.java.net/pub/a/today/2007/09/20/scripting-balance-design-performance.html
  5. Zasoby do java - http://www.javawhat.com/gotoDirectorySubmenu.do;jsessionid=4F99A08389EA9F315A2024716B4A4A33?submenu=articles
  6. Opis przetargu na "II.1) OPIS

    II.1.1) Nazwa nadana zamówieniu przez zamawiającego: Postępowanie o zamówienie publiczne w trybie przetargu nieograniczonego na dostawę rozwiązania informatycznego realizującego usługi ochrony informacji oraz licencji dla oprogramowania do podpisu i weryfikacji podpisu elektronicznego dla potrzeb Izby Celnej w Krakowie.


    II.1.2) Rodzaj zamówienia: dostawy.


    II.1.3) Określenie przedmiotu zamówienia: 1. Zadanie 1

    Przedmiotem zamówienia jest dostarczenie dwóch identycznych zestawów komponentów sprzętowych i programowych zapewniających:
    1) Generowanie kodu kryptograficznego służącego do identyfikacji systemu informatycznego wydającego Urzędowe Potwierdzenie Odbioru na podstawie rozporządzenia Prezesa Rady Ministrów z dnia 29 września 2005r. w sprawie warunków organizacyjno-technicznych doręczania dokumentów elektronicznych podmiotom publicznym (Dz. U. Nr 200, poz. 1651 z 2005r.) dla dokumentów XML zgodnie ze standardem W3C XMLdSign wg profilu XAdES-enveloped.
    2) Generowanie kodu kryptograficznego do identyfikacji systemu informatycznego wydającego dokument zgodnie ze standardem W3C XMLdSign wg profilu XAdES-enveloped dla dokumentów XML; kod ten musi być powiązany z dokumentem kluczem Zamawiającego w taki sposób, że jakakolwiek zmiana w dokumencie jest rozpoznawalna.
    3) Generowanie kodu kryptograficznego w oddzielnym pliku XML dla dokumentów binarnych zgodnie ze standardem W3C XMLdSign wg profilu XAdES-detached; kod ten powinien być powiązany z dokumentem i kluczem Zamawiającego w taki sposób, że jakakolwiek zmiana w dokumencie jest rozpoznawalna.
    4) Deszyfrowanie dokumentów XML przeznaczonych dla podmiotu publicznego, zaszyfrowanych zgodnie z XML/Encrypt.
    5) Podawanie bieżącego czasu, z wewnętrznego zegara.

    Urządzenie będzie wchodziło w skład systemu teleinformatycznego Zamawiającego i musi świadczyć wymienione zadania za pomocą usług WebServices udostępnianych przez urządzenie dla aplikacji podmiotu publicznego.
    Zadanie 2.

    Przedmiotem zamówienia jest dostarczenie oprogramowania , które będzie przez Zamawiającego udostępnione w celu umożliwienia osobom trzecim podpisywania dokumentów przesyłanych do systemów informatycznych administracji celnej oraz weryfikacja otrzymanych z tych systemów informacji, zwanego dalej -kontrolką"

  7. Wprowadzenie (elementarne) do XMLSIGN - http://www.xml.com/pub/a/2001/08/08/xmldsig.html co oni piszą "To create a digital signature for a message, the data to be signed is transformed by an algorithm that takes as input the private key of the sender. Because a transformation determined by the sender's private key can only be undone if the reverse transform takes as a parameter the sender's public key, a recipient of the transformed data can be confident of the origin of the data (the identity of the sender). If the data can be verified using the sender's public key, then it must have been signed using the corresponding private key (to which only the sender should have access).

    For signature verification to be meaningful, the verifier must have confidence that the public key does actually belong to the sender (otherwise an impostor could claim to be the sender, presenting her own public key in place of the real one). A certificate, issued by a Certification Authority, is an assertion of the validity of the binding between the certificate's subject and her public key such that other users can be confident that the public key does indeed correspond to the subject who claims it as her own.

    Largely due to the performance characteristics of public-key algorithms, the entire message data is typically not itself transformed directly with the private key. Instead a small unique thumbprint of the document, called a "hash" or "digest", is transformed. Because the hashing algorithm is very sensitive to any changes in the source document, the hash of the original allows a recipient to verify that the document was not altered (by comparing the hash that was sent to them with the hash they calculate from the document they received). Additionally, by transforming the hash with their private key, the sender also allows the recipient to verify that it was indeed the sender that performed the transformation (because the recipient was able to use the sender's public key to "undo" the transformation). The hash of a document, transformed with the sender's private key, thereby acts as a digital signature for that document and can be transmitted openly along with the document to the recipient. The recipient verifies the signature by taking a hash of the message and inputting it to a verification algorithm along with the signature that accompanied the message and the sender's public key. If the result is successful, the recipient can be confident of both the authenticity and integrity of the message. "

  8. Na temat algorytmów XAdEs jest mowa w http://www.podpiselektroniczny.pl/epaczka.htm, szukaj również w http://swik.net/XMLDSIG

  9. Źródło - http://www.aleksey.com/xmlsec/index.html i http://www.west-wind.com/weblog/posts/257599.aspx

środa, sierpnia 20, 2008

Co nowego:
  1. Wreszcie Harmonia i koniec z niebezpiecznymi rozszerzeniami wprowadzonymi w Firefox 1.7 i wyżej. Na witrynie SitePoint jest ciekawy artykuł na temat ujednolicenia nurtów rozwoju Javascript a właściwie ECMA-262. Nareszcie powstanie jednolita notacja nowej wersji języka ECMAScript v.3.1. Do tej pory były dwa nurty rozowju: rewolucyjny reprezentowany przez Mozilla, Adobe i ewolucyjny za ktróym stał MS i Yahoo. Spotkanie TC39 odbyło się w OSLO a rekacje na jego wyniki są tutaj ..."The official announcement by Mozilla’s Brendan Eich can be read at Ajaxian, and the reactions from other JavaScript notables like John Resig, Douglas Crockford, Mike Chambers, and Alex Russell make worthwhile reading (with varying levels of technical detail). Also, Episode 2 of the newly-launched Open Web Podcast brings a lot of these people together to discuss the change in direction."
  2. Kurs programowania obiektowego w JS - http://www.sitepoint.com/article/oriented-programming-1
Certyfikaty:
  1. Na betanews ukazał sie artykuł o wykorzystaniu certyfikatów utworzonych samodzielnie SSC (Self Signed Certificate) ale wykorzystywanych do podpisywania stron internetowych przy korzystaniu z SSL. IE 7 i FF 3.0 wyświetlają ten fakt dość nieprzyjemnie ten fakt informując użytkownika o potencjalnym naruszeniu bezpieczeństwa z uwagi na niezaufanie do urzędzu któy wystawił ten certyfikat. Dodatkowo powodują domyślne przyznanie zaufania do innych stron wymienionych w certyfikacie (alternate sites) a te już mogą być bardzo niebezpieczne. Z drugiej strony posługiwanie się certyfikatem jest podstawą (wymusza) korzystania z SSL do szyfrowania ruchu HTTP, a nie każdego stać na kupno "legalnego" certyfikatu. Witryna StartSSL daje bezpłatny certyfikat klasy 1.

wtorek, sierpnia 19, 2008

Ciekawostki:
  1. Jak uruchomić proces w imieniu innego użytkownika "But, let's face it -- setting this for an entire machine or Organization Unit of them using policies is like using a sledgehammer when you really need ... well ... not a sledgehammer. Another option is available for those one-off times that you need RunAs elevation for a specific EXE. Download the Sysinternals tool ShellRunAs and drop it into your computer's path somewhere (such as C:WindowsSystem32) and then run the command:

    shellrunas /reg

    Doing this adds another menu item to the right-click context menu called Run as a Different User. You can also run shellrunas {programName} from the command prompt to do the same". W systinternals są bardzo ciekawe programy systemowo-natzędziowe.

  2. Nowy wymiar prezentacji PPTPlex - http://www.officelabs.com/projects/pptPlex/Pages/default.aspx - ciekawe efekty

  3. Inne "dobra" z MS - http://communityclips.officelabs.com/Search.aspx - nauka obsługi programów pakietu MS Office 2007

  4. Ciekawe prezentacja na CNet - http://cnettv.cnet.com/

  5. JitterBit - narzędzie do integracji - interesujące

  6. Ciekawe porównanie technologii servletów i EJB. Każda z nich zajmuje się iina działką, EJB jest skalowana na poziomie architektury podczas gdy servlety na poziomie sprzętu.

  7. Strona specjalnie przeznaczona dla VB - http://www.visualbasicrocks.com/Home.aspx

  8. Sekwencja sterowania przy edycji danych korzystając z DataGrid:

    By default, the DataGrid supports resizing, reordering, sorting, adding and removing. This behavior can be controlled with the following properties:

    • CanUserAddRows
    • CanUserDeleteRows
    • CanUserResizeColumns
    • CanUserReorderColumns
    • CanUserSortColumns

    On editing a cell, the following events gets fired...

    • PreparingCellForEdit
    • BeginningEdit
    • CommitingEdit
    • CancelingEdit
  9. Applet do połączeń sieciowych http://www.webreference.com/dev/proxy/index.html

niedziela, sierpnia 17, 2008

Ciekawe
  1. Zen habit przedstawia swój punkt widzenia na ćwiczenia fizyczne.
  2. Najbardziej inspirujące filmy na YouTube - http://feeds.feedburner.com/~r/zenhabits/~3/362941939/
  3. FeedBurner o ZenHabit
  4. Jak stać się znawcą jQuery
  5. Jak się szybko nauczyć szybko i efektywnie pływać
  6. Wykorzystanie FireBug (i PHP)
  7. Java - odczyt dokumentów XML przy pomocy JDOM
  8. Dojo do sprawdzania danych
  9. "Harmony and dream" z NYT o różnicach w psychice ludzi białych (indywidualistów) i zółtych (kolektywistów)
  10. O życiu - http://www.realsimple.com/realsimple/content/lifesoul/0,21770,1699954-3,00.html

czwartek, sierpnia 14, 2008

Czwartek
  1. A notebooki coraz większe (ekran i zużycie prądu nawet ok. 80$ w ciągu roku)
  2. Testowanie jednostkowe za i przeciw - "especially because the major tools used in unit testing are available as free open source, such as JUnit and TestNG for Java and the xUnit frameworks for other languages, as well as the free code-coverage tools Cobertura and Emma."
  3. Narzędzia do Unit Testing w JS - http://blogs.techrepublic.com.com/programming-and-development/?p=714&tag=nl.e101
  4. Raportowanie w open-source. Są dwa projekty: Jasper i BIRT. Za pierwszym stoi NetBeans w swej nowej odsłonie (na razie beta) v. 6.5, za drugim IBM i Actuate.
  5. Grzechy FOSS zebrane na jednej liście - chyba to prawda.
  6. MS dołączył do grupy inicjatywnej rozwijającej OpenID.
  7. BackUp danych poprzez usługę Mozy
  8. Open-source nie wnosi nic nowego - "success is a function of quality of leadership". Najlepiej się mają projekty, które są na wpół otwarte.
  9. Stosowanie kryptografii, co najmniej jest zalecane, ale z uwagi na trudności w zrozumienie jej metod powodują, że czasami twórca używa niewłaściwych narzędzi. Tę sytuacje ma poprawić KeyCzar produkt marki Google. Zastosowanie: "Keyczar is designed to be open, extensible, and cross-platform compatible. It is not intended to replace existing cryptographic libraries like OpenSSL, PyCrypto, or the Java JCE, and in fact is built on these libraries". Taka inicjatywa spopularyzuje stosowanie kryptografii wśród niespecjalistów chcących jednak ją stosować.
  10. Dlaczego warto kupować myEclipse - http://www.eclipseplugincentral.com/Web_Links-index-req-viewlink-cid-26.html
  11. Centralna Składnica Pluginów (CSP) - http://eclipseplugincentral.com/
  12. Wideo z poprzednich dni, wtyczka do Gmail (FTP w FF), obserwuj Regisetr, Inquier, ArsTechnica,WebWare, Techweb
  13. Coś dla dzieci: eyeahndler i http://lifehacker.com/400292/top-10-how-to-videos oraz http://news.cnet.com/8301-17939_109-10016513-2.html i http://www.mathway.com/ i http://news.cnet.com/8301-17939_109-9957715-2.html (muzykowanie - http://www.muzicons.com/ i http://www.muxtape.com/)
  14. Do czego to służy?
  15. Marzenie Micha Kapora (tego od Lotus 1-2-3) - http://chandlerproject.org/
  16. Popraw własny wizerunek:
    1. http://www.cnn.com/2008/LIVING/08/12/rs.how.to.think.on.feet/index.html
    2. http://www.realsimple.com/realsimple/content/lifesoul/0,21770,1826008-3,00.html
  17. Co dalej z tworzeniem Web 2.o ?

środa, sierpnia 13, 2008

Ciekawe:
  1. Dla dzieci:
    1. Scratch - http://scratch.mit.edu/
    2. SketchUp - http://ct.techrepublic.com.com/clicks?t=70721418-c303d9131c29f20674a9315d93e249e0-bf&brand=TECHREPUBLIC&s=5
  2. Czołowa strona IBM dla deweloperów - http://www.ibm.com/developerworks/
  3. Sarkastyczny pogląd na tworzenie aplikacji Web 2.0 - http://www.theregister.co.uk/2008/07/07/web20_for_developers/page3.html
  4. Porównanie szkieletów JPA w Java - http://www.javaworld.com/javaworld/jw-07-2008/jw-07-orm-comparison.html
  5. Zastosowanie Hibernate - http://www.javaworld.com/javaworld/jw-08-2008/jw-08-hibernate-annotations.html?nhtje=rn_081208&nladname=081208javaworld'senterprisejavaal
  6. Ciekawy blog - http://www.itwriting.com/blog/category/java
  7. Zapewnienie anonimowości - http://anonymouse.org/
  8. Zasoby deitel'a - http://www.deitel.com/ResourceCenters/Software/Firefox3/tabid/3278/Default.aspx
  9. Bardzo ciekawe - jak tworzyć applety i konwertować - http://www.informit.com/guides/content.aspx?g=java&seqNum=257
  10. Staroć - http://www.suitable.com/docs/signing.html
  11. Architektura plug-inów Java - http://java.sun.com/j2se/1.5.0/docs/guide/plugin/developer_guide/contents.html
  12. Zasoby C# - http://www.informit.com/guides/content.aspx?g=dotnet&seqNum=688
  13. http://www.informit.com/guides/printerfriendly.aspx?g=java&seqNum=257
  14. Przewodnik po .NET:
    1. http://www.informit.com/guides/content.aspx?g=dotnet&seqNum=469
    2. http://www.informit.com/guides/content.aspx?g=dotnet&seqNum=124
    3. Wywyołanie komponentów z .NET w Windows 32 APIhttp://www.informit.com/guides/content.aspx?g=dotnet&seqNum=97
    4. I na odwrót - http://www.informit.com/guides/content.aspx?g=dotnet&seqNum=98
  15. REST jako odpoczynek po SOAP - http://searchsoa.techtarget.com/generic/0,295582,sid26_gci1317288,00.html?track=NL-110&ad=646184&asrc=EM_NLN_3877957&uid=267959

poniedziałek, sierpnia 11, 2008

Powrót z wakacji:
  1. Nowy standard przeglądarki internetowej - projekt Aurora firmowany przez Adaptive Path (Jessie Garret) oraz Mozilla Lab. Uderza w oczy naturalny interfejs
  2. Vista mimo zabezpieczeń ciągle woli przedkłądać funkcjonalność nad bezpieczeństwem - szczególnie twórcy oprogramownia nie chcą kłopotać użytkownika ciągłymi alertami i dlatego instalują swoje oprogramowania w katalogach o mniejszym poziomie zabezpieczeń otwierając tym furtkę dla hackerów podmieniających w tych katalogach dobre oprogramowanie na złe.
  3. Mechanizmy obronne Visty przełamane przez ludzi z IBM ISS i VMware - wykorzystują naiwność przegladarek internetowych ładujących kod DLL z .NET
  4. Register - Podobne problemy ma Google udostępniając nisprawdzone gadgety w swoim serwisie (taki komponent może przenieść uzytkownika z jego iGoogle do stony atakującego) i tu
  5. ComputerWorld - Bardzo ciekawa historia powstania komputerów osobistych
  6. Sutor mówi - "koniec z Pulpitem użytkownika (Desktopem) bedzie za to jego wirtualny obraz dostępny wszędzie i na wszystkich urządzeniach, nacisk na aplikacje Linuksowe dla użytkownika końcowego. Więcej tu
  7. Koniec oficjalnego wsparcia dla PHP 4, nieoficjalne jest do końca roku
  8. Historia JS oczami jego twórcy - Brendan Eich
  9. Ciekawe serwis - http://www.ciol.com/Developer/Languages/Tech-Papers/Developers-guide-to-understand-Enterprise-JavaBeans/7808108801/0/
  10. Jak "przełożyć" sterownik z Windows do Linux - http://www.ibm.com/developerworks/library/l-devctrl-migration/index.html
  11. Super XML Security Signing Library - http://www.aleksey.com/xmlsec/
  12. Nauka Silverlight - http://www.aspfree.com/c/a/BrainDump/XAML-Basics/3/
  13. Niuanse php obiektowego - http://www.tutorialized.com/view/tutorial/Encapsulation-in-PHP/36997
  14. Luki w oprogramowaniu: Apple, Joomla, MS, (PHP) - wg IBM X-Force
  15. W sprawie notatki, że oprogramowanie. open-source nie jest zbyt bezpieczne. Problem ten zgłosiła firma Fortify (Java applications, including Geronimo, JBoss, Struts and Tomcat). Są różne rodzaje testów wynikające z różnych potrzeb: testy poprawności działania i testy bezpieczeństwa. Wydaje się, że społeczność open-source widzi potrzebe testowania tego pierwszego

sobota, sierpnia 02, 2008

Pożyteczne łącza:
  1. Strony z wyszukiwarkami kodu dla programistów. Np (csourcesearch.net, QuickRef.org, Koders, ByteMyCode, Planet Code, and O'Reilly Search, Krugle)
  2. Pokaż dane z bazy jako transformowalna strona w kontrolce przeglądarki - codeguru
  3. Biblioteka jibu do wsparcia wielowątkowosci
  4. Zapis treści dokumentu z MS Word do BLOBa
  5. In C#, that should be easy to retrieve with the XmlTextReader.ReadBase64() method, however, the byte array I get back doesn't seem to be PCL. I've tried writing it out raw, and as ASCII, UTF8, and Unicode enocded text, all giving me garbage.

piątek, sierpnia 01, 2008

Nareszcie piątek:
  1. Woda na Marsie potwierdzona przez NASA - http://www.computerworld.com.au/index.php?id=1655385704&eid=-6787
  2. Alfresco buduje analog to SharePoint (podobnie jak Zimbra) - http://www.computerworld.com.au/index.php?id=729415411&eid=-6787
  3. Co lepsze VMware (ESX od niedawna bezpłatny po objęciu przez ex-MS Paula Maritz szefowstwa firmy i od dawna bezpłatny VMWare Server, który potrzebuje jakiegoś systemu pod spodem) czy MS Hyper-V?
  4. Kolejna konferencja hackerska - cold boot - możliwość kradzieży kluczy z komputera ponieważ DRAM w której są przechowywane klucze nie "ulatnia" się natychmiast
  5. Nowe otwracie portalu MS Live.com - wykonane we Flashu
  6. Zaćmienie - http://www.boingboing.net/2008/07/31/total-solar-eclipse.html
  7. Fajne plotki - http://www.boingboing.net/
  8. Przeciążenie informacją co z tym zrobić - http://www.linuxworld.com.au/index.php?id=364828552&eid=-50
  9. Konferencja open-source Open Source Conferetion (OSCON), trend w sourceforge.net większość projektów pochodzi od ludzi skupionych wokół liderów jak Torvald, Limi (Plone) czy Guido i nie robi to dla pieniędzy. Materaiły z tej konferencji - http://en.oreilly.com/oscon2008/public/schedule/proceedings
  10. Yahoo ma dzisiaj zebranie udziałowców - ciężkie czasy dla prezesa, który obwiniany jest o spadek wartości firmy, wejście do zarządu Icahna. Może się to skończyć źle dla prezesa Yanga. ALe najberdziej niepokoi los YOS (Yahoo Open Strategy)
  11. Co to jest Terracota - http://www.terracotta.org/confluence/display/orgsite/Home
  12. Okruchy życia Bell'a - http://research.microsoft.com/barc/MediaPresence/MyLifeBits.aspx
  13. Czego nie ma C# i platforma .NET jest w Bouncy Castle.
  14. Super zasoby na BC:
    1. http://www.bouncycastle.org/csharp/resources.html
    2. Przykład podpisu - http://reisjr.wikispaces.com/BouncyCastle.StringSigner
  15. Historia powstania języków programowania - JS. Adres artykułu - http://www.computerworld.com.au/index.php/id;243672124;pp;5. Blog autora Eich. Zasoby:
    1. http://blog.nihilogic.dk/2008/04/super-mario-in-14kb-javascript.html
    2. http://ejohn.org/blog/running-java-in-javascript/
    3. http://ejohn.org/
    4. http://www.computerworld.com.au/index.php/id;243672124;pp;3
  16. Portal dla managerów:
    1. http://www.ciol.com/Developer.aspx
    2. http://www.infoworld.com/index.html

czwartek, lipca 31, 2008

Linki czwartkowe do:
  1. SQL Explorer jako standalone lub wtyczka do Eclipse - http://eclipsesql.sourceforge.net/
  2. O stronicowaniu:
    1. http://faq.javaranch.com/java/PaginationOrPaging
    2. http://www.javaworld.com/javaworld/jw-07-2004/jw-0726-pagination.html
    3. http://www.javaranch.com/journal/2008/08/Journal200808.jsp#a4
  3. HashMap - http://www.javaranch.com/journal/2008/08/Journal200808.jsp#a3
  4. http://www.javaranch.com/journal/2008/08/Journal200808.jsp#a1
  5. Zasoby IBM:
    1. http://www.redbooks.ibm.com/?S_TACT=105AGX54&S_CMP=B0731&ca=dnw-930
    2. http://www.ibm.com/developerworks/newsletter/devcom/email/topten/?S_TACT=105AGX54&S_CMP=B0731&ca=dnw-930
    3. http://www.ibm.com/developerworks/db2/library/techarticle/dm-0807liu/index.html?S_TACT=105AGX54&S_CMP=B0731&ca=dnw-930
    4. http://www.ibm.com/developerworks/edu/os-dw-os-php-zend-google-pt2.html?S_TACT=105AGX54&S_CMP=B0731&ca=dnw-930
    5. http://www.ibm.com/developerworks/xml/library/x-think41/?S_TACT=105AGX54&S_CMP=B0731&ca=dnw-930
    6. http://www.ibm.com/developerworks/websphere/library/techarticles/0807_fasbinder1/0807_fasbinder.html?S_TACT=105AGX54&S_CMP=B0731&ca=dnw-930
  6. PDF:
    1. http://www.planetpdf.com/tools.asp?webpageid=615&SearchType=Product&SearchString=&SearchPlatform=-1&SearchCategory=-1&CompanyID=&SearchApplicationType=-1&SearchLicenseType=free&browse=Free%20software&nl=pp
    2. http://www.planetpdf.com/developer/article.asp?ContentID=This_week_in_PDF_-_Free_PDF_library_released&gid=7688&nl=pp
    3. http://www.aurigalogic.com/auriga/avs/home/downloads/aurigadoclet.html
    4. http://www.idealsoftware.com/ev_concept.php
    5. http://www.idealsoftware.com/ev_demodown.php
  7. Crtyptography:
    1. http://www.aurigalogic.com/auriga/avs/home/downloads/crypto.html

Nowości w czwartek
  1. Nauka .NET dla VFP - ciekawa i bezpłatna ksiażka pod adresem tu. Szczególnie ciekawy jest rozdział o współpracy technologii.
  2. Nauka DWR na wysokim poziomie - http://www.devarticles.com/c/a/JavaScript/Intergrate-DWR-into-Your-Java-Web-Application/3/
  3. Nauka jak tworzyć rozwiązania AJAX-owe w Javie, jeszcze jeden framework:
    1. javacent
    2. http://www.zkoss.org/
  4. Nauka podpisywania SM:
    1. Bardzo ciekawe przykłady - http://itextpdf.sourceforge.net/howtosign.html
    2. http://itext.ugent.be/articles/eid-pdf/index.php?page=3#start
    3. Nakov - http://www.developer.com/security/article.php/3587361
    4. Forum Sun-a z przykładami - http://forums.sun.com/thread.jspa?threadID=619285&start=0
    5. Forum openoces - http://www.openoces.org/pipermail/user/2008-January/000455.html
    6. Przykład szukania CRL - http://www.openoces.org/cgi-bin/viewvc.cgi/ooapi/src/org/openoces/ooapi/validation/cert/RevocationCheckerTest.java?revision=1.7&view=markup
    7. Nieśmiertelny przykład - http://www.west-wind.com/weblog/posts/257599.aspx (z http://www.west-wind.com/articles.aspx)
  5. Pożyteczne narzędzie z VFP - http://blogs.msdn.com/calvin_hsia/archive/2007/06/19/enable-people-to-run-your-programs-without-installing-anything.aspx
  6. Ciekawy blog - http://www.west-wind.com/weblog/ (podpinanie JS, AJAX, westwind utilities)

środa, lipca 30, 2008

Dodatki:
  1. Książkownia - http://safari.java.net/
  2. Szukarki tafiti, cuil, hahalo.Hasło "xades" i "xades+C#"
  3. Forum:
    1. http://www.dotnetspider.com/forum/

  4. Wykorzystanie GWT - http://www.onjava.com/pub/a/onjava/2006/05/31/working-with-google-web-toolkit.html
  5. Instrukcja obok oprogramowania - http://eboi.miedzyzdroje.pl/weryfikacja/podpis.pdf
  6. Jest mnóstwo różnych projektów (daje możliwość "poprogramowania" sobie ale my mamy jedynie wykorzystać "gotowce" czyli zakończone i wspierane biblioteki, nawet płatne):
    1. Open-source:
      1. http://eunis.dk/wp-content/uploads/2008/03/cryptoapplet.pdf
      2. http://eunis.dk/?page_id=63. Tam Paul Santapau ma dwa projekty:
        1. cryptoapplet
        2. jXAdES
      3. http://rcardon.free.fr/websign/wakka.php?wiki=MainPage
      4. https://jira.primekey.se/browse/DSS-12
      5. Naumov
      6. opensc, openoc, open..
      7. openxades
      8. Projekty universytetu http://proyectostic.uji.es/. Na stronie http://proyectostic.uji.es/cryptoapplet/downl.html.en - do ściągnięcia.
      9. http://openxades.org/
      10. http://clauer.uji.es/
      11. http://www.openoces.org/opensign/documentation/bootstrapped/applet_params.html , http://www.openoces.org/demo/entrance_opensign.html
      12. http://community.java.net/projects/ tam jest http://community.java.net/java-ws-xml/, https://xades.dev.java.net/ (Java implementation of XAdES-XML Advanced Electronic Signatures) - można dostać się do źródeł
    2. Komercyjne (wymienione w pdf.):
      1. http://jce.iaik.tugraz.at/sic/sales/price_list
      2. http://jce.iaik.tugraz.at/sic/products/xml_security/xades
  7. Walidatory:
    1. Ten na PEMI
    2. Na stronie http://www.xicrypt.com/xicrypt-labs-en.php są serwisy do sprawdzeń
Ciekawostki:
  1. FormatFactory 1.40 do zmiany formatów plików video.
  2. Free HTML to PDF Converter 3.9 .4 jest bezpłatny, przykład tu.
  3. Kupa ciekawych programów bezpłatnych - http://www.download.com/8300-2007_4-12-1.html?categoryId=9918337&tag=nl.e415
  4. Linux jako naczelny system na desktopach? Chyba nie, choć bardzo ma do tego ambicje. Raczej Linux na netbookach (super lekkich) z uwagi na to, że te maleństwa nie mogą udźwignąć Visty a wsparcie dla XP się kończy (stąd wniosek, że jedyną alternatywą jest Linux). Proponenci Linuxa widzą inne rozwiązanie - adaptacja pomysłu pulpitu z Maca (na OSCON speakerzy 20 na 26 mieli Maca!!!)
  5. 25 czerwca Nokia ogłosiła, że zakupiony przez nich system operacyjny Symbian będzie rozwijany jako open-source. Nokia jest na analogicznej pozycji jak facto Microsoftem na rynku telefonów i smartfonów. To może zachwiać równowagą na rynku graczy iPhone, (LiMo) Linux for mobile oraz Google Android.
  6. AdoDB jest spaczowany przez MS i jest też wersja dla Pythona.
  7. Inne wyszukiwarki: tafiti (MS), cuil (exGoogle), Ms Dowey (MS)
  8. NASA udostępnia swoje zdjęcia.

wtorek, lipca 29, 2008

Podpis wyjaśniania:
  1. Uniwersalność biblioteki Sigillum w nowej, jeszcze niedostępnej wersji 4.0. Na podstawie korespodencji z deweloperami z Sigillum oraz wycinka z strony Besti@ "Odpowiedź:
    Podpis firmy Kir S.A.
    Po poprawnej instalacji oprogramowania "Menadżer CryptoCard Suite", należy upewnić się, czy podpis cyfrowy znajduje się w systemowym magazynie certyfikatów. W tym celu należy przejść na zakładkę "Narzędzia" i kliknąć na przycisk "Uruchom", znajdujący się w części "Menadżer certyfikatów". Jeśli certyfikat przypisany do karty będzie widoczny na liście, oznacza to, że jest on prawidłowo zainstalowany w systemie Windows.
    W przeciwnym przypadku należy uruchomić "Dodatkowe narzędzia" za pomocą przycisku "Uruchom". Następnie należy wybrać opcję "Rejestracja certyfikatu w systemie" i kliknąć na przycisk "Dalej". W kolejnym oknie należy wybrać odpowieni certyfikat i znowu kliknąć "Dalej". Następnie należy potwierdzić wybór wskazanego certyfikatu. W ostatnim oknie należy podać nazwę, pod którą będzie on widoczny w systemie.
    Na końcu należy ponownie sprawdzić w "Menadżerze certyfikatów", czy proces zakończył się powodzeniem.

    Podpis firmy Unizeto.
    Po poprawnej instalacji oprogramowania "proCertum CardManager" przynajmniej w wersji 2.4.0.52, dostępnego na stronie firmy Unizeto, należy przejść na zakładkę "Profil bezpieczny" i kliknąć na przycisk "Rejestruj certyfikaty". Spowoduje to rejestrację wszystkich certyfikatów znajdujących się na karcie w systemie Windows.
    "
  2. Można sądzić, że biblioteka Sigillum obsługuje również podpisy innych urzędów certyfikacyjnych.
  3. Inne cechy tej biblioteki:
    1. Podpisałem dokument xml (faktura COIG) o formacie XADES, sprawdzałem ją weryfikatorem PEMI, sprawdzenie udane połowicznie (brak dostępu do CRL ponieważ certyfikaty Sigillum nie mają wypełnionego pola CRL URL)
  4. Format podpisu dokumentów (w tym również e-Faktur) wg. rozporządzeń odnośnie administracji rządowej wymagany jest XADES. Chociaż inne dokumenty np. e-Deklaracja mówią o trzech równorzędnych formatach: PKCS#7, CMS oraz XADES. Ciekawe czy urzędy kontroli skarbowej są przygotowane na sprawdzanie faktur i innych dokumentów elektronicznych.
  5. Aplikacja do podpisywania dokumentów - w większości przypadków jest to pełnokrwista aplikacja desktopowa (jedna wzmianka o aplikacji webowej - firma LeftHand nie sprawdzałem)
  6. Akty prawne, które mogą rzucić trochę światła na podpis:
    1. Dz.U. 212 (poz. 1766) z 11.10.2005
    2. Dz.U. 133 (poz. 1119) z 14.07.2005
    3. Dz.U. 2002 Nr 128, Poz. 1094 rozporządzenie w sprawie określenia warunków technicznych i organizacyjnych dla kwalifikowanych podmiotów świadczących usługi certyfikacyjne, polityk certyfikacji dla kwalifikowanych certyfikatów wydawanych przez te podmioty oraz warunków technicznych dla bezpiecznych urządzeń służących do składania i weryfikacji podpisu elektronicznego)
  7. Inne rodzime rozwiązanie jest udostępnione przez stowarzyszenie PEMI. Jest to applet i kontrolka ActiveX:
    1. applet działa: podpisuje i sprawdza poprawność. Aby był przydatny do moich celów musi mieć inny interfesj We/Wy (nie poprzez wskazanie przez uzykownika pliku ale poprzez parametry wywołania). Tworcy appletu obiecują poprawę interfejsu. Wysłałem do nich e-mail z zapytaniem o licencje użytkownia. Brak reakcji. Kod źródłowy - brak.
    2. activeX - dziala, ale brak kodu źródłowego, działa wyłącznie w IE, brak informacji o licencji. Jest dokładny help interfejsu.
    3. aplikacja POTECTOR - obiecywana na stronie jeszcze w ubiełym roku. Niedostępna do dziś.
  8. Sprawdzenie - platforma serwerowa, dostęp poprzez Internet np Web Service - można wykorzystać MS Windows Server 2008/2008 z IIS, oraz biblioteki Sigillum ale potrzeba dobrze zabezpieczyć te serwery (odpowiedni czlowiek)
  9. Sprawdzenie listy CRL wg Certum : "

    Kwalifikowane OCSP

    Usługa polegająca na wystawianiu elektronicznego zaświadczenia potwierdzającego, że weryfikowany certyfikat jest certyfikatem kwalifikowanym i ważnym w momencie weryfikacji. Pozwala na sprawdzenie statusu certyfikatów kwalifikowanych wszystkich wystawców w Polsce.

    Usługa realizowana według „Polityki certyfikacji” spełniającej wymagania ustawy o podpisie elektronicznym, podlegająca audytom Ministra Gospodarki i na jego wniosek wpisana do rejestru usług kwalifikowanych związanych z podpisem elektronicznym.

    Wydanie przez kwalifikowany urząd OCSP zaświadczenia ze statusem „poprawny” oznacza, że sprawdzany certyfikat:
    • weryfikowany był w okresie jego ważności,
    • jest certyfikatem kwalifikowanym (wystawionym przez jeden z podmiotów działających na terenie Polski),
    • na moment udzielania odpowiedzi nie był skutecznie unieważniony przez podmiot wystawiający ten certyfikat.
    Usługa jest dostępna w dwóch wariantach:
    • przez stronę WWW,
    • poprzez oprogramowanie klienckie.

    Zastosowanie

    Usługa znajduje zastosowanie w przypadku, gdy chcemy sprawdzić ważność danego certyfikatu kwalifikowanego i otrzymać poświadczenie tej ważności.

    Korzyści

    Kwalifikowana usługa OCSP pozwala szybko ustalić status certyfikatu kwalifikowanego wystawionego przez każde z polskich centrów certyfikacji świadczących kwalifikowane usługi certyfikacyjne.

    Wynik sprawdzenia statusu certyfikatu jest wydawany w postaci zaświadczenia (dokumentu) elektronicznego poświadczonego przez urząd OCSP. Zaświadczenie to stanowi dowód wykonania weryfikacji. Elektroniczne potwierdzenie statusu każdego certyfikatu może być przesłane za pomocą poczty e-mail autorowi zapytania.

    Alternatywą do korzystania z usługi OCSP jest „samodzielne” wykonanie weryfikacji ważności certyfikatu poprzez przeglądanie list unieważnionych certyfikatów (CRL). Przeprowadzenie poprawnie takiej weryfikacji obarczone jest sporym ryzykiem związanym z zagrożeniami występującymi w sieci Internet oraz z brakiem posiadania aktualnej wiedzy na temat wszystkich wystawców i typów certyfikatów uznanych za kwalifikowane. Natomiast w przypadku korzystania z usługi OCSP mamy do czynienia z jednym tzw. punktem zaufania; po otrzymaniu odpowiedzi z urzędu OCSP wystarczy sprawdzić autentyczność poświadczenia (podpisu) urzędu za pomocą danych powszechnie znanych, zawartych w zaświadczeniu certyfikacyjnym wydanym przez Narodowe Centrum Certyfikacji na wniosek Ministra Gospodarki.

    Wymagania techniczne

    Nie ma specjalnych wymagań technicznych dla tej usługi.
    "
  10. Inny sposób n zarabianie kasy e-Notarius (tzw. Data Validation and Certification Server). Kwalifikowana usługa e-Notarius zapewnia:
    • proste i wiarygodne sprawdzenie poprawności podpisu (-ów) elektronicznego,
    • oraz weryfikację statusu certyfikatu (-ów) klucza publicznego, związanych z podpisem lub podpisami.
  11. Wniosek, jest to płatne wg. cennika, możemy to zrobić sami lub poprzez bibliotekę Sigillum
  12. Do sprawdzenia - nowa wersj CryptoCard Suite z CrytpoTech ma wspierać Javę bezpośrednio (ze stron KIR lub Certum)

piątek, lipca 25, 2008

Piątkowe wiadomości:
  1. Ranking popularności przegladarek w Polsce
  2. Jest nowa wersja pocztowego klienta Mozilli -(złośliwi mówią, że to tylko wynikało z potrzeb załatania dziur bezpieczeństwa a nie nowej funkcjonalności). Tu jest strona o dodatkach.
  3. Jak wyszukać i aktualizować dane o sterownikach systemowych, jest na to Driver Detective.
  4. MySQL obrasta w piórka (udawadniając słusznie zresztą, że może pdo względem funkcji dorosnąć do swych komercyjnych rywali). Uzyskuje nową funkcjonalność staje się też wolniejszy i bardziej skompilowany w obsłudze, dlatego rusza projekt Drizzzle. Chodzi o uzyskanie lekkiego motoru bazodanowego o przyzwoitej szybkości i funkcjonalności. Dane są na wiki. Wykorzystana zostanie metoda mikrojądro i rozszerzeń funkconlanych dołączanych do niego w miarę potrzeb. Projekt ma wolną rękę od Sun-a, który kupił tą technologię od AB szwedów.
  5. Open source once:radix super-duper.
  6. Lekki i wygodny contener javy Jetty.
  7. To co najlepsze w świecie oprogramowania pod Windows - http://windowssecrets.com/2008/07/24/03-Yahoo-Mails-makeover-gives-it-the-webmail-edge
  8. Nosorożec czyli Javascript for Java - Rhino.
  9. Tim Bray idzie pod prąd (sprzeciw wobec komplikacji SOAP).

środa, lipca 23, 2008

Linki dnia:
Dla dzieci ciekawą formą jest korzystanie z Google Sketches (uczy tworzenia brył i orientacji w przestrzeni). Inne formy aktywacji dzieci to uczenie ich prostych technik programowania (najlepiej z interfejsem graficznym np. tworzenie ciekawych stron) np. FireHouse.
Facebook zaimplementuje wreszcie na większa skalę mechanizm autentykacji zwany OpenID (ja się juz zarejestrowałem).
WSO2 od dawna specjalizuje się w WS, teraz stworzyła mashup serwer.
Każdy pakiet do tworzenia podpisu u klienta musi coś w tle instalować, stąd wniosek, że musi jakoś "wkraść" się z Internetu do środowiska lokalnego (najczęściej po cichu). Taką możliwość stwarzają mechanizmy ActiveX i Appletów, ale trzeba je podpisać cyfrowo (kupić odpowiedni certyfikat do podpisywania kodu).
MyEclipse to może domorosłe tworzenie aplikacji w Javie ale ma dużo materiałów do nauczenia się samej techniki programowania (zawiera wiele skrojonych i dopasowanych do siebie projektów open-source) czego nie ma czysty Eclispe a tym bardziej IBMowski RAD (ten to się skupia na opanowaniu i trzymaniu w ryzach projektu i jego członków). Podpbny akcelerator do nauki techniik programowania jest w NetBeans wpsieranym przez Sun-a.
Programowanie tzw. smartcard jest możliwe także w czystej Javie ale wymaga to spełnienia wielu warunków brzegowych (stosuje się Java Card 2.2.2 oraz wsparcie smartcard przez Sun).
Do tworzenie ciekawego interfejsu użytkownika w aplikacjach Webowych może służyć Ext JS.
Obiecujące narzędzie do sterowania innym komputerem - Remobo.
Dla dzieci - tworzenie krzyżówek EclipseCrossword.
Źródło inspiracji dla C# - MS Codeplex.
Ciekawy artykuł w CodeMagzien na temat modułowej i rozszerzalnej budowy IDE dla Visual Studio. MS Expression Studio 2 może wspierać tworzenie aplikacji nie tylko w ASP ale i W PHP. Punkt zborny dla łatek i udoskonaleń w MS VS - pierwotny hot fix i MS Code Gallery. Ciekawy strona z ASP - AspAlliance. Ściąganie plików w C# - http://blogs.techrepublic.com.com/programming-and-development/?p=695.
Nieustanny strumień informacji - http://feeds.feedburner.com/techrepublic/programming-and-development.
Książka Helion-u "C# 3 i .NET 3.5. Technologia LINQ" Matulewski.
Bardzo obiecujące narzędzie na Codeplex - WebGUI.
Do obsługi kryptograficznych funkcji służą programy narzędziowe z MS np. do obsługi listy CRL - CertMgr.exe. Opis można znaleźć tu. Innym takim programem jest narzędzie z MS Windows 2003 Server - CertUtil. Jego opis można znaleźć na MS w specjalnym blogu na temat PKI.
Uwaga neokerne to serwer internetowy komatybilny z MS IIS (wspiera nawet .NET) ale działa wszędzie nawet na Linuksie (poprzez mono).
Strona dla deweloperów daniweb jest OK.
Dokumentacja opisująca XADES - http://uri.etsi.org/01903/v1.1.1/ts_101903v010101p.pdf
Bardzo ciekawe linki do javy:
  1. javapassion
  2. http://www.idevelopment.info/data/Programming/java/PROGRAMMING_Java_Programming.shtml
  3. http://www.brainjar.com/