BrowserSync vs LiveReload productivity boosters comparison

BrowserSync and LiveReload both are the cool tools that are aimed to improve the development workflow i.e., productivity of front-end development team. In summary, they both reload your browser automatically when you change some css or javascript or HTML - let's say any resource.

The main feature that we get from BrowserSync is : it has capacity of live reloading all your test browsers. It doesn't has constraint to one browser, meaning : it can reflect your code changes on every browser/device/emulator. The new devices/browsers can be added/tested with no additional configurations.

 

Pros and Cons of BrowserSync with LiveReload:

Pros :
  • Works across multiple devices at the same time
  • Works with all browsers and devices
    • No configuration/plugin needed in each browser
  • Synchronized actions across all browsers
    • form input, page scroll, navigation all gets synchronized across the browsers
  • Works with all browsers and devices
Con :
  • Initial configuration might be a little tricky
    • npm, grunt or gulp etc needs to be configured and the dependencies might give some problems to configure

 

Configuring Lombok on IntelliJ - Installation of Lombok plugin

How to install/configure Lombok plugin on IntelliJ IDEA :

Steps :

1) Installation 
Using IDE built-in plugin system on Windows:
  • File > Settings > Plugins > Browse repositories... > Search for "lombok" > Install Plugin
Using IDE built-in plugin system on MacOs:
  • Preferences > Settings > Plugins > Browse repositories... > Search for "lombok" > Install Plugin
Manually: 2) Restart IDE.
3) Enable Annotation Processing
 In your project: Click Preferences, "Build, Execution, Deployment", Compiler, Annotation Processors. Click Enable Annotation Processing
Enabling Annotation Processing on IntelliJ IDEA

Optional) IntelliJ and Eclipse compiler
If you're using Eclipse compiler with lombok, try this setup:
  • install plugin (above process)
  • change compiler setting:
  •  > Compiler > Java Compiler > Use Compiler: Eclipse
  •  > Compiler > Annotation Processors > Enable annotation processing: checked (default configuration)
  •  > Compiler > Additional build process VM options: -javaagent:lombok.jar

References :

MongoException$DuplicateKey: E11000 duplicate key error index - @Version

Obviously, we get this exception when we try to update/insert a document(record) with duplicate key field in MongoDB collection(table). There exists several explanation on this:

But, I was getting this error in a different scenario:

1) I already had a model User and data in it. Sample data were being created using mongeez change log file
2) Later, I added a new auditing field @Version to the entity definition.
3) When updating a User record, I got the above exception ( MongoException$DuplicateKey: E11000 duplicate key error index )

User entity :

@Document(collection = "user")
public class User implements Serializable {

    @NotNull    @Size(min = 5, max = 100)
    @Id    private String id;

    @Version    Long version; // THIS WAS ADDED LATER
    
    @Size(max = 50)
    @Field("first_name")
    private String firstName;
    @Field("last_name")
    private String lastName;

    @Email
    private String email;

 

Solution :

I added a property version and initialized to 1 in all documents


Mongo Change Log  : Using mongeez

<mongoChangeLog>
    <changeSet changeId="ChangeSet-2" author="gtiwari">
        <script>
            db.user.insert(
            {
                "_id" : "user1",
                "first_name": "",
                "last_name": "User 1",
                "email": "user1@localhost",
                "version":1  --> I UPDATED ALL user RECORDS'S VERSION = 1 TO SOLVE THIS
            });