[Hacking][slideshow]

Nunca use o bloco de notas

O bloco de notas do Windows com certeza não é a melhor ferramenta para programar ou desenvolver algo. Mas ela pode fazer seu código deixar de ser funcional, e no artigo eu explico como resolver esse problema.




O código ASCII

Toda informação adicionada em seu computador é convertida para hexadecimal, que é convertida para binário, que é interpretada pelo seu processador.

Para padronizar o mercado, a ANSI (American National Standards Institute) propôs um método universal e padronizado de processamento de caracteres e ações. Assim surgiu a tabela ASCII

A Tabela ASCII (American Standard Code for Information Interchange) foi utilizada por grande parte da indústria de computadores para a troca /interpretação de informações pelo processador. Cada caractere é representado por um código de 8 bits (um byte). Embora utilizamos o Unicode como principal encoder de caracteres, essa tabela criou sua base.

Para ver toda a tabela de caracteres e entender um pouco mais, clique aqui. Hoje falaremos apenas de 3 caracteres / sinais de controle

NomeAbrev.HEXCod. Escape
Carriage ReturnCR0x0D\r
Line FeedLF0x0A\n
End of LineEOL0x0D e 0X0A\r \n


Exemplificando um pouco mais
Ao apertar enter no seu teclado, você vê a quebra de linha, ou seja, o texto sendo movido para a linha de baixo. Para efetuar essa operação, o sistema operacional insere um caractere invisível, que adiciona um recurso visual que simula uma quebra de linha. Exemplo abaixo

Caracteres de quebra de linha

O caractere "Carriage Return (CR)" move o cursor para o começo da linha sem avançar para a próxima linha. Esse caractere é usado como uma nova linha no Commodore e nos primeiros sistemas MAC (OS-9 e anteriores).

O caractere "Line Feed (LF)" move o cursor para baixo da próxima linha sem retornar ao começo da linha. Esse caractere é usado como uma nova linha em sistemas baseados ou similares ao UNIX (Linux, MAC OSX), etc

O caractere "End of Line (EOL)" é na verdade dois códigos ASCII, a combinação dos caracteres CR e LF. Ele move o cursor para linha debaixo e para o começo da linha. Esse caractere é usado como uma nova linha em muitos sistemas que não são baseados em UNIX, como Windows, Symbian, etc.

O que isso significa?

O texto do arquivo de BootAnimation.
Nota: Apenas o notepad++ está lendo o arquivo normalmente.

Ao abrir um arquivo originalmente escrito para rodar no Linux/UNIX no bloco de notas, você verá que o texto do arquivo foi reduzido à 1 linha. Isso se dá porque como eu citei acima. O bloco de notas não interpreta o caractere Line Feed (LF) como um comando para quebrar linha, por isso tudo ficará na mesma linha. Esse comando só funcionaria se houvesse a mistura dos caracteres CR e LF.

O mesmo acontecerá se você utilizar um código escrito no bloco de notas no Linux. O sistema interpretará o caractere Carriage Return e impedirá a execução.
Se você escrever seu código em um bloco de notas e não converte-lo, o código será interpretado de forma incorreta pela maquina. Isso pode causar diversos problemas e certamente o seu arquivo/código não funcionará.

Exemplificando com HTML e em outras linguagens.
No HTML, o comando de pular linha é o <br/>. Quando esse comando é adicionado em seu código, ele exibe uma quebra de linha, em todos os navegadores, em todos os sistemas. Exemplo: Para exibir


Olá.
Seja bem vindo.

Você precisa adicionar no código html

Olá.<br/>
Seja bem vindo.

Caso não coloque, seu comando ficará assim

Olá. Seja bem vindo.

Agora imagine que no HTML não há um padrão de caractere de pular linha e cada sistema operacional tem seu próprio caractere de pular linha. No Linux seria <LF\>, no Mac seria <CR\> e no Windows seria a mistura dos dois: <LFeCR\>.

Se eu escrevesse esse blog com <LF\>, ao abrir os artigos em outros sistemas operacionais (que não sejam Linux), os sistemas não interpretariam esse caractere como quebra de linha e veriam todo o texto corrido. Se tentasse usar o <LFeCR\>, é possível que os textos fossem exibidos dessa forma

Olá.?
Seja bem vindo.

Pois o sistema entenderia um caractere e o outro não.

No Python, Java, C++, etc, O comando \n já é interpretado na exibição. Ou seja, se quiser pular linha, apenas coloque \n

No C, Cobol, é comum você adicionar o código HEX (Hexadecimal) do caractere de quebra de linha para efetuar essa operação.

Conclusão
Nota: Editores de textos mais modernos já identificam arquivos no "formato Linux" e "formato Windows", ou seja, se você abrir um arquivo escrito no bloco de notas no Android ou Linux, ele mostrará os dados de forma correta, porém, o erro ainda se mantém se o arquivo for direto para o kernel (No caso, se tentar escrever um arquivo para o Recovery do Android pelo bloco de notas, que atualmente só lê o caractere Line Feed. Então é altamente recomendável que você converta os caracteres antes de salva-los.

Convertendo os caracteres com o Notepad++

O mesmo vai acontecer se você tentar adaptar seu código a tecla "Enter" no bloco de notas. Os caracteres ainda serão interpretados de forma diferente e não funcionarão. Embora exista formas de converter seu código pelo próprio bloco de notas, é preferível que você deixe de usa-lo.

Você com certeza enfrentará esse tipo de problema com os arquivos quando editar uma linha de código no Android. Baixe e use o Notepad++.


Post original:Android HyperUser

*Cópia permitida apenas citando a fonte

Dúvidas nos comentários

Nenhum comentário:

Todos os comentários são monitorados. Comentários ofensivos serão removidos e os respectivos usuários banidos.