Categories
Software development Web Windows

Consuming a PHP SOAP web service from C# client

Reading Time: < 1 minute

I need to create a SOAP client in C#, and in order to test it I need a SOAP web service. Since my hosting company uses MySQL/PHP technology stack, I am using this PHP Soap web service example.

For the C# soap client, I am following this example on stackoverflow. But there is one problem when I tried to run the example. I got the error (exception) like the following:
The content type text/xml; charset=ISO-8859-1 of the response message does not match the content type of the binding (text/xml; charset=utf-8). If using a custom encoder, be sure that the IsContentTypeSupported method is implemented properly.

Again I found this thread on stackoverflow which seems relevant. It talked about the custom message encoder developed by Microsoft, and Paul Morgado’s addition to the CustomTextMessageEncoder class (just add his method at the end of the class). There is one more thing, the configuration file for the app. In my case, it’s something like the following: (note the messageVersion and bindingElementExtensions definition, there was some error in the Microsoft documentation regarding the latter one).

Categories
Software development

Set up SVN (Subversion) on local machine (Windows)

Reading Time: < 1 minute

I need to do some development work on Windows, using Visual Studio. I like to have a simple source code control system, in recent years I have used CVS, Subversion and git (on Mac). I did a google search on Subversion and found some instructions regarding setting up Subversion.

Setting up Subversion on Windows

and this one

Installing and Configuring SVNServe and TortoiseSVN on Windows

Download/install the SVN server and starting the windows service was relatively straightforward. So as the Tortoise SVN client. Couple things keep in mind:

1) Some sites requires registration or install additional software, I chose sites that does not require registration.

2) I found sometimes I can not open up svn://localhost successfully, in the same command prompt window where I start the SVN service. After I close the command prompt and tried again, it worked. The commands I used are:

set SVN_EDITOR=c:\windows\system32\notepad.exe
svn mkdir svn://localhost/myproject

Categories
Software development

Some Oracle and Java interview questions

Reading Time: 4 minutes

(Update 02-27-2019) It’s 5 and half years since last update. And two more jobs for me :] Noticed from recent job search in STL, code exercise and code testing (at the spot, pair programming, TDD) is becoming common now in STL, which is unthink of 5.5 years back. I did add a few blog posts on this fronts recently.

Javascript jasmine node.js based testing

Code exercise : linear chamber animation / simulation

Spring, Spring Boot and React

Also, on pure concepts side, Java (J2SE) and J2EE (Spring and Hibernate) are still important and questions were asked around both areas too.

Example questions:
JPA annotations
Hibernate configuration (XML file)
OOP Concepts
Java Interface vs Abstract class (do we need to implement abstract method to use the class)
final finally finalize java
spring model view controller annotation
classpath loading

(Updated 08-31-2013) For those brave hearts venture out the silicon valley/seattle, here is the must-do homework (LeetCode). Chinese version (here and here).

(Original)
Oracle
SQL: Inner join and out join

Function, (stored) procedure and package

What is a trigger in Oracle

“…Oracle lets you define procedures called triggers that run implicitly when an INSERT, UPDATE, or DELETE statement is issued against the associated table or, in some cases, against a view, or when database system actions occur. These procedures can be written in PL/SQL or Java and stored in the database, or they can be written as C callouts.

Triggers are similar to stored procedures. A trigger stored in the database can include SQL and PL/SQL or Java statements to run as a unit and can invoke stored procedures. However, procedures and triggers differ in the way that they are invoked. A procedure is explicitly run by a user, application, or trigger. Triggers are implicitly fired by Oracle when a triggering event occurs, no matter which user is connected or which application is being used…”

A shorter version at orafaq forum

Longer version at orafaq.com/wiki

7. Compare and contrast TRUNCATE and DELETE for a table.
Both the truncate and delete command have the desired outcome of getting rid of all the rows in a table. The difference between the two is that the truncate command is a DDL operation and just moves the high water mark and produces a now rollback. The delete command, on the other hand, is a DML operation, which will produce a rollback and thus take longer to complete.

8. Give the reasoning behind using an index.
Faster access to data blocks in a table.

11. Give some examples of the types of database contraints you may find in Oracle and indicate their purpose.
A Primary or Unique Key can be used to enforce uniqueness on one or more columns.
A Referential Integrity Contraint can be used to enforce a Foreign Key relationship between two tables.
A Not Null constraint – to ensure a value is entered in a column
A Value Constraint – to check a column value against a specific set of values.

DDL vs DML
Data Definition Language (DDL) statements are used to define the database structure or schema. Some examples:
CREATE – to create objects in the database
ALTER – alters the structure of the database
DROP – delete objects from the database
TRUNCATE – remove all records from a table, including all spaces allocated for the records are removed
COMMENT – add comments to the data dictionary
RENAME – rename an object

Data Manipulation Language (DML) statements are used for managing data within schema objects. Some examples:
SELECT – retrieve data from the a database
INSERT – insert data into a table
UPDATE – updates existing data within a table
DELETE – deletes all records from a table, the space for the records remain
MERGE – UPSERT operation (insert or update)
CALL – call a PL/SQL or Java subprogram
EXPLAIN PLAN – explain access path to data
LOCK TABLE – control concurrency

1. Describe the difference between a procedure, function and anonymous pl/sql block. Candidate should mention use of DECLARE statement, a function must return a value while a procedure doesn?t have to.

PL/SQL developer vs. Toad

Reporting
SQL Server Reporting Services (Microsoft); SQL Server Reporting Services (wiki)

Oracle 10g reports (PDF); Oracle Reports Tutorial

LIMS (wiki)

Java
(Updated 08-31-2013) OOPS Interview Questions

Top 20 Core Java Interview questions answers asked in Investment Bank

(Original) 30 Core Java questions (sys-con)

J2EE interview questions (techInterviews.com)

more j2ee interview questions

Java: hashMap and hashTable

Hashtable is synchronized, whereas HashMap is not. This makes HashMap better for non-threaded applications, as unsynchronized Objects typically perform better than synchronized ones.

Difference between Get and Post method on web (link one)

Lazy initialization, dependency injection

3 Things in OO:
data encapsulation, polymorphism, dynamic dispatch (when a method is invoked on an object, the object itself determines what code gets executed by looking up the method at run time in a table associated with the object. This feature distinguishes an object from an abstract data type (or module), which has a fixed (static) implementation of the operations for all instances. It is a programming methodology that gives modular component development while at the same time being very efficient.)

How to use static method? (Include class name)

Aggregation

Throwable interface (exception)

What is reflection

Interface vs. abstract class
non-static method
final: immutable, e.g. String
finalized method

tree-reflection

Categories
Software development

JSF Richfaces best practice: drop down and data scroller

Reading Time: < 1 minute

drop down box
Clear a list for selectionOneMenu every time, got burned by this in a “page number” drop down for Richfaces data scroller. And some other places.

Use validator
keep in mind it will overwrite the required = “true”, if the user does not select a valid value from drop down, it will give error message during Save method.

Assign 0 to “–select–” ?
Yes or no. Add 0 means 0 is a selectable option, so if one wants to enforce user to select something using required=”true”, it will pass this check. Thus comes in the validator, in which one can say “0” is not valid.

Page number for data scroller
1) t:saveState if we can not have session scope for dataBean;
2) the drop down tip above;
3) When “adding or deleting rows” and it cause the total number of pages changes, make sure set the correct page number in the “action” (save) methods.

Categories
Software development

Oracle, Java etc.

Reading Time: 2 minutes

The following was written more than a year ago…

======
Got opportunity to work on those two technologies recently due to job change. Had some gotchas as I transform from C++, CAD programming to this new program paradigm.

Data problem vs. coding error
In CAD world, sometimes there is problem with the data (CAD file) itself. But most of the time I focus my effort debugging the coding error in my own code, not trying to debugging the data itself. In Oracle/Database world, I found it more often that the data itself could complicate problem. Because the relational database has relationship between table, sometimes we can not add/delete/update table at will due to dependencies (data integrity). This also bring about the second topic I want to discuss.

C++ vs. Java
Java is not as flexible as C++. For instance, how to pass data back from a function, so far I found one way: using the return data. In C++, I used the pointer and reference quite a bit. The wiring of inheritance and interface (implementation) could also got a bit complicated: basically one needs to draw the relationships on a paper to better understand all those.

Eclipse vs. Visual Studio
Eclipse (the free Java IDE) is quite powerful, actually. It’s also highly configurable, with so many plug-ins, e.g., this subclipse integrates Eclipse with Subversion. I remember I could not do such things inside Visual Studio (for Perforce).

Categories
Software development

Dirty flag java script, dynamic drop down

Reading Time: < 1 minute

Dirty flag on a HTML form is much trickier than I thought, that is, it is tricker when I started to programming for dirty flag.

Saw this javascript snippet. It works great except in my case, I was generating dynamic drop down (selection menu), and in a lot of cases it behaves as opposite to expected (i.e., it shows the form is dirty when it is not, and vice versa). Found out there are couple things came into play.

1) The default selection (type “0”), or select “nothing”, I forgot to set the value “0” (string type).

2) Second, I forgot to clear some of the derivative selections when I make selection the primary selection menu (basically it will dynamically generate other drop downs based on the primary selection).

3) Third, allow type “0” has other effect, I had to remove required=”true” validation from the selection menu, and validate it manually. Also, after I made this optional (removed required=”true”), the actionListener will get triggered when I make selection type “0”, previously it was not entering it, and caused other rendering issues.

4) Last but not least, I added a “validator” to the primary selection menu (basically it will give error if I select “0” type), and it will not trigger the actionListener again. Madness. So basically I have to do the validation somewhere else.

Categories
iPhone app Software development Web

Software updates

Reading Time: 2 minutes

WordPress 3.1.1
Finally I got hands around my blog (this one stlplace) and did the WordPress upgrade. I put off the upgrade in the past primarily due to my laziness: there is no automatic update due to I was running on WP 2.0.2. The upgrade itself is not too bad, I followed those two articles on Backup database and Run manual update. I used phpMyAdmin for the WP database backup. For the WP upgrade the only tricky part for me is:

“…Upload the individual files from the new wp-content folder to your existing wp-content folder, overwriting existing files. Do NOT delete your existing wp-content folder. Do NOT delete any files or folders in your existing wp-content directory (except for the one being overwritten by new files)…”

I know “directory overwriting” generally works on Windows system, but we are talking about UNIX (Linux to be precise). The command I used goes like this (in the blog root directory):

cp -r -u new_wp-content_dir .
(here -r means recursive for directories; -u means update)
I believe it did the trick, as I can run upgrade database afterwards. After that I enabled the necessary plugins. The only plugin stopped working is the ultimate warrior tags. The rest are fine.

Btw, I also added WPtouch plugin so that this blog works better on iPhone.

Xcode 3.2.6
I found my old Xcode 3.2.2 can not handle block as it’s necessary to run Ray’s RSS reader example. Download the software from Apple, install, and found this “Base SDK missing” in the new Xcode. Did some google, the trick is to “use latest SDK” in the “project => build” setting. I noticed we can also build “older” targets by changing the target in “deployment target”. Obviously there is a limit as to how far we can go back (I have not checked that yet).

Btw, I found the iPhone 4 simulator looks cooler than iPhone 3 simulator 🙂

Categories
iPhone app Software development

iPhone iOS dev blogs

Reading Time: 2 minutes

The following are iPhone development blogs I often read. Note I used Google reader to get them. I also listed some of the blogs under “dev” category in the side bar (small).

Technical
iPhone development by Jeff Lamarche. Jeff is the author of the best beginners book for iPhone dev “Beginning iPhone development”. Recently I found his profile at LinkedIn, and found he was a law school graduate, which is total surprise to me. He is definitely not a lawyer type in terms of writing (blog) and talking style (from his tweets).

Cocoanetics (aka Dr. Touch): Oliver Drobnik, the former Windows Admin turned full time iPhone iOS developer lives in Austria (Europe). Note he recently changed the name from Dr. Touch to Cocoanetics. Regardless the name change, I found he has a very good sense of both technology and business: I think his article on Notifications and “Part Store” (he sold his components software like parts) are very interesting.

iPhone developer:tips written primarily by John Muchow, who is the author of Core J2ME (which is the primary mobile development language pre iPhone, it is still used on Blackberry platform, and note Android used a different Java virtual machine developed by Google). I think some article such as “rename Xcode project”, “Prevent application being placed in background” etc. to be interesting.

iPhone development blog: written by Nick Dalton who got into iPhone dev early. A lot of goodies include this iPhone iOS app store reject reasons. I believe he is a co-founder and CTO of a mobile development firm in SF (can not recall the company name on top of my head, you may google).

Ray Wenderlich: the blog bears the author’s name. It has a lot of meaningful tutorials (not those “Hello world” stuff). Besides that, I found this How to host beta test for iOS app” to be interesting.

Other Resources, news, gossips etc
iPhone developer news (Apple): get it from Apple iOS developer center. The official place for all the announcement etc.

Mobile Orchard: used to be good technical stuff, stopped update this April, just resumed blogging.

43 iPhone app development resources: the list is a bit dated, but still useful.

I will add more as time goes.

Categories
Software development

Some corrections to Hibernate tutorial

Reading Time: 2 minutes

Hibernate logo
I was referring to the First application at Hibernate (Jboss) offical documentation. I found some problems when doing the exercise: just want to share some of my findings so others may benefit.

1) dependency version missing: there are already some some discussions on the Hibernate discussion forum, such as this one and that one. I followed the first one: added the version numbers as suggested and the problem went away.

2) jdbc driver can not be found, the fix is to

mvn install:install-file -DgroupId=hsqldb -DartifactId=hsqldb -Dversion=1.8.1.2 -Dpackaging=jar -Dfile=/path/to/your/hsqldb.jar

in my case (mac) this is /Users/major_xu/Downloads/hsqldb/lib/hsqldb.jar

I saw discussion on this one, too, the suggestion is to “add classpath for hsqldb.jar”. But I don’t know how to do it in maven command line.

3) misc: there are a lot other corrections:

Categories
Career Software development

How to find a job in this difficult market?

Reading Time: 2 minutes

Particularly in the IT (software development) field. Obviously the No. 1 thing is “never give up”. I started looking about 9 months ago when I felt “the need to look”: both for defense (fear of lay off) and offense (opportunities better matching my interest and skill). I had to admit finding a job is not an easy thing in this environment. Why look for another job while one still has a job (besides the main reason behind the change)? The simple answer is, only when a person still has a job or other sources of income, he/she will have the space to look for something better.

job search logo
(Source: Brandies U.)

Strategy and Job search sites I used