DDD Without any ORM tool, is it possible !!
DDD Without any ORM tool, is it possible !!
Look at the thread http://tech.groups.yahoo.com/group/domaindrivendesign/message/16021
If you have done DDD without any ORM, your comments are valuable.
Please write your views.
CentOS: Server refused to allocate pty
The Problem
When I tried to login to my VPS using putty, It gave me message.
Server refused to allocate pty
And then I was not able to execute any commands.
The solution
Execute following two commands, and it should solve the problem.
/sbin/MAKEDEV pty
/sbin/MAKEDEV tty
I am using lxadmin, so I logged into lxadmin and run above commands from command center.
That’s it ! It works.
Foreign key violation when saving embedded forms
The problem
For one of my symfony based project, I required to create embedded forms.
I have following schema
propel:
user:
id: ~
name: {type: varchar(100)}
password: {type: varchar(100)}
registrations:
id: ~
user_id: {type: integer, foreignTable: user, foreignReference: id, required: true}
Schema shown above is not complete, it just shows important fields only.
I generated model and form classes using propel:build-all task, and then embedded UserForm into RegistrationsForm as follow.
class RegistrationsForm extends BaseRegistrationsForm
{
public function configure()
{
unset($this['user_id']);
$user = $this->getObject()->getUser();
$userform = new UserForm($user);
$this->embedForm("User", $userform);
}
}
It works when updating an existing Registration, but when creating new registration, user_id is not set on new Registration, so no association is made between Registration and user and it gave exception of foreign key constraint violation.
The solution
So what was I doing wrong?
$user = $this->getObject()->getUser();
$userform = new UserForm($user);
This was the wrong way to create new UserForm. It works when updating an existing registration, because the user is already associated with Registration so $this->getObject()->getUser() will return an instance of User.
It won’t work when creating new Registration as $user = $this->getObject()->getUser(); will return null.
You need to check if User is null, then create a new user and set it on Registration.
Correct code
class RegistrationsForm extends BaseRegistrationsForm
{
public function configure()
{
unset($this['user_id']);
$user = $this->getObject()->getUser();
if(is_null($user)) {
$user = new User();
$this->getObject()->setUser($user);
}
$userform = new UserForm($user);
$this->embedForm(“User”, $userform);
}
}
That’s it.. it works like a charm.
ubuntu: install multimedia codecs without internet connection
Problem: You can’t play certain audio/video formats, because required codecs are not installed. So you need to install this extras but again, your machine don’t have direct internet connection.
Solution:
I am still looking for solution. if you have any, let me know.
I think this can solve it http://crashsystems.net/2009/01/keryx-tutorial/
Still trying out and not sure, if it provide an alternative.
Javascript CSV parser
var expr = /,(?=(?:[^\"]*\”[^\"]*\”)*(?![^\"]*\”))/g;
var array = str.split(expr);
it works for me
function parseLineCSV(lineCSV) {
// parse csv line by line into array
var CSV = new Array();
// Insert space before character ",". This is to anticipate 'split' in IE
// try this:
//
// var a=",,,a,,b,,c,,,,d";
// a=a.split(/\,/g);
// document.write(a.length);
//
// You will see unexpected result!
//
lineCSV = lineCSV.replace(/,/g," ,");
lineCSV = lineCSV.split(/,/g);
// This is continuing of 'split' issue in IE
// remove all trailing space in each field
for (var i=0;i
<lineCSV.length;i++) {
lineCSV[i] = lineCSV[i].replace(/\s*$/g,"");
}
lineCSV[lineCSV.length-1]=lineCSV[lineCSV.length-1].replace(/^\s*|\s*$/g,"");
var fstart = -1;
for (var i=0;i=0) {
for (var j=fstart+1;j<=i;j++) {
lineCSV[fstart]=lineCSV[fstart]+","+lineCSV[j];
lineCSV[j]="-DELETED-";
}
fstart=-1;
}
}
fstart = (lineCSV[i].match(/^"/)) ? i : fstart;
}
var j=0;
for (var i=0;i
<lineCSV.length;i++) {
if (lineCSV[i]!="-DELETED-") {
CSV[j] = lineCSV[i];
CSV[j] = CSV[j].replace(/^\s*|\s*$/g,""); // remove leading & trailing space
CSV[j] = CSV[j].replace(/^"|"$/g,""); // remove " on the beginning and end
CSV[j] = CSV[j].replace(/""/g,'"'); // replace "" with "
j++;
}
}
return CSV;
}
It works for me, I got it from here http://purbayubudi.wordpress.com/2008/11/09/csv-parser-using-javascript/
SVN commit failed: Property “svn:needs-lock” needed
Error description: Can not commit binary files into SVN repository.
Error message:
A repository hook failed
svn: Commit failed (details follow):
svn: MERGE request failed on 'XYZ'
svn: Commit blocked by pre-commit hook (exit code 2) with output:
ERROR: Commit failed for the following reasons:
Property "svn:needs-lock" needed for file "xyz binary file".
Must match regex '.*'.
Look at http://subversion.tigris.org/faq.html#binary-files to see how does subversion handles binary files.
When a file consists of binary data, it’s often difficult or impossible to merge two sets of changes made in parallel by different users. For this reason, Subversion 1.2 and later offers a feature known as locking, often known as “reserved checkouts” in other version control systems.
Once a file is locked by an user, another user can not commit it.
svn:needs-lock property
If the property is attached to a file (the value is irrelevant), then the file will have read-only permissions. When the user locks the file and receives a lock token, the file becomes read-write. When the lock is released—either explicitly unlocked, or released via commit—the file returns to read-only again.
Binary files must have this property, otherwise it can not be committed. the value of this property is irrelevant.
Look at http://svnbook.red-bean.com/en/1.2/svn.advanced.locking.html it explains SVN locking model
Solution
Add the svn:needs-lock property to the file in question. The SVN property can be set using SVN client like tortoise or using SVN propset sub command from command prompt.
svn propset svn:needs-lock '*' file name
For more information on SVN properties, look at http://svnbook.red-bean.com/en/1.4/svn.advanced.props.html
That’s it, try to commit it.
Eclipse project missing java builder
Description: Eclipse can not build the project, because project is missing default builder. It happens most of the time when checking out project from SVN or CVS.
Solution: You need to add the default Java builder into .project file.
Verify that following lines are present in .project file of the eclipse project. If it is not present in the file, copy it from here and save the file.
Adding default Java builder
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
That’s it! select the Java builder from project propertiese > builder, clean and build the project again. you should be able to build the project now.
SSLHandshakeException: When trying trying to access a HTTPS URL
I was trying to access a HTTPS URL using java.net.HttpURLConnection and got following error.
Error
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Most of the time, this exception occurs when you are using selfsigned certificate.
Reason: The host that you are trying to connect has an self signed certificate, and that certificate is not in your truststore.
Description:
Actually I am using the tomcat server and I have enabled HTTPS connector. I have created a selfsigned certificate for the tomcat.
I have a standalone Java program which connects to the server and downloads file over HTTPS. But when I try to connect to the server, it threw SSLHandshakeException.
Solution: Solution to resolve this exception is to import the selfsigned certificate into the system truststore.
Below steps explains how to do it.
Step-1: Export the certificate.
Export your self signed certificate using keytool utility provided with JDK.open the command prompt and change current directory to JAVA_HOME/bin. Now run following command.
keytool -export -alias tomcat -storepass changeit -file tomcat.cer
It will create a tomcat.cer file in the current directory.
Note: You may need to modify -alias and -storepass options if required. Default keystore password is ‘changeit’.
Step-2: Import the certificate into truststore.
keytool -import -alias tomcat -file tomcat.cer -keystore <path to JAVA_HOME>\jre\lib\security\cacerts
or
keytool -import -alias tomcat -file tomcat.cer -keystore ..\jre\lib\security\cacerts
It will ask you to enter keystore password. Default password is ‘changeit’. when it ask, ‘Trust this certificate?’, type yes and press enter.
Step-3: Verify that the certificate is added successfully
keytool -list -keystore C:\j2sdk1.4.2_16\jre\lib\security\cacerts
It will list all the certificate. verify that the certificate you just added is present in list.
That’s it! now run your program again.
Could not perform XSLT transformation. Make sure PHP has been compiled/configured to support XSLT.
Error when running symfony on wamp server.
Description: I was trying to run the symfony PHP framework. I tried to build the model using command
php symfony propel:build-model.
And it gave error Could not perform XSLT transformation. Make sure PHP has been compiled/configured to support XSLT.
Environment: Wamp server 2.0, PHP 5.2.5, Apache 2.2.6.
Reason: PHP-XSL extension is not enabled. By default, Wamp server doesnt enable php-xsl php extension. and php-xsl is required.
Solution: Enable php-xsl extension.
left click on WAMP’s tray icon and than in PHP>PHP extensions select php-xsl and enable it.But there is one more php.ini file, which WAMP won’t change, we need to do it by hand, open: C:\wamp\bin\php\php5.2.5\php.ini and remove “;” from the line
;extension=php_xsl.dll
And then restart the server. Try to run the build command again.
Some useful links to get symfony running properly on wamp.
http://trac.symfony-project.org/wiki/SymfonyOnWAMP
http://anandshahil11.wordpress.com/symfony-php-framwework-installation-on-windows-wamp/
An internal error occurred during updating JSP index
Problem Whenever I replace any jar file in workspace, eclipse shows error
An internal error occurred during updating JSP index
Solution the only solution I know so far is, restart eclipse workspace.