Angular - improve website performance with 5 lines of code..
12 Oct 2015
5 lines of code in angular written once can affect your entire project by auto releasing resources and cancel delayed action after navigating away from the page. in this post i will explore and explain the problem and its solutions.read more
grunt-aws CERT_UNTRUSTED quick fix
20 Dec 2014
If there's anything I hate in the programming world, is when something that worked well suddenly breaks.
Unfortunately, today it happens a lot since everything is a "service" that is upgraded under your feet.
My build process broke so many times, I lost count.
Even if you keep it simple like
json parse is insane
29 Oct 2014
every project i've been in so far had the same stupid bug with
at the beginning someone got a string instead of an object and they used
JSON.parse to convert it to an object.
then after a while, someone fixed it upstream, and now
JSON.parse is getting an object and fails with a very cryptic error message.
seo with phantomjs part 3
22 Oct 2014
before we reach the final part of hooking it all together there are 2 seo things we should do.
the first one is to add
index.html to your path.
it will make your life easier handling redirects and default index page etc..
it is not a requirement, but i recommend it and i assume you applied this in the rest of the post.
plus - developers are not usually aware of this, but not specifying index.html will cause problems when deadling with iframes.
i am not going to dwell on this here, but only mention that i had 2 iframes in my application that did not work until i added
index.html to the src attribute.
seo with phantomjs part 2
15 Oct 2014
so now that we know how to generate a prerendered version of a page using phantomjs
all we need to is to identify a crawler and redirect them to the prerendered version.
turns out this is the tricky part..
seo with phantomjs part 1
08 Oct 2014
phantomjs is a browser that runs in the memory (no graphics required).
you install it by running
npm -g install phantomjs and then verify it is available by running
seo with phantomjs
01 Oct 2014
when i was asked about how to make an angular site seo friendly, i was shocked to discover that
where values should be, making your search result display as
Gruntfile.js - adding another HTML file to usemin
05 Nov 2013
Recently I started using node and with it yo, grunt and bower. It is nice to get a quick kickstart. But now when I have to add/modify something in the build process, I get stumped a lot.read more
Configuration Module for NodeJS
28 Oct 2013
NodeJS is great but it lacks settings/configuration mechanisms.
Actually - I understand why it lacks it - configuration nowadays is written in JSON anyway.. so in node you just import it..
But there are some features you still want/need that do not exist yet.
When Play Framework 2.X Sass plugin says 'Sass compiler: ruby.exe: No such file or directory -- project_root/sass (LoadError)'
21 Oct 2013
Running Play!Framework (I am using 2.0.4) with Sass plugin throws a
Improving Play!Framework 2.x Configuration
15 Oct 2013
Play!Framework 1.0 had a nasty configuration mechanism.
To make a long story short - it was a properties file.
Play!Framework 2.0 came out, and even though the configuration section
got some big improvements, there are still things that annoy me.
In this post I will show you what annoys me and how to resolve it.
Adding IFrame Support To Our Selenium Framework - Part 2
07 Oct 2013
This is another post in our "Selenium Extension Library" serie. In this post we will fix our IFrame support so that we support IFrames that are in other IFrames. Previously we:read more
Adding IFrame Support To Our Selenium Framework
30 Sep 2013
So far we have written a nifty selenium extension library that allows you to treat the pages as if they were built by components rather than the primitive WebElement.
This brought your page design and development closer to your Selenium test code.
It also allows you a high abstraction and re-usability of your test code which is always good.
Extending Selenium Even More
25 Sep 2013
My last post was about how we can easily correct the faults in Selenium's Page Model
by constructing smarter components that can expose better API than WebElement.
We got rid of the impotency of the WebElement class by writing our own Decorator and Locator
and thus allowing ourselves to define Components that wrap WebElement in the most natural way you can think.
As an example, we showed a better way to implement a Select rather than exposing some utility function as proposed by Selenium.
How to restart services vi ssh?
09 Sep 2013
Recently I am occupied by automations.
I want to upgrade and troubleshoot as automatically as possible.
If my backend needs a reboot for some odd reason, I want it to be available from some CI tool.
Extending Selenium In Java
12 Aug 2013
previously we saw some limitations Selenium has.
One of those points was that we are bound to "WebElement" and we cannot define and use "complex" like "select" and invoke "getOptions" on it.
Today, our wishes will become true.
We will need a page to test on.
I chose the this page.
So lets add a select box with id "testme" and 2 options
AngularJS - I18N
06 Aug 2013
As AngularJS becomes more popular, the demand for features increases immensely. While chart libraries and effects support take shape, quick fix solutions are useful.read more
Zigzag my CSS
29 Jul 2013
Recently I wanted to do a zigzag header/footer since it is so modern.
I decided to implement it with pure CSS.
I quickly found out a solution over at stackoverflow.
However that solution was only for zigzag facing down.
I decided to enhance the solution, implement it as a mixin in SCSS,
and get the color as parameter.
AngularJS - Adding Sort
22 Jul 2013
So far we have a table where we can select the columns, search the content and pagination where we select the page size.
Believe it or not, but the entire code (HTML+CSS+JS) is no longer than 200 lines - without using plugins!
AngularJS - Searching The Table
15 Jul 2013
So far we have pagination, and the ability to select the table headers.
We can also change the page size.
Today, we will add "search" to the table.
So far we implemented everything on the client side - which means we get all the data and we manipulate it.
When dealing with a lot of data, you will prefer to move this to the server side - just like the pagination.
AngularJS - Adding "Toggle Header" Feature
08 Jul 2013
In the previous posts we implemented a simple paging for a table
using AngularJS directive and filter.
In this post, we will add a feature that enables us to choose which
columns we show.
The template we are using ( See first post) already places the available headers on the scope.
AngularJS - Using Our Table Paging Directive
01 Jul 2013
This is the second part of a serie about AngularJS super table directives
where we add "paging" and "search" and "sort" to a table in a highly
reusable, customizable way.
So far we have a directive that adds "prev" and "next" buttons.
This directive handles disable/enable on the button.
AngularJS - Table Paging Directive
24 Jun 2013
In this post and the next one I will show you how to write
a directive that adds paging to your table using AngularJS.
Thanks to AngularJS great structure, all code is reusable and activated
as easily as adding a class!
AngularJS - Sort, Filter and Paging - A Table Directive
18 Jun 2013
AngularJS is GREAT! you should neglect whatever framework you are using right now, and switch to AngularJS immediately!read more
Why the Hack am I Getting OptimisticLockException?
20 May 2013
For a while now I've been trying to figure out an exception I got using EBean and Play!Framework.
I know what OptimisticLockException, and I know why it usually happens, but nothing matched my scenario.
Today I had an enlightenment and I managed to resolve the exception. Thought I'd share.
Selenium Page Model Limitations
13 May 2013
In this post I will talk about an annoying limitation Selenium presents, and in the next posts I will show how to enhance Selenium to support my wish list.read more
AngularJS Cookies Example
06 May 2013
Your first step would be to include the JS file and then add dependency on cookie module.read more
Quickly resolving RuntimeException: No join columns
15 Apr 2013
So it is late at night, and I am working over the weekend again..
Creating a OneToOne relationship with EBean and exporting schema to create schema upgrade script
when all of a sudden, I get an exception I have never seen before.
Since it took me a couple of minutes to figure it out - maybe too late at night? - I decided to post
the problem and the solution.
Removing background from image with imagemagick - revisited
08 Apr 2013
A long time ago I wrote a post about how to remove background from images using 2 simple commands with imagemagick.
Recently, I acquired a new computer, and I had to download imagemagick again.
Obviously, I went to my blog to remember the commands I used, and I copy-pasted them, only to discover they do not work!
Serving Static Files From JAR
01 Apr 2013
If you have a lot of static files (images, JS, css) in your WAR,
Or maybe you have static files that are shared between different projects
you might want to pack those resources into a JAR and serve them from there.
Overriding Spring MVC Context From Java Arguments And Environment Variables
25 Mar 2013
Recently I added spring MVC to an existing project using Jetty.
Like all projects, I wanted this one to support DEV mode and PROD mode.
It is a Spring best practice to keep 2 context files (at least).
One file for Spring MVC controllers and stuff,
and the other for beans that can be used outside Spring MVC and reusable everywhere.
Setting Logback with Play!Framework 2.0
11 Mar 2013
Last time I wrote about how to setup a Maven Project with SLF4J using Logback. In this post I will explain how to do the same for Play!Framework 2.0.read more
08 Mar 2013
In a previous post Being Your Own Rest Client
I explained how REST and API are 2 different things
and using REST API from your front-end is not really recommended
I know that CORS is already here and this is the way to go,
but I find something so appealing in postMessage that I just can't let it go.
This seems very powerful to me.
Using postMessage also forces the API to be in a DOM environment.
I wonder which cool usages this will bring with it.
SLF4J with Logback in a Maven Project
05 Mar 2013
I recently started migrating my projects to SLF4J.
SLF4J is a single API for all logger implementations.
There are at least 3 implementations I know about:
How to make postMessage support multi origins and multi messages
20 Feb 2013
In my previous post I talked about HTML5 - cross domain messaging with postMessage. I showed how to use a JQuery plugin written by Ben Alman that wraps this method and falls back on hash tags
in the URL for older browsers.
In this post I will talk about how to improve the usage in this plugin to support multiple messages
from different origins.
HTML5 - cross domain messaging with postMessage
12 Feb 2013
passing messages across domains.
Now it is easy to send and receive messages to and from an
and define a messages whitelist keeping your frame safe from evil messages.
Being Your Own REST Client
06 Feb 2013
REST and API are two words that got stuck together.
Using REST between your client and server is one things.
Exposing an API - be it REST or not - is a different thing.
Thinking these are the same thing is a mistake I see a lot lately.
playframework - Showing HTML in textarea
30 Jan 2013
Every now and then you get to show HTML in a textarea.
A common usage for this would be to copy some HTML code you should embed in your site
Installing Extensions - Sublime Text Editor
22 Jan 2013
I recommend Sublime Text Editor.
It has some really nice and strong features, and it has a lot of extensions.
Extensions in Sublime is called a "package" I think... but I will call it "extension".
You'll just need to cope with that.
Implementing Base Templates In Play 2.0 Without Passing Arguments
16 Jan 2013
I just migrated from Java+Play1.0 to Java+Play2.0 and the templates are the hardest part so far, and the best way I found to implement a base template (for title, head etc..) is by using the Http.Context. There is a very nice syntax you can achieve with tags.read more
Integration Between Maven And Eclipse Sucks
08 Jan 2013
Even though I don't support working from the IDE, I have to give support to developers that do.
For example, when I assimilate Maven into the project, I must make sure all workspaces adjust accordingly.
Even though Maven has support for ".project" file auto-generation, there are still so many problems along the way that I have to sit down with each and help resolve all the issues.
In the last project, I assimilated Maven into a GWT project.
This project has dependencies of GWT module type.
These dependencies are simple jars, however, GWT compiler needs their sources in order to use them later on.
All in all I came across 7 different problems. I will show you how I resolved 4 problems
The other problems are related to GWT not synchronizing with Maven.
It is important to note, I did not come across any problems while working with Intellij. Intellij's approach is to enable console commands from the IDE, while Eclipse's approach is to hide Maven in the background. This is the main reason why Intellij introduces less problems.
Troubleshooting Missing Artifact in Eclipse Maven Repository -
01 Jan 2013
I found 2 reasons that cause this error in Eclipse.read more
Eclipse Ignores Maven Settings
25 Dec 2012
I defined a custom local repository for Maven, but eclipse simply ignored it.
You can define local repository location easily by modifying
This resulted in a strange behavior. The commands were successful when running from command line but failed on missing artifacts from Eclipse.
Eclipse complained about missing artifacts, but when I check, I saw they were there.
Play 2.0 DB migrations shell script
18 Dec 2012
I recently joined a Play!Framework 2.X project.
After 2 years developing with Play!Framework 1.X, it is certainly a big difference.
One of the things I miss most is the nice migrate module.
2.x has something called evolutions, which might be as powerful, but I really didn't like it
So I decided to write my own simple migrate module.
Since I didn't have the motivation to learn how to write a module for Play 2, I decided to implement it with a simple Shell script.
About Running Maven Plugins and Running Maven Jetty Plugin
21 Nov 2012
When I followed tutorials and guides for using Maven Jetty Plugin
I kept seeing the same instructions saying:
Open Files From Console With Sublime
20 Nov 2012
Sublime Text Editor is a great new text editor.
Its motto is "The Text Editor You'll Fall In Love With" and indeed I did.
I have been a notepad++ user for a long time, but I think I will make the switch.
I find it so useful, I am even writing this very post in sublime.
Later I will copy-paste the content to Blogger.
Wouldn't it be great to have an add-on to sublime though that would work with Blogger?
Mysql lower case on windows! Annoying!!!!
13 Nov 2012
try running the following query on a MYSQL instance running on windowsread more
How to export DB Schema in Play! 1.2.1
06 Nov 2012
So I am writing an application in Play 1.2.1
And I want to use the cool migrate module. This means I need to start writing SQL now.
And I am bad at it.. Sometimes I forget to put "OneToOne" and it takes me a while to see it
I found it useful to tell hibernate to export the DB scheme, thus quickly finding out the problems.
For this post I created the following models
My list of useful Intellij Live Templates
14 Feb 2012
I like Intellij's "live templates" feature and I try to use it as much as possible.
Here some live templates I just can't do without.
removing backgrounds from images with 2 commands and a freeware
11 Jan 2012read more
Setting up a selenium/chrome project
26 Nov 2011
Selenium is an automation for GUI testing for Web Applications.
Once you run the automation, a browser popup up, and you will see user action happen on its screen such as :
Adding min-height to TinyScrollbar JQuery plugin
21 Sep 2011
Today I added "minHeight" feature a JQuery plugin a became quite fond of.. This plugin is called Tiny Scrollbar, and for this post you will need to have a look at the source, as I am going to modify it just a bit, while adding a powerful feature.read more
Disabling a button/link with JQuery
08 Aug 2011
As you probably know, if you want to make a sexy button, you need to implement it with a link.read more
Resolving play!Framework's test migration problems
02 Jul 2011
I recently upgraded to play 1.2.1.
As I was running the tests, I got weird exceptions. That contained strings like :
HTTP Basic Authentication - Thank you PlayFramework!
07 Jun 2011
Finally, one of my mysteries is resolved.read more
Intellij - "J" is shown instead of "C"
31 May 2011
As I was looking at my blog's search keys that got people here, I noticed a weird oneread more
Python Hands on - The Pickle Problem
30 May 2011
I recently learned how to write to a file in Python, and among it how to use Object Serialization library called "pickle".read more
@OneToOne - does not force uniqueness!
15 May 2011
I just discovered something. I have code with @OneToOne mapped to the DB.read more
What to do when Apache shows your PHP as plain text
21 Feb 2011
I enabled my apache with SSL recently.. Had to change many files.
And once I managed to get SSL working, I noticed my PHP configuration was messed up..
Mysql - showing Long timestamps and readable Dates
01 Jan 2011
A while ago I had to find a certain date in the database, but the date column was defined as LONG.
I discovered you can easily turn a LONG to a date, using the following syntax :
Getting really annoyed with Axis2
14 Dec 2010
So I got a project while back that invoked SOAP messages, and I immediately thought about AXIS.
I used AXIS a long time ago.
This time around I decided to use MAVEN to build the project, and as I searched for axis plugins for maven, I was surprised to know I did the wrong search.
Quickly Solving NGNIX's "The system cannot find the path specified" in Windows
21 Oct 2010
I just downloaded nginx for a bug/feature to simulate the production environment, and I immediately got :read more
javax.persistence.PersistenceException org.hibernate.PropertyAccessException could not get a field value by reflection getter
28 Sep 2010
I have worked with hibernate now for 6 years. and yet..read more
Setting up log4j in a maven project
21 Aug 2010
I always forget how to quickly set up log4j in my maven project, even though it is really easy.read more
Generics - method signature type definition
03 Aug 2010
On my previous post I introduce some advanced things about generics, when I discovered I forgot a very important feature.read more
YARP - const_missing is dependencies
03 Jul 2010
I am living on the edge, working with rails 2.3.4.. As I am moving to production, I decided to integrate with "exception_notification" gem. (or plugin?) , and that's after looking at Ryan's RailsCasts that I love.read more
Helpful things to have with Rails
12 Jun 2010
Some stuff I picked up about rails that I wanted to shareread more
SVN + Apache (Continue) - Permissions
27 Apr 2010
Last time I explained how I got my Apache to forward calls to the SVN.
It was pretty hard due to lack of documentation.
Rails Quicky - Rails Layout Pothole
20 Apr 2010
So I am working on a small project to exercise my new Rails brain muscles. And just as I start to feel good, I run into a problem.read more
SVN + Apache - Easy ? Lets make it work!
10 Apr 2010
Well... I am a bit frustrated..read more
My Rails Experience - afterthought
05 Apr 2010
OK. So I went cover to cover for the second time over the agile web development with railsread more
Rails Quicky - path , xxx_path function is undefined
03 Apr 2010
As I am going over the rails book - I reached the I18N section.
This section required me to upgrade from 2.0.2 to 2.2 or above.
I upgraded to 2.3.4 - while the book uses version 2.3.4.
17 Mar 2010
final is a very intuitive keyword, and even though I use it a lot, I never really took the time to ponder about it. Today is a good day for pondering.. .read more
SQL for interviews - Continued
12 Mar 2010
In a previous entry I explained how I always get asked the same SQL questions in interviews. Lo and behold, I am asked the very same questions in an interview I had just the other day.read more
Rails Quicky - Mistakes with Blocks
09 Mar 2010
What I wrote here - you won't find in the links below, but if you are looking for tutorials try these cool articles I foundread more
Setting welcome page in Rails
09 Mar 2010
In Java/Tomcat I have a web.xml to define a "welcome-page" which usually points to some index.jsp. This means that if my root URL is http://www.mograbi.co.il/guy_mograbi it will show the page http://www.mograbi.co.il/guy_mograbi/index.jsp .read more