sexta-feira, 23 de novembro de 2012

Como realizar o FULL OUTER JOIN no MySQL

O comando OUTER JOIN não faz parte do mysql, no entanto existme inúmeras maneiras de se fazer isso no mysql, vou colocar o exemplo mais prático.

Através do método UNION ALL e da exclusão do JOIN.

Uma maneira de fazer  UNIÃO incluir apenas os duplicados que eu quero é usar uma exclusão JOIN para eliminar qualquer coisa a partir do segundo resultado que já está incluído no primeiro. Como segue:

Este manipula linhas duplicadas corretamente e não incluir qualquer coisa que não deveria. É necessário usar UNION ALL. Isto poderá ser significativamente mais eficiente em grandes conjuntos de resultados, uma vez que não há necessidade de classificar e remover duplicatas.



select * from apples as a
   left outer join oranges as o on a.price = o.price
union all
select * from apples as a
   right outer join oranges as o on a.price = o.price
where a.price is null;
fonte: http://www.xaprb.com/blog/2006/05/26/how-to-write-full-outer-join-in-mysql/

quarta-feira, 7 de novembro de 2012

Capturar tela no MAC e escolher formato de saída!


Como tirar um print screen no seu Mac!

Post interessante: Republicando.

Ok, talvez você seja um expert no Mac OS e acha que essa é uma dica que todo mundo já sabe. Você está enganado!
Recentes usuários de Windows acostumados com a tecla de “print screen” quando migram para o Mac não sabem como fazer. Também tem muita gente que já usa Mac há um tempão e não sabe o jeito mais fácil de utilizar, então vamos as dicas….
Existem 3 comandos básicos no Mac para você fazer o screenshot, são eles:
  • Command + shift + 3 – Captura a tela inteira e salva no seu Desktop com a extensão “.png”;
  • Command + shift + 4 - Ao dar esse comando, seu cursor irá se transformar em um tipo de alvo, selecione e arraste para demarcar a área desejada do print e o arquivo será salvo também no seu Desktop com a extensão “.png”;
  • Command + shift + 4 + Barra de Espaço – Ao utilizar esse comando, seu cursor irá se transformar em uma câmera, selecione a janela que você deseja e o print vai ser da janela que você selecionou, também irá ser salvo no seu Desktop com a extensão “.png”.
Curiosidades:
  • Troque a tecla Command por Control e o Mac vai guardar seu print no clipboard e não mais no seu Desktop. Para utilizar a imagem depois, basta dar Command+V no local desejado. (Como no print screen do windows);
  • Para trocar o formato de .png para .pdf por exemplo, digite no terminal do seu Mac: defaults write com.apple.screencapture type pdf. Depois reinicie seu Mac para as alterações surtirem efeito.

domingo, 4 de novembro de 2012

Multiplicação de Raiz em C


Um grande exemplo de código que multiplica matrizes em C com comentarios.

No entanto antes eu gostaria de demonstrar rapidamente o cálculo de multiplicação de matriz para poder entendermos o código em C:

Multiplicação de Matrizes:


A multiplicação de matrizes é realizada de acordo com a seguinte condição: o número de colunas da 1ª matriz deve ser igual ao número de linhas da 2ª matriz. Observe alguns modelos de matrizes que podem ser multiplicadas, considerando o formato m x n.

A4x3 * B3x1

A4x2 * B2x3

A1x2 * B2x2

A3x4 * B4x3

Nesse modelo de multiplicação, os métodos são mais complexos. Dessa forma, precisamos ter muita atenção na resolução de uma multiplicação de matrizes. Vamos através de exemplos, demonstrar como efetuar tais cálculos. A operação deverá ser feita multiplicando os membros da linha da 1º matriz pelos membros da coluna da 2º matriz, onde os elementos devem ser somados, constituindo um único item posicional da matriz.Observe um modelo padrão de multiplicação:



Exemplo 1




Realizamos uma multiplicação entre uma matriz A de ordem 2 x 3 por uma matriz B de ordem 3 x 2. Observe que a condição “o número de colunas da 1ª matriz deve ser igual ao número de linhas da 2ª matriz”, foi válida, pois 3 = 3. O interessante é que a matriz, produto da multiplicação, é de ordem 2 x 2, isto é, 2 linhas e 2 colunas, possuindo o mesmo número de linhas da 1ª e o mesmo número de colunas da 2ª.

Portanto, todas essas condições são observadas na multiplicação entre matrizes. Caso alguma dessas condições não seja válida, a operação da multiplicação estará efetuada de forma incorreta. Sempre que realizar multiplicação entre matrizes, faça de forma atenciosa, desenvolvendo completamente o processo, procurando não utilizar meios diretos para obter o resultado. 

fonte: http://www.brasilescola.com/matematica/multiplicacao-matrizes.htm

Agora segue o Código em C para multiplicação de Matrizes, dado a entrada de uma matriz A e B a serem multiplicadas:



#include


main()
{

//Definição de variaveis
int i, j, l, c, l1, c1, X;

//Entrada de dados
printf("\n Informe a quantidade de linhas da matriz A : ");
scanf("%d",&l);
printf("\n Informe a quantidade de colunas da matriz A : ");
scanf("%d",&c);
printf("\n Informe a quntidade de linhas da matriz B : ");
scanf("%d",&l1);
printf("\n Informe a quantidade de colunas da matriz B : ");
scanf("%d",&c1);
float matrizA[l][c],matrizB[l1][c1],matrizC[c][l1],Aux=0;
if(c==l1)
{
for(i=0; i{
         for(j=0; j         {
         printf("\n\n Informe o valor da %d%c Linha e da %d%c Coluna da Matriz A: ", i+1, 167, j+1, 167);
         scanf("%f", &matrizA[i][j]);
         }
         printf("\n");
         }
for(i=0; i{      
         for(j=0; j         {
         printf("\n\n Informe o valor da %d%c Linha e da %d%c Coluna da 2%c Matriz B: ", i+1, 167, j+1, 167, 167);
         scanf("%f", &matrizB[i][j]);
         }
         printf("\n");
         }
printf("---------------------------- 1 - Matriz Gerada ---------------------------------\n\n");
for(i=0; i{      
         for(j=0; j         {
         printf("%6.f", matrizA[i][j]);
/* "%6.f" significa para eliminar 6 casas decimais dos componentes dados */
         }
         printf("\n\n");
         }
printf("---------------------------- 2 - Matriz Gerada ---------------------------------\n\n");
for(i=0; i{
         for(j=0; j         {
         printf("%6.f", matrizB[i][j]);
         }
         printf("\n\n");
         }
//Processamento e saida em tela
for(i=0; i{
         for(j=0; j         {
                  matrizC[i][j]=0;
                  for(X=0; X                  {
                  Aux += matrizA[i][X] * matrizB[X][j];
                  }
                  matrizC[i][j]=Aux;
                  Aux=0;
                  }
                  }
                  printf("\n\n");
printf("---------------------------- 3 - Matriz Gerada ---------------------------------\n\n");
for(i=0; i{
         for(j=0; j         {
         printf("%6.f", matrizC[i][j]);
         }
         printf("\n\n");
         }
         printf("\n\n");
         }
else
{
printf("\n\n Nao ha com multiplicar as matrizes dadas \n\n");
}


}



fim do código

fonte: http://forum.clubedohardware.com.br/multiplicacao-matrizes-c/546890

http://macboypro.wordpress.com/2009/05/20/matrix-multiplication-in-c-using-pthreads-on-linux/

sexta-feira, 26 de outubro de 2012

Permissões de pasta para Instalação do JOOMLA

Problema Impedido de ler ou instalar o JOOMLA

Me deparei com esse problema, quando estava instalando o JOOMLA 2.5 após copiar e descompactar a pasta através do console do linux, as permissões impediam a leitura dos arquivos do joomla e sua futura instalação,

Solução:

Bem, como eu queria continuar o trabalho pelo console, por ser mais rápido a solução também foi dada pelo mesmo.


Você precisa definir o proprietário das pastas e arquivos e permissões

Se você desejar permitir a gravação em toda pasta joomla , basta fazer:

chown-R www-data: www-data / var / www / joomla

Agora defina arquivo e permissões de diretório:

find  /var/www /joomla -type f -exec chmod 0644 {} \;
find /var/www /joomla -type d -exec chmod 0755 {} \;

Lembre-se  o /var/www depende do diretorio de instalaçao de suas webpages no joomla

-type f é para files
-type -d e d para diretorios

fonte: http://docs.joomla.org/Installing_Joomla_on_Debian_Linux#Set_ownerships_and_permissions

terça-feira, 25 de setembro de 2012

Qual a do C?: Verdadeiro e falso

Qual a do C?: Verdadeiro e falso: A linguagem c não possui um tipo de dado booleano, então de que forma ele trada o que é verdadeiro e falso? Sabe-se que para a linguagem C ...

Qual a do C?: Verdadeiro e falso

Qual a do C?: Verdadeiro e falso: A linguagem c não possui um tipo de dado booleano, então de que forma ele trada o que é verdadeiro e falso? Sabe-se que para a linguagem C ...

Como instalar o gcc no Mac OS.

Existe várias maneiras de instalar o gcc no mac, no entanto vamos tratar aqui apenas uma delas:

Primeiro você tem que ter instalado em sua máquina o Xcode.

Agora basta instalar, siga os passos:

1: Abra o Xcode
2:  Agora installe a ferramenta de linha de comando ou"command line tools" a partir do seguinte atalho:

 Xcode menu > Preferences > Downloads.

3: Clique em install e pronto.

segunda-feira, 24 de setembro de 2012

Função getch() no Linux

A função getch() está disponivel na biblioteca conio.h não disponível em linux.

Para isso basta usar um comando similar que tem a mesma função e está diponível na stdio.h

ex:

include

main()
{
char x;

scanf("%c", &x);
// funciona da mesma maneira que o getche()
}

Espero que tenha sido de ajuda.

Dicas Rápidas de C

Contante hexadecimal (base dezesseis)  Começam com '0x'
Octal (base oito) Começam com '0'

Portanto não escreva 013 achando que o C vai complicar como  13. 013 diferente de 13.

Declaração de Varialvel

tipo_da_variavel nome_da_variavel = contante;

Ex.
Char ch='D';
int count=0;
float pi=3.141;
int a = 17, b = 3;




- Constantes de barra invertida : São caracteres com código
Código
\b
\f
\n
\r
\t
\"
\'
\0
\\
\v
\a
\N
\xN 
Significado 
Retrocesso ("back")
Alimentação de formulário ("form feed")
Nova linha ("new line")
Retorno de carro ("carriage return")
Tabulação horizontal ("tab")
Aspas
Apóstrofo
Nulo (0 em decimal)
Barra invertida
Tabulação vertical
Sinal sonoro ("beep")
Constante octal (N é o valor da constante)
Constante hexadecimal (N é o valor da constante) 

Funções:

Printf() : A função printf tem a seguinte forma geral
printf(string_de_controle), lista_de_argumentos);

Codigo           Significado
%d                   Inteiro
%f                    Float
%c                   Caractere
%s                   String
%%                 Coloca na tela um %

Operadores Aritméticos e de Atribuição

Os operadores aritméticos são usados para desenvolver operações matemáticas. A seguir apresentamos a lista dos operadores aritméticos do C:

Operador 
+
-
*
/
%
++
-- 

Ação
Soma (inteira e ponto flutuante)
Subtração ou Troca de sinal (inteira e ponto flutuante)
Multiplicação (inteira e ponto flutuante)
Divisão (inteira e ponto flutuante)
Resto de divisão (de inteiros)
Incremento (inteiro e ponto flutuante)
Decremento (inteiro e ponto flutuante) 


Os operadores de incremento e decremento são unários que alteram a variável sobre a qual estão aplicados. O que eles fazem é incrementar ou decrementar, a variável sobre a qual estão aplicados, de 1. 

Então
x++; x--;
são equivalentes a

x=x+1; x=x-1


Operadores Relacionais e Lógicos

Os operadores relacionais do C realizam comparações entre variáveis. São eles:

Operador 
>.=
<
<=
==
!= 
Ação 
Maior do que
Maior ou igual a
Menor do que
Menor ou igual a
Igual a
Diferente de 
Os operadores relacionais retornam verdadeiro (1) ou falso (0). Para fazer operações com valores lógicos (verdadeiro e falso) temos os operadores lógicos:

Operador
&&
||
Ação 
AND (E)
OR (OU)
NOT (NÃO) 
Usando os operadores relacionais e lógicos podemos realizar uma grande gama de testes. A tabela-verdade destes operadores é dada a seguir:


falso
falso
verdadeiro
verdadeiro 

falso
verdadeiro
falso
verdadeiro 
p AND q 
falso
falso
falso
verdadeiro 
p OR q 
falso
verdadeiro
verdadeiro
verdadeiro 
Exemplo: No trecho de programa abaixo o if será executado, pois o resultado da expressão lógica é verdadeiro:


Operadores Lógicos Bit a Bit

O C permite que se faça operações lógicas "bit-a- bit" em números. Ou seja, neste caso, o número é representado por sua forma binária e as operações são feitas em cada bit dele. Imagine um número inteiro de 16 bits, a variável i, armazenando o valor 2. A representação binária de i, será: 0000000000000010 (quinze zeros e um único 1 na segunda posição da direita para a esquerda). Poderemos fazer operações em cada um dos bits deste número. Por exemplo, se fizermos a negação do número (operação binária NOT, ou operador binário ~ em C), isto é, ~i, o número se transformará em 1111111111111101. As operações binárias ajudam programadores que queiram trabalhar com o computador em "baixo nível". As operações lógicas bit a bit só podem ser usadas nos tipos charint e long int. Os operadores são:
OperadorAção
&AND
|OR
^XOR (OR exclusivo)
~NOT
>>Deslocamento de bits a direita
<<Deslocamento de bits a esquerda
Os operadores &|^ e ~ são as operações lógicas bit a bit. A forma geral dos operadores de deslocamento é:
valor>>número_de_deslocamentos
valor<
O número_de_deslocamentos indica o quanto cada bit irá ser deslocado.  Por exemplo, para a variável i anterior, armazenando o número 2:
i << 3;
fará com que i agora tenha a representação binária:  0000000000010000, isto é, o valor armazenado em i passa a ser igual a 16.

domingo, 23 de setembro de 2012

Bibliotecas em C


Falando um pouco de Biblioteca em C:
Os arquivos de biblioteca tem a extensão .h (header) e os arquivos que programamos na linguagem c usam a extensão .c.
Quando criamos um programa que precisa usar uma função de sistema somos obrigados a incluir o cabeçalho da biblioteca que contém a função desejada.
Por exemplo, para criar um programa que mostre mensagens na tela usamos a função printf(). Como ela está contida na biblioteca stdio somos obrigados a incluir essa biblioteca no começo do nosso programa.
Biblioteca stdio


stdio.h (acrônimo de standard input/output header ) é uma biblioteca que contém funções, macros e constantes padrões ao compilador.
Todo programa em C que usar funções para entrada ou saída de dados como o resgate de valores digitados pelo usuário ou então exibição de mensagens de retorno exigirá a inclusão do cabeçalho stdio.h
Uma lista de Funções  da biclioteca sdtio

Functions

Operations on files:

File access:

Formatted input/output:

Character input/output:

Direct input/output:

File positioning:

Error-handling:

Macros

And also _IOFBF_IOLBF_IONBFBUFSIZFOPEN_MAXL_tmpnamSEEK_CURSEEK_END and SEEK_SET, each described with its corresponding function.



cstdlib (stdlib.h)

C Standard General Utilities Library
Este cabeçalho define várias funções de uso geral, incluindo a gestão de memória dinâmica, geração de números aleatórios, a comunicação com o meio ambiente, aritiméticos inteiros, pesquisa, classificação e conversão.

Functions

String conversion:

Pseudo-random sequence generation:

Dynamic memory management:

Environment:

Searching and sorting:

Integer arithmethics:

Multibyte characters:

Multibyte strings:

Macros


Types