Instalando o OpenGinga (Problemas)
Usando o manual do OpenGinga RC2 encontrei um problema instalando o openginga no ubuntu 9.04 no pacote SoundFusion 1.1.1
fusionsound.c:120: error: conflicting types for ‘FusionSoundCreate’ ../include/fusionsound.h:101: error: previous declaration of ‘FusionSoundCreate’ was here
fusionsound.c:164: error: conflicting types for ‘FusionSoundError’ ../include/fusionsound.h:109: error: previous declaration of ‘FusionSoundError’was here
fusionsound.c:175: error: conflicting types for ‘FusionSoundErrorFatal’ ../include/fusionsound.h:117: error: previous declaration of ‘FusionSoundErrorFatal’ was here
fusionsound.c:183: error: conflicting types for ‘FusionSoundErrorString’ ../include/fusionsound.h:125: error: previous declaration of ‘FusionSoundErrorString’ was here
==> ERROR: Build Failed.
Primeiro reverter o make:
make uninstall
Depois para resolver, usei a dica e alterei o fonte (fusionsound.c)
Linha 119-120:
DirectResult FusionSoundCreate( IFusionSound **ret_interface )
Para: DFBResult FusionSoundCreate( IFusionSound **ret_interface )
Linha 163-164: DirectResult FusionSoundError( const char *msg, DirectResult error )
Para: DFBResult FusionSoundError( const char *msg, DFBResult error )
Linha 174-175: FusionSoundErrorFatal( const char *msg, DirectResult error )
Para: FusionSoundErrorFatal( const char *msg, DFBResult error )
Linha 183: FusionSoundErrorString( DirectResult error )
Para: FusionSoundErrorString( DFBResult error )
Por fim:
./autogen.sh
./configure make
sudo make install
#ZeMayerFacts – Run to the hills
José Mayer… o novo mito da internet!!!
Maria só era virgem porque José não era Mayer.#zemayerfacts
Eu sou a favor de mudarem o nome do jogo Pac-Man pra Pac Mayer. O famoso come-come #zemayerFacts
O acessório mais vendido no sex shop é uma máscara do Zé Mayer #ZeMayerFacts
Quando Zé Mayer decidiu se prostituir foi acusado de monopólio. #ZeMayerFacts
Will Smith, aprendeu com Ze Mayer, para fazer: “Hitch Um Conselheiro Amoroso”. #ZeMayerFacts
@MauricioRicardo: O princípio ativo do Viagra é o sémen do José Mayer. #ZeMayerFacts hehehe
Para cada mulher que o Zé Mayer pega, nasce um pêlo no Tony Ramos. (#zemayerfacts) kkkkk
Zé Mayer perdeu a virgindade aos 16. Segundos – #ZeMayerFacts
Wilt Chamberlain disse ter dormido com mais de 20 mil mulheres na sua vida. Zé Mayer chama isso de ‘uma terça-feira monótona
Zé Mayer tomou uma DietCoke+Mentos no pós-guerra e hj o período é conhecido como “Baby Boom”
Noé poderia ter poupado metade do espaço da Arca. Bastaria levar Zé Mayer e uma fêmea de cada espécie
Zé Mayer não tem Twitter pq todo mundo sabe a resposta dele para “What are you doing?”
Não foi à toa que a revolução sexual aconteceu nos anos 60, quando Zé Mayer atingiu a puberdade
Novelas com o Zé Mayer não duram mais que 9 meses por conta da epidemia de licenças-maternidade no elenco
Quando Zé Mayer entra em cena, a umidade relativa do ar sobe 2 pontos porcentuais
@zemayerfacts Zé Mayer foi campeão de salto com vara. Sem a vara. #zemayerfacts
A ciencia diz que o homem veio do macaco. mas o macaco veio do zé mayer
Zé Mayer aumentou o buraco na camada de ozônio
Qdo o José Mayer nasceu, ñ chorou. Ele apenas olhou p/ sua mãe de pernas abertas e disse: “I wll be back”.
Depois do Zé Mayer, a Mãe Natureza manca até hoje!

Ze Mayer Facts
Configurando o mod_proxy e mod_proxy_html no Apache2 para o Tomcat
Para simular melhor a infraestrutura da empresa onde trabalho decidi incluir na arquitetura de desenvolvimento o apache servindo minha aplicação java sob desenvolvimento. Ou seja, para acessar minha aplicação utilizo http://localhost:8080/AppJava e agora vou utilizar como em produção http://localhost/AppJava). Para isso utilizei o Apache mod_proxy e o mod_proxy_html, o primeiro implementa um proxy/gateway para o Apache (FTP, CONNECT – para SSL, HTTP/0.9, HTTP/1.0, and HTTP/1.1), já o segundo altera o output do servidor de aplicação substituindo os links originais pelos links do proxy (Por exemplo: http://localhost:8080/AppJava/link.zip para http://localhost/AppJava/link.zip).
1 Passo. Instalando o mod_proxy_html (Considerando que o Apache2 já está corretamente instalado)
yuri@machine: sudo apt-get install libapache2-mod-proxy-html libxml2-dev
2 Passo. Configurando o proxy
yuri@machine: sudo /etc/apache2/sites-available/000-default
Inserir dentro dos elementos xml :
ProxyPass /AppJava/ http://localhost:8080/AppJava/
ProxyPassReverse /AppJava/ http://localhost:8080/AppJava/
Ainda no mesmo arquivo (Configurando Proxy HTML):
SetOutputFilter proxy-html
ProxyHTMLURLMap http://localhost:8080/AppJava /AppJava/
3 Passo. Liberar Proxy
yuri@machine: sudo gedit /etc/apache2/mods-enabled/proxy.conf
Alterar a linha “Deny from all” para “Allow from all“
4 Passo. Garantir que os modulos foram carregados pelo Apache2
yuri@machine: sudo a2enmod proxy_html
yuri@machine: sudo a2enmod proxy_http
yuri@machine: sudo a2enmod proxy_ftp
yuri@machine: sudo a2enmod proxy_connect
5 Passo. Reiniciar o apache2:
yuri@machine: sudo /etc/init.d/apache2 restart
6 Passo. Para visualizar os modulos carregados no apache2
yuri@machine: apache2ctl -M
Utilizei as dicas:
Configurando um Proxy utilizando o Apache
http://seiti.eti.br/wiki/ConfigurandoApacheProxy
Install mod_proxy
http://www.livingubuntu.com/77
Rodando Gunbound no Windows 7
Bom há um século atrás (Na época do server internacional) eu era um bom jogador de gunbound… Fiquei com curiosidade novamente e reinstalei agora no windows 7. De cara o gameguard não funcionou e pesquisando na net encontrei a solução:
http://forgottenportal.com/downloadpage?task=view.download&cid=81
Bom era isso….
A ineficiência do uso de timesheets…
Bom… muito tempo sem postar mostra o quando minha vida esteve ocupada nos últimos meses. Nos próximos posts falarei um pouco sobre minhas andanças sobre a America Latina, mas antes disso, quero falar sobre algo que me incomoda no dia dia (e você também) que é o preenchimento das atividades realizadas no dia, a.k.a. Timesheet.
Algum tempo suspeito (empíricamente) que o uso de timesheet é totalmente inadequado para o gerenciamento do desenvolvimento de software, principalmente no que diz respeito a quantidade de horas trabalhadas.
Pois:
- O preenchimento de timesheet é chato;
- O preenchimento de timesheet toma tempo;
- Desenvolvedores difícilmente preenchem o timesheet diariamente;
- Timesheets preenchidos muito tempo depois são mentirosos;
- Entradas do timesheet são maquiadas;
Imaginando que estaria sozinho neste pensamento (Mentira… todo mundo odeia timesheet) me deparo com o blog de Jeff Sutherland – um dos pais do SCRUM – em que ele mostra a seguinte imagem:

Correlação entre o tempo de programador e a qualidade do software.
Ele diz que:
“Atualmente time sheets são tão ruins quanto burros:
- Desmotivam os desenvolvedores
- 10-15% de perda de produtividade (No mínimo)
- Desenvolvedores simulam o tempo preenchido em vez de preencher corretamente
- Relatórios com dados errados são usados para a tomada de decisão
- Clientes são enganados
- Não tem nada haver com a qualidade do código
- O foco da organização é em dados falsos e não na real produção”
Ainda mais:
- Não existe correlação entre o tempo do desenvolvedor e a produção do software
- Não existe correlação entre o tempo gasto e a qualidade do código
- Não existe relação entre “pessoas qualificadas” e a producão de código
Ou seja… time sheet atualmente não serve pra nada.
Por fim, termino este post com está frase de Jeff:
“Trust me, you need to dump those lame time sheets and get focused on real software production before an Agile competitor puts you out of business!”
Paul Potts – Nessun Dorma totalmente owned!
Andando pela internet, à procura de músicas de Pavarotti , sim, ele mesmo… – minha infância foi repleta de cds de Pavarotti – encontrei no youtube um vídeo que me surpreendeu bastante. Este vídeo é a apresentação do Paul Potts – hein??? – calma.. vou contar a história…
Paul Potts é (era) um vendedor de celular que em uma apresentação simples e excelente surpreendeu todos os jurados – com aquele ar de désdem – do programa Britain’s Got Talent (Similar ao Ídolos do SBT), ou seja, ele deu um owned em todos que zombavam ou dúvidavam da sua capacidade ao dizer que ia cantar ópera.
Imperdível!
SaaS 2, o que um livro sobre SaaS deveria ter?
“single instance, multi-tenancy is still a black art that only selected few have been able to master”
Esse post é rápido… mas é interessante.
Em SaaS is a journey, walk with us, Fred Chong (Arquiteto da Microsoft) indica o que seria interessante ter em um livro sobre SaaS. O melhor é que ele e seu amigo Gianpolo começaram a jornada produzir este livro. Então aí vai…
Sumário:
1. Introduction
* Definitions
* Differences from traditional ASP model
* SaaS value proposition
* Realizing SaaS = business model + application architecture + operation structure
2. Business Model
* Revenue and licensing model
o Additional services revenue: configuration and customization
* Sales compensation model
* Types of software services
* Designing SaaS SLA and contracts
3. Application Architecture Overview
* Instancing and multi-tenancy
* Comparisons of application architecture: on-premise, ASP, SaaS
* SaaS maturity model
* SaaS application architecture issues: identity, data, workflow, messaging, design for manageability, service-orientation, scaling, tenancy, meta-data, service consumption etc.
* Overview of SaaS capabilities and enablement architecture
4. Scaling 101
* Pools: thread, connections etc.
* Async
* Locks
* States
* UI/Presentation
5. Data Management
* Partitioning for scaling and performance
o Data partitioning schemes: Spatial, temporal, hashing etc., SQL Server 2005 support for data partitioning
o Data distribution patterns and functions
o Dynamic partitioning: re-partitioning growing database
* Data availability
o Replication strategy
6. Tenant Management
* Data model for tenant management
* Subscription Management
* Identity management
o Models
*
Delegated administration
*
Identity federation
*
Hybrid: e.g. federation for tenants and delegated admin for tenants’ customers.
7. Tenant Customization
* Meta data service for customization
* Approaches for extending application data model
* Approaches for UI customization
* Approaches for business process customization
* SaaS and system integrations modes:
o In house systems to SaaS integration (main app is in house)
o SaaS to in house systems integration (SaaS is the main app)
o SaaS with partial SaaS solution hosted on premise
o SaaS to SaaS integration
+ Direct
+ Hub-and-spoke through SaaS integration platform (like Salesforce’s AppForce)
8. Application and Data Security
* Common authentication schemes: username/pwd, certificates
* Application single sign-on
* Securing data transfer
o Application security session
o Session data integrity and privacy
o Transport vs. application level security
* Authorization
o Schemes: ACL, RBAC, business rules
o Policy management: distributed/resource, centralized
* Application security abstractions:
o Tokens, claims, security token services, security policies
* Trusted sub-system model for securing application tiers
* Identity context propagation
* Secret/key management: for application and tenants
* Data isolation schemes
o Database access control: RBAC, views etc.
o Partitioning:
+ Logical: tables, databases
+ Physical: disks
o Database encryption
9. Programmable Software Services
* Software service lifecycle
* Service versioning
* Service certification, registration and publication
* Software service registry
o Requirements
o Architecture
10. Programmable Software Service Consumption
* Function vs. data oriented services (web service vs. RSS vs. REST etc)
* Composite applications
* Tools and community framework
11. Instrumentation and Monitoring
* Types, goals and audience of instrumentation: infrastructure, application stack, business logic
* Instrumentation constructs: counters, events, rules, threshold, alerts
* Health monitoring
* Availability monitoring
* Business performance monitoring
12. Configuration Management
* Change management requirements
* Configuration management architecture
13. Metering
* Usage models
* Data model for each metering
* Usage tracking architecture
14. Infrastructure Security
* Network and firewall design
* Intrusion detection
* Protecting against viruses and worms
* Protecting against denial of service attacks
15. Operation Structure
* Provisioning
o Infrastructure
o Application
o Tenants
* Disaster recovery
* Billing
* Network operation center
* Call center
Appendix
* SaaS enablement roadmap: from on-premise and ASP to SaaS
o Scenarios and SaaS enablement strategy
* Enabling SaaS to on-premise solution migration
o Deploy existing SaaS solution and subscription to on-premise
o Need to de-mingle data to be hosted on-premise
Software As Service (SaaS), Mashups… etc
Este novo(será?) modelo de negócios vem revolucionando a forma como iremos construir nossas aplicações futuras. Em vez de nos preocuparmos em (re) desenvolver nossas aplicações, iremos apenas acessar(ws,rest) API públicas(ou pagas… tsc tsc) que já implementem o serviço necessário.
Esta idéia não é necessariamente nova, pois a maior promessa do Desenvolvimento Baseado em Componentes (DBC) é justamente a mesma. A grande diferença é que no SaaS não existe deploy dos componentes(API) e os vendedores de serviço possuem um maior controle sobre seu negócio (leia-se fiscalização, pirataria ZERO!!) e liberdade de negociação com os compradores do serviço.
Mas o que seria esse maior controle? Pense que no modelo de negócios atual software é considerado como um produto fechado (Televisão, Computador, Geladeira…) , ou seja, a principal esquema de negóciação é aquele em que o usuário deseja um sistema, vai lá na prateleira (Ou na softwarehouse), compra e leva para casa para a implantação. Este modelo tradicional é conhecido como pay per copy(pague por cópia), e atualmente possui um alto grau de pirataria, pois com cada cópia do software vai um serial válido para o registro do software. E como todos nós sabemos, estes seriais podem ser compartilhados ou gerados (com os key gen’s). Observe que é a empresa de software que arca com os prejuízos da pirataria.
Neste novo modelo o software é considerado como serviço (TV a Cabo, Luz, Esgoto). Ou seja, de acordo com seu desejo (ou necessidade) você vai lá adquire o serviço(Um mashup com o Google Maps e um banco de dados geográfico da sua cidade, por exemplo) e quando não mais desejar você vai lá e cancela. Este modelo é conhecido como pay per use (pague pelo uso), a vantagem deste modelo é justamente o usuário ser responsável pela utilização do sistema principalmente sobre preço que irá pagar, além de que o vendedor do serviço sabe com certeza quem está utilizando o serviço, agora sendo capaz de bloquear os pirateiros.
Apesar de bloquear os pirateiros, este modelo não está imune a pirataria. Pois, assim como na vida real irá existir a figura do “gato” (Sim… ele mesmo, o mesmo “gato” da luz e da tv a cabo…), ou seja, a pessoa que terá acesso ao serviço utilizando a credencial de outra pessoa.
Observe que neste modelo a pessoa “lesada” é quem fica com o prejuízo da pirataria.
Sendo assim o Software as Service não vem apenas facilitar a criação rápida de aplicativos (Reuso de fato), mas também proteger as empresas produtoras de software com respeito a pirataria.
Você tem dúvidas de que o SaaS irá pegar?
- Adobe Photoshop Versão Online
- ThinkFree representa alternativa ao pacote Office
- Adobe Apollo (Plataforma da adobe em que os aplicativos web interagem com o Desktop)
Obs.: Neste post ainda ficou faltando abordar a liberdade de comercialização dos serviços no SaaS.
Por fim, vai um videozinho do youtube sobre a plataforma Apollo.
Web2.0 Folksonomy (Tagging)? WTF?
Um dos fenômenos mais interessantes da web 2.0 é a folksonomia ou tagging, que nada mais é do que associar um contexto (várias keywords) a uma informação em uma base compartilhada. Sendo assim, a grande inovação dos sistemas tagged’s é proporcionar uma busca contextual (Filtragem de Informações) mais eficaz do que os sistemas non-taggeds.
Ou melhor:
“Tagging-based systems enable users to categorize web resources by means of tags (freely chosen keywords), in order to re-inding these resources later. Tagging is implicitly also a social indexing process, since users share their tags and resources, constructing a social tag index, so-called folksonomy.”
Yusef Hassan-Montero and Víctor Herrero-Solana
Em Improving Tag-Clouds as Visual Information Retrieval Interfaces
Legal… mas o que isso tem demais? Bom, ao meu ver o interessante é que isto demonstra que estamos em um novo estágio da internet… em que nós (Eu e você inclusive!) estamos entendendo que a internet só tem significado e utilidade se as informações existentes forem encontradas de maneira simples e eficaz. Então sempre que disponibilizar um conteúdo na web… tag nele!!
Obs.: Claro que para todos os outros problemas existe o google… quem sabe o google não cria uma base de dados universal para tag’s?? Google Base???
A review sobre o paper:
- Fala sobre um novo modelo de popular nuvens de tag’s levando em consideração a interelação entre as tags.
- Relevância para meu estudo: 4
- Inovação: 8
- Relevância para mim: 10 (Gostei do assunto…)
Component Description United!!!
Como criar um padrão de fato para descrever componentes de software?? Esta é uma pergunta interessante, mas até hoje não respondida. Seria esta a pergunta de um millhão de doláres?? Em minhas lectures sobre componentes e mercados de componentes me deparei com um mais um paper (Component Market Specification Demand and
Standardized Specification of Business Components) que apresenta informações relevantes que devem ser consideradas em uma descrição de componente… apesar do dito cujo fazer o favor de apresentar/relembrar diversos conceitos, como design by contract, the importance of component markets, composition. Sua maior importância foi justamente relembrar o meu questionamento interno sobre a importância da padronização.
Muitos esforços foram guiados neste sentido nos últimos anos, basta lembrar que em diversas conferências internacionais a descrição de componentes sempre esteve presente em algum paper.
Estes estudos e as necessidades da industria culminaram na aprovação do DRAFT da OMG para a especificação RAS (Reusable Asset Specification). Eis que o problema parecia estar resolvido e que em breve teriamos uma enxurrada de players dando suporte a especificação em suas ferramentas e repositórios… mas como de praxe(Ou praga?) isto não ocorreu (OMG hahahaha).
Para não ser mentiroso, o único player que mexeu um dedo foi a IBM que implementou em 2005 um repositório simples (RAS4W) e deu um leve suporte em sua suíte de desenvolvimento (WSAD).
Mas e agora? O que vamos fazer??? Pense que se uma especificação com grandes players (IBM, Microsoft, Flashline, ComponentSource…) não virou padrão, qual seria a chance de outra especificação tomar este lugar???
Tenho a sensação que está resposta está atrelada a tão falada WEB2.0 e seus formatos de descrição.
Claro que a idéia não é provocar uma reviravolta em todos os estudos sobre descrição de componentes…. e sim tornar a descrição algo simples e fáctivel.
Como exemplo, temos o sucesso do RSS.
Mas…. o que está abordagem difere das existentes?? Vale lembrar que a criação de um mercado GLOBAL de componentes é um dos requisitos para o sucesso do DBC, e já que esperar que todos iteroperem a nível de repositório é impraticável, poderiamos ao menos sonhar que as descrições dos assets(ativos) possam ser intercambiáveis. Já imaginou realizando uma busca no google(ou froogle) através destes metadados??? E o oráculo respondendo todos nossos anseios na busca de componentes?
Para não perder o costume, aí vai o meu review…
* Review do Paper (Relevância: 8 / Inovação: 2 )
* Obs.: Um aspecto interessante do texto são as definições de termos recorrentes.
Ex.: We define a component market as an abstract place where components are exchanged and their value is determined by the bidding process between the supplier and the user of components.