Re: [XMLPipeDB-developer] GenMAPP multitaxon support - CMSI 486T
Brought to you by:
kdahlquist,
zugzugglug
From: Richard B. <rbr...@gm...> - 2011-07-28 15:30:19
|
yes fri works for me. thank you! richard On Wed, Jul 27, 2011 at 9:42 PM, John David N. Dionisio <do...@lm...>wrote: > Greetings, > > 3pm Thursday won't work for me unfortunately. How about 9am Friday? I > can't stay too long even then but it will still be better than not talking > at all. > > > John David N. Dionisio, PhD > Associate Professor, Computer Science > Loyola Marymount University > > > On Jul 27, 2011, at 7:42 PM, Richard Brous <rbr...@gm...> wrote: > > Hi all, > > Sorry to fall out of touch but with finals and papers due this week > and and my mother in law back in the hospital, I'm about at my wits end. > > That said, I was wondering if we could move our con call to tomorrow > afternoon if possible instead of 9am? ... Say 3pm 'ish? I don't want to miss > it as I would like to discuss a few things but I just can't make it at 9am > and then rushing to a 10am final exam. > > Sorry for the late notice but I hope you both understand... smc classes > will be over tomorrow and I can focus much, much more on this afterwards. > > Richard > > On Wed, Jul 20, 2011 at 10:38 PM, John David N. Dionisio <do...@lm...>wrote: > >> Hi Rich, >> >> Congratulations! Welcome to the world of Swing GUI programming :) It >> has its share of tics and idiosyncrasies, but with some practice one gets >> the hang of it. >> >> I've reviewed your new code and have interspersed commentary in the >> context of your notes below. We don't have a lot of time tomorrow, so >> perhaps pick and choose the ones that you feel will benefit the most from >> synchronous discussion. >> >> John David N. Dionisio, PhD >> Associate Professor, Computer Science >> Loyola Marymount University >> >> >> On Jul 20, 2011, at 9:22 PM, Richard Brous wrote: >> >> > Hallelujah!!! - a list box with multiple species of which any >> combination can be selected now exists!!! Thanks Dondi!! (see attachment) >> > >> > >> > OK, had a chance to review the code corrections, other comments and >> think on the next steps surrounding the selection of multiple species and >> their dynamic text updating. Here is where I am at the moment: >> > >> > A. Dondis corrections/additions to my last submission >> > >> > 1. Creating a private class called SpeciesListModel which extended >> AbstractListModel >> > >> > As soon as I saw your code I realized that I had sort of coded it >> backwards, thinking about implementing an interface instead of just >> extending the abstract object and adding methods... duh. My face turned a >> bit red on that one. >> > >> > The idea still of creating a list model to manage the entries in the >> JList still seems a bit complicated and foreign but I guess the more I work >> with the java ui stuff, the better I will become with it. >> >> Yes, it can be unwieldy in simple cases (like this one) and can sometimes >> result in repetitive code. However, it is very flexible and truly >> encapsulates the list data from the list presentation (for example, with >> this approach, you can even create a ListModel that does not have a data >> structure behind it; or perhaps one that queries for the list contents >> dynamically). >> >> > Additionally I did attempt to add a new method under this class called >> clearSpeciesProfiles. This was meant to clear the JList of all species found >> each time the export1 panel was opened instead of aggregating the species in >> the list. It doesn't seem to be working though so I commented it out for >> now. Please let me know if I'm adding this functionality in the wrong way >> and/or in the incorrect location. >> >> A couple of notes on this one. Observe how setSpeciesProfile *replaces* >> the list of species profiles returned by the list model, and does not add to >> it. Thus, I do not think that the duplication occurs at this level --- I >> believe it occurs at the UniProtDatabaseProfile.checkRequirements method. >> Follow the code from GenMAPPBuilder.doExportToGenMAPP and see if you spot >> the issue. Remember that the symptom occurs when one tries to export more >> than once. Thus, see what the code does to the relevant data structures >> when GenMAPPBuilder.doExportToGenMAPP is called more than once. >> >> > 2. SpringLayout >> > >> > I took a look at the website and got a feel for how to adjust panel >> component locations. Seems like I can use those commands to make the >> adjustment to the species label that you mentioned in comments. >> > >> > Interesting how the leftPanel uses SpringUtilities.makeCompactGrid while >> the rightPanel uses GridLayout... didn't realize you could combine both >> kinds on content panel. >> >> Yes, this is the power and complexity of Swing layout management --- you >> can nest them as much as you like, and mix and match them as much as you >> like. Powerful and flexible, yes; potentially complicated, yes also. >> >> > B. further UI enhancements: >> > >> > 1. I dug into export1 design in regard to the text description areas of >> both the Database and Species profiles. They are both JTextAreas(3, 15) >> where 3 denotes rows and 15 denotes columns. I changed both fields to be >> editable and compiled just so I could see how big each text field really is. >> I was able to type in 23 characters across and 7 rows downward until the >> next row was cutoff by the bottom edge of the box. I also changed the row >> and column arguments to JTextAreas(2, 15) and JTextAreas(3, 10) and >> recompiled but didn't see any change in the volume of text I could enter... >> must not understand it completely... are the arguments only to manage >> components placed within the textArea maybe while loose text just starts top >> left and word/line wraps? >> > >> > My reason for fooling with this was to see what would happen of course >> but really I had the idea that I would shrink the size of the database >> profileDescriptiontextArea to allow for a larger speciesDescriptionTextArea >> below it. Also I had been thinking of how to represent the species and its >> associated custom or default species profile in a way that made the most >> sense. The species names are pretty long so was going to suggest to simply >> use taxon id, profile type (custom or default) since the user could cross >> reference in the JList just to the left. >> >> This issue rests in some of the tricks behind Swing layout management. >> Unlike conventional GUI design, where components are given fixed, absolute >> coordinates and sizes, Swing tries to "compute" the layout dynamically, >> based on a combination of rules, "preferred sizes," and min/max sizes. The >> exact algorithm for determining the final layout is placed in the >> LayoutManager class. The row/column settings given to JTextArea typically >> pertain to *preferred* sizing, not final sizing. As in, the JTextArea >> "asks" its containing panel that "if possible, I prefer to have this many >> rows and columns." The rule of thumb is that a layout manager tries to give >> its components their preferred sizes *or greater*, if available (the idea >> being that most UI components wouldn't mind getting more space than they >> originally asked for). >> >> To exercise greater control over this, you'll need to get a better handle >> on the behavior or the various layout managers. Certain layout managers >> *do* cap a UI component's size to no greater than its preference. This >> takes some practice, however, and some familiarity with the layout manager >> "zoo." My suggestion: let's leave well enough alone here for now, get the >> functionality done first, then come back to this later. >> >> > 2. Dynamic insertion of desired species info into the >> speciesDescriptionTextArea >> > >> > In thinking of how to solve this I went back to code I had commented out >> in my last submission - the protected method which detected a change in >> species choice occurred within the JComboBox: speciesProfileSelected( Object >> selectedItem ) { >> >> Yes, the fundamental change that you are making now is that *more than one >> species profile may be active*. What you need to do, then, is to maintain >> the selected species profiles as a collection, and not as a single value. >> Then, all the code that used to assume that only a species profile gets >> selected need to be modified so that they can accommodate a collection of >> species profiles. Cases in point... >> >> > I had been struggling with what that method really should be doing now >> that we have a JList where multiple species could be selected. And after >> some review and then walking away from it for a few, I think it only needs >> to handle two things: >> > a. ensure that all the selected species are added to the export dataset. >> (We then modify the export process itself to account for and properly >> process multiple species.) >> >> ...This is the fundamental change that dominoes through the rest of the >> export code. Instead of holding on to a single selected species profile, >> you need to maintain a collection of them. Also... >> >> > b. use the selected indices to populate/depopulate the >> speciesDescriptionTextArea dynamically as a selection/deselection is made >> within the JList. >> > I have some ideas but would like to talk them through on the call >> tomorrow. I'll also submit my latest pass on the code for review. >> >> ...This part requires some rewriting so that the generated descriptive >> text can accommodate a collection of species profiles. The message >> generation thus gets a little more complicated. But it's just additional >> logic, iterating through the species profiles and incrementally appending a >> message string until you've gone through all of the selected profiles. >> e.g., "This export will use a customized profile for S. typhimurium, a >> general-purpose profile for B. anthracis, and a customized species profile >> for H. pylori." Hope you can see how that string can be computed via >> iteration through a species profile collection. >> >> OK, that would be my 2 cents...let's see what needs live discussion >> tomorrow morning. >> >> > Richard >> > >> > >> > >> > On Wed, Jul 20, 2011 at 9:00 AM, John David N. Dionisio <do...@lm...> >> wrote: >> > Sounds good, talk to everyone Thursday 9am then :) >> > >> > John David N. Dionisio, PhD >> > Associate Professor, Computer Science >> > Loyola Marymount University >> > >> > >> > On Jul 20, 2011, at 8:47 AM, Kam Dahlquist <kda...@lm...> wrote: >> > >> > > Hi, >> > > >> > > I'm OK for Thursday, too. Sorry, I don't generally check my e-mail >> > > at night. Hope everything is OK. In the future, don't hesitate to >> > > move things if I'm not responding, I'll catch up eventually :) >> > > >> > > Best, >> > > Kam >> > > >> > > At 08:29 AM 7/20/2011, John David N. Dionisio wrote: >> > >> OK, acknowledged. Take care. >> > >> >> > >> John David N. Dionisio, PhD >> > >> Associate Professor, Computer Science >> > >> Loyola Marymount University >> > >> >> > >> >> > >> >> > >> On Jul 20, 2011, at 8:25 AM, Richard Brous wrote: >> > >> >> > >>> OK, I am forced to push to tomorrow now because our nanny is >> > >> stuck in traffic, christina is back at the hospital and I have to >> > >> drive my boys to MDR for their camp. >> > >>> >> > >>> I'm sorry this is so crazy but all is upside down atm. >> > >>> >> > >>> I already have a bunch of questions which I will lay out via >> > >> email since they are more high level than can be placed in code >> > >> comments... at least I think so atm. >> > >>> >> > >>> Either way come hell or high-water I'll get another iteration on >> > >> this prior to a call. >> > >>> >> > >>> rb >> > >>> >> > >>> On Tue, Jul 19, 2011 at 11:21 PM, John David N. Dionisio >> > >> <do...@lm...> wrote: >> > >>> Hi Rich, >> > >>> >> > >>> Sorry to hear about your mother-in-law. Hospital wait states are >> > >> never fun. >> > >>> >> > >>> I can do Thursday morning at 9am if needed. Let's watch the >> > >> e-mail in the morning to see if Kam can do that too; if so, then >> > >> Thursday it is, but if not, then we can still push for Wednesday 9am. >> > >>> >> > >>> John David N. Dionisio, PhD >> > >>> Associate Professor, Computer Science >> > >>> Loyola Marymount University >> > >>> >> > >>> >> > >>> >> > >>> On Jul 19, 2011, at 10:26 PM, Richard Brous wrote: >> > >>> >> > >>>> ok, can't get a break... sitting in the ER after admitting my >> > >> mother in law at St. Johns in Santa Monica. We are waiting to get >> > >> her a bed but not sure how long it will take. >> > >>>> >> > >>>> Luckily I have my laptop with me so I was able to scan the new >> > >> code with all the Dondi comments and compile a build which runs. I >> > >> will review Dondi's changes as best I can from here but likely >> > >> won't be able to do much with it by our call tomorrow. >> > >>>> >> > >>>> I'm happy to push our call to Thursday morning instead of >> > >> tomorrow to allow more time... but it is late so unless I hear >> > >> otherwise, tomorrow at 9am is still a go. >> > >>>> >> > >>>> Richard >> > >>>> >> > >>>> On Tue, Jul 19, 2011 at 3:00 PM, Richard Brous >> > >> <rbr...@gm...> wrote: >> > >>>> Thanks will review later this afternoon. Sorry got hung up on >> > >> this but continuing forward comments in code should speed this way >> up. >> > >>>> >> > >>>> Rb >> > >>>> >> > >>>> Sent from my iPhone >> > >>>> >> > >>>> On Jul 19, 2011, at 12:04 AM, "John David N. Dionisio" >> > >> <do...@lm...> wrote: >> > >>>> >> > >>>>> Greetings, >> > >>>>> >> > >>>>> OK, my responses are committed. As noted in my "Dondi -" >> > >> comments, you were fairly close. The main miss was how >> > >> AbstractListModel was to be used. Give it a gander and holler if >> > >> anything else remains unclear. >> > >>>>> >> > >>>>> At this point, you'll need to start managing what should >> > >> happen as the user selects/deselects species. You'll also want >> > >> that little informational panel on the right that summarizes (for >> > >> tech types) whether the selected species will be using a customized >> > >> species profile or the generic one. >> > >>>>> >> > >>>>> Carry on, see how this goes. :) >> > >>>>> >> > >>>>> John David N. Dionisio, PhD >> > >>>>> Associate Professor, Computer Science >> > >>>>> Loyola Marymount University >> > >>>>> >> > >>>>> >> > >>>>> On Jul 18, 2011, at 10:14 AM, Richard Brous wrote: >> > >>>>> >> > >>>>>> Ok , took the code as far as I could and submitted export 1 >> > >> - unfortunately broken code even though I made a point not to by >> > >> commenting out unfinished blocks. Take a look at the commit comments >> for info. >> > >>>>>> >> > >>>>>> I look forward to your comments which I'm sure will help >> > >> straighten this out! >> > >>>>>> >> > >>>>>> Rb >> > >>>>>> >> > >>>>>> Sent from my iPhone >> > >>>>>> >> > >>>>>> On Jul 12, 2011, at 6:35 PM, "John David N. Dionisio" >> > >> <do...@lm...> wrote: >> > >>>>>> >> > >>>>>>> Hi there, >> > >>>>>>> >> > >>>>>>> A code-oriented session is OK with me, though this >> > >> particular question I can take a stab at via e-mail. >> > >>>>>>> >> > >>>>>>> The trick with full control of a JList is to implement its >> > >> model (a ListModel). For this, I usually create a subclass of >> > >> AbstractListModel and implement the missing methods. This >> > >> AbstractListModel subclass should be able to see the list of >> > >> species found. Then, the implementations of its missing methods >> > >> would be based on that list of species. >> > >>>>>>> >> > >>>>>>> With this ListModel class in hand, keeping the JList up to >> > >> date is a matter of instantiating the JList with this model: >> > >>>>>>> >> > >>>>>>> SpeciesListModel speciesListModel = new SpeciesListModel(); >> > >>>>>>> speciesCheckList = new JList(speciesListModel); >> > >>>>>>> >> > >>>>>>> If the species list changes, have the species list model >> > >> fire the appropriate list change event (the JavaDoc API has a bunch >> > >> of fire* methods). To keep things simple, there is a "full update" >> > >> event which just says "rebuild the entire JList." That one should >> > >> be OK. There are finer-grained ones like "something got inserted" >> > >> and "something got removed," but that really is more for optimization >> purposes. >> > >>>>>>> >> > >>>>>>> As for the text display, the simplest approach is to >> > >> implement the toString method of the SpeciesProfile class so that >> > >> they return something that is appropriate for a JList. Sometimes >> > >> that is too limiting though. If you want greater flexibility, you >> > >> will want to implement a ListCellRenderer. There is a class called >> > >> DefaultListCellRenderer that you can extend. Typically the >> > >> subclass would call the superclass's method, which returns a >> > >> JLabel. You can then change the content of the JLabel according to >> > >> the list item that you are trying to display. >> > >>>>>>> >> > >>>>>>> See if these leads are enough to go on. If not, I can talk >> > >> you through them more during the call. >> > >>>>>>> >> > >>>>>>> John David N. Dionisio, PhD >> > >>>>>>> Associate Professor, Computer Science >> > >>>>>>> Loyola Marymount University >> > >>>>>>> >> > >>>>>>> >> > >>>>>>> On Jul 12, 2011, at 6:00 PM, Richard Brous wrote: >> > >>>>>>> >> > >>>>>>>> Update for tomorrow 7/13/11: >> > >>>>>>>> >> > >>>>>>>> Clear on what I need to do but can't seem to figure out a >> > >> way to do it. I think the best use of our time tomorrow is to make >> > >> it a code discussion session (giving Dr. Dahlquist the opportunity >> > >> to bow out if so inclined) >> > >>>>>>>> >> > >>>>>>>> 1. In regard to the JList, I have been working on the best >> > >> way to implement it but am getting stuck on how to populate it and >> > >> where to do so in the code. >> > >>>>>>>> >> > >>>>>>>> I'm currently working in ExportPanel1.java and have done >> > >> the following so far: >> > >>>>>>>> >> > >>>>>>>> imported JList; >> > >>>>>>>> imported javax.swing.event.*; >> > >>>>>>>> >> > >>>>>>>> >> > >>>>>>>> public class ExportPanel1 extends JPanel { >> > >>>>>>>> added: private JList speciesCheckList; >> > >>>>>>>> >> > >>>>>>>> private JPanel getContentPanel () { >> > >>>>>>>> underneath the species combo box entry // species | >> > >> JComboBox | speciesFound |JLabel | Description | ... >> > >>>>>>>> >> > >>>>>>>> added: speciesCheckList = new JList ( speciesProfilesFound ); >> > >>>>>>>> >> > >>>>>>>> // registered the listeners >> > >>>>>>>> speciesCheckList.addListSelectionListener ( new >> > >> ListSelectionListener () { >> > >>>>>>>> // handle list selection >> > >>>>>>>> public void valueChanged ( ListSelectionEvent e ) { >> > >>>>>>>> // get selected indices >> > >>>>>>>> int [] indices = speciesCheckList.getSelectedIndices (); >> > >>>>>>>> } >> > >>>>>>>> }); >> > >>>>>>>> >> > >>>>>>>> added: //leftPanel.add ( speciesComboBox ); >> > >>>>>>>> leftPanel.add ( speciesCheckList ); >> > >>>>>>>> >> > >>>>>>>> The real issue here is how to populate the JList... I took >> > >> a look at the constructors but can't determine a way to populate it >> > >> after instantiation... maybe using abstract class somehow? >> > >>>>>>>> >> > >>>>>>>> So instead I have been working to add the >> > >> speciesProfilesFound [] ArrayList as a constructor argument. Then I >> > >> can pre-populate it prior to the contentPanel being >> > >> initialized???... or possibly similar to the init() method which >> > >> pre-populates the Database profileComboBox? >> > >>>>>>>> >> > >>>>>>>> Once the initital population of the JList is done we can >> > >> modify it for the later methods which dynamically alter content in >> > >> databaseProfileSelected() and speciesProfileSelected(). This will >> > >> effect the selectedSpeciesProfile() method usage and its getter and >> setter. >> > >>>>>>>> >> > >>>>>>>> Also we can then work on the text indication which >> > >> dynamically shows the selected species and whether a custom or >> > >> generic profile has been associated. >> > >>>>>>>> >> > >>>>>>>> Dondi - I'm looking forward to your suggestions and >> assistance!!! >> > >>>>>>>> >> > >>>>>>>> Richard >> > >>>>>>>> >> > >>>>>>>> >> > >>>>>>>> >> > >>>>>>>> On Wed, Jul 6, 2011 at 10:58 PM, John David N. Dionisio >> > >> <do...@lm...> wrote: >> > >>>>>>>> Hi Rich, >> > >>>>>>>> >> > >>>>>>>> OK, thanks for the discussion setup. We'll work through >> > >> this during the call. >> > >>>>>>>> >> > >>>>>>>> John David N. Dionisio, PhD >> > >>>>>>>> Associate Professor, Computer Science >> > >>>>>>>> Loyola Marymount University >> > >>>>>>>> >> > >>>>>>>> >> > >>>>>>>> >> > >>>>>>>> On Jul 6, 2011, at 7:37 PM, Richard Brous wrote: >> > >>>>>>>> >> > >>>>>>>>> Update on status: >> > >>>>>>>>> >> > >>>>>>>>> Over the past two weeks I have spent time doing the following: >> > >>>>>>>>> >> > >>>>>>>>> 1. Reviewed the taxon id code changes which Don Murphy >> > >> coded and were merged to create version 2.0 b64 >> > >>>>>>>>> 2. Reviewed the UniprotDatabaseProfile, >> > >> UniprotSpeciesProfile, SpeciesProfile, Profile and DatabaseProfile >> files >> > >>>>>>>>> 3. Reviewed and discussed the process by which GenMAPP >> > >> matches single taxon ids found in a Postgres db with the known >> > >> species profiles. >> > >>>>>>>>> >> > >>>>>>>>> Current actions: >> > >>>>>>>>> >> > >>>>>>>>> During the last few days I have started coding in the >> > >> ability for the species matching functionality to surface multiple >> > >> taxon ids from within a Postgres db. >> > >>>>>>>>> >> > >>>>>>>>> The process being the following steps: >> > >>>>>>>>> >> > >>>>>>>>> 1. Grab all the taxon ids from the Postgres db >> > >>>>>>>>> The current iteration of the software already does this. >> > >> In the checkRequirements method in UniprotDatabaseProfile.java, a >> > >> query of the Postgres db acquires all taxon id's and stores them in >> > >> ResultSet result variable. >> > >>>>>>>>> >> > >>>>>>>>> 2. Check to find match between the taxon ids from >> > >> Postgres against existing species profiles for known species. >> > >>>>>>>>> >> > >>>>>>>>> The current iteration compares each taxon id in ResultSet >> > >> result variable. >> > >>>>>>>>> First taxon id from result: >> > >>>>>>>>> If match was found, then that species profile with >> > >> associated taxon id was added to the speciesProfilesFound arraylist. >> > >>>>>>>>> If no match was found, a generic species profile >> > >> associated with the current taxon id was added to the >> > >> speciesProfilesFound arraylist. >> > >>>>>>>>> >> > >>>>>>>>> Next taxon id from result >> > >>>>>>>>> If match was found, then that species profile with >> > >> associated taxon id was added to the speciesProfilesFound arraylist. >> > >>>>>>>>> If no match was found, a generic species profile >> > >> associated with the current taxon id was added to the >> > >> speciesProfilesFound arraylist. >> > >>>>>>>>> >> > >>>>>>>>> Repeat until no more taxon ids are found in ResultSet >> > >> result variable. >> > >>>>>>>>> >> > >>>>>>>>> 3. Replace the JComboBox with a JList to allow the user >> > >> to choose a selection of multiple species to export. >> > >>>>>>>>> >> > >>>>>>>>> Use the getSelectedIndices method for JList to determine >> > >> which species have been selected for export. >> > >>>>>>>>> >> > >>>>>>>>> 4. Modify the export process to run a pass for each >> > >> species selected to generate a multispecies gdb. >> > >>>>>>>>> details to be determined. >> > >>>>>>>>> >> > >>>>>>>>> >> > >> >> ----------------------------------------------------------------------------------------------------------------------------------------------------------- >> > >>>>>>>>> >> > >>>>>>>>> >> > >>>>>>>>> Discussion for tomorrows call: >> > >>>>>>>>> >> > >>>>>>>>> >> > >>>>>>>>> We previously discussed allowing user input to manually >> > >> add taxon ids and associate them to the generic profile. >> > >>>>>>>>> >> > >>>>>>>>> Unless I don't really understand the reasoning behind >> > >> this, it seems to me that it is unnecessary. Why would we add a >> > >> taxon id during the export process that isn't already in the Postgres >> data? >> > >>>>>>>>> >> > >>>>>>>>> The current implementation already captures every taxon >> > >> id in speciesProfilesFound regardless if its a known species or >> > >> not. So it seems that we don't need to make any modifications in >> > >> surfacing taxon ids from a Postgres db. >> > >>>>>>>>> >> > >>>>>>>>> Then we can go directly to #3 above which I have mostly >> > >> coded, but can't seem to figure out how and where to populate the >> > >> JList. In reviewing constructor documentation it indicates 4 ways >> > >> to instantiate. >> > >>>>>>>>> >> > >>>>>>>>> My first choice was to create an empty JList [ JList () ] >> > >> and populate it later but I don't see a method to do so such as >> > >> addItems or something similar. >> > >>>>>>>>> >> > >>>>>>>>> I then tried to instantiate with speciesProfileFound as >> > >> an array argument: JList ( SpeciesProfile[] speciesProfilesFound ) >> > >> but can't resolve. >> > >>>>>>>>> >> > >>>>>>>>> >> > >>>>>>>>> Anyway, I look forward to our call at 9am tomorrow. >> > >>>>>>>>> >> > >>>>>>>>> Richard >> > >>>>>>>>> <ATT00001..txt><ATT00002..txt> >> > >>>>>>>> >> > >>>>>>>> >> > >>>>>>>> >> > >> >> ------------------------------------------------------------------------------ >> > >>>>>>>> All of the data generated in your IT infrastructure is >> > >> seriously valuable. >> > >>>>>>>> Why? It contains a definitive record of application >> > >> performance, security >> > >>>>>>>> threats, fraudulent activity, and more. Splunk takes this >> > >> data and makes >> > >>>>>>>> sense of it. IT sense. And common sense. >> > >>>>>>>> http://p.sf.net/sfu/splunk-d2d-c2 >> > >>>>>>>> _______________________________________________ >> > >>>>>>>> xmlpipedb-developer mailing list >> > >>>>>>>> xml...@li... >> > >>>>>>>> >> https://lists.sourceforge.net/lists/listinfo/xmlpipedb-developer >> > >>>>>>>> >> > >>>>>>>> <ATT00001..txt><ATT00002..txt> >> > >>>>>>> >> > >>>>>>> >> > >>>>>>> >> > >> >> ------------------------------------------------------------------------------ >> > >>>>>>> AppSumo Presents a FREE Video for the SourceForge Community by >> Eric >> > >>>>>>> Ries, the creator of the Lean Startup Methodology on "Lean >> Startup >> > >>>>>>> Secrets Revealed." This video shows you how to validate your >> ideas, >> > >>>>>>> optimize your ideas and identify your business strategy. >> > >>>>>>> http://p.sf.net/sfu/appsumosfdev2dev >> > >>>>>>> _______________________________________________ >> > >>>>>>> xmlpipedb-developer mailing list >> > >>>>>>> xml...@li... >> > >>>>>>> >> https://lists.sourceforge.net/lists/listinfo/xmlpipedb-developer >> > >>>>>> >> > >>>>>> >> > >> >> ------------------------------------------------------------------------------ >> > >>>>>> AppSumo Presents a FREE Video for the SourceForge Community by >> Eric >> > >>>>>> Ries, the creator of the Lean Startup Methodology on "Lean >> Startup >> > >>>>>> Secrets Revealed." This video shows you how to validate your >> ideas, >> > >>>>>> optimize your ideas and identify your business strategy. >> > >>>>>> http://p.sf.net/sfu/appsumosfdev2dev >> > >>>>>> _______________________________________________ >> > >>>>>> xmlpipedb-developer mailing list >> > >>>>>> xml...@li... >> > >>>>>> https://lists.sourceforge.net/lists/listinfo/xmlpipedb-developer >> > >>>>> >> > >>>>> >> > >>>>> >> > >> >> ------------------------------------------------------------------------------ >> > >>>>> Magic Quadrant for Content-Aware Data Loss Prevention >> > >>>>> Research study explores the data loss prevention market. >> > >> Includes in-depth >> > >>>>> analysis on the changes within the DLP market, and the criteria >> used to >> > >>>>> evaluate the strengths and weaknesses of these DLP solutions. >> > >>>>> http://www.accelacomm.com/jaw/sfnl/114/51385063/ >> > >>>>> _______________________________________________ >> > >>>>> xmlpipedb-developer mailing list >> > >>>>> xml...@li... >> > >>>>> https://lists.sourceforge.net/lists/listinfo/xmlpipedb-developer >> > >>>> >> > >>>> <ATT00001..txt><ATT00002..txt> >> > >>> >> > >>> >> > >>> >> > >> >> ------------------------------------------------------------------------------ >> > >>> 10 Tips for Better Web Security >> > >>> Learn 10 ways to better secure your business today. Topics covered >> include: >> > >>> Web security, SSL, hacker attacks & Denial of Service (DoS), private >> keys, >> > >>> security Microsoft Exchange, secure Instant Messaging, and much >> more. >> > >>> http://www.accelacomm.com/jaw/sfnl/114/51426210/ >> > >>> _______________________________________________ >> > >>> xmlpipedb-developer mailing list >> > >>> xml...@li... >> > >>> https://lists.sourceforge.net/lists/listinfo/xmlpipedb-developer >> > >>> >> > >>> <ATT00001..txt><ATT00002..txt> >> > >> >> > >> >> > >> >> ------------------------------------------------------------------------------ >> > >> 10 Tips for Better Web Security >> > >> Learn 10 ways to better secure your business today. Topics covered >> include: >> > >> Web security, SSL, hacker attacks & Denial of Service (DoS), private >> keys, >> > >> security Microsoft Exchange, secure Instant Messaging, and much more. >> > >> http://www.accelacomm.com/jaw/sfnl/114/51426210/ >> > >> _______________________________________________ >> > >> xmlpipedb-developer mailing list >> > >> xml...@li... >> > >> https://lists.sourceforge.net/lists/listinfo/xmlpipedb-developer >> > > >> > > >> > > >> ------------------------------------------------------------------------------ >> > > 10 Tips for Better Web Security >> > > Learn 10 ways to better secure your business today. Topics covered >> include: >> > > Web security, SSL, hacker attacks & Denial of Service (DoS), private >> keys, >> > > security Microsoft Exchange, secure Instant Messaging, and much more. >> > > http://www.accelacomm.com/jaw/sfnl/114/51426210/ >> > > _______________________________________________ >> > > xmlpipedb-developer mailing list >> > > xml...@li... >> > > https://lists.sourceforge.net/lists/listinfo/xmlpipedb-developer >> > >> > >> ------------------------------------------------------------------------------ >> > 10 Tips for Better Web Security >> > Learn 10 ways to better secure your business today. Topics covered >> include: >> > Web security, SSL, hacker attacks & Denial of Service (DoS), private >> keys, >> > security Microsoft Exchange, secure Instant Messaging, and much more. >> > http://www.accelacomm.com/jaw/sfnl/114/51426210/ >> > _______________________________________________ >> > xmlpipedb-developer mailing list >> > xml...@li... >> > https://lists.sourceforge.net/lists/listinfo/xmlpipedb-developer >> > >> > <export1-crop.jpg><ATT00001..txt><ATT00002..txt> >> >> >> >> ------------------------------------------------------------------------------ >> 5 Ways to Improve & Secure Unified Communications >> Unified Communications promises greater efficiencies for business. UC can >> improve internal communications as well as offer faster, more efficient >> ways >> to interact with customers and streamline customer service. Learn more! >> http://www.accelacomm.com/jaw/sfnl/114/51426253/ >> _______________________________________________ >> xmlpipedb-developer mailing list >> xml...@li... >> https://lists.sourceforge.net/lists/listinfo/xmlpipedb-developer >> > > > ------------------------------------------------------------------------------ > Got Input? Slashdot Needs You. > Take our quick survey online. Come on, we don't ask for help often. > Plus, you'll get a chance to win $100 to spend on ThinkGeek. > http://p.sf.net/sfu/slashdot-survey > > _______________________________________________ > xmlpipedb-developer mailing list > xml...@li... > https://lists.sourceforge.net/lists/listinfo/xmlpipedb-developer > > > > ------------------------------------------------------------------------------ > Got Input? Slashdot Needs You. > Take our quick survey online. Come on, we don't ask for help often. > Plus, you'll get a chance to win $100 to spend on ThinkGeek. > http://p.sf.net/sfu/slashdot-survey > _______________________________________________ > xmlpipedb-developer mailing list > xml...@li... > https://lists.sourceforge.net/lists/listinfo/xmlpipedb-developer > > |