Artigo publicado na MSDN Magazine 12 -Implantação de Dados\nartigo publicado na edição 12 de MSDN magazine\nImplantação de Dados\nFacilite o processo de definição do seu banco de dados com um instalador personalizado\npor Alek Davis\n· ? Automatizando a instalação do database\n· ? Automatizando upgrades\n· ? Gerenciamento de versões\n· ? Criando um script genérico\nSQL, VBScript e ADO\nSe você já precisou instalar, reparar ou fazer o upgrade de um grande banco de dados, deve saber que a instalação de um banco de dados pode ser um processo intimidador e especialmente sujeito a falhas humanas. Acidentes como saltar um script de upgrade ou esquecer de recompilar uma nova versão de um procedimento armazenado, podem ocorrer com facilidade, principalmente quando a instalação envolve operações manuais.\nUma maneira de reduzir as falhas humanas é por meio da implementação de um programa de instalação automatizada, como o arquivo MicrosoftÂ® Installer (MSI) ou o aplicativo InstallShield. Opcionalmente, você pode criar um aplicativo ou script de instalação de bancos de dados. (A Tabela 1 resume as vantagens e desvantagens das diversas opções de instalação de bancos de dados.)\nNeste artigo, explicarei uma abordagem geral para a criação de instaladores de bancos de dados e ilustrarei com um exemplo real. O artigo é acompanhado por scripts de auxílio, que podem ser usados na configuração de bancos de dados e na compilação de scripts T-SQL.\nTabela 1 Opções de instalação de bancos de dados\nTecnologia de instalação padrão do Windows. A configuração do banco de dados pode fazer parte da configuração do aplicativo.\nA lógica da instalação do banco de dados deve ser implementada em um programa externo que permita maior complexidade. É preciso um maior esforço para programar notificações eficientes de andamento de configuração. Exige conhecimento profundo da tecnologia MSI.\nConfiguração do InstallShield\nA configuração do banco de dados pode fazer parte da configuração do aplicativo. Não exige um instalador externo de banco de dados. O processo de instalação do banco de dados pode ser exibido na mesma janela de configuração que a configuração do aplicativo (sem janelas pop-up).\nNão é uma tecnologia de instalação padrão do Windows (está sendo depreciado). Exige conhecimento da linguagem proprietária do InstallScript.\nAplicativos personalizados baseados no Windows\nPode ser chamado de uma configuração baseada no MSI ou como programa independente.\nNão pode usar uma janela de configuração padrão para dar retorno ao usuário (quando chamado de uma configuração baseada em MSI). Implementação mais trabalhosa do que um script personalizado.\nPode ser chamado de uma configuração baseada no MSI ou como programa independente. Implementação menos trabalhosa do que um aplicativo personalizado baseado no Windows.\nNão pode usar uma janela de configuração padrão para dar retorno ao usuário (quando chamado de uma configuração baseada em MSI).\nComo escolher uma tecnologia de instalação\nSe você decidir criar um instalador de banco de dados, deverá antes escolher uma tecnologia na qual basear o instalador. No WindowsÂ®, os tipos mais comuns de instaladores de aplicativos são os arquivos MSI, que podem ser construídos com o Visual Studio® .NET, ou produtos de terceiros como o InstallShield Developer ou o Wise for Windows Installer.\nNa maioria dos casos, as configurações baseadas em MSI tratam muito bem as instalações de aplicativos mas, infelizmente, o MSI não oferece suporte interno para as configurações de bancos de dados. Embora uma configuração típica baseada em Windows geralmente envolva a implantação de arquivos de aplicativo, o registro de objetos COM ou assemblies .NET, a alteração do Registro do Windows ou a criação de atalhos, nenhuma dessas etapas se aplica à instalação de bancos de dados. E, a menos que o banco de dados use stored procedures estendidos, nem mesmo precisa deixar arquivos físicos no sistema depois de concluída a instalação (com arquivos físicos refiro-me a scripts T-SQL usados para construir metadados, não o banco de dados ou arquivos de log de transações.) Com isso, tudo o que o instalador teria que fazer seria executar os scripts de instalação na ordem correta e, em seguida, removê-los ao final do processo. Isso pode ser feito via programa, mas a versão atual do MSI não oferece recursos de script T-SQL; ele baseia-se em programas externos para fazer isso.\nSe você decidir usar o MSI, além do projeto de instalação, precisará criar um aplicativo externo para tratar a instalação do banco de dados. Contudo, a implementação de instaladores baseados no MSI está além dos objetivos deste artigo, por isso não vou abordá-la aqui. Em vez disso, explicarei como criar um script robusto capaz de lidar com a instalação de bancos de dados. Esse script pode ser chamado de um instalador baseado em MSI, linha de comando ou de um programa de instalação personalizado, e funcionará com a maioria das instalações de bancos de dados.\nCriando o instalador de banco de dados\nPartirei do pressuposto de que, a essas alturas, você já criou os scripts T-SQL responsáveis pela criação dos metadados do banco de dados e pelo preenchimento das tabelas. Agora você precisará organizar os scripts de uma forma coerente, para que o instalador possa localizá-los. Para permitir que o instalador localize e execute os scripts do banco de dados, é necessário implementa-los de acordo com as diretrizes que definirei mais tarde. Agora, deixe-me explicar rapidamente como deve funcionar um instalador típico de bancos de dados.\nNão posso garantir que essa lógica será abrangente, mas a partir da minha experiência, as etapas definidas na Listagem 1 devem ser suficientes para a maioria dos bancos de dados. Alguns desenvolvedores de bancos de dados preferem combinar várias etapas lógicas em uma operação. Por exemplo, alguns podem escrever um script de criação de tabela que contenha definições de restrições assim como um índice, e código de triggers.\nListagem 1 Pseudocódigo da lógica de instalação de bancos de dados\nConecta com o SQL Server como administrador\nVerifica se o banco de dados específico existe\nIf o banco de dados não existir\nCria o banco de dados\nCria os tipos de dados definidos pelo usuário\nAdiciona os papéis do banco de dados\nCria os usuário assim como os devidos papéis\nDefine as regras\nConstrói o banco de dados com as tabelas e consultas\nDefine os índices\nDefine os constraints\nCria os triggers\nPreenche as tabelas com valores iniciais\nElse (se o banco de dados existe)\nVerifica a versão do banco de dados\nSe a versão está autalizada\nExecuta os scripts repairs (hotfixes)\nElse (se a versão do banco de dados estiver desatualizada)\nExecuta os scripts de atualização\nSempre recompila as stored procedures e UDFs\nMuitos bancos de dados não exigem todas as etapas (por exemplo, nem todos os bancos de dados usam triggers), enquanto alguns podem exigir operações adicionais, como registrar stored procedures estendidos. Na maioria dos casos, tais diferenças não são essenciais. Apenas quero mostrar operações típicas na ordem em que devem ser executadas. Obviamente, a ordem das etapas é importante, já que não se pode preencher uma tabela antes de criá-la.\nEste artigo é acompanhado por um script chamado dbsetup.vbs, que segue a lógica definida na Figura 2. Usarei este script como exemplo, para ilustrar o funcionamento de um instalador de banco de dados. Você pode usar esse script exatamente como está, modificar sua lógica e configurações padrão para atender às exigências do seu banco de dados ou usá-lo apenas como referência ao criar seu próprio instalador. Agora vamos analisar o funcionamento do script.\nO Dbsetup pode ser executado a partir da linha de comandos. O script espera que sejam passados certos parâmetros, como as informações de conexão (nome do servidor, instância e porta) e os dados de autenticação (suporta tanto autenticação do SQL Server como autenticação integrada do Windows). Para ver a descrição dos parâmetros de linha de comando suportados, execute o script com a switch /?. Quando o dbsetup for iniciado, conectará ao servidor de banco de dados especificado e verificará o status de um determinado banco de dados. Para fazer isso, o script verifica primeiro a existência de um banco de dados e, dependendo do resultado, é executado em um dos três modos principais: criação, upgrade ou reparo (há três modos adicionais que não descreverei, mas você pode ler sobre eles nos comentários do script). Se o banco de dados não existir, o instalador criará e montará todos os metadados necessários, como tabelas, visualizadores, stored procedures e assim por diante. Se já existir, o script verificará sua versão. Se a versão estiver atualizada, o script aplicará o script de reparo (hotfixes). Se o banco de dados estiver desatualizado, o script fará o upgrade. Em ambos os casos, o script recompilará tanto as stored procedures como as funções definidas pelo usuário (UDFs).\nVerificando a existência de bancos de dados e executando consultas\nVocê pode verificar a existência de um banco de dados, assim como realizar consultas e operações em outros bancos de dados, usando diversas tecnologias, como COM-based SQL Data Management Objects (SQL-DMO) ou ADO. A vantagem do SQL-DMO é que expõe os recursos de gerenciamento de bancos de dados de uma maneira mais lógica e baseada em objetos e não exige conhecimento do funcionamento interno do SQL Serverâ„¢. No SQL Server 2005, atualmente na versão beta, o SQL-DMO foi substituído pela nova tecnologia baseada no .NET chamada SQL Server Management Objects (SMO). Para verificar a existência do banco de dados usando SQL-DMO, o instalador pode obter o conjunto de bancos de dados da instância do SQL Server e procurar um item com o mesmo nome.\nA desvantagem do SQL-DMO é que não pode ser instalado por padrão em um sistema sem o SQL Server. Isso poderá ser um problema se você tentar instalar o banco de dados em um computador remoto a partir de um sistema que não tiver SQL-DMO. Ao contrário do SQL-DMO, o ADO é distribuído com todas as versões dos Microsoft Data Access Components (MDAC) e estará disponível na maioria dos sistemas. Devido à sua ampla disponibilidade, recomendo o uso do ADO nas operações de bancos de dados, muito embora possa exigir modificações se as alterações nos metadados do sistema (que às vezes acompanham as novas versões do SQL Server) causarem quebras nas consultas ADO. Isto não acontece com muita freqüência, no entanto, mas se acontecer não deverá ser muito difícil de corrigir. Para verificar a existência do banco de dados usando ADO, o instalador executa a consulta T-SQL mostrada no código a seguir:\nSe a consulta não retornar registros, o instalador considerará que o banco de dados não existe e tentará criá-lo.\nA criação do banco de dados poderá depender de parâmetros, como a localização dos dados do banco de dados e dos arquivos de log de transações, que não podem ser conhecidos e codificados durante o projeto. Como o script não pode usar arquivos SQL existentes para a criação de bancos de dados, gerará todas as instruções T-SQL necessárias e as executará de forma programática em tempo de execução (consulte o método CreateDatabase). Se os parâmetros esperados em tempo de execução não forem especificados, o script usará os padrões.\nVerificando a versão do banco de dados\nEmbora a existência do banco de dados possa ser verificada por meio de consultas aos metadados do sistema, a obtenção da versão exige alguma criatividade. Como a versão do banco de dados do SQL Server não pode ser determinada da mesma forma que os arquivos binários, você precisará implementar seu próprio esquema de versões. Uma maneira de fazer isso é criar uma stored procedure ou UDF simples que retorne uma string de versão incluída em hardcode. Para tornar esse método genérico, essa stored procedure ou função deverá ter o mesmo nome (como GetVersion) em todos os seus bancos de dados e deverá ser recompilado para retornar uma nova versão durante cada upgrade do banco de dados. Como alternativa, você pode armazenar a string de versão em uma tabela de banco de dados ou determiná-la usando algum outro critério. Apenas verifique se a interface de verificação da versão é coerente, para que o instalador possa usá-la em todos os bancos de dados que suportar. O Dbsetup parte do princípio de que o banco de dados implementa a GetVersion UDF (consulte o método GetDatabaseVersion).\nApós obter a versão do banco de dados, o instalador deverá compará-la com a versão atual, mas de onde se obtém a versão atual? A resposta para esta pergunta depende de como o instalador for implementado. Se você o construir como um programa de instalação, como um arquivo MSI, uma instalação do InstallShield ou Wise, a opção lógica para a versão atual será a versão do produto, que é uma propriedade intrínseca tanto dos bancos de dados MSI como dos arquivos de instalação do InstallShield (criadas com o InstallShield Professional 6.x ou anterior). Se o seu instalador de bancos de dados for executado como um aplicativo independente ou utilitário de linha de comandos, você poderá pedir que o usuário informe a versão atual ou passar a versão ao instalador como um parâmetro de linha de comando. O Dbsetup obtém a versão atual da string a partir de um parâmetro de linha de comandos passado com a switch /ver.\nOs scripts de criação de bancos de dados devem sempre refletir a versão mais recente do banco de dados. Sempre que o instalador criar um banco de dados, em vez de instalar uma versão mais antiga e depois fazer o upgrade, deverá construir a versão mais recente.\nPadronizando arquivos e pastas de bancos de dados\nComo os projetos de bancos de dados têm tantas semelhanças, não faz sentido reescrever o script ou o aplicativo de instalação para cada banco de dados. Para que seu instalador possa trabalhar com bancos de dados diferentes, ele deve ser capaz de localizar os arquivos dos bancos de dados, entender a ordem em que deverá executá-los e determinar que operação deverá ser realizada em cada arquivo. A única maneira de conseguir isso é padronizar a hierarquia de pastas, a ordem da execução do script, os nomes e as extensões dos arquivos.\nVocê deve agrupar logicamente todos os scripts usados para criar, atualizar ou reparar os bancos de dados. Isto permitirá que o instalador localize facilmente os scripts corretos para as operações corretas. Embora você possa implementar uma hierarquia alternativa, sugiro que use uma estrutura de pastas como a mostrada na Figura 1, que é o que o dbsetup espera encontrar. A Tabela 2 explica o objetivo de cada pasta e subpasta.\nFigura 1 Pastas\nTabela 2 Objetivo de cada pasta da instalação\nAgrupa scripts, que são executados somente durante a criação do banco de dados\nArmazena os scripts, que são executados logo após a criação do banco de dados e antes da definição das tabelas e das visualizações.\nArmazena os scripts responsáveis pela criação de tipos de dados definidos pelo usuário\nArmazena os scripts responsáveis pela criação dos papéis dos bancos de dados\nArmazena os scripts que criam usuários do banco de dados e os atribui funções adequadas\nArmazena os scripts que definem as regras do banco de dados\nArmazena os scripts de criação de tabelas\nArmazena os scripts que contêm as definições dos índices\nArmazena os scripts de definição de visualização\nArmazena os scripts usados para construir triggers\nArmazena os scripts que definem os relacionamentos e limitações de bancos de dados\nArmazena os scripts e arquivos de dados para preencher as tabelas\nAgrupa scripts, que serão executados depois que as tabelas tiverem sido preenchidas com dados\nAgrupa os scripts que são sempre executados (por exemplo, durante a criação, o upgrade e o reparo do banco de dados)\nArmazena os scripts que contêm o código fonte das stored procedures\nArmazena os scripts que contêm os códigos fonte das funções definidas pelo usuário\nAgrupa scripts de upgrade\nArmazena scripts de upgrade da versão xx (por exemplo, 1.4.2)\nTanto os caminhos relativos até as pastas de instalação como a ordem em que as pastas são processadas são incluídas por hardcode nas variáveis globais definidas no início do script. Se você achar que algumas dessas pastas não são necessárias, bastará removê-las das variáveis globais correspondentes. Criar pastas vazias de acordo com a definição do script também funciona. Se o script não localizar as pastas de instalação esperadas, ele emitirá uma mensagem de erro mas continuará o processamento independente disso.\nProcessando arquivos de bancos de dados\nAlém da hierarquia padrão de pastas que permite que o instalador associe as operações de configuração do banco de dados às pastas, o instalador deve também conhecer a ordem em que deverá executar os scripts dentro de cada pasta. Contudo, nem sempre a ordem de execução do script dentro de uma pasta é importante. Por exemplo, normalmente as stored procedures podem ser compiladas em qualquer ordem. Se uma determinada stored procedure depender de outra, mas for compilada antes dele, o SQL Server emitirá uma mensagem de aviso, mas a compilação será bem sucedida. Se a ordem da execução do script dentro de uma pasta for importante, o método mais direto será adicionar um arquivo de texto, como o usado pelo dbsetup (files.txt), que relacione os nomes dos arquivos de script na ordem em que deverão ser processados.\nSe o instalador detectar esse arquivo em uma pasta, processará todos os arquivos relacionados e ignorará todos os demais arquivos. Se o instalador não localizar o arquivo files.txt, partirá do pressuposto de que a ordem de execução não é importante e processará todos os arquivos com extensões suportadas que se encontrarem na pasta; do contrário, processará os arquivos na mesma ordem em que estiverem relacionados no arquivo de texto.\nTodos os arquivos devem ser especificados com caminhos relativos até à pastas imediata. Normalmente, isso seria apenas o nome do arquivo, mas os arquivos de outras pastas também poderão ser referenciados. Por exemplo, se um script que preencher uma tabela usar uma stored procedure para inserir os dados, essa stored procedure poderá ser compilada como parte da etapa de preenchimento de dados, já que, por padrão, as stored procedures são compiladas depois que as tabelas tiverem sido preenchidas. Nesse caso, o arquivo de stored procedure poderá ser referenciado com um caminho relativo à pasta Data, como:\nAlém da ordem de execução, o instalador deve conhecer que tipo de operação deverá realizar em um determinado arquivo. Por exemplo, os scripts que contiverem instruções SQL deverão ser processados de maneira diferente dos arquivos que contiverem grandes quantidades de dados de cópia ou programas executáveis. As extensões dos arquivos podem ajudar a atender a essa exigência. A Tabela 3 especifica como o dbsetup traduz extensões de arquivos em operações.\nTabela 3 O dbsetup traduz as extensões de arquivos em operações\nTipo e/ou objetivo\n.sql, .tsql, .tab, .tbl, .udf, .sp, .trg\nContém instruções T-SQL\nContém tabela ou dados em quantidade para cópia\nContém o formato do arquivo de cópia de dados correspondente (opcional, usado implicitamente)\n.exe, .bat, .cmd\n.vbs, .js, .ws\nDefine a ordem de execução do script\nDefine o rótulo da versão do próximo upgrade\nTodos os demais arquivos não são processados\nA associação dos tipos de arquivo às operações de instalação é bastante simples. No caso dos arquivos que contêm instruções T-SQL, como os que criam tabelas ou stored procedures, o instalador lê os comandos até localizar a instrução GO e executar esses comandos um lote de cada vez, por meio do objeto ADO Command. O mesmo resultado poderia ser obtido por meio da execução de scripts T-SQL, usando a ferramenta de linha de comandos isql.exe, mas o desempenho será baixo. Com o isql.exe a instalação será lenta, porque esse utilitário precisará estabelecer uma conexão com o banco de dados do SQL Server antes de executar cada script e, depois, fechar a conexão após a conclusão da operação. Para bancos de dados menores ou mais simples, é provável que o isql.exe será suficiente, mas para bancos de dados maiores e mais complexos, que vêm com muitos scripts, a execução de instruções SQL com ADO é uma opção muito melhor.\nNão é provável que arquivos de programas executáveis, scripts de lote e Windows Script Host (WSH) sejam usados pela maioria dos instaladores de bancos de dados, mas adicionei suporte para esses casos, por precaução. É possível que você possa precisar deles em certas circunstâncias se, por exemplo, o upgrade do seu banco de dados exigir a criptografia de dados privativos, usando uma nova chave de criptografia. Para permitir que esse programa se conecte ao servidor do banco de dados, o dbsetup passa para ele todos os parâmetros de linha de comandos, incluindo as informações de conexão e as credenciais de usuário. O aplicativo invocado é responsável pela recuperação e o processamento desses parâmetros de linha de comandos.\nOs arquivos de cópia em massa são um pouco mais complexos do que outros tipos de arquivos, porque podem apresentar diversas opções de processamento. O instalador deve conhecer que configurações de cópia em massa deverá usar com cada arquivo. Algumas das opções mais comuns que o instalador deve entender são o formato dos dados baseados em caracteres, o tratamento dos valores de identidade, a associação dos dados definidos no arquivo com as colunas da tabela e a associação entre arquivos e tabelas.\nO Dbsetup implementa a associação arquivo-tabela por meio de convenções de nomes de arquivos. Para fazer com que o instalador saiba que tabela corresponde a que arquivo de cópia em massa, o nome do arquivo deve ser igual ao nome da tabela correspondente. Por exemplo, para preencher a tabela Employee, é preciso nomear o arquivo de cópia em massa como "Employee.bcp" ou "Employee.dat". Este exemplo parte do princípio de que todos os dados baseados em caracteres, presentes no arquivo Employee.bcp, são fornecidos no formato ASCII. Para indicar outros formatos de caracteres, adicione um indicador de codificação para o formato no início da extensão do arquivo. O Dbsetup suporta os seguintes indicadores: "u" para Unicode (como em Employee.ubcp), "n" para Native (como em Employee.nbcp), e "un" para Unicode Native (como em Employee.unbcp). Para indicar que os valores de identidade devem ser inseridos na tabela, a extensão do arquivo deve iniciar com a letra "i" (como em Employee.ibcp ou Employee.iunbcp).\nSe o arquivo de cópia em massa exigir uma associação explícita dos dados do arquivo com as colunas da tabela, essa associação poderá ser fornecida por meio de um arquivo correspondente com a extensão .fmt (como Employee.fmt), que deve ser gerado por meio do utilitário BCP ou pelo comando BULK COPY. Com exceção do número máximo de erros que causam a falha da operação, que o dbsetup define em 1 em vez do padrão de 10, usa as configurações padrão para as outras opções de cópia em massa. Se o seu banco de dados exigir um tratamento mais apurado dos arquivos de cópia em massa, você poderá adicionar suas próprias opções.\nEmbora as exigências de nomeação para os arquivos de cópia em massa sejam bastante rigorosas, outros scripts de bancos de dados não seguem quaisquer regras particulares, desde que mantenham as extensões corretas. Ter um padrão de nomeação poderá ajudar a organizar melhor os arquivos e simplificar a manutenção. Considero úteis as seguintes convenções.\nOs scripts SQL responsáveis pela criação e o preenchimento das tabelas e pela compilação das stored procedures e UDFs não devem tratar mais de um objeto (o script de criação de tabela não deve criar mais de uma tabela). Do contrário, será difícil rastrear o que for definido aqui. Os scripts que realizam outras operações, como criar tipos de dados definidos pelo usuário ou construir índices, normalmente contêm instruções SQL curtas que podem ser agrupadas de modo que possam encapsular todas as operações relacionadas em um arquivo ou apenas algumas.\nEmbora os nomes dos scripts de bancos de dados não tenham importância crucial, com a notável exceção dos arquivos de cópia em massa, dar aos scripts nomes significativos pode se mostrar bastante prático. Primeiro, facilitará bastante a manutenção. Segundo, o instalador poderá usar nomes significativos para oferecer uma resposta melhor. É por isso que os scripts responsáveis pela construção e pelo preenchimento das tabelas e pela compilação de stored procedures e UDFs deverão ser nomeados de acordo com os objetos de metadados que estiverem tratando.\nImplementando upgrades em bancos de dados\nPermitir que o instalador suporte upgrades a partir de diversas versões pode parecer uma exigência complexa, mas na verdade é bastante simples. A idéia é deixar que o instalador escolha a pasta correta que armazenará os scripts de upgrade do banco de dados e, em seguida, executar esses scripts na ordem correta.\nQuando você lançar a versão 1.0 do seu aplicativo, a hierarquia de pastas de scripts do banco de dados deverá refletir a estrutura ilustrada na Figura 1 (sem as pastas de upgrade). Quando estiver pronto parar lançar a versão 1.1 do banco de dados, você precisará primeiro modificar todos os arquivos afetados nas pastas de criação do banco de dados, para que sempre reflitam a última versão. Isto cuidará da instalação do novo banco de dados. Para tratar o upgrade da versão 1.0 para a versão 1.1 em sistemas onde a versão anterior já se encontrar instalada, adicione uma nova pasta ao diretório Upgrade e dê a ela o mesmo nome da versão anterior, como "1.0". Essa pasta armazenará os scripts de upgrade da versão 1.0 para a 1.1. As pastas de upgrade devem ser sempre nomeadas com o nome da versão a partir da qual o upgrade for realizado.\nSerá um pouco mais complicado quando você passar para a versão 1.2, porque até lá o seu instalador deverá ser capaz de realizar dois tipos de upgrade: da versão 1.0 para a 1.2 e da versão 1.1 para a 1.2. Assim como no exemplo anterior, você precisará adicionar uma nova pasta de upgrade ("1.1") para os scripts de upgrade da versão 1.1 para a 1.2.\nHá duas opções para os scripts de upgrade a partir da versão 1.0. Uma possibilidade é copiar todos os scripts de upgrade da versão 1.1 para a pasta 1.0 e adicioná-los à ordem de execução do script para que, depois que o instalador executar o upgrade a partir da versão 1.0, o banco de dados estará na versão 1.2. A desvantagem é que você precisará duplicar os scripts em todas as pastas de upgrade, de modo que, quando você chegar à versão 1.9, a pasta de upgrade 1.0 conterá todos os scripts das outras oito pastas (ou sejam, 1.1 a 1.8). Isto poderá ser facilitado se você usar um sistema de controle de fonte, que permita o compartilhamento de arquivos entre as pastas, mas se ficar muito complexo, como provavelmente ficará, você poderá tentar usar um método alternativo. Em vez de converter o banco de dados de qualquer versão mais antiga para a versão atual em uma só etapa, o instalador pode realizar upgrades escalonados, como da versão 1.0 para a 1.1 e, em seguida, da 1.1 para a 1.2, e assim por diante, até que chegar à versão atual, e é exatamente assim que o dbsetup funciona.\nO Dbsetup parte do princípio de que todas as pastas de upgrade contêm um arquivo de texto (chamado "next.txt"), que contém a versão para a qual o banco de dados está sofrendo o upgrade. Antes de executar o primeiro script de uma pasta de upgrade, o dbsetup lê a string de versão do arquivo next.txt e a compara com a versão corrente da instalação. Se ambas as versões combinarem, ou se a versão vinda do arquivo de texto for mais recente do que a especificada pela instalação, o instalador partirá do princípio de que esta é a última etapa do upgrade; do contrário, após fazer o upgrade dessa versão, o dbsetup passará para a pasta de upgrade correspondente à versão nova mas ainda desatualizada e repetirá as mesmas etapas, até chegar à versão corrente.\nO Dbsetup verifica também se a versão do próximo upgrade é mais recente do que a versão do upgrade anterior, para evitar condições de loop infinito. Depois de concluir um upgrade para cada versão, o dbsetup recompilará a função GetVersion para retornar a string da nova versão (para o caso de o programa de instalação encontrar um erro e abortar durante a próxima etapa de upgrade). O instalador fará cada etapa do upgrade dentro de um transação, mas esse comportamento pode ser substituído. Para ver como esse recurso é implementado, dê uma olhada na função UpgradeDatabase nos arquivos para download.\nReparo de bancos de dados\nPoderá acontecer de você enviar o instalador de bancos de dados para uma equipe de testes ou para engenheiros de produção, e descobrir mais tarde que há um bug que precisa ser corrigido. Se a versão do banco de dados não rastrear números de build ou de revisão (e não acho que deveria, porque tornará a hierarquia de pastas de upgrade difícil de manter), não fará sentido atualizar o banco de dados. Nesse caso, você deverá aplicar um script de reparo ou um hotfix. Os scripts de reparo de bancos de dados são executados somente quando o instalador detecta que a versão do banco de dados está atualizada. Eles não devem ser chamados durante a criação inicial de bancos de dados ou de upgrades de uma versão anterior, porque todas as versões feitas pelos scripts de reparo devem ser duplicadas também na criação e no upgrade dos scripts. Como os scripts de reparo podem ser aplicados repetidas vezes, devem suportar redundância. Em outras palavras, todos os scripts de reparo não devem falhar ou provocar o corrompimento dos metadados ou dos dados, se forem executados mais de uma vez.\nSeguindo a mesma idéia, lembre-se que você deve sempre fazer um backup do banco de dados antes de fazer uma instalação, para o caso de algo sair errado. Na verdade, você pode pensar na possibilidade de modificar os scripts de instalação para fazer os backups automaticamente, embora no caso de um banco de dados grande seja melhor deixar essa operação para o administrador tratá-la em separado.\nExecução de operações comuns\nComo você deve ter notado, as stored procedures e as UDFs são sempre recompiladas. Na verdade, não é preciso recompilar todos durante upgrades ou reparos mas, em vez disso, definir explicitamene os procedimentos que devem ser alterados em relação à versão anterior. Contudo, isso introduzirá uma possibilidade de erro, então, por que complicar sem necessidade? Como as stored procedures e as UDFs não afetam os dados, você poderá recompilá-los quantas vezes quiser sem qualquer efeito negativo. Não se esqueça de obter as versões mais recentes dos arquivos fonte do sistema de controle de fonte, antes de fazer o build. De modo a recompilar todas as stored procedures em uma pasta, sem executar a instalação, você deve experimentar o script isqlexec.bat que acompanha este artigo.\nÉ uma boa idéia implementar os scripts SQL de tal maneira que possam ser executados repetidas vezes. Por exemplo, um script que crie um procedimento armazenado deve primeiro verificar se essa stored procedure já existe e, se for o caso, o script deverá livrar-se da stored procedure antes de criá-la. Os scripts de criação de tabelas não devem fazer nada se as tabelas que tentarem criar já estiverem definidas. Para evitar entradas em duplicidade, os scripts de preenchimento de tabelas (com exceção dos scripts de inserção em massa) devem verificar a existência de registros antes de inseri-los nas tabelas.\nO Query Analyzer oferece diversos modelos para montar stored procedures e outros objetos de metadados. Basta selecionar a opção de menu File | New (que não deve ser confundida com o botão da barra de ferramentas New Query, que apresenta o mesmo ícone), e você verá todas as categorias de modelos disponíveis. Normalmente cada categoria de modelo oferece diversas versões de um modelo.\nUm programa de instalação robusto deve desfazer as alterações caso ocorra algum erro durante a instalação. A mesma regra deve ser aplicada aos instaladores de bancos de dados, de modo que se o instalador encontrar um erro durante a instalação inicial do banco de dados, cancelará a instalação e descartará o banco de dados, que é como o dbsetup funciona. Os erros gerados durante os upgrades podem causar mais danos do que os erros ocorridos durante a instalação original, porque podem deixar o banco de dados em um es tado inconsistente. Se ocorrer um erro durante o upgrade do banco de dados, o instalador não poderá simplesmente descartar o banco de dados. Se isso for feito causará a perda de dados, já que o banco de dados já estava lá antes de o instalador ser executado. Uma opção ideal seria voltar todas as operações executadas durante o upgrade, antes da ocorrência do erro, mas isso exigirá que todas as operações de upgrade sejam executadas dentro de uma transação. Dependendo do número de etapas do upgrade e dos dados afetados, isso poderá causar muita sobrecarga. Uma alternativa menos robusta mas razoavelmente aceitável seria fazer o backup do banco de dados antes do upgrade (o que deve ser feito, de qualquer forma) e, se o upgrade falhar, simplesmente restaurar o banco de dados a partir do backup. Como os erros de upgrade de bancos de dados ocorrem principalmente devido a erros de programação, e devem ser detectados durante os testes, esta opção funciona na maioria do casos. Por padrão, o dbsetup usa upgrades transacionais, mas esse comportamento pode ser desativado pela opção de linha de comando /notran.\nPara ilustrar o uso das técnicas de instalação de bancos de dados que acabei de apresentar, deixe-me explicar como as empreguei para implementar um programa de instalação para um dos aplicativos corporativos que minha equipe suporta atualmente. O instalador trata diversos aplicativos, que fazem parte de um único produto. Esses aplicativos incluem doze serviços do Windows, um filtro ISAPI, três websites, sete objetos COM, quatro ferramentas GUI, diversos componentes misturados, como DLLs compartilhadas, e quatro bancos de dados. O banco de dados maior consiste em aproximadamente 70 tabelas e cerca de 400 stored procedures. Devido ao tamanho do produto e à complexidade dos métodos anteriores de instalação, o principal objetivo do novo instalador era simplificar o processo, tornando-o mais rápido e livre de problemas. O procedimento de instalação do banco de dados segue as mesmas etapas que o dbsetup, mas ao contrário deste último, ele é implementado como parte de um programa de instalação maior, escrito no InstallShield Professional 6.x.\nAgora vamos analisar o funcionamento do instalador. Primeiro, o usuário especifica que banco de dados irá instalar, selecionando uma caixa de opção correspondente na árvore componente (ou a árvore "feature" na linguagem do MSI) da caixa de diálogo de instalação personalizada. Quando o programa de instalação detectar que um banco de dados deverá ser instalado, copiará todos os scripts do banco de dados para um diretório temporário, criando uma hierarquia de pastas semelhante à que descrevi anteriormente. O instalador usa um diretório independente para armazenar os arquivos de cada banco de dados selecionado. Como os scripts de banco de dados são necessários somente durante o processo de instalação, o instalador os exclui da pasta temporária no final da instalação.\nDepois que os arquivos do banco de dados forem copiados para uma pasta temporária, o programa de instalação disparará um evento específico da instalação, definido pelo programa de instalação para esse banco de dados. Quando o evento for acionado, chamará um handler de evento implementado no InstallScript. O script contém oito handlers de evento específicos de bancos de dados: um para instalar e outro para desinstalar cada um dos quatro bancos de dados. Todos os eventos de instalação definidos para cada um dos quatro bancos de dados seguem a mesma lógica. A única diferença é que usam pastas raiz distintas, contendo scripts de bancos de dados como pontos de partida. Quando for chamado um handler de evento de instalação de banco de dados, ele primeiro verificará as variáveis globais para ver se o InstallScript já conta com uma conexão com o banco de dados. Se não houver, o InstallScript pedirá ao usuário para definir o nome do servidor do banco de dados e as credenciais do administrador do SQL. Se o script não conseguir conectar-se ao servidor de SQL com as credenciais especificadas e as informações de conexão, pedirá ao usuário que as insira novamente. Com a conexão bem-sucedida, o InstallScript salva o objeto da conexão em uma variável global, para o caso de um outro banco de dados ser selecionado para uma operação de instalação.\nApós conectar-se com o servidor do banco de dados, o instalador verificará a existência do banco de dados especificado. Se não existir, pedirá ao usuário que selecione o local do banco de dados e dos arquivos de log de transação, e criará o dispositivo do banco de dados usando valores padrão razoáveis para outros parâmetros do banco de dados, como o crescimento do banco de dados. Decidi não pedir ao usuário qualquer informação além da localização dos arquivos do banco de dados, porque outras configurações do banco de dados podem ser facilmente alteradas pelo administrador depois que o banco de dados tiver sido instalado, e poderão ser ajustados posteriormente, de qualquer forma. O instalador dá ao usuário uma opção de deixar os bancos de dados intactos durante a desinstalação, ou descartá-los do sistema. Ao realizar a instalação, o upgrade ou o reparo, o programa de instalação segue as mesmas etapas que descrevi aqui.\nCertas etapas da instalação, como a compilação de 400 stored procedures podem demorar um pouco. Para informar o usuário sobre o andamento da instalação, o instalador apresenta uma mensagem de status para cada operação realizada, como "Compilando a stored procedure GetUserListâ€¦" Nomear os scripts SQL com os mesmos nomes dos objetos de metadados que criarem me permitirá apresentar informações corretas nas mensagens de informação. Se ocorrer um erro durante a execução dos scripts SQL, o instalador apresentará uma caixa de diálogo com uma mensagem de erro detalhada, um trecho do lote T-SQL malsucedido, o nome do arquivo e a linha onde o erro ocorreu. Quaisquer erros que ocorrerem durante a instalação do SQL fará com que o processo de instalação seja cancelado.\nUma operação que não mencionei anteriormente, que este instalador deverá executar, é registrar uma stored procedure estendida. Essa operação é mais complicada do que outras etapas da instalação, porque requer a coordenação entre o instalador e o script de registro. Vamos analisar agora o funcionamento do registro da stored procedure estendida.\nPrimeiramente, uma DLL que implementar a stored procedure estendida deverá ser copiada para o host do SQL Server. O registro propriamente dito pode ser executado em um script SQL estático por meio da stored procedure sp_addextendedproc, mas o principal problema com este método é que a instrução T-SQL que chama o sp_addextendedproc deve especificar o caminho completo até o arquivo da DLL, que pode se alterar dependendo do ambiente em que o banco de dados for instalado (geralmente os desenvolvedores de bancos de dados não sabem onde os arquivos do aplicativo serão colocados nos ambientes de teste, pré-produção ou produção). Para resolver esse problema, em vez de especificar o caminho completo até o arquivo da DLL, referenciei o script pelo nome, como mostrado aqui:\nexec sp_addextendedproc 'xp_myproc', 'XPMyProc.dll'\nSe o arquivo da DLL não contiver a informação completa do caminho, o SQL Server partirá do princípio de que encontra-se na pasta BINN do diretório de programa do SQL Server. A próxima etapa será colocar esse arquivo lá; isso é uma tarefa para o InstallShield. Eu associei a DLL do procedimento armazenado estendido aos componentes do banco de dados, usando um grupo de arquivos especial. Ao contrário do grupo de arquivos comuns do banco de dados que contém os scripts de instalação que serão copiados para uma pasta temporária e removidos no fim da instalação, o grupo de arquivos do procedimento armazenado estendido não será excluído. O programa de instalação associa esse arquivo à pasta BINN subfolder de um diretório, cuja localização é determinada no momento da instalação, utilizando o valor de SQLPath sob a chave de registro HKEY_LOCAL_MACHINE\_SOFTWARE\_Microsoft\_MSSQLServer\_Setup. Essa chave armazena o caminho até à pasta raiz dos arquivos de programa do SQL Server. Como a capacidade de instalar stored procedures estendidas baseia-se na tecnologia da instalação, não me importei em implementá-la no dbsetup.\nBasear o instalador na tecnologia mais antiga do InstallShield proporcionou diversas vantagens importantes. Primeiramente, como o InstallScript oferece todos os recursos necessários para executar as operações relevantes para a instalação do banco de dados, como chamar objetos COM, obter informações de erro, pedir informações ao usuário e exibir caixas de diálogo Selecionar arquivo ou pasta, me foi possível implementar todas as operações da instalação do banco em um projeto do InstallShield, e não precisei manter quaisquer arquivos de instalação ou aplicativos de ajuda adicionais. Outra vantagem foi ser capaz de controlar o processo de instalação a partir de uma única fonte. Ter todas as operações definidas em alguns arquivos do InstallScript files dentro do mesmo projeto, onde todas as funções e handlers de eventos pudessem acessar facilmente variáveis globais e configurações de instalação, ajudou a reduzir o trabalho de programação. Isto também contribuiu para uma melhor experiência do usuário. Como o instalador informa o usuário sobre o andamento do processo na mesma caixa de diálogo que o status da instalação, o processo parece mais simples do que seria se o instalador fosse projetado para iniciar algumas operações em janelas pop-up irritantes.\nOutra vantagem da instalação do InstallShield é a facilidade de implementação de upgrades. O instalador usa o mesmo código de produto, permitindo que todos os upgrades sejam realizados sem que o usuário tenha que desinstalar e reinstalar o aplicativo. Não é preciso que o usuário memorize quaisquer parâmetros de linha de comandos para iniciar o programa de instalação no modo de upgrade ou reparo. Depois que o usuário der um duplo clique no arquivo setup.exe, o InstallShield detectará o modo em que precisará ser executado e não confundirá o usuário com mensagens de erro reclamando que o produto já está instalado.\nEmbora o método geral que descrevi e o dbsetup de exemplo que acompanha este artigo devem ser suficientes para a maioria das instalações de bancos de dados, há algumas limitações de que você deve estar ciente, uma das quais sendo a incapacidade de criar arquivos múltiplos de dados ou de log de transações, durante a criação de bancos de dados. Somente as configurações padrão para as opções de criação da base de dados são suportadas, como o tamanho máximo, o crescimento dos arquivos de dados ou de logs de transações e operações de cópia em massa.\nAlém disso, não há suporte a XML, o que é uma pena, já que provavelmente o XML deverá ganhar maior popularidade com o lançamento do SQL Server 2005. Finalmente, uma pessoa que executar a instalação deverá certificar-se de que não há qualquer aplicativo ou usuário conectado ao banco de dados durante a instalação. Contudo, essas limitações não deverão ser difíceis de resolver.\nSe você quiser evitar ter que lidar com problemas de instalação de bancos de dados, considere a possibilidade de implementar um instalador genérico. Eliminar operações manuais do procedimento de instalação do banco de dados ajudará a evitar erros e a melhorar a produtividade. Se o banco de dados exigir um método não ortodoxo, talvez seja preciso você passar um pouco mais de tempo implementando o programa de instalação, mas a boa notícia é que se você fizer certo uma vez, poderá reutilizá-lo em outros projetos.\nDownload disponível em www.neoficio.com.br/msdn CustomDatabaseInstaller.exe (135KB)\nPor Alek Em 2009


MEMÓRIAS...e outras coisas...: Concurso para obras de 2,2 milhões na Escola Básica e Secundária de Carrazeda aberto\nConcurso para obras de 2,2 milhões na Escola Básica e Secundária de Carrazeda aberto\nA câmara municipal de Carrazeda de Ansiães abriu concurso para as obras de requalificação e modernização da Escola Básica 2, 3 e Secundária de Carrazeda.\nTrata-se de um investimento de dois milhões e duzentos mil euros e era há muito tempo necessário, segundo o presidente do Município, José Luís Correia:\n“Vamos promover o concurso de reabilitação da escola secundária. É uma intervenção que já devia ter sido feita há alguns anos porque as condições são mesmo degradantes, no entanto, o município de Carrazeda assumiu perante o ministério da Educação a execução das obras, nãos sendo propriedade da câmara municipal o edifício, o que nos leva a suportar um encargo de 150 mil euros em propriedade que não é nossa”, frisou.\nAs obras previstas pretendem remodelar praticamente todas as estruturas do parque escolar.\n“A remodelação de todas as instalações, desde cobertura, caixilharia, pavilhão gimnodesportivo, vai ficar como um escola nova. Já há anos largos que devia ter sido intervencionada. Esta intervenção é a possível e uma intervenção razoável, claro que nunca podemos ficar satisfeitos”, considerou.\nPara já, está a aberto o concurso para a remodelação da Escola Básica 2, 3 e Secundária de Carrazeda.


Ofertas de aluguel de carros da Dollar Rent A Car em Rolândia | Expedia\nAluguel de carro da Dollar Rent A Car em Rolândia\nTudo o que você precisa saber sobre aluguel de carros da Dollar Rent A Car no Rolândia\nQuais são as vantagens de alugar um carro da Dollar Rent A Car em Rolândia com a Expedia.com.br?\nVocê pode encontrar ofertas incríveis na Expedia.com.br em Rolândia, Paraná com a Dollar Rent A Car. Além disso, pode escolher os locais de retirada e entrega. Aproveite o ótimo inventário de carros, os descontos especiais e o excelente serviço de atendimento ao cliente.\nComo posso conseguir as melhores ofertas da Dollar Rent A Car em Rolândia?\nDescubra ótimas ofertas de aluguel de carros com o melhor preço na Expedia.com.br com a Dollar Rent A Car em Rolândia. A Dollar Rent A Car oferece diversos tipos de carros. Os preços variam de acordo com as datas de viagem e o local de retirada. Geralmente, os carros econômicos ou compactos são mais baratos. Para ver outras ótimas ofertas de todos os nossos fornecedores, confira a nossa página principal de aluguel de carros em Rolândia.\nOnde estão os locais de retirada da Dollar Rent A Car em Rolândia?\nHá vários locais da Dollar Rent A Car em Rolândia. Escolha o local de retirada e entrega mais conveniente para você. A maior seleção de carros geralmente está disponível no aeroporto ou no centro da cidade. As filiais nos bairros garantem que você não precise ir muito longe. Role para baixo para ver as opções de locais para a área.\nQue tipos de carro posso alugar na Dollar Rent A Car em Rolândia?\nA Dollar Rent A Car tem muitos carros diferentes. Embora o inventário da Dollar Rent A Car varie de acordo com o local de retirada e entrega em Rolândia, você encontra uma ótima seleção para atender às suas necessidades. Encontre opções de acordo com o seu orçamento e as suas preferências. Escolha entre carros econômicos, de luxo, médios, utilitários esportivos, conversíveis, híbridos, esportivos, sedans e muito mais. Onde quer que você vá, a Expedia.com.br ajuda você a chegar lá.\nEncontre locais de retirada de carro da Dollar Rent A Car próximos de Rolândia


O MIRANTE | Toureiro Mário Coelho imortalizado com estátua em Vila Franca de Xira\nEdição de 2019.10.24 1ª página Cultura e Lazer Toureiro Mário Coelho imortalizado ...\nVilafranquense Mário Coelho toureou mais de três mil animais nas arenas\nVestido a rigor e de braços levantados Mário Coelho foi imortalizado numa estátua da autoria de Paulo Moura. O toureiro de Vila Franca de Xira é considerado uma personalidade ímpar da tauromaquia nacional e internacional. A peça escultórica instalada no Largo Conde Ferreira, em Vila Franca de Xira, foi inaugurada no sábado, 19 de Outubro, e com ela, a Câmara de Vila Franca de Xira vem dar seguimento à decisão de distinguir figuras de relevo ligadas à tauromaquia do concelho, designadamente dos matadores de touros que marcaram as últimas décadas da história da festa brava.\nAdmiradores, autarcas do concelho, amigos e colegas de profissão acompanharam Mário Coelho nesta homenagem, aquela que considera ser a mais sentida que recebeu nos seus 84 anos de vida. Numa analogia, referiu que aquela estátua, situada entre a sua casa, a primeira escola que frequentou e a igreja onde se fez homem de fé representa “os três pilares da tauromaquia: parar, templar e mandar”. Sobre aquele lugar, que foi palco das suas brincadeiras de infância, lembrou: “Ainda tenho nos ouvidos as gargalhadas e a alegria numa época em que as crianças podiam brincar de noite e de dia”.\nO presidente do município, Alberto Mesquita, indicou que aquela era uma justa homenagem ao toureiro, “por tudo o que fez através da sua arte” e ter conseguido “projectar o nome de Vila Franca de Xira e afirmar a cultura ligada à tauromaquia”. Pelas palavras de João Santos, presidente da Junta de Vila Franca de Xira, o toureiro vilafranquense foi “um dos melhores de sempre na arte de tourear”.\nToureou mais de três mil touros em 40 anos\nMário Coelho, natural de Vila Franca de Xira, toureou durante 40 anos. A sua carreira como novilheiro, bandarilheiro e matador de touros passou por França, Marrocos, Canadá, Estados Unidos da América, Angola, Moçambique e por toda a América Latina. Participou em mais de um milhar de corridas e toureou 3.149 touros. A sua casa museu, situada na Travessa do Alecrim, tem um acervo composto por mais de 900 peças, avaliadas em um milhão e 234 mil euros. Em 2015, a Câmara de Vila Franca de Xira prestou-lhe homenagem com a exposição “Mário Coelho da Prata ao Ouro. A vida de um toureiro”, no Celeiro da Patriarcal.


Mega-Sena paga R$ 35 milhões neste sábado; veja os números sorteados - AC JORNAL\nLeia Também: Juíza não vê riscos à saúde pública e mantém provas do ENEM no Acre, neste domingo\n“A Receita tem acesso a informações como informes disponibilizados pelas fontes pagadoras de rendimentos, informes das operadoras de saúde, informações constantes dos cartórios de registros de imóveis, Secretaria da Fazenda, e outras”, explica a advogada Vanessa Cardoso, sócia da área tributária do Sfera Law.\nVeja quais são os principais erros 1. Erro de digitação\nLeia Também: Candidatos não poderão ser presos a partir deste sábado\nVeja quais documentos necessários Foto: Arte O Globo Toda atenção é pouco na hora de escolher a ficha ao qual deve fazer a declaração. Muitos contribuintes se confundem nessa tarefa e as vezes acabam declarando rendimentos tributáveis como isentos, por exemplo.\nRecebidos precisam swer guardados por cinco anos Foto: Arte O Globo Declarar as deduções de despesas médicas de forma incorreta, como informar despesas que não são permitidas pela legislação fiscal, despesas que já foram reembolsadas pelo plano de saúde, indicação de despesas médicas sem a correspondente declaração dos respectivos rendimentos pelo médico ou clínica nas respectivas declarações de imposto de renda.\nO especialista em impostos da EY, Antônio Gil, dá dicas ao contribuinte de com evitar cair na malha fina. O processo de fiscalização da Receita Federal pode acontecer em até cinco anos após a entrega da declaração do imposto de renda. Para não cair na malha fina, é necessário prestar atenção na declaração dos rendimentos tributáveis e nas deduções.\nLeia Também: Governo estuda derrubar MP que prevê gratuidade de bagagens em aéreas\nOmissão de rendimen\n“Quando o declarante tiver recebido a notificação da Receita Federal, será preciso esclarecer, por meio de anexação da documentação comprobatória ou, apresentar defesa em caso de lavratura “automática” de auto de infração pela Receita Federal”, diz a especialista.


São Marinho: saiba como funciona uma diarquia | Politize!\nTorres em São Marinho. Foto: Wikimedia\nAntes de apresentar o sistema de uma diarquia, você conhece São Marinho? São Marinho (ou San Marino) é um pequeno país europeu de apenas 61 km² e 33 mil habitantes, cercado pela Itália. Ele foi fundado em 301 no Monte Titano, pelo cristão Marinus – daí o nome São Marinho. O território não sofre alterações desde 1463, quando o papa entregou ao país os municípios de Fiorentino, Montegiardino e Serravalle. Esse país também é a república mais antiga ainda existente.\nCOMO É O SISTEMA POLÍTICO DE SÃO MARINHO?\nVocê conhece o sistema político desse país? São Marinho é uma república parlamentarista. Certo, mas então o que há de diferente em seu sistema político? Há dois chefes de Estado ao mesmo tempo, trabalhando em conjunto. Por isso, é chamada de diarquia. Calma. Não é difícil entender como funciona, desde que vejamos isso por partes.\nAo contrário da maioria dos países, São Marinho não possui o que chamamos de “uma constituição escrita”. Isso quer dizer que você não pode ir a uma biblioteca ou livraria e procurar um livro chamado “Constituição de São Marinho”, porque ela não está codificada em um único documento. Portanto, a Constituição é formada por:\nAs Leis de 1600, que deram início ao sistema legal atual e definem de forma bem específica o sistema político do país;\nA Declaração de Direitos (Civis e Princípios Fundamentais) de 1974, que reafirma o sistema político, de forma mais geral, rejeitando qualquer conceito de Estado totalitário e tornando invioláveis os direitos humanos e a liberdade de expressão, por exemplo.\nLeia mais: religião e política não se discutem?\nO PODER LEGISLATIVO EM SÃO MARINHO\nAs eleições legislativas ocorrem a cada cinco anos. O Poder Legislativo é exercido, a nível nacional, pelo parlamento de 60 membros. Esse parlamento se chama Câmara Grande e Geral, com uma única casa (unicameral). Isso quer dizer que uma lei não será feita pelos deputados e revisada pelos senadores, por exemplo. Não há tal distinção. Sendo assim, pode-se dizer que por lá o parlamento é “uma coisa só”. A nível local, o Legislativo é exercido pelas câmaras de vereadores.\nA eleição do Legislativo é feita sob o sistema de representação proporcional e do método d’Hondt, assim como os deputados federais no Brasil. Por esse método de distribuição de votos e mandatos, o partido político que conseguir, por exemplo, 30% dos votos, terá 30% dos assentos do parlamento. Os candidatos ao parlamento devem ser alfabetizados, eleitores, cidadãos e residentes de São Marinho e devem ter 21 anos completos na data da eleição. O parlamento tem as funções de legislar, coordenar a política do governo e nomear boa parte das figuras políticas, como os secretários de Estado.\nO sistema político de São Marinho apresenta diversos partidos políticos. Porém, poucos partidos atingem uma parcela considerável dos votos nas eleições e, como se trata do parlamentarismo, é necessário formar a maioria absoluta no parlamento para governar. Por isso, normalmente as eleições parlamentares são disputadas por duas coalizões (ou coligações), que devem ser formadas e apresentadas antes da eleição.\nApesar de São Marinho ser um país pequeno, ele é dividido em 9 municípios: Città di San Marino (a capital), Borge Maggiore, Serravalle, Domagnano, Fiorentino, Acquaviva, Faetano, Montegiardino e Chiesanuova. Cada município é legislado por sua respectiva câmara de vereadores, eleita a cada 4 anos.\nEntenda: como é a divisão dos três poderes?\nO PODER EXECUTIVO EM SÃO MARINHO\nO executivo é exercido, primeiro, pelos dois chefes de Estado, conhecidos como capitães-regentes. Os capitães-regentes não constituem uma chapa eleitoral, em que há o principal e o vice-candidato, por exemplo. Inspirados em um modelo da República Romana, os parlamentares de São Marinho escolhem para chefe de Estado dois candidatos de partidos políticos opostos entre si, de forma que cada parlamentar escreve os nomes de dois colegas em uma cédula. O par que conseguir a maioria absoluta das cédulas vence e deve governar de maneira conjunta, em consenso, em gestões de 6 meses. Além disso, é proibido ocupar mais de um mandato consecutivo, havendo um intervalo de tempo para que se possa voltar ao cargo.\nOs capitães-regentes têm como funções presidir o próprio parlamento, presidir e representar o país e garantir a ordem constitucional. Os candidatos a capitão-regente devem ter, no mínimo, 25 anos completos na data da eleição, não podem ter ocupado tal cargo nos últimos 3 anos e devem ser cidadãos nascidos em São Marinho. Depois deles vem o governo em si, chamado de Congresso do Estado, que é formado pelos secretários de Estado, escolhidos pelo parlamento dentre os próprios membros, para mandatos de 5 anos. Além disso, há cerca de 10 secretários de Estado em São Marinho.\nNo primeiro semestre de 2017, os capitães-regentes foram Mimma Zavoli, do partido Civic 10, e Vanessa D’Ambrosio, do partido Esquerda Unida. No segundo semestre, a função é exercida por Enrico Carattoni, do partido Esquerda do Socialismo Democrático, e por Matteo Fiorini, do partido Aliança Popular.\nAlém dos capitães-regentes, há os prefeitos: cada município possui seu prefeito, chamado de capitão municipal e eleito pela respectiva Câmara de Vereadores a cada 2 anos. Além de administrar o seu município, o prefeito preside a Câmara de Vereadores da qual faz parte.\nO PODER JUDICIÁRIO EM SÃO MARINHO\nO Poder Judiciário é exercido por três tribunais: o civil, o criminal e o supremo. Apesar disso, a maioria dos casos é julgada nos tribunais menores e por não-cidadãos, geralmente magistrados italianos, que são nomeados pelo parlamento de São Marino. O objetivo disso é buscar a imparcialidade.\nO tribunal civil lida com situações envolvendo bens, heranças e família. Já o tribunal criminal lida com crimes de modo geral. O supremo tribunal, chamado de Câmara dos Doze, é formado por 12 membros, como o nome já diz, também eleito pelo parlamento e dentre os membros do mesmo, para mandatos de 5 anos.\nVamos revisar a estrutura dos três poderes no país?\nGostou de conhecer o sistema político de São Marinho? Deixe suas dúvidas e sugestões nos comentários!\nReferências: BBC News; Decreto sobre direitos fundamentais (inglês); Candidaturas em São Marinho (italiano); Sistema Judicial de São Marinho (inglês); Conselhos municipais (italiano); Capitães-regentes (inglês); Parlamento de São Marinho (inglês); Eleição dos chefes de Estado (inglês).\nCarro para pessoa com deficiência física? Saiba como!\nDívida Pública Federal: saiba o que é e como ela é formada?\nIntervenção federal ou intervenção militar? Saiba a…\nRestrição do foro privilegiado: saiba o que é!\nSão Marinho: saiba como funciona uma diarquia\nÉ estudante do ensino médio e aspirante a Técnico em Saneamento, interessado, entre outros assuntos, pela Política e pela Economia.\nPor Fábio Pavan | 28 de novembro de 2017 | 0\nPolítica Internacional com as tags: diarquia, política internacional, são marinho, sistema político\nPaz de Westfália: o marco das Relações Internacionais\nQuais grupos disputam as presidências da Câmara e do Senado?\nCorte Internacional de Justiça: o que é e como funciona?\nEntenda por que o STF barrou a reeleição de presidentes do Legislativo


Crânio de Luzia é encontrado entre os escombros do Museu Nacional – Carlos Trentini\nCrânio de Luzia é encontrado entre os escombros do Museu Nacional\nPublicado porCarlos Trentini\t 19 de outubro de 2018 Deixe um comentário em Crânio de Luzia é encontrado entre os escombros do Museu Nacional\nUma boa notícia surge a respeito do incêndio que destruiu o Museu Nacional no começo de setembro. A equipe de pesquisa da instituição encontrou, entre os escombros, o crânio de Luzia, assim chamado o fóssil humano mais antigo encontrado nas Américas. Segundo Cláudia Rodrigues, responsável pela equipe que busca escavar os escombros do museu, houve deterioração por conta do incêndio.\nA peça foi encontrada fragmentada, mas a equipe deve trabalhar em tentar reconstituir o que é considerado um patrimônio da humanidade. “Nós conseguimos recuperar o crânio de Luzia. É claro que, em virtude do acontecimento, sofreu algumas alterações, tem alguns danos. Mas nós estamos comemorando. O crânio foi encontrado fragmentado, e a gente vai trabalhar na reconstituição. Pelo menos, 80% dos fragmentos foram identificados”, explica Rodrigues.\nPara o grupo, embora fragmentado, o crânio de Luzia está menos danificado do que a equipe imaginava. A peça estava perdida desde o incêndio que tomou conta do Museu Nacional no dia 2 de setembro.\nO crânio identificado pertenceu a um ser humano do sexo feminino que teria vivido há mais de 11 mil anos. Além dele, havia no Museu Nacional toda uma coleção de objetos egípcios, o quais já foram oficialmente perdidos com o incêndio.\nVárias regiões do museu foram também danificadas, como as de arqueologia e antropologia. Havia itens remanescentes dos chamados povos botocudos e guajajaras, exterminados pelos brancos, o quais se perderam completamente, também. Toda a região onde havia coleções de vertebrados, invertebrados e insetos ficou preservada.\nAs equipes devem seguir em busca de mais outros itens que podem ter sobrevivido à tragédia do mês passado.\nPublicado porCarlos Trentini 19 de outubro de 2018 Publicado emCanaltechTags: canaltech, Tecnologia e curiosidades\nEvento da Apple faz OnePlus antecipar lançamento do 6T para o dia 29\nXiaomi Mi Mix 3 deve gravar vídeos em câmera lenta a 960 fps


Palavras Inatas: Vitória\nEste texto na verdade é uma redação de vestibular. Feito em 2005, quando prestei meu vestibular, ele ficou entre as 15 melhores redações da PUC-Campinas. Vão notar que poderia ter melhorado muita coisa, mas deixei como está, pois gosto dele assim. Sua simplicidade mostra que tenho que melhorar e desperta em mim um grande carinho por estas palavras. A proposta era desenvolver uma narração com base em um anúncio de jornal que dizia "Procura-se aflitivamente um pobre caderninho azul que tem escrito na capa a palavra 'endereços' e dentro está todo sujo, rabiscado e velho". O resultado, eu divido com vocês...\nEra uma tarde fria de sábado. O sol não aparecera o dia todo, escondido pelas nuvens que jogavam uma fina garoa sobre toda a cidade. As pessoas estavam, na sua maioria, em casa. A rua sete estava deserta, exceto por uma bela figura feminina que surgia entre a neblina que se formava, andando apressada, mas cautelosamente sobre os paralelepípedos. Era uma senhora de meia idade, de cabelos acinzentados e olhos fundos e brilhantes. Usava uma blusa branca e um jeans desbotado. Na algibeira, um jornal dobrado. Usava ainda um pequeno gorro de lã e sapatos pretos já gastos.\nChegando ao portão do número doze, entrou no garrido alpendre e bateu palmas. Quase que imediatamente a porta se abriu, revelando um robusto homem, também de meia idade, com a barba feita e cabelos bem cortados. Trajava uma calça preta e um paletó cinza sobre uma camisa muito branca. Tinha sapatos lustrosos que, juntamente com a roupa, davam-lhe uma aparência muito elegante.\nA senhora fitou-o parecendo admirada. Segundos depois, ao notar que o cavalheiro também a olhava, sorrindo, retirou o jornal do bolso e entregou-lhe.\n- Vi o seu anúncio no jornal – disse, parecendo um pouco nervosa – eu encontrei o seu caderno, estava na minha lanchonete. O senhor deve tê-lo esquecido lá. Bem, – hesitou um pouco ao observar certa inquietação no homem que continuava sorridente – acho que o senhor está de saída, desculpe.\n- Imagina! Não estava de saída, certamente – disse de imediato. Venha, entre, tome um café comigo, para agradecer pelo caderno - Ditas estas palavras seu sorriso aumentou ainda mais.\n- Desculpe-me, mas não poderia, estou um pouco atrasada, outra hora talvez – disse-lhe educadamente, mas tropeçando nas palavras.\n- Então pode ser em outro momento, não? – insistiu.\nA senhora pareceu refletir um pouco. Em seguida, disse-lhe:\n- É, tudo bem... Pode ser amanhã? Como é domingo, posso vir após a missa. Digo, se não for incomodar.\n- De maneira alguma! – Disse prontamente.\n- Então pode ser às onze... Desculpe vir assim, sem avisar, mas o senhor não deixou telefone no anúncio, foi o pessoal do jornal que me deu seu endereço. Vim o mais depressa que pude, o aviso parecia urgente. – Disse, observando os olhos do homem, que miravam os seus, brilhando.\nEle pareceu meio desconcertado, e estava certamente. Diante da fuga das palavras, sorriu novamente e foi correspondido.\nA senhora entregou-lhe o pequeno caderno. Ambos pararam por um instante se olhando, o que para ele pareceu um bom tempo. Ela se despediu e saiu.\nEle viu a mulher se distanciar e ficou olhando-a até que sumisse na esquina. Em seguida, jogou o caderninho porta adentro e deu um grande suspiro.\n- Se ela soubesse o trabalho que me deu perder este caderno... E ainda mais fazê-la encontrá-lo. Esse tal de amor mexe mesmo com a gente...\nE fechou a porta, ansioso pelo dia seguinte.\nRabiscado por Hélio Dragoni às 21:14\nQue trem de redação mais linda!\nMerecido estar entre as 15 melhores redações... Me surpreendi bastante com o final. E depois me imaginei na situação dele, perder o caderno em um lugar estratégico para alguém em especial encontrar. Difícil.\nMas o amor é assim, quando é fácil demais torna-se desinteressante!\nTenho tentado perder o meu caderno, mas meus braços insistem em querer segurá-lo. Acabo sendo minha pior distração na busca pelo amor.\nSua redação está incrível, foi merecido ter ficado entre as 15 melhores sem dúvida alguma. Com certeza quem leu e deu nota à sua redação sentiu-se muito bem por ler algo tão especial.\nObrigado a todos, fico muito feliz pelos comentários, principalmente por gostar tanto deste texto...\nMarcelo, quase tão linda quanto seus textos... =]\nAu, falou certo, amor difícil é amos gostoso.\nFelipe, todos nós seguramos um pouco nossos "cadernos", por medo ou insegurança, talvez. No momento certo, sei que você não será mais distração... Torço por isso.\nTexto muito bom.Parabens pelo seu poder na escrita.\nSe puder da uma passadinha no meu blog tbm.\nSerei frequentador assído do seu.


Vejam esse timbre ! - Cifra Club\nVejam esse timbre !\nCaramba, legal hein! Aquisição sua?\nhum... tocou o coração!\nver o timbre é dificil\nvou tentar mas não garanto nada\nbrincadeiras a parte,achei muito bom mesmo,fantastico!\ntem um clean bem bonito e a distorção dele tambm é legal\nnunca tinha visto um amp dessa marca,roxy.\nmas me diga,é valvulado ou transistorizado?\nAchei a distorção uma bosta.. Mas o clean muito bonito.\nÉ um um ampli que estou vendendo, ai fiz esse video pra por no ML. (Não to fazendo propaganda...hehe)\nO ampli é transistorizado.\ncomentem mais ai...\namplificador muito bom !!\nno clean alem do reverb.. você usou algum efeito ?\né um clean muito bonito mesmo !!\nquando você gravou a distorção continuou utilizando uma guitarra com singles-coil ou utilizou uma com hambuckers ?\nexcelente amplificador =)\nSomente o reverb do amp.\nUsei a mesma guitarra em todas as gravações, uma fender highway one SSS de 2004.\nPô que legal, excelente clean e o drive é legal também (levando em conta que é transistorizado (não costumo a gostar dos drives de transistorizados))\nGostei do amplificador !!\nQueria por uma tagima T735 nesses e por uma fender em um nitrous drive....\nSeria uma boa experiencia!\nEstou querendo comprar um Fender Blues Deluxe, será que consigo timbres melhores ??\npo, ninguém ??\nVeterano # nov/11 · Editado por: Alex guitar man\ncara, se você posse como titulo:\nOlha esse timbre do valvulado!\no pessoal ia falar que isso é som bom, válvula é tudo, vence qualquer clean, dai você falava que era ss!\nMas não vence meu nitrous drive :P\nNossa cara, gostei muito, tanto do clean quanto da dist! Parabens!!\nnossa cara, o clean disso tá animal, eu achei a distorção bem legal também, mas é meio fraca sei la, mas gostei muito do timbre disso ae\nA distorçao não é fraca, ela apenas não é high gain pelo que parece, oque nao é problema algum, pelo contrario, fica bem mais orgânica. Quanto ao timbre do drive, sabe-se que é bem mais difícil conseguir timbres distorcidos do que limpos quando está se microfonando, pois tem que se achar o mic ideal pra aquele tipo de timbre, posicionamento milimétrico perante o cone, etc (muitos consideram essa parte quase uma arte, rsrs).\nVeterano # nov/11 · Editado por: guigon\nÉ possível conseguir timbres high gain sim, pra você ter uma ideia, a ultima gravação (música revanche do Fresno) eu usei o canal Lead com o ganho no 4. E o shape entre 4 e 5, shape é um knob do amp que dá um corte nos médios.\nAchei o timbre foda, ele tem loop de efeitos?\nO amplificador tem 3 canais, sendo 1 clean com equalização e volume independente, 2 canais de drive, sendo que um é mais pesado e tem o controle de shape, que diminui os médios, isso é muito bom para bases pesadas...tem reverb de mola e loop de efeitos e você ainda pode ligar um footswitch pra alterar os canais.\nTópicos relacionados a Vejam esse timbre !


Fundação Allan Kardec - Como a Psiquiatria Geriátrica Allan Kardec trata pacientes no processo de envelhecimento.\nBLOG Como a Psiquiatria Geriátrica Allan Kardec trata pacientes no processo de envelhecimento.\nComo a Psiquiatria Geriátrica Allan Kardec trata pacientes no processo de envelhecimento.\nNo Brasil, quase 40% dos idosos sofrem com doenças crônicas e 29,8% são acometidos por mais de uma enfermidade. Dessa forma, quase 70% da população na terceira idade apresenta condições de saúde que podem contribuir para quadros depressivos, fator que confirma a importância da psiquiatria geriátrica.\nEsta especialidade é responsável por entender os problemas e necessidades de cada paciente, estabelecendo atendimento adequado a essa população. Contudo, boa parte dos brasileiros nessa idade ainda não compreendem o psiquiatra como um profissional que deve ser considerado para sua assistência.\nNa maioria das vezes, a população masculina é a que mais negligencia sua saúde, procurando sempre médicos clínicos e poucas vezes. Ainda que as mulheres busquem atendimento com mais frequência, a psiquiatria geriátrica também não é a especialidade mais presente na vida de mulheres idosas.\nContudo, o acompanhamento com este profissional é fundamental para compreender sintomas muitas vezes não identificados corretamente pelos familiares. Por isso, no artigo de hoje, vamos mostrar como a psiquiatria geriátrica é importante e a maneira como a Fundação Allan Kardec contribui no diagnóstico e tratamento destes indivíduos de forma humanizada e adequada. Continue a leitura para conferir.\nA psiquiatria geriátrica tem como objetivo entender os processos associados ao desenvolvimento de transtornos mentais em idosos, possibilitando estabelecer o tratamento apropriado para que estes indivíduos possam voltar a ter qualidade de vida.\nQuando o especialista em psiquiatria geriátrica recebe o paciente é realizada uma avaliação adaptada ao idoso. Desta forma, é essencial conciliar as recomendações médicas, afinal, é comum que o histórico do paciente seja desumanizado no atendimento, visto que suas atitudes podem ser atribuídas a sua doença.\nNo entanto, alguns transtornos podem se apresentar com certa frequência em idosos, como distúrbios depressivos, cognitivos e fobias, contribuindo para o aumento do risco para suicídio e desenvolvimento de sintomas induzidos por medicações.\nMuitos dos transtornos mentais comuns em idosos podem ser aliviados, revertidos ou evitados com o tratamento adequado, desde que a equipe profissional seja qualificada em psiquiatria geriátrica e possa contribuir com um diagnóstico completo, avaliando tratamento mais assertivo para o quadro.\nA importância da psiquiatria geriátrica\nCom o aumento da longevidade, o número de pessoas acima de 60 anos passará de 30 milhões de brasileiros em 2050, segundo informações do IBGE (Instituto Brasileiro de Geografia e Estatística). Desta forma, a psiquiatria geriátrica se tornou uma área em ascensão na saúde.\nAlém do desenvolvimento de doenças físicas que são relacionadas com o envelhecimento, a terceira idade é acompanhada de alterações nos padrões de vida que, quando associadas a mudanças biológicas e comportamentais, contribuem para o surgimento de transtornos mentais, como depressão e demência. Um dos grandes desafios para familiares, e também para os próprios indivíduos, é realizar o diagnóstico e tratamento de questões como essas.\nAlém disso, manter a autonomia e dignidade da pessoa pode ser outra dificuldade, situação que pode piorar visto que problemas de ordem psíquica aceleram o processo de envelhecimento. Por isso, o acompanhamento com profissionais da psiquiatria geriátrica é fundamental para garantir o bem-estar e qualidade de vida do paciente. No processo de envelhecimento, as principais situações que necessitam dessa assistência para o idoso, são:\nTranstorno de humor do idoso;\nDemência e outras etiologias;\nAbuso de álcool e outras substâncias;\nPsiquiatria geriátrica Allan Kardec no processo de envelhecimento\nCom grande variedade de transtornos mentais que podem acometer a saúde da pessoa na terceira idade, o acompanhamento com um especialista se torna fundamental para que o diagnóstico adequado seja realizado, assim como a elaboração do tratamento efetivo.\nCom experiência, profissionais qualificados, estrutura adequada e exclusivo manejo do paciente geriátrico, a Psiquiatria Geriátrica Allan Kardec coloca a disposição de seus pacientes uma equipe multidisciplinar completa, auxiliando em sua recuperação mental. Confira os profissionais que integram essa equipe:\nDesenvolvida em 1922 por José Marques Garcia, a Fundação Allan Kardec é formada por um hospital psiquiátrico, hospital DIA, clínica psiquiátrica, desenvolvimento humano Inspiração, CAPS III Florecer, CAPS III Renascer, e psiquiatria geriátrica.\nAtualmente, a fundação conta com mais e 70 mil internações por ano e 335 colaboradores que atuam em mais de 10 mil metros quadrados com espaço para oficinas terapêuticas, hortas, bosques e áreas específicas para a prática de outras atividades terapêuticas.\nNeste processo de atendimento ao idoso, a Psiquiatria Geriátrica Allan Kardec oferece exclusivo manejo do paciente com o Ciclo Terapêutico. Confira as 3 etapas deste ciclo e quais as condutas realizadas em cada uma delas:\nAvaliação clínica Global;\n2. Tratamento e estabilização\nDefinição de plano terapêutico (junto a familiares e equipe);\nTratamento de comorbidades clínicas;\n3. Alta orientada\nPrescrição médica para 2 meses;\nContra-referência para segmento especializado;\nElaboração de rotina para o paciente;\nContato pós-alta para certificação de ações propostas.\nQuando procurar a psiquiatria geriátrica\nSaber o momento certo para buscar ajuda de um especialista em psiquiatria geriátrica nem sempre é fácil. No entanto, alguns sinais de alerta podem auxiliar os familiares na percepção de possíveis transtornos mentais em idosos. Conheça os principais:\nperda de interesse em atividades que eram prazerosas;\nVocê pôde conhecer um pouco mais sobre a Psiquiatria Geriátrica Allan Kardec, e como ela pode contribuir no diagnóstico e tratamento de transtornos mentais que estão relacionadas ao processo de envelhecimento.\nVocê precisa de ajuda para cuidar de um idoso que apresenta sinais de alerta para alguma doença mental?


Criando Grupo Externo no Yammer - CooperaTI\nCriando Grupo Externo no Yammer\nNesse artigo vou demonstrar como criar um grupo externo no Yammer. Com o grupo externo podemos convidar qualquer pessoa para participar enviando um convite através de um e-mail. Além das empresas, muitos grupos em faculdades, colégios e até mesmo entre amigos criam grupos para discutirem alguns assuntos e desenvolverem projetos.\nPara criar o grupo é muito simples. Primeiramente efetue o login com sua conta Yammer e clique em My Networks como na imagem abaixo:\nClique em “Create a New Network”:\nVeja que temos a opção de criar um grupo Interno e Externo. Nesse caso vamos escolher a opção “External Network”. Adicione um nome para o seu novo grupo e se quiser alguma descrição. Escolha se vai ser um grupo “Aberto” ou “Fechado” em relação a usuários que não são cadastrados. Veja também que pode marcar a última opção e permitir que o grupo padrão de sua conta, interaja com grupo externo sem ao menos enviar um convite. Clique em “Create Network”.\nPronto ! Está criado, agora é curtir, trabalhar bastante e alimentar com ótimos conteúdos.


Decoração Simples - Aposte nas dicas e deixe sua casa ainda mais linda -\nA decoração simples, que segue uma linha clean, sem muitos móveis e objetos, é excelente para quem deseja ter mais praticidade no dia a dia, especialmente na hora de arrumar a casa, mas não abre mão de deixar o imóvel charmoso e encantador.\nO diferencial desse tipo de decoração é que ele preza pelo descomplicado e eliminação de excessos, valorizando o conforto e funcionalidade. O melhor? Geralmente é mais econômico, sendo uma aposta certeira para montar espaços cheios de estilo sem estourar o orçamento.\nMas, como é possível deixar sua casa com uma decoração simples e clean? Confira aqui dicas especiais que lhe ajudarão a executar essa tarefa sem ter muito trabalho, conquistando um resultado incrível!\nDicas para montar uma decoração simples\nO primeiro passo para ter uma decoração simples é desapegar de tudo que seja excesso, o que inclui móveis e objetos pessoais que não são utilizados mais. A ideia é ter o suficiente para tornar o ambiente funcional.\nPortanto, invista somente nos móveis mais importantes para os cômodos, aqueles que são considerados essenciais. Depois, dê uma conferida em objetos decorativos e pessoais. Tudo o que não tiver mais uso deve ser descartado, para evitar sobrecarregar visualmente o ambiente e reduzir a chance de ter bagunças pela área.\nAposte em móveis clean\nUma decoração simples combina com móveis com linhas retas e limpas, por isso, deixe de lado modelos que tenham design sinuoso e muitos detalhes. Outros bons investimentos são os móveis com traçados geométricos, que dão charme para o ambiente sem grandes esforços.\nAlém de atentar ao design dos móveis, também observe o espaço interno deles, para saber se possuem capacidade de armazenar uma maior quantidade de objetos pessoais, ajudando a manter a área organizada.\nSe preferir ter mais espaço para guardar itens pessoais, no entanto não quer abrir mão de investir na decoração simples, uma boa dica é comprar móveis multifuncionais.\nÓtimos exemplos de móveis multifuncionais são camas com baú, que oferecem espaço extra para armazenar roupas de cama, sem comprometer a decoração ou organização do ambiente.\nOrganize corretamente os móveis nos espaços\nOs móveis não devem, em momento algum, obstruir a área para circulação pela casa. A ideia é ter máxima praticidade, por isso é importante distribuir essas peças com cautela.\nUma forma de organização que funciona muito bem é colocar quase todos os móveis próximos da parede, deixando a área central livre para circulação. Se restar espaços vazios, é possível valorizá-los com uma peça que realmente tenha função no cômodo, como uma luminária com design clean, mantendo a harmonia na decoração.\nUtilize as cores certas\nUma decoração simples combina com cores claras ou sóbrias, portanto, utilize tons como o branco, off white, bege e cinza de forma predominante no ambiente, bem como suas variações.\nEssas cores contribuem para que o espaço fique melhor iluminado, especialm\nente durante o dia, além de torná-lo mais agradável, combinando simplicidade e conforto visual com maestria.\nInvista em poucos e bons acessórios de decoração\nA decoração é simples, mas isso não quer dizer que os acessórios decorativos não estão liberados. É possível, sim, utilizá-los, mas sempre com cuidado, evitando excessos.\nVale a pena investir em cortinas e tapetes, especialmente os com pelo alto, que dão maior sensação de aconchego e conforto para o ambiente. Também é interessante inserir almofadas no espaço e uma luminária com design simples.\nSomente tome um cuidado ao adotar os acessórios de decoração: procure utilizar opções na mesma cartela das cores trabalhadas no ambiente. Desta forma, será possível manter a unidade visual e não sobrecarregar o espaço com muita informação.\nQuer inserir um pouco de cor nessa decoração? A melhor forma é adotando arranjos florais e de folhagens, mas sempre com parcimônia e em locais estratégicos, para não sobrecarregar o ambiente.\nUtilize um sistema de iluminação diferenciado\nA iluminação é um fator importante na decoração simples, colaborando para que o espaço fique mais aconchegante e confortável, além de mais charmoso. Por isso, não abra mão de adotar um sistema com iluminação especial.\nEm cozinhas, banheiros e lavanderias, a luz branca é a mais indicada. Já na sala e quarto, é possível utilizar um sistema que mescle a luz branca com a amarela, que garante sensação de conforto.\nEspelhos com moldura – Modelos, Como escolher e Onde colocar\nHarianne em 22/01/2022, às 11:01\nLuci em 22/01/2022, às 11:01


Sexo Bizarro - Videos porno grátis e videos de sexo online - kizi2gamer.com\nSexo Bizarro - Videos porno grátis e videos de sexo online\nO da Juliana Paes no siliconado sua anta ela sim tem os melhores peitos, os bicos so uma delcia Juju Paes forever. A principal queixa dos cientistas com relao inao dos lderes. Durante a entrevista coletiva de quarta-feira (21), a diretora-executiva do rgo, Kennette Benedict (foto acima), disse que o mundo est precisando de Aes urgentes, no de procrastinaes contnuas.\nTemos tecnologias inovadoras o suficiente para fazer um lar e um carro mais ecoeficientes. Podemos videoe a nosso favor ou nos tornarmos eternas vtimas. A urgncia real, seno vamos perder oportunidades, disse Benedict. preciso falar sobre ns, mulheres pretas. Um exemplo Sexo Bizarro - Videos porno grátis e videos de sexo online claro disso a seca que est atingindo a Regio Sudeste. At ento, os ambientalistas no queriam fazer nenhuma ligao com as mudanas climticas, mas j onoine mo dessa resistncia (em reportagem do jornal O Globo do dia 20 de janeiro).\nSendo assim, uma mudana de hbitos passa a ser urgentemente necessria, tanto no caso da gesto municipal, que precisa encarar como obrigao preparar a cidade para o calor de rachar, como no caso dos cidados comuns, que deveriam se adiantar ao anncio oficial de obrigao de racionamento de gua e energia e adotar um meio de vida mais econmico daqui por diante.\nCasamento e sexo - Portal Padom todas ffff(famosas, fodas, feias e fofas ). fffffffffffffffffffffffffffffffffffffffffff. Biizarro nos sxeo, quando eu defino a mim pornp, quando defino o espao onde eu sou com voc e o espao onde no sou, no estou negando o contato entre ns, nem estou te excluindo do contato estou ampliando nosso Sexo Bizarro - Videos porno grátis e videos de sexo online de contato.\nseios bonitos so seios naturais. esses siliconados parece mais umas bolas estufadas querendo explodir.\nH diferentes mtodos para se chegar ao topo da pirmide de renda. Um deles considera o 1 mais rico da populao brasileiros que ganham mais de R 260 mil por ano - o clculo do Instituto de Pesquisa Econmica Aplicada (Ipea), baseado em dados da Pesquisa Nacional por Amostra de Domiclios (Pnad) e da Receita Federal. Para avaliar a desigualdade de Sexo Bizarro - Videos porno grátis e videos de sexo online, o IBGE calculou o ndice de Palma no Brasil, indicador que avalia quanto a mais os 10 mais ricos se apropriam do total dos rendimentos em relao aos 40 mais pobres.\nOs brancos eram 26,5 dos mais pobres em 2004 e sua participao nessa fatia da populao caiu para 22,8 em 2014. "Mesmo evoluindo, os dados indicam que a desproporo Sexo na Adolescência - UOL TAB. Com menos negros nas universidades, h menos deles em posies de prestgio no mercado de trabalho e na sociedade", conclui a pesquisadora.


AMARELEJA....40ºC À SOMBRA: "Preservação do Património Natural"\n"Preservação do Património Natural"\nÉ um tema que pela Terra do Sol aparentemente é respeitado e valorizado, pena ser só aparentemente.\nHá uns tempos foi demolida a antiga fabrica de moagem, na qual existiam dois ninhos habitados de Cegonha- branca (Ciconia ciconia), o que é que foi feito para preservar esses dois casais de cegonhas que nidificavam no edifício há décadas? NADA!\nBasta visitar-mos outras localidades e reparar em Igrejas e Torres, em que depois de algum tipo de intervenção no edifício, são colocadas estruturas adequadas para que as aves voltem a construir os seus ninhos. Por estas bandas não se perde tempo com isso, preservar as Cegonhas para que?? Não interessam a ninguém!\nEsta semana foi a vez das Corujas- das- torres (Tyto alba), dos Andorinhões- pretos (Apus apus) e das Gralhas- de- nuca-cinzenta (Corvus monedula), estas ultimas habitantes bem recentes, só começaram a nidificar na nossa vila há pouco mais que 4 a 5 anos. A ordem de despejo teve lugar na Torre do Relógio, onde se estão a selar as cavidades existentes nas paredes da infraestrutura, isto porque os habitantes mais numerosos e incómodos não são os que referi a cima, mas sim as centenas de pombos que ali proliferam.\nResolver o problema dos pombos, sim! isso é inquestionável, era suficiente colocar uma rede a impedir a entrada deles nas cavidades. Não há necessidade de impedir que outras aves nidifiquem, apesar de nenhuma das espécies estar ameaçada, tem grande importância a nível ecológico (Coruja- das- torres controla o número de roedores, sendo assim um grande aliado dos agricultores), não custava nada ter deixado abertas as cavidades onde estas espécies nidificam, mas enfim é o que temos por cá, (Importantíssimo, sim, é preservar os Falcões- peregrinos e as Cegonhas- pretas no Baldio das Ferrarias ahahahahah grande piada!).\nIsto para não falar na preservação do edifício... já era altura de planear algo que vá de encontro à sua utilização actual, em vez de se andar a cimentar aqui e ali, a fazer alpendres com chapas de lusalite etc. "Aquilo" era para ser uma das, se não a principal igreja da nossa terra, há que lhe ser dado o respectivo valor. Noutro local já teria sido reabilitada como Igreja ou sala de espectáculos.\nAfinal não queria falar da preservação do edifício e acabei por falar, que chatice!\nAqui desde que me lembro de ser gente e ter o gosto pelas aves nidificou um casal de Corujas-das- torres, foi este o ultimo ano que nidificaram.\nNa Primavera/ Verão nesta abertura era um entra e saí de Andorinhões- pretos todas as tardes, já não entra mais nenhum.\nPublicada por Tiago Batista à(s) quinta-feira, agosto 22, 2013\nEtiquetas: amareleja, aves, Património Natural\nFlorbela Bonito 22 de agosto de 2013 às 08:56\nO VELHO,O MENINO E O BURRO!\nCarao Tiago Batista,acaso tem alguma sugestão para a resolução do problema??é que falar e criticar é fácil!!eu tal como tu sou uma amante da natureza,da fauna e da flora,mas acaso já pensas-te o que é viver nas casas proximas da torre??\nTiago Batista 22 de agosto de 2013 às 11:40\nA solução está, ao que parece encontrada, escusava era de ser tão drástica, prejudicando assim espécies q nada tem a ver com o "cagaçal" dos pombos.\nAnónimo 23 de agosto de 2013 às 15:23\nOlha Bela, e já pensaste nas pessoas que moram perto da Torre quando fazem o Festival da Juventude? Milhares de litros de Mijo, se as pessoas espreitarem à porta, algumas dezenas ou centenas de partes intimas, já pensaste? Parece que cada vez mais lhes vai custando ingerir algumas criticas. Mas mesmo assim, se vocês falassem a uma só vós até te poderia compreender, mas vocês pensam só a uma cabeça, chega de tentar tapar o pó com a peneira, sabemos que isso não é uma ideia tua, na vossa equipa só uma pessoa tem direito a pensar, ou não é? Parabéns por seres uma amante da natureza. Deixa mas é de seres a apaga fogos, quem lhes deita fogo que os apague.\nMas olha que as coisas devem se fazer dentro da legalidade, e isso será legal?\nAnónimo 28 de agosto de 2013 às 11:13\n1-Em primeiro lugar dou toda a razão ao comentário anterior\n2- Na nossa vila não se pensa quando se vai fazer qualquer obra , ela tem que ser estudada para ver os pros e contras, e não destruir o nosso património o poço tapado foi destruido , uma arquitetura antiga acabaram com ela , o poço chorão colocaram uns arabescos que nada tem com as nossas tradições mais parece os arraiais minhotos , e agora vão ao relógio , apesar de já estar bastante danificado com tudo o que se passa lá dentro , toda aquela música no máximo destrói qualquer estrutura , os buracos eram o suporte dos andaimes dos antigos , como não havia tecnologia eles tinham que se socorrer dos engenhos que tinham ao seu alcance , como dizia o Tiago colocavam rede fininha que quase não se via , e mantinham a estrutura antiga, não destruam mais o pouco de património (que é quase nulo )que temos, antes de fazerem consultem tecnicos e peçam opiniões . Falta de humildade e respeito


Os primeiros vertebrados do planeta terra - Pesquisas Científicas - 410 Palavras\nPágina Inicial Ensaios Os primeiros vertebrados do...\nPáginas: 2 (410 palavras) Publicado: 22 de setembro de 2012\nOs peixes foram símbolos sagrados em várias civilizações. Para os babilônios, Oanes era uma criatura com corpo de peixe e cabeça de homem, que durante odia trazia o conhecimento para as pessoas e, de noite, voltava para o mar. Em várias partes do mundo, tribos primitivas transformaram o salmão em um símbolo de poder, beleza e coragem.\nAté mesmo nahistória do cristianismo, os peixes estão envolvidos em fatos extraordinários, como o milagre dos peixes. Alem disso, a palavra "Icthus", que significa "peixe", em grego, guarda as iniciais da frase"Iesus Christus Theou Uios Soter" (Jesus Cristo Filho de Deus Salvador). Na Antiguidade, em épocas de perseguição, os cristãos se identificavam por meio da representação de um peixe: uma pessoadesenhava um arco e, outra, completava o desenho riscando outro arco do lado oposto ao primeiro.\nAtualmente, com os avanços do conhecimento científico, apesar de os peixes terem perdido espaço noaspecto mítico ou simbólico, continuam a se revelar criaturas fantásticas\nOs peixes do gênero Anableps são popularmente conhecidos como "peixes-de-quatro-olhos". Esses animais sãocapazes de enxergar dentro e fora da água, simultaneamente, quando a linha da superfície da água está na metade de seus olhos. Tal façanha só é possível graças às adaptações especiais de seus olhosque, inclusive, têm sido objeto de vários estudos oftalmológicos.\nCada olho de um Anableps possui duas córneas, duas aberturas de pupila e, a retina subdivide-se em uma porção dorsal e outra ventral.O cristalino dos olhos desse peixe apresenta, em sua parte superior um achatamento (assim como o ser humano e outros animais terrestres) e, na parte inferior, uma curvatura adaptada ao índice derefração da água (da mesma maneira que os animais aquáticos).\nOs peixes anableptídeos pertencem ao grupo dos peixes ósseos, conhecidos como Osteichthyes - a linhagem mais rica em número de espécies...


CES 2020: Hyundai e Uber revelam projeto de veículo aéreo – UNIVERSO MOTOR\nInícioAEROAERO I InovaçãoCES 2020: Hyundai e Uber revelam projeto de veículo aéreo\nConceito 100% elétrico pode viajar a 290 km/h e deve iniciar testes este ano. Aeronave é parte de solução de mobilidade inteligente que inclui translado terrestre e hubs\n10 de janeiro de 2020 Universo Motor AERO I Inovação, Últimas Mundo, VÍDEOS 0\nA Hyundai Motor Company e a Uber anunciaram na Consumer Electronics Show (CES) 2020 – a maior exposição do mundo de tecnologias para o consumidor, que se encerra hoje, em Las Vegas -, uma parceria para desenvolver um novo conceito de aeronave, conhecido como PAV – sigla em inglês para Veículo Pessoal Aéreo. O modelo com propulsão totalmente elétrica e capacidade para cinco ocupantes, incluindo o piloto, será desenvolvido com foco na aplicação para a futura rede de compartilhamento de viagens aéreas Uber Air.\nA fabricante de veículos sul-coreana também aproveitou o evento anual para divulgar em seu estande de quase 700 m² a Solução de Mobilidade Inteligente Hyundai, sua visão de transporte para as cidades no futuro, apoiada em três pilares inovadores: a Mobilidade Aérea Urbana (UAM), representada pelo PAV, que neste cenário tecnológico recebe o nome conceitual de “S-A1”; o Veículo Construído com Propósito (PBV), ou “S-Link”, que combinará o deslocamento terrestre compartilhado com atividades e serviços em transito; e o hub, chamado de “S-Hub”, estação de apoio e transferência para os modais que também funcionará como espaços de uso comunitário, alinhados com as possibilidades dos PBVs.\nO projeto do PAV segue o conceito das aeronaves elétricas de decolagem e pouso verticais (como os drones), conhecidas como eVtols. Para aumentar o nível de segurança, o modelo da Hyundai distribui a propulsão entre vários rotores e hélices em torno da cabine, para fornecer redundância em diversas camadas e garantir uma operação segura. Todavia, a aeronave também será equipada com paraquedas.\nEssa configuração de múltiplos propulsores também reduz significativamente o ruído em comparação com os grandes helicópteros de rotor movidos a combustão, o que torna o S-A1 ainda mais confortável para os passageiros e apropriado ao ambiente urbano.\nA arquitetura da cabine dispõe de assento avançado para o piloto, mais quatro poltronas para passageiros, permitindo que embarquem e desembarquem facilmente. Entre os bancos, há espaço reservado para bagagens de mão.\nO projeto prevê que, com o desenvolvimento de tecnologias relevantes, como a chamada “Internet das Coisas” (IoT), o SA-1 passe a operar como aeronave autônoma, abrindo mais um assento para passageiro.\nUtilizando materiais compostos de carbono em sua construção, o S-A1 foi desenhado para operar em velocidades de até 290 km/h, altitudes entre 1.000 e 2.000 pés (300 a 600 metros), e aplicação em viagens no raio de 100 km. Segundo a Hyundai, durante os horários de pico, serão necessários cerca de cinco a sete minutos para recarregar as baterias.\nNa CES 2020, o modelo em tamanho natural do S-A1 está sendo exibido a 2,2 m de altura, para criar a sensação de pleno voo. Os visitantes também têm a oportunidade de experimentar uma viagem a bordo do PAV, por meio de realidade virtual. E neste vídeo, é possível acompanhar como é a dinâmica de funcionamento do veículo:\nA Hyundai é a primeira empresa automotiva a aderir à iniciativa do Uber Elevate – ecossistema de mobilidade urbana envolvendo veículos aéreos, em fase de desenvolvimento pela empresa de transporte por aplicativo – trazendo capacidade de produção de veículos em escala, inclusive elétricos. Além da montadora de automóveis sul-coreana, a Uber firmou parcerias com fabricantes do setor aeronáutico, incluindo a Embraer e a Bell, que também desenvolvem os projetos particulares de eVtols, chamados EmbraerX e Nexus, respectivamente.\nO conceito de veículo aéreo da Hyundai foi criado em parte pelo processo de projeto aberto da Uber, uma abordagem inspirada na Nasa, que estimula a inovação ao divulgar publicamente os conceitos da tecnologia a ser desenvolvida. A Uber anunciou uma meta de demonstrações de voo para este ano e a disponibilidade comercial do Elevate em 2023.\nA segunda solução de mobilidade da Hyundai é o módulo PBV – ou S-Link na concepção de cidade do futuro da montadora -, que pode acomodar um amplo espectro de aplicações e permite que os passageiros desfrutem de serviços personalizados enquanto viajam.\nApós a personalização, os S-Links podem funcionar como restaurante, cafeteria e hotel, ou mesmo clínica e farmácia, além de serem um serviço de transporte urbano. O interior pode ser configurado de acordo com as necessidades individuais, por meio de peças modulares.\nInspirado no icônico bondinho de São Francisco, na Califórnia, o veículo é totalmente elétrico e tem tamanho ajustável de 4 a 6 metros, com desmontagem completa das partes superior e inferior da estrutura. Seu recurso de inteligência artificial (IA) permite que ele navegue pelas melhores rotas e recarregue as baterias durante os deslocamentos, com a ajuda de carregadores específicos.\nO PBV também poderá viajar de forma autônoma em comboios, o que deve trazer mudanças inovadoras para os serviços de entregas e logística nas cidades futuras.\nPor fim, a terceira solução de mobilidade apresentada pela Hyundai é o S-Hub, um novo espaço comunitário inovador que conecta os modais UAM (aéreo) e PBV (terrestre).\nO Hub possui um porto aéreo para o PAV na parte superior e estações de ancoragem no solo (como os fingers dos aeroportos), nos quais o PBV vai se acoplar, seja para o embarque e desembarque, ou servir como espaço personalizado.\nSolução de Mobilidade Inteligente Hyundai\nO projeto prevê que os S-Hubs possam ser transformados em novos equipamentos para as cidades, como complexos culturais com salas de concerto, cinemas e museus, entre outros, combinados aos serviços implementados nos PBVs. Também poderão ser configurados como centros médicos, conectando PBVs equipados como clínicas, consultórios e farmácias.\nEm uma visão orgânica, a Solução de Mobilidade Inteligente Hyundai funcionará assim: o UAM conecta o céu e o solo, enquanto o PBV conecta pessoas às pessoas nas ruas. Essas duas soluções de mobilidade inteligente se conectam no Hub, que será instalado nas cidades futuras para formar um ecossistema de mobilidade.\nA proposta faz parte da estratégia da Hyundai para acelerar a implementação de sua visão de marca voltada ao “Progresso para a Humanidade”, pela qual planeja se transformar em um “Fornecedor de Soluções de Mobilidade Inteligente”. Veja como a marca sul-coreana imagina o futuro das cidades, nesta projeção sobre a São Francisco de 2030:\nFonte: Hyundai Motor I Imagens: Divulgação


Homem-Aranha 3: Produto licenciado incluiTeioso de Tobey Maguire\nCaixa de itens caninos com temática do filme da Marvel traz o Teioso do filme de 2002\nAtualizada em 26.11.2021 às 16h11\nUm produto licenciado de Homem-Aranha: Sem Volta Para Casa parece fortalecer ainda mais a teoria de que Tobey Maguire retornará ao papel de Homem-Aranha no novo filme do Teioso no Universo Cinematográfico da Marvel (MCU). Trata-se de uma Bark Box, uma caixa de acessórios para cachorros, em edição que segue temática do herói. Veja abaixo.\nAs imagens foram publicadas por um consumidor do produto, que afirmou ter produzido também o vídeo para deixar claro que não se trata de uma montagem. É interessante observar como a embalagem também inclui em seu design uma edição do jornal Clarim Diário, seguindo o mesmo design dos filmes do Homem-Aranha dirigidos por Sam Raimi. Na página oficial da Bark Box, é possível encontrar propagandas sobre a edição de Sem Volta Para Casa.