View allAll Photos Tagged helloworld

Kasseler Kunstverein / Aram Bartholl - Hello world! © Nils Klinger - Sep. 2013

 

Picture by Nils Klinger

Kasseler Kunstverein / Aram Bartholl - Hello world! © Nils Klinger - Sep. 2013

 

Picture by Nils Klinger

Created with fd's Flickr Toys

 

Original image by honeycut07 used under Creative Commons licence. www.flickr.com/photos/honeycut07/186227611

Kasseler Kunstverein / Aram Bartholl - Hello world! © Nils Klinger - Sep. 2013

 

Picture by Nils Klinger

Kasseler Kunstverein / Aram Bartholl - Hello world! © Nils Klinger - Sep. 2013

 

Picture by Nils Klinger

Kasseler Kunstverein / Aram Bartholl - Hello world! © Nils Klinger - Sep. 2013

 

Picture by Nils Klinger

Kasseler Kunstverein / Aram Bartholl - Hello world! © Nils Klinger - Sep. 2013

 

Picture by Nils Klinger

Kasseler Kunstverein / Aram Bartholl - Hello world! © Nils Klinger - Sep. 2013

 

Picture by Nils Klinger

Inclued graph for TGIFramework (Tagged) displaying a hello world template after the second load (the first load fills APC user cache).

 

Note that inclued looks a little funnier than normal because

 

1) Inclued has trouble fitting prepend scripts into hierarchy. For some reason it thinks the page page is config.php which is completely bypassed on the second load (the actual page is hello.php).

2) Inclued loses the actual parent when dynamically included stuff is __autoloaded()

3) This isn't exactly Tagged.

 

Diferences I’ve noticed

1) Tagged doesn't use an auto prepend script (it requires manual prepending),

2) Tagged includes the session_start code on every page that this doesn't

3) Tagged includes diagnostics that this doesn't (yet)

4) Tagged includes UDP based page and event logging that this doesn't

5) An event gets thrown on page creation that will trigger the output caching listeners (not yet ported).

All are mostly related to backward compatibility or portability issues.

 

Still even with the session_start making a remote call to memcache on every request, I still noticed that siegeing Tagged's hello world outperforms CodeIgniter (one of the faster frameworks out there). Why?

1) The load-on-demand design is optimized for this task (the less it does, the less framework is needed)

2) Tagged is designed around portability but not independence, certain optimizations and features are assumed to exist and the codebase takes advantage of them

3) Tagged engineers all know PHP, so a larger templating abstraction is unnecessary (we're using Savant3, probably don't even need that).

4) Performance is a primary consideration for Tagged since the site activity is so busy (the API layer alone needs to handle 5000 transactions a second). This minimal abstraction is most performant for minimal code via iteration.

5) Output caching is unnecessary for dynamically generated static content. In that event, things are created into the web hierarchy and headers are sent to allow edge caching of this content. (This is not tested with that assumption, but the point is a lot of extra code doesn't need to get written in a lot of places because operational design solve that.)

6) To call this a framework is generous. :-)

 

In any case, compare with other frameworks (note not all these are graphs of hello world, some seem to be graphs of the default page or a typical installation…weird). The default graph for comparison.

Webpy Howto

 

For the moment I'm going to try using Webpy. Why?

 

Well I like the fact that Aaron could get an app up quickly without having to make lots of adjustments to existing code. I'm not so sure this is the case with django. Which bits can you use? What bits are being left out?

 

I suppose the biggest problem I have with django is the size of the codebase you have to upload. More code, more moving parts and the greater chance for something to go wrong. Plus the fact you have to use a hack to even start (django_bootstrap.py). I don't think this is the real problem though. The real problem starts when you have to set up your local application and try to get it to run on appengine. There is a couple of little tricks & problems I've found. The approach is far from seamless and prone to error that will compound adding large frameworks. Not a show stopper but annoying enough to slow you down. The google developers are really pulling the stops out for django support so don't assume not choosing django now will stop me using it in the future.

 

Problems

 

The following solutions below should give you enough information to get webpy up and running. If you have an questions thow a question to this google app-engine thread, twitter.com/bootload or email me. Below is a list of the problems you will encounter.

 

1) Cannot run webpy locally:

 

I've encountered a few problems. The first is "how do you run webpy locally?" The problem is you may have webpy installed, the webpy code (web tree) in your current directory. But how does your local code find it? [1] Hidden in the documentation is a hint to make a symbolic link to the code you wish to use. Here is how:

 

* We wish to use Webpy and "import web"

 

* make sure you have a copy of "bzr" (debian/ubuntu): "apt-get install bzr"

 

* download the latest (0.3) webpy install version (0.3): "bzr get webpy.org/bzr/webpy.dev/;

 

* install the latest webpy, cd into webpy.dev & install: "python setup.py install"

 

* in the directory you have installed your app-engine client, create a symbolic link to a newly created directory called "web" to your webpy installation.

 

* ln -s /usr/lib/python2.5/site-packages/web web

 

The result is something like this with the app-engine code, your code (helloworld & hellowebpy).

drwxr-xr-x 12 fb fb 4096 2008-04-18 20:09 .

drwxr-xr-x 18 fb fb 4096 2008-04-14 21:23 ..

-r-xr-xr-x 1 fb fb 1595 2008-04-03 11:05 appcfg.py

-r--r--r-- 1 fb fb 154 2008-04-03 11:05 BUGS

drwxr-xr-x 4 fb fb 4096 2008-04-16 22:16 demos

-r-xr-xr-x 1 fb fb 1713 2008-04-16 16:59 dev_appserver.py

drwxr-xr-x 5 fb fb 4096 2008-04-14 22:05 google

drwxr-xr-x 8 fb fb 4096 2008-04-03 11:05 google_appengine

drwxr-xr-x 6 fb fb 4096 2008-04-18 11:47 hellowebpy

drwxr-xr-x 6 fb fb 4096 2008-04-16 15:57 helloworld

drwxr-xr-x 5 fb fb 4096 2008-04-03 11:05 lib

-r--r--r-- 1 fb fb 4348 2008-04-03 11:05 LICENSE

drwxr-xr-x 2 fb fb 4096 2008-04-09 13:55 new_project_template

-r--r--r-- 1 fb fb 3476 2008-04-03 11:05 README

drwxr-xr-x 2 fb fb 4096 2008-04-09 13:55 templates

drwxr-xr-x 2 fb fb 4096 2008-04-09 13:55 tools

-r--r--r-- 1 fb fb 57 2008-04-03 11:05 VERSION

lrwxrwxrwx 1 fb fb 36 2008-04-16 23:11 web -> /usr/lib/python2.5/site-packages/web

 

This now allows you to run your webpy code on the development machine.

 

2) Run webpy remotely :

 

In your source code directory (in my case, hellowebpy) take a copy of the webpy.dev/web directory and paste it into hellowebpy/. The result is something like this:

drwxr-xr-x 6 fb fb 4096 2008-04-18 20:24 .

drwxr-xr-x 12 fb fb 4096 2008-04-18 20:09 ..

-rw-r--r-- 1 fb fb 223 2008-04-18 11:05 app.yaml

-rwxr--r-- 1 fb fb 844 2008-04-13 23:23 favicon.ico

-rw-r--r-- 1 fb fb 448 2008-04-18 11:47 hello.py

drwxr-xr-x 2 fb fb 4096 2008-04-18 11:07 images

-rw-r--r-- 1 fb fb 471 2008-04-18 11:47 index.yaml

drwxr-xr-x 2 fb fb 4096 2008-04-18 11:07 styles

drwxr-xr-x 2 fb fb 4096 2008-04-18 10:57 templates

drwxr-xr-x 4 fb fb 4096 2008-04-18 11:08 web

 

* cd up to the root directory with appcfg.py

* upload your code + the webpy "web" code using appcfg.py: "./appcfg --noisy -e foo@bar.com update hellowebpy/" (remember to use your email address)

 

3) Problems with errors and c-based code :

 

If you have installed code like Cheetah you will get an error saying you cannot run c-based code. The reason is the dev_appserver.py code assumes the Cheetah code you have is trying to make a call to some cPython code, strop (a C based, string library optomised for speed). [3] The solution is to un-install Cheetah from your system. The google app-engine code base has a modified version of Cheetah removing all C code based routines. Be warned.

 

4) Problems uploading new code? :

 

I've had problems updating code sometimes. I suspect caching is the problem. So go to your root directory in your account and search for ".app*". You should see the following files, .appcfg_cookies and .appcfg_nag. Delete them both. Create a new directory, delete the index.yaml and copy your old code into the new directory. Then re-run the upload sequence ... "./appcfg --noisy -e foo@bar.com update new_directory_with_your_code/"

 

Following these steps should allow you to run webpy. Remember the example Aaron shows is for version 0.3. It was mentioned in the google-appengine webpy post others managed to get 0.23 to work. Try what they suggest. The example code works as shown for 0.3.

 

Have fun.

 

Reference

 

[1] Google App Engine, Pure Python, "... You can include other pure Python libraries with your application by putting the code in your application directory. If you make a symbolic link to a module's directory in your application directory, appcfg.py will follow the link and include the module in your app ..."

 

code.google.com/appengine/docs/python/purepython.html

 

[2] Python docs, "common string manipulations, optimized for speed called by "import string" /usr/local/lib/python2.4/lib-dynload/strop.so"

 

pydoc.org/2.4.1/strop.html

 

<<< start

Customizing Magento - Custom Module “HelloWorld”

En El escenario aumentado III exploramos dispositivos escénicos para actuar, jugar, bailar o hacer malabares. Mostraremos herramientas que aumentan la posibilidades formales y expresivas de los actores (Demodrama-faces de Enrique Esteban García, Patricia Esteban García e Ismael García Abad), sistemas para reinterpretar con movimiento las imágenes de nuestra memoria (Juego en danza de Jorge Cano), y un secuenciador sonoro que se activa con pelotas de malabares y que permite probar infinitos patrones orbitales (Colores de Daniel Sánchez).

En El escenario aumentado III exploramos dispositivos escénicos para actuar, jugar, bailar o hacer malabares. Mostraremos herramientas que aumentan la posibilidades formales y expresivas de los actores (Demodrama-faces de Enrique Esteban García, Patricia Esteban García e Ismael García Abad), sistemas para reinterpretar con movimiento las imágenes de nuestra memoria (Juego en danza de Jorge Cano), y un secuenciador sonoro que se activa con pelotas de malabares y que permite probar infinitos patrones orbitales (Colores de Daniel Sánchez).

En El escenario aumentado III exploramos dispositivos escénicos para actuar, jugar, bailar o hacer malabares. Mostraremos herramientas que aumentan la posibilidades formales y expresivas de los actores (Demodrama-faces de Enrique Esteban García, Patricia Esteban García e Ismael García Abad), sistemas para reinterpretar con movimiento las imágenes de nuestra memoria (Juego en danza de Jorge Cano), y un secuenciador sonoro que se activa con pelotas de malabares y que permite probar infinitos patrones orbitales (Colores de Daniel Sánchez).

Kasseler Kunstverein / Aram Bartholl - Hello world! © Nils Klinger - Sep. 2013

 

Picture by Nils Klinger

Kasseler Kunstverein / Aram Bartholl - Hello world! © Nils Klinger - Sep. 2013

 

Picture by Nils Klinger

Kasseler Kunstverein / Aram Bartholl - Hello world! © Nils Klinger - Sep. 2013

 

Picture by Nils Klinger

Kasseler Kunstverein / Aram Bartholl - Hello world! © Nils Klinger - Sep. 2013

 

Picture by Nils Klinger

Kasseler Kunstverein / Aram Bartholl - Hello world! © Nils Klinger - Sep. 2013

 

Picture by Nils Klinger

En El escenario aumentado III exploramos dispositivos escénicos para actuar, jugar, bailar o hacer malabares. Mostraremos herramientas que aumentan la posibilidades formales y expresivas de los actores (Demodrama-faces de Enrique Esteban García, Patricia Esteban García e Ismael García Abad), sistemas para reinterpretar con movimiento las imágenes de nuestra memoria (Juego en danza de Jorge Cano), y un secuenciador sonoro que se activa con pelotas de malabares y que permite probar infinitos patrones orbitales (Colores de Daniel Sánchez).

Kasseler Kunstverein / Aram Bartholl - Hello world! © Nils Klinger - Sep. 2013

 

Picture by Nils Klinger

Kasseler Kunstverein / Aram Bartholl - Hello world! © Nils Klinger - Sep. 2013

 

Picture by Nils Klinger

Kasseler Kunstverein / Aram Bartholl - Hello world! © Nils Klinger - Sep. 2013

 

Picture by Nils Klinger

Kasseler Kunstverein / Aram Bartholl - Hello world! © Nils Klinger - Sep. 2013

 

Picture by Nils Klinger

More help from her entourage, including Mom.

Another form of "Helloworld". Mothercare baby outlet version!

1 2 ••• 12 13 15 17 18 ••• 79 80