Skip to main content

Posts

About Software Design and Development

When we plan to design a software we need to focus certain things. Here are some important points we can go through. Functional Decomposition: Functional decomposition is natural way to deal with complexity. The challenges with this approach: to dealing with change and bugs originate with changes to code. Low cohesion, tight coupling Focus on function leads to a cascade of changes from which it is difficult to escape. The Problem of Requirements: Requirements always change. Requirements are incomplete. Requirements are usually wrong. Requirements (and users) are misleading. Requirements do not tell the whole story. Deal with Changes(Use Functional Decomposition): Shift responsbility from yourself to...

Builder Pattern : Java Code Example

Builder Pattern Builder Pattern is used when the increase of object constructor parameter combination leads to an exponential list of constructors. It is a solution to the telescoping constructor anti-pattern. Let's describe the pattern by using a sample requirement. Problem: We need to create a class for a Customer in a Bank and need following attributes in the Customer object. {Name, Father's Name, Date Of Birth, Mobile, Email, PAN, Permanent Address, Correspondence Address, Account, Branch} Constraint : Name,Date Of Birth,Account can not be null or empty There are 10 attributes in the objects So there will be total 2^10(1024) possible constructor and It is not practical to write all required constructors. One alternative could be to use Setter method but it will not work if any attribute has final modifier and would be difficult to fulfill the constraint that some attributes can not be null or empty. Now We will see how Builder Design Pattern helps to solve...

How to Create a Namespace in Aerospike Database

                      T his post is about creating a namespace in Aerospike. I could not find any concrete method to create a namespace like create database in MySQL and MongoDB. So I am suggesting a way to create a namespace in Aerospike Database. Step-1: Locate config file aerospike.conf and open it in your favorite editor and make sure you have permission to modify the file. In my system the path of file /etc/aerospike/aerospike.conf (Default in Ubuntu). Here the content of the file. # Aerospike database configuration file. service { user root group root paxos-single-replica-limit 1 # Number of nodes where the replica pidfile /var/run/aerospike/asd.pid service-threads 4 transaction-queues 4 transaction-threads-per-queue 4 proto-fd-max 15000 } logging { # Log file must be an absolute path. file /var/log/aerospike/aerospike.log { context any info } } net...

Books : Every Computer Science Student Should Read Before Leaving College

Awesome books for Computer Science students: =================================================================== ------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------ -------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------    ------------------------------------------------------------------------------------------------------------------------  -----------------------------------------------------------------------------------------------------------...

com.mongodb.MongoCommandException: Command failed with error 18: 'Authentication failed.' on server

If you are trying to connect Mongo DB Server and it insanely throwing following error. com.mongodb.MongoTimeoutException : Timed out after 1000 ms while waiting for a server that matches ReadPreferenceServerSelector{readPreference=primary}. Client view of cluster state is {type=UNKNOWN, servers=[{address=192.168.1.10:27010, type=UNKNOWN, state=CONNECTING, exception={ com.mongodb.MongoSecurityException: Exception authenticating MongoCredential {mechanism=null, userName='user123', source='admin', password=<hidden>, mechanismProperties={}}}, caused by {com.mongodb.MongoCommandException: Command failed with error 18 : 'Authentication failed.' on server 192.168.1.10:27010 . The full response is { "ok" : 0.0, "code" : 18, "errmsg" : "Authentication failed." }}}] If you start looking the error content First you encounter with Timeout Exception which may mislead you. It is basically an authentication error. I...

WARN AEROSPIKE_ERR_CLIENT Socket write error: 111

If you are just typing aql on terminal and following error throwing while your aerospike server has been started successfully. WARN AEROSPIKE_ERR_CLIENT Socket write error: 111 It may happen because you had connected some other server before, Now you are trying to connect to your localhost or different server. To remove the above error just type full command: aql -h 127.0.0.1 -p 3000                           ( put server ip in case of other server rather than localhost) instead of jus aql.

com.aerospike.client.AerospikeException$Serialize: Error Code -1:

If you are trying to save a  whole simple java object into Aerospike database and your are getting the following annoying errors. com.aerospike.client.AerospikeException$Serialize: Error Code -1: java.io.NotSerializableException: com.sangnak-science. Person at com.aerospike.client.Value$BlobValue.estimateSize(Value.java:977) at com.aerospike.client.command.Command.estimateOperationSize(Command.java:767) at com.aerospike.client.command.Command.setWrite(Command.java:76) at com.aerospike.client.command.WriteCommand.writeBuffer(WriteCommand.java:56) at com.aerospike.client.command.SyncCommand.execute(SyncCommand.java:47) at com.aerospike.client.AerospikeClient.put(AerospikeClient.java:339) at com.yatra.Aerospike.main(Aerospike.java:57) Caused by: java.io.NotSerializableException: com.yatra.Person at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348) at com.aerospike.cli...