When building a new Java project I ended up facing some certificate error. I resolved it by using this article which is quite well written.
ASCII Art
Found a good tool to generate ASCII Art for command line applications. I found the Doom font to be good.
Good Tool For Conversion Requirements of Coders
I was looking for a way to convert some XML data to JSON a I stumbled about https://codebeautify.org/ which did exactly what I wanted. It seems to have a lot of other toolkit which can be used for different types of conversion which a programmer can need.
ssh_exchange_identification: read: Connection reset by peer
I recently upgraded my Mac Desktop and I noticed a strange problem that I was not able to SSH into my desktop from my laptop. I ultimately found out that the SSH setup that came with MacOS was having some issue as when I did ssh user@localhost on the desktop I got the same error:
ssh_exchange_identification: read: Connection reset by peer
I ended up tailing the system log using the following command:
sudo tail -f /var/log/system.log
I observed the following entries in the log whenever a SSH was attempted.
com.apple.xpc.launchd[1] (com.openssh.sshd.[UUID][NUM]): Service exited with abnormal code: 1
It was clear that there was setup issue with the SSH that came with default MacOS installation. So I decided to spawn a separate SSH instance and watch it’s log:
sudo /usr/sbin/sshd -d -p 2222
This command showed up a lot of issues related to file permissions.
Permissions 0644 for '/etc/ssh/ssh_host_dsa_key' are too open.
Permissions 0644 for '/etc/ssh/ssh_host_ecdsa_key' are too open.
Permissions 0644 for '/etc/ssh/ssh_host_ed25519_key' are too open.
I fixed these permission issues by changing their permission to 400:
sudo chmod 400 /etc/ssh/ssh_host_dsa_key
sudo chmod 400 /etc/ssh/ssh_host_ecdsa_key
sudo chmod 400 /etc/ssh/ssh_host_ed25519_key
After this change the following command succeeded and I was able to do successful SSH connection to port 2222.
sudo /usr/sbin/sshd -d -p 2222
So I killed this process and decided to restart SSH:
sudo launchctl unload /System/Library/LaunchDaemons/ssh.plist
sudo lsof -i:22
echo $?
sudo launchctl load /System/Library/LaunchDaemons/ssh.plist
Once SSHD was restarted I could successfully do logins using ssh user@localhost from Desktop as well as remote login via SSH from my laptop.
Amazon Corretto – Open JDK
Read through a DZone article which talks about a JDK released by Amazon called Amazon Corretto. This is a good news for Java community. It is a production ready JDK backed by Amazon and has been tested heavily by them. This is really an exciting development.
Prettify JSON on Terminal
I love using curl command on my Mac terminal to debug my REST endpoints. However the REST call JSON output used to come in a blob of text which required further formatting in an Editor like Visual Studio Code. To allay this problem I ended up installing “jsonpp” using homebrew.
brew install jsonpp
So now I just pipe the output of my curl command to the jsonpp program and I get a fully formatted JSON.
$ curl http://localhost:8080/test | jsonpp
{
"year": 2018,
"month": 2,
"worked": 18,
"leaves": 2
}
Curl Command New Line Post Output
I like to use curl instead of UI tools like Postman for debugging my RESTful web services traffic whenever possible. I however didn’t like my output being messed up by the bash prompt being suffixed to the output. Something like the following:
$ curl -H "$auth_token" http://localhost:8080/xyz/abc-efg ["-","A","B","C","D","E"]$
So basically what I needed was to have a new line forced after the curl output. A quick search on internet yielded this article. So I executed the following command on my terminal.
$ echo '-w "\n"' >> ~/.curlrc
After doing this when I execute the same curl command I get the following output.
$ curl -H "$auth_token" http://localhost:8080/xyz/abc-efg ["-","A","B","C","D","E"] $
So now the bash prompt is actually coming on a new line by default!
Validating Signature in PDF documents in Acrobat Reader
I received a digitally signed document from a trusted source. However when I proceeded to take a print it came out with “Signature Not Verified” in place of the signature field. This was not going to work so I did some googling and found out this link. It basically allowed me to validate the signature and take a printout with “Signature Valid” in place of the digital signature.
Leveraging Jackson to convert Date to JSON
I used this link to learn about conversion of java.util.Date object to JSON notation which was understandable by JavaScript and Human readable in network tab.
Triggering download of file using JavaScript
I recently needed to write a small piece of download code. So you pass in the ID of the document to a REST API and it should give you back a blob of the actual file. The problem however is how to actually save this blob of binary data into a local file. So a quick Googling threw up some interesting links which I finally used to finalize my solution.