sexta-feira, 16 de outubro de 2009

Quando reiniciar o seu PC?

Meu recorde de tempo sem reiniciar o Desktop do trabalho: 36 dias

Não que eu deixe ligado o tempo todo (o que seria feio para a conta de luz - que nem sou eu que pago), mas usei a "hibernação" do sistema. Sim, funciona - e muito bem até agora - no Linux! =D



E porque não mais do que 36 dias? Simples: 427 pacotes atualizados no último update do Debian (eu uso a versão testing e a unstable, que recebem mais atualizações). Uma delas é o "kernel" do Linux, que precisa reiniciar para carregá-lo.

E aí? Seu desktop suporta mais tempo sem desligar?

;)

segunda-feira, 5 de outubro de 2009

Quem acredita em uma fotografia?

Ou "o poder do Photoshop".

Extensões python - Hello world

Rapidinha: criando extensão para o Python em C - Hello World:

Arquivo gphoto2py_module.c

#include <Python.h>

static PyObject *
spam(PyObject *self, PyObject *args)
{
char *hello = "Hello World\n";
return Py_BuildValue("s", hello);
}

static PyObject *SpamError;

static PyMethodDef GPhoto2pyMethods[] = {
{"spam", spam, METH_VARARGS, "spam docs?"},
{NULL, NULL, 0, NULL} /* Sentinel */
};

PyMODINIT_FUNC
initGPhoto2py(void)
{
PyObject *m;

m = Py_InitModule("GPhoto2py", GPhoto2pyMethods);
if (m == NULL)
return;

SpamError = PyErr_NewException("GPhoto2py.error", NULL, NULL);
Py_INCREF(SpamError);
PyModule_AddObject(m, "error", SpamError);

}

int
main(int argc, char *argv[])
{
/* Pass argv[0] to the Python interpreter */
Py_SetProgramName(argv[0]);

/* Initialize the Python interpreter. Required. */
Py_Initialize();

/* Add a static module */
initGPhoto2py();

return 0;
}



Arquivo setup.py


from distutils.core import setup, Extension

module1 = Extension('GPhoto2py',
sources = ['gphoto2py_module.c'])

setup (name = 'GPhoto2py',
version = '0.1',
description = 'This is a demo package',
ext_modules = [module1])



Para gerar o módulo

$ python setup.py build


Para testar:

$ cd build/lib*
$ ls
GPhoto2py.so
$ python
Python 2.5.4 (r254:67916, Feb 18 2009, 03:00:47)
[GCC 4.3.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import GPhoto2py
>>> GPhoto2py.spam()
'Hello World\n'
>>>


Simples assim!

Fontes:
http://docs.python.org/extending/building.html#building
http://docs.python.org/extending/extending.html

PS.: O nome do arquivo é "GPhoto2py" porque o objetivo é, mais à frente, user o GPhoto2 no Python (o bind do projeto não é atualizado desde 2007)