quinta-feira, 15 de outubro de 2020

Como criar mais de uma conta no Twitter com o mesmo email do Gmail

  



Mais de uma conta no Twitter com o mesmo email do Gmail

Existe um truque para criar mais de uma conta no Twitter com e mesmo email do Gmail: só adcione um ponto no seu endereço de email.

Por exemplo, considerando que o Gmail é firstnamelastname@gmail.com, você pode usar muitas combinações:
  • firstname.lastname@gmail.com
  • first.namelastname@gmail.com
  • firstnamelast.name@gmail.com
O Gmail ignora os pontos e envia os emails do Twitter para a sua conta original firstnamelastname@gmail.com.

Espero que tenha ajudado!



sexta-feira, 9 de outubro de 2020

Erro na instalação do Azure PowerShell - Nuget not installed

Se você tiver o error abaixo quando instalar o Azure PowerShell, veja como corrigir:


PS C:\windows\system32> Install-Module -Name Az -AllowClobber -SkipPublisherCheck


NuGet provider is required to continue

PowerShellGet requires NuGet provider version '2.8.5.201' or newer to interact with NuGet-based repositories. The NuGet

 provider must be available in 'C:\Program Files\PackageManagement\ProviderAssemblies' or

'C:\Users\XXXXXXXXX\AppData\Local\PackageManagement\ProviderAssemblies'. You can also install the NuGet provider by

 running 'Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force'. Do you want PowerShellGet to install

and import the NuGet provider now?

[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"): Y

WARNING: Unable to download from URI 'https://go.microsoft.com/fwlink/?LinkID=627338&clcid=0x409' to ''.

WARNING: Unable to download the list of available providers. Check your internet connection.

PackageManagement\Install-PackageProvider : No match was found for the specified search criteria for the provider

'NuGet'. The package provider requires 'PackageManagement' and 'Provider' tags. Please check if the specified package

has the tags.

At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1:7468 char:21

+ ...     $null = PackageManagement\Install-PackageProvider -Name $script:N ...

+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    + CategoryInfo          : InvalidArgument: (Microsoft.Power...PackageProvider:InstallPackageProvider) [Install-Pac

   kageProvider], Exception

    + FullyQualifiedErrorId : NoMatchFoundForProvider,Microsoft.PowerShell.PackageManagement.Cmdlets.InstallPackagePro

   vider


PackageManagement\Import-PackageProvider : No match was found for the specified search criteria and provider name

'NuGet'. Try 'Get-PackageProvider -ListAvailable' to see if the provider exists on the system.

At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1:7474 char:21

+ ...     $null = PackageManagement\Import-PackageProvider -Name $script:Nu ...

+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    + CategoryInfo          : InvalidData: (NuGet:String) [Import-PackageProvider], Exception

    + FullyQualifiedErrorId : NoMatchFoundForCriteria,Microsoft.PowerShell.PackageManagement.Cmdlets.ImportPackageProv

   ider


WARNING: Unable to download from URI 'https://go.microsoft.com/fwlink/?LinkID=627338&clcid=0x409' to ''.

WARNING: Unable to download the list of available providers. Check your internet connection.

PackageManagement\Get-PackageProvider : Unable to find package provider 'NuGet'. It may not be imported yet. Try

'Get-PackageProvider -ListAvailable'.

At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1:7478 char:30

+ ... tProvider = PackageManagement\Get-PackageProvider -Name $script:NuGet ...

+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    + CategoryInfo          : ObjectNotFound: (Microsoft.Power...PackageProvider:GetPackageProvider) [Get-PackageProvi

   der], Exception

    + FullyQualifiedErrorId : UnknownProviderFromActivatedList,Microsoft.PowerShell.PackageManagement.Cmdlets.GetPacka

   geProvider


Install-Module : NuGet provider is required to interact with NuGet-based repositories. Please ensure that '2.8.5.201'

or newer version of NuGet provider is installed.

At line:1 char:1

+ Install-Module -Name Az -AllowClobber -SkipPublisherCheck

+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    + CategoryInfo          : InvalidOperation: (:) [Install-Module], InvalidOperationException

    + FullyQualifiedErrorId : CouldNotInstallNuGetProvider,Install-Module


Abra o Windows PowerShell como admnistrador e rode o comando abaixo:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Deixe nos comentários se esse comando resolveu o problema.
Fonte: https://stackoverflow.com/questions/16657778/install-nuget-via-powershell-script

segunda-feira, 5 de outubro de 2020

Tutorial passo-a-passo: Aplicação Hello World em Springboot com Java 8 e Lombok

Aplicação Hello World em Springboot com Java 8 e Lombok

Objetivo

Neste tutorial, vamos construir uma aplicação usando Springboot, Java 8 e Lombok.


Pré-requisitos:

  • Java JDK 8
  • Maven
  • IntelliJ IDEA

Github:

O código está no Github, caso queria comparar o resultado final: https://github.com/ravasconcelos/springboot-tutorials/tree/main/1-springboot-hello-world .


Mão na massa!

Crie o projeto:

Abra o IntelliJ IDEA e clique em Create New Project.



Configurações do Projeto:

Selecione JDK 8 em "Project SDK". Eu estou usando uma JDK 11, mas é melhor não misturar.
Escolha o "starter service URL" padrão.



Use estas informações:
  • Group: com.ravasconcelos
  • Artifact: hello-world
  • Type: Maven Project
  • Language: Java
  • Packaging: Jar
  • Java Version: 8
  • Name: hello-world
  • Description: A Hello World REST Service using Java 8 and Lombok.





Selecione as bibliotecas que você quer incluir no projeto.

Em "Developer Tools", escolha: 
  • Spring Boot DevTools
  • Lombok
  • Spring Configuration Processor



Em "Web", escolha: 
  • Spring Web Services



Defina "Project name" e "location". Clique em "Finish".


Projeto criado:

O projeto é criado já com a classe HelloWorldApplication.

O projeto vai ter essa estrutura:



Criando o Controller e o Model:

Vamos criar o package para a classe controller.

Clique com o botão direito no pacote com.ravasconcelos.helloworld package. Selecione "New", e depois "Package".

Nomeie-o "controllers".


Crie a classe controller clicando com o botão direito no pacote "controllers".

Selecione "New" e depois "Java Class".

Nomeie a classe como HelloWorldController.



A classe criada fica assim:




Siga os mesmo passos para criar a classe model.

Nomeie o pacote como "model" e a classe "HelloWorldModel".




Use as anotações Data e Builder do Lombok.

Crie os campos:
  • greeting
  • firstName
  • lastName
Vai ficar assim:



Vamos de volta ao controller e vamos colocar a anotação RestController.

Crie o método "getGreeting" e adicione a anotação "GetMapping".

O retorno do método é o HelloModel populado com "Hello" como greeting e os nomes recebidos nos parâmetros de entrada.



Executando a aplicação:

Acredite ou não, é só isso mesmo.

Clique no botão play pra rodar.



Se você ver a mensagem abaixo é porque deu tudo certo.


Teste:

Use Postman, curl ou qualquer outro cliente de HTTP para mandar uma requisição GET passando firstName e lastName como query parameters.

A responsta é o JSON payload que criamos na classe HelloModel. 



Conclusão:

Usando Springboot você pode fazer protótipos e aplicações REST muito rapidamente com as bibliotecas do Spring Framework.

Se este tutorial te ajudou de alguma maneira, deixe um comentário.

Se algum dos passos não funcionou ou se precisar de ajuda, deixe uma mensagem que vou fazer o meu melhor para te ajudar.

segunda-feira, 6 de abril de 2015

Como remover diretórios recursivamente no Windows

Não existe um comando no Windows que procure um diretório recursivamente e, caso ele exista, o apague.

O script abaixo faz exatamente isso:

for /r %f in (bin) do if exist "%f" rd /s /q "%f"

Se ele for executado a partir de um diretório de projetos, por exemplo c:\projetos, ele vai procurar recursivamente uma pasta "bin" e caso ela exista, a pasta bin e todo o seu conteúdo serão removidos.

Basta copiar essa linha e colar no Prompt (cmd.exe) do Windows.

Isso é útil caso precise fazer backup de um diretório de projetos muito grande e não queira salvar os binários.

Usem o script por sua conta e risco. Não me responsabilizo por nenhuma perda por conta de arquivo apagado por engano.

Faça um teste do script em um diretório dummy antes de aplicar do diretório real.

Caso queira que o script peça a confirmação antes de remover a pasta, remova o \q.

quarta-feira, 12 de dezembro de 2012

Passei! 1Z0-895 Java Platform, Enterprise Edition 6 Enterprise JavaBeans Developer Certified Expert Exam

Olás,

Passei na certificação de EJB Developer da Oracle dia 07/12/12.

Estudei pelo livro EJB 3 In Action (http://www.amazon.com/EJB-3-Action-Debu-Panda/dp/1933988347). Não precisa estudar os capítulos referentes a JPA. O problema desse livro é que ele é sobre EJB 3 e não 3.1, logo, é necessário estudar os tópicos do EJB 3.1 por fora.

Não achei esse livro muito bom não, mas dá para pegar os conceitos básicos e não deixa de ser um bom ponto de partida.

Após ler o livro comecei a fazer mocks. Utilizei o único que achei, o da Enthuware (http://enthuware.com/index.php/mock-exams/oracle-certified-expert/oceejbd-ejb-6). Ele é excelente e muito fiel a prova.

Conforme as dúvidas iam surgindo durante o mock eu sanava pela JSR (http://jcp.org/en/jsr/detail?id=318). A JSR não é boa para ser usado como Livro Texto (fonte inicial de aprendizado), pois não é um documento didático (não se espera que seja mesmo), mas é a melhor fonte de informações para dúvidas pontuais.

O método de estudo que adotei foi aprender por repetição. Fiz o mock inicial e os quatro mocks standards. Para cada mock eu fazia a primeira vez, depois revisava todas as questões e depois refazia o mock. A primeira vez a nota sempre era de baixa para média, mas na repetição a nota sempre era muito alta.

O tempo que gasto para fazer o mock pela primeira vez é por volta de 2 horas. A revisão precisa de 3 a 4 horas, pois é quando você realmente estuda. A repetição do mock demora 1 hora, pois você já está dominando os assuntos. É importante não decorar as respostas, mas sim conseguir explicá-las.

Para cobrir todos os tópicos da prova é necessário fazer os 4 mocks standards porque a distribuição das questões não está 100%. Tem mock que cai mais um assunto e do que outro.

Quando terminei de fazer os mocks, refiz as questões que eu nunca acertei (nem na primeira e nem na repetição) para todos os mocks. Tem uma funcionalidade para isso no software da Enthuware. Acreditem ou não, eu consegui não acertar 3 questões mesmo após esse último teste, mas a maioria eu acertei.

Passei com 90% e fiquei satisfeito com o tempo que gastei para estudar.

Boa sorte nos estudos.

quarta-feira, 31 de outubro de 2012

Erro de configuração: "java.net.ConnectException: Connection refused"

Ás vezes um descuido ao editar um arquivo de configuração pode causar um transtorno enorme, principalmente quando o projeto está em fase de integração e com o cronograma apertado.

Como um exemplo prático, um sistema passou a não conseguir conectar mais com a base de dados de uma hora para outra, sem motivo aparente. A exceção era:

Exception in thread "main" org.springframework.transaction.CannotCreateTransactionException: Could not open JPA EntityManager for transaction; nested exception is javax.persistence.PersistenceException: org.hibernate.exception.LockAcquisitionException: Cannot open connection
at org.springframework.orm.jpa.JpaTransactionManager.doBegin(JpaTransactionManager.java:375)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:374)
at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:263)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:101)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy18.startBeh(Unknown Source)
at br.com.beh.Main.main(Main.java:58)
Caused by: javax.persistence.PersistenceException: org.hibernate.exception.LockAcquisitionException: Cannot open connection
at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:614)
at org.hibernate.ejb.TransactionImpl.begin(TransactionImpl.java:41)
at org.springframework.orm.jpa.DefaultJpaDialect.beginTransaction(DefaultJpaDialect.java:70)
at org.springframework.orm.jpa.vendor.HibernateJpaDialect.beginTransaction(HibernateJpaDialect.java:52)
at org.springframework.orm.jpa.JpaTransactionManager.doBegin(JpaTransactionManager.java:330)
... 7 more
Caused by: org.hibernate.exception.LockAcquisitionException: Cannot open connection
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:110)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:52)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:449)
at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167)
at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:142)
at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:85)
at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1353)
at org.hibernate.ejb.TransactionImpl.begin(TransactionImpl.java:38)
... 10 more
Caused by: java.sql.SQLException: The Network Adapter could not establish the connection
at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:70)
at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:133)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:199)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:480)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:413)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:508)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:203)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:33)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:510)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:154)
at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriverManager(DriverManagerDataSource.java:174)
at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriver(DriverManagerDataSource.java:165)
at org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnectionFromDriver(AbstractDriverBasedDataSource.java:149)
at org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnection(AbstractDriverBasedDataSource.java:119)
at org.hibernate.ejb.connection.InjectedDataSourceConnectionProvider.getConnection(InjectedDataSourceConnectionProvider.java:46)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446)
... 15 more
Caused by: oracle.net.ns.NetException: The Network Adapter could not establish the connection
at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:328)
at oracle.net.resolver.AddrResolution.resolveAndExecute(AddrResolution.java:421)
at oracle.net.ns.NSProtocol.establishConnection(NSProtocol.java:630)
at oracle.net.ns.NSProtocol.connect(NSProtocol.java:206)
at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:966)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:292)
... 27 more
Caused by: java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:529)
at java.net.Socket.connect(Socket.java:478)
at java.net.Socket.<init>(Socket.java:375)
at java.net.Socket.<init>(Socket.java:189)
at oracle.net.nt.TcpNTAdapter.connect(TcpNTAdapter.java:127)
at oracle.net.nt.ConnOption.connect(ConnOption.java:126)
at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:306)
... 32 more

Depois de várias horas debugando, descobrimos que esse erro foi causado por um erro na edição do database.properties, na string de conexão com a base.

A propriedade estava assim:
database.url = jdbc:oracle:thin:<IP>:1521:BASEDEDADOS

Para uma mente apressada e estressada é fácil não perceber que faltou um arroba (@) antes do IP. O correto é:
database.url = jdbc:oracle:thin:@<IP>:1521:BASEDEDADOS


terça-feira, 28 de agosto de 2012

Como descobrir a PK de uma tabela no Oracle

Use a query abaixo para descobrir a Primary Key (PK) de uma tabela no Oracle:


SELECT 
  B.COLUMN_NAME 
FROM 
  ALL_CONSTRAINTS A, 
  ALL_CONS_COLUMNS B
WHERE 
  A.CONSTRAINT_NAME=B.CONSTRAINT_NAME AND 
  A.OWNER=B.OWNER AND
  A.TABLE_NAME='<TABLE_NAME>' AND 
  A.CONSTRAINT_TYPE='P';