Modular Architecture: Risks

Early in the public beta program, I was of the opinion that LR's modular architecture would turn out to be one of those thing that is developer-friendly, but user-hostile. Frequently, I'd find that a tool or bit of information I was expecting to be immediately available was suddenly missing, 'cause I was in the wrong module. Usually this was a Library Module feature missing from the Development Module, or vice versa.
This issue has abated as the product has developed, and has probably abated more in v1.0 (which I haven't used yet). But I still worry that this architecture, for all it's benefits, is inevitably destined to impose limitations on usability.
Here's an example from Beta 4.1:
Say you're going through and rating a bunch of candids shot in a mixed light situation, where for each image you need to block in white balance in order to judge the image, and where WB might be different for each image. The efficient tool you want to use here is the White Balance Selector from the Develop Module (even more so in v1 with the new preview feature). So you go to the Develop module, moving through the images, quick WB, quick rating them with "[" and "]". Only you can't SEE the ratings. they're not displayed anywhere in the Develop view. Not in the content area. Not in the toolbar. Not in the filmstrip.
The obvious solution is to either a) add the White Balance Selector tool to Quick Develop, or b) add rating icons to the filmstrip thumbs and in the Develop content area (or toolbar). Fundamentally, you're forced to replicate features between modules, which is, to some extent, defeating the purpose of the modular structure.
Compare that to Aperture's non-modal interface, where you can enable tools and panels individually in multiple combinations and arrangements.
Just food for thought. I prefer LR for a number of reasons (and am in the process of consolidating old Aperture shoots to LR). But I'm just saying I think there is a downside to the modular architecture.
Tim Wilson
Studio/lab

I prefer to see all those settings in context, rather than have to check the filter setting to know what I'm looking at. Say I'm developing a 3-star pick and see a problem and want to check related images that may have other ratings. I want to glance down to the filmstrip and see if there are other 3-star or 2-star images nearby, and which ones are 3 and which are 2. Shouldn't have to go fiddling with filters to do that.
In Aperture, the star ratings are shown with the image everywhere in the program (unless you turn them off). When you're bouncing around looking at a lot of similar images, that immediate, intuitive, qualitative identification becomes a very useful thing.
Tim Wilson
Studio/lab

Similar Messages

  • Best use of framework events in application architecture

    Hello,
    I apologize in advance if this is not the appropriate forum to be posting about Flex framework questions.  I considered the Cairngorm forum, but thought the question applied more broadly to all flex frameworks. That, and it seems that the Cairngorm forum isn't really very active.
    My question is about using frameworks for application architecture. Reading the "Introducing Cairngorm" document,  I see that it specifically says that Cairngorm events are just those events that will handle business logic (things like grabbing data from a server, committing data to a server, etc).  So then, how does a view interact with a controller when changing state?
    Let's say I have two or three different views of the same data and I have a buttonbar to switch to the view I want. Is it then typical to dispatch a Cairngorm (or Mate/Swiz/Pure MVC, etc..)  event to the controller to change the view state of the application?  Does this effectively mean that for every button a user can click on, we'll have an event and a command associated with that event to perform some change of state or business logic? With a moderately complicated application, with several different screens, a few forms, a couple of lookups, i.e. lots of buttons for user input, that seems like an awfully huge number of events/commands...? Or do you dispatch a regular old flash Event to handle this? Or does the view data bind to the model to change the view state?
    Obviously there's never any single correct answer to application architecture questions, but I'd like to know if there's any general best practices that I should follow. I don't want to under-architect OR over-architect my app.  I'm new to Flex programming and would like not to code something egregiously ugly.
    Thanks,
    Cory

    Hi,
    Consider this, there is no such thing as an enterprise level RIA, the whole concept behind thin client was to restrict the enterprise requirements to the backend, that being said if we assume that a flex application is specifically for the client end and can maintain its own state and that MVC frameworks are more about enterprise solutions then the whole framework argument becomes what it is, academic BS.
    <start rant>
    Its really simply, in half a century nothing has changed, you have rules and requirements(model), you have access to that(view) and you wrap it up as a program/application(controller) so  why do you need convoluted multilayer abstraction of functionality to make things work ? maybe so those that can't get a real development job can run around and preach at conferences, how else could they feed their adopted kids.
    So all those nice buzzwords, design patterns(the new age terminology for modular architecture), model/view/controller, borg coding(resistance is futile) is all very fine if you want to act smart but producing quality code actually means you are smart. As you may have guessed I am not a strong proponent of MVC frameworks, and I don't even need to get into the argument that everytime a 'framework' expert gets control of a project that isn't done in their MVC  poison of choice it gets a rewrite, clients really love those associated costs and retesting requirements.
    </end rant>
    You only need 1 framework for flex and thats the flex framework.
    Have a read this blog, the section on MVC and Flex is very interesting if not overly polite.
    http://www.herrodius.com/blog/216
    David

  • What are advantages of EJB

    Well, I have read all class of J2EE books and worked a lot on EJB, so I think, that I do know, what I am speeking about. But I still can't get the spirit.
    My point of view is the following:
    EJB is a very (extremely) modular architecture, which is theoretically innovative, but in practice..?
    It is so extremely modular, that you have to pay an inmense overhead for it (descriptors, EJB-Containers, problems of testing, performance problems etc..)
    Ok, there is scalability, security, support of multiclients, distributed transformations
    but : security is not(!) standardized.
    support of multiclients is in the great majority of cases allready done by a simple webcontainer.
    Use of remote ejb-clients and distributed transactions are rare exceptions.
    It is somehow awful, to test ejb, because you need remote interface for test-client, but after testing you have to convert to local interface. The more, you can't get J2EE server for more than 30 days but JBoss that is not documented.
    So give me back the faith please
    What are the advantages?

    Consultants are paid the GDP of a small country to answer questions like that! They'd examine everything from the throughput to the development team as well as the financial risk of concurrency/security problems.
    Such a generic situation can only be answered in similarly generic terms:
    J2EE is "worthwhile" if the costs/risks to your business inherent in not supporting concurrency and security combined with the costs/risks of redesigning the system to be scalable outweigh the increase in costs/risks of development using J2EE.
    Since one side of this balance is almost entirely determined by the development of the application it isn't unreasonable to say that the abilities of the development team will be a major factor in whether J2EE will be "worthwhile" to your enterprise. A good J2EE development team will make light work of complex enterprise applications that another development team might struggle with (and most likely make a bad job of).
    So, in general:
    PROS: read the J2EE spec
    CONS: if you don't need it then it's overhead (but isn't everything?)
    It's horses for courses.

  • Docbook-utils

    dear all,
       I want to make package docbook-utils
    but have erroe . someone know why?
    Making all in HTML
    make[2]: Entering directory `/var/abs/local/docbook-utils/src/docbook-utils-0.6.14/doc/HTML'
    SGML_CATALOG_FILES=/etc/sgml/catalog
    SGML_SEARCH_PATH=../..:../../doc:..
            jade -t sgml -i html -d ../../docbook-utils.dsl#html
                    -V '%use-id-as-filename%' ../../doc/docbook-utils.sgml
    jade:../../doc/docbook-utils.sgml:1:55:W: cannot generate system identifier for public text "-//OASIS//DTD DocBook V3.1//EN"
    jade:../../doc/docbook-utils.sgml:9:0:E: reference to entity "BOOK" for which no system identifier could be generated
    jade:../../doc/docbook-utils.sgml:1:0: entity was defined here
    jade:../../doc/docbook-utils.sgml:9:0:E: DTD did not contain element declaration fordocument type name
    jade:../../doc/docbook-utils.sgml:11:11:E: there is no attribute "LANG"
    jade:../../doc/docbook-utils.sgml:11:19:E: there is no attribute "ID"
    jade:../../doc/docbook-utils.sgml:11:34:E: element "BOOK" undefined
    jade:../../doc/docbook-utils.sgml:12:11:E: element "BOOKINFO" undefined
    jade:../../doc/docbook-utils.sgml:13:10:E: element "TITLE" undefined
    jade:../../doc/docbook-utils.sgml:14:12:E: element "PUBDATE" undefined
    jade:../../doc/docbook-utils.sgml:16:16:E: element "LEGALNOTICE" undefined
    jade:../../doc/docbook-utils.sgml:17:6:E: element "PARA" undefined
    jade:../../doc/docbook-utils.sgml:24:13:E: element "ABSTRACT" undefined
    jade:../../doc/docbook-utils.sgml:25:11:E: element "PARA" undefined
    jade:../../doc/docbook-utils.sgml:28:11:E: element "PARA" undefined
    jade:../../doc/docbook-utils.sgml:34:16:E: element "AUTHORGROUP" undefined
    jade:../../doc/docbook-utils.sgml:35:13:E: element "AUTHOR" undefined
    jade:../../doc/docbook-utils.sgml:36:11:E: element "FIRSTNAME" undefined
    jade:../../doc/docbook-utils.sgml:36:37:E: element "SURNAME" undefined
    jade:../../doc/docbook-utils.sgml:37:20:E: element "AFFILIATION" undefined
    jade:../../doc/docbook-utils.sgml:38:18:E: element "ADDRESS" undefined
    jade:../../doc/docbook-utils.sgml:38:25:E: element "EMAIL" undefined
    jade:../../doc/docbook-utils.sgml:41:13:E: element "AUTHOR" undefined
    jade:../../doc/docbook-utils.sgml:42:11:E: element "FIRSTNAME" undefined
    jade:../../doc/docbook-utils.sgml:42:39:E: element "SURNAME" undefined
    jade:../../doc/docbook-utils.sgml:43:20:E: element "AFFILIATION" undefined
    jade:../../doc/docbook-utils.sgml:44:18:E: element "ADDRESS" undefined
    jade:../../doc/docbook-utils.sgml:44:25:E: element "EMAIL" undefined
    jade:../../doc/docbook-utils.sgml:47:13:E: element "AUTHOR" undefined
    jade:../../doc/docbook-utils.sgml:48:11:E: element "FIRSTNAME" undefined
    jade:../../doc/docbook-utils.sgml:48:38:E: element "SURNAME" undefined
    jade:../../doc/docbook-utils.sgml:49:20:E: element "AFFILIATION" undefined
    jade:../../doc/docbook-utils.sgml:50:18:E: element "ADDRESS" undefined
    jade:../../doc/docbook-utils.sgml:50:25:E: element "EMAIL" undefined
    jade:../../doc/docbook-utils.sgml:53:13:E: element "AUTHOR" undefined
    jade:../../doc/docbook-utils.sgml:54:11:E: element "FIRSTNAME" undefined
    jade:../../doc/docbook-utils.sgml:54:41:E: element "SURNAME" undefined
    jade:../../doc/docbook-utils.sgml:55:20:E: element "AFFILIATION" undefined
    jade:../../doc/docbook-utils.sgml:56:18:E: element "ADDRESS" undefined
    jade:../../doc/docbook-utils.sgml:56:25:E: element "EMAIL" undefined
    jade:../../doc/docbook-utils.sgml:63:14:E: there is no attribute "ID"
    jade:../../doc/docbook-utils.sgml:63:28:E: element "CHAPTER" undefined
    jade:../../doc/docbook-utils.sgml:64:12:E: element "DOCINFO" undefined
    jade:../../doc/docbook-utils.sgml:65:13:E: element "AUTHOR" undefined
    jade:../../doc/docbook-utils.sgml:66:18:E: element "FIRSTNAME" undefined
    jade:../../doc/docbook-utils.sgml:66:44:E: element "SURNAME" undefined
    jade:../../doc/docbook-utils.sgml:69:10:E: element "TITLE" undefined
    jade:../../doc/docbook-utils.sgml:71:9:E: element "PARA" undefined
    jade:../../doc/docbook-utils.sgml:76:9:E: element "PARA" undefined
    jade:../../doc/docbook-utils.sgml:76:21:E: there is no attribute "URL"
    jade:../../doc/docbook-utils.sgml:76:57:E: element "ULINK" undefined
    jade:../../doc/docbook-utils.sgml:81:9:E: element "PARA" undefined
    jade:../../doc/docbook-utils.sgml:89:9:E: element "PARA" undefined
    jade:../../doc/docbook-utils.sgml:94:9:E: element "PARA" undefined
    jade:../../doc/docbook-utils.sgml:95:19:E: element "ITEMIZEDLIST" undefined
    jade:../../doc/docbook-utils.sgml:96:17:E: element "LISTITEM" undefined
    jade:../../doc/docbook-utils.sgml:97:15:E: element "PARA" undefined
    jade:../../doc/docbook-utils.sgml:97:28:E: element "APPLICATION" undefined
    jade:../../doc/docbook-utils.sgml:101:17:E: element "LISTITEM" undefined
    jade:../../doc/docbook-utils.sgml:102:15:E: element "PARA" undefined
    jade:../../doc/docbook-utils.sgml:102:28:E: element "APPLICATION" undefined
    jade:../../doc/docbook-utils.sgml:108:19:E: element "ITEMIZEDLIST" undefined
    jade:../../doc/docbook-utils.sgml:109:17:E: element "LISTITEM" undefined
    jade:../../doc/docbook-utils.sgml:110:15:E: element "PARA" undefined
    jade:../../doc/docbook-utils.sgml:113:17:E: element "LISTITEM" undefined
    jade:../../doc/docbook-utils.sgml:114:15:E: element "PARA" undefined
    jade:../../doc/docbook-utils.sgml:117:17:E: element "LISTITEM" undefined
    jade:../../doc/docbook-utils.sgml:118:15:E: element "PARA" undefined
    jade:../../doc/docbook-utils.sgml:123:9:E: element "PARA" undefined
    jade:../../doc/docbook-utils.sgml:129:9:E: element "NOTE" undefined
    jade:../../doc/docbook-utils.sgml:130:14:E: element "SIMPARA" undefined
    jade:../../doc/docbook-utils.sgml:131:12:E: element "EMAIL" undefined
    jade:../../doc/docbook-utils.sgml:134:14:E: element "SIMPARA" undefined
    jade:../../doc/docbook-utils.sgml:135:12:E: element "EMAIL" undefined
    jade:../../doc/docbook-utils.sgml:138:14:E: element "SIMPARA" undefined
    jade:../../doc/docbook-utils.sgml:139:41:E: element "ULINK" undefined
    jade:../../doc/docbook-utils.sgml:145:24:E: element "CHAPTER" undefined
    jade:../../doc/docbook-utils.sgml:146:12:E: element "DOCINFO" undefined
    jade:../../doc/docbook-utils.sgml:147:13:E: element "AUTHOR" undefined
    jade:../../doc/docbook-utils.sgml:148:18:E: element "FIRSTNAME" undefined
    jade:../../doc/docbook-utils.sgml:148:46:E: element "SURNAME" undefined
    jade:../../doc/docbook-utils.sgml:151:10:E: element "TITLE" undefined
    jade:../../doc/docbook-utils.sgml:153:6:E: element "SECT1" undefined
    jade:../../doc/docbook-utils.sgml:154:6:E: element "TITLE" undefined
    jade:../../doc/docbook-utils.sgml:156:9:E: element "PARA" undefined
    jade:../../doc/docbook-utils.sgml:156:23:E: element "CITEREFENTRY" undefined
    jade:../../doc/docbook-utils.sgml:156:39:E: element "REFENTRYTITLE" undefined
    jade:../../doc/docbook-utils.sgml:157:14:E: element "MANVOLNUM" undefined
    jade:../../doc/docbook-utils.sgml:160:9:E: element "PARA" undefined
    jade:../../doc/docbook-utils.sgml:161:16:E: element "APPLICATION" undefined
    jade:../../doc/docbook-utils.sgml:162:37:E: element "FIRSTTERM" undefined
    jade:../../doc/docbook-utils.sgml:163:14:E: element "FIRSTTERM" undefined
    jade:../../doc/docbook-utils.sgml:168:9:E: element "PARA" undefined
    jade:../../doc/docbook-utils.sgml:170:23:E: element "FIRSTTERM" undefined
    jade:../../doc/docbook-utils.sgml:171:14:E: element "FIRSTTERM" undefined
    jade:../../doc/refentry/jw.sgml:1:13:E: there is no attribute "ID"
    jade:../../doc/refentry/jw.sgml:1:17:E: element "REFENTRY" undefined
    jade:../../doc/refentry/jw.sgml:2:10:E: element "DOCINFO" undefined
    jade:../../doc/refentry/jw.sgml:3:11:E: element "AUTHOR" undefined
    jade:../../doc/refentry/jw.sgml:4:16:E: element "FIRSTNAME" undefined
    jade:../../doc/refentry/jw.sgml:4:42:E: element "SURNAME" undefined
    jade:../../doc/refentry/jw.sgml:5:18:E: element "AFFILIATION" undefined
    jade:../../doc/refentry/jw.sgml:6:16:E: element "ADDRESS" undefined
    jade:../../doc/refentry/jw.sgml:6:23:E: element "EMAIL" undefined
    jade:../../doc/refentry/jw.sgml:10:10:E: element "REFMETA" undefined
    jade:../../doc/refentry/jw.sgml:11:18:E: element "REFENTRYTITLE" undefined
    jade:../../doc/refentry/jw.sgml:12:14:E: element "MANVOLNUM" undefined
    jade:../../doc/refentry/jw.sgml:15:13:E: element "REFNAMEDIV" undefined
    jade:../../doc/refentry/jw.sgml:16:12:E: element "REFNAME" undefined
    jade:../../doc/refentry/jw.sgml:17:12:E: element "REFNAME" undefined
    jade:../../doc/refentry/jw.sgml:18:12:E: element "REFNAME" undefined
    jade:../../doc/refentry/jw.sgml:19:12:E: element "REFNAME" undefined
    jade:../../doc/refentry/jw.sgml:20:12:E: element "REFNAME" undefined
    jade:../../doc/refentry/jw.sgml:21:12:E: element "REFNAME" undefined
    jade:../../doc/refentry/jw.sgml:22:12:E: element "REFNAME" undefined
    jade:../../doc/refentry/jw.sgml:23:12:E: element "REFNAME" undefined
    jade:../../doc/refentry/jw.sgml:24:12:E: element "REFNAME" undefined
    jade:../../doc/refentry/jw.sgml:25:12:E: element "REFNAME" undefined
    jade:../../doc/refentry/jw.sgml:26:15:E: element "REFPURPOSE" undefined
    jade:../../doc/refentry/jw.sgml:29:17:E: element "REFSYNOPSISDIV" undefined
    jade:../../doc/refentry/jw.sgml:30:16:E: element "CMDSYNOPSIS" undefined
    jade:../../doc/refentry/jw.sgml:31:14:E: element "COMMAND" undefined
    jade:../../doc/refentry/jw.sgml:32:20:E: there is no attribute "CHOICE"
    jade:../../doc/refentry/jw.sgml:32:25:E: element "GROUP" undefined
    jade:../../doc/refentry/jw.sgml:32:30:E: element "ARG" undefined
    jade:../../doc/refentry/jw.sgml:32:38:E: element "OPTION" undefined
    jade:../../doc/refentry/jw.sgml:33:18:E: element "REPLACEABLE" undefined
    jade:../../doc/refentry/jw.sgml:34:5:E: element "ARG" undefined
    jade:../../doc/refentry/jw.sgml:34:13:E: element "OPTION" undefined
    jade:../../doc/refentry/jw.sgml:35:18:E: element "REPLACEABLE" undefined
    jade:../../doc/refentry/jw.sgml:36:18:E: element "SBR" undefined
    jade:../../doc/refentry/jw.sgml:38:25:E: element "GROUP" undefined
    jade:../../doc/refentry/jw.sgml:38:30:E: element "ARG" undefined
    jade:../../doc/refentry/jw.sgml:38:38:E: element "OPTION" undefined
    jade:../../doc/refentry/jw.sgml:39:18:E: element "REPLACEABLE" undefined
    jade:../../doc/refentry/jw.sgml:40:5:E: element "ARG" undefined
    jade:../../doc/refentry/jw.sgml:40:13:E: element "OPTION" undefined
    jade:../../doc/refentry/jw.sgml:40:45:E: element "REPLACEABLE" undefined
    jade:../../doc/refentry/jw.sgml:41:18:E: element "SBR" undefined
    jade:../../doc/refentry/jw.sgml:43:25:E: element "GROUP" undefined
    jade:../../doc/refentry/jw.sgml:43:30:E: element "ARG" undefined
    jade:../../doc/refentry/jw.sgml:43:38:E: element "OPTION" undefined
    jade:../../doc/refentry/jw.sgml:43:63:E: element "REPLACEABLE" undefined
    jade:../../doc/refentry/jw.sgml:44:12:E: element "ARG" undefined
    jade:../../doc/refentry/jw.sgml:44:20:E: element "OPTION" undefined
    jade:../../doc/refentry/jw.sgml:44:48:E: element "REPLACEABLE" undefined
    jade:../../doc/refentry/jw.sgml:45:18:E: element "SBR" undefined
    jade:../../doc/refentry/jw.sgml:47:25:E: element "GROUP" undefined
    jade:../../doc/refentry/jw.sgml:47:30:E: element "ARG" undefined
    jade:../../doc/refentry/jw.sgml:47:38:E: element "OPTION" undefined
    jade:../../doc/refentry/jw.sgml:48:12:E: element "ARG" undefined
    jade:../../doc/refentry/jw.sgml:48:20:E: element "OPTION" undefined
    jade:../../doc/refentry/jw.sgml:49:18:E: element "SBR" undefined
    jade:../../doc/refentry/jw.sgml:51:25:E: element "GROUP" undefined
    jade:../../doc/refentry/jw.sgml:52:5:E: element "ARG" undefined
    jade:../../doc/refentry/jw.sgml:52:13:E: element "OPTION" undefined
    jade:../../doc/refentry/jw.sgml:53:20:E: element "REPLACEABLE" undefined
    jade:../../doc/refentry/jw.sgml:54:12:E: element "ARG" undefined
    jade:../../doc/refentry/jw.sgml:54:20:E: element "OPTION" undefined
    jade:../../doc/refentry/jw.sgml:55:20:E: element "REPLACEABLE" undefined
    jade:../../doc/refentry/jw.sgml:56:18:E: element "SBR" undefined
    jade:../../doc/refentry/jw.sgml:58:25:E: element "GROUP" undefined
    jade:../../doc/refentry/jw.sgml:59:12:E: element "ARG" undefined
    jade:../../doc/refentry/jw.sgml:59:20:E: element "OPTION" undefined
    jade:../../doc/refentry/jw.sgml:59:45:E: element "REPLACEABLE" undefined
    jade:../../doc/refentry/jw.sgml:60:12:E: element "ARG" undefined
    jade:../../doc/refentry/jw.sgml:60:20:E: element "OPTION" undefined
    jade:../../doc/refentry/jw.sgml:60:48:E: element "REPLACEABLE" undefined
    jade:../../doc/refentry/jw.sgml:61:18:E: element "SBR" undefined
    jade:../../doc/refentry/jw.sgml:63:25:E: element "GROUP" undefined
    jade:../../doc/refentry/jw.sgml:64:12:E: element "ARG" undefined
    jade:../../doc/refentry/jw.sgml:64:20:E: element "OPTION" undefined
    jade:../../doc/refentry/jw.sgml:64:45:E: element "REPLACEABLE" undefined
    jade:../../doc/refentry/jw.sgml:65:12:E: element "ARG" undefined
    jade:../../doc/refentry/jw.sgml:65:20:E: element "OPTION" undefined
    jade:../../doc/refentry/jw.sgml:65:53:E: element "REPLACEABLE" undefined
    jade:../../doc/refentry/jw.sgml:66:18:E: element "SBR" undefined
    jade:../../doc/refentry/jw.sgml:68:25:E: element "GROUP" undefined
    jade:../../doc/refentry/jw.sgml:69:12:E: element "ARG" undefined
    jade:../../doc/refentry/jw.sgml:69:20:E: element "OPTION" undefined
    jade:../../doc/refentry/jw.sgml:69:45:E: element "REPLACEABLE" undefined
    jade:../../doc/refentry/jw.sgml:70:12:E: element "ARG" undefined
    jade:../../doc/refentry/jw.sgml:70:20:E: element "OPTION" undefined
    jade:../../doc/refentry/jw.sgml:70:51:E: element "REPLACEABLE" undefined
    jade:../../doc/refentry/jw.sgml:71:18:E: element "SBR" undefined
    jade:../../doc/refentry/jw.sgml:73:25:E: element "GROUP" undefined
    jade:../../doc/refentry/jw.sgml:74:12:E: element "ARG" undefined
    jade:../../doc/refentry/jw.sgml:74:20:E: element "OPTION" undefined
    jade:../../doc/refentry/jw.sgml:74:45:E: element "REPLACEABLE" undefined
    jade:../../doc/refentry/jw.sgml:75:12:E: element "ARG" undefined
    jade:../../doc/refentry/jw.sgml:75:20:E: element "OPTION" undefined
    jade:../../doc/refentry/jw.sgml:75:51:E: element "REPLACEABLE" undefined
    jade:../../doc/refentry/jw.sgml:76:18:E: element "SBR" undefined
    jade:../../doc/refentry/jw.sgml:78:18:E: there is no attribute "CHOICE"
    jade:../../doc/refentry/jw.sgml:78:23:E: element "ARG" undefined
    jade:../../doc/refentry/jw.sgml:78:31:E: element "OPTION" undefined
    jade:../../doc/refentry/jw.sgml:79:20:E: element "REPLACEABLE" undefined
    jade:../../doc/refentry/jw.sgml:79:57:E: element "REPLACEABLE" undefined
    jade:../../doc/refentry/jw.sgml:79:88:E: element "SBR" undefined
    jade:../../doc/refentry/jw.sgml:81:25:E: element "GROUP" undefined
    jade:../../doc/refentry/jw.sgml:82:12:E: element "ARG" undefined
    jade:../../doc/refentry/jw.sgml:82:20:E: element "OPTION" undefined
    jade:I: maximum number of errors (200) reached; change with -E option
    jade:../../docbook-utils.dsl:5:73:W: cannot generate system identifier for public text "-//James Clark//DTD DSSSL Style Sheet//EN"
    jade:../../docbook-utils.dsl:9:96:W: cannot generate system identifier for public text "-//Norman Walsh//DOCUMENT DocBook HTML Stylesheet//EN"
    jade:../../docbook-utils.dsl:15:0:E: reference to entity "STYLE-SHEET" for which no system identifier could be generated
    jade:../../docbook-utils.dsl:5:0: entity was defined here
    jade:../../docbook-utils.dsl:15:0:E: DTD did not contain element declaration for document type name
    jade:../../docbook-utils.dsl:9:1:E: notation "DSSSL" for entity "docbook.dsl" undefined
    jade:../../docbook-utils.dsl:17:12:E: element "STYLE-SHEET" undefined
    jade:../../docbook-utils.dsl:19:26:E: there is no attribute "ID"
    jade:../../docbook-utils.dsl:19:38:E: there is no attribute "USE"
    jade:../../docbook-utils.dsl:19:47:E: element "STYLE-SPECIFICATION" undefined
    jade:../../docbook-utils.dsl:20:29:E: element "STYLE-SPECIFICATION-BODY" undefined
    jade:../../docbook-utils.dsl:32:45:E: element "STYLE-SPECIFICATION" undefined
    jade:../../docbook-utils.dsl:33:29:E: element "STYLE-SPECIFICATION-BODY" undefined
    jade:../../docbook-utils.dsl:68:44:E: element "STYLE-SPECIFICATION" undefined
    jade:../../docbook-utils.dsl:69:29:E: element "STYLE-SPECIFICATION-BODY" undefined
    jade:../../docbook-utils.dsl:113:29:E: there is no attribute "ID"
    jade:../../docbook-utils.dsl:113:48:E: there is no attribute "DOCUMENT"
    jade:../../docbook-utils.dsl:113:61:E: element "EXTERNAL-SPECIFICATION" undefined
    jade:../../docbook-utils.dsl:115:13:E: end tag for "EXTERNAL-SPECIFICATION" omitted,but its declaration does not permit this
    jade:../../docbook-utils.dsl:113:2: start tag was here
    jade:E: specification document does not have the DSSSL architecture as a base architecture
    jade:E: no style-specification or external-specification with ID "HTML"
          DocBook Utils
        18 June 2000
            Permission is granted to copy, distribute and/or modify this
            document under the terms of the GNU Free Documentation License,
            Version 1.1 or any later version published by the Free Software
            Foundation. A copy of the license is included in the section
            entitled "GNU Free Documentation License".
              This documentation describes the DocBook-utils version
          0.2.
          The DocBook-utils are a collection of various utilites to
          convert and analyse SGML documents in general and DocBook files
          in particular. They are developped by many authors and released
          under GPL licence.
                    Eric Bischoff
                      [email protected]
            Jochem Huhmann
                      [email protected]
            Steve Cheng
                      [email protected]
            Frederik Fouvry
                      [email protected]
                        Eric Bischoff
        Introduction
        The DocBook-utils are a collection of various utilites to
        convert and analyse SGML documents in general and DocBook files
        in particular. They are developped by many authors and released
        under GPL licence.
        DocBook
        is a SGML-based or XML-based standard for writing technical
        documentation defined by the DocBook Technical Committee of the
        OASIS consortium.
        The DocBook-utils try to be as general as possible, and
        therefore it is possible to use them with other SGML formats
        than DocBook, like TEI or HTML. But each time there was an
        opportunity to make them biased to DocBook to ease the life of
        DocBook users, this opportunity has been given a higher priority
        than generality considerations. This is why this package is not
        called "SGML-utils".
        The DocBook-utils are independant of any existing distribution
        of SGML parsers and of DocBook resources. However, they conform
        with the new draft on SGML and DocBook standardization being
        discussed at Linux Standard Base project.
        So far, the DocBook-utils only consist of:
                            jw, a script used to convert
              from DocBook or other SGML formats into "classical" file
              formats like HTML, man, info, RTF...
                      sgmldiff, a script used to
              compare the markup of a SGML file with its translation into
              another language.
          but we would like to see them accomplish other tasks in the future:
                            Conversion from "legacy" formats like LinuxDoc, man,
              info, HTML or PDF into DocBook.
                      Refined analysis of DocBook files like a "sgmlgrep"
              program that would allow context-sensitive searchs.
                      Support for XML.
        If you want to help or keep informed of the latest developments,
        please subscribe to the "[email protected]"
        mailing list. This list has been set up to allow collaborative
        development of these
        tools.
              To subscribe: Send a message to
          [email protected]
          - you will get a confirmation message, just reply to it.
          To unsubscribe: Send a message to
          [email protected]
          and reply to the confirmation message
          For any additional information, write to Jorge Godoy who is
          the maintainer of this list.
                        Jochem Huhmann
        jw
    Command reference
         jw
        1  converts DocBook or other
        SGML-based formats into "classical" file formats.
        The modular architecture used by
        jw allows to write plug-in
        programs (we call them backends and
        frontends). The backends are specific to
        output formats while the frontends are specific to input formats. We
        would like to encourage you to write such programs and to submit
        them to the docbook-utils project.
        While most backends are based on Jame's Clark Jade, or its
        OpenJade alternative, some of the backends make use of the programs
        from the docbook2X project. We call these
        helper programs.
                Eric Bischoff
                  [email protected]
          jw
        1
          jw
        docbook2dvi
        docbook2html
        docbook2man
        docbook2pdf
        docbook2ps
        docbook2rtf
        docbook2tex
        docbook2texi
        docbook2txt
        (Jade Wrapper) converts SGML files to other formats
                jw
          -f
          frontend
            --frontend
          frontend
          -b
          backend
            --backend backend
          -c file
            --cat file
          -n
            --nostd
            -d
            file|default|none
            --dsl
            file|default|none
                  -l file
            --dcl file
                  -s path
            --sgmlbase path
                  -p program
            --parser program
                  -o directory
            --output directory
          -V
            variable[=value]
                  make[2]: *** [api.html] Error 1
    make[2]: Leaving directory `/var/abs/local/docbook-utils/src/docbook-utils-0.6.14/doc/HTML'
    make[1]: *** [all-recursive] Error 1
    make[1]: Leaving directory `/var/abs/local/docbook-utils/src/docbook-utils-0.6.14/doc'
    make: *** [all-recursive] Error 1
    ERROR: Build Failed.  Aborting...
    ==>[root@lion docbook-utils]#

    Hello,
    is there any solution now?
    Because i need doocbook-utils.
    I hope so :-D

  • [Flex 4.5.1] What is the best way of adopting a flex built website for mobile "as is"?

    What is the best way of adopting a flex 4.5.1 built website for mobile "as is"?
    I have a website built with flex 4.5.1 which I want to be working on mobile as it should - meaning that touch style of interactions should be working not mouse.
    The question is: Do I HAVE TO recode all of my website from Application into Mobile Application in order to be a more lightweight version of the original one, which includes: remove some functionality, pages, animation, build a separate backend and cms to control it etc.?
    OR
    Can I just define mobile skins, for my existing components to use when in mobile mode, in which I could have done some tweaking by removing some unnecessary parts and changing component interactionMode to Touch ?
    Are both options which I see possible and if yes - which one would you recommend?
    Thanks in advance!

    Thanks for the answer. Yeah I bet you figured out what I want the answer to be, but is it ? That's why I am asking here. I can see my website on my HTC Desire HD and it's working pretty well. If I reskin the parts that need a bigger hit area or the scrollers to work with touch so I don't have to scroll the actual scrollbars with my finger, remove some complex animations - everything will work just fine... The problem is that I am not sure if that is the right way to do it or if it is possible at all.
    I do get your point about not designed for mobile stuff, but while with html 5 you get the job done for web and mobile with little differences at the same time, in flash you need double time cause you'll have to build 2 projects. And since the framework is one for both web and mobile.. why not...
    I want to see the pros and cons of the both approaches I suggested. In a complex modular architecture I could easily swap one web module with a mobile module for example or change skins or components if I need more lightweight ones, but do I have to copy all that logic in to a MobileApplication, can't I do it with Application and use the MobileComponents (which are simplier and less functional) if the project actually needs them...
    I do hope you get why I am asking these questions, and I can't believe I haven't found a guide or something like that "why this and not that" when it comes to mixing web with mobile development and flex... If you have, please share the link, I would be happy to read. Or someone with the experience in what I am talking about shares some knowledge, that would be great!
    Thanks.

  • Creating Packages from BLOB field contents, line wrap problems

    Good afternoon,
    we use an in-house developed database-driven update system to update both our databases and filesystems, the system itself performs really well but there is still one problem I can't fix without some expert help:
    the code of to-be-updated Oracle packages is stored inside of a BLOB field, the BLOB field will contain both the package specification and package body and needs to be split into two parts to first execute the spec and then to execute the package body (I tried to execute both in a single step but this didn't work). This works for packages with less than 32767 characters and also works in some other cases but I found one case where the executed code contains an extra line wrap right in the middle of a word.
    To make it more clear (I hope it's comprehensible), imagine the following database content:
    CREATE OR REPLACE Package
    MyPack
    AS
    [... a lot procedure headers ...]
    END MyPack;
    CREATE OR REPLACE
    Package Body MyPack AS
    [... a lot more procedures ...]
    PROCEDURE myTest (intID OUT integer)
    AS
    BEGIN
      SELECT count (*) into intID FROM MyTa[--this is where the dbms_lob.substr() ends --]ble;
    END;
    END MyPack;My code searches for the second occurrence of the "Create or replace package", splits the code into spec and body, executes the specification and keeps on adding the rest of the code to a VARCHAR2A variable called "storedCode" from the BLOB. Now in the above example, after the specification has been removed from the string, the remaining characters (ending with the "MyTa" string) are added to the varchar2a variable, the next line is fetched from the BLOB via "dbms_lob.substr()" and added as long as dbms_lob.substr() does not return a NULL value (end of BLOB). When the code is executed after all has been fetched, the generated Package Body will contain an extra line wrap right in the middle of the "MyTable" word compiling the package invalid.
    This is the procedure code I use (definitely improvable, I'm better in MSSQL and MySQL dialects ...) to load, parse and execute the BLOB content:
       -- to run package code
      procedure runPackageCode (stepRef integer)
      AS
        numLines integer default 1;
        pos     integer default 1;
        storedCode    LOG_CHANGEDOBJECT.STOREDOBJECT%type;
        objectCursor  integer;
        lSqlOut     integer;
        sqlCommand  dbms_sql.varchar2a;
        emptyCommand dbms_sql.varchar2a;
        pIsError integer := 0;
        pErrorMsg varchar2(200) := '';
        updateRef integer := 0;
        currentUpdate integer := 0;
        schemaReference varchar2(20);
        -- required to do string cutting
        strLine varchar2(32767);
        strLeftFromSlash varchar2(32767);
        strRemaining varchar2(32767);
        intDelimiterPos integer := 0;
      begin
        -- retrieve update ID
        SELECT log_update_ref INTO currentUpdate FROM link_update_with_taskstep WHERE log_taskstep_ref = stepRef;
         begin
            select storedobject, change_area
            into storedCode, schemaReference
            from vw_storedobjects
            where step_id = stepRef;
         exception
          when no_data_found then
            pIsError := 1;
            pErrorMsg := 'Invalid SQL ID ' || stepRef;
            pkg_generic.LogError(updateRef, 'LocalUpdater', stepRef, 'Run package code failed: ' || pErrorMsg);
         end;
          if pIsError = 0 then     
            begin
              -- change schema
              execute immediate 'alter session set current_schema = ' || schemaReference;         
              objectCursor := dbms_sql.open_cursor;   
              loop
                strLine := UTL_RAW.CAST_TO_VARCHAR2(dbms_lob.substr(storedCode, 32767, pos));
                intDelimiterPos := regexp_instr(strLine, '\s*Create\s*or\s*Replace\s*Package', 2, 1, 0, 'i');
                while intDelimiterPos > 0
                loop
                  -- '/' found, execute currently stored statement
                  strLeftFromSlash := substr(strLine, 1, intDelimiterPos-1);
                  strLine := substr(strLine, intDelimiterPos);
                  -- execute the extracted part without any '/' in it
                  sqlCommand(numLines) := regexp_replace(strLeftFromSlash, '(^|\s+)/(\s+|$)', '', 1, 0, 'm');
                  if (sqlCommand(numLines) is not null) then
                    objectCursor := dbms_sql.open_cursor;   
                    dbms_sql.parse(objectCursor, sqlCommand, 1, numLines, true, dbms_sql.native);
                    lSqlOut := dbms_sql.execute(objectCursor);
                    dbms_sql.close_cursor(objectCursor);
                  end if;
                  -- reset sqlCommand
                  sqlCommand := emptyCommand;
                  -- reset line counter and store remaining string
                  numLines := 1;
                  -- check for further '/'s           
                  intDelimiterPos := regexp_instr(strLine, '\s*Create\s*or\s*Replace\s*Package', 2, 1, 0, 'i');
                end loop;
                -- add the remaining strLine to the sqlCommand
                strLine := regexp_replace(strLine, '(^|\s+)/(\s+|$)', '', 1, 0, 'm');
       --> I assume this line breaks the code, lpad()'ing the content to move it to the end of a varchar2a line didn't help
                sqlCommand(numLines) := strLine;
                exit when sqlCommand(numLines) is null;
                pos := pos+32767;
                numLines := numLines+1;
              end loop;
              objectCursor := dbms_sql.open_cursor;   
              dbms_sql.parse(objectCursor, sqlCommand, 1, numLines, true, dbms_sql.native);   
              lSqlOut := dbms_sql.execute(objectCursor);
              dbms_sql.close_cursor(objectCursor);
              commit;
              -- reset schema
              execute immediate 'alter session set current_schema = UPDATE_DB';
              -- set state to installed
              pkg_update.setstepstate(stepRef, 'Installed');
        exception
        when others then
              -- reset schema
              execute immediate 'alter session set current_schema = UPDATE_DB';
              -- set state to installFailed
              pkg_update.setstepstate(stepRef, 'InstallFailed');
              pkg_generic.LogError(updateRef, 'Database', stepRef, 'Run package code failed: ' || sqlerrm);
        end;
        end if;
      END;    Thanks if you kept on reading so far, I would really appreciate any feedback!
    Regards, Sascha

    Welcome to the forum!
    Whenever you post provide your 4 digit Oracle version (result of SELECT * FROM V$VERSION).
    Thanks for providing an easy-to-understand problem statement and for using code tags.
    >
    the code of to-be-updated Oracle packages is stored inside of a BLOB field
    >
    This should be stored in a CLOB since it is character data. Why are you using BLOB?
    >
    the BLOB field will contain both the package specification and package body and needs to be split into two parts to first execute the spec and then to execute the package body
    >
    Good, clear problem statement. So why doesn't your code do just what you said it should do: 1) split the code into two parts, 2) execute the spec and 3) execute the body.
    Instead of writing code that does these three relatively simple steps your code tries to combine splitting and executing and mushes/mashes it all together. The result, as you found, is code that is hard to understand, hard to debug, doesn't work and doesn't report on what it is doing.
    Code like this doesn't have a performance issue so the code should implement the simple step-by-step process that you so elegantly stated in your problem description:
    1. split the code into two parts
    2. execute the spec
    3. execute the body
    My advice is to refactor your code to perform the above steps in the proper order and to add proper exception handling and reporting for each step. Then when a step isn't working you will know exactly where and what the problem is.
    Here are my recommendations.
    1. Add two CLOB variables - one will hold the spec, the second will hold the body
    2. Add a comment (you have some good ones in the code now) for every step no matter how trivial it may be
    3. Add exception/error handling to EVERY STEP
    Your code for the first step has a comment but no exception handling. What should happen if you don't get any data? Why aren't you validating the data you get? Dynamic SQL using table-driven data is great, I love it, but you MUST validate that the data you get is what you expect to get.
        -- retrieve update ID
        SELECT log_update_ref INTO currentUpdate FROM link_update_with_taskstep WHERE log_taskstep_ref = stepRef;Recommended
        -- step 1 - retrieve update ID - This is the id that determines BLAH, BLAH, BLAH - add appropriate to tell a new developer what this ID is and what it means.
        BEGIN
            SELECT log_update_ref INTO currentUpdate FROM link_update_with_taskstep WHERE log_taskstep_ref = stepRef;
        EXCEPTION
            WHEN ??? THEN -- what should happen if step 1 fails? Do it here - don't default to an exception handler that is several pages away.
        END;Your code
         begin
            select storedobject, change_area
            into storedCode, schemaReference
            from vw_storedobjects
            where step_id = stepRef;
         exception
          when no_data_found then
            pIsError := 1;
            pErrorMsg := 'Invalid SQL ID ' || stepRef;
            pkg_generic.LogError(updateRef, 'LocalUpdater', stepRef, 'Run package code failed: ' || pErrorMsg);
         end;
    Good - except there is no comment that says what this does - I assume that the query above and this block are the 'retrieve update ID ' step?
    You log an error message and set the error flag to '1'. But since you don't want to continue why aren't you exiting the procedure and returning right here?
          if pIsError = 0 then     
            beginSo now you check the error flag and do several pages of code if there were no errors.
    I don't like that 'inverted' logic.
    If you don't want to continue then STOP right now! Don't make a developer scan through pages and pages of code to find out you really aren't doing anything else if there was an error.
    Either put a RETURN statement in the exception handler above or change your code to
          if pIsError = 1 then     
            RETURN;
          end if;Now the rest of the code doesn' t have to be indented; you will never get there if there is an error. Check for errors after every step and exit right then as appropriate.
              -- change schema
              execute immediate 'alter session set current_schema = ' || schemaReference;         
              objectCursor := dbms_sql.open_cursor;   
              loop
                strLine := UTL_RAW.CAST_TO_VARCHAR2(dbms_lob.substr(storedCode, 32767, pos));
                intDelimiterPos := regexp_instr(strLine, '\s*Create\s*or\s*Replace\s*Package', 2, 1, 0, 'i');
                while intDelimiterPos > 0
                loopThis code mixes all of the steps together into one giant mess. You open a cursor, try to split the BLOB into spec and body and try to parse and execute both all within a double nested loop.
    Even if that works correctly another developer will have a hard time understanding what the code is doing and fixing it if it goes wrong. And it will go wrong if you let me test if for you because I will put garbage into the BLOB for the spec, body or both to make sure it breaks and to see how your code handles it.
    I suggest you rewrite this double nested loop to perform the three steps separately.
    1. split the code into two parts
    a. put the spec into one new CLOB variable and the body into the other.
    b. use DBMS_OUTPUT (or a work table) to output the spec and body so you can see what the code is and make sure the 'split' process worked properly. You probably created that BLOB by manually concatenating the SPEC and BODY to begin with so now create a SPLIT process to split them again and give them back to you. This is such a fundamental component that I suggest creating a new SPLIT_MY_BLOB procedure. This procedure would take a BLOB and return two CLOBS as OUT parameters: one CLOB is the spec and one is the body. Then you can reuse this 'split' procedure in other code or more complex versions of code. Modular programming is the key.
    2. execute the spec - Now have a step that executes the spec and does something appropriate if the step succeeds or if it fails. I mean, do you really want to do execute the body if the spec execution fails? What do you want to do? Should you delete the body and spec? If you don't you might wind up with an INVALID body based on old code and an INVALID spec based on the new code you were trying to use. How will anyone, including you, know that the spec and body in the ALL_SOURCE view is really two different versions of things?
    This suggests that for your use case you may want to consider DROPPING the entire package, spec and body, before trying to recreate them both. At least if the package is totally missing anyone will know that the entire thing needs to be put back. Ahhhh - but to do that you need to know the package name so you can drop it. Than may require adding another step to get the package name from your data-driven table and adding a DROP PACKAGE step.
    3. execute the body - This step executes the body. Hmmmm - we have two nearly identical steps. So why don't you create a new function/procedure that takes a CLOB as input, uses dynamic sql to execute it and returns a result code. That would be useful. Then you could execute ANY sql stored in a CLOB and have a generic function that you can use for other things.
    Right now you are using the VARCHAR2 table version of DBMS_SQL.PARSE but you would change this to use the CLOB version.
    The end result of this refactoring is a main function/procedure that acts as the CONTROL - it decides what to do and what data (BLOB) to do it with. But it doesn't actually do ANY of the work. It just controls what is done.
    And you have a couple of generic, reuseable functions that actually do the work. One knows how to split a CLOB into spec and body. The other knows how to use dynamic SQL to execute a CLOB.
    Now you have a modular architecture that is easy to understand, easy to code and easy to test.

  • Dish Stirling sun Tracking program

    Hello , i am a Labview beginner. In a previous Work a program for sun Tracking was written. This program could not be tested because of a short ciciut in one of the TMCM 1110. My Task is to get the program run. But after one Week of trying i just  can control the motors with labview and this program i found in the internet. I have no idea how i should do this. Actually the program should work but it doesnt. The Bachelor thesis in which the program is described is in the appendix and the program too, Please help me i have really no idea. maybe you find the mistake in the program or maybe you have an idea for a new program to get get the Dish-Stirling-Sun tracker to run.  
    Thank you. 
    Attachments:
    Autotracking Dish-Stirling Solar Power Plant Ordner.zip ‏83 KB
    2014-10-28 18.22.38.jpg ‏3373 KB

    Hi,
    i believe, you posted this question in an earlier thread on:
    http://www.labviewforum.de/Thread-Dish-Stirling-Solaranlage-2-Achsen-Schrittmotorsteuerung
    I recommendation are the same as Trinitatis told you. 
    the bockdiagram is not programmed based on the NI style guide. Therefore nobody will be able to debug the program. 
    -> You should rewrite the source code in a modular architecture. Furthermore you have to think about your architecture.
    Therefore you have to get the basic knowledge in LabVIEW programming. The easiest way to get them is listening to LabVIEW core 1 and 2. There are several ways to do this. If you have a software within SSP, you can use Self paced online training for free,
    http://sine.ni.com/myni/self-paced-training/app/main.xhtml
    If you are writing your "Studienarbeit", you are able to get the thypical courses like core 1 and 2 for a reduced price, you can register for this via the following link in germany:
    http://germany.ni.com/academic/training/programs
    These would be my recommendation for you as a beginner. After getting the basics, you will be able to get the program running.
    Without Hardware i believe, you are the only person who can find the issue.
    Best Regards, Fabian

  • Reentrant top level vi

    I have a fairly large top level application vi which contains a number of non-reentrant Functional Globals.  It is a cRIO RT application.  The product which this LV application supports is modular.  That is, the end product is being expanded by integrating a duplicate set of the hardware.  From a software control standpoint, the same LV application could be used to support the expansion.  Thus, on the cRIO a second instance of the top level application vi running from a parallel loop would do the job.  However, because of the non-reentrant Function Globals this will not work because state needs to be maintained.  I see two options for a solution:
    1) Duplicate the top level vi hierarchy with unique file names for all functional global vi's.  This would be very inefficient.
    2) Change the functional global vi's to re-entrant, pre-allocated.  This may be the best, but has it's issues because the application calls these vi's in different places.
    Any other suggestions to manage a modular architecture like this?

    Here, I got it to work.
    You make your functional global a non-reentrant template and you make your top level vit a reentrant vi template. Then when you launch the top level vit dynamically you will get two independent instances of the functional global. I used VI server methods but you could most likely use start async call if you are using LabVIEW 2012.
    Run the Main.vi and you will see that each launched template VI increments its counter independent of the counter in the other vit.
    CLA, LabVIEW Versions 2010-2013
    Attachments:
    vitemplates.zip ‏25 KB

  • Using a User Store different from LDAP to identify users

    Hello everybody,
    I've developed a couple of authentication classes in Access Manager and
    I found the constrain to use a LDAP user store very limitative.
    I have to develop a class that check the credential against a table in
    a database. I've no LDAP user store at all. I find all the relevant
    information in the db. So I can correctly authenticate the user but I
    can't "say" to the Identity Server that the user is also correctly
    identified. In the code I can create a new NIDPPrincipal object with a
    (null UserAuthority) setting its properties for the authenticated user.
    It works but anyway I've to add a "fake" LDAP User store to be able to
    check the "identify user" option in the method definition in the
    Administration Console. And I presume that the Identity Server can
    became unstable because it can not find the User in the user store.
    I've looked at the LDAP Plugin extesion, trying to create a "wrapper"
    to the db, but the documented API is only about the LDAP definition and
    does not expose any interface to catch ldap search or read (or whatever
    else the Indentity Server may ask to the User store) so I guess that the
    LDAP access is hard-wired in the Identity server code. This approach
    seems very strange because the modular architecture of the NAM solution
    could work very well with other type of user stores than LDAP. I
    expected to find an interface to abstract the User Authority.
    I'm missing something or my argumentations are very wrong?
    Thanks
    Giovanni
    cannata_g
    cannata_g's Profile: http://forums.novell.com/member.php?userid=17484
    View this thread: http://forums.novell.com/showthread.php?t=422784

    cannata g wrote:
    >
    > Hello everybody,
    > I've developed a couple of authentication classes in Access Manager
    > and I found the constrain to use a LDAP user store very limitative.
    >
    > I have to develop a class that check the credential against a table in
    > a database. I've no LDAP user store at all. I find all the relevant
    > information in the db. So I can correctly authenticate the user but I
    > can't "say" to the Identity Server that the user is also correctly
    > identified. In the code I can create a new NIDPPrincipal object with a
    > (null UserAuthority) setting its properties for the authenticated
    > user. It works but anyway I've to add a "fake" LDAP User store to be
    > able to check the "identify user" option in the method definition in
    > the Administration Console. And I presume that the Identity Server can
    > became unstable because it can not find the User in the user store.
    >
    > I've looked at the LDAP Plugin extesion, trying to create a "wrapper"
    > to the db, but the documented API is only about the LDAP definition
    > and does not expose any interface to catch ldap search or read (or
    > whatever else the Indentity Server may ask to the User store) so I
    > guess that the LDAP access is hard-wired in the Identity server code.
    > This approach seems very strange because the modular architecture of
    > the NAM solution could work very well with other type of user stores
    > than LDAP. I expected to find an interface to abstract the User
    > Authority.
    >
    > I'm missing something or my argumentations are very wrong?
    I'm probably not really the right person but the way I see it is that
    NAM supports LDAP userstores therefore it kinda makes why the LDAP code
    is so heavily embedded. Maybe log an enhancement request to see if JDBC
    can be supported as an authentication mechanism.
    Cheers,
    Edward

  • FM and Database

    is it possible to connect FM with a Database, so that I have not to export anything from the DB, but just open the document with the link to DB and print my pdf?
    Are there some plug in that do this? Which?
    Thanks.

    Hi David,
    Since you asked..;)
    Our company, Index Information Technologies, has been working with SGML and XML the past 14 years. We are a system integrator/consultant/SW development house that builds documentation systems for customers using structured text.
    Indox is an application we have developed over the past years. Since our website's (www.index.fi) english translations are being updated (still..) and I'd imagine that finnish portion might cause reading problems.., here are the some of the new things:
    Overall
    - supports also DITA
    - Connector supports DITA Open Toolkit
    - supported databases: X-Hive, (eXist) and SQL Server 2005
    Indox Connector
    - connector between DB/filesystem and an XML editor
    - .NET-based modular architecture
    - front-end connection via COM interop
    - back-end connection via SOAP, REST, filesystem..
    - database browser
    - check-in / check-out / open / save..
    - supports versioning and ACL
    - Xlink resolver
    - edit documents through links (conref/xref)
    - resolve links for publishing through editor/pipeline
    - link editor (conref/xref)
    - fetches external entities (eg. graphics) from database or file system
    - supports embedded graphics (SVG or base-64 encoded binary data)
    - pipelined server/client-side XSL-transformation engine
    - configurable parameter passing between editor and transformation
    - doctype, system id, static/dynamic variables..
    - supports also local transformations within the instance loaded in editor
    - available for PTC/Arbortext, FrameMaker and x4o
    If you want to know more, drop me an email: martti(dot)poutanen(at)index.fi
    BR, Martti

  • Sd cycle

    Please send me the flow of SD cycle in ABAP and linking between SD transparent tables.

    hi...
    Application Development Process
    In this section, we will:
    <u><b>Planning Phase</b></u>
    Some of the most important artifacts in the planning phase are as follows:
    SyncBOs required in the application are identified and verified that they can be mapped to the business objects in a backend system as well as they are sufficient to realize the client-side requirements
    Client GUI design and navigation model are determined and agreed by the stakeholders
    Use cases covered in each iterative cycle in the implementation phase are determined
    One of the key decisions in the planning phase is to identify the business objects in the backend system and to decide how they are represented in the client application. Since one of the core functions of an Smart Sync application is that the business objects updated on a client device is successfully uploaded to a backend system and vice versa, it is very important to identify which business object in a backend system can be used and to identify the dependencies of the business objects on other objects. The identification of the business objects is typically followed by the identification of existing BAPIs. Then, it is necessary to identify the header and item structures of each object.
    On the client side, the same business object identification process is required based on the requirements. It is especially important to identify whether the downsized or merged version of the business objects in a backend system can be used.
    In most cases, BAPI wrappers are responsible for absorbing the differences between the client-side business objects and those in a backend system. However, if they are greatly different, it should be carefully investigated whether BAPI wrappers can really absorb the differences.
    Since the GUI requirements of client applications can differ greatly from an application to another depending on the target application users, it is advisable to conduct a preliminary usability test with potential users of the application and to agree on the GUI design and navigation model used in the application as early as possible.
    Finally, before moving on to the first development cycle, it is worth planning which use cases will be covered in each development cycle (For more information, refer to Iterative / Use Case Driven Development).
    <u><b>Implementation Phase</b></u>
    In each development cycle in the implementation phase, the client- and server-side components can be developed in parallel. However, it is important to be aware of the following dependencies:
    To finalize the SyncBO access logic in the client application, the definition of SyncBOs needs to be completed, and the changes in SyncBO definition can affect the client SyncBO access logic
    When SyncBOs are defined and BAPI wrappers are implemented, sample data from a backend system can be used for client application standalone testing; before that, test data must be created within the test code of the client application
    For efficient parallel development, therefore, it is important to plan the activities accordingly taking these dependencies into account.
    <u><b>  Test / Deployment Phase</b></u>
    At the end of each development cycle, it is important to conduct the integration/synchronization test, which should include the following:
    Synchronization performance benchmark with various data volume
    Performance benchmark of the client application on a target client device
    Application deployment test
    Performing the integration/synchronization test at the end of each development cycle is beneficial because it makes it possible to identify issues and risks that should be addressed in the next development cycle.
    After the completion of all the development cycles and testing, SyncBOs and BAPI wrappers are moved to the production system and an installation package of the client application is put in a Mobile Infrastructure server for automatic deployment to client devices.
    Iterative / Use Case Driven Development
    It is rarely the case that the first plan remains unchanged throughout the entire development cycle, no matter how thoroughly the planning is conducted. Thus, as widely recommended in modern software development process, the iterative and incremental development is one of the key factors also for a successful Smart Sync application development. For an effective iteration, the following can be applied:
    Cover only a couple of high-level use cases in each development cycle starting with the least dependent ones
    <b>Example</b>
    Suppose that it is identified that “customer” business object is not dependent on other main business objects although it uses “country” and “region” business objects. Suppose also that “sales order” business object refers to “customer” business object.
    Then, the first cycle might cover only “customer” business object and related ones such as “region” and “country” objects, and not “sales order” business object. Furthermore, the first cycle might just concentrate on the display of customer list and detail use cases, and the creation of a customer use case might be covered in a later cycle.
    Plan each development cycle to be completed in a relatively short time period, for example, in less than or equal to 3-4 weeks
    Conduct integration/synchronization test at the end of each development cycle
    Refine the schedule and the design based on the issues and risks identified in the previous cycle as well as the changes in the requirements (change management)
    The benefits of such an iterative approach is as follows:
    Makes it possible to identify and tackle issues/risks earlier in the development life cycle such as architecture risks and performance bottlenecks
    Reduces the integration risks at the very end of the implementation phase
    Allows continuous quality improvements and facilitates identification of reusable components
    Makes it easy to keep track of the progress and to adjust the schedule
    Makes it possible to demonstrate the application from an earlier phase of the application development, which makes it easy to get feedbacks from the stakeholders and incorporate them in the application
    Allows the participation of technical writers and testers earlier in the implementation phase
    Allows application developers to gain skills/knowledge required in various aspects of the development relatively quickly
    Allows the process improvements over the iterative cycles
    Server-side Application Development Process
    The keys of the server-side development are as follows:
    BAPI wrappers (function modules) implemented in the target backend system
    SyncBOs defined in Smart Synchronization, which includes the generation of the runtime components
    The table below describes the skills/knowledge and tasks required:
    Target System
    Skill / Knowledge Task
    Web AS 6.20 Smart Sync SyncBO builder Defining SyncBOs (parameter settings) 
    Backend SAP system  Backend application knowledge (inc. BAPIs available), ABAP  BAPI wrapper (ABAP function module) development 
    In the planning phase, it is important to identify the business scenario and the business objects required, which is followed by the identification of appropriate BAPIs available in the target backend system. It is important to agree on how the identified business objects are represented in the client application. If the business objects used in a backend system are very different from ones in client devices, BAPI wrappers may need to absorb the differences. This can be done also on the client-side application; however, it is often the case that it is less effective to do that.
    In the implementation phase, ABAP programming is required for each BAPI wrapper, and SyncBOs need to be defined using the SyncBO Builder. The SyncBO Builder will generate the runtime component (synchronizer) for each SyncBO. Then, using the SyncBO Builder, it is also necessary to generate the so-called meta-data XML, which is referenced by a client application that accesses the SyncBOs defined.
    Often, it is a useful approach to define a SyncBO as soon as possible when BAPI wrapper interfaces are defined and activated for the SyncBO but before implementing the logic in BAPI wrappers. This makes it possible to generate a meta-data XML, which is often referenced during developing SyncBO access logic of a client application.
    In the testing phase, the synchronization test needs to be performed. Finally, in the deployment phase, the BAPI wrappers and SyncBOs are transported to the target production systems.
    The diagram below describes the simplified process of the server-side application development and where the details are covered in this cookbook:
    For details of BAPI wrapper development, refer to BAPI Wrapper Development.
    For details of defining SyncBO, refer to Defining Synchronization Business Object (SyncBO).
    Client-side Application Development Process
    The key deliverable of the client-side application development is a compiled JSP/AWT application in an archive file such as a .war/.jar file.
    The skills/knowledge required for the client application development are JSP/AWT application development skills as well as the business requirements of the client application.
    The client-side application development is not different from a normal JSP/AWT application development. One of the differences is, however, that the data access is performed using Smart Sync APIs.
    Some of the important considerations in the client application development are as follows:
    Apply Model-View-Controller design pattern, which is a popular approach of a JSP/AWT application, if the application is reasonably complex
    In most cases, Smart Sync APIs should be called only within BO classes in the Model layer for reusability such as replacing the View layer with another.
    Always keep in mind that PDAs are different from PCs, even if the software technology looks the same as the technology of PCs
    Pay attention particularly to memory consumption and performance, and conduct the performance test on a target client device from an early phase of the development
    Decide the GUI design and flows of the application as early as possible
    Plan development activities taking the availability of meta-data XML, which defines the client view of the SyncBOs, into account
    Develop a build script so that the standalone and integration tests are conducted frequently .
    or u can visit the link
    https://www.sdn.sap.com/irj/go/km/docs/library/mobile/mobile%20infrastructure/mobile%20development%20kit%202.5/content/appdev/smartsync/app_dev_process.html
    <b>plz reward pts if helpful.</b>
    regards
    vijay

  • ApplicationUpdater for apk(flex 4.5.1)

    Hi friends,
    I am stuck with ApplicationUpdater for flex 4.5 apps. I have used NativeApplicationUpdater.swc.
    I am constatntly getting the error Update package is not defined for current installerType: exe
      Also, I tried modifying the xmlns uri from http://ns.adobe.com/air/application/1.5 (as present in svn code for NativeApplicationUpdater)  to http://ns.adobe.com/air/application/2.6, but same error.
    I also changed the extension to apk.But couldnt resolve my problem.
    Has anyone worked with APK updation?  Any approach to the solution will be of great help.Thanks in advance.

    Thanks for the answer. Yeah I bet you figured out what I want the answer to be, but is it ? That's why I am asking here. I can see my website on my HTC Desire HD and it's working pretty well. If I reskin the parts that need a bigger hit area or the scrollers to work with touch so I don't have to scroll the actual scrollbars with my finger, remove some complex animations - everything will work just fine... The problem is that I am not sure if that is the right way to do it or if it is possible at all.
    I do get your point about not designed for mobile stuff, but while with html 5 you get the job done for web and mobile with little differences at the same time, in flash you need double time cause you'll have to build 2 projects. And since the framework is one for both web and mobile.. why not...
    I want to see the pros and cons of the both approaches I suggested. In a complex modular architecture I could easily swap one web module with a mobile module for example or change skins or components if I need more lightweight ones, but do I have to copy all that logic in to a MobileApplication, can't I do it with Application and use the MobileComponents (which are simplier and less functional) if the project actually needs them...
    I do hope you get why I am asking these questions, and I can't believe I haven't found a guide or something like that "why this and not that" when it comes to mixing web with mobile development and flex... If you have, please share the link, I would be happy to read. Or someone with the experience in what I am talking about shares some knowledge, that would be great!
    Thanks.

  • Interest in helping get a NetDirector PKGBUILD for Archlinux?

    Hi,
    I am the project lead for NetDirector, a free and open source (right now we use a modified MPL with attribution - we're moving either to GPLv3 or CPAL) system admiistration tool primarily for servers - www.netdirector.org
    NetDirector is focused on managing at the service level - so, it provides robust (one-to-many changes, change scheduling, rollback, etc) and secure (strict role-based authorization and authentication, system communication encrypted in ssl,...) management for many of the most popular Linux server apps like Apache, Samba, DHCP, BIND, Sendmail, FTP, LDAP.  We have a modular architecture, so additional services can be snapped in to NetDirector as plugins.  Things others have expressed interest in are a plugin for Asterisk, ClamAV, Snort, quotas, MySQL and so on.  Also, we have a plugin to Red Hat Network that extends NetDirector's role-based access control, one-to-many actions, scheduling and rollback to patching and provisioning done with RHN.  Something like this to Pacman would be cool!!
    I got turned on to Archlinux by a user.
    I would love to see if anyone out here would like to help us get NetDirector packaged up and available through the Archlinux content repos. 
    Also, there are a variety of other things we could use some developer help on, too.  If you want to get involved and know Java, please let me know.
    Thanks in advance!
    Greg

    Hi guys,
    thanks for rolling up your sleeves on this.
    to get a sense of the NetDirector architecture, check out this page:  http://www.netdirector.org/index.php?op … &Itemid=49
    I hope it will help in terms of understanding the build process.  Since NetDirector is a client/server tool, you need one server manager and one server agent installed on each server that you use netdirector to manage.  Server Manager is by far the more complicated of the two pieces.  Written in Java, it contains a database (mysql or postgresql), tomcat, the netdirector change management engine, the agent listener and more.  The Server Agent is simple by contrast - written in Python, we designed the Agents to be pretty dumb so as not to gobble up toomany resources.
    I've asked my more technical partner to also reply to this forum in order to give you guys guidance
    Blind and Tardo - do you thihnk we should see how we make out here before I put this request to the mailing list?
    Thanks
    Greg

  • X-Fi *entertainment mode* and L/R balance adjustment

    Is there a L/R balance adjustment available in the *Entertainment Mode*? I can't find it (c.f. the older Creative Mixer Control had it by default) .. or does one have to switch to Music Creation mode to adjust balance?

    No the bass and treble settings from entertainment mode do not apply to game mode. There are no bass and treble controls in game mode.
    While the idea behind the new modular architecture is good, as always with CL, the execution is utterly abysmal. Whole heaps of functionality that were availble in the Audigy 2 ZS drivers, just isnt there with the X-fi. The console does not work with a dual monitor setup, each time you switch mode there is a massi've audio crunch, the driver panel crashes continuosly, the entertainment mode is too big, the panel cannot be resized, etc etc.
    Then not to mention the card makes huge screeching noises when loading levels in BF2, does not work with Teamspeak, these are all things that the Audigy 2 ZS could manage but the X-Fi cant. Antoher day of this and I will probably be requesting a refund.

  • What is the Best Ad Network for a Flex Website?

    I'd like to put ads on my website? What is the best ad network for Flex? How did you install it?
    Has anyone used OpenX with Flex?
    Thank you.
    -Laxmidi

    Thanks for the answer. Yeah I bet you figured out what I want the answer to be, but is it ? That's why I am asking here. I can see my website on my HTC Desire HD and it's working pretty well. If I reskin the parts that need a bigger hit area or the scrollers to work with touch so I don't have to scroll the actual scrollbars with my finger, remove some complex animations - everything will work just fine... The problem is that I am not sure if that is the right way to do it or if it is possible at all.
    I do get your point about not designed for mobile stuff, but while with html 5 you get the job done for web and mobile with little differences at the same time, in flash you need double time cause you'll have to build 2 projects. And since the framework is one for both web and mobile.. why not...
    I want to see the pros and cons of the both approaches I suggested. In a complex modular architecture I could easily swap one web module with a mobile module for example or change skins or components if I need more lightweight ones, but do I have to copy all that logic in to a MobileApplication, can't I do it with Application and use the MobileComponents (which are simplier and less functional) if the project actually needs them...
    I do hope you get why I am asking these questions, and I can't believe I haven't found a guide or something like that "why this and not that" when it comes to mixing web with mobile development and flex... If you have, please share the link, I would be happy to read. Or someone with the experience in what I am talking about shares some knowledge, that would be great!
    Thanks.

Maybe you are looking for