From Tom_Roche at pobox.com Wed Aug 3 21:52:15 2011 From: Tom_Roche at pobox.com (Tom Roche) Date: Wed, 03 Aug 2011 15:52:15 -0400 Subject: [TriZPUG] managing python versions as well as package versions, or "up-to-speed for the ecosystem" Message-ID: <87fwlie0i8.fsf@pobox.com> summary: I'm having a particular problem involving docutils, python, ubuntu, and sloth; I'd most appreciate help with that problem. However my inability to solve my problem seems due to ignorance as well as sloth, so I'd appreciate pointers to doc regarding python package/ project/version management best practices more generally, and preferably targeting folks who've coded a lot outside python and its ecosystem but not so much inside/with. details: I'm currently running $ lsb_release -ds > Ubuntu 10.04.3 LTS way downlevel I know, and I should be upgrading Sometime Next Week (famous last words :-) but at least it's up-to-date $ uname -rv > 2.6.32-33-generic #71-Ubuntu SMP Wed Jul 20 17:27:30 UTC 2011 except that $ python --version > Python 2.6.5 I'm trying to fix a doc problem on a site that uses yatiblog, but $ pip install yatiblog ... > VersionConflict: (docutils 0.6 (/usr/lib/pymodules/python2.6), Requirement.parse('docutils>=0.7')) which I take to mean that "yatiblog requires docutils>=0.7, and docutils>=0.7 requires python>2.6" (esp since I get the same dopeslap from $ pip install 'docutils>=0.7' ... > VersionConflict: (docutils 0.6 (/usr/lib/pymodules/python2.6), Requirement.parse('docutils>=0.7')) ). Is that correct? If so, then (transitively), to get yatiblog I need to get python>=2.7. So I'm wondering 1 What's the easiest or best way to globally install a more-uplevel python on a given release of ubuntu, without hosing the global/ official/default/downlevel python, much less my debian/ubuntu/aptitude packages and their managers? 2 Instead of doing global installs, I'd like to do (though I haven't needed to, yet) isolated installs. But my impression is that (e.g.) visualenv won't help with python-version problems, only python-package-version problems. Am I missing something? If not, should I use pythonbrew? or similar? 3 Periodically trizpug has threads on "getting started with python," but they tend to be like "learning programming with python." I'd appreciate pointers to doc more about the "python ecosystem" (particularly, ... wait for it ... python-version and python-package-version management :-) targeting folks who've grown up programming elsewhere. FWIW I've scanned through http://trizpug.org/up-to-speed/ and am not seeing anything like that, but ... I Could Be Missing Something, Tom Roche From josh_johnson at unc.edu Wed Aug 3 22:01:02 2011 From: josh_johnson at unc.edu (Josh Johnson) Date: Wed, 03 Aug 2011 16:01:02 -0400 Subject: [TriZPUG] managing python versions as well as package versions, or "up-to-speed for the ecosystem" In-Reply-To: <87fwlie0i8.fsf@pobox.com> References: <87fwlie0i8.fsf@pobox.com> Message-ID: <4E39A8FE.5070509@unc.edu> 1. I haven't had trouble getting multiple pythons to install in Ubuntu. They play pretty well together. The hard part was finding the right apt repository with the right versions in it. 2. Maybe install a specific version of yatiblog (no experience with that package myself), that doesn't have a requirement on whatever is causing the version conflict? 3. Typically, that would entail just a link to http://www.python.org/download/ and a note saying "or, use your system package manager to install". I'd suggest virtualenv in general, but like you mentioned it may not fix your problem. You can try compiling python from source (installing the build-dep for whatever version(s) of python are available for your distro might help smooth out the process) I can say I've never, ever had a version conflict when installing a package :). It might be silly, but maybe try easy_install instead of pip? HTH, JJ On 8/3/2011 3:52 PM, Tom Roche wrote: > summary: I'm having a particular problem involving docutils, python, > ubuntu, and sloth; I'd most appreciate help with that problem. However > my inability to solve my problem seems due to ignorance as well as > sloth, so I'd appreciate pointers to doc regarding python package/ > project/version management best practices more generally, and preferably > targeting folks who've coded a lot outside python and its ecosystem but > not so much inside/with. > > details: > > I'm currently running > > $ lsb_release -ds >> Ubuntu 10.04.3 LTS > way downlevel I know, and I should be upgrading Sometime Next Week > (famous last words :-) but at least it's up-to-date > > $ uname -rv >> 2.6.32-33-generic #71-Ubuntu SMP Wed Jul 20 17:27:30 UTC 2011 > except that > > $ python --version >> Python 2.6.5 > I'm trying to fix a doc problem on a site that uses yatiblog, but > > $ pip install yatiblog > ... >> VersionConflict: (docutils 0.6 (/usr/lib/pymodules/python2.6), Requirement.parse('docutils>=0.7')) > which I take to mean that "yatiblog requires docutils>=0.7, and > docutils>=0.7 requires python>2.6" (esp since I get the same dopeslap > from > > $ pip install 'docutils>=0.7' > ... >> VersionConflict: (docutils 0.6 (/usr/lib/pymodules/python2.6), Requirement.parse('docutils>=0.7')) > ). Is that correct? If so, then (transitively), to get yatiblog I need > to get python>=2.7. So I'm wondering > > 1 What's the easiest or best way to globally install a more-uplevel > python on a given release of ubuntu, without hosing the global/ > official/default/downlevel python, much less my debian/ubuntu/aptitude > packages and their managers? > > 2 Instead of doing global installs, I'd like to do (though I haven't > needed to, yet) isolated installs. But my impression is that (e.g.) > visualenv won't help with python-version problems, only > python-package-version problems. Am I missing something? If not, > should I use pythonbrew? or similar? > > 3 Periodically trizpug has threads on "getting started with python," but > they tend to be like "learning programming with python." I'd > appreciate pointers to doc more about the "python ecosystem" > (particularly, ... wait for it ... python-version and > python-package-version management :-) targeting folks who've grown up > programming elsewhere. FWIW I've scanned through > > http://trizpug.org/up-to-speed/ > > and am not seeing anything like that, but ... > > I Could Be Missing Something, Tom Roche > _______________________________________________ > TriZPUG mailing list > TriZPUG at python.org > http://mail.python.org/mailman/listinfo/trizpug > http://trizpug.org is the Triangle Zope and Python Users Group -- Josh Johnson Applications Analyst Translational Pathology Laboratory Lineberger Comprehensive Cancer Center University of North Carolina at Chapel Hill From cbc at unc.edu Wed Aug 3 23:02:50 2011 From: cbc at unc.edu (Chris Calloway) Date: Wed, 03 Aug 2011 17:02:50 -0400 Subject: [TriZPUG] managing python versions as well as package versions, or "up-to-speed for the ecosystem" In-Reply-To: <87fwlie0i8.fsf@pobox.com> References: <87fwlie0i8.fsf@pobox.com> Message-ID: <4E39B77A.30405@unc.edu> On 8/3/2011 3:52 PM, Tom Roche wrote: > summary: I'm having a particular problem involving docutils, python, > ubuntu, and sloth; I'd most appreciate help with that problem. However > my inability to solve my problem seems due to ignorance as well as > sloth, so I'd appreciate pointers to doc regarding python package/ > project/version management best practices more generally, and preferably > targeting folks who've coded a lot outside python and its ecosystem but > not so much inside/with. > > details: > > I'm currently running > > $ lsb_release -ds >> Ubuntu 10.04.3 LTS > > way downlevel I know, and I should be upgrading Sometime Next Week > (famous last words :-) but at least it's up-to-date > > $ uname -rv >> 2.6.32-33-generic #71-Ubuntu SMP Wed Jul 20 17:27:30 UTC 2011 > > except that > > $ python --version >> Python 2.6.5 > > I'm trying to fix a doc problem on a site that uses yatiblog, but > > $ pip install yatiblog > ... >> VersionConflict: (docutils 0.6 (/usr/lib/pymodules/python2.6), Requirement.parse('docutils>=0.7')) > > which I take to mean that "yatiblog requires docutils>=0.7, and > docutils>=0.7 requires python>2.6" (esp since I get the same dopeslap > from > > $ pip install 'docutils>=0.7' > ... >> VersionConflict: (docutils 0.6 (/usr/lib/pymodules/python2.6), Requirement.parse('docutils>=0.7')) > > ). Is that correct? If so, then (transitively), to get yatiblog I need > to get python>=2.7. So I'm wondering Nothing I'm seeing here suggests that you need python>=2.7 in order to get docutils>=0.7. There's couple of things that may be going on here. One is Ubuntu. Your docutils may have been installed by Ubuntu package management rather than pythonic package management. This always leads to a big mess. I wish Ubuntu would just get out of the Python package management business and leave that to Python. Another is the pip install command. Type "pip help install" or visit http://www.pip-installer.org/en/latest/index.html to read about the -U option for upgrading a package: "pip also performs an automatic uninstall of an old version of a package before upgrading to a newer version, so outdated files (and egg-info data) from conflicting versions aren?t left hanging around to cause trouble. The old version of the package is automatically restored if the new version fails to download or install." This suggests to me that pip doesn't want old versions hanging around (unlike easy_install which will let you keep up with multiple versions of a package). This suggest to me that pip wants to upgrade and not just install new versions of a package. Omitting the -U option may be pip's inelegant way of informing you that you are about to stomp on a previously installed version and do you really want to do that, yes or no. I haven't tested this. But you should. > 1 What's the easiest or best way to globally install a more-uplevel > python on a given release of ubuntu, without hosing the global/ > official/default/downlevel python, much less my debian/ubuntu/aptitude > packages and their managers? The Ubuntu repository usually has multiple versions of Python avaialable to install through their packaging system. Another way is to compile your own Python to someplace not in your $PATH using the --prefix option to the configure step. > 2 Instead of doing global installs, I'd like to do (though I haven't > needed to, yet) isolated installs. But my impression is that (e.g.) > visualenv won't help with python-version problems, only > python-package-version problems. Am I missing something? If not, > should I use pythonbrew? or similar? Correct. virtualenv is for managing the python packages of a particular python installation. pythonbrew is for managing python version installs to your $HOME. I haven't used it so cannot advise if it's useful. I like just compiling my own Python. It's what professionals do and it gives you a great amount of control over your Python versions and what you are doing with them. > 3 Periodically trizpug has threads on "getting started with python," but > they tend to be like "learning programming with python." I'd > appreciate pointers to doc more about the "python ecosystem" > (particularly, ... wait for it ... python-version and > python-package-version management :-) targeting folks who've grown up > programming elsewhere. FWIW I've scanned through > > http://trizpug.org/up-to-speed/ > > and am not seeing anything like that, but ... http://www.packtpub.com/expert-python-programming/book This covers virtualenv, which is great for python package management, and buildout, which is great for building Pythons (using Python). It's by the Python package management guru. Python version management is done wholly through your $PATH environment variable. However, the awesome Doug Hellmann puts out this package which manages multiple virtualenvs, which I think is maybe what you want: http://pypi.python.org/pypi/virtualenvwrapper It's a bit meta-meta for me, though. I just make multiple virtualenvs and activate the one I want to work with at any given time. And I compile multiple Pythons, usually in /opt, to make those virtualenvs with whatever Python version I need. You're the second person today I've talked to about managing multiple Python versions. I'm concluding it's a common newbie stumbling block. Actually, the hardest this anyone has to do at PyCamp is install Python. That's telling in and of itself. The number of things that can go wrong is just crazy and completely confusing for newbies. The differences between installing on different OS platforms is itself hard to manage in a classroom environment where there all platforms are represented in multiple versions themselves (different procedures for Windows before and after 2000/Vista, different procedures for OSX before and after Leopand/Snow Leopard, different Python management on every flavor of Linux). It's hard to tutor because it doesn't have much to do with Python itself. And it's a moving target. -- Sincerely, Chris Calloway http://nccoos.org/Members/cbc office: 3313 Venable Hall phone: (919) 599-3530 mail: Campus Box #3300, UNC-CH, Chapel Hill, NC 27599 From Tom_Roche at pobox.com Fri Aug 5 04:39:36 2011 From: Tom_Roche at pobox.com (Tom Roche) Date: Thu, 04 Aug 2011 22:39:36 -0400 Subject: [TriZPUG] managing python versions as well as package versions, or "up-to-speed for the ecosystem" In-Reply-To: <4E39B77A.30405@unc.edu> References: <4E39B77A.30405@unc.edu> <4E39A8FE.5070509@unc.edu> <87fwlie0i8.fsf@pobox.com> Message-ID: <87ei10lgyf.fsf@pobox.com> Tom Roche Wed, 03 Aug 2011 15:52:15 -0400 >>> $ lsb_release -ds >>> > Ubuntu 10.04.3 LTS ... >>> $ uname -rv >>> > 2.6.32-33-generic #71-Ubuntu SMP Wed Jul 20 17:27:30 UTC 2011 ... >>> $ python --version >>> > Python 2.6.5 >>> I'm trying to fix a doc problem on a site that uses yatiblog, but >>> $ pip install yatiblog >>> ... >>> > VersionConflict: (docutils 0.6 (/usr/lib/pymodules/python2.6), Requirement.parse('docutils>=0.7')) >>> which I take to mean that "yatiblog requires docutils>=0.7, and >>> docutils>=0.7 requires python>2.6" (esp since I get the same dopeslap >>> from >>> $ pip install 'docutils>=0.7' >>> ... >>> > VersionConflict: (docutils 0.6 (/usr/lib/pymodules/python2.6), Requirement.parse('docutils>=0.7')) Chris Calloway Wed, 03 Aug 2011 17:02:50 -0400 > Nothing I'm seeing here suggests that you need python>=2.7 in order to > get docutils>=0.7. Hmm: then why the syntax "(docutils 0.6 (/usr/lib/pymodules/python2.6)"? But the implication that that version of docutils is somehow bound to that version of python is obviously wrong, since (I'll post separately--it gets long) I was able to upgrade the docutils. >>> 1 What's the easiest or best way to globally install a more-uplevel >>> python on a given release of ubuntu, without hosing the global/ >>> official/default/downlevel python, much less my debian/ubuntu/ >>> aptitude packages and their managers? > The Ubuntu repository usually has multiple versions of Python > [available] to install through their packaging system. That's good to know. Unfortunately web-searching for package name like 'python' gets http://packages.ubuntu.com/search?suite=all&arch=any&searchon=names&keywords=python > Found 100 matching packages. > Your keyword was too generic, for optimizing reasons some results might have been suppressed. > Please consider using a longer keyword or more keywords. > Another way is to compile your own Python to someplace not in your $PATH > using the --prefix option to the configure step. Josh Johnson Wed, 03 Aug 2011 16:01:02 -0400 >> I haven't had trouble getting multiple pythons to install in Ubuntu. >> They play pretty well together. The hard part was finding the right >> apt repository with the right versions in it. What was the right apt repository and the right versions? >> You can try compiling python from source (installing the build-dep >> for whatever version(s) of python are available for your distro might >> help smooth out the process) > I like just compiling my own Python. It's what professionals do and it > gives you a great amount of control over your Python versions and what > you are doing with them. Sure, but I suspect that, at my current level of expertise, I need to be protected from that level of control :-) >>> 2 Instead of doing global installs, I'd like to do (though I haven't >>> needed to, yet) isolated installs. But my impression is that >>> (e.g.) visualenv won't help with python-version problems, only >>> python-package-version problems. Am I missing something? If not, >>> should I use pythonbrew? or similar? > Correct. virtualenv is for managing the python packages of a > particular python installation. [...] pythonbrew is for managing > python version installs to your $HOME. OK. >>> 3 Periodically trizpug has threads on "getting started with python," >>> but they tend to be like "learning programming with python." I'd >>> appreciate pointers to doc more about the "python ecosystem" >>> (particularly, ... wait for it ... python-version and >>> python-package-version management :-) targeting folks who've grown >>> up programming elsewhere. FWIW I've scanned through >>> http://trizpug.org/up-to-speed/ >>> and am not seeing anything like that, > http://www.packtpub.com/expert-python-programming/book > This covers virtualenv, which is great for python package management, > and buildout, which is great for building Pythons (using Python). It's > by the Python package management guru. "gotta get me one of those" > Python version management is done wholly through your $PATH > environment variable. However, the awesome Doug Hellmann puts out this > package which manages multiple virtualenvs, which I think is maybe > what you want: > http://pypi.python.org/pypi/virtualenvwrapper > It's a bit meta-meta for me, I've seen that, though I didn't mention it because it didn't seem relevant to this problem: it's basically just a fa?ade for visualenv, no? That being said, I definitely intend to use virtualenvwrapper just for the ease of use. > I just make multiple virtualenvs and activate the one I want to work > with at any given time. And I compile multiple Pythons, usually in > /opt, That I understand, but ... > to make those virtualenvs with whatever Python version I need. ... this I don't. How do you bind a given virtualenv to a given python version? (Or python-like thing: I've got a project I want to bind to pypy, since that way it runs in time/6.) > You're the second person today I've talked to about managing multiple > Python versions. That either means I'm not a Darwin Award candidate, or that there's 2 of us :-) Your assistance is appreciated, Tom Roche From Tom_Roche at pobox.com Fri Aug 5 04:57:09 2011 From: Tom_Roche at pobox.com (Tom Roche) Date: Thu, 04 Aug 2011 22:57:09 -0400 Subject: [TriZPUG] fix for package upgrade problem References: <87ei10lgyf.fsf@pobox.com> <4E39B77A.30405@unc.edu> <4E39A8FE.5070509@unc.edu> <87fwlie0i8.fsf@pobox.com> Message-ID: <87bow4lg56.fsf@pobox.com> Tom Roche Wed, 03 Aug 2011 15:52:15 -0400 >>> $ lsb_release -ds >>> > Ubuntu 10.04.3 LTS ... >>> $ uname -rv >>> > 2.6.32-33-generic #71-Ubuntu SMP Wed Jul 20 17:27:30 UTC 2011 ... >>> $ python --version >>> > Python 2.6.5 >>> I'm trying to fix a doc problem on a site that uses yatiblog, but >>> $ pip install yatiblog >>> ... >>> > VersionConflict: (docutils 0.6 (/usr/lib/pymodules/python2.6), Requirement.parse('docutils>=0.7')) >>> which I take to mean that "yatiblog requires docutils>=0.7, and >>> docutils>=0.7 requires python>2.6" (esp since I get the same dopeslap >>> from >>> $ pip install 'docutils>=0.7' >>> ... >>> > VersionConflict: (docutils 0.6 (/usr/lib/pymodules/python2.6), Requirement.parse('docutils>=0.7')) Chris Calloway Wed, 03 Aug 2011 17:02:50 -0400 > Nothing I'm seeing here suggests that you need python>=2.7 in order to > get docutils>=0.7. > Type "pip help install" or visit > http://www.pip-installer.org/en/latest/index.html to read about > the -U option for upgrading a package That was part of the fix, but ... > I wish Ubuntu would just get out of the Python package management > business and leave that to Python. ... yatiblog wanted an ubuntu package, and It Would Be Nice if they could play together. Anyway, the fix: $ sudo pip install -U docutils ... > Successfully installed docutils $ sudo pip install -U yatiblog ... surprisingly long, but I resisted scrollblindness long enough to notice > libyaml is not found or a compiler error: forcing --without-libyaml whereupon I hit C-c, then $ sudo aptitude install libyaml ... > Couldn't find package "libyaml". However, the following packages contain "libyaml" in their name: > libyaml-tiny-perl libyaml-appconfig-perl libyaml-syck-perl libyaml-dev libyaml-ruby libyaml-0-1 libyaml-0-2 libyaml-ruby1.8 libyaml-libyaml-perl libyaml-perl "libyaml-libyaml-perl" ?-) I guessed $ sudo aptitude install libyaml-dev > The following NEW packages will be installed: libyaml-0-2{a} libyaml-dev ... $ sudo pip install -U yatiblog ... > Successfully installed yatiblog $ which yatiblog > /usr/local/bin/yatiblog Onward to usage, thanks for the pointer, Tom Roche From jim at ibang.com Fri Aug 5 05:24:21 2011 From: jim at ibang.com (Jim Allman) Date: Thu, 4 Aug 2011 23:24:21 -0400 Subject: [TriZPUG] managing python versions as well as package versions, or "up-to-speed for the ecosystem" In-Reply-To: <87ei10lgyf.fsf@pobox.com> References: <4E39B77A.30405@unc.edu> <4E39A8FE.5070509@unc.edu> <87fwlie0i8.fsf@pobox.com> <87ei10lgyf.fsf@pobox.com> Message-ID: <26985C8D-33FF-4101-9B45-443BFBA674A6@ibang.com> On Aug 4, 2011, at 10:39 PM, Tom Roche wrote: >> I just make multiple virtualenvs and activate the one I want to work >> with at any given time. And I compile multiple Pythons, usually in >> /opt, > > That I understand, but ... > >> to make those virtualenvs with whatever Python version I need. > > ... this I don't. How do you bind a given virtualenv to a given python version? > (Or python-like thing: I've got a project I want to bind to pypy, since that way it runs in time/6.) When you create a new virtualenv, you can specify which Python interpreter will be used in this environment. For example, to create a new virtualenv using a custom build of Python 2.4, you might do this: $ virtualenv --python=/opt/Python-2.4/bin/python --no-site-packages ~/py24env Note also the --no-site-packages option, which makes sure that you don't inherit any of this python's existing modules (from its site-packages directory). More examples here, showing how to confirm different versions of Python in each env: http://www.logilab.org/blogentry/22498#work-with-different-versions-of-python The docs are kinda sparse, but you can see the basics by simply typing this on the command line (after installing virtualenv, of course): $ virtualenv Once you find an option that looks interesting, it's easy to google for others' recipes and experiences with virtualenv. Oh, and here's some good news on support for PyPy in recent versions of virtualenv: http://www.virtualenv.org/en/latest/index.html#pypy-support Hope this helps! =jimA= From cbc at unc.edu Fri Aug 5 15:55:06 2011 From: cbc at unc.edu (Chris Calloway) Date: Fri, 05 Aug 2011 09:55:06 -0400 Subject: [TriZPUG] managing python versions as well as package versions, or "up-to-speed for the ecosystem" In-Reply-To: <26985C8D-33FF-4101-9B45-443BFBA674A6@ibang.com> References: <4E39B77A.30405@unc.edu> <4E39A8FE.5070509@unc.edu> <87fwlie0i8.fsf@pobox.com> <87ei10lgyf.fsf@pobox.com> <26985C8D-33FF-4101-9B45-443BFBA674A6@ibang.com> Message-ID: <4E3BF63A.4000202@unc.edu> On 8/4/2011 11:24 PM, Jim Allman wrote: > When you create a new virtualenv, you can specify which Python interpreter will be used in this environment. For example, to create a new virtualenv using a custom build of Python 2.4, you might do this: > $ virtualenv --python=/opt/Python-2.4/bin/python --no-site-packages ~/py24env I just have a virtualenv executable installed in each Python. > Oh, and here's some good news on support for PyPy in recent versions of virtualenv: > http://www.virtualenv.org/en/latest/index.html#pypy-support Pypi is the bomb. We should have a TriZPUG meeting just about Pypi. -- Sincerely, Chris Calloway http://nccoos.org/Members/cbc office: 3313 Venable Hall phone: (919) 599-3530 mail: Campus Box #3300, UNC-CH, Chapel Hill, NC 27599 From mhrivnak at hrivnak.org Fri Aug 5 19:05:06 2011 From: mhrivnak at hrivnak.org (Michael Hrivnak) Date: Fri, 5 Aug 2011 13:05:06 -0400 Subject: [TriZPUG] Have a Job Message-ID: Linux / Open Source shop has two positions available. We are a small operation, but we have more work in the pipeline than we can keep up with. Pay is competitive. Please reply off list if you might be interested in either position. 1) Python Developer The right candidate can demonstrate excellent software development practices as a member of a small team. Please be familiar with principles of object oriented design, use of design patterns, and write good code. If you have solid experience with some other language like Java, C++, or even C#, and you really want to be part of a project using python then you might be a good fit, but we would obviously prefer strong python experience. Mainly we are looking for someone who is wicked smart and reasonably experienced. This project uses django to manage data for a Flex UI. We integrate with several of Amazon's cloud services, so experience there would be a plus. We heavily prioritize documentation and testing of code. 2) Flex Developer The right candidate can demonstrate excellent software development practices as a member of a small team. Please be familiar with principles of object oriented design, use of design patterns, and write good code. Have enough flex experience to be comfortable right away working on a well-established flex project. Our flex project uses PureMVC and adheres strictly to an MVP design pattern. The product is deployed in production, and our current projects require us to add a number of new features. From josh_johnson at unc.edu Wed Aug 10 18:40:32 2011 From: josh_johnson at unc.edu (Josh Johnson) Date: Wed, 10 Aug 2011 12:40:32 -0400 Subject: [TriZPUG] iterate over a list in bunches Message-ID: <4E42B480.6030201@unc.edu> Hi all, I had a use case where I had to iterate over a linear list of objects in bunches, for display in a tabular layout[1], this is how I implemented it, I'm interested in feedback on the approach: import math class testiter(object): _row = 0 _rowcount = 4 _data = range(1, 34) @property def rows(self): return int(math.ceil(len(self._data)/float(self._rowcount))) def __iter__(self): """ Returns one row of fields at a time """ start = self._row*self._rowcount end = start+self._rowcount row = self._data[start:end] self._row += 1 for field in row: yield field obj = testiter() print "data: %s, count: %s, rows: %s" % (obj._data, len(obj._data), obj.rows) for x in range(0, obj.rows+1): for field in obj: print "%s " % (field,), print "\n---------------------------" Running this through python (tested with 2.6.6), yields this output (the dump of the data in the first line truncated a bit for brevity): data: [1, ... 33], count: 33, rows: 9 1 2 3 4 --------------------------- 5 6 7 8 --------------------------- 9 10 11 12 --------------------------- 13 14 15 16 --------------------------- 17 18 19 20 --------------------------- 21 22 23 24 --------------------------- 25 26 27 28 --------------------------- 29 30 31 32 --------------------------- 33 --------------------------- --------------------------- Critiques? Thanks, JJ [1] For the record, it was displaying a list of dyanically-generated form fields from a Django ModelForm in a template. I was able to just call {% for field in form %} multiple times for each row. -- Josh Johnson Applications Analyst Translational Pathology Laboratory Lineberger Comprehensive Cancer Center University of North Carolina at Chapel Hill From josh_johnson at unc.edu Wed Aug 10 21:16:00 2011 From: josh_johnson at unc.edu (Josh Johnson) Date: Wed, 10 Aug 2011 15:16:00 -0400 Subject: [TriZPUG] iterate over a list in bunches In-Reply-To: <4E42B480.6030201@unc.edu> References: <4E42B480.6030201@unc.edu> Message-ID: <4E42D8F0.9090900@unc.edu> Some updates (thanks bac!): import math class testiter(object): _row = 0 _rowcount = 4 _data = range(1, 34) _counter = 0 @property def rows(self): return int(math.ceil(len(self._data)/float(self._rowcount))) @property def row(self): return self._counter/self._rowcount def __iter__(self): """ Returns one row of fields at a time """ start = self._counter end = start+self._rowcount row = self._data[start:end] self._counter = end for field in row: yield field if len(row) < self._rowcount: raise StopIteration obj = testiter() print "data: %s, count: %s, rows: %s" % (obj._data, len(obj._data), obj.rows) for x in range(0, obj.rows+1): print "Row: #%s" % (obj.row) for field in obj: print "%s " % (field,), print "\n---------------------------" Now it keeps track of the row number with some math, and avoids unnecessarily performing multiplication when addition will suffice. I've also added a StopIteration exception when we're on the last row, I'm not sure if that's actually doing anything useful. JJ On 8/10/2011 12:40 PM, Josh Johnson wrote: > Hi all, > I had a use case where I had to iterate over a linear list of objects > in bunches, for display in a tabular layout[1], this is how I > implemented it, I'm interested in feedback on the approach: > > import math > > class testiter(object): > _row = 0 > _rowcount = 4 > _data = range(1, 34) > > @property > def rows(self): > return int(math.ceil(len(self._data)/float(self._rowcount))) > > def __iter__(self): > """ > Returns one row of fields at a time > """ > start = self._row*self._rowcount > end = start+self._rowcount > > row = self._data[start:end] > > self._row += 1 > for field in row: > yield field > > > > obj = testiter() > print "data: %s, count: %s, rows: %s" % (obj._data, len(obj._data), > obj.rows) > for x in range(0, obj.rows+1): > for field in obj: > print "%s " % (field,), > print "\n---------------------------" > > Running this through python (tested with 2.6.6), yields this output > (the dump of the data in the first line truncated a bit for brevity): > > data: [1, ... 33], count: 33, rows: 9 > 1 2 3 4 > --------------------------- > 5 6 7 8 > --------------------------- > 9 10 11 12 > --------------------------- > 13 14 15 16 > --------------------------- > 17 18 19 20 > --------------------------- > 21 22 23 24 > --------------------------- > 25 26 27 28 > --------------------------- > 29 30 31 32 > --------------------------- > 33 > --------------------------- > > --------------------------- > > Critiques? > > Thanks, > JJ > > [1] For the record, it was displaying a list of dyanically-generated > form fields from a Django ModelForm in a template. I was able to just > call {% for field in form %} multiple times for each row. > -- Josh Johnson Applications Analyst Translational Pathology Laboratory Lineberger Comprehensive Cancer Center University of North Carolina at Chapel Hill (919) 923-0894 From chris at archimedeanco.com Wed Aug 10 21:37:32 2011 From: chris at archimedeanco.com (Chris Rossi) Date: Wed, 10 Aug 2011 15:37:32 -0400 Subject: [TriZPUG] iterate over a list in bunches In-Reply-To: <4E42D8F0.9090900@unc.edu> References: <4E42B480.6030201@unc.edu> <4E42D8F0.9090900@unc.edu> Message-ID: import math class RowIter(object): def __init__(self, items, rowlen): self.items = items self.rowlen = rowlen def __len__(self): return int(math.ceil(float(len(self.items)) / self.rowlen)) def __iter__(self): items = self.items rowlen = self.rowlen i, n = 0, len(items) while i < n: yield items[i:i + rowlen] i += rowlen l = range(0, 15) rows = RowIter(l, 4) assert len(rows) == 4 grid = list(rows) expected = [ [0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11], [12, 13, 14]] assert grid == expected On Wed, Aug 10, 2011 at 3:16 PM, Josh Johnson wrote: > Some updates (thanks bac!): > > > import math > > class testiter(object): > _row = 0 > _rowcount = 4 > _data = range(1, 34) > _counter = 0 > > > @property > def rows(self): > return int(math.ceil(len(self._data)/**float(self._rowcount))) > > @property > def row(self): > return self._counter/self._rowcount > > > def __iter__(self): > """ > Returns one row of fields at a time > """ > start = self._counter > > end = start+self._rowcount > > row = self._data[start:end] > > self._counter = end > > > for field in row: > yield field > > if len(row) < self._rowcount: > raise StopIteration > > > > obj = testiter() > print "data: %s, count: %s, rows: %s" % (obj._data, len(obj._data), > obj.rows) > for x in range(0, obj.rows+1): > print "Row: #%s" % (obj.row) > > for field in obj: > print "%s " % (field,), > print "\n---------------------------**" > > Now it keeps track of the row number with some math, and avoids > unnecessarily performing multiplication when addition will suffice. I've > also added a StopIteration exception when we're on the last row, I'm not > sure if that's actually doing anything useful. > > JJ > > > On 8/10/2011 12:40 PM, Josh Johnson wrote: > >> Hi all, >> I had a use case where I had to iterate over a linear list of objects in >> bunches, for display in a tabular layout[1], this is how I implemented it, >> I'm interested in feedback on the approach: >> >> import math >> >> class testiter(object): >> _row = 0 >> _rowcount = 4 >> _data = range(1, 34) >> >> @property >> def rows(self): >> return int(math.ceil(len(self._data)/**float(self._rowcount))) >> >> def __iter__(self): >> """ >> Returns one row of fields at a time >> """ >> start = self._row*self._rowcount >> end = start+self._rowcount >> >> row = self._data[start:end] >> >> self._row += 1 >> for field in row: >> yield field >> >> >> >> obj = testiter() >> print "data: %s, count: %s, rows: %s" % (obj._data, len(obj._data), >> obj.rows) >> for x in range(0, obj.rows+1): >> for field in obj: >> print "%s " % (field,), >> print "\n---------------------------**" >> >> Running this through python (tested with 2.6.6), yields this output (the >> dump of the data in the first line truncated a bit for brevity): >> >> data: [1, ... 33], count: 33, rows: 9 >> 1 2 3 4 >> --------------------------- >> 5 6 7 8 >> --------------------------- >> 9 10 11 12 >> --------------------------- >> 13 14 15 16 >> --------------------------- >> 17 18 19 20 >> --------------------------- >> 21 22 23 24 >> --------------------------- >> 25 26 27 28 >> --------------------------- >> 29 30 31 32 >> --------------------------- >> 33 >> --------------------------- >> >> --------------------------- >> >> Critiques? >> >> Thanks, >> JJ >> >> [1] For the record, it was displaying a list of dyanically-generated form >> fields from a Django ModelForm in a template. I was able to just call {% for >> field in form %} multiple times for each row. >> >> > > -- > Josh Johnson > Applications Analyst > Translational Pathology Laboratory > Lineberger Comprehensive Cancer Center > University of North Carolina at Chapel Hill > (919) 923-0894 > > ______________________________**_________________ > TriZPUG mailing list > TriZPUG at python.org > http://mail.python.org/**mailman/listinfo/trizpug > http://trizpug.org is the Triangle Zope and Python Users Group > -------------- next part -------------- An HTML attachment was scrubbed... URL: From KGrandis at lexile.com Thu Aug 11 14:51:51 2011 From: KGrandis at lexile.com (Kurt Grandis) Date: Thu, 11 Aug 2011 08:51:51 -0400 Subject: [TriZPUG] iterate over a list in bunches In-Reply-To: <4E42D8F0.9090900@unc.edu> References: <4E42B480.6030201@unc.edu> <4E42D8F0.9090900@unc.edu> Message-ID: <871DFE2C356B274A97F38A74C2426DFE0A1D9821FE@MM1> If you prefer the itertools route you can make use of a pattern described on the itertools doc page called 'grouper'. import itertools class GroupIter(object): def __init__(self, data, group_size=4, fill=None): self._data = data self._group_size = group_size self._fill = fill def __iter__(self): #checkout itertools for related functions groups = itertools.izip_longest(fillvalue=self._fill, *[iter(self._data)]*self._group_size) for group in groups: # if you prefer truncation to fill, uncomment next line group = [g for g in group if g is not None] yield group data = range(1, 34) obj = GroupIter(data, 4) print "data: %s, count: %s" % (data, len(data)) for ix,row in enumerate(obj): print "Row: #%d" % (ix) for field in row: print "%s " % (field,), print "\n---------------------------" -----Original Message----- From: trizpug-bounces+kgrandis=lexile.com at python.org [mailto:trizpug-bounces+kgrandis=lexile.com at python.org] On Behalf Of Josh Johnson Sent: Wednesday, August 10, 2011 3:16 PM To: trizpug at python.org Subject: Re: [TriZPUG] iterate over a list in bunches Some updates (thanks bac!): import math class testiter(object): _row = 0 _rowcount = 4 _data = range(1, 34) _counter = 0 @property def rows(self): return int(math.ceil(len(self._data)/float(self._rowcount))) @property def row(self): return self._counter/self._rowcount def __iter__(self): """ Returns one row of fields at a time """ start = self._counter end = start+self._rowcount row = self._data[start:end] self._counter = end for field in row: yield field if len(row) < self._rowcount: raise StopIteration obj = testiter() print "data: %s, count: %s, rows: %s" % (obj._data, len(obj._data), obj.rows) for x in range(0, obj.rows+1): print "Row: #%s" % (obj.row) for field in obj: print "%s " % (field,), print "\n---------------------------" Now it keeps track of the row number with some math, and avoids unnecessarily performing multiplication when addition will suffice. I've also added a StopIteration exception when we're on the last row, I'm not sure if that's actually doing anything useful. JJ On 8/10/2011 12:40 PM, Josh Johnson wrote: > Hi all, > I had a use case where I had to iterate over a linear list of objects > in bunches, for display in a tabular layout[1], this is how I > implemented it, I'm interested in feedback on the approach: > > import math > > class testiter(object): > _row = 0 > _rowcount = 4 > _data = range(1, 34) > > @property > def rows(self): > return int(math.ceil(len(self._data)/float(self._rowcount))) > > def __iter__(self): > """ > Returns one row of fields at a time > """ > start = self._row*self._rowcount > end = start+self._rowcount > > row = self._data[start:end] > > self._row += 1 > for field in row: > yield field > > > > obj = testiter() > print "data: %s, count: %s, rows: %s" % (obj._data, len(obj._data), > obj.rows) > for x in range(0, obj.rows+1): > for field in obj: > print "%s " % (field,), > print "\n---------------------------" > > Running this through python (tested with 2.6.6), yields this output > (the dump of the data in the first line truncated a bit for brevity): > > data: [1, ... 33], count: 33, rows: 9 > 1 2 3 4 > --------------------------- > 5 6 7 8 > --------------------------- > 9 10 11 12 > --------------------------- > 13 14 15 16 > --------------------------- > 17 18 19 20 > --------------------------- > 21 22 23 24 > --------------------------- > 25 26 27 28 > --------------------------- > 29 30 31 32 > --------------------------- > 33 > --------------------------- > > --------------------------- > > Critiques? > > Thanks, > JJ > > [1] For the record, it was displaying a list of dyanically-generated > form fields from a Django ModelForm in a template. I was able to just > call {% for field in form %} multiple times for each row. > -- Josh Johnson Applications Analyst Translational Pathology Laboratory Lineberger Comprehensive Cancer Center University of North Carolina at Chapel Hill (919) 923-0894 _______________________________________________ TriZPUG mailing list TriZPUG at python.org http://mail.python.org/mailman/listinfo/trizpug http://trizpug.org is the Triangle Zope and Python Users Group From nathan.alexander.rice at gmail.com Thu Aug 11 22:40:51 2011 From: nathan.alexander.rice at gmail.com (Nathan Rice) Date: Thu, 11 Aug 2011 16:40:51 -0400 Subject: [TriZPUG] iterate over a list in bunches In-Reply-To: <871DFE2C356B274A97F38A74C2426DFE0A1D9821FE@MM1> References: <4E42B480.6030201@unc.edu> <4E42D8F0.9090900@unc.edu> <871DFE2C356B274A97F38A74C2426DFE0A1D9821FE@MM1> Message-ID: I'm also partial to izip_longest. I think I'd probably go with something along the lines of: def __iter__(self): columns = (item[start::row_size] for start in range(row_size)) for group in itertools.izip_longest(*columns, fill=whatever): yield group seems conceptually simpler to me. Then I'd print the table with: print your_pre_text for row in yourobject: print "\t".join(row) print your_post_text From chris at archimedeanco.com Thu Aug 11 22:44:27 2011 From: chris at archimedeanco.com (Chris Rossi) Date: Thu, 11 Aug 2011 16:44:27 -0400 Subject: [TriZPUG] iterate over a list in bunches In-Reply-To: References: <4E42B480.6030201@unc.edu> <4E42D8F0.9090900@unc.edu> <871DFE2C356B274A97F38A74C2426DFE0A1D9821FE@MM1> Message-ID: On Thu, Aug 11, 2011 at 4:40 PM, Nathan Rice < nathan.alexander.rice at gmail.com> wrote: > I'm also partial to izip_longest. I think I'd probably go with > something along the lines of: > > def __iter__(self): > columns = (item[start::row_size] for start in range(row_size)) > for group in itertools.izip_longest(*columns, fill=whatever): > yield group > > Nice. Chris -------------- next part -------------- An HTML attachment was scrubbed... URL: From philip at semanchuk.com Mon Aug 15 22:55:42 2011 From: philip at semanchuk.com (Philip Semanchuk) Date: Mon, 15 Aug 2011 16:55:42 -0400 Subject: [TriZPUG] A few more links I forgot In-Reply-To: <3C58D056-A941-4FED-9E98-1C9A28F087A0@ibang.com> References: <4E32B113.6030502@unc.edu> <2E476606-6197-4657-A731-AC18529AB3BD@ibang.com> <3C58D056-A941-4FED-9E98-1C9A28F087A0@ibang.com> Message-ID: On Jul 29, 2011, at 2:54 PM, Jim Allman wrote: > Mark Biggers mentioned bpython, which piqued my interest. Its a sort of "enhanced shell" for Python, similar to IPython but with a different feature set: > http://bpython-interpreter.org/ > Favorite features are its syntax highlighting, autocomplete and parameter suggestion, and pastebin integration. I finally got around to checking out bpython. It looks nice. Thanks for the link. Cheers Philip From brian.curtin at gmail.com Tue Aug 16 00:53:28 2011 From: brian.curtin at gmail.com (Brian Curtin) Date: Mon, 15 Aug 2011 17:53:28 -0500 Subject: [TriZPUG] Looking for PyCon 2012 Speakers Message-ID: With PyCon 2012 efforts off to a great start, we?re looking for you, the people of the Python community, to show us what you?ve got. Our call for proposals (http://us.pycon.org/2012/cfp/) just went out and we want to include you in our 2012 conference schedule, taking place March 7-15, 2012 in Santa Clara, CA. The call covers tutorial, talk, and poster applications, and we?re expecting to blow the previous record of 250 applications out of the water. Put together your best 3-hour class proposals for one of the tutorial sessions on March 7 and 8. Submit your best talks on any range of topics for the conference days, March 9 through 11. The poster session will be in full swing on Sunday with a series of 4'x4' posters and an open floor for attendees to interact with presenters. Get your applications in early - we want to help you put together the best proposal possible, so we?re going to work with submitters as applications come in. See more details and submit your talks here: http://us.pycon.org/2012/speaker/ We?re also looking for feedback from your past PyCon experiences along with what you?re looking for in the future, by way of our 2012 Guidance Survey at https://www.surveymonkey.com/s/pycon2012_launch_survey. The attendees make the conference, so every response we get from you makes a difference in putting together the best conference we can. If you or your company is interested in sponsoring PyCon, we?d love to hear from you. Join our growing list with Diamond sponsors Google and Dropbox, and Platinum sponsors Microsoft, Nasuni, SurveyMonkey, and Gondor by Eldarion. CCP Games, Linode, Walt Disney Animation Studios, Canonical, DotCloud, Loggly, Revolution Systems, ZeOmega, bitly, ActiveState, JetBrains, Snoball, Caktus Consulting Group, and Disqus make up our Gold sponsors. The Silver sponsors so far are 10gen, GitHub, Olark, Wingware, net-ng, Imaginary Landscape, BigDoor, Fwix, AG Interactive, Bitbucket, The Open Bastion, Accense Technology, Cox Media Group, and myYearbook. See our sponsorship page at http://us.pycon.org/2012/sponsors/ for more details. The PyCon Organizers - http://us.pycon.org/2012 Jesse Noller - Chairman - jnoller at python.org Brian Curtin - Publicity Coordinator - brian at python.org From robert_kraus at unc.edu Tue Aug 16 15:32:32 2011 From: robert_kraus at unc.edu (Kraus, Robert E) Date: Tue, 16 Aug 2011 13:32:32 +0000 Subject: [TriZPUG] Urgent Help needed-Plone server very sluggish Message-ID: <44DEEF00D7986B42A33EC5E5EB35C1C210274426@ITS-MSXMBS4M.ad.unc.edu> Plone gurus, My supervisor, John Garcia, suggested that I reach out to the local Plone community for some help with a very perplexing problem which has us stumped. [My email address changed a while back and consequently I do not have access to the Trizpug list. Feel free to post this if you wish.] Server: Windows 2003 Plone 3.x server, with Apache in front with a Squid caching proxy in front of Plone. Two Zope instances are started, one is for anonymous users and the other for authenticated users (heavy usage by authenticated users was making the site sluggish for anonymous users). The Squid cache proxy (and the Plone buildout for the most part) was set up by SixFeetUp since we were unfamiliar with the Squid configuration (with regards to Plone, at least). Our problem is this: since June, this Plone instance, which is only running one site, has continued to get slower in its page request response times. Recently it has virtually ground to a halt at times. Plone reboots, zopedb compaction, even server reboots help some but only temporarily. The site's manager, Jonathan, reported this the past several evenings evenings: * We started experiencing sluggishness in June. * Erratic extreme sluggishness has been going on for several weeks. * Most days recently, on arrival page edits times have been about 1-2 minute plus (typically 5-10 seconds on a good day). * Several persons have reported page load times were very slow throughout the day. * Server stopped responding completely about 10 minutes before this initial email. This group/site has some heavy use with associates across the country starting in the next day or so and we are very concerned that the site will not be fully functional for them. There are occasional days, or periods within a day, in which it appears better, but soon relapses. There does not appear to be any relationship between visible site activity and the server sluggishness. Whatever is causing this appears to be an internal Plone issue. I say this because while network traffic is minimal, the task manager performance window shows cpu usage continually spiking, often times up to 85-95%, and under processes, directly related to this spiking is the python process (sometimes multiple instances) which is the heavy user/culprit. Quite frankly, I have never seen this kind of continuously high level up and down activity on a web server before. Any ideas as to what could be causing this? Crawlers? Spammers? Any thoughts as to what settings we might check, processes to turn off (even temporarily)? Might any one of you be able to take a look at our setup and see what is going on? Recommend someone who could?? We have $$ as needed if we can get some fast help. A member of our team not particularly familiar with Plone, but who knows servers well offered this: "My first guess is that we are looking at a search engine or internal indexing issue. The fact that they have huge slowdowns at some predictable times makes me think "web crawler". The site is dynamic, so a poorly optimized web crawler could cause major headaches. The other possibility is that their internal indexing is problematic. From the little I've seen of the site configuration previously it looks to me like they try to index just about everything by default with the idea they could turn some off if there are issues." Any suggestions and/or help is greatly appreciated. Thanks. Robert Kraus, Web Services FPG Child Development Institute University of North Carolina at Chapel Hill Campus Box 8185 Chapel Hill, NC 27599-8040 robert_kraus at unc.edu phone: 919.962.7310 -------------- next part -------------- An HTML attachment was scrubbed... URL: From philip at semanchuk.com Wed Aug 17 16:04:46 2011 From: philip at semanchuk.com (Philip Semanchuk) Date: Wed, 17 Aug 2011 10:04:46 -0400 Subject: [TriZPUG] Urgent Help needed-Plone server very sluggish In-Reply-To: <44DEEF00D7986B42A33EC5E5EB35C1C210274426@ITS-MSXMBS4M.ad.unc.edu> References: <44DEEF00D7986B42A33EC5E5EB35C1C210274426@ITS-MSXMBS4M.ad.unc.edu> Message-ID: On Aug 16, 2011, at 9:32 AM, Kraus, Robert E wrote: > Any ideas as to what could be causing this? Crawlers? Spammers? Any thoughts as to what settings we might check, processes to turn off (even temporarily)? Web crawlers will show up in the Web server log. See if your traffic has spiked at the times when you experience slowdowns. Good luck Philip From jim at ibang.com Wed Aug 17 16:29:56 2011 From: jim at ibang.com (Jim Allman) Date: Wed, 17 Aug 2011 10:29:56 -0400 Subject: [TriZPUG] Urgent Help needed-Plone server very sluggish In-Reply-To: <44DEEF00D7986B42A33EC5E5EB35C1C210274426@ITS-MSXMBS4M.ad.unc.edu> References: <44DEEF00D7986B42A33EC5E5EB35C1C210274426@ITS-MSXMBS4M.ad.unc.edu> Message-ID: <9339E509-B154-4727-803B-8A7D3FDC3A35@ibang.com> Robert, Are the slowdowns happening in the site that serves anonymous visitors, or logged-in users? If the former, it seems like your caching proxy *should* be intercepting these requests. Are you using cache-fu to cut down on internal processing of templates etc? (Your "normal" page load times sound pretty slow to me.) =jimA= From paul at godley.org Wed Aug 17 16:55:46 2011 From: paul at godley.org (Paul Godley) Date: Wed, 17 Aug 2011 10:55:46 -0400 Subject: [TriZPUG] Urgent Help needed-Plone server very sluggish In-Reply-To: <44DEEF00D7986B42A33EC5E5EB35C1C210274426@ITS-MSXMBS4M.ad.unc.edu> References: <44DEEF00D7986B42A33EC5E5EB35C1C210274426@ITS-MSXMBS4M.ad.unc.edu> Message-ID: Confirm you're in production mode and not development mode? On Aug 16, 2011, at 9:32 AM, "Kraus, Robert E" wrote: > Plone gurus, > > My supervisor, John Garcia, suggested that I reach out to the local Plone community for some help with a very perplexing problem which has us stumped. > > [My email address changed a while back and consequently I do not have access to the Trizpug list. Feel free to post this if you wish.] > > > > Server: Windows 2003 Plone 3.x server, with Apache in front with a Squid caching proxy in front of Plone. Two Zope instances are started, one is for anonymous users and the other for authenticated users (heavy usage by authenticated users was making the site sluggish for anonymous users). The Squid cache proxy (and the Plone buildout for the most part) was set up by SixFeetUp since we were unfamiliar with the Squid configuration (with regards to Plone, at least). > > > > Our problem is this: since June, this Plone instance, which is only running one site, has continued to get slower in its page request response times. Recently it has virtually ground to a halt at times. Plone reboots, zopedb compaction, even server reboots help some but only temporarily. The site?s manager, Jonathan, reported this the past several evenings evenings: > > > > We started experiencing sluggishness in June. > Erratic extreme sluggishness has been going on for several weeks. > Most days recently, on arrival page edits times have been about 1-2 minute plus (typically 5-10 seconds on a good day). > Several persons have reported page load times were very slow throughout the day. > Server stopped responding completely about 10 minutes before this initial email. > > > This group/site has some heavy use with associates across the country starting in the next day or so and we are very concerned that the site will not be fully functional for them. There are occasional days, or periods within a day, in which it appears better, but soon relapses. There does not appear to be any relationship between visible site activity and the server sluggishness. Whatever is causing this appears to be an internal Plone issue. I say this because while network traffic is minimal, the task manager performance window shows cpu usage continually spiking, often times up to 85-95%, and under processes, directly related to this spiking is the python process (sometimes multiple instances) which is the heavy user/culprit. Quite frankly, I have never seen this kind of continuously high level up and down activity on a web server before. > > > > Any ideas as to what could be causing this? Crawlers? Spammers? Any thoughts as to what settings we might check, processes to turn off (even temporarily)? Might any one of you be able to take a look at our setup and see what is going on? Recommend someone who could?? We have $$ as needed if we can get some fast help. > > > > A member of our team not particularly familiar with Plone, but who knows servers well offered this: > > ?My first guess is that we are looking at a search engine or internal indexing issue. > > > > The fact that they have huge slowdowns at some predictable times makes me think "web crawler". The site is dynamic, so a poorly optimized web crawler could cause major headaches. > > > > The other possibility is that their internal indexing is problematic. From the little I've seen of the site configuration previously it looks to me like they try to index just about everything by default with the idea they could turn some off if there are issues.? > > > > > > Any suggestions and/or help is greatly appreciated. Thanks. > > > > > > Robert Kraus, Web Services > > FPG Child Development Institute > > University of North Carolina at Chapel Hill > > Campus Box 8185 > > Chapel Hill, NC 27599-8040 > > > > robert_kraus at unc.edu > > phone: 919.962.7310 > > > > _______________________________________________ > TriZPUG mailing list > TriZPUG at python.org > http://mail.python.org/mailman/listinfo/trizpug > http://trizpug.org is the Triangle Zope and Python Users Group -------------- next part -------------- An HTML attachment was scrubbed... URL: From robert_kraus at unc.edu Wed Aug 17 17:24:20 2011 From: robert_kraus at unc.edu (Kraus, Robert E) Date: Wed, 17 Aug 2011 15:24:20 +0000 Subject: [TriZPUG] Plone server very sluggish-update Message-ID: <44DEEF00D7986B42A33EC5E5EB35C1C21027524B@ITS-MSXMBS4M.ad.unc.edu> Thanks for all the suggestions that have been posted. Some new ideas to look into. Yes, this is the production server. Our dev server simply does not get enough traffic to see whether changes have made any difference. And no, no custom code that I am aware of at least. What we done/have had done in the last day or two: Blocked robots by user agent via the squid caching proxy (robots that are known to be sloppy, don?t follow the rules, or otherwise are not important) Added a 3rd zope instance Made sure that all security patches have been applied to all instances Increased zodb_cache to 30,000 from default Ran the new buildout late yesterday afternoon, and after stopping and restarting all zope instances, we noticed a pretty major improvement. However, we will see when the load is really going to get heavy tomorrow. Still had a problem with major sluggishness pretty consistently between 6:00-6:30pm on a daily basis, and yesterday was no exception. Am going to dig deeper into the logs to see if I can figure out what is going on at this time. Should we be compacting the zope db and restarting our zope instances on a daily basis. We sometimes notice a short lived improvement after doing this, but no reason to do more work than is actually beneficial. Also, we will begin a more regular powering off of our Plone VM. Still open to more suggestions, if you have any. Thanks again. Robert Kraus, Web Services FPG Child Development Institute University of North Carolina at Chapel Hill Campus Box 8185 Chapel Hill, NC 27599-8040 robert_kraus at unc.edu phone: 919.962.7310 From: trizpug-bounces+robert_kraus=unc.edu at python.org [mailto:trizpug-bounces+robert_kraus=unc.edu at python.org] On Behalf Of Paul Godley Sent: Wednesday, August 17, 2011 10:56 AM To: Triangle (North Carolina) Zope and Python Users Group Subject: Re: [TriZPUG] Urgent Help needed-Plone server very sluggish Confirm you're in production mode and not development mode? On Aug 16, 2011, at 9:32 AM, "Kraus, Robert E" > wrote: Plone gurus, My supervisor, John Garcia, suggested that I reach out to the local Plone community for some help with a very perplexing problem which has us stumped. [My email address changed a while back and consequently I do not have access to the Trizpug list. Feel free to post this if you wish.] Server: Windows 2003 Plone 3.x server, with Apache in front with a Squid caching proxy in front of Plone. Two Zope instances are started, one is for anonymous users and the other for authenticated users (heavy usage by authenticated users was making the site sluggish for anonymous users). The Squid cache proxy (and the Plone buildout for the most part) was set up by SixFeetUp since we were unfamiliar with the Squid configuration (with regards to Plone, at least). Our problem is this: since June, this Plone instance, which is only running one site, has continued to get slower in its page request response times. Recently it has virtually ground to a halt at times. Plone reboots, zopedb compaction, even server reboots help some but only temporarily. The site?s manager, Jonathan, reported this the past several evenings evenings: * We started experiencing sluggishness in June. * Erratic extreme sluggishness has been going on for several weeks. * Most days recently, on arrival page edits times have been about 1-2 minute plus (typically 5-10 seconds on a good day). * Several persons have reported page load times were very slow throughout the day. * Server stopped responding completely about 10 minutes before this initial email. This group/site has some heavy use with associates across the country starting in the next day or so and we are very concerned that the site will not be fully functional for them. There are occasional days, or periods within a day, in which it appears better, but soon relapses. There does not appear to be any relationship between visible site activity and the server sluggishness. Whatever is causing this appears to be an internal Plone issue. I say this because while network traffic is minimal, the task manager performance window shows cpu usage continually spiking, often times up to 85-95%, and under processes, directly related to this spiking is the python process (sometimes multiple instances) which is the heavy user/culprit. Quite frankly, I have never seen this kind of continuously high level up and down activity on a web server before. Any ideas as to what could be causing this? Crawlers? Spammers? Any thoughts as to what settings we might check, processes to turn off (even temporarily)? Might any one of you be able to take a look at our setup and see what is going on? Recommend someone who could?? We have $$ as needed if we can get some fast help. A member of our team not particularly familiar with Plone, but who knows servers well offered this: ?My first guess is that we are looking at a search engine or internal indexing issue. The fact that they have huge slowdowns at some predictable times makes me think "web crawler". The site is dynamic, so a poorly optimized web crawler could cause major headaches. The other possibility is that their internal indexing is problematic. From the little I've seen of the site configuration previously it looks to me like they try to index just about everything by default with the idea they could turn some off if there are issues.? Any suggestions and/or help is greatly appreciated. Thanks. Robert Kraus, Web Services FPG Child Development Institute University of North Carolina at Chapel Hill Campus Box 8185 Chapel Hill, NC 27599-8040 robert_kraus at unc.edu phone: 919.962.7310 _______________________________________________ TriZPUG mailing list TriZPUG at python.org http://mail.python.org/mailman/listinfo/trizpug http://trizpug.org is the Triangle Zope and Python Users Group -------------- next part -------------- An HTML attachment was scrubbed... URL: From jcd at sdf.lonestar.org Wed Aug 17 17:49:39 2011 From: jcd at sdf.lonestar.org (J. Cliff Dyer) Date: Wed, 17 Aug 2011 11:49:39 -0400 Subject: [TriZPUG] Plone server very sluggish-update In-Reply-To: <44DEEF00D7986B42A33EC5E5EB35C1C21027524B@ITS-MSXMBS4M.ad.unc.edu> References: <44DEEF00D7986B42A33EC5E5EB35C1C21027524B@ITS-MSXMBS4M.ad.unc.edu> Message-ID: <1313596179.3032.1.camel@jcdyer-laptop> I think Paul was asking if your code is in development mode on the production server. Dev mode or debug mode causes a lot of extra stuff to happen to track what's going wrong, and is never the right thing to do in production. I don't use plone, so I'm not sure how it's set, but make sure your code is in production mode. On Wed, 2011-08-17 at 15:24 +0000, Kraus, Robert E wrote: > Thanks for all the suggestions that have been posted. Some new ideas to look into. > Yes, this is the production server. Our dev server simply does not get enough traffic to see whether changes have made any difference. > And no, no custom code that I am aware of at least. > > What we done/have had done in the last day or two: > Blocked robots by user agent via the squid caching proxy (robots that are known to be sloppy, don?t follow the rules, or otherwise are not important) > Added a 3rd zope instance > Made sure that all security patches have been applied to all instances > Increased zodb_cache to 30,000 from default > > Ran the new buildout late yesterday afternoon, and after stopping and restarting all zope instances, we noticed a pretty major improvement. However, we will see when the load is really going to get heavy tomorrow. > > Still had a problem with major sluggishness pretty consistently between 6:00-6:30pm on a daily basis, and yesterday was no exception. Am going to dig deeper into the logs to see if I can figure out what is going on at this time. > > Should we be compacting the zope db and restarting our zope instances on a daily basis. We sometimes notice a short lived improvement after doing this, but no reason to do more work than is actually beneficial. Also, we will begin a more regular powering off of our Plone VM. > > Still open to more suggestions, if you have any. Thanks again. > > Robert Kraus, Web Services > FPG Child Development Institute > University of North Carolina at Chapel Hill > Campus Box 8185 > Chapel Hill, NC 27599-8040 > > robert_kraus at unc.edu > phone: 919.962.7310 > > From: trizpug-bounces+robert_kraus=unc.edu at python.org [mailto:trizpug-bounces+robert_kraus=unc.edu at python.org] On Behalf Of Paul Godley > Sent: Wednesday, August 17, 2011 10:56 AM > To: Triangle (North Carolina) Zope and Python Users Group > Subject: Re: [TriZPUG] Urgent Help needed-Plone server very sluggish > > Confirm you're in production mode and not development mode? > > On Aug 16, 2011, at 9:32 AM, "Kraus, Robert E" > wrote: > Plone gurus, > My supervisor, John Garcia, suggested that I reach out to the local Plone community for some help with a very perplexing problem which has us stumped. > [My email address changed a while back and consequently I do not have access to the Trizpug list. Feel free to post this if you wish.] > > Server: Windows 2003 Plone 3.x server, with Apache in front with a Squid caching proxy in front of Plone. Two Zope instances are started, one is for anonymous users and the other for authenticated users (heavy usage by authenticated users was making the site sluggish for anonymous users). The Squid cache proxy (and the Plone buildout for the most part) was set up by SixFeetUp since we were unfamiliar with the Squid configuration (with regards to Plone, at least). > > Our problem is this: since June, this Plone instance, which is only running one site, has continued to get slower in its page request response times. Recently it has virtually ground to a halt at times. Plone reboots, zopedb compaction, even server reboots help some but only temporarily. The site?s manager, Jonathan, reported this the past several evenings evenings: > > > * We started experiencing sluggishness in June. > * Erratic extreme sluggishness has been going on for several weeks. > * Most days recently, on arrival page edits times have been about 1-2 minute plus (typically 5-10 seconds on a good day). > * Several persons have reported page load times were very slow throughout the day. > * Server stopped responding completely about 10 minutes before this initial email. > > This group/site has some heavy use with associates across the country starting in the next day or so and we are very concerned that the site will not be fully functional for them. There are occasional days, or periods within a day, in which it appears better, but soon relapses. There does not appear to be any relationship between visible site activity and the server sluggishness. Whatever is causing this appears to be an internal Plone issue. I say this because while network traffic is minimal, the task manager performance window shows cpu usage continually spiking, often times up to 85-95%, and under processes, directly related to this spiking is the python process (sometimes multiple instances) which is the heavy user/culprit. Quite frankly, I have never seen this kind of continuously high level up and down activity on a web server before. > > Any ideas as to what could be causing this? Crawlers? Spammers? Any thoughts as to what settings we might check, processes to turn off (even temporarily)? Might any one of you be able to take a look at our setup and see what is going on? Recommend someone who could?? We have $$ as needed if we can get some fast help. > > A member of our team not particularly familiar with Plone, but who knows servers well offered this: > ?My first guess is that we are looking at a search engine or internal indexing issue. > > The fact that they have huge slowdowns at some predictable times makes me think "web crawler". The site is dynamic, so a poorly optimized web crawler could cause major headaches. > > The other possibility is that their internal indexing is problematic. From the little I've seen of the site configuration previously it looks to me like they try to index just about everything by default with the idea they could turn some off if there are issues.? > > > Any suggestions and/or help is greatly appreciated. Thanks. > > > Robert Kraus, Web Services > FPG Child Development Institute > University of North Carolina at Chapel Hill > Campus Box 8185 > Chapel Hill, NC 27599-8040 > > robert_kraus at unc.edu > phone: 919.962.7310 > > _______________________________________________ > TriZPUG mailing list > TriZPUG at python.org > http://mail.python.org/mailman/listinfo/trizpug > http://trizpug.org is the Triangle Zope and Python Users Group > _______________________________________________ > TriZPUG mailing list > TriZPUG at python.org > http://mail.python.org/mailman/listinfo/trizpug > http://trizpug.org is the Triangle Zope and Python Users Group From nathan.alexander.rice at gmail.com Wed Aug 17 18:19:39 2011 From: nathan.alexander.rice at gmail.com (Nathan Rice) Date: Wed, 17 Aug 2011 12:19:39 -0400 Subject: [TriZPUG] Plone server very sluggish-update In-Reply-To: <44DEEF00D7986B42A33EC5E5EB35C1C21027524B@ITS-MSXMBS4M.ad.unc.edu> References: <44DEEF00D7986B42A33EC5E5EB35C1C21027524B@ITS-MSXMBS4M.ad.unc.edu> Message-ID: When in doubt, profile it out. Don't know how you would go about profiling in plone; normally I'd just use cProfiler. http://plone.org/documentation/kb/profiling-plone-and-tuning-add-on-product-performance has some info which might or might not be outdated. Once you have profiler output in gprof format, run it through http://code.google.com/p/jrfonseca/wiki/Gprof2Dot and take a look at call graphs for your server. With that call graph you should be able to nail down where the slowdown is occurring, and you can work on fixing it rather than shooting in the dark. Nathan From tobias at caktusgroup.com Tue Aug 23 22:56:00 2011 From: tobias at caktusgroup.com (Tobias McNulty) Date: Tue, 23 Aug 2011 16:56:00 -0400 Subject: [TriZPUG] fabulaws Message-ID: Hey all, The Caktus folks just saw it, but I've got a short lightening talk on FabulAWS [1] -- a little tool I built for doing automated server provisioning using a nifty declarative syntax in Python -- that I'd be happy to share on Thursday. It'll probably take up about 15-20 minutes or so. Let me know if I missed something and someone else has already called shotgun! Cheers, Tobias [1] https://github.com/caktus/fabulaws -- Tobias McNulty, Managing Member Caktus Consulting Group, LLC http://www.caktusgroup.com -------------- next part -------------- An HTML attachment was scrubbed... URL: From cbc at unc.edu Tue Aug 23 23:10:07 2011 From: cbc at unc.edu (Chris Calloway) Date: Tue, 23 Aug 2011 17:10:07 -0400 Subject: [TriZPUG] fabulaws In-Reply-To: References: Message-ID: <4E54172F.2010002@unc.edu> On 8/23/2011 4:56 PM, Tobias McNulty wrote: > The Caktus folks just saw it, but I've got a short lightening talk on > FabulAWS [1] -- a little tool I built for doing automated server > provisioning using a nifty declarative syntax in Python -- that I'd be > happy to share on Thursday. It'll probably take up about 15-20 minutes > or so. > > Let me know if I missed something and someone else has already called > shotgun! That's great. Only problem is meeting place for Thursday. We had such a great meeting last month that the very next day I emailed our contact at RedHat, telling him that I wanted to get an early start on a meeting announcement for August because I would be gone for most of the month. I didn't hear back. And having just gotten back from my most of the month long trip, I haven't done any further follow up. So if we have a meeting, someone needs to call shotgun on making it happen. Suggestion: would you want to do a mini-meeting at Caktus? -- Sincerely, Chris Calloway http://nccoos.org/Members/cbc office: 3313 Venable Hall phone: (919) 599-3530 mail: Campus Box #3300, UNC-CH, Chapel Hill, NC 27599 From chris at archimedeanco.com Tue Aug 23 23:15:30 2011 From: chris at archimedeanco.com (Chris Rossi) Date: Tue, 23 Aug 2011 17:15:30 -0400 Subject: [TriZPUG] fabulaws In-Reply-To: <4E54172F.2010002@unc.edu> References: <4E54172F.2010002@unc.edu> Message-ID: On Tue, Aug 23, 2011 at 5:10 PM, Chris Calloway wrote: > On 8/23/2011 4:56 PM, Tobias McNulty wrote: > >> The Caktus folks just saw it, but I've got a short lightening talk on >> FabulAWS [1] -- a little tool I built for doing automated server >> provisioning using a nifty declarative syntax in Python -- that I'd be >> happy to share on Thursday. It'll probably take up about 15-20 minutes >> or so. >> >> Let me know if I missed something and someone else has already called >> shotgun! >> > > That's great. > > Only problem is meeting place for Thursday. > > We had such a great meeting last month that the very next day I emailed our > contact at RedHat, telling him that I wanted to get an early start on a > meeting announcement for August because I would be gone for most of the > month. I didn't hear back. And having just gotten back from my most of the > month long trip, I haven't done any further follow up. > > So if we have a meeting, someone needs to call shotgun on making it happen. > > Suggestion: would you want to do a mini-meeting at Caktus? > > Assuming the venue gets sorted out, I'll be interested in a ride. I've sprained my foot and am forced to wear a boot which prevents me from driving. If the venue and the ride both come together, though, I can probably get a lightning talk out of a little lib I've developed called limone. Chris -------------- next part -------------- An HTML attachment was scrubbed... URL: From cbc at unc.edu Tue Aug 23 23:19:56 2011 From: cbc at unc.edu (Chris Calloway) Date: Tue, 23 Aug 2011 17:19:56 -0400 Subject: [TriZPUG] fabulaws In-Reply-To: References: <4E54172F.2010002@unc.edu> Message-ID: <4E54197C.9060203@unc.edu> > Assuming the venue gets sorted out, I'll be interested in a ride. I've > sprained my foot and am forced to wear a boot which prevents me from > driving. If the venue and the ride both come together, though, I can > probably get a lightning talk out of a little lib I've developed called > limone. I'd be glad to come get you if a venue comes about. -- Sincerely, Chris Calloway http://nccoos.org/Members/cbc office: 3313 Venable Hall phone: (919) 599-3530 mail: Campus Box #3300, UNC-CH, Chapel Hill, NC 27599 From tobias at caktusgroup.com Tue Aug 23 23:37:17 2011 From: tobias at caktusgroup.com (Tobias McNulty) Date: Tue, 23 Aug 2011 17:37:17 -0400 Subject: [TriZPUG] fabulaws In-Reply-To: <4E54172F.2010002@unc.edu> References: <4E54172F.2010002@unc.edu> Message-ID: On Tue, Aug 23, 2011 at 5:10 PM, Chris Calloway wrote: > > Suggestion: would you want to do a mini-meeting at Caktus? > Sure, we can throw something together here. We've got 18 chairs and a new suite that can fit that number comfortably enough. If you think you might be #19, bring a folding chair. ;-) The office is at 209 Lloyd St, just past Carrboro Coworking (the 3 light green office buildings). We're on the top floor of building 300 and we'll meet in Suite 360. There's a map on the Caktus site: http://www.caktusgroup.com/contact/ Cheers, Tobias -- Tobias McNulty, Managing Member Caktus Consulting Group, LLC http://www.caktusgroup.com -------------- next part -------------- An HTML attachment was scrubbed... URL: From chris at archimedeanco.com Tue Aug 23 23:44:29 2011 From: chris at archimedeanco.com (Chris Rossi) Date: Tue, 23 Aug 2011 17:44:29 -0400 Subject: [TriZPUG] fabulaws In-Reply-To: References: <4E54172F.2010002@unc.edu> Message-ID: On Tue, Aug 23, 2011 at 5:37 PM, Tobias McNulty wrote: > On Tue, Aug 23, 2011 at 5:10 PM, Chris Calloway wrote: > >> Suggestion: would you want to do a mini-meeting at Caktus? >> > > Sure, we can throw something together here. We've got 18 chairs and a new > suite that can fit that number comfortably enough. If you think you might > be #19, bring a folding chair. ;-) > > The office is at 209 Lloyd St, just past Carrboro Coworking (the 3 light > green office buildings). We're on the top floor of building 300 and we'll > meet in Suite 360. There's a map on the Caktus site: > > http://www.caktusgroup.com/contact/ > Cool, thanks Tobias! FWIW, my house is way of the way for Chris Calloway considering he lives in Carrboro and the meeting is in Carrboro and I'm in SW Durham. If anyone is coming from Durham or Raleigh who could give me a ride that might make a little more sense. Thanks! Chris -------------- next part -------------- An HTML attachment was scrubbed... URL: From dragonstrider at gmail.com Wed Aug 24 16:17:55 2011 From: dragonstrider at gmail.com (Joseph S. Tate) Date: Wed, 24 Aug 2011 10:17:55 -0400 Subject: [TriZPUG] fabulaws In-Reply-To: References: <4E54172F.2010002@unc.edu> Message-ID: Chris, I could give you a ride. I'm in SE Durham. On Tue, Aug 23, 2011 at 5:44 PM, Chris Rossi wrote: > > > On Tue, Aug 23, 2011 at 5:37 PM, Tobias McNulty wrote: > >> On Tue, Aug 23, 2011 at 5:10 PM, Chris Calloway wrote: >> >>> Suggestion: would you want to do a mini-meeting at Caktus? >>> >> >> Sure, we can throw something together here. We've got 18 chairs and a new >> suite that can fit that number comfortably enough. If you think you might >> be #19, bring a folding chair. ;-) >> >> The office is at 209 Lloyd St, just past Carrboro Coworking (the 3 light >> green office buildings). We're on the top floor of building 300 and we'll >> meet in Suite 360. There's a map on the Caktus site: >> >> http://www.caktusgroup.com/contact/ >> > > Cool, thanks Tobias! FWIW, my house is way of the way for Chris Calloway > considering he lives in Carrboro and the meeting is in Carrboro and I'm in > SW Durham. If anyone is coming from Durham or Raleigh who could give me a > ride that might make a little more sense. > > Thanks! > Chris > > > _______________________________________________ > TriZPUG mailing list > TriZPUG at python.org > http://mail.python.org/mailman/listinfo/trizpug > http://trizpug.org is the Triangle Zope and Python Users Group > -- Joseph Tate Personal e-mail: jtate AT dragonstrider DOT com Web: http://www.dragonstrider.com -------------- next part -------------- An HTML attachment was scrubbed... URL: From akdom2001 at gmail.com Wed Aug 24 16:27:55 2011 From: akdom2001 at gmail.com (Alex) Date: Wed, 24 Aug 2011 10:27:55 -0400 Subject: [TriZPUG] fabulaws In-Reply-To: References: <4E54172F.2010002@unc.edu> Message-ID: Chris, as a backup for future Raleigh meetings (since this meeting appears to be resolved) I can reserve rooms at NC State. So just give me a heads up if/when this is necessary. ~Alex Kesling On Aug 24, 2011 10:18 AM, "Joseph S. Tate" wrote: > > Chris, I could give you a ride. I'm in SE Durham. > > On Tue, Aug 23, 2011 at 5:44 PM, Chris Rossi wrote: >> >> >> >> On Tue, Aug 23, 2011 at 5:37 PM, Tobias McNulty wrote: >>> >>> On Tue, Aug 23, 2011 at 5:10 PM, Chris Calloway wrote: >>>> >>>> Suggestion: would you want to do a mini-meeting at Caktus? >>> >>> >>> Sure, we can throw something together here. We've got 18 chairs and a new suite that can fit that number comfortably enough. If you think you might be #19, bring a folding chair. ;-) >>> >>> The office is at 209 Lloyd St, just past Carrboro Coworking (the 3 light green office buildings). We're on the top floor of building 300 and we'll meet in Suite 360. There's a map on the Caktus site: >>> >>> http://www.caktusgroup.com/contact/ >> >> >> Cool, thanks Tobias! FWIW, my house is way of the way for Chris Calloway considering he lives in Carrboro and the meeting is in Carrboro and I'm in SW Durham. If anyone is coming from Durham or Raleigh who could give me a ride that might make a little more sense. >> >> Thanks! >> Chris >> >> >> _______________________________________________ >> TriZPUG mailing list >> TriZPUG at python.org >> http://mail.python.org/mailman/listinfo/trizpug >> http://trizpug.org is the Triangle Zope and Python Users Group > > > > > -- > Joseph Tate > Personal e-mail: jtate AT dragonstrider DOT com > Web: http://www.dragonstrider.com > > _______________________________________________ > TriZPUG mailing list > TriZPUG at python.org > http://mail.python.org/mailman/listinfo/trizpug > http://trizpug.org is the Triangle Zope and Python Users Group -------------- next part -------------- An HTML attachment was scrubbed... URL: From cbc at unc.edu Wed Aug 24 18:19:55 2011 From: cbc at unc.edu (Chris Calloway) Date: Wed, 24 Aug 2011 12:19:55 -0400 Subject: [TriZPUG] fabulaws In-Reply-To: References: <4E54172F.2010002@unc.edu> Message-ID: <4E5524AB.7030006@unc.edu> On 8/23/2011 5:37 PM, Tobias McNulty wrote: > Sure, we can throw something together here. We've got 18 chairs and a > new suite that can fit that number comfortably enough. If you think you > might be #19, bring a folding chair. ;-) > > The office is at 209 Lloyd St, just past Carrboro Coworking (the 3 light > green office buildings). We're on the top floor of building 300 and > we'll meet in Suite 360. There's a map on the Caktus site: > > http://www.caktusgroup.com/contact/ Excellent! When should we be there on Thursday evening? -- Sincerely, Chris Calloway http://nccoos.org/Members/cbc office: 3313 Venable Hall phone: (919) 599-3530 mail: Campus Box #3300, UNC-CH, Chapel Hill, NC 27599 From tobias at caktusgroup.com Wed Aug 24 18:32:46 2011 From: tobias at caktusgroup.com (Tobias McNulty) Date: Wed, 24 Aug 2011 12:32:46 -0400 Subject: [TriZPUG] fabulaws In-Reply-To: <4E5524AB.7030006@unc.edu> References: <4E54172F.2010002@unc.edu> <4E5524AB.7030006@unc.edu> Message-ID: On Wed, Aug 24, 2011 at 12:19 PM, Chris Calloway wrote: > On 8/23/2011 5:37 PM, Tobias McNulty wrote: > >> Sure, we can throw something together here. We've got 18 chairs and a >> new suite that can fit that number comfortably enough. If you think you >> might be #19, bring a folding chair. ;-) >> >> The office is at 209 Lloyd St, just past Carrboro Coworking (the 3 light >> green office buildings). We're on the top floor of building 300 and >> we'll meet in Suite 360. There's a map on the Caktus site: >> >> http://www.caktusgroup.com/**contact/ >> > > Excellent! When should we be there on Thursday evening? 7pm works. We'll have someone here at 6:45pm to open the doors. We've found a few extra chairs in the meantime, so I think we'll be good on seating (assuming we're no more than ~24). Looking forward to seeing everyone! Cheers, Tobias -- Tobias McNulty, Managing Member Caktus Consulting Group, LLC http://www.caktusgroup.com -------------- next part -------------- An HTML attachment was scrubbed... URL: From cbc at unc.edu Wed Aug 24 21:24:15 2011 From: cbc at unc.edu (Chris Calloway) Date: Wed, 24 Aug 2011 15:24:15 -0400 Subject: [TriZPUG] TriZPUG August 2011 Meeting: FabulAWS and Limone Message-ID: <4E554FDF.1080609@unc.edu> Meeting tomorrow (Thursday): http://trizpug.org/Members/tobias/aug-11-mtg Tobias McNulty will present FabulAWS, a tool automated server provisioning using a declarative syntax in Python. Chris Rossi, will present Limone, a library for generating content types from a Colander schema. There will most likely be an after meeting at a nearby location with food and beverage. When: 7pm, Thursday, August 25 Where: Caktus Consulting Group, 209 Lloyd St, Building 300, Suite 360, Carrboro http://www.caktusgroup.com/contact/ -- Sincerely, Chris Calloway http://nccoos.org/Members/cbc office: 3313 Venable Hall phone: (919) 599-3530 mail: Campus Box #3300, UNC-CH, Chapel Hill, NC 27599 From chris at archimedeanco.com Thu Aug 25 14:09:29 2011 From: chris at archimedeanco.com (Chris Rossi) Date: Thu, 25 Aug 2011 08:09:29 -0400 Subject: [TriZPUG] fabulaws In-Reply-To: References: <4E54172F.2010002@unc.edu> Message-ID: Hi Joe. Another Joe offered me a ride offlist, so I'm covered. If you're staying for the after-meeting, I might hit you up for a ride home, though. See everybody tonight! Thanks, Chris On Wed, Aug 24, 2011 at 10:17 AM, Joseph S. Tate wrote: > Chris, I could give you a ride.? I'm in SE Durham. > > On Tue, Aug 23, 2011 at 5:44 PM, Chris Rossi > wrote: >> >> >> On Tue, Aug 23, 2011 at 5:37 PM, Tobias McNulty >> wrote: >>> >>> On Tue, Aug 23, 2011 at 5:10 PM, Chris Calloway wrote: >>>> >>>> Suggestion: would you want to do a mini-meeting at Caktus? >>> >>> Sure, we can throw something together here. ?We've got 18 chairs and a >>> new suite that can fit that number comfortably enough. ?If you think you >>> might be #19, bring a folding chair. ?;-) >>> The office is at 209 Lloyd St, just past Carrboro Coworking (the 3 light >>> green office buildings). ?We're on the top floor of building 300 and we'll >>> meet in Suite 360. ?There's a map on the Caktus site: >>> http://www.caktusgroup.com/contact/ >> >> Cool, thanks Tobias! ?FWIW, my house is way of the way for Chris Calloway >> considering he lives in Carrboro and the meeting is in Carrboro and I'm in >> SW Durham. ?If anyone is coming from Durham or Raleigh who could give me a >> ride that might make a little more sense. >> Thanks! >> Chris >> >> _______________________________________________ >> TriZPUG mailing list >> TriZPUG at python.org >> http://mail.python.org/mailman/listinfo/trizpug >> http://trizpug.org is the Triangle Zope and Python Users Group > > > > -- > Joseph Tate > Personal e-mail: jtate AT dragonstrider DOT com > Web: http://www.dragonstrider.com > > _______________________________________________ > TriZPUG mailing list > TriZPUG at python.org > http://mail.python.org/mailman/listinfo/trizpug > http://trizpug.org is the Triangle Zope and Python Users Group > From tobias at caktusgroup.com Thu Aug 25 19:58:20 2011 From: tobias at caktusgroup.com (Tobias McNulty) Date: Thu, 25 Aug 2011 13:58:20 -0400 Subject: [TriZPUG] TriZPUG August 2011 Meeting: FabulAWS and Limone In-Reply-To: <4E554FDF.1080609@unc.edu> References: <4E554FDF.1080609@unc.edu> Message-ID: Hi all, I'm deeply remiss for not stating this in the original offer of the Caktus Group office, but we are on the second floor of the building here and there's only a flight of stairs (no elevator) to get up here. Do you still want to hold the meeting here? Should we try to find another space? I am okay either way but I want to make sure everyone's included. Best, Tobias On Wed, Aug 24, 2011 at 3:24 PM, Chris Calloway wrote: > Meeting tomorrow (Thursday): > > http://trizpug.org/Members/**tobias/aug-11-mtg > > Tobias McNulty will present FabulAWS, a tool automated server provisioning > using a declarative syntax in Python. Chris Rossi, will present Limone, a > library for generating content types from a Colander schema. There will most > likely be an after meeting at a nearby location with food and beverage. > > When: 7pm, Thursday, August 25 > > Where: Caktus Consulting Group, 209 Lloyd St, Building 300, Suite 360, > Carrboro > > http://www.caktusgroup.com/**contact/ > > -- > Sincerely, > > Chris Calloway http://nccoos.org/Members/cbc > office: 3313 Venable Hall phone: (919) 599-3530 > mail: Campus Box #3300, UNC-CH, Chapel Hill, NC 27599 > ______________________________**_________________ > TriZPUG mailing list > TriZPUG at python.org > http://mail.python.org/**mailman/listinfo/trizpug > http://trizpug.org is the Triangle Zope and Python Users Group > -- Tobias McNulty, Managing Member Caktus Consulting Group, LLC http://www.caktusgroup.com -------------- next part -------------- An HTML attachment was scrubbed... URL: From chris at archimedeanco.com Thu Aug 25 20:09:21 2011 From: chris at archimedeanco.com (Chris Rossi) Date: Thu, 25 Aug 2011 14:09:21 -0400 Subject: [TriZPUG] TriZPUG August 2011 Meeting: FabulAWS and Limone In-Reply-To: References: <4E554FDF.1080609@unc.edu> Message-ID: If anyone's looking at me, I can get my boot up stairs just fine, albeit slowly. Chris On Thu, Aug 25, 2011 at 1:58 PM, Tobias McNulty wrote: > Hi all, > I'm deeply remiss for not stating this in the original offer of the Caktus > Group office, but we are on the second floor of the building here and > there's only a flight of stairs (no elevator) to get up here. > Do you still want to hold the meeting here? ?Should we try to find another > space? ?I am okay either way but I want to make sure everyone's included. > Best, > Tobias > On Wed, Aug 24, 2011 at 3:24 PM, Chris Calloway wrote: >> >> Meeting tomorrow (Thursday): >> >> http://trizpug.org/Members/tobias/aug-11-mtg >> >> Tobias McNulty will present FabulAWS, a tool automated server provisioning >> using a declarative syntax in Python. Chris Rossi, will present Limone, a >> library for generating content types from a Colander schema. There will most >> likely be an after meeting at a nearby location with food and beverage. >> >> When: 7pm, Thursday, August 25 >> >> Where: Caktus Consulting Group, 209 Lloyd St, Building 300, Suite 360, >> Carrboro >> >> http://www.caktusgroup.com/contact/ >> >> -- >> Sincerely, >> >> Chris Calloway http://nccoos.org/Members/cbc >> office: 3313 Venable Hall ? phone: (919) 599-3530 >> mail: Campus Box #3300, UNC-CH, Chapel Hill, NC 27599 >> _______________________________________________ >> TriZPUG mailing list >> TriZPUG at python.org >> http://mail.python.org/mailman/listinfo/trizpug >> http://trizpug.org is the Triangle Zope and Python Users Group > > > > -- > Tobias McNulty, Managing Member > Caktus Consulting Group, LLC > http://www.caktusgroup.com > > _______________________________________________ > TriZPUG mailing list > TriZPUG at python.org > http://mail.python.org/mailman/listinfo/trizpug > http://trizpug.org is the Triangle Zope and Python Users Group > From jmack at wm7d.net Sun Aug 28 21:55:04 2011 From: jmack at wm7d.net (Joseph Mack NA3T) Date: Sun, 28 Aug 2011 12:55:04 -0700 (PDT) Subject: [TriZPUG] OOP self study seminar group (proposal) Message-ID: As a result of a posting to TriLUG this morning, describing small self educating groups in Philadelphia, and observing the success of presentations at ZPUG, I'm proposing a group for OOP. http://www.austintek.com/oop_group/ Joe -- Joseph Mack NA3T EME(B,D), FM05lw North Carolina jmack (at) wm7d (dot) net - azimuthal equidistant map generator at http://www.wm7d.net/azproj.shtml Homepage http://www.austintek.com/ It's GNU/Linux! From jdriselvato at gmail.com Tue Aug 30 01:59:41 2011 From: jdriselvato at gmail.com (John Riselvato) Date: Mon, 29 Aug 2011 19:59:41 -0400 Subject: [TriZPUG] OOP self study seminar group Message-ID: the triZPUG it self has a good crowd but rather small. Maybe we can come together as one? a minute to learn, a lifetime to master" - mwn3d (RosettaCode irc) -------------- next part -------------- An HTML attachment was scrubbed... URL: