domingo, 5 de novembro de 2023

PYTHON | EXCEL | LER LINHAS

 Iremos ler o conteúdo de uma planilha do Excel. Para isso será instalado um ambiente virtual (veja o post como montar um ambinete virtual) e instalado a lib:

openpyxl

Segue o código para ler as linhas e exibir o primeiro campo:

import openpyxl

workbook = openpyxl.load_workbook('vendas_de_produtos.xlsx')
vendas_sheet = workbook['vendas']

for linha in vendas_sheet.iter_rows(min_row=2):
print(linha[0].value)

Best regards




PYTHON | MONTAR UM AMBIENTE VIRTUAL

 Para montar um ambiente virtual em Python, o que facilita e aloca recurso especificamente para o projeto em questão. 

Primeiro instalar o suporte ao ambiente virtual:

sudo apt install python3.10-venv
sudo python -m venv automacao

O projeto em questão chama-se automacao e por consequência será criado um ambiente virtual com o mesmo nome. Em seguida entrar no diretório:

/automacao/bin

Dar permissão de execução:

chmod +x activate

Ativar o ambiente:

./activate

Pronto, as libs a serem instaladas ficarão apenas para o ambiente virtual do projeto e não do Python.

segunda-feira, 14 de fevereiro de 2022

NEST.JS - Erro ao rodar o docker-compose

Em um projeto NEST.JS ao tentar rodar o comando:

docker-compose up

Aparece o seguinte erro:

npm ERR! code EAI_AGAIN

npm ERR! errno EAI_AGAIN

npm ERR! request to https://registry.npmjs.org/@nestjs%2fcli failed, reason: getaddrinfo EAI_AGAIN registry.npmjs.org


npm ERR! A complete log of this run can be found in:

npm ERR!     /root/.npm/_logs/2022-02-11T19_26_29_796Z-debug.log

Por quê isso ocorre?
Por padrão o docker não pode encontrar o DNS do servidor localmente que normalmente está definido em /etc/resolv.conf. Nesse caso o container irá utilizar o DNS default do Google:
8.8.8.8

Como resolver?

Crie / edite o arquivo:

/etc/docker/daemon.json

Coloque o conteúdo:

{
    "dns": ["10.0.0.2", "8.8.8.8"]
}

Faça o restart do serviço:

sudo service docker restart

Pronto!

Best regards!



segunda-feira, 15 de junho de 2020

Docker - Instalar no Windows Home

Atualmente não é possível instalar no Windows Home, sendo exibido a mensagem:

Pre-requisite failed: Docker for Windows requires Windows 10 Pro or Enterprise version 14393, or Windows server 2016 RTM to run
Para contornar esse problema, siga os passos:

  1. Pressione Windows + R e digite regedit
  2. No registro do windows, vá em  \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
  3. Clique com o botão direito em EditionID and Click Modify
  4. Altere o valor para "Professional"
  5. Pressione OK.
  6. Instale Docker

Após instalar, você pode alterar o campo EditionID novamente para o valor anterior.




quinta-feira, 14 de novembro de 2019

Failed to install metadata eagenda Could not parse metadata C:\JAVA\REPOSITORIO_MAVEN\repo\eagenda\eagenda\maven-metadata-local.xml: only whitespace content allowed before start tag and not

Ao ocorrer o erro:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-install-plugin:2.4:install (default-install) on project eagenda: Failed to install metadata eagenda:eagenda/maven-metadata.xml: Could not parse metadata C:\JAVA\REPOSITORIO_MAVEN\repo\eagenda\eagenda\maven-metadata-local.xml: only whitespace content allowed before start tag and not \u0 (position: START_DOCUMENT seen \u0... @1:1)  -> [Help 1]



Isso ocorre porque no repositório do MAVEN, existem espaços ou caracteres especiais que corrompem e impossibilitam compilar.

Solução:
Ir ao repositório (M2) e apagar o projeto. Recompilar novamente e tudo irá funcionar.

Best Regards

sexta-feira, 28 de setembro de 2018

JAVA - WILDFLY - beans.xml file and java.lang.UnsupportedOperationException: JBAS011859: Naming context is read-only

Quando for feito um deploy e aparecer o erro:

beans.xml file and java.lang.UnsupportedOperationException: JBAS011859: Naming context is read-only


Isso normalmente ocorre quando utilizamos a framework do Jersey. Para corrigir, adicionar nos parâmetros da VM no arquivo :

domain.conf

Localizado em:

JBOSS-HOME/bin


set "JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.jersey.server.impl.cdi.lookupExtensionInBeanManager=true"
Regards


quarta-feira, 31 de maio de 2017

JAVA - JBOSS WILDFLY - Adding multiple last resources is disallowed.

Isso ocorre quando mais de um resource de banco de dados está sendo utilizado na mesma transação. Nesse caso o JBOSS informa o seguinte erro no server.log:

ARJUNA012140: Adding multiple last resources is disallowed. Trying to add LastResourceRecord(XAOnePhaseResource(LocalXAResourceImpl@74bec54d[connectionListener=d3ce980 connectionManager=25b47a05 warned=false currentXid=< formatId=131077, gtrid_length=29, bqual_length=36, tx_uid=0:ffff0a2c28d1:-5a4c1f9a:504689c9:11, node_name=1, branch_uid=0:ffff0a2c28d1:-5a4c1f9a:504689c9:14, subordinatenodename=null, eis_name=unknown eis name >])), but already have LastResourceRecord(XAOnePhaseResource(LocalXAResourceImpl@518d0191[connectionListener=1a05d94a connectionManager=135f1cfe warned=false currentXid=< formatId=131077, gtrid_length=29, bqual_length=36, tx_uid=0:ffff0a2c28d1:-5a4c1f9a:504689c9:11, node_name=1, branch_uid=0:ffff0a2c28d1:-5a4c1f9a:504689c9:13, subordinatenodename=null, eis_name=unknown eis name >]))

Para resolver o problema, será necessário habilitar múltiplos recursos à banco de dados. Adicionar a  propriedade na VM do JBOSS:

<system-properties>
        <property name="com.arjuna.ats.arjuna.allowMultipleLastResources" value="true"/>
</system-properties>
Regards

terça-feira, 16 de maio de 2017

JAVA - NETBEANS - Change language

Instalei o Netbeans e veio com o idioma em português. Particularmente é um pouco estranho, mas é uma opinião pessoal. Prefiro deixar no inglês, o que acaba sendo mais natural.
Para trocar o idioma vá em:

C:\Program Files\NetBeans 8.2\etc

Edite o arquivo:

netbeans.conf

Altere ou inclua os parâmetros em destaque:

netbeans_default_options="-J-client -J-Xss2m -J-Xms32m -J-Dapple.laf.useScreenMenuBar=true -J-Dapple.awt.graphics.UseQuartz=true -J-Dsun.java2d.noddraw=true -J-Dsun.java2d.dpiaware=true -J-Dsun.zip.disableMemoryMapping=true -J-Duser.language=en -J-Duser.region=EN"


Regards

sexta-feira, 24 de junho de 2016

DOS - EXCLUIR ARQUIVO - "O nome do arquivo ou a extensão é muito grande."

Ao tentar excluir um arquivo é exibida a mensagem "O nome do arquivo ou a extensão é muito grande."

Para excluir o arquivo no Prompt do DOS como administrador, entre no diretório até o arquivo e digite:
DIR /X

Como resultado irá aparecer:
24/04/2014  19:30             1.079 PREVIE~3.CLA PreviewResolutionService$SerializeExcepti
onWrapperException.class                      .
24/04/2014  19:30    1.079 PREVIE~3.CLA PreviewResolutionService$SerializeExceptionWrapperException.class

Para excluir, digite o comando:
del PREVIE~3.CLA

Pronto, basta excluir a estrutura de diretórios. Para isso, entre em um nível superior do diretório e digite o comando:
del /f /s /q workspace

Regards

quarta-feira, 27 de janeiro de 2016

ANDROID - A versão 4 não está disponível para qualquer configuração de dispositivo: todos os dispositivos que podem receber a versão 4 receberiam a versão 5

Ao publicar uma aplicação no Google Play, aparece a seguinte mensagem:

  • A versão 4 não está disponível para qualquer configuração de dispositivo: todos os dispositivos que podem receber a versão 4 receberiam a versão 5.

  • Alguns dispositivos estão qualificados para executar vários APKs. Em tais casos, o dispositivo receberá o APK com o código de versão superior.

Solução:
No meu caso, a aplicação contém alguns recursos do OPENGL, nesse caso, é necessário adicionar no AndroidManifest.xml as respectivas texturas:

 <supports-gl-texture android:name="GL_OES_compressed_ETC1_RGB8_texture" />
<supports-gl-texture android:name="GL_OES_compressed_paletted_texture" />
<supports-gl-texture android:name="GL_AMD_compressed_3DC_texture" />
<supports-gl-texture android:name="GL_AMD_compressed_ATC_texture" />
<supports-gl-texture android:name="GL_EXT_texture_compression_latc" />
<supports-gl-texture android:name="GL_EXT_texture_compression_dxt1" />
<supports-gl-texture android:name="GL_EXT_texture_compression_s3tc" />
<supports-gl-texture android:name="GL_IMG_texture_compression_pvrtc" />

Regards




terça-feira, 8 de dezembro de 2015

Android - esconder teclado - hide keyboard on activity start

Em algumas situações é necessário esconder o teclado ao iniciar uma activity, nesse caso, uma das soluções é configurar o arquivo AndroidManifest.xml a tag android:windowSoftInputMode:


 android:windowSoftInputMode="stateHidden"  />

Regards



segunda-feira, 23 de novembro de 2015

ANDROID - "facebook_app_id" is translated here but not found in default locale [ExtraTranslation]

Quando é feito a integração do Android com a API 4.x do Facebook, é necessário traduzir as mensagens para melhorar a comunicação de seu APP. Nesse caso são definidas as mensagens no arquivo string.xml no diretório "values-pt-rBR":

<string name="com_facebook_like_button_not_liked">Curtir</string>
<string name="com_facebook_like_button_liked">Curtiu</string>
<string name="com_facebook_loginview_log_out_button">Encerrar sessão Facebook</string>
<string name="com_facebook_loginview_log_in_button">Entrar</string>
<string name="com_facebook_loginview_log_in_button_long">Conectar-se ao Facebook</string>
<string name="com_facebook_loginview_logged_in_as">Autenticado como: %1$s</string>
<string name="com_facebook_loginview_logged_in_using_facebook">Autenticado com Facebook</string>
<string name="com_facebook_loginview_log_out_action">Sair</string>
<string name="com_facebook_loginview_cancel_action">Cancelar</string>
<string name="com_facebook_loading">Carregando...</string>
<string name="com_facebook_internet_permission_error_title">AndroidManifest Error</string>
<string name="com_facebook_internet_permission_error_message">WebView login requires INTERNET permission</string>
<string name="com_facebook_tooltip_default">New! You\'re in control - choose what info you want to share with apps.</string>
<string name="com_facebook_image_download_unknown_error">Unexpected error while downloading an image.</string>
<string name="com_facebook_share_button_text">Compartilhar</string>
<string name="com_facebook_send_button_text">Enviado</string>

Ao gerar a APK, pode ocorrer o seguinte erro:

Error:(21) Error: "facebook_app_id" is translated here but not found in default locale [ExtraTranslation]

Solução:
Basta definir o locale no resources do idioma onde foram traduzidas as mensagens:
<resources xmlns:tools="http://schemas.android.com/tools" tools:locale="pt-rBR">
...
</resources>


Regards

segunda-feira, 16 de novembro de 2015

ANDROID - REMOVER ACTIVITIES DA PILHA - Remove all the previous activities from the back stack

Em algumas situações é necessário remover as activities que estão na pilha. Nesse caso podemos utilizar os seguintes parâmetros:

Intent intent = new Intent(LoginNovoCidadaoActivity.this, ActionBarDrawerActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);

Nesse caso serão removidas as activities da pilha e redirecionado para a nova activity ActionBarDrawerActivity. Basicamente iremos remover o histórico de activities da pilha.

Regards

quarta-feira, 14 de outubro de 2015

ANDROID - JSON - ERROR - com.google.gson.JsonParseException: The JsonDeserializer

Ao fazer o parse de um JSON, estava ocorrendo o seguinte erro:

com.google.gson.JsonParseException: The JsonDeserializer com.google.gson.DefaultTypeAdapters$CollectionTypeAdapter@3211ceb3 failed to deserialize json object "Ocorreu" given the type java.util.ArrayList<meupackage.MinhaClasse>
            at com.google.gson.JsonDeserializerExceptionWrapper.deserialize(JsonDeserializerExceptionWrapper.java:64)
            at com.google.gson.JsonDeserializationVisitor.invokeCustomDeserializer(JsonDeserializationVisitor.java:92)
            at com.google.gson.JsonDeserializationVisitor.visitUsingCustomHandler(JsonDeserializationVisitor.java:80)
            at com.google.gson.ObjectNavigator.accept(ObjectNavigator.java:101)
            at com.google.gson.JsonDeserializationContextDefault.fromJsonPrimitive(JsonDeserializationContextDefault.java:85)
            at com.google.gson.JsonDeserializationContextDefault.deserialize(JsonDeserializationContextDefault.java:56)
            at com.google.gson.Gson.fromJson(Gson.java:551)
            at com.google.gson.Gson.fromJson(Gson.java:498)
            at com.google.gson.Gson.fromJson(Gson.java:467)
            at com.google.gson.Gson.fromJson(Gson.java:417)
            at meupackage.getJsonIndiceRotatividade(Helper.java:101)
            at meupackage.IndiceRotatividadeFragment.onTaskComplete(IndiceRotatividadeFragment.java:150)
            at meupackage.IndiceRotatividadeTask.onPostExecute(IndiceRotatividadeTask.java:86)
            at meupackage.IndiceRotatividadeTask.onPostExecute(IndiceRotatividadeTask.java:19)
            at android.os.AsyncTask.finish(AsyncTask.java:632)
            at android.os.AsyncTask.access$600(AsyncTask.java:177)
            at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:145)
            at android.app.ActivityThread.main(ActivityThread.java:5942)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1400)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1195)

O problema estava no objeto que estava sendo trafegado. Ele deve obrigatóriamente ser serializável. Nesse caso, basta implementar a interface Serializable no modelo (VO / TO).

Regards




quinta-feira, 24 de setembro de 2015

ANDROID - "location provider requires ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION permission"

Ao utilizar o recurso de GPS e estiver  ocorrendo o erro descrito, significa que faltaram permissões a serem  adicionadas no AndroidManifest.xml:

   
   

Essas permissões serão apresentadas durante o processo de instalação.

Regards

sexta-feira, 18 de setembro de 2015

ANDROID - ANDROID STUDIO - Generating serialVersionUID

Um atalho importante para quem desenvolve em Java é gerar automaticamente o serialVersionUID. O Android Studio não permite gerar (modo default) através do atalho "Alt" + "Insert". Será necessário habilitar o recurso.
Para que esteja disponível na sequencia de atalhos, será necessário fazer algumas configurações na IDE, a saber:

  • Ir até o menu "File->Settings->Plugins"
  • Na busca (Browse repositories) localizar o item GenerateSerialVersionUID
  • Habilitar o item para torná-lo disponível
  • Será necessário reiniciar a IDE

Regards


quinta-feira, 10 de setembro de 2015

JBOSS - WILDFLY - ERRO AO FAZER DEPLOY - UndertowDeploymentInfoService

Ao fazer deploy de um pacote (war ou ear) ocorre o seguinte erro:

JBAS014777:   Services which failed to start:      service jboss.undertow.deployment.default-server.default-host."/project.api".UndertowDeploymentInfoService

Isso ocorre porque o JBOSS não encontrou a Servlet "AppConfig.java". Verifique as configurações no web.xml:

   
        mypackage.m.AppConfig
   
   
        mypackage.m.AppConfig
        /api/*
   
 

Regards



quinta-feira, 9 de julho de 2015

NODEJS - HelloWorld

1-Primeiro vamor criar o arquivo helloworld.js:

var http = require('http');
    http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('Hello Node.JS!');
}).listen(8080);
console.log('Server running at http://localhost:8080/');

2-Rodar o comando no shell:
> node helloworld.js

3-Resultado na console do shell:
Server running at http://localhost:8080/

4-Rodar no browser:
http://localhost:8080/

Pronto, sua primeira aplicação em nodejs está pronta.

Regards




                                              





NODEJS - Instalando no openSuSe


Para instalar o NodeJs a partir da distribuição Linux openSuSe basta acessar o link:

https://software.opensuse.org/package/nodejs



Regards




quinta-feira, 23 de abril de 2015

JAVA - JBOSS - WILDFLY - HABILITAR MODO DEBUG

Para habilitar o debug no JBOSS WILDFLY serão necessários os seguintes passos, a saber:

  • Abrir o arquivo {JBOSS_HOME}/domain/configuration/host.xml
  • Ir até a tag e adicionar os parâmetros em destaque:

    <servers>
        <server name="server-one" group="main-server-group">
<jvm name="default">
<jvm-options>
<option value="-agentlib:jdwp=transport=dt_socket,address=8787,server=y,suspend=n"/>
</jvm-options>
</jvm>
        </server>
    </servers>
  • Efetuar o restart no JBOSS no profile "domain"

Regards