Posted by
Tsukasa on September 26, 2008
Now,
I have been thinking about this for a few days now… Is it possible to create a tuple in python that refers to itself. I don’t mean via some other object, so the following does not count:
def recursive():
l = []
t = (l,)
l.append(t)
return t
I believe it is possible to do directly from C, but I can not think of a way to do it from within python.
The idea of creating a recursive tuple was spawned from this little comment I found in the pickle source code: “… recursive tuples are a rare thing”. At first I thought it was talking about a tuple that directly refers to itself, but then figured that it must be talking about tuple’s that indirectly refer to themselves.
Posted by
Tsukasa on September 21, 2008
Can anybody figure out why these links are related?
- http://pydns.sourceforge.net/index.html
- http://www.doxpara.com
Posted by
Tsukasa on September 18, 2008
One of the most common complains I hear from people about python is that whitespace is significant. I would have to disagree with them, I think that significant whitespace is an excellent feature in a programming language. Though only if it is implemented correctly, which I believe it is not in python.
My major complaint about python is that it allows users to mix both tabs and spaces, and also different amounts of spaces to mark a code block. I believe that python should not allow this. I think a there should be one consistent method of indenting used within a file. I would love if this method was tabs, but I don’t really mind that much if it spaces.
This problem usually occurs when you have multiple people modifying code, over an extended period of time. Each person has their own preferred style of indenting code, and will use it (generally without thinking about it).
A friend of mine recently came across this exact problem, and in an attempt to make the file “sane” used a regular expression to fix the whitespace in the file. This ended up being a major problem, as their had inadvertently changed the meaning of the code, by subtle changing the indentation levels of the code. I came up with the idea of parsing the python program, then outputting the program back from the parse tree (thus ensuring the meaning of the code is unchanged).
After being shown the compiler module, I started playing around with some code to reproduce code from the abstract parse tree that was provided to me. When I went looking for documentation, I found that there is a piece of sample code provided with the python source that does exactly what I was after (After a few bug fixes). This example is called unparse.py (located in the Demo/parser/ directory of the python 2.5.x source code).
I suggest anybody who is trying to fix inconsistent indentation in a python file to look at this program. There are a few things to note though:
- The code must already work as wanted
- This program will strip all comments from the program
- The code will loose all of it’s layout - that is, code that may have been split over multiple lines, will now be over one line
Posted by
Tsukasa on September 5, 2008
I think I should prefix this post with one quick proviso… I have pwned my iPod, this may have caused the things I am about to talk about.
I noticed that after I updated my device to 2.0.1 (and restored the backup) a few things stopped working… These were, that I could no longer view my mail (it kept beeping every 15 minutes to tell me there was something new), and I could no longer update (AppStore) applications (either via iTunes, or directly on the device).
Since I had ssh access to the device, I was able to dive into the file-system structure to see if there was anything that seemed a little weird… After fiddling around for a little while, I discovered that some of the mail sub directories (~/Library/Mail/) were owned by the user root. This seemed odd since Apple had made all user applications run as the mobile user (as of about 1.0.2). I decided to chown these directories back to the mobile user. This Seemed to fix the mail bugs.
After a few more weeks, I decided to try to fix the bugs with application updates. After some more exploring, I discovered that the problem had the same root cause as the mail bug (directories were owned by the wrong user). This time the directory in question was ~/Media/ApplicationArchives/. It seems that this location is used by Apple in the process of updating apps… In particular, it contains a zip file of the application to be installed.