The FuqIt Web Framework
github.com
github.com
1. Don't run this at all in anyway that someone can access it. It's ultra hackable. Extra points if people can point out why.
2. I basically am just goofing off. The idea though is this thought: "What if PHP got it right?"
3. There's some little tricks in there you may not have seen before. Take a look at the code if you're new to Python.
4. If I get around to it I may write a web server for this using my various web-server-maker chops and put in some of the Lamson code and then make it talk to ZeroMQ off of a URL similar to how it's doing jinja and python so it can be a full service web+email+messaging system configured off just files in a directory and then probably I'll get bored and do something else.
Enjoy!
I think this was submitted with a back-thought of possibly generating ridicule. It doesn't matter, anyone coding and playing with shit like this gets upvotes from me.
I also like web.py (the framework conceived and built by Aaron Swartz) for some of the same reasons -- simplicity and cleanliness. Start with something like "let's see how would a clean and simple web framework look like in Python." That's beautiful I think. Yeah I know it hasn't exactly taken off and flask and friends surpassed it but I still like it.
EDIT: corrected Aaraon Swartz's name (thanks bensw)
That reason it still hasn't taken off is that Aaron is very like Zed; they are grasshoppers. They get bored easily from doing something.
:(
I think what happened was it started out as a quick and dirty thing that just grew and grew.
Oddly enough, I can't easily see any way to load a random (system-level) python module, thanks to including the 'app' package explicitly in the load_module - IIRC you can't resolve imports outside a top-level package.
This is a little like that.
Someone asked on stackoverflow why PHP is so easy to learn, so I wondered how much learning curve we could cut away. Drop .erb and .haml files in a dir. Done.
I think Lua-based is very interesting. openresty is a great choice for replacing the simple glory of what Apache/PHP once was.
Although, Lapis (moonscript/Lua) adopts "Web-MVC", the way its coded is a toolkit of un-opinionated libs. You can skip the MVC stuff and just have a clean set of libs for throwing things in a directory and getting your bang for very few bucks.
http://leafo.net/lapis/ http://moonscript.org/ http://openresty.org/
Oh, except, there's actually an interesting idea in there if you look really closely.
- But isn't that just calling a bunch of syscalls?
- But isn't that just moving a bunch of bytes around?The brilliant idea behind CGI is that you set a directory as your cgi-bin, drop an executable file, and then the webserver will run that executable and pass in a bunch of data from the request as environment variables and on STDIN, and then send STDOUT back to the browser. It's an incredibly powerful idea with a really simple implementation. You can write your scripts in any language, they can do anything, they can present further abstractions and run other scripts, they can embed other languages like Python or PHP or Haskell, and they can embed other frameworks like Django or Rails. And all you have to do is drop a file in a directory and make it executable. All because of the power of plain text: CGI "speaks" a uniform interface that any computer language can understand.
When I saw FuqIt, I thought of CGI because the brilliant idea behind FuqIt seems to be "Drop a Python file or Jinja template in a directory, and we'll call it via a uniform interface". Kinda like CGI, huh, except it's restricted to Python? (Actually, there's another standard - WSGI - that's built around the same principles as CGI but restricted to Python.)
Anyway, it is the start of an idea with a proclaimed possible direction (basic error handling, basic web server functionality). It doesn't do a lot right now (and maybe it never will) but it isn't just CGI.
base, ext = os.path.splitext(name[1:]) def do_GET(self):
try:
self.knife_or_banana(self.path)
[...]
def knife_or_banana(self, path):
# THIS AIN'T THAT SECURE, BUT FUQIT
root, ext = os.path.splitext(path)
[...] cd not_my_porn_folder
python -m SimpleHTTPServer[emphasis mine]
That's an interesting approach. I take that Zed doesn't want this to be actually used anywhere?
(Interesting reading: http://cr.yp.to/softwarelaw.html)
return "I Am KING!"
https://github.com/zedshaw/fuqit/blob/master/app/files/test.... I am a test Jinja!
So, which one is it?It's understandable though as the early web was essentially serving a filesystem directly (almost ftp).
If we could decrease the amount of understanding required (possibly a bad thing) to get python running on the server it would be great.
Why can't I just go "python app.py -port 80" and call it a day? What would we need to get to that point?
To be using PHP.
(runs away)
When did our jobs become such a joke?
Hope this helps!
P.S. docs.meteor.com is very helpful -- I highly recommend reading it. Also, DiscoverMeteor.com is a great textbook that will cover this material.
Deleted comment
Didn't you do a lua microframework? I'm more intrigued by that one but whatever gets your creative juices flowing, godspeed.
you nailed the name just right, but a single look at the mascot made me blind for an hour.
And it's already ported to NodeJS, congrats!