Monday, February 12, 2018

Presearch: Decentralized Search Engine

Presearch is an open, decentralized search engine, powered by the community, that rewards community members with Presearch Tokens for their usage, contribution to, and promotion of the platform.

Watch the intro video for Presearch:

Nebulas: Decentralized Search Framework

Nebulas is a decentralized search framework that allows to search for Blockchain Data. It empowers you to create your first Blockchain Search Engine.

Nebulas decentralized search network
Nebulas

Monday, January 29, 2018

Top websites to earn Steem coins

Cryptocurrency is a trend in nowadays and there are platforms that allow you to create contents and earn Steem, a digital cryptocurrency like Bitcoin, based on the blockchain technology.

Here are some websites where you can earn free Steem:

Steemit.com and Busy.org are both blogging and decentralized social network media platforms, based on the blockchain technology. These two are comparable to trains, that ride the same railroad (the steem blockchain). Steemit is the first, the old train, while Busy is the new fast train. Basically, the difference is the interface and some features, like the "wallet" that has more info in Busy than in Steemit, the post Editor that allows to create nice posts in Busy, Steemit has a night mode... The content that you create on Steemit also appears in Busy and vice-versa. Here you can earn by creating contents (blog posting), and upvoting other blog posts (aka curation). Just like Facebook or Reddit, but paid to you.
Then there are some bots for allowing your posts to be upvoted, in trade of a small donation, like the @minnowbooster.
The @originalworks bot can be called from any comment, for the declaration of original work and earn some upvotes. This one is free.

SteemAuto is an automated platform for scheduling posts, automated wallet claimings rewards and automated vote for your favorite author.


SteemitChat is a dedicated steemit chat.

Zappl claims to be the "Twitter of Steemit"

Steepshot is the blockchain-powered censorship-resistant app that you can use to share cool pictures with your friends, curate and comment their photos and get crypto rewards for your activity.

Steemit Worldmap finds and shares blog posts with others from all over the world. To add your post to this map, add the following to the post (replace the coordinates):
[//]:# (!steemitworldmap 3.903346 lat 73.357944 long  d3scr)

Steemspot allows you to discover other steemians around the world

Dmania is the decentralized 9GAG for Steem. Make money by posting, commenting and upvoting their favourite memes, funny pictures and videos.

DecentMemes allows you to create memes and post it directly to steem platform.

Dtube is the decentralized Youtube for Steem. Here you earn by share, upvote and posting videos.

Utopian.io is the platform where open source contributions are getting paid, also using the steem blockchain technology

Dlive.io well, the name says it all... for watching/publishing live streems integrated with steem  platform.

DSound allows you to upload, listen and discover music stored on top of the IPFS Network. It uses STEEM blockchain as a decentralized database, so you can earn Steem from it, by upvoting or posting or reposting contents.

More info...

  • The Steem blue paper, can be found in Steem.io
  • The Block Explorer can be found in Steemd.com. Here, if the url is used as https://steemd.com/@yourUserName, you will find details about your user account, such as the Voting Power.
  • The Steem Developer Portal can be found in Developers.steem.io
  • SteemTools lists the steem related apps
  • Steem.supply tracks account value and the next payouts.
  • SteemReports reports about the steem blockchain
  • SteemViz watch the blockchain live
  • SteemViz Pending Payout to check pending payouts
  • Rating for ratrings about users, posts, etc. Usage: http://rating.mysteemit.xyz/en/steem/@yourUserName
  • Slider for showing your posts in a slider
  • SteemVoter bot for automatic voting







Monday, January 8, 2018

Solving "JPA Project Change Event Handler (waiting)" annoying message from Eclipse

I'm using Eclipse Oxygen IDE and I'm always getting this annoying message "JPA Project Change Event Handler (waiting)" after saving a file, but I'm not using JPA in my project.

I tried to turn off the JPA validators under Preferences, with no success and the message kept appearing. Now I've found out that the guilty for the message appearing is the Dali/JPT plugin.
Since I do not need this plugin, I uninstalled it from the "Preferences" > "Install/Update"> then click again in the "Uninstall or update" link under that tab and finally I've selected, from the "Installed Software", the "Dali Java Persistence Tools - JPA Support" entry. Then I uninstallled it.

Problem solved!

Monday, November 20, 2017

Solving SLF4J: Class path contains multiple SLF4J bindings.

Problem:
While running unit tests, if you ever find these warnings, logged with INFO...

SLF4J: Class path contains multiple SLF4J bindings.
[INFO] SLF4J: Found binding in [jar:file:/C:/apache-maven-3.3.3/mvn.release.repo/org/slf4j/slf4j-log4j12/1.7.2/slf4j-log4j12-1.7.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
[INFO] SLF4J: Found binding in [jar:file:/C:/apache-maven-3.3.3/mvn.release.repo/org/slf4j/slf4j-nop/1.7.2/slf4j-nop-1.7.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
[INFO] SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
[INFO] SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]

The solution for fixing this is....
Use the maven surefire plugin to exclude the org.slf4j:slf4j-log4j12 usage during tests (slf4j-nop-1.7.2 is only used during tests)

pom.xml extract:

<build>
  <plugins>
      <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <configuration>
              <classpathDependencyExcludes>
                 <classpathDependencyExcludes> org.slf4j:slf4j-log4j12 </classpathDependencyExcludes>
              </classpathDependencyExcludes>
   </configuration>
        </plugin>
    </plugins>
</build>
<dependencies>    <dependency>         <groupId>org.slf4j</groupId>         <artifactId>slf4j-api</artifactId>     </dependency>     <dependency>         <groupId>org.slf4j</groupId>         <artifactId>slf4j-nop</artifactId>         <version>1.7.2</version>         <scope>test</scope>     </dependency>   <dependency>

Friday, November 17, 2017

Java Unit Test Frameworks

I love writting unit tests for my code. It makes it easy to test code that is very hard to test in a running system, just for checking the behavior of certain implementations. Besides that, is useful when trying to refactor some code, so we can assure that the behavior is not broken.
Well, I'll show you the java unit test frameworks that I currently use...

Junit



The JUnit Platform serves as a foundation for launching testing frameworks on the JVM
JUnit 5 user guide is available as documentation.

Nice features:
Parameterized tests make it possible to run a test multiple times with different arguments.
Supports annotations.

E.g.
import org.junit.*;

public class TestXXX {
    @BeforeClass
    public static void setUpClass() throws Exception {
        // Code executed before the first test method
    }

    @Before
    public void setUp() throws Exception {
        // Code executed before each test
    }
    @Test
    public void testOneThing() {
        // Code that tests one thing
    }
    @After
    public void tearDown() throws Exception {
        // Code executed after each test 
    }
 
    @AfterClass
    public static void tearDownClass() throws Exception {
        // Code executed after the last test method 
    }
}

EasyMock



EasyMock provides dynamically generated Mock objects (at runtime), without having to implement them.
Can be used in conjunction with Junit.

E.g.
public class XXXTest extends TestCase {

    public void tesComputeValue(){
        ClassUnderTest testObject = new ClassUnderTest();
        ClassToMock mock = EasyMock.createMock(ClassToMock.class);
        EasyMock.expect(mock.getSomething()).andReturn("Hello");
        EasyMock.replay(mock);
        assertEquals("Hello", testObject.saySomething(mock));
    }
}

PowerMock


PowerMock is an extension to both Mockito and EasyMock that allows mocking of static methods, constructors, final classes and methods, private methods, removal of static initializers and more.
Allows the usage of the beneficts of PowerMock and the usage of Mockito to setup and verify expectations by using PowerMockito.

E.g.
@RunWith(PowerMockRunner.class)
@PrepareForTest(ClassUnderTest.class)
public class XXXTest {
 
  private ClassToMock mock;
  private ClassUnderTest testObject;

  @Test
  public void tesComputeValue() {
    mock = PowerMockito.mock(ClassToMock.class);
    PowerMockito.when(mock.getSomething()).thenReturn("Hello");
    testObject = new ClassUnderTest(mockUserService);
    assertEquals("Hello", testObject.saySomething());
  }
}

Mockito


Mockito allows to verify the behavior of the system under test without establishing expectations beforehand, attempting to eliminate the expect-run-verify pattern, so the coupling is minimized.
Can be used in conjunction with Junit.

E.g.
public class XXXTest {
   
  private ClassToMock mock;
  private ClassUnderTest testObject;
   
   @Before
   public void setUp() {
      mock = mock(ClassToMock.class);
      testObject = new ClassUnderTest(mock);
   }
   
   @Test
   public void testComputeValue() throws Exception {
      when(mock.getSomething(any(String.class))).thenReturn("Hello");
      testObject.saySomething();
      verify(mock).getSomething(any(String.class));
   }
}

Nice features:
Can define the behavior of the same method call to produce different results, in the same test.

More...

More java unit tests frameworks can be found in this wikipedia listing.


Monday, November 14, 2016

OCA/OCP Java 8 Programmer Study Guide

Exam 1Z0-808: OCA Java SE 8 Programmer I
Duration: 150 minutes
Number of Questions: 77
Passing Score: 65%

Resources:
Exam Topics, Oracle
Sample Questions, Oracle

Exam 1Z0-809: OCP Java SE 8 Programmer II
Duration: 150 minutes
Number of Questions: 85
Passing Score: 65%
Exam Topics, Oracle
Sample Questions, Oracle

Resources:
Online Book "Java 8 Programmer II Study Guide", Esteban Herrera

Exam 1Z0-810: Upgrade to Java SE 8 OCP from Java SE 7 OCP
Duration: 150
Number of Questions: 81
Passing Score: 65%
Exam Topics, Oracle
Sample Questions, Oracle

Resources:
Mikalai Zaikin Upgrade Guide
Notes for 1Z0-810

Exam 1Z0-813: Upgrade to Java SE 8 OCP ( Java SE 6 and all prior versions)
Duration: 130 minutes
Number of Questions: 60
Passing Score: 63%
Exam Topics, Oracle
Sample Questions, Oracle

Java 8 Books:
Other Java 8 Resources: