Filed under: Uncategorized
Today, I discovered something in MSN:
Try to send this message to someone:
http://www.googlepages.com
or
http://anything.else.doesnt.work.too.googlepages.com and check the result.
Yes, the connection is automatically closed in the chat
Check the kopete screenshot:
I know that MSN blocks some keywords, but googlepages links? April Fools’ maybe?
Filed under: Uncategorized
xxx to kde-multimedia show details Dec 2 (1 day ago)
subject juk
ReplyHelo is poland “”openbsd 4.2″” is problem “”"juk”"”
kbuildsycoca running…
# juk: WARNING: Unable to playhelp ?
Filed under: Uncategorized
If you want to mimic emacs’ keyboard shortcuts to change buffers, put these lines in your .vimrc
map <C-x><Right> :bnext!<CR>
map <C-x><Left> :bprevious!<CR>
and you can use Ctrl+x Left/Right arrows to change buffers.
Filed under: Uncategorized
Fact, Video4Linux is crap not so good:
- It doesn’t have an userspace API like libasound, and forces everyone to rewrite everything;
- The API is not stable;
- The drivers don’t implement color conversion in kernel, so you have to do that too;
- V4L2 is almost 10 years old (it was created to fix some shortcomings of V4L1 and to support a wider range of devices), but a lot of drivers still use V4L1 (that is already obsolete), then you have to implement support for both of them in your application.
- There isn’t a way to enumerate the supported resolutions in a video device, so you have to check that “brute forcing” the device!!
(code from Qtopia’s Camera App):
v4l2videocapturedevice.cpp
void V4L2VideoCaptureDevice::calcPhotoSizes()
{
QList<QSize> resolutions;
// standard resolutions – XGA, SVGA, VGA, CGA (roughly) and postage stamp
resolutions << QSize(1024, 768) << QSize(800, 600) << QSize(640, 480) << QSize(320, 200) << QSize(120, 120);
// test if the resolutions are supported (write back modifications)
QMutableListIterator<QSize> sizeIt(resolutions);
while (sizeIt.hasNext())
{
v4l2_format format;
QSize& currentSize = sizeIt.next();
memset(&format, 0, sizeof(format));
format.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
format.fmt.pix.width = currentSize.width();
format.fmt.pix.height = currentSize.height();
format.fmt.pix.pixelformat = V4L2_PIX_FMT_RGB32;
format.fmt.pix.field = V4L2_FIELD_NONE;
if (ioctl(m_fd, VIDIOC_TRY_FMT, &format) == 0)
{
qWarning(“V4L2: Tried resolution & format (%d, %d, RGB4) – device wants (%d, %d, %4s)”,
currentSize.width(),
currentSize.height(),
format.fmt.pix.width,
format.fmt.pix.height,
(char const*)&format.fmt.pix.pixelformat);
unsigned int& imageType = m_imageTypes[QSize(format.fmt.pix.width, format.fmt.pix.height)];
if (imageType != V4L2_PIX_FMT_RGB32) // have been here? keep RGB32 if we can
{
imageType = format.fmt.pix.pixelformat;
}
}
}
}
(In fact there’s a experimental ioctl() that enumerates the supported resolutions, but that it’s not garanteed that it’s implemented in a driver, and it’s, well, experimental).
So, why there aren’t some kind of guidelines that “force” the drivers that are part of the official kernel tree to implement the necessary functions to, at least, make it easier to application developers?
P.S.: I know that there’s an effort to implement a userspace API, but it’s just in the beginning yet.
Filed under: Uncategorized
Today, my patch to add support for nokia 6070 in Gammu was merged in svn.
Thank you, guys!
Filed under: Uncategorized
Today, I updated KDE4 sources from SVN, and when everything was built, I tried to execute it inside Xephyr, as i always do. But it crashed.·
“Maybe something is broken in SVN”, I thought. But it was not the case. So I started investing what could be.·
The error was:
kwin(1080)/kdecore (KLocale) KLocalePrivate::initEncoding: Defaulting to ISO 8859-1 encoding.
kwin(1080) KWin::Extensions::init: Extensions: shape: 0x “11″ composite: 0x “4″ render: 0x “a” fixes: 0x “40″
kwin: Fatal IO error: client killed
So, I checked that Kwin crashed trying to enable Compositing support. And that reminded me of a post this week by Rivo Laks[1] in planetkde.org talki
ng about automatic compositing detection in kwin. That could be the problem. Then I started reading kwin’s code…
First I thought: “Maybe XComposite is crashing kwin”, so I commented the code that checks for XComposite support, and it was disabled. Then
Kwin started to work! “But Xephyr supports XComposite, and maybe that’s not the problem”. Then I contacted Rivo in IRC, explained the pro
blem, and we started investing further. He said to put some kDebug()s inside the GLX detection code, but Xephyr “insisted” that it had GLX support, and continued crashing.
Xephyr’s documentation says that it doesn’t support GLX, so why does it returned true to that:
compositingprefs.cpp
113 #ifdef HAVE_OPENGL
114 has_glx = glXQueryExtension( display(), &dummy, &dummy );
115 #endif
and crashes here:
kwinglobals.cpp
128 return glXMakeCurrent( display(), mGLWindow, mGLContext ) && !handler.error( true );
A simple glxinfo inside Xephyr crashes it too. Can anyone explain why Xephyr “fakes” that it supports GLX when it doesn’t? Weird…
So, if you have the same problems running kde4 and Xephyr, disable GLX extension:
Xephyr -ac :1 -extension GLX -host-cursor -screen 1024×768
P.S.: I know that there are some patches that implement “real” GLX support in Xephyr, but it’s not the case here. The Xephyr packages in de
bian sid doesn’t have the patches, AFAIK.
[1]: http://rivolaks.blogspot.com/2007/09/kwin-improvements.html
Filed under: Uncategorized
Dica rápida: pra quem não conhece, o trickle[1] é um limitador de banda “user-space” que funciona muito bem!
A sintaxe é simples: trickle [opções] comando.
Exemplo de uso: trickle -d 20 wget endereço.
Como vocês já devem ter percebido, o comando acima limita a banda pra download do programa wget em 20kbps, assim como o -u limita o upload.
O funcionamento do trickle é simples: ele carrega uma biblioteca própria usando LD_PRELOAD, e nessa biblioteca ele reimplementa funções tipo socket(), recv() e afins, fazendo o controle de banda internamente. Só não funciona com programas estaticamente linkados, por motivos óbvios.
Pra usuário de sistemas baseados em debian: apt-get install trickle.
[1] http://monkey.org/~marius/pages/?page=trickle
Filed under: Uncategorized
Domingo à noite. A fome bate. Com preguiça de sair pra comprar alguma coisa, eu penso: “Ah, vou ligar pro habib’s, lá a entrega é super-rápida!”.
Entro no site www.deliveryhabibs.com.br e como já tenho cadastro, o pedido é rápido.
Total do pedido: R$27,35, troco pra R$50,00.
Clico em “Finalizar Pedido” e o sistema me avisa que o pedido foi feito e mostra a hora: 20:40:12. O email de confirmação chega no gmail:
Tudo Ok. Volto a trabalhar.
De repente olho pro relógio e vejo que já se passaram 10 minutos e penso: “Será que aconteceu alguma coisa? Eles sempre entregam em 7 ou 8 minutos, no máximo…”.
Vou na cozinha e vejo se o interfone está no gancho, pois já aconteceu dele não estar e o porteiro ter que subir pra me avisar que tinha alguém me esperando lá embaixo. O interfone está Ok também.
Então eu lembro do slogan do site: “Habib’s Delivery 28 minutos”. Epa! Quer dizer que se não entregarem em 28 minutos, eu não pago? Começo a ficar animado!
O tempo vai passando e eu vou pra janela do quarto pra ver se o motoqueiro não está lá embaixo. Nada. Vinte e sete minutos já se passaram e eu começo a comemorar. É aí que vejo a moto parando na rua: “droga, perdi a promoção”. É aí que o inusitado acontece: o motoqueiro (já sabendo que está atrasado) se complicado pra estacionar (apesar da rua estar vazia), e perde preciososos segundos!!! O interfone toca e vejo a hora: 21:09:52!
Coloco o dinheiro no bolso (pra garantir), espero o elevador chegar, desço, vou na portaria e o entregador dá uma de doido: “São R$27,35, troco pra R$50,00″, me entrega o pedido e o troco. Eu faço a pergunta inocente:
Eu: “Que horas são no teu relógio?”
Entragador: “Não sei, eu não tenho relógio”
Eu, pro porteiro : “Que horas são ai?”
Porteiro: “21:10:00, ‘Seu’ Lúcio”
Eu (pensando): “Então se ferrou, amiguinho!”
Eu: “Que horas era pra ser entregue o pedido?”
Entregador: “Deixa eu ver aqui na nota… 21:08:00″
Eu:”No meu relógio já passa de 21:10:00…”
Eu:” Se vocês não entregam em 28min, eu não pago né?”
Ele (com cara de puto): “É, mas você tem que ligar pro atendimento”
Eu: “Eu? Não seria você que deveria ligar?”
Ele (com cara de mais puto ainda): “Mas eu não estou com celular…”
Eu (com celular no bolso): “Então deixa que eu ligo…”
O tele-atendimento não aceita ligações de celular…
Eu: “Vou ligar aqui da portaria então”
Disco o número de novo, e o sistema pede o número do pedido.
Eu: “Qual o número do pedido, amigo?”
O Entregador (bem irritado já) : “Tenho que ver na nota…”
Ele demora pra achar eu sou direcionado pra atendende:
Atendente: “Alo Tia Eda, boa noite…”
Tia Eda? Hahahahha
Eu: “Boa noite amiga, eu estou com um probleminha aqui. O entregador chegou atrasado, e pelo que sei, a política de vocês diz que se o pedido não for entregue em 28min eu não preciso pagar, certo?”
Atendente: “Isso mesmo senhor, só preciso falar com o entregador…”
Eu: “Tá, vou chamar. Ela tá pedindo pra falar com o Sr. …”
Entregador (completamente puto!!!!!) : “Puta que pariu! Eu vou embora ou vou perder outra entrega”
Eu: “Ele tá falando que vai embora…”
Atendente: “Mas ele sabe dos procedimentos, ele tem que falar com um atendente”
Eu: “Não sei, só sei que ele falou um monte de coisa feia (hahahaha!!!) e foi embora”
A atendente se desculpa por ele, agradece por escolher o habib’s, dá boa noite eu respondo: “Ah, quem agradece sou eu, serviço de primeira o de vocês. Boa noite também!”.
Eu, feliz da vida, subo pra saborear meu jantar, às custas dos trapalhões do habib’s!
Valeu, Tia Eda!
P.S.: Longe de mim querer ser aproveitar da situação. Mas se uma empresa vende um serviço, e te dá garantias que ele será executado dentro do prazo (e aí está o motivo de cobrarem tão caro pela taxa de entrega, já pra compensar as eventuais perdas), ela realmente precisa executa-lo dentro do prazo.
E não, não é o entregador que paga o pedido se ele não for entregue a tempo. Eu procurei me informar sobre isso

