Rand entered the chamber slowly, walking among the great polished redstone columns he remembered from his dreams. Silence filled the shadows, yet something called to him. And something flashed ahead, a momentary light throwing back shadow, a beacon. He stepped out beneath a great dome, and saw what he sought. Callandor, hanging hilt down in midair, waiting for no hand but that of the Dragon Reborn. As it revolved, it broke what little light there was into splinters, and now and then it flared as if with a light of its own. Calling him. Waiting for him.
If I am the Dragon Reborn. If I am not just some half-mad man cursed with the ability to channel, a puppet dancing for Moiraine and the White Tower.
“Take it, Lews Therin. Take it, Kinslayer.”
He spun to face the voice. The tall man with close-cropped white hair who stepped from the shadows among the columns was familiar to him. Rand had no idea who he was, this fellow in a red silk coat with black stripes down its puffy sleeves and black breeches tucked into elaborately silver-worked boots. He did not know the man, but he had seen him in his dreams. “You put them in a cage,” he said. “Egwene, and Nynaeve, and Elayne. In my dreams. You kept putting them in a cage, and hurting them.”
The man made a dismissive gesture of his hand. “They are less than nothing. Perhaps one day, when they have been trained, but not now. I confess surprise that you cared enough to make them useful. But you were ever a fool, ever ready to follow your heart before power. You came too soon, Lews Therin. Now you must do what you are not yet ready for, or else die. Die, knowing you have left these women you care for in my hands.” He seemed to be waiting for something, expectant. “I mean to use them more, Kinslayer. They will serve me, serve my power. And that will hurt them far more than anything they have suffered before.”
Behind Rand, Callandor flashed, throwing one pulse of warmth against his back. “Who are you?”
“You do not remember me, do you?” The white-haired man laughed suddenly. “I do not remember you, either, looking this way. A country lad with a flute case on his back. Did Ishamael speak the truth? He was ever one to lie when it gained him an inch or a second. Do you remember nothing, Lews Therin?”
“A name!” Rand demanded. “What is your name?”
“Call me Be’lal.” The Forsaken scowled when Rand did not react to the name. “Take it!” Be’lal snapped, throwing a hand toward the sword behind Rand. “Once we rode to war side by side, and for that I give you a chance. A bare chance, but a chance to save yourself, a chance to save those three I mean to make my pets. Take the sword, country man. Perhaps it will be enough to help you survive me.”
Rand laughed. “Do you believe you can frighten me so easily, Forsaken? Ba’alzamon himself has hunted me. Do you think I will cower now for you? Grovel before a Forsaken when I have denied the Dark One to his face?”
“Is that what you think?” Be’lal said softly. “Truly, you know nothing.”  “Take it! Take Callandor! Three thousand years, while I lay imprisoned, it has waited there. For you. One of the most powerful sa’angreal we ever made. Take it, and defend yourself, if you can!”
He moved toward Rand as if to drive him back toward Callandor, but Rand raised his own hands—saidin filled him; sweet rushing flow of the Power; stomach-wrenching vileness of the taint—and he held a sword wrought from red flame, a sword with a heron-mark on its fiery blade. He stepped into the forms Lan had taught him till he flowed from one to the next as if in a dance. Parting the Silk. Water Flows Downhill. Wind and Rain. Blade of black fire met blade of red in showers of sparks, roars like white-hot metal shattering.
Rand came back smoothly into a guard stance, trying not to let his sudden uncertainty show. A heron stood on the black blade, too, a bird so dark as to be nearly invisible. Once he had faced a man with a heron-mark blade of steel, and barely survived. He knew that he himself had no real right to the blademaster’s mark; it had been on the sword his father had given him, and when he thought of a sword in his hands, he thought of that sword. Once he had embraced death, as the Warder had taught, but this time, he knew, his death would be final. Be’lal was better than he with the sword. Stronger. Faster. A true blademaster.
The Forsaken laughed, amused, swinging his blade in quick flourishes to either side of him; the black fire roared as if swift passage through the air quickened it. “You were a greater swordsman, once, Lews Therin,” he said mockingly. “Do you remember when we took that tame sport called swords and learned to kill with it, as the old volumes said men once had? Do you remember even one of those desperate battles, even one of our dire defeats? Of course not. You remember nothing, do you? This time you have not learned enough.  Be’lal’s mockery deepened. “Perhaps if you take Callandor, you might extend your life a little longer. A little longer.”
He came forward slowly, almost as if to give Rand time to do just that, turn and race to Callandor, to the Sword That Cannot Be Touched, to take it. But the doubts were still strong in Rand. Callandor could only be touched by the Dragon Reborn. He had allowed them to proclaim him so for a hundred reasons that seemed to leave him no choice at the time. But was he truly the Dragon Reborn? If he raced to touch Callandor in truth, not in a dream, would his hand meet an invisible wall while Be’lal cut him down from behind?
He met the Forsaken with the sword he knew, the blade of fire wrought with saidin. And was driven back. The Falling Leaf met Watered Silk. The Cat Dances on the Wall met the Boar Rushes Downhill. The River Undercuts the Bank nearly lost him his head, and he had to throw himself inelegantly to one side with black flame brushing his hair, rolling to his feet to confront the Stone Falls From the Mountain.
Shouts echoed among the columns, screams, the clash of steel, but Rand barely heard. He and Be’lal were no longer alone in the Heart of the Stone. Men in breastplates and rimmed helmets fought with swords against shadowy, veiled shapes that darted among the columns with short spears stabbing. Some of the soldiers formed a rank; arrows flashing out of the dimness took them in the throat, the face, and they died in their line. Rand hardly noticed the fighting, even when men fell dead within paces of him. His own fight was too desperate; it took all of his concentration. Wet warmth trickled down his side. The old wound was breaking open.
He stumbled suddenly, not seeing the dead man at his feet until he was lying on his back atop his flute case on the stone floor.
Be’lal raised his blade of black fire, snarling. “Take it! Take Callandor and defend yourself?  If you will not take it, I will slay you!”
“No!”
Even Be’lal gave a start at the command in that woman’s voice. The Forsaken stepped back out of the arc of Rand’s sword and turned his head to frown at Moiraine as she came striding through the battle, her eyes fixed on him, ignoring the screaming deaths around her. “I thought you were neatly out of the way, woman. No matter. You are only an annoyance. A stinging fly. A biteme. I will cage you with the others, and teach you to serve the Shadow with your puny powers,” he finished with a contemptuous laugh, and raised his free hand.
Moiraine had not stopped or slowed while he spoke. She was no more than thirty paces from him when he moved his hand, and she raised both of hers as well.
There was an instant of surprise on the Forsaken’s face, and he had time to scream “No!”  Before it, Be’lal became a shape of shimmering motes, specks dancing in the light for less than a heartbeat, flecks consumed before his cry faded.
There was silence in the chamber as that bar of light vanished, silence except for the moans of the wounded. The fighting had stopped dead, veiled men and men in breastplates alike standing as if stunned.
“He was right concerning one thing,” Moiraine said, as coolly serene as if she were standing in a meadow. “You must take Callandor. He meant to slay you for it, but it is your birthright. Better by far that you knew more before your hand held that hilt, yet you have come to the point now, and there is no further time for learning. Take it, Rand.”
Whips of black lightning curled around her; she screamed as they lifted her, hurled her to slide along the floor like a sack until she came up against one of the columns.
Rand stared up at where the lightning had come from. There was a deeper shadow up there, near the top of the columns, a blackness that made all other shadows look like noonday, and from it, two eyes of fire stared back at him.
 Yet even that was not so dark as the shadow that clung to him. He hung in the air, two spans above the floor, glaring at Rand with a rage as fierce as his eyes. “Twice in this life I have offered you the chance to serve me living.”  “Twice you have refused, and wounded me. Now you will serve the Lord of the Grave in death. Die, Lews Therin Kinslayer. Die, Rand al’Thor. It is time for you to die! I take your soul!”
As Ba’alzamon put forth his hand, Rand pushed himself up, threw himself desperately toward Callandor, still glittering and flashing in midair. He did not know whether he could reach it, or touch it if he did, but he was sure it was his only chance.
 Rand screamed. He felt as if he were collapsing like an empty sack, as if he were being turned inside out. The pain in his side, the wound taken at Falme, was almost welcome, something to hang onto, a reminder of life. His hand closed convulsively. On Callandor’s hilt.
The One Power surged through him, a torrent greater than he could believe, from saidin into the sword. The crystal blade shone brighter than even Moiraine’s fire had. It was impossible to look at, impossible any longer to see that it was a sword, only that light blazed in his fist. He fought the flow, wrestled with the implacable tide that threatened to carry him, all that was really him, into the sword with it. For a heartbeat that took centuries he hung, wavering, balanced on the brink of being scoured away like sand before a flash flood. With infinite slowness the balance firmed. It was still as though he stood barefoot on a razor’s edge above a bottomless drop, yet something told him this was the best that could be expected. To channel this much of the Power, he must dance on that sharpness as he had danced the forms of the sword.
He turned to face Ba’alzamon. The tearing within him had ceased as soon as his hand touched Callandor. Only an instant had passed, yet it seemed to have lasted forever. “You will not take my soul,” he shouted. “This time, I mean to finish it once and for all! I mean to finish it now!”
Ba’alzamon fled, man and shadow vanishing.
For a moment Rand stared, frowning. There had been a sense of—folding—as Ba’alzamon left. A twisting, as if Ba’alzamon had in some way bent what was. Ignoring the men staring at him, ignoring Moiraine crumpled at the column base, Rand reached out, through Callandor, and twisted reality to make a door to somewhere else. He did not know to where, except that it was where Ba’alzamon had gone.
“I am the hunter now,” he said, and stepped through.
The stone shook under Egwene’s feet. The Stone shook; it rang. She caught her balance and stopped, listening. There was no more sound, no other tremor. Whatever had happened, it was over. She hurried on.  She channeled Earth before she reached it, and when she pushed against the bars, the lock tore in half.
She walked quickly across the chamber beyond it, trying not to look at the things hanging on the walls. Whips and iron pincers were the most innocuous. With a small shudder she pushed open a smaller iron gate and entered a corridor lined with rough wooden doors, rush torches burning at intervals in iron brackets; she felt almost as much relief at leaving those things behind as she did at finding what she sought. But which cell?
The wooden doors opened easily. Some were unlocked, and the locks on the others lasted no longer than that larger lock had earlier. But every cell was empty. Of course. No one would dream themselves in this place. Any prisoner who managed to reach Tel’aran’rhiod would dream of a pleasanter place.
For a moment she felt something close to despair. She had wanted to believe that finding the right cell would make a difference. Even finding it could be impossible, though. This first corridor stretched on and on, and others joined it.
Suddenly she saw something flicker just ahead of her. A shape even less substantial than Joiya Byir had been. It had been a woman, though. She was sure of that. A woman seated on a bench beside one of the cell doors. The image flickered into being again, and was gone. There was no mistaking that slender neck and the pale, innocent-appearing face with its eyelids fluttering on the edge of sleep. Amico Nagoyin was drifting toward sleep, dreaming of her guard duties. And apparently toying drowsily with one of the stolen ter’angreal. Egwene could understand that; it had been a great effort to stop using the one Verin had given her, even for a few days.
She knew it was possible to cut a woman off from the True Source even if she had already embraced saidar, but severing a weave already established had to be much harder than damming the flow before it began. She set the patterns of the weaving, readied them, making the threads of Spirit much stronger, this time, thicker and heavier, a denser weave with a cutting edge like a knife.
The wavering shape of the Darkfriend appeared again, and Egwene struck out with the flows of Air and Spirit. For an instant something seemed to resist the weaving of Spirit, and she forced it with all of her might. It slid into place.
Amico Nagoyin screamed. It was a thin sound, barely heard, as faint as she herself was, and she seemed almost like a shadow of what Joiya Byir had been. Yet the bonds woven of Air held her; she did not vanish again. Terror twisted the Darkfriend’s lovely face; she seemed to be babbling, but her shouts were whispers too soft for Egwene to understand.
Tying and setting the weaves around the Black sister, Egwene turned her attentions to the cell door. Impatiently, she let Earth flood into the iron lock. It fell away in black dust, in a mist that dissolved completely before it struck the floor. She swung open the door, and was not surprised to find the cell empty except for one burning rush torch.
But Amico is bound, and the door is open.
For a moment she thought of what to do next.  Of course. What happens to living things there is real when they wake. What I did to stone or iron or wood has no effect in the waking world.
Nynaeve and Elayne were still kneeling beside her.
“Whoever is out there,” Nynaeve said, “screamed a few moments ago, but nothing else has happened. Did you find a way out?”
“We should be able to walk out,” Egwene said. “Help me to my feet, and I will get rid of the lock. Amico will not trouble us. That scream was her.”
Elayne shook her head. “I have been trying to embrace saidar ever since you left. It is different, now, but I am still cut off.”
Egwene formed the emptiness inside her, became the rosebud opening to saidar. The invisible wall was still there. It shimmered now. There were moments when she almost thought she could feel the True Source beginning to fill her with the Power. Almost. The shield wavered in and out of existence too fast for her to detect. It might as well have still been solid.
She stared at the other two women. “I bound her. I shielded her. She is a living thing, not lifeless iron. She must be shielded still.”
“Something has happened to the shield set on us,” Elayne said, “but Amico is still managing to hold it.”
 “I will have to try again.”
“Are you strong enough?” Elayne grimaced. “To be blunt, you sound even weaker than you did before. This try took something out of you, Egwene.”
“I am strong enough there.” She did feel more weary, less strong, but it was their only chance that she could see. She said as much, and their faces said they agreed with her, however reluctantly.
 Nynaeve asked finally.
“Sing to me.” Egwene managed a smile. “Like when I was a little girl. Please?” Holding Nynaeve’s hand with one of hers, the stone ring clasped in the other, she closed her eyes and tried to find sleep in the wordless humming tune.
The wide door of iron bars stood open, and the room beyond seemed empty of life, but Mat entered cautiously. Sandar was still out in the hall, trying to peer both ways at once, certain that a High Lord, or maybe a hundred Defenders or so, would appear at any moment.
There were no men in the room now—and by the looks of the half-eaten meals on a long table, they had left hurriedly; no doubt because of the fighting above—and from the looks of the things on the walls, he was just as glad he did not have to meet any of them. Whips in different sizes and lengths, different thicknesses, with different numbers of tails. Pincers, and tongs, and clamps, and irons. Things that looked like metal boots, and gauntlets, and helmets, with great screws all over them as if to tighten them down. Things he could not even begin to guess the use of. If he had met the men who used these things, he thought he would surely have checked that they were dead before he walked away.
“Sandar!” he hissed.  He hurried to the inner door—barred like the outer, but smaller—without waiting for an answer, and went through.
The hall beyond was lined by rough wooden doors, and lit by the same rush torches as the room he had just left. No more than twenty paces from him, a woman sat on a bench beside one of the doors, leaning back against the wall in a curiously stiff fashion. She turned her head slowly toward him at the sound of his boots grating on the stone. A pretty young woman. He wondered why she did not move more than her head, and why even that moved as if she were half-asleep.
Was she a prisoner? Out in the hall? But nobody with a face like that could be one of the people who uses the things on those walls. She did look almost asleep, with her eyes only partly open. And the suffering on that lovely face surely made her one of the tortured, not a torturer.
“Stop!” Sandar shouted behind him. “She is Aes Sedai! She is one of those who took the women you seek!”
Mat froze in the middle of a step, staring at the woman.  He wondered if he could deflect a ball of fire with his quarterstaff. He wondered if his luck extended to outrunning Aes Sedai.
“Help me,” she said faintly. Her eyes still looked nearly asleep, but the pleading in her voice was fully awake. “Help me. Please!”
Mat blinked. She still had not moved a muscle below her neck. Cautiously, he stepped closer, waving to Sandar to stop his groaning about her being Aes Sedai. She moved her head to follow him. No more than that.
A large iron key hung at her belt. For a moment he hesitated. Aes Sedai, Sandar said. Why doesn’t she move? Swallowing, he eased the key free as carefully as if he were trying to take a piece of meat from a wolfs jaws. She rolled her eyes toward the door beside her and made a sound like a cat that had just seen a huge dog come snarling into the room and knew there was no way out.
He did not understand it, but as long as she did not try to stop him opening that door, he did not care why she just sat there like a stuffed scarecrow. On the other hand, he wondered if there was something on the other side worth being afraid of. If she is one of those who took Egwene and the others, it stands to reason she’s guarding them. Tears leaked from the woman’s eyes.  But there was only one way to find out. Propping his staff against the wall, he turned the key in the lock and flung open the door, ready to run if need be.
Nynaeve and Elayne were kneeling on the floor with Egwene apparently asleep between them. He gasped at the sight of Egwene’s swollen face, and changed his mind about her sleeping. The other two women turned toward him as he opened the door—they were almost as battered as Egwene; Burn me! Burn me!—looked at him, and gaped.
 “Burn me if I expected to be greeted as if I had come to steal a pie. You can tell me why you look as if you’d been fighting bears later, if you want. If Egwene cannot walk, I’ll carry her on my back.  If we can!”
“Mind your language,” Nynaeve told him, and Elayne gave him one of those disapproving stares women were so good at. Neither one seemed to have her full attention in it, though.
Egwene’s eyelids fluttered open, and she groaned. “Why did you wake me? I must understand it. If I loose the bonds on her, she will wake and I’ll never catch her again. But if I do not, she cannot go all the way to sleep, and—” Her eyes fell on him and widened. “Matrim Cauthon, what under the Light are you doing here?”
“You tell her,” he told Nynaeve. “I am too busy trying to rescue you to watch my langu—”
They were all staring beyond him, glaring as if they wished they had knives in their hands.
He spun, but all he saw was Juilin Sandar, looking as if he had swallowed a rotten plum whole.
“They have cause,” he told Mat. “I . . . I betrayed them. But I had to.” That was addressed past Mat to the women. “The one with many honey-colored braids spoke to me, and I . . . I had to do it.” For a long moment the three continued to stare.
“Liandrin has vile tricks, Master Sandar,” Nynaeve said finally. “Perhaps you are not entirely to blame. We can apportion guilt later.”
“If that is all cleared up,” Mat said, “could we go now?” It was as clear as mud to him, but he was more interested in leaving right then.
The three women limped after him into the hall, but they stopped around the woman on the bench. She rolled her eyes at them and whimpered. “Please. I will come back to the Light. I will swear to obey you. With the Oath Rod in my hands I will swear. Please do not—”
Mat jumped as Nynaeve suddenly reared back and swung a fist, knocking the woman completely off the bench.
“It is gone,” Elayne said excitedly.
Egwene bent to rummage in the unconscious woman’s pouch, transferring something Mat could not make out to her own. “Yes. It feels wonderful. Something changed about her when you hit her, Nynaeve. I do not know what, but I felt it.”
Elayne nodded. “I felt it, too.”
“I would like to change every last thing about her,” Nynaeve said grimly.  When Nynaeve took her hands away to put them on Elayne, Egwene’s bruises were gone. Elayne’s vanished as quickly.
 Mat growled.  I don’t think she could even move!” They all three turned to look at him, and he made a strangled sound as the air seemed to turn to thick jelly around him. He lifted into the air, until his boots dangled a good pace above the floor. Oh, burn me, the Power!  Burn me!
“You do not understand anything, Matrim Cauthon,” Egwene said in a tight voice.
“Until you do understand,” Nynaeve said in an even tighter, “I suggest you keep your opinions to yourself.”
Elayne contented herself with a glare that made him think of his mother going out to cut a switch.
For some reason he found himself giving them the grin that had so often sent his mother after that switch. Burn me, if they can do this, I don’t see how anybody ever locked them in that cell in the first place!  But he could move again. “As much as it pains me to say it, Mat, you are right.”
He was tempted to answer something sarcastic, but there was barely enough apology in her voice as it was. “Now can we go? With the fighting going on, Sandar thinks he and I can take you out by a small gate near the river.”
“I am not leaving just yet, Mat,” Nynaeve said.
“I mean to find Liandrin and skin her,” Egwene said, sounding almost as if she meant it literally.
“All I want to do,” Elayne said, “is pound Joiya Byir till she squeals, but I will settle for any of them.”
“Are you all deaf?” he growled. “There is a battle going on out there! I came here to rescue you, and I mean to rescue you.” Egwene patted his cheek as she walked by him, and so did Elayne. Nynaeve merely sniffed. He stared after them with his mouth hanging open. “Why didn’t you say something?” he growled at the thief-catcher.
“I saw what speaking earned you,” Sandar said simply. “I am no fool.”
“Well, I am not staying in the middle of a battle!” he shouted at the women. They were just disappearing through the small, barred door. “I am leaving, do you hear?” They did not even look back. Probably get themselves killed out there! Somebody will stick a sword in them while they’re looking the other way! With a snarl, he put his quarterstaff across his shoulder and started after. “Are you going to stand there?” he called to the thief-catcher. “I did not come this far to let them die now!”
Sandar caught up to him in the room with the whips. The three women were already gone, but Mat had a feeling they would not be too hard to find. Just find the men bloody hanging in midair! Bloody women! He quickened his pace to a trot.
Perrin strode down the halls of the Stone grimly, searching for some sign of Faile. He had rescued her twice more, now, breaking her out of an iron cage once, much like the one that had held the Aiel in Remen, and once breaking open a steel chest with a falcon worked on its side. Both times she had melted into air after saying his name. Hopper trotted by his side, sniffing the air. As sharp as Perrin’s nose was, the wolf’s was sharper; it had been Hopper who led them to the chest.
Perrin wondered whether he was ever going to free her in truth. There had not been any sign in a long time, it seemed. The halls of the Stone were empty, lamps burning, tapestries and weapons hanging on the walls, but nothing moved except himself and Hopper. Except I think that was Rand. It had only been a glimpse, a man running as if chasing someone. It could not be him. It couldn’t, but I think it was.
Hopper quickened his steps suddenly, heading for another set of tall doors, these clad in bronze. Perrin tried to match the pace, stumbled, and fell to his knees, throwing out a hand to catch himself short of dropping on his face. Weakness washed through him as if all his muscles had gone to water. Even after the feeling receded, it took some of his strength with it. It was an effort to struggle to his feet. Hopper had turned to look at him.
You are here too strongly, Young Bull. The flesh weakens. You do not care to hold on to it enough.
“Find her,” Perrin said. “That is all I ask. Find Faile.”
Yellow eyes met yellow eyes. The wolf turned and trotted to the doors. Beyond here, Young Bull.
Perrin reached the doors and pushed. They did not budge. There seemed to be no way to open them, no handles, nothing to grip. There was a tiny pattern worked into the metal, so fine his eyes almost did not see it. Falcons. Thousands of tiny falcons.
She has to be here. I do not think I can last much longer. With a shout, he swung his hammer against the bronze. It rang like a great gong. Again he struck, and the peal deepened. A third blow, and the bronze doors shattered like glass.
Within, a hundred paces from the broken doors, a circle of light surrounded a falcon chained to a perch. Darkness filled all the rest of that vast chamber, darkness and faint rustlings as of hundreds of wings.
He took a step into the room, and a falcon stooped out of the murk, talons scoring his face as it passed. He threw an arm across his eyes—talons tore at his forearm—and staggered toward the perch. Again and again the birds came, falcons diving, striking him, tearing him, but he lumbered on with blood pouring down his arms and shoulders, that one arm protecting the eyes he had fixed on the falcon on the perch. He had lost the hammer; he did not know where, but he knew that if he went back to search, he would die before he found it.
As he reached the perch, the slicing talons drove him to his knees. He peered up under his arm at the falcon on the perch, and she stared back with dark, unblinking eyes. The chain that held her leg was fastened to the perch with a tiny lock shaped like a hedgehog. He seized the chain with both hands, careless of the other falcons that now became a whirlwind of cutting talons around him, and with his last strength snapped it. Pain and the falcons brought darkness.
He opened his eyes to stinging agony, as if his face and arms and shoulders had been sliced with a thousand knives. It did not matter.
“My poor Perrin,” she said softly. “My poor blacksmith. You are hurt so badly.”
With an effort that cost more pain, he turned his head. This was the private dining room in the Star, and near one leg of the table lay a wooden carving of a hedgehog, broken in half. “Faile,” he whispered to her. “My falcon.”
Rand was still in the Heart of the Stone, but it was different. There were no men fighting here, no dead men, no one at all but himself. Abruptly the sound of a great gong rang through the Stone, then again, and the very stones beneath his feet resonated. A third time the booming came, but cut off abruptly, as if the gong had shattered. All was still.
Where is this place? he wondered. More important, where is Ba’alzamon?
As if to answer him, a blazing shaft like the one Moiraine had made shot out of the shadows among the columns, straight toward his chest. His wrist twisted the sword instinctively; it was instinct as much as anything else that made him loose flows from saidin into Callandor, a flood of the Power that made the sword blaze brighter even than that bar streaking at him. His uncertain balance between existence and destruction wavered. Surely that torrent would consume him.
The shaft of light struck the blade of Callandor—and parted on its edge, forking to stream past on either side. He felt his coat singe from its near passage, smelled the wool beginning to burn. Behind him, the two prongs of frozen fire, of liquid light, struck huge redstone columns; where they struck, stone ceased to exist, and the burning bars bored through to other columns, severing those instantaneously as well. The Heart of the Stone rumbled as columns fell and shattered in clouds of dust, sprays of stone fragments. What fell into the light, however, simply was not, anymore.
A snarl of rage came from the shadows, and the blazing shaft of pure white heat vanished.
Rand swung Callandor as if he were striking at something in front of him. The white light obscuring the blade extended, blazed ahead, and sheared through the redstone column that hid the snarl. The polished stone sliced like silk. The severed column trembled; part of it tore loose and dropped from the ceiling, smashing into huge, jagged chunks on the floor. As the rumbling faded, he heard beyond it the sound of boots on stone. Running.
Callandor at the ready, Rand hurried after Ba’alzamon.
The tall archway leading out of the Heart collapsed as he reached it, the entire wall falling in clouds of dust and rock as if to bury him, but he threw the Power at it, and all became dust floating in the air. He ran on. He was not sure what he had done, or how, but he had no time to think on it. He ran after Ba’alzamon’s retreating footsteps, echoing down the halls of the Stone.
Myrddraal and Trollocs leaped out of thin air, huge bestial shapes and eyeless faces distorted with a rage to kill, in hundreds, so they jammed the hall before him and behind, scythe-like swords and blades of deadly black steel seeking his blood. Without knowing how, he turned them to vapor that parted before him—and vanished. The air around him suddenly became choking soot, clogging his nostrils, shutting off breath, but he made it fresh air again, a cool mist. Flames leaped from the floor beneath his feet, spurted from the walls, the ceiling, furious jets that flashed tapestries and rugs, tables and chests to wisps of ash, flung ornaments and lamps ahead of them as drops of molten, burning gold; he smashed the fires flat, hardened them into a red glaze on the rock.
The stones around him faded almost to mist; the Stone faded. Reality trembled; he could feel it unraveling, feel himself unraveling. He was being pushed out of the here, into some other place where nothing existed at all. Callandor blazed in his hands like the sun till he thought it would melt. He thought he himself would melt from the surge of the One Power through him, the flood that he somehow directed into sealing up the hole that had opened around him, into holding himself on the side of existence. The Stone became solid again.
He could not even begin to imagine what it was that he did. The One Power raged inside him till he barely knew himself, till he barely was himself, till what was himself almost did not exist. His precarious stability teetered. To either side lay the endless fall, obliteration by the Power that coursed through him into the sword. Only in the dance along the razor’s sharp edge was there even an uncertain safety. Callandor shone in his fist until it seemed he carried the sun. Dimly within him, fluttering like a candle flame in a storm, was the surety that holding Callandor, he could do anything. Anything.
Through endless corridors he ran, dancing along the razor, chasing the one who would slay him, the one he must slay. There could be no other end, this time. This time one of them must die! That Ba’alzamon knew it as well was clear. Always he fled, always staying ahead of sight so that only the sounds of his flight drew Rand on, but even fleeing he turned this Stone of Tear that was not the Stone of Tear against Rand, and Rand fought back with instinct and guesses and chance, fought and ran down that knife edge in perfect balance with the Power, the tool and weapon that would consume him utterly if he faltered.
Water filled the halls from top to bottom, thick and black as the bottom of the sea, choking off breath. He made it air again, unknowingly, and ran on, and suddenly the air gained weight until it seemed every inch of his skin supported a mountain, squeezing in from all directions. In the instant before he was crushed to nothingness he chose tides out of the flood of Power raging through him—he did not know how or which or why; it was too fast for thought or knowing—and the pressure vanished. He pursued Ba’alzamon, and the very air was abruptly solid rock encasing him, then molten stone, then nothing at all to fill his lungs. The ground beneath his boots pulled at him as if every pound suddenly weighed a thousand, then all weight vanished so that a step left him spinning in midair. Unseen maws gaped to rip his mind from his body, to tear away his soul. He sprang each trap and ran on; what Ba’alzamon twisted to destroy him, he made right without being aware of how. Vaguely he knew that in some way he had brought things back into natural balance, forced them into line with his own dance down that impossibly thin divide between existence and nothingness, but that knowledge was distant. All his awareness lay in the pursuit, the hunt, the death that must end it.
And then he was in the Heart of the Stone again, stalking through the rubbled gap that had been a wall. Some of the columns hung like broken teeth, now. And Ba’alzamon backed away from him, eyes burning, shadow cloaking him. Black lines like steel wires seemed to run off from Ba’alzamon into the darkness mounding around him, vanishing into unimaginable heights and distances within that blackness.
“I will not be undone!” Ba’alzamon cried. His mouth was fire; his shriek echoed among the columns. “I cannot be defeated! Aid me!” Some of the darkness shrouding him drifted into his hands, formed into a ball so black it seemed to soak up even the light of Callandor. Sudden triumph blazed in the flames of his eyes.
“You are destroyed!” Rand shouted. Callandor spun in his hands. Its light roiled the darkness, severed the steel-black lines around Ba’alzamon, and Ba’alzamon convulsed. As if there were two of him he seemed to dwindle and grow larger at the same time. “You are undone!” Rand plunged the shining blade into Ba’alzamon’s chest.
Ba’alzamon screamed, and the fires of his face flared wildly. “Fool!” he howled. “The Great Lord of the Dark can never be defeated!”
Rand pulled Callandor’s blade free as Ba’alzamon’s body sagged and began to fall, the shadow around him vanishing.
And suddenly Rand was in another Heart of the Stone, surrounded by columns still whole, and fighting men screaming and dying, veiled men and men in breastplates and helmets. Moiraine still lay crumpled at the base of a redstone column. And at Rand’s feet lay the body of a man, sprawled on its back with a hole burned through the chest.
I have done it, he thought.  I have won the Last Battle! Light, I AM the Dragon Reborn! The breaker of nations, the Breaker of the World. No! I will END the breaking, end the killing! I will MAKE it end!
He raised Callandor above his head. Silver lightning crackled from the blade, jagged streaks arching toward the great dome above. “Stop!” he shouted. The fighting ceased; men stared at him in wonder, over black veils, from beneath the rims of round helmets. “I am Rand al’Thor!” he called, so his voice rang through the chamber. “I am the Dragon Reborn!” Callandor shone in his grasp.
One by one, veiled men and helmeted, they knelt to him, crying, “The Dragon is Reborn! The Dragon is Reborn!”


WHACK is where awesome women come together to learn, explore, and build. Think out of the box, play with new technologies, ask questions, make mistakes, learn something new, and have fun! To help you execute those rad ideas, we’re providing seasoned mentors to spread their knowledge.
Get pumped! Each team will consist of students from a mix of Boston area colleges (Wellesley, Simmons, Smith, Harvard, MIT, etc) and a professional mentor. With intimate teams, a mentor-based experience, and a focus on engaging women, WHACK provides opportunities to meet people, learn, and hack together.
WHACK will take place from Saturday to Sunday, October 3-4, 2015.
Check-in on Saturday will begin at around 9am, and the closing ceremony will end around 2pm on Sunday.
Check back soon for a detailed schedule!
WHACK supports women in tech, and we invite female undergrads in the New England area to join us.  We’re a hackathon that focuses more on your learning experience than the espresso shots. Good mentorship matters, and we're here to bring amazing resources and women together for one rocking weekend.
Registration coming soon :)
Love women in tech? Be a part of our support system!


General Instructions:
Click the links above to login and visit your page.
On your page, you will be presented with a puzzle.
Starting on level 1, each puzzle is accompanied by a chat room full of others attempting to solve that same puzzle!
You can post messages and help each other out!
Once you solve the puzzle, you are immediately pushed into the next level and entered into a new chat room filled with new people also on your level.
Each level gets successively harder, and once you reach the end - you have successfully ESCAPED!
Good luck!


Desafio #20 Album de fotos usando Flex e Hover
Photo by © Leonne Brito
Photo by © Gabriel Pompeo
Photo by © Breston Kenya
Photo by © Camila Cordeiro
Photo by © Anna Shvets
Photo by © Yaroslav Shuraev
Photo by © Francesca Zama
Photo by © Tubarones
Photo by © Maskin Goncharenok
Photo by © Jessica Ticozzelli
Photo by © Wictor Cardoso
Photo by © Darwis Alwan
Photo by © Anna Shvets
Photo by © Jackson David
Photo by © Pixabay
Photo by © 4TH FingerStudio


Open vSwitch Database Interface Definition Language (OVSDB IDL).
The OVSDB IDL maintains an in-memory replica of a database. It issues RPC
requests to an OVSDB database server and parses the responses, converting
raw JSON into data structures that are easier for clients to digest.
The IDL also assists with issuing database transactions. The client
creates a transaction, manipulates the IDL data structures, and commits or
aborts the transaction. The IDL then composes and issues the necessary
JSON-RPC requests and reports to the client whether the transaction
completed successfully.
The client is allowed to access the following attributes directly, in a
read-only fashion:
- 'tables': This is the 'tables' map in the ovs.db.schema.DbSchema provided
to the Idl constructor. Each ovs.db.schema.TableSchema in the map is
annotated with a new attribute 'rows', which is a dict from a uuid.UUID
to a Row object.
The client may directly read and write the Row objects referenced by the
'rows' map values. Refer to Row for more details.
- 'change_seqno': A number that represents the IDL's state. When the IDL
is updated (by Idl.run()), its value changes. The sequence number can
occasionally change even if the database does not. This happens if the
connection to the database drops and reconnects, which causes the
database contents to be reloaded even if they didn't change. (It could
also happen if the database server sends out a "change" that reflects
what the IDL already thought was in the database. The database server is
not supposed to do that, but bugs could in theory cause it to do so.)
- 'lock_name': The name of the lock configured with Idl.set_lock(), or None
if no lock is configured.
- 'has_lock': True, if the IDL is configured to obtain a lock and owns that
lock, and False otherwise.
Locking and unlocking happens asynchronously from the database client's
point of view, so the information is only useful for optimization
(e.g. if the client doesn't have the lock then there's no point in trying
to write to the database).
- 'is_lock_contended': True, if the IDL is configured to obtain a lock but
the database server has indicated that some other client already owns the
requested lock, and False otherwise.
- 'txn': The ovs.db.idl.Transaction object for the database transaction
currently being constructed, if there is one, or None otherwise.
| def ovs.db.idl.Idl.run |
( |
|
self | ) |
|
Processes a batch of messages from the database server. Returns
True if the database as seen through the IDL changed, False if it did
not change. The initial fetch of the entire contents of the remote
database is considered to be one kind of change. If the IDL has been
configured to acquire a database lock (with Idl.set_lock()), then
successfully acquiring the lock is also considered to be a change.
This function can return occasional false positives, that is, report
that the database changed even though it didn't. This happens if the
connection to the database drops and reconnects, which causes the
database contents to be reloaded even if they didn't change. (It could
also happen if the database server sends out a "change" that reflects
what we already thought was in the database, but the database server is
not supposed to do that.)
As an alternative to checking the return value, the client may check
for changes in self.change_seqno.
140 """Processes a batch of messages from the database server. Returns
141 True if the database as seen through the IDL changed, False if it did
142 not change. The initial fetch of the entire contents of the remote
143 database is considered to be one kind of change. If the IDL has been
144 configured to acquire a database lock (with Idl.set_lock()), then
145 successfully acquiring the lock is also considered to be a change.
147 This function can return occasional false positives, that is, report
148 that the database changed even though it didn't. This happens if the
149 connection to the database drops and reconnects, which causes the
150 database contents to be reloaded even if they didn't change. (It could
151 also happen if the database server sends out a "change" that reflects
152 what we already thought was in the database, but the database server is
153 not supposed to do that.)
155 As an alternative to checking the return value, the client may check
156 for changes in self.change_seqno."""
158 initial_change_seqno = self.change_seqno
163 if not self._session.is_connected():
166 seqno = self._session.get_seqno()
167 if seqno != self._last_seqno:
168 self._last_seqno = seqno
169 self.__txn_abort_all()
170 self.__send_monitor_request()
172 self.__send_lock_request()
175 msg = self._session.recv()
178 if (msg.type == ovs.jsonrpc.Message.T_NOTIFY
179 and msg.method ==
"update"
180 and len(msg.params) == 2
181 and msg.params[0] ==
None):
183 self.__parse_update(msg.params[1])
184 elif (msg.type == ovs.jsonrpc.Message.T_REPLY
185 and self._monitor_request_id
is not None
186 and self._monitor_request_id == msg.id):
189 self.change_seqno += 1
190 self._monitor_request_id =
None
192 self.__parse_update(msg.result)
193 except error.Error, e:
194 vlog.err(
"%s: parse error in received schema: %s"
195 % (self._session.get_name(), e))
197 elif (msg.type == ovs.jsonrpc.Message.T_REPLY
198 and self._lock_request_id
is not None
199 and self._lock_request_id == msg.id):
201 self.__parse_lock_reply(msg.result)
202 elif (msg.type == ovs.jsonrpc.Message.T_NOTIFY
203 and msg.method ==
"locked"):
205 self.__parse_lock_notify(msg.params,
True)
206 elif (msg.type == ovs.jsonrpc.Message.T_NOTIFY
207 and msg.method ==
"stolen"):
209 self.__parse_lock_notify(msg.params,
False)
210 elif msg.type == ovs.jsonrpc.Message.T_NOTIFY
and msg.id ==
"echo":
213 elif (msg.type
in (ovs.jsonrpc.Message.T_ERROR,
214 ovs.jsonrpc.Message.T_REPLY)
215 and self.__txn_process_reply(msg)):
221 vlog.dbg(
"%s: received unexpected %s message"
222 % (self._session.get_name(),
225 return initial_change_seqno != self.change_seqno
def type_to_string(type_)
Definition: jsonrpc.py:76
static int run(struct ofproto *ofproto_)
Definition: ofproto-dpif.c:1448


Poppy Peace
Managing Director
Lindsey Clark
Design Manager
Sylwia Lubian
Senior Interior Designer
Bukky Salami
Eloise James
Interior Designer
Freya Reed
Chloe Pavett
Operations Manager
Marzena Kotarska
Stock & Administrative Assistant
CARMEL
General Dogsbody


With a history that spans three centuries, CST/berger brings an unparalleled expertise to designing, developing and manufacturing leveling and layout instruments. CST/berger tools and accessories are built to survive the toughest jobsites and packed with innovative features – leading the way for the building, construction and survey markets.
The company is the union of two measuring tool specialist manufacturers: Chicago Steel Tape, founded in 1903, and Berger Instruments, founded in 1871. After merging in 1994, the company developed global leadership in leveling and layout instruments. The Robert Bosch Tool Corporation acquired CST/berger in 2008, helping it to become a leader in measuring and leveling technology.
Whether you are looking for a measuring, leveling or layout solution, you can find the right tool here.


We are a film company based in New Jersey, we try in help teens get into the film indastry. We work in live action and 3d animtion, the most popular types of film today.
Eli dotson is co owner and founder and CEO and CFO, Colton ronney is co owner and are CIC, Conor slade is are CTO


Ticket ID: 409788
Name:
Parker Siedel
No Active Support
Email:
<EMAIL_ADDRESS>Response Time:
72 hours, 60hours left
Last Action:
Never been locked.
Link to public post
Status:
Not answered


{{ define "main" }}
Hi, I'm Chathan Driehuys, a software developer from North Carolina. I build performant software with focuses on correctness through automation and efficient developer experiences.
Outside of work, I enjoy rock climbing, disc golfing, video gaming, and working on my pilot's license.
I am not currently looking for new work. Please do not contact me regarding such opportunities.


write
Write a message on the terminal of a specified logged in user (ctrl-C to stop writing messages).
Use the `who` command to find out all terminal_ids of all active users active on the system.
- Send a message to a given user on a given terminal id:
write username terminal_id
- Send message to "testuser" on terminal "/dev/tty/5":
write testuser tty/5
- Send message to "jhondoe" on pseudo terminal "/dev/pts/5":
write jhondoe pts/5


GlobalNET is offline.
Please contact your local administrator for more information on when it will be back up.


Toggle navigation
JAlvey
Home
Resume/CV
Projects
SOFTWARE PROJECTS
Data Analysis
>
Object-Oriented Programming
Software Development


The Lua implemented non blocking (asynchronous) firmware upload example is designed to resemble the logic in the C firmware upload example. The code is designed such that it can be used by a single threaded server without blocking concurrent server requests.
When the browser uploads the zip file to the server, the Barracuda Socket Dispatcher triggers and sends the event to the Barracuda Server. The server parses the request and delegates the request to a thread in the Barracuda Thread Pool, if the pool is active. The thread in the Thread Pool executes the index.lsp page. If the Thread Pool is inactive, i.e., if the server runs in single threaded mode, the index.lsp page is executed directly in the context of the socket dispatcher.
The code in this example can be used by a single threaded server since the code in the .preload script is designed to use asynchronous upload. The .preload script includes logic that detaches the active socket connection from the server and that handles the upload by using asynchronous sockets. The asynchronous uploader is created by calling ba.create.upload().
We do not want to unpack the zip file in the context of the dispatcher since this would block other requests while unpacking the zip file. For this reason, when the upload is completed, code in the .preload script delegates the execution to a thread managed by function ba.thread.run(). The code executed by the thread from ba.thread.run() loads, parses, and runs the .managezip.lsp page. The .managezip.lsp page unzips the content of the uploaded ZIP file.
Files:
External resources used by this example:


An NPM installer for PhantomJS, headless webkit with JS API.
npm install phantomjs-prebuilt
Or grab the source and
node ./install.js
What this installer is really doing is just grabbing a particular "blessed" (by this module) version of Phantom. As new versions of Phantom are released and vetted, this module will be updated accordingly.
bin/phantomjs [phantom arguments]
And npm will install a link to the binary in node_modules/.bin
as
it is wont to do.
The package exports a path
string that contains the path to the
phantomjs binary/executable.
Below is an example of using this package via node.
var path = require('path')
var childProcess = require('child_process')
var phantomjs = require('phantomjs-prebuilt')
var binPath = phantomjs.path
var childArgs = [
path.join(__dirname, 'phantomjs-script.js'),
'some other argument (passed to phantomjs script)'
]
childProcess.execFile(binPath, childArgs, function(err, stdout, stderr) {
// handle results
})
Or exec()
method is also provided for convenience:
var phantomjs = require('phantomjs-prebuilt')
var program = phantomjs.exec('phantomjs-script.js', 'arg1', 'arg2')
program.stdout.pipe(process.stdout)
program.stderr.pipe(process.stderr)
program.on('exit', code => {
// do something on end
})
Note: childProcess.spawn() is called inside exec()
.
run()
method detects when PhantomJS gets ready. It's handy to use with WebDriver (Selenium).
var phantomjs = require('phantomjs-prebuilt')
var webdriverio = require('webdriverio')
var wdOpts = { desiredCapabilities: { browserName: 'phantomjs' } }
phantomjs.run('--webdriver=4444').then(program => {
webdriverio.remote(wdOpts).init()
.url('https://developer.mozilla.org/en-US/')
.getTitle().then(title => {
console.log(title) // 'Mozilla Developer Network'
program.kill() // quits PhantomJS
})
})
The major and minor number tracks the version of PhantomJS that will be installed. The patch number is incremented when there is either an installer update or a patch build of the phantom binary.
Pre-2.0, this package was published to NPM as phantomjs. We changed the name to phantomjs-prebuilt at the request of PhantomJS team.
Please do not download PhantomJS for every CI job because it can quickly overload our CDNs. Instead take advantage of CI caching.
In Travis-CI add the following to your .travis.yml
to enable caching & avoid repeated
downloads of PhantomJS.
cache:
directories:
- travis_phantomjs
before_install:
# Upgrade PhantomJS to v2.1.1.
- "export PHANTOMJS_VERSION=2.1.1"
- "export PATH=$PWD/travis_phantomjs/phantomjs-$PHANTOMJS_VERSION-linux-x86_64/bin:$PATH"
- "if [ $(phantomjs --version) != $PHANTOMJS_VERSION ]; then rm -rf $PWD/travis_phantomjs; mkdir -p $PWD/travis_phantomjs; fi"
- "if [ $(phantomjs --version) != $PHANTOMJS_VERSION ]; then wget https://github.com/Medium/phantomjs/releases/download/v$PHANTOMJS_VERSION/phantomjs-$PHANTOMJS_VERSION-linux-x86_64.tar.bz2 -O $PWD/travis_phantomjs/phantomjs-$PHANTOMJS_VERSION-linux-x86_64.tar.bz2; fi"
- "if [ $(phantomjs --version) != $PHANTOMJS_VERSION ]; then tar -xvf $PWD/travis_phantomjs/phantomjs-$PHANTOMJS_VERSION-linux-x86_64.tar.bz2 -C $PWD/travis_phantomjs; fi"
- "phantomjs --version"
By default, this package will download phantomjs from our releases. This should work fine for most people.
If github is down, or the Great Firewall is blocking github, you may need to use
a different download mirror. To set a mirror, set npm config property phantomjs_cdnurl
.
Alternatives include https://bitbucket.org/ariya/phantomjs/downloads
(the official download site)
and http://cnpmjs.org/downloads
.
npm install phantomjs-prebuilt --phantomjs_cdnurl=https://bitbucket.org/ariya/phantomjs/downloads
Or add property into your .npmrc
file (https://www.npmjs.org/doc/files/npmrc.html)
phantomjs_cdnurl=https://bitbucket.org/ariya/phantomjs/downloads
Another option is to use PATH variable PHANTOMJS_CDNURL
.
PHANTOMJS_CDNURL=https://bitbucket.org/ariya/phantomjs/downloads npm install phantomjs
If you plan to install phantomjs many times on a single machine, you can
install the phantomjs
binary on PATH. The installer will automatically detect
and use that for non-global installs.
PhantomJS needs to be compiled separately for each platform. This installer finds a prebuilt binary for your operating system, and downloads it.
If you check your dependencies into git, and work on a cross-platform team, then you need to tell NPM to rebuild any platform-specific dependencies. Run
npm rebuild
as part of your build process. This problem is not specific to PhantomJS, and this solution will work for any NodeJS package with native or platform-specific code.
If you know in advance that you want to install PhantomJS for a specific architecture,
you can set the environment variables: PHANTOMJS_PLATFORM
(to set target platform) and PHANTOMJS_ARCH
(to set target
arch), where platform
and arch
are valid values for
process.platform and process.arch.
PhantomJS is not a library for NodeJS. It's a separate environment and code written for node is unlikely to be compatible. In particular PhantomJS does not expose a Common JS package loader.
This is an NPM wrapper and can be used to conveniently make Phantom available. It is not a Node JS wrapper.
I have had reasonable experiences writing standalone Phantom scripts which I then drive from within a node program by spawning phantom in a child process.
Read the PhantomJS FAQ for more details: http://phantomjs.org/faq.html
An extra note on Linux usage, from the PhantomJS download page:
There is no requirement to install Qt, WebKit, or any other libraries. It however still relies on Fontconfig (the package fontconfig or libfontconfig, depending on the distribution).
spawn ENOENT
This is NPM's way of telling you that it was not able to start a process. It usually means:
node
is not on your PATH, or otherwise not correctly installed.tar
is not on your PATH. This package expects tar
on your PATH on Linux-based platforms.bzip2
is not on your PATH.Check your specific error message for more information.
Error: EPERM
or operation not permitted
or permission denied
This error means that NPM was not able to install phantomjs to the file system. There are three major reasons why this could happen:
npm cache clean
to fix them.Error: read ECONNRESET
or Error: connect ETIMEDOUT
This error means that something went wrong with your internet connection, and the installer was not able to download the PhantomJS binary for your platform. Please try again.
ECONNRESET
or ETIMEDOUT
consistently.Do you live in China, or a country with an authoritarian government? We've seen problems where the GFW or local ISP blocks github, preventing the installer from downloading the binary.
Try visiting the download page manually.
If that page is blocked, you can try using a different CDN with the PHANTOMJS_CDNURL
env variable described above.
You can tell NPM and the PhantomJS installer to skip validation of ssl keys with NPM's strict-ssl setting:
npm set strict-ssl false
WARNING: Turning off strict-ssl
leaves you vulnerable to attackers reading
your encrypted traffic, so run this at your own risk!
If you install PhantomJS manually, and put it on PATH, the installer will try to use the manually-installed binaries.
node
Some Linux distros tried to rename node
to nodejs
due to a package
conflict. This is a non-portable change, and we do not try to support this. The
official documentation
recommends that you run apt-get install nodejs-legacy
to symlink node
to nodejs
on those platforms, or many NodeJS programs won't work properly.
We only have binaries available for common OS / processor configurations. Sorry.
You may be able to get a PhantomJS binary from your operating system's package manager. Or you can build your own from source. If you put that binary on PATH, this installer will use it (see "Deciding Where to Get PhantomJS" above).
Questions, comments, bug reports, and pull requests are all welcome. Submit them at the project on GitHub. If you haven't contributed to an Medium project before please head over to the Open Source Project and fill out an OCLA (it should be pretty painless).
Bug reports that include steps-to-reproduce (including code) are the best. Even better, make them in the form of pull requests.
Dan Pupius (personal website) and Nick Santos, supported by A Medium Corporation.
Copyright 2012 A Medium Corporation.
Licensed under the Apache License, Version 2.0.
See the top-level file LICENSE.txt
and
(http://www.apache.org/licenses/LICENSE-2.0).


--- layout: home title: "404: Page not found" permalink: 404.html ---
Getting lost in the moment can be good. But it seems your "lost" is not this kind. Want to head back home and try again?


The cell viability of astrocytes after 24 h treatment with essential oils from Rhaponticum carthamoides hairy roots (HR) and roots of soil-grown plants (SGR). The viability was determined by MTT assay. The values are the mean ± SD of three independent experiments. ∗ p < 0.05 versus control; # p < 0.05 HR essential oil versus SGR essential oil.


These are the four most interesting questions I came across while doing an IQ quiz on iqtest.dk. Among the 39 questions in the quiz, they have the least intuitive solutions. Or simply put it, they are among the very few questions which I took more than 12 seconds to solve.
Question 26
The pictures are in chronological order. Each picture (except the first one) is the result of certain transformations that are applied to the previous picture.
The transformations going on are the synchronous clockwise rotations of the center line segment, and another two shorter line segments whose pivots are at the 4th and 6th dots respectively.
Therefore the answer is A.
One of the things that make the solution not so intuitive is that when the two shorter line segments are at the edge (e.g. in the 3rd picture) and the rotations take place, instead of spinning 90 degrees and leaving the picture, they spin 180 degrees as if they are confined in the bounded pictorial two-dimensional world.
Question 37
The pictures are in chronological order. Each picture (except the first one) is the result of certain transformations that are applied to the previous picture.
We can see that the black squares are building up diagonally, but what most people don't notice are that the circles are both moving one block to the right per picture (and one will move to the next row if it reaches the edge), and both will be blocked by the black squares upon entering them (that is why you don't see the white circle in the 2nd picture), and change their colors upon leaving each square (either from white to black or black to white).
Therefore the answer is H - the first dot has moved to 3rd row from 2nd row and the second dot hidden behind the black square in the 8th picture has experienced a change in color from black to white and ended up at 3rd row, 3rd column.
Question 36
The pictures are not in chronological order. Among them there is a pattern built on the foundation that each row and column has to obey certain principles.
The 3 principles each row and column has to abide by are
- The three pictures in every row/column must have 3 different sets of same-color block(s) that each forms a straight line and the set of 3 same-color blocks in each picture has to be in different color. (e.g. The 3 sets of same-color block(s) in the 1st picture are 1 block in light grey, 2 blocks in grey, and 3 blocks in black differed from those sets of 3 same-color blocks in the 2nd, 3rd, 4th and 7th pictures.)
- Every row/column must have 1 picture with its sets of same-color block(s) in vertical display (the 3 pictures with vertical display are 1st, 6th and 8th), while the others' in horizontal display.
- In every row the horizontally displayed pictures can only contain one block in the same color as the set of 3 same-color blocks in the vertically displayed picture, while in every column the horizontally displayed pictures can only contain two blocks in the same color as the set of 3 same-color blocks in the vertically displayed picture.
Therefore the answer is F, which has 3 sets of same-color block(s) horizontally displayed with only 1 block in light grey, 2 blocks in grey, and 3 blocks in black dissimilar from the other pictures' in the third row and column.
Question 39
This question can be solved by viewing either that among the pictures there is a pattern built on the foundation that each row and column has to obey certain principles, or that each picture (except the first one) is the result of certain transformations that are applied to the previous picture.
The first theory I formulated that works is that in each row/column the different sets of similarities in terms of the position of polygon those 3 pictures share with their corresponding neighboring pictures are of the same number. (e.g. The first and second pictures have 4 similarities - they both contain two triangles in the 4th and 6th blocks, a cross in the 7th block and a circle in the 9th block - and 4 is the number of similarities the second and third pictures have.)
Therefore the answer is B, the only picture that shares 1 similarity with its horizontal neighbor, the 8th picture (which also shares 1 similarity with the 7th picture), and 1 similarity with its vertical neighbor, the 6th picture (which also shares 1 similarity with the 3rd picture).
But I was not quite satisfied with this theory as it doesn't really describe the pattern in great details and it allows more than one possible answer to exist (though among the choices the only possible answer is B). So I went on studying the pictures and managed to come up with a more elaborate theory that works. Every picture undergoes a set of transformations to turn into the next picture.
When the next pictures are in the same row, the transformations consist of
- the transfiguration of shapes that causes triangles in the original picture to become crosses, circles to become triangles and crosses to become circles
- the one-block-to-the-right-per-picture movement of all polygons (and one will move to the next row upon reaching the edge, or back to the first block upon reaching the end).
And when the next pictures are not in the same row (e.g. from 3rd to 4th picture), there will be a clockwise rotational transformation instead.
Interestingly, this theory too suggests that B is the answer. And this is no coincidence. Using mathematics, we can actually prove that the pattern described in the first theory is the consequence of the transformations described in the second theory. Or in the language of propositional calculus, transformations_in_2ndT ⇒ pattern_in_1stT.
Techniques
Now some of you may be curious. How did I actually come up with these solutions? Without further ado, here is the algorithm I use:
- Determine if it is more likely that the pictures are formed as the result of having each row and column governed by a set of principles, or that there is a set of transformations going on in the pictures.
- If it is a principles-based pattern, use the sub-algorithm below to formulate a principles-based theory.
- Study the similarities between the 1st, 2nd, and 3rd pictures and pick a set of similarities that are related to one another.
- Come up with a set of principles that these 3 pictures must abide by and use them as the explanation of why the set of similarities exists.
- If the explanation does not work, go back to step 2, this time invent a different set of principles.
- When you realize there exist no simple and elegant principles to describe the similarities, go back to step 1, this time pick a different set of similarities.
- If the explanation works, use it to explain the similarities in other rows and columns to test its consistency.
- If it is consistent, look at the differences between 1st, 2nd, and 3rd pictures and observe if other rows and columns exhibit similar differences.
- If it is not consistent, go back to step 2, this time invent a different set of principles.
- If they exhibit similar differences, come up with principle(s) that explains this set of differences and add these/this principle(s) to the set of principles that pictures in each row and column must abide by.
- If you are taking too long to devise a principles-based theory that works, go back to step 1, this time study other correlated pictures, or consider the possibility that the pattern can be described by a transformations-based theory.
- If it is a transformations-based pattern, use the sub-algorithm below to formulate a transformations-based theory.
- Study the differences between the 1st and 2nd picture and try to make sense out of them.
- Come up with a set of transformations the 1st picture has to undergo in order for the differences to exist in the 2nd picture.
- If you fail to make sense out of their differences, study their similarities and come up with a set of transformations the 1st picture has to undergo in order to keep the similarities unaltered but result in the differences in the 2nd picture.
- If the explanation does not work, go back to step 2, this time invent a different set of transformations.
- When you have invented a number of transformations and still have not managed to successfully explain why the differences are there, go back to step 1, this time study other correlated pictures, or consider the possibility that the pattern can be described by a principles-based theory.
- If the explanation works, apply the transformations to the 2nd picture and see if it outputs the 3rd picture. If it does, try deriving the 4th picture by applying the transformations to the 3rd picture, etc. If it doesn't, go back to step 2, this time come up with a different set of transformations.
- If you are taking too long to devise a transformations-based theory that works, consider the possibility that the pattern can be described by a principles-based theory.
- Go through all choices of answer and see which one fits the theory. If more than one fit, or none fits, or you are not satisfied with your theory, go back to step 1.
But most importantly, you have to be confident and always remember that as a human with a well-functioning brain, you are capable of solving logically constructed questions using logic. It is just a matter of time. And then just keep trying, old sport. It is this frame of mind that gets you a higher score in an IQ quiz. And succeed at anything in life.
Tagged: IQ, algorithm, logic, pattern


Custom Web Design Services
Generate more leads with an effective web presence. Asset has been helping businesses thrive online with our unique web design services and online marketing techniques.
Establishing a web presence and effectively marketing your website can take weeks or even months of researching different services such as; website designers, developers, website hosting, online marketing, SEO experts, logo designers, link builders, article writers and so on.
We can build any type or size website you require, from small custom designed websites or highly advanced online stores. We also offer lots of help and advice along the way, so don't worry if you are not a web guru, we have you covered. Each of our websites can be developed with a very easy to use content management system, also known as a CMS, and we provide free basic training on how to use your website.


Virtualization and Containerization are both computing environments that are isolated from the rest of the system. Virtualization uses virtual machines while containerization uses containers to package the operating systems. They both have differences and similarities as well as advantages and disadvantages based on project needs.
In virtualization, hypervisors are software used to separate resources from the physical machine to be partitioned and dedicated to its virtual machine. The hypervisor relays instructions issued to the VM that requires additional resources from the physical machine.
Advantages of virtual machines:
Disadvantages of virtual machines:
Software containers act like shipping containers except they hold different parts of an application within its libraries and framework. The container shares the kernel of the host operating system with other containers and the shared parts are read-only. This makes containers lightweight.
Advantages of containers:
Disadvantages of containers:
Deciding which of the two is best for you will depend on the intended use. One approach to consider Containers versus virtual machines is that while VMs run a few distinctive working frameworks on one process hub, while containers offer the chance to virtualize the working framework itself. Containers allow us to virtualize and operating system to run multiple workloads on one system while virtual machines allows virtualized hardware to run multiple operating systems.


If this checkbox is selected, IntelliJ IDEA inserts an injected operand as a literal, if its type is not recognized.


About Me
I am currently pursuing Master of Computer Science at North Carolina State University.
I have 2 years of work experience as Software Engineer at Infibeam, primarily focused on building e-commerce mobile applications for iOS. I am very passionate about building applications that have a positive impact on peoples lives.
I am actively looking for internship opportunities in Software or Mobile Application Development.You can view/download my resume. Please feel free to contact me for any queries/future opportunities.
Experiences
- Designed and developed iOS E-Commerce Platform by abstracting commonly used functionalities of E-Commerce app to reduce the development time by more than 25% and successfully hosted it using CocoaPods.
- Developed more than 80% of AxiomTelecom’s E-Commerce application for iOS platform.
- Helped increase user engagement by approximately 15% for JSW’s Rewards & Loyalty iOS application and received client appreciation for same.
- Improved developer productivity by abstracting commonly used UI components such as progress indicator and custom text fields.
- Developed more than 10 high-quality prototypes for various high profile clients like Amul, Della Adventure, and Axiom Telecom.
- Worked on JavaScript in Appcelerator Titanium to create Mobile applications for both Android and iOS.
- Technologies: Swift, CocoaPods, JavaScript, Appcelerator Titanium
CannyBrain is an educational initiative that helps students and freshers to prepare for their career and allow them to crack their online exams. CannyBrain offers complete customization to the user to select topics across category and show in-depth analysis of their performance and help them understand areas where they need to work harder.
- Studied market for similar products and created a system which provided a complete user examination analysis based on time and user accuracy.
- Developed and designed databases and architecture for the website to allow multiple types of questions like MCQs, Coding, Fill in the blank, and many more.
- Developed algorithms to select questions and generate test results using past test data and difficulty level.
- Used agile development to get early feedback.
- http://cannybrain.com
- Technologies: PHP, Laravel, Eloquent ORM, MySQL, ReactJS
Lunchex is a small initiative to create a global community of people who are willing to share their local cultures and cuisines by enjoying a meal with travelers. The goal is to make the world a better place where people respect and value each other’s cultures & cuisine over a delicious meal.
- Divided application into modules and assigned it to team members and monitoring progress.
- Hosted, maintained and continually developed new features.
- Technologies: PHP, MySQL, JavaScript
- Gathered requirements, designed ER diagram and implemented database design.
- Collaborated with a team of 5 to develop a dynamic website with admin panel to make future updates quicker.
- http://comp.spit.ac.in
- Technologies: PHP, MySQL, JavaScript
- Developed JSON parsing for MeWants App.
- RND for using parse to reduce development time for apps.
- Technologies: Java, Android


Version Control
page1
page2
page3
page4
Page2
What's New
Random Text
Upcoming Events
Random Text
Blog
Date
Random text
Useful Links
Just
a
list
Click on logo for for info


Conceptually, at the heart of the EMCAScript observation mechanism are two structures:
Object.observe enters a function into an object's associated set of ChangeObservers (while Object.unobserve removes it).
When a change takes place to object, a change record may be appended to the PendingChangeRecords of the functions which are registered in its associated ChangeObservers.
An observer will receive the changes, either asynchronously, at the end of the current turn, or synchronously, if it calls Object.deliverChangeRecords() with itself as an argument. In either case, IFF the function has pending changes, it will be invoked with the contents of its PendingChangeRecords as the only argument.
The vocabulary of observable changes to objects hews close to the object model and reflective APIs of ECMAScript.
Change records are enqueued to observers via the internal EnqueueChangeRecord algorithm.
Every object has an associated Notifier object which can be retrieved via Object.getNotifier() as long as the object is not frozen. The Notifier has internal properties which reference the object's associated set of observers (ChangeObservers) as well as the set of changes which are currently being performed on the object (ActiveChanges).
The Notifier has public API (notify() and performChange()) which can be used to deliver "synthetic" change records to observers and describe higher-level changes.
An observer must only receive change records whose type matches one provided in the accept list, which is passed as the (optional) third argument to Object.observe (if the argument is not provided, the list defaults to the "intrinsic" set of change types).
An observation is conceptually a tuple: <observed object, observer function, accepted change types>. Object.observe ensures that this tuple is represented as an observerRecord in the associated Notifier's ChangeObservers list.
The performChange() method of an object's associated Notifier provides a mechanism to describe a set of changes as a single (more compact) higher-level change type.
The set of change types being performed on an object is represented in the set of properties of the Notifier's BeginChange before, and EndChange after invoking the provided changeFn function.
When a change is to be enqueued to an object's associated observers, the internal EnqueueChangeRecord algorithm tests whether each observer should receive the change by invoking ShouldDeliverToObserver.
ShouldDeliverToObserver returns true IFF an observer accepts the candidate change record's type, but accepts none of the change types currently being performed on the object (as represented in the ActiveChanges).
At the end of the current processing turn (or "Microtask"), DeliverAllChangeRecords is invoked, which continuously delivers pending change records to observers until there are none remaining.
The order in which observers are delivered to is maintained in the ObserverCallbacks list. The first time a function is used as an observer by providing it as an argument to Object.observe, it is appended to the end of ObserverCallbacks.
Delivery takes place by repeatedly iterating front-to-back through ObserverCallbacks, delivering to any observer who has pending change records, until no observer have pending change records.


Menu
Days timetable
Days
Show
-- period length --
New day
Time\Date
2000-01-01
2000-01-02
00:00-24:00
Activity
Another activity
Home


Methods
_spliceTask(roomName, taskType, fingerprint) → {Boolean}
Splice the task from the task-pool Array.
Parameters:
| Name | Type | Description |
|---|---|---|
roomName |
String | |
taskType |
String | |
fingerprint |
String |
- Source:
Returns:
Indicate whether successful.
- Type
- Boolean
addAttackTask(home, subTaskType, targetRoom, routes, settings) → {Number}
Add the Attack Task.
Parameters:
| Name | Type | Description | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
home |
String | The home of creeps which the task is expected to perform by. |
|||||||||
subTaskType |
String | sub-taskType of "attack" task. |
|||||||||
targetRoom |
String | The targetRoom of "attack" task. |
|||||||||
routes |
Array | An array of roomNames, in order to control the route. |
|||||||||
settings |
Object | The settings of the task. Properties
|
- Source:
Returns:
OK, indicating successful or error code.
- Type
- Number
addBuildTask(home, subTaskType, target, settings) → {Number}
Add the Build Task.
Parameters:
| Name | Type | Description | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
home |
String | The home of creeps which the task is expected to perform by. |
|||||||||
subTaskType |
String | sub-taskType of "build" task. |
|||||||||
target |
Object | The target of build behavior. Properties
|
|||||||||
settings |
Object | The settings of the task. Properties
|
- Source:
Returns:
OK, indicating successful or error code.
- Type
- Number
addDefendTask(home, subTaskType, targetRoom, routes, settings) → {Number}
Add the Defend Task.
Parameters:
| Name | Type | Description | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
home |
String | The home of creeps which the task is expected to perform by. |
|||||||||
subTaskType |
String | sub-taskType of "defend" task. |
|||||||||
targetRoom |
String | The targetRoom of "defend" task. |
|||||||||
routes |
Array | An array of roomNames, in order to control the route. |
|||||||||
settings |
Object | The settings of the task. Properties
|
- Source:
Returns:
OK, indicating successful or error code.
- Type
- Number
addHarvestTask(home, subTaskType, target, settings) → {Number}
Add the Harvest Task.
Parameters:
| Name | Type | Description | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
home |
String | The home of creeps which the task is expected to perform by. |
|||||||||
subTaskType |
String | sub-taskType of "harvest" task. |
|||||||||
target |
Object | The target of harvest behavior. Properties
|
|||||||||
settings |
Object | The settings of the task. Properties
|
- Source:
Returns:
OK, indicating successful or error code.
- Type
- Number
addPickupTask(home, subTaskType, target, settings) → {Number}
Add the Pickup Task.
Parameters:
| Name | Type | Description | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
home |
String | The home of creeps which the task is expected to perform by. |
|||||||||
subTaskType |
String | sub-taskType of "pickup" task. |
|||||||||
target |
Object | The target of pickup behavior. Properties
|
|||||||||
settings |
Object | The settings of the task. Properties
|
- Source:
Returns:
OK, indicating successful or error code.
- Type
- Number
addRepairTask(home, subTaskType, target, settings) → {Number}
Add the Repair Task.
Parameters:
| Name | Type | Description | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
home |
String | The home of creeps which the task is expected to perform by. |
|||||||||
subTaskType |
String | sub-taskType of "repair" task. |
|||||||||
target |
Object | The target of repair behavior. Properties
|
|||||||||
settings |
Object | The settings of the task. Properties
|
- Source:
Returns:
OK, indicating successful or error code.
- Type
- Number
addScheduledTask(tick, func, params) → {Number}
Add the task into the timeLine.
Parameters:
| Name | Type | Description |
|---|---|---|
tick |
Number | The tick when the task happened. |
func |
Object | The function which will be executed. |
params |
Array | The params passed into the function. |
- Source:
Returns:
OK, indicating successful or error code.
- Type
- Number
addSpawnTask(home, role, components, group, boostCompounds, salt) → {Number}
Add the Spawn Task.
Parameters:
| Name | Type | Default | Description |
|---|---|---|---|
home |
String | The home of the creep. |
|
role |
String | The role of the creep. |
|
components |
Array | The expected components of the creep. |
|
group |
Object | Group Object, including name and type. |
|
boostCompounds |
Array | Compounds allowed to be implemented on this creep. |
|
salt |
Number | 0 | Salt, in order to duplicate. |
- Source:
Returns:
OK, indicating successful or error code.
- Type
- Number
addTask(roomName, taskType, subTaskType, data, settings) → {Number}
Add the Task.
Parameters:
| Name | Type | Description | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
roomName |
String | The name of the hosting room. |
|||||||||
taskType |
String | The type of the task. |
|||||||||
subTaskType |
String | The subType of the task. |
|||||||||
data |
Object | The data of the task. |
|||||||||
settings |
Object | The settings of the task. Properties
|
- Source:
Returns:
OK, indicating successful or error code.
- Type
- Number
addTransferTask(home, subTaskType, from, to, resourceType, amount, complements, settings) → {Number}
Add the Transfer Task.
Parameters:
| Name | Type | Description | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
home |
String | The home of creeps which the task is expected to perform by. |
|||||||||
subTaskType |
String | sub-taskType of "transfer" task. |
|||||||||
from |
Object | Object describes the fromTarget. Properties
|
|||||||||
to |
Object | Object describes the toTarget. Properties
|
|||||||||
resourceType |
String | One of the RESOURCE_* Constants. |
|||||||||
amount |
Number | String | describes the transfer amount, can be "full" or "exhaust", indicating fill in the toTarget or exhaust the fromTarget. |
|||||||||
complements |
Object | Other potential useful information. |
|||||||||
settings |
Object | The settings of the task. Properties
|
- Source:
Returns:
OK, indicating successful or error code.
- Type
- Number
addTravelTask(home, targets) → {Number}
Add the Travel Task.
Parameters:
| Name | Type | Description |
|---|---|---|
home |
String | The home of creeps which the task is expected to perform by. |
targets |
String | Array | The targets of travel behavior. Can be roomName, roomName List, or a string containing many roomNames which are divided by '|'. |
- Source:
Returns:
OK, indicating successful or error code.
- Type
- Number
addUpgradeTask(home, salt) → {Number}
Add the Upgrade Task.
Parameters:
| Name | Type | Default | Description |
|---|---|---|---|
home |
String | The home of creeps which the task is expected to perform by. |
|
salt |
Number | 0 | In order to create and differentiate duplicate tasks to boost Upgrade. |
- Source:
Returns:
OK, indicating successful or error code.
- Type
- Number
checkTask(roomName, fingerprint) → {Boolean}
Check the existence of task.
Parameters:
| Name | Type | Description |
|---|---|---|
roomName |
String | The name of the room which task mounts. |
fingerprint |
String | The fingerprint of the task. |
- Source:
Returns:
True or False, indicating whether exists.
- Type
- Boolean
clearTask(roomName, …taskTypes)
Clear the tasks.
Parameters:
| Name | Type | Attributes | Description |
|---|---|---|---|
roomName |
String | The name of room which task mounts. |
|
taskTypes |
String |
<repeatable> |
Clear taskTypes, allowing for "all" indicating all the taskTypes. |
- Source:
deleteTask(roomName, fingerprint)
Delete the task.
Parameters:
| Name | Type | Description |
|---|---|---|
roomName |
String | The name of the room which task mounts. |
fingerprint |
String | The fingerprint of the task. |
- Source:
finishTask(roomName, fingerprint)
Finish the task.
Parameters:
| Name | Type | Description |
|---|---|---|
roomName |
String | The name of the room which task mounts. |
fingerprint |
String | The fingerprint of the task. |
- Source:
getTask(home, subject, taskType, subTaskTypes, settings) → {String|undefined|Boolean}
Get the task.
Parameters:
| Name | Type | Description | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
home |
String | The home which task mounts. |
|||||||||
subject |
Object | The subject of getting-task. |
|||||||||
taskType |
String | The type of the Task. |
|||||||||
subTaskTypes |
String | Array | Acceptable sub-taskTypes, allowing for "all", which has literal meaning. |
|||||||||
settings |
Object | The setting of getting a task. Properties
|
- Source:
Returns:
The fingerprint of task-info, or undefined, if not found, or True, if found and dry.
- Type
- String | undefined | Boolean
initTasks()
Issue the initial tasks after being refreshed.
- Source:
refreshTask(roomName)
Refresh the tasks.
Parameters:
| Name | Type | Description |
|---|---|---|
roomName |
String | The name of room which task mounts. |
- Source:
renewTask(roomName, fingerprint)
Renew the task.
Parameters:
| Name | Type | Description |
|---|---|---|
roomName |
String | The name of the room which task mounts. |
fingerprint |
String | The fingerprint of the task. |
- Source:
runScheduled(settings)
Run.
Parameters:
| Name | Type | Description | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
settings |
Object | The setting of the function. Properties
|
- Source:
sortTask(home, subject, taskType, taskList, settings) → {Array}
Sort the tasks.
Parameters:
| Name | Type | Description | ||||||
|---|---|---|---|---|---|---|---|---|
home |
String | The home which task mounts. |
||||||
subject |
Object | The subject of getting-task. |
||||||
taskType |
String | The type of the Task. |
||||||
taskList |
Array | The list of the Task. |
||||||
settings |
Object | The setting of sorting the tasks. Properties
|
- Source:
Returns:
The sorted task list.
- Type
- Array
taskInfo(home, fingerprint) → {Object|undefined}
Get the task Info.
Parameters:
| Name | Type | Description |
|---|---|---|
home |
String | The home which task mounts. |
fingerprint |
String | The expected fingerprint of the task. |
- Source:
Returns:
Task Info, or undefined, if not exists.
- Type
- Object | undefined


UI Kit
UI Kit is a library of web components allowing you to build user interfaces faster.
Documentation
Having any troubles?


Email address
It's safe with us. We hate spam!
Password
Same Label
Same Label
Hello
1
2
3
I accept the
terms and conditions
Submit
Item
Item
Item
Hey


About Us
This simple idea was the seed for what would become Las Hojitas: a modern plant destination for the modern plant lover. Plants make us happier, healthier, more efficient and boost our creativity. They even clean the air we breathe. But all our modern city-living has us indoors a lot. So we thought: why not bring the outdoors in? We think everyone deserves to have their own personal plant oasis. And, we think finding your new plant should be, well, easy. Every plant from Las Hojitas comes with care information and the support of our team of knowledgable plant parents. Our goal is to make the experience of being a plant parent as wonderful as the plants themselves. We’re here to inspire confidence in the next generation of plant parents. Our mission is to make the experience of discovering the perfect potted plants as wonderful as the plants themselves. Las Hojitas is the source that bridges the gap between plants and people, offering products and services that fit with your personal style, your lifestyle, and your budget.
Frequently Asked Questions
Our number one priority is that our plants arrive in happy, healthy condition. Some of our plants ship directly potted in our earthenware plants, while others ship in their nursery grow pot placed inside the planter. How each plant ships is noted on its product page.


--- layout: page weight: 20 title: A/B Split Testing breadcrumbs: true navigation: show: true ---
You can create multiple versions of a Marketing Email that, based on recipient activity, will automatically determine the winning variation which will then send to the remaining recipients. Kayla provides simple instructions for all of the steps needed to take advantage of this advanced feature.


We will build a very simple inventory system to display our album collection. The home page will list our collection and allow us to add, edit and delete albums. Hence the following pages are required:
| Page | Description |
|---|---|
| Home | This will display the list of albums and provide links to edit and delete them. Also, a link to enable adding new albums will be provided. |
| Add new album | This page will provide a form for adding a new album. |
| Edit album | This page will provide a form for editing an album. |
| Delete album | This page will confirm that we want to delete an album and then delete it. |
Before we set up our files, it’s important to understand how the framework expects the pages to be organised. Each page of the application is known as an action and actions are grouped into controllers within modules. Hence, you would generally group related actions into a controller; for instance, a news controller might have actions of current, archived and view.
As we have four pages that all apply to albums, we will group them in a single controller AlbumController within our Album module as four actions. The four actions will be:
| Page | Controller | Action |
|---|---|---|
| Home | AlbumController | index |
| Add new album | AlbumController | add |
| Edit album | AlbumController | edit |
| Delete album | AlbumController | delete |
The mapping of a URL to a particular action is done using routes that are defined in the module’s module.config.php file. We will add a route for our album actions. This is the updated module config file with the new code highlighted.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | return array(
'controllers' => array(
'invokables' => array(
'Album\Controller\Album' => 'Album\Controller\AlbumController',
),
),
// The following section is new and should be added to your file
'router' => array(
'routes' => array(
'album' => array(
'type' => 'segment',
'options' => array(
'route' => '/album[/][:action][/:id]',
'constraints' => array(
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
'id' => '[0-9]+',
),
'defaults' => array(
'controller' => 'Album\Controller\Album',
'action' => 'index',
),
),
),
),
),
'view_manager' => array(
'template_path_stack' => array(
'album' => __DIR__ . '/../view',
),
),
);
|
The name of the route is ‘album’ and has a type of ‘segment’. The segment route allows us to specify placeholders in the URL pattern (route) that will be mapped to named parameters in the matched route. In this case, the route is ``/album[/:action][/:id]`` which will match any URL that starts with /album. The next segment will be an optional action name, and then finally the next segment will be mapped to an optional id. The square brackets indicate that a segment is optional. The constraints section allows us to ensure that the characters within a segment are as expected, so we have limited actions to starting with a letter and then subsequent characters only being alphanumeric, underscore or hyphen. We also limit the id to a number.
This route allows us to have the following URLs:
| URL | Page | Action |
|---|---|---|
| /album | Home (list of albums) | index |
| /album/add | Add new album | add |
| /album/edit/2 | Edit album with an id of 2 | edit |
| /album/delete/4 | Delete album with an id of 4 | delete |
We are now ready to set up our controller. In Zend Framework 2, the controller is a class that is generally called {Controller name}Controller. Note that {Controller name} must start with a capital letter. This class lives in a file called {Controller name}Controller.php within the Controller directory for the module. In our case that is module/Album/src/Album/Controller. Each action is a public method within the controller class that is named {action name}Action. In this case {action name} should start with a lower case letter.
Note
This is by convention. Zend Framework 2 doesn’t provide many restrictions on controllers other than that they must implement the Zend\Stdlib\Dispatchable interface. The framework provides two abstract classes that do this for us: Zend\Mvc\Controller\AbstractActionController and Zend\Mvc\Controller\AbstractRestfulController. We’ll be using the standard AbstractActionController, but if you’re intending to write a RESTful web service, AbstractRestfulController may be useful.
Let’s go ahead and create our controller class AlbumController.php at zf2-tutorials/module/Album/src/Album/Controller :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | namespace Album\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
class AlbumController extends AbstractActionController
{
public function indexAction()
{
}
public function addAction()
{
}
public function editAction()
{
}
public function deleteAction()
{
}
}
|
Note
We have already informed the module about our controller in the ‘controller’ section of module/Album/config/module.config.php.
We have now set up the four actions that we want to use. They won’t work yet until we set up the views. The URLs for each action are:
| URL | Method called |
|---|---|
| http://zf2-tutorial.localhost/album | Album\Controller\AlbumController::indexAction |
| http://zf2-tutorial.localhost/album/add | Album\Controller\AlbumController::addAction |
| http://zf2-tutorial.localhost/album/edit | Album\Controller\AlbumController::editAction |
| http://zf2-tutorial.localhost/album/delete | Album\Controller\AlbumController::deleteAction |
We now have a working router and the actions are set up for each page of our application.
It’s time to build the view and the model layer.
To integrate the view into our application all we need to do is create some view script files. These files will be executed by the DefaultViewStrategy and will be passed any variables or view models that are returned from the controller action method. These view scripts are stored in our module’s views directory within a directory named after the controller. Create these four empty files now:
We can now start filling everything in, starting with our database and models.
The source code of this file is hosted on GitHub. Everyone can update and fix errors in this document with few clicks - no downloads needed.


|
Copley Motion Library
|
This structure holds the current loop configuration parameters. More...
Public Member Functions | |
| CrntLoopConfig (void) | |
| Default constructor. More... | |
Public Attributes | |
| int16 | kp |
| Proportional gain. | |
| int16 | ki |
| Integral gain. | |
| int16 | offset |
| Current offset. | |
| int16 | peakLim |
| Peak current limit (0.01 amp units) This is the maximum current that can be applied to the motor at any time Also used as Boost current in stepper mode. | |
| int16 | contLim |
| Continuous current limit (0.01 amp units) This is the maximum current that can continuously be applied to the load. More... | |
| int16 | peakTime |
| Time at peak current limit (milliseconds) If peak current is requested, it will fall back to the continuous limit within this amount of time. More... | |
| uint16 | stepHoldCurrent |
| Stepper hold current (0.01 amps). More... | |
| uint16 | stepRun2HoldTime |
| Run to hold time(milliseconds) The period of time, beginning when a move is complete, to when output current switched to hold current. More... | |
| uint16 | stepVolControlDelayTime |
| Voltage control mode time delay (milliseconds) Time delay to enter into a special voltage control mode. More... | |
| int32 | slope |
| Rate of change of current command (milliamps/sec). More... | |
This structure holds the current loop configuration parameters.
The current loop is one of three servo control loops used by the amplifier to control a motor. The configuration parameters used by this control loop allow the servo performance to be 'tuned' for various motors and loads.
This structure also holds the parameters used to control current limiting. The current limiting acts on the commanded current before it is sent to the current loop.
The amplifier member functions Amp::GetCrntLoopConfig and Amp::SetCrntLoopConfig are used to read and write this data to the amplifier.
|
inline |
Default constructor.
Simply initializes all members to zero.
| int16 contLim |
Continuous current limit (0.01 amp units) This is the maximum current that can continuously be applied to the load.
Also used as Run current in stepper mode.
| int16 peakTime |
Time at peak current limit (milliseconds) If peak current is requested, it will fall back to the continuous limit within this amount of time.
Also used as Boost current time in stepper mode.
| int32 slope |
Rate of change of current command (milliamps/sec).
This parameter is only used when running in the low level programmed current mode (AMPMODE_PROG_CRNT), or in the CANopen profile torque mode (AMPMODE_CAN_TORQUE). In other modes this parameter is ignored and no limit is placed on the slope of the current command.
If this parameter is set to zero (default) it is not used in any mode of operation.
Note that this parameter is internally the same as the torque slope parameter which can be set using the function Amp::SetTorqueSlope. The units are different however as this parameter controls slope in units of current and the torque slope function adjusts in units of torque.
| uint16 stepHoldCurrent |
Stepper hold current (0.01 amps).
Current used to hold the motor at rest. Used in stepper mode only.
| uint16 stepRun2HoldTime |
Run to hold time(milliseconds) The period of time, beginning when a move is complete, to when output current switched to hold current.
Used in stepper mode only.
| uint16 stepVolControlDelayTime |
Voltage control mode time delay (milliseconds) Time delay to enter into a special voltage control mode.
If set to zero this feature is disabled. Used for stepper mode only.