ReplaceAll interesting behavior

The following code seems to loop indefintely:
public class REGEX {
     public static void main(String args[]){
          String string = "https://www.google.com/accounts/ServiceLogin?service=mail&passive=true&rm=false&continue=http%3 - Microsoft Internet Explorer";
          String regex = "&(\\w*\\p{Punct}*)*;";//html encoded stuff
          string = string.replaceAll(regex,"�");
          System.out.println(string);
}What is happening?

Normally, regex quantifiers like * and + are greedy but accomodating: they initially match as many characters as they can, then hand control over to the next part of the regex. If the next part can't match, the quantifier gives up one of whatever it matched and hands off to the next part again. As long as the next part fails to match, the process is repeated until the quantifier has given up everything that it originally matched, whereupon the overall match is deemed a failure.
When you have quantified subexpressions within quantified groups, as in &(\w*\p{Punct}*)*;, the process has to be repeated for each quantifier given every state of every other quantifier, and the number of possible combinations quickly becomes astronomical. If a match is possible, it will usually be found pretty quickly, but if the regex can't match, it will keep trying until the stars burn out before giving up. (That's one reason why you should always test your regexes against invalid data as well as valid data.)
In this case, the regex is much more complicated than it needs to be. When a match is possible, it will match every word character or punctuation character from the first ampersand to the last semicolon. Assuming you can safely ignore control characters, that can be written much more succinctly as &\S*; This still relies on backtracking, but with only the one "path" to follow, it will fail very quickly when it fails. However, if you only want to match up to the first semicolon (or you know there will never be more than one), you can eliminate backtracking entirely by using either a reluctant quantifier: &\S*?; or a possessive quantifer:   &[^\s;]*+; The latter is especially efficient, but you have to be absolutely sure that the quantified part ([^\s;]) can never match in the same place as the sentinel part (;).
Remember, backtracking is your friend, but it's a friend with very poor hygiene and social skills, and it's best to keep it shut away most of the time; think Ed from Shaun of the Dead.

Similar Messages

  • String.replaceAll strange behavior...

    I have found strange behavior of String.replaceAll method:
    "aaaabaaaa".replaceAll("b","a"); // working fine
    "aaaabaaaa".replaceAll("b","a${"); // throws an exceptionThat could be probably a bug?
    p.s. using jdk_1.6.0_12-b04

    Welcome to the Sun forums.
    >
    "aaaabaaaa".replaceAll("b","a${"); // throws an exception
    Please always copy/paste the [exact error message|http://pscode.org/javafaq.html#exact]. We do not have crystal ball, and cannot see the output on your PC.
    >
    That could be probably a bug? >(chuckle) It has more to do with special characters in Strings, that need to be escaped. I am not up on the fine details, but try this code.
    import javax.swing.*;
    class TestStringReplace {
      public static void main(String[] args) {
        String result = "aaaabaaaa".replaceAll("b","c"); // working fine
        JOptionPane.showMessageDialog(null, result);
        result = "aaaabaaaa".replaceAll("b","c\\${"); // chars escaped
        JOptionPane.showMessageDialog(null, result);
    }

  • Interesting behavior with XP LaF

    Hello,
    I am seeing an interesting behaviour with the 1.4.2 Look an Feel.
    I am developing on XP Pro and am invoking
    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());\
    before showing a JFrame.
    But, the LaF is defaulting to Metal. The frame contains a few splitpanes and panels, nothing fancy. However, if I create a test frame with one of my panels and set the LaF to the System LaF, it uses the XP LaF just fine.
    Anyone know why this might be happening? Am I missing something blindly obvious?
    Thanks for your 2 cents....
    --Bill                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

    hey,
    The reason why is because for Sun on Windows Metal is the default look and feel. You need to manualy set it. I use the following code:
    * LookAndFeel.java
    public class LookAndFeel {
        public static final String MAC_CLASS = "com.sun.java.swing.plaf.mac.MacLookAndFeel";
        public static final String METAL_CLASS = "javax.swing.plaf.metal.MetalLookAndFeel";
        public static final String MOTIF_CLASS = "com.sun.java.swing.plaf.motif.MotifLookAndFeel";
        public static final String WINDOWS_CLASS = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel";
        public static final String GTK_CLASS = "com.sun.java.swing.plaf.gtk.GTKLookAndFeel";
        public static final String KUNSTSTOFF_CLASS = "com.incors.plaf.kunststoff.KunststoffLookAndFeel";
        public static boolean isAvailableLookAndFeel(String laf) {
            boolean isSupported = false;
            try {
                Class lnfClass = Class.forName(laf);
                javax.swing.LookAndFeel newLAF = (javax.swing.LookAndFeel)(lnfClass.newInstance());
                isSupported = newLAF.isSupportedLookAndFeel();
            } catch(java.lang.Exception e) {
                // If ANYTHING weird happens, return false
                System.out.println(e.toString());
                isSupported = false;
            if(laf.equals(MOTIF_CLASS)) {
                // problem with the desktop pane using motif, get a null pointer
                // appears to work fine with all other LNF's but is a low priority
                // to resolve.
                isSupported = false;
            return isSupported;
        public static boolean updateLookAndFeel(String currentLookAndFeel, java.awt.Component parent) {
         try {
             javax.swing.UIManager.setLookAndFeel(currentLookAndFeel);
                if(parent != null) {
                    javax.swing.SwingUtilities.updateComponentTreeUI(parent);
         } catch(Exception ex) {
             System.out.println(ex);
                return false;
            return true;
    }To set it you just need to pass the appropriate info. For example:
    public class Test extends javax.swing.JFrame {
        private javax.swing.JButton printButton;
        public Test() {
            LookAndFeel.updateLookAndFeel(LookAndFeel.WINDOWS_CLASS, this);
            getContentPane().setLayout(new java.awt.FlowLayout());
            setTitle("Test");
            addWindowListener(new java.awt.event.WindowAdapter() {
                public void windowClosing(java.awt.event.WindowEvent evt) {
                    System.exit(0);
            testButton = new javax.swing.JButton();
            testButton.setText("Test");
            getContentPane().add(testButton);
            pack();
            java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
            setSize(new java.awt.Dimension(562, 386));
            setLocation((screenSize.width-562)/2,(screenSize.height-386)/2);
        public static void main(String args[]) {
            new Test().show();
    }I have removed some code, but the above should work fine. Btw, I store the selected LnF in the registry and just load the info in at runtime. As its just a string you can store it however you wish.
    James.

  • Interesting behavior

    Hi All,
    I have an application that talks to Oracle database. I deployed this application
    with JDBC connection pool configured. After sometime the tns listener service
    died on the database box and verified it through database tool as I got the error
    message "ORA-12203:TNS:unable to connect to destination". But my apps continued
    to work fine without any errors/issues. It was able to connect to the database
    and process the data.
    Does Weblogic bypass tns listener while connecting to Oracle?
    Thanks
    WD

    WD wrote:
    Hi All,
    I have an application that talks to Oracle database. I deployed this application
    with JDBC connection pool configured. After sometime the tns listener service
    died on the database box and verified it through database tool as I got the error
    message "ORA-12203:TNS:unable to connect to destination". But my apps continued
    to work fine without any errors/issues. It was able to connect to the database
    and process the data.
    Does Weblogic bypass tns listener while connecting to Oracle?
    Thanks
    WDHi. We can't take credit ;-) It's an artifact of the Oracle connection architecture.
    A connector contacts the listener process, which interacts with the oracle
    client to obtain a direct socket to the DBMS. Once this socket is established,
    and open connection has nothing further to do with the listener process.
    However, if you tried to dynamically create a pool to the DBMS after the
    listener died, or if you tried in any other way to make any new oracle connection,
    then that would fail. This is how OCI works, as I recall. I would guess that the
    thin driver would do the same, but maybe not. It may be that the thin driver
    goes straight to the DBMS, in which case it would never need the listener. You could
    test this in a standalone program...
    Joe Weinstein

  • Load Trait behavior question

    Hi all,
    I've been working with OSMF for a few months now and I've recently noticed some interesting behavior regarding the trait process.  It seems that with a live stream, the getTraitOrThrow() method get's fired every MediaPlayer.currentTimeUpdateInterval with traitType of "load".  I understand the reason for it being that it's trying to calculate bytesLoaded.  bytesLoaded however is always 0, as is bytesTotal.  Therefore it seems to me like the load trait should be removed.  Is this a feasible operation or will it affect a player in an adverse way?
    In MediaPlayer.onBytesLoadedTimer(), would it be acceptable to add this line at the very end?
    updateTraitListeners(MediaTraitType.LOAD, false);
    I tried it and it seemed to work, however i very limited insight as to the implications of this.
    Thoughts anyone?
    Matt

    The LoadTrait is used for most than just the byte counts, it's also used for loading and unloading the media.  If we were to remove it, then any attempt to unload the media would fail.  (Unloading isn't explicitly exposed by the MediaPlayer, but you can call unload() directly on the LoadTrait.)
    Note that bytesLoaded/bytesTotal will only have non-zero values for media that have bytes to transfer, where the byte transfer may need to be communicated to the user (e.g. display download progress in the scrub bar).  For some media types (like streaming video), such a display wouldn't be useful/necessary.

  • Help - JEditorPane drag selected text behavior/problem

    Hi All,
    I'm working at adding new functionality to the JEditorPane. Everything was going ok, but I noticed this interesting behavior that hopefully there is a solution to.
    When you select some text in the JEditorPane with the mouse and then drag the selected text to another location, the text moves just fine. However, depeding on when you drag the text, something interesting happens.
    Here is the senerio. While the text is already selected you noticed the cursor blinking.
    (1) If you drag the selected text while the blinking cursor IS visible, the cursor will continue to blink after you drag the text to its destination.
    (2) If you drag the selected text while the blinking cursor IS NOT visible, the cursor will be invisible after you drag the text to its destination.
    So (2) is really the problem. The only way I've been able to get the cursor to start blinking again is to issue a cut, copy or paste method from the JEditorPane object.
    Has anyone else found this problem and maybe a solution to it. I've disabled all the extra stuff I extended on the JEditorPane class, but it didn't seem to make a difference.
    Thanks.
    Justin Circelli

    There are several approaches. You can add FocusListener to the drop target or drag source and put your code in focusGained() or focusLost() accordingly.
    Another way is to return focus to the drag source if DnD failed as you tried. First check whether mouseReleased(0 is invoked. If it's invoked try to put your code into SwingUtilities.invokeLater()
    regards
    Stas

  • Numeric Format with "dB" causes strange Increment and Decrement behavior

    To reproduce this, drop a numeric control in LabVIEW (Version 8.2 and later).
    Right click on the numeric control and select properties
    Select the "Format and Precision" tab
    Select the "Advanced editing mode" radio button
    Change the Format string to "%#_gdB" and press OK.
    Type "-123" into the numeric control.
    Place the cursor inbetween the 2 and 3.  Press the up arrow.  The normal response of the numeric is to increment the number to the left of the cursor, in this case the 2.  The expected number is -113.  However, with the "dB" in the format string, the number becomes -11.3.  This caused a problem with a Signal Generator whose power output (in Decibels) was controlled by this instrument.  in 2 keystrokes, the power went from -80dB to 0dB and almost damaged some equipment.
    The work around is to remove the dB from the format string or put it in parenthesis.  However, this seems like a bug.  If someone from National Instruments determines this is a bug, please post the CAR# to this thread.  Otherwise, it would be nice to have this behavior explained.

    Interesting behavior. I confirmed this with 8.2. What's more interesting is that the behavior is not consistent. If you use "Hz" the control works as you expected it to work. If you use "A", and perform the same steps, pressing the up arrow gets you "NaN". I tried putting a space before the "dB", and it made no difference. At first I thought that the "d" was being misinterpreted, but the result from using "A" made no sense. Very odd.
    Lesson learned from your experience: Always make sure to check the values that you want to set before you actually set them. You should have 2 layers of checking. The lowest level checks the values against the instrument's capabilities. In other words, making sure you don't try to program a level of 100 when the instrument can only handle 10. A higher level should check values against usage limits. This is where you put in the valid ranges for how you're using the instrument. For example, even though the instrument may be able to go to 13 dBm, in your testing you may only want a maximum setting of, say, -20 dBm. In my code I write a wrapper VI around each driver function to implement this. This requires extra code, but it can save your butt in many instances.

  • Interesting observation on points

    I guess there was nothing in the old system to prevent this, and it is certainly not a "pressing" issue (yet),  but I just noticed an interesting behavior in this thread : alter tablespace sa online;
    OP posts a question, then supplies his own answer, then marks his own answer as "correct".  Presto!  Self-awarded points.

    Mark a post is now the only one solution to mark a thread as solved. And if you mark your own thread as correct, not sure your counter will be increase. At least, I read somewhere here it won't.
    Nicolas.

  • Unable To Remove An Image From An Album - Sometimes

    I have a project containing approximately 2900 images (masters plus versions). I have defined 8 albums and moved various images to each. I am able to select one or more pictures in any of the albums. For simplicity lets assume that I have a single image selected and I want to remove it from the album it is in. I go to the Image menu. About one-third of the time the "remove from album" option is enabled, and when it is I am able to delete the image either by selecting the Image option or using the Delete key. However, the other two-thirds of the time The "remove from album" is grayed out and even using the Delete key does not remove the selected image.
    One interesting behavior I have observed. If I find an image I am unable to delete, I can first select an image I KNOW can be removed, duplicate it, the select just the replicant plus the image I wanted to remove originally and now BOTH images can be deleted (the "remove from album" option is available).

    I'm having the same kind of problem and it's driving me nuts! Most of my problems have arisen from duplicate images imported when I did a mass import into Aperture from iPhoto. It brought in both the original image and the edited image, and I can't remove either from a given album! I will try your suggestion of duplicating a cooperative image first and using it as the "seed" for deletion.

  • How can I remove 300 groups from my iCloud Contacts?

    My OS X Address Book started out with about 10 groups, but now iCloud.com has about 300 groups.
    The replication arose because of a bug in how iCloud handles a mixture of Address Book Cards with both OS X and Windows line terminated Notes (LF vs. CRLF - it helps if you once used a typewriter).
    I figured out how to convert Address Book to all LF terminated line feeds and I was able to get iCloud.com working on a different account, but my core account is stuck with 300 groups (some replicated 50 times).
    I know how to delete all Cards/Contacts in iCloud.com Contacts, but, unfortunately that doesn't remove Groups. (Groups have an interesting behavior in iCloud, almost as though Apple has a special plan for them.)
    I can delete Groups one at a time on iCloud.com, but that's tedious. Unfortunately deleting them on Address Book, and trusting in sync to clear up iCloud.com, is equally tedious.
    Has anyone heard of a way to delete all Groups on iCloud or Address Book 6? Perhaps an AppleScript?
    Has anyone heard of Apple resetting a corrupt iCloud account to clear out bad data? (I have a clean version of Address Book I can use to restart -- that, by the way, is harder than you'd think. Again because Groups are special).
    Advice appreciated. If I get some free time I might take may laptop by the Genius bar and see what they say...

    I figured this out. In this case I didn't care about my Contacts, I had them elsewhere. My problem was my iCloud acount was "poisoned" with massive replication of 'Groups'. Even after I deleted all the Contacts I still had hundreds of Groups to get rid of. Manual deletion was too tedious.
    The answer was a simple AppleScript (I'm on ML on the machine i ran this on, so it's "contacts" rather than Address Book:
    tell application "Contacts"
              repeat 50 times
                        set theGroup to group "MyGroupName"
      delete theGroup
              end repeat
    save
    end tell
    Since I had the same Group Names replicated about 100 times each, I only had to run this about 10 times to clear them all out. When I got to smaller numbers I had to drop the repeat count. I changed the Group name as I went.
    Took me about five minutes.
    I'm sure an AppleScripter could turn this into a general script for removing all groups all at once. Or could get very clever, and only remove groups that had no contacts (so one could salvage the group/contact relationships).
    I didn't need that. My problem has been fixed.
    I think sync works a LOT better in ML than Lion btw. iCloud updated very quickly.

  • Images not in printed documentation

    When generating printed documentation from RH7 (selecting
    embed images, MS Word doc, etc.), the images do not show up in the
    results. All I see are the {bmc <file name>.bmp} references.
    I know this worked in version 5 and I read the release update for
    7.0.1 (which I installed) that indicates it was fixed; but no joy.
    BTW, I have tried this with a new test document, re-booted the
    computer, etc.
    What is going on here?

    A point of interest with this problem. I have noticed that,
    with this installation, when I highlight a true code image in my
    Word project file (indicated by {bmc <file name>.bmp} ) then
    click the "New Help Image" button (or use Ctrl-G) the image view on
    the General tab (Insert Help Image Window) is vacant. This is
    interesting, in that, as I recall in RH5 it would show the graphic
    that was selected. For some reason this installation is not making
    the connection back to the inserted image. I'm thinking this is the
    root of the problem. Now, the question is: How do I correct it?
    Also, you will note that I previously indicated "this
    installation". This is due to my experimenting with an installation
    on a different computer (it never having any prior version of a RH
    installation) and the Printed Documentation feature works - sort
    of. The issue I see on that computer is at the end of the process
    RH7 shuts down. It doesn't lock up, it literally closes before the
    final step where the pop up dialog box indicating the process
    completed, and provides the view file button, is shown. However, I
    can find the word document it created an view it - interesting
    behavior.

  • Disappointing support - will not buy creative products any more

    Hi,
    just wanted to share my experience with creative support. Just to keep in mind for those planning to buy creative products...
    I bought a Zen X-fi 2 last summer. Mainly the features of sleep-timer and alarm using any mp3 file have been my selection criteria for this player, because I was interested in automatic switch-off in the evening and a wakeup in the morning by some nice music instead of a standard beeping of my alarm clock.
    Unfortunately, I am really disappointed now by creative. As I already reported here (<a rel="nofollow" target="_blank" href="http://forums.creative.com/t5/MP3-Players/Zen-X-Fi-2-Problems-with-snooze-function/m-p/56477)"]http://forums.creative.com/t5/MP3-Players/Zen-X-Fi-2-Problems-with-snooze-function/m-p/56477)[/url] I experience some bugs with the above mentioned features. Let me summarize:
    - interestingly, the alarm will repeat 3 times AT MAXIMUM, i.e., even if you choose "snooze" after the 3rd repeat, it will not repeat again.
    --> official (!!) statement of creative: "it is the intended behavior of the player, which shall avoid discharging of the player in alarm mode."
    ?Well I cannot understand this, because it should be a simple "if" statement in the firmware, to check whether the user pushed the screen or not. Of course I understand, that if the user does not do anything after the alarm went off, the repeating signal of alarm should be restricted in repetition to avoid the complete discharging. But as soon as user interaction takes place, the player should behave like it is expected from the labeling on the screen, right?
    ?- One reproducible bug: In general the player repeats the alarm 3 times at maximum also, if you just hit the touch-screen once, but do not choose "snooze" or "turn off alarm" (in addition, the buttons on the screen are too tiny in my opinion - just try to push the right button if you're sleepy in the morning...). BUT: at certain initial times of alarm (e.g. 6:40, 7:45 or 6:50, 7:50, 7:5), if you just hit the touchscreen once without further selections, the alarm does not repeat 3 times, but only once or twice AND it will repeat one or two hours later.
    ?--> Very interesting behavior. The only reaction of creative support: "we forwarded the feedback to our developers, but we cannot tell you if your recommendations will be implemented into the next firmware."
    ?Why are bugs like that treated as "feedback" or "recommendation" that apparently have not to be resolved?
    ?- finally, if you use the sleep-timer and your player powers-off in the evening (in the middle of a song, if you listen to music), then the player will continue the song as soon as you turned off the alarm the next morning. This is annoying, because you have to go to "Music -> now playing" and stop it also. A behavior I would not expect, do you agree?
    I waited for a corrected firmware for half a year now - nothing changed, only standard replies of the support, no offers how to solve these problems.
    Perhaps you now understand why I cannot recommend creative any more and definitely will not buy or recommend any creative product in the future.
    Originally, I thought that companies are interested in satisfied customers - seems like creative is going a different way...
    Keep this in mind before you finally choose creative...
    regards
    pacman2

    Hi Susan WW,
    I apologize, I'm a bit unclear on the exact nature of your issue. If you are saying that you are having issues connecting to the iTunes Store directly from your iPad, for example to purchase music, you may find the troubleshooting in the following article helpful:
    Apple Support: Can't connect to the iTunes Store
    http://support.apple.com/kb/ts1368
    Regards,
    - Brenden

  • How can we tell if a VI is already running before calling Start Asynchronous Call?

    The new Start Asynchronous Call node is awesome for spawning multiple instances of reentrant VIs.  However, I've stumbled a bit in using it for non-reentrant VIs.  The old practice of using the "Run VI" method would allow us to check the Execution.State of the VI before invoking the method to run it.  That way if the State was Running or Run Top Level, we could skip the invoke node and just use a property node to open its front panel.  WIth the Start Asynchronous Call node, it looks like we have to use a strictly typed static VI reference, and when we open the VI reference, the VI gets reserved and its Execution.State = Running.  So, how can I tell if it is not just reserved by the thread but actually executing before making a redundant Start call?
    By the way, the redundant Start has interesting behavior.  It will actually cause the targeted VI to be executed again after it stops.  Even if you hit the Abort button on the target VI, it will immediately execute again and again equal to the number of times the Start Asynchronous Call node was run.  There's nothing wrong with that, and I suppose the simple answer is to just go back to using the old "Run VI" method.  It's just that the ability to wire up those inputs directly to the connector pane is so nice.  Perhaps I am missing something obvious.  Oh, I am referring to the Call and Forget mode (0x80).
    Thanks,
    Dan
    Solved!
    Go to Solution.

    Just throwing it out there, I know I'm a year.5 late on this but if it's a psuedo-modal dialog or some other window that you only want a single instance visible at one time, you can check the FP.State property on the strictly typed vi reference. If it's loaded and visible to the user it will be "Standard", if it was closed or not opened prior then the state will be "Closed".
    I think the standard behavior of serializing execution on another thread would be great for doing a pre-set number of iterations with a sub vi in a non-blocking sort of way but for sub vi's meant for UI interaction checking FP.State works.
    Philip
    CLD

  • Error -50 when using an external editor

    Having finally graduated from iPhoto 2, I found some "interesting" behavior in iPhoto '08...
    iPhoto objected when I tried to save an externally edited photo back into its slot in iPhoto -- nothing lost, just an error dialog and the edits were not applied. Since it was repeatable, it made me curious.
    When you choose external editor to edit a photo in iPhoto 8, the first thing iPhoto does is stash a copy of the original (and activates the "Revert to Original" menu item for that photo). Just editing in iPhoto 8 doesn't do any of this until you accept the changes -- that's an important distinction, because if you change your mind with the external editor (and make no edits, or cancel them without saving), that stashed copy stays in the "modified" folder.
    For all practical purposes, it's "forgotten" unless you happen to choose "Revert to Original", in which case, the extra photo is unceremoniously purged. Now, if you don't think about purging that forgotten copy and later decide that you actually do want to edit that photo in an external editor after all, iPhoto will again stash a copy while your external editor is opening. It gets stashed in the same folder that already has the previously stashed (and forgotten) image file. If the file were overwritten, there would be no big problem, but it does not get overwritten, and you can't have two files with the same name in the same folder. So the finder appends a "_1" to the end of the file name -- and THAT sets up the problem. When you finish editing and save the file back to iPhoto, you will be (unintentionally) trying to add a file to your collection that iPhoto doesn't know about. The filename change to avoid a conflict in the folder is not reflected in the iPhoto 8 database.
    Older iPhoto versions would have let that pass (and that's why there were always problems with database corruption), but the newer version catches the attempt and simply doesn't allow the save to take place.
    That's the "why it happens", but it's only my second day with iPhoto '08 and I'll need a little more time to work out how to selectively fix the problem without damaging the database -- a database rebuild does not purge those stashed photos (and you wouldn't want it to because most of them are the originals for photos that were actually modified).

    Brie Fly:
    I tried to replicate that using Photoshop and could not. When starting an edit with PS a file is created and remains is I abort the edit in PS. However, if I edit again with PS and save the original modified file is changed with no other file being created.
    What 3rd party editor are you using? The only time I get a _1 file is when I move a file to an event that has the same file name as a file already in that event.
    What system are you running and are you at iPhoto 7.1.1, iLife Support 8.1.1 and Quicktime 7.3?
    Happy Holidays
    TIP: For insurance against the iPhoto database corruption that many users have experienced I recommend making a backup copy of the Library6.iPhoto database file and keep it current. If problems crop up where iPhoto suddenly can't see any photos or thinks there are no photos in the library, replacing the working Library6.iPhoto file with the backup will often get the library back. By keeping it current I mean backup after each import and/or any serious editing or work on books, slideshows, calendars, cards, etc. That insures that if a problem pops up and you do need to replace the database file, you'll retain all those efforts. It doesn't take long to make the backup and it's good insurance.
    I've created an Automator workflow application (requires Tiger), iPhoto dB File Backup, that will copy the selected Library6.iPhoto file from your iPhoto Library folder to the Pictures folder, replacing any previous version of it. It's compatible with iPhoto 08 libraries and Leopard. iPhoto does not have to be closed to run the application, just idle. You can download it at Toad's Cellar. Be sure to read the Read Me pdf file.

  • Windows Vista and FME

    Seen some interesting behavior with Windows Vista and FME.
    When watching the connection status of a live broadcast I get lots
    of empty full buffer dumps.
    #NSManager# (doLiveOnStatus:NetStream.Buffer.Full)
    #NSManager# (doLiveOnStatus:NetStream.Buffer.Empty)
    I have seen this happen when using the On2 Flix encoder with
    2.0.479 but not typically with FME. The only different variable is
    Vista and the client is running it on his laptop.

    Thanks for the reply. I actually got first hand use with it
    on the clients machine. The problem is that FME gets cranky when
    you drop packets and the client is using a wireless card to
    transmit the data.
    James

Maybe you are looking for

  • Touch-up tool causes font issue in Acrobat 9 and X

    While I edit text using the Edit Document Text tool (formerly TouchUp Text) the font style are getting changed, for example If i select the Uppercase style text using Document Text Tool after exit the selection and trying to save as  the doucment som

  • Consolidating itunes wont work??

    "Copying Files Failed. The file name was invalid or too small." That is what i get when i try to consolidate my itunes. ive tried restarting my computer and updated itunes? HELP!

  • Stand-by button on Cinema HD display doesn't work after Mountain Lion upgrade

    Hi, After I upgraded my Mac mini (spring '09) to Mountain Lion it appears that the buttons on the side of my Cinema HD display doesn't work. There is a setting in sys preferences that should put the Mac in stand-by when the power button is pressed. T

  • Where is the "Find & Replace" feature?

    Need to change a couple of things that I don't remember on how many pages or apps it is written, I also need to change a url that is on many many pages. I can not find andy "find and replace" function in Business Catalyst. Please help.

  • Upgrade: what do I need to qualify?

    I bought Logic Express a few years ago for a G4 Mac Mini. I then went PC and used FL Studio. I have a new Mini now and want Express on it. What do I need to qualify for the upgrade? The serial number? If I connect the old mac will I find the serial n