<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Daiane Alves</title>
    <description>The latest articles on Forem by Daiane Alves (@daianealves).</description>
    <link>https://forem.com/daianealves</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F268289%2F08dca23a-26fc-4a4d-b3e8-b74664566de2.png</url>
      <title>Forem: Daiane Alves</title>
      <link>https://forem.com/daianealves</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/daianealves"/>
    <language>en</language>
    <item>
      <title>LibreCode marca presença no 20º congresso latino-americano de Software Livre e Tecnologias Abertas</title>
      <dc:creator>Daiane Alves</dc:creator>
      <pubDate>Tue, 24 Oct 2023 17:26:44 +0000</pubDate>
      <link>https://forem.com/librecodecoop/librecode-marca-presenca-no-20o-congresso-latino-americano-de-software-livre-e-tecnologias-abertas-140f</link>
      <guid>https://forem.com/librecodecoop/librecode-marca-presenca-no-20o-congresso-latino-americano-de-software-livre-e-tecnologias-abertas-140f</guid>
      <description>&lt;p&gt;A LibreCode teve uma participação especial na Latinoware, a maior conferência de tecnologias livres da América Latina, realizada de 18 a 20 de outubro em Foz do Iguaçu, com a presença de cerca de quatro mil participantes de vários países.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZGYlet5F--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/olhe1oc9293s9yajtwzx.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZGYlet5F--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/olhe1oc9293s9yajtwzx.jpeg" alt="Image description" width="800" height="455"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Durante o evento, a LibreCode apresentou o LibreSign, seu mais recente produto, que chamou a atenção da comunidade de software livre. No estande dedicado ao LibreSign, os membros da cooperativa demonstraram a inovação dessa solução de código aberto para diversas pessoas, incluindo o diretor de Projetos e Sistemas da Canoastec, Rogério Alves e também para o coordenador de Projetos e Inovação da Secretaria de Atenção Primária do Ministério da Saúde, Rodrigo Gaete. O LibreSign é o primeiro assinador de documentos eletrônicos web e que reflete o compromisso da LibreCode em desenvolver ferramentas que promovam a liberdade e acessibilidade na tecnologia.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--G9Qgre1U--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/55424akhukzmqwquy2qb.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--G9Qgre1U--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/55424akhukzmqwquy2qb.jpg" alt="Image description" width="800" height="453"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Além da exposição do LibreSign, a LibreCode ofereceu uma série de palestras ministradas por seus cooperados, cobrindo diversos tópicos no universo do software livre e enriquecendo o conhecimento do público. Essas apresentações destacaram o papel ativo da cooperativa na disseminação de ideias e práticas sustentáveis.&lt;/p&gt;

&lt;p&gt;A LibreCode também fortaleceu sua parceria com a comunidade e-Cidade durante a Latinoware, reafirmando o compromisso conjunto de desenvolver soluções de software livre e tecnologias abertas para o setor público. Essa colaboração destaca a importância da comunidade na evolução e sucesso das iniciativas de código aberto.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qTEzPfk9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3nsbwhqvm0tcmrevkc09.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qTEzPfk9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3nsbwhqvm0tcmrevkc09.jpg" alt="Image description" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A participação da LibreCode na Latinoware reforçou seu compromisso em promover um futuro mais livre e acessível na área da tecnologia e enfatizou a importância de preservar a soberania digital para todas as pessoas.&lt;/p&gt;

</description>
      <category>opensource</category>
    </item>
    <item>
      <title>Em busca de eficiência, cooperativas investem em tecnologia</title>
      <dc:creator>Daiane Alves</dc:creator>
      <pubDate>Mon, 31 Jul 2023 17:43:27 +0000</pubDate>
      <link>https://forem.com/librecodecoop/em-busca-de-eficiencia-cooperativas-investem-em-tecnologia-3hg6</link>
      <guid>https://forem.com/librecodecoop/em-busca-de-eficiencia-cooperativas-investem-em-tecnologia-3hg6</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Na cidade ou no campo, plataformas on-line e sistemas integrados de gestão estão entre apostas das instituições&lt;br&gt;
Por Bruno Rosa — Rio&lt;br&gt;
31/07/2023 04h30&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qnIXRNsU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0c3vrgqlxa354j6v99bc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qnIXRNsU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0c3vrgqlxa354j6v99bc.png" alt="Cooperativas de táxi ganham destaque. Márcia Foletto" width="800" height="547"&gt;&lt;/a&gt;&lt;/p&gt;
Cooperativas de táxi ganham destaque. Márcia Foletto



&lt;p&gt;Com a chegada do 5G e da inteligência artificial aos negócios, as cooperativas vêm buscando a digitalização de seus processos. Softwares, sistemas integrados de internet em alta velocidade e tecnologias com dados em tempo real para aumentar a produtividade são apenas alguns dos recursos que estão sendo utilizados Brasil afora.&lt;/p&gt;

&lt;p&gt;A Graffiti Transfers &amp;amp; Tours, cooperativa de serviços de transporte executivo e de turismo na cidade do Rio, investiu no desenvolvimento de um aplicativo de reservas de transfer que atende pessoas físicas e empresas. Em um ano, o app já responde por 10% do total das reservas&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;— A adoção de ferramentas digitais na rotina organizacional oferece uma ampla gama de benefícios que impulsionam a escala do negócio, ao mesmo tempo em que possibilita economia a longo prazo — diz Miqueias Zacarias, presidente da cooperativa.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;O aplicativo, batizado de Chauffeur Graffiti (do francês, motorista), está disponível apenas no Rio por enquanto, mas em breve vai ser implementado em outras cidades, como São Paulo, Brasília e Belo Horizonte. Na capital carioca, são 40 cooperados.&lt;/p&gt;

&lt;p&gt;Vinicius Mesquita, presidente da Organização das Cooperativas Brasileiras (OCB) no Rio de Janeiro, avalia que as cooperativas vêm ampliando a busca por sistemas para aumentar a competitividade:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;— Em todos os setores, as cooperativas têm investido em tecnologias para seus processos produtivos. Temos assistido também ao nascimento de cooperativas que têm seus negócios integralmente baseados no digital. No Rio, as cooperativas de táxi têm trabalhado praticamente online, pois tiveram de enfrentar a concorrência dos aplicativos e se adaptaram para sobreviver.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A CoopeTaxi é um exemplo. O aplicativo da cooperativa é mais uma ferramenta para atrair usuários, que podem pedir um carro pelo celular.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;— Nossa ideia é ampliar nosso número de clientes. Já temos cerca de 30 profissionais. Nossa plataforma já representa 15% das corridas — diz Antonio Shuler Amaral, presidente da CoopeTaxi.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A inovação também está presente no campo. Como na Cooperativa dos Agricultores Familiares do Baixo Sul (Coopafbasul), que atua na cadeia produtiva do cacau em amêndoas, guaraná em grãos, cravo, pupunha, seringueira, urucum e piaçava na Bahia.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;— Investimos em plataformas de assistência técnica, calibragem do solo, certificações, rastreabilidade e infraestrutura para beneficiamento do produto visando à qualidade final. Essas tecnologias podem ajudar a melhorar a eficiência, a produtividade e a rentabilidade da agricultura familiar, contribuindo para a sustentabilidade e o crescimento desse setor — diz Gileno Araújo dos Santos, diretor-executivo da Coopafbasul.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9Rb5VNqP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zq0c5lknfj95utegwvg8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9Rb5VNqP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zq0c5lknfj95utegwvg8.png" alt="Cooperativa dos Agricultores Familiares do Baixo Sul (Coopafbasul) atua na cadeia produtiva do cacau em amêndoas, guaraná em grãos, cravo, pupunha, seringueira, urucum e piaçava na Bahia. — Foto: Divulgação" width="800" height="826"&gt;&lt;/a&gt;&lt;/p&gt;
Cooperativa dos Agricultores Familiares do Baixo Sul (Coopafbasul) atua na cadeia produtiva do cacau em amêndoas, guaraná em grãos, cravo, pupunha, seringueira, urucum e piaçava na Bahia. — Foto: Divulgação



&lt;h2&gt;
  
  
  Proteção de dados
&lt;/h2&gt;

&lt;p&gt;Ele explica que o investimento foi necessário com a chegada ao mercado internacional. A cooperativa vende seus produtos para países como França, Estados Unidos e Egito. E está em negociação para chegar à China e Indonésia. A cada ano, ela investe 20% do fundo de reserva em tecnologia. Em 2023, o percentual chegará a 30%.&lt;/p&gt;

&lt;p&gt;Outro exemplo vem do Sul. A Cotrijal está presente em 53 municípios gaúchos, com 79 unidades de recebimento de grãos, além de unidade de beneficiamento de sementes, fábrica de rações, supermercados e um atacado. São ao todo 16 mil associados. Para Marcelo Ivan Schwalbert, superintendente administrativo-financeiro e coordenador do time de inovação da Cotrijal, investir em tecnologia é caminho sem volta no setor.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vhkTEP6D--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cwsogh09uulcrejl6gwm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vhkTEP6D--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cwsogh09uulcrejl6gwm.png" alt="A Cotrijal está presente em 53 municípios gaúchos, com 79 unidades de recebimento de grãos, além de unidade de beneficiamento de sementes, fábrica de rações, supermercados e um atacado. — Foto: Divulgação" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;
A Cotrijal está presente em 53 municípios gaúchos, com 79 unidades de recebimento de grãos, além de unidade de beneficiamento de sementes, fábrica de rações, supermercados e um atacado. — Foto: Divulgação



&lt;p&gt;São várias iniciativas. Ele cita a criação do Portal do Produtor, no qual os cooperados podem acessar todos os dados de suas propriedades, como índices de produtividade, informações sobre grãos e insumos, previsão do tempo e histórico do clima. Há também a Supercampo, plataforma de comércio virtual que atende mais de 80 mil cooperados no Brasil, um projeto da Cotrijal e outras 11 cooperativas.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;— Além disso, em tempos de LGPD (a Lei Geral de Proteção de Dados), é fundamental que cooperativas tenham como foco questões de governança e segurança de dados, para proteger tanto a instituição quanto seus associados — afirma Schwalbert.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Nas cooperativas de TI, demanda é crescente
&lt;/h2&gt;

&lt;p&gt;Com a demanda por soluções de tecnologia em alta, cooperativas especializadas em oferecer plataformas de conectividade e softwares crescem no Brasil. É o caso da &lt;strong&gt;LibreCode&lt;/strong&gt;, com sede em Niterói, na Região Metropolitana do Rio de Janeiro, e formada por 16 profissionais especializados em diferentes áreas de Tecnologia da Informação (TI).&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;— Temos percebido considerável aumento na procura. Essa demanda vem avançando de forma significativa a cada ano, refletindo o desejo de pessoas e empresas em buscar inovação e eficiência através da adoção de soluções tecnológicas desenvolvidas por cooperativas, que trazem impacto social positivo em suas atividades e segurança de dados. Esse aumento tem contribuído para o substancial crescimento do nosso faturamento anual — diz a presidente da cooperativa, Daiane Alves.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---KWrTtU5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jva0yytq9ehgmt31utex.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---KWrTtU5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jva0yytq9ehgmt31utex.png" alt="Presidente da LibreCode, Daiane Alves. — Foto: Fabiano Rocha" width="800" height="508"&gt;&lt;/a&gt;&lt;/p&gt;
Presidente da LibreCode, Daiane Alves. — Foto: Fabiano Rocha



&lt;p&gt;Ela cita a maior procura por plataformas voltadas para a gestão integrada, como sistemas para gestão de escritório na nuvem, ferramentas de colaboração, programas de videoconferência, além de aplicativos para gestão de documentos, assinatura digital e projetos. Para Daiane, a inovação tecnológica é essencial para acompanhar as demandas do mercado:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;— Essas soluções oferecem maior agilidade nas operações e facilitam a comunicação e compartilhamento de informações entre os membros da cooperativa. Empresas com foco em tecnologia no planejamento estratégico tendem a ter um crescimento mais expressivo, pois conseguem otimizar seus processos e tomar decisões estratégicas com base em dados.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Agilidade nos processos
&lt;/h2&gt;

&lt;p&gt;A Ticoop Brasil, com sede em Curitiba, no Paraná, também verifica uma procura crescente. Formada por profissionais em Tecnologia da Informação, a co-operativa, diz seu presidente Tiago Enrique dos Santos Rodrigues e Silva, já atua em todo o país. Para ele, o aumento da competitividade no mercado obriga as cooperativas a serem mais eficientes e a produzirem mais com menos recursos.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;— As cooperativas têm encontrado na tecnologia grande apoio para impulsionar o crescimento dos negócios e fortalecer a presença no mercado. Para qualquer ramo de atividade, o uso de algoritmos, de dados e inteligência artificial permite identificar padrões, tendências e prever cenários. Com informações precisas, os gestores podem tomar decisões mais fundamentadas e implementar ações corretivas de forma ágil. A transformação digital das empresas passa por um processo de mudança de cultura e de adaptação. A transformação é urgente.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Silva lembra que, hoje, a procura está direcionada para novas tecnologias:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;— Hoje a visão estratégica das empresas está voltada para a adoção de ferramentas e soluções tecnológicas adequadas ao seu ramo de negócio para enfrentar desafios e aproveitar as oportunidades.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Fonte: &lt;a href="https://oglobo.globo.com/economia/noticia/2023/07/31/em-busca-de-eficiencia-cooperativas-investem-em-tecnologia.ghtml"&gt;https://oglobo.globo.com/economia/noticia/2023/07/31/em-busca-de-eficiencia-cooperativas-investem-em-tecnologia.ghtml&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Migre para Nextcloud facilmente todos os seus arquivos de plataformas inseguras</title>
      <dc:creator>Daiane Alves</dc:creator>
      <pubDate>Mon, 11 Jan 2021 19:37:20 +0000</pubDate>
      <link>https://forem.com/librecodecoop/migre-para-nextcloud-facilmente-todos-os-seus-arquivos-de-plataformas-inseguras-9go</link>
      <guid>https://forem.com/librecodecoop/migre-para-nextcloud-facilmente-todos-os-seus-arquivos-de-plataformas-inseguras-9go</guid>
      <description>&lt;p&gt;&lt;strong&gt;Nextcloud&lt;/strong&gt; se preocupa com a privacidade e a autonomia dos dados. Nós acreditamos que quem possui e controla nossos documentos, fotos, registros de bate-papo e itens de calendário &lt;strong&gt;deveria ser você&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Milhões de pessoas e empresas concordam e confiam em seu próprio  servidor Nextcloud ou em uma empresa que forneça o Nextcloud pronto para  uso. Para ajudar a tornar mais fácil sair de &lt;strong&gt;plataformas fechadas, inseguras e sem privacidade&lt;/strong&gt;, Nextcloud possui uma série de ferramentas de migração. &lt;/p&gt;

&lt;p&gt;Essas ferramentas facilitam para quem tem contas no Google, Microsoft e outros serviços a mover seus dados para o Nextcloud com apenas alguns cliques. Veja como é fácil!&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Migração Google&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Nossa ferramenta de migração do Google pode &lt;strong&gt;importar&lt;/strong&gt; calendários, contatos, fotos, arquivos do Google Drive e Google Docs &lt;strong&gt;para o Nextcloud&lt;/strong&gt;. Os documentos podem ser exportados como arquivos Open Document ou OOXML (formato Microsoft Office).&lt;/p&gt;

&lt;p&gt;Ambos podem ser editados com nossa solução integrada. Da mesma forma, o aplicativo Calendário terá os calendários adicionados a ele e os contatos serão importados para os Contatos.&lt;/p&gt;

&lt;p&gt;Para aqueles que estão migrando do Google Fotos, temos duas dicas:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Para ver onde suas imagens foram tiradas, instale o aplicativo &lt;strong&gt;Nextcloud Maps&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;E para o reconhecimento facial, a comunidade desenvolveu o aplicativo &lt;strong&gt;FaceRecognition&lt;/strong&gt;!
Com essa migração, você terá a maioria dos dados nos aplicativos Nextcloud equivalentes para que possa continuar trabalhando - &lt;strong&gt;mas sem vazar seus dados para o Google&lt;/strong&gt;!
Para migrar dados, o administrador deve configurar credenciais OAuth com o Google para seu servidor. Para que os dados não trafeguem por servidores que não sejam os seus e os da Google nesta operação, esta configuração deve ser feita em cada servidor.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Dropbox&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Nossa ferramenta de migração do Dropbox permitirá que você importe seus documentos e outros arquivos do Dropbox para o Nextcloud. É fácil conectar-se por meio do OAuth, não exigindo nenhuma configuração especial por parte do administrador do sistema. Assim como acontece com o migrador do Google, seus arquivos com sua estrutura de diretório são totalmente preservados durante a importação.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;OneDrive&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Nossa ferramenta de migração OneDrive também se concentra na migração de arquivos e documentos. Assim, como na migração do Google, é necessário um administrador para configurar o OAuth com a Microsoft. Os arquivos e a estrutura do diretório são mantidos durante a importação e as atualizações futuras para adicionar calendário, contatos e outros dados poderão ser importados em versão futura.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;ownCloud&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Além de criar ferramentas de migração para as plataformas de nuvem pública acima, também atualizamos nossa migração do ownCloud. Nos últimos anos, a distância entre o Nextcloud e o ownCloud cresceu muito, o que complicou a migração e recentemente temos recebido algumas perguntas sobre isso. Portanto, para aqueles que ainda estão em um servidor ownCloud, atualizamos nosso caminho de migração para permitir a migração do ownCloud 10.5 diretamente para o Nextcloud 20.0.4. &lt;/p&gt;

&lt;p&gt;Recomendamos que você mude o quanto antes para se beneficiar de todas as melhorias de desempenho, segurança e recursos que só encontra no Nextcloud.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Configurações de administrador&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Mencionamos que para o Google e o OneDrive, os administradores devem seguir algumas etapas para garantir que os servidores do Google e da Microsoft aceitem a solicitação de autenticação dos usuários.Tentamos torná-lo o mais fácil possível, mas infelizmente essas empresas não são muito gentis com a infraestrutura distribuída e não podemos fazer isso por você.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Tenha controle sobre seus dados!&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;A autonomia dos dados, possuir e controlar seus documentos privados, fotos, registros de bate-papo e itens de calendário, é uma motivação para muitos usuários do Nextcloud. Estamos contentes por ter a oportunidade de tornar isso mais fácil para você e mal podemos esperar para ver o que fará com isso!&lt;br&gt;
A migração é executada em segundo plano, importando os arquivos e outros dados em segundo plano.&lt;/p&gt;

&lt;p&gt;Se você não estiver pronto para migrar, é claro que você pode integrar com serviços externos. A app store inclui vários armazenamentos externos, incluindo Dropbox, OneDrive e Google Drive. Eles permitem que você acesse seus arquivos nesses armazenamentos de forma integrada a partir do Nextcloud. O armazenamento externo permite editar, compartilhar, comentar e trabalhar com todos os seus arquivos, independentemente de onde eles estão armazenados.&lt;/p&gt;

&lt;p&gt;Agora se já está cansado de entregar seus dados para essas empresas, que tal começar a migrar para Nextcloud agora mesmo? Se precisar de ajuda com isso, você pode contratar nossos serviços de implantação e suporte.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Site&lt;/strong&gt;: &lt;a href="//lt.coop.br"&gt;lt.coop.br&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Obs&lt;/strong&gt;: este texto é uma tradução adaptada do blog oficial do Nextcloud, o post original você pode acessar &lt;a href="https://nextcloud.com/blog/easy-migration-to-nextcloud-from-insecure-and-privacy-unfriendly-platforms-now-available/"&gt;aqui&lt;/a&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Date and time - Manipulando datas em PHP</title>
      <dc:creator>Daiane Alves</dc:creator>
      <pubDate>Sat, 05 Dec 2020 14:51:07 +0000</pubDate>
      <link>https://forem.com/daianealves/date-and-time-manipulando-datas-em-php-52a8</link>
      <guid>https://forem.com/daianealves/date-and-time-manipulando-datas-em-php-52a8</guid>
      <description>&lt;p&gt;Trabalhar com manipulação de datas é extremamente importante no desenvolvimento, manutenção de sistemas e para facilitar nosso dia a dia. O PHP possui várias funções para trabalhar com datas.  &lt;/p&gt;

&lt;p&gt;As funções e classes relacionadas a data e hora não necessitam de instalação de extensão, pois são nativas do PHP.&lt;/p&gt;

&lt;p&gt;Ao longo desse artigo vamos mostrar de forma conceitual e prática como utilizar estas funções e classes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Função &lt;a href="//php.net/date"&gt;date()&lt;/a&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Sintaxe
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;  &lt;span class="nb"&gt;date&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="nv"&gt;$format&lt;/span&gt; &lt;span class="p"&gt;[,&lt;/span&gt; &lt;span class="n"&gt;int&lt;/span&gt; &lt;span class="nv"&gt;$timestamp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;time&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;string&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A função &lt;a href="//php.net/date"&gt;&lt;code&gt;date()&lt;/code&gt;&lt;/a&gt; recebe dois parâmetros, o primeiro é uma string de formato e o segundo é o timestamp que é um valor inteiro e opcional, por isto na sintaxe ele vem entre colchetes.&lt;/p&gt;

&lt;p&gt;Veja abaixo um exemplo de código para exibir o dia e a hora atual:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="c1"&gt;// ANO-MÊS-DIA HORA:MINUTO:SEGUNDO&lt;/span&gt;
&lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="nb"&gt;date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Y-m-d H:i:s'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="kc"&gt;PHP_EOL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="c1"&gt;// Saída: 2020-12-03 20:56:30&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Repare que cada letra passada como argumento tem um retorno diferente. Por exemplo, &lt;strong&gt;H&lt;/strong&gt; formato de 24 horas de uma hora (00 a 23).&lt;/p&gt;

&lt;p&gt;A seguir outras formas de formatação de saída da função &lt;a href="//php.net/date"&gt;&lt;code&gt;date()&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Caracter&lt;/th&gt;
&lt;th&gt;Descrição&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;d&lt;/td&gt;
&lt;td&gt;Dia do mês, 2 dígitos com zero à esquerda&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;D&lt;/td&gt;
&lt;td&gt;Uma representação textual de um dia, três letras&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;l ('L' minúsculo)&lt;/td&gt;
&lt;td&gt;A representação textual do dia da semana&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;z&lt;/td&gt;
&lt;td&gt;O dia do ano (iniciando em 0)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;F&lt;/td&gt;
&lt;td&gt;Representação completa de um mês, como January ou March&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;m&lt;/td&gt;
&lt;td&gt;Representação numérica de um mês, com zero à esquerda&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Y&lt;/td&gt;
&lt;td&gt;Representação de ano completa, 4 dígitos&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;y&lt;/td&gt;
&lt;td&gt;Representação do ano com dois dígitos&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h4&gt;
  
  
  Dica
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;p&gt;Você pode utilizar a função &lt;a href="//php.net/date"&gt;&lt;code&gt;date()&lt;/code&gt;&lt;/a&gt; para atualizar automaticamente o ano dos direitos autorais em seu site. Veja o exemplo:&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt; &lt;span class="ni"&gt;&amp;amp;copy;&lt;/span&gt; 2015-&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt; &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="nb"&gt;date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Y'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="cp"&gt;?&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Conheça agora alguns caracteres comumente usados ​​para &lt;strong&gt;horários&lt;/strong&gt;:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Caracter&lt;/th&gt;
&lt;th&gt;Descrição&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;H&lt;/td&gt;
&lt;td&gt;formato de 24 horas de uma hora (00 a 23)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;h&lt;/td&gt;
&lt;td&gt;formato de 12 horas de uma hora com zeros à esquerda (01 a 12)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;i&lt;/td&gt;
&lt;td&gt;Minutos com zeros à esquerda (00 a 59)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;s&lt;/td&gt;
&lt;td&gt;segundos com zeros à esquerda (00 a 59)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;a&lt;/td&gt;
&lt;td&gt;Ante meridiem minúsculo e Post meridiem (am ou pm) minúsculo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A&lt;/td&gt;
&lt;td&gt;Ante meridiem minúsculo e Post meridiem (am ou pm) maiúsculo&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Para exibir a hora atual no formato especificado, basta executar o código abaixo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'Em Brasíla: '&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="nb"&gt;date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'H:i:s'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="s1"&gt;' horas...'&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="kc"&gt;PHP_EOL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="c1"&gt;// exibe o horário atual do servidor&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Trabalhando com fuso horário
&lt;/h3&gt;

&lt;p&gt;Se ao executar o código acima a hora exibida não estiver correta, provavelmente é porque seu servidor está configurado para um fuso horário diferente do seu.&lt;/p&gt;

&lt;p&gt;Se você precisa que o horário esteja correto de acordo com um local específico, terá que definir o fuso horário que deseja usar utilizando a função &lt;code&gt;date_default_timezone_set()&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Veja um exemplo que define o fuso horário para 'America / New_York' e, em seguida, exibe a hora atual no formato especificado:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nb"&gt;date_default_timezone_set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'America/New_York'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'Hora atual em Nova York: '&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="nb"&gt;date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'H:i:s a'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="kc"&gt;PHP_EOL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nb"&gt;date_default_timezone_set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'America/Sao_Paulo'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'Hora atual em São Paulo: '&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="nb"&gt;date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'H:i:s a'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="kc"&gt;PHP_EOL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Obs:&lt;/strong&gt; É possível ver a lista de fusos horários suportados pelo DateTimeZone na própria &lt;a href="https://php.net/timezones"&gt;documetação&lt;/a&gt; do PHP.&lt;/p&gt;

&lt;p&gt;Outra forma de exibir a data e a hora é utilizando a função &lt;a href="https://php.net/mktime"&gt;&lt;code&gt;mktime()&lt;/code&gt;&lt;/a&gt;. Ela recebe como parâmetros (hora, minuto, segundo, mês, dia, ano).Note que todos os argumentos são obrigatórios. Caso você não precise usar algum deles, basta preencher com &lt;code&gt;0&lt;/code&gt;como vemos neste exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nv"&gt;$date&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;mktime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mo"&gt;00&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mo"&gt;02&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2020&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'Criado em: '&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="nb"&gt;date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'d-m-Y '&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$date&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="kc"&gt;PHP_EOL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="c1"&gt;// Saída: Criado em: 02-12-2020 &lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  DateTime
&lt;/h2&gt;

&lt;p&gt;Vimos até agora o uso de algumas funções &lt;code&gt;date&lt;/code&gt;, mas é possível também utilizar orientação a objetos para fazer essas manipulações. Com a classe DateTime podemos instanciar e obter a data e hora atuais, por exemplo.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Pega o momento atual&lt;/span&gt;
&lt;span class="nv"&gt;$today&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;DateTime&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="c1"&gt;// Exibe no formato desejado&lt;/span&gt;
&lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="nv"&gt;$today&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Y-m-d'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="kc"&gt;PHP_EOL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Observe que neste exemplo, nenhum parâmetro foi passado para o construtor da classe DateTime, então o momento atual foi exibido.&lt;/p&gt;

&lt;h2&gt;
  
  
  Adicionando datas
&lt;/h2&gt;

&lt;p&gt;Você pode também adicionar datas de várias maneiras. Uma delas é especificando nos argumentos da classe DateTime. Ela recebe como parâmetro uma string de formato de data em inglês ou também uma string com uma data específica. Veja abaixo alguns exemplos:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nv"&gt;$agora&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;DateTime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'now'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// ou sem parâmetro&lt;/span&gt;
&lt;span class="nv"&gt;$amanha&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;DateTime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'tomorrow'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nv"&gt;$proximo_ano&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;DateTime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'next year'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nv"&gt;$data_aleatoria&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;DateTime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'2000-10-10'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="nv"&gt;$agora&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Y-m-d'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="kc"&gt;PHP_EOL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="nv"&gt;$amanha&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Y-m-d'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="kc"&gt;PHP_EOL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="nv"&gt;$proximo_ano&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Y-m-d'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="kc"&gt;PHP_EOL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="nv"&gt;$data_aleatoria&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Y-m-d'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="kc"&gt;PHP_EOL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;OBS&lt;/strong&gt;: Em PHP variáveis podem ter acento no nome mas é bom evitar para não ter problemas com diferentes codificações de caracteres em diferentes sistemas operacionais.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Adicionando datas - strtotime()
&lt;/h3&gt;

&lt;p&gt;A função &lt;code&gt;strtotime()&lt;/code&gt; recebe como parâmetro uma string de formato de data em inglês e tenta analisar esse formato. É como tentar transformar uma frase que possui possíveis informações de data em uma data real, como mostra o código a seguir:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nv"&gt;$data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;strtotime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'tomorrow'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="nb"&gt;date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Y-m-d'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="kc"&gt;PHP_EOL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nv"&gt;$data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;strtotime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'next Friday'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="nb"&gt;date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Y-m-d'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="kc"&gt;PHP_EOL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nv"&gt;$data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;strtotime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'+3 Months'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="nb"&gt;date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Y-m-d'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="kc"&gt;PHP_EOL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agora imagine que você precise listar os próximos sábados a partir da data atual... No exemplo a seguir você consegue fazer isso facilmente utilizando a função &lt;code&gt;strtotime()&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Veja:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nv"&gt;$data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;strtotime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Sunday'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nv"&gt;$data_final&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;strtotime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'+4 weeks'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$data&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$data&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nv"&gt;$data_final&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="nb"&gt;date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'F d'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="kc"&gt;PHP_EOL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nv"&gt;$data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;strtotime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'+1 week'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$data&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Adicionando datas - DateTime::add
&lt;/h3&gt;

&lt;p&gt;Outra forma de adicionar datas é utilizar o método &lt;code&gt;add&lt;/code&gt; da classe &lt;code&gt;DateTime&lt;/code&gt;. Com ele é possível acrescentar uma quantidade de dias, meses, anos, horas, minutos e segundos em um objeto &lt;code&gt;DateTime&lt;/code&gt; passando para o método &lt;code&gt;add&lt;/code&gt; a quantidade de períodos como no exemplo abaixo.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;P5D: Período de cinco dias&lt;/li&gt;
&lt;li&gt;P2M: Período de dois meses&lt;/li&gt;
&lt;li&gt;PT10S: Período de dez segundos&lt;/li&gt;
&lt;li&gt;P2YT20M: Período de dois anos e vinte minutos&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Veja o como utilizar:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nv"&gt;$diff1Year&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;DateInterval&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'P1Y'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nv"&gt;$diff10Hours&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;DateInterval&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'PT10H'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Adiciona 1 ano em $date1&lt;/span&gt;
&lt;span class="nv"&gt;$date1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;DateTime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'2020-12-02 08:00:00'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nv"&gt;$date1&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$diff1Year&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nb"&gt;print_r&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$date1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Adiciona 10 horas em $date2&lt;/span&gt;
&lt;span class="nv"&gt;$date2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;DateTime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'2020-12-02 08:00:00'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nv"&gt;$date2&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$diff10Hours&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nb"&gt;print_r&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$date2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Vimos até agora várias formas de adicionar datas e períodos usando funções e classes Date PHP. Mas, e se quiséssemos saber o intervalo entre duas datas? &lt;/p&gt;

&lt;h2&gt;
  
  
  Subtraindo datas
&lt;/h2&gt;

&lt;p&gt;Da mesma maneira que conseguimos adicionar datas e horas, também podemos subtrair um determinado período sobre um objeto da classe &lt;code&gt;DateTime&lt;/code&gt; utilizando a função &lt;code&gt;sub()&lt;/code&gt;. Confira como é fácil.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nv"&gt;$date&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;DateTime&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nv"&gt;$date&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;sub&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;DateInterval&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'P10D'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="c1"&gt;// Retorna a data atual - 10 dias&lt;/span&gt;
&lt;span class="nb"&gt;print_r&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$date&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Diferença de datas
&lt;/h3&gt;

&lt;p&gt;Calcular a diferença de datas no PHP é muito simples de se fazer utilizando o método &lt;code&gt;diff()&lt;/code&gt;.&lt;br&gt;
Imagine que você queira descobrir quantos dias de vida tem uma pessoa...&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nv"&gt;$data1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;DateTime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'1984-01-01'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
&lt;span class="nv"&gt;$data2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;DateTime&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; 
&lt;span class="nv"&gt;$intervalo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$data1&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;diff&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$data2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
&lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="nv"&gt;$intervalo&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Total de dias: %a'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="kc"&gt;PHP_EOL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
&lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="nv"&gt;$intervalo&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Anos: %y %m meses e %d dias'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="kc"&gt;PHP_EOL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Parabéns! Você acabou de descobrir que tem alguns muitos dias de vida.&lt;/p&gt;

&lt;h2&gt;
  
  
  Concluindo
&lt;/h2&gt;

&lt;p&gt;Manipular datas e hora no PHP é bem fácil! Não é necessário utilizar nenhuma biblioteca externa para isso pois ele trás funções e classes nativas. Com elas você pode fazer diversas operações envolvendo comparação, adição, subtração de datas e muito mais.&lt;/p&gt;

&lt;p&gt;Para conferir um pouco mais sobre o mundo de possibilidades de se trabalhar com datas e horas no PHP, consulte sua &lt;a href="https://php.net/datetime"&gt;documentação&lt;/a&gt;. Lá você verá uma lista completa de funções e poderá tranquilamente realizar diversas operações.&lt;/p&gt;

</description>
      <category>php</category>
      <category>developer</category>
      <category>dateandtime</category>
    </item>
    <item>
      <title>Assembleias digitais: tudo o que você precisa saber!</title>
      <dc:creator>Daiane Alves</dc:creator>
      <pubDate>Mon, 16 Nov 2020 17:06:43 +0000</pubDate>
      <link>https://forem.com/librecodecoop/assembleias-digitais-tudo-o-que-voce-precisa-saber-4cld</link>
      <guid>https://forem.com/librecodecoop/assembleias-digitais-tudo-o-que-voce-precisa-saber-4cld</guid>
      <description>&lt;p&gt;Quem é cooperado sabe que toda cooperativa precisa realizar assembleias anualmente, mas com a pandemia isto se tornou inviável no formato presencialmente, como era tradicionalmente realizada.&lt;br&gt;
Entrou em vigor em 28 de Julho de 2020 a Lei 14.030 que regulamenta de forma permanente a realização de Assembleias Gerais em cooperativas de forma digital. Em seu Art. 8º diz o seguinte:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“A Lei nº 5.764, de 16 de dezembro de 1971, passa a vigorar acrescida do seguinte art. 43-A:&lt;br&gt;
“Art. 43-A.  O associado poderá participar e votar a distância em reunião ou em assembleia, que poderão ser realizadas em meio digital, nos termos do regulamento do órgão competente do Poder Executivo Federal.&lt;br&gt;
Parágrafo único. A assembleia geral poderá ser realizada de forma digital, respeitados os direitos legalmente previstos de participação e de manifestação dos associados e os demais requisitos regulamentares.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Agora, além de presenciais, as assembleias poderão acontecer de forma semipresencial ou digital e precisam atender todos os requisitos de convocação, deliberação e votação definidos na Lei 5.764/71, artigos 38 a 46.&lt;br&gt;
Caso optem pela realização de assembleias virtuais, as cooperativas devem obedecer aos requisitos dispostos na Instrução Normativa nº 81 (SEÇÃO III) que estabelece regras de realização das assembleias e garante a validade jurídica da mesma. A participação e a votação a distância dos sócios podem ocorrer mediante  o envio de boletim de voto a distância e/ou mediante atuação remota,  via sistema eletrônico.&lt;br&gt;
    Neste artigo, vamos te guiar de forma prática em todas as etapas para que sua assembleia digital ocorra com sucesso e sem surpresas!&lt;/p&gt;

&lt;h2&gt;
  
  
  Edital de Convocação
&lt;/h2&gt;

&lt;p&gt;Toda assembleia deve começar com a divulgação do Edital de Convocação que deve ser publicado, no mínimo, 10 (dez) dias de antecedência conforme determina a Lei 5.764/71, artigo 38. Os documentos e informações a serem disponibilizados previamente à realização da reunião ou assembleia semi-presencial ou digital devem, não apenas observar os mecanismos de divulgação já previstos em lei, como também ser disponibilizados por meio digital seguro.&lt;/p&gt;

&lt;p&gt;O Edital de Convocação deve informar, em destaque, que a reunião ou assembleia será semi-presencial ou digital detalhando como os sócios poderão participar e votar a distância com indicação do endereço eletrônico (site) na internet onde as informações completas devem estar disponíveis de forma segura.&lt;/p&gt;

&lt;p&gt;Para isso, a cooperativa deverá adotar sistema e tecnologia acessíveis para que todos  os sócios participem e votem a distância na assembleia ou reunião  semi-presencial ou digital.&lt;/p&gt;

&lt;p&gt;É importante ressaltar no Edital de Convocação que a cooperativa não poderá ser responsabilizada por problemas decorrentes  dos equipamentos de informática ou da conexão à internet dos sócios, assim como por quaisquer outras situações que  não estejam sob o seu controle. &lt;/p&gt;

&lt;h2&gt;
  
  
  Realização da Assembleia
&lt;/h2&gt;

&lt;p&gt;A INDREI nº 81 traz ainda outra novidade: a cooperativa pode contratar terceiros para administrar, em seu nome, as assembleias semi presenciais e digitais. Recentemente lançamos o &lt;a href="https://tavola.lt.coop.br/login"&gt;Távola&lt;/a&gt; (software de assembleias digitais).&lt;br&gt;
Desenvolvido pela Lyseon Tech (cooperativa de profissionais de TI do Rio de Janeiro), o Távola possui todas as funcionalidades legais estabelecidas pela instrução normativa e com ele é possível:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ter acesso ao Edital de Convocação em um painel exclusivo;&lt;/li&gt;
&lt;li&gt;Criar e editar de atas colaborativamente;&lt;/li&gt;
&lt;li&gt;Registrar a presença dos participantes;&lt;/li&gt;
&lt;li&gt;Realizar assembleia por videoconferência e chat;&lt;/li&gt;
&lt;li&gt;Criar pauta para votação em tempo real;&lt;/li&gt;
&lt;li&gt;Realizar eleição de candidatos aos conselhos;&lt;/li&gt;
&lt;li&gt;Gravar a assembleia;&lt;/li&gt;
&lt;li&gt;Dispor de Suporte técnico em tempo real;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Confecção e assinaturas das Atas.
&lt;/h2&gt;

&lt;p&gt;A ata da assembleia semipresencial ou digital poderá ser assinadas isoladamente pelo presidente e secretário(a) da mesa, que certificarão os sócios presentes.&lt;br&gt;
Na ata da assembléia deverá constar a informação de que ela foi semipresencial ou digital, informando a forma pela qual foram permitidas a participação e a votação a distância.&lt;br&gt;
Os participantes da assembleia semi-presencial ou digital deverão assinar a ata respectiva e consolidar, em documento único, a lista de presença.&lt;/p&gt;

&lt;p&gt;Há também a possibilidade de confeccionar a ata digitalmente, ou seja, sem a necessidade de gerar um documento físico. Neste caso, ela deve ser assinada com certificado digital emitido por entidade credenciada pela Infraestrutura de Chaves Públicas Brasileira-ICP-Brasil ou qualquer outro meio de comprovação da autoria e integridade de documentos em forma eletrônica;&lt;/p&gt;

&lt;p&gt;Na ata o presidente ou secretário deve declarar expressamente que atendeu todos os requisitos para a sua realização.&lt;br&gt;
Vale lembrar que até o final do ano 2020, a Junta Comercial do Estado do Rio de Janeiro (JUCERJA), será 100% digital. A partir de janeiro de 2021 não serão mais aceitos processos físicos, ou seja, em papel. Então, toda a entrada de documentos se dará apenas online.&lt;/p&gt;

&lt;p&gt;O mundo está mudando, a forma como as cooperativas realizam suas assembleias também. É preciso se adaptar!&lt;/p&gt;

&lt;p&gt;Precisando de ajuda? A &lt;a href="https://lt.coop.br/"&gt;Lyseon Tech&lt;/a&gt; está disponibilizando o &lt;a href="https://tavola.lt.coop.br/login"&gt;Távola&lt;/a&gt; gratuitamente para realização de sua primeira assembleia digital. Venha conferir como é simples e seguro realizar suas reuniões com o Távola. &lt;br&gt;
Fale com um de nossos consultores: &lt;a href="mailto:comercial@LT.COOP.BR"&gt;comercial@LT.COOP.BR&lt;/a&gt;&lt;/p&gt;

</description>
      <category>jucerja</category>
    </item>
    <item>
      <title>Manipulação de arquivos csv no PHP</title>
      <dc:creator>Daiane Alves</dc:creator>
      <pubDate>Mon, 15 Jun 2020 16:05:48 +0000</pubDate>
      <link>https://forem.com/phpwomenbr/manipulacao-de-arquivos-csv-no-php-5eeg</link>
      <guid>https://forem.com/phpwomenbr/manipulacao-de-arquivos-csv-no-php-5eeg</guid>
      <description>&lt;h1&gt;
  
  
  Manipulação de arquivos &lt;code&gt;csv&lt;/code&gt; com PHP
&lt;/h1&gt;

&lt;p&gt;O formato &lt;code&gt;csv&lt;/code&gt; é um tipo de arquivo de texto bastante utilizado para transferência de informações entre diferentes aplicações e também para geração de relatório.&lt;/p&gt;

&lt;p&gt;E para fazer esse tipo de troca de informações com sucesso, você precisa saber como manipular esses arquivos.&lt;/p&gt;

&lt;p&gt;Em linhas gerais, o &lt;code&gt;csv&lt;/code&gt; é um formato usado para armazenar dados e que pode ser lido em programas que trabalham com planilhas.&lt;/p&gt;

&lt;h2&gt;
  
  
  O que é &lt;code&gt;csv&lt;/code&gt;?
&lt;/h2&gt;

&lt;p&gt;Mas, antes de trabalhar com arquivos &lt;code&gt;csv&lt;/code&gt; no PHP, é importante entender em que consiste essa sigla. Por definição, &lt;code&gt;csv&lt;/code&gt; é um formato de arquivo que significa “comma-separated-values” (valores separados por vírgulas), ou seja,os campos de dados indicados neste formato normalmente são separados ou delimitados por uma vírgula.&lt;/p&gt;

&lt;p&gt;Para entender de uma forma mais prática, vamos supor que você tenha uma planilha que contenha os dados a seguir:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Daiane&lt;/th&gt;
&lt;th&gt;&lt;a href="mailto:daiane@teste.com"&gt;daiane@teste.com&lt;/a&gt;&lt;/th&gt;
&lt;th&gt;912345678&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Adriele&lt;/td&gt;
&lt;td&gt;&lt;a href="mailto:drica@teste.com"&gt;drica@teste.com&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;987654321&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Livia&lt;/td&gt;
&lt;td&gt;&lt;a href="mailto:livia@teste.com"&gt;livia@teste.com&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;876543456&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bruna&lt;/td&gt;
&lt;td&gt;&lt;a href="mailto:bruna@teste.com"&gt;bruna@teste.com&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;998765678&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Esses dados poderiam ser lidos em um arquivo &lt;code&gt;csv&lt;/code&gt; separados por vírgulas e por um espaçamento de linha, como no exemplo a seguir:&lt;/p&gt;

&lt;p&gt;Daiane,&lt;a href="mailto:daiane@teste.com"&gt;daiane@teste.com&lt;/a&gt;,912345678&lt;br&gt;
Adriele,&lt;a href="mailto:drica@teste.com"&gt;drica@teste.com&lt;/a&gt;,987654321&lt;br&gt;
Livia,&lt;a href="mailto:livia@teste.com"&gt;livia@teste.com&lt;/a&gt;,876543456&lt;br&gt;
Bruna,&lt;a href="mailto:bruna@teste.com"&gt;bruna@teste.com&lt;/a&gt;,998765678&lt;/p&gt;

&lt;p&gt;Agora que você já entendeu o conceito básico sobre &lt;code&gt;csv&lt;/code&gt;, vamos aprender como podemos utilizar o PHP para fazer a manipulação desses arquivos.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;OBS&lt;/strong&gt;: CSV é separado por vírgula e não ponto e vírgula.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
  
  
  Abrindo um arquivo &lt;code&gt;csv&lt;/code&gt; existente
&lt;/h2&gt;

&lt;p&gt;A função &lt;code&gt;fopen()&lt;/code&gt; pode ser utilizada tanto para abrir um arquivo quanto para criar um novo.&lt;/p&gt;

&lt;p&gt;Neste exemplo, vamos mostrar como abrir um arquivo existente. A função &lt;code&gt;fopen()&lt;/code&gt; recebe dois argumentos, o primeiro argumento recebe o nome do arquivo que deseja abrir e no segundo argumento o tipo de permissão(leitura, escrita, leitura e escrita...).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nv"&gt;$arquivo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;fopen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'nomeArquivo.csv'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'w'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Criando um arquivo &lt;code&gt;csv&lt;/code&gt;
&lt;/h1&gt;

&lt;p&gt;Podemos também utilizar a função &lt;code&gt;fopen()&lt;/code&gt; para criar nosso arquivo &lt;code&gt;.csv&lt;/code&gt;.&lt;br&gt;
Veja o exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="c1"&gt;//Abrir ou criar arquivo&lt;/span&gt;
&lt;span class="nv"&gt;$arquivo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;fopen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'file.csv'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'w'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ao executar esta função é criado automaticamente um arquivo vazio (com permissão de escrita, neste caso).&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Nota&lt;/strong&gt;: a função &lt;code&gt;fopen()&lt;/code&gt; pode ser utilizada para criar qualquer tipo de arquivo, basta colocar a extensão que deseja. Exemplo: &lt;code&gt;arquivo.txt&lt;/code&gt;, &lt;code&gt;arquivo.pdf&lt;/code&gt;, &lt;code&gt;arquivo.xls&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Inserindo dados no arquivo &lt;code&gt;csv&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Existem algumas maneiras de inserir dados em um arquivo &lt;code&gt;csv&lt;/code&gt;, uma delas é abrir o próprio arquivo e inserir os dados manualmente separados por vírgula. Mas, não é isso que iremos aprender...&lt;/p&gt;

&lt;p&gt;Vamos usar nosso bom e velho amigo PHP para isso!&lt;/p&gt;

&lt;p&gt;Para isso podemos utilizar a função &lt;code&gt;fputcsv()&lt;/code&gt;. Ela formata uma linha (passada como um array de campos &lt;code&gt;fields)&lt;/code&gt; como &lt;code&gt;CSV&lt;/code&gt; e a escreve (terminando com uma nova linha) no manipulador de arquivo especificado por &lt;code&gt;handle&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Sintaxe
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nb"&gt;fputcsv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$handle&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$fields&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$delimiter&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$enclosure&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$escape_char&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h5&gt;
  
  
  Parâmetros
&lt;/h5&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;$handle&lt;/code&gt; - O ponteiro de arquivo precisa ser válido, e apontar para um arquivo aberto por &lt;code&gt;fopen()&lt;/code&gt; (e ainda não fechado por &lt;code&gt;fclose()&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;$fields&lt;/code&gt; - Um array de valores.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;$delimiter&lt;/code&gt;- O parâmetro opcional delimiter configura o caractere delimitador (apenas um caractere). O padrão é vírgula.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;$enclosure&lt;/code&gt;- O parâmetro opcional enclosure configura o caractere que envolve os dados (apenas um caractere). O padrão é aspas, utilizado quando se tem quebra de linha ou vírgulas dentro do texto.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;$escape_char&lt;/code&gt;- O parâmetro opcional escape_char configura o caractere de escape (apenas um caractere). Utilizado para fazer o escape de uma aspa no meio de uma string.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Veja o exemplo abaixo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nv"&gt;$dados&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="s1"&gt;'produto'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'Notebook'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="s1"&gt;'preco'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;3587&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="s1"&gt;'produto'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'Celular'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="s1"&gt;'preco'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;2643&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="s1"&gt;'produto'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'TV'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="s1"&gt;'preco'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;5876&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="s1"&gt;'produto'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'Fone'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="s1"&gt;'preco'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;432&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;];&lt;/span&gt;

&lt;span class="c1"&gt;// Abrir/criar arquivo&lt;/span&gt;
&lt;span class="nv"&gt;$arquivo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;fopen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'file.csv'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'w'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Popular os dados&lt;/span&gt;
&lt;span class="k"&gt;foreach&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$dados&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nv"&gt;$linha&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nb"&gt;fputcsv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$arquivo&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$linha&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// Fechar o arquivo&lt;/span&gt;
&lt;span class="nb"&gt;fclose&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$arquivo&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Neste exemplo começamos nosso arquivo criando um array que contém produtos e preços.&lt;br&gt;
Em seguida, criamos a variável &lt;code&gt;$arquivo&lt;/code&gt; que está recebendo a função &lt;code&gt;fopen()&lt;/code&gt;para criar um novo arquivo.&lt;br&gt;
Depois criamos um &lt;code&gt;foreach&lt;/code&gt; para percorrer nosso array e usamos a função &lt;code&gt;fputcsv()&lt;/code&gt; para gerar o output do &lt;code&gt;csv&lt;/code&gt;.&lt;br&gt;
E por último usamos a função &lt;code&gt;fclose()&lt;/code&gt; para fechar o arquivo.&lt;/p&gt;

&lt;p&gt;Ao executar este código teremos como saída:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nc"&gt;Notebook&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;3587&lt;/span&gt;
&lt;span class="nc"&gt;Celular&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2643&lt;/span&gt;
&lt;span class="no"&gt;TV&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;5876&lt;/span&gt;
&lt;span class="nc"&gt;Fone&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;432&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Criando cabeçalho
&lt;/h2&gt;

&lt;p&gt;O exemplo acima é bem útil, mas está faltando algo... Precisamos criar cabeçalhos pra nossa tabela final ficar mais intuitiva. Vamos lá?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Cabeçalho do csv&lt;/span&gt;
&lt;span class="nv"&gt;$headers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'Produto'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Preço'&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;

&lt;span class="nv"&gt;$dados&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="s1"&gt;'produto'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'Notebook'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="s1"&gt;'preco'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;3587&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="s1"&gt;'produto'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'Celular'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="s1"&gt;'preco'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;2643&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="s1"&gt;'produto'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'TV'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="s1"&gt;'preco'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;5876&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="s1"&gt;'produto'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'Fone'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="s1"&gt;'preco'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;432&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;];&lt;/span&gt;

&lt;span class="nv"&gt;$arquivo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;fopen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'file.csv'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'w'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Criar o cabeçalho&lt;/span&gt;
&lt;span class="nb"&gt;fputcsv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$arquivo&lt;/span&gt; &lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$headers&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;foreach&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$dados&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nv"&gt;$linha&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nb"&gt;fputcsv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$arquivo&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$linha&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nb"&gt;fclose&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$arquivo&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Manipulando os dados
&lt;/h2&gt;

&lt;p&gt;Imagine que você necessite colocar os &lt;strong&gt;produtos&lt;/strong&gt; em ordem alfabética. Podemos utilizar a função &lt;code&gt;array_multisort()&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Veja o exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nv"&gt;$headers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'Produto'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Preço'&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;

&lt;span class="nv"&gt;$dados&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="s1"&gt;'produto'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'Notebook'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="s1"&gt;'preco'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;3587&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="s1"&gt;'produto'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'Celular'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="s1"&gt;'preco'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;2643&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="s1"&gt;'produto'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'TV'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="s1"&gt;'preco'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;5876&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="s1"&gt;'produto'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'Fone'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="s1"&gt;'preco'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;432&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;];&lt;/span&gt;

&lt;span class="nv"&gt;$arquivo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;fopen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'file.csv'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'w'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nb"&gt;fputcsv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$arquivo&lt;/span&gt; &lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$headers&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;foreach&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$dados&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nv"&gt;$chave&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;$valor&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nv"&gt;$produto&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;$chave&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;  &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$valor&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'produto'&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
    &lt;span class="nv"&gt;$preco&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;$chave&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$valor&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'preco'&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// Ordenar array dados na coluna produto em ordem crescente.&lt;/span&gt;
&lt;span class="c1"&gt;// Pode usar SORT_DESC para ordem decrescente.&lt;/span&gt;
&lt;span class="nb"&gt;array_multisort&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$produto&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="no"&gt;SORT_ASC&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$dados&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;foreach&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$dados&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nv"&gt;$linha&lt;/span&gt; &lt;span class="p"&gt;){&lt;/span&gt;
    &lt;span class="nb"&gt;fputcsv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$arquivo&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$linha&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nb"&gt;fclose&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$arquivo&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Aqui nós utilizamos a função &lt;code&gt;array_multisort()&lt;/code&gt; para fazer a ordenação do nosso array. Para saber mais, consulte o &lt;a href="https://www.php.net/manual/pt_BR/function.array-multisort.php"&gt;manual do PHP&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Organizando preços em ordem decrescente
&lt;/h3&gt;

&lt;p&gt;Você também pode ordenar os preços utilizando a função &lt;code&gt;array_multisort()&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Veja o exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nv"&gt;$headers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'Produto'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Preço'&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;

&lt;span class="nv"&gt;$dados&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="s1"&gt;'produto'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'Notebook'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="s1"&gt;'preco'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;3587&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="s1"&gt;'produto'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'Celular'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="s1"&gt;'preco'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;2643&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="s1"&gt;'produto'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'TV'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="s1"&gt;'preco'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;5876&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="s1"&gt;'produto'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'Fone'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="s1"&gt;'preco'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;432&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;];&lt;/span&gt;

&lt;span class="nv"&gt;$arquivo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;fopen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'file.csv'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'w'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nb"&gt;fputcsv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$arquivo&lt;/span&gt; &lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$headers&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;foreach&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$dados&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nv"&gt;$chave&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;$valor&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nv"&gt;$produto&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;$chave&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;  &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$valor&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'produto'&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
    &lt;span class="nv"&gt;$preco&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;$chave&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$valor&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'preco'&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="c1"&gt;// SORT_ASC para ordem crescente&lt;/span&gt;
&lt;span class="nb"&gt;array_multisort&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$preco&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="no"&gt;SORT_ASC&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$dados&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;foreach&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$dados&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nv"&gt;$linha&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nb"&gt;fputcsv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$arquivo&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$linha&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nb"&gt;fclose&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$arquivo&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;OBS&lt;/strong&gt;: fclose em muitos casos se faz desnecessário pois o PHP já fecha automaticamente quando encerra a execução de um script. É bom fechar mais para reduzir consumo de memória em scripts que fazem muita coisa como manipulação de muitos CSV.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Lendo um arquivo &lt;code&gt;csv&lt;/code&gt; existente
&lt;/h2&gt;

&lt;p&gt;No exemplo anterior, vimos que é possível criar e manipular arquivos &lt;code&gt;csv&lt;/code&gt; no PHP, agora vamos trabalhar com arquivos &lt;code&gt;csv&lt;/code&gt; já existentes. Para isso vamos utilizar a função &lt;code&gt;fgetcsv()&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;A função &lt;code&gt;fgetcsv()&lt;/code&gt; interpreta a linha em busca de campos no formato &lt;code&gt;csv&lt;/code&gt; e retorna um array contendo os campos lidos. Para conhecer um pouco mais sobre ela, acesse o &lt;a href="https://www.php.net/manual/pt_BR/function.fgetcsv.php"&gt;manual do PHP&lt;/a&gt;.&lt;br&gt;
Veja o exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nv"&gt;$handle&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;fopen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"nota.csv"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"r"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nv"&gt;$header&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;fgetcsv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$handle&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;","&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$row&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;fgetcsv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$handle&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;","&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nv"&gt;$nota&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;array_combine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$header&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$row&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nb"&gt;print_r&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$nota&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nb"&gt;fclose&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$handle&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Executando esse código teríamos como saída:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Array
(
    [0] =&amp;gt; Array
        (
            [N°da Nota Fiscal] =&amp;gt; 87
            [Data da Emissão] =&amp;gt; 31/05/2020
            [Hora da Emissão] =&amp;gt; 14:27:25
            [Valor] =&amp;gt; 23764,40
        )

    [1] =&amp;gt; Array
        (
            [N°da Nota Fiscal] =&amp;gt; 86
            [Data da Emissão] =&amp;gt; 27/05/2020 
            [Hora da Emissão] =&amp;gt; 14:25:00
            [Valor] =&amp;gt; 549873,0
        )

    [2] =&amp;gt; Array
        (
            [N°da Nota Fiscal] =&amp;gt; 85
            [Data da Emissão] =&amp;gt; 27/05/2020 
            [Hora da Emissão] =&amp;gt; 14:03:41
            [Valor] =&amp;gt; 25876
        )

    [3] =&amp;gt; Array
        (
            [N°da Nota Fiscal] =&amp;gt; 84
            [Data da Emissão] =&amp;gt; 18/05/2020 
            [Hora da Emissão] =&amp;gt; 16:55:43
            [Valor] =&amp;gt; 150000
        )

)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;E a partir daí você pode trabalhar com este arquivo da maneira que desejar.&lt;br&gt;
Esperamos que tenha curtido e bons estudos!&lt;/p&gt;

</description>
      <category>php</category>
      <category>csv</category>
      <category>developer</category>
      <category>code</category>
    </item>
    <item>
      <title>Vai trabalhar de casa? Veja ferramentas open source que podem auxiliar no home office.</title>
      <dc:creator>Daiane Alves</dc:creator>
      <pubDate>Wed, 18 Mar 2020 22:58:41 +0000</pubDate>
      <link>https://forem.com/librecodecoop/o-que-preciso-saber-para-trabalhar-em-home-office-3i7j</link>
      <guid>https://forem.com/librecodecoop/o-que-preciso-saber-para-trabalhar-em-home-office-3i7j</guid>
      <description>&lt;p&gt;Devido a pandemia COVID-19 muitas empresas adotaram o estilo de trabalho &lt;strong&gt;home-office&lt;/strong&gt;. O que muita gente não sabe é que apesar de parecer novo este modelo já existe há muito tempo, mas nem todas as pessoas e empresas estão preparadas para aderir a este novo modelo e pensando nisso, preparamos este post com dicas de soluções open source (em sua maioria) como alternativa para o auxílio do home office.&lt;/p&gt;

&lt;p&gt;Ps.: É importante observar que soluções proprietárias oferecem gratuitamente soluções na nuvem justamente para terem controle de seus dados e que muitas soluções open source necessitam ser implementadas em nuvem própria.&lt;/p&gt;

&lt;p&gt;Como se preparar para trabalhar remotamente? &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Escolha uma ferramenta de gestão de tarefas&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Para acompanhar o andamento dos projetos e atividades, é necessário ter um espaço para gestão das tarefas. Algo que qualquer pessoa possa acompanhar seu status,  responsáveis e prazos.&lt;/p&gt;

&lt;p&gt;Exemplo: &lt;a href="https://nextcloud.com/"&gt;NextCloud&lt;/a&gt;, &lt;a href="https://about.gitlab.com/"&gt;Gitlab&lt;/a&gt; e &lt;a href="https://wekan.github.io/"&gt;Wekan&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Sim! O NextCloud é uma ferramenta para gerenciamento de arquivos open source e entre várias funcionalidades, uma delas é a que você pode criar Boards muito semelhante ao já conhecido Trello. Vale a pena conferir!&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Definir ferramenta de armazenamento de arquivos na nuvem e edição online de documentos.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Exemplo: &lt;a href="https://nextcloud.com/"&gt;NextCloud&lt;/a&gt;, &lt;a href="https://etherpad.org/"&gt;Etherpad&lt;/a&gt;, &lt;a href="https://www.collabora.com/"&gt;Collabora&lt;/a&gt;e &lt;a href="https://www.onlyoffice.com/"&gt;OnlyOffice&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Exatamente, ele de novo! O NextCloud é uma excelente opção totalmente livre que permite o compartilhamento de arquivos, sincronização de agenda e pode ser usado na sua infra sem custo algum bem parecido com o GoogleDrive só que melhor! Afinal, você tem total segurança sobre os dados que estão sendo compartilhados. LGPD que o diga… Mas isso é papo para outra conversa.&lt;/p&gt;

&lt;p&gt;3- Definir ferramenta de comunicação.&lt;br&gt;
O primeiro passo é definir uma ferramenta de comunicação. Aqui listamos algumas ferramentas bastante úteis para que as pessoas possam trocar informações e discutir sobre projetos. Em seguida, as equipes devem criar canais de comunicação, assim, os responsáveis por determinada área ou projeto saberão onde falar sobre um determinado assunto.&lt;/p&gt;

&lt;p&gt;Exemplos: &lt;a href="https://about.riot.im/"&gt;Riot.im&lt;/a&gt;, &lt;a href="https://rocket.chat/"&gt;RocketChat&lt;/a&gt;, &lt;a href="https://www.mumble.com/"&gt;Mumble&lt;/a&gt; e &lt;a href="https://desktop.telegram.org/"&gt;Telegram&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Ps.: Desta lista o telegram, apesar de não ser 100% open source, é bastante indicado para criação de canais por vários motivos: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Permite compartilhamento de arquivos de até 1.5Gb de tamanho.&lt;/li&gt;
&lt;li&gt;Permite histórico de mensagens ilimitado.&lt;/li&gt;
&lt;li&gt;Pode ser usado tanto no celular quanto no computador (recomendamos o download do app para desktop). No caso de estar usando pelo PC, você não precisa estar com seu celular ligado para usá-lo (diferentemente do WhatsApp).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Como sugestão para criação de canais você pode criar grupos privados com nomes dos projetos/áreas.&lt;br&gt;
Exemplo: LT:Admin, LT:RH, LT:Financeiro e assim por diante. Em seguida, compartilhar o link com as pessoas envolvidas em cada área.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Definir a ferramenta de videoconferência&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Exemplo: &lt;a href="https://www.signal.org/"&gt;Signal&lt;/a&gt; e &lt;a href="https://meet.jit.si/"&gt;MeetJitsi&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Recomendamos o uso do MeetJitsi. O MeetJitsi é uma solução de videoconferência Open Source, 100% criptografada e você pode utilizar sem precisar criar conta. Incrível, não é mesmo?!&lt;br&gt;
Para utilizar:&lt;br&gt;
Acesse (de preferência) no Chromium ou Google Chromeo site MeetJitsi,&lt;br&gt;
Crie um nome para sua sala reunião.&lt;br&gt;
Clique no botão &lt;strong&gt;ir&lt;/strong&gt; ou &lt;strong&gt;go&lt;/strong&gt;.&lt;br&gt;
Ative as permissões de acesso a sua câmera e seu microfone.&lt;br&gt;
E pronto! Sua sala de reuniões está pronta para ser utilizada, agora é só compartilhar o link com seus convidados. Simples assim...&lt;/p&gt;

&lt;p&gt;Bom, agora você já sabe tudo que precisa para trabalhar remotamente e algumas ferramentas que irão te ajudar nesta nova jornada! Então: mãos a obra e lembre-se: o mundo é remoto, o trabalho também! Em tempos de COVID-19 todas essas ferramentas substituem o abraço, mas não a sua produtividade! Vamos trabalhar?&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>homeoffice</category>
    </item>
    <item>
      <title>MeetJitsi - Ferramenta Open Source para vídeo conferência</title>
      <dc:creator>Daiane Alves</dc:creator>
      <pubDate>Sun, 15 Mar 2020 03:27:38 +0000</pubDate>
      <link>https://forem.com/phpwomenbr/meetjitsi-ferramenta-open-source-para-video-conferencia-1fmn</link>
      <guid>https://forem.com/phpwomenbr/meetjitsi-ferramenta-open-source-para-video-conferencia-1fmn</guid>
      <description>&lt;p&gt;Devido a pandemia de Covid-19, muitas empresas adotaram o trabalho remoto como alternativa de prevenção a doença.  O que muita gente não sabe é que este modelo de trabalho já existe oficialmente aqui no Brasil desde 1997 e surgiu durante o Seminário Home Office/Telecommuting – Perspectivas de Negócios e de Trabalho para o Terceiro Milênio e atualmente já é uma realidade em muitas empresas no Brasil e no exterior.&lt;/p&gt;

&lt;p&gt;Segundo a &lt;a href="http://ibopeconecta.com/para-85-dos-profissionais-reunioes-remotas-ja-oferecem-experiencia-tao-positiva-quanto-presenciais/"&gt;IBOPE Conecta&lt;/a&gt;,para 85% dos profissionais, reuniões remotas já oferecem experiência tão positiva quanto presenciais e não deixam nada a desejar e isso eu posso confirmar!&lt;/p&gt;

&lt;p&gt;Pensando nisso, vim mostrar uma ferramenta que utilizamos demais no nosso dia a dia para fazer nossas reuniões on line (tanto pelo computador como no celular): o &lt;a href="https://meet.jit.si/"&gt;MeetJitsi&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;O &lt;a href="https://meet.jit.si/"&gt;MeetJitsi&lt;/a&gt; é uma solução de vídeo conferência Open Source, 100% criptografada e você pode utilizar sem precisar criar conta. Incrível, não é mesmo?!&lt;/p&gt;

&lt;p&gt;Para utilizar:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Acesse (de preferência) no Google Chrome ou Chromium o site &lt;a href="https://meet.jit.si/"&gt;MeetJitsi&lt;/a&gt;,&lt;/li&gt;
&lt;li&gt;Crie um nome para sua sala reunião.&lt;/li&gt;
&lt;li&gt;Clique no botão &lt;strong&gt;ir&lt;/strong&gt; ou &lt;strong&gt;go&lt;/strong&gt;. &lt;/li&gt;
&lt;li&gt;Ative as permissões de acesso a sua câmera e seu microfone.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;E pronto! Sua sala de reuniões está pronta para ser utilizada, agora é só compartilhar o link com seus convidados. Simples assim...&lt;/p&gt;

&lt;p&gt;Fácil demais! E pode ser ainda mais fácil!&lt;/p&gt;

&lt;p&gt;Você pode simplificar todo este processo digitando a url direto no navegador. Exemplo: &lt;a href="https://meet.jitsi/NomeDaSala"&gt;https://meet.jitsi/NomeDaSala&lt;/a&gt; e sempre que precisar daquela sala é só usar, não é necessário criar uma sala nova para cada vez que for usar (a menos que você queira).&lt;/p&gt;

&lt;p&gt;Além disso, você ainda pode sincronizar e com sua agenda e ser notificado de suas reuniões.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conhecendo a interface
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3rq5G9KP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/DaianeAlvesRJ/imagens/master/img/meetjitsi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3rq5G9KP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/DaianeAlvesRJ/imagens/master/img/meetjitsi.png" alt="" width="800" height="528"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Compartilhar tela.
Com esta opção você pode compartilhar a sua tela com seus convidados. Além disso, você pode escolher qual janela você quer compartilhar.&lt;/li&gt;
&lt;li&gt;Erguer / baixar mãos - com esta opção, você pode acenar para dizer que quer falar alguma coisa.&lt;/li&gt;
&lt;li&gt;Abrir/fechar bate-papo - Você pode usar esta opção para abrir um chat simultâneo com todas as pessoas da sala. É útil para caso você deseja compartilhar um link, por exemplo.&lt;/li&gt;
&lt;li&gt;Mudo/não mudo - Aqui você pode ativar e desativar seu microfone.&lt;/li&gt;
&lt;li&gt;Encerrar chamada.&lt;/li&gt;
&lt;li&gt;Ativar e desativar câmera.&lt;/li&gt;
&lt;li&gt;Alternar visualização em blocos - Aqui você pode visualizar todos os participantes da sala em bloco.&lt;/li&gt;
&lt;li&gt;Compartilhar link e discagem para esta reunião - Você pode utilizá-lo para compartilhar com seus convidados.&lt;/li&gt;
&lt;li&gt;Mais ações - Nesta opção tem uma série de recursos extras como: gravar, configurar, compartilhar no youtube e várias outras coisas.
10- URL da sua sala - como já foi dito no começo deste artigo, você pode criar uma url personalizada para sua sala. Exemplo: &lt;a href="https://meet.jitsi/NomeDaSala"&gt;https://meet.jitsi/NomeDaSala&lt;/a&gt; e sempre que precisar daquela sala é só usar, não é necessário criar uma sala nova para cada vez que for usar (a menos que você queira).&lt;/li&gt;
&lt;li&gt;Tempo de duração da sua reunião.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Pronto! Agora você já sabe tudo que precisa para realizar suas vídeo conferências, é só aproveitar!&lt;/p&gt;

</description>
      <category>opensource</category>
    </item>
    <item>
      <title>Jigsaw - Gerador de sites estáticos em PHP</title>
      <dc:creator>Daiane Alves</dc:creator>
      <pubDate>Sat, 07 Dec 2019 14:14:41 +0000</pubDate>
      <link>https://forem.com/phpwomenbr/jigsaw-gerador-de-sites-estaticos-em-php-4cob</link>
      <guid>https://forem.com/phpwomenbr/jigsaw-gerador-de-sites-estaticos-em-php-4cob</guid>
      <description>&lt;h1&gt;
  
  
  Introdução
&lt;/h1&gt;

&lt;p&gt;Jigsaw é um framework baseado em Laravel que gera site estático em PHP. Foi desenvolvido pela empresa Tighten em maio de 2015, possui uma boa documentação e a comunidade é bem ativa.&lt;br&gt;
Trata-se de uma aplicação que você pode utilizar em seu computador e que tem como saída os arquivos estáticos como: HTML, CSS e JavaScript.&lt;br&gt;
Seu deploy pode ser feito em qualquer servidor web que provê conteúdo estático e se não quiser ter custos, pode publicar no GitHub Pages.&lt;/p&gt;
&lt;h1&gt;
  
  
  Iniciando um projeto
&lt;/h1&gt;

&lt;p&gt;Para iniciar um projeto com Jigsaw é bem simples! Primeiro você deve abrir o terminal, criar uma pasta com o nome do seu projeto e em seguida acessar sua pasta. Para isso digite os seguintes comandos:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir &lt;/span&gt;my-site &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;cd &lt;/span&gt;my-site
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Instalando Jigsaw com Composer
&lt;/h2&gt;

&lt;p&gt;Vamos utilizar o Composer (gerenciador de dependências do PHP) para fazer a instalação do Jigsaw no nosso projeto.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;composer require tightenco/jigsaw
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Inicializando o projeto
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./vendor/bin/jigsaw init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Após iniciar o projeto você terá a seguinte estrutura de pastas:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--iNcrHr1O--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/DaianeAlvesRJ/imagens/master/jigsaw/estrutura-pastas.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--iNcrHr1O--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/DaianeAlvesRJ/imagens/master/jigsaw/estrutura-pastas.png" alt="" width="212" height="361"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Desenvolvimento - servidor local
&lt;/h2&gt;

&lt;p&gt;Você pode acompanhar o desenvolvimento do site acessando o localhost:8000 após rodar o build e em seguida o serve.&lt;br&gt;&lt;br&gt;
Sempre que fizer alguma alteração e quiser acompanhar terá que rodar o build pois ele não carrega automaticamente as alterações.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./vendor/bin/jigsaw build

./vendor/bin/jigsaw serve
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Compilando com Laravel Mix
&lt;/h2&gt;

&lt;p&gt;Você também pode usar o Laravel para compilar e visualizar as alterações automaticamente utilizando o Browsersync. Para isso precisa instalar o NPM.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Depois disso digite o seguinte comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm run watch
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Desta maneira o Browsersync abrirá automaticamente uma nova guia do navegador e recarregará a página toda vez que você fizer uma alteração. Muito útil para visualizar suas alterações rapidamente!&lt;/p&gt;

&lt;h2&gt;
  
  
  Tipos de conteúdo
&lt;/h2&gt;

&lt;p&gt;Todo o conteúdo do seu site deve ser armazenado na pasta source. O Jigsaw permite criar arquivos usando vários formatos, como:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Laravel's Blade&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Markdown&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ou vários outros tipos de arquivo&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Laravel's Blade
&lt;/h3&gt;

&lt;p&gt;Também é possível criar sites usando Blade que é o sistemas de templates padrão do Laravel. Para isso, basta criar seus arquivos na pasta source como &lt;code&gt;[nome_do_arquivo].blade.php&lt;/code&gt;&lt;br&gt;
Você pode conferir como funciona o Blade na &lt;a href="https://laravel.com/docs/5.8/blade"&gt;documentação oficial do Laravel&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  Markdown
&lt;/h3&gt;

&lt;p&gt;Para este tutorial, optei por mostrar como criar os arquivos usando Markdown.&lt;/p&gt;

&lt;p&gt;Markdown é uma linguagem de marcação desenvolvida por John Gruber e Aaron Swartz. Ela é projetada para que textos simples possam ser convertidos em HTML e muitos outros formatos.&lt;/p&gt;

&lt;p&gt;Com ela é possível marcar títulos, listas, tabelas, etc., de forma muito mais limpa, legível e precisa, do que se fosse fazer com HTML que é muito verboso.&lt;/p&gt;
&lt;h2&gt;
  
  
  Configurações do site
&lt;/h2&gt;

&lt;p&gt;Uma maneira de agilizar o trabalho é definindo variáveis de configuração do site. Imaginem que, por exemplo, o e-mail esteja disponível em diversas partes do site e que por algum motivo você tenha que alterar. Você até poderia utilizar um find/replace, mas com o Jigsaw é muito simples. Basta adicionar o email no array do arquivo &lt;code&gt;config.php&lt;/code&gt; que será acessível em todo projeto, como uma propriedade do objeto &lt;code&gt;$page&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Por exemplo, se o seu &lt;code&gt;config.php&lt;/code&gt; estiver assim:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt;

&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="s1"&gt;'contact_email'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'support@example.com'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Você pode usar essa variável em qualquer arquivo do site, assim:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="k"&gt;extends&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'_layouts.master'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="nf"&gt;section&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'content'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nc"&gt;Entre&lt;/span&gt; &lt;span class="n"&gt;em&lt;/span&gt; &lt;span class="n"&gt;contato&lt;/span&gt; &lt;span class="p"&gt;{{&lt;/span&gt; &lt;span class="nv"&gt;$page&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;contact_email&lt;/span&gt; &lt;span class="p"&gt;}}&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="n"&gt;stop&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Helpers
&lt;/h2&gt;

&lt;p&gt;Além de armazenar variáveis no arquivo &lt;code&gt;config.php&lt;/code&gt;, podemos definir &lt;code&gt;helpers&lt;/code&gt; adicionando uma chave com o nome da função. Os helpers são chamados referenciando o nome do método no objeto &lt;code&gt;$page&lt;/code&gt; em qualquer arquivo.&lt;/p&gt;

&lt;p&gt;Por exemplo, você pode adicionar um método que identifica se a página atual pertence a uma seção específica, para realçar a seção atual em um menu:&lt;/p&gt;

&lt;p&gt;Essa função é acessível chamando &lt;code&gt;$page-&amp;gt;selected("url-da-pagina")&lt;/code&gt; de qualquer página.&lt;/p&gt;

&lt;p&gt;Veja o exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt;

&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="s1"&gt;'company'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'Lyseon Tech'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s1"&gt;'selected'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$page&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$section&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;str_contains&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$page&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;getPath&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="nv"&gt;$section&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;?&lt;/span&gt; &lt;span class="s1"&gt;'selected'&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;''&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Depois disso, dentro do diretório &lt;code&gt;source&lt;/code&gt;, crie a pasta &lt;code&gt;_partials&lt;/code&gt; (nela você pode dividir o seu site em partes como menu e footer). Agora, podemos criar um menu que destaque se uma página está selecionada, para isso crie o arquivo: &lt;code&gt;_menu.blade.php&lt;/code&gt; e nele coloque o seguinte código:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;style&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nc"&gt;.selected&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;font-weight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;bold&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;red&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;style&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt; &lt;span class="nt"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;"{{ $page-&amp;gt;selected('about') }}"&lt;/span&gt;
    &lt;span class="nt"&gt;href&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;"{{ $page-&amp;gt;baseUrl }}/about"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nt"&gt;Sobre&lt;/span&gt; &lt;span class="nt"&gt;nós&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt; &lt;span class="nt"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;"{{ $page-&amp;gt;selected('projects') }}"&lt;/span&gt;
    &lt;span class="nt"&gt;href&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;"{{ $page-&amp;gt;baseUrl }}/projects"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nt"&gt;Projetos&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt; &lt;span class="nt"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;"{{ $page-&amp;gt;selected('posts') }}"&lt;/span&gt;
    &lt;span class="nt"&gt;href&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;"{{ $page-&amp;gt;baseUrl }}/blog"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nt"&gt;Blog&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ps: Ignore o style junto com o html, usei apenas para exemplificar.&lt;br&gt;
No arquivo &lt;code&gt;_layouts/master.blade.php&lt;/code&gt; inclua o menu digitando &lt;code&gt;@include('_partials._menu')&lt;/code&gt;&lt;br&gt;
E por último, para que você consiga ver seu menu funcionando, é preciso criar um arquivo no diretório &lt;code&gt;source&lt;/code&gt;, nesse exemplo criei o arquivo &lt;code&gt;about&lt;/code&gt; (Sobre nós).&lt;br&gt;
Prontinho! Se estiver usando o Browsersync você já consegue ver o menu funcionando no seu navegador.&lt;/p&gt;
&lt;h2&gt;
  
  
  Collections
&lt;/h2&gt;

&lt;p&gt;O Jigsaw fornece recursos trabalhar com collections. As collections podem ser usadas para gerar páginas como por exemplo de postagens de blog ou artigos. Pode ser usada também para incorporar blocos de conteúdo de uma página, como biografias da equipe, descrições de produtos ou um portfólio de projetos.&lt;/p&gt;

&lt;p&gt;Para criar uma collection é bem simples, crie uma chave chamada collections no array de configuração do arquivo &lt;code&gt;config.php&lt;/code&gt; . Cada collection deve ser indicada pelo nome da collection (normalmente, no plural), seguido por um array de configurações.&lt;br&gt;
Veja o exemplo a seguir:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt;

&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="s1"&gt;'company'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'Lyseon Tech'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s1"&gt;'contact_email'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'support@tighten.co'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s1"&gt;'collections'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="s1"&gt;'posts'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
            &lt;span class="s1"&gt;'path'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'blog/{date|Y-m-d}/{filename}'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="s1"&gt;'author'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'Daiane'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Layout das páginas de post
&lt;/h3&gt;

&lt;p&gt;Crie o arquivo &lt;code&gt;post.blade.php&lt;/code&gt; dentro da pasta &lt;code&gt;_layouts&lt;/code&gt; e chamar as variáveis que foram definidas no seu arquivo &lt;code&gt;config.php&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="k"&gt;extends&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'_layouts.master'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="nf"&gt;section&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'body'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;h1&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;{{&lt;/span&gt; &lt;span class="nv"&gt;$page&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt; &lt;span class="p"&gt;}}&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="n"&gt;h1&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nc"&gt;By&lt;/span&gt; &lt;span class="p"&gt;{{&lt;/span&gt; &lt;span class="nv"&gt;$page&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;author&lt;/span&gt; &lt;span class="p"&gt;}}&lt;/span&gt; &lt;span class="err"&gt;•&lt;/span&gt; &lt;span class="p"&gt;{{&lt;/span&gt; &lt;span class="nb"&gt;date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'F j, Y'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$page&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;date&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;}}&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;

    &lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="k"&gt;yield&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'content'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nc"&gt;Total&lt;/span&gt; &lt;span class="n"&gt;de&lt;/span&gt; &lt;span class="p"&gt;{{&lt;/span&gt; &lt;span class="nv"&gt;$posts&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nb"&gt;count&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;}}&lt;/span&gt; &lt;span class="n"&gt;posts&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;

    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nc"&gt;Listagem&lt;/span&gt;&lt;span class="o"&gt;:&amp;lt;/&lt;/span&gt;&lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;ul&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="k"&gt;foreach&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$posts&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nv"&gt;$post&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;li&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"{{ &lt;/span&gt;&lt;span class="nv"&gt;$page-&amp;gt;selected&lt;/span&gt;&lt;span class="s2"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$post-&amp;gt;_meta&lt;/span&gt;&lt;span class="s2"&gt;-&amp;gt;url[0]) }}"&lt;/span&gt; &lt;span class="n"&gt;href&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nv"&gt;{$post-&amp;gt;_meta-&amp;gt;url[0]}&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;{{&lt;/span&gt; &lt;span class="nv"&gt;$post&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt; &lt;span class="p"&gt;}}&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="o"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="n"&gt;li&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="k"&gt;endforeach&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="n"&gt;ul&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="n"&gt;endsection&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Pasta para armazenar os posts
&lt;/h3&gt;

&lt;p&gt;Crie a pasta &lt;code&gt;_post&lt;/code&gt; dentro da pasta &lt;code&gt;source&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Criando um item em uma Collection
&lt;/h3&gt;

&lt;p&gt;Na pasta pasta &lt;code&gt;_post&lt;/code&gt; criaremos nosso primeiro post em markdown para isso crie um arquivo &lt;code&gt;[nome_do_arquivo].md&lt;/code&gt; seguindo o modelo abaixo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;extends&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;_layouts.post&lt;/span&gt;
&lt;span class="na"&gt;title&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Meu&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;primeiro&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Post"&lt;/span&gt;
&lt;span class="na"&gt;author&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Daiane&lt;/span&gt;
&lt;span class="na"&gt;date&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;2017-03-23&lt;/span&gt;
&lt;span class="na"&gt;section&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;content&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;

Jigsaw é um poderoso gerador de &lt;span class="gs"&gt;**site estático**&lt;/span&gt; em PHP!
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Sumário da collection &lt;code&gt;posts&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Para termos um sumário de posts em ´/blog´, crie na raiz da pasta source o arquivo &lt;code&gt;blog.blade.php&lt;/code&gt; conforme a raiz do path informado na collection posts no arquivo de configuração do site.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="k"&gt;extends&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'_layouts.master'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="nf"&gt;section&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'body'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;ul&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="k"&gt;foreach&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$posts&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nv"&gt;$post&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;li&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;href&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nv"&gt;{$post-&amp;gt;_meta-&amp;gt;url[0]}&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;{{&lt;/span&gt; &lt;span class="nv"&gt;$post&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt; &lt;span class="p"&gt;}}&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="n"&gt;li&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="k"&gt;endforeach&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="n"&gt;ul&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;h1&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nc"&gt;Listagem&lt;/span&gt; &lt;span class="n"&gt;de&lt;/span&gt; &lt;span class="n"&gt;posts&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="n"&gt;h1&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="n"&gt;endsection&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;E assim temos nosso site utilizando Jigsaw.&lt;/p&gt;

&lt;h2&gt;
  
  
  Veja também:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BisUfljB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://jigsaw.tighten.co/docs" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BisUfljB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://jigsaw.tighten.co/docs" alt="documentaçãção do Jigsaw" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Se quiser conferir esse projeto no meu GitHub &lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hL62-JPt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://github.com/DaianeAlvesRJ/Jigsaw" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hL62-JPt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://github.com/DaianeAlvesRJ/Jigsaw" alt="clique aqui" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>php</category>
      <category>laravel</category>
      <category>blade</category>
      <category>staticsite</category>
    </item>
  </channel>
</rss>
