text:
Create an alerts system using XMPP, SMS, pureXML, and PHP
Develop a Euro currency exchange rate application with automatic updates
Before you start
This tutorial is aimed at Web application developers who want to develop database-driven applications that are powered by an IBM DB2 pureXML database. The reader should be familiar with basic PHP code and be able to work with the Windows command prompt in order to follow the tutorial. Some experience with database management systems and the SQL language is also required. By the end of this tutorial, you will learn how to create object-oriented PHP Web applications that take advantage of a pureXML database.
About this tutorial
IBM DB2 Express-C includes pureXML, a way to store XML data natively in a relational database table. pureXML allows the user to query, index, and manipulate this XML data. You can use a series of functions to work with a hybrid of relational and XML-based data in a seamless fashion. This enables the development of applications that utilize the strengths of both traditional relational database tables and XML data.
XML is now widely used as a portable data storage format, and you will frequently find public data and Web services providing access to their data in XML format. By using IBM DB2 Express-C you can develop applications that load this XML data directly into the database, and create applications that are driven by this data without having to convert it into relational columns. Of course, sometimes it makes sense to take this data and convert it, and in this tutorial you will see a mix of various techniques for working with XML in DB2.
In this tutorial, you will learn how to create an alerts system that polls the Euro foreign exchange rates from the European Central Bank Web site on a daily basis. If a new set of rates are found, the application will load this data into a DB2 database, and it will also send an alert in two ways: as a Google Talk (XMPP) instant message, and as an SMS text message to a cell phone. You will also learn how to import bulk XML data into a DB2 database, and in this case, you will load the entire history of Euro foreign exchange rates, dating all the way back to 1999, when the Euro currency was first introduced. Later in the tutorial, you will develop a PHP script that generates a chart of the maximum exchange rates for each month of the current year.
To follow the steps in this tutorial, you will need to install the following software:
- IBM DB2 Express-C 9.5
- XMPPHP library
See Related topics for the links to the download sites and to articles that walk you through the installation and configuration of the above software.
Project folder
This tutorial assumes that you store all of the source code in the folder C:\currency. If you have not already done so, create this folder now by opening Windows® Explorer and navigating to the root of the C: drive. In there, right-click and choose New>Folder. Name the folder currency. Alternatively, download the source code for this tutorial and extract the folder to your C: drive.
Configuring PHP
You need to make some changes to your PHP configuration file to follow this tutorial.
In php.ini locate the line that reads something like
error_reporting =
E_ALL and change it to:
error_reporting = E_ERROR.
Next, find the line similar to:
display_errors = On and change it to
display_errors = Off. Finally, scroll down the file until you
find the section for PHP extensions. Many of these extensions will be disabled by
default, with a semi-colon at the start of the line commenting out this particular
feature. To enable features, simply remove the semi-colon at the start of the line.
Now, find these lines in Listing 1 and make sure the semi-colon
(;) at the beginning of each is removed.
Listing 1. Removing the semi-colons
extension = php_curl.dll extension = php_gd2.dll extension = php_mbstring.dll extension = php_openssl.dll extension = php_sockets.dll
Setting up the pieces
In this section, you'll download the XMPPHP library and set up the Google Talk and the Clickatell SMS gateway account.
The XMPPHP library
To communicate with the Google Talk instant messaging service, you will need to download the XMPPHP library, which will allow you to send messages to Google Talk users using PHP code. This file is distributed as a .tar.gz archive, so you will need an archiving utility that supports this file format, such as 7-Zip. Extract the contents of the archive to your desktop, and then copy the XMPPHP folder and paste it in your project folder at C:\currency. This library is included in the source code for this tutorial (see download), so if you use these files you do not need to download XMPPHP separately.
Google Talk accounts
To send Google Talk messages, you will need two Google Talk accounts, one for the script sending the message and another for the recipient receiving the message. If you have a Gmail account, you already have a Google Talk account. If not, see Related topics for a link so you can sign up.
In addition to registering for two Google Talk accounts, you need to login to one of the accounts and add the other account as a contact. You can do this through Gmail or using the Google Talk client. You then need to log out of that account and log in to the other account where you will be asked to accept the chat invitation you just sent. Accept it, and the two accounts can now communicate with each other.
Clickatell SMS gateway account
To send SMS text message alerts, you need an account with the Clickatell SMS gateway service. In this section, you learn how to create and configure your Clickatell account so that you can later send text messages to your cell phone when you develop the alerts script.
Go to the Buy Now page on Clickatell's Web site. From here, you need to create a new Clickatell account. From the New Customers section, open the Select Product drop-down list and select Clickatell Central (API). This will take you to the Clickatell registration form, as in the Figure 1.
Figure 1. Clickatell registration form
In Step 1 of 4, the Clickatell Central product should be already selected. In Step 2 of 4 select the type of coverage that you want for your account. If you're unsure, choose the International option. Enter a username and password, and fill in the security code as shown in the image. Under Step 3 of 4, enter all fields marked with an asterisk (*). Checking Personal Use Only will hide company-related fields. Finally, check the I accept Clickatell's Terms and Conditions box and press the Continue button.
The final step is to activate your account and verify your identity. Clickatell will send an e-mail to the address you supplied on the previous page (see Figure 1) with a link that will activate your account. Click this link to view your to the My Account Login page, with your product, username, and client ID pre-populated, as in Figure 2.
Figure 2. Clickatell My Account Login
Enter your password and click Login to log in to your account. You should now see a screen like the one in Figure 3.
Figure 3. Clickatell Central Home Page
In the Verify your Mobile Number box, check that the mobile number is correct and click the button Send Activation Code to send an SMS text message to your cell phone with a code to be used for activation. When you receive the message, enter the code into the box and press Verify Now. The next step is to register for the HTTP/S API. Click on the Manage My Products link in the top navigation section and, from the My Connections drop-down list, select HTTP. You should now see a screen like the one in Figure 4.
Figure 4. Clickatell HTTP API form
Enter Currency Alerts in the Name field and leave the rest of the fields as they are. (In Figure 4, the value in the Dial Prefix field is Ireland (353) and value in the Callback Type field is HTTPGET. Other fields are blank.) Now press Submit to set up the API. You will now see a confirmation screen, so press OK here to go back to the Manage my Products screen. You should now see the Currency Alerts connection, and your API ID listed alongside it, as shown in Figure 5. (Note: In the API ID field in the screen capture below, I intentionally blanked out my API ID value so you wouldn't try to use it—you will see your API ID when you submit your request.)
Figure 5. Clickatell HTTP API ID
Now, test that the API works by sending a test message. You will need the following details to do so:
- Your Clickatell username
- Your Clickatell password
- Your Clickatell HTTP API ID
- The number you want to send the message to in international format, without the + symbol (for example, 353875555555)
- The text you want to send (note that if you are using the free test credits, your message will be replaced by a Clickatell standard message. This does not occur with messages sent with paid-for credits)
Open up a new browser window and enter the following URL in the address bar (replacing the values with your own). For formatting purposes, the URL appears on multiple lines. To use, the URL is a single string of characters.
http://api.clickatell.com/http/sendmsg?user=xxxx&password=xxxxx &api_id=xxxxxx&to=xxxxxx&text=xxxxxx
For the SMS alerts in the sample application you build in this tutorial to work, you will need to purchase some credits on the Clickatell Web site. If you don't want to do this, you can simply comment out the line that sends text messages. I will explain this in more detail at that point of the tutorial.
With all of the application's prerequisites installed and configured, you are now ready to create the database and build the foundation for the alerts application.
Building the foundation
In this section, you will learn how to fetch the XML file containing the entire
exchange rate history for the Euro currency from the European Central Bank (ECB) Web
site, and load this into an IBM DB2 database. You will then use the
XMLTABLE function to split the large XML document into separate
documents that will each be stored in its own row in the database, making it easier
to query and improving query performance. Finally, you will create a database view
that allows you to use normal SQL queries to retrieve data, whether it be stored in
a relational column or as an attribute in an XML document.
Downloading the historic rates from ECB
Although the source code for this tutorial includes an XML file with the historic rates, it will be out of date by the time you read this. As a result, it makes sense to download the latest file from the ECB site directly (see Related topics for a link). You can safely overwrite the file in the source code folder.
Right-click the link and choose Save Target As or Save Link As to download the file to your computer. Make sure to save it in the project folder at C:\currency. The file size was approximately 3 megabytes at the time of writing, although this will grow over time as more rates are added each and every business day.
Before you can import this XML file into a DB2 database, you need to create a
comma-separated .del file that tells the database how to import the data. Open your
favorite text editor and enter the following line in a new file:
Save this file as currency.del in your project folder. If you use Notepad as your text editor, be sure to wrap the filename in double-quotes in the save dialog (as "currency.del") to prevent Notepad automatically appending the .txt extension to the filename.
Creating the currency database
The next step is to create a new DB2 database. To do this, open the DB2 Command
Editor (Start>Programs>IBM DB2>[DBNAME]>Command Line
Tools>Command Editor) and issue the following command:
database currency using codeset UTF-8 territory US.
Next, connect to this newly created database:
connect to currency.
Before you can import the data into the database, you need to create a table to store the data in. This table will not be used by the application, it's merely an intermediary table that you load the XML document into. Issue the following command in Listing 2 to create the table.
Listing 2. Creating a table to import the XML file into
create table temp_rates ( id int primary key not null, data xml )
Importing the XML file into the database
Next, you will import the XML document into the database using the currency.del file you created earlier. Listing 3 will read the contents of this file, placing the value before the comma (1 in this case) into the id column of the temp_rates table. The <XDS> tag tells DB2 where to read the XML data file from and it will store this in the data column.
Listing 3. Importing XML into DB2
import from "C:\currency\currency.del" of del xml from "C:\currency" insert into temp_rates;
If all goes according to plan, you should see a successful response similar to:
SQL3149N "1" rows were processed from the input file. "1" rows were
successfully inserted into the table. "0" rows were rejected.
It's worth verifying that the data was inserted as expected by executing the
following SQL statement:
select * from temp_rates. This should
automatically switch to the Query Results tab, where you should see a single row
with the ID 1 and the data column indicating that it contains XML content (see Figure 6).
Figure 6. Query results
Under the data column you will see a button with three dots (...). Click on this button to open the XML Document Viewer window. In this window you should be able to browse through the XML representation of the exchange rate data you just imported (see Figure 7).
Figure 7. XML Document Viewer
Having verified that the XML data is correctly imported into the database, you are now ready to process this data and split it so that it is stored in multiple rows. This will make it much easier (and faster) to query this data in your applications.
Splitting the data into separate database rows
Storing the entire document in a single row makes it difficult to query, and the entire XML document is rewritten every time you add data, which is far from ideal. It would be much nicer if you had a separate row for each date that the rates apply for. This makes querying the data easier and faster, and also allows new data to be inserted easily as a new row.
The first step in splitting this data is to create a new table which will hold the rates for the application (see Listing 4).
Listing 4. Creating a table to split the XML data into
create table rates ( date date primary key not null, rates xml )
Now, you need to split the large XML document into separate rows on this rates table.
The command in Listing 5 uses the
XMLTABLE function
to do just that.
Listing 5. Splitting the data into separate rows
insert into rates(date, rates) select x.date, x.rates from temp_rates tr, xmltable('$d/*:Envelope/*:Cube/*:Cube' passing cast(tr.data as XML) as "d" columns date date path '@time', rates xml path 'document{.}' ) as x
This statement uses the
XMLTABLE function to map the time attribute of
each relevant <Cube> tag as the date for the rates in question, with that
element and its child nodes stored in the rates XML field. To validate that this
process worked, issue the following command:
select * from rates.
This time the result should be much more attractive, as in Figure 8. Each date has its own row and its own XML document.
Figure 8. Results split over numerous rows
Click the more (...) button to show just the XML rates data for that particular date (see Figure 9).
Figure 9. XML data for a specific date
When you return to the Query Results tab, you mighty notice that only 100 rows are
shown. Didn't you import data going back as far as 1999? Surely there should be over
2,000 rows if that were the case? Don't panic. The DB2 Command Editor only fetches
100 rows at a time by default. To fetch another 100 rows, click the Fetch
More Rows button. If you want to check how many rows are in the table,
use the following command:
select count(*) from rates.
When I ran this command, there were 2,783 rows. For each business day that passes between the time of writing and the date you read this tutorial, one additional row should be added to the table.
Creating a relational view of XML data
The final database configuration step is to create a relational view of the XML data, which will make it much easier for applications to query the currency data. By creating this view, you will be able to use typical SQL queries to filter, order, and group results using aggregate functions, WHERE clauses, ORDER BY clauses, and GROUP BY clauses (see Listing 6).
Listing 6. SQL statement to create rates_view
create view rates_view(seq_no, date, currency, rate, doc) as select x.seqno, r.date, x.currency, x.rate, x.doc from rates r, xmltable('$d/*:Cube/*:Cube' passing r.rates as "d" columns seqno for ordinality, currency varchar(5) path '@currency', rate varchar(20) path '@rate', doc xml path 'document{.}' ) as x
Let's finish up this section by using some simple queries to verify that the view is
working as expected. First, query for rates for a specific date:
select * from
rates_view where date = '2009-11-13'.
You should see 33 results in the Query Results tab, as in Figure 10.
Figure 10. Query Results for filtering rates by date
It's worth noting at this point that there are no foreign exchange rate fluctuations on Saturdays and Sundays so if you are not getting any results when filtering by date, make sure that the date you are filtering by is not a Saturday or Sunday!
Next, query for only USD (United States Dollar) rates:
select * from rates_view
where currency = 'USD'.
You should now see an entry for USD for each business day. Although Command Editor
only shows 100 rows at a time, there should be rows going back as far as January,
1999. Finally, let's execute a query that filters based on both date and currency:
select * from rates_view where currency = 'USD' and date =
This time, you should see a single row in the result set. As you can see, the Euro and US dollar were virtually in parity with one another at this time.
That concludes the database configuration. In the next section of this tutorial, you will create a script that fetches the rates for the current date and inserts a new row into the rates table if one does not already exist for the date in question. This script will then be expanded to send alerts using XMPP instant messages and SMS text messages.
Creating the update PHP script
In this section of the tutorial you will develop the heart of the sample application. This centers on a PHP script that will perform three primary functions:
- Fetch today's rates from the ECB Web site (see Related topics) and, if they have not already been added, insert them into the rates table in the currency database
- Send a message to a Google Talk user using the XMPP protocol and the XMPPHP library
- Send a message to a cell phone using the Clickatell SMS gateway service
You might be familiar with PHP programming as a server-side Web application language, but in this tutorial you will call the PHP scripts you create from the Windows command prompt and not through a Web browser.
To follow this section, your PHP installation folder will need to be on your Path. See Related topics for a link to get more information.
Before you create the update.php script, you need to create a couple of helper PHP classes.
Creating helper PHP classes
All of the PHP scripts and classes you will create should be stored in the
C:\currency folder. In this section, you will create two PHP classes:
DB and
GTalk, stored in the files db.php and
gtalk.php, respectively. The
DB class contains all the logic for
connecting to your DB2 database, whereas the
GTalk class deals with
communicating with the Google Talk XMPP server.
First create the
DB class, which should be saved as C:\currency\db.php
(see Listing 7).
Listing 7. db.php
<?php class DB { private $conn; function __construct() { $database = "currency"; $hostname = "localhost"; $port = 50000; $user = "USERNAME"; $password = "PASSWORD"; $db_connect_string = "DRIVER={IBM DB2 ODBC DRIVER};" . "DATABASE=$database;" . "HOSTNAME=$hostname;PORT=$port;PROTOCOL=TCPIP;" . "UID=$user;PWD=$password;"; $this->conn = db2_connect($db_connect_string, '', '') if(!$this->conn) { die(db2_conn_errormsg($this->conn)); } } function query($sql) { $result = db2_exec($this->conn, $sql); if(!$result) { die(db2_stmt_errormsg()); } else { return $result; } } function get_row($result) { return db2_fetch_array($result) } } ?>
Be sure to change the values of the
$user and
variables to match your own settings. This class defines a constructor, which
connects to the DB2 currency database; a
query function to execute SQL
queries and a
get_row function to retrieve a result row from a DB2
result set.
Next, create the
GTalk class, and save it as C:\currency\gtalk.php. The
code for this class is in Listing 8.
Listing 8. gtalk.php
<?php require_once("XMPPHP/XMPP.php"); class GTalk { private $conn; function __construct() { $this->conn = new XMPPHP_XMPP('talk.google.com', 5222, 'USERNAME', 'PASSWORD', 'xmpphp', 'gmail.com', $printLog=false, $loglevel=0); } function connect() { try { $this->conn->connect(); $this->conn->processUntil('session_start'); } catch(XMPPHP_Exception $e) { die($e->getMessage()); } } function disconnect() { try { $this->conn->disconnect(); } catch(XMPPHP_Exception $e) { die($e->getMessage()); } } function send_message($to, $msg) { $this->connect(); try { $this->conn->message($to, $msg); } catch(XMPPHP_Exception $e) { die($e->getMessage()); } $this->disconnect(); } } ?>
Again, you replace the
USERNAME and
PASSWORD values with
your own account settings. With the PHP helper classes created, you can now create a
script that will pull today's rates from the ECB Web site and insert them as a row
in your rates table.
Updating the rates table with today's rates
You will now create a script that uses the curl extension to fetch the daily XML feed of Euro foreign exchange rates from the ECB Web site. You will use the SimpleXML features of PHP to filter out the sections of the XML file you require to insert the date and rates columns of the rates table. Before the rates are actually inserted into the database, the script will check that the rates are not already inserted to prevent duplicate entries from being stored.
Create a new file named update.php and save it in the C:\currency folder. The contents of this file are in Listing 9.
Listing 9. update.php
<?php require_once("db.php"); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://www.ecb.europa.eu/stats /eurofxref/eurofxref-daily.xml"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $xml = curl_exec($ch); curl_close($ch); $doc = new SimpleXmlElement($xml, LIBXML_NOCDATA); $today = $doc->Cube->Cube; $todayAttr = $today->attributes(); $todayDate = $todayAttr['time']; $rates = str_replace(array("\n", "\r", "\t"), '', $today->asXML()); $db = new DB; $sql = "SELECT count(*) from rates " ."WHERE date = DATE('".$todayDate."')"; $result = $db->query($sql); $row = $db->get_row($result); if($row[0] == 0) { $insert_sql = "INSERT INTO rates(date, rates) " ."VALUES('".$todayDate."', '".$rates."')"; $insert_result = $db->query($insert_sql); if(!$insert_result) { echo "An error occurred while adding rates to the " ."database.\n".db2_stmt_errormsg(); } } else { echo "There are already rates stored for today (or it is the " ."weekend!)"; } ?>
This script first retrieves the XML document from the ECB Web site for today's Euro foreign exchange rates. It then uses SimpleXML functions to parse this document as XML, picking out the time attribute to find the date that the document applies to and removing unnecessary XML nodes to leave the XML that is to be inserted into the rates table.
Next, the script connects to the database by creating an instance of the
DB class and issuing a query which checks if there are any rows on
the table for the date extracted from today's XML file. If the script finds no rows,
it continues to insert a new row into the table, otherwise it prints an error saying
that either the rates were already imported today or else the current date is a
weekend day, when no new rates are available.
To execute the script, open up the Windows command prompt (Start>Programs>Accessories>Command Prompt). Issue the commands in Listing 10 to change to the C:\currency directory (you only need the second command if you are already on the C: drive).
Listing 10. Changing the directory
c: cd \currency
To execute the update script, enter the following command:
Assuming that the PHP installation folder is on your system's Path, this script should run. If there is a problem with your path, you might see a message saying that php is not a recognized command. If this happens, you need to place the PHP folder on your path (see Related topics for details on how to do this).
If you downloaded the rates from the ECB Web site when you were loading historic data into the database at the beginning of this tutorial, you will probably see a message like the one in Figure 11.
Figure 11. Already rates for that date error
This basically means that the currency data for today has already been loaded into
the database, so there's no need to insert a new row. I'm sure you want to test that
the script is working, however, so back in DB2 Command Editor, enter the following
statement to remove the latest entry from the database:
delete from rates
where date = (select max(date) from rates).
If you like, check for the newest date in the table to make sure that today's entry
was deleted. Now, head back to your Windows command prompt window and re-enter that
earlier command:
php update.php.
This time around, your script should run and no messages should appear. Back in DB2
Command Editor, use the following statement to verify that the new set of rates were
successfully inserted:
select * from rates where date = (select max(date) from
You should see a row replacing the row you deleted a few moments ago. Click the more (...) button in the rates column to verify that the XML was successfully imported from the ECB data file, as in Figure 12.
Figure 12. Latest rate imported from ECB file
Tip: There's a quick way to determine whether the data you are looking at was
imported from the historic ECB file or the daily file. When importing using DB2, all
namespace-related attributes are tagged on to the parent <Cube> node, such as
xmlns and
xmlns:gesmes. When you add the row using the
PHP script, these namespaces are not present.
Next, you will expand the script to send an update to a Google Talk account using the XMPP protocol.
Sending messages to a Google Talk user through the XMPP protocol
In its present form, the sample application doesn't really do too much other than store a bunch of currency exchange rate data. Let's add some neat functionality to it by expanding the update script to send the latest Euro to US dollar exchange rate by instant message to a Google Talk account.
Google Talk is an example of an XMPP application. XMPP is a set of open XML technologies for real-time communication. Google Talk is a typical instant messaging platform, just like MSN Messenger, AIM, Yahoo Messenger, or ICQ. Thanks to the open source XMPPHP library, it is very easy to communicate with an XMPP service using PHP.
In this section you will need to modify the update.php script. The first change is
that you need to import the
GTalk class. Below the line
require_once("db.php"); add the following line:
The next change you need to make is to add an else clause to the if block that checks
if the
$insert_result variable is false. This block should now look
like Listing 11.
Listing 11. Updated if block in update.php
if(!$insert_result) { echo "An error occurred while adding rates to the " ."database.\n".db2_stmt_errormsg(); } else { $usd_sql = "SELECT rate FROM rates_view " ."WHERE date = '".$todayDate."' and currency = 'USD'"; $usd_result = $db->query($usd_sql); $usd_row = $db->get_row($usd_result); $message = "[$todayDate] 1 Euro = ".$usd_row[0]." USD"; $gtalk = new GTalk; $gtalk->send_message('firstname.lastname@example.com', $message); }
Be sure to change the recipient (firstname.lastname@example.com above) to the Google Talk account you
want to send the message to. If you try to run the update.php script again in the
Command Prompt, you're likely to once again get the error that there are already
rates for that date. Back in DB2 Command Editor, use the following statement
(again!) to remove the latest entry:
delete from rates where date = (select
max(date) from rates).
Make sure that you are logged in to Google Talk or Gmail (if you're not, it will send
you an e-mail with the message instead). Now go back to the Command Prompt window
and enter the following command again:
php update.php.
This time around you shouldn't get any errors, but rather a Google Talk chat session will open, as in Figure 13.
Figure 13. The update sent to Google Talk
Pretty neat, huh? Next, you'll take this concept one step further and actually send an alert to a cell phone through SMS text message.
Sending SMS messages using the Clickatell SMS gateway
Earlier you learned how to set up an account with the Clickatell SMS gateway, a service that allows you to send SMS text messages to cell phones from your applications. The Clickatell HTTP/S API makes it really simple to send text messages, so jump right in and modify your script to do so!
Again, you need to edit the update.php file. This time, add the code directly beneath
the code that sends the Google Talk message inside the
else block from
Listing 11. Listing 12 shows the code you
need to add .
Listing 12. sending text messages in update.php
$sms_user = "USERNAME"; $sms_pass = "PASSWORD"; $sms_api_id = "0000000"; $sms_to = "353875555555"; $sms_msg = urlencode($message); $ch_sms = curl_init(); curl_setopt($ch_sms, CURLOPT_URL, "http://api.clickatell.com/http/sendmsg" ."?user=$sms_user&password=$sms_pass&api_id=$sms_api_id" ."&to=$sms_to&text=$sms_msg"); curl_exec($ch_sms); curl_close($ch_sms);
Believe it or not, that's all the code required to send a text message using PHP and
the curl extension! Again, be sure to replace the placeholder variable values with
your actual settings. You'll find the API ID in your Clickatell account settings.
Before you test the script, once again go ahead and delete the latest rate in DB2
Command Editor:
delete from rates where date = (select max(date) from
Back in the Windows Command Prompt, re-run the update script:
This time, you will see a response from the Clickatell API with the ID of the message that was sent, as in Figure 14.
Figure 14. Response from the update.php script
More importantly, however, you should also receive an SMS text message on your cell phone, such as the message in Figure 15.
Figure 15. The SMS update viewed on a cell phone
This only really scratches the surface of the capabilities of using the Clickatell API. Be sure to check out the Help section of the Clickatell Web site to find out more of the great things you can do with their gateway (see Related topics for a link). Next, you'll schedule the script to run once a day, which will keep the foreign exchange rates up-to-date as time goes on automatically, sending you messages each business day with the day's Euro to USD exchange rate.
Scheduling the script to run automatically each day
The final piece of the puzzle for the currency update script is to schedule it to run each and every day. One of the lesser-known commands that can be used in Windows is the schtasks command. This relatively powerful tool allows you to schedule the execution of batch scripts and applications at a specified interval.
The first step in putting the script on the scheduler is to create a batch script
that will execute it. Create a new file in your favorite text editor and add the
following line to it:
php update.php
Save this file as update.bat in the C:\currency folder. Now, enter the following
command at the command prompt to add this batch file to the scheduler, requesting
that it is run every day at 8 a.m. (Note that this command is all on one line):
schtasks /create /tn "Currency Update" /tr c:\currency\update.bat /sc
daily /st 08:00:00.
You might be prompted for your Windows password to confirm the task. When the task is created, you should see a message like the one in Figure 16.
Figure 16. Scheduled Task successfully created
You can check what tasks are currently scheduled using the following command:
If you want to actually go ahead and give your scheduled task a test run, you can use
the following command:
schtasks /run /tn "Currency Update".
That's it, the script should now run at 8 a.m. every day. Don't worry about Saturdays and Sundays (when the ECB file is not updated). The script will just detect that no new rates are available and it will not update or send alerts. Of course, it's worth mentioning that your computer needs to be switched on and logged in under the account that created the scheduled task in order for it to be executed. For the sake of ensuring that the update is performed every day, it might make more sense to run the script more frequently than once a day. You can find some links to useful resources on schtasks in the Related topics of this tutorial.
The script you created in this section is relatively powerful given its fairly small number of lines of code. It polls the daily ECB exchange rates XML file for new rates, and, if it finds them, it first adds a new row to the currency DB2 database. Next, it sends a message to a Google Talk user with today's Euro-to-US dollar rate. Finally, it sends the same message to a cell phone through a SMS text message. All of this is done automatically each day thanks to the schtasks Windows command. In the next section of this tutorial, you will see how to use the GD2 image PHP library to generate a graph plotting some of the historic data in the currency database.
Graphically representing the currency data
Earlier in this tutorial, you loaded a large amount of historic currency data into the currency DB2 database. In this section, you'll see how to graphically represent this information by plotting it on a graph using the PHP GD2 image library. You will create a PHP script that can be run on the command line that retrieves the maximum Euro to US dollar exchange rate for each month of the current year and plots it on a graph. The graph is created as a PNG image and saved as graph.png in the project folder (C:\currency).
Creating the graph script
Let's get started with the graph script. In your text editor, create a new file and save it as graph.php in the C:\currency folder. The first thing that this script needs to do is connect to DB2 and pull down the data that is to be plotted on the graph. Add the code from Listing 13 to the script to do just that.
Listing 13. Retrieving max rates, grouped by month for current year
<?php require_once("db.php"); $db = new DB; $sql = "select MAX(rate), month(date), monthname(date), year(date) " ."from rates_view where currency = 'USD' " ."and year(date) = year(current timestamp) " ."group by year(date),month(date),monthname(date),year(date) " ."order by month(date)"; $result = $db->query($sql); $months = array(); $year = 0; while($row = $db->get_row($result)) { $key = substr($row[2],0,3); $value = $row[0]; $months[$key] = $value; $year = $row[3]; } ?>
This code retrieves the grouped monthly data from the currency DB2 database and adds
it to a PHP array named
$months. Now, modify it to plot this data on a
graph. Add the code in Listing 14 just before the
?> in Listing 13.
Listing 14. Generating a bar chart in PHP
$width = 500; $height = 400; $hmargin = 30; $vmargin = 30; $chart_width = $width - ($hmargin * 2); $chart_height = $height - ($vmargin * 2); $image = imagecreate($width, $height); $month_width = 30; $total_months = count($months); $diff = ($chart_width - ($total_months * $month_width)) / ($total_months +1); $month_color = imagecolorallocate($image, 51, 102, 51); $bg_color = imagecolorallocate($image, 235, 245, 235); $text_color = imagecolorallocate($image, 0, 0, 0); $out_bg_color = imagecolorallocate($image, 188, 222, 188); $line_color = imagecolorallocate($image, 186, 220, 186); imagefilledrectangle($image, 1, 1, $width - 2, $height - 2, $out_bg_color); imagefilledrectangle($image, $hmargin, $vmargin, $width - 1 - $hmargin, $height - 1 - $vmargin, $bg_color); $top = max($months)+(max($months)/10); $gap = $chart_height / $top; $hlines = 20; $hgap = $chart_height / $hlines; for($i=0;$i<=$hlines;$i++){ $y = $height - $hmargin - $hgap * $i ; imageline($image, $hmargin, $y, $width - $hmargin, $y, $line_color); $v = round(floatval($hgap * $i / $gap), 2); imagestring($image, 0, 5, $y-5, number_format($v, 2, '.', ','), $text_color); } for($i=0;$i< $total_months; $i++){ list($key,$value)=each($months); $x1 = $vmargin + $diff + $i * ($diff+$month_width); $x2 = $x1 + $month_width; $y1 = $vmargin + $chart_height - intval($value * $gap); $y2 = $height - $vmargin; imagestring($image, 0, 170, 10, "Max Monthly Values for Year " .$year, $text_color); imagestring($image, 0, $x1, $y1-10, $value, $text_color); imagestring($image, 0, $x1+7, $height-25, $key, $text_color); imagefilledrectangle($image, $x1, $y1, $x2, $y2, $month_color); } imagepng($image, "graph.png");
This code uses the GD2 image library to generate a new image, 500 pixels wide and 400 pixels in height. In this image, it plots a series of bars, one for each month of the present year, with the y-axis showing the maximum Euro-to-dollar rate for the month in question.
Running the script and viewing the chart
In the Command Prompt window, execute the graph.php script with the following
php graph.php.
This will create a new file in the C:\currency folder named graph.png. If you open this image file, it should look something like the image in Figure 17.
Figure 17. Result of the graph script
In this section, you learned how to plot historic data on a bar graph using the GD2 image library. You can create a wide range of graphs and images using this library. Of course, if you're looking for a more flexible option, you might look at some more powerful Flash or JavaScript charting libraries that allow you to create interactive and animated charts and graphs. But the GD2 library allows you to create visually impressive images without downloading external libraries or class files.
Suggested improvements
Although the sample application in this tutorial does quite a lot, you can easily expand it to perform a wide range of quite useful functions, such as:
- Allow users to register for alerts (send messages to multiple users)
- Allow users to select which currencies to receive alerts for
- Allow users to define when to receive alerts
- Create a Google Talk bot that allows users to request the current exchange rate for a particular currency by sending a message to the bot
- Implement two-way SMS features that allow users to send a text message to a specified number, and they will receive an SMS in return with the exchange rate for the specified currency
- Use a premium exchange rate data service to include foreign exchange data for currencies other than the Euro
- Allow the user to select the currency for which they want to plot the exchange rate data on a graph
- Create more graphs (pie charts, line graphs plotting historic currency data)
- Create a search engine that allows users to find out what the exchange rates were on a particular date, or what date was a rate at its highest or lowest and so on
- Create RSS feeds with the currency updates
In this tutorial you learned how to create an IBM DB2 database that stores Euro foreign exchange currency data in native XML format. You learned how to import a large XML document into the database using DB2's IMPORT command. You then split this data into separate rows using SQL/XML. Next, you created a script that polls the ECB daily rate XML file for new rates, before adding these rates in a new row in the database. Next, you expanded this script to send messages to a Google Talk user, and then to a cell phone through an SMS text message. Finally, you learned how to use the PHP GD2 image library to create a script that generates a bar chart of historic currency data.
This tutorial highlights the power of pureXML and how storing XML data natively in the database makes it easier to develop applications that rely on external XML data sources. With the sample application you built, you should have a strong base from which to develop a full-featured and highly useful alerts application.
Downloadable resources
- PDF of this content
- Alerts application source code (currency.zip | 309KB)
Related topics
- Leveraging pureXML in a Flex microblogging application (Joe Lennon, developerWorks, November 2009): In this three-part article series, create a microblogging application that takes advantage of pureXML, Web services, and Adobe Flex; and even allows you to publish your microblogging updates on Twitter.
- Getting Started with IBM DB2 Express-C: Visit the home page for DB2 Express-C.
- DB2 9 pureXML Guide: Read this IBM Redbook about the pureXML data store, hybrid database design, and administration.
- DB2 9: pureXML Overview and Fast Start: Review this Redbook introduction to the hybrid XML data services in DB2 9 for Linux™, UNIX®, and Windows.
- DB2 pureXML Cookbook: Master the Power of the IBM Hybrid Data Server (Matthias Nicola and Pav Kumar-Chatterjee, IBM Press, August 2009): In this book by two leading experts from IBM, find practical solutions and proven code samples that database professionals need to build better XML solutions faster.
- Efficient Case-Insensitive Search With DB2 PureXML (Matthias Nicolas and Martin Sommerlandt, developerWorks, November 2008): In this article, learn to create a case-insensitive database using DB2 pureXML and what behavior to expect for XML queries and XML indexes.
- DB2 Express-C: Get a free version of the IBM DB2 database server, an excellent foundation for application development for small and medium business.
- PHP 5.2: Visit the PHP site and get this widely-used scripting language that is well-suited for Web development and can be embedded into HTML.
- XMPPHP: Download the PHP XMPP Library from the project's Google Code site.
- Create a Google Account - Gmail: Sign up for a Google Mail/Google Talk account.
- ECB site: Download the latest exchange rates.
- PHP Binaries and sources Releases: Get the latest Windows binaries for PHP Point. This article used PHP version 5.2.11. Do NOT use PHP 5.3, as it does not support PECL extensions at this time.
- DB2 extension for PHP (2.6MB): Download so you can connect to and interact with the data in an IBM DB2 database.
- IBM certification: Find out how you can become an IBM-Certified Developer.
- XML technical library: See the developerWorks XML Zone for a wide range of technical articles and tips, tutorials, standards, and IBM Redbooks.
- IBM product evaluation versions:Get your hands on application development tools.


text:
I recently had the opportunity to talk with Tim Crawford, CIO Strategic Advisor AVOA. Tim is one of my panelists for the session, Buy Less Nutanix. Run More Apps at Nutanix.NEXT in Washington D.C. later this month. I've known Tim for over 25 years and have watched his industry influence and recognition steadily climb as his perspective and advice becomes increasingly sought after by organizations across the globe.
SK: How involved should IT be involved in the charge to digital transformation?
Digital transformation is a bit of a misnomer. What organizations should really care about is business transformation, or more specifically, business transformation enabled by technology. It's important that IT organizations don't purchase technology for technology's sake. IT needs to learn how the company runs the business and how technology enables that capability. If the CIO has a conversation with the CEO about digital transformation, the CEO is likely to ask, "What does it do for the customer? For our business efficiency?" On the other hand, if the CIO talks about business transformation using technology as an enabler, the CEO is able to connect the dots between current state and future state.
SK: Is that what the AVOA logo signifies?
Exactly. AVOA has two core pieces: Helping companies through the business/digital transformation journey and working with vendors that help enable those transformations by bringing the CIO perspective to the table.
SK: What are the big challenges IT has in this journey of technology-enabled business transformation?
Culture is the number one problem. An analogy is a situation where everyone is working really hard trying to figure out how to turn the crank better. At some point, we need to step back and ask, "Is this even the right crank to turn?" The same type of thing is happening across enterprise. IT is making incremental improvements instead of stepping back and trying to determine how to do things differently. So they buy the same servers, the same SANs and they expand their datacenters. Culture is a huge hindrance for corporations and is becoming a big liability.
SK: Well, you hit on the exact gap that Nutanix strives to fill.
This gap is woefully misunderstood. People tend to look at IT infrastructure as binary: Traditional IT silos or public cloud. The reality is that Cloud is just one core piece of the puzzle – it's just one tool in the tool belt. We don't live in a 1-size fits all world. And even if organizations are determined to move everything to public cloud, it takes a lot of time. I was advising an organization in which everyone from IT to the Board to the executives were all aligned to moving to the Cloud. But it ended up being a two-year journey for them just to move from their own datacenter to a colocation facility – let alone the public cloud.
We've built up this massive ball of yarn that's incredibly complicated. When we look at the anthropology of IT, it makes a lot more sense about how we got here. It doesn't make it good or right, but we do start to appreciate it more. The question is where are we going from here and how do we untangle the ball of yarn to do something more reasonable and in a short time frame. We don't have years – over half of the Fortune 500 companies have disappeared since the year 2000. CEOs do not want to be on the cover of the WSJ for a dumb mistake.
SK: What do CIOs need to do to be successful?
CIOs need to understand how their business operates. They need to understand what their customers – I'm talking about external, not internal customers – look like. If the CIO doesn't understand the company's customers and how the organization makes and spends money, that's a problem. My advice to CIOs is to understand very clearly the entire value chain of how the company makes money, spends money and what the customers look like. And most importantly in respect to digitization, how customers engage with the company.
Along with culture, speed is another element that CIOs need to embrace. I use the term, velocity, because it combines both speed and direction. Speed enables turning the crank faster, while direction ensures that we're turning the right crank.
SK: Any final comments?
In order to successfully achieve business transformation, CIOs need to transform themselves.
Hear and meet Tim Crawford along with Nutanix CEO, Dheerej Pandey, SAP CEO, Bill McDermott, Google Cloud Sr. Vice President, Diane Greene, Nasdaq CEO (and Nutanix customer), VCE President, Chad Sakac, Adena Friedman and many other industry luminaries and Nutanix customers at Nutanix.NEXT, June 28 in Washington, DC.
Disclaimer: The views expressed in this blog are mine and not necessarily those of Nutanix, Inc. or any of its other employees or affiliates.

subset: commoncrawl


text:
Toggle navigation
Terms of use
About us
Contact us
Path to a Better Presentation in Medicine
Path to a Better Presentation in Medicine
Please enter user name
Please enter password
Forgot Password?
Bring out the power of your images with PathPresenter
Show your ideas—not slides
Create your own SlideBox
Explore Digital Slide Library
PathPresenter Viewer Help
Create Spectacular Presentations
Share Digital Slides and Presentations with anyone, anywhere in seconds
High Yield cases-Turn your device into a two headed Microscope
About us
We provide a web-based service for healthcare professionals to present whole slide, radiology, and clinical images in a unique and meaningful way. Current presentations, tumor boards, or transporting of medical images is cumbersome. Each path a patient takes on their journey through patient care deserves to have the highest caliber of investigation. Using PathPresenter will create a seamless environment for you to present de-identified medical images, presentations and conferences.
Designed by physicians for physicians
Path to a better presentation in Medicine
Designed by physicians for physicians.
Path to a better presentation in Medicine
Terms of Use
About us
Contact us
Follow us:
Copyright © 2018 PathPresenter. All Rights Reserved.


text:
Pet Cancer and CBD Oils
When pet owners look at their furbabies there are diagnosises that tend to make them uneasy. Cancer can be a leading cause of death for canines who are over the age of two. For many pet owners the diagnosis can be unsettling and is very taxing on the emotions and physical health of both owner and pet. The fact is that most pet owners will encounter this situation at least once in their lifetime. The most common types of pet cancers include:
- (Most Common)
- Lymphoma is the third most common cancer diagnosed in dogs. …
- Osteosarcoma (Bone Cancer) …
- Mast Cell Tumors
- Bladder Cancer
- Mammary Cancer (Breast Cancer)
Pet Cancer and CBD Oils
As a pet owner, it can be exhausting to try and find a natural alternative to pain and anxiety for your canine or feline companion. There are concerns about medication and remedial help for our family pets. Rest assured that HP Genix has actively researched the health of pets and the benefits to your pets health and helping alleviating the symptoms of Cancer related illness.
Cannabinoids are reviewed and believed to help manage the cancer related symptoms and oftentimes can alleviate the side effects of cancer treatments. There are many related symptoms that pets encounter during treatment or even because of the cancer spreading. These could include extreme fatigue, nausea, cancer related pain and other issues associated with the diagnosis. Cannabinoids may help slow cancer growth, protect the good non-cancer cells and reduce inflammation according to a review done by the National Cancer Institute which has provided compounding evidence of the benefits of cannabinoids and cancer.
Pet Cancer and CBD Oils
Pet, Dog and Cat Hemp CBD Oil 250mg 15ml
80.2% Purity CBD Compared to our competitors of 40-60% on average.
HP Genix CBD hemp oil is a more concentrated form of CBD oil. Our CBD hemp oil is produced from organic, 100% USA Colorado grown hemp plants.
Our CBD Oil is also 100% THC FREE
CBD Hemp oil is:
- NOT psychoactive
- NOT marijuana
- Considered by many in the medical community to be one of the safest and best Holistic ingredients
- Safe especially since we have ZERO THC
- Source of omega-3, omega-6 and omega-9 fatty acids
Hemp Seed oil and Phytocannabinoid
Phytocannabinoid Hemp Oil 10mg**


text:
Are you ready?!
WARNING: This release is going to be a MAJOR cuteness overload!!!
So MANY great new stamp sets and dies being released today!!!
First up, I am featuring the new Sweet Humming Bird stamp set!
I also really like the super sweet little humming bird!!
Don't quote me, as my mind does sometimes change easily, especially with such an amazing release...but I would have to say this next stamp set I am featuring is my favorite!! (But I sure love the flowery sets released as well!!)
Growing up I can remember collecting and playing with trolls!! Then the Troll movie came out recently and both my kids (and myself!!!) fell in love with it! I think it is so cute that Poppy loves to create cards and scrapbook!
So I am so SUPER exited to see the new Insanely Happy stamp set from YNS! I actually did a happy dance!!
So here is the first card I created with it:
There is a coordinating Insanely Happy Die Set to match the stamp set! Always nice to have!!
Such a fun and happy stamp set!!
Be sure to check out all the awesome new products here!!!!
Please reference our linky at the bottom of this post for the entire hop list.
Happy Hopping!!
Please remember to leave some love along the way!
You have a chance at winning a $25 Gift Certificate!!!
Have a lovely day!


text:
Kerry Hasa, instructional support analyst at UC Davis, has been steadily working to automate processes in the School of Education. "I never consider myself 'techy,'" says Hasa, "but I use technology all the time and don't even think about it, so I guess I will have to start admitting to my 'techiness.'"
In fact, Hasa has been at the frontlines of administrative technology for twenty years. She began using FileMaker Pro in 1991 to build databases for room scheduling at UC Riverside Extension. "When I transferred to UC Davis," Hasa explains, "I met Shawn DeArmond, and he knows FileMaker. I used to joke that if I came up with an idea he could figure out how to make it work – and he always did."
Last year, Hasa and DeArmond used FileMaker to automate the Teaching Assistant hiring process in the School of Education. The process begins when the TA applies via a Drupal webform on the intranet – another creation of Hasa's. Then, in the FileMaker "rooms database I assign the course and check if it gets a TA, then I can assign TAs to certain classes, and automatically send letters with all the course detail. Once the letter is returned, I track it in another database with which the business office also works."
As you can see, Hasa's databases do much more than just "rooms" these days – "I do all my scheduling and tracking of courses in FileMaker – it even makes signs for each door! One button calculates each class meeting and adds it automatically – what used to take me 2-3 minutes now takes only 2-3 seconds. That may not sound like a lot, but with over 350 entries a year, it adds up."
While these applications of technology certainly make Hasa's job easier, they also create painless processes for students and faculty. As a graduate student in the School of Education, I know I have benefited from Hasa's "techniness." Thanks, Kerry!


text:
War medals found in Bolton on Remembrance Sunday
Five medals from World War II were found at a bus station in Bolton on Remembrance Sunday.
The medals were found by a member of the public at Trinity Street bus station on 11 November.
Three photographs were found with the medals, one of which is of a minesweeper.
Police are keen to reunite them with their owner and are appealing to anyone who thinks they may have lost them to get in touch.
A spokesman said four of the medals were "court mounted" in a row and the fifth was on its own.
Det Con Paul Gore from Scholey Street police station said police were grateful to the person who handed them in.
He said: "It is possible someone has misplaced these medals after travelling to or from a memorial service on Sunday and I imagine they are feeling devastated at the prospect of losing these highly valued possessions.
"Three photographs were also found with the medals, one of which we have issued, which is an image of a minesweeper.
"The medals and photographs are being stored safely at Scholey Street police station and we would ask either the owner of the medals, or anyone who has any information about who they belong to, to contact police."
Parades were held across Greater Manchester last Sunday.
In Bolton, a parade took place at 11:15 GMT followed by a church service and laying of wreaths at the war memorial.


text:
A grass-roots effort to raise $100,000 for each family of the 26 shooting massacre victims is taking off — having raised more than $230,000 in just days.
The "My Sandy Hook Family Fund" was started by Newtown residents to cover not just the families' immediate needs, but long-term costs as well.
"We want to make sure the families don't have to worry about paying for things like day care or car repair or things they shouldn't have to think about while they get back on their feet," said fund co-founder Rebekah Harriman-Stites, whose 7-year-old son was on the wrestling team with shooting victim Jack Pinto, 6.
"As a community, we have a lot of healing to do, but knowing that the nation is behind us and is here for us is an amazing feeling."


text:
Take the Spiritual Inventory Quiz!
1. _____ I prefer ministering by myself rather than in a group. G
2. _____ People often say I am impulsive and direct. A
3. _____ My financial resources are above average. A
4. _____ I like to counsel people on a short-term basis. D
5. _____ I am a task-oriented person. G
6. _____ I love directing other people's work. B
7. _____ It's natural for me to show kindness to people. E
8. _____ People learn easily from me. C
9. _____ I can be very persuasive. F
10. _____ More than 10 percent of my income goes for Christian causes.
11. _____ People often follow my advice. D
12. _____ I normally use several books in lesson preparation.
13. _____ I like to recruit and lead people. B
14. _____ One-on-one relationships are important to me. E
15. _____I possess a variety of talents and abilities. G
16. _____ I want to measure everything by God's Word. F
17. _____ Material possessions don't mean much to me. A
18. _____Discouraged people are encouraged by my words. D
19. _____ Being accurate and truthful are important to me. C
20. _____ I love the challenge of accomplishing an organization goal. G
21. _____ Other people's spiritual welfare genuinely concerns me. D
22. _____ I usually make quick decisions. F
23. _____ I look for ways to help the unfortunate and downtrodden. E
24. _____ Criticism doesn't bother me. C
25. _____ I often volunteer my time and talents to worthwhile causes. G
26. _____ I am usually self-confident. B
27. _____ I don't expect repayment for favors I do for others. E
28. _____ I enjoy being responsible for the success of the group. B
29. _____ When a question about truth comes up, I am normally right. F
30. _____ Deadlines challenge me, and I usually meet them on time. B
31. _____ People in pain are comforted by my presence. D
Total your checks: A _____, B _____, C_____, D _____, E _____, F _____, G _____ Recording a 3, 4, or 5 after a letter indicates a Spiritual Gift.
For Short Spiritual Gifts Inventory
You contribute material resources, and do God's work with liberality and cheerfulness. You contribute sacrificially, motivate others, and don't shun pressure or publicity. Romans 12:13 – "Share with God's people."
You lead and communicate in such a way that people work harmoniously to reach goals for God's purpose. You enjoy being a leader and can endure adverse reaction to get the job done. You enjoy seeing tasks complete; are able to set guidelines, schedules, and policies; and can delegate to get the work done. Romans 12:14 – "Bless those who persecute you."
You communicate the truth with obvious results. You believe your gift is foundational and work systematically and with accuracy. Romans 12:11 – "Keep spiritual fervor."
You minister by giving comfort, consolation, and encouragement so people feel helped and healed. Problems are only challenges, and you are drawn to those seeking spiritual growth. You can share personal failures to prompt others to talk. Learning and teaching practical information is your desire. Romans 12:12 – "Joyful, patient and faithful."
You feel compassion for those who are suffering and perform deeds to reflect God's love. You are naturally drawn to hurting people, sensitive, giving, loving and desire healing. Romans 12:15-16 – "Rejoice with those who rejoice, mourn with mourners, live in harmony."
The goal of those who have the gift of prophecy is to bring persons face to face with God. You discern, reveal motives and actions, have strong convictions and a need to express them. Impulsive, direct, and persuasive, you normally are a strong person. Romans 12:9 – "Love must be sincere, hate evil, cling to good."
You identify and meet the needs of others using personal as well as other resources. You see needs and enjoy responding. You work best short-term and alone (do it now and quickly). You possess endurance and stamina and have a tendency to do too much. Romans 12:10 – "Be devoted, honor one another."
(Used with permission from Easum, Bandy, & Associates, Inc. (www.easumbandy.com). Inventory can be found in workbook: Discovering Our Place in God's World and inDevelopment of Church Officers in the Cumberland Presbyterian Church by Chris Joiner)


text:
ICLD Awarded New Contracts Valued at Over $1.0 Million10:38 AM July 21, 2017
SHREWSBURY, N.J., July 21, 2017, ICLDD, (GLOBE NEWSWIRE) — InterCloud Systems, Inc. (the "Company" or "InterCloud") (OTC:ICLDD), a leading provider of cloud networking orchestration and automation solutions and services, today announced that it was recently awarded over $1.0 million in new contracts for professional services for new and existing customers. A majority of the work is expected to begin immediately. Mark Munro, CEO of InterCloud Systems stated, "we are pleased with the continued flow of new business. I am personally,Read more


text:
College Football Signing Day!
Mrs. Lyles' class collected the most baby items and won an ice cream party!
High School Baseball New Uniforms!
Plant a tree and give a different gift of life!
Honoree, Joni Boswell for Inspirational Educator!
Future Business Leaders of America Giving Back to Center of Hope!


text:
Monday, June 21, 2010
Lassa defends job creation record
State Sen. Julie Lassa, who is vying for the Democratic Party's nomination to fill the seat being vacated by U.S. Rep. Dave Obey, defended her record on job creation on Sunday's "UpFront with Mike Gousha," a TV news magazine produced in conjunction with WisPolitics.com.
Lassa, who chairs the Senate's Economic Development Committee, has come under criticism by Republicans for presiding over the committee as the state shed more than 150,000 jobs during the recession.
Lassa noted economic troubles have not been unique to Wisconsin.
"This is a global recession and the policies that I've worked on are ones that will create good-paying, family-supporting jobs in this state," said Lassa, D-Stevens Point, pointing to her work on the Wisconsin C.O.R.E. Jobs Act. "We've been very proactive in my committee and under my leadership trying to make sure we're in the best position possible to rebuild Wisconsin's economy despite this global recession."


text:
The Last of Us: One Night Live Recreates Story with Original Voice Actors
Naughty Dog's stellar cast is returning to contribute their voices to The Last of Us, but it won't be for its sequel.
Announced on the PlayStation Blog, Geoff Keighley, of GameTrailers fame, has announced The Last of Us' cast will be performing various parts of its script on stage at One Night Live, which Keighley produces. Troy Baker, Ashley Johnson, Merle Dandridge, Hana Hayes and Annie Wersching will be returning to voice our favorite characters under the direction of Naughty Dog's Neil Druckmann. Academy Award-winning composer Gustavo Santaolalla will be performing parts of his unforgettable soundtrack.
One Night Live will have the cast of The Last of Us performing live at the Broad Stage in Santa Monica, CA on July 28 at 7 PM PT. Unfortunately, the event has sold out within a few hours of its announcement, but it will be streamed live on Twitch, YouTube and the PSN's Live Event Viewer.
The virus in The Last of Us was pretty bad, but so are these other video game viruses.


text:
Noemi Rey established Spanish Language Services in 1990, after qualifying in Modern Languages in her native Spain and coming to the UK. Based in Cambridgeshire, SLS offer the highest quality Spanish translation, interpreting, tutoring and voice over.
Since it was established, SLS has worked for many prestigious companies, including airlines, exporters, car manufacturers, publishing houses, mobile phone & electrical manufacturers, in and around Cambridgeshire, Bedfordshire & Northamptonshire. In addition, Noemi has provided a Spanish tutoring service to businesses and private students, helping them to improve their Spanish language skills and achieve qualifications in Spanish, from Spanish GCSE, through Spanish A-Level to Degree Level.
Spanish Language Services prides itself in offering a highly professional service at a competitive price.
For more information or a quotation, please contact Noemi Rey on 01480 812181 or by E-Mail.
For all your Spanish Language needs
Please contact Noemi Rey at
Spanish Language Services
01480 812181 or 07710 783809
Last update 27 October 2016
Would you like to learn Spanish?
In St Neots, Huntingdon or Buckden
Small classes or one-to-one
Lessons designed to suit your needs
Experienced Spanish teacher
Spanish GCSE & A-Levels
Does your business work with Spanish
or South American Companies?
In Peterborough, Cambridge, Bedford?
Northampton, Huntingdon, St Neots?
Milton Keynes, Kettering, Cambourne?
Spanish interpreting or translation?


text:
Article merchandising services are the quickest way you can zest your website assemblage and gross revenue. Many webmasters have suddenly completed the entail to have keyword fixed station sites, and the easiest way to manufacture place websites straightaway is to turn out for place selling nonfictional prose web sites that change in producing untested articles for their clients. This nonfiction will deliberate computer network piece commercialism for weeny business, article merchandising scheme and article marketing promotion. With this information, we will discernment the stress of relying on piece selling employment as the high-grade way to go.
Small commercial can get unconstrained traffic to its website by utilizing Internet nonfictional prose marketing. The greatest bet for ingenious articles at low-cost prices is to use article-marketing services. This feature is the sunday-go-to-meeting because it uses experts that scribble serious listing.These articles are in the lightest sense but nonrecreational manner, beside a bantam not-so-obvious gross sales pitch, that can make somebody believe you would be buyers and searchers, thereby boosting rendition revenue enhancement.
Strategic piece marketing is achieved given that articles on swell satisfied are traffic-bringers to websites. They fathom out the requisites of explore motor optimization in cooperation beside keyword adjusted station articles,resulting in allowed accumulation to websites.Post ads:
PREMIUM EDGE LARGE BREED PUPPY 35 LB DIAMOND PET FOODS / Pro Enzym-13 Powdered Drink Mix Orange Flavored (9.52) oz / Procare ACTION Knee Brace, 12" Long, X-Small (12" - 13") / ProOmega-D Liquid, Nordic Naturals / Protection Plus Disposable Underwear Small/Case of 88 / PT 980879 PT 980879- Paper Headrest Smooth / PT 981414 PT 981414- Paper Exam Table Crepe Pediatric / PT 981918 PT 981918- Paper Exam Table Crepe Pediatric / Quiet One 800 Pump 220gph By BND / "Sweet Celebration" cutouts, pack of 3 - Case of 96 / R Securable II Strapping Material Strapping Material / Rainbow Light Calcium "+" 90 Tablets ( Multi-Pack) / RCP5138 - SeBreeze Fragrance Aerosol Canisters Spring / Reclosable Poly Bags, 8 x 10, 2 mil, Clear, 1000/Carton / Universal Products Reclosable Poly Bags, White Label Area, / Red Wine Altern with Resvera, 2 oz ( Multi-Pack) / REEF ROCK ASST BOX 50 LB CARIB SEA CS00350
Article marketing media hype services activity clients to just the requirements of the ten primary survey engines. This makes them prevention savings.
Article merchandising employment are the best places to get ingenious articles that congregate the requirements of the principal search out engines, following in even assemblage and income, mega for station merchandising and tiny businesses.Post ads:
ReliaMed Beveled Edge Hydrocolloid Wound Dressing, 4" X / Requa Charcocaps 260mg 100 cap ( Multi-Pack) / Retro Fashion Watch for Female - Zircon Material Crystal / Reveur non silicon SCALP SHAMPOO 500ml (Japan Import) / Rhinestone & Crystal Bead Feather Fascinator Bridal Hair / Ricochet Sours, Cherry Blast, 100-Count Mints ( Value Bulk / Rides Repair Intensive Wrinkle Reducer - Ultra / Robitussin Peak Cold Multi-Symptom Cold Nighttime 4 oz. / Rolyan AquaForm Tibia Fracture Brace Size: Medium / Rolyan Aquaplast Resting Pan Mitt Splint Left Size: Small / Rolyan Custom Hemi Arm Sling Left Straps, Size: Large, / Rolyan Wrist and Thumb Spica Splint with IP Immobilization / Rosabella Ravishing Rhinestone & Crystal Flower Wedding / Rose Hip Lozenges - 150 lozenges ( Multi-Pack) / Rose Hips With Lemonbalm Tea by Celebration Herbals - 24 / Roylan Wrist and Thumb Spica Splint TailorSplint 1/8" / RUBBERMAID 263788RED Dome Top,32 G,Red


text:
Steven Lau
Creative Director / Head of UX, Agility Digital Marketing
Presently working in the Gaming Entertainment industry as Creative Director / Head of UX.
Steven gained a MA in Communications Management, and was educated in the UK, gaining a BA in Design Electronic Media at Staffordshire University. He returned to HK in 1995, mainly with 4As agencies such as M&C Saatchi and D'Arcy and founded D'Arcy Interactive, where he created the first Coca-Cola interactive website in China and was instrumental in winning the Moet Hennessy Riche Monde interactive project account.
During 04, Steven joined Ion Global as CD and led interactive projects ranging from property to hotel industry, and in mid 06 he moved to Designercity, a long-established interactive agency with a raft of major clients.
Whilst he was at there as Partner, ECD worked with varieties of new digital media included mobile, iOS apps, AR, kiosks and the Microsoft Surface won some major awards.
In late 2011, he left Designercity and went to the client side as Director, Product Management at The Walt Disney Company (APAC) – The Walt Disney Parks & Resorts Online.
With over 20+ years experiences in Creative Direction, Digital Strategy, Branding/Digital Marketing and User Experience Steven is passionate about creative and innovation, he's on a quest to change how corporate think about creative mindset, design thinking and the important of user journey.
Creative, Innovation and Technology.
Previously (1):
Fastest Growing Jobs of the 21st Century: A Panel of Digital Experts
A panel of top practitioners to give you the low-down on forging a career for the future. Our panel represents a range of perspectives across creative, UX design, tech & business.


text:
Description:Santa has always been known as a hands-on-guy by his employees. This busty elf girl is new at North Pole candy factory and Mr.Claus, as a good boss, does everything to make her feel comfortable at the new work place.
Played:4452 times
There are no comments for this game yet
Please login to make a comment
Total games: 627
Total categories: 3
Registered users: 1561
Total comments: 0
Total games played: 3890316
Total Connected Gamers:


text:
Experimental Design
- Created by: RVB1
- Created on: 19-03-14 11:46
Controlled Experiment (Fair Test)
When all relevant variables are controlled so that the observed changes in the dependant variable must be due to changes in the independant variable.
Control Experiment
An additional experiment designed to eliminate alternative explanations for the main experiment. This shows that the observed changes in the dependant variable are due to changes in the independant variable.
Control Group
A group or sample treated in exactly the same way as the experimental group, except for the factor being investigated. this ensures that the change in the dependant variable is caused by the independant variable changing.
A dummy pill, injection or treatment that has no physiological effect; this ensures that the independant variable is causing the changes in the dependant variable.
Randomised Controlled Trial. The best experimental design.
Randomised: The study and the control groups are randomly selected. This will prevent bias.
Placebo-controlled: The study group is compared to a control group.
Double-Blind: Neither the subjects or the investigators know who is in the experimental or control groups.
A method or technique that has been shown to produce valid and reliable results.
A suggested explanation of observations or results that can be tested. also, known as a scientific hypothesis.
No comments have yet been made


text:
Be the first to review this product
* Required Fields
Whether it's a vintage biker helmet, old speed boat seat, Ziggy Stardust, dune buggies, or a 1960's bowling alley this kind of gold sparkle vinyl conjures up all kinds shapes, sounds and sights. Now you can rock it on your guitar- designed and made proper by Couch of course (along with the prodding of Mastodon guitarist Bill Kelliher). Allow us to introduce the Gold Sparkle Racer X Guitar Strap. Backed in Black, with your choice in stripe color- white or black. Built to rock by Couch in our California Workshop by humans who actually can tell you how many strings are on a guitar. This strap is also available with no stripe and as a Lightning Bolt Strap, check it out here.


text:
The ongoing debate over net neutrality and Facebook's Free Basics campaign now has telecom regulator TRAI directly facing off against the social networking giant. Facebook accused TRAI of having blocked emails from users of the social network, because of which, the telecom regulator hasn't received bulk of the responses that came through Facebook's campaigns on its website. Here's how things rolled out.
Facebook's side of things..
In a letter written to TRAI, by Ankhi Das, Facebook's Director for Public Policy in India and South Asia, wrote that someone in the TRAI office had blocked emails Facebook users were sending through the social network, with their views on differential pricing. The responses were sent through Facebook's public campaign, asking users to defend Free Basics by sending their comments directly to TRAI. According to Facebook, the comments from users were blocked on December 17, preventing any further comments from being received by TRAI post that. The last date for sending in responses to TRAI was December 30, which was later extended to January 7.
What TRAI said..
Responding to Facebook's letter, K.V. Sebastian, Joint Advisor (F&EA), issued a letter, which explained that Facebook's standard template for responses do not address the issues raised in TRAI's consultation paper. Sebastian questioned Facebook, asking why, if Facebook's emails were blocked, did it take the company so much time to bring it to TRAI's notice. The strongly worded letter also says that Facebook's urging has reduced TRAI's efforts to learn the users' view into a "crudely majoritarian and orchestrated opinion poll".
Sebastian wrote, "Your urging has the flavour of reducing this meaningful consultative exercise designed to produce informed decisions in a transparent manner into a crudely majoritarian and orchestrated opinion poll." He also added that the social giant's campaign was 'wholly misplaced'. "Neither the spirit nor the letter of a consultative process warants such an interpretation which, if accepted, has dangerous ramifications for policy-making in India."
Further, he also added, "Neither the spirit nor the letter of a consultative process warrants such an interpretation which, if accepted, has dangerous ramifications for policy-making in India." The letter stated that Facebook didn't have the authority to speak for all of its users, saying, "Equally of concern is your self-appointed spokesmanship on behalf of those who have sent responses to Trai using your platform. It is noticed that you have not been authorised by your users to speak on behalf of them collectively. No disclosure in the act of sending a message to Trai using your platform to this effect has been issued to users."
You can read TRAI's letter to Facebook's Ankhi Das, here.
Where did it all begin?
While disclosing the number of responses it got for its consultation paper, TRAI mention that it received 24 lakh responses, including 13.5 lakh from supportfreebasics.com and 5.44 lakh comments from facebookmail.com. In addition, there were 4.84 lakh comments from Save The Internet and other forums. TRAI said that many of these responses from Facebook users were in support of a specific product — Free Basics — when the consultation paper didn't address any particular product. Facebook's Ankhi Das on the other hand, claimed that there were 1.6 crore responses send through the social network, supporting Free Basics, out of which 40 lakh had answered specific questions from TRAI's consultation paper.
What's your take on the entire matter? Do you support free basics? Do you think it's against net neutrality?
Other Popular Deals
- Samsung A7 2016 Edition GoldenRs. 18990 *Buy Now
- Redmi Note 5 Pro (Gold, 4GB...Rs. 11999Buy Now
- Redmi 6 Pro (Black, 3GB RAM,...Rs. 8999Buy Now


text:
The Alto Herald and The Wells News 'N Views (Alto, Tex.), Vol. 90, No. 34, Ed. 1 Thursday, December 26, 1985
Description: Weekly newspaper from Alto, Texas that includes local, state, and national news along with extensive advertising.
Date: December 26, 1985
Item Type: Refine your search to only Newspaper
Partner: Stella Hill Memorial Library


text:
Welcome to Moen Concrete Inc., a superior company with the knowledge and the skills to provide quality concrete services to residential and commercial communities.
Moen Concrete Inc. is licensed, insured and bonded. We have over 16 years of experience in residential driveway construction. Our services range from plain white concrete to decorative concrete and can be backed up by 100s of satisfied customers.
A new driveway can give new meaning to the phrase "coming home." At work, a repaired sidewalk can ease the feet of your employees as they walk through the front doors in the morning. There are countless ways that concrete can change your personal property, whether it is for residential or commercial purposes. With Moen Concrete Inc. working alongside you, you can be sure that the results will always be clean, professional and beautiful.
For more information on how Moen Concrete Inc. can serve you, please visit Our Services page or contact us.
- Better Business Bureau (BBB)
YP Reviews
Contact Information
Moen Concrete Inc.
14631 83rd St. NE
Elk River, MN 55330
Elk River, MN 55330
In Business Since 2000
Phone: 612-272-3885
E-mail: email@example.com
E-mail: email@example.com
Business Hours:
Open 7 Days a Week
Weekend Appointments Available On Request
Open 7 Days a Week
Weekend Appointments Available On Request


text:
You are not logged in.
Pages: 1
When I install a new library, I am typically given a folder, with the name of the library, containing a bunch of subfolders, with names like: builds, src, docs, include and others.
Now I understand these files need to be compiled and some files created or moved into the appropriate directories, but precisely how you do this, I don't know. Usually I Google walk-throughs on the web for how to install a particular library, but it seems to be a different process every time. Furthermore, often they suggest you install something else just to enable the installation.
Isn't there any standard method of distributing and installing a library in C++? Why do I have to learn a new dance every time?
A logarithm is just a misspelled algorithm.
Is it not possible to, for instance, copy the folder of a new library into your particular projects folder, and compile and access the library exclusively in that project?
A logarithm is just a misspelled algorithm.
Is it not possible to, for instance, copy the folder of a new library into your particular projects folder, and compile and access the library exclusively in that project?
Usually, there is a standard sequence for configuring, building and installing software. If there is a Makefile in the project, this steps are:
1) ./ configure
2) make
3) make install
Always take a look at the README and INSTALL files that come with most software sources. They give much better instructions.
Thanks for the response!
Yes, I've noticed makefile's typically appear. I opened the readme of a particular library and it gives instructions for Unix installation, and says the process can be emulated for mac or windows. Not sure what that means, though.
In any case, configure, make, and make install. Can you tell me where I can learn how to perform these three steps?
I really know very little about command line processing, which I think is what this is.
A logarithm is just a misspelled algorithm.
I am struck in a very weird situation and would be glad if anyone can guide me in the right direction.
I have two libraries, PRL and miracl. ( Both C++)
Now, the PRL is based on miracl code, i.e. it uses functions and headers from miracl library.
miracl library is windows based, and by following the instructions, I was able to build the object file library in VS 2005 ( VC++). But, PRL is Linux based.
My problem is how can I compile PRL under VS 2005, or maybe another software under windows. I have the miracl object file library but cannot use it with the PRL code. As soon as i try to run PRL code in windows, it throws numerous syntax errors, as if it's not C++ at all.
I am not able to get the correct way of working this out.
To compile PRL under 2005, VCE2005 will not be supported, you need to install SRK..may it works for miracle object file too..Miracle C Compiler runs under MS-Windows.
Go through Miracle C Installation and Use Guide, it'll help you.
Pages: 1


text:
Looking for a job can be one of the most stressful times in a person's life, and they're not alone. According to the Bureau of Labor Statistics, 7.4 million Americans were unemployed and looking for jobs in May 2016. While trying to help yourself stand out against the competition, there are a few common mistakes job seekers make that make many hiring managers cringe. Here are a few to avoid…
Thesaurus Overload: You can create a resume that sounds intelligent without using words bigger than you. Use the thesaurus for keyword inspiration and variations, but leave out the words that sound like you're trying too hard.
Being Too Negative: Do ask about why the person who used to fill the position left the job, but don't ask about the most common complaint about the job. That's completely subjective anyway and makes a negative impression.
When You're a Pushy Patty: Persistence is only a virtue if it's not irritating, so hold back on the aggressive follow-ups. Getting in touch with the hiring manager excessively makes you seem desperate.
Not Managing Your Online Profile: How many times do they have to say it? Hiring managers will look up all of your online profiles, and yes, they will look through your pictures. Don't be a disappointment and waste their time; clean up your online presence.
Sharing Too Much: If you need to pick up your kids every Wednesday at 5:30 on the dot, don't mention it in the first interview. If you're the right candidate, you can work out schedule nuances later. Don't jump the gun and share too much about your personal life.
Making Sloppy Mistakes: You wouldn't believe how often applicants make sloppy and obvious mistakes, like putting the incorrect company name on the cover letter and getting the title wrong for the job they're after. Errors like these are turnoffs for hiring managers.
Feeling Too Comfortable: Even if the hiring manager appears to be around your age, do not treat her like she's your pal. Friendly small talk is encouraged to break the ice and show some personality, but don't compliment her complexion and ask for skincare tips.
Assuming You Have the Job: Certain questions give the impression that you think you already have the job, like asking where your desk would be located and how every minute of every day will be spent.
Exaggeration: There are plenty of ways applicants make themselves seem more perfect than they actually are. But total, obvious exaggeration, like saying you read through one book every day, is telling the hiring manager she's too naive to pick out a lie.
TMI About Your Current Position: When you're asked about the duties you have at your current job, do not describe your actions from the minute you get in until the minute you leave. Describing your fax-sending abilities does not sell your skills; giving examples of the way issues come up and how you deal with them does.


text:
Real Madrid coach Jose Mourinho is hoping for a change of luck in Wednesday night's Champions League semi-final against Bayern Munich.
Mourinho claimed on Tuesday he had been bereft of fortune in previous matches at the last four stage after twice losing to Liverpool (in 2005 and 2007) – when at Chelsea – and again to arch rivals Barcelona last season – a defeat he blamed on a UEFA conspiracy.
Madrid go into Wednesday's second leg with Bayern Munich at the Bernabeu 2-1 down with a place against either Barca or Chelsea the prize for the winner.
"Overall I have not been lucky in semi-finals of the Champions League," he said.
"I lost one with Chelsea (2005) due to a goal that wasn't a goal, the ball didn't cross the line. Another season (2007) we lost on penalties and when you lose a semi-final on penalties it is due to bad luck and I lost the semi-final last season because of what everyone knows."
The Portuguese admits he also has more interest than usual in the other semi-final due to Chelsea's involvement.
He said: "If it were Barcelona against Milan or Arsenal or any other team then it wouldn't matter to me who progressed, I would want the best team to win, but because it is Chelsea I feel slightly different.
"I would like it if the luck went to my old players."
Despite the Clasico victory at Barca on Saturday night virtually assuring Madrid of their first Primera Division title since 2008, speculation continues to suggest Mourinho could quit the club in the summer.
But the former Porto and Inter Milan boss insists he plans to stay.
"At the moment my future is not important, but I think I will be here next season," he added.
"I have a contract and once we arrive at the end of the season I will have time to speak with the players and the directors and we will decide what is best for me, for the club and for the squad.
"It is better to stay at a club for four or five years."
Mourinho was quick to point out that it was not the time to discuss individuals, however, something he was keen to stress with Sergio Ramos, Xabi Alonso, Fabio Coentrao and Gonzalo Higuain all one booking away from missing the final through suspension.
"A player can't be an egoist," he said.
"The important thing is that Madrid are in the final. I would sign now for me to not be in Munich (where the final is being staged) and stay back in my house if it means the team reaches the final.
"I hope that the referee is sensible enough to not show yellow cards that can be avoided."
Mourinho is confident his players will handle the occasion against Bayern, just as they did at the weekend.
He said: "I don't know if the Champions League is more important than the league, because the best team always wins the league and this isn't always the case in Europe.
"However, the final of the Champions League is the most important thing in football.
"Tomorrow is almost like a long-awaited final, but I see calmness in the players. I don't like an excess of emotion, nor a lack of it."
Mourinho has named a 20-man squad for the clash, with Ricardo Carvalho, Lassana Diarra, Nuri Sahin and Hamit Altintop omitted.


text:
The China International Gold, Jewellery & Gem Fair – Shanghai opened Friday at the Shanghai World Expo Exhibition & Convention Center and will run until November 21. The fair features around 250 exhibitors from 18 countries and regions. Exhibits include finished jewelry, diamonds, gemstones, raw materials, tools and packaging, luxury and antique timepieces, and arts and crafts.
The Asia-Pacific Jewellery & Watch Expo, debuts in this edition. The new fair, which will be held concurrently with the Shanghai Fair, is a result of UBM Asia's strategic alliance with the Shanghai NIU International Exhibition Co Ltd. Exhibitors offer a wide range of arts and crafts, timepieces and jewelry products, including embroidery, noble antique silverware from the east and west, and traditional China's palace art from Beijing.
Seven other pavilions debut as well. They are: the Beijing Arts and Crafts Association, Guangzhou Light Industry Arts and Crafts Enterprise, Hunan Embroidery Research Institute, Committee of Collection and Research of China Horologe Association, Shanghai Gem and Jade Trading Center Co Ltd, Shanghai Timepiece Trade Association,and the Shanghai Jade Carving Culture Association.
Retail sales in China in April 2016 grew by about 10 percent year-over-year, according to China's National Bureau of Statistics show. China's jewelry retail market remained steady in the first eight months of 2016, with data showing sales of gold and jewelry products totaled around $28.5 billion during the period.
"We see a lot of opportunities in China. There is still much room for growth especially given the Chinese government's efforts to shore up domestic consumption," said Joe Ho, UBM Asia's Fair Manager in China. "Wages have risen; we have an enormously huge population base, and millions of Chinese have moved into the cities from the countryside. I feel confident about China's economy and the consumers' spending power. I am also confident that the Shanghai Fair will do its job of serving the industry by matching our local and overseas exhibitors with serious buyers from the China market and beyond."
Other Attractions include:
Sri Lanka Pavilion – showcases the world renowned Ceylon Sapphire and a vast array of rough and polished gemstones
Taiwan Pavilion – specializes in Grade A fei cui jewelry and coral and gemstone jewelry
Korea Pavilion – offers a range of fashion jewelry with trendy and innovative designs popular among teens
India Pavilion – showcases India's jewelry craftsmanship in gold jewelry manufacturing and diamond cutting and polishing
Special Events – Jewelry design award ceremony, jewelry and craft auction, and educational seminars give buyers the opportunity to learn and network.
Please join me on the Jewelry News Network Facebook Page, on Twitter @JewelryNewsNet, the Forbes website and on Instagram @JewelryNewsNetwork


text:
US Department of Education tells school district that they are harming Black children
US Department of Education tells school district that they are harming Black children
Reported By Britt L
The U.S Department of Education Office for Civil Rights has declared that the state of Alabama will help all students, especially African Americans, with accessing advanced placement classes in their schools. Never done before in Alabama's state history, the first-time agreement will increase the opportunities for students to do college level work and learn at a higher level in predominantly Black schools.
In an OCR investigation during the 2010-2011 school year, the department found the district's predominantly white high schools had a large pool of advanced placement classes offered to their students- ranging from AP calculus to AP English and so forth.
Black schools however had a significantly fewer AP classes.
After investigating the alarming statistics, the OCR worked closely with Lee District to make sure minority children had equal opportunity to learn at an advanced level. The courses that will be introduced to the students will encourage the children to pursue higher-level courses and consider going to a four year college. Lee District says the U.S. Department of Education Office for Civil Rights will do everything in its power to help the program stay afloat.
Before putting the AP plans into action, Lee District must address the issue of minority children's lack of participation in AP programs. Also the district will discuss why Black students face countless barriers in their academic careers.
Lee District schools will introduce dual-enrollment courses offered by junior colleges to the Black high schools and provide transportation to AP classes and back to regular school.
In a released statement from a OCR assistant secretary, Catherine E Lhamon says:
We look forward to working with the Lee County School District administrators to ensure that all students have equal access to a quality education and are pleased that the district has taken positive steps to increase college-ready access through raising the enrollment of Black students in AP and other higher level courses. The Lee County School District has been a partner throughout this process and I applaud the steps the District is taking to help ensure their compliance with our civil rights laws to serve all students.


text:
Rogue Honey Orange Wheat
Grains, malts, hops, yeast, water and other ingredients used to brew. Recipe reviews and suggestions.
Moderator: slothrob
2 posts • Page 1 of 1
Rogue Honey Orange Wheat
Was just up in Oregon and hand a few pints of this and its Imperial version. Anyone have a clone recipe? And BTW, what does "Imperial" really mean when pertaining to beer?
- muddypuddle
- Posts: 5
- Joined: Tue May 06, 2008 12:14 pm
I can't help with the recipe, but Imperial means a higher alcohol content than the "regular" version. For example, an Imperial Stout has a higher ABV than a Stout, and an Imperial IPA has a higher ABV than an IPA.
BTP 2.0.22 (Windows 10 64 bit)
- Strong Ale
- Posts: 278
- Joined: Tue Oct 24, 2006 11:32 am
- Location: Fremont County, CO
2 posts • Page 1 of 1
Return to Ingredients, Kits & Recipes
Who is online
Users browsing this forum: No registered users and 4 guests


text: If you need an easy dinner idea that is prepped in less than 10 minutes, look no further! This dish takes advantage of leftover or rotisserie chicken and, of course, crescents! The filling for this crescent ring dinner includes 6 simple ingredients you probably already have in your pantry. Spice it up with an additional can of green chilies or leave them out to keep it kid-friendly. My kids love anything with crescent dough, but this cheesy enchilada crescent ring is at the top of the list! Here's how you do it. Combine the filling ingredients in a mixing bowl and set aside: 1 1/2 cups shredded cooked chicken, 1 can Old El Paso enchilada sauce, 1 can whole kernel sweet corn, 1 can black beans (drained and rinsed), 1 1/2 cups shredded Mexican cheese blend , and 1 package taco seasoning mix. Pop open one package of crescent dough, separate into four rectangles and arrange them on a baking sheet perpendicular from each other to form a cross. The corners should touch each other while leaving a square space in the center. Separate dough from a second can into 4 more rectangles. Arrange rectangles into an "X" that overlaps the cross, leaving an open circle in the center. Carefully spoon the filling mixture around the center of the crescent dough and shape into a ring, leaving about 1/2-inch of dough in the center. Pull the overhanging dough over the filling and towards the center. Tuck and pinch under the middle. Bake until golden and cooked through. Let rest for about 10 minutes before slicing and serving.


text:
Chili Pickles
Mankind has been eating chilies for over 10,000 years. Domesticated in South America, they were brought to
The logic is simple. Chilies are slit / chopped / crushed / blended and mixed with a variety of spice powders & salt. They are then steeped in an acid (lemon juice / vinegar / tamarind pulp / yogurt) and left in sun for a few days. The acid prevents spoilage and sunning the pickle kills microorganisms. So all these pickles last easily for months and last much longer refrigerated. Feel free to change the quantity of spice powders / salt to suit your taste.
1. Water kills pickles. Ensure chilies are wiped dry before pickling.
2. Keep bottles and spoons completely dry. 3. A tiny pinch of citric acid / sodium benzoate can be mixed with the pickle to make it long much longer.
4. Refrigerating pickles to make them last much longer.
Monday, November 30, 2009
10 Simple Chili Pickles
Posted by Ramki at 4:59 AM
Labels: chili
No comments:
Subscribe to: Post Comments (Atom)
Food Consultancy / Licensing / Crash Courses
Contact email@example.com for complete Food consultancy from concept to completion.
Customised one page cookbooks now available for pressure cooker / microwave / mixie / masala & other cooking product manufacturers. Replace bulky recipe books with easy to refer One page cookbooks and watch your sales soar !
Customised one page cookbooks now available for pressure cooker / microwave / mixie / masala & other cooking product manufacturers. Replace bulky recipe books with easy to refer One page cookbooks and watch your sales soar !
Blog Archive
- ► 2011 (59)
- ► 2010 (67)
- ▼ November (4)
- ► 2008 (135)
Cooking is fun - Duplication is a pain !
"It is extraordinary to me that the idea of creating thousands of recipes by mixing building blocks takes immediately to people or it doesn't take at all. .... If it doesn't grab a person right away, ... you can talk to him for years and show him demos, and it doesn't make any difference. They just don't seem able to grasp the concept, simple as it is". ( Thanks Warren Buffett !)
"What's angering about instructions in many cookbooks is that they imply there's only one way to cook a dish - their way. And that presumption wipes out all the creativity." Cook dishes your way - Download 1001 South Indian curries now and learn to cook, not to duplicate ! ( Thanks Robert Pirsig !)
"Recipe purity is no different from racial purity or linguistic purity. It just does not exist. Cuisines are alive and change all the time. What is traditional today was esoteric just a few decades back. So being a 'foodist' is as bad as being a racist !
About Me
- Ramki
- Chennai, Tamilnadu, India
- Okay, let me start from the very beginning. 1500 crore years ago, with a Big Bang, the Universe is born. It expands dramatically. Hydrogen forms, contracts under gravity and lights up, forming stars. Some stars explode, dusting space with the building blocks of life. These condense into planets, one of which is Earth. Over time, self replicating molecules appear, multiply and become more complex. They create elaborate survival machines (cells, plants, animals). A variety of lifeforms evolve. Soon, humans arise, discover fire, invent language, agriculture and religion. Civilisations rise and fall. Alexander marches into India. Moguls establish an empire. Britain follows. Independence. Partition. Bloodshed. The license raj is in full sway. I'm born. India struggles to find its place. Liberalisation. The Internet arrives! I move from Tirupur to Chennai. Start a company. Expand into Malaysia, Singapore and the Middle East. Poof! Dot com bust. Funding dries up. Struggle. Retire. Discover the joy of cooking, giving, friendships and the pleasures of a simple life. Life seems less complicated. Pizza Republic, Pita Bite and Bhojan Express bloom !
Looking for Treatment?
This work is licensed under a Creative Commons Attribution-Noncommercial 3.0 Unported License.