text:
- Introduction
- Overview
- JVMTI interface and agent architecture
- What you need to go through the examples in this tutorial
- Introduction to the Profiling dialog
- Collecting method-level execution statistics
- Heap analysis: locating memory leaks
- Thread analysis: tracking thread behavior
- Profiling applications on a remote machine
- Profiling Eclipse Rich Client Platform plug-ins
- Eclipse Web Tools Platform integration and profiling with WebSphere
- What you have learned
- Downloadable resources
- Related topics
- Comments
Profiling Java applications using IBM Rational Application Developer
An introduction to using the Rational Application Developer profiling functionality to profile local and remote Java applications
The ongoing advancement of technology, in both processing power and storage technologies, has brought with it a number of new and interesting technologies. These technologies trade pure application performance for secondary concerns, such as programmer efficiency or system flexibility. Among these are technologies like garbage-collected just-in-time-compiled languages such as Java™, and a greater prevalence of whole-system virtualization.
As computer processing power and speed rapidly grows ever greater, and the cost per unit of processing power continues to decline, it might seem that the need for individual application efficiency may seem to be lessening. However, even the smallest applications may suffer crushing performance issues when applied across a sufficiently large number of users. Also, the largest applications may fall prey to nasty performance bottlenecks and memory leaks that hurt application availability, impair usability due to page load time issues, and potentially require costly upgrades where code fixes would suffice.
The IBM® Rational® Application Developer and IBM® Rational® Software Architect profiling tooling provides sophisticated tools that developers can use to identify and alleviate these performance issues. Both products package the profiling tools that are described in this tutorial; however, while the functionality and features are available in either, this tutorial focuses on Rational Application Developer. The profiling functionality is based on the open source Eclipse Test and Performance Tools Project (TPTP) Java™ Virtual Machine Tool Interface (JVMTI) Profiling agent, for which more information is available in the Related topics section.
The Rational Application Developer profiling platform provides three different analyses of application behavior:
- Memory-usage analysis
- Method-level execution analysis
- Thread analysis
Built-in integration with the existing Rational Application Developer launch types makes profiling your application as easy as selecting the stop-watch profiling icon, and then selecting your existing Run/Debug launch configurations from the launch list. However, when your profiled application has launched, and the data has begun to be collected, a familiarity with the terms and concepts of application profiling will be helpful in getting the most out of the profiling functionality.
This tutorial provides you guidance on using Rational Application Developer to profile your Java applications. To that end, it will first provide relevant background on the Performance Tools functionality.
JVMTI interface and agent architecture
The Rational Application Developer Java profiler consists of a set of native agents that are implemented through the Java Virtual Machine's JVMTI interface. The JVMTI interface is a standard interface that allows native libraries (known as agents) to control a running virtual machine (VM) and obtain information about the executing Java application. A JVMTI agent subscribes to JVM events (and, where needed, instrument class byte code), to ensure that it is notified of all profiling events as the Java application executes on that VM.
The profiler registers its native functions through the JVMTI interface: these functions are invoked by the JVM when registered events occur. With the Rational Application Developer Java profiling agent, profiling data is generated in real-time. That is, the agent does not wait until the application has terminated to provide and present that data. The product supports agents to collect information on the three dimensions listed previously.
One important note: The Rational Application Developer JVMTI Java Profiler is not a sample-based profiler, and as such, all JVM events that are not filtered by the profiling filters will be transmitted back to the workbench. This method of profiling ensures a high level of accuracy, but at the expense of a greater profiling overhead versus sample-based profiling.
Profiling agents
Profiling agents are executed alongside the JVM (and inside the JVM process) when that JVM is run with special JVMTI-specific VM arguments. When the profiling agents run, they collect data from the JVM in the form of execution, heap, or thread events. Within the Rational Application Developer profiling sphere, these agents are referred to as the Execution Analysis, Heap Analysis, and Thread Analysis agents.
- The Execution Analysis agent is used to collect execution statistics, such as time spent in each method, the number of method calls, and the overall call graph.
- The Heap Analysis agent is used to generate memory usage statistics. It collects object allocation details, such as live instances and active size in memory.
- The Thread Analysis agent is used to obtain details about the threads spawned by the Java application, and to track object monitor use and contention throughout the target application.
To facilitate agent launching and client-agent communication, the profiling tooling uses a second component called the agent controller in order to allow agents to communicate with the workbench. This component is pre-bundled with Rational Application Developer.
Using the agent controller, a target Java application may reside on a different machine than that of the developer's workbench. The agent controller functions as an intermediary, sending commands and data between the workbench and the profiling agent. The following figure shows a remote profiling scenario. Communication between the developer's workbench and the agent controller is through sockets, while communication between the agent controller and agents is through named pipes and shared memory.
Figure 1. Remote profiling
In additional to agent support and communication, the agent controller provides additional services such as process launch, termination, and monitoring, and file transfer. It is always necessary for the agent controller process to be running on the target machine in order to utilize the profiling functionality on that machine. Fortunately, there are a variety of ways to start this process.
When profiling locally-launched applications directly in your local workbench, an Integrated Agent Controller (IAC) is started automatically, without user intervention, whenever any functionality that requires it is activated. The IAC will remain running as long as the workbench is open, and will shut down when the workbench is closed. The default IAC settings can be adjusted through the configuration view available under Preferences > Agent Controller.
In addition to local launch through the IAC, the agent controller can be used to launch applications on any supported remote host. A standalone agent controller, packaged as the IBM® Rational® Agent Controller daemon process, is available for download for 32- and 64-bit Linux®, Microsoft® Windows®, IBM® AIX®, Solaris, IBM® z/OS®, and Linux on IBM® System z® systems. These provide the ability for applications to be directly executed on a remote host, with the data generated by the remote agents being transmitted back to the local workbench through a socket connection to the remote machine.
See the Related topics section at the end of this tutorial for the Rational Agent Controller download locations.
What you need to go through the examples in this tutorial
All examples in this tutorial were profiled using Rational Application Developer Version 7.5.4. The profiling tools are available through either Rational Application Developer or Rational Software Architect, or a supported Eclipse-based product with the Eclipse TPTP plug-ins. See the Related topics section for more information.
Introduction to the Profiling dialog
To begin, switch to a Java-based perspective and look for the green play button profiling dialog icon (). The Profile Configurations profiling dialog is the central launch point for all of the profiling functionality in Rational Application Developer. This may also be accessed from most perspectives by selecting Run > Profile Configurations from the menu.
The Rational Application Developer profiling functionality supports almost all of the standard launch types:
- Eclipse Application
- Java Applet
- Java Application
- Test
- Java Unit (JUnit)
- IBM® WebSphere® Application Server Versions 6.0, 6.1, and 7.0 application client
- And others
In addition, support is extended by two profiler-specific types, Attach to Agent and External Java Application:
- Attach to Agent allows any Java virtual machine to be profiled, independent of the use of that JVM by the application, as long as the appropriate JVMTI profiling agent VM arguments are used. Because this entry works with any application, it can be used for otherwise unsupported application configurations, either local or remote, whether they are on an application server or are a full-fledged standalone application. This requires that you configure the appropriate classpath, environment variables, and application parameters from the command line, along with the required JVMTI profiling agent arguments (described later in the tutorial).
- External Java Application, like Attach to Agent, supports profiling any JVM independent of its use. Unlike Attach to Agent, External Java Application requires that you specify the classpath, environment variables, application parameters, and profiling type in the workbench (in the launcher), rather than from the command line. One import point to note: all required class files, Java archive (JAR) files, and additional dependencies must already be present on the target host, because the agent controller does not support the remote file transfer of classes or files to meet the application requirements.
Collecting method-level execution statistics
Of the three profiling agents discussed in this tutorial, likely the most commonly-used agent is the method-level execution analysis agent, which provides a variety of statistics on method execution. The following example should provide a straightforward explanation of the available execution statistics' functionality.
- First, select a Java application to profile.
- Right click the Java project and select Profile as.
- If this is the first time that you are profiling this project, the Profiling dialog is displayed. Otherwise it will automatically revert to the last saved profile configuration for the selected project.
- To modify the previous profile configuration, use the Profile configurations dialog, as described previously.
Profiling options include Execution Time Analysis, Memory Analysis, and Thread Analysis, as shown in Figure 2.
Figure 2. Options in the Edit configuration and launch dialog
In the profile dialog you will see several profiling options: the previously-mentioned profiling options under Java Profiling are the subject of this tutorial. The fourth item, Probe Insertion, describes an additional functionality using the Probekit tool to instrument applications with custom probes, but is outside the scope of this tutorial.
- From here, click the Edit Options button.
Execution Time Analysis has three options:
- Execution Flow provides a greater variety of profiling data views, but increases profiling overhead, profiling data volume, and workbench memory usage. This may be unsuitable for applications with large profiling data sets.
- Execution Statistics has a significantly reduced overhead, and workbench memory usage, but at the expensive of some profiling functionality. Only the Execution Statistics and Method Invocation Details will be available.
- Collect method CPU time information: In either of the above modes, the profiler can collect the time the CPU spends executing profiled methods. This will differ from the above, because I/O and wait times will not be included in the CPU time.
The best course of action is to begin with Execution Flow, and then switch to Execution Statistics (or the adjust filter set) if the data volume becomes too great.
- For this example, select Execution Flow, because this provides an example of all of the available profiling views.
Before selecting the profile button, it is important that the proper filters are in place. A large amount of profiling data is generated as part of the profiling process, because every single method call, object allocation, or thread event requires an event to be generated, transmitted, and processed.
The sheer volume of profiling data can sometimes be overwhelming, both to the application under execution and to the workbench itself. However, only a fraction of it will be useful for analysis purposes. Fortunately, the profiling tool provides a way to filter out irrelevant information so that you can reduce the agent data volume for the profiled application.
For instance, in profiling a Java application, you are likely only concerned for the methods of your application, and not in the execution time of the standard Java language packages like java.*, sun.*, and so on. It is important to use filters that are specifically targeted to the classes of your application, so as to reduce profiling overhead from external classes as much as possible.
- To set filters, double click the Java profiling – JRE 1.5 or newer entry. You will see a window similar to the one shown in Figure 3. Filters specify which packages and classes to profile; filters are themselves contained in configurable filter sets.
Figure 3. Select filter sets and their contents
In this dialog, you define new filters or modify existing filters. A few filters that are useful in the most common profiling scenarios are provided, as shown in Figure 3. Filter sets are listed in the top pane, and the filters themselves are listed on the bottom. Filter precedence is from top to bottom, meaning that filters higher on the list will override any conflicting filters lower on the list. Filters and filter sets can be added and removed using the buttons on the right of the dialog box.
- For this example, you are content with the default filter and select Finish to return to the profiling dialog box.
- From here, select Execution Analysis, and click the Profile button. The workbench will confirm a switch to the Profiling and Logging perspective, and the profiled application will begin running in the Profiling Monitor view.
- Click Execution Time Analysis to open the Execution Statistics view shown in Figure 4.
Figure 4. A small data set for a class being profiled in the Execution Statistics view
The Session summary tab provides an overview of the top ten methods with the highest base time. However, it's the Execution Statistics tab from which all of the data is made fully available. Here you will find details on methods invocations and their statistics: the number of times called, average time spent, cumulative time, and so forth.
A few key definitions should help clarify the columns in this view:
- Base Time: The time to execute the contents of the method itself, excluding calls to other methods. (In the table, the Base Time field sums together all of the calls of that method.)
- Average Base Time: The average time that a particular method took to complete, excluding the time of method calls to other methods. (In the table, this is the Base Time divided by the number of Calls)
- Cumulative Time: The time to execute the method contents itself, including calls to other methods.
These statistics can help locate the performance bottlenecks in a program.
Based on these definitions, there are three important considerations:
- Average Base Time: This is the average time that a method took to complete. So, on average, this is how long a single invocation of that method took to finish (as noted above, this excludes the time taken by child methods called by this method or, more specifically, excluding the time of unfiltered child methods)
- Base Time: This is the total amount of time that a method took to complete. This is an amalgamation of all of the time that was spent in this method (excluding calls to other unfiltered methods.)
- Cumulative CPU Time: Cumulative CPU Time represents the amount of CPU time spent executing a specified method. However, the granularity of the data provided by the JVM in this regard is coarser then might be desirable. Consequently, CPU time maybe reported as zero if the time is less than a single platform-specific unit as reported by the JVM. Also, CPU time will not take into account other types of performance bottlenecks, such as those involving communication type and I/O access time. As a result, base time is often favored as a metric for performance bottleneck reduction.
At first glance, average base time would seem to be a key data point in determining which methods are slowing down the system. However, while average base time will pinpoint methods that take a long time to execute, it does not take into account the number of times a method is called. You can ask yourself which is worse: a method that runs once and takes 5.0 seconds, or a method that runs 1000 times and takes 0.5 seconds? Average base time for the first would be 5.0 seconds, while average base time for the second would be 0.5 seconds.
However, the base time for the first method would be 5.0 seconds, while the base time for the second would be 500 seconds. Reducing 500 seconds from an application run time is tremendously more impactful than merely reducing 5. Thus you can say unequivocally that the second method is a greater concern than the first, due to base time difference. Base time is therefore a primary concern for reducing the performance bottlenecks in an application. Because base time represents an amalgamation of the entire application run, generally speaking reducing base time is equivalent to reducing run time.
While base time only represents time spent executing the method itself
(excluding calls to other methods), cumulative time represents the total
time spent executing a method, including child calls. So, for instance, in
a single-threaded application, the cumulative time of the
main(…) method is equivalent to the sum of all of the base
times for all other methods in the application, because the
main(…) method is the starting point of the application, and
thus is the starting point for all methods calls. Therefore, it is
equivalent to the total application run time.
With an understanding of the details of execution statistics in mind, let's look at ways to further drill down to analyze performance problems. To get a better idea of what specific methods are invoking, and from where specific methods are being called, double-click the desired method in the Execution Statistics tab. This will open the Method Invocation Details tab, as shown in Figure 5.
Figure 5. Drill down into finer detail of specific methods
The Method Invocation Details tab is a fairly straightforward presentation of those execution statistics that are directly related to the selected method. The second table in the tab is Selected method is invoked by, which will list all of the methods that called the selected method during the application run.
The third table, Selected method invokes, will list all of the methods that the selected method calls. The same statistics from the Execution Statistics tab are reproduced here, and selecting a method from any of these tables will update the selected method at the top of the view.
The next tab of note here is the Call Tree tab, which is only available when you are profiling with the Execution Flow profiling option. The Call Tree tab breaks down method calls for all of the methods that are called for a specific thread. The first-level items in the table are all of the threads that have spawned during the application run. Below this is an amalgamation of each of the method calls that are made, with methods on a subsequent level being called by methods from the previous level of the tree.
Figure 6. The Call Tree tab presents method invocations from a more thread-centric perspective
At the top-most level, the Cumulative Time for each thread represents the total time that the thread spent running in the application. Those threads with a higher cumulative time are candidates for analysis and optimization.
The Percent Per Thread field represents the total time spent executing a method as expressed as a percentage of the total time spent executing the thread. It is represented as a total of the cumulative time of the top-most method call for that thread (which is the total time spent executing the thread). Additional statistics are provided, such as the maximum, minimum, and average time that it took to complete a method execution on the thread, as well as the total number of calls.
Below the top call tree table is a table of method call stacks, which display the contents of the stack of every method call for the presently selected item in the call tree table. The number of stacks available will be equal to the number of calls listed. This can prove useful for analyzing particular method invocation instances.
Finally, you can right-click on the method entry and select Open Source from any of the views. If the related Java file is present in the workspace, the workbench file will be opened and the method definition will be located. When performance bottlenecks are identified, you can modify them and then profile again to see the difference.
Heap analysis: locating memory leaks
A primary objective of application developers looking to profile memory use is either to:
- Analyze the contents of the heap as the application is running (allowing class-by-class statistics to be generated)
- Identify memory leaks by utilizing either heap analysis on-the-fly or heap analysis after a user-requested garbage collection (to identify objects that are or are not being not garbage collected).
To begin to gather heap information from your application, launch your application from the Profiling dialog, using the Memory Analysis profiling type. The only profiler option available in memory analysis is whether or not to Track Object Allocation Sites. Allocation sites are the locations in the code where objects are being instantiated (implicitly or explicitly). With this option selected, you are able to select classes in the Object Allocations view, and discern from which methods those objects were created.
The only disadvantage to having the Track Object Allocation Sites option selected is that it will significantly increase the volume of profiling data being generated. If profiling performance is impacted, or workbench responsiveness is affected, consider either clearing this option or reducing the amount of data by using an updated filter set.
In addition to object allocation, ensure that you have set the correct
filters for your application. Heap profiling has a greater overall
instrumentation overhead associated with it than execution or thread
analysis, which itself already imposes a potentially hefty penalty to
application performance. Finally, when selecting filters: if you want to
see, for instance, space occupied by Java types such as
String or
Integer, you will need to add these to
the filter. By default, these are filtered out by the
java* *
EXCLUDE filter.
Object Allocation view
When data becomes available from the profiled application, it is displayed in the Object Allocation view. The Object Allocation view is the main view in which all of the information gathered by the heap profiling agent is presented.
Object Allocation columns:
- Live Instances: The current number of objects in the heap, of the specified class, that are presently being utilized (have not been garbage collected).
- Total Instances: The total number of objects in the heap that have been created during the JVM's lifetime (including those that have been garbage collected).
- Active Size (bytes): The total size of all of the object instances, of the particular class, that are presently used by the JVM (in other words, that have not been garbage collected). Note that object size is JVM-implementation dependent.
- Total Size (bytes): The total size of all object instances of the class, including those that have been garbage collected earlier in the application lifecycle.
- Average Age: The average age of an object before it is garbage collected, as measured by the number of garbage collections that this object has survived. Objects that have survived a large number of garbage collections are considered to be a memory leak if their usage is no longer required by the application.
The data in the memory statistics table can be switched between package level and class level using the view toolbar. This can be especially helpful when you are dealing with a large number of classes. The data can be represented as a percentage or as a delta of existing data from the previous refresh. Figure 7 shows the icons for, from left to right, report generation, filtering, package/class view options, and the percentage and delta options.
Figure 7. Icons in the Object Allocations view toolbar
If you have the Object Allocation profiling option selected, then double-clicking any of the entries in the Memory Statistics table will switch to the Allocation Details tab. This tab presents a table of all of the locations in the program where objects of that type were allocated. When a particular type has been identified as being over-represented in the heap, it can be particularly helpful for you to use the data in the view to determine where those objects are being allocated, allowing the identification and elimination of excessive allocation.
Using this functionality to identify heap problems
When the workbench has begun collecting profiling data from the target application, you can consult the Object Allocation view at any time in order to determine the present content of the heap. The table will reflect, in real time, all object allocation and de-allocation events as they occur. This provides a moment-to-moment view of the memory contents, expressed either as a percentage of the total, or in absolute terms (bytes).
By sorting the data table and selecting the classes with the largest active size, developers can target problem areas in need of improvement. The allocation details for those classes then provide a list of the object creation sources, which you can then, one-by-one, rule out or investigate as being a cause of the heap size issues.
This example represents a simple chat room Web application that allows users to log in and communicate with each other. Room chatter is transmitted to all participants, and then all conversations are written to a log file on the server. However, using the Heap profiling capabilities of Rational Application Developer, you have identified a serious memory leak (likely involving one specific class).
In the Memory Statistics view with the total percentage listed, you can see
that the
ChatlineMessage class represents nearly 98% of the
objects presently allocated in the heap, composing 61% of the total heap
contents by size. This should be a serious warning sign to the application
developer that one or more classes are over-represented in the heap
contents, and are contributing to a memory leak in the application.
Figure 8. Viewing by package with the delta option selected
The Profiling Monitor view also allows you to request garbage collection of the JVM. When used in combination with the delta table, this is especially helpful in determining how much of the heap is contained in irretrievable heap objects, which are another type of memory leak.
Before selecting garbage collection, select the Show Delta Columns icon from the Object Allocations toolbar. This introduces four new delta columns, which are delta versions of the existing columns and reflect changes in these values from when you previously selected the Refresh button (see Figure 9, following). When you are in the delta table, click the Run Garbage Collection (green play arrow with a garbage can) icon from the Profiling Monitor toolbar to trigger a JVM garbage collection. The results of the garbage collection will be reflected in the Memory Statistics table as soon as you select the refresh button, as shown in Figure 9 following.
Those classes that contributed the most to the garbage collected heap contents can be identified by sorting by the Delta: Active Size table column. These are the classes that lost the most size during the collection, and which contributed the most to the total unused object pool.
When the JVM performs a garbage collection, it looks for allocated objects
in the heap that are orphaned (that is, they are not referenced by any
other object in the heap, which itself is not referenced by any heap
object.) Using the same chat application example as discussed previously,
you have now instructed the JVM to perform a garbage collection through
the workbench. You can see that the initial result is a major decrease in
both the number of allocated
ChatlineMessage objects, as well
as the total size of the heap.
Figure 9. The delta columns provide moment-to-moment statistics on object collection
This screen capture shows the contents of the Memory Statistics view a
moment after you have requested a garbage collection. Already, the
contents of the heap have been reduced dramatically, with 22,079 fewer
live instances and a corresponding percentage drop. Within about five or
six seconds, the Live Instances percentage will drop to
nearly zero. In this application, you discover that
ChatlineMessage objects are being allocated, used briefly,
and then discarded.
Using heap analysis, delta columns, and garbage collection, you can identify objects that are being allocated but not garbage collected, or that are not referenced by any other objects in the application lifecycle and are contributing to a large collection of orphaned objects. Application developers can analyze and reduce the overall footprint of their application, and can potentially reduce system swapping penalties, improve response time, and reduce application system requirements and cost.
Thread analysis: tracking thread behavior
The audience for this section is users who wish to identify and correct any number of thread-related issues in their application. For specific threads of interest, you can use these profiling tools to examine how often these particular threads are blocked (and by whom), and to visualize your application's thread characteristics.
For global concerns, such as for instance performance concerns where thread behavior is a potential suspect, the goal is to identify general thread issues that might impact application performance. A primary objective of an application developer who wants to profile thread behavior is to find threads that would otherwise run sooner, or more rapidly, were the resource and thread characteristics of the application altered.
To begin to gather thread information from the target application, launch the application from the Profiling dialog using the Thread Analysis profiling type. The Thread Analysis view of Rational Application Developer is the central view for all of the information gathered by the thread profiling agent.
The Thread Analysis view is split into three tabs:
- Thread Statistics: A table of statistics for every thread launched by the application, both past and present. Listed information includes thread state; total running, waiting, and blocked times; as well as the number of blocks and deadlocks per thread.
- Monitor Statistics: Provides detailed information on monitor class statistics, including block and wait statistics for individual monitor classes.
- Threads Visualizer: Provides a visual representation of all threads profiled in the target application, by status.
Threads in all of the views are organized by thread group. The data in the thread analysis view will only update whenever additional data is received from the profiled application. This point is an important one: the tables and graph will only be updated when a thread-related event is received from the target application profiler. If it appears as if the data is not being updated, this is because no new thread events have been received, and the data is still in its previous state.
The thread name listed is the name passed into the
Thread(String name) constructor, or set with the
Thread.setName method. It may be beneficial to call this
method in the target application, in order to allow for easier thread
identification. Thread statistics are gathered on all Java threads, which
include VM threads, and may also include threads used by the application
container or application framework. Fortunately, you can filter
uninteresting threads out of the view by selecting the thread filter icon
(three arrows with middle yellow one going through vertical green line
), and clearing
unwanted threads.
The seven thread states are:
- Running
- Sleeping: one in which the
sleepmethod has been explicitly called
- Waiting: one on which the
waitmethod has been explicitly called and is waiting for a
notifyAllcall on its monitor object
- Blocked: refers to cases where a thread is blocked by an object monitor that is in use by another thread (for instance, a thread holding an object monitor in a synchronized statement)
- Deadlocked: statistics are gathered on a per-thread level, for each thread in the target application. A deadlock is considered to have occurred when two or more threads hold resources for which the resource dependency graph contains a cycle (that is, all deadlocked threads require additional resources that they cannot obtain without another deadlocked thread releasing required resources).
- Stopped
- Unknown
In Java, deadlocks can occur in a variety of situations, for example:
- When, in two threads, synchronized methods in two classes are trying to call the synchronized methods of each other.
- When one thread synchronizes on resource A and attempts to synchronize on a second resource B, while a second thread synchronizes on resource B and attempts to synchronize on resource A.
- Any other situation where it is not possible for two or more deadlocked threads to unblock and complete.
Thread statistics
This tab lists all of the threads that are currently running, or have run, throughout the lifetime of the application. Threads remain in the table even after termination. This view lists running time, waiting time, and blocked time. Running time is defined as the total running time of the thread minus the time that it was waiting or blocked. Waiting time is defined as the amount of time that the thread spent waiting for a monitor, and Blocked time is the amount of time that the thread spent blocked by the ownership of monitors by other threads. In addition, there are several recorded counts: Block count and Deadlock count are the number of times a thread has blocked or deadlocked, respectively, throughout the life of the thread.
In this example, you are profiling an Eclipse plug-in. Figure 10 shows the present states of all running threads, their running time, waiting time, blocked time, and deadlocked time, and the blocked count. Application developers may utilize this view to either view a general picture of the entire thread landscape of their application, or to drill down to the moment-by-moment statistics of particular threads.
Figure 10. List of threads that are running in a profiled Eclipse plug-in
The waiting time, blocked time, and deadlocked time are important statistics to consider in the context of application performance. These values should be closely scrutinized to ensure that they are appropriate, especially for time-dependent threads.
Monitor statistics
The second tab in the Thread Analysis view is Monitor
Statistics, shown in Figure 11. All of the objects in Java
have a corresponding monitor, which is the basis for all concurrency
operations in Java. Monitors are invoked when inside a synchronization
block, or when
wait or
notify methods are called
to wait for a dependency or signal an availability, respectively. This tab
provides monitor statistics on a thread-by-thread basis.
Figure 11. The Monitor Statistics tab of the Thread Analysis view
In Figure 11, the Thread Statistics table contains a list of threads in the profiled application, along with various statistics of the thread from the first tab. Select one of the threads in the Thread Statistics table to display the associated monitors referenced by that Thread, including various statistics for those monitors. You can then select the monitor to open up information about its class, including block and wait statistics for callers of the monitor, as well as timing and object information. This allows the identification of the particular objects that are in contention, by whom, and how often.
Threads visualizer
In the Threads Visualizer tab shown in Figure 12, each of the seven thread states is denoted by bars of varying backgrounds and line patterns. Threads are sorted by thread group and thread name. The x-axis of the graph represents time, the range of which can be adjusted using the zoom-in and zoom-out icons.
Each row of the table contains a bar representing thread execution. Inside each bar is a continuous list of events, which represent changes in the thread state. You can double-click an event to display its call stack in the Call Stack view, and you can move from event to event using the Select Next Event and Select Previous Event buttons in the top right-hand corner of the Threads Visualizer tab.
In the graph, Waiting and Blocked states are denoted by dotted lines, and Deadlocked and Stopped states are denoted by a solid line. Of most importance to the application developers looking to identify performance issues are Deadlocked (red), Waiting (orange), and Blocked (yellow).
One important UI note: Perhaps contrary to what might be expected behavior, when a thread has terminated it will continue to maintain a dark grey representation on the chart (rather than disappearing from the chart entirely).
Figure 12. The Threads Visualizer represents the thread status of all threads in a graph, plotted against the application timeline
The buttons on the thread analysis toolbar are used to move or change focus to or from particular threads. From left to right, as shown in Figure 13, the buttons are: Legend, Show Call Stack, Reset Timescale, Zoom In/Out, Select Next/Previous Event, Select Next/Previous Thread, Group Threads, Filter Threads, and Visualize Thread Interactions. Most of these are self-explanatory: for example, the Next/Previous Thread button changes the currently selected thread, and the Select Next/Previous Event button moves the event cursor to the next or previous event of the currently selected thread. Additionally, you can group and filter threads as required.
Figure 13. Interact with the Threads Visualizer graph using the buttons at the top of the view
When you use the Rational Application Developer thread profiling functionality, you should take into account a number of considerations:
- For threads that are on a wake-sleep cycle, how long does it take to complete the wake phase of the cycle, and how long does the thread sleep?
- For threads that are dependent on external resources becoming available, how long are they blocked waiting for a resource to become available?
- In input-processing-output oriented applications, such as a Web application, how long do the various threads take to respond to user input, process the data, and produce the corresponding output?
- Some threads periodically wake to check a condition or perform a function, then return to sleep. Thread analysis allows you to observe these relationships using the Threads Visualizer.
- You can use the profiling functionality to monitor producer-consumer and reader-writer relationships.
In aggregate, the thread profiling functionality provides a variety of views to analyze application thread performance and behavior. These views allow you to gather information and analyze various aspects of program execution, in order to gain insight into potential bottlenecks or failure conditions.
Profiling applications on a remote machine
So far, this tutorial has discussed profiling Java applications as they are running on a local machine. Rational Application Developer profiling also provides the capacity to launch and profile applications that are running on a machine separate from the workbench. To enable this functionality, you can download the Rational Agent Controller component and install it separately on Windows, Linux x86/x64, Linux for System Z, IBM AIX, IBM z/OS, Solaris SPARC, and Solaris x86.
Instructions to install and start the Rational Agent Controller are available on the IBM download site; consult the Related topics section for more details. When it is installed, run the SetConfig setup script, and then start the agent controller using ACServer.exe (Windows) or ACStart.sh (UNIX®) on the remote machine. An example Linux on System Z configuration is shown in Figure 14.
Figure 14. Starting the Rational Agent Controller process from the command line and setting up the Java Profiler environment variables
The profiler requires you to set additional environment variables. On
Linux, for instance, agent-specific additions to the
LD_LIBRARY_PATH and
PATH variables are required.
Other variables shown in Figure 14 previously are set just for the
convenience of using their values more than once without having to type
the long path. You can add these to your global environment variables,
specify them in the terminal session, or add these to the launch script of
your Java application. Additionally, some platforms allow you to profile
without setting these environment variables (instead specifying the path
on the command line). Consult the Getting Started document of your
Rational Agent Controller installation for more information.
In addition to setting these environment variables, you'll also need to determine the type of profiling data that is required, and set the JVM arguments to reflect this type when launching your application.
JVM Arguments on Windows:
All UNIX varieties:
JVM Arguments on Linux:
(Note the single quotes around the entire string; these are required so that the semi-colon is not interpreted as a new line character by the shell)
Note the use of
CGProf (
<profile-option> in
the generic command line) in the command line JVM arguments in the example
above: this is one of the options that corresponds to the data collection
profiling types:
CGProf: This is equivalent to Execution Time Analysis in the workbench Profiling UI. As mentioned previously, this option is used to identify performance bottlenecks, by breaking down execution time on a method-by-method basis.
HeapProf: This is equivalent to Memory Analysis in the workbench Profiling UI. As mentioned, this option tracks the contents of the heap by tracing object allocation and deallocation, as well as garbage collection events.
ThreadProf: This is equivalent to Thread Analysis in the workbench Profiling UI. This option traces thread and monitor usage during application execution.
You need to select one of the data collection types, and place that value in the profile-option JVM argument value above. You may only specify one at a time.
In addition, you need to select agent behavior (for instance, the example
in Figure 14 uses
controlled: This agent behavior prevents the JVM from initializing until the agent is attached to (from the workbench) and given instructions to start monitoring. As soon as the agent connection is established, the JVM will start. Because the JVM waits until the workbench has connected, the profiling agent will generate data for the entire lifecycle of the application.
enabled: With this agent behavior, the profiling agent is launched at JVM startup. However, the JVM is initialized immediately, and begins running without waiting for the workbench to connect. The profiling agent does not begin to generate data until after the workbench has connected to the agent and started monitoring. No profiling data is produced until the workbench attaches. Any application execution that takes place before the workbench has connected will not be recorded.
An additional agent behavior is
standalone, which is outside
the purview of this tutorial. It allows profiling without an agent
controller by writing data to a trace file on the local file system, which
can then be directly imported into Rational Application Developer.
Similarly, additional command line options are available to fine tune
profiler data. For more information, consult the Rational Agent Controller
Getting Started document.
Example 1:
(Heap profiling on Windows, mentioned enabled mode)
Example 2:
(Execution time profiling, on Linux mentioned controlled mode)
When the target application JVM has been run with appropriate JVM arguments, you are ready to connect from the workbench. To connect from the workbench, bring up the Profile Configurations dialog, as shown in Figure 15.
Figure 15. Selecting the Profiling Configurations dialog from the workbench UI
A dialog box that shows the available profiling options is displayed, as shown in Figure 16.
Figure 16. Profile launch configuration options
Create a new Attach to Agent launch configuration (described previously) by double-clicking that option. You can also customize the new configuration by adding the remote machine as a new host. The agent controller on the remote machine is available at port 10002 (the default port number), as shown in Figure 17.
Figure 17. Add host dialog
After it is added as a host, the agent running on the remote machine (in this example the execution statistics agent) should be available on the Agents tab. If not, it could help to verify the Agent Controller setup and status. When you are ready, select the agent and click Profile. The workbench will attach to the agent and switch to the profiling dialog. You can now collect and analyze the data as required.
One other way of profiling an application on a remote machine is to use the previously described External Java Application option (as shown in Figure 18) instead of Attach to Agent.
Figure 18. Specifying class name and class path under External Java Application
In a new configuration of External Java Application, you specify the location and name of the Java main class on the remote machine, as shown in Figure 18. The Monitor tab helps specify the kind of profiling agent to use (Execution profiler, Memory profiler, or Thread profiler). When you click the Profile button, the application executes on the remote host, but the input and output are directed to the console window in the local workbench.
Profiling Eclipse Rich Client Platform plug-ins
Rational Application Developer supports profiling Eclipse Rich Client Platform (RCP) plug-ins. You can perform this profiling through the Eclipse Application option in the Profiling Configurations dialog box. There is an option to profile a new Eclipse instance using the plug-ins that are under development in the workbench. When you profile Eclipse plug-ins, it is especially wise to use a filter set that limits profile data directly to the packages that relate to your particular plug-in. As with other launch configurations, the profiling launch UI is built on the existing launch UI, which means that the workbench maintains a consistent profiling UI across varied application types. Profiling a plug-in is as easy as profiling a local Java application or other launch type.
Eclipse Web Tools Platform integration and profiling with WebSphere
Additionally, Rational Application Developer supports profiling servers like WebSphere Application Server or Tomcat, either running on the local machine, or connected to a remote machine. Rational Application Developer's profiling functionality closely integrates with existing server configurations. When you develop Web applications or Web services that run on WebSphere Application Server, or other supported application servers, you can launch a profiled application by selecting the server to profile in the Server view and then selecting the Profile icon. From here, the Profile on Server dialog box is displayed, and you can select the profiling type, as well as additional choices such as filters and profiling options.
A note on server profiling: the JVMTI profiling agent collects data at the JVM level rather than collecting data on a per-application basis. This means that all Java code that runs on the JVM will generate event data (including the server itself). You must ensure that you have correct filters set up to correctly target your application.
What you have learned
This tutorial explored the multi-faceted profiling functionality provided by Rational Application Developer. Rational Application Developer provides a user-friendly and intuitive interface to examine those details that are helpful for tuning a Java application, all the while seamlessly integrating with existing application configurations. The profiler is available for a wide variety of platforms, and supports any and all JVM configurations quickly and easily. With the proper application of profiling tools, and careful analysis of application performance and characteristics, you can discover and deal with performance issues before they become a problem, and before more costly solutions are required.
Downloadable resources
Related topics
- Find out more about Rational Application Developer:
- Try Rational Application Developer.
- Explore the Rational Application Developer Information Center.
- IBM Rational Agent Controller download pages: The IBM Rational Agent Controller releases are available for download from this page. Additional installation instructions are available there, as well.
- Eclipse Test and Performance Tools Platform: Find more information about the open-source Eclipse project on which the Rational Application Developer profiling tools are based.
- Eclipse TPTP documentation: This is a full listing of the documentation produced for Eclipse TPTP projects, including tutorials, screencasts, and conference presentations.
- DeveloperWorks article: Read Introduction: Eclipse Test and Performance Tools Platform by Martin Streicher. This is a tutorial-style introduction to the profiling components of Eclipse TPTP. Note: The profiling agent described in this tutorial is only applicable for JVM V1.4.2 and 1.5.0. Likewise, major revisions to the UI and available functionality were made in subsequent versions.
- Thread Synchronization and the Java Monitor: Read a thorough description of the Java thread constructs, including monitors, thread concurrency, and synchronization.
- Subscribe to the IBM developerWorks newsletter, a weekly update on the best of developerWorks tutorials, articles, downloads, community activities, webcasts and events.


text:
I am slowly realizing how great linux is and how far it has come in the past two years since I became curious.
It is not the be all or end all of operating systems, but it certainly has lots of functionality. I don't think, in the next short while, I could call myself a senior administrator.
I do have my frustrations with linux, because of the open-ness. Yes, because of that.
Here is what I would like to see.
All messages and codes standardized with a key. For example, enumerate the list of kernel messages and prefix them with **kern0001, kern0002**, etc.
When a message or code is no longer used, just don't reuse the prefix, but save it for future. And in the current kernel, just link in the codes that are used. Use these codes to refer to recovery or other documentation. Since the code will be language independent, an explanation of, for example, kernxxxx would be written up in the target user's language, be it any one of the many languages supported. Obsolete prefix codes would not be reused if a newer version of a kernel no longer required that message and associated code. The code becomes the key to the message.
It would also help for adding new language support.
Thanks one of my ideas.
- lsatenstein's blog
- Login to post comments
Other than a linux sys-admin
My background is not in LInux and not what you would call the computer science graduate product of the late 90's. When I graduated (Master in Mathematics / Statistics / Operations Research), the CS degree did not exist.
So, my interest in linux is not as a Linux administrator, but as a tool or software user available on linux. My interest lies in ERP systems such as SAP, and a few esoteric languages such as APL and J.
I have my joy with linux software and my frustrations. For example, I do a lot of writing, and under Linux I use Open Office. But to finish off, I open the same file with MS word and even if I do nothing, I save it. That reduces the disk space consumed by the file by up to 50 percent.
When you send out proposals or resumes, and you are advised that the largest attachment is 100k, then one cannot use Open Office.
My other frustration is with the lack of a good grammar checker. I have not found one in Linux to help me in French. So, again, I resort to moving my word document to Word.
So, my main use is writing, email and internet, and following the technology for ERP systems. My university training in IT at the time of my Masters was in Automata theory, graph theory, (directed graphs, etc), and Operating system and compiler design.
In ERP systems, much use is made in resource scheduling with constraints. I have a deep interest in this area. I would love to apply it to Hospital use, where it could be used to schedule operating room theaters. The constraints would be, in part (a) availability of nurses, doctors, rooms, surgical tools, medications, patients, and recovery beds).
The scheduling would have to take into account work schedules, and the constraints mentioned. There would be pools of skilled talent, (2-3 surgeons). 2-6 nurses, team for knockdown, setup, sterialisation, etc. etc.
I have just been thinking of how it could optimize the resources in a hospital arena and how it would save time for surgeons, patients and the like. And it would mean too, that instead of 10% of beds being reserved for this, that we could drop that to 2%.
If we take it further, we could pool two hospitals together under a combined ERP system, so that the resource pool would be larger, and the patient wait for his/her recovery would be reduced.
Webcam support
Got me a fancy webcam (Creative Labs Live Cam Voice). Have been searching for a driver, without success. It was on sale for 30.00 (normal price 100.00).
This little gadget works just about perfectly with XP. I had some help in finding the two byte driver code, and from that, I hope to compile the driver for Fedora 7.
The webcam has dual mikes, with each mike being a separate USB port device. Ergo, they can produce noise cancellation. Noone hears the noisy fans to keep the AMD processor cool.
More later....
Webcam driver?
Hi, did you manage to get your Live! Cam Voice to work in Linux? I just got one of those too, and would love to use it in Ubuntu.
my 2 cents
XP has virtual desktops if you know the trick, and there is a grammar checker for openoffice, plus you can easily install the MS fonts in linux.

subset: commoncrawl


text: 06 Mar 2014 07:30 Etihad Airways, the national airline of the United Arab Emirates, will increase the frequency of its Abu Dhabi – Chengdu service from five-flights-a-week to daily from 30 March 2014. As one of the biggest markets in China for Foreign Direct Investment (FDI), Chengdu has emerged as a leading economic, transportation and communication centre for the Asian country, with nearly half of the world's Fortune 500 companies having operations in the city.Etihad Airways launched its Chengdu service on 15 December 2011, offering the first and only direct airline connection between the UAE and China's Sichuan province, home to a population of over 80 million. It is the third city to be served by Etihad Airways in China, with daily flights also operated to the capital, Beijing, and the country's largest city by population, Shanghai.Passenger volumes on the Chengdu route increased by 25 per cent last year compared to 2012 levels, while cargo and mail volumes were 19 per cent higher.The flights are operated using a two-class Airbus A330-200 aircraft with 22 Pearl Business class and 240 Coral Economy class seats.James Hogan, President and Chief Executive Officer of Etihad Airways, said: "With consistent double-digit growth in passenger and cargo volumes, Chengdu represents a great opportunity. Operating a daily service will provide our guests with even more convenient service to Abu Dhabi as well as key markets in the GCC, Middle East, North Africa and Europe. In addition, our expanded service will further stimulate economic growth between China and the UAE."Flights on Etihad Airways' daily service to Chengdu can be booked from today on www.etihad.com, through Etihad Airways Contact Centres, or via travel agents. Contact met Etihad Als wereldwijd opererende luchtvaartmaatschappij hebben wij natuurlijk overal ter wereld vestigingen. Lees hoe u contact kunt opnemen met uw dichtstbijzijnde Etihad-kantoor. Bekijk onze contactgegevens Feedback Als u een opmerking, compliment of klacht wilt doorgeven, of een vraag wilt stellen, klik dan hier Vind ons leuk Bezoek onze Facebookpagina! Bekijk ons Bekijk ons YouTube-kanaal! Volg ons Etihad Airways | Etihad Aanbiedingen | Etihad Help | Etihad Rewards


text:
Observation of bed bugs with the help of naked eyes is possible; they measure about the size of the seed of an apple. They have got brown colour that can be turned to reddish brown colour when they consume food. Nymphs and non adult bed bugs are exception to this as they have got either whitish or gold colour. Flat tops and oval shaped body are enough for their descriptions. They require blood of host and their semi transparent bodies reflect dark patches of red colour which is the indication of their blood sucking habits. They are unable to fly as they do not have wings to do the same. They target crevices or small cracks for hide out.
Cimex lectularius is the scientific name of that insect who seeks human bodies for blood sucking. The population of bed bugs is accentuating day by day. When the host falls asleep at night they start sucking blood from him. You do not feel any pain with their bites but with the passage of time you may feel lesion. There is a need to observe bedrooms and begs very carefully as bed bugs may reside there.
Killing Bed Bugs
You should use hot water for washing bed accessories and proper cleanliness should be maintained throughout the house. You can take the assistance of a professional pest control manager in order to kill bed bugs.
Bed bugs can be observed with the help of naked eyes. They reside in crevices, carpets and corners of bed; they feed on blood of host. They can be killed with the help of a professional.


text:
Juvenile Historical Fiction
From Wiki
Article in Juvenile Fiction and Historical categories.
- Who Was That Masked Man, Anyway? by Avi (United States, Early 1940)
- The Shakespeare Stealer by Gary Blackwood
- The Secret Garden by Frances Hodgson Burnett
- Mary Lennox is a sour child. She was raised in India with no friends, and an Ayah to wait on her. When cholera claims the rest of her household, Mary is sent to live in Yorkshire, England with an uncle she's never met. Mysterious Archibald Craven is often away, so Mary is left in the care of Mrs. Medlock the housekeeper, and Martha, a maid. At night Mary is haunted by cries inside the manor. She spends her days outdoors exploring the estate. She discovers a walled garden that has been locked tight for ten years. Intrigued by the stories she learns from Martha and her brother Dickon, Mary sets out to find the key and restore the garden. Mary's own stubbornness and determination help her revive all that was once abandoned at Misselthwaite Manor.
- Matilda Bone by Karen Cushman (Medieval England)
- The 21 Balloons by William Pene Du Bois (1883)
- Bandit's Moon by Sid Fleischman (mid-1800s)
- Nory Ryan's Song by Patricia Reilly Giff (Ireland, 1845)
- Earthquake at Dawn by Kristiana Gregory (San Fransisco, 1906)
- Out of the Dust by Karen Hesse (Oklahoma, 1929)
- A Murder for Her Majesty by Beth Hilgartner
- The Wild Children by Felice Holman (Set in the days following the Bolshevik Revolution)
- Into The Firestorm by Deborah Hopkinson
- After eleven-year-old Nicholas (Nick) Dray's grandmother (Gran) dies, Nick leaves behind the cotton field in Texas and heads to San Francisco. When he arrives, San Francisco is even more amazing than he'd imagined. There's just one problem: he has no food or shelter and no one will give him a job. Just when things begin to get better, there's a terrible earthquake and what's left of San Francisco begins to burn rapidly. What will happen to Nick? To find out you'll have to read the book yourself!
- The Evolution of Calpurnia Tate by Jacqueline Kelly
- A Proud Taste for Scarlet and Miniver by E L Konigsburg
- Thieves of Ostia by Caroline Lawrence (Rome, 79 AD)
- Strawberry Girl by Lois Lenski
- Florida in the early 1900's was very different from today. Ten-year-old Birdie Boyer has just moved with her family to an old farm. They plan to grow strawberries to make a living. The Slater family on the neighboring farm disagrees with the way the Boyers do things, and they cause some trouble for Birdie's family. Kids at school call the Boyer girls "uppity," and hogs and bad weather threaten to ruin the strawberry crop. The Boyers celebrate some good times too, such as a trip to town or making candy from sugar cane. This story is written in "Cracker" dialect, as Birdie and her family call themselves. It offers a glimpse into the challenging life of Florida farmers long before the resorts and amusement parks were built.
- Number the Stars by Lois Lowry (Denmark, 1943)
- Things are changing in Annemarie's world. It is 1943 and the Germans have occupied Denmark. Now :Annamarie must learn what it means to be brave as she helps shelter her closest friend from the Nazi's. Will she have the courage to do what is needed?
- Beethoven Lives Upstairs by Barbara Nichol
- Master Puppeteer by Katherine Paterson (Japan, 17th century)
- A Long Way From Chicago by Richard Peck
- Every August Joey and Mary Alice visited their Grandma Dowdel in an Illinois town so small people stopped to watch the train pass through. Each story in this book takes place in a different year, beginning the summer of 1929 when Joey was nine and Mary Alice was seven. Grandma is the most colorful character in the book, full of gumption and ahead of her time. At first Joey and Mary Alice are quietly shocked by her behavior, but as they grow older, they get in on the fun.
- A Year Down Yonder by Richard Peck
- I Am the Great Horse by Katherine Roberts
- Young Alexander's father goes to goes to buy new horses for his calvary. Alexander goes with King Phillip and sees a horse no one seems able to tame. But Alexander can ride him! He convinces his father to buy it for him, but he is sent away to school and returns four years later at the age of sixteen. Alexander has not forgotten Bucephalas, though. Ride into battle with Alexander the Great and his faithful horse, Bucephalas, as they conquer Europe, Asia, and Egypt!
- Jimmy's Stars by Mary Ann Rodman (Pittsburgh, Pa, 1943)
- Roll of Thunder Hear My Cry by Mildred B Taylor (Southern United States, 1930s)
- The Devil's Arithmetic by Jane Yolen
- Thirteen year old Hannah is annoyed that she has to attend her family's Passover Seder. Her relatives always talk about the same old things, often in Yiddush, which she doesn't understand. To them, remembering the past is important. When Hannah opens the door for the prophet Elijah, she is transported into a village in Poland in the 1940's. People there call her Chaya, and believe she is a cousin from another village. The longer Hannah stays there, the more she becomes Chaya, forgetting her life in New Rochelle, New York. As Chaya and her family are on their way to a wedding, they are seized by Nazi soldiers and sent to a concentration camp. Rumors spread throughout the camp about what's really going on and what will happen to them. From somewhere deep in her memory, Chaya knows the truth. The experience of the concentration camp changes Hannah/Chaya forever.
American Colonial Fiction
- Sign of the Beaver by Elizabeth George Speare (1687)
- The Witch of Blackbird Pond by Elizabeth George Speare (1687)


text:
Hospital expansion plans presented to public
Community members heard about the new plans for the addition and expansion at Mercy Hospital, Moose Lake, at a meeting on Thursday, January 10.
Architect Brad Krump of BWBR stated that the design work is in progress.
"We are down to deciding where outlets and light switches should be," he told the group.
Oscar J. Boldt Construction of Cloquet has been hired as the contractor, and construction is expected to begin in May on the two-year construction and remodeling project.
Mercy Hospital has received approval for $38 million in loans from USDA Rural Development for the 116,400-square foot facility. USDA funding comes in the form of a $30 million direct loan and an $8 million loan guarantee delivered through AgStar Rural Capital Network.
The costs are broken down into $1,680,400 for land development, $31,531,300 for buildings and improvements, $4,619,900 for equipment and $168,400 for other expenses.
"Mercy will be paying back the USDA loan from the operating surplus that we will achieve as we move forward," said Chief Financial Officer Gregg Chartrand in an email reply to a question about how the loan will be repaid. "Currently the bond debt that Mercy has is being paid back using operating cash and thus we have been able to invest any additional surplus and maintain our positive cash flow. There will be no burden to the taxpayers and no levy is planned."
Two neighbors expressed their concerns about the changes, and asked that their concerns be considered.
Keith Carlson, Director of Support Services, reported that their concerns had been taken into account, and that the buffer of trees between the hospital's and their properties would be enlarged.
Drainage issues will be built into the plan to limit drainage of the hospital property onto private property.
"I'll make sure of what we can do and do it completely," he told the residents. "Our board is committed to being a good neighbor."
A Conditional Use Permit will be obtained from the city to move the helipad slightly, said Carlson. The tree line may be lowered for a flight path. The helicopters will not come over the neighborhoods when coming in for a landing or after takeoff.
Truck traffic will remain on Kenwood Avenue. The Walters House for short-term staff members will be moved across Kenwood Avenue to land purchased with the clinic.
The imaging truck will not have to come after the addition and remodeling is complete. An imaging department has been added in the plans.
The current parking lot and main entrance on Kenwood Avenue will be for the Augustana Care Center.
Krump said that he and representatives of his firm would be onsite during construction to ensure that the construction is going according to plan. The monitoring is a requirement of USDA financing.
The floor plan of the hospital was shown in several views, both as a floor plan for the first and second floors and in artist's renditions of the view along the curving public corridors.
"It's all about the patient first," said Krump. "We took into account safety, efficiency, travel distance and adjacency of each department."
A Shared Leadership Team has chosen brick, natural stone and wood in the décor as appropriate for Moose Lake.
"The building will have warm, earthy materials and wood floors for a modern and standard look," said Krump. "It will be warm and inviting."
The former clinic, attached to the hospital building, will be converted to materials and storage space, and trucks will deliver goods to a dock located just off of Kenwood Avenue on the southeast end of the building to limit truck traffic for the remainder of the hospital.
The ambulance entrance and main entrance would be relocated to what is now the rear of the hospital, with both areas separated. The emergency entrance would be at the far south corner of the building, and the public entrance would be in the center.
A courtyard will be constructed to the north of the main entrance, with a Meditation Room and Healing Gardens nearby.
Corridors inside the lower of the building feature a glass wall on one side to connect the public to the outside.
Patient rooms will be on the second floor. That will eliminate car lights shining in the windows and a reduction of movement for staff and patients. Waiting rooms will be located in the front and back of the second floor. A public elevator will be front and center, said Krump.
The physical therapy and rehabilitation departments will be expanded and located where the existing patient rooms are currently. All of the diagnostic departments, such as the lab, x-ray and CT, will be located between the emergency area and surgery for more efficiency.
There will be seven treatment rooms in the emergency area. A specialty clinic will be located next to the emergency department, with an area for overflow.
A third operating room will be added, with expanded prep and recovery areas.
Three rooms for administering chemotherapy will be available, and the gift shop will be greatly expanded and located in the public area of the main floor.
The new addition and expansion project is designed to limit the distance traveled for patients on gurneys. An elevator from the second floor will be located near the surgery and diagnostic area.
The dietary and cafeteria area will be expanded.
The current birthing area will become the sleep study area. The human resources and medical records area will be on the back side of the building.
Reception desks will be located in the emergency and hospital areas, and nurses stations will be located in the area of the patient rooms. A pharmacy will be located on the second floor in the center of the 21 patient rooms, which will border both sides of the second floor, with views to the outside.
The birthing area will be on the south end of the second floor with four labor and delivery rooms. A nursery will be located in close proximity to the labor and delivery rooms, with a secure entrance.
The private rooms will be spacious, with separate areas for the nurse, the patient and the family.
"This project is an investment into the health of this rural district and is based on a careful and thorough planning process," said CEO Jason Douglas in the Mercy Hospital publication, Lifeline.


text:
The official Renegades Rugby Football Club app
Bermuda National Sports Centre (Match Venue) Roberts Avenue Devonshire email@example.com HM View with Google Maps
This website is part of the Pitchero Rugby Union network. Create your own free Rugby Union club website with Pitchero.
Digital advertising by Minute Media
© Pitch Hero Ltd 2008-2019
Pitch Hero Ltd Registered in ENGLAND | WF3 1DR | Company Number - 636 1033


text:
Give Now
WFIU Public Radio
WTIU Public Television
Choose which station to support!
A cultivated Nerium oleander shrub.
Oleander is a highly toxic plant!
Well behaving kitties share a window sill with a plant.
Look for the following symptoms if you suspect a cat has been poisoned: vomiting, diarrhea and a staggering gait.
Amy Stewart has written a fascinating book called Wicked Plants.
What is RSS? RSS makes it possible to subscribe to a website's updates instead of visiting it by delivering new posts to your RSS reader automatically. Choose to receive some or all of the updates from Focus on Flowers:
Focus on Flowers is a weekly podcast and public radio program about flower gardening hosted by master gardener Moya Andews. Learn More »
Moya Andrews is a Master Gardener and a member of the Bloomington Garden Club in Bloomington, Indiana. Learn more »
Indiana Public Media is the home of WFIU Public Radio & WTIU Public Television, including your favorite programming from NPR and PBS. Learn More »
© 2019, The Trustees of Indiana University • Copyright Complaints
1229 East Seventh Street, Bloomington, Indiana 47405


text:
Your browser is no longer supported. For the best experience of this website, please upgrade to a newer version or another browser.
Your browser appears to have cookies disabled. For the best experience of this website, please enable cookies in your browser
We'll assume we have your consent to use cookies, for example so you won't need to log in each time you visit our site.Learn more
20 August 2019 10:24 am
16 August 2019 9:47 am
15 August 2019 9:26 am
9 August 2019 8:05 am
The UK Jewellery Awards, the trade's longest-running and most prestigious awards event, was held in association with Clogau at the Artillery Garden in London on July 3. Relive all the action from the event of the year with the official video from the evening.
20 August 2019 10:23 am
20 August 2019 10:22 am
Following the news that ethical London jeweller EC One has been certified as a B-Corp, co-founder Jos Skeates explains what it takes to become a B Corporation.
19 August 2019 9:51 am
19 August 2019 9:50 am
16 August 2019 9:49 am
Beaded jewellery brand Trollbeads has announced the winner of its annual customer design competition. The winning bead design is 'Turtle Flower' created by designer Giada Manfredi.
8 August 2019 8:10 am
31 July 2019 9:56 am
29 July 2019 9:19 am
23 July 2019 9:34 am
Italian jewellery brand Fope has announced it will open a flagship store on Old Bond Street in Central London in 2019.
Renowned Chinese artist jeweller Wallace Chan will host a masterclass in jewellery design at The Jewellery Cut Live this September.
20 August 2019 10:21 am
Assay Office Birmingham (AOB) chief executive and assay master Stella Layton presented the AOB's annual hallmarking review at its new building on Moreton Street, Birmingham B1 3AX on Friday January 22.
3 June 2016
By Melissa Massey
Insects and crystalline structures encapsulate this trend ruled by organic forms and the darker side of summertime
Already paid? Activate your digital account now
EMAP Publishing Limited Company number 7880758 (England & Wales) Registered address: 7th Floor, Vantage London, Great West Road, Brentford, United Kingdom, TW8 9AG
Site powered by Webvision


text:
BY yveet On Jul 17, 2018 Receipt Template
Personal receipt template free sales property pics. Personal receipt template free sales property programmer contract beautiful tree surgeon invoice. Personal receiptate sales free property printable loanement form blank.
Simple invoice template word office back form personal receipt pics sales. Template personal loan invoice meltemplates receipt pics free sales. Personal receipt templateics 8 college format graphic resume sales freeroperty. Personal receiptmplate free property sales vehicle sale invoice business.
Template personal receipt pics sales free property. Personal receipte free property sales pics. Editable church donationipt template sample v m d com personal sales free property.
94/100. User Ratings (729 Votes)
317 Facebook Shares
162 Twitter Tweets
311 Pinterest Pins
292 G+ Shares
170 Thumblr Shares
209 Lkdln Shares
yveet is the social media editor. When she's not writing about the latest viral trend, she's probably out shoe shopping, eating dessert before dinner, or surrounded by puppies (sometimes all 3 at once)
Recent Posts
Static Pages
Intellectual Property Policy and Infringement Claims - Privacy Policy - Terms of Use
© 1999-2019 Tientas.com. All rights reserved.


text:
Product Tags
Use spaces to separate tags. Use single quotes (') for phrases.
|Overall Depth (mm)
|Width at Front (mm)
|Width at Back (mm)
|Item Type
|fire grate
|Cast Iron
|Model Number
|Max Heat Input (Kw)
|Max Heat Output (Kw)
|Flue Required?
|Air Vent Required?
|Efficiency (%)
|Warranty (Years)
The Traditions Arch fire grate is made from sturdy cast iron, suitable for burning solid fuels such as coals, logs or smokeless fuels.
This fire grate is flat with no legs, meaning it will require a shelf or lug to sit on to fit. Look at our range of grates with four legs if you do not have this in your fireplace.
Always double check the dimensions of our fire grates before purchasing in the specification tab below.
Note that the size mentioned in the title of this grate may not necessarily reflect the size of the item. Please check the specifications tab for the actual size of this grate.
These quality pieces are manufactured to last but always remember to start off with a small solid fuel fire to begin with to temper the metal.
Don't forget to use our 'grate finder' or 'ashpan finder' tool to quickly find a grate or ashpan that will fit your requirements.
Product Questions
Customer Reviews
- Right first time Review by Simon
Overall Rating
- 5 Review by James P
Overall Rating
- 5 Review by aileen rae
Overall Rating
- 5 Review by susan dajlid
Overall Rating
DELIVERY TIMES - Non Custom Made Products
"In Stock" - If ordered before 1pm this will arrive Next Day if using a tracked delivery service or in 2 / 3 days if Royal Mail Second Class delivery is selected at checkout.
All other items will be delivered within 3 to 5 working days as they are backordered items which take a few days to receive from the manufacturers. On the rare occasion that a backordered item is out of stock at our warehouse and the manufacturers you will be e-mailed with a revised delivery date.
Delivery times are quoted in business days meaning weekends and local holidays including bank holidays, Christmas etc do not count as business days.
DELIVERY TIMES - Custom Made Products
Custom made fire fenders - 4 weeks
Custom made fire screens - 4 weeks
Custom made stove glass - 2 weeks
Custom made ashpans - 2 weeks
Custom made fire trims - 2 weeks
Custom made smoke hoods - 2 weeks
Custom made gas fires - 2 weeks
What we charge for delivery is what it costs us for the delivery of the orders to you. We operate a 1 delivery charge policy so you will only ever pay 1 delivery charge (The largest delivery charge will be used).
We will always endeavour to keep your orders on time, well packed and undamaged. You can expect from us:
Items to be securely packed with bubble wrap or an air bag system.
Boxes marked clearly if items are fragile or heavy.
Custom or made to measure items are 100% non-refundable.


text:
I have counted cells on hemocyt. It is 5x10^5 cells. I need to plate them at 2X10^6 per well in 1 ml of media in 96 well plates. How many microlitre of the cells I need to add to the 1 ml of media on the plate?
Submit your paper to J Biol Methods today!
cell count
Started by Limpa, Jun 10 2011 04:01 AM
3 replies to this topic
Posted 10 June 2011 - 04:01 AM
Posted 10 June 2011 - 05:04 AM
Assuming that your cell suspension has 5x10^5 cells per ml.., and the required conc is 2x10^6 in the final volume 1 ml, you need to pellet down and resuspend it in a lower volume say about 10:1 and from that you might need to add 400 micro litres...
I always had an alternate hypothesis....
Posted 10 June 2011 - 05:16 AM
I have counted cells on hemocyt. It is 5x10^5 cells. I need to plate them at 2X10^6 per well in 1 ml of media in 96 well plates. How many microlitre of the cells I need to add to the 1 ml of media on the plate?
Okay so your question doesnt really make much sense, there are some issues with it. I'll try to go in steps and see if we can get somewhere.
You say you have 5x10^5 cells.... is that in total?
If it is in total: you dont have enough cells to make them 2x10^6cells
Further to that, you say you need 2x10^6 cells per well in 1ml in 96 well plate. Now, do you mean 2x10^6cells/ml... or 2x10^6cell/well. because there's no way you can plate 1ml in a well of a 96 well plate, usually you plate 100-200ul tops.
Assuming you plate 100ul per well, you will need ~10ml per plate.
IF what you actually need is 2x10^6 cells/ml you need to have 2x10^7 cells in total. Which, back to the beginning you dont have, as you say you have 5x10^5 cells.
IF what you need is 2x10^6 cells/well you will need 2x10^6 x96 = 192x10^6 ~ 2x10^8 cells. Once again, not enough if you have 5x10^5 cells.
Now, if you actually have 5x10^5cell/ml you will need to spin down your cells and resuspend them again into the appropriate volume for the concentrations I said above. For this use C1V1=C2V2 where C1=5x10^5 V1=the volume of cells you have C2=the concentration you need and V2=the volume needed for the 96 wells.
I hope this helps.
Posted 11 June 2011 - 07:50 PM
Thanks guys


text:
A young man who saw a Delhi Police constable collapse and later die during the anti-rape protest near India Gate claimed that his phone was being tapped after police questioned him Thursday.
"My phone is being tapped...I don't know why," witness Yogendra told IANS.
Yogendra, 24, a journalism student, was questioned by officers of the crime branch of Delhi Police after he challenged the police version of the constable Subhash Chand Tomar being beaten by protestors.
Constable Tomar, 47, collapsed on Tilak Marg during an anti-rape protest around India Gate Sunday and died of cardiac arrest early Tuesday.
Talking to IANS, Yogendra said: "My statement was recorded by the police Thursday, while Pauline's (another witness in her 20s) statement was recorded the next day...but I don't know why they are tapping my phone."
"I told the officers what all I said earlier in the media," he said.
Police said the constable was trampled upon by the crowd. Yogendra and Pauline said the constable collapsed while chasing the crowd and that he was not beaten or trampled upon by the protestors.
While backing Yogendra's version, Pauline explained in detail how their efforts to revive the unconscious policeman failed, and added that she saw "no visible injuries" on the constable's body.
T.S. Sidhu, medical superintendent at the Ram Manohar Lohia Hospital where Tomar died, said Wednesday that the constable had "no major external injury marks except for some cuts on his right knee and bruises on his chest" and "was brought here in a total collapsed stage".
Police said they would study video footage from news channels to establish the sequence of events on the day of the incident.
Investigators Wednesday quoted an autopsy conducted on the constable which said he suffered "multiple internal injuries produced with the impact of a blunt object on his neck and chest". They did not talk about a mob attack.


text:
- Home
- News
- Sports
- Opinion
- Obituaries
- Features
- Special Sections
- Classifieds
- Public Notices
The men's prayer breakfast at First Presbyterian Church began 23 years ago in 1989 by Brooks Johnson and Steve Williams Jr., Judd Funderburk, Harold Rowell, Charlie Franks, Frazier Kirkpatrick and Harvey Stewart, who are all now deceased, as well as others.
If you currently subscribe or have subscribed in the past to the The Lancaster News, then simply find your account number on your mailing label and enter it below.
Click the question mark below to see where your account ID appears on your mailing label.
|ZIP Code:


text:
Pomodoro stays silently on your status bar. You can only start/stop it or make interruptions. Pomodoro discreetely notifies you of important Time events using Growl or spoken notifications.
What's New in Pomodoro
- Added Complete Pomodoro scriptability
- Added pomodoro duration to "Insert name panel" to quickly change it
- Added option to prevent computer sleeping when Pomodoro ticking
- Fixed a bug in statistics, now data is flushed on quit too
- New Preferences layout for Pomodoro tab
- Added quick stats menu item
- Added real duration to Calendar integration
- Sound volume resolution with 1/100 precision
Requirements for PomodoroMac OS X 10.6.6 or later
*Previously available here


text:
Depression and Old Age
Sitting at a lab desk, more like a console than a table, Jane Smith intently grasps the space-age controls. A hint of perspiration crowns her forehead as the faint whine of a drill is replaced by the sound of slick-moving mechanical parts. She focuses on the deft hand movements needed to manipulate a threadlike glass pipette. Slowly it enters the shaved skull of her "anesthetized recording preparation" (in this case, a rat). Carefully she explores its brain cavity. She's hunting for certain cells, and she can hear them coming.


text: Faux Suede - Olivine Green Available by the metre. Please select your desired quantity below. £0.45 Quantity: at £0.45 each Add To Basket 3mm width olivine green faux suede available per metre. Please contatct us if you have ordered multiple metres and would like them cut as one continuous length. You can either knot it or use our box ends to attach clasps to the ends to finish.


text:
- Home
- News
- Sports
- Opinion
- Obituaries
- Features
- Special Sections
- Classifieds
- Public Notices
Most of us have learned to fear bamboo. I used to think that the only good place for them was in planting beds that were smack-dab-in-the-middle of parking lots…no chance of a runner reaching your garden in that case.
It's the horror stories that stick with us. We usually only hear about the invasive claims about bamboo and how it escaped a neighbor's yard only to take over your prized perennial bed.
Well, anything left unchecked can become a problem, and there are ways to contain invasive bamboos; and some that don't even need it.
So it seems, unless you're a bamboo enthusiast, most of us ignore the options out of fear or ignorance.
We should start to reexamine the idea of using bamboo in the garden. But first let's be armed with what varieties to choose and how to control them if we fear being over-run.
Basically, there are two different categories of bamboo: runners and clumpers.
Bamboos that have running rhizomes are considered leptomorphic, and these are the species that have the potential to be more invasive. The types of bamboo that have a tendency to be most invasive include the Sasa and Indocalamus species.
Stay clear of those unless you have a larger area that is in need of a steadfast ground cover. And, consider the fact that these clumps often attract starlings as an evening roost…this alone deters me!
The clump-forming bamboos are pachymorphic and are less invasive and easier to contain, depending on the growing conditions. Poor soil that stays on the dry side and a shady location are good growing conditions if you want to slow the spread of bamboo.
A common bamboo in Kentuckiana gardens that is easy to grow and maintain (contain) includes Pleioblastus variegates, also called arundinaria. It reaches 2 to 3 feet and has variegated green-and-white foliage (this is not to be confused with arundo grass).
Controlling bamboo can be done in several ways. As I mentioned above, don't plant it in an ideal environment.
Bamboo will do well enough in dry shade, which will act as a growth inhibitor making the planting less invasive. Simply keeping the edges of the bamboo planting mowed also is a great method for containment.
If you plant yellow groove bamboo or equisetum (loved by many because of their colorful culms, or canes but feared by more because of their rampant running behavior), use a more permanent containment approach.
These bamboos should be planted in an area where they cannot extend their runners beyond a certain point, edged by a driveway, walkway or building. If this is not available in your landscape, then plant in a container so that it cannot escape the bounds of the pot.
For larger areas bamboo enthusiasts suggest driving metal edging around the planting. Sink the edging at an angle, about a foot deep, so that the runners cannot radiate out of the designated area.
Often, the question comes in on how to get rid of a patch of bamboo that has already grown above and beyond the desired effect. Ironically enough, the suggested control method encourages us to first fertilize the bamboo bed to encourage additional growth.
The idea behind this approach is to encourage as much growth as possible so we can exhaust the bamboo and then starve it out.
Getting rid of bamboo takes commitment. Herbicides don't work, so don't waste your money. Instead keep cutting back what emerges and fertilize a couple of times to encourage additional growth.
Then cut it back again before it has a chance to photosynthesize and feed itself. Likewise, in a planting bed that you do want to keep, pinch any new growth that emerges from outside of the desired planting area, and it will help to contain the planting.
Add new comment
Read and share your thoughts on this story


text:
The artist cuts the relief from variousa colored woods with the utmost attention to detail. Then works on the surface and cuts grooves on it to fit the spliced pieces of wood.
The spliced wood is then fitted on the surface and finally polished several times with some final touches.
The beauty of Maysan inlay work is the extent of detailing and intricacy of patterns.
Size : 18″X14″


text:
About Us
Established in 1920 Ashford Archaeological and Historical Society meets monthly at 7.30pm on the third Monday of September to May at the Friends Meeting House.
After an informal welcome from the committee and the reading of our newsletter a guest speaker presents a talk, usually including a slide show and sometimes artefacts. A wide range of interests have been covered from Kent's local history to general historical and archaeological subjects. Recent topics have included 'Kent and the English Civil Wars', 'Travels in Turkey', 'The Conservation and Restoration of Historical Books and Documents' and 'Old Kent Windmills'. The schedule of talks for the current session can be found on our Events page.
The Quakers of Ashford kindly allow the Society to use the facilities at the Meeting House; they ask that we vacate the building by 9.00pm.
In 2016/17 each talk will be £3 for visitors (non-members); Society annual membership will be £10. We hope you will be encouraged to join the Society!
The Friends Meeting House is situated in Albert Road near its junction with Canterbury Road (A2042/A28).
SAT NAV Postcode: TN24 8NY.
- Traffic from Canterbury/Wye/Faversham: turn right into Albert Road.
- Traffic from Maidstone/Tenterden: turn left into Magazine Road then right into the top of Albert Road.
PARKING AT VENUE: there is usually sufficient parking to be found in Albert Road and the small side streets. Scroll down the page to view a map and traffic reports.
View Ashford Archaeological and Historical Society in a larger map
Widget by Frixo Travel | M6 Traffic


text:
>>>Full Teams
by Brian DeCandia, sports information graduate assistant
COLUMBUS, Ga. – Three Georgia College softball (25-23, 9-11 PBC) student-athletes got the nod for All-Peach Belt Conference (PBC) honors as announced by the conference Friday night at the PBC's year-end banquet in Columbus.
Sophomores Whitney Okvist (Kennesaw, Ga.) and Kelsea Martin (Dacula, Ga.) received First Team All-Conference, while senior Haley Burnett (Columbus, Ga.) received Second Team honors.
Okvist earned an outfield spot, hitting .408 this season, including a team-high 53 runs scored and a conference-leading 51-of-51 on the base paths. This marks her second PBC nod in as many years.
Martin earned honors as a utility player, batting .325 for the Bobcats including 24 RBI and 20 runs scored. This is her first such honor.
Listed as second-team designated player, Burnett is hitting .342 this season with a team-leading 37 RBI, including nine doubles and five home runs. This is her third PBC All-Conference nod in her career.
The trio gives GC 35 All-PBC honorees all-time. Okvist is the eighth outfielder, giving the Bobcats a slot in the outfield for the past five seasons. Burnett is the first in school history to win two all-conference awards at DP in school history.
The No. 7-seed Bobcats will face-off against No. 2-seed North Georgia (43-7, 17-3 PBC) Saturday morning at 11 a.m. in Columbus, Ga.
The Georgia College Department of Athletics, two-time winners of the PBC Commissioner's Cup, sponsors 10 varsity athletic programs at the NCAA Division II level. As a Division II program, Bobcat Athletics prides itself on balancing the life of the student-athlete, evidenced by the teams' multiple appearances in post-season competition as well as documented academic success and community-service involvement. Sign up at www.twitter.com/BobcatSports and www.facebook.com/gcbobcats for up-to-the-minute reports, and visit www.GCBobcats.com for more information, and to nominate your favorite former Bobcats and Colonials to the GC Athletics Hall of Fame.


text:
The boring one
Well, another thin line of plot comes to an end. Hooray.
Post A Comment
Game of Thrones and associated character and place names are registered trademarks of Home Box Office Inc, which does not sponsor, authorise, or endorse this comic. Original episode images are copyright Home Box Office Inc, and are used here only as a vehicle for parody. The comic images may not be redistributed or sold.


text:
Serviços Personalizados
Links relacionados
- Citado por Google
- Similares em Google
Indo-Pacific Journal of Phenomenology
versão On-line ISSN 1445-7377
versão impressa ISSN 2079-7222
Indo-Pac. j. phenomenol. (Online) vol.8 no.1 Grahamstown Mai. 2008
Difficulties encountered in the application of the phenomenological method in the social sciences
Amedeo Giorgi
While it is heartening to see that more researchers in the field of the social sciences are using some version of the phenomenological method, it is also disappointing to see that very often some of the steps employed do not follow phenomenological logic. In this paper, several dissertations are reviewed in order to point out some of the difficulties that are encountered in attempting to use some version of the phenomenological method. Difficulties encountered centred on the phenomenological reduction, the use of imaginative variation and the feedback to subjects.
"Full text available only in PDF format"
Arminio, J. (2001). Exploring the nature of race-related guilt. Journal of Multicultural Counseling and Development, 29, 239-252. [ Links ]
Colaizzi, P. (1978). Psychological research as the phenomenologist views it. In R. Valle & M. King (Eds.), Existential-phenomenological alternatives for psychology (pp. 48-71). New York: Oxford University Press. [ Links ]
Creswell, J. (1998). Qualitative inquiry and research design: Choosing among five traditions. Thousand Oaks, CA: Sage. [ Links ]
Driscoll, J. W. (2004). The experience of women living with bipolar II disorder. Unpublished PhD dissertation, University of Connecticut, Storr, CT. [ Links ]
Friedeberg, B. (2002). From countertransference to empathy: A phenomenological investigation into psychotherapeutic process. Unpublished PhD dissertation, Saybrook Graduate School, San Francisco, CA. [ Links ]
Garcia, M. K. (1996). The lived experience of mothers and children with asthma. Unpublished PhD dissertation, Texas Woman's University, Denton, TX. [ Links ]
Geertz, C. (1983). Local knowledge: Further essays in interpretive anthropology. New York: Basic Books. [ Links ]
Giorgi, A. (1985a). Sketch of a psychological phenomenological method. In A. Giorgi (Ed.), Phenomenology and psychological research (pp. 8-22). Pittsburgh, PA: Duquesne University Press. [ Links ]
Giorgi, A. (Ed.). (1985b). Phenomenology and psychological research. Pittsburgh, PA: Duquesne University Press. [ Links ]
Giorgi, Barbro (2006). Can an empirical psychology be derived from Husserl's philosophy? In P. D. Ashworth & M. C. Chung (Eds.), Phenomenology and psychological science: Historical and philosophical perspectives (pp. 69-88). Dordrecht: Kluwer Academic Press. [ Links ]
Grant, K. S. (2004). Japanese experience of deciding to enter psychotherapy: A phenomenological study. John F. Kennedy University, Pleasant Hill, CA. [ Links ]
Husserl, E. (1962). Ideas: General introduction to pure phenomenology (W. R. Boyce Gibson, Trans.). New York: Collier Books. (Original work published 1913) [ Links ]
Husserl, E. (1965). Philosophy as a rigorous science. In Q. Lauer (Ed. & Trans.), Phenomenology and the crisis of philosophy (pp. 71-147). New York: Harper and Row. (Original work published 1910-1911) [ Links ]
Husserl, E. (1983). Ideas pertaining to a pure phenomenology and to a phenomenological philosophy. First book (F. Kersten, Trans.). The Hague: M. Nijhoff. (Original work published 1913) [ Links ]
Keen, E. (1975). Doing research phenomenologically: Methodological considerations. Unpublished manuscript, Bucknell University, Lewisburg, PA. [ Links ]
Kvale, S. (1996). InterViews: An introduction to qualitative research interviewing. London: Sage. [ Links ]
MacRenato, S. W. (1995). Experiences of moral commitment: A phenomenological study. University of San Diego, San Diego, CA. [ Links ]
May, R. (1965). Intentionality, the heart of human will. The Journal of Humanistic Psychology, 5, 202-209. [ Links ]
Merleau-Ponty, M. (1964). Phenomenology and the sciences of man (J. Wild, Trans.). In J. Edie (Ed.), The primacy of perception (pp. 43-95). Evanston, IL: Northwestern University Press. (Original work published 1961) [ Links ]
Moustakas, C. (1994). Phenomenological research methods. London: Sage. [ Links ]
Polkinghorne, D. E. (1989). Phenomenological research methods. In R. S. Valle & S. Halling (Eds.), Existential-phenomenological perspectives in psychology: Exploring the breadth of human experience (pp. 41-60). New York: Plenum Press. [ Links ]
Schütz, A. (1967). The phenomenology of the social world (G. Welsh & F. Lehnert, Trans.). Evanston, IL: Northwestern University Press. (Original work published 1932) [ Links ]
Spiegelberg, H. (1960). The phenomenological movement: A historical introduction (3rd ed., Vol. 2). The Hague: M. Nijhoff. [ Links ]
Trumbull, M. (1993). The experience of undergoing coronary artery bypass: A phenomenological investigation. Unpublished PhD dissertation, The Graduate School of the Union Institute, Cincinnati, OH. [ Links ]


text:
New photos added Oct. 15
Homecoming Celebrations
Check back for a photo of Pinconning's winning queen candidate.
Please review our community guidelines before posting
Please keep comments on topic and appropriate for all ages. Remember that people of all ages read our website. Those that are not appropriate will be removed. Please read our full community guidelines before posting.
No comments on this story | Please log in to comment by clicking here