<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1019498060997427546</id><updated>2026-03-27T19:24:05.999-04:00</updated><category term="Coding"/><category term="Java"/><category term="Linux"/><category term="Internet"/><category term="Unix"/><category term="Google"/><category term="Blogging"/><category term="Deals"/><category term="Ubuntu"/><category term="Android"/><category term="Restaurants"/><category term="SQL"/><category term="Finance"/><category term="Magento"/><category term="HP TouchPad"/><category term="webOS"/><category term="Oracle"/><category term="PHP"/><category term="Vibrant"/><category term="World"/><category term="E-Commerce"/><category term="New York"/><category term="Shell Scripts"/><category term="Spring"/><category term="ASP"/><category term="Brother MFC 240C"/><category term="Dell Vostro"/><category term="Drupal"/><category term="EJB"/><category term="Frameworks"/><category term="Google Voice"/><category term="India"/><category term="J2EE"/><category term="JavaScript"/><category term="ObiTalk"/><category term="Productivity"/><category term="Shopping Cart"/><category term="Software Business Model"/><category term="XSane"/><category term="Amazon"/><category term="Awk"/><category term="BlackBerry"/><category term="CSS"/><category term="Cloud"/><category term="Cooking"/><category term="Eclipse"/><category term="HTML"/><category term="Hibernate"/><category term="IIS"/><category term="Kindle"/><category term="MongoDB"/><category term="New Year resolution"/><category term="ReCaptcha"/><category term="Sed"/><category term="Sybase"/><category term="Windows"/><category term="jQuery"/><category term="Ajax"/><category term="Barry"/><category term="Customer Service"/><category term="Cygwin"/><category term="EasyMock"/><category term="Edison NJ"/><category term="Entrepreneurship"/><category term="Fun Facts"/><category term="Government"/><category term="Grep"/><category term="HP DV4T"/><category term="Hardware"/><category term="Intel Atom"/><category term="JBoss"/><category term="JUnit"/><category term="Kutchi"/><category term="Logitech QuickCam"/><category term="MSSQL"/><category term="MariaDB"/><category term="Maven"/><category term="Mobile OS"/><category term="Movies"/><category term="MySQL"/><category term="OSS"/><category term="Perl"/><category term="RSync"/><category term="Rockbox"/><category term="SQuirreL"/><category term="Sansa e250"/><category term="Security"/><category term="Six Sigma"/><category term="Threads"/><category term="Tricks"/><category term="UML"/><category term="WordPress"/><category term="XML"/><category term="Zen Cart"/><category term="git"/><category term="iOS"/><title type='text'>A Common IT Man&#39;s Blog</title><subtitle type='html'>Raves, rants, views, reviews, comments and experiences of a Common IT Man.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.commonitman.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1019498060997427546/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://www.commonitman.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/1019498060997427546/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Darshan Shah</name><uri>http://www.blogger.com/profile/18011697486352773391</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>198</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1019498060997427546.post-8890624852008782001</id><published>2024-07-12T17:31:00.000-04:00</published><updated>2024-07-12T17:31:34.594-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Shell Scripts"/><category scheme="http://www.blogger.com/atom/ns#" term="Unix"/><title type='text'>Convert strings to Upper or Lower Case in bash</title><summary type="text">Very simple way to convert strings to all Upper or Lower case in bash without using any of the other tools like awk or sed


myStr=&quot;Test&quot;
myLowerCaseStr=${myStr,,}
myUpperCaseStr=${myStr^^}
echo &quot;String: ${myStr}&quot;
echo &quot;Lower Case String: ${myLowerCaseStr}&quot;
echo &quot;Upper Case String: ${myUpperCaseStr}&quot;


The output would be as follows:


String: Test
Lower Case String: test
Upper Case String: TEST

</summary><link rel='replies' type='application/atom+xml' href='http://www.commonitman.com/feeds/8890624852008782001/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1019498060997427546/8890624852008782001?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1019498060997427546/posts/default/8890624852008782001'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1019498060997427546/posts/default/8890624852008782001'/><link rel='alternate' type='text/html' href='http://www.commonitman.com/2024/07/convert-strings-to-upper-or-lower-case.html' title='Convert strings to Upper or Lower Case in bash'/><author><name>Darshan Shah</name><uri>http://www.blogger.com/profile/18011697486352773391</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1019498060997427546.post-8744710157989425089</id><published>2023-03-31T18:38:00.003-04:00</published><updated>2023-03-31T18:38:50.841-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Spring"/><title type='text'>Spring Data JPA Query Methods</title><summary type="text">&amp;nbsp;Spring Data JPA Queries are a great way to create queries derived from the method name without needing to write tons of boiler-plate code to create connection &amp;amp; query, execute it and then process the result set. This generally works fine for simple queries and method names are very explicit in pointing out what is being returned by that method so the code is more readable and </summary><link rel='replies' type='application/atom+xml' href='http://www.commonitman.com/feeds/8744710157989425089/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1019498060997427546/8744710157989425089?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1019498060997427546/posts/default/8744710157989425089'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1019498060997427546/posts/default/8744710157989425089'/><link rel='alternate' type='text/html' href='http://www.commonitman.com/2023/03/spring-data-jpa-query-methods.html' title='Spring Data JPA Query Methods'/><author><name>Darshan Shah</name><uri>http://www.blogger.com/profile/18011697486352773391</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1019498060997427546.post-3808737626385553116</id><published>2023-01-21T15:38:00.000-05:00</published><updated>2023-01-21T15:38:43.626-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Unix"/><title type='text'>Piping output of top through grep does not give any output</title><summary type="text">Recently I was trying to grep for &quot;load average&quot; in the output of top and then redirect it to a file to save for later analysis - however the output file would be totally empty for quite some time. That is the time I realized that grep was buffering its output causing the output file to be empty. So the grep command was not writing to the file immediately but was collecting large amounts of data </summary><link rel='replies' type='application/atom+xml' href='http://www.commonitman.com/feeds/3808737626385553116/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1019498060997427546/3808737626385553116?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1019498060997427546/posts/default/3808737626385553116'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1019498060997427546/posts/default/3808737626385553116'/><link rel='alternate' type='text/html' href='http://www.commonitman.com/2023/01/piping-output-of-top-through-grep-does.html' title='Piping output of top through grep does not give any output'/><author><name>Darshan Shah</name><uri>http://www.blogger.com/profile/18011697486352773391</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1019498060997427546.post-3005605211126280078</id><published>2022-12-31T13:30:00.001-05:00</published><updated>2022-12-31T13:30:00.172-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Unix"/><title type='text'>Extract a range of lines from a file on Linux</title><summary type="text">Say you have a huge file, but want to extract only a specific range of lines from that file into another one. There are many ways to do this, but a very simple way would be to use sed as follows:sed -n &#39;$start_line,$end_linep;$end_lineq&#39; input_file.txt &amp;gt; output_file.txtThis will print all lines from the start_line to end_line and stop processing once it reaches end_line.Note that the&amp;nbsp;p&amp;</summary><link rel='replies' type='application/atom+xml' href='http://www.commonitman.com/feeds/3005605211126280078/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1019498060997427546/3005605211126280078?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1019498060997427546/posts/default/3005605211126280078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1019498060997427546/posts/default/3005605211126280078'/><link rel='alternate' type='text/html' href='http://www.commonitman.com/2022/12/extract-range-of-lines-from-file-on.html' title='Extract a range of lines from a file on Linux'/><author><name>Darshan Shah</name><uri>http://www.blogger.com/profile/18011697486352773391</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1019498060997427546.post-6745312716300799577</id><published>2022-12-30T17:54:00.002-05:00</published><updated>2022-12-30T17:54:33.983-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Unix"/><title type='text'>Disable automatic backslash insertion before $ when using auto-complete in bash</title><summary type="text">When using bash that is not configured properly, on using tab to auto-complete paths, it automatically escapes dollar symbols by inserting a backslash symbol before them, causing the commands to fail if run after auto-completion.&amp;nbsp;For example:&amp;nbsp;ls -l $HOME_DIR/code/wo (TAB) becomes&amp;nbsp;ls -l \$HOME_DIR/code/workspace/&amp;nbsp;To stop this from occurring, you need to add this command to your</summary><link rel='replies' type='application/atom+xml' href='http://www.commonitman.com/feeds/6745312716300799577/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1019498060997427546/6745312716300799577?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1019498060997427546/posts/default/6745312716300799577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1019498060997427546/posts/default/6745312716300799577'/><link rel='alternate' type='text/html' href='http://www.commonitman.com/2022/12/disable-automatic-backslash-insertion.html' title='Disable automatic backslash insertion before $ when using auto-complete in bash'/><author><name>Darshan Shah</name><uri>http://www.blogger.com/profile/18011697486352773391</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1019498060997427546.post-4661485084424025657</id><published>2021-05-06T16:35:00.001-04:00</published><updated>2021-05-06T17:03:45.167-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Unix"/><title type='text'>Extract files from RPM package without installing</title><summary type="text">An RPM package is a file consisting of a cpio archive that contains the files to be installed and a header that contains metadata information about the package.
  You can use the simple utility tool rpm2cpio to convert the contents of an RPM package into a cpio archive and then use the cpio command to extract the contents of that archive without needing to install the RPM package.
rpm2cpio </summary><link rel='replies' type='application/atom+xml' href='http://www.commonitman.com/feeds/4661485084424025657/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1019498060997427546/4661485084424025657?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1019498060997427546/posts/default/4661485084424025657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1019498060997427546/posts/default/4661485084424025657'/><link rel='alternate' type='text/html' href='http://www.commonitman.com/2021/05/extract-files-from-rpm-package-without.html' title='Extract files from RPM package without installing'/><author><name>Darshan Shah</name><uri>http://www.blogger.com/profile/18011697486352773391</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1019498060997427546.post-8493200283694307051</id><published>2021-05-05T15:48:00.001-04:00</published><updated>2021-05-05T17:10:39.493-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Coding"/><category scheme="http://www.blogger.com/atom/ns#" term="EJB"/><category scheme="http://www.blogger.com/atom/ns#" term="J2EE"/><title type='text'>Handling Exceptions in EJB using Interceptors</title><summary type="text">In my previous posts Using EJB Interceptors to add functionality to existing Beans, and Using EJB Interceptors to execute code AFTER service method completes, we saw how to use EJB3 Interceptors to add common concern features like logging, etc. to J2EE service methods.
In case you want to have common exception handling logic for all service method calls, you can wrap the return context.proceed();</summary><link rel='replies' type='application/atom+xml' href='http://www.commonitman.com/feeds/8493200283694307051/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1019498060997427546/8493200283694307051?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1019498060997427546/posts/default/8493200283694307051'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1019498060997427546/posts/default/8493200283694307051'/><link rel='alternate' type='text/html' href='http://www.commonitman.com/2021/05/handling-exceptions-in-ejb-using.html' title='Handling Exceptions in EJB using Interceptors'/><author><name>Darshan Shah</name><uri>http://www.blogger.com/profile/18011697486352773391</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1019498060997427546.post-8524082016173952745</id><published>2021-05-04T17:22:00.003-04:00</published><updated>2021-05-04T17:31:31.129-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Coding"/><category scheme="http://www.blogger.com/atom/ns#" term="EJB"/><category scheme="http://www.blogger.com/atom/ns#" term="J2EE"/><title type='text'>Using EJB Interceptors to execute code AFTER service method completes</title><summary type="text">In my previous post Using EJB Interceptors to add functionality to existing Beans, we saw how to use EJB3 Interceptors to add common concern features like logging, etc. to J2EE service methods.
In case you want to run any piece of code after each service method call, you can wrap the return context.proceed(); in a try-finally block and add the &quot;after&quot; code in the finally block as shown below:
</summary><link rel='replies' type='application/atom+xml' href='http://www.commonitman.com/feeds/8524082016173952745/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1019498060997427546/8524082016173952745?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1019498060997427546/posts/default/8524082016173952745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1019498060997427546/posts/default/8524082016173952745'/><link rel='alternate' type='text/html' href='http://www.commonitman.com/2021/05/using-ejb-interceptors-to-execute-code.html' title='Using EJB Interceptors to execute code AFTER service method completes'/><author><name>Darshan Shah</name><uri>http://www.blogger.com/profile/18011697486352773391</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1019498060997427546.post-1543543749555653363</id><published>2020-11-10T23:31:00.003-05:00</published><updated>2021-05-04T17:31:09.028-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Coding"/><category scheme="http://www.blogger.com/atom/ns#" term="EJB"/><category scheme="http://www.blogger.com/atom/ns#" term="J2EE"/><title type='text'>Using EJB Interceptors to add functionality to existing Beans</title><summary type="text">To add any decorations or cross-cutting features like logging, profiling or performance measurement for service method calls of existing enterprise beans, you can use EJB3 Interceptors that were provided starting with JavaEE5.

Interceptor is a method that wraps around the invocation of the actual business method call allowing you to apply the required feature and can either exist in the target </summary><link rel='replies' type='application/atom+xml' href='http://www.commonitman.com/feeds/1543543749555653363/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1019498060997427546/1543543749555653363?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1019498060997427546/posts/default/1543543749555653363'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1019498060997427546/posts/default/1543543749555653363'/><link rel='alternate' type='text/html' href='http://www.commonitman.com/2020/11/using-ejb-interceptors-to-add.html' title='Using EJB Interceptors to add functionality to existing Beans'/><author><name>Darshan Shah</name><uri>http://www.blogger.com/profile/18011697486352773391</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1019498060997427546.post-8359371764836283708</id><published>2020-11-09T19:13:00.002-05:00</published><updated>2020-11-09T19:15:00.581-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="git"/><title type='text'>Undo git stash clear</title><summary type="text">You can clear git stashes using the command:


git stash drop stash@{stash_index}
### OR
git stash clear


If you need to recover very recently deleted stashes, you can try the following two commands to try to recover them:


1.  List all the available stashes that can be receovered using the below command:

git fsck --unreachable | grep commit | cut -d &#39; &#39; -f3 | xargs git log --merger --no-walk
</summary><link rel='replies' type='application/atom+xml' href='http://www.commonitman.com/feeds/8359371764836283708/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1019498060997427546/8359371764836283708?isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1019498060997427546/posts/default/8359371764836283708'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1019498060997427546/posts/default/8359371764836283708'/><link rel='alternate' type='text/html' href='http://www.commonitman.com/2020/11/undo-git-stash-clear.html' title='Undo git stash clear'/><author><name>Darshan Shah</name><uri>http://www.blogger.com/profile/18011697486352773391</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1019498060997427546.post-7461270994010148404</id><published>2020-06-17T22:51:00.004-04:00</published><updated>2021-05-06T16:28:08.853-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Blogging"/><title type='text'>Syntax Highlighting Code in Blogger</title><summary type="text">I was using Syntax Highlighter created by Alex Gorbatchev to highlight code snippets on this blog, but of late, it was not working or taking too long to load up.&amp;nbsp;So it was time again to figure out a new way to do this and there were a few options that work in a similar fashion:
highlight.js :&amp;nbsp;https://highlightjs.org/code prettifier:&amp;nbsp;https://github.com/googlearchive/code-prettifyThe</summary><link rel='replies' type='application/atom+xml' href='http://www.commonitman.com/feeds/7461270994010148404/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1019498060997427546/7461270994010148404?isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1019498060997427546/posts/default/7461270994010148404'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1019498060997427546/posts/default/7461270994010148404'/><link rel='alternate' type='text/html' href='http://www.commonitman.com/2020/06/syntax-highlighting-code-in-blogger.html' title='Syntax Highlighting Code in Blogger'/><author><name>Darshan Shah</name><uri>http://www.blogger.com/profile/18011697486352773391</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1019498060997427546.post-8057610063201014334</id><published>2018-03-24T16:54:00.003-04:00</published><updated>2021-05-07T16:37:18.684-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Shell Scripts"/><category scheme="http://www.blogger.com/atom/ns#" term="Unix"/><title type='text'>Copy specific files from within nested folders</title><summary type="text">I had a situation where I needed to save all log files that were present in nested sub-folders and copy them over to another folder for analysis.
There are many ways to do this - but here is the simplest that I could figure out using rsync:

rsync -aihv --include=&#39;*/&#39; --include=&#39;*.log*&#39; --exclude=&#39;*&#39; /source_folder/to/search/in/  /destination_folder/to/copy/to/


Important thing to note here is </summary><link rel='replies' type='application/atom+xml' href='http://www.commonitman.com/feeds/8057610063201014334/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1019498060997427546/8057610063201014334?isPopup=true' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1019498060997427546/posts/default/8057610063201014334'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1019498060997427546/posts/default/8057610063201014334'/><link rel='alternate' type='text/html' href='http://www.commonitman.com/2018/03/copy-specific-files-from-within-nested.html' title='Copy specific files from within nested folders'/><author><name>Darshan Shah</name><uri>http://www.blogger.com/profile/18011697486352773391</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1019498060997427546.post-2145211915295564708</id><published>2018-03-24T16:38:00.004-04:00</published><updated>2020-06-17T20:45:18.226-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Shell Scripts"/><category scheme="http://www.blogger.com/atom/ns#" term="Unix"/><title type='text'>Rename multiple files in one command</title><summary type="text">If you want to rename multiple files, the trusty old Unix &quot;mv&quot; command can&#39;t help as it can rename only one file at a time.
This requires us to bring out something different from our Unix arsenal - the &quot;rename&quot; command!
Use the rename command in conjunction with find to rename multiple files:

find /source_folder/to/search/in/ -name &#39;myapp*.log.201*&#39; -exec rename -v .log. .oldlog. {} \; &gt;&gt; /temp/</summary><link rel='replies' type='application/atom+xml' href='http://www.commonitman.com/feeds/2145211915295564708/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1019498060997427546/2145211915295564708?isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1019498060997427546/posts/default/2145211915295564708'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1019498060997427546/posts/default/2145211915295564708'/><link rel='alternate' type='text/html' href='http://www.commonitman.com/2018/03/rename-multiple-files-in-one-command.html' title='Rename multiple files in one command'/><author><name>Darshan Shah</name><uri>http://www.blogger.com/profile/18011697486352773391</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1019498060997427546.post-5280623087824741561</id><published>2018-03-24T16:19:00.004-04:00</published><updated>2020-06-17T20:45:55.241-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Shell Scripts"/><category scheme="http://www.blogger.com/atom/ns#" term="Unix"/><title type='text'>Running same set of commands on multiple servers using for loop</title><summary type="text">Developers as usual are very lazy and so instead of going to each server to grep for an error string in the log file and creating a report, here is a simple way to collect all the necessary log lines.
Create a file containing a list of server names on which we want to check the logs - one on each line and then run this for loop if using bash:


for s1 in $(cat servers_list.txt); do
  ssh -q ${s1}</summary><link rel='replies' type='application/atom+xml' href='http://www.commonitman.com/feeds/5280623087824741561/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1019498060997427546/5280623087824741561?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1019498060997427546/posts/default/5280623087824741561'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1019498060997427546/posts/default/5280623087824741561'/><link rel='alternate' type='text/html' href='http://www.commonitman.com/2018/03/searching-for-string-in-logs-on.html' title='Running same set of commands on multiple servers using for loop'/><author><name>Darshan Shah</name><uri>http://www.blogger.com/profile/18011697486352773391</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1019498060997427546.post-4622137955576183650</id><published>2018-02-06T21:46:00.003-05:00</published><updated>2018-02-06T21:46:47.271-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Google Voice"/><category scheme="http://www.blogger.com/atom/ns#" term="ObiTalk"/><title type='text'>Obi keeps ringing - Calls from weird numbers - Ghost calls</title><summary type="text">Some time back my Obi&amp;nbsp;Google Voice phone kept ringing constantly and the caller ids were weird numbers. Strangely, Google Voice had no history of any such calls that I could mark as spam and rebooting the Obi device would help.

Researching this problem showed that it could be SIP scanning by bots that probe standard SIP ports causing the phone to ring and caller id to show strange numbers </summary><link rel='replies' type='application/atom+xml' href='http://www.commonitman.com/feeds/4622137955576183650/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1019498060997427546/4622137955576183650?isPopup=true' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1019498060997427546/posts/default/4622137955576183650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1019498060997427546/posts/default/4622137955576183650'/><link rel='alternate' type='text/html' href='http://www.commonitman.com/2018/02/obi-keeps-ringing-calls-from-weird.html' title='Obi keeps ringing - Calls from weird numbers - Ghost calls'/><author><name>Darshan Shah</name><uri>http://www.blogger.com/profile/18011697486352773391</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1019498060997427546.post-1310887047697485398</id><published>2018-02-06T19:45:00.004-05:00</published><updated>2018-02-06T19:45:56.373-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Google Voice"/><category scheme="http://www.blogger.com/atom/ns#" term="ObiTalk"/><title type='text'>Obi100 and Obi110 Google Voice with Simonics Gateway</title><summary type="text">Obi100 and Obi 110 devices worked great with Google Voice but Obihai declared these devices to be end of life in August 2016. So a recent Google change made these devices to stop working with GV.
To solve this, you could either buy a newer Obi 200 series device or use a paid GV gateway setup by simonics.

Here are the instructions for using simonics GV gateway from the&amp;nbsp;ObiTalk forum post:


</summary><link rel='replies' type='application/atom+xml' href='http://www.commonitman.com/feeds/1310887047697485398/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1019498060997427546/1310887047697485398?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1019498060997427546/posts/default/1310887047697485398'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1019498060997427546/posts/default/1310887047697485398'/><link rel='alternate' type='text/html' href='http://www.commonitman.com/2018/02/obi100-and-obi110-google-voice-with.html' title='Obi100 and Obi110 Google Voice with Simonics Gateway'/><author><name>Darshan Shah</name><uri>http://www.blogger.com/profile/18011697486352773391</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1019498060997427546.post-5032855377054780302</id><published>2018-01-31T22:46:00.001-05:00</published><updated>2018-01-31T22:46:21.420-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ObiTalk"/><title type='text'>Use CSipSimple instead of ObiTalk ObiOn App on Android</title><summary type="text">Android app for ObiTalk - ObiOn stopped working some time back so here is my solution for using CSipSimple instead.
It requires you to sign-up for a free IP Freedom account at Callcentric and a bit of setup.



Create an IP Freedom account 12341234567 at Callcentric here
Create a sub-account 12341234567101 (extension 101)
On your Android phone download and install CSipSimple from the Play Store
</summary><link rel='replies' type='application/atom+xml' href='http://www.commonitman.com/feeds/5032855377054780302/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1019498060997427546/5032855377054780302?isPopup=true' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1019498060997427546/posts/default/5032855377054780302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1019498060997427546/posts/default/5032855377054780302'/><link rel='alternate' type='text/html' href='http://www.commonitman.com/2018/01/use-csipsimple-instead-of-obitalk-obion.html' title='Use CSipSimple instead of ObiTalk ObiOn App on Android'/><author><name>Darshan Shah</name><uri>http://www.blogger.com/profile/18011697486352773391</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1019498060997427546.post-4246379069647553033</id><published>2015-05-18T21:00:00.000-04:00</published><updated>2015-05-22T16:13:38.822-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="Spring"/><title type='text'>Solve Spring NoUniqueBeanDefinitionException</title><summary type="text">I encountered the&amp;nbsp;NoUniqueBeanDefinitionException where-in Spring was unable to which class to inject for an Autowired variable even though the it was properly qualified!

This happened because the Qualifier did not get post-processed and so multiple implementations of the Interface type of the variable being injected were now available in the classpath. So Spring found more that one </summary><link rel='replies' type='application/atom+xml' href='http://www.commonitman.com/feeds/4246379069647553033/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1019498060997427546/4246379069647553033?isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1019498060997427546/posts/default/4246379069647553033'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1019498060997427546/posts/default/4246379069647553033'/><link rel='alternate' type='text/html' href='http://www.commonitman.com/2015/05/solve-spring-nouniquebeandefinitionexce.html' title='Solve Spring NoUniqueBeanDefinitionException'/><author><name>Darshan Shah</name><uri>http://www.blogger.com/profile/18011697486352773391</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1019498060997427546.post-680208451770620274</id><published>2015-05-15T20:30:00.000-04:00</published><updated>2015-05-15T20:30:01.532-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Hibernate"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><title type='text'>Upgrade Hibernate 3..x to Hibernate 4.3.x</title><summary type="text">NOTE: This is a partial guide to upgrade your Hibernate 3 project to Hibernate 4.3.x

Hibernate has a come a long way from version 3.x to the latest version Hibernate 4.3.x with lots of major changes, bug fixes and enhancements:

Started using gradle for builds
Redesign the way SessionFactory is built
Improved metamodel
Initial osgi-fication by package splitting (public, internal, spi)
Migration </summary><link rel='replies' type='application/atom+xml' href='http://www.commonitman.com/feeds/680208451770620274/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1019498060997427546/680208451770620274?isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1019498060997427546/posts/default/680208451770620274'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1019498060997427546/posts/default/680208451770620274'/><link rel='alternate' type='text/html' href='http://www.commonitman.com/2015/05/upgrade-hibernate-3x-to-hibernate-43x.html' title='Upgrade Hibernate 3..x to Hibernate 4.3.x'/><author><name>Darshan Shah</name><uri>http://www.blogger.com/profile/18011697486352773391</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1019498060997427546.post-2764260659334043344</id><published>2015-05-14T22:10:00.000-04:00</published><updated>2015-05-14T22:10:01.384-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="JBoss"/><category scheme="http://www.blogger.com/atom/ns#" term="Spring"/><title type='text'>Upgrade from Spring 2.5.x to Spring 4.1.x - JBoss</title><summary type="text">After completing the steps mentioned in my previous post for Upgrading Spring 2.5.x to Spring 4.1.x, the project compiles without problems, however, JBoss deployment does not work as it does not get all the required new Spring Jars.

The Spring component jars also need to be added to the JBoss classpath. However, here are a few specific exceptions that point to requiring specific jars in the </summary><link rel='replies' type='application/atom+xml' href='http://www.commonitman.com/feeds/2764260659334043344/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1019498060997427546/2764260659334043344?isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1019498060997427546/posts/default/2764260659334043344'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1019498060997427546/posts/default/2764260659334043344'/><link rel='alternate' type='text/html' href='http://www.commonitman.com/2015/05/upgrade-from-spring-25x-to-spring-41x.html' title='Upgrade from Spring 2.5.x to Spring 4.1.x - JBoss'/><author><name>Darshan Shah</name><uri>http://www.blogger.com/profile/18011697486352773391</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1019498060997427546.post-520916695968095962</id><published>2015-05-06T22:52:00.000-04:00</published><updated>2015-05-06T22:52:03.890-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="EasyMock"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><title type='text'>EasyMock Exceptions when mocking Classes instead of Interfaces</title><summary type="text">EasyMock as the name suggests, provides an easy way to mock objects for testing where-in you mock interfaces of the classes you want to test. EasyMock then generates mock objects on the fly using Java&#39;s proxy mechanism and then simulates it in a simple way and also verifies whether it is used as expected.

When creating some new mock objects for testing using EasyMock 2.5.x, I noticed the below </summary><link rel='replies' type='application/atom+xml' href='http://www.commonitman.com/feeds/520916695968095962/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1019498060997427546/520916695968095962?isPopup=true' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1019498060997427546/posts/default/520916695968095962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1019498060997427546/posts/default/520916695968095962'/><link rel='alternate' type='text/html' href='http://www.commonitman.com/2015/05/easymock-exceptions-when-mocking.html' title='EasyMock Exceptions when mocking Classes instead of Interfaces'/><author><name>Darshan Shah</name><uri>http://www.blogger.com/profile/18011697486352773391</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1019498060997427546.post-2908341478015762737</id><published>2015-05-05T20:00:00.000-04:00</published><updated>2015-05-06T22:51:33.567-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Oracle"/><category scheme="http://www.blogger.com/atom/ns#" term="SQL"/><title type='text'>Oracle Date / Timestamp difference in Hours, Minutes &amp; Seconds</title><summary type="text">Figuring out the exact time difference that has elapsed between between two Date / Timestamp columns in Oracle using SQL is not as easy as it sounds.A simple subtraction the those values using this query yields:

SQL&gt; select runnumber, starttime, endtime, (endtime-starttime) TotalMinutes0 from run_log;

 RUN STARTTIME            ENDTIME              TOTALMINUTES0 
---- -------------------- ------</summary><link rel='replies' type='application/atom+xml' href='http://www.commonitman.com/feeds/2908341478015762737/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1019498060997427546/2908341478015762737?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1019498060997427546/posts/default/2908341478015762737'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1019498060997427546/posts/default/2908341478015762737'/><link rel='alternate' type='text/html' href='http://www.commonitman.com/2015/05/oracle-date-timestamp-difference-in.html' title='Oracle Date / Timestamp difference in Hours, Minutes &amp; Seconds'/><author><name>Darshan Shah</name><uri>http://www.blogger.com/profile/18011697486352773391</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1019498060997427546.post-1427303497853168688</id><published>2015-04-22T20:18:00.000-04:00</published><updated>2015-05-22T16:10:52.956-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="Spring"/><title type='text'>Upgrade from Spring 2.5.x to Spring 4.1.x</title><summary type="text">I am upgrading Spring libraries of a critical project from Spring 2.5.x to the latest available release which is Spring 4.1.6 right now. One of the major issues I faced is that the packaging strategy was changed in Spring 3.0 release. Earlier, a single spring.jar with all jars and required libraries was provided, but this was discontinued from the 3.0 release. Now we would need to include each </summary><link rel='replies' type='application/atom+xml' href='http://www.commonitman.com/feeds/1427303497853168688/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1019498060997427546/1427303497853168688?isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1019498060997427546/posts/default/1427303497853168688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1019498060997427546/posts/default/1427303497853168688'/><link rel='alternate' type='text/html' href='http://www.commonitman.com/2015/04/upgrade-from-spring-25x-to-spring-41x.html' title='Upgrade from Spring 2.5.x to Spring 4.1.x'/><author><name>Darshan Shah</name><uri>http://www.blogger.com/profile/18011697486352773391</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1019498060997427546.post-5180953575911467711</id><published>2014-11-07T10:00:00.000-05:00</published><updated>2014-11-07T10:00:08.011-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="MongoDB"/><title type='text'>MongoDB keyfile permissions are too open error</title><summary type="text">Creating an authenticated replicated set requires setting up of a secret key file on all the nodes.
In spite of creating the key file and putting the same file on all the nodes, you may encounter error stating that the permissions are too open:

permissions on /var/mongodb/conf/mongodb-keyfile are too open

&amp;nbsp;To solve this, here are the two things that you need to do to solve it:


&amp;nbsp;</summary><link rel='replies' type='application/atom+xml' href='http://www.commonitman.com/feeds/5180953575911467711/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1019498060997427546/5180953575911467711?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1019498060997427546/posts/default/5180953575911467711'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1019498060997427546/posts/default/5180953575911467711'/><link rel='alternate' type='text/html' href='http://www.commonitman.com/2014/11/mongodb-keyfile-permissions-are-too.html' title='MongoDB keyfile permissions are too open error'/><author><name>Darshan Shah</name><uri>http://www.blogger.com/profile/18011697486352773391</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1019498060997427546.post-125515200103572768</id><published>2014-11-07T09:59:00.000-05:00</published><updated>2014-11-07T09:59:00.529-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Amazon"/><title type='text'>Amazon Echo - your own personal digital concierge!</title><summary type="text">Amazon has launched nifty device named Echo - which is like a stand-alone &quot;Siri&quot; - but more like a personal digital concierge for the family. The cost is pretty reasonable at $199 and Amazon is running a promotion right now where Prime members can get it for only $99.

Check out the Echo on Amazon - looks pretty interesting but is available by invite only.
</summary><link rel='replies' type='application/atom+xml' href='http://www.commonitman.com/feeds/125515200103572768/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1019498060997427546/125515200103572768?isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1019498060997427546/posts/default/125515200103572768'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1019498060997427546/posts/default/125515200103572768'/><link rel='alternate' type='text/html' href='http://www.commonitman.com/2014/11/amazon-echo-your-own-personal-digital.html' title='Amazon Echo - your own personal digital concierge!'/><author><name>Darshan Shah</name><uri>http://www.blogger.com/profile/18011697486352773391</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>