If you don't want to receive any more information from us, please visit here to unsubscribe. you may also write to use at DirectBuy, PO Box 1572, Boulder, CO 80306
To stop further mailing, visit here or write:
SupOffers, 9 Retail Road, Ste 8-402, Dayton, NV 89403
SupOffers, 9 Retail Road, Ste 8-402, Dayton, NV 89403
After rereading document 3 times in the last 4 days here is my version of the outline . I was cutting and pasting, so chapters and page numbers and irrelevant The information contained in this communication may be CONFIDENTIAL and is intended only for the use of the recipient(s) named above. If you are not the intended recipient, you are hereby notified that any dissemination, distribution, or copying of this communication, or any of its contents, is strictly prohibited. If you have received this communication in error, please notify the sender and delete/destroy the original message and any copy of it from your computer or paper files. --------------------------------------------------------------------- To unsubscribe from this mail list, you must leave the OASIS TC that generates this mail. Follow this link to all your TCs in OASIS at: Signed-off-by: Joel Holdsworth < jo ... @ > --- programs /taskmgr/Makefile.in | 3 + programs /taskmgr/taskmgr.ico | Bin 1078 -> 25214 bytes programs /taskmgr/taskmgr.svg | 269 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 272 insertions(+), 0 deletions(-) create mode 100644 programs /taskmgr/taskmgr.svg diff --git a/ programs /taskmgr/Makefile.in b/ programs /taskmgr/Makefile.in index 6e6a761..58ea4bd 100644 --- a/ programs /taskmgr/Makefile.in +++ b/ programs /taskmgr/Makefile.in @@ -48,4 +48,7 @@ RC_SRCS = \ Zh.rc \ taskmgr.rc +SVG_SRCS = \ + taskmgr.svg + @MAKE_PROG_RULES@ diff --git a/ programs /taskmgr/taskmgr.ico b/ programs /taskmgr/taskmgr.ico index 727ad7be44d6829f5f1dae2807cbbfeb2842c35c..82b86d50ed3c589739f9e5b95923d587fd692e0f 100644 GIT binary patch literal 25214 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 literal 1078 zcmcIjJ5Izf5PiuaB}##F15&|i&p^SE(%Ib(G;v2s8>K=tdxac@k}{&ncIJ(pNGTQx zt;Fm;&pgj3lZg#v$k8-4RK9ZHp1Q6R-)F$>4%l>}3%;=@ChaD@}~! zNUe?#{|G@Xf%CI)u2ah=cjBU+B+*~`B;1zp=r^& zTfTAq!CV^IC>+N}+=;T$p%mn57Dlp;9 f#( + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Am 11.02.2010 21:58, schrieb Matt Riddell: On 12/02/10 8:10 AM, Tilghman Lesher wrote: It is however reasonable to expect php to protect itself and it does. No variable or array element can cause code to be injected in php. I wonder whether the php team would issue a best practice document if it was found that, when passed to a function, a string containing for example: mystring");exec("poweroff"); caused the host to poweroff . I am hopeful that they would issue a security alert with mitigation advice but that they would also fix php. On the contrary, this is more akin to a PHP programmer including input text from a random user on his page, without defanging any potential embedded Javascript. This is not a vulnerability that the PHP language can fix, but the PHP programmer is responsible for taking action. I'd much rather see '&' being disallowed in a request by default with an option to allow it. I wonder why anybody talkes about & only. What about , | / ... Isn't it that all characters which are used by Asterisk commands or functions are potentially harmful? In this case all such characters which are used by Asterisk apps/funcs needs to be escaped. For external applications (SQL, exec, AGI ...) the script writer has to take itself. regards klaus The problem is recoding thousands of lines of dialplan code. The other option would be a switch in asterisk.conf which changes the wildcard to only match a-z, A-Z, 0-9. That way you could mitigate most issues straight away with a one line change, and those people who need to accept $#%^%$^@ could deal with the FILTER function. Although this has always been here, it seems to me to be the same as a newly introduced feature (discovered). If one were to add a feature to 1.4 that required everyone to rewrite their dialplan it would be frowned upon. If it was a feature, surely it would be suggested that the one line change, defaulting to on in asterisk.conf would be preferred. -- _____________________________________________________________________ -- Bandwidth and Colocation Provided by -- asterisk-dev mailing list To UNSUBSCRIBE or update options visit: Thanks for the reply. Here is my code if it can help anybody else. # public class Home extends WebPage { static private ButtonTemplate s_buttonTemplate = new VistafarianButton(); public Home() { Image myImage = ButtonResource.getImage("switButtonImage", s_buttonTemplate, "Swit Button"); Link switTestButton = new Link("switTestButton") { @Override public void onClick() { setResponsePage(new SwitTest("")); } }; switTestButton.add(myImage); add(switTestButton); } } rrmlwt wrote: rmattler wrote: It is not clear to me how you add the onClick event to the button since the ButtonResource is an image. Anybody want to point that out to me. You have to use a standard html image or button, and associate it to the ResourceReference+ValueMap provided by the ButtonResource class. For instance, to create an ImageButton: Html: Java: new ImageButton("submit", ButtonResource.getReference(), ButtonResource.getValueMap(buttonTemplate, "SOMETEXT")); For an image, it's exactly the same. Just put the image in a link tag and that's it. Rodrigo --------------------------------------------------------------------- To unsubscribe, e-mail: user ... @ For additional commands, e-mail: user ... @ -- View this message in context: Sent from the Wicket - User mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: user ... @ For additional commands, e-mail: user ... @ On Fri, 2010-02-26 at 14:35 +0800, walt ... @ wrote: Hi, I'm seeking some technical assistance and John Terpstra kindly suggested that I should post my problem to this list. We operate a mixture of Apple X-Serves (Intel and G5) running OS X (10.6.x and 10.5.y), Windows 2003 servers and XP x32 and XP x64 client PCs (Mac Pros and MacBook Pros) in a domain environment. The X-Serves provide Directory Services (Open Directory Master), online storage X-SAN and domain services using Apple's samba build (3.0.28a-apple). We are in the *slow* process of migrating the servers to 2008R2 (x64) and the clients to Win 7 (x32 and x64). The immediate issue is making the 2008R2 server a domain member (I have) but I've uncovered what I believe is the "trust problem" addressed by samba 3.4.4 - SIDs aren't resolving back to their actual names. I relied upon to make the 2008R2 server a domain member. Apple's website provides a link to samba (source) which I'm attempting to compile so that I can use it on our X-Serves. I'm obviously missing something though and need assistance. Just to repeat this isn't a standalone instance of samba on OS X (I have found earlier references to running samba on older versions of OS X and on iPhones) as it must integrated with Apple's LDAP implantation which forms the basis of Open Directory serices. So, in short, you want to update the Samba on OSX from 3.0 to 3.5, while keeping it's hooks to Open Directory. Yes. Apple don't appear to be too punctual in updating their enclosed samba implementation. I have experienced an annoying range of other issues with Apple SAMBA that have well and truly been fixed in later samba releases. Example: (1) 64bit XP integration - Some users could log in but others could not. (2) Unable to see samba groups (as opposed to users) from XP computers which was required to apply permissions. It isn't trivial porting Apple's modified Samba 3.0 release to Samba 3.5, but it should be possible - I'm sure Apple has complied with their GPL obligations and all the tools you need are present. It will be hard work however, but if you do take it on, I'm sure you can post questions here about the details. The main task would be to adapt their passdb and auth modules to the later Samba releases. I don't think those interfaces have changed much, but it won't be just a matter of recompiling. I hope this helps, Andrew Bartlett -- Andrew Bartlett Authentication Developer, Samba Team Samba Developer, Cisco Inc. *************************************************************************************************** IMPORTANT: * This transmission is intended for the use of the addressee only and might contain sensitive or legally privileged information. If you are NOT the intended recipient, you are notified that any use or dissemination of this communication is strictly prohibited. If you receive this transmission in error, please notify the author immediately by telephone and delete all copies of this transmission together with any attachments. * The Australian Customs and Border Protection Service DOES NOT AUTHORISE the recipient to further disclose this email or its contents without permission of the originator. * Unsolicited commercial emails MUST NOT be forwarded to the originator of this transmission unless prior consent has been given. *************************************************************************************************** Brock, Please see inline. Brock Pytlik wrote: Tom Mueller (pkg- discuss ) wrote: Brock Pytlik wrote: Tom Mueller (pkg- discuss ) wrote: Brock, Please consider these comments of a more general nature (looks like Shawn got the detailed ones). Please change the API to be more object oriented: - The term "PkgClient" doesn't represent what the thing is that is being manipulated here. The object here is an Image. If a client is going to manipulate multiple images at the same time, it would need multiple of these objects, but there is still only one client. I agree. I'm open to better suggestions. I would suggest Image. Since we already have an Image, how about ImageInterface? We don't have a pkg.Image or a pkg.client.Image. The problem with ImageInterface is the same as having a module named "api". From the perspective of the user of an API, the API is all that there is. So using "Interface" or "api" in the names is redundant. - The PkgClient.describe method returns a PlanDescription, so it would seem that the thing being described in a "Plan" but there isn't any "Plan" object in the API. Why would there be a plan object in the API that the outside world should know about? You tell the API to make a plan. If you want to, you can ask for a description of what that plan will do (which gives the PlanDescription). Hiding the plan is one way we're refactoring the interfaces to present a consistent and simple interface to the client. If you can present an example where the client needs to modify the plan, I'd be very interested to hear it. A typical operation for a GUI is: - make a plan - get some information from the plan and query the user, e.g., -- confirm that the dependencies should be installed too? -- confirm the license? - execute the plan If the plan is a first class object in the interface, then the first step is an operation on the Image that returns a Plan, and then the remaining steps are operations on the Plan. In the internal API, these are separated into the Image object and the ImagePlan object. Merging all of this into a single class doesn't necessarily make things consistent and simple - it just makes a single class with more methods. And if a Plan is a first class object, then we when reimplement the plan, which a piece of code that changes fairly rapidly as we add backtracking, make evaluation less memory intensive and faster, etc..., then we have to carefully coordinate what we're doing with clients. Coordination is required only if the interface to the object changes. We can reimplement all we want inside any of the modules. And if adding backtracking, for example, is something that the client app needs to know about, then the interface is going to have to change anyway. So the existence of a Plan object, or any other object that the client really has to know about anyway, does really effect reimplementation. Everything you've described can be done currently with the API as it's written. All a client should need to know (at least this is my opinon until I'm given a convincing counterpoint) is which packages are changing, what way they're changing, and enough information about those packages to answer questions the user may have. I believe the API provides exactly that, and, if it's deficient, can be expanded. This is definitely a question of aesthetics. Just because it is possible with the API doesn't mean that it is simple and easy to understand for users and easy to extent when needed. I have yet to see a Python library that has a module called "api". Can you provide an example of another Python library that uses this pattern? As a counter-example, consider the CherryPy and PyOpenSSL libraries that we use. CherryPy exposes the cherrypy and cherrypy.wsgiserver modules as public interfaces. PyOpenSSL exposes the OpenSSL and OpenSSL.crypto modules. Even for a large Python system like mercurial, there is no "api" module. One just uses "from mercurial import hg" when writing an extension to mercurial. Please rename the "api" module to represent what interface is actually being used. I'd suggest "pkg.client.image", but that is already taken. ;-) Maybe these classes could be moved into pkg/client/__init__.py in such a way that a programmer would just do "import pkg.client". Is this an objection to the naming of "api.py"? yes. If so, I'd happily take suggestions. I'm mildly against moving things into __init__.py as I think it's a fairly python specific construction which provides a needless barrier to entry to others coming to use our code, something I'd suggest is something an API should avoid where possible. Moving it into __init__.py makes it so that the only interface the users need to know about is "import pkg.client". Seems pretty simple. I don't know why this would be a barrier to entry, assuming that there is appropriate documentation with the API. It's a barrier to entry because __init__.py exactly obviously a class module. It's certainly not the first place anyone would go looking for an api if they downloaded the gate. Why would anyone wanting to use the API download the gate? When you use any other python module, do you download the source code for that module? One of the primary parts of having an API is that it should be documented. We need to have python manual-like documentation for the pkg(5) API. If I'm a newbie to python, I'd go look for the client.py file in pkg directory, and immediately hit a brick wall, cause, wait, there's no file named that there. This something that python does that many languages don't (C, C++, Java, OCaml, I feel fairly certain don't have a similar, commonly used organization. With less certainly, I'd add scheme, ML, Perl and Prolog to that list.). It's the same reason I'd avoid having the API return generator functions for example. I believe we'd like the API to be accessible to programmers from all backgrounds, not just Python wizards. The solution to that is documentation. Also, the argument that others don't do this isn't, by itself tremendously convincing to me. Certainly, I'll take another look at how those programs are structured, but because CherryPy or PyOpenSSL do things one way doesn't mean it's the right way for us to do it. When I do something that is different from every other example I see, it's either because I've come up with something no one else has thought of, or it's because that thing has already been rejected by everyone else. For me, I usually assume it is the latter. Or it could be because we have a different set of requirements, uses, design, or beliefs in what good design/interface is. I also believe smart people can look at the same problem and come up with different solutions, each with different strengths and weaknesses. Choosing between is a matter of priority, not correctness. There is insufficient encapsulation in the API. - the PackageInfo object exposes version.DotSequence objects. Is that intentional? i.e., is version.DotSequence part of the external API? The decision about how to expose Fmris, Versions, and Dot sequencies hasn't been made yet. Mostly because I don't have a strong feeling yet about what the right answer is. As answer to this and many of your subsequent questions: this is an API in developement, really, an intermediate API. Things will change. Things that are exposed may become hidden, and things that are hidden may become exposed as I discover information insufficiencies in the API. (For example, refresh currently returns an actual image. It does this because, given the other functions implemented, there would be no way for the GUI to update it's information after a refresh without rereading from disk, something that seemed silly to do since that information was already in memory. So, for now, it returns the image, a clear violation of the spirit of the API, and something that will be changed once it's more fully functional.) I'm confused then. CR 3443 says that the purpose is to provide a "stable" API. But yet this is an intermediate API that is going to change. I understand that this has to be evolutionary, but it seems that there has to be a certain amount of stability before this is first used. My reason for bringing up these issues is that it doesn't seem this minimal level of stability is there yet. Ok, let me try to be as clear as I can be. When the API is done, it will be "stable" (note that I don't mean ARC "stable", I'm not sure which term would apply currently) which means that changes to it will be made carefully, in coordination with client code to prevent breakage. Once we've settled in with it, I would suggest we look at upgrading the interface to ARC "stable", once we're satisfied it meets the needs of clients. I could off and spent 2 months putting together an entire API. That didn't meet the time constraints provided. It didn't meed the need of getting the CLI and the GUI following the same code paths on critical operations. Lastly, it's entirely possible I would've come back and found out the API was deficient in ways I hadn't imagined. Creating this API is going to be a rolling process, as everything else we do on this project has been. Given this, the existing API (pkg.client.image.Image, etc.) is the most stable API that we have right now. It is certainly the most expedient means to achieve the desired result. - the PkgClient class requires a ProgressTracker object. So is this API making ProgressTracker a public interface? Also, if one wants to use different progress trackers for different operations, how does one do that? (for example, different progress trackers for loading the catalogs vs. making the install plan in the plan_install method.) Yes, as I've said previously in email here, the ProgressTracker is part of the API. Is there a document that lists what classes and methods are all part of the API, similar to what we see in the Python manual for each module? Nope, I've been more focused on actually making the thing work. But, the list, as I know it today, is everything in api.py, api_errors.py, progress.py, and bits and pieces of misc.py (which I hope to get removed eventually, but I lost that battle recently, and I'll focus on other things before returning to that issue again). and fmri.py and parts of version.py (DotSequence). I recommend making it a high priority to document this list. Can you present a use case for A) Why you'd want to switch progress trackers partway through an operation B) Why you couldn't just make your own hybrid of the progress tracker which does what you want it to? The updatetool GUI uses a QuietProgressTracker to load the catalogs and then uses a custom-defined progress tracker that implements a progress bar dialog for evaluating and executing the install plan. One could certainly implement a hybrid - that seems like a reasonable option. I'm also not opposed to adding a "set_progress_tracker" method, should it be desperately needed. [snip] All exceptions should return data that can be extracted by the client. VersionException and several others are good examples of this. But ProblematicPermissionsIndexException doesn't do this. What data would you like it to return? When I first read this, I didn't realize the "cause" is already available. So the data is the cause (with a clarification of what this is - it appears to be a string that is a pathname). There needs to be documentation for each exception saying what data is available with the exception. In Java, this would be done with accessor methods and private data. Since accessor methods and private data is not generally the norm in Python, this has to be done with documentation. Otherwise, how does the user of the exception know what data is available? Again, once the API is done, there will be documentation. For now, unless I decide to spend my time adding that instead of, say, preventing the depot from falling over when sent a certain path, it'll just have to wait for a bit and people can do exactly what they've been doing up to now: looking at the exception to see what data it provides. But at least now, there's a single location with the exceptions, instead of sending them grepping through the code base to find where the exception is defined. What is the intent of the __activity_lock functionality? We eventually need to have locking that prevents multiple clients (in separate processes) from modifying an image concurrently. Once we have that, the same functionality will also work for different threads in a single process. So thread-based locking is not really useful here. It's also not clear to me that this API layer should be responsible for locking, as that may not provide sufficient granularity. The point of locking is so that, for example, multiple GUI threads can't start planning an install, an uninstall, and an image_update all at the same time on the same PkgClient object, for example. Can this become more finely grained in the future? Probably. But for now, they help make the code thread safe, something that's important for the GUI. When we have the more general mechanism, perhaps, and only perhaps, it can replace the mechanisms here. IMHO, cross process concurrency is a bigger issue. And solving that problem would solve the thread one too. I agree, but, that's not THIS problem. If and when we solve that issue, the locking code in api can poof (probably). This API is not going to fix all problems with our code. It's supposed to fix a select few. Cross-process concurrency is not in that set. Of course, if someone has a ready solution, by all means give me the patch, either to the gate or on top of my API, and I'll integrate it into my putback happily. My point is that I don't see anything in issue 3443 that says the API has to fix the cross-thread problem either (except maybe for the word "safe" in the summary, but the description doesn't say anything about it). The introduction of locking into the API seems to be feature creep. At what point would you expect the imports of the other pkg.client.* and pkg.* modules to be removed from client.py? When the API is complete, and not in development. (before or after the first checkin of this API?) After, since I foresee at least 2 stages of commits, and probably 3 I'd like to at least see a plan for how complicated this api module will get in order to be able to remove those imports, so that the true expense of this option will be understood before the team has to live with it. So, what you'd like is for me to do all the work needed to completely analyze what the final API would look like (which basically means creating and implementing the final API since, at least for me, that's the only way to be certain I've gotten things correct). That's fine, but there's little chance that can be finished in time for the GUI team to move to it for the november release. Until I receive firm direction that we've changed our schedule on this, I'm going to proceed as I've planned. I'll make one other point, if this option, once it's fully in place, is truly so terrible that we as a team "can't live with it", then we can blow it up and someone else can try again. All that we'll have lost is the time I've spent on it (and the amount of time we've spent kvetching about it). In a previous message[1], Stephen outlined three general options for introducing a stable API. It seems like you've picked option 1 without even considering option 2 or 3. In fact, you've started to write the code for option 1 without having looked at what a design for options 2 or 3 would even look like (at least I haven't seen such a design sent to the pkg- discuss alias, maybe options 2 and 3 were discarded having never made it that far). Since this started, I've just been asking that there be a reasonable evaluation of these various options. This isn't a question of trying one thing and then having someone else try another thing. If the various major design options are considered and then compared side by side, then an appropriate design can be selected. And if option 1 is selected, I can support that (as I've tried to do by providing these comments). No, I've considered 2 and 3, just because I haven't put them out to the group doesn't mean I didn't think about them. (I'll group them together as I believe they're essentially isomorphic transformations of the code. While the details might differ, the overall structure would be similar.) I viewed my job as to look at the various options, and provide a solution to the problem. Had there been two options which seemed to be reasonable alternatives, then I would've turned to the group for guidance. Since, in my opinion, the choice was clear, I moved ahead. I'd suggest that 2 or 3 is what you and some others have proposed previously, so it's certainly been considered. I feel like I've done the best I can to explain why I don't believe those are adequate solutions to our problems. Did I miss that explanation? I'm sorry if I passed that by. I'd like to take another look at the explanation for why #3 would not solve the problems. The very first message I saw on the API is here: . And this doesn't say anything about why the #3 approach wouldn't solve the problems. Tom I get that you disagree. If you'd like, you can put together an API which follows options 2 or 3, and we as a group can choose between them. I'm not going to spend my time doing that because I've done it internally, and found them lacking for our problems. You can also continue to try to convince me that you're right, but please understand that until I am convinced, I'm going to plow ahead because we have deadlines to meet and other things to do. Tom [1] Thanks. Tom Brock Pytlik wrote: Here's the link: I haven't done as much cleanup as I usually try to do, but since I'm ooto tomorrow, I thought it would be better to get this out now, rather than next Monday. Other things that I know need to be improved, but that I think can wait for another round of revisions: API Exception organization More complete functionality Automated testing of cancellation (I hope to work with the GUI team to test this by hand in the interim) Versioning of the Progress tracker (perhaps) More Documentation Figure out the future approach to testing we'll take Thanks, Brock _______________________________________________ pkg- discuss mailing list pkg- discuss at _______________________________________________ pkg- discuss mailing list pkg- discuss at _______________________________________________ pkg- discuss mailing list pkg- discuss at