este é o nosso blog

Aqui você encontrará um conteúdo bastante interessante, sobre temas variádos dentro de tecnologia, informática, internet e claro sobre o dia-a-dia da nossa empresa!

Arquivo da categoria: Programação

Postado por:

Core QCodo

Programação:

  • QStateCity
    • Correção de erros
    • Separação da Lista de Cidades em Grupo da Capital e Outras Cidades
  • QCpfCnpjToogle
    • Correção de erro em momento de edição
  • QI18N
    • Suporte a criação de tradução customizada (project):
      Para isso basta criar a pasta i18n dentro project
      Criar também a variável __CUSTOM__ dentro do configuration.inc.php apontando para a pasta customizada
      E depois criar or arquivo da linguagem dentro dessa pasta, que ele será preenchido com os termos não encontrados quando o projeto tiver customização ( excelente para o QCMS )
  • QCache
    • Mudança da pasta do /core para a tmp/cache
  • QSubdomainTextbox
    • Criação de textbox próprio para subdomain
  • QProgressBar
    • Criação de componente integrado ao jquery.ui para barra de progresso
  • QGoogleChart
    • QGoogleChartBase: Extensão da classe em sua base
    • QGoogleChartTimeLine: Componente criado para TimeLine em flash usando o google charts
  • QQQuery
    • QQDistinctCount: Criação da classe para contar somente nodos distintos em um query
    • QQAggregationClause: Extendida para suportar funções internas, o que possibilitou a criação do QQDistinctCount
  • QDateListBox
    • Modificação para funcionamento todo em Javascript
  • QCKEditor
    • Correção de erro ao enviar post via server action
  • io_classes/FTP
    • Criação de classe para uso de funções do protocolo FTP no qcodo
  • QCKFinderFileControl
    • Selecionador de arquivos via CKFinder
  • QCKFinderImageControl
    • Selecionador de imagens via CKFinder
  • QFileControl
  • QRetFileControl
  • QBankSlip
    • QBankSlipBancoBrasil
    • Drawee
    • Transferor
  • QCurlAsync
    • Criação de classe de chamada CURLS de maneira assincrona (ainda não funcional)

 

Design:

  • Criação de CSS para dashboard (básico ainda)
  • Inclusão de novos ícones

 

QCMS

  • Correção de problemas na área do site e páginas no que diz respeito a MetaControls e MetaOptions
    • Meta para formulário de contato
    • Padronização do Meta simples, com suas devidas extensões de classes
  • Correção de Cadastro de Clientes
  • Correção de assunto e departamentos
  • Melhorias no AudioMetaControl
  • Remoção da pasta wizard
  • Inserção de Banners de forma facilitada, com inclusão de localização sobdemanda

Postado por:

Ao longo desse tempo trabalhando com WEB sempre vem a tona a questão: PERFOMANCE .

E uma das maneiras de otimizar a velocidade de carregamento de páginas web é tratar o seu conteúdo estático de maneira que possa ser carregado da maneira mais rápida possível.

E os conteúdos estáticos de uma página web geralmente são: imagens, folhas de estilo CSS e arquivos javascript e uma boa notícia é que podemos comprimí-lo até atingirem o menor tamanho possível, facilitando assim o download desses arquivos pelos navegadores dos clientes.

Segue abaixo 7 maneiras eficientes de se fazer isso: 

 

1. Site Load Test

 

Site Load Test

É um validador e avisa ao desenvolvedor sobre erros encontrados e indica também maneiras de otimizá-los.


2. Packer

É um compressor para javascripts que irá melhorar o tempo de carregamento da sua página.

 


3. SquishIt

Uma marca da GitHud, irá ajudá-lo a compactar tanto CSS como JavaScript do seu site, podendo agrupar arquivos em um único, reduzindo assim o número de requisições de arquivos. Tem uma interface um pouco pobre, mas você irá se acostumar com isso.

 


4. Minify

 

Minify

Minify é uma excelente biblioteca escrita em PHP5 que irá ajudar a compactar os seus arquivos .js e .css em até 70% e pode ser facilmente integrado ao seu site, se escrito em PHP, aqui na Codificar já utilizamos algumas vezes e o resultado sempre é atrativo.

 


5. JSMin

 

JSMin, é simples e fácil de usar e remove todos os espaços em brancos de seu código, o que ajuda a diminuir o tamanho de seu arquivo em até 50%.

 


6. Google Closure Compiler

O pessoal do Google sempre é confiável quando o assunto é velocidade e aprimoramento. Sendo assim, essa ferramenta irá ajudar a remover e corrigir eficientemente erros comuns de código em javascript.

Excelente para quem usa grandes bibliotecas em Javascript.

 


7. YUI Compressor

 

YUI Compressor

 

Mais uma maneira de comprimir os arquivos CSS e JS e se diz melhor que os concorrentes como Packer e Minify, e é claro que tem o suporte de uma grande empresa como a Yahoo.

 

 

Enfim, #ficaadica e façam bom proveito.

@via http://smashinghub.com

Postado por:

CORE QCODO:

  • Correção de erros na geração de código para tabelas customizadas
  • Criação da classe QSiteMaps, para criação de sitemaps de site e projetos
  • Melhorias nos players QJWPlayer 4 e 5 , adição de atributo AutoPlay
  • Atualização do JwPlayer para a versão mais atual da 5
  • Adição de novo skin NORDEN para QJWPlayer5 
  • Adição da classe ApiBase, que será a base de chamadas via WebService, construídos via QCodo
  • Adições de novos ícones
  • Melhoria na QUrlTextbox para aceitar endereços sem o http://
  • Criação do QTabPanel, para abas com CSS para os temas correntes

QCMS:

  • Criação da Classe SelectFile, que é similar ao SelectAlbumImage, mas para selecionar arquivos usando o CKFinder
  • Criação das pastas data_meta_content e data_meta_site_area, para melhor organização dos Meta Object das tabelas content e site_area
  • Limpeza na SeoForm, remoção de funções e códigos não utilizados
  • Melhoria da tela de Conteúdo, divisão em Dados Básicos de Dados de SEO
  • Diversas modificações de banco: vide pasta migrations
  • Criação da Classe MetaType e adição dos tipos básicos de dados
  • Criação da tela de lista e edição de audio no /admin
  • Adaptação do install-php-ini.php para a versão 5.3 da dreamhost
  • Correção de erros das telas de criação e lista de eventos
  • Correção de erros das telas de criação e lista de vídeos

Atenciosamente, 

Raphael Canguçu

 

Postado por:

Modificações liberadas no QCODO da Codificar em 31 de agosto de 2011:

Datagrid:

  1. Adição de função de formatação do campo na MetaAddColumn:
    • declaração:
      public function MetaAddColumn($mixContent, $strFunction = null , $objOverrideParameters = null) {…}
    • uso:
      //irá adicionar a coluna 'Percent' e será formatada pela função de atalho para impressão de percentuais
      $this->dtgValues->MetaAddColumn('Percent', '_pc');
      //pode ser utilizado
  2. Adição da função MetaAddVirtualAttributeColumn: que permite a adição de colunas com atributos virtuais das queries geradas
    • uso:
      $this->dtgUserSituations->MetaAddVirtualAttributeColumn('AveragePercent', '_pc');
      //já está compatível com a função de formatação
  3. Implementação de novos filtros por intervalo na tela de pesquisa para campos inteiros e float's
    • uso: basta usar o novo gerador, implementado em todos arquivos que participam do processo de pesquisa
  4. Divisão da função MetaDataBinder em MetaDataBinder, MetaBuildConditions e MetaBuildClauses, dividindo em três legíveis funções de acordo com cada etapa do processo de bind do DataGrid 

Controles:

  1. Compatibilização do QDoubleMultipleListbox com o JQuery 1.6.2
  2. Modificação do QDialogBox para uso do Jquery UI Dialog Box ao invés do componente original do QCODO
  3. Disponibilização final, com teste do componente, QDateListBox no qual é possível selecionar intervalos de datas, como mês, semana, ultimo mes, ultima semana, este ano, ultimos 30 dias e períodos customizados 

Geração de código:

  1. Criação do arquivos /core/assets/php/custom_codegen/php que permite a geração seletiva de tabelas e bancos de dados disponíveis na aplicação
  2. Modificação da maneira na qual é instanciada objetos nas funções de instanciamento de valores vindos do banco de dados, fazendo o carregamento estático e uso da técnica lazy load

Javascript:

  1. Modificação do core/js para aceitar carregamento de Javascripts Online em CDN's
  2. Substituição do Jquery 1.4.4 pelo 1.6.2

Acredito que por enquanto é isso…

Em breve mais novidades!!

Postado por:

Essa é uma pergunta frequente que nossos clientes nos pergutam a respeito das tecnologias usadas para desenvolver suas soluções.

E respondemos que tecnicamente (quando olhamos detalhes de conceito) não enxergamos diferenças que possam impactar a escolha de uma ou outra linguagem de programação, pois ambas são orientadas a objetos, possuem excelentes frameworks de desenvolvimentos, as duas escalam, um detalhe ou outro de diferença.

O PHP abre margem maior para que profissionais ruins façam coisas ruins. Mas bons profissionais conseguem os mesmos resultados nas duas ferramentas e profissionais ruins conseguem fazer “cagada” com a melhor ferramenta do mundo.

Enfim, vou explicar que além de ser uma escolha meramente técnica ela é também ancorada financeiramente e impacta diretamente nos custos de um projeto, para isso citarei alguns pontos que nos guiam a escolher a arquitetura LAMP (Linux Apache Mysql PHP) ao invés da arquitetura Microsoft:

  1. Menor custo da Mão de Obra
  2. Menor tempo de desenvolvimento
  3. Menor custo de DataCenter
  4. Escalabilidade futura acessível e barata

 

Muitas pessoas por não conhecerem bem de tecnologia, costumam ter receios a respeito da linguagem de programação PHP, mas esquecem que:

  1. É a linguagem WEB mais usada por desenvolvedores
  2. Consequentemente é a maior comunidade de desenvolvimento e a que mais tem inovações
  3. O Facebook e o Yahoo foram feitos em cima do PHP e MYSQL
  4. O Twitter migrou sua linguagem nativa para o PHP por questões de escalabilidade
  5. A Wikipedia, maior enciclopédia do mundo, é feita usando PHP e MYSQL
  6. A maior rede de blogs do mundo, o WordPress é feito usando PHP

 

Eu costumo dizer que linguagem é somente ferramenta e nós apesar de termos projetos em ASP.NET, Ruby, ASP 3, Java, escolhemos o PHP5 como nossa linguagem padrão de desenvolvimento boa parte pelos itens citados acima.

Seguem algumas referências que balizam nossa opinião:

http://www.davidhurst.co.uk/2009/02/25/famous-websites-that-use-php-andor-mysql/
http://www.techenclave.com/programming/php-architectures-power-your-favourite-big-98227.html
http://www.oreillynet.com/onlamp/blog/2006/04/digg_phps_scalability_and_perf.html
http://www.sitepoint.com/why-php-scales/
http://talks.php.net/show/lt2004-lamp/
http://public.yahoo.com/bfrance/radwin/talks/one-year-of-php-oscon2003.htm
http://www.niallkennedy.com/blog/2004/10/flickr-architec.html
http://www.royans.net/arch/facebook-internals/
http://royal.pingdom.com/2007/02/26/what-the-webs-most-popular-sites-are-running-on/
http://royal.pingdom.com/royalfiles/0702_infrastructure_matrix.pdf

Abraços.

Postado por:

Backup do banco MySQL via SSH


Para efetuar um Backup do banco MySQL via SSH execute os comandos abaixo logo após conectar-se ao seu servidor.

As palavras em caixa alta (letras maiúsculas) deverão ser substituídas pelos seus dados de acesso.

Para fazer backup de todas as tabelas:

mysqldump -h HOST -u USUARIO -p -R –opt NOMEDOBANCO > backup.sql

Para fazer backup de somente uma tabela:

mysqldump -h HOST -u USUARIO -p -R –opt NOMEDOBANCO NOMEDATABELA > backup.sql

Se estiver encontrando problemas com acentuação dos caracteres utilize:

mysqldump -h HOST -u USUARIO -p -R –opt –default-character-set=utf8 NOMEDOBANCO > backup.sql

O comando acima irá utilizar a codificação Unicode(utf-8) internacional para os caracteres, com suporte a vários idiomas.

 

Restauração do banco MySQL via SSH


Envie o arquivo .sql para a o seu servidor;

Vá para a pasta onde copiou o arquivo acima e execute o comando abaixo:

mysql -h HOST -u USUARIO -pSENHA -D NOMEDOBANCO < arquivo.sql

Se estiver encontrando problemas com acentuação dos caracteres utilize:

mysql -h HOST -u USUARIO -pSENHA -D NOMEDOBANCO –default-character-set=utf8 < arquivo.sql

 

Backup local e restauração do banco MySQL via SSH para um servidor remoto


Esta é uma opção elegante, se você quer fazer uma backup no servidor local e restaurar ou replicar o banco de dados em um outro servidor remoto.

O exemplo abaixo faz o backup do banco de dados EXEMPLO no servidor local e faz a restauração como EXEMPLO01 no banco de dados no servidor remoto. Por favor, note que você deve primeiro criar o banco de dados EXEMPLO01 no servidor remoto antes de executar o seguinte comando:

mysqldump -u USUARIO -pSENHA EXEMPLO | mysql \ -u USUARIO -pSENHA –host=HOSTREMOTO -C EXEMPLO01

 

Observações


Dependendo do tamanho do seu banco de dados, isso pode demorar vários minutos.

Podem ocorrer alguns erros de permissão ao fazer o backup ou a restauração para qualquer comando acima. Caso isso ocorra entre em contato com o seu servidor de hospedagem.

Postado por:

Esses dias estávamos precisando de um paginador descente para ASP Clássica, então resolvemos traduzir um que tinhamos em PHP, que atende muito bem.

<%
intPageCount    = intPageCount
intCurrentPage  = intCurrentPage
intIndexCount   = intIndexCount

strToReturn = “<div class=’paginator’><div class=’base’>”

If (intCurrentPage <= 1) Then
strToReturn = strToReturn &  “<span class=’prev off’><span class=’base’>Anterior</span></span> ”
Else
strToReturn = strToReturn &  “<a class=’prev on’ href=’?intPage=” & (intCurrentPage-1) &”‘><span class=’base’>Anterior</span></a>”
End If

If (intPageCount <= intIndexCount) Then
‘We have less pages than total indexcount — so let’s go ahead
‘and just display all page indexes
For intIndex = 1  To intPageCount
If (intPageNumber = intIndex)  Then
strToReturn = strToReturn & “<span class=’number off active’><span class=’base’>” & intIndex & “</span></span>”
Else
strToReturn = strToReturn & “<a class=’number on’ href=’?intPage=” & (intIndex) &”‘><span class=’base’>” & intIndex &  “</span></a>”
End If
Next
Else

‘Figure Out Constants

intMinimumEndOfBunch = intIndexCount – 2
intMaximumStartOfBunch = intPageCount – intIndexCount + 3

intLeftOfBunchCount = Floor((intIndexCount – 5) / 2)
intRightOfBunchCount = Round((intIndexCount – 5.0) / 2.0)

intLeftBunchTrigger = 4 + intLeftOfBunchCount
intRightBunchTrigger = intMaximumStartOfBunch + Round((intIndexCount – 8.0) / 2.0)

If (intCurrentPage < intLeftBunchTrigger) Then
intPageStart = 1
strStartEllipsis = “”
Else
intPageStart = Min(intMaximumStartOfBunch, intCurrentPage – intLeftOfBunchCount)

strStartEllipsis = “<a class=’number on’ href=’?intPage=1′><span class=’base’>1</span></a>”
strStartEllipsis = strStartEllipsis & “<span class=’ellipsis’><span class=’base’>…</span></span>”
End If

If (intCurrentPage > intRightBunchTrigger) Then
intPageEnd = intPageCount
strEndEllipsis = “”
Else
intPageEnd = Max(intMinimumEndOfBunch, intCurrentPage + intRightOfBunchCount)
strEndEllipsis = “<span class=’ellipsis’><span class=’base’>…</span></span>”

strActionParameter = intPageCount
strEndEllipsis =  strEndEllipsis & “<a class=’number on’ href=’?intPage=” & (intPageCount) &”‘ ><span class=’base’>” & intPageCount & “</span></a>”
End If

strToReturn = strToReturn & strStartEllipsis

For intIndex = intPageStart To intPageEnd
If (intCurrentPage = intIndex) Then
strToReturn = strToReturn & “<span class=’number off active’><span class=’base’>” & intIndex & “</span></span>”
Else
strToReturn =  strToReturn & “<a class=’number on’ href=’?intPage=” & (intIndex) &”‘><span class=’base’>” & intIndex & “</span></a>”
End If
Next

strToReturn = strToReturn & strEndEllipsis
End If

If (intCurrentPage >= intPageCount) Then
strToReturn =  strToReturn & “<span class=’next off’><span class=’base’>Próximo</span></span>”
Else
strToReturn = strToReturn & “<a class=’next on’ href=’?intPage=” & (intCurrentPage + 1) &”‘><span class=’base’>Próximo</span></a>”
End If

strToReturn =  strToReturn & “</div></div>”

‘print paginator
Response.Write strToReturn

Function Ceil( Number )

Ceil = Int( Number )

if Ceil <> Number then

Ceil = Ceil + 1

end if

End Function

Function Floor( Number )

Floor = Int( Number )

End Function

Function Max( v1, v2 )
If v1 >= v2 Then Max = v1 Else Max = v2
End Function

Function Min( v1, v2 )
If v1 <= v2 Then Min = v1 Else Min = v2
End Function

%>

Postado por:

O QCODO é um framework em PHP 5, orientado a objetos (extremamente) que usa-se do mantra “Codifique menos, faça mais” para aumentar a produtividade dos programadores, eliminando o tedioso e repetitivo trabalho, que pode ser facilmente produzido pelo seu gerador de código automático.

Na Codificar, trabalhamos com o QCodo há quase 3 anos e conseguimos excelentes resultados com grande produtividade. Veja alguns de nossos números:

  • 3 anos de vida
  • 100 projetos
  • 3000 solicitações atendidas, dentre elas:
    • 470 erros corrigidos
    • 1620 funcionalidades criadas
    • 420 suportes realizados
    • 470 melhorias aprimoradas

O QCodo propõe-se a transformar esse tipo de bagunça:

Código bagunçado

Em um código MVC, com um controller bem definido, como vemos abaixo:

E um arquivo de template separado, onde será possível implementar a parte visual do site, sem interferência com a camada lógica (de programação).

E o melhor disso, é que a partir da leitura da modelagem do seu banco de dados, o QCodo é capaz de gerar grande parte do Código Burro, automaticamente, eliminando assim o trabalho tedioso e valioso de um bom programador.


Atualmente o Framework conta com vários adaptadores, que interpretam diversas bases como: MySQL, Oracle, SQLite 2 e 3, SQL Server e outros bancos de dados.

Quem já trabalhou com ASP.NET terá bastante facilidade de aprender o QCODO, pois a sua estrutura básica é bastante semelhante, com o conceito de Formulários e Controle, contudo terá toda a facilidade e abertura que um projeto de código aberto permite ao você.

Essa é uma rápida introdução ao framework que trabalhamos na Codificar, espero ter passado bem a mensagem.

Em breve, falaremos mais a respeito do QCODO, com exemplos, vídeos e muito mais…

Postado por:

Virtual Host’s

O domínios virtuais existem para que um único servidor web interprete mais de um domínio.
Para Fazer Domínios Virtuais no Apache existem dois meios: Name Based Virtual Host e IP Based Virtual Host (Dominio Virtual Baseado em Nome e Baseado em IP). O mais indicado é você utilizar o Name Virtual Host!

Para configurar domínios virtuais basta inserir as seguintes linhas no arquivo de configuração do apache:

O Exemplo abaixo é para a configuração do phpMyAdmin como subdomínio em nosso servidor local, onde 192.168.1.200 é o ip da rede interna.

NameVirtualHost 192.168.1.200
#ou
#NameVirtualHost 192.168.1.200:[porta]

<VirtualHost 192.168.1.200>
    ServerAdmin "root@codificar.com.br"
    DocumentRoot "D:/Projetos/phpMyAdmin"
    ServerName phpmyadmin.codificar.com.br
</VirtualHost>

<Directory "D:/Projetos/phpMyAdmin">
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

Na Codificar, utilizamos o arquivo de configuração específico para Virtual Hosts do Xampp ao invés de utilizar o httpd.conf do apache.

Postado por:

O primeiro passo seria aprender HTML, que é uma linguagem de markup com o intuito de inserir e posicionar elementos numa página. O html diz para o seu navegador como ele deverá mostrar a página ao visitante.

http://www.w3schools.com/html/html_intro.asp

Depois de uma passada básica em HTML vc deverá conhecer o novo formato, que é o XHTML, que é uma melhoria do HTML. O XHTML é muito mais limpo e estrito que o HTML, possibilitando uma melhor interpretação e mais funcionalidades ao browser.

http://www.w3schools.com/xhtml/default.asp

Depois de criado o XHTML é necessário embelezá-lo e deixá-lo mais adequado aos olhos humanos. Para isso existem as folhas de estilo de uma home page, que é chamado de CSS .

http://www.w3schools.com/css/default.asp

Depois de conhecermos como diagramar e embelezar uma página na web é necessário adicionar algumas funcionalidades nela, validar formulários, manipular o HTML. Para isso foi criado a linguagem Javascript, que permite adicionar funcionalidades na página interagindo com o visitante.

http://www.w3schools.com/js/default.asp

Mas para trabalhar de maneira mais precisa com o javascript e os elementos XHTML é muito importante saber o que é DOM ( Document Object Modeling ), que é toda  estrutura por trás do XHTML, como é realizada a organição no browser e quais funções Javascripts são capazes de realizar toda a manipulação, então é necessário conhecer mais a fundo como manipular o DOM.

http://www.w3schools.com/htmldom/default.asp

Agora já sabemos muito bem como funciona uma página web, como estililzá-la e ainda como manipular de maneira fácil seus elementos. Mas ainda falta uma coisa: Onde irei guardar todos os dados que preciso? Como posso dinamizar muito mais o meu website e permitir maior interação dos visitantes? Para tal, será necessário um servidor e um banco de dados para gerar dados persistentes e provocar interatividade entre os visitantes e o website.

Linguagem que se comunica com o servidor:
http://www.w3schools.com/php/default.asp

Linguagem para se comunicar com o banco de dados:
http://www.w3schools.com/sql/default.asp

Com todos estes tutorias você pode se tornar um excelente desenvolvedor web. =)

© copyright 2011 Codificar Sistemas Tecnológicos | Todos os direitos reservados.