{"id":989,"date":"2024-12-22T13:31:30","date_gmt":"2024-12-22T16:31:30","guid":{"rendered":"https:\/\/www.blindtec.com.br\/blog\/?p=989"},"modified":"2024-12-22T13:41:46","modified_gmt":"2024-12-22T16:41:46","slug":"programando-as-cegas-turbinando-sua-produtividade-usando-o-dbeaver-com-leitores-de-tela","status":"publish","type":"post","link":"https:\/\/www.blindtec.com.br\/blog\/2024\/12\/programando-as-cegas-turbinando-sua-produtividade-usando-o-dbeaver-com-leitores-de-tela\/","title":{"rendered":"Programando \u00e0s cegas: turbinando a sua produtividade Usando o DBEaver com leitores de telas"},"content":{"rendered":"<p>Salve, galera!<\/p>\n<p>Trabalhar com banco de dados \u00e9 algo importante e muito possivelmente vai fazer parte da vida de todo mundo que desenvolve software.<\/p>\n<p>No artigo de hoje, vamos trazer algumas dicas de como usar o DBEaver, um cliente integrado que oferece suporte a uma s\u00e9rie de bancos de dados diferentes atrav\u00e9s de uma interface completa e acess\u00edvel.<\/p>\n<h2>O que est\u00e1 acontecendo?<\/h2>\n<p>Mas, primeiro, como sempre, um pouco de teoria:<\/p>\n<p>A maioria dos sistemas de bancos de dados opera em um esquema cliente server.<\/p>\n<p>Isso significa que o banco de dados em si \u00e9 um servidor que atende a requisi\u00e7\u00f5es (para consulta, inser\u00e7\u00e3o, entre outros) de clientes, atrav\u00e9s de um ou mais protocolos de comunica\u00e7\u00e3o, como se fosse um web server que atende a navegadores ou outros clientes atrav\u00e9s do protocolo http.<\/p>\n<p>Da mesma maneira que web servers, como o Apache, n\u00e3o apresentam (com raras exce\u00e7\u00f5es) interfaces gr\u00e1ficas, tamb\u00e9m os servidores de bancos de dados (com raras exce\u00e7\u00f5es) n\u00e3o apresentam interfaces gr\u00e1ficas.<\/p>\n<p>Em vez disso, servidores de banco de dados atendem a clientes atrav\u00e9s de determinados protocolos (normalmente TCP, mas pode haver outros) e os clientes (aqui na analogia como se fossem os navegadores) s\u00e3o usados por pessoas ou por softwares para interagirem com esses servidores.<\/p>\n<p>A, querido altor, chegou aquela hora onde eu provo, com toda certeza, que voc\u00ea \u00e9 um idiota pretensioso completo e n\u00e3o sabe nada do que est\u00e1 falando, pois eu instalei o mysql na minha m\u00e1quina e uso ele direto, e tamb\u00e9m uso o SQL server que eu instalei. Tamb\u00e9m uso o sqlite, tudo da minha m\u00e1quina, sem conectar em qualquer servidor.<\/p>\n<p>Novamente, querido leitor, talvez eu possa ser uma ou mais dessas coisas, mas definitivamente n\u00e3o ser\u00e1 por isso.<\/p>\n<p>Quando voc\u00ea instalou o mysql em sua m\u00e1quina, instalou o servidor (que \u00e9 o banco de dados em si) e tamb\u00e9m um cliente. Este cliente se conecta na sua pr\u00f3pria m\u00e1quina no servidor, e por isso voc\u00ea tem a sensa\u00e7\u00e3o de que est\u00e1 usando uma coisa apenas.<br \/>\nDa mesma forma, o Sql Server vem com um cliente, que voc\u00ea usa igualmente para se conectar na sua pr\u00f3pria m\u00e1quina.<\/p>\n<p>E, antes que voc\u00ea me diga que instalou um sniffer de rede e n\u00e3o percebeu qualquer conex\u00e3o (a, leitor, quanto trabalho para provar que eu estou errado &#8230; ) lembro que nem sempre o protocolo usado \u00e9 o TCP, por\u00e9m deixarei para voc\u00ea entender de quais outras maneiras alguns servidores de bancos de dados suportam IPC.<\/p>\n<p>Por fim, o Sqlite \u00e9 uma das &#8220;raras exce\u00e7\u00f5es&#8221; de sistemas de banco de dados que n\u00e3o s\u00e3o instalados como cliente server.<\/p>\n<p>Ele, entretanto, tamb\u00e9m n\u00e3o oferece interface gr\u00e1fica, disponibilizando suas funcionalidades atrav\u00e9s de uma biblioteca (.dll no Windows, .so em *nix) e disponibiliza um aplicativo cliente que, usando esta biblioteca, te permite navegar pelos bancos de dados presentes no sistema.<\/p>\n<h2>Sistemas unificados de acesso a bancos de dados<\/h2>\n<p>Mas porque toda essa teoria?<\/p>\n<p>Respondo a esta pergunta com outra: voc\u00ea j\u00e1 parou para pensar que todos os principais sistemas de bancos de dados s\u00e3o algum tipo de servidor que oferece algum tipo de protocolo para que algum tipo de cliente os acesse?<\/p>\n<p>Este \u00e9 um padr\u00e3o, dentro da despadroniza\u00e7\u00e3o dos sistemas de bancos de dados.<\/p>\n<p>Voc\u00ea j\u00e1 parou, tamb\u00e9m, para pensar que cada sistema de banco de dados oferece um cliente espec\u00edfico para control\u00e1-lo?<\/p>\n<p>Isso mesmo. A linguagem principal pode ser a mesma (SQL), mas voc\u00ea vai precisar aprender a usar cada um dos clientes disponibilizados pelos diferentes sistemas de bancos de dados para operar cada banco de dados &#8230;<\/p>\n<p>Acessibilidade? Varia, mas normalmente \u00e9 sempre fraca para coisas mais complexas. Comodidade? Varia, mas no geral para quem depende de leitores de tela muitas das funcionalidades nativas de cada cliente, como completion de tabelas e etc funcionam pior do que poderiam. Gui ou CLI? Tamb\u00e9m varia, mas o que dificilmente varia \u00e9 o fato de que, quando gui, ou n\u00e3o \u00e9 acess\u00edvel ou corre risco de n\u00e3o ser mais acess\u00edvel a qualquer momento. Tudo varia, e varia muito.<\/p>\n<p>Para quem enxerga, apenas um enc\u00f4modo. Para quem n\u00e3o enxerga, falta de produtividade e dificuldades de aprendizado logo ali.<\/p>\n<p>Por\u00e9m &#8230; calma a\u00ed. Vamos parar para pensar: Os sistemas todos (pou boa parte deles) usam os mesmos protocolos. A linguagem \u00e9 quase padronizada. N\u00e3o daria para criar um cliente \u00fanico que pudesse acessar todos esses bancos de dados?<\/p>\n<p>Esta \u00e9 exatamente a premissa de aplica\u00e7\u00f5es como o DBEaver. Elas atendem a uma necessidade de ter toda a complexidade e as varia\u00e7\u00f5es de cada sistema de bancos de dados abstra\u00eddas e usarem uma interface \u00fanica, confort\u00e1vel e, o mais importante para quem usa leitores de tela no caso do DBEaver, acess\u00edvel.<\/p>\n<h2>DBEaver<\/h2>\n<h3>Instala\u00e7\u00e3o<\/h3>\n<p>Para usarmos o DBEaver com  mais efetividade, seguem algumas dicas:<\/p>\n<ol>\n<li>Baixe o <a href=\"https:\/\/dbeaver.io\">DBEaver Community<\/a>. Recomendamos que o Windows Installer seja baixado.<\/li>\n<li>Instale em seu NVDA o complemento <a href=\"https:\/\/github.com\/albzan\/eclipse-nvda\">Eclipse Enhance<\/a><\/li>\n<li>Instale o DBEaver normalmente. <\/li>\n<li>Abra o DBEaver. Como todos os ambientes baseados no Eclipse, a inicializa\u00e7\u00e3o vai ser um pouco lenta.<\/li>\n<li>O Windows defender poder\u00e1 abrir e pedir que voc\u00ea decida se quer excluir o DBEaver de scanning, para melhorar o desempenho. Decida o que entender mais apropriado para seu caso.<\/li>\n<li>Um di\u00e1logo perguntando se um database de exemplo dever\u00e1 ser criado abrir\u00e1. Escolha sim, pois voc\u00ea poder\u00e1 treinar com seguran\u00e7a o uso do DBEaver nesse banco de dados. E, antes de voc\u00ea perguntar qual sistema de banco de dados ele ir\u00e1 usar, isso \u00e9 irrelevante, pois a interface ser\u00e1 exatamente a mesma n\u00e3o importa o que voc\u00ea estiver usando como servidor de banco de dados. Mas, na insist\u00eancia, eu te digo que neste caso o Sqlite ser\u00e1 usado.<\/li>\n<\/ol>\n<h3>Conectando com um banco de dados<\/h3>\n<p>Sendo o DBEaver um cliente, voc\u00ea precisar\u00e1 antes de tudo se conectar a um ou mais servidores de bancos de dados.<\/p>\n<p>O componente utilizado para gerenciar conex\u00f5es \u00e9 o Database Navigator, que pode ser acessado atrav\u00e9s do menu Window (alt + w), show views, database navigator.<\/p>\n<p>Se acessar a janela, ir\u00e1 perceber que uma conex\u00e3o com o DBEaver Sample Database j\u00e1 est\u00e1 configurada.<\/p>\n<p>Ela estar\u00e1 representada como um n\u00f3 na \u00e1rvore de conex\u00f5es.<\/p>\n<h4>Drivers<\/h4>\n<p>Devido ao grande n\u00famero de sistemas de bancos de dados que o DBEaver suporta, os drivers para cada um n\u00e3o vem instalados por padr\u00e3o.<\/p>\n<p>Isso faz sentido, j\u00e1 que voc\u00ea dificilmente ir\u00e1 utilizar todos esses sistemas.<\/p>\n<p>Para ver quais bancos de dados est\u00e3o dispon\u00edveis nesta conex\u00e3o de exemplo, experimente expandir a \u00e1rvore no n\u00f3 representado por ela: Voc\u00ea ir\u00e1 notar um di\u00e1logo dizendo que os drivers para o<br \/>\nSqlite n\u00e3o est\u00e3o instalados.<\/p>\n<p>Selecione &#8220;download&#8221; e espere que o driver seja instalado. Voc\u00ea obviamente precisar\u00e1 fazer isso apenas uma vez para conex\u00f5es que utilizam o Sqlite, mas precisar\u00e1 fazer isso outras vezes para acessar, por exemplo, Mysql, Postgres entre outros.<\/p>\n<p>Ap\u00f3s um curto tempo, o database navigator ser\u00e1 novamente focado e, desta vez, se tentar expandir o n\u00f3 representado pela conex\u00e3o de exemplo, ser\u00e1 poss\u00edvel ver as tabelas deste banco de dados.<\/p>\n<h3>Navegando pelos objetos de um banco de dados<\/h3>\n<p>A partir do Database Navigator, expandindo-se uma conex\u00e3o, voc\u00ea ter\u00e1 acesso a todos os objetos deste banco.<\/p>\n<p>Por objetos, entenda tabelas, views, \u00edndices e o que quer que o sistema de banco de dados em quest\u00e3o suporte.<\/p>\n<p>No nosso banco de dados de exemplo, se expandirmos o n\u00f3 de tabelas, encontraremos &#8220;\u00e1lbuns&#8221;, &#8220;artists&#8221;, entre outras.<\/p>\n<p>Expandindo-se qualquer tabela, veremos os objetos que a representam, tais como as colunas, as chaves, chaves estrangeiras , \u00edndices e outros.<\/p>\n<p>Vejamos, por exemplo, a tabela de customers: expandindo-se as colunas, veremos que a tabela cont\u00e9m customerId, firstName, lastName, entre outros. Observe que os tipos de cada coluna tamb\u00e9m s\u00e3o exibidos.<\/p>\n<p>Se voc\u00ea acha que esta maneira de explorar como cada tabela \u00e9 composta \u00e9 mais simples, r\u00e1pida e produtiva, saiba que n\u00e3o st\u00e1 sozinho (a).<\/p>\n<p>Tamb\u00e9m \u00e9 poss\u00edvel navegar pelas chaves. Por exemplo, podemos notar que esta tabela tem uma chave chamada PK_customers, dispon\u00edvel ao expandirmos o n\u00f3s de Keys.<\/p>\n<p>Da mesma forma, \u00e9 poss\u00edvel saber que a tabela exporta uma chave estrangeira, ao expandir o n\u00f3 foreign keys.<\/p>\n<p>Ter acesso r\u00e1pido a quais colunas s\u00e3o afetadas por uma chave, via interface gr\u00e1fica, \u00e9 menos produtivo do que poderia ser.<\/p>\n<p>Logo, veremos uma outra estrat\u00e9gia para tanto.<\/p>\n<h3>Usando comandos sql<\/h3>\n<p>Para abrir o editor de sql, usamos o atalho f3.<\/p>\n<p>O funcionamento do editor n\u00e3o \u00e9 \u00f3bvio, embora a maioria dos clientes gr\u00e1ficos de bancos de dados funcionem da mesma maneira:<\/p>\n<p>Voc\u00ea estar\u00e1 focado em um editor de textos padr\u00e3o.<\/p>\n<p>Nele, \u00e9 poss\u00edvel digitar comandos sql, e voc\u00ea ter\u00e1 acesso ao auto complete das tabelas e outros objetos relativas \u00e0 conex\u00e3o ativa.<\/p>\n<p>Pressione f3. Um di\u00e1logo vai se abrir perguntando qual script deve ser carregado. A sugest\u00e3o ser\u00e1 um arquivo chamado script.sql, que estar\u00e1 em branco por padr\u00e3o.<\/p>\n<p>Experimente selecionar algo da tabela de albums:<\/p>\n<p>Comece a escrever &#8220;select. Ao pressionar s, uma lista de sugest\u00f5es com a palavra &#8220;select&#8221; ser\u00e1 exibida. Pressione tab para confirmar, e veja (usando as setas) que a palavra &#8220;select&#8221; foi inserida.<\/p>\n<p>agora, digite * e pressione &#8220;f&#8221;, aceitando a palavra from que \u00e9 exibida como sugest\u00e3o.<\/p>\n<p>Depois de confirmar, escreva a e veja que a tabela \u00e1lbum ser\u00e1 exibida como sugest\u00e3o. Voc\u00ea poder\u00e1 selecionar outras op\u00e7\u00f5es com as setas antes de confirmar. Algumas delas s\u00e3o artist, mediaType entre outras. Selecione \u00e1lbum e pressione tab.<\/p>\n<p>Observe o imenso valor que esta ferramenta adiciona a sua produtividade: voc\u00ea n\u00e3o precisa decorar e escrever exatamente o nome das tabelas em uma query, lembrando que, por conven\u00e7\u00e3o, tabelas de bancos de dados podem ter nomes longos, complexos e pouco intuitivos.<\/p>\n<p>Mais do que isso: agora que a tabela da query est\u00e1 definida, se voc\u00ea apagar o * do select * e apertar, em vez disso, ctrl + espa\u00e7o (para subir a lista de op\u00e7\u00f5es do auto complete), ter\u00e1 todas as colunas da tabela Album listadas e poder\u00e1 selecionar a que preferir com as setas. Ap\u00f3s confirmar com tab, se escrever &#8220;,&#8221; e pressionar ctrl + espa\u00e7o novamente, a lista de colunas ser\u00e1 novamente exibida, o que evitar\u00e1 que voc\u00ea tenha que, antes de tudo, decorar os nomes das colunas da tabela que est\u00e1 utilizando.<\/p>\n<p>Para fins de exerc\u00edcio, vamos manter * como a defini\u00e7\u00e3o das colunas a serem selecionadas.<\/p>\n<p>Nossa query agora est\u00e1 assim: &#8220;SELECT * FROM Album a&#8221;<\/p>\n<h4>Executando queries<\/h4>\n<p>A partir de agora, preste extrema aten\u00e7\u00e3o:<\/p>\n<p>Com o passar do tempo, acaba sendo muito comum que voc\u00ea tenha muitas conex\u00f5es de bancos de dados configuradas.<\/p>\n<p>Voc\u00ea ter\u00e1, por exemplo, muito provavelmente uma conex\u00e3o para o banco de dados da sua m\u00e1quina local, e talvez uma conex\u00e3o para o mesmo banco de dados, por\u00e9m do ambiente de homologa\u00e7\u00e3o ou desenvolvimento.<\/p>\n<p>Obviamente, esses bancos de dados s\u00e3o diferentes. Uma query escrita no editor de SQL ser\u00e1 rodada na conex\u00e3o ativa no momento no seu DBEaver.<\/p>\n<p>Se estiver fazendo um select  e a conex\u00e3o ativa for diferente do que voc\u00ea est\u00e1 esperando, o m\u00e1ximo que pode acontecer vai ser voc\u00ea perder minutos ou horas por estar lendo resultados sem qualquer sentido.<\/p>\n<p>Mas se voc\u00ea estiver fazendo opera\u00e7\u00f5es de escrita, tais como insert, delete, entre outras, poder\u00e1 causar um enorme estrago em bases de dados que n\u00e3o s\u00e3o as que voc\u00ea achava que seriam.<\/p>\n<p>Assim, sempre utilize ctrl + 9 para selecionar a conex\u00e3o desejada, e ctrl + 0 para escolher o banco de dados \/ schema (caso haja mais de um banco de dados ou chema dispon\u00edveis) antes de executar uma query.<\/p>\n<p>No nosso caso, pressionando ctrl + 9 veremos que existe apenas um data source, a nossa conex\u00e3o de exemplo, dispon\u00edvel.<\/p>\n<p>ctrl + 0 mostrar\u00e1 uma lista vazia, pois o Sqlite disponibiliza apenas uma base de dados ou schema por conex\u00e3o.<\/p>\n<p>Agora, vem a outra coisa pouco intuitiva:<\/p>\n<p>Editores de query, tais como o que estamos, permitem que m\u00faltiplas queries sejam escritas.<\/p>\n<p>No nosso caso, temos apenas uma linha no editor, mas poder\u00edamos, por exemplo, ter logo abaixo dela uma outra linha, algo como &#8220;SELECT * from Artist a&#8221;.<\/p>\n<p>O sistema precisa saber qual das duas queries executar.<\/p>\n<p>No geral, ele espera que a query a ser executada esteja selecionada.<\/p>\n<p>Voc\u00ea precisar\u00e1 tomar cuidado para selecionar apenas a query que deseja executar.<\/p>\n<p>Nunca confie que o sistema estimar\u00e1 corretamente a query a ser executada, caso voc\u00ea n\u00e3o a selecione. Se voc\u00ea tiver uma query select e outra delete e n\u00e3o selecionar exatamente o que quer, pode acabar fazendo um delete em vez do seu select.<\/p>\n<p>Sempre separe queries por uma ou mais linhas em branco, tenha extremo cuidado.<\/p>\n<p>Com a certeza de que sua conex\u00e3o ativa e banco (ou schema) s\u00e3o os desejados, selecione a query desejada com as setas.<\/p>\n<p>Voc\u00ea pode ouvir o que selecionou pressionando tecla NVDA + shift + seta para cima.<\/p>\n<h5>Executando selects<\/h5>\n<ol>\n<li>Selecione a query select * from Album a<\/li>\n<li>Pressione ctrl + enter.<\/li>\n<li>Voc\u00ea n\u00e3o ouvir\u00e1 nada, nem nada, aparentemente, acontecer\u00e1.<\/li>\n<li>Pressione ctrl + tab.<\/li>\n<li>Tudo correndo bem, voc\u00ea estar\u00e1 em um grid parecido com o excel, onde poder\u00e1 navegar e ler os registros de forma totalmente acess\u00edvel. Quando estiver no grid, pressione a tecla tab uma vez para for\u00e7ar a atualiza\u00e7\u00e3o do buffer, pois voc\u00ea poder\u00e1 ainda (no buffer de acessibilidade) estar navegando por uma query anterior.<\/li>\n<li>Usando a tecla de aplica\u00e7\u00f5es, \u00e9 poss\u00edvel acessar uma s\u00e9rie de op\u00e7\u00f5es, inclusive editar valores direto do grid, o que muitas vezes \u00e9 muito mais produtivo do que escrever uma query de update para corrigir algum erro ede valor em colunas que voc\u00ea acabou de inserir.<\/li>\n<li>Para retornar ao editor de sql, pressione ctrl + t. Voc\u00ea pode precisar pressionar este atalho mais de uma vez.<\/li>\n<\/ol>\n<h5>Executando queries de escrita<\/h5>\n<p>No editor, vamos inserir um novo artista.<\/p>\n<p>digite i e selecione a palavra insert. Em seguida, digite i novamente e selecione a palavra into. Depois, digite a letra a e selecione a tabela Artist.<\/p>\n<p>em seguida, digite &#8216;(&#8216; e pressione ctrl + espa\u00e7o para acessar os nomes das colunas dispon\u00edveis.<\/p>\n<p>Selecione a coluna Name, j\u00e1 que a ArtistId \u00e9 preenchida automaticamente.<\/p>\n<p>Voc\u00ea notar\u00e1 que o &#8216;)&#8217; foi inserido automaticamente. Ap\u00f3s este, digite values(&#8216;test&#8217;)<\/p>\n<p>A query, no final, ficar\u00e1 assim:<\/p>\n<p>INSERT INTO  Artist (Name) values (&#8216;test&#8217;)<\/p>\n<ol>\n<li>Selecione a query.<\/li>\n<li>Pressione ctrl + enter.<\/li>\n<li>Aparentemente, nada acontecer\u00e1 e nada ser\u00e1 dito.<\/li>\n<li>Pressione ctrl + tab.<\/li>\n<li>Tudo correndo bem, voc\u00ea estar\u00e1 na aba de estat\u00edsticas, onde poder\u00e1 com as setas acompanhar os efeitos que sua query causou no banco de dados.<br \/>\nVemos que, neste caso, nossa query atualizou uma linha no banco, o que faz sentido, j\u00e1 que inserimos um registro.<\/li>\n<li>Para voltar ao editor de sql, pressionamos ctrl + t.<\/li>\n<\/ol>\n<h5>Exerc\u00edcios<\/h5>\n<p>Experimente selecionar de Artist onde nome for igual a &#8216;test&#8217;.<\/p>\n<p>Lembre-se de que ctrl + espa\u00e7o tamb\u00e9m pode ser usado depois da palavra where para listar as colunas dispon\u00edveis.<\/p>\n<p>Depois, experimente trocar o nome do registro inserido de &#8216;test&#8217; para &#8216;outro-test&#8217;<\/p>\n<p>por fim, experimente deletar o registro que acabou de inserir.<\/p>\n<p>Logo ap\u00f3s, pressione ctrl + tab.<\/p>\n<h5>Lidando com erros<\/h5>\n<p>Mesmo que o auto complete nos impe\u00e7a de cometer a maioria dos erros, oriundos de especificarmos nomes de tabelas, de comandos ou de colunas de maneira incorreta, ainda podemos cometer erros em nossas queries.<\/p>\n<ol>\n<li>Volte a query &#8220;select * from Album a&#8221; e a modifique. Coloque no nome da tabela &#8220;Albums&#8221; , assim ficando com &#8220;select * from albums a&#8221;.<\/li>\n<li>Selecione a query e pressione ctrl + enter.<\/li>\n<li>Aparentemente, nada acontecer\u00e1 e nada ser\u00e1 dito.<\/li>\n<li>Pressione ctrl + tab. Em vez de encontrar o grip de resultados, voc\u00ea estar\u00e1 na aba de estat\u00edsticas, como se tivesse executado uma query de escrita.<\/li>\n<li>Entretanto, se usar as setas, nenhuma estat\u00edstica vai ser exibida. Em vez disso, apenas a query executada ser\u00e1 exibida. Isso \u00e9 um claro sinal de que um erro ocorreu.<\/li>\n<li>Para acessar o erro, pressione ctrl+shift+tab algumas vezes at\u00e9 que um campo edit\u00e1vel com sua descri\u00e7\u00e3o seja focado.<\/li>\n<li>Aqui, vemos que o erro diz &#8220;database(no such table: albums), o que significa que a tabela Albums n\u00e3o existe neste banco de dados.<\/li>\n<li>Volte ao editor de sql pressionando ctrl + t. e corrija a query.<\/li>\n<\/ol>\n<h3>Conectando com outros bancos de dados<\/h3>\n<p>Ainda nos falta explorar como criar novas conex\u00f5es com sistemas bancos de dados.<\/p>\n<p>No caso da conex\u00e3o com o banco de dados de exemplo, o pr\u00f3prio DBEaver a criou, mas precisaremos saber como criar nossas pr\u00f3prias.<\/p>\n<p>Para este exerc\u00edcio, instale o MariaDB, que \u00e9 um &#8220;novo nome&#8221; para o Mysql.<\/p>\n<h4>Dica bonus<\/h4>\n<p>Cansado (a) de ficar fazendo downloads de instaladores por a\u00ed?<\/p>\n<p>Ent\u00e3o venha ter a comodidade de instalar software como pacotes, que \u00e9 algo que a maioria dos sistemas *nix j\u00e1 disponibiliza desde que eu consigo me recordar.<\/p>\n<p>Instale o <a href=\"https:\/\/chocolatey.org\/\">Chocolatey<\/a> e depois, em um terminal, apenas digite &#8220;choco install mariadb&#8221;. Pronto, seu mariadb est\u00e1 instalado.<\/p>\n<h4>Criando um banco de dados<\/h4>\n<p>Normalmente, usamos o DBeaver para se conectar em bancos de dados j\u00e1 existentes.<\/p>\n<p>Um sistema como o Sqlite pode gerenciar m\u00faltiplos bancos de dados (n\u00e3o confunda com sistema gerenciador de banco de dados), e a maioria dos outros sistemas, tais como o mysql (ou mariaDb), postgres entre outros faz a mesma coisa.<\/p>\n<p>Entenda um banco de dados como um agrupador l\u00f3gico de usu\u00e1rios, procedures, views, tabelas, e outros.<\/p>\n<p>Isso significa que o Mysql pode, dentro do mesmo servidor (no caso sua m\u00e1quina), gerenciar m\u00faltiplos bancos de dados que operam de maneira completamente isolada.<\/p>\n<p>De fato, no sistema de arquivos (dependendo da implementa\u00e7\u00e3o), cada banco de dados mysql \u00e9 armazenado em um diret\u00f3rio diferente.<\/p>\n<p>No caso do Sqlite, cada banco de dados \u00e9 armazenado em um arquivo diferente.<\/p>\n<p>Antes de nos conectarmos em um banco de dados no mysql precisaremos, portanto, cri\u00e1-lo.<\/p>\n<h4>Uso do client do mariaDB<\/h4>\n<p>Para isso, em um terminal (windows + r, cmd, enter), digite:<\/p>\n<pre><code>mariadb -h127.0.0.1 -uroot\n<\/code><\/pre>\n<ul>\n<li>mariadb &#8211; execut\u00e1vel do cliente para o mysql \/ mariaDB<\/li>\n<li>-h especifica o endere\u00e7o do host a ser acessado. No caso, usamos o ip de loopback 127.0.0.1  que est\u00e1 dispon\u00edvel em praticamente todas as m\u00e1quinas que aponta para a pr\u00f3pria m\u00e1quina<br \/>\n-u &#8211; passamos o usu\u00e1rio root como credencial para acessar o servidor<\/li>\n<\/ul>\n<p>Nesta configura\u00e7\u00e3o, o usu\u00e1rio root n\u00e3o precisa de senha em acessos vindos do pr\u00f3prio servidor, ou seja, da sua m\u00e1quina<\/p>\n<h5>Criando um banco de dados<\/h5>\n<p>Digite<\/p>\n<pre><code>create database test;\n<\/code><\/pre>\n<p>E pressione enter.<\/p>\n<p>Voc\u00ea ouvir\u00e1 o NVDA ecoar de volta a sa\u00edda deste comando, que dever\u00e1 ser &#8220;query ok, 1 row affected.&#8221;<\/p>\n<h5>Criando um usu\u00e1rio<\/h5>\n<p>Digite o seguinte<\/p>\n<pre><code>CREATE USER 'test_user'@'127.0.0.1' IDENTIFIED BY 'test_pass';\n<\/code><\/pre>\n<p>Este comando cria um usu\u00e1rio no formato esperado pelo mysql, que \u00e9 &#8220;nome_de_usu\u00e1rio@endere\u00e7o_remoto_de_onde_o_usu\u00e1rio_pode_se_conectar&#8221;<\/p>\n<p>No caso, criamos um usu\u00e1rio chamado &#8220;test_user&#8221;, que pode se conectar apenas a partir da mesma m\u00e1quina onde o servidor mysql est\u00e1 instalado, com a senha (especificada logo ap\u00f3s a parte IDENTIFIED) BY) &#8220;test_[pass&#8221;.<\/p>\n<p>Executando este comando, temos uma sa\u00edda como &#8220;query ok, 0 rows affected&#8221;.<\/p>\n<p>Agora, nos falta dar ao usu\u00e1rio &#8220;test_user&#8221; as permiss\u00f5es para acessar o banco de dados &#8220;test&#8221; que acabamos de criar:<\/p>\n<p>Digite<\/p>\n<pre><code>GRANT ALL PRIVILEGES ON test.* TO 'test_user'@'127.0.0.1';\n<\/code><\/pre>\n<p>Uma sa\u00edda com &#8220;query ok&#8221; dever\u00e1 ser obtida.<\/p>\n<p>Por fim, digite<\/p>\n<pre><code>flush privileges;\n<\/code><\/pre>\n<p>E, novamente, uma sa\u00edda com &#8220;query ok&#8221; dever\u00e1 ser obtida.<\/p>\n<h5>Testando o novo usu\u00e1rio<\/h5>\n<p>digite &#8220;\\q&#8221; para sair do cliente do mysql \/ mariaDb.<\/p>\n<p>Voc\u00ea dever\u00e1 estar de volta ao prompt de comandos.<\/p>\n<p>Ent\u00e3o, chegou a hora de nos conectarmos com nosso novo usu\u00e1rio no nosso novo banco de dados. Para isso, digite<\/p>\n<pre><code>mariadb -h127.0.0.1 -utest_user -p test\n<\/code><\/pre>\n<p>A senha ser\u00e1 solicitada. Digite &#8220;test_pass&#8217;<\/p>\n<ul>\n<li>-h especifica o servidor a ser acessado<\/li>\n<li>-u especifica o nome de usu\u00e1rio logo ap\u00f3s, no caso test_user<\/li>\n<li>-p especifica que uma conex\u00e3o autenticada dever\u00e1 ser feita (ou que uma senha dever\u00e1 ser solicitada)<\/li>\n<li>test \u00e9 o nome do banco de dados com o qual queremos nos conectar.<\/li>\n<\/ul>\n<p>Ao apertar enter, voc\u00ea dever\u00e1 ouvir detalhes da conex\u00e3o.<\/p>\n<p>Voc\u00ea pode testar alguns comandos. Por exemplo, tente digitar &#8220;show tables&#8221;e veja que nenhuma tabela foi criada neste banco de dados.<\/p>\n<h4>Conectando via dbEaver<\/h4>\n<ol>\n<li>Abra o database navigator.<\/li>\n<li>Tecla aplica\u00e7\u00f5es na conex\u00e3o j\u00e1 criada de exemplo. v\u00e1 at\u00e9 create e depois at\u00e9 connection.<\/li>\n<li>A janela que se abre vai nos pedir para selecionar o sistema de banco de dados ao qual queremos nos conectar.<\/li>\n<li>Voc\u00ea pode digitar parte do nome do tipo de banco de dados no filtro ou deixar em branco para acessar todas as op\u00e7\u00f5es..<\/li>\n<li>pressione tab at\u00e9 a lista e escolha &#8220;maria db&#8221; pressionando enter.<\/li>\n<li>A tela de op\u00e7\u00f5es para o tipo de banco de dados selecionado aparece.<\/li>\n<li>Selecione tipo de servidor para host.<\/li>\n<li>No campo server host, digite 127.0.0.1<\/li>\n<li>No campo database, digite test.<\/li>\n<li>no campo user name, digite &#8220;test_user&#8221;<\/li>\n<li>No campo password, digite &#8220;test_pass&#8221;<\/li>\n<li>Procure e acione o bot\u00e3o &#8220;test connection&#8221;, para verificarmos que as op\u00e7\u00f5es digitadas funcionam adequadamente.<\/li>\n<li>Como esta \u00e9 a primeira conex\u00e3o com banco de dados mariaDB, o driver precisar\u00e1 ser baixado. Escolha &#8220;download&#8221;.<\/li>\n<li>Depois de um tempo, voc\u00ea ouvir\u00e1 um resultado de erro de conex\u00e3o. Ainda preciso descobrir o motivo disso.<br \/>\nDesconfio que, ao fazer o download e tentar o teste, algum dos campos preenchidos na tela \u00e9 apagado. O DBEaver pode ficar inst\u00e1vel neste caso, ent\u00e3o feche e abra novamente.<br \/>\nLembre-se que isso apenas acontecer\u00e1 quando novos drivers precisam ser baixados, o que acontece apenas quando um novo tipo de banco de dados \u00e9 usado pela primeira vez.<\/li>\n<li>Fa\u00e7a o procedimento novamente. Desta vez, o teste de conex\u00e3o n\u00e3o pedir\u00e1 para baixar drivers (pois j\u00e1 foram baixados) e reportar\u00e1 sucesso.<\/li>\n<li>Clique em finish.<\/li>\n<li>Note, agora, que o database navigator exibe dois n\u00f3s: a conex\u00e3o de teste com o Sqlite e a conex\u00e3o com o banco de dados test do mariaDB. Expanda esta \u00faltima.<\/li>\n<li>Voc\u00ea notar\u00e1 que existe um banco de dados &#8220;test&#8221; e nenhuma tabela.<\/li>\n<\/ol>\n<h3>Criando tabelas<\/h3>\n<p>A partir de agora, voc\u00ea poder\u00e1 acessar o editor SQL e executar queries, exatamente como fez com o banco de dados de teste do Sqlite.<\/p>\n<p>Portanto, aperte f3 para ir ao editor de sql.<\/p>\n<ol>\n<li>Use ctrl + 9 para selecionar a conex\u00e3o. Observe que, agora, aparecem duas, selecione a conex\u00e3o test.<\/li>\n<li>Use ctrl + 0 para selecionar, dentro da conex\u00e3o, o banco de dados desejado.<\/li>\n<\/ol>\n<p>Em seguida, crie uma tabela.<\/p>\n<p>Como voc\u00ea est\u00e1 criando uma tabela, o auto complete pode ajudar pouco com sintaxe.<\/p>\n<p>Para fins de exemplo, a seguinte DDL deve funcionar:<\/p>\n<pre><code>create  table test_table(\n    id INT not null auto_increment PRIMARY KEY,\n    notes VARCHAR(255) \n );\n<\/code><\/pre>\n<p>Se digitar, selecionar, pressionar ctrl + enter e depois ctrl+tab, vai perceber que a tabela foi criada.<\/p>\n<p>Pressione ctrl + t para voltar ao editor de sql.<\/p>\n<p>Observe que este \u00e9 exatamente o mesmo procedimento que usamos para executar queries no Sqlite.<\/p>\n<p>Para fins de teste, volte na janela onde o client do mariaDb est\u00e1 aberto e digite novamente &#8220;show tables&#8221;;<\/p>\n<p>Voc\u00ea notar\u00e1 que, agora, a tabela test_table foi criada.<\/p>\n<p>Vamos inserir um registro na tabela.<\/p>\n<p>No editor de sql, digite<\/p>\n<pre><code>insert into test_table (notes) values('primeira nota');\n<\/code><\/pre>\n<p>Novamente, selecione, pressione ctrl + enter e depois ctrl + tab, ara acessar o resultado.<\/p>\n<p>Desta vez, uma linha foi afetada, o que significa que inserimos de fato um registro.<\/p>\n<p>Pressione ctrl + t para voltar ao editor de sql.<\/p>\n<p>Agora, vamos recuperar os registros da tabela. Digite<\/p>\n<pre><code>select  * from  test_table tt ;\n<\/code><\/pre>\n<p>Novamente, pressionando ctrl + tab voc\u00ea estar\u00e1 no grid de resultados, novamente da mesma maneira que com o banco de dados Sqlite.<\/p>\n<p>Por fim, vamos criar uma outra tabela, por\u00e9m sem qualquer ddl:<\/p>\n<ol>\n<li>V\u00e1 at\u00e9 o database navigator.<\/li>\n<li>Expanda a conex\u00e3o test e o banco de dados test.<\/li>\n<li>Tecla applications em tables.<\/li>\n<li>Selecione create new table.<\/li>\n<li>Shift tab algumas vezes at\u00e9 o campo table name.<\/li>\n<li>Digite other_test_table<\/li>\n<li>Tab at\u00e9 a \u00e1rvore de colunas. No meio do caminho, voc\u00ea passar\u00e1 pelo campo description, que \u00e9 multi line e, portanto, captura o tab como um caracter de testo.<br \/>\nUse ctrl+tab para prosseguir em vez disso (n\u00e3o esque\u00e7a de apagar o tab que foi colocado no campo).<\/li>\n<li>Para adicionar uma coluna, pressione tab para a barra de ferramentas e setas para a direita at\u00e9 o bot\u00e3o create new column.<\/li>\n<li>Vamos chamar a coluna de &#8220;id&#8221;.<\/li>\n<li>Selecione INT na combo de data type.<\/li>\n<li>Voc\u00ea pode digitar parte do valor e selecionar na lista filtrada pressionando enter.<\/li>\n<li>Marque not null.<\/li>\n<li>Marque auto increment.<\/li>\n<li>Marque o campo como uma chave, marcando a caixa de verifica\u00e7\u00e3o keys.<\/li>\n<li>Selecione o tipo de chave como primary.<\/li>\n<li>Tab at\u00e9 ok.<\/li>\n<li>Voc\u00ea voltar\u00e1 na \u00e1rvore de colunas, mas a coluna criada n\u00e3o ser\u00e1 exibida. Para exibir, tab at\u00e9 a barra de ferramentas e aperte o bot\u00e3o refresh editor contents.<\/li>\n<li>Crie uma nova coluna, agora chamada notes, do tipo varchar, e not null.<\/li>\n<li>Por fim, tab at\u00e9 a barra de ferramentas e selecione preview changes and save.<br \/>\n20 Um editor apenas leitura com o sql a ser executado ser\u00e1 exibido. Se estiver de acordo, clique em &#8220;execute&#8221;. Tamb\u00e9m \u00e9 poss\u00edvel editar a queri acionando open editor, que te levar\u00e1 a um novo editor sql com o c\u00f3digo gerado escrito. Voc\u00ea pode alterar e executar com ctrl + enter normalmente.<\/li>\n<\/ol>\n<p>Um fluxo bem produtivo \u00e9 criar a tabela via interface gr\u00e1fica e depois editar os ajustes finos.<br \/>\nO DBEaver cuidar\u00e1 de oferecer op\u00e7\u00f5es compat\u00edveis de acordo com o tipo de banco de dados a ser utilizado.<\/p>\n<h2>Conclus\u00e3o<\/h2>\n<p>Esperamos que sua produtividade possa aumentar ao utilizar o DBEaver para auxiliar em opera\u00e7\u00f5es com bancos de dados.<\/p>\n<p>Agradecemos em primeiro lugar a Deus e depois aos leitores que tiveram o interesse em chegar at\u00e9 o fim deste artigo.<\/p>\n<p>Boas consultas!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Salve, galera! Trabalhar com banco de dados \u00e9 algo importante e muito possivelmente vai fazer parte da vida de todo mundo que desenvolve software. No artigo de hoje, vamos trazer algumas dicas de como usar o DBEaver, um cliente integrado que oferece suporte a uma s\u00e9rie de bancos de dados diferentes atrav\u00e9s de uma interface completa e acess\u00edvel. O que<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[162,59,16,264,1],"tags":[46,299,298,24,266],"class_list":["post-989","post","type-post","status-publish","format-standard","hentry","category-artigos","category-dicas","category-nvda","category-programacao","category-uncategorized","tag-acessibilidade","tag-dbeaver","tag-dbeaverprogramacao","tag-nvda","tag-programacao"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v23.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Programando \u00e0s cegas: turbinando a sua produtividade Usando o DBEaver com leitores de telas - BlindTec<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.blindtec.com.br\/blog\/2024\/12\/programando-as-cegas-turbinando-sua-produtividade-usando-o-dbeaver-com-leitores-de-tela\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Programando \u00e0s cegas: turbinando a sua produtividade Usando o DBEaver com leitores de telas - BlindTec\" \/>\n<meta property=\"og:description\" content=\"Salve, galera! Trabalhar com banco de dados \u00e9 algo importante e muito possivelmente vai fazer parte da vida de todo mundo que desenvolve software. No artigo de hoje, vamos trazer algumas dicas de como usar o DBEaver, um cliente integrado que oferece suporte a uma s\u00e9rie de bancos de dados diferentes atrav\u00e9s de uma interface completa e acess\u00edvel. O que\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.blindtec.com.br\/blog\/2024\/12\/programando-as-cegas-turbinando-sua-produtividade-usando-o-dbeaver-com-leitores-de-tela\/\" \/>\n<meta property=\"og:site_name\" content=\"BlindTec\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/oficialBlindtec\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/marlon.brandaodesousa\" \/>\n<meta property=\"article:published_time\" content=\"2024-12-22T16:31:30+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-12-22T16:41:46+00:00\" \/>\n<meta name=\"author\" content=\"Marlon Brand\u00e3o de Sousa\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@twitter\" \/>\n<meta name=\"twitter:site\" content=\"@oficialBlindtec\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Marlon Brand\u00e3o de Sousa\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"23 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.blindtec.com.br\/blog\/2024\/12\/programando-as-cegas-turbinando-sua-produtividade-usando-o-dbeaver-com-leitores-de-tela\/\",\"url\":\"https:\/\/www.blindtec.com.br\/blog\/2024\/12\/programando-as-cegas-turbinando-sua-produtividade-usando-o-dbeaver-com-leitores-de-tela\/\",\"name\":\"Programando \u00e0s cegas: turbinando a sua produtividade Usando o DBEaver com leitores de telas - BlindTec\",\"isPartOf\":{\"@id\":\"https:\/\/www.blindtec.com.br\/blog\/en\/#website\"},\"datePublished\":\"2024-12-22T16:31:30+00:00\",\"dateModified\":\"2024-12-22T16:41:46+00:00\",\"author\":{\"@id\":\"https:\/\/www.blindtec.com.br\/blog\/en\/#\/schema\/person\/cec5894d9a4927ea9ef65745353511bf\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.blindtec.com.br\/blog\/2024\/12\/programando-as-cegas-turbinando-sua-produtividade-usando-o-dbeaver-com-leitores-de-tela\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.blindtec.com.br\/blog\/2024\/12\/programando-as-cegas-turbinando-sua-produtividade-usando-o-dbeaver-com-leitores-de-tela\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.blindtec.com.br\/blog\/2024\/12\/programando-as-cegas-turbinando-sua-produtividade-usando-o-dbeaver-com-leitores-de-tela\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\/\/www.blindtec.com.br\/blog\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Programando \u00e0s cegas: turbinando a sua produtividade Usando o DBEaver com leitores de telas\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.blindtec.com.br\/blog\/en\/#website\",\"url\":\"https:\/\/www.blindtec.com.br\/blog\/en\/\",\"name\":\"BlindTec\",\"description\":\"A tecnologia assistiva ao alcance de todos\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.blindtec.com.br\/blog\/en\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.blindtec.com.br\/blog\/en\/#\/schema\/person\/cec5894d9a4927ea9ef65745353511bf\",\"name\":\"Marlon Brand\u00e3o de Sousa\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.blindtec.com.br\/blog\/en\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/83010b6ef5076436b9ce0bedaf8038d9?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/83010b6ef5076436b9ce0bedaf8038d9?s=96&d=mm&r=g\",\"caption\":\"Marlon Brand\u00e3o de Sousa\"},\"description\":\"Ol\u00e1, Meu Nome \u00e9 Marlon Sousa e sou fundador e editor chefe do portal BlindTec. Sou formado em Processamento de dados pela Escola T\u00e9cnica Estadual Lauro Gomes em S\u00e3o Bernardo do campo SP, em Gest\u00e3o de Tecnologia da Informa\u00e7\u00e3o pela Unisul de Santa Catarina e atualmente curso MBA em desenvolvimento de aplicativos m\u00f3veis e games na FIAP, em S\u00e3o Paulo. No mercado de tecnologia desde 2003, atuei em empresas de grande porte nos ramos de comunica\u00e7\u00e3o e consultoria e, atualmente, trabalho em uma empresa no ramo financeiro. Como experi\u00eancia profissional, durante minha carreira exerci fun\u00e7\u00f5es de desenvolvimento de software, quality assurance e controle de processos e an\u00e1lise de sistemas. Sou um entusiasta do trabalho em equipe e acredito que um + um, quando existe un objetivo em comum, \u00e9 sempre maior do que dois! Na vida pessoal, gosto de boa companhia, bons papos, bons amigos e boa arte. Ou\u00e7o uma vasta gama de estilos musicais, sou um leitor inveterado e gosto de conhecer novos lugares, novos modos de pensar, novas pessoas. Al\u00e9m disso, sou apaixonado por tecnologia como um todo e, dentro desse universo, em especial por uma \u00e1rea chamada tecnologia assistiva, cuja principal fun\u00e7\u00e3o \u00e9 empoderar e ajudar pessoas. E isso, certamente, \u00e9 um grande compromisso e uma miss\u00e3o para mim. Se voc\u00ea n\u00e3o conhece o conceito de tecnologia assistiva e como isso \u00e9 importante, clique aqui e veja a defini\u00e7\u00e3o da BlindTec sobre o assunto.\",\"sameAs\":[\"https:\/\/www.blindtec.com.br\",\"https:\/\/www.facebook.com\/marlon.brandaodesousa\",\"https:\/\/x.com\/twitter\"],\"url\":\"https:\/\/www.blindtec.com.br\/blog\/author\/marlonsousa\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Programando \u00e0s cegas: turbinando a sua produtividade Usando o DBEaver com leitores de telas - BlindTec","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.blindtec.com.br\/blog\/2024\/12\/programando-as-cegas-turbinando-sua-produtividade-usando-o-dbeaver-com-leitores-de-tela\/","og_locale":"pt_BR","og_type":"article","og_title":"Programando \u00e0s cegas: turbinando a sua produtividade Usando o DBEaver com leitores de telas - BlindTec","og_description":"Salve, galera! Trabalhar com banco de dados \u00e9 algo importante e muito possivelmente vai fazer parte da vida de todo mundo que desenvolve software. No artigo de hoje, vamos trazer algumas dicas de como usar o DBEaver, um cliente integrado que oferece suporte a uma s\u00e9rie de bancos de dados diferentes atrav\u00e9s de uma interface completa e acess\u00edvel. O que","og_url":"https:\/\/www.blindtec.com.br\/blog\/2024\/12\/programando-as-cegas-turbinando-sua-produtividade-usando-o-dbeaver-com-leitores-de-tela\/","og_site_name":"BlindTec","article_publisher":"https:\/\/www.facebook.com\/oficialBlindtec","article_author":"https:\/\/www.facebook.com\/marlon.brandaodesousa","article_published_time":"2024-12-22T16:31:30+00:00","article_modified_time":"2024-12-22T16:41:46+00:00","author":"Marlon Brand\u00e3o de Sousa","twitter_card":"summary_large_image","twitter_creator":"@twitter","twitter_site":"@oficialBlindtec","twitter_misc":{"Escrito por":"Marlon Brand\u00e3o de Sousa","Est. tempo de leitura":"23 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.blindtec.com.br\/blog\/2024\/12\/programando-as-cegas-turbinando-sua-produtividade-usando-o-dbeaver-com-leitores-de-tela\/","url":"https:\/\/www.blindtec.com.br\/blog\/2024\/12\/programando-as-cegas-turbinando-sua-produtividade-usando-o-dbeaver-com-leitores-de-tela\/","name":"Programando \u00e0s cegas: turbinando a sua produtividade Usando o DBEaver com leitores de telas - BlindTec","isPartOf":{"@id":"https:\/\/www.blindtec.com.br\/blog\/en\/#website"},"datePublished":"2024-12-22T16:31:30+00:00","dateModified":"2024-12-22T16:41:46+00:00","author":{"@id":"https:\/\/www.blindtec.com.br\/blog\/en\/#\/schema\/person\/cec5894d9a4927ea9ef65745353511bf"},"breadcrumb":{"@id":"https:\/\/www.blindtec.com.br\/blog\/2024\/12\/programando-as-cegas-turbinando-sua-produtividade-usando-o-dbeaver-com-leitores-de-tela\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.blindtec.com.br\/blog\/2024\/12\/programando-as-cegas-turbinando-sua-produtividade-usando-o-dbeaver-com-leitores-de-tela\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.blindtec.com.br\/blog\/2024\/12\/programando-as-cegas-turbinando-sua-produtividade-usando-o-dbeaver-com-leitores-de-tela\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/www.blindtec.com.br\/blog\/en\/"},{"@type":"ListItem","position":2,"name":"Programando \u00e0s cegas: turbinando a sua produtividade Usando o DBEaver com leitores de telas"}]},{"@type":"WebSite","@id":"https:\/\/www.blindtec.com.br\/blog\/en\/#website","url":"https:\/\/www.blindtec.com.br\/blog\/en\/","name":"BlindTec","description":"A tecnologia assistiva ao alcance de todos","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.blindtec.com.br\/blog\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Person","@id":"https:\/\/www.blindtec.com.br\/blog\/en\/#\/schema\/person\/cec5894d9a4927ea9ef65745353511bf","name":"Marlon Brand\u00e3o de Sousa","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.blindtec.com.br\/blog\/en\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/83010b6ef5076436b9ce0bedaf8038d9?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/83010b6ef5076436b9ce0bedaf8038d9?s=96&d=mm&r=g","caption":"Marlon Brand\u00e3o de Sousa"},"description":"Ol\u00e1, Meu Nome \u00e9 Marlon Sousa e sou fundador e editor chefe do portal BlindTec. Sou formado em Processamento de dados pela Escola T\u00e9cnica Estadual Lauro Gomes em S\u00e3o Bernardo do campo SP, em Gest\u00e3o de Tecnologia da Informa\u00e7\u00e3o pela Unisul de Santa Catarina e atualmente curso MBA em desenvolvimento de aplicativos m\u00f3veis e games na FIAP, em S\u00e3o Paulo. No mercado de tecnologia desde 2003, atuei em empresas de grande porte nos ramos de comunica\u00e7\u00e3o e consultoria e, atualmente, trabalho em uma empresa no ramo financeiro. Como experi\u00eancia profissional, durante minha carreira exerci fun\u00e7\u00f5es de desenvolvimento de software, quality assurance e controle de processos e an\u00e1lise de sistemas. Sou um entusiasta do trabalho em equipe e acredito que um + um, quando existe un objetivo em comum, \u00e9 sempre maior do que dois! Na vida pessoal, gosto de boa companhia, bons papos, bons amigos e boa arte. Ou\u00e7o uma vasta gama de estilos musicais, sou um leitor inveterado e gosto de conhecer novos lugares, novos modos de pensar, novas pessoas. Al\u00e9m disso, sou apaixonado por tecnologia como um todo e, dentro desse universo, em especial por uma \u00e1rea chamada tecnologia assistiva, cuja principal fun\u00e7\u00e3o \u00e9 empoderar e ajudar pessoas. E isso, certamente, \u00e9 um grande compromisso e uma miss\u00e3o para mim. Se voc\u00ea n\u00e3o conhece o conceito de tecnologia assistiva e como isso \u00e9 importante, clique aqui e veja a defini\u00e7\u00e3o da BlindTec sobre o assunto.","sameAs":["https:\/\/www.blindtec.com.br","https:\/\/www.facebook.com\/marlon.brandaodesousa","https:\/\/x.com\/twitter"],"url":"https:\/\/www.blindtec.com.br\/blog\/author\/marlonsousa\/"}]}},"_links":{"self":[{"href":"https:\/\/www.blindtec.com.br\/blog\/wp-json\/wp\/v2\/posts\/989"}],"collection":[{"href":"https:\/\/www.blindtec.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.blindtec.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.blindtec.com.br\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.blindtec.com.br\/blog\/wp-json\/wp\/v2\/comments?post=989"}],"version-history":[{"count":4,"href":"https:\/\/www.blindtec.com.br\/blog\/wp-json\/wp\/v2\/posts\/989\/revisions"}],"predecessor-version":[{"id":994,"href":"https:\/\/www.blindtec.com.br\/blog\/wp-json\/wp\/v2\/posts\/989\/revisions\/994"}],"wp:attachment":[{"href":"https:\/\/www.blindtec.com.br\/blog\/wp-json\/wp\/v2\/media?parent=989"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.blindtec.com.br\/blog\/wp-json\/wp\/v2\/categories?post=989"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.blindtec.com.br\/blog\/wp-json\/wp\/v2\/tags?post=989"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}