Every PHP class has "magic methods". You may already know these methods from writing PHP code: the methods start with two underscores and have names like __set(), __isset(), __call(), etcetera.
The PHP-CPP library also has support for these magic methods. Using some C++ compiler tricks, the C++ compiler detects whether the methods exist in your class, and if they do, they will be compiled into your extension and called when they are accessed from PHP.
Although you may have expected that the magic methods are virtual methods in the Php::Base class that can be overridden, they are not. The methods are detected by the C++ compiler at compile time - and are very normal methods that just happen to have a certain name.
Because of the compile time detection, the signature of the methods is somewhat flexible. The return values of many magic methods are assigned to Php::Value objects, which means that as long as you make sure that your magic method returns a type that is assignable to a Php::Value, you can use it in your class. Your __toString() method may thus return a char*, a std::string, Php::Value (and even an integer!), because all these types can be assigned to a Php::Value.
The nice thing about magic methods implemented with PHP-CPP is that they do not become visible from PHP user space. In other words, when you define a function like __set() or __unset() in your C++ class, these functions can not be called explicitly from PHP scripts - but they do get called when a property is accessed.
Normally, magic methods do not have to be registered to make them work. When you add a magic method like __toString() or __get() to your class, it will automatically be called when an object is casted to a string or a property is accessed. There is no need to enable the magic method explicitly in the get_module() startup function.
The only exception to this rule is the __construct() method. This method does have to be explicitly registered. There are a number of reasons for this. For a start, the __construct() method does not have a fixed signature, and by explicitly adding it to the extension, you can also specify what parameters it accepts, and whether the __construct() method should be public, private or protected (if you want to create classes that can not be instantiated from PHP).
The other reason why you have to explicitly register the __construct() method, is that, unlike other magic methods, the __construct method must be visible from PHP. Inside constructors of derived classes, it often is necessary to make a call to parent::__construct(). By registering the __construct() method in the get_module() function you make the function visible from PHP.
We have a special article about constructors and destructors with multiple examples how to register the __construct() method.
The magic __clone() method is very similar to the __construct() method. It also is a method that is called directly after an object is constructed. The difference is that __clone() is called after an object is copy constructed (or cloned if you prefer the PHP idiom), while __construct() is called right after the normal constructor.
The magic __destruct() method gets called right before the object gets destructed (and right before the C++ destructor runs).
The __clone() and __destruct() methods are regular magic methods (unlike __construct()) and you therefore do not have to register them to make them active. If you add one of these two methods to your class, you will not have to make any changes to the get_module() startup function. The PHP-CPP library calls them automatically if they are available.
In normal circumstances you probably have no need for these methods. The C++ copy constructor and the C++ destructor can be used too. The only difference is that the magic methods are called on objects that are in a fully initialized state, while the C++ copy constructor and C++ destructor work on objects that are being initialized, or that are being destructed.
The article about mentioned above about constructors and destructors has more details and examples.
With the methods __get(), __set(), __unset() and __isset() you can define pseudo properties. It allows you to, for example, create read-only properties, or properties that are checked for validity when they are set.
The magic methods work exactly the same as their counterparts in PHP scripts do, so you can easily port PHP code that uses these properties to C++.
#include <phpcpp.h>
/**
* A sample class, that has some pseudo properties that map to native types
*/
class User : public Php::Base
{
private:
/**
* Name of the user
* @var std::string
*/
std::string _name;
/**
* Email address of the user
* @var std::string
*/
std::string _email;
public:
/**
* C++ constructor and C++ destructpr
*/
User() {}
virtual ~User() {}
/**
* Get access to a property
* @param name Name of the property
* @return Value Property value
*/
Php::Value __get(const Php::Value &name)
{
// check if the property name is supported
if (name == "name") return _name;
if (name == "email") return _email;
// property not supported, fall back on default
return Php::Base::__get(name);
}
/**
* Overwrite a property
* @param name Name of the property
* @param value New property value
*/
void __set(const Php::Value &name, const Php::Value &value)
{
// check the property name
if (name == "name")
{
// store member
_name = value.stringValue();
}
// we check emails for validity
else if (name == "email")
{
// store the email in a string
std::string email = value;
// must have a '@' character in it
if (email.find('@') == std::string::npos)
{
// email address is invalid, throw exception
throw Php::Exception("Invalid email address");
}
// store the member
_email = email;
}
// other properties fall back to default
else
{
// call default
Php::Base::__set(name, value);
}
}
/**
* Check if a property is set
* @param name Name of the property
* @return bool
*/
bool __isset(const Php::Value &name)
{
// true for name and email address
if (name == "name" || name == "email") return true;
// fallback to default
return Php::Base::__isset(name);
}
/**
* Remove a property
* @param name Name of the property to remove
*/
void __unset(const Php::Value &name)
{
// name and email can not be unset
if (name == "name" || name == "email")
{
// warn the user with an exception that this is impossible
throw Php::Exception("Name and email address can not be removed");
}
// fallback to default
Php::Base::__unset(name);
}
};
/**
* Switch to C context to ensure that the get_module() function
* is callable by C programs (which the Zend engine is)
*/
extern "C" {
/**
* Startup function that is called by the Zend engine
* to retrieve all information about the extension
* @return void*
*/
PHPCPP_EXPORT void *get_module() {
// extension object
static Php::Extension myExtension("my_extension", "1.0");
// description of the class so that PHP knows
// which methods are accessible
Php::Class<User> user("User");
// add the class to the extension
myExtension.add(std::move(user));
// return the extension
return myExtension;
}
}
The above example shows how you can create a User class that seems to have a name and email property, but that does not allow you to assign an email address without a '@' character in it, and that does not allow you to remove the properties.
<?php
// initialize user and set its name and email address
$user = new User();
$user->name = "John Doe";
$user->email =<EMAIL_ADDRESS>// show the email address
echo($user->email."\n");
// remove the email address (this will cause an exception)
unset($user->email);
?>
C++ methods need to be registered explicitly in your extension get_module() startup function to be accessible from PHP user space. However, when you override the __call() method, you can accept all calls - even calls to methods that do not exist. When someone makes a call from user space to something that looks like a method, it will be passed to this __call() method. In a script you can thus use $object->something(), $object->whatever() or $object->anything() - it does not matter what the name of the method is, all these calls are passed on to the __call() method in the C++ class.
The __callStatic() method is similar to the __call() method, but works for static methods. A static call to YourClass::someMethod() can be automatically passed on to the __callStatic() method of your C++ class.
Next to the magic __call() and __callStatic functions, the PHP-CPP library also supports the __invoke() method. This is a method that gets called when an object instance is used as if it was a function. This can be compared with overloading the operator () in a C++ class. By implementing the __invoke() method, scripts from PHP user space can create an object, and then use it as a function.
#include <phpcpp.h>
/**
* A sample class, that accepts all thinkable method calls
*/
class MyClass : public Php::Base
{
public:
/**
* C++ constructor and C++ destructpr
*/
MyClass() {}
virtual ~MyClass() {}
/**
* Regular method
* @param params Parameters that were passed to the method
* @return Value The return value
*/
Php::Value regular(Php::Parameters ¶ms)
{
return "this is a regular method";
}
/**
* Overriden __call() method to accept all method calls
* @param name Name of the method that is called
* @param params Parameters that were passed to the method
* @return Value The return value
*/
Php::Value __call(const char *name, Php::Parameters ¶ms)
{
// the return value
std::string retval = std::string("__call ") + name;
// loop through the parameters
for (auto ¶m : params)
{
// append parameter string value to return value
retval += " " + param.stringValue();
}
// done
return retval;
}
/**
* Overriden __callStatic() method to accept all static method calls
* @param name Name of the method that is called
* @param params Parameters that were passed to the method
* @return Value The return value
*/
static Php::Value __callStatic(const char *name, Php::Parameters ¶ms)
{
// the return value
std::string retval = std::string("__callStatic ") + name;
// loop through the parameters
for (auto ¶m : params)
{
// append parameter string value to return value
retval += " " + param.stringValue();
}
// done
return retval;
}
/**
* Overridden __invoke() method so that objects can be called directly
* @param params Parameters that were passed to the method
* @return Value The return value
*/
Php::Value __invoke(Php::Parameters ¶ms)
{
// the return value
std::string retval = "invoke";
// loop through the parameters
for (auto ¶m : params)
{
// append parameter string value to return value
retval += " " + param.stringValue();
}
// done
return retval;
}
};
/**
* Switch to C context to ensure that the get_module() function
* is callable by C programs (which the Zend engine is)
*/
extern "C" {
/**
* Startup function that is called by the Zend engine
* to retrieve all information about the extension
* @return void*
*/
PHPCPP_EXPORT void *get_module() {
// extension object
static Php::Extension myExtension("my_extension", "1.0");
// description of the class so that PHP knows
// which methods are accessible
Php::Class<MyClass> myClass("MyClass");
// register the regular method
myClass.method("regular", &MyClass::regular);
// add the class to the extension
myExtension.add(std::move(myClass));
// return the extension
return myExtension;
}
}
<?php
// initialize an object
$object = new MyClass();
// call a regular method
echo($object->regular()."\n");
// call some pseudo-methods
echo($object->something()."\n");
echo($object->myMethod(1,2,3,4)."\n");
echo($object->whatever("a","b")."\n");
// call some pseudo-methods in a static context
echo(MyClass::something()."\n");
echo(MyClass::myMethod(5,6,7)."\n");
echo(MyClass::whatever("x","y")."\n");
// call the object as if it was a function
echo($object("parameter","passed","to","invoke")."\n");
?>
The above PHP script calls some method on this class. And will generate the following output:
regular __call something __call myMethod 1 2 3 4 __call whatever a b __callStatic something __callStatic myMethod 5 6 7 __callStatic whatever x y invoke parameter passed to invoke
In PHP you can add a __toString() method to a class. This method is automatically called when an object is casted to a string, or when an object is used in a string context. PHP-CPP supports this __toString() method too.
#include <phpcpp.h>
/**
* A sample class, with methods to cast objects to scalars
*/
class MyClass : public Php::Base
{
public:
/**
* C++ constructor and C++ destructpr
*/
MyClass() {}
virtual ~MyClass() {}
/**
* Cast to a string
* @return Value
*/
Php::Value __toString()
{
return "abcd";
}
};
/**
* Switch to C context to ensure that the get_module() function
* is callable by C programs (which the Zend engine is)
*/
extern "C" {
/**
* Startup function that is called by the Zend engine
* to retrieve all information about the extension
* @return void*
*/
PHPCPP_EXPORT void *get_module() {
// extension object
static Php::Extension myExtension("my_extension", "1.0");
// description of the class so that PHP knows
// which methods are accessible
Php::Class<MyClass> myClass("MyClass");
// add the class to the extension
myExtension.add(std::move(myClass));
// return the extension
return myExtension;
}
}
Next to the magic methods described here, and that you probably already know from writing PHP scripts, the PHP-CPP library also introduces a number of additional magic methods. These include extra casting methods, and a method to compare objects.
You can read more about these additional features in the next section.


This demo illustrates the basic functionality of the ComboBox custom element.
Search for a City:
ex: be


Alerter
A restful notification engine for Ruby on Rails originally developed for a social network project I was working on in college.
Usage
# app/models/application_record.rb
class ApplicationRecord < ActiveRecord::Base
include Alerter
end
# app/models/person.rb
class Person < ApplicationRecord
alertable
end
# app/alerts/person_alerts.rb
class PersonAlerts < Alerter::Alerts
define do |alerts|
alerts.message :new_follower do |source, target, object|
"#{source} is now following you!"
end
alerts.message :new_comment do |source, target, object|
"#{source} has commented on #{object}"
end
alerts.message :pasta do |source, target, object|
I18n.translate :pasta,
source: source, target: target, object: object
end
# functional equivalent
alerts.localized_message :pasta
end
end
alice = Person.new
bob = Person.new
alice.alert(key: :new_follower, source: bob)
# app/controllers/profiles_controller.rb
ProfilesController < ActionController::Base
def dashboard
@alerts = current_user.alerts
end
end
Installation
Add this line to your application's Gemfile:
gem 'alerts'
And then execute:
$ bundle
Or install it yourself as:
$ gem install alerts
Contributing
Contribution directions go here.
License
The gem is available as open source under the terms of the MIT License.


--- title: People layout: subpage --- {% for post in site.categories.people reversed do %}
{{post.content}}


Moghedien did not want to dream the dream again, but wanting to wake, wanting to scream, did no good. Sleep held her faster than any manacles. The beginning went by quickly, a sketchy blur. No mercy; she would have to relive the rest that much sooner.
She barely recognized the woman who entered the tent where she was held prisoner. Halima, secretary to one of these fools who called themselves Aes Sedai. Fools, yet they held her tightly enough by the band of silver metal around her neck, held her and made her obey. Fast movement, though she prayed for slowness. The woman channeled to make a light, and Moghedien saw only the light. It had to be saidin —among the living, only the Chosen knew how to tap the True Power—the Power that came from the Dark One—and few were fool enough to except in direst need—but that was impossible! Blurring quickness. The woman named herself Aran’gar and called Moghedien by name, she gave summons to the Pit of Doom and removed the a’dam necklace, flinching at pain no woman should have felt. Again—how many times had she done this?—again Moghedien wove a small gateway in the tent.  It regarded her arrogantly, and gave its odd name unbidden, and commanded her to come; these were not things Myrddraal did with the Chosen. Now she screamed in the depths of her mind for the dream to move faster, to blur beyond seeing, beyond knowing, but now, as she followed Shaidar Haran’s back into the entrance to the Pit of Doom, now all flowed at its normal pace and seemed more real than Tel’aran’rhiod or the waking world.
Tears leaked from Moghedien’s eyes, down cheeks that already glistened. She twitched on her hard pallet, arms and legs jerking as she fought desperately, futilely, to wake. She was no longer aware that she dreamed—all seemed real—but deep memories remained, and in those depths, instinct shrieked and clawed for escape.
She was well familiar with the sloping tunnel ceilinged in stone daggers like fangs, the walls glowing with pale light. Many times she had made this downward journey since the day so long ago when she first came to make obeisance to the Great Lord and pledge her soul, but never as now, never with her failure known in all its magnitude. Always before she had managed to hide failures even from the Great Lord. Many times. Things could be done here that could be done nowhere else. Things could happen here that could happen nowhere else.
She gave a start as one of the stone fangs brushed her hair, then gathered herself as best she could. Those spikes and blades still cleared the strange, too-tall Myrddraal easily, but though it overtopped her by head and shoulders and more, she was forced to move her head around their points now. Reality was clay to the Great Lord here, and he often made his displeasure known so. A stone tooth struck her shoulder, and she ducked to go under another. There was no longer enough height in the tunnel for her to straighten as she walked. She bent lower, scurrying crouched in the Myrddraal’s wake, trying to get closer. Its stride never changed, but no matter how quickly she scuttled, the interval between them did not lessen. The ceiling descending, the Great Lord’s fangs to rend traitors and fools, and Moghedien dropped to hands and knees, crawling, then flattened to elbows and knees. Light flared and flickered in the tunnel, cast from the entrance to the Pit itself, just ahead, and Moghedien slithered on her belly, pulled herself along with her hands, pushed with her feet. Stone points dug at her flesh, caught at her dress. Panting, she wriggled the last distance to the sound of ripping wool.
Staring back over her shoulder, she shivered convulsively. Where the tunnel mouth should have been stood a smooth stone wall. Perhaps the Great Lord had timed it all exactly, and perhaps, had she been slower . . .
The ledge on which she lay projected above a black-mottled red lake of molten rock where flames the size of men danced and died and reappeared. Overhead, the cavern rose roofless through the mountain to a sky where wild clouds raced, striated red and yellow and black, as if on the winds of time themselves. It was not the dark-clouded sky seen outside on Shayol Ghul. None of that earned a second glance, and not just because she had seen it many times. The Bore into the Great Lord’s place of imprisonment was no closer here than anywhere else in the world, but here she could feel it, here she could bathe in the radiant glory of the Great Lord. The True Power washed around her, so strong here that attempting to channel it would fry her to a cinder. Not that she had any desire to pay the price elsewhere either.
She started to push up to her knees, and something struck her between the shoulder blades, driving her down hard onto the stone ledge, crushing the air from her lungs. Stunned, she struggled for breath, then stared back up over her shoulder. The Myrddraal stood with one massive boot planted firmly on her back. Almost, she embraced saidar, though channeling here without express permission was a good way to die. The arrogance on the slopes above was one thing, but this!
“Do you know who I am?” she demanded. “I am Moghedien!” That eyeless gaze watched her as it might an insect; she had often seen Myrddraal look at ordinary humans that way.
MOGHEDIEN.  Beside this, any human lover’s deepest embrace was a drop of water beside the ocean.
Eyelids fluttering, she fought for coherence. “Great Lord, I taught them only small things, and I fought them as I could. I taught them a supposed way to detect a man channeling.” She managed to laugh. “Practicing it gives them such headaches they cannot channel for hours.” Silence. Perhaps as well. They had given up trying to learn that long before her rescue, but the Great Lord did not need to know that. “Great Lord, you know how I have served you. I serve in the shadows, and your enemies never feel my bite until my venom is working.” She did not quite dare say she had deliberately let herself be captured, to work from within, but she could suggest. “Great Lord, you know how many of your enemies I brought down in the War of Power. From the shadows, unseen, or if seen, ignored because I could not possibly be a threat.” Silence. And then . . .
 MY HAND MOVES.
  All her dreams were to end here in a slit throat, her body going to feed the Trollocs. Perhaps Shaidar Haran would save a choice cut for itself. Perhaps . . .
No. She knew she was going to die, but this Myrddraal would not eat one shred of her! She reached to embrace saidar, and her eyes bulged. There was nothing there. Nothing! It was as if she had been severed! She knew she had not—it was said that tearing was the deepest pain anyone could know, beyond any power to deaden—but—!
In those stunned moments, the Myrddraal forced her mouth open, scraped the blade along her tongue, then nicked her ear. And as it straightened with her blood and saliva, she knew, even before it produced what appeared to be a tiny, fragile cage of gold wire and crystal. Some things could only be done here, some only to those who could channel, and she had brought a number of men and women for this very purpose.
“No,” she breathed. Her eyes could not leave the cour’souvra. “No, not me! NOT ME!”
Ignoring her, Shaidar Haran scraped the fluids from the knife onto the cour’souvra. The crystal turned a milky pink, the first setting. With a flick of its wrist, it tossed the mindtrap out over the lake of molten stone for the second. The gold-and-crystal cage arched through the air and suddenly stopped, floating at the very spot where it seemed the Bore was, the place where the Pattern lay thinnest of all.
Moghedien forgot the Myrddraal. She flung out her hands toward the Bore. “Mercy, Great Lord!” She had never noticed that the Great Lord of the Dark possessed any mercy, but had she been bound in a cell with rabid wolves or with a darath in moult, she would have begged the same. In the right circumstances, you begged even for the impossible. The cour’souvra hung in midair, turning slowly, glittering in the light of leaping fires below. “I have served you with all my heart, Great Lord. I beg mercy. I beg! MERCYYYYYYY!”
YOU MAY SERVE ME STILL.
The voice flung her into ecstasy beyond knowing, but at the same instant the sparkling mindtrap suddenly glowed like the sun, and in the midst of rapture, she knew pain as if she had been immersed in the fiery lake. They blended, and she howled, thrashing like a mad thing, thrashing in endless pain, endless, until after Ages, after nothing remained but agony and the memory of agony, the tiny mercy of darkness overwhelmed her.
Moghedien stirred on the pallet. Not again. Please.
She barely recognized the woman who entered the tent where she was held prisoner.
Please, she shrieked in the depths of her mind.
The woman channeled to make a light, and Moghedien saw only the light.
Deep in sleep, she quivered, vibrating from head to toe. Please!
The woman named herself Aran’gar and called Moghedien by name, she gave summons to the Pit of Doom and—
“Wake, woman,” said a voice like rotted bone crumbling, and Moghedien’s eyes popped open. She almost wished for the dream back.
No door or window broke the featureless stone walls of her small prison, and there were no glowbulbs or even lamps, but light came from somewhere. She did not know how many days she had been there, only that tasteless food appeared at irregular intervals, that the single bucket serving for sanitation was emptied at even more irregular times, and soap and a bucket of perfumed water were somehow left for her to clean herself. She was not sure whether that was a mercy or not; the glad thrill at seeing a bucket of water reminded her how far she had fallen. Shaidar Haran was in the cell with her now.
Hurriedly rolling from her pallet, she knelt and put her face to the bare stone floor. She had always done whatever was necessary for survival, and the Myrddraal had been all too glad to teach her what was necessary. “I greet you eagerly, Mia’cova.” The lashed-together title burned on her tongue. “One Who Owns Me,” it meant, or simply, “My Owner.” The strange shield Shaidar Haran had used on her—Myrddraal could not, but it did—the shield was not in evidence, yet she did not consider channeling. The True Power was denied her, of course—that could be drawn only with the Great Lord’s blessing—but the Source tantalized, though the glow just beyond sight seemed somehow odd. She still did not consider it. Every time the Myrddraal visited, it displayed her mindtrap. Channeling too near your own cour’souvra was extremely painful, the nearer, the more the pain; this close, she did not think she would survive a simple touch on the Source. And that was the least of the mindtrap’s dangers.
Shaidar Haran chuckled, a rasp of dried, cracked leather. That was another difference about this Myrddraal. Far more cruel than Trollocs, who were merely bloodthirsty, Myrddraal were cold and dispassionate in it. Shaidar Haran often showed amusement, though. So far she felt lucky to have only bruises. Most women would have been on the brink of madness by now, if not beyond.
“And are you eager to obey?” that rustling, grating voice asked.
“Yes, I am eager to obey, Mia’cova.” Whatever was necessary to survive. But she still gasped when cold fingers suddenly tangled in her hair. She scrambled to her feet on her own as much as possible, but still was hauled up. At least this time her feet remained on the floor. The Myrddraal studied her, expressionless. Remembering past visits, it required an effort not to flinch, or scream, or simply reach for saidar and make an end.
“Close your eyes,” it told her, “and keep them closed until you are commanded to open them.”
Moghedien’s eyes snapped shut. One of Shaidar Haran’s lessons had been instant obedience. Besides, with her eyes closed, she could try to pretend that she was somewhere else. Whatever was necessary.
Abruptly the hand in her hair rushed her forward, and she screamed in spite of herself. The Myrddraal meant to run her into the wall. Her hands went up for protection, and Shaidar Haran released her. She staggered at least ten steps—but her cell was not ten paces corner to corner. Wood smoke; she smelled a faint touch of wood smoke. She kept her eyelids firmly closed, though. She meant to continue with no more than bruises, and as few bruises as possible, for as long as she could manage.
“You can look now,” a deep voice said.
She did, cautiously. The speaker was a tall, broad-shouldered young man in black boots and breeches and a flowing white shirt unlaced at the top, who watched her with startlingly blue eyes from a deep, cushioned armchair in front of a marble fireplace where flames danced along long logs. She stood in a wood-paneled room that might have belonged to a wealthy merchant or noble of moderate rank in this time, the furniture lightly carved and touched with gilt, the rugs woven in red-and-gold arabesques. She did not doubt it was somewhere close by Shayol Ghul, though; it did not have the feel of Tel’aran’rhiod, the only other possibility. Swiveling her head hastily, she drew a deep breath. The Myrddraal was nowhere to be seen. Tight bands of cuande seemed to vanish from around her chest.
“Did you enjoy your time in the vacuole?”
Moghedien felt icy fingers dig into her scalp. She was no researcher or maker, but she knew that word. She did not even think to ask how a young man of this time did, too. Sometimes there were bubbles in the Pattern, though someone like Mesaana would say that was too simple an explanation. Vacuoles could be entered, if you knew how, and manipulated much like the rest of the world—researchers had often done great experiments in vacuoles, so she vaguely remembered hearing—but they were outside the Pattern really, and sometimes they closed up, or perhaps broke off and drifted away. Even Mesaana could not say what happened—except that anything in them at the time was gone forever.
“How long?” She was surprised her voice was so steady. She rounded on the young man, who sat there showing her white teeth. “I said, how long?  ” He paused, lifting a silver goblet from the table beside his chair, eyes smiling at her over the rim as he drank. “ . . . the night before last.”
She could not hide a relieved gasp. The only reason anyone would want to enter a vacuole was that time flowed differently there, sometimes slower, sometimes faster. Sometimes much faster. She would not have been entirely surprised to learn that the Great Lord had really imprisoned her for a hundred years, or a thousand, to emerge into a world already his, to make her way feeding among carrion while the other Chosen stood at the pinnacle. She was still one of the Chosen, in her own mind, at least. Until the Great Lord himself said she was not. She had never heard of anyone being released once a mindtrap was set, but she would find a way. There was always a way for those who were cautious, while those fell who called caution cowardice. She herself had carried a few of that so-called brave sort to Shayol Ghul to be fitted with cour’souvra.
Suddenly, it occurred to her that this fellow knew a great deal for a Friend of the Dark, especially one not many years past twenty. He swung one leg over an arm of the chair, lounging insolently under her scrutiny. Graendal might have snatched him, if he had any position or power; only too strong a chin kept him from being pretty enough. She did not think she had ever seen eyes so blue. With his insolence in her very face and what she had had to endure at Shaidar Haran’s hands so fresh, with the Source calling her and the Myrddraal gone, she considered teaching this young Friend of the Dark a sharp lesson. The fact that her clothes were grimy added their part; she herself smelled faintly of the perfume in the wash water, but she had had no way to clean the rough woolen dress in which she fled Egwene al’Vere, with its rips from her journey down to the Pit. Prudence prevailed—this room must be close to Shayol Ghul—but barely.
“What is your name?” she demanded. “Do you have any idea who you are speaking to?”
“Yes, I do, Moghedien. You may call me Moridin.”
Moghedien gasped. Not for the name; any fool could call himself Death.  This Moridin had tapped into the True Power, and more than once. Much more. She knew that some men who could channel survived in this time aside from al’Thor—this fellow was much of a size with al’Thor—but she had not expected the Great Lord to allow one that particular honor. An honor with a bite, as any of the Chosen knew. In the long run, the True Power was far more addictive than the One Power; a strong will could hold down the desire to draw more saidar or saidin, but she herself did not believe the will existed strong enough to resist the True Power, not once the saa appeared in your eyes. The final price was different, but no less terrible.
“You have been given distinction greater than you know,” she told him. As though her filthy dress was the finest streith, she took the armchair opposite him. “Bring me some of that wine, and I will tell you.  “You misapprehend, Moghedien. You still serve the Great Lord, but not quite as you once did. The time for playing your own games has passed. If you had not managed to do some good by accident, you would be dead now.”
“I am one of the Chosen, boy,” she said, fury burning through caution. She sat up straight, facing him with all the knowledge of an Age that made his little different from times of mud huts. As much of that knowledge as she had, anyway, and in some areas, concerning the One Power, no one outstripped her. She almost embraced the Source no matter how close Shayol Ghul lay. “Your mother probably used my name to frighten you not so many years gone, but know that grown men who could crumple you like a rag sweated when they heard it. You will watch your tongue with me!”
He reached into the open neck of his shirt, and her own tongue clove to the roof of her mouth. Her eyes fixed on the small cage of gold wire and blood-red crystal that he drew out dangling on a cord. She thought vaguely that he tucked another just like it back in, but she had eyes only for her own. It definitely was hers. His thumb stroked, and she felt that caress across her mind, her soul. Breaking a mindtrap did not require much more pressure than he was using. She could be on the other side of the world or farther, and it would not matter a hair. The part of her that was her would be separated; she would still see with her eyes and hear with her ears, taste what crossed her tongue and feel what touched her, but helpless within an automaton that was utterly obedient to whoever held the cour’souvra. Whether or not there was any way to get free of it, a mindtrap was just what its name implied. She could feel the blood draining from her face.
“You understand now?” he said. “You still serve the Great Lord, but now it will be by doing as I say.”
“I understand, Mia’cova,” she said automatically.
Again he laughed, a deep rich sound that mocked her as he put the mindtrap away beneath his shirt. “There is no need for that, now you’ve had your lesson.  You are still one of the Chosen. Who is there to replace you?”
“Yes, of course, Moridin,” she said tonelessly. Whatever he said, she knew that she was owned.


{% extends "census/base.html" %} {% load static %} {% block content %} {% if not user.is_staff %}
Please sign in as administrator to view this page or do anything
{% else %}Here is a list of the copies librarians have edited.
Please check the details and verify the information.
| Copy | ||||
|---|---|---|---|---|
| {{ copy.issue.edition.title }} ({{ copy.issue.year }}) -- STC/Wing: {{ copy.issue.STC_Wing }} | Original Version | New Version |


@Byline:By Michael Redman
Ulee's Gold A Film Review By Michael Redman Copyright 1997 Michael Redman
*** (out of ****)
This "small" film concerning the life a beekeeper in the Florida panhandle is surprisingly enjoyable. The biggest surprise is that, as many people do, Peter Fonda has become his father.
Ulee Jackson (Fonda) is a Vietnam vet who has never recovered from his wife's death several years ago and would like nothing more than to retire from the world and spend his the rest of his life tending his bees and harvesting Tupelo Honey. Because his estranged son Jimmy (Tom Wood) is in prison and his daughter-in-law Helen (Christine Dunford) abandoned the family, Ulee is raising his two granddaughters. He's doing the best he can in a situation that he didn't create.
And things get worse. Jimmy calls to tell him that Helen is strung out and staying with his former partners-in-crime in Orlando. She needs rescuing. Ulee's existence is based on duty: to the bees, to his little girls and now to Helen. He drives his pick-up to carry the unconscious woman back home.
The robbers are archetypal sleezoids and threaten the family unless Ulee comes up with money that Jimmy kept from the robbery and hid in a swamp. Unlike other directors, Victor Nunez doesn't go for the big gun shoot-em-up scenes. The intimidation and threat of harm are readily apparent and create a tension, but the only actual violence is realistically understated.
With the help of a nurse neighbor, he helps Helen through her cold turkey while, at the same time, attempts to deal with the threats. His life of quiet desperation has gotten a lot louder.
In many ways, it's easy to see Ulee as Fonda's "Easy Rider" Captain America as he has gotten older. (Of course the fact that the character was killed at the end of that generation-defining film makes it a bit difficult for this to be fact.) In that film, he was a loner looking for America, now he is a loner looking for his soul.
Very different from the vast majority of the summer cinema fare, this is a breath of fresh air. Don't expect any explosions or bug-eyed aliens, but you'll find a glimpse into the inner workings of a human being.
[This appeared in the 7/24/97 "Bloomington Voice", Bloomington, Indiana. Michael Redman can be reached at<EMAIL_ADDRESS>] --<EMAIL_ADDRESS>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


{% extends "pretixcontrol/event/settings_base.html" %} {% load i18n %} {% load staticfiles %} {% load bootstrap3 %} {% block inside %}
{% blocktrans trimmed %} Permission settings have moved and are now configured as part of an organizer account instead of every event on its own. {% endblocktrans %}
{% trans "Go to the organizer team settings" %}


Utils¶
-
class
O365.utils.utils.
ApiComponent
(*, protocol=None, main_resource=None, **kwargs)[source]¶ Bases:
object
Base class for all object interactions with the Cloud Service API
Exposes common access methods to the api protocol within all Api objects
-
__init__
(*, protocol=None, main_resource=None, **kwargs)[source]¶ Object initialization
Parameters: - protocol (Protocol) – A protocol class or instance to be used with this connection
- main_resource (str) – main_resource to be used in these API communications
-
build_url
(endpoint)[source]¶ Returns a url for a given endpoint using the protocol service url
Parameters: endpoint (str) – endpoint to build the url for Returns: final url Return type: str
-
-
class
O365.utils.utils.
ChainOperator
[source]¶ Bases:
enum.Enum
An enumeration.
-
AND
= 'and'¶
-
OR
= 'or'¶
-
-
class
O365.utils.utils.
ImportanceLevel
[source]¶ Bases:
enum.Enum
An enumeration.
-
High
= 'high'¶
-
Low
= 'low'¶
-
Normal
= 'normal'¶
-
-
class
O365.utils.utils.
OneDriveWellKnowFolderNames
[source]¶ Bases:
enum.Enum
An enumeration.
-
APP_ROOT
= 'approot'¶
-
ATTACHMENTS
= 'attachments'¶
-
CAMERA_ROLL
= 'cameraroll'¶
-
DOCUMENTS
= 'documents'¶
-
MUSIC
= 'music'¶
-
PHOTOS
= 'photos'¶
-
-
class
O365.utils.utils.
OutlookWellKnowFolderNames
[source]¶ Bases:
enum.Enum
An enumeration.
-
DELETED
= 'DeletedItems'¶
-
DRAFTS
= 'Drafts'¶
-
INBOX
= 'Inbox'¶
-
JUNK
= 'JunkEmail'¶
-
OUTBOX
= 'Outbox'¶
-
SENT
= 'SentItems'¶
-
-
class
O365.utils.utils.
Pagination
(*, parent=None, data=None, constructor=None, next_link=None, limit=None)[source]¶ Bases:
O365.utils.utils.ApiComponent
Utility class that allows batching requests to the server
-
__init__
(*, parent=None, data=None, constructor=None, next_link=None, limit=None)[source]¶ Returns an iterator that returns data until it’s exhausted. Then will request more data (same amount as the original request) to the server until this data is exhausted as well. Stops when no more data exists or limit is reached.
Parameters: - parent – the parent class. Must implement attributes: con, api_version, main_resource
- data – the start data to be return
- constructor – the data constructor for the next batch. It can be a function.
- next_link (str) – the link to request more data to
- limit (int) – when to stop retrieving more data
-
-
class
O365.utils.utils.
Query
(attribute=None, *, protocol)[source]¶ Bases:
object
Helper to conform OData filters
-
__init__
(attribute=None, *, protocol)[source]¶ Build a query to apply OData filters https://docs.microsoft.com/en-us/graph/query-parameters
Parameters: - attribute (str) – attribute to apply the query for
- protocol (Protocol) – protocol to use for connecting
-
all
(*, collection, attribute, word, func=None, operation=None)[source]¶ Performs a filter with the OData ‘all’ keyword on the collection
For example: q.any(collection=’email_addresses’, attribute=’address’, operation=’eq’<EMAIL_ADDRESS>will transform to a filter such as:
emailAddresses/all(a:a/address eq<EMAIL_ADDRESS>Parameters: - collection (str) – the collection to apply the any keyword on
- attribute (str) – the attribute of the collection to check
- word (str) – the word to check
- func (str) – the logical function to apply to the attribute inside the collection
- operation (str) – the logical operation to apply to the attribute inside the collection
Return type: Note
This method is part of fluent api and can be chained
-
any
(*, collection, attribute, word, func=None, operation=None)[source]¶ Performs a filter with the OData ‘any’ keyword on the collection
For example: q.any(collection=’email_addresses’, attribute=’address’, operation=’eq’<EMAIL_ADDRESS>will transform to a filter such as:
emailAddresses/any(a:a/address eq<EMAIL_ADDRESS>Parameters: - collection (str) – the collection to apply the any keyword on
- attribute (str) – the attribute of the collection to check
- word (str) – the word to check
- func (str) – the logical function to apply to the attribute inside the collection
- operation (str) – the logical operation to apply to the attribute inside the collection
Return type: Note
This method is part of fluent api and can be chained
-
chain
(operation=<ChainOperator.AND: 'and'>)[source]¶ Start a chain operation
Parameters: operation (ChainOperator) – how to combine with a new one Return type: Query Note
This method is part of fluent api and can be chained
-
clear
()[source]¶ Clear everything
Return type: Query Note
This method is part of fluent api and can be chained
-
contains
(word)[source]¶ Adds a contains word check
Parameters: word (str) – word to check Return type: Query Note
This method is part of fluent api and can be chained
-
endswith
(word)[source]¶ Adds a endswith word check
Parameters: word (str) – word to check Return type: Query Note
This method is part of fluent api and can be chained
-
equals
(word)[source]¶ Add a equals check
Parameters: word (str) – word to compare with Return type: Query Note
This method is part of fluent api and can be chained
-
function
(function_name, word)[source]¶ Apply a function on given word
Parameters: - function_name (str) – function to apply
- word (str) – word to apply function on
Return type: Note
This method is part of fluent api and can be chained
-
greater
(word)[source]¶ Add a greater than check
Parameters: word (str) – word to compare with Return type: Query Note
This method is part of fluent api and can be chained
-
greater_equal
(word)[source]¶ Add a greater than or equal to check
Parameters: word (str) – word to compare with Return type: Query Note
This method is part of fluent api and can be chained
-
has_filters
¶ Whether the query has filters or not
Return type: bool
-
has_order
¶ Whether the query has order_by or not
Return type: bool
-
has_selects
¶ Whether the query has select filters or not
Return type: bool
-
iterable
(iterable_name, *, collection, attribute, word, func=None, operation=None)[source]¶ Performs a filter with the OData ‘iterable_name’ keyword on the collection
For example: q.iterable(‘any’, collection=’email_addresses’, attribute=’address’, operation=’eq’<EMAIL_ADDRESS>will transform to a filter such as: emailAddresses/any(a:a/address eq<EMAIL_ADDRESS>Parameters: - iterable_name (str) – the OData name of the iterable
- collection (str) – the collection to apply the any keyword on
- attribute (str) – the attribute of the collection to check
- word (str) – the word to check
- func (str) – the logical function to apply to the attribute inside the collection
- operation (str) – the logical operation to apply to the attribute inside the collection
Return type: Note
This method is part of fluent api and can be chained
-
less
(word)[source]¶ Add a less than check
Parameters: word (str) – word to compare with Return type: Query Note
This method is part of fluent api and can be chained
-
less_equal
(word)[source]¶ Add a less than or equal to check
Parameters: word (str) – word to compare with Return type: Query Note
This method is part of fluent api and can be chained
-
logical_operator
(operation, word)[source]¶ Apply a logical operator
Parameters: - operation (str) – how to combine with a new one
- word – other parameter for the operation (a = b) would be like a.logical_operator(‘eq’, ‘b’)
Return type: Note
This method is part of fluent api and can be chained
-
negate
()[source]¶ Apply a not operator
Return type: Query Note
This method is part of fluent api and can be chained
-
new
(attribute, operation=<ChainOperator.AND: 'and'>)[source]¶ Combine with a new query
Parameters: - attribute (str) – attribute of new query
- operation (ChainOperator) – operation to combine to new query
Return type: Note
This method is part of fluent api and can be chained
-
on_attribute
(attribute)[source]¶ Apply query on attribute, to be used along with chain()
Parameters: attribute (str) – attribute name Return type: Query Note
This method is part of fluent api and can be chained
-
order_by
(attribute=None, *, ascending=True)[source]¶ Applies a order_by clause
Parameters: - attribute (str) – attribute to apply on
- ascending (bool) – should it apply ascending order or descending
Return type: Note
This method is part of fluent api and can be chained
-
select
(*attributes)[source]¶ Adds the attribute to the $select parameter
Parameters: attributes (str) – the attributes tuple to select. If empty, the on_attribute previously set is added. Return type: Query Note
This method is part of fluent api and can be chained
-


Dancer is the basis for an electronic toy that allows the user to control the movements of a dancing character using the keyboard.
Lingo issues I'm looking to learn more about here are:
¥ animating sequences using lists
¥ using the keyboard to trigger sequences or pause the animation
¥ working with behaviors and properties
understanding case statements


Text should be centered
hover on buttons should change pointer full width of button
on small, should work the same
Connect With Us:
Contact Info:
Phone:<PHONE_NUMBER>
Email<EMAIL_ADDRESS>Make sure the above container is not greater than 600px or looks awkwardly too wide.


Dealing with SOAP Web Services
Objective
In this chapter, you will examine how you can interact with SOAP web services in Titanium.
Contents
In some enterprise settings, "Simple" Object Access Protocol (SOAP) is the format for XML data returned by a web service. SOAP web services are very much possible in Titanium, though they are the least simple option.
Avoid SOAP if you can
Although you can use SOAP web services (this may be your only option, especially if you are dealing with a 3rd party or legacy interface), it is recommended to avoid using SOAP web services in a Titanium application. SOAP retains the disadvantages of XML:
-
The overhead of XML over the wire
-
The need to translate from an XML format to a JavaScript object format
And compounds them because SOAP is even more verbose (much more XML being transported over the wire), and the results are even more difficult to parse. Some programming languages provide high-level tools, WSDL parsers, and other mechanisms to work around the complexities of a SOAP format, but JavaScript has historically never had any of those types of tools. This remains the case today, and as such, there are very few high-level libraries and tools to support SOAP in JavaScript.
The low-tech approach
The approach taken by a number of Titanium projects we have worked on is to stay very low-tech and POST manually-created SOAP envelopes (XML strings) to a web service endpoint. If you understand how HTTP and SOAP work together, you can manually construct a SOAP envelope to send to your server, with the appropriate contents:
var client = Ti.Network.createHTTPClient();
client.onload = function() {
var doc = this.responseXML.documentElement;
//manually parse the SOAP XML document
};
var soapRequest = "<?xml version=\"1.0\" encoding=\"UTF-8\"?> \n" +
"<SOAP-ENV:Envelope xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\" \n" +
"xmlns:SOAP-ENC=\"http://schemas.xmlsoap.org/soap/encoding/\" \n" +
"xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n" +
"xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" \n" +
"xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" \n" +
"xmlns:wsse=\"http://schemas.xmlsoap.org/ws/2002/12/secext\"> \n" +
"<SOAP-ENV:Body id=\"_0\"> \n" +
"<GetUserDetailsReq> \n" +
"<Request> \n" +
"<SessionToken xsi:type=\"ns:IVRSessionToken\">XXXX</SessionToken> \n" +
"</Request> \n" +
"</GMGetUserDetailsReq> \n" +
"</SOAP-ENV:Body> \n" +
"</SOAP-ENV:Envelope>";
client.open('POST', 'https://someserver.com/someendpoint.asmx');
client.send({xml: soapRequest});
Bear in mind the above SOAP envelope is completely made up and derived from another service. In order to use your own SOAP web services in this fashion, you will need to understand what the contents of a SOAP request to your server actually looks like as an HTTP request. Here, other third party tools can help, particularly ones that let you inspect the raw HTTP requests and responses for your web service. On the Mac, you might consider using SOAP Client. The Eclipse Web Tools project also has a bit of SOAP oriented tooling.
Using the Suds library
Also possibly useful is the Suds client library for Titanium. It is an unofficial library and not in any way supported by Appcelerator, but it may be useful as a reference in building your own SOAP client.
References and Further Reading
Summary
In this chapter, you learned that you can interact with SOAP web services in Titanium, but that SOAP involves extra overhead and larger data payloads compared to JSON or XML.


When you deduct something you take something away.
If you deduct nine from 21, you are taking nine away, that is 21 - 9 = 12.


SwissArmyKnife QuantConnect.Indicators.SwissArmyKnife (int
period,double
delta,SwissArmyKnifeTool
tool )
Swiss Army Knife indicator by John Ehlers.
SwissArmyKnife QuantConnect.Indicators.SwissArmyKnife (string
name,int
period,double
delta,SwissArmyKnifeTool
tool )
Swiss Army Knife indicator by John Ehlers.


About Us
We are part of the computer science program at Quinsigamond Community College. Many of our computer science courses focus on individual and group work on developing real world applications.
We have several developers working on projects. A list of our developers is:
- Project Leader and Instructor: Professor Hao Loi
- Team Leader: Ian Hickey: Java Palette, C++ Palette, FireRecord
- Bill Jellesma: PHP Palette, FireRecord, Java Chat
- Peter Atechian: C++ Palette, FireRecord
- Tim Mesite: JavaScript Palette
- Rylan Doherty: FireRecord
- David Westgate: FireRecord


{% extends "shared/home/base.html" %} {% block site_js %} {{ super() }} {{ js('browserid') }} {% endblock %} {% block highlight_box %}
{% trans browserid_url='https://browserid.org' %} Firefox Affiliates has switched to BrowserID. If you previously had an account, use the login button below and sign up for BrowserID with the same email address you used for signing up with Firefox Affiliates. {% endtrans %}
{% trans %} Want to be a Firefox Affiliate? Sign up using BrowserID by clicking the registration button below. {% endtrans %}


{{orgs}}
| jobs 1 | jobs 2 | jobs 3 | jobs 4 | jobs 5 | FIRST INFORMATION | Brand one info | Brand two info | Brand three info | Brand four info | Brand five info |
|---|---|---|---|---|---|
| SECOND INFORMATION | Brand one info | Brand two info | Brand three info | Brand four info | Brand five info |
| THIRD INFORMATION | Brand one info | Brand two info | Brand three info | Brand four info | Brand five info |
| FOURTH INFORMATION | Brand one info | Brand two info | Brand three info | Brand four info | Brand five info |


Create KiCad PCB files from KLE json files
IMPORTANT: This app has been superseded by MrKeebs Keyboard Filmware Builder AND IT DOESN'T YET generates a valid PCB.


VUCS
Guest Lecture Series
Welcome to Intro to JavaScript
Mark England
Statements
Statements
let name, age;
name = 'Mark';
age = 35;
let gameOver = age + 50;
Variables
let name, age;
name = 'Mark';
age = 35;
let gameOver = age + 50;
Types
let name = 'Mark';
let age = 35;
let isWearingShoes = true;
Objects
let person = {
name: 'Mark';
age: 35,
isWearingShoes: true
}
if (person.isWearingShoes) {
console.log(`Hey ${person.name}, nice shoes!`)
} else {
console.log(`Hey ${person.name}, this is a Walmart.`)
}
Arrays
let lottoNumbers = [13, 5, 54, 22, 2];
let babyNames = ['Gregor', 'Charlesphine', 'Hansel', 'Tomothy'];
Control Flow
let x = 0;
while (x < 10) {
x++;
}
Control Flow
let x,y = 0;
if (x == y) {
/* statement_1 */
} else {
/* statement_2 */
}
Functions
let isEven = function (x) {
return x % 2 === 0;
}
isEven(4);
isEven(13);
Browser functionality
Browser functionality
confirm('Are you sure?');
print();
scrollTo(0, 0);
The Document Object Model (DOM)
VUCS
Guest Lecture Series
Welcome to Intro to JavaScript
Browser APIs
Requests
BroadcastChannel
let channel = new BroadcastChannel('vucs-lecture');
channel.onmessage = function (ev) {
let nameElement = document.getElementById('vucs-name');
nameElement.innerHTML = ev.data;
}
let msgButton = document.getElementById('vucs-message-button');
msgButton.addEventListener('click', function () {
let nameInputElement = document.getElementById('vucs-name-input');
channel.postMessage(nameInputElement.value);
});
What makes JavaScript great?
What makes JavaScript great?
What makes JavaScript bad?
What makes JavaScript bad?
What's next for JavaScript?
More info:


Airbnb acts to ban ‘party houses’ after five killed in Halloween shooting
Airbnb has vowed to ban “party houses” in the wake of a deadly shooting at a rented property in California.
In a series of tweets on Saturday, Airbnb co-founder and chief executive Brian Chesky said the San Francisco-based company is stepping up efforts to “combat unauthorised parties and get rid of abusive host and guest conduct”.
He said Airbnb is expanding manual screening of “high risk” reservations that are flagged by its system, and is also forming a rapid response team dedicated to house parties.
The company will remove guests who fail to comply, Mr Chesky said.
It comes after five people were killed in a Halloween party shooting in the San Francisco suburb of Orinda.
Police said more than 100 people had gathered for the party.
The home, surrounded by trees and up a steep driveway, had been rented on Airbnb by a woman who told the owner her large family needed a location with fresh air to escape wildfires near their home.
A one-night rental on Halloween was suspicious enough that the owner reminded the renter that no parties were allowed.
Michael Wang, who owns the four-bedroom house, said his wife contacted the renter on Thursday night after neighbours told them about the party.
The renter, who has not been identified, said there were only a dozen people at the home but Mr Wang said he could see more people on video from his doorbell camera.
“We called the police. They were on the way to go there to stop them, but before we got there the neighbour already sent us a message saying there was a shooting,” he told the San Francisco Chronicle in a phone interview.
“When we arrived there, the police were already there.”
Mr Chesky said in a tweet: “What happened on Thursday night in Orinda was horrible. I feel for the families and neighbours impacted by this tragedy. We are working to support them.”
House parties have long been an issue for Airbnb.
In 2018, Airbnb permanently banned a man who crammed more than 250 people into an Airbnb rental in Seven Hills, Ohio, for an unauthorised new year party while his host hid in a bedroom.
In July, two people were killed during a party at an Airbnb in Pittsburgh.
READ MORE
Vietnamese community gathers for vigil to honour container lorry victims


Client Name Here 1
Site Events
Site Type
Is this an alert?
Site Type
Is this an alert?
Site Type
Is this an alert?
Issues / Comments?


Here we love motorcycles and Machine Learning, that's why we combined our
two passions and developed this awesome moto classifier.
Currently the app counts with:
-
Ten cathegories -> [off_road, naked, scooter, scrambler, cafe_racer, cruiser,
sport, touring, bike, quad]
-
A net precision of 60%
We're working to develop a more accurated model and add new stuffs :)
Upload new image
{% if success %}
{{success}}
{% endif %}
Upload an image of your favorite motorcycle and with help of ML we tell u what type it is:
{% block form %}
{% include 'base/new_image.html' %}
{% endblock %}
{% for image in images%}
{% block navbar %}
{% include 'base/card.html' %}
{% endblock %}
{% endfor %}


Ahyeon Jeon
About Me
I am an International student from South Korea and an alumna at WP. Carey in Arizona State University where I pursued my Bachelor’s degree in Supply Chain Management and for my International Business Studies Certificate. I am currently studying for my Bachelor’s degree in Applied Computer Science at the Dominican University of California.
My Experience
Roles & Responsibilities
Committee Chair, Asian Corporate Entrepreneur Leadership
September 2019 - February 2020
Organized potential events and meetings, meet with associates and guest speakers from various businesses for potential opportunities, participated in volunteer events throughout ASU campus
Marketing & Sales Assistant, Global Launch
January 2017 - April 2017
Helped future exchange students become familiar with Arizona State University and assisted with various student services
Executive Board Member, Korean Association Club
August 2016 - December 2016
Arranged gatherings for Korean students in the university by putting together special events enabling the Korean students to bond strongly
Coordinator, American Red Cross
August 2014 - August 2015
Helping with cleaning the public to provide a healthier environment & Organized several fundraising events such as marathons or sporting events for breast cancer
Technical Skills
Web Programming Skill
HTML, CSS, JavaScript
Programming Language
Python
Microsoft Office
Docs, Excel, Powerpoint
Tableau
Projects
"Click the Title to Check It Out!"
A website that uses HTML, CSS, and JavaScript which allows users to select the text width, height and color to apply it to the text
A website where I am able to purchase different moods and return the moods into the cart for the total price which uses HTML, CSS, and JS
A project that creates a website for a calculator for the tip that is made to calculate the total amount per person using HTML, CSS, and JavaScript
A Python game that is identical to hangman where the user has to guess the alphabetical letters within the number of trials that are given.
The first website that I made about myself is mainly focused on structuring the HTML and styling the website with CSS.
A game that can add, read, delete, update, and markdown the item list that is built within the program, Python.


| Methods in com.thoughtworks.xstream.core with parameters of type ClassMapper |
void |
ReferenceByXPathMarshallingStrategy.marshal(HierarchicalStreamWriter writer,
java.lang.Object obj,
DefaultConverterLookup converterLookup,
ClassMapper classMapper,
DataHolder dataHolder)
Deprecated. As of 1.2, use ReferenceByXPathMarshallingStrategy.marshal(HierarchicalStreamWriter, Object, ConverterLookup, Mapper, DataHolder) |
void |
TreeMarshallingStrategy.marshal(HierarchicalStreamWriter writer,
java.lang.Object obj,
DefaultConverterLookup converterLookup,
ClassMapper classMapper,
DataHolder dataHolder)
Deprecated. As of 1.2, use TreeMarshallingStrategy.marshal(HierarchicalStreamWriter, Object, ConverterLookup, Mapper, DataHolder) |
void |
ReferenceByIdMarshallingStrategy.marshal(HierarchicalStreamWriter writer,
java.lang.Object obj,
DefaultConverterLookup converterLookup,
ClassMapper classMapper,
DataHolder dataHolder)
Deprecated. As of 1.2, use ReferenceByIdMarshallingStrategy.marshal(HierarchicalStreamWriter, Object, ConverterLookup, Mapper, DataHolder) |
java.lang.Object |
ReferenceByXPathMarshallingStrategy.unmarshal(java.lang.Object root,
HierarchicalStreamReader reader,
DataHolder dataHolder,
DefaultConverterLookup converterLookup,
ClassMapper classMapper)
Deprecated. As of 1.2, use ReferenceByXPathMarshallingStrategy.unmarshal(Object, HierarchicalStreamReader, DataHolder, ConverterLookup, Mapper) |
java.lang.Object |
TreeMarshallingStrategy.unmarshal(java.lang.Object root,
HierarchicalStreamReader reader,
DataHolder dataHolder,
DefaultConverterLookup converterLookup,
ClassMapper classMapper)
Deprecated. As of 1.2, use TreeMarshallingStrategy.unmarshal(Object, HierarchicalStreamReader, DataHolder, ConverterLookup, Mapper) |
java.lang.Object |
ReferenceByIdMarshallingStrategy.unmarshal(java.lang.Object root,
HierarchicalStreamReader reader,
DataHolder dataHolder,
DefaultConverterLookup converterLookup,
ClassMapper classMapper)
Deprecated. As of 1.2, use ReferenceByIdMarshallingStrategy.unmarshal(Object, HierarchicalStreamReader, DataHolder, ConverterLookup, Mapper) |
| Constructors in com.thoughtworks.xstream.core with parameters of type ClassMapper |
DefaultConverterLookup(ClassMapper classMapper)
Deprecated. As of 1.2, use DefaultConverterLookup.DefaultConverterLookup(Mapper) |
ReferenceByIdMarshaller(HierarchicalStreamWriter writer,
ConverterLookup converterLookup,
ClassMapper classMapper)
Deprecated. As of 1.2, use ReferenceByIdMarshaller.ReferenceByIdMarshaller(HierarchicalStreamWriter, ConverterLookup, Mapper) |
ReferenceByIdMarshaller(HierarchicalStreamWriter writer,
ConverterLookup converterLookup,
ClassMapper classMapper,
ReferenceByIdMarshaller.IDGenerator idGenerator)
Deprecated. As of 1.2, use ReferenceByIdMarshaller.ReferenceByIdMarshaller(HierarchicalStreamWriter, ConverterLookup, Mapper, IDGenerator) |
ReferenceByIdUnmarshaller(java.lang.Object root,
HierarchicalStreamReader reader,
ConverterLookup converterLookup,
ClassMapper classMapper)
Deprecated. As of 1.2, use ReferenceByIdUnmarshaller.ReferenceByIdUnmarshaller(Object, HierarchicalStreamReader, ConverterLookup, Mapper) |
ReferenceByXPathMarshaller(HierarchicalStreamWriter writer,
ConverterLookup converterLookup,
ClassMapper classMapper)
Deprecated. As of 1.2, use ReferenceByXPathMarshaller.ReferenceByXPathMarshaller(HierarchicalStreamWriter, ConverterLookup, Mapper, int) |
ReferenceByXPathUnmarshaller(java.lang.Object root,
HierarchicalStreamReader reader,
ConverterLookup converterLookup,
ClassMapper classMapper)
Deprecated. As of 1.2, use ReferenceByXPathUnmarshaller.ReferenceByXPathUnmarshaller(Object, HierarchicalStreamReader, ConverterLookup, Mapper) |
TreeMarshaller(HierarchicalStreamWriter writer,
ConverterLookup converterLookup,
ClassMapper classMapper)
Deprecated. As of 1.2, use TreeMarshaller.TreeMarshaller(HierarchicalStreamWriter, ConverterLookup, Mapper) |
TreeUnmarshaller(java.lang.Object root,
HierarchicalStreamReader reader,
ConverterLookup converterLookup,
ClassMapper classMapper)
Deprecated. As of 1.2, use TreeUnmarshaller.TreeUnmarshaller(Object, HierarchicalStreamReader, ConverterLookup, Mapper) |
| Constructors in com.thoughtworks.xstream.mapper with parameters of type ClassMapper |
ArrayMapper(ClassMapper wrapped)
Deprecated. As of 1.2, use ArrayMapper.ArrayMapper(Mapper) |
CachingMapper(ClassMapper wrapped)
Deprecated. As of 1.2, use CachingMapper.CachingMapper(Mapper) |
ClassAliasingMapper(ClassMapper wrapped)
Deprecated. As of 1.2, use ClassAliasingMapper.ClassAliasingMapper(Mapper) |
DefaultImplementationsMapper(ClassMapper wrapped)
Deprecated. As of 1.2, use DefaultImplementationsMapper.DefaultImplementationsMapper(Mapper) |
DynamicProxyMapper(ClassMapper wrapped)
Deprecated. As of 1.2, use DynamicProxyMapper.DynamicProxyMapper(Mapper) |
DynamicProxyMapper(ClassMapper wrapped,
java.lang.String alias)
Deprecated. As of 1.2, use DynamicProxyMapper.DynamicProxyMapper(Mapper, String) |
EnumMapper(ClassMapper wrapped)
Deprecated. As of 1.2, use EnumMapper.EnumMapper(Mapper) |
FieldAliasingMapper(ClassMapper wrapped)
Deprecated. As of 1.2, use FieldAliasingMapper.FieldAliasingMapper(Mapper) |
ImmutableTypesMapper(ClassMapper wrapped)
Deprecated. As of 1.2, use ImmutableTypesMapper.ImmutableTypesMapper(Mapper) |
ImplicitCollectionMapper(ClassMapper wrapped)
Deprecated. As of 1.2, use ImplicitCollectionMapper.ImplicitCollectionMapper(Mapper) |
MapperWrapper(ClassMapper wrapped)
Deprecated. As of 1.2, use MapperWrapper.MapperWrapper(Mapper) |
OuterClassMapper(ClassMapper wrapped)
Deprecated. As of 1.2, use OuterClassMapper.OuterClassMapper(Mapper) |
OuterClassMapper(ClassMapper wrapped,
java.lang.String alias)
Deprecated. As of 1.2, use OuterClassMapper.OuterClassMapper(Mapper, String) |
XmlFriendlyMapper(ClassMapper wrapped)
Deprecated. As of 1.2, use XmlFriendlyMapper.XmlFriendlyMapper(Mapper) |


Excel Extension Tests
Cell conversions
HTML Directive
Paragraph Layout
Table Command
Table Layout
Table With Inline Paragraphs
Two Touching Tables


Work Begins on HTML5.1
Posted on 22-May-2016 by Svetlin Nakov
The World Wide Web Consortium (W3C) has begun work on HTML5.1, and this time it is handling the creation of the standard a little differently. The specification has its own GitHub project where anyone can see what is happening and propose changes.
The organization says the goal for the new specification is "to match reality better, to make the specification as clear as possible to readers, and of course to make it possible for all stakeholders to propose improvements, and understand what makes changes to HTML successful."
Creating HTML5 took years, but W3C hopes using GitHub will speed up the process this time around. It plans to release a candidate recommendation for HTML5.1 by June and a full recommendation in September.
Windows 10 Preview with Bash Support Now Available
Posted on 20-May-2016 by Vikash Jain
Microsoft has released a new Windows 10 Insider Preview that includes native support for Bash running on Ubuntu Linux. The company first announced the new feature at last week's Build development conference, and it was one of the biggest stories of the event. The current process for installing Bash is a little complication, but Microsoft has a blog post that explains how the process works.
The preview build also includes Cortana upgrades, extensions support, the new Skype Universal Windows Platform app and some interface improvements.
Work Begins on HTML5.1
Posted on 22-May-2016 by Svetlin Nakov
The World Wide Web Consortium (W3C) has begun work on HTML5.1, and this time it is handling the creation of the standard a little differently. The specification has its own GitHub project where anyone can see what is happening and propose changes.
The organization says the goal for the new specification is "to match reality better, to make the specification as clear as possible to readers, and of course to make it possible for all stakeholders to propose improvements, and understand what makes changes to HTML successful."
Creating HTML5 took years, but W3C hopes using GitHub will speed up the process this time around. It plans to release a candidate recommendation for HTML5.1 by June and a full recommendation in September.
Windows 10 Preview with Bash Support Now Available
Posted on 20-May-2016 by Vikash Jain
Microsoft has released a new Windows 10 Insider Preview that includes native support for Bash running on Ubuntu Linux. The company first announced the new feature at last week's Build development conference, and it was one of the biggest stories of the event. The current process for installing Bash is a little complication, but Microsoft has a blog post that explains how the process works.
The preview build also includes Cortana upgrades, extensions support, the new Skype Universal Windows Platform app and some interface improvements.


On Tue, 2011-03-01 at 18:02 +0530, Abhishek Kona wrote:> Hi folks
>
> What is the best way to clear a Riak bucket of all key, values after
> running a test?
> I am currently using the Java HTTP API.
You can list the keys for the bucket and call delete for each. Or if you put the keys (and kept track of them in your test) you can delete them one at a time (without incurring the cost of calling list first.)
Something like:
String bucket = "my_bucket"; BucketResponse bucketResponse = riakClient.listBucket(bucket); RiakBucketInfo bucketInfo = bucketResponse.getBucketInfo(); for(String key : bucketInfo.getKeys()) { riakClient.delete(bucket, key); }
would do it.
See also
http://wiki.basho.com/REST-API.html#Bucket-operations
which says
"At the moment there is no straightforward way to delete an entire Bucket. There is, however, an open
ticket for the feature. To delete all the keys in a bucket, you’ll need to delete them all individually."


If we take 47, reverse and add, 47 + 74 = 121, which is palindromic.
Not all numbers produce palindromes so quickly. For example,
349 + 943 = 1292,
1292 + 2921 = 4213
4213 + 3124 = 7337
That is, 349 took three iterations to arrive at a palindrome.
Although no one has proved it yet, it is thought that some numbers, like 196, never produce a palindrome. A number that never forms a palindrome through the reverse and add process is called a Lychrel number. Due to the theoretical nature of these numbers, and for the purpose of this problem, we shall assume that a number is Lychrel until proven otherwise. In addition you are given that for every number below ten-thousand, it will either (i) become a palindrome in less than fifty iterations, or, (ii) no one, with all the computing power that exists, has managed so far to map it to a palindrome. In fact, 10677 is the first number to be shown to require over fifty iterations before producing a palindrome:<PHONE_NUMBER>684224866951378664 (53 iterations, 28-digits).
Surprisingly, there are palindromic numbers that are themselves Lychrel numbers; the first example is 4994.
How many Lychrel numbers are there below ten-thousand?
NOTE: Wording was modified slightly on 24 April 2007 to emphasise the theoretical nature of Lychrel numbers.
Naive solution, do as instructed.
import sys, os; sys.path.append(os.path.abspath('..'))
from timer import timethis
def get_palindrome(n):
m = 0
while n:
m = m * 10 + n % 10
n //= 10
return m
def is_palindrome(n):
return n == get_palindrome(n)
is_palindrome(101)
is_palindrome(198)
@timethis
def solve():
cnt = 0
for i in range(10000):
m = i
process_cnt = 0
while process_cnt < 50:
process_cnt += 1
m += get_palindrome(m)
if is_palindrome(m):
break
if process_cnt >= 50:
cnt += 1
return cnt
solve()


Creates a new b2Shape.
Return value for TestSegment indicating a hit.
Return value for TestSegment indicating a miss.
Return value for TestSegment indicating that the segment starting point, p1, is already inside the shape.
Given a transform, compute the associated axis aligned bounding box for this shape.
Calculated AABB, this argument is out
.
Transform to calculate the AABB.
Compute the mass properties of this shape using its dimensions and density. The inertia tensor is computed about the local origin, not the centroid.
Calculate the mass, this argument is out
.
Density.
Compute the volume and centroid of this shape intersected with a half plane
The surface normal.
The surface offset along the normal.
The shape transform.
The centroid, this argument is out
.
Clone the shape.
Get the type of this shape. You can use this to down cast to the concrete shape.
Cast a ray against this shape.
Ray cast results, this argument is out
.
Ray cast input parameters.
The transform to be applied to the shape.
Set the shape values from another shape.
The other shape to copy values from.
Test a point for containment in this shape. This only works for convex shapes.
Shape world transform.
Point to test against, in world coordinates.
True if the point is in this shape, otherwise false.
Test if two shapes overlap with the applied transforms.
shape to test for overlap with shape2.
shape1 transform to apply.
shape to test for overlap with shape1.
shape2 transform to apply.
True if shape1 and shape2 overlap, otherwise false.
Generated using TypeDoc
A shape is used for collision detection. Shapes are created in b2Body. You can use shape for collision detection before they are attached to the world. Warning: you cannot reuse shapes.


Rampaging gunman kills student and wounds three in horror college shooting
Daniil Zasorin, 19, is reported to have opened fire on fellow students at Amur college in the Russian city of Blagoveshchensk, near the Russian border with Mongolia
by Will Stewart, https://www.mirror.co.uk/authors/will-stewart/A college student opened fire on fellow students killing one and wounding three before turning the gun on himself.
Daniil Zasorin has been named by Russian media as the teenager who gunned down students at the a college in Blagoveshchensk, near the Russian border with Mongolia.
The 19-year-old was armed with a pump-action shotgun and was wounded by police before turning the gun on himself at the Amur college of Construction, Housing Maintenance and Utilities.
The shooting was in a classroom on an upper floor.
The gunman shot three fellow students, killing one, according to reports.
Others fled the scene in “panic”.
Student Alexey Golubnichy, 19, died in the college massacre.
The wounded were named as Egor Stasyuk, 17, Kasiyan Kamanets, 19, and Vladislav Rozhkov, 20.
They were rushed to hospital and are undergoing surgery.
A traffic policeman ran into the college after hearing shots and he fired at the gunman, wounding the 19-year-old, who was holed up in a classroom, it was reported.
The attacker then turned his weapon on himself.
His body was shown in pictures and video.
Earlier a teacher had twice asked the attacker to leave a classroom due to his behaviour, said witnesses.
He returned with a gun and opened fire.
A law enforcement source said: “When police inspectors went up to the second floor of the college, they saw a citizen with a gun.
“He shot at the traffic police.
“A policemen opened fire in return.
“The criminal was blocked inside a classroom.
“For the sake of public safety, the police evacuated everyone from the building.
“At the scene there were found the dead bodies of two young men, including the shooter.
“According to preliminary information, three more were injured.”
Armed police pointed guns at a college window from the nearby street in the city in the Russian far east.
The gun used by the attacker belonged to him, and was officially registered by police to him,
In the toilet the police later found his bag with more bullets.
According to the witnesses, the scene was covered with bullets shells.
An Interior Ministry source said: “The perpetrator committed suicide, using his own gun.
“It was registered in this citizen's name.”


Ozzy Osbourne Shares Teaser Of New Song, Straight To Hell
Listen to the first 13 seconds of the second single from Ozzy’s upcoming solo album, Ordinary Man.
If Ozzy Osbourne’s plan was to keep us hanging on his every move, it’s definitely working. Only late yesterday, the metal godfather tweeted a cryptic postcard inviting his listeners to go “Straight To Hell.” Now, Ozzy has tweeted a teaser of the track featuring 13 seconds of new music.
As you can hear in the tweet, Straight To Hell takes an eerie, almost clerical tone, similar to first single Under The Graveyard. This time around, the Ozzman seems less focused on coming off tough or rebellious and more ready to creep out his listeners. It’s an appropriate elder statesman role — the king of shadows, rather than, say, the organizer of Ozzfest.
 Ozzy’s new album Ordinary Man will be released in early 2020.
READ THIS: Post Malone collaboration is Ozzy’s “favorite since Black Sabbath”
Ozzy’s first performance of the new year will be at the American Music Awards, alongside rappers Post Malone and Travis Scott. Later in 2020, however, he’s scheduled to tour North America with Marilyn Manson and Europe and the UK with Judas Priest, so catch him live at one of the dates below:
May
27 Atlanta, GA State Farm Arena
29 Sunrise, FL BB&T Center
31 Tampa, FL MIDFLORIDA Credit Union
June
2 Charlotte, NC PNC Music Pavilion
4 Cincinnati, OH Riverbend Music Center
6 Hershey, PA Hershey Park Stadium
11 Pittsburgh, PA KeyBank Pavilion
13 Bangor, ME Darling’s Waterfront Pavilion
16 Montreal, QC Bell Centre
18 Hamilton, ON First Ontario Centre
20 Uncasville, CT Mohegan Sun Arena
22 New York, NY Madison Square Garden Arena
24 St Louis, MO Hollywood Casino Amphitheater
26 Kansas City, MO Sprint Center
28 Des Moines, IA Wells Fargo Arena
July
1 Milwaukee, WI Amer. Family Ins. Amp — Summerfest
3 St Paul, MN Xcel Energy Center
7 Edmonton, AB Rogers Place
9 Vancouver, BC Pepsi Live at Rogers Arena
11 Tacoma, WA Tacoma Dome
15 Portland, OR Moda Center
17 Sacramento, CA Golden 1 Center
23 Phoenix, AZ Ak-Chin Pavilion
25 San Francisco, CA Shoreline Amphitheatre
29 San Diego, CA North Island Credit Union Amphitheatre
31 Las Vegas, CA MGM Grand Garden Arena
October
23 Newcastle, Utilita Arena, UK
25 Glasgow, SSE Hydro, UK
28 London, The O2, UK
31 Birmingham, Resorts World Arena, UK
November
02 Manchester, Manchester Arena, UK
05 Dublin, 3Arena, Ireland
08 Nottingham, Motorpoint Arena, UK
11 Dortmund, Westfalenhalle, Germany
13 Prague, O2 Arena, Czech Republic
16 Vienna, Stadthalle, Austria
19 Bologna, Unipol Arena, Italy
22 Madrid, WiZink Arena, Spain
24 Zurich, Hallenstadion, Switzerland
26 Munich, Olympiahalle, Germany
28 Mannheim, SAP Arena, Germany
30 Berlin, Mercedes-Benz Arena, Germany
December
03 Hamburg, Barclaycard Arena, Germany
05 Stockholm, Friends Arena, Sweden
07 Helsinki, Hartwall Arena, Finland
READ THIS: Sharon Osbourne: “Ozzy would dress up for me like a waiter with no trousers…”


MoveComponent.h
|
Constructor (yen::fVector position)
Constructor. |
|
| void |
codeStepUpdate (yen::ObjectAccessInterface)
Called every time frame rendered. |
| void |
initialization (yen::ObjectAccessInterface)
Called on component initialization. |
| void |
setResourcesUsed ()
Called when object is used. |
| void |
freezed ()
Called when object is freezed. |
| void |
unFreezed ()
Called when object is un freezed. |
| void |
move (yen::fVector)
Moves object by given value. |
| void |
setPosition (yen::fVector)
Sets object position. |
Component used for simple position manipulation operations on object. Gives tools for moving and setting position of object.
//Create Engine
yen::Engine engine;
EngineConfiguration configuration;
engine.initialize(configuration);
//Creating object
yen::ObjectManipulator object = engine.objectsManager->createObject(yen::fVector(0.0f, 0.0f));
//Creating and attaching Move Component. Start position is 0.0f, 0.0f.
yen::MoveComponent moveComponent(yen::fVector(0.0f, 0.0f));
yen::ComponentManipulator moveComponentManipulator;
engine.objectsManager->attachComponent(&moveComponentManipulator, object, &moveComponent);
//Create scene and object to it
yen::SceneManipulator scene = engine.sceneManager->createScene();
engine.sceneManager->addObjectToScene(scene, object);
Constructor. Sets object start position.
Arguments:
Method called every time frame rendered. Used for main component operations.
Method called on component initialization. Used for prepare component to work.
Method called when object is in camera range. Used for set resources used by component used.


home
Inbox
Profile
Logout
Delete Profile
perm_identity
Profile
First Name
Last Name
Email
Password
Confirm Password
Change Profile Picture
File
Company
thumb_up
Preferences
T-Shirt size
Choose your option
Small S (48 x 71 x 36 cm)
Medium M (52 x 74 x 38 cm)
Large L (56 x 76 x 41 cm)
Special Needs
Food preference
Normal food
Vegetarian
Other
Specify
Language
Choose your option
English
supervisor_account
Social Accounts
Social networks
Facebook
Twitter
Save Changes


ABOUT
Distributed Global is an investment firm focused on the blockchain and digital asset ecosystem.
CONTACT
info@distributedglobal.com


forumpost
2014-09-09
there are example of porting WRF model in ARM processors. Fine grained parallellism, OpenMP, 16bytes genration in GPU exampel study
WRF is developed with single floating point oeprations and newer modules of WRF such as WRF CHEM for air quality predictions are having single as well as double floating point implemntaiton. There are studies comparing GPU enhanment with double and single point operations.
Plan of server board cluster Hardware enahmenet Limitation of OpenMP


|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object java.util.logging.Handler
public abstract class Handler
A Handler object takes log messages from a Logger and exports them. It might for example, write them to a console or write them to a file, or send them to a network logging service, or forward them to an OS log, or whatever.
A Handler can be disabled by doing a setLevel(Level.OFF) and can be re-enabled by doing a setLevel with an appropriate level.
Handler classes typically use LogManager properties to set default values for the Handler's Filter, Formatter, and Level. See the specific documentation for each concrete Handler class.
| Constructor Summary | |
|---|---|
protected |
Handler()
Default constructor. |
| Method Summary | |
|---|---|
abstract void |
close()
Close the Handler and free all associated resources. |
abstract void |
flush()
Flush any buffered output. |
String |
getEncoding()
Return the character encoding for this Handler. |
ErrorManager |
getErrorManager()
Retrieves the ErrorManager for this Handler. |
Filter |
getFilter()
Get the current Filter for this Handler. |
Formatter |
getFormatter()
Return the Formatter for this Handler. |
Level |
getLevel()
Get the log level specifying which messages will be logged by this Handler. |
boolean |
isLoggable(LogRecord record)
Check if this Handler would actually log a given LogRecord. |
abstract void |
publish(LogRecord record)
Publish a LogRecord. |
protected void |
reportError(String msg,
Exception ex,
int code)
Protected convenience method to report an error to this Handler's ErrorManager. |
void |
setEncoding(String encoding)
Set the character encoding used by this Handler. |
void |
setErrorManager(ErrorManager em)
Define an ErrorManager for this Handler. |
void |
setFilter(Filter newFilter)
Set a Filter to control output on this Handler. |
void |
setFormatter(Formatter newFormatter)
Set a Formatter. |
void |
setLevel(Level newLevel)
Set the log level specifying which message levels will be logged by this Handler. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
protected Handler()
| Method Detail |
|---|
public abstract void publish(LogRecord record)
The logging request was made initially to a Logger object, which initialized the LogRecord and forwarded it here.
The Handler is responsible for formatting the message, when and if necessary. The formatting should include localization.
record
- description of the log event. A null record is
silently ignored and is not publishedpublic abstract void flush()
public abstract void close() throws SecurityException
The close method will perform a flush and then close the Handler. After close has been called this Handler should no longer be used. Method calls may either be silently ignored or may throw runtime exceptions.
SecurityException
- if a security manager exists and if
the caller does not have LoggingPermission("control").public void setFormatter(Formatter newFormatter) throws SecurityException
Some Handlers may not use Formatters, in which case the Formatter will be remembered, but not used.
newFormatter
- the Formatter to use (may not be null)
SecurityException
- if a security manager exists and if
the caller does not have LoggingPermission("control").public Formatter getFormatter()
public void setEncoding(String encoding) throws SecurityException, UnsupportedEncodingException
The encoding should be set before any LogRecords are written to the Handler.
encoding
- The name of a supported character encoding.
May be null, to indicate the default platform encoding.
SecurityException
- if a security manager exists and if
the caller does not have LoggingPermission("control").
UnsupportedEncodingException
- if the named encoding is
not supported.public String getEncoding()
public void setFilter(Filter newFilter) throws SecurityException
For each call of publish the Handler will call this Filter (if it is non-null) to check if the LogRecord should be published or discarded.
newFilter
- a Filter object (may be null)
SecurityException
- if a security manager exists and if
the caller does not have LoggingPermission("control").public Filter getFilter()
public void setErrorManager(ErrorManager em)
The ErrorManager's "error" method will be invoked if any errors occur while using this Handler.
em
- the new ErrorManager
SecurityException
- if a security manager exists and if
the caller does not have LoggingPermission("control").public ErrorManager getErrorManager()
SecurityException
- if a security manager exists and if
the caller does not have LoggingPermission("control").protected void reportError(String msg, Exception ex, int code)
msg
- a descriptive string (may be null)ex
- an exception (may be null)code
- an error code defined in ErrorManagerpublic void setLevel(Level newLevel) throws SecurityException
The intention is to allow developers to turn on voluminous logging, but to limit the messages that are sent to certain Handlers.
newLevel
- the new value for the log level
SecurityException
- if a security manager exists and if
the caller does not have LoggingPermission("control").public Level getLevel()
public boolean isLoggable(LogRecord record)
This method checks if the LogRecord has an appropriate Level and whether it satisfies any Filter. It also may make other Handler specific checks that might prevent a handler from logging the LogRecord. It will return false if the LogRecord is Null.
record
- a LogRecord
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
Copyright © 2004, 2010 Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.


Actor Jung Hae In opens up about his younger days and personality
by germainejActor Jung Hae In opened up about his younger days and personality.
On the November 22nd episode of KBS's 'Entertainment Weekly', Jung Hae In discussed the rebellious character he plays in the upcoming movie 'Start'. He expressed, "It's a different image than I've shown in the past. At first, I worried if it wouldn't be awkward for people, but I pulled out a different side from inside of me."
When asked what kind of student he was during his high school days, the actor said, "I was not bold, and I was an introverted kind of person."
'Start' opens in theaters in December. In other news, Jung Hae In's travel reality show 'Jung Hae In's Walk and See' is premiering via KBS on November 26 KST.


GRANT
Defines access privileges for a user or user group.
Privileges include access options such as being able to read data in tables and views, write data, and create tables. Use this command to give specific privileges for a table, database, schema, or function. To revoke privileges from a database object, use the REVOKE command.
You can't GRANT or REVOKE permissions on an external table. Instead, grant or revoke the permissions on the external schema.
For stored procedures, the only privilege that can be granted is EXECUTE.
Syntax
GRANT { { SELECT | INSERT | UPDATE | DELETE | REFERENCES } [,...] | ALL [ PRIVILEGES ] } ON { [ TABLE ] table_name [, ...] | ALL TABLES IN SCHEMA schema_name [, ...] } TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...] GRANT { { CREATE | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] } ON DATABASE db_name [, ...] TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...] GRANT { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] } ON SCHEMA schema_name [, ...] TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...] GRANT { EXECUTE | ALL [ PRIVILEGES ] } ON { FUNCTION function_name ( [ [ argname ] argtype [, ...] ] ) [, ...] | ALL FUNCTIONS IN SCHEMA schema_name [, ...] } TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...] GRANT { EXECUTE | ALL [ PRIVILEGES ] } ON { PROCEDURE procedure_name ( [ [ argname ] argtype [, ...] ] ) [, ...] | ALL PROCEDURES IN SCHEMA schema_name [, ...] } TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...] GRANT USAGE ON LANGUAGE language_name [, ...] TO { username [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...]
Parameters
- SELECT
-
Grants privilege to select data from a table or view using a SELECT statement. The SELECT privilege is also required to reference existing column values for UPDATE or DELETE operations.
- INSERT
-
Grants privilege to load data into a table using an INSERT statement or a COPY statement.
- UPDATE
-
Grants privilege to update a table column using an UPDATE statement. UPDATE operations also require the SELECT privilege, because they must reference table columns to determine which rows to update, or to compute new values for columns.
- DELETE
-
Grants privilege to delete a data row from a table. DELETE operations also require the SELECT privilege, because they must reference table columns to determine which rows to delete.
- REFERENCES
-
Grants privilege to create a foreign key constraint. You need to grant this privilege on both the referenced table and the referencing table; otherwise, the user can't create the constraint.
- ALL [ PRIVILEGES ]
-
Grants all available privileges at once to the specified user or user group. The PRIVILEGES keyword is optional.
GRANT ALL ON SCHEMA does not grant CREATE privileges for external schemas.
- ON [ TABLE ] table_name
-
Grants the specified privileges on a table or a view. The TABLE keyword is optional. You can list multiple tables and views in one statement.
- ON ALL TABLES IN SCHEMA schema_name
-
Grants the specified privileges on all tables and views in the referenced schema.
- TO username
-
Indicates the user receiving the privileges.
- WITH GRANT OPTION
-
Indicates that the user receiving the privileges can in turn grant the same privileges to others. WITH GRANT OPTION can not be granted to a group or to PUBLIC.
- GROUP group_name
-
Grants the privileges to a user group.
- PUBLIC
-
Grants the specified privileges to all users, including users created later. PUBLIC represents a group that always includes all users. An individual user's privileges consist of the sum of privileges granted to PUBLIC, privileges granted to any groups that the user belongs to, and any privileges granted to the user individually.
- CREATE
-
Depending on the database object, grants the following privileges to the user or user group:
-
For databases, CREATE allows users to create schemas within the database.
-
For schemas, CREATE allows users to create objects within a schema. To rename an object, the user must have the CREATE privilege and own the object to be renamed.
-
CREATE ON SCHEMA isn't supported for Amazon Redshift Spectrum external schemas. To grant usage of external tables in an external schema, grant USAGE ON SCHEMA to the users that need access. Only the owner of an external schema or a superuser is permitted to create external tables in the external schema. To transfer ownership of an external schema, use ALTER SCHEMA to change the owner.
-
- TEMPORARY | TEMP
-
Grants the privilege to create temporary tables in the specified database. To run Amazon Redshift Spectrum queries, the database user must have permission to create temporary tables in the database.
Note
By default, users are granted permission to create temporary tables by their automatic membership in the PUBLIC group. To remove the privilege for any users to create temporary tables, revoke the TEMP permission from the PUBLIC group and then explicitly grant the permission to create temporary tables to specific users or groups of users.
- ON DATABASE db_name
-
Grants the specified privileges on a database.
- USAGE
-
Grants USAGE privilege on a specific schema, which makes objects in that schema accessible to users. Specific actions on these objects must be granted separately (for example, SELECT or UPDATE privileges on tables). By default, all users have CREATE and USAGE privileges on the PUBLIC schema.
- ON SCHEMA schema_name
-
Grants the specified privileges on a schema.
GRANT CREATE ON SCHEMA and the CREATE privilege in GRANT ALL ON SCHEMA aren't supported for Amazon Redshift Spectrum external schemas. To grant usage of external tables in an external schema, grant USAGE ON SCHEMA to the users that need access. Only the owner of an external schema or a superuser is permitted to create external tables in the external schema. To transfer ownership of an external schema, use ALTER SCHEMA to change the owner.
- EXECUTE ON FUNCTION function_name
-
Grants the EXECUTE privilege on a specific function. Because function names can be overloaded, you must include the argument list for the function. For more information, see Naming UDFs.
- EXECUTE ON ALL FUNCTIONS IN SCHEMA schema_name
-
Grants the specified privileges on all functions in the referenced schema.
- EXECUTE ON PROCEDURE procedure_name
-
Grants the EXECUTE privilege on a specific stored procedure. Because stored procedure names can be overloaded, you must include the argument list for the procedure. For more information, see Naming Stored Procedures.
- EXECUTE ON ALL PROCEDURES IN SCHEMA schema_name
-
Grants the specified privileges on all stored procedures in the referenced schema.
- USAGE ON LANGUAGE language_name
-
Grants the USAGE privilege on a language.
The USAGE ON LANGUAGE privilege is required to create user-defined functions (UDFs) by running the CREATE FUNCTION command. For more information, see UDF Security and Privileges.
The USAGE ON LANGUAGE privilege is required to create stored procedures by running the CREATE PROCEDURE command. For more information, see Security and Privileges for Stored Procedures .
For Python UDFs, use
plpythonu
. For SQL UDFs, usesql
. For stored procedures, useplpgsql
.
Usage Notes
To grant privileges on an object, you must meet one of the following criteria:
-
Be the object owner.
-
Be a superuser.
-
Have a grant privilege for that object and privilege.
For example, the following command enables the user HR both to perform SELECT commands on the employees table and to grant and revoke the same privilege for other users.
grant select on table employees to HR with grant option;
HR can't grant privileges for any operation other than SELECT, or on any other table than employees.
Having privileges granted on a view doesn't imply having privileges on the underlying tables. Similarly, having privileges granted on a schema doesn't imply having privileges on the tables in the schema. You need to grant access to the underlying tables explicitly.
Superusers can access all objects regardless of GRANT and REVOKE commands that set object privileges.
Examples
The following example grants the SELECT privilege on the SALES table to the user
fred
.
grant select on table sales to fred;
The following example grants the SELECT privilege on all tables in the QA_TICKIT
schema to the user fred
.
grant select on all tables in schema qa_tickit to fred;
The following example grants all schema privileges on the schema QA_TICKIT to the user group QA_USERS. Schema privileges are CREATE and USAGE. USAGE grants users access to the objects in the schema, but does not grant privileges such as INSERT or SELECT on those objects. Privileges must be granted on each object separately.
create group qa_users; grant all on schema qa_tickit to group qa_users;
The following example grants all privileges on the SALES table in the QA_TICKIT schema to all users in the group QA_USERS.
grant all on table qa_tickit.sales to group qa_users;
The following sequence of commands shows how access to a schema doesn't grant privileges on a table in the schema.
create user schema_user in group qa_users password 'Abcd1234'; create schema qa_tickit; create table qa_tickit.test (col1 int); grant all on schema qa_tickit to schema_user; set session authorization schema_user; select current_user; current_user -------------- schema_user (1 row) select count(*) from qa_tickit.test; ERROR: permission denied for relation test [SQL State=42501] set session authorization dw_user; grant select on table qa_tickit.test to schema_user; set session authorization schema_user; select count(*) from qa_tickit.test; count ------- 0 (1 row)
The following sequence of commands shows how access to a view doesn't imply access to its underlying tables. The user called VIEW_USER can't select from the DATE table, although this user has been granted all privileges on VIEW_DATE.
create user view_user password 'Abcd1234'; create view view_date as select * from date; grant all on view_date to view_user; set session authorization view_user; select current_user; current_user -------------- view_user (1 row) select count(*) from view_date; count ------- 365 (1 row) select count(*) from date; ERROR: permission denied for relation date