O documento discute o desenvolvimento de sistemas de arquivos no FUSE (Filesystem in Userspace). Ele apresenta conceitos básicos sobre processamento de linha de comando, inicialização do sistema de arquivos, e funções callback para operações com arquivos e diretórios.
Este documento descreve como instalar e configurar um PBX IP gratuito utilizando o software Asterisk no Debian. Ele explica como instalar os pacotes necessários, configurar ramais SIP e IAX, e criar um plano de discagem básico.
O documento descreve comandos Linux relacionados a gerenciamento de pacotes e sistemas de arquivos, incluindo cpio para backups, umask para permissões, DPKG/RPM para gerenciamento de pacotes, e espelhos e repositórios. Exercícios práticos são fornecidos para recuperar um sistema Debian, adicionar e formatar partições, e montá-las automaticamente.
O documento discute como trabalhar na linha de comando em sistemas Linux, incluindo:
1) Usar comandos de shell, histórico de comandos e variáveis;
2) Personalizar o ambiente shell através de arquivos de configuração como .bashrc.
O documento discute vários tópicos sobre administração e segurança em sistemas Linux. Aborda conceitos como login, grupos de usuários, agendamento de tarefas, interface gráfica X Window, shell script, kernel, logs, redes e criptografia.
Tornado mais do que um framework bonitinhoMarcel Nicolay
Palestra feita no Mutirão PyCursos 2013, ela tem como objetivo introduzir os aspectos do non-blocking I/O aplicados ao desenvolvimento web e mostrar como o Tornado pode lhe ajudar a construir soluções mais completas.
O Tornado é um framework web non-blocking escrito para lidar com milhares de conexões simultâneas. Iremos conhecer as camadas mais baixas do framework (ioloop, iostream, stack_context, gen, timers, ...) entender como elas funcionam e como podemos utilizá-las.
Permissões especiais - suid, sgid, sticky - LinuxFábio dos Reis
O documento explica três tipos especiais de permissões em sistemas Linux: SUID, SGID e Sticky bit. SUID e SGID permitem que usuários executem arquivos com as permissões do dono ou grupo do arquivo. Sticky bit impede que usuários excluam arquivos em pastas protegidas, exceto o dono. O documento descreve como configurar e verificar esses atributos usando chmod e ls.
O documento discute shells, shell scripts e conceitos básicos de programação em shells no Linux. Ele explica o que são shells e shell scripts, apresenta exemplos de comandos shell comuns e conceitos como variáveis, redirecionamento de entrada e saída e lógica condicional.
O documento discute comandos e estruturas de controle de fluxo em shell script como exit, if/else, test, case e loops for. Ele fornece exemplos de como usar essas estruturas para verificar condições, realizar tarefas repetitivas e tomar decisões no fluxo de execução de um script.
Este documento descreve como instalar e configurar um PBX IP gratuito utilizando o software Asterisk no Debian. Ele explica como instalar os pacotes necessários, configurar ramais SIP e IAX, e criar um plano de discagem básico.
O documento descreve comandos Linux relacionados a gerenciamento de pacotes e sistemas de arquivos, incluindo cpio para backups, umask para permissões, DPKG/RPM para gerenciamento de pacotes, e espelhos e repositórios. Exercícios práticos são fornecidos para recuperar um sistema Debian, adicionar e formatar partições, e montá-las automaticamente.
O documento discute como trabalhar na linha de comando em sistemas Linux, incluindo:
1) Usar comandos de shell, histórico de comandos e variáveis;
2) Personalizar o ambiente shell através de arquivos de configuração como .bashrc.
O documento discute vários tópicos sobre administração e segurança em sistemas Linux. Aborda conceitos como login, grupos de usuários, agendamento de tarefas, interface gráfica X Window, shell script, kernel, logs, redes e criptografia.
Tornado mais do que um framework bonitinhoMarcel Nicolay
Palestra feita no Mutirão PyCursos 2013, ela tem como objetivo introduzir os aspectos do non-blocking I/O aplicados ao desenvolvimento web e mostrar como o Tornado pode lhe ajudar a construir soluções mais completas.
O Tornado é um framework web non-blocking escrito para lidar com milhares de conexões simultâneas. Iremos conhecer as camadas mais baixas do framework (ioloop, iostream, stack_context, gen, timers, ...) entender como elas funcionam e como podemos utilizá-las.
Permissões especiais - suid, sgid, sticky - LinuxFábio dos Reis
O documento explica três tipos especiais de permissões em sistemas Linux: SUID, SGID e Sticky bit. SUID e SGID permitem que usuários executem arquivos com as permissões do dono ou grupo do arquivo. Sticky bit impede que usuários excluam arquivos em pastas protegidas, exceto o dono. O documento descreve como configurar e verificar esses atributos usando chmod e ls.
O documento discute shells, shell scripts e conceitos básicos de programação em shells no Linux. Ele explica o que são shells e shell scripts, apresenta exemplos de comandos shell comuns e conceitos como variáveis, redirecionamento de entrada e saída e lógica condicional.
O documento discute comandos e estruturas de controle de fluxo em shell script como exit, if/else, test, case e loops for. Ele fornece exemplos de como usar essas estruturas para verificar condições, realizar tarefas repetitivas e tomar decisões no fluxo de execução de um script.
O documento descreve comandos básicos do Linux, incluindo: pwd para mostrar o diretório atual, cd para mudar de diretório, e ls para listar arquivos e diretórios. Também aborda comandos como mkdir para criar diretórios, touch para criar/modificar arquivos, clear para limpar a tela e redirecionamento de entrada e saída.
Sistemas Operacionais - Gnu/Linux Montando e Desmontando Sistemas de ArquivosLuiz Arthur
O documento descreve o sistema de arquivos hierárquico do Linux, incluindo pontos de montagem para dispositivos, o arquivo /etc/fstab que configura dispositivos montados, tipos de sistemas de arquivos, e os comandos mount e umount para montar e desmontar dispositivos.
Este documento apresenta vários comandos básicos do shell script para manipular arquivos e diretórios, trabalhar com textos, pesquisar arquivos e obter informações sobre o sistema. Os comandos incluem cd, ls, cp, rm, grep, find, df, du, free e date. Exemplos de uso são fornecidos para ajudar na compreensão dos comandos.
O documento apresenta uma introdução sobre shells e comandos básicos de linha de comando no Linux, incluindo sua agenda, características de shells, conceitos importantes e vários grupos de comandos com suas funções e exemplos de uso.
A apresentação resume os principais serviços e treinamentos oferecidos pela empresa 4Linux, como cursos de Linux à distância e certificações LPI. Ela também destaca a importância do planejamento e hardening na instalação e configuração de servidores Linux, listando diversas técnicas para tornar o sistema mais seguro, como particionamento adequado, uso de RAID, configurações de senha, remoção de serviços desnecessários e limitação de recursos para usuários.
Aulas 03 e 04 do minicurso de Introdução ao Linux, realizado pela Casa da Ciência de Campo Grande, na Universidade Federal de Mato Grosso do Sul (UFMS).
O documento discute a segurança básica do Apache, incluindo instalação, configuração de usuários e grupos, ocultação de arquivos, áreas reservadas para usuários e scripts.
O documento fornece uma introdução sobre sistemas operacionais, especificamente o Ubuntu. Resume a história do Ubuntu, suas versões, instalação, gerenciamento de pacotes e comparação com o Windows Vista.
Guia com mais de 500 comandos do linux explicados computeiro da depressãoJesser Martins Medeiros
Este documento é um guia com mais de 500 comandos do terminal Linux explicados de forma detalhada, incluindo exemplos. Ele destaca a importância de se conhecer os comandos do terminal para dominar o Linux e ter mais oportunidades de emprego. A lista de comandos cobre tópicos como navegação de arquivos e diretórios, instalação de programas, administração do sistema e hardware.
O documento discute a administração de permissões, usuários, grupos e quotas em sistemas Linux. Aborda conceitos como permissões em arquivos e diretórios, usuários e grupos, comandos para gerenciá-los e a configuração e uso de quotas de disco.
O documento descreve os principais comandos e diretórios do Linux. Ele inclui uma introdução à estrutura de diretórios do Linux e lista os principais diretórios como /bin, /boot, /dev, /etc, /home e outros. O documento também explica comandos básicos para navegação, manipulação de arquivos e pastas, gerenciamento de usuários e grupos e fornece informações sobre o sistema.
Este documento fornece instruções para instalar o Apache 2, PHP 5 e PostgreSQL no Linux, incluindo downloads, compilação, configuração e integração dos softwares.
O documento fornece informações sobre o sistema operacional Fedora Linux, incluindo sua história, projeto, características, vantagens, desvantagens e alguns comandos do Linux. Resume alguns dos principais pontos sobre a história, características e vantagens do Fedora Linux.
1) O documento explica o que é o shell no Linux e algumas de suas funções.
2) É apresentado vários comandos do shell como cd, ls, mkdir entre outros.
3) São explicados conceitos como diretórios, permissões, redirecionamento e histórico de comandos.
Linux comandos gerais e servidores de redefernandao777
Este documento fornece instruções sobre comandos básicos do Linux, configuração de redes e serviços de rede como Samba, NFS, Apache, FTP e Squid. Ele também discute firewall, editores de texto e ferramentas de monitoramento de rede.
Este documento fornece uma referência sobre comandos básicos do Linux, incluindo comandos para navegação de arquivos e diretórios, visualização de informações do sistema, configuração de permissões e ferramentas de linha de comando. O documento lista vários comandos úteis e fornece exemplos de uso.
O documento descreve a configuração de servidores Apache e Squid para hospedagem de sites e controle de acesso à internet em uma rede local. Ele explica como configurar hosts virtuais no Apache, criar listas de acesso e regras no Squid para permitir ou negar acesso baseado em endereços IP, palavras-chave e outros parâmetros.
1) O documento discute vários comandos e arquivos relacionados à administração de sistemas Linux, incluindo comandos para gerenciar usuários, histórico de comandos, mensagens do servidor e pacotes.
2) É explicado como configurar repositórios no Debian editando o arquivo /etc/apt/sources.list, especificando a URL, versão do Debian e tipos de pacotes.
3) Também são descritos arquivos relacionados à rede como hostname, interfaces de rede, servidor DNS e resolução interna.
O documento apresenta uma lista de exercícios de comandos básicos do Linux divididos em duas partes. A primeira parte inclui exercícios para criar diretórios e subdiretórios, copiar, mover e remover arquivos entre diretórios, e modificar permissões. A segunda parte pede para criar e concatenar arquivos de saída de comandos como ls, ps e top.
O documento discute os principais tópicos sobre hardware e inicialização de sistemas Linux, incluindo a identificação de dispositivos, configuração do BIOS, bootloader, níveis de execução e sistema de arquivos.
1) O documento apresenta uma palestra sobre desenvolvimento de extensões para o PHP usando a linguagem C. 2) A palestra aborda tópicos como o que é PECL, ciclo de vida do PHP, estrutura ZVAL, ambiente de desenvolvimento, esqueleto de extensão e API Zend. 3) O palestrante também fará uma demonstração ao vivo de uma extensão desenvolvida.
O documento fornece informações sobre o desenvolvimento de extensões PHP. Em 3 frases:
Apresenta os conceitos básicos para criar extensões PHP nativas, incluindo como compilar extensões, gerar esqueletos, lidar com tipos de dados e funções. Também discute recursos, configurações .ini e orientação a objetos para extensões.
O documento descreve comandos básicos do Linux, incluindo: pwd para mostrar o diretório atual, cd para mudar de diretório, e ls para listar arquivos e diretórios. Também aborda comandos como mkdir para criar diretórios, touch para criar/modificar arquivos, clear para limpar a tela e redirecionamento de entrada e saída.
Sistemas Operacionais - Gnu/Linux Montando e Desmontando Sistemas de ArquivosLuiz Arthur
O documento descreve o sistema de arquivos hierárquico do Linux, incluindo pontos de montagem para dispositivos, o arquivo /etc/fstab que configura dispositivos montados, tipos de sistemas de arquivos, e os comandos mount e umount para montar e desmontar dispositivos.
Este documento apresenta vários comandos básicos do shell script para manipular arquivos e diretórios, trabalhar com textos, pesquisar arquivos e obter informações sobre o sistema. Os comandos incluem cd, ls, cp, rm, grep, find, df, du, free e date. Exemplos de uso são fornecidos para ajudar na compreensão dos comandos.
O documento apresenta uma introdução sobre shells e comandos básicos de linha de comando no Linux, incluindo sua agenda, características de shells, conceitos importantes e vários grupos de comandos com suas funções e exemplos de uso.
A apresentação resume os principais serviços e treinamentos oferecidos pela empresa 4Linux, como cursos de Linux à distância e certificações LPI. Ela também destaca a importância do planejamento e hardening na instalação e configuração de servidores Linux, listando diversas técnicas para tornar o sistema mais seguro, como particionamento adequado, uso de RAID, configurações de senha, remoção de serviços desnecessários e limitação de recursos para usuários.
Aulas 03 e 04 do minicurso de Introdução ao Linux, realizado pela Casa da Ciência de Campo Grande, na Universidade Federal de Mato Grosso do Sul (UFMS).
O documento discute a segurança básica do Apache, incluindo instalação, configuração de usuários e grupos, ocultação de arquivos, áreas reservadas para usuários e scripts.
O documento fornece uma introdução sobre sistemas operacionais, especificamente o Ubuntu. Resume a história do Ubuntu, suas versões, instalação, gerenciamento de pacotes e comparação com o Windows Vista.
Guia com mais de 500 comandos do linux explicados computeiro da depressãoJesser Martins Medeiros
Este documento é um guia com mais de 500 comandos do terminal Linux explicados de forma detalhada, incluindo exemplos. Ele destaca a importância de se conhecer os comandos do terminal para dominar o Linux e ter mais oportunidades de emprego. A lista de comandos cobre tópicos como navegação de arquivos e diretórios, instalação de programas, administração do sistema e hardware.
O documento discute a administração de permissões, usuários, grupos e quotas em sistemas Linux. Aborda conceitos como permissões em arquivos e diretórios, usuários e grupos, comandos para gerenciá-los e a configuração e uso de quotas de disco.
O documento descreve os principais comandos e diretórios do Linux. Ele inclui uma introdução à estrutura de diretórios do Linux e lista os principais diretórios como /bin, /boot, /dev, /etc, /home e outros. O documento também explica comandos básicos para navegação, manipulação de arquivos e pastas, gerenciamento de usuários e grupos e fornece informações sobre o sistema.
Este documento fornece instruções para instalar o Apache 2, PHP 5 e PostgreSQL no Linux, incluindo downloads, compilação, configuração e integração dos softwares.
O documento fornece informações sobre o sistema operacional Fedora Linux, incluindo sua história, projeto, características, vantagens, desvantagens e alguns comandos do Linux. Resume alguns dos principais pontos sobre a história, características e vantagens do Fedora Linux.
1) O documento explica o que é o shell no Linux e algumas de suas funções.
2) É apresentado vários comandos do shell como cd, ls, mkdir entre outros.
3) São explicados conceitos como diretórios, permissões, redirecionamento e histórico de comandos.
Linux comandos gerais e servidores de redefernandao777
Este documento fornece instruções sobre comandos básicos do Linux, configuração de redes e serviços de rede como Samba, NFS, Apache, FTP e Squid. Ele também discute firewall, editores de texto e ferramentas de monitoramento de rede.
Este documento fornece uma referência sobre comandos básicos do Linux, incluindo comandos para navegação de arquivos e diretórios, visualização de informações do sistema, configuração de permissões e ferramentas de linha de comando. O documento lista vários comandos úteis e fornece exemplos de uso.
O documento descreve a configuração de servidores Apache e Squid para hospedagem de sites e controle de acesso à internet em uma rede local. Ele explica como configurar hosts virtuais no Apache, criar listas de acesso e regras no Squid para permitir ou negar acesso baseado em endereços IP, palavras-chave e outros parâmetros.
1) O documento discute vários comandos e arquivos relacionados à administração de sistemas Linux, incluindo comandos para gerenciar usuários, histórico de comandos, mensagens do servidor e pacotes.
2) É explicado como configurar repositórios no Debian editando o arquivo /etc/apt/sources.list, especificando a URL, versão do Debian e tipos de pacotes.
3) Também são descritos arquivos relacionados à rede como hostname, interfaces de rede, servidor DNS e resolução interna.
O documento apresenta uma lista de exercícios de comandos básicos do Linux divididos em duas partes. A primeira parte inclui exercícios para criar diretórios e subdiretórios, copiar, mover e remover arquivos entre diretórios, e modificar permissões. A segunda parte pede para criar e concatenar arquivos de saída de comandos como ls, ps e top.
O documento discute os principais tópicos sobre hardware e inicialização de sistemas Linux, incluindo a identificação de dispositivos, configuração do BIOS, bootloader, níveis de execução e sistema de arquivos.
1) O documento apresenta uma palestra sobre desenvolvimento de extensões para o PHP usando a linguagem C. 2) A palestra aborda tópicos como o que é PECL, ciclo de vida do PHP, estrutura ZVAL, ambiente de desenvolvimento, esqueleto de extensão e API Zend. 3) O palestrante também fará uma demonstração ao vivo de uma extensão desenvolvida.
O documento fornece informações sobre o desenvolvimento de extensões PHP. Em 3 frases:
Apresenta os conceitos básicos para criar extensões PHP nativas, incluindo como compilar extensões, gerar esqueletos, lidar com tipos de dados e funções. Também discute recursos, configurações .ini e orientação a objetos para extensões.
O documento fornece uma introdução ao sistema operacional Linux, descrevendo seus requisitos de hardware, métodos de instalação, nomes de dispositivos, particionamento de disco, processos de inicialização e comandos básicos para administração e manutenção do sistema.
Este documento apresenta uma palestra sobre desenvolvimento de extensões para o PHP. Resume os tópicos principais: 1) Ciclo de vida de uma requisição PHP; 2) Estrutura interna de variáveis ZVAL; 3) Ambiente de desenvolvimento para extensões no Linux; 4) Esqueleto básico de uma extensão PHP com arquivos e estrutura necessários.
Desenvolvendo Extensões
- Discute como desenvolver extensões para o PHP, incluindo como gerar o esqueleto de uma extensão, compilá-la, lidar com tipos de dados, arrays, recursos, orientação a objetos e mais.
Este documento fornece instruções sobre como customizar o Slackware Linux. Explica como modificar arquivos como o initrd.img para personalizar o processo de inicialização e como alterar os scripts e pacotes de instalação. Também descreve a estrutura de diretórios do Slackware Linux.
PHP foi desenvolvido em 1994 como Personal Home Page e veio substituir scripts em Perl. Hoje é conhecido como Hypertext Preprocessor e possui várias engines como Zend, Roadsend e Quercus. É amplamente utilizado em sites como SAPO e no mundo, sendo uma linguagem fácil de aprender e desenvolver para a web, suportada em múltiplas plataformas. Apresenta dicas sobre performance, segurança, depuração e boas práticas para desenvolvimento em PHP.
O documento resume 55 novas funcionalidades do Java 7, incluindo: literais binários e numéricos com underline, strings no switch, gerenciamento automático de recursos com try-with-resources, e novas APIs para concorrência, arquivos e números aleatórios.
O documento apresenta um curso avançado de treinamento em Linux com 40 horas de duração, ministrado pela Firewalls Security Corporation. O curso aborda tópicos como shell script, ferramentas de rede, compactadores de arquivos, configuração de servidores e segurança, entre outros. A versão 1.5 do curso inclui novas seções sobre NFS, SAMBA e segurança, além de correções em conteúdos anteriores.
O documento apresenta um curso avançado de treinamento em Linux com 40 horas de duração, ministrado pela Firewalls Security Corporation. O curso aborda tópicos como shell script, ferramentas de rede, compactadores de arquivos, agendamento de tarefas, configuração de servidores e segurança. Foi atualizado para a versão 1.5 com correções e novas seções sobre NFS, SAMBA e segurança.
Apostila Treinamento AvançAdo Em Linuxguest7a481e8
O documento fornece um guia de treinamento avançado em Linux com 40 horas de duração. O treinamento irá cobrir tópicos como shell script, ferramentas de rede, compactadores de arquivos, configuração de servidores e segurança em Linux. A versão 1.5 do guia inclui atualizações e correções de erros na versão anterior.
Esse tutorial ajuda na configuração do asterisk.
Qualquer duvida podem mandar um email para:
vicente.proj@hotmail.com
Ou visitar o endereço do you tube que contém muitos vídeos ensinando a configurar o asterisk.
http://www.youtube.com/user/voipjava
O documento descreve o Redis, um banco de dados chave-valor armazenado na memória. Ele é muito rápido, de código aberto, e suporta vários tipos de dados e recursos como publicação-assinatura. O documento também discute como configurar e usar o Redis com PHP via bibliotecas como Predis, incluindo comandos básicos e avançados.
O documento discute introdução ao Linux, incluindo: 1) a estrutura de diretórios e seus usos comuns, 2) como usar o histórico de comandos e redirecionamento de entrada e saída, 3) como criar, mover e remover arquivos.
O documento discute introdução ao Linux, incluindo hierarquia de diretórios, caminhos absolutos e relativos, histórico de comandos, e redirecionamento de entrada e saída. É explicado que diretórios organizam arquivos e programas, e que caminhos absolutos começam com / enquanto caminhos relativos referem-se à localização atual. Comandos como ls, cat, head e tail são usados para listar e visualizar arquivos, enquanto redirecionamento direciona saída de comandos para arqu
1. O documento apresenta Elton Luís Minetto, um desenvolvedor PHP com experiência desde 2000 que fala sobre diversos tópicos relacionados à linguagem PHP como namespaces, traits, bancos de dados, testes, segurança, frameworks e padrões de projeto.
2. É apresentado o Composer como ferramenta de gerenciamento de dependências para PHP e mostrado um exemplo de arquivo composer.json.
3. Diversos outros temas são citados como orientação a objetos, controle de versão com Git, desempenho usando Xdebug e cache com APC,
O documento discute a linguagem de programação Rust. Apresenta como o autor conheceu e começou a usar Rust, destacando características como tipos seguros, gerenciamento de memória sem garbage collector e foco em segurança e desempenho. Também mostra exemplos básicos de código Rust e como criar um site simples e fazer requisições na web usando Rust.
O documento apresenta uma introdução ao Elasticsearch, descrevendo seus principais conceitos como documentos, índices, tipos, shards e clusters. Também resume os processos de instalação, mapeamento, analisadores, aplicações, documentação, SDKs e plugins. Apresenta brevemente ferramentas como Logstash e Kibana e menciona a realização de treinamentos.
O documento apresenta ferramentas para segurança de redes, incluindo:
1) Nikto, um scanner de vulnerabilidades para servidores web;
2) Wireshark, um capturador de pacotes que permite analisar o tráfego de rede;
3) Nmap, uma ferramenta de varredura de portas e detecção de sistemas operacionais.
Semelhante a Desenvolvendo Sistemas de Arquivos no FUSE - Luis Otávio de Colla Furquim (20)
Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...Tchelinux
Em 2019 lancei um curso semi-presencial de "Introdução à administração de sistemas Linux". Praticamente todos os passos, desde gravação até edição foram feitos utilizando software livre. O objetivo da palestra é apresentar os bastidores da gravação do curso e ensinar as pessoas que assistirem a palestra a também criarem seus próprios vídeos utilizando software livre.
Vinícius Alves Hax é formado em Engenharia de Computação pela FURG e trabalha atualmente como Analista de TI na reitoria do IFSul. Utiliza Linux há quase quinze anos e tem experiência em desenvolvimento web e como administrador de sistemas, sempre utilizando preferencialmente o sistema livre.
Para mais informações:
http://viniciusah.com.br/
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio GrandeTchelinux
O documento apresenta informações sobre Diego Costa, CEO da Projeto Root, incluindo seus contatos e formação. Ele discute diversos tópicos relacionados à segurança da informação na internet, como riscos de navegação descuidada, como empresas de tecnologia coletam e usam dados pessoais, o caso Edward Snowden, tipos de ataques cibernéticos e como melhorar a segurança online.
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...Tchelinux
O documento discute editores de texto open source como LibreOffice e Apache OpenOffice. Ele apresenta as ferramentas desses softwares para criação de documentos, incluindo formatação de texto, quebra de páginas e estilos. O documento também explica como criar sumários e índices automaticamente.
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...Tchelinux
Jogar todo mundo joga. Programar, todo mundo pode. Jogar todo mundo treina. Programar, nem tanto. Mas para jogar é necessário que alguém desenvolva suas habilidades de programador. Nesse bate papo, porque ninguém mais tem paciência para palestras, será apresentada uma forma divertida de desenvolver a programação e conhecer a linguagem Python, construindo jogos, utilizando a biblioteca Pygame e ferramentas open source para desenvolver um jogo.
Jerônimo Medina Madruga trabalha com suporte técnico e treinamento para educação a distância da Universidade Federal de Pelotas (UFPel). Tem formação em Técnico em Eletrônica pelo Instituto Federal Sul-Rio-Grandense (IFSUL) e é ocasionalmente atuante em grupos ligados a divulgação e desenvolvimento de software livre. Já realizou mais de 70 palestras em eventos internacionais, nacionais e regionais, sobre os temas mais variados possíveis, normalmente ligados a educação, programação, comunidades, CMS e administração de sistemas.
Para mais informações:
https://www.linkedin.com/in/jmmadruga/
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio GrandeTchelinux
Palestra focada ao público mais jovem. Através de uma análise do mercado atual, o palestrante traça diferentes caminhos para um desenvolvedor que deseja iniciar a sua carreira.
Matheus Cezar é Técnico em Desenvolvimento de Software pelo IFRS - Campus Rio Grande e Analista de Sistemas formado pela mesma instituição. Já frequentou o mercado do desenvolvimento no estado do Rio Grande do Sul durante alguns anos. Hoje, Analista de TI na Prefeitura Municipal de Rio Grande.
Para mais informações:
https://www.linkedin.com/in/matheus-mendes-cezar-662905132/
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...Tchelinux
O documento discute APIs, REST e arquitetura RESTful. Explica que APIs permitem a integração entre sistemas e microserviços estruturam soluções como coleções de serviços levemente acoplados. REST é um estilo de projetar aplicativos da Web fracamente acoplados usando recursos nomeados e métodos HTTP padronizados. Arquitetura RESTful significa que uma aplicação web segue os princípios de design REST.
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...Tchelinux
O documento discute como os scripts de shell podem automatizar a instalação e configuração de ambientes Linux, especificamente no projeto AVAPolos. O projeto busca fornecer um ambiente virtual de aprendizagem onde a conexão com a internet é limitada, tornando necessária a automação dos procedimentos de instalação. O autor trabalha no desenvolvimento de scripts de shell para implementar a infraestrutura do projeto de forma reprodutível e facilitar a implantação em diferentes máquinas.
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...Tchelinux
O documento discute a revolução da comunicação em tempo real através da WebRTC, uma API JavaScript que permite comunicação ponto-a-ponto entre navegadores, dispositivos móveis e IoT. A WebRTC oferece áudio e vídeo de alta qualidade de forma barata através de comunicação peer-to-peer e APIs nativas para obter mídia, conexões entre pares e canais de dados. O documento também explica conceitos como signaling, STUN, TURN e ICE que permitem a comunicação mesmo através de firewalls e NATs, al
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...Tchelinux
O documento apresenta uma introdução à programação funcional com Clojure, descrevendo os principais conceitos como: imutabilidade, funções de alta ordem, closures e currying. O autor explica as diferenças entre paradigma funcional e imperativo, demonstra um "hello world" em Clojure e apresenta alguns recursos básicos como operadores, loops e interação com Java.
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio GrandeTchelinux
Visa introduzir conceitos básicos envolvidos na criação de um Data Warehouse. A palestra aborda desde o que é um data warehouse, até conceitos de modelagem utilizados na construção do mesmo.
Vítor Resing Plentz está concluindo o curso de Ciência da Computação, já foi presidente da Hut8 (EJ da Computação na UFPel) e atualmente é fundador e Cientista de Dados na Elixir AI, participando também como organizador da comunidade Pelotas Data Science Meetup.
Para mais informações:
https://www.linkedin.com/in/v%C3%ADtor-resing-plentz-438681101
Nas aulas abrimos bastantes "parênteses". Não, não os de código, os de assuntos paralelos mesmo. BIKESHEDDING! Nesses pequenos desvios, fala-se da etimologia dos nomes, das metáforas e filosofias usadas na programação, de fun facts, de tretas no mundo das empresas e da vida dos tech superstars, de idiossincrasias da comunidade de desenvolvimento e tecnologia, enfim, uma miscelânea de assuntos curiosos, que nunca teriam uma disciplina para encaixá-los, mas que agora tem uma palestra de 50 min :)
Márcio Josué Ramos Torres "Eu nasci a dez mil anos atrás", comecei com Basic num CP500 da Prológica - não, não tinha mouse; sem Internet, se aprendia lendo livros e revistas técnicas, escrevendo códigos e fazendo experiências; desenvolvi aplicações comerciais em dBase e então Clipper, sobre a plataforma MS-DOS; joguei Prince of Persia, Wolfenstein e DOOM (o primeiro!) - se usava o DOS/4GW para usar a memória estendida; já montei meu computador - quando se "setava" a IRQ por jumpers; instalei redes com cabo coaxial e conectores BNC; eu vi a ascensão da interface gráfica - adeus caracteres em fósforo verde; instalei o Win95 - malditos 13 disquetes; tive um Kit Multimídia da Creative - e uma Voodoo da 3dfx; migrei sistemas de Clipper para VB e Delphi; usei a Internet quando só existia HTML com "meia dúzia" de tags -sem CSS ou JS; acompanhei a ascensão da Web; eu estava lá, no início do Linux, vi sua evolução e consolidação nos servidores web - junto com CGI, Perl, Apache, MySQL, PHP, etc; instalei o Conectiva e já compilei o Kernel; instalei programas no "muque" - sem apt-get ou "avançar, avançar, ..."; comecei com Java ainda na versão 1.3 - sem enums, generics, autoboxing, etc, e tive meu primero contato (confronto) com OO - adeus velhos hábitos procedimentais; observei a Googlificação - mas usei o Cadê e o AltaVista; eu também estava lá, no crescimento do e-commerce - e no estouro da bolha da Internet; tive minha passagem por .NET e por Java EE e seus "ecosistemas"; atualmente, leciono POO, Patterns e Web no IFRS de Rio Grande e percebo que, na tecnologia, a única constante é o relacionamento com as pessoas.
Para mais informações:
https://www.linkedin.com/in/marcio-josue-ramos-torres/
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...Tchelinux
Este documento apresenta dois palestrantes, Samuel e Artur, e fornece uma introdução sobre o software Latex. Ele descreve as credenciais e interesses de Samuel e Artur, além de explicar como o Latex pode economizar tempo na formatação de documentos acadêmicos e quais editores de Latex existem para Linux, Windows e online.
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...Tchelinux
A tecnologia de hoje não é a mesma que existia no passado e também não será a mesma no futuro. Sobre o futuro, sabemos que com o avanço dela novas profissões irão surgir, essas novas profissões, oriundas de demandas ainda não existentes, são fomentadas no presente, à partir da escolha das competências necessárias para os futuros profissionais. As junções das habilidades desenvolvidas em diversas áreas de conhecimento tornará os profissionais aptos a exercerem funções ainda não existentes, seja emocionalmente, intelectualmente ou tecnicamente, para assim estar mais preparado para o mundo do trabalho. Falaremos de projetos que já estão em andamento para que esses novos profissionais estejam aptos para este futuro promissor tecnológico.
Jaqueline Trevizan cursa Análise e desenvolvimento de sistemas na Uniftec, e é apaixonada por tecnologia. Apoia e incentiva o ensino de programação para crianças e adolescentes e a inclusão da mulher na área de TI.
Neiva Kuyven é Doutoranda em Informática na Educação na UFRGS- Universidade Federal do Rio Grande do Sul. Mestre em Ciências da Computação pela Universidade Federal de Santa Catarina (2002), Graduação em Informática pela Universidade Regional do Noroeste do Estado do Rio Grande do Sul (1996) . Coordenadora do Curso de Bacharelado em Engenharia de Computação e do Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas do Centro Universitário UNIFTEC. Atua como professora nos cursos que coordena e também nos cursos Superiores de Redes de Computadores e Gestão da Tecnologia. Líder do grupo de pesquisa de Inteligência Artificial do UNIFTEC.
Alexandra Cemin possui Licenciatura Plena em Matemática e Física (UCS), especialista em Psicopedagogia em Gestão Organizacional e Psicopedagogia Clínica (UNILASALLE), com ênfase em dificuldades de aprendizagem matemática, mestrado em Educação (UNILASALLE) e doutoranda em Engenharia e Ciência dos Materiais (UCS). Atua como palestrante nas áreas de educação, é assessora pedagógica da EAD no Uniftec, docente de cálculo nas engenharias, docente de física na educação de jovens e adultos modalidade à distância no SESI/FIERGS e desenvolvedora de conteúdos, ministra disciplinas em cursos de pós-graduação. Pesquisadora na área de inteligência artificial e metodologias de ensino e coordenadora de projetos em robótica e programação para crianças e adolescentes. Experiência como: Coordenadora Pedagógica no Ensino Superior da rede Ftec Faculdades, docente de matemática e física no ensino básico, técnico, jovens e adultos (EAD) e superior, instrutora de robótica educacional e coordenadora de projetos.
Para mais informações:
https://www.linkedin.com/in/jaquelinetrevizan
http://lattes.cnpq.br/6429639409221087
http://lattes.cnpq.br/1958688202287600
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...Tchelinux
Nesta apresentação conheceremos o oVirt, uma poderosa solução de código aberto de virtualização.
Daniel Lara trabalha como Sysadmin e nas horas de folgas contribui com o Projeto Fedora.
Para mais informações: https://twitter.com/danniellara
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019Tchelinux
Buidroot é uma ferramenta para automação do processo de geração de um sistema Linux para dispositivos embarcados. O objetivo da palestra é dar uma visão geral dos componentes de um sistema embarcado que utiliza Linux e como gerar um sistema Linux embarcado com o Buildroot.
Renato Severo é Engenheiro de Computação pela Unipampa Bagé. Especialista em Sistemas Embarcados pela UERGS Guaíba. Desenvolvedor de Sistemas Embarcados na DATACOM em Eldorado do Sul.
Para mais informações acesse: https://linkedin.com/in/renatossevero/
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.Tchelinux
O documento discute as etapas de conclusão de um TCC, incluindo escolha de tema, normas ABNT, ferramentas de escrita como LATEX e gerenciamento de referências bibliográficas com BibTeX. É recomendado o uso do LATEX ao invés de Word devido a vantagens como controle de versão e facilidade de criação de apresentações com Beamer.
Não deixe para testar depois o que você pode testar antes. Tchelinux
O documento discute testes de software, introduzindo Test Driven Development (TDD), Behavior Driven Development (BDD) e a ferramenta Behave. Explica os conceitos de user stories, critérios de aceitação e ciclo de desenvolvimento de software, além de apresentar a linguagem Gherkin e como implementar testes com Behave.
O documento discute o uso da biblioteca Pygame para desenvolvimento de jogos em Python. Apresenta razões para programação de jogos, escolha de Python e Pygame, e fornece exemplos básicos de como iniciar uma aplicação Pygame, desenhar na tela, criar sprites, tratar eventos de teclado e áudio. O autor também discute outros tópicos importantes como colisões, comportamento de NPCs e cenários.
Este documento discute vários tópicos relacionados à fotografia digital, incluindo processos fotográficos tradicionais e alternativos, captura de imagens, edição, manipulação digital, software livre para conversão RAW, edição e gerenciamento de fotos. O documento também aborda backups, impressão e novas funcionalidades em desenvolvimento para a fotografia digital livre.
Este certificado confirma que Gabriel de Mattos Faustino concluiu com sucesso um curso de 42 horas de Gestão Estratégica de TI - ITIL na Escola Virtual entre 19 de fevereiro de 2014 a 20 de fevereiro de 2014.
As classes de modelagem podem ser comparadas a moldes ou
formas que definem as características e os comportamentos dos
objetos criados a partir delas. Vale traçar um paralelo com o projeto de
um automóvel. Os engenheiros definem as medidas, a quantidade de
portas, a potência do motor, a localização do estepe, dentre outras
descrições necessárias para a fabricação de um veículo
Em um mundo cada vez mais digital, a segurança da informação tornou-se essencial para proteger dados pessoais e empresariais contra ameaças cibernéticas. Nesta apresentação, abordaremos os principais conceitos e práticas de segurança digital, incluindo o reconhecimento de ameaças comuns, como malware e phishing, e a implementação de medidas de proteção e mitigação para vazamento de senhas.
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...Faga1939
Este artigo tem por objetivo apresentar como ocorreu a evolução do consumo e da produção de energia desde a pré-história até os tempos atuais, bem como propor o futuro da energia requerido para o mundo. Da pré-história até o século XVIII predominou o uso de fontes renováveis de energia como a madeira, o vento e a energia hidráulica. Do século XVIII até a era contemporânea, os combustíveis fósseis predominaram com o carvão e o petróleo, mas seu uso chegará ao fim provavelmente a partir do século XXI para evitar a mudança climática catastrófica global resultante de sua utilização ao emitir gases do efeito estufa responsáveis pelo aquecimento global. Com o fim da era dos combustíveis fósseis virá a era das fontes renováveis de energia quando prevalecerá a utilização da energia hidrelétrica, energia solar, energia eólica, energia das marés, energia das ondas, energia geotérmica, energia da biomassa e energia do hidrogênio. Não existem dúvidas de que as atividades humanas sobre a Terra provocam alterações no meio ambiente em que vivemos. Muitos destes impactos ambientais são provenientes da geração, manuseio e uso da energia com o uso de combustíveis fósseis. A principal razão para a existência desses impactos ambientais reside no fato de que o consumo mundial de energia primária proveniente de fontes não renováveis (petróleo, carvão, gás natural e nuclear) corresponde a aproximadamente 88% do total, cabendo apenas 12% às fontes renováveis. Independentemente das várias soluções que venham a ser adotadas para eliminar ou mitigar as causas do efeito estufa, a mais importante ação é, sem dúvidas, a adoção de medidas que contribuam para a eliminação ou redução do consumo de combustíveis fósseis na produção de energia, bem como para seu uso mais eficiente nos transportes, na indústria, na agropecuária e nas cidades (residências e comércio), haja vista que o uso e a produção de energia são responsáveis por 57% dos gases de estufa emitidos pela atividade humana. Neste sentido, é imprescindível a implantação de um sistema de energia sustentável no mundo. Em um sistema de energia sustentável, a matriz energética mundial só deveria contar com fontes de energia limpa e renováveis (hidroelétrica, solar, eólica, hidrogênio, geotérmica, das marés, das ondas e biomassa), não devendo contar, portanto, com o uso dos combustíveis fósseis (petróleo, carvão e gás natural).
21. Desenvolvendo Sistemas de
Arquivos no FUSE
getattr
open opendir
release statfs
readdir
read releasedir
write symlink
mkdir
unlink
chmod rmdir
22. Desenvolvendo Sistemas de
Arquivos no FUSE
● Processar linha de comando
● Inicializar variáveis / hardware
● Inicializar o sistema de
arquivos (efetivar a montagem)
● Finalizar o programa
23. Desenvolvendo Sistemas de
Arquivos no FUSE
● Processar linha de comando
● Inicializar variáveis / hardware
● Inicializar o sistema de
arquivos (efetivar a montagem)
● Finalizar o programa
24. Desenvolvendo Sistemas de
Arquivos no FUSE
Inicializar o sistema de arquivos
fuse.h
fuse_main(argc, argv, &my_oper, NULL);
●argc, argv: opções do FUSE
●my_oper: funções que tratam o FS
●NULL: dados opcionais
●Bloqueia o programa
●Entra em modo DAEMON
●Perde stdin, stdout, stderr (debug via log)
●Funções de my_oper iniciam threads (exceto
se a opção -s for definida)
27. Desenvolvendo Sistemas de
Arquivos no FUSE
Processar linha de comando
mount [options] device mountpoint
sshfs [user@]host:[dir] mountpoint [options]
28. Desenvolvendo Sistemas de
Arquivos no FUSE
Processar linha de comando
mount [options] device mountpoint
sshfs [user@]host:[dir] mountpoint [options]
29. Desenvolvendo Sistemas de
Arquivos no FUSE
Processar linha de comando
mount [options] device mountpoint
sshfs [user@]host:[dir] mountpoint [options]
Específicas Gerais (FUSE)
-o allow_other
-p PORT
allow access to other users
equivalent to ’-o port=PORT’
-C equivalent to ’-o compression=yes’ -o allow_root
allow access to root
-1 equivalent to ’-o ssh_protocol=1’
-o reconnect -o nonempty
reconnect to server allow mounts over non-empty file/dir
-o sshfs_sync -o default_permissions enable
synchronous writes permission checking by kernel
-o no_readahead
synchronous reads (no speculative
readahead)
30. Desenvolvendo Sistemas de
Arquivos no FUSE
Processar linha de comando
fuse_opt.h
myfs <mountpoint> <myfs_option> [-o <fuse_option1>[,...[,<fuse_optionN>]]]
struct fuse_args args = FUSE_ARGS_INIT(0, NULL);
int i;
for(i = 0; i < argc; i++) {
if (i == 2) {
myparameter = argv[i];
} else {
fuse_opt_add_arg(&args, argv[i]);
}
}
fuse_main(args.argc, args.argv, my_oper, NULL);
31. Desenvolvendo Sistemas de
Arquivos no FUSE
Processar linha de comando
char *myparameter;
static int myfs_opt_proc(void *data, const char *arg, int key,
struct fuse_args *outargs)
{
if (key == FUSE_OPT_KEY_NONOPT && myparameter == NULL) {
myparameter = strdup(arg);
return 0;
}
return 1;
}
int main(int argc, char *argv[])
{
struct fuse_args args = FUSE_ARGS_INIT(argc, argv);
fuse_opt_parse(&args, NULL, NULL, myfs_opt_proc);
fuse_main(args.argc, args.argv, my_oper, NULL);
}
32. Desenvolvendo Sistemas de
Arquivos no FUSE
Processar linha de comando
char *myparameter;
static int myfs_opt_proc(void *data, const char *arg, int key,
struct fuse_args *outargs)
{
if (key == FUSE_OPT_KEY_NONOPT && myparameter == NULL) {
myparameter = strdup(arg);
return 0;
}
return 1;
}
int main(int argc, char *argv[])
{
struct fuse_args args = FUSE_ARGS_INIT(argc, argv);
fuse_opt_parse(&args, NULL, NULL, myfs_opt_proc);
fuse_opt_add_arg(&args, "-oallow_other");
fuse_main(args.argc, args.argv, my_oper, NULL);
}
35. Desenvolvendo Sistemas de
Arquivos no FUSE
Ferramentas de apoio aos callbacks
struct fuse_context :
uid_t uid – Id do usuário do processo chamador
gid_t gid – Id do grupo do processo chamador
pid_t pid – Id do processo chamador
void *private_data – Dados do filesystem
struct fuse_context *fuse_get_context(void); Informações do contexto
struct fuse_file_info:
int flags – modo de abertura de arquivo (open/release)
uint64_t fh – file handle, se inicializado em open, estará disponível
nas demais operações sobre arquivos abertos
uint64_t lock_owner – Id do dono do lock (lock e flush)
36. Desenvolvendo Sistemas de
Arquivos no FUSE
Padrões
path – Inicia com '/', mas é relativo ao mountpoint.
Exemplo:
root@darkstar # myfs /foo
root@darkstar # ls /foo/bar
path = ”/bar”
errno – Retornar –errno (MENOS errno)
Exemplo:
if ((size=read( ... )<0) {
return( –errno);
}
37. Desenvolvendo Sistemas de
Arquivos no FUSE
Funções Callback
Inicialização e término do sistema de arquivos
static void *my_init(struct fuse_conn_info *conn)
{
// inicialização de variáveis, threads, etc
// uma conexão com um banco mysql, por exemplo
myconn = mysql_init ( NULL );
mysql_real_connect (myconn ,"localhost","user", ...);
return(&myconn);
}
static int my_destroy(void *myconn)
{
mysql_close(*myconn);
}
38. Desenvolvendo Sistemas de
Arquivos no FUSE
Atributos do sistema de arquivos
static int my_statfs(const char *path, struct statvfs *stbuf)
{
int res;
res = statvfs(path, stbuf);
if (res == -1)
return -errno;
return 0;
}
39. Desenvolvendo Sistemas de
Arquivos no FUSE
static int my_statfs(const char *path, struct statvfs *stbuf)
{
...
MYSQL **conn = fuse_get_context()->private_data;
sprintf(qry,"SELECT MAX_DATA_LENGTH/512, DATA_FREE/512 "
"FROM INFORMATION_SCHEMA.PARTITIONS "
"WHERE TABLE_NAME='files' AND TABLE_SCHEMA='myfs'");
mysql_query(*myconn,qry);
res = mysql_store_result(*myconn);
if (row = mysql_fetch_row(res)) {
memset(&attr,0,sizeof(struct statvfs));
stbuf->f_bsize = 512;
stbuf->f_frsize = 512;
stbuf->f_blocks = row[0];
stbuf->f_bfree = row[1];
...
return (0);
} else {
return (-EIO);
}
}
40. Desenvolvendo Sistemas de
Arquivos no FUSE
Atributos (uid/gid, datas, permissões, etc) do arquivo
static int my_getattr(const char *path, struct stat *stbuf)
{
int res;
res = lstat(path, stbuf);
if (res == -1) return -errno;
return 0;
}
static int my_fgetattr(const char *path, struct stat *stbuf,
struct fuse_file_info *fi)
{
int res;
(void) path;
res = fstat(fi->fh, stbuf);
if (res == -1) return -errno;
return 0;
}
41. Desenvolvendo Sistemas de
Arquivos no FUSE
static int my_getattr(const char *path, struct stat *stbuf) {
MYSQL_RES *res; MYSQL_ROW row;
MYSQL *conn = (MYSQL *) fuse_get_context()->private_data;
sprintf(qry,"select uid, gid, mode, ctime, mtime, atime, size ”
”from files where path='%s'",path);
mysql_query(conn,qry);
res = mysql_store_result(conn);
if (row = mysql_fetch_row(res)) {
memset(&attr,0,sizeof(struct stat));
stbuf->st_uid = row[0];
stbuf->st_gid = row[1];
stbuf->st_mode = row[2];
stbuf->st_ctime = row[3];
stbuf->st_mtime = row[4];
stbuf->st_atime = row[5];
stbuf->st_size = row[6];
} else {
return (-ENOENT);
}
}
42. Desenvolvendo Sistemas de
Arquivos no FUSE
Listagem de diretórios
static int my_opendir(const char *path, struct fuse_file_info *fi)
{
DIR *dp = opendir(path);
if (dp == NULL)
return -errno;
fi->fh = (unsigned long) dp;
return 0;
}
43. Desenvolvendo Sistemas de
Arquivos no FUSE
#define get_dirp(f) ((DIR *) (uintptr_t) f->fh)
static int my_readdir(const char *path, void *buf, fuse_fill_dir_t filler,
off_t offset, struct fuse_file_info *fi)
{
DIR *dp = get_dirp(fi); struct dirent *de; struct stat st;
seekdir(dp, offset);
while ((de = readdir(dp)) != NULL) {
memset(&st, 0, sizeof(st));
st.st_ino = de->d_ino;
st.st_mode = de->d_type << 12;
if (filler(buf, de->d_name, &st, telldir(dp)))
break;
}
return 0;
}
44. Desenvolvendo Sistemas de
Arquivos no FUSE
static int my_releasedir(const char *path, struct fuse_file_info *fi)
{
DIR *dp = get_dirp(fi);
(void) path;
closedir(dp);
return 0;
}
49. Desenvolvendo Sistemas de
Arquivos no FUSE
Criação de arquivos – MÉTODO OPCIONAL
static int my_create(const char *path, mode_t mode, struct fuse_file_info *fi)
{
int fd = open(path, fi->flags, mode);
if (fd == -1)
return -errno;
fi->fh = fd; // prover um descritor de arquivos é OPCIONAL
return 0;
}
Flags
O_EXCL - Falha se o arquivo já existir
O_NONBLOCK - Evita que bloqueie por um "longo" tempo
O_NOLINK - Se for link simbólico, abre o link (não o arquivo)
O_TRUNC - Trunca o arquivo
O_SHLOCK (BSD) - Obtem shared lock
O_EXLOCK (BSD) - Obtem lock exclusivo
50. Desenvolvendo Sistemas de
Arquivos no FUSE
Cria (sem abrir) um arquivo
static int my_mknod(const char *path, mode_t mode, dev_t rdev)
{
int res;
if (S_ISFIFO(mode))
res = mkfifo(path, mode);
else
res = mknod(path, mode, rdev);
if (res == -1)
return -errno;
return 0;
}
51. Desenvolvendo Sistemas de
Arquivos no FUSE
Abre arquivo existente (não cria arquivos)
static int my_open(const char *path, struct fuse_file_info *fi)
{
int fd = open(path, fi->flags); // sem mode
if (fd == -1)
return -errno;
fi->fh = fd; // fornecer um file handle é OPCIONAL
return 0;
}
52. Desenvolvendo Sistemas de
Arquivos no FUSE
Lê dados de um arquivo
static int my_read(const char *path, char *buf, size_t size, off_t offset,
struct fuse_file_info *fi)
{
int res;
(void) path;
res = pread(fi->fh, buf, size, offset);
if (res == -1)
res = -errno;
return res;
}
53. Desenvolvendo Sistemas de
Arquivos no FUSE
Grava dados num arquivo
static int my_write(const char *path, const char *buf, size_t size,
off_t offset, struct fuse_file_info *fi)
{
int res;
(void) path;
res = pwrite(fi->fh, buf, size, offset);
if (res == -1)
res = -errno;
return res;
}
54. Desenvolvendo Sistemas de
Arquivos no FUSE
Fecha arquivo / libera recursos
static int my_release(const char *path, struct fuse_file_info *fi)
{
(void) path;
close(fi->fh);
return 0;
}
OBS: Só é chamado uma vez por arquivo aberto, se a aplicação duplicou
o descritor de arquivo (dup, fork, ...) release é chamado quando a
aplicação chamar close para o último descritor aberto.
55. Desenvolvendo Sistemas de
Arquivos no FUSE
Lê o conteúdo de um link simbólico
static int my_readlink(const char *path, char *buf, size_t size)
{
int res = readlink(path, buf, size - 1);
if (res == -1)
return -errno;
buf[res] = '0';
return 0;
}
OBS: readlink da libc copia string sem '0' para o buf e retorna a
quantidade de caracteres lidos, o callback do FUSE exige o terminador
na string e o valor de retorno é -errno.
56. Desenvolvendo Sistemas de
Arquivos no FUSE
Cria symlink/hardlink
static int my_symlink(const char *from, const char *to)
{
int res = symlink(from, to);
if (res == -1)
return -errno;
return 0;
}
static int my_link(const char *from, const char *to)
{
int res = link(from, to);
if (res == -1)
return -errno;
return 0;
}
57. Desenvolvendo Sistemas de
Arquivos no FUSE
Remove (deleta) um arquivo
static int my_unlink(const char *path)
{
int res;
res = unlink(path);
if (res == -1)
return -errno;
return 0;
}
58. Desenvolvendo Sistemas de
Arquivos no FUSE
Renomeia/Move um arquivo
static int my_rename(const char *from, const char *to)
{
int res;
res = rename(from, to);
if (res == -1)
return -errno;
return 0;
}
OBS: from e to sempre estão em myfs
59. Desenvolvendo Sistemas de
Arquivos no FUSE
Muda atributos dos arquivo
static int my_chmod(const char *path, mode_t mode)
{
int res = chmod(path, mode);
if (res == -1)
return -errno;
return 0;
}
static int my_chown(const char *path, uid_t uid, gid_t gid)
{
int res = lchown(path, uid, gid);
if (res == -1)
return -errno;
return 0;
}
60. Desenvolvendo Sistemas de
Arquivos no FUSE
Muda atributos de data/hora com precisão de nanosegundos
static int my_utimens(const char *path, const struct timespec ts[2])
{
int res;
struct timeval tv[2];
tv[0].tv_sec = ts[0].tv_sec;
tv[0].tv_usec = ts[0].tv_nsec / 1000;
tv[1].tv_sec = ts[1].tv_sec;
tv[1].tv_usec = ts[1].tv_nsec / 1000;
res = utimes(path, tv);
if (res == -1)
return -errno;
return 0;
}
61. Desenvolvendo Sistemas de
Arquivos no FUSE
Cria/deleta diretório
static int my_mkdir(const char *path, mode_t mode)
{
int res = mkdir(path, mode);
if (res == -1)
return -errno;
return 0;
}
static int my_rmdir(const char *path)
{
int res = rmdir(path);
if (res == -1)
return -errno;
return 0;
}
62. Desenvolvendo Sistemas de
Arquivos no FUSE
Verifica se é possível fazer o acesso, especificado em mask, ao arquivo
static int my_access(const char *path, int mask)
{
int res;
res = access(path, mask);
if (res == -1)
return -errno;
return 0;
}
63. Desenvolvendo Sistemas de
Arquivos no FUSE
Modifica o tamanho de um arquivo pelo nome ou pelo file handle
static int my_truncate(const char *path, off_t size)
{
int res = truncate(path, size);
if (res == -1)
return -errno;
return 0;
}
static int my_ftruncate(const char *path, off_t size,
struct fuse_file_info *fi)
{
int res = ftruncate(fi->fh, size);
if (res == -1)
return -errno;
return 0;
}
64. Desenvolvendo Sistemas de
Arquivos no FUSE
Grava atributo extendido
static int my_setxattr(const char *path, const char *name, const char *value,
size_t size, int flags)
{
int res = lsetxattr(path, name, value, size, flags);
if (res == -1)
return -errno;
return 0;
}
65. Desenvolvendo Sistemas de
Arquivos no FUSE
Lê/lista atributos extendidos
static int my_getxattr(const char *path, const char *name, char *value,
size_t size)
{
int res = lgetxattr(path, name, value, size);
if (res == -1)
return -errno;
return res;
}
static int my_listxattr(const char *path, char *list, size_t size)
{
int res = llistxattr(path, list, size);
if (res == -1)
return -errno;
return res;
}
66. Desenvolvendo Sistemas de
Arquivos no FUSE
Remove atributo extendido
static int my_removexattr(const char *path, const char *name)
{
int res = lremovexattr(path, name);
if (res == -1)
return -errno;
return 0;
}
67. Desenvolvendo Sistemas de
Arquivos no FUSE
Gerencia trava de arquivo, segundo o padrão POSIX
static int my_lock(const char *path, struct fuse_file_info *fi, int cmd,
struct flock *lock)
{
(void) path;
return ulockmgr_op(fi->fh, cmd, lock, &fi->lock_owner,
sizeof(fi->lock_owner));
}
68. Desenvolvendo Sistemas de
Arquivos no FUSE
Sincroniza dados em memória com o meio de armazenamento
static int my_fsync(const char *path, int datasync, struct fuse_file_info *fi)
{
(void) path;
(void) datasync;
(void) fi;
return (0);
}
OBS: Se datasync = = zero, deve sincronizar dados e meta-dados
Se datasync != zero, deve sincronizar somente dados
69. Desenvolvendo Sistemas de
Arquivos no FUSE
Sincroniza dados em memória com o meio de armazenamento
static int my_flush(const char *path, struct fuse_file_info *fi)
{
(void) path;
(void) fi;
return (0);
}
OBS: Não é chamado quando a aplicação chama fsync.
Só é chamado quando a aplicação chama close.
Pode haver mais de um close por arquivo (dup, fork, ...)
Não há garantia de que seja chamado sequer uma vez.
70. Desenvolvendo Sistemas de
Arquivos no FUSE
int fuseargc = 5;
char *fuseargv[6];
fuseargv[0] = "sohofs";
fuseargv[1] = "-f";
fuseargv[2] = "/tmp/fuse";
fuseargv[3] = "-o";
fuseargv[4] = "allow_other,nonempty";
fuseargv[5] = NULL;
return (fuse_main(fuseargc, fuseargv, &my_ops, NULL));
it reports the error "Access is denied" when I try to copy a new file
into the share folder through SAMBA.
Try to run in debug mode:
fuseargv[4] = "allow_other,nonempty,debug";
And check what is happening when samba calls access/getattr.
71. Desenvolvendo Sistemas de
Arquivos no FUSE
unique: 2, opcode: GETATTR (3), nodeid: 1, insize: 40
unique: 2, error: 0 (Success), outsize: 112
WRITE[6] 4096 bytes to 0
unique: 128, error: -28 (No space left on device), outsize: 16
unique: 129, opcode: WRITE (16), nodeid: 9, insize: 4160
WRITE[6] 4096 bytes to 0
unique: 129, error: -28 (No space left on device), outsize: 16
unique: 130, opcode: WRITE (16), nodeid: 9, insize: 4160
WRITE[6] 4096 bytes to 0
unique: 130, error: -28 (No space left on device), outsize: 16
But there are actually free space on the the device, so what are the
potential issues.
So, the problem is with the statfs callback function. This function is
responsible to tell the system the info about the filesystem and this
includes the space in it.