quarta-feira, 3 de março de 2010

Alert redefinition

Hi guys!
Today a colleague of mine was blocked on a javascript error.
He has dynamic forms developed in c# with a lot of asp custom controls using also some javascript. So the page only showed him an alert message saying that an error ocurred!

His question was: How to determine in which place is giving me this error so i can correct it?

Interesting one...

Next i remebered the alert redefinition function that i documented a few posts below and made some adjustments to answer that question:


window.alert=function(native)
{
return function(e){
native(e);
window.status=arguments.callee.caller;
}
}(window.alert);

function nova()
{
alert('xpto');
}

So, now anywhere i have an alert, that alert will also inform me where that alert was fired. In this case printing that information to the status bar. This routine should only be used for "debugging" purposes, for obvious reasons. In this case, there was so much JS that writing this routine was faster than using JS Debugger and digging to the code.
Anyone has a better solution?

terça-feira, 2 de fevereiro de 2010

Entering the code...

The next step is to analyse the code generated by the 'Sample' macro recording. To do that follow this steps:

1.Click ALT+F8 or the Macros button on developer tab.
2.Choose the 'Sample' macro and click edit.
3.You are now on Microsoft Visual Basic editor.You could overpass step 1 and 2 by clicking on ALT+F11 on the worksheet.
4.Now what do we see? We will see somthing similar to this:

Sub Macro1()
'
' Macro1 Macro
'

'
ActiveCell.FormulaR1C1 = "=SUM(RC[1],RC[2],RC[3])"
Range("B1").Select
ActiveCell.FormulaR1C1 = "1"
Range("C1").Select
ActiveCell.FormulaR1C1 = "2"
Range("D1").Select
ActiveCell.FormulaR1C1 = "3"
Range("D2").Select
End Sub

To limit the execution of our routine we use the 'Sub' and 'End Sub' keyword.
Every line that starts with ' is ignored by the code... It is just simply comments and you are free to write whatever you want.

ActiveCell.FormulaR1C1 = "=SUM(RC[1],RC[2],RC[3])"
This line tells that the active cell (the selected cell) is filled with the SUM formula. In our example the A1 cell is filled with the SUM formula.For now, let's just focus on the rest of the code, and then we will see what RC[1] is meant for. If you are really curious you could search on the web by R1C1-style Notation.

Range("B1").Select
Here we select B1 cell,to fill it with the value '1' remeber?

ActiveCell.FormulaR1C1 = "1"
Now we can say that the active cell (B1 cell) is filled with the value 1.

We'll do it for the rest of the cells to fill the values 2 and 3.

Recording macros

Well, the first concept to understand when learning VBA is Macros Development.
What is a macro?
Making it simple,a macro is a list of actions that the user can record to reproduce anytime later.
This concept is global to the whole Office platform, so we can for example develop Macros to write a document on Word, to do some calculations on Excel, or to estimate some times on Project.

How to start digging on Macros?
Well the first step is to enable the developer toolbar. To do that on Office 2007 you go to the Home button, right click on it, and next choose customize quick access toolbar. Then go to Popular tab and check "Show developer tab in the ribbon".
Next you will see a new tab named Developer where you can do the developer stuff.

How to record a macro?
To start recording let's make a first and simple example:
1.Click on Developer tab
2.Click on record macro
3.Name the macro as 'Sample' and click ok.
4.Select A1 cell and write =SUM( and then select B1, C1 and D1 cell and click enter.
5.It should show you 0 because you haven't filled yet the values of B1, C1 and D1.
6.Write 1 on B1, 2 on C1 and 3 on D1.
7.A1 cell should have the value 6 resulted by the sum of the previous cells.
8.Then click on stop recording on the same place you've started recording.
9.Reset your sheet by reseting the fills of each column you've filled before.
10.Select cell A1.
11.Click Macros. A list of all the macros of that worksheet should appear. Select 'Sample' and click run.

Result: All the steps that you've recorded on the macro are reproduced and the sheet is filled again.

In the next example, we will examine the code generated by this recording so don't delete this macro yet.

Here is a pretty cool video more powerfull than our simple example:
Macros

VBA samples for starters

Hi guys!
I was requested to do a small tutorial to introduce some concepts related to VBA and Visual Basic 6 programming so i took the challenge and i'm starting a small series of tutorials related to this technology!
I'm not expert on this topic so you are free to make considerations.

terça-feira, 12 de janeiro de 2010

JAVA Development recorrent problems

On the place i've worked before, and such as many other JAVA Development companies i always had some common and classic java problems such as:

-installing old versions of a product on a client
-installing software built on my machine
-promoting changes between systems
-version management
-knowing basic stuff like knowing the products that we sell and what is installed in which client
-constantly refactoring projects because conventions on naming the projects
-Having redundancy (the same project doing the same thing but with a different name replicated in the system).

I've always assumed this issues to the complexity of a solution developed in JAVA, and i always thoughted that it was a organization problem. With so many products and so many releases by product, installing the right pieces on the right clients could be a challenge in some cases.
Now i've changed my perspective about this issue. Many of this problems could be solved with a tool.

Now that i learned a little of NWDI, i can tell that it can handle very well some of this issues, saving time for development. On NWDI i can have the following:

-A centralized and maintained list of products. This is a basic requirment on all software houses. We need to know exactly what we sell to our clients.
-A centralized place for defining conventions. This solves the problem of having a document or someone saying that some type of object must have some kind of name. IDE reads this definitions from a centralized place and obligates the developer to follow the conventions defined there.
-The propagation of software is automatic. We only need to approve the software so it can follow a path defined by a team leader (usually DEV, CONS, TEST, PROD). For each system defined in the path, the team leader just needs to save the host and port for communication purposes.
-We have a centralized place where we can see in which systems is installed which software, and this place is auto-maintained by NWDI.

One thing that i can't find on NWDI is the integration with bug trackers. Let's say the customer report a problem (a business/technical issue). The only way i know to relate the problem reported by the user and the software change that corrected the issue is to name the activity (same as commit comments on CVS,SVN) the same name as the reported issue.

I'm not trying to sell NWDI and SAP didn't pay me to promote NWDI, but i would like to know the existence of this tool when i purely done JAVA developement so i can take the best practises from it.

Netweaver Development Infrastructure (NWDI) vs Team Foundation Server (TFS) vs ?

Hi all,
i'm currently learning SAP NWDI. SAP NWDI is a tool provided by SAP with the goal of providing a platform and a model for simplifying development.

When i first started looking at NWDI, my first question was:
Why do we need this when we have:

-SCM tools like SVN, CVS, GIT, VSS, Perforce, Bazaar for source control.
-MAVEN, ANT, NANT and others for building, deployment and automation purposes.
-Continuum, jUnit, nUnit, CruiseControl for continuum developement and tests.
-Eclipse,Visual Studio and many others IDE.
-Bugtrackers like Bugzilla,JIRA and others.

Well, with time passing i've started to see the light here.

Tools such as NWDI for SAP Java Development and TFS for .NET Development are intended to integrate some of these concepts into a model of development. This model provides best practises and a unified method of development.
I know that in IT area we need to continually evolve but software development needs stability. We need a model in which we can rely and covers all the needs of the market independently from the techonology used.

I don't know any tool on JAVA to integrate the tools i've talked above in the same way as NWDI or TFS. Do you know any?

Changing language, preserving content

Hi all,
This is my first post in english, and i'll try to write the following posts using English Language instead of Portuguese. The main goal to obtain here is to train my English which is a little rusty, so sorry for the mistakes