Open a command window by going to Start, then Run and typing in CMD.
command prompt
Now type in the following command at the prompt:
format /FS:FAT32 X:
Replace the letter X with the letter of your external hard drive in Windows. Windows will go ahead and begin formatting the drive in FAT32!
http://blog.ysoserius.com/2009/06/how-to-format-external-hard-drive-to.html
Tuesday, October 20, 2009
Thursday, October 15, 2009
MS SQL Server – fn_my_permissions
fn_my_permissions
Returns a list of the permissions effectively granted to the principal on a securable.
Examples:
A. Listing effective permissions on the server
The following example returns a list of the effective permissions of the caller on the server.
SELECT * FROM fn_my_permissions(NULL, ‘SERVER’);
GO
B. Listing effective permissions on the database
The following example returns a list of the effective permissions of the caller on the AdventureWorks database.
USE AdventureWorks;
SELECT * FROM fn_my_permissions (NULL, ‘DATABASE’);
GO
C. Listing effective permissions on a view
The following example returns a list of the effective permissions of the caller on the vIndividualCustomer view in the Sales schema of the AdventureWorks database.
USE AdventureWorks;
SELECT * FROM fn_my_permissions(‘Sales.vIndividualCustomer’, ‘OBJECT’)
ORDER BY subentity_name, permission_name ;
GO
D. Listing effective permissions of another user
The following example returns a list of the effective permissions of database user Wanida on the Employee table in the HumanResources schema of the AdventureWorks database. The caller requires IMPERSONATE permission on user Wanida.
EXECUTE AS USER = ‘Wanida’;
SELECT * FROM fn_my_permissions(‘HumanResources.Employee’, ‘OBJECT’)
ORDER BY subentity_name, permission_name ;
REVERT;
GO
E. Listing effective permissions on a certificate
The following example returns a list of the effective permissions of the caller on a certificate named Shipping47 in the current database.
SELECT * FROM fn_my_permissions(‘Shipping47’, ‘CERTIFICATE’);
GO
F. Listing effective permissions on an XML Schema Collection
The following example returns a list of the effective permissions of the caller on an XML Schema Collection named ProductDescriptionSchemaCollection in the AdventureWorks database.
USE AdventureWorks;
SELECT * FROM fn_my_permissions(‘ProductDescriptionSchemaCollection’,
‘XML SCHEMA COLLECTION’);
GO
G. Listing effective permissions on a database user
The following example returns a list of the effective permissions of the caller on a user named MalikAr in the current database.
SELECT * FROM fn_my_permissions(‘MalikAr’, ‘USER’);
GO
H. Listing effective permissions of another login
The following example returns a list of the effective permissions of SQL Server login WanidaBenshoof on the Employee table in the HumanResources schema of the AdventureWorks database. The caller requires IMPERSONATE permission on SQL Server login WanidaBenshoof.
EXECUTE AS LOGIN = ‘WanidaBenshoof’;
SELECT * FROM fn_my_permissions(‘AdventureWorks.HumanResources.Employee’, ‘OBJECT’)
ORDER BY subentity_name, permission_name ;
REVERT;
GO
http://mirabedini.com/blog/?p=11
Returns a list of the permissions effectively granted to the principal on a securable.
Examples:
A. Listing effective permissions on the server
The following example returns a list of the effective permissions of the caller on the server.
SELECT * FROM fn_my_permissions(NULL, ‘SERVER’);
GO
B. Listing effective permissions on the database
The following example returns a list of the effective permissions of the caller on the AdventureWorks database.
USE AdventureWorks;
SELECT * FROM fn_my_permissions (NULL, ‘DATABASE’);
GO
C. Listing effective permissions on a view
The following example returns a list of the effective permissions of the caller on the vIndividualCustomer view in the Sales schema of the AdventureWorks database.
USE AdventureWorks;
SELECT * FROM fn_my_permissions(‘Sales.vIndividualCustomer’, ‘OBJECT’)
ORDER BY subentity_name, permission_name ;
GO
D. Listing effective permissions of another user
The following example returns a list of the effective permissions of database user Wanida on the Employee table in the HumanResources schema of the AdventureWorks database. The caller requires IMPERSONATE permission on user Wanida.
EXECUTE AS USER = ‘Wanida’;
SELECT * FROM fn_my_permissions(‘HumanResources.Employee’, ‘OBJECT’)
ORDER BY subentity_name, permission_name ;
REVERT;
GO
E. Listing effective permissions on a certificate
The following example returns a list of the effective permissions of the caller on a certificate named Shipping47 in the current database.
SELECT * FROM fn_my_permissions(‘Shipping47’, ‘CERTIFICATE’);
GO
F. Listing effective permissions on an XML Schema Collection
The following example returns a list of the effective permissions of the caller on an XML Schema Collection named ProductDescriptionSchemaCollection in the AdventureWorks database.
USE AdventureWorks;
SELECT * FROM fn_my_permissions(‘ProductDescriptionSchemaCollection’,
‘XML SCHEMA COLLECTION’);
GO
G. Listing effective permissions on a database user
The following example returns a list of the effective permissions of the caller on a user named MalikAr in the current database.
SELECT * FROM fn_my_permissions(‘MalikAr’, ‘USER’);
GO
H. Listing effective permissions of another login
The following example returns a list of the effective permissions of SQL Server login WanidaBenshoof on the Employee table in the HumanResources schema of the AdventureWorks database. The caller requires IMPERSONATE permission on SQL Server login WanidaBenshoof.
EXECUTE AS LOGIN = ‘WanidaBenshoof’;
SELECT * FROM fn_my_permissions(‘AdventureWorks.HumanResources.Employee’, ‘OBJECT’)
ORDER BY subentity_name, permission_name ;
REVERT;
GO
http://mirabedini.com/blog/?p=11
Monday, September 21, 2009
WebSphere Concepts: Cell, Node, Cluster, Server…
Quick post… If you are not familiar with WebSphere at first you might get confused with its concepts: cell, deployment manager, node, node agent, cluster, server, …
First of all, lets start with the concept of a Cell:
A Cell is a virtual unit that is built of a Deployment Manager and one or more nodes. I guess a picture will help making things clearer:
But still there are a few concepts that need to be explained. The next obvious one is the Deployment Manager.
The Deployment Manager is a process (in fact it is an special WebSphere instance) responsible for managing the installation and maintenance of Applications, Connection Pools and other resources related to a J2EE environment. It is also responsible for centralizing user repositories for application and also for WebSphere authentication and authorization.
The Deployment Manager communicates with the Nodes through another special WebSphere process, the Node Agent.
The Node is another virtual unit that is built of a Node Agent and one or more Server instances.
The Node Agent it the process responsible for spawning and killing server processes and also responsible for configuration synchronization between the Deployment Manager and the Node. Extra care must be taken when changing security configurations for the cell, since communication between Deployment Manager and Node Agent is ciphered and secured when security is enabled, Node Agent needs to have configuration fully resynchronized when impacting changes are made to Cell security configuration.
Servers are regular Java process responsible for serving J2EE requests (eg.: serving JSP/JSF pages, serving EJB calls, consuming JMS queues, etc).
And to finish, Clusters are also virtual units that groups Servers so resources added to the Cluster are propagated to every Server that makes up the cluster, this will in fact affect usually more than a single Node instance.
Lets finish this post with another diagram to illustrate all those concepts.
http://itdevworld.wordpress.com/2009/05/03/websphere-concepts-cell-node-cluster-server/
First of all, lets start with the concept of a Cell:
A Cell is a virtual unit that is built of a Deployment Manager and one or more nodes. I guess a picture will help making things clearer:
But still there are a few concepts that need to be explained. The next obvious one is the Deployment Manager.
The Deployment Manager is a process (in fact it is an special WebSphere instance) responsible for managing the installation and maintenance of Applications, Connection Pools and other resources related to a J2EE environment. It is also responsible for centralizing user repositories for application and also for WebSphere authentication and authorization.
The Deployment Manager communicates with the Nodes through another special WebSphere process, the Node Agent.
The Node is another virtual unit that is built of a Node Agent and one or more Server instances.
The Node Agent it the process responsible for spawning and killing server processes and also responsible for configuration synchronization between the Deployment Manager and the Node. Extra care must be taken when changing security configurations for the cell, since communication between Deployment Manager and Node Agent is ciphered and secured when security is enabled, Node Agent needs to have configuration fully resynchronized when impacting changes are made to Cell security configuration.
Servers are regular Java process responsible for serving J2EE requests (eg.: serving JSP/JSF pages, serving EJB calls, consuming JMS queues, etc).
And to finish, Clusters are also virtual units that groups Servers so resources added to the Cluster are propagated to every Server that makes up the cluster, this will in fact affect usually more than a single Node instance.
Lets finish this post with another diagram to illustrate all those concepts.
http://itdevworld.wordpress.com/2009/05/03/websphere-concepts-cell-node-cluster-server/
Friday, September 4, 2009
How does cluster computer work in a network? How do they send message to one another?
Cluster Computer, this technology used to maintain availability of server or computer fully(24 hours, 365 days). For this kind of support they configure the first server then they configure the second server with the same configuration. Both server connected over network(sometime both in geographically different location). The two server having same IP address with clustering software. Also there is additional network card in both computers. This maintained the Heart Beat of cluster server.
Suppose the first computer/server is the main one, whenever the main fails the second one going to be linked.
So the second computer always checks the Heart Beat of first server for each micro seconds, if heart beat fails the second going to be response the request over network.
http://answers.yahoo.com/question/index?qid=20090820022457AADuqmT
Suppose the first computer/server is the main one, whenever the main fails the second one going to be linked.
So the second computer always checks the Heart Beat of first server for each micro seconds, if heart beat fails the second going to be response the request over network.
http://answers.yahoo.com/question/index?qid=20090820022457AADuqmT
Thursday, September 3, 2009
Local Jobs
Have you heard? Local is the new organic! And Simply Hired's making it easier than ever for you to taste some local flavor. Search for local jobs and get tons of tasty factoids on local employment and economies - all the stuff that makes up that ever-elusive "quality of life" thing.
http://www.simplyhired.com/a/local-jobs/home
http://www.simplyhired.com/a/local-jobs/home
Thursday, August 27, 2009
How to Install ANT in Windows XP
1.First,You must have JDK installed first.
2.Get the ANT for windows here:
view plaincopy to clipboardprint?
1. http://ant.apache.org/bindownload.cgi
http://ant.apache.org/bindownload.cgi
choose latest version with zip package
3.After download ANT,extract zip package in (for example) C:\Ant
4.Set ANT_HOME
* Right click My Computer icon
* Choose properties
* Choose Advanced Tab
* Choose Environtmen Variables Button
* In the System Variables, click New Button
* Give the Variable Name:ANT_HOME
Give the Value: C:\Ant
* Click OK
Then,we’ll add new ANT_HOME path,
Find PATH in the Variable Column in System variables frame
* After found, click Edit button
* Then, add the following text in the bottom of Variable value:
view plaincopy to clipboardprint?
1. %ANT_HOME%\bin;
%ANT_HOME%\bin;
* Click OK to finish
5.Check wheter ANT works correctly or not.
In the command prompt, type:
view plaincopy to clipboardprint?
1. ant -version
ant -version
then click enter,
if the result text is something like:
view plaincopy to clipboardprint?
1. Apache Ant version 1.7.1 compiled on June 27 2008
Apache Ant version 1.7.1 compiled on June 27 2008
then your ANT is work correctly on your Windows
6.The end.
http://omrudi.wordpress.com/2008/11/08/how-to-install-ant-in-windows-xp/
2.Get the ANT for windows here:
view plaincopy to clipboardprint?
1. http://ant.apache.org/bindownload.cgi
http://ant.apache.org/bindownload.cgi
choose latest version with zip package
3.After download ANT,extract zip package in (for example) C:\Ant
4.Set ANT_HOME
* Right click My Computer icon
* Choose properties
* Choose Advanced Tab
* Choose Environtmen Variables Button
* In the System Variables, click New Button
* Give the Variable Name:ANT_HOME
Give the Value: C:\Ant
* Click OK
Then,we’ll add new ANT_HOME path,
Find PATH in the Variable Column in System variables frame
* After found, click Edit button
* Then, add the following text in the bottom of Variable value:
view plaincopy to clipboardprint?
1. %ANT_HOME%\bin;
%ANT_HOME%\bin;
* Click OK to finish
5.Check wheter ANT works correctly or not.
In the command prompt, type:
view plaincopy to clipboardprint?
1. ant -version
ant -version
then click enter,
if the result text is something like:
view plaincopy to clipboardprint?
1. Apache Ant version 1.7.1 compiled on June 27 2008
Apache Ant version 1.7.1 compiled on June 27 2008
then your ANT is work correctly on your Windows
6.The end.
http://omrudi.wordpress.com/2008/11/08/how-to-install-ant-in-windows-xp/
Thursday, August 13, 2009
Fix Mac OS X Mouse Acceleration Curve
OS X has many great design wins, but the mouse acceleration curve is not one of them. Using a mouse under OS X feels very unnatural if you’ve ever used another operating system. The pointer moves too slowly when you move the mouse a little and too quickly when you try to speed it up. This is because the default acceleration curve is S-shaped and far too steep.
Unfortunately, OS X (as of 10.5 Leopard anyway) provides no built-in mechanism to allow users to easily change the acceleration amount or even to turn it off. Luckily, there are some 3rd-party solutions that can correct the problem, though not all of them are free. Let’s take a look at 4 of them below.
The Contenders
There are 1 (or 2) free and 3 paid solutions covered in this guide. They are…
iMouseFix and MouseFix (Free)
iMouseFix by Lavacat Software is an extremely simple program that allows you change or disable the acceleration speed. It is actually a GUI version of MouseFix by Richard Bentley. I’ve found that iMouseFix does make the mouse somewhat better, but the movement is still not as desirable as the other programs offer.
iMouseFix is based on an older version (1.0) of the MouseFix core code, though, and two updates (1.1 and 1.2) are also available that improve linear response and provides a feeling more similar to Windows XP, respectively. If iMouseFix doesn’t do it for you, give MouseFix 1.1 or 1.2 a try if you aren’t afraid of running console programs.
SteerMouse ($20)
SteerMouse by Plentycom Systems is my personal favorite in this list. After installation, it adds an entry into the control panel to configure settings including tracking speed and button mappings with application profile support. I was able to fully utilize all the buttons on my Logitech G5 gaming mouse using SteerMouse, which I could not do before as Logitech’s Mac software does not support this mouse.
SteerMouse costs $20 and there is a 30-day trial period for new installations. It supports USB and Bluetooth mice. Tip: To disable acceleration with SteerMouse, set the Tracking Speed to 0 and use the Sensitivity setting to change cursor speed.
USB Overdrive ($20)
USB Overdrive by Alessandro Levi Montalcini is a mouse driver that supports USB and Bluetooth mice. Like SteerMouse, it allows configuration of buttons and acceleration. The two programs are essentially substitutes and you’ll have to decide which you prefer.
USB Overdrive costs $20 although the trial version is not limited in features or time. There is only a reminder at login and short time delay when starting the UI.
ControllerMate ($15)
ControllerMate by OrderedBytes is a different beast than the others. This program is for those people who really want extremely detailed control over their input devices. It can certainly be used to adjust mouse acceleration settings, but it can do so much more. Discussing such features is outside the scope of this article, but do take a look at their website if interested.
ControllerMate costs $15 and a feature-limited trial version is also available.
Summary
We’ve taken a look at 4 different programs that can modify the mouse acceleration settings in OS X. For those who just want to adjust the acceleration settings, try iMouseFix or MouseFix. For button assignment and profile support, take a look at SteerMouse and USB Overdrive. Finally, for more control than you will probably ever need over your input devices, give ControllerMate a glance.
It is unfortunate that Apple does not include a control panel for controlling acceleration. However, one of the solutions above should hopefully satisfy your needs.
http://codesociety.com/2009/07/26/fix-mac-os-x-mouse-acceleration-curve/
Unfortunately, OS X (as of 10.5 Leopard anyway) provides no built-in mechanism to allow users to easily change the acceleration amount or even to turn it off. Luckily, there are some 3rd-party solutions that can correct the problem, though not all of them are free. Let’s take a look at 4 of them below.
The Contenders
There are 1 (or 2) free and 3 paid solutions covered in this guide. They are…
iMouseFix and MouseFix (Free)
iMouseFix by Lavacat Software is an extremely simple program that allows you change or disable the acceleration speed. It is actually a GUI version of MouseFix by Richard Bentley. I’ve found that iMouseFix does make the mouse somewhat better, but the movement is still not as desirable as the other programs offer.
iMouseFix is based on an older version (1.0) of the MouseFix core code, though, and two updates (1.1 and 1.2) are also available that improve linear response and provides a feeling more similar to Windows XP, respectively. If iMouseFix doesn’t do it for you, give MouseFix 1.1 or 1.2 a try if you aren’t afraid of running console programs.
SteerMouse ($20)
SteerMouse by Plentycom Systems is my personal favorite in this list. After installation, it adds an entry into the control panel to configure settings including tracking speed and button mappings with application profile support. I was able to fully utilize all the buttons on my Logitech G5 gaming mouse using SteerMouse, which I could not do before as Logitech’s Mac software does not support this mouse.
SteerMouse costs $20 and there is a 30-day trial period for new installations. It supports USB and Bluetooth mice. Tip: To disable acceleration with SteerMouse, set the Tracking Speed to 0 and use the Sensitivity setting to change cursor speed.
USB Overdrive ($20)
USB Overdrive by Alessandro Levi Montalcini is a mouse driver that supports USB and Bluetooth mice. Like SteerMouse, it allows configuration of buttons and acceleration. The two programs are essentially substitutes and you’ll have to decide which you prefer.
USB Overdrive costs $20 although the trial version is not limited in features or time. There is only a reminder at login and short time delay when starting the UI.
ControllerMate ($15)
ControllerMate by OrderedBytes is a different beast than the others. This program is for those people who really want extremely detailed control over their input devices. It can certainly be used to adjust mouse acceleration settings, but it can do so much more. Discussing such features is outside the scope of this article, but do take a look at their website if interested.
ControllerMate costs $15 and a feature-limited trial version is also available.
Summary
We’ve taken a look at 4 different programs that can modify the mouse acceleration settings in OS X. For those who just want to adjust the acceleration settings, try iMouseFix or MouseFix. For button assignment and profile support, take a look at SteerMouse and USB Overdrive. Finally, for more control than you will probably ever need over your input devices, give ControllerMate a glance.
It is unfortunate that Apple does not include a control panel for controlling acceleration. However, one of the solutions above should hopefully satisfy your needs.
http://codesociety.com/2009/07/26/fix-mac-os-x-mouse-acceleration-curve/
Wednesday, August 5, 2009
Tuesday, August 4, 2009
MillisecondsToDate Conversion
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class MillisecondsToDate {
public static void main(String[] args) {
//
// Create a DateFormatter object for displaying date information.
//
DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss.SSS");
//
// Get date and time information in milliseconds
//
long now = System.currentTimeMillis();
//
// Create a calendar object that will convert the date and time value
// in milliseconds to date. We use the setTimeInMillis() method of the
// Calendar object.
//
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(now);
System.out.println(now + " = " + formatter.format(calendar.getTime()));
}
}
Sunday, July 19, 2009
Initialization blocks in a class
You can have many initialization blocks in a class. It is important to note that unlike methods or constructors, the order in which initialization blocks appear in a class matters. When it's time for initialization blocks to run, if a class has more than one, they will run in the order in which they appear in the class file... in other words, from the top down.
To figure this out, remember these fules:
- Init blocks execute in the order they appear
- Static init blocks run once, when the class is first loaded.
- Instance init blocks run every time a class instance is created.
- Instance init blocks run after the constructor's call to super()
1st static init
2nd static init
1st instance init
2nd instance init
no-arg const
1st instance init
2nd instance init
1-arg const
To figure this out, remember these fules:
- Init blocks execute in the order they appear
- Static init blocks run once, when the class is first loaded.
- Instance init blocks run every time a class instance is created.
- Instance init blocks run after the constructor's call to super()
class Init {
Init(int x) {
System.out.println("1-arg const");
}
Init() {
System.out.println("no-arg const");
}
static {
System.out.println("1st static init");
}
{
System.out.println("1st instance init");
}
{
System.out.println("2nd instance init");
}
static {
System.out.println("2nd static init");
}
public static void main(String[] args) {
new Init();
new Init(7);
}
}
1st static init
2nd static init
1st instance init
2nd instance init
no-arg const
1st instance init
2nd instance init
1-arg const
Sunday, July 5, 2009
SimpleAdapter
The corresponding SimpleAdapter maps an element from list of objects to this view.
SimpleAdapter(
Context context,
List<? extends Map<String, ?>> data,
int resource,
String[] from,
int[] to)
SimpleAdapter notes = new SimpleAdapter(
this,
list,
R.layout.main_item_two_line_row,
new String[] { "line1","line2" },
new int[] { R.id.text1, R.id.text2 } );
Now this is not a trivial line of code. What it says is:
http://mylifewithandroid.blogspot.com/2008/03/my-first-meeting-with-simpleadapter.html
SimpleAdapter(
Context context,
List<? extends Map<String, ?>> data,
int resource,
String[] from,
int[] to)
SimpleAdapter notes = new SimpleAdapter(
this,
list,
R.layout.main_item_two_line_row,
new String[] { "line1","line2" },
new int[] { R.id.text1, R.id.text2 } );
Now this is not a trivial line of code. What it says is:
- "list" is a reference to an object implementing the List interface. Each element in this list is an object implementing the Map interface. In our implementation example, the list is ArrayList and the elements in this list are HashMaps.
- The layout describing one row in the main list is defined in layout/main_item_two_line_row.xml file.
- In each individual HashMap, there are two key-value pairs. The keys are "line1" and "line2", the corresponding values are arbitrary objects whose toString() method yields the value displayed in the list row. In our case, the values are Strings.
- Values stored with key "line1" will be displayed in the TextView whose id is "text1". Similarly, "line2" Map key is associated with "text2" TextView.
http://mylifewithandroid.blogspot.com/2008/03/my-first-meeting-with-simpleadapter.html
Monday, June 29, 2009
Using notifyAll()
package com.thread;
public class Reader extends Thread {
Calculator c;
public Reader(Calculator calc) {
c = calc;
}
public void run() {
synchronized(c) {
try {
System.out.println("Waiting for calculation...");
c.wait();
} catch (InterruptedException e) {
}
System.out.println("Total is: " + c.total);
}
}
public static void main(String[] args) {
Calculator calculator = new Calculator();
// starts three threads that are all waiting to receive
// the finished calculation
new Reader(calculator).start();
new Reader(calculator).start();
new Reader(calculator).start();
// start the calculator with its calculation
calculator.start();
}
}
class Calculator extends Thread {
int total;
public void run() {
synchronized(this) {
for(int i = 0; i < 100; i ++) {
total += i;
}
notifyAll();
}
}
}
Thursday, June 25, 2009
How far will my salary go in another city?
Money magazine posts a cost of living web calculator that covers a whole lot of U.S. cities with fairly up-to-date data, giving you the lowdown on how far your salary would go in your dream city.
More likely, though, is that you'd want a comparison of the cities you're looking at moving to for a new job or opportunity. Money's calculator pulls data on the cost of health care, groceries, utilities, and other necessities from the last four quarters available from The Council for Community and Economic Research, whereas some Google-located city cost comparison sites are working with years-old data.
http://cgi.money.cnn.com/tools/costofliving/costofliving.html
More likely, though, is that you'd want a comparison of the cities you're looking at moving to for a new job or opportunity. Money's calculator pulls data on the cost of health care, groceries, utilities, and other necessities from the last four quarters available from The Council for Community and Economic Research, whereas some Google-located city cost comparison sites are working with years-old data.
http://cgi.money.cnn.com/tools/costofliving/costofliving.html
Thursday, June 18, 2009
Using threads and ProgressDialog
This is a simple tutorial to show how to create a thread to do some work while displaying an indeterminate ProgressDialog. Click here to download the full source.
We'll calculate Pi to 800 digits while displaying the ProgressDialog. For the sake of this example I copied the "Pi" class from this site.
We start with a new Android project, only thing I needed to change was to give that TextView an id in main.xml so that I could update it in the Activity.
Because this Activity is so small I'll show you the whole thing and then discuss it at the end:
So we see that this Activity implements Runnable. This will allow us to create a run() function to create a thread.
In the onCreate() function on line 18 we find and initialize our TextView and set the text telling the user to press any key to start the computation.
When the user presses a key it will bring us to the onKeyDown() function on line 27. Here we create the ProgressDialog using the static ProgressDialog.show() function, and as a result the pd variable is initialized. We also create a new Thread using the current class as the Runnable object. When we run thread.start() a new thread will spawn and start executing the run() function.
In the run() function we calculate pi and save it to the String pi_string. Then we send an empty message to our Handler object on line 40.
Why use a Handler? We must use a Handler object because we cannot update most UI objects while in a separate thread. When we send a message to the Handler it will get saved into a queue and get executed by the UI thread as soon as possible.
When our Handler receives the message we can dismiss our ProgressDialog and update the TextView with the value of pi we calculated. It's that easy!
http://www.helloandroid.com/node/243
We'll calculate Pi to 800 digits while displaying the ProgressDialog. For the sake of this example I copied the "Pi" class from this site.
We start with a new Android project, only thing I needed to change was to give that TextView an id in main.xml so that I could update it in the Activity.
Because this Activity is so small I'll show you the whole thing and then discuss it at the end:
package com.helloandroid.android.progressdialogexample;
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.KeyEvent;
import android.widget.TextView;
public class ProgressDialogExample extends Activity implements Runnable {
private static String TAG = "ProgressDialogExample";
private String pi_string;
private TextView tv;
private ProgressDialog pd;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
tv = (TextView) this.findViewById(R.id.main);
tv.setText("Press any key to start calculation");
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
pd = ProgressDialog.show(this, "Working..", "Calculating Pi", true, false);
Log.i(TAG, "Thread.currentThread().getName(): " + Thread.currentThread().getName());
// create a new thread using the current class as the runnable object
// new ProgressDialogExample() passed to Thread constructor
Thread thread = new Thread(this);
thread.start();
Log.i(TAG, "thread.getName(): " + thread.getName());
return super.onKeyDown(keyCode, event);
}
public void run() {
Log.i(TAG, "Thread.currentThread().getName(): " + Thread.currentThread().getName());
pi_string = Pi.computePi(800).toString();
Log.i(TAG, "run()");
handler.sendEmptyMessage(0);
}
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
pd.dismiss();
tv.setText(pi_string);
}
};
}
So we see that this Activity implements Runnable. This will allow us to create a run() function to create a thread.
In the onCreate() function on line 18 we find and initialize our TextView and set the text telling the user to press any key to start the computation.
When the user presses a key it will bring us to the onKeyDown() function on line 27. Here we create the ProgressDialog using the static ProgressDialog.show() function, and as a result the pd variable is initialized. We also create a new Thread using the current class as the Runnable object. When we run thread.start() a new thread will spawn and start executing the run() function.
In the run() function we calculate pi and save it to the String pi_string. Then we send an empty message to our Handler object on line 40.
Why use a Handler? We must use a Handler object because we cannot update most UI objects while in a separate thread. When we send a message to the Handler it will get saved into a queue and get executed by the UI thread as soon as possible.
When our Handler receives the message we can dismiss our ProgressDialog and update the TextView with the value of pi we calculated. It's that easy!
http://www.helloandroid.com/node/243
Callback
Java does not have procedure variables to implement function pointer callbacks the way C/C++ does. A callback would be used in C for example to pass a sin or cos function to generic plotting program. Callbacks are a way of passing functions as parameters. The callee can call the function passed to it as a parameter as often as it wants, with whatever parameters it wants.
Why would you want a callback? The normal parameter passing mechanism lets caller provide the callee with information, but provides only meager flow of information in the reverse direction, the single returned result primitive or Object. Further the callee cannot provide further information back to the caller once it has returned. The callback mechanism allows a two-way flow of information and exchange of computing resources between caller and callee.
Consider a component consisting of a panel of buttons. The caller wants to control the labellings on the buttons, how they are rendered etc. The callee wants to notify the caller whenever one of the buttons was pressed, and which one. The callback mechanism, sometimes called a Listener mechanism, allows the callee to notify the caller, the listener, of interesting events, or to use some of the methods the caller has access to.
There are four basic techniques to fake a callback function in Java.
If you don’t already understand delegates, that probably sounds like Greek. Just look at the HeapSort example. Once you understand that code, you will easily understand the other three variants. It is much simpler than it first sounds.
Callback has a totaly different meaning in the context of security. For secure login you call the server. It then calls you back. This makes it harder for you to spoof being someone else. This may be done over phone lines or over the Internet. It is the same scheme a jealous husband might use to ensure his wife is really home as she claims.
http://mindprod.com/jgloss/callback.html
Why would you want a callback? The normal parameter passing mechanism lets caller provide the callee with information, but provides only meager flow of information in the reverse direction, the single returned result primitive or Object. Further the callee cannot provide further information back to the caller once it has returned. The callback mechanism allows a two-way flow of information and exchange of computing resources between caller and callee.
Consider a component consisting of a panel of buttons. The caller wants to control the labellings on the buttons, how they are rendered etc. The callee wants to notify the caller whenever one of the buttons was pressed, and which one. The callback mechanism, sometimes called a Listener mechanism, allows the callee to notify the caller, the listener, of interesting events, or to use some of the methods the caller has access to.
There are four basic techniques to fake a callback function in Java.
- Subclassing. Subclass the calling class with an overridden callback method. Pass "this " as a parameter.
- Delegation via subclassing. Pass a subclassed Callback delegate object that knows how to invoke the callback method(s).
- Pass a Callback delegate object that implements an interface for the callback method(s).HeapSort: source code for an example of the delegate technique
This is how it is most commonly done. It offers most flexibility, - Use inner classes to define an anonymous callback class, instantiate an anonymous callback delegate object, and pass it
as a parameter all in one line. This technique with EventListeners tends to muddle GUI and
program logic making your GUI code non-reusable. Unless the anonymous inner classes are simple, it is generally wiser to
make them ordinary free-standing named classes.
If you don’t already understand delegates, that probably sounds like Greek. Just look at the HeapSort example. Once you understand that code, you will easily understand the other three variants. It is much simpler than it first sounds.
Callback has a totaly different meaning in the context of security. For secure login you call the server. It then calls you back. This makes it harder for you to spoof being someone else. This may be done over phone lines or over the Internet. It is the same scheme a jealous husband might use to ensure his wife is really home as she claims.
http://mindprod.com/jgloss/callback.html
Friday, June 12, 2009
Convert from epoch to human readable date
String date = new java.text.SimpleDateFormat("dd/MM/yyyy HH:mm:ss").format(new java.util.Date (epoch*1000));
ex) 1220738315 -> 06/09/2008 17:58:35
http://www.epochconverter.com/
ex) 1220738315 -> 06/09/2008 17:58:35
http://www.epochconverter.com/
Thursday, June 11, 2009
Java: RegEx to Remove HTML Tags
String noHTMLString = htmlString.replaceAll("\\<.*?\\>", "");
http://snippets.dzone.com/posts/show/4018
http://snippets.dzone.com/posts/show/4018
Wednesday, June 10, 2009
Google Chart API
The Google Chart API lets you dynamically generate charts. To see the Chart API in action, open up a browser window and copy the following URL into the address bar:
http://chart.apis.google.com/chart?cht=p3&chd=t:60,40&chs=250x100&chl=Hello|World
http://chart.apis.google.com/chart?cht=p3&chd=t:60,40&chs=250x100&chl=Hello|World
Thursday, June 4, 2009
5 great freelance sites for developers
The following are five great websites that I have found for freelance work. This is for mostly programming/development, which includes PHP and many other languages.
1) http://www.rentacoder.com
Rentacoder is good place to find small to mid-sized projects for earning extra money. It also offers a rating system which can hurt or help you depending on your work.
2) http://odesk.com/
Odesk is a little bit different than the rest of the sites listed here. Instead of bidding on projects, you bid on hours. Employers can list the amount of hours/week and # of weeks they need out of a potential freelancer.
3) http://www.craigslist.com
Craigslist is great because there is no barrier to entry for either the employer or the potential freelancer/employee (it is also among the top sites on the Internet). This can also be a detriment because anyone with a computer can post a job listing.
4) http://programmermeetdesigner.com/
A unique website that provides an opportunity for programmers to meet and work with designers.
5) http://www.guru.com
Guru.com is a clean and professional website that has lots of large-scale projects. It also has a fairly high barrier to entry for the employers, which usually means better paying jobs.
http://www.rawseo.com/news/2009/06/04/5-great-freelance-sites-for-developers/
1) http://www.rentacoder.com
Rentacoder is good place to find small to mid-sized projects for earning extra money. It also offers a rating system which can hurt or help you depending on your work.
2) http://odesk.com/
Odesk is a little bit different than the rest of the sites listed here. Instead of bidding on projects, you bid on hours. Employers can list the amount of hours/week and # of weeks they need out of a potential freelancer.
3) http://www.craigslist.com
Craigslist is great because there is no barrier to entry for either the employer or the potential freelancer/employee (it is also among the top sites on the Internet). This can also be a detriment because anyone with a computer can post a job listing.
4) http://programmermeetdesigner.com/
A unique website that provides an opportunity for programmers to meet and work with designers.
5) http://www.guru.com
Guru.com is a clean and professional website that has lots of large-scale projects. It also has a fairly high barrier to entry for the employers, which usually means better paying jobs.
http://www.rawseo.com/news/2009/06/04/5-great-freelance-sites-for-developers/
Wednesday, June 3, 2009
Top 10 Concepts That Every Software Engineer Should Know
1. Interfaces
2. Conventions and Templates
3. Layering
4. Algorithmic Complexity
5. Hashing
6. Caching
7. Concurrency
8. Cloud Computing
9. Security
10. Relational Databases
http://infoxon.blogspot.com/2008/07/top-10-concepts-that-every-software.html
2. Conventions and Templates
3. Layering
4. Algorithmic Complexity
5. Hashing
6. Caching
7. Concurrency
8. Cloud Computing
9. Security
10. Relational Databases
http://infoxon.blogspot.com/2008/07/top-10-concepts-that-every-software.html
Usage share of web browsers
The usage share of web browsers is the percentage of visitors to a group of websites that use a particular web browser. For example, when it is said that Internet Explorer has 66% usage share, it means that some version of Internet Explorer is used by 66% of visitors that visit a given set of sites. Typically, the user agent string is used to identify which browser a visitor is using. The concept of browser percentages for the Web audience in general is sometimes called browser penetration.[citation needed] More detailed information about a given browser can be found on the page for the browser in question. Notably, by-version browser share information for Internet Explorer can be found on the Wikipedia page for Internet Explorer.
http://en.wikipedia.org/wiki/Usage_share_of_web_browsers
http://en.wikipedia.org/wiki/Usage_share_of_web_browsers
Friday, May 29, 2009
Parse an XML string
import javax.xml.parsers.*;
import org.xml.sax.InputSource;
import org.w3c.dom.*;
import java.io.*;
public class ParseXMLString {
public static void main(String arg[]) {
String xmlRecords =
"<data>" +
" <employee>" +
" <name>John</name>" +
" <title>Manager</title>" +
" </employee>" +
" <employee>" +
" <name>Sara</name>" +
" <title>Clerk</title>" +
" </employee>" +
"</data>";
try {
DocumentBuilderFactory dbf =
DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
InputSource is = new InputSource();
is.setCharacterStream(new StringReader(xmlRecords));
Document doc = db.parse(is);
NodeList nodes = doc.getElementsByTagName("employee");
// iterate the employees
for (int i = 0; i < nodes.getLength(); i++) {
Element element = (Element) nodes.item(i);
NodeList name = element.getElementsByTagName("name");
Element line = (Element) name.item(0);
System.out.println("Name: " + getCharacterDataFromElement(line));
NodeList title = element.getElementsByTagName("title");
line = (Element) title.item(0);
System.out.println("Title: " + getCharacterDataFromElement(line));
}
}
catch (Exception e) {
e.printStackTrace();
}
/*
output :
Name: John
Title: Manager
Name: Sara
Title: Clerk
*/
}
public static String getCharacterDataFromElement(Element e) {
Node child = e.getFirstChild();
if (child instanceof CharacterData) {
CharacterData cd = (CharacterData) child;
return cd.getData();
}
return "?";
}
}
Add the Google Analytics Code Block to Your Blogger Blog
1. Login to http://www.blogger.com/. The Dashboard loads.
2. Under the blog you want to add Analytics tracking to, click on Layout or Template.
3. Click on Edit HTML. An editing screen for your blog template's HTML displays. Don't freak out. Just scroll to the bottom.
4. Look for the end of the template. It'll look like:
</div> </div>
<!-- end outer-wrapper -->
(Google Analytics Code Block is going to go here!!!)
</body>
</html>
5. Put your cursor right before that </body> tag.
6. Paste the Google Analytics Code Block by selecting Edit > Paste, Ctrl -V or Command-V.
7. Click Save Changes.
http://andywibbels.com/2007/01/how-to-add-google-analytics-to-your-blogger-blog/
2. Under the blog you want to add Analytics tracking to, click on Layout or Template.
3. Click on Edit HTML. An editing screen for your blog template's HTML displays. Don't freak out. Just scroll to the bottom.
4. Look for the end of the template. It'll look like:
</div> </div>
<!-- end outer-wrapper -->
(Google Analytics Code Block is going to go here!!!)
</body>
</html>
5. Put your cursor right before that </body> tag.
6. Paste the Google Analytics Code Block by selecting Edit > Paste, Ctrl -V or Command-V.
7. Click Save Changes.
http://andywibbels.com/2007/01/how-to-add-google-analytics-to-your-blogger-blog/
Thursday, May 28, 2009
Soap Action and Addressing action
In WS-I version 1.1 it states
The SOAPAction header is purely a hint to processors. All vital information regarding the intent of a message is carried in the envelope.
– `A HTTP request MESSAGE MUST contain a SOAPAction HTTP header field with a quoted value equal to the value of the soapAction attribute of soapbind:operation, if present in the corresponding WSDL description.`
– `A HTTP request MESSAGE MUST contain a SOAPAction HTTP header field with a quoted empty string value, if in the corresponding WSDL description, the soapAction of soapbind:operation is either not present, or present with an empty string as its value.`
Again the `Web Services Addressing 1.0 – WSDL Binding` states clearly about the explicit association between wsa:action and SOAPAction as follows
`WS-Addressing defines a global attribute, wsaw:Action, that can be used to explicitly define the value of the [action] property for messages in a WSDL description. The type of the attribute is xs:anyURI and it is used as an extension on the WSDL input, output and fault elements. A SOAP binding can specify SOAPAction values for the input messages of operations. In the absence of a wsaw:Action attribute on a WSDL input element where a SOAPAction value is specified, the value of the [action] property for the input message is the value of the SOAPAction specified. Web Services Addressing 1.0 – SOAP Binding[WS-Addressing SOAP Binding] specifies restrictions on the relationship between the values of [action] and SOAPAction for SOAP 1.1 and SOAP 1.2.
The inclusion of wsaw:Action without inclusion of wsaw:UsingAddressing has no normative intent and is only informational. In other words, the inclusion of wsaw:Action attributes in WSDL alone does not imply a requirement on clients to use Message Addressing Properties in messages it sends to the service. A client, however, MAY include Message Addressing Properties in the messages it sends, either on its own initiative or as described by other elements of the service contract, regardless of the presence or absence of wsaw:UsingAddressing. Other specifications defining the value of [action] are under no constraint to be consistent with wsaw:Action.`
http://damithakumarage.wordpress.com/2008/02/12/soap-action-and-addressing-action/
The SOAPAction header is purely a hint to processors. All vital information regarding the intent of a message is carried in the envelope.
– `A HTTP request MESSAGE MUST contain a SOAPAction HTTP header field with a quoted value equal to the value of the soapAction attribute of soapbind:operation, if present in the corresponding WSDL description.`
– `A HTTP request MESSAGE MUST contain a SOAPAction HTTP header field with a quoted empty string value, if in the corresponding WSDL description, the soapAction of soapbind:operation is either not present, or present with an empty string as its value.`
Again the `Web Services Addressing 1.0 – WSDL Binding` states clearly about the explicit association between wsa:action and SOAPAction as follows
`WS-Addressing defines a global attribute, wsaw:Action, that can be used to explicitly define the value of the [action] property for messages in a WSDL description. The type of the attribute is xs:anyURI and it is used as an extension on the WSDL input, output and fault elements. A SOAP binding can specify SOAPAction values for the input messages of operations. In the absence of a wsaw:Action attribute on a WSDL input element where a SOAPAction value is specified, the value of the [action] property for the input message is the value of the SOAPAction specified. Web Services Addressing 1.0 – SOAP Binding[WS-Addressing SOAP Binding] specifies restrictions on the relationship between the values of [action] and SOAPAction for SOAP 1.1 and SOAP 1.2.
The inclusion of wsaw:Action without inclusion of wsaw:UsingAddressing has no normative intent and is only informational. In other words, the inclusion of wsaw:Action attributes in WSDL alone does not imply a requirement on clients to use Message Addressing Properties in messages it sends to the service. A client, however, MAY include Message Addressing Properties in the messages it sends, either on its own initiative or as described by other elements of the service contract, regardless of the presence or absence of wsaw:UsingAddressing. Other specifications defining the value of [action] are under no constraint to be consistent with wsaw:Action.`
http://damithakumarage.wordpress.com/2008/02/12/soap-action-and-addressing-action/
Wednesday, May 27, 2009
Alexa Internet
Alexa Internet, Inc. is a California-based subsidiary company of Amazon.com that is known for its toolbar and website. Once installed, the toolbar collects data on browsing behavior which is transmitted to the website where it is stored and analyzed and is the basis for the company's web traffic reporting.
http://alexa.com/
http://alexa.com/
Sunday, May 24, 2009
City Data
Stats about all US cities - real estate, relocation info, house prices, home value estimator, recent sales, maps, race, income, photos, education, crime, ...
http://www.city-data.com/
http://www.city-data.com/
Friday, May 22, 2009
Difference between JVM and JRE
A JVM is just the "bare machine" -- the thing that executes .class files.
A JRE includes libraries and APIs (i.e., all the java.* and javax.* Java classes, plus things like the native libaries needed for the AWT to function.) So a JRE is a JVM plus more stuff.
http://www.coderanch.com/t/416610/Java-General-beginner/java/Difference-between-JVM-JRE
A JRE includes libraries and APIs (i.e., all the java.* and javax.* Java classes, plus things like the native libaries needed for the AWT to function.) So a JRE is a JVM plus more stuff.
http://www.coderanch.com/t/416610/Java-General-beginner/java/Difference-between-JVM-JRE
Understanding the Difference Between an Argument and a Parameter
The words argument and parameter are often used interchangeably in the literature, although the C++ Standard makes a clear distinction between the two. An argument is one of the following: an expression in the comma-separated list in a function call; a sequence of one or more preprocessor tokens in the comma-separated list in a macro call; the operand of a throw-statement or an expression, type, or template-name in the comma-separated list in the angle brackets of a template instantiation. A parameter is one of the following: an object or reference that is declared in a function declaration or definition (or in the catch clause of an exception handler); an identifier between the parentheses immediately following the macro name in a macro definition; or a template-parameter. This example demonstrates the difference between a parameter and an argument:
void func(int n, char * pc); //n and pc are parameters
template class A {}; //T is a a parameter
http://www.devx.com/tips/Tip/13049
void func(int n, char * pc); //n and pc are parameters
template
int main()
{
char c;
char *p = &c;
func(5, p); //5 and p are arguments
Aa; //'long' is an argument
Aanother_a; //'char' is an argument
return 0;
}
http://www.devx.com/tips/Tip/13049
Wednesday, May 20, 2009
Activity state changes
State change method handlers available in an Activity
package com.paad.myapplication;
import android.app.Activity;
import android.os.Bundle;
public class MyActivity extends Activity {
// Called at the start of the full lifetime.
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
// Initialize activity.
}
// Called after onCreate has finished, use to restore UI state
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
// Restore UI state from the savedInstanceState.
// This bundle has also been passed to onCreate.
}
// Called before subsequent visible lifetimes
// for an activity process.
@Override
public void onRestart(){
super.onRestart();
// Load changes knowing that the activity has already
// been visible within this process.
}
// Called at the start of the visible lifetime.
@Override
public void onStart(){
super.onStart();
// Apply any required UI change now that the Activity is visible.
}
// Called at the start of the active lifetime.
@Override
public void onResume(){
super.onResume();
// Resume any paused UI updates, threads, or processes required
// by the activity but suspended when it was inactive.
}
// Called to save UI state changes at the
// end of the active lifecycle.
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
// Save UI state changes to the savedInstanceState.
// This bundle will be passed to onCreate if the process is
// killed and restarted.
super.onSaveInstanceState(savedInstanceState);
}
// Called at the end of the active lifetime.
@Override
public void onPause(){
// Suspend UI updates, threads, or CPU intensive processes
// that don’t need to be updated when the Activity isn’t
// the active foreground activity.
super.onPause();
}
// Called at the end of the visible lifetime.
@Override
public void onStop(){
// Suspend remaining UI updates, threads, or processing
// that aren’t required when the Activity isn’t visible.
// Persist all edits or state changes
// as after this call the process is likely to be killed.
super.onStop();
}
// Called at the end of the full lifetime.
@Override
public void onDestroy(){
// Clean up any resources including ending threads,
// closing database connections etc.
super.onDestroy();
}
}
Tuesday, May 19, 2009
Differences between @+id/foo and @android:id/foo syntaxes in main.xml
@+id/foo means you are creating an id named foo in the namespace of your application. You can refer to it using @id/foo.
@android:id/foo means you are referring to an id defined in the android namespace.
This namespace is the namespace of the framework. In this case, you need to use @android:id/list and @android:id/empty because these are the id the framework expects to find (the framework knows only about the ids in the android namespace.)
http://groups.google.com/group/android-developers/browse_thread/thread/dc8023b221351aa7?pli=1
@android:id/foo means you are referring to an id defined in the android namespace.
This namespace is the namespace of the framework. In this case, you need to use @android:id/list and @android:id/empty because these are the id the framework expects to find (the framework knows only about the ids in the android namespace.)
http://groups.google.com/group/android-developers/browse_thread/thread/dc8023b221351aa7?pli=1
Saturday, May 16, 2009
Import Android project into Eclipse
- Create new workspace in Eclipse (optional) anywhere OUTSIDE of the folder that contains project you are importing
- Click File -> New -> Android Project
- From the pop-up select “Create project from existing source” and navigate to the top folder of Android project you are importing
- Click “Finish”
Thursday, May 14, 2009
CDYNE Web Service WIKI
CDYNE Corporation develops, markets and supports a comprehensive suite of data enhancement, data quality and data analysis Web services and business intelligence integration. These Web services are ideal for enterprise database systems: home-grown applications in the E-commerce, Telecommunications, Sales/Marketing, Insurance, Retail, Utilities, Health care, and Banking/Finance Industries across the United States. CDYNE A leading provider of Services & Solutions for business intelligence, data cleansing, and standards-based integration in Internet/Intranet software applications. Addionly an ERP (Enterprise Resource Planning) & CRM (Customer Relationship Management) systems. Our Web services' allow organizations to make more informed intelligent decisions; as well as drive bottom-line sales and marketing efforts that ultimately lead to the more efficient use of corporate resources. CDYNE delivers the lowest cost of ownership, swift uptime results, consistent enterprise data and high-performance Web services' that "works" the way 'we think. CDYNE Technologies are built on proven XML-based information services that dynamically deliver value-added information at the point of consumer interaction. A Captured "real-time service" for the ultimate in data delivery and integration efficiency. With end-to-end, fully integrated data movement, access and analysis capabilities on any database platform, it is capable of operating in standalone/custom applications websites or CRM/ERP solutions. As a result, our Web Service Technologies enables organizations to significantly improve customer satisfaction, minimize service costs, and increase revenue. CDYNE’s principle offices are located in Chesapeake, Virginia. This facility serves as an administration and redundant server site facility. Our solutions are delivered utilizing state-of-the-art software and hardware architecture operating in 24x7 computing facilities.
http://wiki.cdyne.com/wiki/index.php?title=CDYNE_Wiki_for_Web_Services:About
http://wiki.cdyne.com/wiki/index.php?title=CDYNE_Wiki_for_Web_Services:About
Android Market vs. iPhone App Store: The First 24 Hours
Google’s Android Market has been officially live for 24 hours. Here are some early observations and comparisons with the iPhone App Store’s first 24 hours.
There are myriad similarities between iPhone and Android users:
* They like to play games, shop, and know what music they are listening to,
* They are curious about the weather, and
* They generally share the same interests as iPhone users
During the first 24 hours of Android Market, 62 apps were available to consumers, all free. This is less than 10% of the number of apps we saw at the launch of Apple’s App Store. Although Apple allowed both free and paid applications to be distributed when the App Store launched, paid downloads for Android will not be available until Q1 2009.
http://www.medialets.com/blog/2008/10/23/android-market-vs-iphone-app-store-the-first-24-hours/
There are myriad similarities between iPhone and Android users:
* They like to play games, shop, and know what music they are listening to,
* They are curious about the weather, and
* They generally share the same interests as iPhone users
During the first 24 hours of Android Market, 62 apps were available to consumers, all free. This is less than 10% of the number of apps we saw at the launch of Apple’s App Store. Although Apple allowed both free and paid applications to be distributed when the App Store launched, paid downloads for Android will not be available until Q1 2009.
http://www.medialets.com/blog/2008/10/23/android-market-vs-iphone-app-store-the-first-24-hours/
Monday, May 11, 2009
Taskbar Shuffle Reorganizes Your Taskbar and System Tray
Windows only: Tiny, portable, and awesome utility Taskbar Shuffle adds drag and drop ability to the Windows taskbar and system tray—and now finally works for 64-bit Windows as well.
http://lifehacker.com/5239479/taskbar-shuffle-reorganizes-your-taskbar-and-system-tray#c12590263
http://lifehacker.com/5239479/taskbar-shuffle-reorganizes-your-taskbar-and-system-tray#c12590263
Monday, May 4, 2009
Add National & Religious Holidays to Google Calendar
Just like Microsoft Outlook lets you add Holidays to the Outlook calendar, Google Calendar has a built-in feature to add religious holidays and national holidays (or bank holidays) of different countries.
You can add or remove holidays from Google Calendar in these simple steps:
1. Under "Calendars" in the left column, click on the "+" button next to "Other Calendars."
2. Select the "Holiday Calendars" tab (see screenshot)
3. Click on the appropriate "Add Calendar" button.
You can remove a holiday calendar by visiting the same page and clicking on "Remove." The dates are added in a separate calendar that display in different colors (see screenshot)
National and Religious Holidays are added not just for the current year but for all holidays in future years.
http://labnol.blogspot.com/2006/04/add-national-religious-holidays-to.html
You can add or remove holidays from Google Calendar in these simple steps:
1. Under "Calendars" in the left column, click on the "+" button next to "Other Calendars."
2. Select the "Holiday Calendars" tab (see screenshot)
3. Click on the appropriate "Add Calendar" button.
You can remove a holiday calendar by visiting the same page and clicking on "Remove." The dates are added in a separate calendar that display in different colors (see screenshot)
National and Religious Holidays are added not just for the current year but for all holidays in future years.
http://labnol.blogspot.com/2006/04/add-national-religious-holidays-to.html
Friday, May 1, 2009
Widget Gallery
The following are widgets and panels available in the GWT user-interface library. You can view a code example of each widget in the Showcase sample application.
http://code.google.com/webtoolkit/doc/1.6/RefWidgetGallery.html
http://code.google.com/webtoolkit/doc/1.6/RefWidgetGallery.html
Thursday, April 30, 2009
위에좋은 차
1.노루궁뎅이버섯차
일반적으로 알려지지 않은 노루궁뎅이버섯은 옛부터 식용과 약용으로 쓰였답니다.
일명 산삼보다 더 규한 버섯이라고 동의보감에 쓰여 있더라구요.
노루궁뎅이버섯은 다당체(Hericium Polysaccharide)라는 성분이 박테리아나 바이러스,
그리고 인체의 결함이 있는 세포를 둘러싸서 먹어치우는 대식세포나 림프구를 강화시키는 작용을 함으로써
위암과 대장암의 발생율을 감소시키며 위궤양, 십이지장궤양, 만성 위염 등을 크게 개선시키는 것으로 알려져 있습니다. 노루궁뎅이버섯에 풍부하게 들어있는 올레아놀릭산이라는 성분이 위산으로부터 위벽을 보호하고 위와 장의 기능을 개선시키며 궤양을 치료하고 만성위염의 염증을 가라앉히는 작용을 한다고 합니다. 또한 관상동맥에 피의 흐름을 증가시키는 기능으로 혈행을 좋게 한다고 합니다.
노루궁뎅이버섯은 식용과 약용으로 요리와 차, 음료등으로 다양하게 드실 수 있읍니다.
노루궁뎅이버섯 끓여서 마시는 방법
건조 노루궁뎅이버섯 약10~15g을 물 1리터에 넣고 15분 ~30분간 끓이면,
순하고 맛있는 노루궁뎅이버섯차가 됩니다.
이것을 그대로 마셔 주시면 됩니다.
지금은 손쉽게 구할수 있는 티백으로 나와있는 제품이 있습니다.
2. 민들레차
민들레는 강장에 좋으며, 소화기관 계통의 질환에 효과가 뛰어나 위를 보호하고 식욕을 증진시키다.
신장의 기능을 원활하게 해 배뇨가 잘 되며 고혈압과 담석증에도 좋다.
또한 섬유질이 많아 장의 소화흡수를 도와 소화에도 좋으며, 구강염과 인후염, 기관지점막에도 약효가 있어 감기의 예방과 치료에 효과가 높다. 민들레를 장기간 복용하면 신경통을 예방 할 수 있을 뿐만 아니라 많이 마시면 숙면한다. 피부 미용에도 좋고 체력강화에도 뛰어난 효과가 있습니다.
민들레 잎을 물로 잘 씻어 2-3cm로 썬 다음 직사광선을 피해 그늘에서 충분히 말린다.
말려 놓은 민들레 잎을 건조 보관하면서 필요시 조금씩 꺼내 뜨거운 물에 집어넣어 5분 정도 지난 뒤 국물이 우러나면 벌꿀이나 설탕을 넣어 마신다.민들레는 생으로 잎을 먹어두 되구요. 뿌리를 우려서 물처럼 마셔도 됩니다.
===> 시중에 편하게 커피처럼 만들어 팔기때문에 사셔서 드셔도 됩니다.
3. 쑥차
위장과 간장의 기능을 강화하고, 혈액의 정화시키는 작용이 있다.
칼륨의 함량이 많아 체내의 과잉된 염분을 배출하기 때문에 고혈압의 예방에 효과가 있다.
풍부하게 함유된 엽록소에는 궤양 치료의 작용을 촉진한다.
티푸스균과 포도구균 등의 증식을 억제하고, 인플- 루엔자 바이러스를 강하게 억제한다.
여성에게는 지혈효과가 있어 자궁 출혈에 좋다. 쑥은 이른봄의 5월 단오 즈음의쑥을 채취한다.
채취한쑥의 이물질은 제거후 깨끗히씻어서 말린다.
물기가 어느정도 마른후 한지봉지를 만들어 그속에 넣은후 통풍이 잘 되는 곳에 걸어 건조시킨다.
바삭바삭 할때까지 말린후 물을 끓여 적당량 우려낸다. 향이 좋고 양을 조절하면 쓴맛이 없고 구수하다.
4. 솔잎차
소나무는 상록교목으로 우리나라 전국각지에서 자란다.
잎은 생것 또는 그늘에서 말린 것을 사용하는데 위장병, 고혈압, 중풍, 신경통, 천식등에
효과가 있다고 되어 있다. 꼭 어느 성분 때문이라고 할 수 없지만 여러가지 정유성분,
비타민 A, C, 타닌, 고미성 물질, 플라보노이드, 항균성 물질 등이 들어 있어 약리작용을
나타내는 것으로 알려져 있다.
ㄱ. 가장 보편적인 방법으로는 솔잎 약 50g에 물 약 1리터를 넣고 끓인후 약 100g을 넣고
끓인 후, 찻잔에 따라서 기호에 따라 꿀이나 설탕을 가미해서 마신다.
ㄴ. 병에다 솔잎을 3~4cm정도 되게 잘라서 넣고 물 과 설탕을 넣고 끓인후, 식혀서 솔잎이
잠기게 넣은 뒤 약 3개월 보관하였다가 찻잔에 솔잎 5~7잎을 꺼내서 넣고 뜨거운 물을
부어서 마신다.
ㄷ. 건조시킨 솔잎을 믹서로 갈아서 분말을 내어서 컵에 넣고 뜨거운 물을 붓기만 해도 마실
수 있다.
ㄹ. 건조된 솔잎을 믹서로 갈아서 꿀로 환을 만들어 보관하였다가 뜨거운 물에 타서 마신다.
5. 생강차
생강은 따뜻한 성질이 있고,혈액 순환을 촉진시켜 손발과 몸을 따뜻하게 하는 성질이 있다.
또 위장을 강화시키고, 소화를 촉진해 복통을 가라앉히고 설사를 멎게 해준다.
이런 작용 때문에 거의 모든 한약을 달이는 데 들어가는 것이 생강.
생강차는 겨울철 감기 예방을 위한 차로서 최상이다.
단 위궤양이 있거나 평소 열이 많은 사람은 삼간다.
생강 2쪽(70g),과 물3컵 반의 양에 마르지 않은 생것으로 골라 겉껍질을 말끔히 벗겨낸 뒤
씻어 얇게 썬다.
냄비에 분량의 물과 생강편을 넣고 센 불에서 끓이다 약한 불에서 약 15~20분 정도 달인다.
찻잔에 우린 생강차를 붓고 꿀을 넣어 단맛을 낸다.
http://kin.naver.com/detail/detail.php?d1id=7&dir_id=706&eid=n+OA7UMwXii2ZfWTS3ky5TumtnjPF9Nu&qb=vNLAvcDOIMXCvufAziDFwsC9wM4gvNK+58DO&enc=euc-kr
일반적으로 알려지지 않은 노루궁뎅이버섯은 옛부터 식용과 약용으로 쓰였답니다.
일명 산삼보다 더 규한 버섯이라고 동의보감에 쓰여 있더라구요.
노루궁뎅이버섯은 다당체(Hericium Polysaccharide)라는 성분이 박테리아나 바이러스,
그리고 인체의 결함이 있는 세포를 둘러싸서 먹어치우는 대식세포나 림프구를 강화시키는 작용을 함으로써
위암과 대장암의 발생율을 감소시키며 위궤양, 십이지장궤양, 만성 위염 등을 크게 개선시키는 것으로 알려져 있습니다. 노루궁뎅이버섯에 풍부하게 들어있는 올레아놀릭산이라는 성분이 위산으로부터 위벽을 보호하고 위와 장의 기능을 개선시키며 궤양을 치료하고 만성위염의 염증을 가라앉히는 작용을 한다고 합니다. 또한 관상동맥에 피의 흐름을 증가시키는 기능으로 혈행을 좋게 한다고 합니다.
노루궁뎅이버섯은 식용과 약용으로 요리와 차, 음료등으로 다양하게 드실 수 있읍니다.
노루궁뎅이버섯 끓여서 마시는 방법
건조 노루궁뎅이버섯 약10~15g을 물 1리터에 넣고 15분 ~30분간 끓이면,
순하고 맛있는 노루궁뎅이버섯차가 됩니다.
이것을 그대로 마셔 주시면 됩니다.
지금은 손쉽게 구할수 있는 티백으로 나와있는 제품이 있습니다.
2. 민들레차
민들레는 강장에 좋으며, 소화기관 계통의 질환에 효과가 뛰어나 위를 보호하고 식욕을 증진시키다.
신장의 기능을 원활하게 해 배뇨가 잘 되며 고혈압과 담석증에도 좋다.
또한 섬유질이 많아 장의 소화흡수를 도와 소화에도 좋으며, 구강염과 인후염, 기관지점막에도 약효가 있어 감기의 예방과 치료에 효과가 높다. 민들레를 장기간 복용하면 신경통을 예방 할 수 있을 뿐만 아니라 많이 마시면 숙면한다. 피부 미용에도 좋고 체력강화에도 뛰어난 효과가 있습니다.
민들레 잎을 물로 잘 씻어 2-3cm로 썬 다음 직사광선을 피해 그늘에서 충분히 말린다.
말려 놓은 민들레 잎을 건조 보관하면서 필요시 조금씩 꺼내 뜨거운 물에 집어넣어 5분 정도 지난 뒤 국물이 우러나면 벌꿀이나 설탕을 넣어 마신다.민들레는 생으로 잎을 먹어두 되구요. 뿌리를 우려서 물처럼 마셔도 됩니다.
===> 시중에 편하게 커피처럼 만들어 팔기때문에 사셔서 드셔도 됩니다.
3. 쑥차
위장과 간장의 기능을 강화하고, 혈액의 정화시키는 작용이 있다.
칼륨의 함량이 많아 체내의 과잉된 염분을 배출하기 때문에 고혈압의 예방에 효과가 있다.
풍부하게 함유된 엽록소에는 궤양 치료의 작용을 촉진한다.
티푸스균과 포도구균 등의 증식을 억제하고, 인플- 루엔자 바이러스를 강하게 억제한다.
여성에게는 지혈효과가 있어 자궁 출혈에 좋다. 쑥은 이른봄의 5월 단오 즈음의쑥을 채취한다.
채취한쑥의 이물질은 제거후 깨끗히씻어서 말린다.
물기가 어느정도 마른후 한지봉지를 만들어 그속에 넣은후 통풍이 잘 되는 곳에 걸어 건조시킨다.
바삭바삭 할때까지 말린후 물을 끓여 적당량 우려낸다. 향이 좋고 양을 조절하면 쓴맛이 없고 구수하다.
4. 솔잎차
소나무는 상록교목으로 우리나라 전국각지에서 자란다.
잎은 생것 또는 그늘에서 말린 것을 사용하는데 위장병, 고혈압, 중풍, 신경통, 천식등에
효과가 있다고 되어 있다. 꼭 어느 성분 때문이라고 할 수 없지만 여러가지 정유성분,
비타민 A, C, 타닌, 고미성 물질, 플라보노이드, 항균성 물질 등이 들어 있어 약리작용을
나타내는 것으로 알려져 있다.
ㄱ. 가장 보편적인 방법으로는 솔잎 약 50g에 물 약 1리터를 넣고 끓인후 약 100g을 넣고
끓인 후, 찻잔에 따라서 기호에 따라 꿀이나 설탕을 가미해서 마신다.
ㄴ. 병에다 솔잎을 3~4cm정도 되게 잘라서 넣고 물 과 설탕을 넣고 끓인후, 식혀서 솔잎이
잠기게 넣은 뒤 약 3개월 보관하였다가 찻잔에 솔잎 5~7잎을 꺼내서 넣고 뜨거운 물을
부어서 마신다.
ㄷ. 건조시킨 솔잎을 믹서로 갈아서 분말을 내어서 컵에 넣고 뜨거운 물을 붓기만 해도 마실
수 있다.
ㄹ. 건조된 솔잎을 믹서로 갈아서 꿀로 환을 만들어 보관하였다가 뜨거운 물에 타서 마신다.
5. 생강차
생강은 따뜻한 성질이 있고,혈액 순환을 촉진시켜 손발과 몸을 따뜻하게 하는 성질이 있다.
또 위장을 강화시키고, 소화를 촉진해 복통을 가라앉히고 설사를 멎게 해준다.
이런 작용 때문에 거의 모든 한약을 달이는 데 들어가는 것이 생강.
생강차는 겨울철 감기 예방을 위한 차로서 최상이다.
단 위궤양이 있거나 평소 열이 많은 사람은 삼간다.
생강 2쪽(70g),과 물3컵 반의 양에 마르지 않은 생것으로 골라 겉껍질을 말끔히 벗겨낸 뒤
씻어 얇게 썬다.
냄비에 분량의 물과 생강편을 넣고 센 불에서 끓이다 약한 불에서 약 15~20분 정도 달인다.
찻잔에 우린 생강차를 붓고 꿀을 넣어 단맛을 낸다.
http://kin.naver.com/detail/detail.php?d1id=7&dir_id=706&eid=n+OA7UMwXii2ZfWTS3ky5TumtnjPF9Nu&qb=vNLAvcDOIMXCvufAziDFwsC9wM4gvNK+58DO&enc=euc-kr
Current Inflation Rates: 2000-2009
The chart, graph and table of inflation rates displays annual rates from 2000-2009. Rates of inflation are calculated using the Current Consumer Price Index published monthly by the Bureau of Labor Statistics (BLS). For 2009, the most recent monthly data (12-month based) is used in the chart and graph.
http://www.usinflationcalculator.com/inflation/current-inflation-rates/
http://www.usinflationcalculator.com/inflation/current-inflation-rates/
Subclipse
Subclipse is an Eclipse Team Provider plug-in providing support for Subversion within the Eclipse IDE. The software is released under the Eclipse Public License (EPL) 1.0 open source license.
http://subclipse.tigris.org/
http://subclipse.tigris.org/
Tuesday, April 28, 2009
Demographics of the United States
This article discusses the demographic features of the population of the United States, including population density, ethnicity, education level, health, economic status, and religious affiliation.
http://en.wikipedia.org/wiki/Demographics_of_the_United_States
Mineful Demographics provides marketing professionals and researchers with a complete and visual demographic profile of the U.S. population and Puerto Rico.
If you need to do marketing research to understand and compare demographic and economic characteristics, start by clicking a state on the map or table below. You will find updated population data, household statistics, income distributions, and business data at the State, County, and Zip Code level.
http://www.mineful.com/demographics/
http://en.wikipedia.org/wiki/Demographics_of_the_United_States
Mineful Demographics provides marketing professionals and researchers with a complete and visual demographic profile of the U.S. population and Puerto Rico.
If you need to do marketing research to understand and compare demographic and economic characteristics, start by clicking a state on the map or table below. You will find updated population data, household statistics, income distributions, and business data at the State, County, and Zip Code level.
http://www.mineful.com/demographics/
Monday, April 27, 2009
Google News Timeline
Timeline results are generated by a computer program, and we don't guarantee the completeness or accuracy of the information you may see.
http://newstimeline.googlelabs.com
http://newstimeline.googlelabs.com
Friday, April 24, 2009
Write System.out.println() in a simple way
System.out.println() method can be shortened by creating
a couple of helper methods.
a couple of helper methods.
private static void prt(String s) {
System.out.println(s);
}
private static void prt() {
System.out.println();
}
Friday, April 17, 2009
Fport v2.0
fport reports all open TCP/IP and UDP ports and maps them to the owning application. This is the same information you would see using the 'netstat -an' command, but it also maps those ports to running processes with the PID, process name and path. Fport can be used to quickly identify unknown open ports and their associated applications.
Usage:
C:\>fport
Usage:
C:\>fport
How to export file and folder names to Excel
Assuming you wanted to output all the files in C:\Test to Excel, you would select Start-Run, enter cmd and press enter. In the command prompt window, type:
dir C:\Test /b > c:\files.csv
then just open the c:\files.csv file in Excel.
You can also do this from Excel with a macro if you prefer.
dir C:\Test /b > c:\files.csv
then just open the c:\files.csv file in Excel.
You can also do this from Excel with a macro if you prefer.
Thursday, April 16, 2009
How do I manage environment variables in Windows XP?
Just like in Windows NT 4.0 and Windows 2000, environment variables are strings that contain information about the system and currently logged on user. To manage System variables, you must be logged on as a member of the Administrators group.
If you open a CMD prompt and type SET, you will receive a list of many of the users and system variables. The System variables that you can manage are stored in registry at the HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment key.
To manage environment variables:
1. Right-click My Computer and press Properties.
2. On the Advanced tab, press Environment Variables.
3. Select one of the following options, in either the or System area:
- Press New to add a new variable name and value.
- Select an existing variable name and press Edit to change its' name or value.
- Select an existing variable name and press Delete to remove the variable name.
NOTE: If you change a System environment variable, you may need to restart your computer.
NOTE: If you change a user environment variable, restart any open application, or log off and log on.
If you open a CMD prompt and type SET, you will receive a list of many of the users and system variables. The System variables that you can manage are stored in registry at the HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment key.
To manage environment variables:
1. Right-click My Computer and press Properties.
2. On the Advanced tab, press Environment Variables.
3. Select one of the following options, in either the
- Press New to add a new variable name and value.
- Select an existing variable name and press Edit to change its' name or value.
- Select an existing variable name and press Delete to remove the variable name.
NOTE: If you change a System environment variable, you may need to restart your computer.
NOTE: If you change a user environment variable, restart any open application, or log off and log on.
Wednesday, April 15, 2009
TIOBE Programming Community Index for April 2009
April Headline: MATLAB re-enters top 20
The TIOBE Programming Community index gives an indication of the popularity of programming languages. The index is updated once a month. The ratings are based on the number of skilled engineers world-wide, courses and third party vendors. The popular search engines Google, MSN, Yahoo!, and YouTube are used to calculate the ratings. Observe that the TIOBE index is not about the best programming language or the language in which most lines of code have been written.
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
The TIOBE Programming Community index gives an indication of the popularity of programming languages. The index is updated once a month. The ratings are based on the number of skilled engineers world-wide, courses and third party vendors. The popular search engines Google, MSN, Yahoo!, and YouTube are used to calculate the ratings. Observe that the TIOBE index is not about the best programming language or the language in which most lines of code have been written.
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
Sunday, April 12, 2009
28 Questions You Wish You Asked the Manager During the Job Interview
About the Team
1. Who is my line manager or the project leader to whom I will report? Can I meet him? (Some companies only let candidates meet the managers. Go figure.)
2. Before I accept the job, can we do a lunch with the whole team to get to know each other?
3. What is the demographic of the team? or Why are there so few women in senior positions here? (Diversity matters.)
4. What sort of team environment do you promote? How do teams interact with one another?
About the manager
5. How much time do you spend in one-on-one meetings versus the time in team meetings?
6. Give an example of something unexpected and how it was handled.
7. How do you measure success? Where does that measurement stand now? What actions are you taking to change the measurement(s) (in the right direction)? What have those actions done to the measurement(s)?
8. How does your manager measure your success?
9. What is your preferred method of communication? Phone calls, e-mail, informally, in meetings, only when necessary? How much contact will I have with you?
10. Why do people typically leave your team? (The best answer probably is that they were promoted, but if they're leaving the company or seeking internal transfers you may have an opportunity to drill down and find out why. This is also a subtle way to ask how long the manager has been managing people.)
About the work environment
11. Can you show me where I'll be working? Can we walk around the office? (As you walk around, listen.)
12. Are the tools I'll be using cutting edge or totally ancient? What is the specification of the developer machines that you provide?
13. What sort of training and development mechanisms are there for professional development? How about conference attendance? (Factor in the answer when you begin negotiating. Plus you want to know if the company is interested in investing in people.)
14. Are there opportunities to explore my skills at different business areas through the course of my tenure? (Can you grow in different areas, and move into a new one? For examples, can testers with a bend towards coding become developers?)
15. I'm not a morning person. Will I have flexibility to work when I am most productive, barring things like mandatory meetings?
16. What is our mission? What will be my role in the mission?
17. How many positions am I actually covering?
18. What will I be expected to accomplish the first three months?
19. What projects will I work on? How will I be transitioned to new projects after existing projects are over?
20. How much overtime has this team been doing in the last three months? What's typical? What's acceptable? How does the company respond after a time-crunch is over? (If you ask directly, "Do you encourage work/life balance?" naturally they'll respond "Sure!" Instead, ask a specific question to find out if that "Sure!" matches reality.)
The company
21. What is your company vision? How do you reflect it in your daily work? (Most start-ups have big ideas but few conduct themselves in a way that will help them reach their goals.)
22. How do benefits compare to sector averages?
23. Could you explain the pay review system? Also, the performance review system?
24. How comfortable are you with your company's financials? How has the current economic climate impacted business?
25. When did the company have its last layoff? (What you really want to know, of course, is "How long until the most recently hired get laid off?")
The open-ended questions
26. What one thing would you change about working here? You can ask this of anyone on the team. The answer tells you a lot about the workplace, as well as the values of the person you're talking to.
27. What's the best thing about working here? What's the worst thing about working here? Expect that the "best" things will be unremarkable, however nice to hear (such as "so many smart people!"). Listen carefully to the undertone in the worst-things.
28. In six months, what will I love about working for you? What will I hate? (I learned this question during researching the aforementioned DevSource article, and it's been amazingly useful. Warning: if the manager says, "You won't hate anything! I'm a nice guy!" run away. Either he has poor self-assessment skills, or he has demonstrated that he'll never give you a straight and honest answer.)
http://www.javaworld.com/community/node/2745
1. Who is my line manager or the project leader to whom I will report? Can I meet him? (Some companies only let candidates meet the managers. Go figure.)
2. Before I accept the job, can we do a lunch with the whole team to get to know each other?
3. What is the demographic of the team? or Why are there so few women in senior positions here? (Diversity matters.)
4. What sort of team environment do you promote? How do teams interact with one another?
About the manager
5. How much time do you spend in one-on-one meetings versus the time in team meetings?
6. Give an example of something unexpected and how it was handled.
7. How do you measure success? Where does that measurement stand now? What actions are you taking to change the measurement(s) (in the right direction)? What have those actions done to the measurement(s)?
8. How does your manager measure your success?
9. What is your preferred method of communication? Phone calls, e-mail, informally, in meetings, only when necessary? How much contact will I have with you?
10. Why do people typically leave your team? (The best answer probably is that they were promoted, but if they're leaving the company or seeking internal transfers you may have an opportunity to drill down and find out why. This is also a subtle way to ask how long the manager has been managing people.)
About the work environment
11. Can you show me where I'll be working? Can we walk around the office? (As you walk around, listen.)
12. Are the tools I'll be using cutting edge or totally ancient? What is the specification of the developer machines that you provide?
13. What sort of training and development mechanisms are there for professional development? How about conference attendance? (Factor in the answer when you begin negotiating. Plus you want to know if the company is interested in investing in people.)
14. Are there opportunities to explore my skills at different business areas through the course of my tenure? (Can you grow in different areas, and move into a new one? For examples, can testers with a bend towards coding become developers?)
15. I'm not a morning person. Will I have flexibility to work when I am most productive, barring things like mandatory meetings?
16. What is our mission? What will be my role in the mission?
17. How many positions am I actually covering?
18. What will I be expected to accomplish the first three months?
19. What projects will I work on? How will I be transitioned to new projects after existing projects are over?
20. How much overtime has this team been doing in the last three months? What's typical? What's acceptable? How does the company respond after a time-crunch is over? (If you ask directly, "Do you encourage work/life balance?" naturally they'll respond "Sure!" Instead, ask a specific question to find out if that "Sure!" matches reality.)
The company
21. What is your company vision? How do you reflect it in your daily work? (Most start-ups have big ideas but few conduct themselves in a way that will help them reach their goals.)
22. How do benefits compare to sector averages?
23. Could you explain the pay review system? Also, the performance review system?
24. How comfortable are you with your company's financials? How has the current economic climate impacted business?
25. When did the company have its last layoff? (What you really want to know, of course, is "How long until the most recently hired get laid off?")
The open-ended questions
26. What one thing would you change about working here? You can ask this of anyone on the team. The answer tells you a lot about the workplace, as well as the values of the person you're talking to.
27. What's the best thing about working here? What's the worst thing about working here? Expect that the "best" things will be unremarkable, however nice to hear (such as "so many smart people!"). Listen carefully to the undertone in the worst-things.
28. In six months, what will I love about working for you? What will I hate? (I learned this question during researching the aforementioned DevSource article, and it's been amazingly useful. Warning: if the manager says, "You won't hate anything! I'm a nice guy!" run away. Either he has poor self-assessment skills, or he has demonstrated that he'll never give you a straight and honest answer.)
http://www.javaworld.com/community/node/2745
Thursday, April 9, 2009
Wednesday, April 8, 2009
How to minimize white screen in Windows XP and Firefox
Download one theme for Windows XP and two extensions for Firefox.
Microsoft Zune Theme 1.0
AnyColor (set it to True Black)
Blank Your Monitor + Easy Reading
6 Free Tools that every Windows Programmer should Install
1. Unlocker
I've talked about unlocker before, it's basically a fabulous little utility that tells you which app is locking your file (and it normally says it's the TortoiseSVN cache which brings me neatly onto my next utility...)
2. TortoiseSVN
The code you produce at work is version controlled, so why isn't the code your make at home? TortoiseSVN is the best way of managing a home version control system as it's a really easy Windows Explorer plugin.
3. Dependency Walker
So you're developing a large application - and by large I'm talking tens or even hundreds of dlls.
You change the public interface on one of the non-dynmically loaded ones and, because you're in a hurry to get a build finished, only rebuild that dll.
Suddenly you can't start you app up any longer.
Dependency walker can tell you which other dlls need to be rebuilt so that they can interface with the changed dll.
4. Notepad++
You're not still using notepad to open .txt files are you?
Notepad++ is far better as it supports custom plugins and has macro recording, yet it still starts up in an acceptable time.
Of all of the freeware editors out there, this is my favourite as it behaves the most like Visual Studio when the Ctrl key is held down and your flicking from word to word.
Other alternatives to the Big Bad Pad are: PSPad or Programmer's file editor, but I've tried them both all I'm sticking with Notepad++.
5. Process Explorer
Want to know what's eating all your processor time? Download Microsoft's pimped-up task manager, Process Explorer.
6. AutoHotkey
There is generally thought to be a 10 fold difference in productivity between poor programmers and expert ones. I believe that this is in no small part down to the experts' use of keyboard shortcuts. Auto Hotkey allows you to set up hotkey scripts to control virtually anything.
http://ianhickman.blogspot.com/2009/04/6-free-tools-that-every-windows.html
Subscribe to:
Posts (Atom)