Find and Replace text in Linux/OSX

This information is covered in several other blogs, tutorials and etc… but as my google skills tend to send me someplace different every time I search (yes I know bookmarks) I might as well leave it here for my future reference

Find text

grep "what to find" "fileToFind"

Replace text in a file (OSX, notice the empty quotes at the beginning)

sed -i "" 's/text_to_replace/what_to_replace_with/g' file_where_replacement_occurs

And in Linux the syntax is similar

sed -i 's/text_to_replace/what_to_replace_with/g' file_where_replacement_occurs

Happy coding!

2012 Review and 2013 Technical Goals

Wow, 2013 already… Time to checkout what happened with my 2012 goals and to set new goals for 2013 🙂

Let’s see the goals from 2012:

“First – Read, read, read”

Well, this one I nailed it! Had the opportunity to read many great books, like the Pragmatic Programmer, Design Patterns (Gang of Four), Clean Coder, Working Effectively with Legacy Code, Refactoring (Improving the Design of Existing Code), xUnit Test Patterns, Driving Technical Change, Learning jQuery, Practical API Design – Confessions of a Java Framework Architect, jUnit in Action,  Clean Coder and probably more (the Amazon LinkedIn app is gone and I can’t seem to find a way to reactivate it).

Things to Learn – Git, Html5, Mobile, NoSQL, IOS

Well this one I almost failed completely on my predictions. I did not learn anything related to IOS, NoSQL, very little hands-on with Mobile and Html5 but I started using Git (still a newbie though). Sad…

XEO Community

Very sad about this one, not only did I not have time to contribute, but the community around it is still non-existent and I don’t believe 2013 will be a better year, but I’ll have to wait to see that.

The Blog

Oh boy… I wrote like 3 posts in 2012? Complete failure… I guess I always want to do great (as in big) posts and end up quitting (or not having ideas nor time). Especially time, I do not commit enough to the blog. I always end up giving more priority to other stuff.

Ok, so 2012 was C- in terms of goals achieved. The books were a success while everything else was fairly low.

Goals for 2013

So my goals for 2013 will be the following:

Regarding my learning goals, I still want to read a lot and probably re-read some books again. Especially books like Working with Legacy Code, Refactoring, xUnit Test Patterns and Practical API Design which I believe I’ll extract great value from a second read where I already know the contents and can explore with a different (more mature) mind set.

Html5 and Mobile will play an important part of my year. I’m up for Microsoft’s HTML5+CSS3 Certification in February so I guess I’m really going to pick this up (want to try and use Bootstrap as well). While Mobile (I believe) will become a very active topic in my professional environment, so I’ll probably come back to this 😉

I want to really understand git and make the best use out of it (probably start using my GitHub account to push some content, more on that latter). Probably use Ant more often (I still need a lot of google to do something) and I really need to improve my Linux skills as they are handy.

XEO Community – I don’t think there will be much to say about this, but I’m committed to make two contributions to the community (probably through github). The first is probably about 80% complete and the second about 75% so I think we’ll see some action there.

Regarding the blog I think that I will try to write more by using a blog as the tool where I can post about small things I learned (things that would come up in a google search for “javac ant with line numbers” and stuff like that). I hope to be able to write more often like this.

Ok, seems about right, let’s see what 2013 brings.

XEO Community 1.1.0 was released

Hi, today is all about XEO Community, which had a new release (version 1.1.0) back in February. It took a long time (for various reasons) but the commitment is to have more releases this year (the goal it to have one every three months). It took even longer for me to make this blog post, but as you can see no other posts were made in the meantime, for various reasons.

It’s almost time for a new release but, for now, I’m going to talk about what you can find in the current one.

In the time that has passed we’ve added several new features to the code base, such as:

Themes (Skins):
You can now use the boconfig file to set Themes (they will be automatically converted to instances of the Theme XEO Model, which you can also create at runtime), which are basically a set of CSS files to be included in each page. The XEO Framework now comes bundled with a few themes (designed by the ExtJS community mostly, such as the slate theme)

GridExplorer – List with Preview and Searches saves, multiple grouping
The GridPanel component was extended to support three new features:

  • Preview
  • Saved Searches/Views
  • Multi Group

The preview allows you to “preview” (hence the name) an instance being displayed in the list. In the GridExplorer toolbar you can select where to preview the instance (bottom, left or right) and when selecting an instance it will display a preview in that area.

The saved searches/views allows you to customize the view of the GridExplorer (by sorting, grouping, filtering, etc…) and then save those views with a given name, so that those criteria can be easily reapplied later (depending on what you are doing with the information)

Multi-Group support means that you can now group the results in a GridExplorer (well, in reallity, in any GridPanel) by any number of columns. (Previously you could only group by one column)

PostGreSQL support
You can now use the PostGreSQL database in an XEO Application. For every fan of the PostGre database this will be most welcome (support is also included in the XEO Studio plugin)

Region Layouts
One of the things that was really “blocking” the creativity around layouts was the fact that when you created the Main viewer you really only had the choice to design a left-sided tree panel which opens new viewers in a central area. Now you can declare a Main viewer using the regionLayout component (which allows you to created up to four-regions – north, west, east, south with the fifth region being the center tabpanel). In each of those regions you can regular components to define your interface.

ToolBar with Input Components and Profile restriction
It’s sometimes useful to have not only buttons in a toolbar but also input elements. From this version on, you can use text, numeric, date e combox components in a toolbar. Toolbars can also restrict their menus to only users who have a given profile (much like the case with the TreePanel component)

TreePanel Toolbar
TreePanels can have a child TreePanelToolbar component which allows you to customize a main viewer TreePanel with a set of buttons that you deem appropriate. Any TreePanel can use the TreePanel toolbar, it’s used just like the regular toolbar component.

Lookups with Favorites Selections
Lookup Components can now toggle a “favorites” feature, which means that for each user in each relation, the component can remember the selections made by that user and present them in a quick way to user.

Multi-page selections (and selection counter)
Selection of instances in a Lookup viewer can be preserved across page navigation. Up until now you had to select instances from one page, confirm the selection and then do it again in instances of another page. Also, when multiple selections are possible, a small counter with total instances selected appears in the panel’s toolbar.

Lovs from Database Tables
Lists of values are typically static. but from now on you can declare a Lov as having its values retrieved from a SQL query. To do that you create an empty Lov and then use the Administration interface to define the SQL query to execute.

CardIdLinks in Columns
In any type of GridPanel you can now set the columns that represent relations with instances display the label with a link to open the edit viewer for that instance (you’ll need to declared the column as a xeo:columnAttribute and use the enableCardIdLink property.

Inline Bridge with Favorite Selections
Collection attributes are displayed using the Bridge component, now you can display them inline as a “regular” attribute (such as the Lookup component). You can also activate the favorite selections for this type of component

Quick Date Input (DateField)
Date Fields can now have an abbreviated method of input by using the ‘.’ to select the current date, and the ‘.+3’ / ‘.-5’ syntax to select three days from now and five days ago (respectively)

Cardinality restriction in collections
XEO Models have a minOccurs and maxOccurs property in collection attributes which was not being used. Now when you set a minOccurs bigger than 0 or a maxOccurs smaller than ‘N’ the platform will enforce that situation (selecting instances in a lookup will even prevent you from selection if you have already reached the limit for that collection)

Charts with SQL Bind parameters and Label Formatting
Charts can now have bind parameters when using a SQL query and you can provide a map between labels coming from the data source and what to display in chart.

Column wrap (LongText)
GridPanels having columns with LongText content can now be wrapped so that the entire content is displayed in the visible space (property wrapText)

boObjectListBuilder (Builder Pattern to create boObjectLists)
If you ever thought that creating boObjectList instances required you to know a lot of parameters (when you need to tweak things a bit) you can now use the boObjectListBuilder class which implements the builder pattern to create boObjectList instances like the following:

Favorites (Edit viewers)
Edit viewers can now be added to the list of favorites for a given user. This allows users that do much work in a given instance to mark it, and then quickly have access to it using the favorites list.

Lots of Bug fixes: I won’t even start enumerating them as there were lots of them. We really need another way of managing this.

I’ll make a few posts explaining some of the new features in the following days