sexta-feira, 22 de junho de 2018

Uma Introducao ao Vagrant no Windows - Parte 1

O Vagrant se tornou rapidamente a ferramenta onipresente para o desenvolvimento local nos sistemas operacionais Mac, Windows e Linux.

O Vagrant ajuda você a criar máquinas virtuais on-the-fly através de um conjunto de arquivos de configuração reutilizáveis. Os desenvolvedores podem compartilhar suas configurações e scripts via GitHub e em outros lugares, para que outros desenvolvedores possam criar um ambiente e ferramentas idênticos.

É uma ótima ferramenta se você quiser criar servidores para programas de teste, aprender a usar ferramentas do Linux ou trabalhar em um ambiente de teste antes de aplicar alterações em um sistema de produção. Você quer aprender a instalar a stack PHP/Apache/MySQL a partir do zero no Ubuntu? Ou jogar com a configuração de um servidor de cache como o Varnish na frente do Apache? Tente sua mão no Nginx? Aprenda PHP 7? O Vagrant torna as coisas um pouco mais simples do que usar o VirtualBox sozinho.




Vamos dar uma olhada em como configurar o Vagrant em um ambiente Windows.

Instalando os Megabits e as Peças

Para começar, vá em frente e instale estas ferramentas principais:
  •  VirtualBox (o software que cria máquinas virtuais)
  •  Vagrant (nosso herói, o software que implanta máquinas virtuais e executa scripts de provisionamento)
  •  PuTTY e PuTTYGen (cliente SSH e um gerador para chaves de segurança)

O VirtualBox e o Vagrant são instalados como qualquer outro programa do Windows. O Vagrant se instalará em seu caminho global para que você possa executá-lo de qualquer lugar.

Crie seus projetos 

Agora que você configurou tudo, você pode iniciar seu primeiro projeto do Vagrant criando uma pasta de projeto que abrigará as várias configurações para cada uma de suas VMs. Você usará a linha de comando para executar comandos do Vagrant nessas pastas.
Crie uma pasta de projeto, use:  E:\Vagrant\sitepoint. 

Dica: Como usuário do Windows, você pode abrir rapidamente um prompt de comando no Explorer mantendo pressionada a tecla Shift e clicando com o botão direito do mouse na pasta ou no espaço em branco da pasta e escolhendo “Abrir janela de comando aqui”.

Usando o Vagrant

Os comandos primários para começar são vagrant init e vagrant up.Abra uma linha de comando e mude os diretórios para a pasta do seu projeto de teste. Execute o vagrant init e um novo arquivo vagrant será criado no diretório atual chamado “Vagrantfile” (sem extensão), que contém uma configuração inicial básica. 

Abra Vagrantfile em um editor de texto como o Notepad ++ ou Sublime-text e dê uma olhada, estude os comentários antes de cada valor de configuração. Você pode definir pastas compartilhadas entre convidado e host, ativar o encaminhamento de porta, definir o nome do host e muito mais. Observe que todos, mas talvez uma linha seja comentada: o Vagrant tem uma configuração padrão que será usada mesmo sem nenhuma configuração alterada aqui.

 Este Vagrantfile ainda não aponta para nenhum tipo de máquina virtual, então, exclua o Vagrantfile que você acabou de criar e vamos encontrar uma "caixa de base" para usar.Navegue pela Vagrant Cloud para ver as caixas básicas que você gostaria de usar. Para este exemplo, usaremos o "ubuntu / trusty64", que é a caixa de base "oficial" do Ubuntu Server 14.04 LTS (Trusty Tahr). Para que o Vagrant use essa caixa de base automaticamente, digite:   


Desta vez, se você abrir o Vagrantfile, você perceberá que ele lista a caixa de base lá para “config.vm.box”. Outras configurações ainda são comentadas.


Agora que você tem um Vagrantfile com uma caixa base configurada, você pode girar a VM com este comando incrível:





Para explicar o que está acontecendo aqui, o Vagrant primeiro importa a caixa base, se você ainda não a tiver (eu já a tinha, caso contrário, ela seria baixada primeiro). Em seguida, ele verifica se sua caixa está atualizada.

Nota: Essas caixas base estão em sua pasta %userprofile % /.Vagrant.d/boxes. Você pode listar todas as caixas instaladas digitando a vagrant box list. Você pode excluir as caixas com o comando:  vagrant box remove box/name.


Você pode ver que ela configura a porta de encaminhamento de SSH como "2222": você precisará disso para usar um cliente SSH como o PuTTY.

Observe que o nome de usuário é "vagrant", o que sempre será. Você também notará que ele gera um novo conjunto de chaves, algo que a Vagrant não fez nas versões anteriores. A chave pública é automaticamente copiada para a VM e substitui a chave padrão nela. Ele também coloca a chave privada em uma nova pasta chamada “.vagrant” na pasta do seu projeto. Se você detalhar essa pasta, encontrará "private_key", que será útil para usar no PuTTY mais tarde.

No próximo aviso, ele verifica as adições dos convidados e monta a pasta compartilhada entre o host e o convidado. Isso pode ser alterado como quiser ou pastas compartilhadas adicionais podem ser adicionadas. A primeira pasta “/ vagrant” está na VM; ele irá compartilhar com a pasta do meu projeto local. Os arquivos serão mantidos em sincronia entre as pastas enquanto você trabalha.






 

segunda-feira, 11 de junho de 2018

Melhores práticas no desenvolvimento do Android - Part 1

Vamos dar uma olhada em algumas práticas padrão que devemos aplicar ao criar aplicativos Android.

As melhores práticas são simplesmente padrões profissionais que são aceitáveis em um campo. Aqui, veremos essas práticas relacionadas ao desenvolvimento do Android.

Introducao.

A plataforma Android administra o mercado de celulares no momento. Durante o Google IO em maio de 2017, o Google anunciou que havia 2 bilhões de dispositivos Android ativos por mês. Isso é cerca de 74% da participação de mercado do sistema operacional móvel de acordo com o StatCounter em fevereiro de 2018. Esta é uma das principais razões para o grande surgimento de desenvolvedores do Android nos últimos tempos. Como resultado do grande patrocínio da plataforma móvel, a maneira como construímos soluções móveis também é muito importante.  

Se você está construindo para bilhões de usuários, nós temos que crescer acima apenas construindo apenas para as funcionalidades temos que considerar outros fatores, como escalabilidade, melhor experiência do usuário, etc.Recentemente, tem havido muitas promessas no desenvolvimento do Android desde a introdução formal do Kotlin. Em maio de 2017, ainda durante o Google IO, o Google anunciou seu apoio ao idioma. Kotlin é uma linguagem de programação estaticamente tipada que é executada na máquina virtual Java. É estaticamente digitado porque o tipo de dados das variáveis ​​é conhecido em tempo de compilação. A linguagem vem com muitos novos recursos:

  • Segurança nula. 
  • Inferência inteligente.
  • Interoperabilidade com Java. 
  • Pode ser compilado para bytecode ou JavaScript da JVM

Kotlin nos ajuda a escrever código duas vezes mais rápido do que com Java. O Android lançou um conjunto de funções de extensão para tornar o código no Android ainda mais conciso. A linguagem está em desenvolvimento desde 2010 e a versão atual no momento de escrever este artigo é v1.2.30.

Neste artigo, veremos algumas práticas recomendadas no desenvolvimento do Android para nos ajudar a criar aplicativos melhores. Nós também faremos uso de Kotlin para os trechos. Vamos pular neles imediatamente!

Padrões de design

Os padrões de projeto são soluções gerais e reutilizáveis ​​para problemas comuns em um determinado contexto no design de software. É mais como um modelo para uma solução. Além de ser apenas uma possível solução para um problema, ajuda a comunicação entre os desenvolvedores, pois fica mais fácil trabalhar em equipes quando todos estão familiarizados com os padrões acordados a seguir. Padrões de design não saíam da bolsa, eles existiam desde então. De acordo com Javamann no StackOverflow: "Nós usamos padrões de design nos anos 80, nós simplesmente não sabíamos que eles eram padrões de design".
Image result for Android patterns design 
Alguns padrões praticados durante o desenvolvimento de aplicativos para Android incluem injeção de dependência, o padrão singleton, o padrão de separação de interesses entre outros. Vamos olhar brevemente para dois deles.Injeção de dependênciaA injeção de dependência (DI) é um conceito em que um objeto não precisa configurar suas próprias dependências (objetos). Em vez disso, as dependências são passadas por outro objeto. DI sugere que objetos sejam inicializados em outro lugar e dados ao objeto solicitante. Existem várias formas de injeções:


  • Injeção de construtor - onde as dependências são passadas através do construtor. 
  • Injeção de campo - onde as dependências são enviadas para os campos de classe diretamente, etc.

O último é muito difícil de implementar por si mesmo e, portanto, o uso de uma biblioteca DI Dagger2 é recomendado. Abaixo está um trecho rápido para mostrar uma instância de injeção de dependência:  


..
Aqui, esta classe MainActivitySample possui uma dependência MainActivityRepo e não é responsável por inicializá-la. Em vez disso, o objeto está sendo inicializado em outro lugar e servido à classe por meio do construtor. Este é um exemplo de injeção de construtor. O DI, a longo prazo, nos ajuda a criar aplicativos levemente acoplados e testáveis. Isso porque, se um objeto mudar, digamos, alterações de MainActivityRepo, é mais fácil reconfigurar o objeto de uma única fonte, em vez de ir para todas as classes que o usam para fazer isso.

Separação de Preocupações (SoC)

Este é um padrão que incentiva a dissociação do seu código em unidades distintas com responsabilidades bem definidas. Em uma plataforma como o Android, onde há componentes como atividades, fragmentos, serviços, provedores de conteúdo e receptores de transmissão sendo controlados pelo sistema operacional Android, negligenciar isso tem repercussões nos aplicativos que criamos. É aqui que entram os padrões de arquitetura. Os padrões arquiteturais podem ajudar a separar nossa apresentação de dados do processamento de dados. Existem vários padrões de arquitetura que existem, como Model View ViewModel (MVVM), Model View Presenter (MVP), etc.

Vamos dar uma breve olhada na arquitetura do MVP. Essa arquitetura é composta de três partes distintas:


  • The View: esta é a parte que exibe o conteúdo para o usuário, como uma barra de progresso, diálogos, etc.
  • The Model: é responsável por fornecer dados ao aplicativo, seja do DB ou de um serviço da web. Esta deve ser sua única fonte de verdade (dados).
  • The Presenter: essa parte lida com a lógica de negócios, como chamar o modelo para obter dados e, em seguida, atualiza a exibição.

Um típico fluxo de MVP funciona assim:

Seu aplicativo começa mostrando um diálogo de progresso. É responsabilidade do View fazer isso. Ao mostrar a caixa de diálogo, ela precisa exibir dados na interface do usuário, informa o presenter. O presenter chama o model e depois que os dados são obtidos, ele é retornado ao presenter que, por sua vez, retorna os dados para a View. Ao usar uma arquitetura, certifique-se de manter essa estrutura em todo o aplicativo. Quando você separa com sucesso seu código dessa forma, fica fácil manter, enviar novos recursos e testar. Os documentos do Android fornecem um tutorial detalhado sobre um guia para a arquitetura apropriada usando os componentes da arquitetura. Aqui está outro guia que oferece uma boa visão geral dos padrões de design no Android.

Experiência de usuário

A experiência do usuário nesse contexto refere-se à satisfação da interação de um usuário com seu aplicativo. Todos concordamos que, recentemente, houve um aumento na demanda por melhores experiências em dispositivos móveis. Aqui estão algumas coisas a serem observadas para melhorar a experiência de nossos aplicativos:

UI excelente

Uma sensação encantadora e experiência de um aplicativo começa com um bom design. Certifique-se de obter um que corresponda aos princípios de design de materiais do Google. Alguns desses princípios incluem:

  • Fornecendo um botão de navegação para cima.
  • Consistência em combinações de cores.
  • Uso de ícones apropriados para retratar a funcionalidade, etc. 



Continua na parte 02

terça-feira, 19 de janeiro de 2016

Úteis Apps para Hackear Android SmartPhones ..



Se você gosta de jogar com seus celulares com Android e quer levá-la a níveis extremos, então nós coletamos alguns aplicativos de hacking úteis que pode ser muito útil para o seu dispositivo.
Hackode: É aplicativos muito úteis para o testador de penetração, hackers éticos e profissionais de segurança. Você pode perfom Google hacking, Injeção de SQL, MySQL Server, Whois, Scanning, pesquisa de DNS, IP, MX Records, DNS Dif, Segurança RSS Feed, Exploits etc com este app.

DroidBox

Droidbox deixá-lo para fazer uma análise dinâmica de aplicativos Android. É ajudar a visualizar o comportamento de um pacote app Android.

Arroto Suite

Burp Suite é uma plataforma integrada para a realização de testes de segurança de aplicações web.Suas diversas ferramentas funcionam perfeitamente em conjunto para apoiar todo o processo de testes, de mapeamento inicial e análise de superfície de ataque de um aplicativo, por meio de encontrar e explorar vulnerabilidades de segurança.

Burp lhe dá controle total, permitindo que você combinar técnicas manuais avançados de automação com state-of-the-art, para tornar seu trabalho mais rápido, mais eficaz e mais divertido.

Zanti

Zanti é um kit de ferramentas de teste de penetração móvel que permite que os gerentes de segurança avaliar o nível de risco de uma rede com o apertar de um botão. Este fácil de usar conjunto de ferramentas móvel permite que os administradores de segurança para simular um atacante avançado para identificar as técnicas mal-intencionados que usam em meio selvagem para comprometer a rede corporativa.

Droid Sheep

DroidSheep [Root] é um aplicativo Android para análise de segurança em redes sem fio e capturar facebook, twitter, linkedin e outras contas.

AndroRAT

AndroRAT é uma ferramenta de administração remota para dispositivos Android.

Faceniff

FaceNiff é um aplicativo Android que permite que você cheirar e perfis de sessão interceptar web sobre o WiFi que seu celular está conectado. É possível roubar sessões somente quando não estiver usando Wi-Fi EAP, mas deve funcionar através de qualquer rede privada (Open / WEP / WPA-PSK / WPA2-PSK)
É uma espécie de como Firesheep para o Android. Talvez um pouco mais fácil de usar (e ele funciona em WPA2!).

AnDOSid

AnDOSid foi concebido apenas para profissionais de segurança. Ele permite que os profissionais de segurança para simular um ataque DOS (A http ataque pós dilúvio, para ser exato) e, claro, um DDoS em um servidor web, a partir de telefones móveis.

Administracao de Transferencia de Ficheiros e soluções de rede

Configurando um Cluster de alta disponibilidade para Vários TCP / UDP Serviços

Author do Artigo original - John Carl Villanueva 


Visão geral

Quando seus downtimes de servidor começam a tornar-se mais frequentes, que provavelmente significa que é hora de algumas mudanças importantes. Uma opção seria a criação de um cluster de alta disponibilidade. Se você quiser saber como fazer isso, você já aterrou no lugar certo. Neste tutorial, vamos orientá-lo na criação de um cluster de alta disponibilidade para FTP, HTTP, SFTP, SMTP e outros serviços TCP / UDP.

Um cluster de alta disponibilidade é um sistema composto por dois ou mais servidores que executam o mesmo tipo de serviço (por exemplo, todos correndo SFTP). Sua finalidade é fornecer serviços de rede com tão pouco tempo de inatividade possível. Um cluster pode ser configurado usando um + 1 configuração ativo-ativo, ativo-passivo, ou N (há outras configurações mas esses três são os mais comuns). Este tutorial só incide sobre a configuração ativo-ativo.
Para configurar esse cluster estaremos usando JSCAPE MFT gateway. MFT Gateway é um proxy reverso que também atua como um balanceador de carga. Como um proxy reverso, ele fornece o TCP / UDP serviço a clientes externos em nome dos servidores por trás dele. E como um balanceador de carga, que distribui o tráfego de entrada para esses mesmos servidores, impedindo assim qualquer servidor único de ficar sobrecarregado.
MFT Gateway com um 4-node HTTP cluster de alta disponibilidade
high_availability_cluster
Eu vou estar assumindo que você já tem servidores existentes que executam o mesmo serviço e tudo o que precisamos fazer é trazê-los juntos em um cluster em JSCAPE MFT Gateway.
Note-se que esses servidores devem ter exatamente as mesmas configurações. caso contrário, você vai encontrar problemas ao longo do caminho. O artigo Como configurar alta disponibilidade Servidores de Transferência de Arquivos discute como sincronizar dois servidores para que eles possam ter exatamente as mesmas configurações.
Outro componente vital no agrupamento é ter algum tipo de armazenamento compartilhado. O artigoConfigurando um Shared Storage NAS para seus servidores de transferência de arquivo fornece mais informações sobre o assunto.
Pronto para prosseguir com este tutorial? Vamos começar.
Instale JSCAPE MFT gateway e lançar o seu Manager.

Adicionando um cluster

Depois de logado, navegue até o menu Clusters e, em seguida, clique no botão Adicionar.
complemento de alta disponibilidade-cluster
Isso deve abrir o diálogo Adicionar Cluster. Dê este cluster um nome. Depois disso, selecione o protocolo do serviço que você deseja que este cluster para servir. Assim, por exemplo, se você tem um conjunto de servidores HTTP que pretende trazer para junto em um cluster, em seguida, basta selecionar o protocolo HTTP.
Observe que JSCAPE MFT gateway suporta uma ampla gama de protocolos de rede, incluindo: FTP, FTPS, HTTP, HTTPS, SFTP / SSH, SMTP, POP3, IMAP4, e outros protocolos TCP e UDP.
complemento de alta disponibilidade-http-cluster
Depois de especificar o protocolo, expanda a lista Algoritmo e selecione o algoritmo de balanceamento de carga que você deseja aplicar a este cluster. Como desta escrita, os algoritmos suportados são Round Robin, Weighted Round Robin, Random, Menos Conexões e conexões Mínimos Ponderadas. Devemos definitivamente falar sobre esses algoritmos em um post futuro.
round-robin de alta-disponibilidade-cluster

A adição de servidores ao cluster

Agora é hora de adicionar os nossos servidores para este cluster. Clique no botão Adicionar para adicionar o primeiro servidor. Há duas adicionar botões lá. Clique na primeira como mostrado abaixo.
add-http-servidores-a-agrupamento
Enter do seu servidor endereço IP / nome do host e selecione o número da porta apropriado. O sistema irá recomendar automaticamente um número de porta baseada no protocolo que você selecionou anteriormente. Assim, por exemplo, uma vez que escolhemos HTTP, o sistema recomendado automaticamente a porta 80. Mude o valor se você estiver usando um número de porta diferente. Caso contrário, deixe-o como é. Clique em Adicionar para adicionar esse servidor.
especifique-ip-address-porta para-servidor-in-cluster
Uma vez que o servidor foi adicionada com sucesso, ele será exibido na lista de anfitriões para que cluster.
recém-adicionado-server-to-cluster
Adicionar mais servidores ao cluster conforme necessário. Aqui está a imagem de nosso cluster consiste em quatro (4) os nós.
Uma vez que você terminar de adicionar hosts ao cluster, finalizar o processo de criação do cluster, clicando no segundo botão Adicionar.
nós http-cluster-4-
Você deve então ver o cluster recém-criado no painel Clusters principal.
recém-added-http-cluster
Agora que você tem um conjunto pronto, o próximo passo seria a criação de um serviço de proxy reverso que faria este cluster disponível para aplicativos do cliente.

Fazendo o cluster disponível para clientes

Vá para o menu Serviços e clique no botão Adicionar.
adicionar-proxy-serviço-a alta disponibilidade do cluster reverter-
Selecione o protocolo que deseja servir. No nosso exemplo, isso seria o HTTP.
reverse-proxy-protocolo-for-alta disponibilidade-cluster
Para o campo de host e número de porta local, especificar um endereço hostname / IP eo número da porta no seu servidor MFT Gateway. Este será o endereço IP eo número da porta onde o seu Gateway MFT será escuta pedidos do cliente.
Depois disso, clique no botão de opção Cluster e selecione o nome do cluster que você criou anteriormente.
Clique no botão Adicionar para criar o serviço.
proxy-serviço-cluster
É isso aí! Se você estiver seguindo as instruções nesta tutorial, você deve agora ter um cluster de alta disponibilidade em execução fornecendo qualquer serviço que você criou para isso.

Começar

JSCAPE MFT gateway tem uma edição de avaliação totalmente funcional livre que você pode testar a movimentação, se quiser. Faça o download agora.

sexta-feira, 20 de novembro de 2015

Como criar um Laboratorio experimental para Redes Cisco na Certificaco CCNA


Este curso e composto de material transcrito e videos tutorias, acompanhado de varios experimentos em laboratório, não precisa adquirir material da Cisco simplesmente basta teres acesso a um computador de mesa ou portátil . Lista de Material necessário para satisfazer os requerimentos básicos deste programa (Link para downloads ):

1 – O Packet Tracert – Pacote de simulação da Cisco que funciona no Windows, Linux e Mac.
→ “Packet Tracert” - Existem varias versões deste programa para 3 plataformas Windows, Mac OS e Linux → http://www.packettracernetwork.com/

2 – Melhor do que o “Packet Tracert” - existe também pacote open-source GNS3 que poderás usar para simulação de de redes melhor do que o “Packet tracert”
→ GNS3 – Assim como o programa acima mencionado o GNS3 pode ser instalado no Windows, Mac OS e Linux →http://www.gns3.com/ ou http://sourceforge.net/projects/gns-3/

3 – O processador de documentos Word da MS Office e outro aplicativo que permita a leitura de texto, em alternativa podes usar o Libre Office (open-source) que e similar ao MS Office.
→ Libre Office → https://www.libreoffice.org/download/libreoffice-fresh/

4 – Leitor de PDF como o Adobe Reader ou o Foxit (open-source)
→ Foxit Reader → https://www.foxitsoftware.com/products/pdf-reader/

5 – Acesso ao Youtube / Blogger
→ Blogger – [https://redes-digitais.blogspot.com ]

6 – Aplicação para simulação de exames – Esta e a versão em Inglês, provavelmente deve existir uma versão em português, mais não consegui encontrar. Por isso vamos usar esta versão mesmo…

→ Pearson IT Certificativo Pratique Test Engine...  ( Atualicao breve )







Espero que esta sege uma Jornada interessante ...

segunda-feira, 13 de abril de 2015

Kali Linux - Introducao ao Penteste - licao 3





Meu Segundo video - continuado a Serie de Videos falando do Kali Linux e Penetracao de Redes para todo o pessoal interessado em Linux e Seguranca informatica ... Curtao, Partilhem, deixem criticas e sugestoes !! :-)

quinta-feira, 28 de agosto de 2014

A diferenca entre MySQL e MySQLi

Em relação à linguagem de programação PHP, MySQL é o driver do banco de dados antigo, e MySQLi é o driver melhorado. MySQLi tira proveito dos novos recursos do MySQL 5 levantados na íntegra a partir do site php.net:

- Interface orientada a objetos
- Suporte para instruções preparadas
- Suporte para várias instruções
- Suporte para Transações
- Melhores recursos de depuração
- Suporte de servidor incorporado

Você tem a opção de usar o mysql, mysqli ou DOP essencialmente.

Se você está simplesmente à procura de um banco de dados relacional, você precisa olhar mais longe do que o MySQL, apesar de existirem muitas opções disponíveis. Você pode usar DBD, Postgres, MySQL, MSSQL, SQLite, etc etc etc ...

Source(s):

PHP e MySQL Básico & Ajax Tutorial Básico


Dicas básicas para o uso de phpMyAdmin e criação de bancos de dados em MySQL Adicionar, criar, editar, Apagar, Procurar e mostrar tabelas com HTML e PHP Programação de um formulário web para interagir e gráficos no banco de dados. Muito mais código PHP que os suplementos, o que você aprendeu com os Tons curso PHP e toneladas de dicas exclusivas que só um programador de banco de dados profissional sabe a ...

Instalando o Web Developer plug-in para o Firefox para ajudar a depurar o código Usando o IDE de desenvolvimento livre, páginas web do Programa Apanta que fez isso?


Ele precisa refrescante para carregar em novos menus HTML content / botões que acionam funções, Menus com guias para abrir DIV CSS, o Windows Criar arrastar e soltar Torneiras para um carrinho de compras Lotes Web interface de javascript, XML, CSS, DOM, HTML, PHP


Baixe aqui:

http://www.filesonic.com/file/AQIA7AJ/Php_and_Ajax.part1.rar
http://www.filesonic.com/file/w6t8GmC/Php_and_Ajax.part2.rar
http://www.filesonic.com/file/IDU47r9/Php_and_Ajax.part3.rar
http://www.filesonic.com/file/ZNmSKO2/Php_and_Ajax.part4.rar
or
http://ul.to/ugshzjwd/Php_and_Ajax.part1.rar
http://ul.to/gd2y5sj5/Php_and_Ajax.part2.rar
http://ul.to/m777f413/Php_and_Ajax.part3.rar
http://ul.to/96nfitc8/Php_and_Ajax.part4.rar