Trabalhando em equipe com Visual Studio Code e SFTP com checkin e checkout

Publicado em 04/04/2019 | () comentários

Trabalhar em equipe com desenvolvimento de software exige controle e sincronismo, principalmente se o mesmo software está sendo desenvolvido por mais de uma pessoa. Para quem utiliza controle de versão, como o .Git, quando o mesmo arquivo é editado e o commit é realizado, é necessário fazer um merge, que sempre exigirá dos dois editores de código uma análise prévia das alterações e resolução dos conflitos.

Outro cenário de trabalho é a utilização do checkin e checkout, semelhante ao existente no Visual Studio e no antigo Adobe Dreamweaver. Este recurso bloqueia (checkout) o arquivo que está sendo editado por um dos desenvolvedores, impedindo que outros o editem. Após concluir o trabalho, o desenvolvedor devolve (checkin) o arquivo editado e este pode ser altado por outra pessoa. Esta maneira de desenvolver é mais resolutiva, pois torna o merge desnecessário. O merge é sempre um risco alto, quando a alteração feita se torna muito complexa. 

Se você deseja programar em PHP e trabalhar com checkin e checkout, não adianta usar o Sublime Text, infelizmente não existe plugin (até o momento) que ofereça este recurso. Nós utilizamos o moderno e leve Visual Studio Code, um editor de códigos gratuito e repleto de plugins, muito parecido com o Sublime Text.

Instalando o Visual Studio Code

O primeiro passo é instalar o Visual Studio Code. É uma ferramenta gratuita e leve.


Instalando a extensão PHP

Instale a extensão PHP para programar com a linguagem. Navegue até a opção EXTENSÕES e certifique-se que as extensões PHP IntelliSense, PHP Debug e PHP Extension Pack estejam instaladas. 


Configurando a pasta remota FTP

Crie uma pasta FTP em seu servidor. Após criar a pasta, anote o HOST, USUARIO, SENHA, PORTA (geralmente é a porta 21), PATH (se criou uma conta FTP para uma pasta específica, deixe apenas / no path).

Instalando a extensão SFTP

Para se conectar à pasta remota será necessário instalar a extensão SFTP no Visual Studio Code. Navegue até o menu EXTENSÕES, pesquise a extensão SFTP e clique em INSTALL.


Instalando a extensão Dreamweaver Checkout

Para trabalhar com o checkin e checkout, será necessário instalar a extensão Dreamweaver Checkout, que simula a funcionalidade do próprio Adobe Dreamweaver através do FTP. 

Navegue até o menu EXTENSÕES, pesquise por CHECKOUT e instale a extensão clicando em INSTALL.


Configurando as extensões

Agora que as extensões estão devidamente instaladas, reinicie o Visual Studio Code e navegue até o menu MANAGE e em seguida clique em SETTINGS.

Navegue no menu EXTENSIONS / DREAMWEAVER / CHECKOUT. Mantenha as opções da imagem abaixo marcadas e informe seu e-mail para que ele seja utilizado na identificação do usuário que está realizando as alterações nos arquivos durante o checkin e checkout.


Em seguida configure a conexão do SFTP navegando até o menu EXPLORER e dentro do projeto PHP expanda a pasta .vscode.

Crie o arquivo de configuração do sftp pressionando as teclas CTRL + SHIFT + P. Em seguida, edite o arquivo sftp.json informando suas informações de conexão FTP criadas anteriormente. Importante! Mantenha a opção "uploadOnSave" como "false".


Salve o arquivo e comece a utilizar realizando o checkout (pegar) abrindo o arquivo e pressionando as teclas CTRL + ALT + O. Para realizar o checkin (devolver) pressione as teclas de atalho CTRL + ALT + I. Um cabeçalho será criado identificando o status do arquivo. 


Assine eletronicamente documentos PDF e elimine o uso de papel

Publicado em 11/03/2019 | () comentários


A tecnologia tem facilitado muito a vida, principalmente quando processos burocráticos são otimizados e se tornam simples com o mesmo resultado. É o que ocorre na empresa Giscom.

A Giscom possui uma equipe de funcionários que trabalham em campo, realizando visita aos clientes e preenchendo um relatório de atividades. Para cada visita, um relatório é criado, necessitando da assinatura do cliente para quem as atividades foram executadas. Muitas vezes a atividade é executada, mas o responsável pela assinatura não está no local, obrigando o funcionário a voltar ao local posteriormente. Após a coleta da assinatura, o documento é digitalizado, armazenado em um sistema e no final do mês uma cópia digital é enviada ao cliente, como prestação de contas.

Se você identificou o problema, deve ter percebido que um documento digital se torna físico (impresso), para a coleta da assinatura e em seguida se torna novamente digital (digitalizado) e acaba armazenado em um sistema. Você deve ter identificado também que uma viagem é realizada desnecessariamente caso o responsável pela assinatura não esteja presente no local.

Para resolver este problema, é possível utilizar a assinatura eletrônica. 

Assinatura eletrônica é assinatura digital?

Não! A assinatura digital exige um certificado digital (token) que é validado eletronicamente por um órgão responsável, como por exemplo a Certisign. Já a assinatura eletrônica é uma assinatura manuscrita feita por meio eletrônico (exemplo na tela do seu celular). 

A assinatura eletrônica é válida juridicamente?

Sim, mas é preciso cuidado quanto a sua utilização. A Medida Provisória 2.200-2, Código Civil Brasileiro, Resoluções do Comitê Gestor do ICP e Instruções Normativas do ITI – Instituto Nacional de Tecnologia da Informação que prevem a necessidade e armazenamento de:

  • Nomes de signatários
  • Histórico de autenticação
  • Certificados digitais, se houver
  • Endereços de e-mail
  • Endereços IP do signatário
  • Cadeia de custódia (ou seja, quem enviou, visualizou, assinou, etc.)
  • Carimbos de hora confiáveis
  • Captura de geolocalização do signatário (se houver)
  • Status de conclusão

Adobe Acrobat Reader e Dropbox

A Adobe fornece gratuitamente o aplicativo Adobe Acrobat Reader, o leito de PDF oficial da empresa e é através dele que podemos fazer a assinatura eletrônica em nossos documentos.

A maneira mais eficiente de utilizar o Adobe Acrobat para assinatura eletrônica, é em conjunto com o Dropbox (integrado).

1. Instale o Adobe Acrobat Reader em seu smartphone

2. Instale o Dropbox em seu computador

3. Salve o documento que deseja assinar no seu Dropbox desktop

4. Abra o Adobe Acrobat Reader em seu smartphone clique na guia "Arquivos". Faça login no Dropbox.


5. Seus arquivos que precisam de assinatura aparecerão. Abra o documento desejado


6. Clique em "Editar"


7. Clique em "Adicionar texto" |Ab e escolha a região do documento que deseja inserir as informações do carimbo "Nome, cargo e local". Ajuste o tamanho da fonte para que fique proporcional à fonte utilizada no documento. Se necessário, arraste o texto posicionando no local ideal


8. Em seguida clique em "Assinar" e escolha a opção "Criar assinatura"


9. Solicite a assinatura do responsável na tela do seu smartphone e clique em "Concluído". Por padrão, deixe a opção "Salvar no dispositivo" desabilitada, para permitir que você colete sempre novas assinaturas. Utilize esta opção somente se apenas você assinar os documentos, pois assim a mesma ficará salva.


10. Clique na região desejada para inserir a assinatura


11. Pronto, seu documento está assinado eletronicamente e salvo no seu computador através do Dropbox.


Fuja de alagamentos utilizando o Waze

Publicado em 11/03/2019 | () comentários

São Paulo está vivendo dias de atenção e alagamentos em todas as regiões

Não saia de casa sem Waze

Trace sua rota no Waze e todos os alertas serão exibidos pra você. Os alertas de alagamento possibilitam que o aplicativo trace uma rota alternativa, mas você precisa realizar o alerta corretamente, conforme mostrado abaixo.

Alerte alagamentos e interdição

O Waze possui o alerta de alagamento, porém este alerta não afeta a rota dos usuários, por isso, além de alertar alagamento, crie um alerta de interdição no local.

Clique no botão de alertas no mapa.


Selecione a opção "Perigo"


Selecione a opção "Alagamento" e em seguida clique em "Enviar"

A seguir clique novamente no botão de Alerta do Waze e selecione a opção "Interdição"


Algumas setas serão apresentadas no mapa. Clique na seta que indica a rua que possui a interdição e em seguida clique em "Enviar". Você pode ainda adicionar algumas fotos ao seu alerta.

Com estes alertas criados, as rotas dos usuários é alterada e todos usuários do Waze podem desviar dos pontos de alagamento.

Categoria: waze aplicativo

Realizando contagem por faixa etária baseado na data de nascimento

Publicado em 11/10/2018 | () comentários

No Qlik View, é possível tratar as informações da dimensão diferente do que são retornadas do banco. No exemplo abaixo peguei a data de nascimento (DATA_NASCIMENTO) e converti em mês, calculando o intervalo entre uma data e outra apliquei uma condição, sendo que caso a condição for verdadeira, printa em tela um texto que eu desejar.

Dimensão

=IF( Interval# ( Month(Today()) - Month(DATA_NASCIMENTO) ) >= 0 AND Interval# ( Month(Today()) - Month(DATA_NASCIMENTO) ) <= 6, 'De 0 a 6 meses',
IF( Interval# ( Month(Today()) - Month(DATA_NASCIMENTO) ) > 6 and Interval# ( Month(Today()) - Month(DATA_NASCIMENTO) ) <= 23, 'De 6 a 23 meses',
'De 2 a 10 anos'
)
)

A seguir basta criar uma única expressão com a fórmula abaixo:

Expressão

=Count(  1 )
Categoria: qlik view fórmula

Como práticas ágeis mudaram o processo de trabalho da BBC

Publicado em 18/09/2018 | () comentários


      Em um evento realizado em 2008, Marcus Evans conta sobre suas experiências com a adoção das práticas ágeis na BBC, durante uma sessão ironicamente intitulada de "organização FrAgile". 

      Quando se juntou à BBC, a organização sofria de muitos problemas de comunicação com pessoas sentadas na mesma sala, sem nem se conhecerem pelo nome. Não havia um método claro de gerenciamento de projetos na época e as pessoas eram divididas verticalmente de acordo com os projetos.

      O Scrum foi introduzido nas equipes com muita tranquilidade, sem grandes anúncios, não foi vendido como a solução para o problema. A abordagem encontrou muito pouca resistência. Se houvesse um grande anúncio, Evans supôs que talvez haveria uma reação contrária. A maneira sutil de introduzir o Scrum permitiu que as equipes descobrissem a metodologia e aderissem a cultura de interna. 

      Em seguida toda a empresa adotou a departamentalização matricial e as equipes e as pessoas começaram a conhecer outras realizando o mesmo trabalho em diferentes equipes e isso ajudou muito com o compartilhamento de ideias e da metodologia ágil. Os adeptos da metodologia fizeram reuniões regulares para compartilhar as melhores práticas, mas ainda havia pouca colaboração em equipe.

      Então um novo projeto foi lançado, o BBC iPlayer. Um projeto enorme que exigia que as equipes começassem a trabalhar juntas, mas o uso de métodos ágeis para esse projeto não foi questionado. Evans comentou "isso significava que o método já fazia parte da nossa cultura". As pessoas procuraram maneiras de escalar o scrum e estendê-lo a um único projeto envolvendo várias equipes.

      Durante o projeto, outra reestruturação atingiu a empresa, voltando à organização com equipes independentes, recursos independentes e treinamento. A reunião de scrum tornou-se uma “estufa de ansiedade” e “um ambiente pesado”, perdendo sua energia e seu objetivo.

      No entanto, quando os participantes analisaram se eles estão ágeis, envolvendo um consultor externo para ajudá-los a ter uma perspectiva mais realista, eles perceberam que, na verdade, ainda estavam fazendo o que queriam.

      Marcus Evans apontou as seguintes aprendizados do projeto:

        • A implementação da metodologia ágil sutil, sem grandes discursos positivos, reduziu a resistência e permitiu que a cultura crescesse de dentro das equipes;
        • Embora as equipes tivessem sérias preocupações sobre o modo como eles trabalham, olhar para a mesma coisa de fora, na verdade, era bastante reconfortante, pois perceberam que evoluiram;
        • A estrutura de organização matricial ajudou no processo;
        • O antídoto para as preocupações era refletir e realizar retrospectivas para obter uma visão mais realista.

        Conclusão

        A implantação de uma metodologia ágil dependerá do cenário em que a organização trabalha, do engajamento da gestão (evitar mudanças bruscas de processos internos), da devida sensibilização das equipes (não fazer alarte, ser transparente e focar no bem estar das pessoas) e na mudança de cultura (que exige tempo e paciência). 

        Categoria: scrum agille

        Fórmula Excel para mostrar total de dias ou semanas no mês

        Publicado em 18/09/2018 | () comentários

        Com a fórmula abaixo é possível descobrir quantos dias ou semanas possuem um determinado mês, para isso basta utilizar quatro funções agregadas: DIA, MêS, ANO e DATA.

        Total de dias no mês

        Para obter o total de dias existentes em um mês, basta utilizar a seguinte fórmula, sendo que a célula A2 contém a data com o mês que se deseja obter a informação

        =DIA(DATA(ANO(A2);MÊS(A2)+1;1)-1)

        Total de semanas no mês

        Para obter o total de semanas existentes em um mês, basta utilizar a seguinte fórmula, sendo que a célula A2 contém a data com o mês que se deseja obter a informação.

        =DIA(DATA(ANO(A2);MÊS(A2)+1;1)-1)/7

        A fórmula é simples e suas aplicações são diversas.

        Sistema de cadastro online de déficit habitacional revoluciona prefeituras

        Publicado em 31/07/2018 | () comentários


        Segundo o censo realizado pelo IBGE (Instituto Brasileiro de Geografia e Estatística), o Brasil possui mais de 11,4 milhões de pessoas (6% da população nacional) morando em favelas (denominados aglomerados subnormais pelo IBGE).

        Como proposta de ação definitiva, o Governo Federal lançou em 2009 o programa Minha Casa Minha Vida, que passou a angariar recursos para a construção de moradias para famílias de diversas faixas salariais. O estado também possui programas de habitação, como o CDHU (Companhia de Desenvolvimento Habitacional e Urbano do Estado de São Paulo), sendo este o responsável pela construção e o cadastramento das famílias nos empreendimentos.

        Apesar dos programas habitacionais, segundo Fernando Chucre (secretário de habitação do estado de São Paulo) , para resolver o problema do déficit habitacional somente em São Paulo, no ritmo atual, levaria mais de 100 anos (UOL). 

        O problema se agrava ainda mais devido a falta de gestão e controle sobre o cadastro do déficit habitacional, que possibilita fraudes, beneficiando famílias que não se enquadram nos critérios do programa e ainda permitindo que uma mesma família seja beneficiada mais de uma vez pelo programa. Para impossibilitar o benefício, a família que já foi contemplada pelo programa Minha Casa Minha Vida é cadastrada no sistema CADMUT (Cadastro de Mutuários), porém isso nem sempre acontece devido a burocracia do processo de cadastro. 

        O programa Minha Casa Minha Vida

        Segundo IBGE (2010), pelo menos 323 municípios brasileiros possuem favelas instaladas. Geralmente estas favelas são cadastradas em um banco de dados municipal coletando-se informações sobre os domicílios, famílias e moradores. As famílias cadastradas fazem parte da lista de prioridades do programa Minha Casa Minha Vida, segundo a faixa da renda familiar.  Segundo a CAIXA ECONÔMICA FEDERAL (órgão que realiza o controle do programa MCMV), as famílias podem se beneficiar com subsídios que arcam com até 90% do imóvel e parcelas de financiamento de até R$ 80 mensais. As famílias precisam se enquadrar nas faixas de renda familiar de R$ 1800 a R$ 7000,00.

        O problema do cadastro das famílias

        A responsabilidade em indicar as famílias para o benefício da moradia pelo programa MCMV é do município, portanto, a base de cadastro familiar deve imprescindivelmente estar atualizada. Para as famílias que se enquadram na Faixa 1, o prazo para atualização é de 2 em 2 anos, conforme rege a portaria MC 163/2016.

        Uma solução online

        Com intuito de proporcionar controle, transparência e facilitadores para as prefeituras e munícipes foi lançado o sistema SISHAB (Sistema Inteligente de Habitação) com o primeiro módulo de automatização do processo de cadastro e gestão do programa Minha Casa Minha Vida.

        Com o SISHAB é possível que a prefeitura lance o programa em todo município e permita que as próprias famílias se inscrevam online. É possível ainda que a prefeitura ofereça postos de inscrição presencial com atendentes que realizem as inscrições no sistema.

        As famílias cadastradas ficam armazenadas em uma base de dados online e possuem um protocolo de inscrição com um código de autenticação único, garantindo a confiabilidade da inscrição.

        Quando um novo conjunto habitacional é lançado no município, ele deve ser cadastrado no SISHAB e o processo de classificação das famílias inscritas pode ser realizado, permitindo que elas sejam chamadas para comprovação das informações prestadas na inscrição para a Caixa Econômica Federal.

        Ao serem contempladas, as famílias e membros familiares cadastradas no SISHAB são publicadas, impedindo novas inscrições. 

        Ainda é possível e opcional, que o município cruze o CPF dos inscritos com a base de dados de outros municípios que utilizam o SISHAB, impedindo fraudes. Conheça todas as vantagens do SISHAB.

        Categoria: inovação sistema

        Realizando backup automático do banco em servidor de hospedagem linux com PHP

        Publicado em 15/05/2018 | () comentários


        Servidores de hospedagem Linux possuem, geralmente, um painel de controle CPANEL para administração da hospedagem. Apesar da rotina de backup automático do servidor, que é executada automaticamente e semanalmente pelo serviço contratado, a mesma não garante a recuperação e segurança dos dados, assim como não garante a restauração caso alguma invasão ou problema tenha ocorrido no servidor.

        É muito aconselhado que você realize periodicamente o backup do seu banco de dados e mantenha o seu código fonte seguro com controle de versão. Neste tutorial você aprenderá a garantir a segurança de seu banco de dados MySQL em um servidor Linux utilizando um simples código PHP e uma tarefa CRON.

        Código PHP para realizar o backup

        O código abaixo realiza uma cópia completa de seu banco de dados, gera um arquivo SQL em um diretório no servidor e em seguida compacta ele para economizar espaço. 

        <?php
        
        //define os parâmetros de conexão do banco
        $dbname = ""; //nome do banco
        $dbhost = ""; //geralmente localhost
        $dbuser = ""; //usuário do banco
        $dbpass = ""; //senha do banco
        
        //define o nome do arquivo e onde será salvo o backup
        $filename = date('Ymdhms').$dbname;
        $path = "../bkp/";
        
        //cria a pasta onde os backups serão salvos caso ela não exista
        if(!is_dir($path)){
        	mkdir($path, 0751); //cria a pasta
        }
        
        // conectando ao banco
        $con = mysqli_connect($dbhost,$dbuser,$dbpass,$dbname) or die(mysql_error());
        
        // gerando um arquivo sql. Como?
        // a função fopen, abre um arquivo, que no meu caso, será chamado como: nomedobanco.sql
        // note que eu estou concatenando dinamicamente o nome do banco com a extensão .sql.
        $back = fopen($path.$filename.".sql","w");
        
        // aqui, listo todas as tabelas daquele banco selecionado acima
        $query = mysqli_query($con,"SHOW TABLES");
        while($dados = mysqli_fetch_row($query))
        {
            $res[] = $dados[0];
        }
        
        //Em seguida, vamos, verificar quais são as tabelas daquela base, lista-las, e em um laço for, vamos mostrar cada uma delas, e resgatar as funções descriação da tabela, para serem gravadas no arquivo sql mais adiante.
        // resgato cada uma das tabelas, num loop
        foreach ($res as $key => $value) {
        
        	$table = $value;
        	// usando a função SHOW CREATE TABLE do mysql, exibo as funções de criação da tabela,
        	// exportando também isso, para nosso arquivo de backup
        	$res2 = mysqli_query($con, "SHOW CREATE TABLE $table");
        	// digo que o comando acima deve ser feito em cada uma das tabelas
        		while ( $lin = mysqli_fetch_row($res2)){
        
        		// instruções que serão gravadas no arquivo de backup
        		fwrite($back,"\n#\n# Criacao da Tabela : $table\n#\n\n");
        		fwrite($back,"$lin[1] ;\n\n#\n# Dados a serem incluidos na tabela\n#\n\n");
        
        		//Teremos então de pegar os dados que estão dentro de cada campo de cada tabela, e abri-los também para serem gravados no nosso arquivo de backup.
        		// seleciono todos os dados de cada tabela pega no while acima
        		// e depois gravo no arquivo .sql, usando comandos de insert
        		$res3 = mysqli_query($con, "SELECT * FROM $table");
        		while($r=mysqli_fetch_row($res3)){
        			$sql="INSERT INTO $table VALUES (";
        			//Agora vamos pegar cada dado do campo de cada tabela, e executar tarefas como, quebra de linha, substituição de aspas, espaços em branco, etc. Deixando o arquivo confiável para ser importado em outro banco de dados.
        			// este laço irá executar os comandos acima, gerando o arquivo ao final,
        			// na função fwrite (gravar um arquivo)
        			// este laço também irá substituir as aspas duplas, simples e campos vazios
        			// por aspas simples, colocando espaços e quebras de linha ao final de cada registro, etc
        			// deixando o arquivo pronto para ser importado em outro banco
        
        			for($j=0; $j<mysqli_num_fields($res3);$j++)
        			{
        				if(!isset($r[$j]))
        				$sql .= " \"\",";
        				elseif($r[$j] != "")
        				$sql .= " \"".addslashes($r[$j])."\",";
        				else
        				$sql .= " \"\",";
        			}
        			$sql = preg_replace("~,$~", "", $sql);
        			$sql .= ");\n";
        			fwrite($back,$sql);
        		}
        	}
        
        }
        
        //E finalmente, vamos fechar (internamente, no servidor) o arquivo que geramos, dando um nome para o mesmo, e gerando o arquivo que será então disponibilizado para download.
        
        // fechar o arquivo que foi gravado
        fclose($back);
        
        // gerando o arquivo para download, com o nome do banco e extensão sql.
        $arquivo = $path.$filename.".sql";
        
        ob_start();
        
        //zipa o arquivo
        $zip = new ZipArchive(); 
        if( $zip->open( $path.$filename.".zip" , ZipArchive::CREATE )  === true){
            $zip->addFile( $path.$arquivo ) ;
            $zip->close();
        }
        
        //deleta o arquivo .sql e mantém somente o zipado
        unlink($arquivo);
        
        ?>

        Criando uma tarefa para executar o backup automático

        A tarefa CRON do linux é semelhante ao Tarefas agendadas do Windows Microsoft. Você poderá agendar um dia, horário e periodicidade que um comando é executado automaticamente. Acesse o CPANEL e procure por TRABALHOS CRON (ou "cron", ou "Tarefas cron").


        Será mostrada uma janela onde deverá ser agendada a execução de um comando. 

        No meu caso deixei programado para que o backup seja realizado todos os dias as 4 horas da manhã, pois considero um bom horário de maneira que este processo não sobrecarregue o servidor enquanto ele está sendo utilizado pelos usuários.

        Portanto o agendamento ficou assim:

        Minuto: 0 | Hora: 4 | Dia: * | Mês: * | Dia da semana: *

        O comando é o caminho onde ficou hospedado o arquivo PHP que realiza o backup com o inicializador php e o parâmetro -f do shell. O caminho deve ser baseado na raiz do servidor:

        Exemplo: 

        php -f public_html/seu_site/cron/backup.php

        Sillicon Valey Conference - grande evento sobre inovação trás gigantes ao Brasil

        Publicado em 12/04/2018 | () comentários


        StarSe realizará evento de inovação e tecnologia em Maio de 2018. Com palestrantes da Uber, Stanford University, Grabr, NASA, NVidia e da própria StarSe, o evento promete ser imprescindível para amantes da inovação.

        Ingressos variam entre R$349 a R$499 por pessoa e as inscrições podem ser realizadas neste link.

        Como compartilhar o calendário do Outlook online com o Google Agenda

        Publicado em 12/04/2018 | () comentários


        Controlar suas tarefas em agendas eletrônicas é um facilitador indispensável. A Microsoft possui um ótimo controle de agenda, o Outlook Calendário, assim como a Google possui um excelente e integrado controle de agendas, o Google Agenda. Caso você precise utilizar os dois recursos, mas queira gerenciar tudo a pertir de uma única agenda, sugerimos utilizar o Google Agenda, que possui integrações mais completas com o Android e Google Now.

        Como gerar o link de agenda compartilhada no Outlook Calendar?

        O Outlook lançou uma versão BETA com novos recursos e visual moderno, porém, para acessar diversos recursos você precisará acessar a versão antiga do Outlook.

        1. Acesse o endereço: https://outlook.live.com/calendar/

        2. Desabilite o teste da versão beta desmarcando a opção: Versão beta do Outlook (Caso esta opção não apareça, é porque seu Outlook já está na versão antiga).

        3. Clique na engrenagem para acessar as opções e em seguida clique em Opções


        4. No menu esquerdo acesse Calendários Compartilhados > Publicação de calendário

        5. No campo Selecione um calendário, escolha o calendário que deseja compartilhar e na opção Mostrar disponibilidade, títulos e locais clique em CRIAR

        6. O link do seu calendário será compartilhado e será mostrado em dois formatos: HTML e ICS.

        7. Copie a URL da opção ICS

        8. Acesse o Google Agenda em: https://calendar.google.com

        9. Na coluna esquerda, clique em + Adicionar outras agendas e escolha a opção Do URL

        10. Na janela que se abrirá, cole o URL copiado do Outlook e clique em ADICIONAR AGENDA

        11. Sua agenda do Outlook será mostrada dentro do Google Agenda. Acesse as configurações da agenda e renomeie ela, adicione uma cor e pronto. Todos os eventos do seu Outlook aparecerão no Google Agenda.

        Para saber mais sobre Outlook, clique aqui.