Mostrando postagens com marcador Programação. Mostrar todas as postagens
Mostrando postagens com marcador Programação. Mostrar todas as postagens

Lançado bc 5.2.3

Lançado bc 5.2.3

Lançado bc 5.2.3

 Na terça Feira, Gavin Howard lançou a versão 5.2.3 da linguagem bc. Caso você ainda não conheça, a linguagem bc é uma dependência muito importante para a compilação do kernel Linux. Mas sempre faço a ressalva de que não se trata da linguagem bc do projeto GNU, e sim da versão de Gavin Howard.


 Essa versão é versão de correção de um bug na opção -f que pode ser apresentado quando se passa um arquivo com múltiplos comentários ou strings ao comando bc (bc -f <<< arquivo).

bc 5.2.3
bc -f ou bc --file=arquivo
 O procedimento de compilação e instalação pode ser conferido na própria página de download. Vale lembrar que o terminal de comandos toybox também possui a linguagem bc do Gavin, porém, o projeto toybox mantem a versão 1.0 (onde encontrei o bug de loop). É aconselhável a não utilizar nem a versão que se encontra no toybox e nem a do GNU (por conter bugs que já foi explicado na entrevista do Gavin).

Bug encontrado na linguagem bc do toybox

Lançado bc 5.2.2 por Gavin Howard

Lançado bc 5.2.2 por Gavin Howard

Lançado bc 5.2.2 por Gavin Howard

 Há 3 dias foi lançada a versão 5.2.2 da linguagem bc de autoria de Gavin Howard (caso não conheça, Gavin Howard já nos concedeu uma entrevista muito interessante).

 Esta é uma versão de produção que corrige um bug, uma falha de segmentação se argv[0] for igual a NULL.

 Este não é um bug crítico; não haverá necessariamente vulnerabilidade. Não há necessidade de atualizar caso não queira. Eu, como acompanho o projeto e estou sempre testando (inclusive reportando bugs caso encontre) então baixei e compilei minha versão.

 Lembrando, o toybox também possui a linguagem bc do Gavin, porém, o projeto toybox mantem a versão 1.0 (onde encontrei o bug de loop). É aconselhável a não utilizar nem a versão que se encontra no toybox e nem a do GNU (por conter bugs que já foi explicado na entrevista do Gavin).

Programação em Baixo Nível

Programação em Baixo Nível

Programação em Baixo Nível: C, Assembly e Execução de Programas na Arquitetura Intel 64

Conheça a linguagem Assembly e a arquitetura do Intel 64, torne-se proficiente em C e entenda como os programas são compilados e executados até o nível das instruções de máquina, permitindo-lhe escrever um código robusto e de alto desempenho. "Programação em baixo nível" explica a arquitetura do Intel 64 como resultado da evolução da arquitetura de von Neumann.

 O livro o ensina a usar a versão mais recente da linguagem C (C11) e a linguagem Assembly desde o básico. Todo o caminho, do código-fonte à execução do programa, incluindo a geração de arquivos-objeto ELF, além das ligações estática e dinâmica, será discutido. Há exemplos de código e exercícios, junto com as melhores práticas de programação. 

Os recursos de otimização e os limites dos compiladores modernos serão analisados, permitindo-lhe promover um equilíbrio entre a legibilidade do programa e o desempenho. O uso de diversas técnicas para ganho de desempenho, por exemplo, instruções SSE e pre-fetching, será demonstrado.

 Assuntos relevantes em ciência da computação, como os modelos de computação e as gramáticas formais, também serão tratados, explicando-se sua importância prática. Programação em baixo nível ensina os programadores a: escrever livremente em linguagem Assembly; compreender o modelo de programação do Intel 64; escrever um código robusto e fácil de manter em C11.
Para obter o livro "Programação em Baixo Nível" basta clicar aqui 

toybox recebendo sua própria versão do strace

toybox recebendo sua própria versão do strace
toybox recebendo sua própria versão do strace
 Recentemente foi lançada a versão 0.8.6 do terminal de comandos toybox. Somente dando uma recapitulada, o toybox é um terminal de comandos feito do zero e que passou a ser utilizado no Android a partir da versão 7. Todos os seus comandos foram e são desenvolvidos do zero; mesmo sendo comandos que você já tenha familiaridade, trata-se de suas próprias versões dos mesmos comandos sendo livre de códigos de terceiros. E como todos os seus comandos, o toybox receberá sua própria versão do comando strace.

Compilando o strace do toybox.
Compilando o strace do toybox.
 Essa primeira versão recebeu incialmente suporte apenas a um pequeno conjunto de system calls e opções, mas  já é possível realizar certos trabalhos normalmente. Uma parte fundamental que informam é que não há com o que se preocupar com certas funções do strace devido torná-lo muito complexo e que por esse motivo o Android nunca teve uma versão do strace (além de haver um período de transição gradativa dos micro-controladores)

strace do toybox e suas opções.
Opções strace do toybox.
 Uma informação que eu obtive é que Rob Landley quer uma versão de strace sem decodificação (apenas números brutos), o que esperam que não seja algo complicado. Tem também o fato de a glibc não utilizar as mesmas estruturas do kernel podem apresentar certos problemas, o que os leva a adicionar mais linhas de código para cada arquitetura que querem apresentar suporte (vale lembrar que a dietlibc utiliza a mesma estrutura do kernel Linux).

Rastreando o comando ls com o strace do toybox.
Rastreando o comando ls com o strace do toybox.
 Ainda há um longo caminho a ser percorrido; o strace do toybox está recebendo bugfix e talvez não terá a versão para MacOSX. Vamos aguardar para ver a evolução de mais um comando surgindo no toybox.

Lançado bc 5.2.1

bc 5.2.1
Imagem referente ao lançamento da versão anterior

 No dia 24 de Novembro eu anunciei que a linguagem bc do Gavin Howared versão 5.2 havia sido lançada (na verdade foi lançada há três semanas). E como eu já havia descrito em artigos anteriores, eu sempre espero algum tempo antes de anunciar seu lançamento pois, como a sua versão de bc avança muito rápido, é bom eu sempre esperar um pouco para acumular as novidades.
 Dito e feito, há uma semana foi lançada a versão 5.2.1 que traz correções de dois bugs quando se está no modo padrão POSIX. Um deles é devido a peculiaridade da gramática POSIX e o outro devido a linguagem bc ser muito estrito.

Lançado bc 5.2.0

Lançado bc 5.2.0
Lançado bc 5.2.0

 Gavin Howard lançou a versão 5.2.0 da linguagem de cálculos de precisão arbitrária bc. Há bastante material sobre a linguagem bc aqui no blog e até mesmo  um vídeo falando sobre a linguagem e entrevista com o autor.


 Essa nova versão trás o recurso chamado BC_EXPR_EXIT que permite sair do ambiente bc através de expressões (algo que já existia e foi trazido de volta).

Recurso BC_EXPR_EXIT
Recurso BC_EXPR_EXIT que pode ser habilitado no arquivo configure.sh

 Foram adicionados alguns builds out-of-source e um arquivo pkg-config para o bcl e houveram também algumas correções de bugs também em algumas possíveis race conditions com erros e alvos install e uninstall para o bcl não funcionavam. Reforço que eu espero que o bc do Gavin Howard venha a substituir tanto o bc do GNU quanto a versão mantida pela equipe do toybox.

Pense em Python

Pense em Python: Pense Como um Cientista da Computação
Pense em Python

 Se você quer aprender como programar, usar Python é uma ótima forma de começar. Este guia prático apresenta a linguagem passo a passo, começando com conceitos de programação básicos antes de chegar a funções, recursividade, estruturas de dados e design orientado a objeto. Esta edição e seu código de apoio foram atualizados para o Python 3.

Com os exercícios em cada capítulo, você testará conceitos de programação conforme os aprende. Pense em Python é ideal para estudantes de ensino médio e universitários ou para autodidatas, estudantes educados em casa e profissionais que precisam aprender fundamentos de programação. Os principiantes que queiram apenas ter uma noção básica, podem começar a usar Python em um navegador.

Pense em Python: Pense Como um Cientista da Computação

Comece com o básico, incluindo sintaxe e semântica da linguagem.
Tenha uma definição clara de cada conceito de programação.
Aprenda sobre valores, variáveis, instruções, funções e estruturas de dados em uma progressão lógica.
Descubra como trabalhar com arquivos e bancos de dados.
Entenda objetos, métodos e programação orientada a objeto.
Use técnicas de depuração para corrigir erros de sintaxe, tempo de execução e semânticos.
Explore funções, estruturas de dados e algoritmos com uma série de estudos de caso.
O código de exemplo deste livro é mantido em um repositório GitHub público, no qual os usuários podem carregá-lo e modificá-lo facilmente.
Clique aqui e adquira o livro "Pense em Python".

Aprenda Django 3 com Exemplos

Aprenda Django 3 com Exemplos: Crie Aplicações web Profissionais em Python, Começando do Zero
Apprenda Django 3 com Exemplos: Crie Aplicações web Profissionais em Python, Começando do Zero

 Se quiser conhecer o processo completo do desenvolvimento de aplicações web profissionais com Python e Django, este livro foi escrito para você. No processo de desenvolvimento de quatro projetos Django, você conhecerá os recursos do Django 3, verá como resolver problemas comuns no desenvolvimento web, como implementar as melhores práticas e como implantar suas aplicações com sucesso.

 Neste livro, criaremos uma aplicação de blog, um site de rede social para marcação de imagens, uma loja online e uma plataforma de ensino à distância. Orientações passo a passo mostrarão como integrar tecnologias populares, como aperfeiçoar suas aplicações com AJAX, criar APIs RESTful e configurar um ambiente de produção para seus projetos Django. Ao final do livro, você terá dominado Django 3 por meio da criação de aplicações web sofisticadas.

Livro de Programação COBOL disponível gratuitamente

PROGRAMAÇÃO COBOL: INTRODUÇÃO COM T-REX
Livro de Programação COBOL disponível gratuitamente

 Beleza galera? O professor Augusto Manzano está disponibilizando gratuitamente o seu livro  PROGRAMAÇÃO COBOL: INTRODUÇÃO COM T-REX.

 Este livro apresenta os primeiros passos na programação COBOL em um contexto simplificado e introdutório voltado a iniciantes, não há a menor pretensão em avançar além disto, sendo apenas este estudo um passaporte de entrada ao mundo da programação COBOL. O nível de detalhamento técnico apresentado neste livro é básico. Nada intermediário ou avançado sobre COBOL é aqui apresentado.

Lançada bc 5.1.1

Lançada a linguagem bc 5.1.1
Lançada a linguagem bc 5.1.1

 Em Maio deste ano (após o lançamento do toybox 0.8.5) eu iniciei uma trajetória de testes na linguagem bc. De lá pra cá já foi um bug report, o lançamento na versão da versão 5.0 e entrevista com o autor da linguagem e bc Gavin Howard tanto a versão em inglês quanto em português.
 No dia seis de Outubro foi lançada a versão 5.1.1 da linguagem bc. Eu não trouxe nenhuma noticia das versões anteriores pois não eram tão importantes dependendo do publico. A versão 5.0.1 por exemplo, só trazia correções para o MacOS e o Android; a versão 5.0.2 trazia uma correção na parte de teste porém, como mencionado por Gavin, caso você não tenha tido alguma experiencia que a parte de teste não apresentou problemas, essa versão não era tão importante para você.

 Já a partir da versão 5.1.0 (que foi o próximo lançamento depois da versão 5.0.2) trouxe grande novidades porém, como Gavin está sempre dando atenção especial a linguagem bc, resolvi aguardar um pouco e ver se seria lançada uma nova versão. Dito e feito, dois dias depois foi lançada a versão 5.1.1.

 A versão 5.1.0 trouxe as flags -z (para fazer bc e dc imprimirem zeros à esquerda nos números -1 <x <1) e -L (para desabilitar o wrapping quando imprimir números);  mais quatro funções à biblioteca lib2.bc (plz(), plznl(), pnlz() e pnlznl()) para permitir imprimir números com ou sem zeros a esquerda, mesmo com ou sem a opção -z já mencionado anteriormente e mais funções builtin para consultar global state como comprimento, pilhas globais e zeros à esquerda.

Uma das novas opções da linguagem bc
Uma das novas opções da linguagem bc

 Houveram também correções de bugs no if statement  que causava um erro caso não utilizasse um else antes de definir uma função; no bc banner e  na opção -q e  na versão do Windows onde arquivos não eram lidos corretamente (além de melhorias nas builds do Windows).

 Já a versão 5.1.1 trouxe somente correções de bugs complementares a versão 5.1.0 também relacionados ao statement else que o bc não lidava corretamente ao final dos arquivos ou antes da definição da função. Caso pretende baixar a linguagem e testar, não esqueçam de conferir o hash e o stat tanto do código fonte compactado quanto do arquivo .sig, sigam as instruções do manpage build.md (clicando aqui. Vale ressaltar que nessa manpage o Gavin dá dicas de como otimizar a bc) e caso encontre algum bug, não esqueça de reportar (isso facilita muito o trabalho dos desenvolvedores seguindo a cultura bazar ;)

Lançada libabigail 2.0

Lançada libabigail 2.0
Lançada libabigail 2.0

 Libabigail (abreviação de Application Binary Interface Generic Analysis and Instrumentation Library) é uma  biblioteca do Linux para a construção, manipulação, serialização e de-serialização de artefatos de ABI que pode ser usado por exemplo para detectar incompatibilidade entre diversos lançamentos de bibliotecas compartilhadas ou entre o kernel e os módulos.

 A libabigail provê um conjunto de ferramentas em linha de comando para comparar as interfaces de binários ELF resultantes da compilação de programas em C e C++.

 Dodji Seketeli (seu autor) anunciou o lançamento da versão 2.0 que traz como principais mudanças a migração da licença GPLv3 para Apache 2.0 com exceções ao LLVM (o fim da GPL é praticamente inevitável); a mudança para C++11 (ha intenção de construir a libabigail nas distribuições Linux com versões do GCC 4.8.5 e mais recentes); suporte ao DWARF5 que permite a biblioteca gerar binários com toolchains mais recentes baseadas no LLVM e no GCC e mais 145 novidades entre correções de bugs e melhorias.

 Obrigado aos que revisaram o texto deste artigo.

Marcadores

A pior história sobre Linux que já ouvi (5) A.I (1) ambiente gráfico (19) AMD (14) analise (9) Andriod (14) android (5) artigo (5) aws (1) bc (15) benchmark (3) BSDs (27) btrfs (30) bugs (1) Caixa de Ferramentas do UNIX (19) canto do Diego Lins (2) certificações Linux (7) Código Fonte (53) comandos (24) comp (1) compressores (5) container (6) CPU (19) criptografia (4) crowdfunding (9) cursos (24) daemons (13) Debian (31) desenvolvimento (80) desktop (19) DevOps (3) DevSecOps (3) dic (1) Dica de leitura (86) dica DLins (2) dicas do Flávio (27) Dicas TechWarn (1) diet libc (1) diocast (1) dioliunx (3) distribuições Linux (13) Docker (11) DragonflyBSD (20) ead Diolinux (2) edição de vídeo (5) EMMI Linux (4) emuladores (5) endless (5) English interview (3) Enless OS (2) entrevista (17) espaço aberto (82) evento (6) facebook (1) Fedora (10) filesystem (75) financiamento coletivo (2) fork (4) fox n forests (4) FreeBSD (20) Funtoo Linux (13) games (90) gerenciadores de pacotes (3) GOG (3) google (8) gpu (3) hardware (101) hash (1) helenos (3) I.A (1) init system (8) Intel (15) IoT (1) ispconfig (1) jogos (36) kde (1) kernel (134) lançamento (60) leis (1) LFCS (1) licenças (8) Linus (16) linus torvalds (2) Linux (194) linux foundation (3) linux para leigos (1) live (5) LPI (8) LTS (1) machine learning (1) matemática (4) mesa redonda (27) microsoft (6) microst (1) muito além do GNU (146) não viva de boatos (9) navegadores (3) NetBSD (7) novatec (17) novidades (1) nuvem (1) o meu ambiente de trabalho (3) off-topic (12) open source (82) OpenBSD (5) OpenShift (1) os vários sabores de Linux (39) padrim (2) palestras e eventos (5) partições (6) pentest (8) pipewire (1) processadores (27) professor Augusto Manzano (11) Programação (60) promoção (1) propagandas com Linux (8) Red Hat (21) redes (3) resenha nerd (4) Resumo da Semana do Dlins (2) resumo do Tux (19) retrospectiva Linux (1) risc-V (1) runlevel (2) segurança digital (19) servidores (1) shell (3) sistema operacional (22) smartphones (3) Software livre e de código aberto (150) sorteio (3) Steam (9) Steam no Linux (7) supercomputadores (4) suse (7) systemd (7) terminal (83) terminal de comandos (11) toca do tux (1) toybox (23) tutorial (6) Tux (3) unboxing (7) UNIX (16) UNIX Toolbox (14) vartroy (1) vga (1) vulnerabilidade (4) wayland (5) whatsapp (1) Windows Subsystem for Linux (2) wine (14) WoT (1) ZFS (13) zsh (2)