The Tigger Movie rated G 76 minutes Disney starring Tigger, Roo, Winnie The Pooh, Kanga, Piglet, Eeyore, and Rabbit with voices by Jim Cummings, Peter Cullen, and Ken Sansom Written and Directed by Jun Falkenstein
A Review by Frankie Paiva
Hollywood has no courtesy to the older actors of their previous time. It seems that countless films today feature an entire cast under 30 or treat old people as the running joke, both of these have happened in a handful of films from the past year. When older actors (or actors over 40) do get really good roles, it's usually in a small independent picture that will be playing in the dark and scary section of town in a small theater where you would never dare to go at night. So let's broaden that phrase, Hollywood has no respect for people in general. Not to mention animals. Which is why I was very concerned walking into The Tigger Movie, one of Disney's Thanksgiving to June animated features (much like The Goofy Movie) that is designed to hold us down until the big Disney animated opus comes out in June. If Pooh and the gang were treated as a throwaway film, imagine what that could do to disgrace the entire set of classic featurettes and the future of the franchise. Fans of Pooh's earlier adventures (kids and adults alike) will find plenty to be excited about, as there are only a few things that have changed.
Tigger is feeling energetic, but alas, there is no one to bounce with. While trying to find a bouncing partner, he interrupts the rest of the gang who are trying to move a boulder off of Eeyore's house and they inform him that they can't bounce with him because they are not Tiggers and can't keep up. Feeling lonely he begins thinking. With the help of one of the six fabulous musical numbers, he decides that there must be a Tigger family out there somewhere in the Hundred Acre Wood. A suggestion of a Tigger family tree from Owl is all he needs to go bounding off into the forest leaving the rest of his friends behind.
There seems to be a very low chance of finding other Tiggers, so Roo (who tags along with Tigger in almost all of his daily bouncing and non-bouncing activities) gets the gang together and they decide on a plan. They will write a letter to Tigger, pretending to be Tigger's family. This only complicates things, Tigger thinks the letter says they will be coming to visit him tomorrow and soon they are painting stripes on themselves and trying to dress up Eeyore as one of Tigger's relatives.
Not a very complicated plot, but it's not a very complicated movie. The original drawings of the Hundred Acre Wood were copied with the greatest of skill and the result is remarkable. The beautiful forest that these creatures live in always manages to be a feast for the eyes throughout the entire movie. But there is also a rather large use of actual animation, drawn by actual hands, in the characters as well. While some sequences are obviously digitally animated, most of the rough black lines that outline the original cartoons are still there, as well as a humorous change to the title sequence. Jim Cummings, who's been Pooh and Tigger on the TV show and in the made-for-video movies does a great job with his two characters, but the rest of the cast falls short. Even Eeyore (who makes more amusing comments than ever before) seems to have lost some of his depressed touch. The film also brings out Roo as a major character, Roo wants Tigger to be his big brother and his constant idolizing (it's almost worship) of him is the only thing that bugged me about the movie. Everything also manages to keep fairly un-modernized while a funny song regarding the family of Tiggers (that includes a homage to Marilyn Monroe) is sure to please adults, there isn't much else going on. I kept waiting for Christopher Robin to say, "Hold on, I have to go check my e-mail." Or, "Let's go play Pokemon instead." But he didn't.
This one is definitely not suited for a video rental, it's rich colors are grrreat and it may be the only time you ever see the gang on the big screen. It's message is easy for children to grasp and kept the kids (and the EXTREMELY NOISY teenage girls behind me) interested.  While I know it's cliched to say this, Walt would be proud.
B+
Frankie Paiva<EMAIL_ADDRESS>http://pictureshow.8m.com
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


__author__ = 'robin'
"""
Python file with a set of functions that handles basically all dependency management concerning ROS for viki
A couple of kinds of dependencies:
- First level dependencies are the dependencies of ROS packages that are needed directly for modules
- Second level dependencies are dependencies of ROS packages, these can be
- System level, to be installed with rosdep
- ROS package leven, to be installed (parsed, pulled, etc.) with rospack
"""
from core.backend import scan
from viki_config import VikiConfig
import os
import subprocess
[docs]def check_installed_packages():
"""
Checks for every module that is available,
if the ROS packages needed for it are installed on the system
:return: Boolean
"""
viki_config = VikiConfig()
missing_packages = get_missing_packages(viki_config)
if len(missing_packages) > 0:
print "[WARNING] - There are missing packages for full VIKI support:"
print "\n".join(map((lambda x: x['name']), missing_packages))
return False
else:
print "[OK] - All ROS package dependencies are met!"
print "Note: only second level dependencies of already installed packages have been checked"
return True
[docs]def get_installed_packages():
"""
Gets the currently installed ROS packages and returns the names as an array
:return:
"""
p = subprocess.Popen(['rospack', 'list-names'], stdout=subprocess.PIPE)
packages = p.stdout.read().split()
return packages
[docs]def get_missing_packages(viki_config):
"""
Looks for missing ROS packages that are defined as dependency in a module
:return: List with names of the missing ROS packages
"""
installed_packages = get_installed_packages()
modules_on_system = get_modules(viki_config)
missing_packages = []
# if multiple modules use that package
for module in modules_on_system:
for package in module.package_dependencies:
if not package['name'] in installed_packages:
# Only add the package if it is not yet in the list
if not package in missing_packages:
missing_packages.append(package)
module.missing_packages.append(package)
return missing_packages
[docs]def get_second_level_dependencies():
p = subprocess.Popen(['rosdep', 'check', '--from-paths', '../'], stdout=subprocess.PIPE)
output_string = p.stdout.read()
print output_string
if "All system dependencies" in output_string:
return True
return False
[docs]def install_second_level_dependencies():
p = subprocess.Popen(['rosdep', 'install', '--from-paths', '../'], stdout=subprocess.PIPE)
print p.stdout.read()
p.communicate()
[docs]def get_package_locations():
"""
Uses 'rosdep db' and parsing to get the packages that we can install and the apt-get packages to install it
:return:
"""
p = subprocess.Popen(['rosdep', 'db'], stdout=subprocess.PIPE)
package_lines = p.stdout.read().splitlines()
package_map = map((lambda x: x.split(' -> ')), package_lines)
return package_map
[docs]def get_aptget_packages(ros_package_names):
"""
Returns installation candidates in a list [[ros_package_name, aptget_package], ...]
This is based on the package names provided as the parameter
:param ros_package_names:
:return:
"""
apt_packages = get_package_locations()
return filter((lambda x: x[0] in ros_package_names), apt_packages)
[docs]def start_aptget_installation(installation_candidates):
"""
Installs the packages that are provided in aa package list
:param installation_candidates:
:return:
"""
if (len(installation_candidates) == 0): return
print "VIKI is going to install the following missing packages using apt-get: \n"
print ",".join(map((lambda x: x[0]+" ("+x[1]+")"), installation_candidates))
print "It may ask for your sudo password, to be able to execute apt-get"
input = None
# Ask for confirmation, pressing enter yields Y as default
while input not in ["y", "n", "Y", "N", ""]:
print "Are you OK with that?"
input = raw_input("[Y/n]: ")
if input == "n" or input == "N":
print "Aborting installation..."
return
command = ["sudo", "apt-get", "install"] + map((lambda x: x[1]), installation_candidates)
subprocess.call(command)
[docs]def start_vcs_installation(missing_vcs_packages):
if (len(missing_vcs_packages) == 0): return
print "VIKI is going to install the following missing packages using version control: \n"
print "\n".join(map((lambda x: x['name']+" ("+x['src']+")"), missing_vcs_packages))
input = None
# Ask for confirmation, pressing enter yields Y as default
while input not in ["y", "n", "Y", "N", ""]:
print "Are you OK with that?"
input = raw_input("[Y/n]: ")
if input == "n" or input == "N":
print "Aborting installation..."
return
if not os.path.exists("../viki_dependencies"):
os.makedirs("../viki_dependencies")
for package in missing_vcs_packages:
command = []
if package['type'] == 'git':
command = ['git', 'clone', package['src'], '../viki_dependencies/'+package['name']]
if command != []:
subprocess.call(command)
return None
[docs]def get_modules(viki_config):
# TODO: Cache the module list in here, so that we don't scan all files again and again, and again...
# if module_list == None:
module_list = scan.getAvailableModules(viki_config)
return module_list
[docs]def get_distinct_packages(modules):
packages_per_module = filter((lambda x: len(x) > 0), map((lambda x: x.package_dependencies), modules))
packages_list = reduce((lambda x,y: x+y), packages_per_module)
return list(set(packages_list)) # filter out duplicates..


| Home | Trees | Indices | Help |
|
|---|
|
|
object --+ | S3Tracking
S3 Tracking system, to be instantiated once as global "s3_trackable" object
|
|||
|
|||
|
|||
|
|||
|
|||
|
Inherited from |
|
|||
|
Inherited from |
|
Constructor
|
Get a tracking interface for a record or set of records
|
Get all instances of the given entity at the given location and time |
Get all trackables of the given type that are checked-in to the given instance at the given time |
| Home | Trees | Indices | Help |
|
|---|
| Generated by Epydoc 3.0.1 on Tue Mar 29 14:25:41 2011 | http://epydoc.sourceforge.net |


Hi
Please see my original post in emoncms: clean install in 5 commands.
I discovered that there was no entry in cron to run the RFM12Pi script so added this from a post I found in the forum:
*/1 * * * * root cd /var/www/emoncms/Modules/raspberrypi && php raspberrypi_run.php
After a cold boot the green LED on the RFM12Pi is now off and flashes occasionally showing packets are being received. However I still have no inputs showing in EmonCMS. I have four nodes transmitting on 868Mhz which should result in inputs showing in EmonCMS. EmonCMS is set correctly for group, node and frequency. If I go to the Raspberry Pi tab in EmonCMS, I see the green banner showing that the script is running, but still no inputs.
I've just had a look in the Modules folder on my Pi and there is no raspberrypi folder although I followed the pkg-emoncms readme instructions to install the module. I can only assume I'm not understanding what is going on:-)
Terry
Just seen that the green banner in EmonCMS is now orange and showing that no packets have been received for 30 seconds.
Re: No inputs after following pkg-emoncms readme - solved
I think you should have a raspberrypi folder at
/usr/share/emoncms/www/Modules/raspberrypi
and rather than a cron entry it's started with this file
/etc/init.d/rfm12piphp
at start up or using
sudo service rfm12piphp restart log
during installation
Do you have those files ?
Paul
Re: No inputs after following pkg-emoncms readme - solved
I've just checked and yes I do :
pi@raspberrypi /usr/share/emoncms/www/Modules/raspberrypi $ ls -al
total 56
drwxr-xr-x 2 root root 4096 Mar 29 20:04 .
drwxr-xr-x 13 root root 4096 Mar 29 20:05 ..
-rw-r--r-- 1 root root 0 Mar 30 12:19 importlock
-rw-r--r-- 1 root root 2168 Mar 25 07:04 raspberrypi_apipage.php
-rw-r--r-- 1 root root 1634 Mar 25 07:04 raspberrypi_controller.php
-rw-r--r-- 1 root root 947 Mar 25 07:04 raspberrypi.js
-rw-r--r-- 1 root root 0 Mar 25 07:04 raspberrypi_lock
-rw-r--r-- 1 root root 126 Mar 25 07:04 raspberrypi_menu.php
-rw-r--r-- 1 root root 3658 Mar 25 07:04 raspberrypi_model.php
-rw-r--r-- 1 root root 10658 Mar 25 07:04 raspberrypi_run.php
-rw-r--r-- 1 root root 590 Mar 25 07:04 raspberrypi_schema.php
-rw-r--r-- 1 root root 4687 Mar 29 20:04 raspberrypi_view.php
-rw-r--r-- 1 root root 3812 Mar 25 07:04 readme.md
and
-rwxr-xr-x 1 root root 639 Oct 15 2012 reboot
-rwxr-xr-x 1 root root 1600 Jun 8 2012 redis-server
-rwxr-xr-x 1 root root 3408 Mar 25 07:04 rfm12piphp
-rwxr-xr-x 1 root root 1074 Jul 14 2013 rmnologin
Terry
Re: No inputs after following pkg-emoncms readme - solved
well that's a good start, i would try commenting out the cron line, reboot and see if raspberrypi_run.php is running
sudo ps -ef | grep raspberrypi_run.php
it should be running if it isn't try
sudo service rfm12piphp restart log
and check again.
I have noticed some anomalies with my install while looking at this and as I've been doing some experimenting, I'm not sure on what is correct. I will do a fresh install later this evening to check some odd file locations I've discovered.
Paul
Re: No inputs after following pkg-emoncms readme - solved
I took the cron entry out and did the reboot. Here's the result of:
sudo ps -ef | grep raspberrypi_run.php
root 2811 1 89 15:08 pts/0 00:11:17 /usr/bin/php -f /usr/share/emonc
ms/www/Modules/raspberrypi/raspberrypi_run.php
pi 2854 2778 0 15:20 pts/0 00:00:00 grep --color=auto raspberrypi_ru
n.php
Looks like it is running. Not sure why grep came back with two entries.
Terry
Re: No inputs after following pkg-emoncms readme - solved
One is just the command you ran to find the command, which isn't itself excluded from the search :-)
If you run the restart command with "log" on the end as above, it should leave a log file in /var/log. On my system I can tail that log and watch the packets arrive - that should tell you if the problem is before or after the rfm12pi software interface?
Re: No inputs after following pkg-emoncms readme - solved
This is what I'm getting:
pi@raspberrypi /var/log $ sudo tail rfm12piphp.log
00,18,07,00s
00,18,07,00s
00,18,07,00s
00,18,07,00s
00,18,07,00s
00,18,07,00s
00,18,07,00s
00,18,07,00s
00,18,08,00s
00,18,08,00s
Doesn't look right. From memory my transmitting nodes are on 10, 19, 20 and 21.
Terry
Re: No inputs after following pkg-emoncms readme - solved
No that doesn't look like its receiving, how frequent are these packets showing in the log? if every 5sec's maybe it's the time being transmitted for emonGLCD unless you have disabled it.
Did you edit /boot/cmdline.txt (requires reboot if edited) you should have
dwc_otg.lpm_enable=0 console=tty1 root=/dev/sda2 rootfstype=ext4 elevator=deadline rootwait
(sda2 may differ the rest should be the same) and edit /etc/inittab to allow raspberrypi module access to the serial port by commenting out the last line so it reads
# T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
I think it may be the latter that's causing the issue, it wasn't commented out on my system and as I'm not using rfm12pi I wouldn't of known. (restart rfm with sudo service rfm12piphp restart log if edited)
Paul
Re: No inputs after following pkg-emoncms readme - solved
Hi
Changed /boot/cmdline and /etc/inittab and that fixed it.
Thanks for taking the time to sort this out for me - you're a good man. Hopefully I'll be able to return the favor sometime.
Next step is to let the software run for sometime to test whether the lock ups I experienced before updating the RFM12Pi software have stopped . Then I'll start trying to get the multi zone stuff working that's being developed.
Thanks again for your help - much appreciated.
Terry
Re: No inputs after following pkg-emoncms readme - solved
No problem only too pleased to help.
Regards the "locking up" have you tried updating the rfm2pi firmware? I believe the new firmware was updated to target that complaint in particular.
Paul
Re: No inputs after following pkg-emoncms readme - solved
Yes I have updated the RFM12Pi firmware using these instructions from theRFM12Pi v2 hardware pages. I have an SD card based on Raspbian and nothing else solely to let me do the updates to the RFM12Pi.
$ sudo apt-get update
$ sudo apt-get install arduino
$ sudo apt-get install python-dev&&python-rpi.gpio
$ git clone https://github.com/mharizanov/avrdude-rpi.git
$ cd avrdude-rpi
$ sudo cp autoreset /usr/bin
$ sudo cp avrdude-autoreset /usr/bin
$ sudo mv /usr/bin/avrdude /usr/bin/avrdude-original
$ sudo ln -s /usr/bin/avrdude-autoreset /usr/bin/avrdude
$ cd /home/pi
$ git clone https://github.com/mharizanov/RFM2Pi.git
$ cd RFM2Pi/firmware/RF12_Demo_atmega328
$ sudo service rfm12piphp stop
$ avrdude -v -c arduino -p ATMEGA328P -P /dev/ttyAMA0 -b 38400 -U flash:w:RF12_Demo_atmega328.cpp.hex
$ sudo service rfm12piphp start
I'm assuming this will give me the latest version which should help with the lock ups.
Terry


Woman’s rescued ‘kitten’ turns out to be wild puma
by Jorge Fitz-GibbonThis is one wild tale.
An Argentine woman rescued a cuddly abandoned kitten — only to learn two months later that the new pet was actually a wild puma.
Florencia Lobo said she and her brother found the furry feline along with another young kitten next to a dead adult in the Tucuman Province in northwestern Argentina and took them both home.
“We thought that it was an abandoned cat who had given birth,” she told Reuters.
One of the kittens was too weak and didn’t survive, but the second, a male, made it through the ordeal. Lobo nursed him back to health and named him Tito.
Two months later she took Tito to the vet for a checkup and got an unexpected prognosis.
“The vet didn’t know what it was but said it was not a normal cat,” Lobo said.
At the vet’s recommendation, she took Tito to the Horco Molle nature reserve, where staffers confirmed that the cat was a jaguarundi, a small wild cat found in South American and southern North America.
Tito now calls the nature reserve home.
With Post wires


Observers: Included observers
Included observers are listed below:
- Observer_Self
- Observer_CreatedAt
- Observer_UpdatedAt
- Observer_Validation
- Observer_Typing
- Observer_Slug
Observer_Self
While not exactly good practice, in some cases it's probably cleanest to just have the event method with your model. That's where the Observer_Self comes in, it checks if you model has a method named after the event and prefixed with _event_ . For example for the after_save event you need to add a public method _event_after_save() to your model so it can have the observer call on the model itself.
// Just add the Observer
protected static $_observers = array('Orm\\Observer_Self');
// But if you only observe some events you can optimize by only adding those
protected static $_observers = array('Orm\\Observer_Self' => array(
'events' => array('after_save', 'before_insert')
));
Observer_CreatedAt
This observer acts only upon before_insert and expects your model to have a created_at property which will be set to the Unix timestamp when saving for the first time.
// Just add the Observer
protected static $_observers = array('Orm\\Observer_CreatedAt');
// Adding it with config:
// - only needs to run on before_insert
// - use mysql timestamp (uses UNIX timestamp by default)
// - use just "created" instead of "created_at"
protected static $_observers = array(
'Orm\\Observer_CreatedAt' => array(
'events' => array('before_insert'),
'mysql_timestamp' => true,
'property' => 'created',
),
);
Observer_UpdatedAt
This observer acts only upon before_save or before_update and expects your model to have a updated_at property which will be set to the Unix timestamp when saving (also during the first time).
// Don't use this, it will make it run twice!
protected static $_observers = array('Orm\\Observer_UpdatedAt');
// Adding it with config:
// - only needs to run on before_save
// - use mysql timestamp (uses UNIX timestamp by default)
// - use just "updated" instead of "updated_at"
protected static $_observers = array(
'Orm\\Observer_UpdatedAt' => array(
'events' => array('before_save'),
'mysql_timestamp' => true,
'property' => 'updated',
),
);
When you use before_save , the updatedAt column will be updated on both an insert and an update. When you use before_update , the updatedAt column will be updated only on updates.
Observer_Validation
This observer can act on before_insert and/or before_update , or on before_save . Do not use both before_save and one of the others, that would cause your rules to be called twice. It is used to prevent the model from saving if validation rules fail. It uses the Fieldset class and can also generate the form for you.
The primary key(s) are not added to Validation nor to the Form as they're not editable and will be auto-increment most of the time. In cases where you set it upon creation and need validation you'll need to add the field manually.
The observer can be loaded as follows:
// Just add the Observer, and define the required event
protected static $_observers = array('Orm\\Observer_Validation' => array(
'events' => array('before_save')
));
Do not define this observer without event types, as that will cause it to be called twice!
Validation rules should be defined in your model in $_properties . This is demonstrated in Creating Models. After you have added the Validation Observer, the Orm\ValidationFailed exception will be thrown when the model's data fails to validate before save. As such, you must try/catch your calls to the save function of a model.
More extensive example functionality/scaffolding is shown below:
class Controller_Articles extends Controller
{
public function action_create()
{
$view = View::forge('articles/create');
if (Input::param() != array())
{
try
{
$article = Model_Article::forge();
$article->name = Input::param('name');
$article->url = Input::param('url');
$article->save();
Response::redirect('articles');
}
catch (Orm\ValidationFailed $e)
{
$view->set('errors', $e->getMessage(), false);
}
}
return Response::forge($view);
}
public function action_edit($id = false)
{
if ( ! ($article = Model_Article::find($id))
{
throw new HttpNotFoundException();
}
$view = View::forge('articles/edit');
if (Input::param() != array())
{
try
{
$article->name = Input::param('name');
$article->url = Input::param('url');
$article->save();
Response::redirect('articles');
}
catch (Orm\ValidationFailed $e)
{
$view->set('errors', $e->getMessage(), false);
}
}
return Response::forge($view);
}
public function action_delete($id = null)
{
if ( ! ($article = Model_Article::find($id))
{
throw new HttpNotFoundException();
}
else
{
$article->delete();
}
Response::redirect('articles');
}
}
By default, the HTML representation is passed as message to the ValidationFailed exception object, ready for display in your view. There are however cases where you would like to have access to the individual error messages, for example because you're in a RESTful API call, and you want to return the messages as JSON:
class Controller_Articles extends Controller_Rest
{
public function action_create()
{
$view = View::forge('articles/create');
if (Input::param() != array())
{
try
{
$article = Model_Article::forge();
$article->name = Input::param('name');
$article->url = Input::param('url');
$article->save();
Response::redirect('articles');
}
catch (Orm\ValidationFailed $e)
{
$errors = array();
foreach ($e->get_fieldset()->validation()->error() as $error)
{
$errors = array(
'field' => $error->field, // the field that caused the error
'value' => $error->value, // the value that is in error
'message' => trim($error->get_message(false, '\t', '\t')), // the error message
'rule' => $error->rule, // the rule that failed
'params' => $error->params, // any parameters passed to the rule
);
}
return $errors;
}
}
return Response::forge($view);
}
}
As this uses the Fieldset
class to perform validation, it can also create forms for a model.
In the following example, the create and edit forms are defined in
a common view however you can just as easily define it in the model
and obtain an instance of it in the view using
Fieldset::instance()
.
// use an instance of Model_Article to create the form, you can also pass the classname
$fieldset = Fieldset::forge()->add_model($article);
// Populate the form with values from the model instance
// passing true will also make it use POST/PUT to repopulate after failed save
$fieldset->populate($article, true);
// The fieldset will be build as HTML when cast to string
echo $fieldset;
Observer_Typing
This is for 2 things: type enforcement for input and type casting for output from the DB. That means that when you're saving the Typing observer will try to cast the input value to the expected type and throw an exception when it can't. And when you're retrieving DB data, normally it would all be strings (even integers and floats) but with the typing observer those will be cast to their scalar type.
In addition to the above the Typing observer also adds support for serialized & json fields. Both should be string type fields ("text" preferably) but will have their value encoded for saving (using serialize() or json_encode() ) and decoded when retrieving from the DB (using unserialize() or json_decode() ).
The Observer_Typing isn't meant as an alternative to validation, don't try to use it as such. Neither are the exceptions thrown by this observer meant to be read by the visitor of your site, they're meant to help you debug your code.
// Just add the Observer
protected static $_observers = array('Orm\\Observer_Typing');
// But adding it just for these specific events is enough
protected static $_observers = array('Orm\\Observer_Typing' => array(
'events' => array('before_save', 'after_save', 'after_load')
));
For this observer to work you must have your the $_properties static variable set in your model, or not set at all using detection with DB::list_columns() (MySQL only!). When configuring it yourself the following settings are available:
| Param | Valid input | Description |
|---|---|---|
| data_type | varchar, int, integer, tinyint, smallint, mediumint, bigint, float, double, decimal[:d], text, tinytext, mediumtext, longtext, enum, set, bool, boolean, serialize, json, time_unix, time_mysql | The SQL data type, Required to have the typing observer used on a field. |
| null | bool | Whether null is allowed as a value, default true |
| character_maximum_length | int | The maximum number of characters allowed for a string data type (varchar, text) |
| min | int | The minimal value for an integer |
| max | int | The maximum value for an integer |
| options | array | Array of valid string values for set or enum data type Note: currently the options themselves cannot contain comma's. |
In case of data_type "decimal", you can suffix the type with the number of decimals required. If defined, the value returned is a string, formatted with the defined number of decimal digits, and taking the current defined locale into account.
Observer_Slug
This observer creates a unique url safe slug for your model. It works only upon before_insert and expects your model to have a title (to create the slug) and a slug (to save it) property.
// Just add the Observer
protected static $_observers = array('Orm\\Observer_Slug');
// With settings
protected static $_observers = array(
'Orm\\Observer_Slug' => array(
'events' => array('before_insert'),
'source' => 'title', // property used to base the slug on, may also be array of properties
'property' => 'slug', // property to set the slug on when empty
),
);
protected static $_observers = array('Orm\\Observer_Slug' => array('before_insert'));
The Observer creates the slug from the title using Inflector::friendly_title() and adds an index, if the slug already exists.


a) Match Play. DMP. How should Red play 51?
pips Red=71 White=130
(CorrectAnswer= 0/0, ErrorScore= 0)
b) Money Play. How should Red play 51?
This is a contender for my position of the year. I had this position at DMP and played the ‘obvious' 8/7*, 8/3. After 13 by my opponent I rolled 65 (7/2, 6/off), my opponent hit and won the match.
What bad luck I though but then I put it through XG. At DMP 8/7*, 8/3 is a 0.120 blunder!! The empty 2-pt will give Red long-term problems plus after my play most sixes next time leave a shot.
8/7*, 8/3 leaves six shots anyway so is there a better move? Indeed there is: 8/2!! At the cost of five immediate shots Red solves most of his later problems and of course the play duplicates ones. 8/2 wins 6% more games than 8/7*, 8/3.
So for money 8/7*, 8/3 must be right for the gammons? Not at all! Now 8/7*/2 is correct for many of the same reasons as above. Now try convincing your chouette partners! In a doubles tournament could you convince your partner of the correctness of 8/2?
Plays to avoid extended jeopardy are realtively rare so this is a little gem.
This is a contender for my position of the year. I had this position at DMP and played the ‘obvious' 8/7*, 8/3. After 13 by my opponent I rolled 65 (7/2, 6/off), my opponent hit and won the match.
What bad luck I though but then I put it through XG. At DMP 8/7*, 8/3 is a 0.120 blunder!! The empty 2-pt will give Red long-term problems plus after my play most sixes next time leave a shot.
8/7*, 8/3 leaves six shots anyway so is there a better move? Indeed there is: 8/2!! At the cost of five immediate shots Red solves most of his later problems and of course the play duplicates ones. 8/2 wins 6% more games than 8/7*, 8/3.
So for money 8/7*, 8/3 must be right for the gammons? Not at all! Now 8/7*/2 is correct for many of the same reasons as above. Now try convincing your chouette partners! In a doubles tournament could you convince your partner of the correctness of 8/2?
Plays to avoid extended jeopardy are realtively rare so this is a little gem.
Cube analysis 2-ply cubeless equity +0.477 (Money: +0.459) 0.669 0.197 0.005 - 0.331 0.079 0.003 Cubeful equities: 1. Double, take +0.766 2. Double, pass +1.000 (+0.234) 3. No double +0.720 (-0.045) Proper cube action: Double, take


Deletes a subkey or entries from the registry.
For examples of how to use this command, see Examples.
Syntax
Reg delete <KeyName> [{/v ValueName | /ve | /va}] [/f]
Parameters
Parameter Description
<KeyName> Specifies the full path of the subkey or entry to be deleted. To specify a remote computer, include the computer name (in the format \\ComputerName\) as part of the KeyName. Omitting \\ComputerName\ causes the operation to default to the local computer. The KeyName must include a valid root key. Valid root keys for the local computer are: HKLM, HKCU, HKCR, HKU, and HKCC. If a remote computer is specified, valid root keys are: HKLM and HKU.
/v <ValueName> Deletes a specific entry under the subkey. If no entry is specified, then all entries and subkeys under the subkey will be deleted.
/ve Specifies that only entries that have no value will be deleted.
/va Deletes all entries under the specified subkey. Subkeys under the specified subkey are not deleted.
/f Deletes the existing registry subkey or entry without asking for confirmation.
/? Displays help for reg delete at the command prompt.


{{'Select Drivers' | translate}}
{{'No Active Driver Found' | translate}}
{{'Distance' | translate}} : {{item.distance}}Km


Hacktoberfest is an annual event across the world to encourage developers to contribute to open source projects.
Join us, give back to open source, meet fellow open source enthusiasts and enjoy a nice evening.
Whether it's your first step in open source or a maintainer of a major project join us and let's hack for Hacktoberfest together.
| Welcome talk | 18:30 |
| Start hacking! | 18:45 |
| Let's chat (or keep hacking!) over pizza and drinks | 20:30 |
| Wrapup | 21:30 |
During the evening Skyscanner engineers will help you get started and will be contributing along.
You only need to bring a laptop with you - drinks and food are on us!
Open source project maintainer? Prepare a lightning talk (~5min) to promote your project!
If you maintain any open source project feel free to join our event as a Maintainer.


Preparation time
less than 30 mins
Cooking time
10 to 30 mins
Serves
Serves 4-6
Mornay sauce and a crunchy gratin topping combine to create a comforting fish dish. Serve with a green salad.
Place 4–6 small, shallow flameproof dishes on a baking tray.
For the gratin topping, mix the breadcrumbs, gruyere and parsley and set aside while you make the filling.
For the filling, pour the milk into a large, deep frying pan and add the onion, bay leaf and lemon peel. Place the fish skin-side down in the pan and bring to a gentle simmer over a medium heat. Baste the fish occasionally with the milk, and cook for 5–6 minutes. When cooked, the fish will be opaque and be starting to flake into pieces. Leave to stand for 5 minutes.
Drain the fish in a colander over a large jug, reserve the milk.
Melt the butter in a large non-stick saucepan and stir in the flour with a wooden spoon until thoroughly combined. Remove from the heat and slowly add the reserved warm milk, stirring constantly. Return to the heat, bring the sauce to a simmer and continue to stir until it is smooth and thick. Stir in the wine or vermout, Gruyère, mustard and cream. Cook over a low heat for a further 2–3 minutes, while stirring. Season with salt and freshly ground black pepper to taste.
Flake the fish into chunky pieces and discard the skin, onion, bay leaf and lemon peel. Add the fish to the pan with the sauce and heat very gently for a 2 minutes to warm it through.
While the fish is warming, preheat the grill to hot and place the baking tray with the shallow dishes under the heat to warm for a few seconds. Carefully remove them from the heat and divide the hot fish mixture between the warm dishes. Sprinkle with the gratin topping and return to the grill for 3–5 minutes or until nicely browned and filling bubbling undeneath.


Problem: Cow Pedigrees
Silviu Ganceanu -- 2003
Farmer John is considering purchasing a new herd of cows. In
this new herd, each mother cow gives birth to two children. The
relationships among the cows can easily be represented by one or
more binary trees with a total of N (3 <= N < 200) nodes. The trees
have these properties:
- The degree of each node is 0 or 2. The degree is the count of
the node's immediate children.
- The height of the tree is equal to K (1 < K < 100). The height
is the number of nodes on the longest path from the root to any
leaf; a leaf is a node with no children.
How many different possible pedigree structures are there? A
pedigree is different if its tree structure differs from that of
another pedigree. Output the remainder when the total number of
different possible pedigrees is divided by 9901.
PROGRAM NAME: nocows
INPUT FORMAT
- Line 1: Two space-separated integers, N and K.
SAMPLE INPUT (file nocows.in)
5 3
OUTPUT FORMAT
- Line 1: One single integer number representing the number of possible
pedigrees MODULO 9901.
SAMPLE OUTPUT (file nocows.out)
2
OUTPUT DETAILS
Two possible pedigrees have 5 nodes and height equal to 3:
@ @
/ \ / \
@ @ and @ @
/ \ / \
@ @ @ @
The analysis
Training Gateway


--- layout: post title: '5 reasons #ukhousing should adopt Google+' date: 2014-01-15 20:16:05.000000000 +00:00 type: post excerpt_separator: parent_id: '0' published: true password: '' status: publish categories: - Social media tags: - "#ukhousing" - G+ - Google+ author: Rob Jefferson profile: https://www.robjefferson.uk ---
This post was imported from my old Wordpress blog so it's old and might not be formatted correctly.
I'm starting to like G+ more and more. Brett makes a good case for it here.


1 Bonus / no penalty
Thus, if you achieve a high outcome, you will be compensated a total of 3,000 Lira (1,000 Lira base salary plus 2,000 Lira bonus). If you achieve a medium outcome you will be compensated a total of 2,000 Lira (1,000 Lira base salary plus 1,000 Lira bonus). If you achieve a low outcome, you will be compensated a total of 1,000 Lira (base salary only).
2 No bonus / penalty
Thus, if you achieve a high outcome, you will be compensated a total of 3,000 Lira (base salary only). If you achieve a medium outcome you will be compensated a total of 2,000 Lira (3,000 Lira base salary less 1,000 Lira penalty). If you achieve a low outcome, you will be compensated a total of 1,000 Lira (3,000 Lira base salary less 2,000 Lira penalty).
3 Bonus / penalty
Thus, if you achieve a high outcome, you will be compensated a total of 3,000 Lira (2,000 Lira base salary plus 1,000 Lira bonus). If you achieve a medium outcome, you will be compensated a total of 2,000 Lira (base salary only). If you achieve a low outcome, you will be compensated a total of 1,000 Lira (2,000 Lira base salary less 1,000 Lira penalty).
You will be informed whether you achieved a high, medium, or low outcome at the end of each round.


Gecode::Int::IntVarImp::RangeList Class Reference
Lists of ranges (intervals).
More...
#include <var-imp.hpp>
List of all members.
Protected Attributes |
| int | _min |
| | Minimum of range.
|
| int | _max |
| | Maximum of range.
|
Constructors |
|
| | RangeList (void) |
| | Default constructor (noop).
|
| | RangeList (int min, int max) |
| | Initialize with minimum min and maximum max.
|
| | RangeList (int min, int max, RangeList *p, RangeList *n) |
| | Initialize with minimum min and maximum max and predecessor p and successor n.
|
Access |
|
| int | min (void) const |
| | Return minimum.
|
| int | max (void) const |
| | Return maximum.
|
| unsigned int | width (void) const |
| | Return width (distance between maximum and minimum).
|
| RangeList * | next (const RangeList *p) const |
| | Return next element (from previous p).
|
| RangeList * | prev (const RangeList *n) const |
| | Return previous element (from next n).
|
Update |
|
| void | min (int n) |
| | Set minimum to n.
|
| void | max (int n) |
| | Set maximum to n.
|
| void | prevnext (RangeList *p, RangeList *n) |
| | Set previous element to p and next element to n.
|
| void | next (RangeList *o, RangeList *n) |
| | Set next element from o to n.
|
| void | prev (RangeList *o, RangeList *n) |
| | Set previous element from o to n.
|
| void | fix (RangeList *n) |
| | Restore simple link to next element (so that it becomes a true free list).
|
Memory management |
|
| void | dispose (Space &home, RangeList *p, RangeList *l) |
| | Free memory for all elements between this and l (inclusive).
|
| void | dispose (Space &home, RangeList *l) |
| | Free memory for all elements between this and l (inclusive).
|
| void | dispose (Space &home) |
| | Free memory for this element.
|
| static void * | operator new (size_t s, Space &home) |
| | Allocate memory from space.
|
| static void * | operator new (size_t s, void *p) |
| | Placement new.
|
| static void | operator delete (void *) |
| | No-op (for exceptions).
|
| static void | operator delete (void *, Space &) |
| | No-op (use dispose instead).
|
| static void | operator delete (void *, void *) |
| | No-op (use dispose instead).
|
Detailed Description
Lists of ranges (intervals).
Range lists are doubly-linked storing the pointer to both the next and the previous element in a single pointer. That means that the next element is only available when the previous element is supplied as additional information. The same holds true for access to the previous element.
Definition at line 102 of file var-imp.hpp.
Constructor & Destructor Documentation
| Gecode::Int::IntVarImp::RangeList::RangeList |
( |
void |
|
) |
[inline] |
Default constructor (noop).
Definition at line 49 of file int.hpp.
| Gecode::Int::IntVarImp::RangeList::RangeList |
( |
int |
min, |
|
|
int |
max | |
|
) |
| | [inline] |
Initialize with minimum min and maximum max.
Definition at line 52 of file int.hpp.
| Gecode::Int::IntVarImp::RangeList::RangeList |
( |
int |
min, |
|
|
int |
max, |
|
|
RangeList * |
p, |
|
|
RangeList * |
n | |
|
) |
| | [inline] |
Initialize with minimum min and maximum max and predecessor p and successor n.
Definition at line 56 of file int.hpp.
Member Function Documentation
| int Gecode::Int::IntVarImp::RangeList::min |
( |
void |
|
) |
const [inline] |
Return minimum.
Definition at line 98 of file int.hpp.
| int Gecode::Int::IntVarImp::RangeList::max |
( |
void |
|
) |
const [inline] |
Return maximum.
Definition at line 102 of file int.hpp.
| unsigned int Gecode::Int::IntVarImp::RangeList::width |
( |
void |
|
) |
const [inline] |
Return width (distance between maximum and minimum).
Definition at line 106 of file int.hpp.
Return next element (from previous p).
Definition at line 62 of file int.hpp.
Return previous element (from next n).
Definition at line 66 of file int.hpp.
| void Gecode::Int::IntVarImp::RangeList::min |
( |
int |
n |
) |
[inline] |
| void Gecode::Int::IntVarImp::RangeList::max |
( |
int |
n |
) |
[inline] |
| void Gecode::Int::IntVarImp::RangeList::prevnext |
( |
RangeList * |
p, |
|
|
RangeList * |
n | |
|
) |
| | [inline] |
Set previous element to p and next element to n.
Definition at line 70 of file int.hpp.
Set next element from o to n.
Definition at line 74 of file int.hpp.
Set previous element from o to n.
Definition at line 79 of file int.hpp.
| void Gecode::Int::IntVarImp::RangeList::fix |
( |
RangeList * |
n |
) |
[inline] |
Restore simple link to next element (so that it becomes a true free list).
Definition at line 84 of file int.hpp.
Free memory for all elements between this and l (inclusive).
p must be the pointer to the previous element of this
.
Definition at line 134 of file int.hpp.
| void Gecode::Int::IntVarImp::RangeList::dispose |
( |
Space & |
home, |
|
|
RangeList * |
l | |
|
) |
| | [inline] |
Free memory for all elements between this and l (inclusive).
This routine assumes that the list has already been fixed.
Definition at line 145 of file int.hpp.
| void Gecode::Int::IntVarImp::RangeList::dispose |
( |
Space & |
home |
) |
[inline] |
Free memory for this element.
Definition at line 150 of file int.hpp.
| void * Gecode::Int::IntVarImp::RangeList::operator new |
( |
size_t |
s, |
|
|
Space & |
home | |
|
) |
| | [inline, static] |
Allocate memory from space.
Definition at line 124 of file int.hpp.
| void * Gecode::Int::IntVarImp::RangeList::operator new |
( |
size_t |
s, |
|
|
void * |
p | |
|
) |
| | [inline, static] |
Placement new.
Definition at line 129 of file int.hpp.
| void Gecode::Int::IntVarImp::RangeList::operator delete |
( |
void * |
|
) |
[inline, static] |
No-op (for exceptions).
Definition at line 112 of file int.hpp.
| void Gecode::Int::IntVarImp::RangeList::operator delete |
( |
void * |
, |
|
|
Space & |
| |
|
) |
| | [inline, static] |
No-op (use dispose instead).
Definition at line 115 of file int.hpp.
| void Gecode::Int::IntVarImp::RangeList::operator delete |
( |
void * |
, |
|
|
void * |
| |
|
) |
| | [inline, static] |
No-op (use dispose instead).
Definition at line 119 of file int.hpp.
Member Data Documentation
The documentation for this class was generated from the following files:


Before Change
outfile = os.path.join(workingDir,output+".out")
outputobj=MELCORdata.MELCORdata(outfile)
outputobj.writeCsv(os.path.join(workingDir,output+".csv"))
def checkForOutputFailure(self,output,workingDir):
After Change
outfile = os.path.join(workingDir,output+".out")
outputobj=MELCORdata.MELCORdata(outfile)
response = outputobj.returnData()
return response
def checkForOutputFailure(self,output,workingDir):
This method is called by the RAVEN code at the end of each run if the return code is == 0.


 How friends and family can help protect your children from fears.
- videoid: A-D5Zz4NG8c
description_markdown: >-
Fight or Flight
Anxiety can feel really scary at times, here we discuss the evolutionary origins of anxiety.
- videoid: vrsD35VFB5k
description_markdown: >-
Emotion Coaching 1
Emotion coaching is a useful technique to help children manage and make sense of their emotions.
- videoid: a-6X8gub1zg
description_markdown: >-
Anxiety and Coping
These videos are a helpful illustration of the things we can accidentally teach our children through our behaviour.
- videoid: N6PN6C553SM
description_markdown: |-
Key Messages from Session 1
Quick take home messages from session one.
videos2_title: "Session 2"
videos2:
- videoid: XKpJzqG9BIg
description_markdown: >-
Rewards
How should I use rewards with my child? What are the best rewards to give? Should I ever take away a reward? This video answers all these questions and more.
- videoid: DBkDLRS0nz8
description_markdown: >-
Star Charts
Here we discuss our ‘Crimes Against Star Charts’ and show how you can get more of the behaviour you want in your child.
- videoid: -sT0reZEVFU
description_markdown: >-
Hotspots
Every parent has parenting hotspots; how can you rub the corners off yours?
- videoid: 3FmuDh1MASg
description_markdown: >-
Overprotection
How to tell if you’re being overprotective and how to rub the corners off of your overprotection.
- videoid: sDuSCHrNPP0
description_markdown: >-
Key Messages from Session 2
Quick take home messages from session two.
_options:
layout:
hidden: true
aside:
hidden: true
private:
hidden: true
permalink:
hidden: true
main_image_path:
width: 1200
height: 1200
resize_style: contain
mime_type: image/jpeg
_comments:
title: Page title
permalink: Be careful editing this
main_image_path: Image used to represent your page
archive: Not used yet!
frontpage: Show this page on the homepage
homepage_description_markdown: Text used on homepage if shown
frontpagetitle: Alternative title for home page use
images: Add and edit images here
---


Running MongoDB effectively requires knowledge and experience. This workshop will arm you with some of both. We will be learning and applying key MongoDB concepts and scenarios
such as:
REGISTER
The workshop will be include presentations, discussions, and extensive hands-on labs. Attendees should be comfortable with general database and/or development concepts. Attendees can expect to walk away with a solid understanding of MongoDB clusters, how to design and create them, performance and tuning.
Nuri Halperin


Enter Name: User Name is Required at least 2 characters
Enter Email: User Email is requiredEmail is already used


The Origins of Slideshows
-
In 1980 developers started to work on early prototypes of presentation software.
-
Intended for artists to design slides for projectors, which had to be printed.
-
Forethought, Inc. changed that in 1987 with the release of
PowerPoint for McIntosh.
Modern Challenges
- Top Platforms: Windows 10, Android 10, iOS14
- Top Screen Resolutions: 1366x768, 640x360, 1920x1080
Web Fundamentals
- HTML, CSS, and JavaScript.
Front-End Web Technologies
- Sassy CSS.
- TypeScript.
- Node.js + npm
- Gulp
Slidy & Slidy2
- Developed by Dave Raggett in 2005.
- One of the first HTML based presentation frameworks.
- Slides are defined in blocks

...

.
- Includes: show.css, slidy.js, print.css (optional)
- Example
The Four Main Classes of Modern Slide Decks
- Text-Based slide decks.
- JavaScript-Based slide decks.
- Hosted slide decks.
- Responsive slide decks.
1. Text-Based Slide Decks
- Do not require the slide creator to possess any knowledge about
scripting or styling their slides.
- Either use pure plaintext or
Markdown.
- The main advantage of this approach is the fast and easy way to write and
read slides.
- The trade-off is less flexibility and modifiability.
Slidifier
- Developed by Holger Ludvigsen.
- Defines its own plaintext syntax for certain features.
- Example
2. JavaScript-Based Slide Decks
- Heavy focus on scripting.
- Wide range of functionality.
- They often make use of third party packages (jQuery).
- Many of them can be installed using Node.js and npm.
Inspire.js
- Developed by Lea Verou.
- Lean and puts a focus on reusability.
- Many unique features:
-
Video annotations, live code examples, reuse a slide by its ID.
- Example
3. Hosted Slide Decks
- Are neatly packed into a web application.
- Also serve the tools for creating slides.
- Everything is in the cloud (pros and cons).
Beautiful.ai
- Offers AI assistance during the slide creation process.
- Smart slide templates are provided: for charts and diagrams.
- Offers a free image and icon library.
- Paid plans include analytic tools.
4. Responsive Slide Decks
- Ethan Marcotte describes the main three pillars of
Responsive Web
Design
as flexible grids, fluid images, and media queries.
- Makes it possible to respond to changes in the browser environment and
adjust how a web site or application gets displayed accordingly.
- Can run on a multitude of display sizes and sniff for features rather than requiring them.
Scrolldeck.js
- Developed by John Polacek.
- Stacks slides vertically rather than going through them horizontally.
- Support for animations, incremental lists, and an optional sticky
navigation header.
- Example
Rslidy
-
Drop-in replacement for W3C Slidy and Slidy2.
-
Slides are defined in blocks

...

or
...

.
-
Responsive HTML5, CSS3, JavaScript (TypeScript). No other dependencies.
-
Lightweight.
Rslidy File Sizes
| File |
Size |
Minified Size |
Minified and Gzipped Size |
| rslidy.js |
133,306 bytes |
70,223 bytes |
15,069 bytes |
| rslidy.css |
26,086 bytes |
17,270 bytes |
4,362 bytes |
Overview of Rslidy's Features
-
Slide Viewer:
- Animated slide transitions.
- Overview panel.
- Table of contents panel.
- Navigable progress bar.
- All slides view.
- Help page.
-
Responsive Layout and Interactions:
- Portrait + landscape.
- Swipe, pinch, tap.
- Tilt, shake.
- Keyboard.
- Mouse pointer, mouse wheel.
Image Viewer
Settings
- Toggle features.
- Adjust font sizes.
- Low light mode.
- Print style sheet.
- Both stored in localstorage (if available).
Accessibility
- ARIA (Accessible Rich Internet Applications) roles and properties, updated at runtime.
- Accessible HTML5 elements, such as

and
.
- Fully navigable with keyboard shortcuts.
- Font sizes are freely adjustable.
- Screen reader friendly. (Tested with JAWS and NVDA. Special thanks go to Christopher Kopel.)
Gesture Support
- Swipe.
- Margin tap (similar to that of e-readers).
- Tilt/Tip.
- Shake.
Math Equations using MathJax
When \(a \ne 0\), there are two solutions to \(ax^2 + bx + c = 0\) and they
are \[x = {-b \pm \sqrt{b^2-4ac} \over 2a}.\]
Rendered from this HTML snippet:

When \(a \ne 0\), there are two solutions to \(ax^2 + bx + c = 0\) and they are
\[x = {-b \pm \sqrt{b^2-4ac} \over 2a}.\]

Source Code Highlighting using Prism.js

Source Code Highlighting!

Or through third-party tools.

Inline code highlighting
background-color: rgba(0, 0, 0, 0.9);
is also possible.
Including Live Code for Interactive Content
Testing
- Feature testing via several small example slide decks.
- Device testing with OnePlus 5T, Samsung Galaxy S3, Apple iPad Mini 2.
- User testing:
Future Work
- Remote control support.
- Screen wake lock.
- Speaker view, with timer and notes.
- Container queries.
- Web Speech API.
- Accessibility Object Model.
- Generic Sensor API.
- Progressive Web App.
Thanks for your attention!
Questions?


This code was updated from the Java source to work with Processing.js asynchronous image loading. Not sure image masks were ever implemented in Processing.js.-F1LT3R
Loads a "mask" for an image to specify the transparency in different parts of the image. The two images are blended together using the mask() method of PImage. Created 29 April 2003.
Original Processing.org Example: Alphamask
// All Examples Written by Casey Reas and Ben Fry // unless otherwise stated. /* @pjs preload="data/test.jpg,data/mask.jpg"; */ PImage img; PImage maskImg; void setup() { size(200,200); img = loadImage("test.jpg"); maskImg = loadImage("mask.jpg"); img.mask(maskImg); } void draw() { background((mouseX+mouseY)/1.5); image(img, 50, 50); image(img, mouseX-50, mouseY-50); }


Doctor Strange
Marvel's "Doctor Strange" follows the story of the talented neurosurgeon Doctor Stephen Strange who, after a tragic car accident, must put ego aside and learn the secrets of a hidden world of mysticism and alternate dimensions. Based in New York City's Greenwich Village, Doctor Strange must act as an intermediary between the real world and what lies beyond, utilising a vast array of metaphysical abilities and artifacts to protect the Marvel Cinematic Universe.....
watch now


ParsingData Class
Definition
Line
40
of
System.Text.Parsing/ParsingData.cm
Constructors & Destructor
public
ParsingData
(
int
numRules)
public
default
~ParsingData
()
Member Functions
public
Context
*
GetContext
(
int
ruleId)
const
public
void
PopContext
(
int
ruleId)
public
void
PushContext
(
int
ruleId,
Context
* context)
Member Variables
private
List
<
RuleData
>
ruleData
Constructor& Destructor Details
ParsingData Constructor
public
ParsingData(
int
numRules)
Definition
Line
42
of
System.Text.Parsing/ParsingData.cm
~ParsingData Destructor
public
default
~ParsingData()
Definition
Line
46
of
System.Text.Parsing/ParsingData.cm
Member Function Details
GetContext Member Function
public
Context
* GetContext(
int
ruleId)
Definition
Line
59
of
System.Text.Parsing/ParsingData.cm
PopContext Member Function
public
void
PopContext(
int
ruleId)
Definition
Line
54
of
System.Text.Parsing/ParsingData.cm
PushContext Member Function
public
void
PushContext(
int
ruleId,
Context
* context)
Definition
Line
47
of
System.Text.Parsing/ParsingData.cm


张宇宁 @ SJTUG
error[E0597]: `x` does not live long enough --> src/main.rs:3:6 | 3 | &x | ^ borrowed value does not live long enough 4 | } | - borrowed value only lives until here | note: borrowed value must be valid for the lifetime 'a as defined...
error[E0505]: cannot move out of `foo` because it is borrowed --> src/main.rs:11:24 | 9 | inner: &foo, | --- borrow of `foo` occurs here 10 | }; 11 | drop(foo) | ^^^ move out of `foo` occurs here
error[E0502]: cannot borrow `v` as mutable because it is also borrowed as immutable --> src/main.rs:4:19 | 3 | let iter = v.iter(); | - immutable borrow occurs here 4 | v.push(5); | ^ mutable borrow occurs here 5 | } | - immutable borrow ends here


Welcome to Campus Library
Books
New
Update
Delete
Search
User
New
Update
Delete
Search
Check-in/Check-out
Book Reservation
Manage
About Us
Logout
Delete User
UserId
Delete


Attn: Dear Sir, REQUEST FOR YOUR ASSISTANCE IN A FINANCIAL TRANSACTION. I am interested in your partnership in business dealing.This business proposal I wish to intimate you with is of mutual benefit and it's success is entirely based on mutual trust,co-operation and a high level of confidentiality as regards this business transaction. I am representing the board of the contract award and monitoring committee of the South African Ministry of Mining and Resources.I am seeking your assistance to enable me transfer the sum of US$20,000,000.00 (Twenty Million United States Dollars) into your private or company account. The funds came about as a result of a contract awarded and executed for and on behalf of my Ministry.The contract was supposed to be awarded to two foreign contractors to the tune of US$60,000,000.00 (Sixty Million United States Dollars).But in the course of negotiation between my board and the contractor to our benefit,the contract was awarded to a Bulgarian contractor at the cost of US$40,000,000.00(Forty Million United States Dollars).This contract has been satisfactorily executed and inspected as the Bulgarian firm is presently securing payment from my Ministry,where our Board is in-charge of all foreign contract payment approval/disbursement. As a civil servant still in active government service,I am forbidden by law to operate an account outside the shores of South Africa.Hence this message to you seeking your assistance so as to enable me present you or your company as the second contractor of contractual claims alongside that of the Bulgarian contractor,to enable me transfer the difference of US$20,000,000.00 (Twenty Million United States Dollars)into your provided account. On actualization,the funds will be shared as stated below. 25% for you and 75% for us. What We request from you:- 1)Your full names,company name if any(otherwise we will use your name to register a company). 2)Your address,tel,fax and cell phone numbers. All logistics are in place and all modalities worked out for a smooth actualization of the transaction within the shortest possible time frame.For further details as to the workability of this transaction,please reach me as soon as possible for further clarification. Thank you for your anticipated co-operation while I await your urgent response. Yours Sincerely, Mr James Radebe. ---- Msg sent via TruthMail - http://WebBasedEmail.com/


--- creation_epoch:<PHONE_NUMBER> lastmod_epoch:<PHONE_NUMBER> categories: ['Tech Tricks'] title: Install Windows XP from a usb stick --- I found a very useful guide for installing Windows XP from a usb stick. It's useful when you don't have a CD/DVD-ROM drive or you are testing a custom make iso installer and don't want to burn lots of discs.
http://www.vandomburg.net/installing-windows-xp-from-usb/
An alternative method can also be found at http://www.liliputing.com/2008/04/install-windows-xp-on-mini-note-usb.html
If you get the "NTDETECT failed" error it may mean that your USB stick has no partitions on it. This happened when I zeroed out a usb stick in Linux and then let Windows XP format the drive. Windows does not create partitions on removable usb stick drives and thus wrote the filesystem to the raw device with no partition table. It would boot, but BartPE could not load. This is also a common cause of a BIOS being unable to boot the stick. Many are hard coded to look for a primary partition (or some even a special 4th partition).
Here is how you can fix the usb stick drive:


@* * Copyright 2023 HM Revenue & Customs * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *@ @import config.ViewConfig @import model.des._ @import model._ @this( viewsHelpers: views.ViewsHelpers, viewConfig: ViewConfig ) @( showBankDetails: Boolean, bankDetailsOption: Option[BankDetails], address: Option[String], addressExists: Boolean, vrn: Vrn, inflightBankDetails : Boolean)( implicit request: Request[_], message: Messages ) @if(showBankDetails) { @bankDetailsOption.map{bankDetails =>
@Messages("repayment_details.currently_paid_bank_transfer")
@Messages("repayment_details.name_on_account") @{bankDetails.formatAccountHolderName}
@Messages("repayment_details.sort_code") @{bankDetails.formatSortCode}
@Messages("repayment_details.account_number") @{bankDetails.obscureBankAccountNumber}
@Messages("repayment_details.manage_repayment")
} } @if((addressExists && (!(showBankDetails))) && (!(inflightBankDetails))) {@Messages("repayment_details.send_cheque")
@Html(address.getOrElse(""))
@Messages("repayment_details.faster_payment") @Messages("repayment_details.repayment_bank_account")
}


[gecode-users] Compilation problem with GecodeJ 1.0.0 (debian linux)
Zampelli Stephane
Stephane.Zampelli at info.ucl.ac.be
Thu Oct 5 11:03:05 CEST 2006
Finally I managed to compile and run an example (thanks to Gregoire's help).
I had to use the following options for configure :
./configure
Gecode_CFLAGS="-I/home/szampelli/UCL/Recherche/Code/release-1.3.0/
-I/home/szampelli/UCL/Recherche/Code/release-1.3.0/gecode/"
Gecode_LIBS="-L/home/szampelli/UCL/Recherche/Code/release-1.3.0/
-lgecodesearch -lgecodeint -lgecodeset -lgecodekernel -lgecodeminimodel"
I has also to comment this depend in build.xml in order to get ant
running :
35 <!-- <depend srcdir="."
36 destdir="build"
37 cache="depcache"
38 closure="yes"
39 />-->
I set up CLASSPATH to point to GecodeJava.jar and build/ directory.
I set up LD_LIBRARY_PATH to point to gecode libraries.
I used the following line inside release-1.0.0 directory :
'/usr/local/jdk1.5.0_09/bin/java -Djava.library.path=. examples.Queens'.
The problem was that libgecodejava library was not pointing toward
gecode libraires, because the '-l' flags during linkage were missing. I
had to add them to Gecode_LIBS.
Hope this will help someone,
Stéphane.
Mikael Zayenz Lagerkvist wrote:
> On 10/3/06, Zampelli Stephane <Stephane.Zampelli at info.ucl.ac.be> wrote:
>
>> I have the following error when executing an example with GecodeJ :
>>
>> GecodeJ/release-1.0.0/$ java -Djava.library.path=. examples.Queens
>> Gecode native code library failed to load.
>> java.lang.UnsatisfiedLinkError:
>> /home/szampelli/UCL/Recherche/Code/GecodeJ/release-1.0.0/libgecodejava.so:
>>
>> /home/szampelli/UCL/Recherche/Code/GecodeJ/release-1.0.0/libgecodejava.so:
>>
>> undefined symbol: _ZTIN6Gecode6Search10MemoryStopE
>>
>> I successfully compiled Gecode release-1.3.0 and GecodeJ release-1.0.0.
>
>
> This (most probably) means that the Gecode library was compiled
> without RTTI information, which is needed for the Gecode/J-bindings to
> work.
>
> To fix this, reconfigure Gecode with --disable-gcc-visibility and the
> recompile.
>
> Hope this helps,
> Mikael
>
> --
> Mikael Zayenz Lagerkvist, http://www.ict.kth.se/~zayenz/
>
>
--
Zampelli Stéphane
PhD Student
Département d'Ingénierie Informatique,
Université Catholique de Louvain
Réaumur a.337.30
2, place Sainte Barbe
B-1348 Louvain-la-Neuve
tel: +32 10 47.91.02
Homepage : http://www.info.ucl.ac.be/~sz/
More information about the gecode-users
mailing list


Covering Your Assets: Data Encryption in API Management
Apr 13, 2016 Rachel Yordán security and gatewayIn a world where APIs are quickly becoming the standard, most of us understand the importance of following best practices for API security. We authenticate, authorize and throttle requests. We encrypt the data that we share with other applications (hopefully!). But we often neglect one of the most essential components of the API layer: data storage.
Encrypting Data as a Component of API Management Security
We often forget that APIs are not meant to protect data, rather, to share data across applications. While providers are certainly responsible for designing their APIs to be secure, we must be equally cautious about each component of the API layer.
Data Storage in apiman
Designing, building, and maintaining an API can be a lot of work, often making security an afterthought. Using an API management platform can save you valuable time, allowing you to focus on other critical aspects of your business.
Apiman was designed with the goal of providing a secure, customizable platform for API providers that is easy to use. As an open source platform, it is highly extendable and maintained by a community of developers with the common goal of streamlining API management without compromising security.
All sensitive data stored by apiman is fully encrypted so that it is not stored in plain text, then later decrypted again on runtime or when publishing services. By default, the API Manager uses a relational database for storage. One of the many examples of data that gets stored are the credentials that must be provided when the manager wants to publish an API and makes an authenticated REST call to the gateway.
Data for the API gateway and API manager are stored separately to keep components fully decoupled. For a more detailed overview, please see our API layer architecture.
Let’s swan dive into some code!
IDataEncrypter Interface and Data Encryption Classes
The component interface used by apiman to encrypt data (both in the API Manager and in the API Gateway) is called IDataEncrypter
. This interface provides the structure for the classes that encrypt keys and data, which is done synchronously using AES.
By default, the DefaultDataEncrypter
class is the encrypter for the gateway. The encrypt and decrypt methods accept a single parameter for the string to be encrypted or decrypted, respectively. If you look at the code, you’ll notice that the key is hard coded. For those of us that are looking for a more secure approach, we offer an alternative.
The AesDataEncrypter
class is a data encrypter that accepts an encrypted secret key. When it is invoked, it expects a configuration object that contains a previously defined encrypted secret key.
At this point you may be wondering how secret keys are obtained. A factory class called ConfigFactory
is responsible for creating a configuration Map using information from apiman.properties
. This configuration Map is later passed to AesDataEncrypter
as a parameter when it is constructed. The secret key included in the configuration Map is then used whenever data is encrypted or decrypted.
Setting the Gateway to use a Custom Encrypted Secret Key
We highly recommend that users change the default gateway encryption class to the more secure AesDataEncrypter
class. To do so, please follow these steps:
1. Locate and open the apiman.properties
file.
2. Uncomment the following lines, located toward the top of the file (around line 10), by removing the hashtag at the beginning of each line:
apiman.encrypter.type=io.apiman.common.util.crypt.AesDataEncrypter
apiman.encrypter.type.secretKey=
3. Add your encrypted secret key (the key must be a 16 character string).
4. Save and close the file.
5. $$$ Profit!
Writing Your Own Encryption Plugin
One of the major benefits of working with an open source API management platform, and open source projects in general, is the ability to read and modify the source code to make it work for your business needs. In apiman, we make it easy for you to write your own implementation of the data encrypter by creating a plugin that encrypts data.
Once your basic plugin is set up, you can then begin working on the Java component of your plugin that contains the functionality.
Every encryption plugin must implement the IDataEncrypter
interface like this:
public class SuperDataEncrypter implements IDataEncrypter {
/**
* Constructor.
*/
public SuperDataEncrypter(Map<String, String> config) {
thing = config.get("thing"); //$NON-NLS-1$
if (thing == null) {
throw new RuntimeException("Missing configuration property: apiman-manager.config.thing"); //$NON-NLS-1$
}
}
}
As you can see, the class is constructed with the configuration Map we discussed above. Once the SuperDataEncrypter
class is built, the configuration Map is checked for a "thing" key. If it is null, a runtime exception is thrown. Pretty, straightforward so far, right?
Whenever data is stored in a persistent store (either by the API Manager or by the API Gateway), the data encrypter is used to encrypt that data. You can pretty much guess what our next step will be:
public class SuperDataEncrypter implements IDataEncrypter {
/**
* Constructor.
*/
public SuperDataEncrypter(Map<String, String> config) {
thing = config.get("thing"); //$NON-NLS-1$
if (thing == null) {
throw new RuntimeException("Missing configuration property: apiman-manager.config.thing"); //$NON-NLS-1$
}
}
/* (non-Javadoc)
* @see io.apiman.common.util.crypt.IDataEncrypter#encrypt(java.lang.String)
*/
@Override
public String encrypt(String plainText) {
return AesEncrypter.encrypt(secretKey, plainText);
}
/* (non-Javadoc)
* @see io.apiman.common.util.crypt.IDataEncrypter#decrypt(java.lang.String)
*/
@Override
public String decrypt(String encryptedText) {
return AesEncrypter.decrypt(secretKey, encryptedText);
}
}
From there, you can use your SuperDataEncrypter
class to write the functionality you need. For an example of an implementation you can take a look at the AesDataEncrypter
class we discussed earlier. You should be up and running in no time!
| If you are kind enough to want to share your plugin with the rest of the apiman community, create a pull request on the apiman plugins repository. Contributors, please don’t forget to write a unit test for any plugin you write (one that actually passes, kthx!). |
Key Takeaways
If your memory is as short-lived as mine, it’s probably best that we do a quick recap. In this article we discussed the importance of securing stored data, and why it should be treated as an essential component of your API security strategy. We then discussed how apiman encrypts and decrypts sensitive data, with a detailed review of the IDataEncrypter interface and the classes that implement it.
For those of us with a guilty security conscience, we went over how to configure the API gateway to use an encrypted key that you provided in the apiman.properties
file. Because we’re über ambitious, we also took a look at how to write your very own implementation of said IDataEncrypter
interface and the methods you are required to implement.
As always, we love hearing from you! So, if you have any questions or comments, feel free to leave them below or reach out to us.


| 006:046 Khan | : |
Say (to the disbelievers): "Tell me, if Allah took away your hearing and your sight, and sealed up your hearts, who is there - an ilah (a god) other than Allah who could restore them to you?" See how variously We explain the Ayat (proofs, evidences, verses, lessons, signs, revelations, etc.), yet they turn aside. |
| 006:046 Maulana | : |
Say: Have you considered that if Allah should take away your hearing and your sight and seal your hearts, who is the god besides Allah that can bring it to you? See how We repeat the messages yet they turn away! |
| 006:046 Pickthal | : |
Say: Have ye imagined, if Allah should take away your hearing and your sight and seal your hearts, Who is the Allah Who could restore it to you save Allah? See how We display the revelations unto them! Yet still they turn away. |
| 006:046 Rashad | : |
Say, "What if GOD took away your hearing and your eyesight, and sealed your minds; which god, other than GOD, can restore these for you?" Note how we explain the revelations, and note how they still deviate! |
| 006:046 Sarwar | : |
(Muhammad), ask them, "Have you ever considered that if God was to disable your hearing and vision and veil your hearts, could anyone besides Him restore them?" Look at how plainly We show them the evidence (of the Truth) but they always ignore it. |
| 006:046 Shakir | : |
Say: Have you considered that if Allah takes away your hearing and your sight and sets a seal on your hearts, who is the god besides Allah that can bring it to you?  See how WE expound the Signs in various ways, yet they turn away. |
| 006:046 Yusufali | : |
Say: "Think ye, if Allah took away your hearing and your sight, and sealed up your hearts, who - a god other than Allah - could restore them to you?" See how We explain the signs by various (symbols); yet they turn aside. |
Concepts/Themes Covered: أركان الإسلام > التوحيد > توحيد الله تعالي > وحدانيته Pillars of Islam> Islamic> Oneness of Allah> Singularity and Being Unique أركان الإسلام > التوحيد > الكافرون > إعراضهم عن آيات الله Pillars of Islam> Islamic> The Disbelievers> Their Turning away from Allah's Signs أركان الإسلام > التوحيد > المكذبون الظالمون > صفاتهم Pillars of Islam> Islamic> The Oppressive Liars> Their Characteristics
This tool uses eight English parallel translations for the Holy Quran imported from Mr. Clay Smith. You can also visit Qurany Concepts for browsing the Quran themes or topics. If you want to search the Holy Quran for keywords, please visit Qurany Keywords.


Work Experience
- Installed, configured, operated, aligned, conducted performance tests, and performed unit and direct support maintenance on satellite communications equipment and associated devices
- Received training and worked with: JNN (Joint Network Node); HCLOS (High Capacity Line of Site); AN/TSC-156A (Phoenix); and AN/TSC-93
- Performed preventative maintenance, checks and services on HMWVVs and all equipment
- Created training materials & facilitated training classes with the Technicians that worked in the Verizon Wireless retail stores
- Performed store visits – Preventative maintenance on the computers & Cellebrite machines
- Conducted in-Store training for the Technicians on all systems, equipment and services
- I was an escalation point for all Technicians in the Mountain Region (Utah, Idaho, Montana)
See my complete work history on LinkedIn.
Education
ITT Technical Institute
Computer Networking
Sought after a degree in computer networking with subjects in: Computer Hardware, Computer Programming, Network Administration, Windows and Linux Operating Systems.


a web developer
Tribute page
Random quote machine
Calculator
Map data
Wikipedia Viewer
Tic tac toe game


pragmatics esl lesson plans
Pragmatics - ESL Web Directory - UsingEnglish.com
UsingEnglish.com - English Language Learning (ESL). Home . The Semantics- Pragmatics Distinction: What It Is and Why It Matters. The distinction between .
http://www.usingenglish.com/links/Language_Articles/Linguistics/Pragmatics/index.html
To the lesson plan - Developing Teachers.com
and some solutions through pragmatics to help . lesson plan 1 . The Cutting Edge listenings seem geared more toward an ESL class than an EFL class, .
http://www.developingteachers.com/articles_tchtraining/functlp1_greg.htm
Telephone English: Making Plans
A line-up activity for practising making plans on the telephone. . Children's ESL, EFL- flashcards, worksheets, wordsearches, crosswords, glossary,. Glossary of . The purpose of this lesson is to give false beginners the skills to call somebody and make plans or make excuses. . Give them some pragmatic competence.
http://bogglesworldesl.com/survival_travel_english/making_plans.htm
Things You'll Need
- Certified copies of public records evidence in your case
Instructions
-
-
1
Socio-cultural Competence in ESL Education: Works Cited
ESL education helps immigrants integrate. Immigration Policy . Evaluating the empirical evidence: Grounds for instruction in pragmatics? . ESL lesson plans.
http://sitemaker.umich.edu/356.kyprianides/works_citedPragmatic Meaning vs. Sematic Meaning: How to Tell the Difference
Feb 7, 2011 . Learning the difference between semantic and pragmatic meaning . You may also find this lesson plan on teaching semantic meaning helpful.
http://www.brighthubeducation.com/english-homework-help/105856-understanding-pragmatic-vs-semantic-meaning/ -
2
Teacher Resources: Lesson Plans - eslres1 - PBworks
Several ESL/EFL Worksheets, Lesson Plans, Curriculum Materials And Free Print Resources . Teaching Pragmatics by Kathleen Bardovi-Harlig and Rebecca .
http://eslres1.pbworks.com/w/page/24204181/Teacher%20Resources%3A%20Lesson%20PlansSocial Language Use (Pragmatics)
Social Language Use (Pragmatics). You have invited your friend over for dinner. Your child sees your friend reach for some cookies and says, "Better not take .
http://www.asha.org/public/speech/development/pragmatics.htm -
-
3
View an example lesson plan... - The Center for Advanced Research ...
Dec 23, 2011 . Pragmatics/Speech Acts . Lesson Plan for Teaching Compliments . eight ESL textbooks to investigate how they taught pragmatic behavior.
http://www.carla.umn.edu/speechacts/compliments/lessonplan.htmlMrs. Wiscount's Webpage - ESL & ELL
International Pragmatics Association . The Big List ESL Lessons & Quizzes for all Levels . These links provide lesson plans to use in ESL classes.
http://www.melaniewiscount.com/esl.html -
4
Teaching L2 Pragmatics: Opportunities for Continuing Professional ...
EJ945401 - Teaching L2 Pragmatics: Opportunities for Continuing . of lessons on pragmatics to university-aged (19-23) ESL learners in ESL and EFL contexts. . Although this was not a formal program in teaching pragmatics, lesson plans .
http://www.eric.ed.gov/ERICWebPortal/recordDetail?accno=EJ945401
-
1
References
Resources
- Photo Credit Justice image by MVit from studying overseas and paying taxes


|
| void | pi_spi_conf_init (struct pi_spi_conf *conf) |
| | Initialize an SPI master configuration with default values. More...
|
| |
| int | pi_spi_open (struct pi_device *device) |
| | Open an SPI device. More...
|
| |
| void | pi_spi_close (struct pi_device *device) |
| | Close an opened SPI device. More...
|
| |
| void | pi_spi_ioctl (struct pi_device *device, uint32_t cmd, void *arg) |
| | Dynamically change the device configuration. More...
|
| |
| void | pi_spi_send (struct pi_device *device, void *data, size_t len, pi_spi_flags_e flag) |
| | Enqueue a write copy to the SPI (from Chip to SPI device). More...
|
| |
| void | pi_spi_receive (struct pi_device *device, void *data, size_t len, pi_spi_flags_e flag) |
| | Enqueue a read copy to the SPI (from Chip to SPI device). More...
|
| |
| void | pi_spi_transfer (struct pi_device *device, void *tx_data, void *rx_data, size_t len, pi_spi_flags_e flag) |
| | Enqueue a read and write copy to the SPI (using full duplex mode). More...
|
| |
| void | pi_spi_send_async (struct pi_device *device, void *data, size_t len, pi_spi_flags_e flag, pi_task_t *task) |
| | Enqueue an asynchronous write copy to the SPI (from Chip to SPI device). More...
|
| |
| void | pi_spi_receive_async (struct pi_device *device, void *data, size_t len, pi_spi_flags_e flag, pi_task_t *task) |
| | Enqueue an asynchronous read copy to the SPI (from Chip to SPI device). More...
|
| |
| void | pi_spi_transfer_async (struct pi_device *device, void *tx_data, void *rx_data, size_t len, pi_spi_flags_e flag, pi_task_t *task) |
| | Enqueue an asynchronous read and write copy to the SPI (using full duplex mode). More...
|
| |
The SPIM driver provides support for transferring data between an external SPIM device and the chip running this driver.
◆ pi_spi_flags_e
This flags can be given when transfering data.
| Enumerator |
|---|
| PI_SPI_CS_AUTO | Handles the chip select automatically. It is set low just before the transfer is started and set back high when the transfer is finished.
|
| PI_SPI_CS_KEEP | Handle the chip select manually. It is set low just before the transfer is started and is kept low until the next transfer.
|
| PI_SPI_CS_NONE | Don't do anything with the chip select.
|
| PI_SPI_LINES_SINGLE | Use a single MISO line.
|
| PI_SPI_LINES_QUAD | Use quad MISO lines.
|
| PI_SPI_LINES_OCTAL | Use octal MISO lines.
|
| PI_SPI_COPY_EXT2LOC | Do a copy from external memory to local chip memory.
|
| PI_SPI_COPY_LOC2EXT | Do a copy from local chip memory to external memory.
|
◆ pi_spi_ioctl_e
This is used to reconfigure dynamically some of the parameters of an opened device.
| Enumerator |
|---|
| PI_SPI_CTRL_CPOL0 | Set the clock polarity to 0.
|
| PI_SPI_CTRL_CPOL1 | Set the clock polarity to 1.
|
| PI_SPI_CTRL_CPHA0 | Set the clock phase to 0.
|
| PI_SPI_CTRL_CPHA1 | Set the clock phase to 1.
|
| PI_SPI_CTRL_WORDSIZE_8 | Set the wordsize to 8 bits.
|
| PI_SPI_CTRL_WORDSIZE_32 | Set the wordsize to 32 bits.
|
| PI_SPI_CTRL_BIG_ENDIAN | Handle the elements in memory in a big-endian way.
|
| PI_SPI_CTRL_LITTLE_ENDIAN | Handle the elements in memory in a little-endian way.
|
| PI_SPI_CTRL_SET_MAX_BAUDRATE | Change maximum baudrate.
|
◆ pi_spi_phase_e
Clock phase.
| Enumerator |
|---|
| PI_SPI_PHASE_0 | Data shifted out on trailing edge of preceding clock cycle. Data sampled on leading edge of clock cycle.
|
| PI_SPI_PHASE_1 | Data shifted out on leading edge of current clock cycle. Data sampled on trailing edge of clock cycle.
|
◆ pi_spi_polarity_e
Clock polarity.
| Enumerator |
|---|
| PI_SPI_POLARITY_0 | Leading edge is rising edge, trailing edge is falling edge.
|
| PI_SPI_POLARITY_1 | Leading edge is falling edge, trailing edge is rising edge.
|
◆ pi_spi_wordsize_e
This is used to know how the endianness must be applied. Not all sizes are supported on all chips, check the chip-specific section to get more information.
| Enumerator |
|---|
| PI_SPI_WORDSIZE_8 | Each element is 8 bits. Thus the endianness has no effect.
|
| PI_SPI_WORDSIZE_16 | Each element is 16 bits. The way each element is stored in memory can then be specified with the endianness.
|
| PI_SPI_WORDSIZE_32 | Each element is 32 bits. The way each element is stored in memory can then be specified with the endianness.
|
◆ pi_spi_close()
| void pi_spi_close |
( |
struct pi_device * |
device | ) |
|
This function can be called to close an opened SPI device once it is not needed anymore, in order to free all allocated resources. Once this function is called, the device is not accessible anymore and must be opened again before being used. The caller is blocked until the operation is finished.
- Parameters
-
| device | A pointer to the structure describing the device. |
◆ pi_spi_conf_init()
This function can be called to get default values for all parameters before setting some of them. The structure containing the configuration must be kept alive until the SPI device is opened.
- Parameters
-
| conf | A pointer to the SPI master configuration. |
◆ pi_spi_ioctl()
| void pi_spi_ioctl |
( |
struct pi_device * |
device, |
|
|
uint32_t |
cmd, |
|
|
void * |
arg |
|
) |
| |
This function can be called to change part of the device configuration after it has been opened.
- Parameters
-
| device | A pointer to the structure describing the device. |
| cmd | The command which specifies which parameters of the driver to modify and for some of them also their values. The command must be one of those defined in pi_spi_ioctl_e. |
| arg | An additional value which is required for some parameters when they are set. |
◆ pi_spi_open()
| int pi_spi_open |
( |
struct pi_device * |
device | ) |
|
This function must be called before the SPI device can be used. It will do all the needed configuration to make it usable and initialize the handle used to refer to this opened device when calling other functions. The caller is blocked until the operation is finished.
- Parameters
-
| device | A pointer to the device structure of the device to open. This structure is allocated by the caller and must be kept alive until the device is closed. |
- Returns
- 0 if the operation is successfull, -1 if there was an error.
◆ pi_spi_receive()
| void pi_spi_receive |
( |
struct pi_device * |
device, |
|
|
void * |
data, |
|
|
size_t |
len, |
|
|
pi_spi_flags_e |
flag |
|
) |
| |
This function can be used to receive data from the SPI device. The copy will make a synchronous transfer between the SPI and one of the chip memory. This is by default using classic SPI transfer with MOSI and MISO lines, but other kind of transfers like quad SPI can be used by specifying additional flags. Due to hardware constraints, the address of the buffer must be aligned on 4 bytes and the size must be a multiple of 4. The caller is blocked until the transfer is finished. Depending on the chip, there may be some restrictions on the memory which can be used. Check the chip-specific documentation for more details.
- Parameters
-
| device | A pointer to the structure describing the device. |
| data | The address in the chip where the received data must be written. |
| len | The size in bits of the copy. |
| flag | Additional behaviors for the transfer can be specified using this flag. Can be 0 to use the default flag, which is using PI_SPI_CS_AUTO and PI_SPI_LINES_SINGLE. |
◆ pi_spi_receive_async()
| void pi_spi_receive_async |
( |
struct pi_device * |
device, |
|
|
void * |
data, |
|
|
size_t |
len, |
|
|
pi_spi_flags_e |
flag, |
|
|
pi_task_t * |
task |
|
) |
| |
This function can be used to receive data from the SPI device. The copy will make an asynchronous transfer between the SPI and one of the chip memory. This is by default using classic SPI transfer with MOSI and MISO lines, but other kind of transfers like quad SPI can be used by specifying additional flags. Due to hardware constraints, the address of the buffer must be aligned on 4 bytes and the size must be a multiple of 4. A task must be specified in order to specify how the caller should be notified when the transfer is finished. Depending on the chip, there may be some restrictions on the memory which can be used. Check the chip-specific documentation for more details.
- Parameters
-
| device | A pointer to the structure describing the device. |
| data | The address in the chip where the received data must be written. |
| len | The size in bits of the copy. |
| flag | Additional behaviors for the transfer can be specified using this flag. Can be 0 to use the default flag, which is using PI_SPI_CS_AUTO and PI_SPI_LINES_SINGLE. |
| task | The task used to notify the end of transfer. See the documentation of pi_task_t for more details.details.details. |
◆ pi_spi_send()
| void pi_spi_send |
( |
struct pi_device * |
device, |
|
|
void * |
data, |
|
|
size_t |
len, |
|
|
pi_spi_flags_e |
flag |
|
) |
| |
This function can be used to send data to the SPI device. The copy will make a synchronous transfer between the SPI and one of the chip memory. This is by default using classic SPI transfer with MOSI and MISO lines, but other kind of transfers like quad SPI can be used by specifying additional flags. Due to hardware constraints, the address of the buffer must be aligned on 4 bytes and the size must be a multiple of 4. The caller is blocked until the transfer is finished. Depending on the chip, there may be some restrictions on the memory which can be used. Check the chip-specific documentation for more details.
- Parameters
-
| device | A pointer to the structure describing the device. |
| data | The address in the chip where the data to be sent must be read. |
| len | The size in bits of the copy. |
| flag | Additional behaviors for the transfer can be specified using this flag. Can be 0 to use the default flag, which is using PI_SPI_CS_AUTO and PI_SPI_LINES_SINGLE. |
◆ pi_spi_send_async()
| void pi_spi_send_async |
( |
struct pi_device * |
device, |
|
|
void * |
data, |
|
|
size_t |
len, |
|
|
pi_spi_flags_e |
flag, |
|
|
pi_task_t * |
task |
|
) |
| |
This function can be used to send data to the SPI device. The copy will make an asynchronous transfer between the SPI and one of the chip memory. This is by default using classic SPI transfer with MOSI and MISO lines, but other kind of transfers like quad SPI can be used by specifying additional flags. Due to hardware constraints, the address of the buffer must be aligned on 4 bytes and the size must be a multiple of 4. A task must be specified in order to specify how the caller should be notified when the transfer is finished. Depending on the chip, there may be some restrictions on the memory which can be used. Check the chip-specific documentation for more details.
- Parameters
-
| device | A pointer to the structure describing the device. |
| data | The address in the chip where the data to be sent must be read. |
| len | The size in bits of the copy. |
| flag | Additional behaviors for the transfer can be specified using this flag. Can be 0 to use the default flag, which is using PI_SPI_CS_AUTO and PI_SPI_LINES_SINGLE. |
| task | The task used to notify the end of transfer. See the documentation of pi_task_t for more details.details. |
◆ pi_spi_transfer()
| void pi_spi_transfer |
( |
struct pi_device * |
device, |
|
|
void * |
tx_data, |
|
|
void * |
rx_data, |
|
|
size_t |
len, |
|
|
pi_spi_flags_e |
flag |
|
) |
| |
This function can be used to send and receive data with the SPI device using full duplex mode. The copy will make a synchronous transfer between the SPI and one of the chip memory. This is using classic SPI transfer with MOSI and MISO lines. Due to hardware constraints, the address of the buffer must be aligned on 4 bytes and the size must be a multiple of 4. The caller is blocked until the transfer is finished. Depending on the chip, there may be some restrictions on the memory which can be used. Check the chip-specific documentation for more details.
- Parameters
-
| device | A pointer to the structure describing the device. |
| tx_data | The address in the chip where the data to be sent must be read. |
| rx_data | The address in the chip where the received data must be written. |
| len | The size in bits of the copy. |
| flag | Additional behaviors for the transfer can be specified using this flag. Can be 0 to use the default flag, which is using PI_SPI_CS_AUTO and PI_SPI_LINES_SINGLE. |
◆ pi_spi_transfer_async()
| void pi_spi_transfer_async |
( |
struct pi_device * |
device, |
|
|
void * |
tx_data, |
|
|
void * |
rx_data, |
|
|
size_t |
len, |
|
|
pi_spi_flags_e |
flag, |
|
|
pi_task_t * |
task |
|
) |
| |
This function can be used to send and receive data with the SPI device using full duplex flag. The copy will make an asynchronous transfer between the SPI and one of the chip memory. This is using classic SPI transfer with MOSI and MISO lines. Due to hardware constraints, the address of the buffer must be aligned on 4 bytes and the size must be a multiple of 4. A task must be specified in order to specify how the caller should be notified when the transfer is finished. Depending on the chip, there may be some restrictions on the memory which can be used. Check the chip-specific documentation for more details.
- Parameters
-
| device | A pointer to the structure describing the device. |
| tx_data | The address in the chip where the data to be sent must be read. |
| rx_data | The address in the chip where the received data must be written. |
| len | The size in bits of the copy. |
| flag | Additional behaviors for the transfer can be specified using this flag. Can be 0 to use the default flag, which is using PI_SPI_CS_AUTO and PI_SPI_LINES_SINGLE. |
| task | The task used to notify the end of transfer. See the documentation of pi_task_t for more details.details.details. |


--- layout: post title: ! 'Javascript: Setting the form focus' tags: [] status: publish type: post published: true meta: {} ---
One of my pet grievances is hitting a page with a search or username and password field, where I need to click on the field so that I can start entering text. I will briefly explain in the following how you can set the focus on a form field, so that a cursor appears there, once the page has loaded.
Suppose you have form named frm_search, i.e. your form statement would look something like this:
<form action="search_results.html" method="post" enctype="multipart/form-data" name="frm_search">
And the field name you wanted to set the focus to was called txt_search, you would need to specify in the <body> of your page the following onLoad function:
onLoad="document.frm_search.txt_search.focus();"
Et voila, when the page loads, you should find the cursor blinking in that form field. Not very complicated and so much more user friendly. So to recap here is the entire code:
<html>
<head>
<title>Focus</title>
</head>
<body onLoad="document.frm_search.txt_search.focus();">
<form action="search_results.html" method="post" enctype="multipart/form-data" name="frm_search">
<input type="Text" width="100" name="txt_search"> <input type="Submit" name="btn_search" value="Submit">
</form>
</body>
</html>


"Where could we get enough lemons in this remote place to feed such a crowd?"
"How many lemons do you have?" Jesus asked.
"Seven," they replied, "and a few limes."
"Jesus told the crowd to sit down on the ground. Then he took the seven lemons and the lime, and when he had given thanks, he cut them and gave them to the disciples, and they in turn to the people. They all ate and were satisfied. Afterward the disciples picked up seven basketfuls of broken pieces that were left over. The number of those who ate was four thousand men, besides women and children. After Jesus had sent the crowd away, he got into the boat and went to the vicinity of Magadan (or Magdala)."


I am a Front-End Web and Mobile Application developer on the intermediate level who has always been thrilled by how web technologies work. This has always motivated me to learn more about the web and the technologies that surround it.
Over the years as an undergraduate, I have acquired skills which enabled me to analyze and solve problems. My ability to have clear understanding of people’s needs and apply my initiative in solving issues make me relevant in any organization I'm in. I love working in a team because it enhances and facilitates the time of execution of tasks and leads to better overall performance. I love learning and have the ability to learn fast. This makes me blend in easily to whatever environment I find myself. Download my Resume here.
To be an exceptional individual committed to the satisfaction and goal achievement of any organization I find myself via teamwork and proactive innovation, solutions and contributing extensively to the growth thereby adding value and assisting leads in operations unit.
| Company Name | Role | Period |
|---|---|---|
| Bincom ICT | Front-End/Mobile App Developer | March, 2018 – Present |
| Interactive Engineering Consult – Garki, FCT Abuja. | SIWES Intern(Electrical Building Services) | July, 2016 – December, 2016 |
| Bayoid Ventures – Ikorodu, Lagos State. | Undergraduate Intern(Electrical Maintenance) | July, 2013 – December, 2013 |
This project was built with Agular6 and Angular Material 2, The project was commissioned by a money lending solution as an upgrade to the current version that was online.
Close ProjectAs the frontier in the Front-End Development team at Bincom ICT, I was assigned the task to build a new Website for the company. The project was built by a team of 3 including myself with Angular5 and Bootstrap. Most of the data on the website are from a Wordpress blog using WordPress REST API
Close ProjectThis is an Ecommerce website built for a Client with WordPress using the WooCommerce plugin
Close ProjectA mobile Application built with Ionic and Cordova. The app basically manages a list of tasks to do and allows the User to add more, Edit or Delete present tasks.
Close Project