|

|
| 2006-09-04 |
comments disabled |
|
since this blog is mostly on a hiatus anyway, and spammers are annoying the hell out of me, comments are disabled for this one.
|
|
posted at 16:11:12
#
|
|
| |
| 2006-04-22 |
trackbacks disabled |
|
I disabled trackbacks due to trackback spamming. Trackback sucks as a protocol anyway and I don't want to put in any more work in such a sucky protocol.
|
|
This post references topics:
python_community_server
|
|
posted at 14:37:20
#
|
|
| |
| 2005-12-30 |
A few small updates to PyDS |
|
There was a bit of activity on Python Desktop Server recently. Nothing big - only small fixes to make it more compliant with HTML4 strict, as Jutta is working on her blog again.
|
|
This post references topics:
python_desktop_server
|
|
posted at 17:55:28
#
|
| |
|
|
Currently there isn't much action in my own projects - at least not in those that are documented on this blog. The reason is, I am mostly working with Django - and moved over my main blog from it's Wordpress incarnation into something written by me, based on Django.
It's fun to write a CMS again - especially since I did a lot of other stuff in between in that area with several other systems, so it went much faster than last time, where I had to start from zero. That Django is quite a nice framework for CMS stuff helps, of course.
I have a Trac instance for all my Django stuff. So you can try it all out.
|
|
This post references topics:
python
software
|
|
posted at 17:53:20
#
|
|
| |
| 2005-08-17 |
Simpler Lazy Evaluation with Python |
|
If you know before what kind of value your function call will return, you can build a very simple decorator for functions or methods that will turn them into lazy evaluation ones. It goes like this:
class NoneSoFar: pass
NoneSoFar = NoneSoFar()
def lazy(func, resultclass):
class __proxy__:
def __init__(self, args, kw):
self.__func = func
self.__args = args
self.__kw = kw
self.__result = NoneSoFar
for (k, v) in resultclass.__dict__.items():
setattr(self, k, self.__promise__(v))
def __promise__(self, func):
def __wrapper__(*args, **kw):
if self.__result is NoneSoFar:
self.__result = self.__func(*self.__args, **self.__kw)
return func(self.__result, *args, **kw)
return __wrapper__
def __wrapper__(*args, **kw):
return __proxy__(args, kw)
return __wrapper__
To use it is very simple and straight forward:
def anton(a,b):
return a+b
anton = lazy(anton, int)
print type(anton(5,6))
print str(anton(5,6))
This should print the __proxy__ instance in the first line and the real value in the second one. The proxy class automatically defines special methods for every method that's defined on the result type. This works best for builtin types, for more complex types you would have to take precautions not to stomp over important attributes.
And as you can see this won't help with ambigiously defined functions - anton could work with strings, too, but the lazy stuff will only install handlers for int magic methods.
But as the title writes: it's about simpler lazy evaluation, not the full thing 
|
|
This post references topics:
python
|
|
posted at 19:18:56
#
|
|
| |
| 2005-08-12 |
new stuff in TooFPy |
|
There are quite some checkins from today. Two noteable changes:
- TooFPy now can make use of Django, I already wrote about that.
- when started with -l, TooFPy will automatically restart the toolserver when it detects any changes in the used modules (tools, wsgi-scripts and system modules). Quite handy for development setups.
|
|
posted at 17:17:20
#
|
| |
|
|
I just wrote the linked document that describes how and why to combine TooFpy and Django. It's a quite nice combination - on the one hand you get a very powerfull web application framework for TooFPy, on the other hand you get a very powerfull webservice framework for Django. Combined with the builtin high-performance webserver and all that in a pure python package. Quite nice, I think 
|
|
This post references topics:
software
|
|
posted at 17:13:04
#
|
|
| |
| 2005-08-02 |
Trac rules |
|
Yep. It rules. Definitely. So I just set up a trac instance for TooFPy. This is just a first shot at it, so don't expect too much documentation, yet. But I will improve that situation and try to add stuff from this site and from my harddisc (and my brain) to the wiki. At least you now have a decent source browser, a nice timeline for commits and a ticket system to bug me with requests 
|
|
This post references topics:
tools
|
|
posted at 22:24:32
#
|
|
| |
| 2005-07-26 |
|
|
I cooked up a short document on how to get this going. It's over on my main blog.
(and WSGI just plain rocks, this was allmost too easy to do)
Update: I have a second document online that talks about load distribution and provides a much nicer django-fcgi.py script to control your FCGI servers outside of the webserver.
|
|
posted at 12:57:04
#
|
|
| |
| 2005-07-22 |
|
|
Is it just me or do others think that it's rather devalueing to call the open work on the Atom format in the Wiki just dicking around? When we were just dicking around, people like Mark called Atom the best thing since sliced bread and called for implementations and denounced RSS as something ugly and bad. Now that people implemented stuff on the 0.3 version, it's called just dicking around in a wiki. Oh, and the flamewars start again, of course. This is really rather silly. Oh well, I go back to my ugly and bad - but working - formats, thank you very much.
|
|
This post references topics:
syndication
|
|
posted at 18:12:48
#
|
|
| |
| 2005-04-30 |
RBL == Incompetence |
|
Remember my rant about the incompetence of SORBS? They got company: rfc-ignorant.org lists .de as a complete domain, because they don't like the whois-interface of the .de toplevel. No, there is no RFC that demands a working whois for domains - especially it's nothing that's in the mail RFCs. But they don't like it and so they just throw it into their silly list.
Another RBL you can't use. Actually I am quite sure that all RBL providers are either technically incompetent or totally retarded idiots and sociopaths. Didn't ever meet someone who isn't either of one ...
|
|
posted at 16:26:08
#
|
|
| |
| 2005-04-26 |
|
|
This is just the long waiting release of TooFPy - nothing new in the last months, I just hadn't done too much testing with it and so delayed the release until it got a bit more usage.
The main changes of this release are:
- WSGI support (TooFpy can function as a WSGI server)
- Reactor Chain pattern to add hooks into the code in a non-destructive and non-disruptive manner (already used for server start/stop, tuple deleting and for request rewriting)
- better authentication stuff (IP-based, HTTP-based, RSA certificate based, user/group definitions)
- refactoring of the protocol stuff so that it is easily extended for new RPC style protocols
- abstract RPC client that can make use of all new features
- better placement of files under Windows (APPDATA is used)
- refactoring of documentation and WSDL generating code to make use of TooFPy factory tools and so give those more testing (they actually work now!)
|
|
This post references topics:
python
software
xml_rpc
|
|
posted at 10:38:24
#
|
|
| |
| 2005-04-11 |
The Incompetence of SORBS.NET |
|
SORBS.NET runs a RBL service that admins foolish enough can use to block mail from supposedly corrupted or spammy servers. From time to time systems of mine are listed in that list. Usually out of rather stupid reasons: one system was listed because it ran FTP services on some high port numbers and that's defined as being taken over by spammers for the SORBS.NET admins. A recent listing just gives the reason that there are supposedly unknown trojans running on that server - yeah, sure, you don't know what it is but you define it as a trojan. Suckers.
So you think you go and check why your server is listed. You reach their site and check the database - enter the IP and send the form. You get a message that you need to register first. What the fuck? They are listing my machine, I want to know why it is listed and they require a registration?
When you click the register button, you are asked a lot of questions. And several of those are required fields. Of course you only get told this after sending the form with emtpy fields - it would be far too much work for those fools to put visible marks on required fields ...
What are those required fields? eMail, postal address, phone number (that you only get told after you send an otherwise fully filld form - no, they don't include it in their first report on required fields), name, skill level. Why the fuck do they need my address and my phone number? This is just plain silly. Filter-fascists ...
After you jump through their hoops, you can check the database (of course you need to log in after validating their registration - doing onestep-validation-and-registration would be far to complicated for those retards to do). Then you get the lousy excuse they have for listing your server.
Delisting? Yes, you can do that - but don't think it's as easy as pressing a button. No, you must do that from the machine that is listed in the RBL. Yes, of course you need to go through their poor excuse for a web interface for that, too. Yes, it sucks with Lynx - and of course we all run GUI environments on our servers, don't we?
I remember on my first encounter with this system that mail via support forms bounced because of broken mail routing. Yeah, they are a real well on incompetence. Bogon field of galactic magnitude ...
Sorry, but SORBS.NET is the most shitty implementation of a RBL service I ever found. No transparency on what they are listing and why, not easy management of delisting or listing or information gathering and a overall very luserish attitude towards the whole stuff.
So if you are one of those silly mail admins that uses SORBS.NET for mail filtering: don't try to ask me anything. I won't help you and won't jump through any more hoops just to deliver mail to your inbox. It's bad enough we have to cope with spammers and broken software - we don't need the additional burden of totally incompetent idiots running broken RBLs. If I get a bounce on a mail I send because of SORBS.NET filtering, you are out.
|
|
posted at 18:23:28
#
|
|
| |
| 2005-04-07 |
ActiveStorage now has a SQLite backend |
|
Thanks to Yaroslav Samchu, asfPY now has a SQLite backend. He sent in a first take at this backend and I completed the code so that it now runs with only a few glitches left. One glitch is the support for autoincrementing columns - this isn't done in an atomic way due to the fact that the pysqlite interface (at lest the 1.something series) doesn't support atomic update and fetch on those columns and so I had to do a select max() and a combined insert.
The other glitch is support for data types. SQLite has only it's flexible data type handling and due to that currently the support for long integers is broken - they are damaged on store and you never get back a long integer on fetch. Due to this the test cases regarding long integers don't work.
Otherwise it's running fine. It's as slow as the other backends, though. There is definitely optimization needed in asfPY. But hey, it's just some 0.something version 
|
|
This post references topics:
python
|
|
posted at 16:09:04
#
|
|
| |
| 2005-03-23 |
|
|
Yes! That's exactly what we need - a simple way to push applications out the door. Great stuff. |
| Source:
Planet Python
|
|
This post references topics:
python
|
|
posted at 08:53:36
#
|
|
|
| February 2007 |
|---|
| Mo | Tu | We | Th | Fr | Sa | Su |
|---|
| | | | 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 | | | | | Dec 2005 | | Mar 2007 |
|---|
This is the Python Desktop Server weblog.
 (Donations will be used by the author to buy stuff, fullfill selfish wishes or do other silly recreational things. You have been warned.).
The PyDS is
|