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)

domingo, 20 de setembro de 2009

Montar CD: windows

Para montar uma imagem "iso" no Linux é barbada (mount -o loop ). Já no Windows, é preciso usar um programa externo (é o XP, no Vista não sei ainda).

A própria microsoft fornece no seu site o Microsoft Virtual CD-ROM Control Panel, que pode ser baixado em http://download.microsoft.com/download/7/b/6/7b6abd84-7841-4978-96f5-bd58df02efa2/winxpvirtualcdcontrolpanel_21.exe

O arquivo é auto-extraível e contém um readme que explica como instalar e botar para funcionar:

Installation instructions
=========================
1. Copy VCdRom.sys to your %systemroot%\system32\drivers folder.
2. Execute VCdControlTool.exe
3. Click "Driver control"
4. If the "Install Driver" button is available, click it. Navigate to the %systemroot%\system32\drivers folder, select VCdRom.sys, and click Open.
5. Click "Start"
6. Click OK
7. Click "Add Drive" to add a drive to the drive list. Ensure that the drive added is not a local drive. If it is, continue to click "Add Drive" until an unused drive letter is available.
8. Select an unused drive letter from the drive list and click "Mount".
9. Navigate to the image file, select it, and click "OK". UNC naming conventions should not be used, however mapped network drives should be OK.


Fonte: http://support.microsoft.com/kb/916902

sexta-feira, 28 de agosto de 2009

Matando pacotes TCP

A pouco estava precisando testar se o POOL de conexões para o banco conseguia "se achar" se a conexão cair e voltar, mas para fazer testes precisava simular isso.

Eu não ia puxar o cabo, claro, mesmo sendo só a minha máquina, ia ser feio.

Poderia pensar em criar regras no firewall local, mas tem uma solução mais simples: tcpkill

O uso mais simples é bloquear tudo de determinado servidor:

tcpkill host <hostname>

Se não estiver disponível:

apt-get install dsniff


Fonte: http://www.cyberciti.biz/howto/question/linux/kill-tcp-connection-using-linux-netstat.php

terça-feira, 18 de agosto de 2009

Menos é Mais - redução de escopo

Navegando na internet durante a aula de engenharia de software, pesquisando sobre metodologias ágeis, caí no blog da Locaweb. O parágrafo valeu a leitura de tudo:

Já quando falamos em redução de escopo, não damos margem para interpretação: é sempre fazer menos do que foi planejado, mantendo o trabalho bem feito. E muitas vezes quando fazemos e entregamos menos, percebemos que o menos que entregamos já é suficiente e que o produto final de nosso projeto ficou melhor com menos do que o que foi originalmente planejado.


Fonte: http://agilblog.locaweb.com.br/2009/06/22/fixe-o-tempo-e-os-custos-e-reduza-o-escopo/

domingo, 16 de agosto de 2009

Chevy Volt

Comercial do Chevy Volt. Não vejo a hora de nos livrarmos de carros consumidores de petróleo.



Site do carro: http://www.chevrolet.com/pages/open/default/future/volt.do