Make eclipse Galileo 3.5 work with NTMLv2 Proxy

I installed eclipse 3.5 at my work place (where we access internet through an authenticated NTML proxy).  I was unable to make eclipse pass through this proxy, which prevented me to install updates and additional software.

Anthony Dahanne’s describes the workaround on his blog (in french). The Apache httpclient implementation should be disabled because it doesn’t work well with NTMLv2 proxies.

For NTLMv2 Proxies, that require user name and password for access the workaround is to

  1. Disable the ECF httpclient provider.
  2. Provide the NTLMv2 proxy authentication info (proxyhost, domain, username, and password)

In practice, edit your eclipse.ini file to append the following properties.

-Dorg.eclipse.ecf.provider.filetransfer.excludeContributors=org.eclipse.ecf.provider.filetransfer.httpclient
-Dhttp.proxyPort=8080
-Dhttp.proxyHost=myproxy
-Dhttp.proxyUser=mydomain\myusername
-Dhttp.proxyPassword=mypassword
-Dhttp.nonProxyHosts=localhost|127.0.0.1

Original article : http://blog.dahanne.net/2009/07/01/eclipse-galileo-3-5-problemes_proxy/
Eclipse bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=281472#c7
Eclipse wiki which provides the solution: http://wiki.eclipse.org/ECF_Filetransfer_Support_for_NTLMv2_Proxies

Export oracle data

This should work with oracle 8 and +

The consistent=yes parameter locks the Objects as read only to ensure data consistency.

Depending on the environment settings the @oracle_sid parameter in the user name may be optional.

exp User_name/user_pass@oracle_sid FULL=y FILE=my_export_file.dmp LOG=my_export_log CONSISTENT=y

or

exp userid=User_name/user_pass@Oracle_sid FULL=y FILE=my_export_file.dmp LOG=my_export_log CONSISTENT=y

to export schema from a user (owner_name)  while logged as an admin (dba_name)

exp userid=dba_name/dba_pass FULL=y FILE=my_export_file.dmp LOG=my_export_log CONSISTENT=y owner=owner_name

Gather Oracle statistics

For all tables from the SCOTT schema

EXEC dbms_stats.gather_schema_stats(’SCOTT’, cascade=>TRUE);

For the table EMP of SCOTT schema

EXEC dbms_stats.gather_table_stats(‘SCOTT’,’EMP’,cascade=>TRUE);

References:

http://www.oradev.com/create_statistics.jsp

Drop all user objects (prior to an oracle import)

# ——————————————————————————————-
Principle:

  • Step 1: the generate_drop_all.sql script is used to generate drop statements for all objects that belongs to the current user. Theses statements are generated into drop_all_objects.sql
  • Step 2: the drop_all_objects.sql script is used to drop everything prior to import
  • Step 3: import…

Details:

# Step 1 :Move to the /tmp directory
# Copy the generate_drop_all.sql file here
# Generate the drop script
exit | sqlplus target_user/target_password @generate_drop_all.sql

# -> a new file drop_all.sql is generated

# Step2 : Run the drop script
exit | sqlplus target_user/target_password @drop_all_objects.sql

# Step3 : Import the dump
imp userid=target_user/target_password file= the_dump_file.dump log=the_log_file.log fromuser=origin_user_name touser=target_user_name

Content of the generate_drop_all.sql file

set feedback off
set trimspool on
set echo off
set verify off
set linesize 200
set pagesize 0
spool drop_all_objects.sql

select ‘drop ‘ || object_type || ‘ ‘ || object_name || ‘ cascade constraints;’
from user_objects
where object_type in (‘TABLE’);

select ‘drop ‘ || object_type || ‘ ‘ || object_name || ‘;’
from user_objects
where object_type not in (‘TABLE’, ‘INDEX’, ‘PACKAGE BODY’, ‘LOB’);

select ‘commit;’
spool off

Import dump in Oracle XE

Import an Oracle dump to oracle XE in 3 steps:

  • Create a directory to contain a new tablespace
  • Create a dedicated tablespace and user that reflects the name of the ones used to export
  • Import the dump into this new tablespace

Detailled instructions

————————————————
Create a directory for Data (tablespace)
———————————————–

mkdir C:\myDataFiles

———————————————————
Create a TAB_CS tablespace

Use exactly this name as it will be requested for import
Connect to XE as System user (use SQL developper for instance)
and run the following script and COMMIT !
———————————————————–

CREATE  TABLESPACE TAB_CS
DATAFILE 'C:\myDataFiles\TAB_CS.ora'
SIZE 10M
AUTOEXTEND ON NEXT 5M;
 
CREATE  USER MyUser
IDENTIFIED BY MyPass
DEFAULT TABLESPACE TAB_CS
TEMPORARY TABLESPACE TEMP
ACCOUNT UNLOCK
QUOTA UNLIMITED ON TAB_CS;
 
GRANT CONNECT TO MyUser;
GRANT RESOURCE TO MyUser;
GRANT DBA  TO MyUser;

—————-
Import the DUMP
—————-
Copy the dump file to c:\TheDumpFIle.dump

Open windows command prompt (Start/Run/cmd) and run:

C:\oraclexe\app\oracle\product\10.2.0\server\BIN\imp.exe M260/M260 file=TheDumpFIle.dump full=yes

Import should run without any warning

Verify that everything is OK ussing an Oracle client connect as MyUservia SQL developper and check tables

Dealing with duplicate accounts

More than often, we have to deal with users who create multiple accounts on the same service.

The following article provide an nice way to regroup similar accounts using the “Levenshtein Distance” to catch typo in user name fields.

The implementation relies on Perl but the principle is easily adaptable to other languages.

http://proudtouseperl.com/2009/04/dealing-with-duplicate-person-data.html

Deployment and architecture at Heroku

Heroku is a company that offers a very  interesting hosting platform for rails applications.

They offer instant deployments, very good git integration and offer on demand processing power.

I have been using their platforms for several month, mainly for prototyping rails applications, I was neither disappointed.

They describe their underlying architecture and a initiate a discussion about the requirements for a effective deployment of web apps.

The agile way: why sprint

Following the introduction to Scrum on Gabriel’s blog, here is an article that describe the first implementation of this agile methodology at Seedcamp.

I could never recommend you too much to attend the free conferences organized by SigmaT, an very active association promoting Agile in the Toulouse (France) area.

Spring configuration tips

So, we decided to use Spring framework… here comes hell !

Without a little management, spring configuration files grow quite fast and may soon become hard to maintain.

Craig Walls’s offers us some spring best-pratices in his excellent Spring-cleaning presentation (pdf).

Another good source is the SpringTips blog that offers us 12 best-practices for spring xml configuration.

To Spring or not ?

I have been spending last weeks defining the architecture of a new web application.

The main driver is to rely on a MDA (Model driven architecture) to generate the major part of the application code thanks to Acceleo . We build custom template files that are converted to a fully working application via acceleo generators.

A proof of concept:

The first versions of this project was developped as a Struts 1 webapp on top of hibernate ORM. The choice of Struts was mainly driven by the fact that the team new this framework quite well … and that we had exmples of code available for it. So we ended up developing our struts-specific templates files to generate the views and controllers of the application.

Spring time has come !

It’s now time to “industrialize” this first version. The main constraint is that we keep what has been developed for Struts. But we also need to implement new functionnality (integration with LDAP, data synchronization with other applications, audit logging, exposition of webservices….).I start to feel that Struts (especialy 1.x) is pretty limited and wil force us to develop modules that could be found out of the box in other Frameworks.

From other projects, I retain that Spring is a very modularized framework, that can be used “on demand”, to provide from basic services to full web application framework.

Why Spring ?

  • we reuse 99% of our existing truts code. By using the dynamic proxies of Spring, we can rely on AOP to add functionnality to our code (the detailled method (IBM)).
  • forces a better modularity of code
  • … that strongly encourages (and ease) unit testing.
  • allows us to modularize the application itself.
  • simplify integration with external systems (mail, LDAP) by providing easy to use templates.

Why not ?

  • Spring configuration files might become complex as they grow.. but we generate them.
  • and… is that all ?

Ressources

It was quite hard to find arguments against Spring, so I will list pro-spring resources here (comments welcome !).