Search Results

Search found 18035 results on 722 pages for 'location bar'.

Page 340/722 | < Previous Page | 336 337 338 339 340 341 342 343 344 345 346 347  | Next Page >

  • New Microsoft Office Coming with a Twist

    On May 12 Microsoft will unveil the newest version of its popular Office line with the 2 1 edition. New York s NBC Studios will be the location for the special launch and this time around Microsoft is changing things up a bit. Although the May 12 launch is mostly just for business customers who wish to buy the product Office 2 1 will be available on a wider scale for other customers sometime this June. As for the change Microsoft will be introducing a new Office Web Apps version as well in an effort to roll with the changing technological climate.... Autodesk - Civil 3D - Transportation Accelerate Projects with Integrated Data Sources & Automatic Documentation.

    Read the article

  • How to keep a window from overlapping into another workspace?

    - by user1477
    It's annoying to me how if a window is even a couple pixels off the right edge of my screen, when I switch to that right workspace, the system thinks that the window is there. The unity launcher bar gets hidden because of it and switching to that window keeps you on the current workspace where you can't even see the window cause it's only a couple pixels. KDE seems to do this much better where when you switch to another workspace, the window just isn't there. But well I don't want KDE. Any way of getting that same behavior without the switch?

    Read the article

  • Calculate random points (pixel) within a circle (image)

    - by DMills
    I have an image that contains a circles at a specific location, and of a specific diameter. What I need to do is to be able to calculate random points within the circle, and then manipulate said the pixels they correlate to. I have the following code already: private Point CalculatePoint() { var angle = _random.NextDouble() * ( Math.PI * 2 ); var x = _originX + ( _radius * Math.Cos( angle ) ); var y = _originY + ( _radius * Math.Sin( angle ) ); return new Point( ( int )x, ( int )y ); } And that works fine for finding all the points at the circumference of the circle, but I need all points from anywhere in the circle. If this doesn't make sense let me know and I will do my best to clarify.

    Read the article

  • External link tracking when opening the link in a new window in Google Analytics?

    - by evanmcd
    OK, so this seems like a really simply problem, but I have yet to find a solution that accomplishes the following: Opens the link in a new window Tracks the event in GA (obviously) Doesn't trigger pop-up blockers (uses target="_blank" instead of window.open) Most of the code I've seen, including Google's, doesn't take into account the case of opening in a new window - they just window location.href. Even GAAddons (http://gaaddons.com/), which charges for commercial use, doesn't seem to work for me. Perhaps, I'm missing something simple - I'd be relieved if so and would thank profusely whoever points it out to me! If no one is able to provide an example, I'll post some of the test cases I've created to illustrate the problem. Thanks.

    Read the article

  • The entire User Interface freezes/becomes unresponsive for up to 20 seconds

    - by user2400801
    I am a rails developer, using Ubuntu 13.10 installed on a Asus S550C Ultrabook (was a windows 8 machine originally) Every day I work with Sublime Text 2, Google Chrome, and Terminal (about 6 tabs open) The problem: clicking on the menu bar (eg File - Save) while using Sublime Text 2 will occasionally (eg almost always) make the ENTIRE COMPUTER freeze for up to 20 seconds. This occasionally happens when I go to log out / lock my computer. Sometimes it doesn't freeze completely but rather is just very sluggish and then recovers. I don't know if this is a problem with Sublime Text 2, or the Ubuntu 13.10 operating system. (Thanks for reading) Best Regards

    Read the article

  • Can't interact with windows after first login

    - by evilpie
    Every time I restart my computer and login into my ubuntu account for the first time, I can't click on anything besides the bar on the left. So I can start Firefox from there, but I am not able to click on the new tab button etc. Same will all other apps. I can start the Terminal via the keyboard, but I can't move it around. So I have to logout via the keyboard and login again. Usually everything works fine now. Just waiting doesn't help. The only obvious change I made to Ubuntu was to move the /home directory.

    Read the article

  • How to elegantly work with a lot of print functions?

    - by user1824372
    I'm working on a Python project that is executed on a terminal (or console) for which I am planning to implement a GUI. I did not major in CS so I really have no idea how to effectively design a terminal GUI such that: the user interface looks good in GUI, it is directed to a certain widget, let's say, a text label, or a bottom bar, or a hide-able frame. Do you have any suggestions? Currently, I am using the print function to provide essential information on STDOUT during execution, so a lot of print calls are distributed here and there in the code. I'm thinking of using macro-like variables such as 'FILE_NOT_EXISTS_MESSAGE' for printing, and all of them and their values would be defined in one file. Is that a standard way to do this? Should I introduce a logging system? In summary, I'm looking for a pattern for handling console output that is effective and adaptable.

    Read the article

  • What driver for nVIDIA GeForce MX440?

    - by ubufan
    I have recently installed (clean install) Ubuntu 12.10 on a desktop PC with nVIDIA GeForce MX440 (AGP 8x) and I have problems with Unity. Although I can see the desktop, however i can't see unity bar and icons. So, I decided to install lubuntu-desktop to see the performance. And yes! I choose lubuntu-desktop from Log On screen and the performance is definetely much better and has nothing to do with the aforementioned on unity. The system has native drivers from the Ubuntu installation. I didn't touch anything in xorg configuration. I also remember that I have managed to have the best performance with this graphic card on my previous Ubuntu 9.10 system, by editing some values in /etc/X11/xorg.conf file. But I can't remember that options, because I formatted the / partition! My question is: Which is the most suitable driver for this card, in order to load the unity feature and have better performance on it?

    Read the article

  • What class structure allows for a base class and mix/match of subclasses? (Similar to Users w/ roles)

    - by cdeszaq
    I have a set of base characteristics, and then a number of sub-types. Each instance must be one of the sub-types, but can be multiple sub-types at once. The sub-types of each thing can change. In general, I don't care what subtype I have, but sometimes I do care. This is much like a Users-Roles sort of relationship where a User having a particular Role gives the user additional characteristics. Sort of like duck-typing (ie. If my Foo has a Bar, I can treat it like a ThingWithABar.) Straight inheritance doesn't work, since that doesn't allow mix/match of sub-types. (ie. no multi-inheritance). Straight composition doesn't work because I can't switch that up at runtime. How can I model this?

    Read the article

  • Full USB install not booting, but Zorin full install will? [on hold]

    - by elmalote
    Okay I'm puzzled and been trying to solve this for days. I'm almost giving up on having Ubuntu. I've used Zorin will no problems, full install on USB. Boots up fine no issues. But I'm trying to install Ubuntu on the same USB stick. Exact same options under the installer. Mount point, bootloader location etc. However it will not boot with Ubuntu full install. I've tried disabling UEFI boot in BIOS, changed boot priorities and so on. I know the stick boots as Zorin has no issues. I didn't even disable UEFI boot in BIOS and Zorin boots up fine. Can someone help!? Thanks a lot.

    Read the article

  • Recommendations for taskbar

    - by user210551
    I recently updated to Ubuntu 13.10 and now tint2 stopped working. Better yet: it works, I just can not see it as the all bar is now transparent. Since Tint2 is no longer maintained I doubt it will be updated hence I'm now looking into alternative is there are any. In short: looking for a simple taskbar that sits at the bottom of the screen and that lists applications per window (no groupping!). Don't need fancy animations or widgets/features. Any ideas?

    Read the article

  • Silverlight on Windows Phone

    This was a great announcement last week at MIX10: the programming model for the upcoming Windows Phone 7 is Silverlight!   For now it is Silverlight 3, with the possibility to use phone specific features: orientation location & map control (GPS) mic push notifications motion detection accelerometer compass light proximity contacts So we have the same programming model we already know, develop in Visual Studio, test with the built-in emulator or deploy...Did you know that DotNetSlackers also publishes .net articles written by top known .net Authors? We already have over 80 articles in several categories including Silverlight. Take a look: here.

    Read the article

  • Can't Reboot into Windows 8.1 from Ubuntu

    - by Extended Range
    I am newb in Ubuntu. Currently I am using an Acer V11 laptop with a pre-intalled Windows 8.1. I follow some guideline (http://www.everydaylinuxuser.com/2014/05/install-ubuntu-1404-alongside-windows.html) which successfully install Ubuntu 14.04 LTS alongside Windows 8.1 with UEFI enabled all the way throughout the installation and my current usage and a GRUB. But I got into some problem. The dual boot mostly works fine as I am able to successfully boot into either one of the Windows 8.1 or Ubuntu when stating my laptop. However it ran into issue after I start the device and use Ubuntu for a while (2 hour for instance) and then restart it: If I press the restart from Ubuntu, the grub still shows and I am still able to choose the Windows Boot Manager. But the Windows loading process was stuck at the Acer Loading Screen and I am not able to see the standard circular Win8 loading progress bar. Does someone know why would this happens?

    Read the article

  • Portable website

    - by johnny_s
    I have an online presentation to do next week and I have it all ready to go. The website is HTML and CSS only (no DB), and currently resides on my shared hosting account. Now, although my shared hosting is (relatively) reliable, I have noticed that recently they have been making some changes and my website has been unavailable at times. I don't want this to happen to me on the morning of my presentation, so I am asking what is the best way to prepare for such a thing? My domain is www.presentation.mydomain.com and I would like to keep this if possible (even if issues arise). I have been thinking of a few alternatives: Host my site on two different domains or servers (but what about the domain name?) Have a portable XAMPP version on a USB stick (again, domain name?) Possible failover site/location Update The presentation will be carried out on their laptop, not mine. So I am unable to install any software.

    Read the article

  • PHP 5.4 sort en RC : accès aux membres à l'instanciation et amélioration des performances du coeur du langage.

    PHP 5.4 approche de la version finale avec une première RC Accès aux membres à l'instanciation et amélioration des performances du coeur du langage. L'équipe de développement de PHP a annoncé la sortie de PHP 5.4 en Release Candidate1 (RC1). Cette version inclut de nouvelles fonctionnalités et exclut tous les comportements décrits comme dépréciés (deprecated) du langage. Depuis la Beta, cette RC inclut les améliorations suivantes : L'accès aux membres d'une classe au moment de l'instanciation : (new Foo)->bar() L'émission d'une note indiquant la conversion d'un Array en String La correction des bugs de plusieurs extensions (Oracle Database ...

    Read the article

  • Issue with div image size [migrated]

    - by nextyear
    I hope this helps explain the issue I am having I have recently designed a horizontal scrolling portfolio for a client, the rights and wrongs of horizontal web design, is a sligtly seperate topic but alas the client wanted something different. Im having a real issue with the bottom div though As the monitor size is reduced its creating the browser scroll bar down the side as the div image is overlapping the monitor size. Wouldnt be such a huge issue but because of the nature of the horizontal site its producing a diagional scrolling effect. Is there away to prevent the screen expanding from the actual monitor size using css or anyother solution? I'm probably staring at the answer as I type but brain doesnt seem to be working unfortunately.

    Read the article

  • Monday at Oracle OpenWorld 2012 - Must See Session: “Using the Right Tools, Techniques, and Technologies for Integration Projects”

    - by Lionel Dubreuil
    Don’t miss this “CON8669 - Using the Right Tools, Techniques, and Technologies for Integration Projects“ session with Timothy Hall - Sr. Director, Oracle: Date: Monday, Oct 1, Time: 3:15 PM - 4:15 PM Location: Moscone South - 308 Every integration project brings its own unique set of challenges. There are many tools and techniques to choose from. How do you ensure that you have a means of consistently and repeatedly making decisions about which tools, techniques, and technologies are used? In working with many customers around the globe, Oracle has developed a set of criteria to help evaluate a variety of common integration questions. This session explores these criteria and how they have been further organized into decision trees that offer a repeatable means for ensuring that project teams are given the same guidance from project to project. Using these techniques, the presentation shows how you can reduce risk and speed productivity for your projects Objectives for this session are to: Discuss common questions that arise at the start of integration projects Review various decision criteria and approaches for getting to a consistent set of answers Explore how these techniques can be used to reduce risk and speed productivity

    Read the article

  • Monday at Oracle OpenWorld 2012 - Must See Session: “Using the Right Tools, Techniques, and Technologies for Integration Projects”

    - by Lionel Dubreuil
    Don’t miss this “CON8669 - Using the Right Tools, Techniques, and Technologies for Integration Projects“ session with Timothy Hall - Sr. Director, Oracle: Date: Monday, Oct 1, Time: 3:15 PM - 4:15 PM Location: Moscone South - 308 Every integration project brings its own unique set of challenges. There are many tools and techniques to choose from. How do you ensure that you have a means of consistently and repeatedly making decisions about which tools, techniques, and technologies are used? In working with many customers around the globe, Oracle has developed a set of criteria to help evaluate a variety of common integration questions. This session explores these criteria and how they have been further organized into decision trees that offer a repeatable means for ensuring that project teams are given the same guidance from project to project. Using these techniques, the presentation shows how you can reduce risk and speed productivity for your projects Objectives for this session are to: Discuss common questions that arise at the start of integration projects Review various decision criteria and approaches for getting to a consistent set of answers Explore how these techniques can be used to reduce risk and speed productivity

    Read the article

  • Java ME Embedded?Java Embedded Suite????

    - by ksky
    JavaOne 2012??????????????????????Java?2?????????????: Oracle Java ME Embedded ????? ??????? Java ME Embedded???????????????????????????Java???????????CLDC + IMP-NG???????????????130 KB RAM/350 KB ROM???????????????700 KB RAM/1.5 MB ROM???????????????????????????GPIO??????????????????API??XML?Web Service?Location????????API????????? ARM??????????(GUI?????)?????????M2M????????????????????????????????????????????????????NetbBans?Eclipse?????????SDK?????????????ARM KEIL?????(ARM Cortex M-3)????????????????????????? Oracle Java Embedded Suite ????? ??????? Java Embedded Suite??????Java???????????????????????????????1????????????????????????????????????????: Java SE Embedded 7 Java DB 10.8 GlassFish 3.1 Embedded Profile Jersey 1.11 ???Java ME Embedded????????????????????????Java??64MB RAM??70MB?ROM/Flash/Disk????????M2M???????????????????????????????????????????????????????????????????????ARMv6/7 Linux?????x86 Linux????????????????(??????????????)? ??2????????JavaOne?????????????Java Embedded @ JavaOne???????????????????????

    Read the article

  • permanently disable bluetooth

    - by NotABluetoothUser
    I simply don't use bluetooth. Since it can be a security risk and also drains the battery I would like to keep it deactivated. I quickly found the option to turn it off in the settings menu, but the problem is: it doesn't stay dead! Everytime I pull my Nexus 4 out of standby mode bluetooth reappears in the top bar as if I never deactivated it. How can I deactivate it so it stays deactivated or better yet how can I remove it from my phone entirely? I tried sudo apt-get remove bluez bluetooth, but I am not allowed to edit this package.

    Read the article

  • Release notes for 12/05/2012

    Over the last week the CodePlex team fixed several bugs throughout the site. Several notable changes were: Fixed several UI issues related to the recent action bar changes Fixed the issue related to double posting when responding to a discussion. Thanks to Crutkas. Fixed the favicons in Chrome Fixed the refresh page issue related to unsubscribing from a project Fixed the inactive donate checkbox when ad configurations are changed Removed the redundant “subscribe to project” button above the tabs Have ideas on how to improve CodePlex? Please visit our suggestions page! Vote for existing ideas or submit a new one. As always you can reach out to the CodePlex team on Twitter @codeplex or reach me directly @mgroves84

    Read the article

  • Android–Supporting Multiple Devices Part 2

    - by rodelljr
    Originally posted on: http://geekswithblogs.net/rodelljr/archive/2014/06/03/androidsupporting-multiple-devices-part-2.aspxI would like to thank the KC Mobile App Developers group for allowing me to do my presentation; Supporting Multiple Devices Part 2. In this talk, I discussed a Master/Detail application that runs on Android 2.2 devices and forward. I used the Actionbar compat Android library to allow the older devices to have an actionbar. I also used a SQLite database for my data. And just to add one last thing, I also incorporated the use of custom fonts. If you are interesting in looking at this sample application, I have uploaded it to my GitHub account here. I also have a Power Point presentation which you can get here.I will be doing this talk again at a later date this year, so when I have a date and location, I will post a follow up blog.

    Read the article

  • Html Element search in Firebug 13 !

    - by Anirudha
    Originally posted on: http://geekswithblogs.net/anirugu/archive/2013/10/26/html-element-search-in-firebug-13.aspxFirebug 13 are currently in development process. In firebug 13 you can search the element the way we do in CSS. This is much better and save time. Now just put your selector in search bar and now you are moving to your code.   In this picture I demo how I search a element of stackoverflow.com this is example of how this feature will work. If you want to use Firebug 13 then follow this blog post to get it https://blog.getfirebug.com/2013/10/25/firebug-1-13-alpha-4/

    Read the article

  • Difference between "/" at end of URL and without "/" [closed]

    - by user702325
    Possible Duplicate: Does it make a difference if your url ends in a trailing slash or not? Why treat these as different URLs? I am doing a 301 redirect in my WP application using .htaccess and have mapped some of the URLs which have either been removed from the new domain or the URL structure has been changed. While doing I got a doubt I have following URL structure in my .htaccess file RewriteCond %{HTTP_HOST} ^old.com$ [OR] RewriteCond %{HTTP_HOST} ^www.old.com$ RewriteRule ^tag/waiting$ http://www.new.com/tag/relationships [R=301,L] while checking this i found that at some places URL is like http://www.new.com/tag/relationships while at others its like http://www.new.com/tag/relationships/, while both refer to the same location but not sure if this will make any difference to SEO and search engines. Please suggest if the way i am doing mapping is correct or do i need to modify it to handle both UR

    Read the article

  • Python script is exiting with no output and I have no idea why

    - by Adam Tuttle
    I'm attempting to debug a Subversion post-commit hook that calls some python scripts. What I've been able to determine so far is that when I run post-commit.bat manually (I've created a wrapper for it to make it easier) everything succeeds, but when SVN runs it one particular step doesn't work. We're using CollabNet SVNServe, which I know from the documentation removes all environment variables. This had caused some problems earlier, but shouldn't be an issue now. Before Subversion calls a hook script, it removes all variables - including $PATH on Unix, and %PATH% on Windows - from the environment. Therefore, your script can only run another program if you spell out that program's absolute name. The relevant portion of post-commit.bat is: echo -------------------------- >> c:\svn-repos\company\hooks\svn2ftp.out.log set SITENAME=staging set SVNPATH=branches/staging/wwwroot/ "C:\Python3\python.exe" C:\svn-repos\company\hooks\svn2ftp.py ^ --svnUser="svnusername" ^ --svnPass="svnpassword" ^ --ftp-user=ftpuser ^ --ftp-password=ftppassword ^ --ftp-remote-dir=/ ^ --access-url=svn://10.0.100.6/company ^ --status-file="C:\svn-repos\company\hooks\svn2ftp-%SITENAME%.dat" ^ --project-directory=%SVNPATH% "staging.company.com" %1 %2 >> c:\svn-repos\company\hooks\svn2ftp.out.log echo -------------------------- >> c:\svn-repos\company\hooks\svn2ftp.out.log When I run post-commit.bat manually, for example: post-commit c:\svn-repos\company 12345, I see output like the following in svn2ftp.out.log: -------------------------- args1: c:\svn-repos\company args0: staging.company.com abspath: c:\svn-repos\company project_dir: branches/staging/wwwroot/ local_repos_path: c:\svn-repos\company getting youngest revision... done, up-to-date -------------------------- However, when I commit something to the repo and it runs automatically, the output is: -------------------------- -------------------------- svn2ftp.py is a bit long, so I apologize but here goes. I'll have some notes/disclaimers about its contents below it. #!/usr/bin/env python """Usage: svn2ftp.py [OPTION...] FTP-HOST REPOS-PATH Upload to FTP-HOST changes committed to the Subversion repository at REPOS-PATH. Uses svn diff --summarize to only propagate the changed files Options: -?, --help Show this help message. -u, --ftp-user=USER The username for the FTP server. Default: 'anonymous' -p, --ftp-password=P The password for the FTP server. Default: '@' -P, --ftp-port=X Port number for the FTP server. Default: 21 -r, --ftp-remote-dir=DIR The remote directory that is expected to resemble the repository project directory -a, --access-url=URL This is the URL that should be used when trying to SVN export files so that they can be uploaded to the FTP server -s, --status-file=PATH Required. This script needs to store the last successful revision that was transferred to the server. PATH is the location of this file. -d, --project-directory=DIR If the project you are interested in sending to the FTP server is not under the root of the repository (/), set this parameter. Example: -d 'project1/trunk/' This should NOT start with a '/'. 2008.5.2 CKS Fixed possible Windows-related bug with tempfile, where the script didn't have permission to write to the tempfile. Replaced this with a open()-created file created in the CWD. 2008.5.13 CKS Added error logging. Added exception for file-not-found errors when deleting files. 2008.5.14 CKS Change file open to 'rb' mode, to prevent Python's universal newline support from stripping CR characters, causing later comparisons between FTP and SVN to report changes. """ try: import sys, os import logging logging.basicConfig( level=logging.DEBUG, format='%(asctime)s %(levelname)s %(message)s', filename='svn2ftp.debug.log', filemode='a' ) console = logging.StreamHandler() console.setLevel(logging.ERROR) logging.getLogger('').addHandler(console) import getopt, tempfile, smtplib, traceback, subprocess from io import StringIO import pysvn import ftplib import inspect except Exception as e: logging.error(e) #capture the location of the error frame = inspect.currentframe() stack_trace = traceback.format_stack(frame) logging.debug(stack_trace) print(stack_trace) #end capture sys.exit(1) #defaults host = "" user = "anonymous" password = "@" port = 21 repo_path = "" local_repos_path = "" status_file = "" project_directory = "" remote_base_directory = "" toAddrs = "[email protected]" youngest_revision = "" def email(toAddrs, message, subject, fromAddr='[email protected]'): headers = "From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromAddr, toAddrs, subject) message = headers + message logging.info('sending email to %s...' % toAddrs) server = smtplib.SMTP('smtp.company.com') server.set_debuglevel(1) server.sendmail(fromAddr, toAddrs, message) server.quit() logging.info('email sent') def captureErrorMessage(e): sout = StringIO() traceback.print_exc(file=sout) errorMessage = '\n'+('*'*80)+('\n%s'%e)+('\n%s\n'%sout.getvalue())+('*'*80) return errorMessage def usage_and_exit(errmsg): """Print a usage message, plus an ERRMSG (if provided), then exit. If ERRMSG is provided, the usage message is printed to stderr and the script exits with a non-zero error code. Otherwise, the usage message goes to stdout, and the script exits with a zero errorcode.""" if errmsg is None: stream = sys.stdout else: stream = sys.stderr print(__doc__, file=stream) if errmsg: print("\nError: %s" % (errmsg), file=stream) sys.exit(2) sys.exit(0) def read_args(): global host global user global password global port global repo_path global local_repos_path global status_file global project_directory global remote_base_directory global youngest_revision try: opts, args = getopt.gnu_getopt(sys.argv[1:], "?u:p:P:r:a:s:d:SU:SP:", ["help", "ftp-user=", "ftp-password=", "ftp-port=", "ftp-remote-dir=", "access-url=", "status-file=", "project-directory=", "svnUser=", "svnPass=" ]) except getopt.GetoptError as msg: usage_and_exit(msg) for opt, arg in opts: if opt in ("-?", "--help"): usage_and_exit() elif opt in ("-u", "--ftp-user"): user = arg elif opt in ("-p", "--ftp-password"): password = arg elif opt in ("-SU", "--svnUser"): svnUser = arg elif opt in ("-SP", "--svnPass"): svnPass = arg elif opt in ("-P", "--ftp-port"): try: port = int(arg) except ValueError as msg: usage_and_exit("Invalid value '%s' for --ftp-port." % (arg)) if port < 1 or port > 65535: usage_and_exit("Value for --ftp-port must be a positive integer less than 65536.") elif opt in ("-r", "--ftp-remote-dir"): remote_base_directory = arg elif opt in ("-a", "--access-url"): repo_path = arg elif opt in ("-s", "--status-file"): status_file = os.path.abspath(arg) elif opt in ("-d", "--project-directory"): project_directory = arg if len(args) != 3: print(str(args)) usage_and_exit("host and/or local_repos_path not specified (" + len(args) + ")") host = args[0] print("args1: " + args[1]) print("args0: " + args[0]) print("abspath: " + os.path.abspath(args[1])) local_repos_path = os.path.abspath(args[1]) print('project_dir:',project_directory) youngest_revision = int(args[2]) if status_file == "" : usage_and_exit("No status file specified") def main(): global host global user global password global port global repo_path global local_repos_path global status_file global project_directory global remote_base_directory global youngest_revision read_args() #repository,fs_ptr #get youngest revision print("local_repos_path: " + local_repos_path) print('getting youngest revision...') #youngest_revision = fs.youngest_rev(fs_ptr) assert youngest_revision, "Unable to lookup youngest revision." last_sent_revision = get_last_revision() if youngest_revision == last_sent_revision: # no need to continue. we should be up to date. print('done, up-to-date') return if last_sent_revision or youngest_revision < 10: # Only compare revisions if the DAT file contains a valid # revision number. Otherwise we risk waiting forever while # we parse and uploading every revision in the repo in the case # where a repository is retroactively configured to sync with ftp. pysvn_client = pysvn.Client() pysvn_client.callback_get_login = get_login rev1 = pysvn.Revision(pysvn.opt_revision_kind.number, last_sent_revision) rev2 = pysvn.Revision(pysvn.opt_revision_kind.number, youngest_revision) summary = pysvn_client.diff_summarize(repo_path, rev1, repo_path, rev2, True, False) print('summary len:',len(summary)) if len(summary) > 0 : print('connecting to %s...' % host) ftp = FTPClient(host, user, password) print('connected to %s' % host) ftp.base_path = remote_base_directory print('set remote base directory to %s' % remote_base_directory) #iterate through all the differences between revisions for change in summary : #determine whether the path of the change is relevant to the path that is being sent, and modify the path as appropriate. print('change path:',change.path) ftp_relative_path = apply_basedir(change.path) print('ftp rel path:',ftp_relative_path) #only try to sync path if the path is in our project_directory if ftp_relative_path != "" : is_file = (change.node_kind == pysvn.node_kind.file) if str(change.summarize_kind) == "delete" : print("deleting: " + ftp_relative_path) try: ftp.delete_path("/" + ftp_relative_path, is_file) except ftplib.error_perm as e: if 'cannot find the' in str(e) or 'not found' in str(e): # Log, but otherwise ignore path-not-found errors # when deleting, since it's not a disaster if the file # we want to delete is already gone. logging.error(captureErrorMessage(e)) else: raise elif str(change.summarize_kind) == "added" or str(change.summarize_kind) == "modified" : local_file = "" if is_file : local_file = svn_export_temp(pysvn_client, repo_path, rev2, change.path) print("uploading file: " + ftp_relative_path) ftp.upload_path("/" + ftp_relative_path, is_file, local_file) if is_file : os.remove(local_file) elif str(change.summarize_kind) == "normal" : print("skipping 'normal' element: " + ftp_relative_path) else : raise str("Unknown change summarize kind: " + str(change.summarize_kind) + ", path: " + ftp_relative_path) ftp.close() #write back the last revision that was synced print("writing last revision: " + str(youngest_revision)) set_last_revision(youngest_revision) # todo: undo def get_login(a,b,c,d): #arguments don't matter, we're always going to return the same thing try: return True, "svnUsername", "svnPassword", True except Exception as e: logging.error(e) #capture the location of the error frame = inspect.currentframe() stack_trace = traceback.format_stack(frame) logging.debug(stack_trace) #end capture sys.exit(1) #functions for persisting the last successfully synced revision def get_last_revision(): if os.path.isfile(status_file) : f=open(status_file, 'r') line = f.readline() f.close() try: i = int(line) except ValueError: i = 0 else: i = 0 f = open(status_file, 'w') f.write(str(i)) f.close() return i def set_last_revision(rev) : f = open(status_file, 'w') f.write(str(rev)) f.close() #augmented ftp client class that can work off a base directory class FTPClient(ftplib.FTP) : def __init__(self, host, username, password) : self.base_path = "" self.current_path = "" ftplib.FTP.__init__(self, host, username, password) def cwd(self, path) : debug_path = path if self.current_path == "" : self.current_path = self.pwd() print("pwd: " + self.current_path) if not os.path.isabs(path) : debug_path = self.base_path + "<" + path path = os.path.join(self.current_path, path) elif self.base_path != "" : debug_path = self.base_path + ">" + path.lstrip("/") path = os.path.join(self.base_path, path.lstrip("/")) path = os.path.normpath(path) #by this point the path should be absolute. if path != self.current_path : print("change from " + self.current_path + " to " + debug_path) ftplib.FTP.cwd(self, path) self.current_path = path else : print("staying put : " + self.current_path) def cd_or_create(self, path) : assert os.path.isabs(path), "absolute path expected (" + path + ")" try: self.cwd(path) except ftplib.error_perm as e: for folder in path.split('/'): if folder == "" : self.cwd("/") continue try: self.cwd(folder) except: print("mkd: (" + path + "):" + folder) self.mkd(folder) self.cwd(folder) def upload_path(self, path, is_file, local_path) : if is_file: (path, filename) = os.path.split(path) self.cd_or_create(path) # Use read-binary to avoid universal newline support from stripping CR characters. f = open(local_path, 'rb') self.storbinary("STOR " + filename, f) f.close() else: self.cd_or_create(path) def delete_path(self, path, is_file) : (path, filename) = os.path.split(path) print("trying to delete: " + path + ", " + filename) self.cwd(path) try: if is_file : self.delete(filename) else: self.delete_path_recursive(filename) except ftplib.error_perm as e: if 'The system cannot find the' in str(e) or '550 File not found' in str(e): # Log, but otherwise ignore path-not-found errors # when deleting, since it's not a disaster if the file # we want to delete is already gone. logging.error(captureErrorMessage(e)) else: raise def delete_path_recursive(self, path): if path == "/" : raise "WARNING: trying to delete '/'!" for node in self.nlst(path) : if node == path : #it's a file. delete and return self.delete(path) return if node != "." and node != ".." : self.delete_path_recursive(os.path.join(path, node)) try: self.rmd(path) except ftplib.error_perm as msg : sys.stderr.write("Error deleting directory " + os.path.join(self.current_path, path) + " : " + str(msg)) # apply the project_directory setting def apply_basedir(path) : #remove any leading stuff (in this case, "trunk/") and decide whether file should be propagated if not path.startswith(project_directory) : return "" return path.replace(project_directory, "", 1) def svn_export_temp(pysvn_client, base_path, rev, path) : # Causes access denied error. Couldn't deduce Windows-perm issue. # It's possible Python isn't garbage-collecting the open file-handle in time for pysvn to re-open it. # Regardless, just generating a simple filename seems to work. #(fd, dest_path) = tempfile.mkstemp() dest_path = tmpName = '%s.tmp' % __file__ exportPath = os.path.join(base_path, path).replace('\\','/') print('exporting %s to %s' % (exportPath, dest_path)) pysvn_client.export( exportPath, dest_path, force=False, revision=rev, native_eol=None, ignore_externals=False, recurse=True, peg_revision=rev ) return dest_path if __name__ == "__main__": logging.info('svnftp.start') try: main() logging.info('svnftp.done') except Exception as e: # capture the location of the error for debug purposes frame = inspect.currentframe() stack_trace = traceback.format_stack(frame) logging.debug(stack_trace[:-1]) print(stack_trace) # end capture error_text = '\nFATAL EXCEPTION!!!\n'+captureErrorMessage(e) subject = "ALERT: SVN2FTP Error" message = """An Error occurred while trying to FTP an SVN commit. repo_path = %(repo_path)s\n local_repos_path = %(local_repos_path)s\n project_directory = %(project_directory)s\n remote_base_directory = %(remote_base_directory)s\n error_text = %(error_text)s """ % globals() email(toAddrs, message, subject) logging.error(e) Notes/Disclaimers: I have basically no python training so I'm learning as I go and spending lots of time reading docs to figure stuff out. The body of get_login is in a try block because I was getting strange errors saying there was an unhandled exception in callback_get_login. Never figured out why, but it seems fine now. Let sleeping dogs lie, right? The username and password for get_login are currently hard-coded (but correct) just to eliminate variables and try to change as little as possible at once. (I added the svnuser and svnpass arguments to the existing argument parsing.) So that's where I am. I can't figure out why on earth it's not printing anything into svn2ftp.out.log. If you're wondering, the output for one of these failed attempts in svn2ftp.debug.log is: 2012-09-06 15:18:12,496 INFO svnftp.start 2012-09-06 15:18:12,496 INFO svnftp.done And it's no different on a successful run. So there's nothing useful being logged. I'm lost. I've gone way down the rabbit hole on this one, and don't know where to go from here. Any ideas?

    Read the article

< Previous Page | 336 337 338 339 340 341 342 343 344 345 346 347  | Next Page >