10 Easy Ways to Become a Better Software Developer
1. Start Coding
First thing is first. To get better, you need to fail often and early. To fail, you need to get your hands dirty. If you think that you are still incompetent, begin writing code now. The brain is just like your muscles. You want to get bigger muscles; you must work out. It’s that simple. As you code more, you will gain experience in abstract thinking, problem-solving, and debugging skills. You will also get faster.
2. Read Blogs and Books
People in software development industry are very generous in sharing their experiences. Read other people’s blogs and read product blogs. There is extensive knowledge shared in blogs. People tend to write their challenges and how they overcame the challenges. It is a great chance to get the same the experience without spending hours or days by just a reading a blog post.
Books are one of the most valuable learning resources in software programming. Books are usually better organized than blog posts. If you follow a well-written programming book throughout, it is a great resource to gain expertise in a certain topic.
3. Write Blogs
Not just for giving back to the community, sharing what we know and what we can teach to the others is also very important. Writing a blog post refines your knowledge about the topic you write. Writing will help you both improve your technical skills and your personal brand.
4. Watch Videos
If you are new to a programming language or a framework, video materials are great ways of learning. There are tons of internet sites which provide quality video content. Some of them even contain hands-on-labs to practice. It does not matter if you are a novice or an advanced programmer, you can always find new stuff to learn in online courses and videos.
5. Read Other People’s Code
When I compare the top developers and the mediocre ones I know, the main difference is the top developers read other’s code. If you are using an open source framework, start reading its source code. You will better understand the problems you encounter, and you will learn how to organize your code better.
6. Subscribe Newsletters
Subscribing newsletters is a great way to stay updated. There are many great newsletter publishers on the internet. Those newsletters may contain the latest news about programming languages, libraries, frameworks, and recent blog posts.
7. Use Social Media Wisely
Social media is not just meant to share what you eat, what wear or where you have been. It can be much more beneficial. You can follow top influencers, top authors, or top contributors. They share the latest news and some information about their recent work. Social media might become the right tool to access the most valuable knowledge.
8. Learn to Test Your Code
When you begin learning a new framework or a library, I suggest learning the testing framework at the same time. Writing tests requires writing testable code. Testable code is more modular and loosely coupled thus more maintainable. Writing tests also decrease the technical debt and save you time from maintenance and debugging.
9. Improve Your Communication Skills
Communication is an essential part of our daily job. It doesn’t matter you are a great developer unless you can explain simple things to your team mates. You can’t solve complex problems if you don’t understand them well.
10. Help Others
Software development communities are usually friendly to answer questions. There are tens of thousands of developers get stuck and asking help out there. You can also get stuck and ask questions. When you start answering questions as well, you will start growing. Helping people in StackOverflow or community forums is a good practice.


Class SWValidator
This validator should be used to validate the 'status' attribute for an
active record object before it is saved. It tests if the transition that is
about to occur is valid.
Moreover, if $enableSwValidation is set to
true, this validator applies all validators that may have been defined by
the model for the scenario associated to the transition being done.
Scenario names associated with a transition, have the following format :
sw:[currentStatus]-[nextStatus]For instance, if the model being validated is currently in status 'A' and it is sent in status 'B', the corresponding scenario name is 'sw:A-B'. Note that if the destination status doesn't belong to the same workflow as the current status, [nextStatus] must be in the form 'workflowId/statusId' (e.g 'sw:A-workflow/B'). Eventually, when the model enters in a workflow, the scenario name is '-[nextStatus]' where 'nextStatus' includes the workflow Id (e.g 'sw:-workflowIs/statusId').
If this validator is initialized with parameter match set to TRUE,
then transitions scenario defined for validators are assumed to be regular
expressions. If the current transition matches, then the associated validator is
executed.
For instance, if validator 'required' for attribute A applies to scenarion
'sw:/S1_.?/' then each time the model leaves status S1, then the
required validator will be applied.
- CValidator
- SWValidator
Methods summary
protected
|
#
validateAttribute( CModel $model, string $attribute )
Validate status change and applies all validators defined by the model for the current transition scenario if enableSwValidation is TRUE. If validator parameter 'match' is true, the transition scenario is matched against validator scenario (which are assumed to be regular expressions). |
Magic methods summary
Constants summary
string |
SW_SCENARIO_STATUS_SEPARATOR
|
'-' |
|
string |
SW_SCENARIO_PREFIX
|
'sw:' |
Properties summary
public
boolean
|
$enableSwValidation |
#
(default FALSE) Enables simpleWorkflow Validation. When TRUE, the SWValidator not only validates status change for the model, but also applies all validators that may have been created and which are associated with the scenario for the transition being done. Such scenario names are based on both the current and the next status name. |
public
boolean
|
$match |
#
(default FALSE) When true, the scenario name is evaluated as a regular expression that must match the transition name being done. |


| 110 |
LN000110 |
FN000110 |
Female |
2006/04/06 |
2006/06/22 |
NA |
NA |
2008/06/10 |
| 12 |
LN00012 |
FN00012 |
Female |
1995/04/15 |
1995/07/25 |
NA |
NA |
1997/06/25 |
| 182 |
LN000182 |
FN000182 |
Female |
2005/12/01 |
2007/01/07 |
NA |
NA |
2007/06/09 |
| 101 |
LN000101 |
FN000101 |
Female |
2007/10/06 |
2008/03/22 |
NA |
2008/06/21 |
NA |
| 5 |
LN0005 |
FN0005 |
Female |
2008/09/10 |
2009/01/01 |
NA |
NA |
2009/08/12 |


Merana followed closely as she dared on Cadsuane’s heels, a hundred questions bubbling on her tongue, but Cadsuane was not a woman whose sleeve you plucked. She decided who she noticed, and when. Annoura held her silence, too, the pair of them drawn along in the other’s wake down the palace corridors, down flights of stairs, polished marble at first, then plain dark stone. Merana exchanged glances with her sister Gray, and felt a moment’s pang. She did not know the woman, really, but Annoura wore the steely look of a girl on her way to the Mistress of Novices, determined to be brave. They were not novices. They were not children. She opened her mouth—and closed it, intimidated by the gray bun bobbing ahead of her with its dangling moons and stars and birds and fish. Cadsuane was . . . Cadsuane.
Merana had met her once before, or at least listened to her and been spoken to, when she was a novice. Sisters had come from every Ajah to see the woman, filled with an awe they could not hide. Once Cadsuane Melaidhrin had been the standard by which every new entry into the novice books was judged. Until Elayne Trakand, none had come to the White Tower in her lifetime who could match that standard, much less surpass it. In more ways than one, her like had not walked among Aes Sedai for a thousand years. A refusal to accept selection as a Sitter was unheard of, yet it was said she had refused, and at least twice. It was said she had spurned being raised head of the Green Ajah, too. It was said she once vanished from the Tower for ten years because the Hall intended to raise her Amyrlin. Not that she had ever spent a day more in Tar Valon than absolutely necessary. Word of Cadsuane came to the Tower, stories to make sisters gape, adventures to make those who dreamed of the shawl shiver. She would end a legend among Aes Sedai. If she was not already.
The shawl had graced Merana’s shoulders for over twenty-five years when Cadsuane announced her retirement from the world, her hair already solid gray, and everyone assumed her long dead when the Aiel War erupted another twenty-five years on, but before the fighting was three months old, she reappeared, accompanied by two Warders, men long in the tooth yet still hard as iron. It was said Cadsuane had had more Warders over the years than most sisters had shoes. After the Aiel retreated from Tar Valon, she retired once more, but some said, more than half-seriously, that Cadsuane would never die so long as even a spark of adventure remained in the world.
  Yet Cadsuane was still Cadsuane. And if she was not one of those sisters who had appeared in the city after al’Thor was taken, the sun would not set tonight. Merana moved her arms to adjust her shawl and realized it was hanging on a peg in her room. Ridiculous. She needed no reminders of who she was. If only it had been someone other than Cadsuane . . .
 Edarra and Leyn. Both could channel, and quite strongly; they might have risen high had they gone to the Tower as girls. Cadsuane went by without seeming to notice the wilders’ disapprobation. Annoura did, frowning and muttering, slender braids swaying as she shook her head. Merana kept her own eyes on the floor tiles.
Undoubtedly it would fall to her now, explaining to Cadsuane the . . . compromise . . . that had been worked out with the Wise Ones last night, before she and the others were brought to the palace. Annoura did not know—she was no part of it—and Merana had small hope that Rafela or Verin would appear, or anyone else she might somehow foist the duty onto. It was a compromise, in a way, and perhaps the best that could be expected under the circumstances, yet she strongly questioned whether Cadsuane would see it so. She wished she did not have to be the one to convince her. Better to pour tea for those cursed men for a month. She wished she had not been so free with her tongue with young al’Thor. Knowing why he had made her serve tea was no balm for being sealed off from every advantage she might have gained from it. She would rather think she had been caught in some ta’veren swirling of the Pattern than believe that a young man’s eyes, like polished blue-gray gems, had set her babbling from pure fright, but either way, she had handed all the advantage to him on a tray. She wished . . .
Wishing was for children. She had negotiated countless treaties, many of which had actually accomplished what was intended; she had ended three wars and stopped two dozen more before they began, faced kings and queens and generals and made them see reason. Even so . . . She found herself promising that she would not utter one word of complaint no matter how often that man made her play the maidservant if only Seonid would pop around the next corner, or Masuri, or Faeldrin, or anyone at all. Light! If only she could blink her eyes and find that everything since leaving Salidar had been a bad dream.
Surprisingly, Cadsuane led them straight to the small room that Bera and Kiruna shared, deep in the bowels of the palace. Where the servants lived. A tight window, set high in the wall yet level with the paving stones of a courtyard outside, let in a little stream of light, but the room seemed murky. Cloaks and saddlebags and a few dresses hung from pegs in the cracked, yellowing plaster walls. Gouges marred the bare wooden floor, though some effort had been made to smooth them. A tiny battered round table stood in one corner, and an equally beaten washstand in another, with a chipped basin and pitcher. Merana eyed the small bed. It did not look that much narrower than the one she was forced to share with Seonid and Masuri, two doors farther down. That room was larger by perhaps a pace each way, but not meant for three. Coiren and the others still held in the Aiel tents probably were much more comfortable as prisoners.
Neither Bera nor Kiruna was present, but Daigian was, a plump, pale woman who wore a thin silver chain in her long black hair, with a round moonstone dangling in the middle of her forehead. Her dark Cairhienin dress bore four thin stripes of color across the bodice, and she had added slashes in the skirts, white for her Ajah. A younger daughter of one of the lesser Houses, she had always minded Merana of a pouter pigeon. When Cadsuane entered, Daigian rose on her toes expectantly.
There was only one chair in the room, little more than a stool with an excuse of a back. Cadsuane took that and sighed. “Tea, please. Two sips of what that boy poured, and I could have used my tongue to sole a shoe.”
The glow of saidar immediately surrounded Daigian, though faintly, and a dented tin teapot rose from the table, flows of Fire heating the water as she opened a small brass-bound tea chest.
With no other choice for place to sit, Merana settled onto the bed, adjusting her skirts and shifting on the lumpy mattress while she tried to order her thoughts. This might well be as important a negotiation as she had ever undertaken. After a moment, Annoura joined her, perching on the lip of the mattress.
“I take it by your presence, Merana,” Cadsuane said abruptly, “that tales of the boy submitting to Elaida are false. Don’t look so surprised, child. Did you think I didn’t know your . . . associations?”  “And you, Annoura?”
“I am here only to advise Berelain, though the truth of it is, she ignored my advice by coming in the first place.” The Taraboner woman held her head up, voice confident. She was rubbing her thumbs for all she was worth, though. She could not do well at the negotiating table if she was that transparent. “For the rest,” she said carefully, “I have reached no decision as yet.”
“A wise decision, that,” Cadsuane murmured, with a pointed look at Merana. “It seems that in the last few years far too many sisters have forgotten they possess brains, or discretion. There was a time when Aes Sedai reached their decisions after calm deliberation, with the good of the Tower always in the front of their thoughts. Just remember what the Sanche girl got from meddling with al’Thor, Annoura. Walk too near a forge-fire, and you can be burned badly.”
Merana lifted her chin, working her neck to ease its tightness. Realizing what she was doing, she made herself stop. The woman did not stand that far above her. Not really. Just higher than any other sister. “If I may ask . . . ” Too diffident, but worse to stop and start over. “ . . . what are your intentions, Cadsuane?” She struggled to maintain dignity. “Obviously, you have been . . . holding yourself aside . . . until now. Why have you decided to . . . approach . . . al’Thor at this particular time? You were . . . rather undiplomatic . . . with him.”
“You might as well have slapped his face,” Annoura put in, and Merana colored. Of the two of them, Annoura should have been having the harder time with Cadsuane by far, but she was not the one stumbling over her words.
Cadsuane shook her head in pitying style.  There’s good metal in that boy, I think, but he’s going to be difficult.” Steepling her fingers, she peered across them at the wall, musing to herself. “He has a rage in him fit to burn the world, and he holds it by a hair. Push him too far off balance . . . Phaw! Al’Thor’s not so hard yet as Logain Ablar or Mazrim Taim, but a hundred times as difficult, I fear.” Hearing those three names together clove Merana’s tongue to the roof of her mouth.
“You have seen Logain and Taim both?” a staring Annoura said. “Taim, he is following al’Thor, so I hear.” Merana managed to swallow a relieved sigh. Tales of Dumai’s Wells had not had time to spread yet. They would, though.
“I do have ears to catch rumors, too, Annoura,” Cadsuane said acerbically. “Though I could wish I didn’t, for what I hear of that pair. All my work thrown away to be done over. Others’ as well, but I did my share. And then there are these blackcoats, these Asha’man.” Taking a cup from Daigian, she smiled warmly and murmured thanks. The round-cheeked White seemed ready to curtsy, though all she did was retreat to a corner and fold her hands. She had been longer a novice, and Accepted, than anyone in living memory, barely allowed to remain in the Tower, gaining the ring by a fingernail and the shawl by an eyelash. Daigian was always self-effacing around other sisters.
Breathing the steam from her teacup, Cadsuane went on, suddenly chatting pleasantly. “It was Logain, practically on my doorstep, that lured me away from my roses. Phaw! A scuffle at a sheep fair could have lured me from those Light-cursed plants. What’s the point if you use the Power, but do it without, and you grow ten thousand thorns for every—Phaw! I actually considered taking the oath as a Hunter, if the Council of Nine would allow it. Well. It was a nice few months, chasing down Logain, but once he was taken, escorting him to Tar Valon appealed as much as the roses. I wandered a bit, to see what I could find, perhaps a new Warder, though it’s a bit late for that in any fairness to the man, I suppose. Then I heard of Taim, and I was off to Saldaea as fast I could ride. There’s nothing for a bit of excitement like a man who can channel.” Abruptly her voice hardened, and her gaze.
Despite herself, Merana gave a confused start. The other woman’s eyes spoke of the block and the headsman’s axe. “What vileness? I don’t know what you are talking about.”
That accusing glare hit Annoura so hard, she almost fell off the bed. “The Aiel War?” she gasped, steadying herself. “The years after, I spent trying to make the so-called Grand Coalition more than a name.”
Merana looked at Annoura with interest. A good many of the Gray Ajah had scurried from capital to capital after, the war, in a futile effort to hold together the alliance that had formed against the Aiel, but she had never known Annoura was one of them. She could not be that bad a negotiator if she was. “So did I,” she said. Dignity. Since setting out after al’Thor from Caemlyn, she had not retained much of that. The few scraps remaining were too precious to lose. She made her voice calm, and firm. “What vileness do you mean, Cadsuane?”
The gray-haired woman simply waved the question away, as though she had never spoken the word.
For a moment, Merana wondered whether Cadsuane’s wits might be wandering. She had never heard of it happening to a sister, but most Aes Sedai did go into retreat at the close of their lives, far from the stratagems and turbulence that none but sisters ever knew. Far from everyone, often as not. Who could say what befell them before the end? One look at the clear, steady gaze regarding her over that teacup quickly disabused her of any such notion. Anyway, twenty-year-old vileness, whatever it had been, certainly could not hold a candle to what the world confronted now. And Cadsuane still had not answered her original questions. What did she intend? And why now?
Before Merana could ask again, the door opened and Bera and Kiruna were herded in by Corele Hovian, a boyishly slim Yellow with thick black eyebrows and a mass of raven hair that gave her something of a wild appearance no matter how neatly she dressed, and she always dressed for a country dance, with masses of embroidery on her sleeves and bodice and up the sides of her skirts. There was barely room to move, with so many people in this confined space. Corele never failed to seem amused, whatever happened, but now she wore a wide smile somewhere between disbelief and outright laughter.  Until they saw Cadsuane. Merana supposed that for them, it must be as if she had found herself face to face with Alind Dyfelle or Sevlana Meseau or even Mabriam en Shereed. Their eyes bulged. Kiruna’s jaw dropped.
“I thought you were dead,” Bera breathed.
Cadsuane sniffed irritably. “I am growing tired of hearing that. The next imbecile I hear it from is going to yelp for a week.” Annoura began studying the toes of her slippers.
“You’ll never guess where I found these two,” Corele said in her lilting Murandian accent. She tapped the side of her upturned nose, the way she did when about to tell a joke, or what she saw as one. Spots of color appeared in Bera’s cheeks, and larger in Kiruna’s. “Bera there was sitting meek as a mouse under the eyes of half a dozen of those Aiel wilders, who told me bold as you please that she couldn’t come with me until Sorilea—oh, now that woman’s a harridan to give you nightmares, she is—I couldn’t have Bera until Sorilea was done with her private chat with the other apprentice. Our darling Kiruna, there.”
It was no longer a matter of spots. Kiruna and Bera reddened to their hair, refusing to meet anyone’s eye. Even Daigian stared at them.
Relief surged through Merana in wonderful waves. She would not have to be the one to explain how the Wise Ones had interpreted that wretched al’Thor’s orders that the sisters were to obey them. They were not really apprentices; there were no lessons involved, of course. What could a great lot of wilders, savages at that, teach Aes Sedai? It was just that the Wise Ones liked to know where everyone fit. Just? Bera or Kiruna could tell how al’Thor had laughed—laughed!—and said it made no difference to him and he expected them to be obedient pupils. No one was having an easy time bending her neck, least of all Kiruna.
Yet Cadsuane did not demand explanations. “I expected a dog’s dinner,” she said dryly, “but not a bucket from the midden. Let me see if I have the straight of it. You children who stand in rebellion against a lawfully raised Amyrlin have now somehow associated yourselves with the al’Thor boy, and if you are taking orders from these Aiel women, I assume you take his as well.” Her grunt was disgusted enough for a mouthful of rotten plums. Shaking her head, she peered into her teacup, then fixed the pair again. “Well, what’s one treason more or less? The Hall can put you on your knees from here to Tarmon Gai’don for penance, but they can only take your heads once. What of the rest, out in the Aiel camp? All Elaida’s, I suppose. Have they also . . . apprenticed . . . themselves? None of us have been allowed as close as the first row of tents. These Aiel seem to have no love of Aes Sedai.”
“I do not know, Cadsuane,” Kiruna answered, so red-faced she appeared about to catch fire. “We have been kept apart.” Merana’s eyes widened. She had never before heard Kiruna sound deferential.
Bera, on the other hand, drew a deep breath. She already stood straight, yet she seemed to straighten herself for an unpleasant task. “Elaida is not—” she began heatedly.
“Elaida is overambitious, as near as I can make out,” Cadsuane broke in, leaning forward so abruptly that Merana and Annoura both started back on the bed, though she was not looking at them, “and she may be a catastrophe simmering, but she is still the Amyrlin Seat, raised by the Hall of the Tower in full accordance with the laws of the Tower.”
“If Elaida is a lawful Amyrlin, why have you not obeyed her order to return?” All that betrayed Bera’s lack of composure was the stillness of her hands on her skirts. Only a marked effort to keep from clutching or smoothing could hold them so motionless.
“So one of you has a little backbone.” Cadsuane laughed softly, but her eyes did not look mirthful at all. Leaning back, she sipped her tea. “Now sit down. I have a great many more questions.”
Merana and Annoura rose, offering their places on the bed, but Kiruna simply stood peering at Cadsuane worriedly, and Bera glanced at her friend, then shook her head. Corele rolled her blue eyes, grinning broadly for some reason, but Cadsuane did not seem to care.
“Half the rumors I hear,” she said, “concern the Forsaken being loose. It would hardly be a surprise, with all else, but do you have any evidence, for or against?”
Before very long, Merana was glad to be sitting; before very long, she knew what laundry felt going through the laundress’s mangle. Cadsuane did all the questioning, dodging from topic to topic so you never knew what was coming next. Corele held her peace except for chuckling now and then or shaking her head, and Daigian did not even do that, of course. Merana caught the worst, her and Bera and Kiruna, yet Annoura was certainly not spared. Every time Berelain’s advisor relaxed, thinking she was in the clear, Cadsuane skewered her anew.
The woman wanted to know everything, from the al’Thor boy’s authority with the Aiel to why a Sea Folk Wavemistress was anchored in the river, from whether Moiraine truly was dead to whether the boy really had rediscovered Traveling and whether Berelain had bedded him or had any intention of it. What Cadsuane thought of the answers was impossible to say, except once, when she learned that Alanna had bonded al’Thor, and how. Her mouth compressed to a thin line and she frowned a hole though the wall, but while everyone else expressed disgust, Merana thought of Cadsuane saying she had considered taking another Warder herself.
The answer was ignorance entirely too often to suit, but saying you did not know failed to quench Cadsuane’s appetite; she required every last shred and particle you did know, even if you did not know you knew it. They managed to keep a little back, most of what had to be kept back, yet a few surprising things came out that way, some very surprising, even from Annoura, who, it turned out, had been receiving detailed letters from Berelain almost from the day the girl rode north. Cadsuane demanded answers, but gave none, and that worried Merana. She watched faces grow dogged and defensive and apologetic, and wondered whether her own looked the same.
“Cadsuane.” She had to make one more effort. “Cadsuane, why have you decided to take an interest in him now?” An unblinking gaze met hers for a moment, then Cadsuane turned her attention to Bera and Kiruna.
“So they actually managed to kidnap him right out of the palace,” the gray-haired woman said, holding out her empty cup for Daigian to refill. No one else had been offered tea. Cadsuane’s expression and tone were so neutral that Merana wanted to tear her own hair. Al’Thor would not be pleased if he learned Kiruna had revealed the kidnapping, however inadvertently; Cadsuane used any slip of your tongue to pry out more than you meant to say. At least the details of his treatment had not come out. He had made plain how displeased he would be if that happened. Merana thanked the Light that the woman was not staying with any one subject for long.
“You are sure it was Taim? And you are sure these blackcoats didn’t arrive on horses?”  Which did not satisfy at all, of course.
“Think!  Phaw! You must have noticed something.”
Merana felt ill. She and the others had spent half the night arguing over what their oath meant before deciding it meant exactly what they had said, with no loopholes to wriggle through. At last even Kiruna conceded that they must defend and support al’Thor as well as obey, that standing aside in the slightest was not permitted. What that might mean when it came to Elaida and the sisters loyal to her really concerned no one. At least, no one admitted any concern. The mere fact of what they had decided was stunner enough. But Merana wondered whether Bera or Kiruna had yet realized what she had. They might just find themselves opposing a legend, not to mention whatever sisters besides Corele and Daigian had chosen to follow her. Worse . . . Cadsuane’s eyes rested on her for a moment, giving away nothing, demanding everything. Worse, Merana was sure that Cadsuane knew that very well.
Hurrying along the palace corridors, Min ignored greetings from half a dozen Maidens she knew, just trotted right by without a word in return, never considering that she was being rude. Trotting was not easy in heeled boots. The fool things women did for men! Not that Rand had asked her to wear the boots, but she put them on the first time with him in mind, and she had seen him smile. He liked them. Light, what was she doing, thinking about boots! She should never have gone to Colavaere’s apartments. Shivering, blinking back unshed tears, she began to run.
As usual, a number of Maidens were squatting on their Heels beside the tall doors worked with gilded rising suns. Their shoufa hung about their shoulders and their spears lay across their knees, yet there was nothing casual about them. They were leopards, waiting for something to kill. Usually Maidens made Min uneasy, for all they were friendly enough. Today, she would not have cared if they were veiled.
“He is in a foul temper,” Riallin warned, but made no move to stop her. Min was one of the few allowed to enter Rand’s presence without being announced. She straightened her coat and tried to settle herself. She was not sure why she had come. Except that Rand made her feel safe. Burn him! She had never needed anyone to feel safe before.
Just inside the room, she stopped, aghast.  The place was a shambles. A few glittering shards clung to some of the mirror frames, but most of the glass lay scattered across the floor. The dais was on its side, the throne that had stood atop it just gilded flinders where it had been smashed against a wall. One of the stand-lamps, heavy iron beneath the gilt, had been twisted into a hoop. Rand sat in one of the smaller chairs in his shirtsleeves, arms dangling and head back, staring at the ceiling. Staring at nothing. Images danced about him and colored auras flickered and flared; he was like Aes Sedai in that. She had no need of Illuminators when Rand or an Aes Sedai was in sight. He did not move as she walked farther into the room. He did not seem aware of her at all. Shattered bits of mirror crunched beneath her boots. A foul temper, indeed.
Even so, she felt no fear. Not of him; she could not begin to imagine Rand harming her. For him, she felt enough to nearly purge the memory of Colavaere’s apartments from her head. She had long since reconciled herself to being hopelessly in love. Nothing else mattered, not that he was an unsophisticated countryman, younger than she, not who or what he was, not that he was doomed to go mad and die if he was not killed first. I don’t even mind having to share him, she thought, and knew how tightly she was caught if she could lie to herself. That, she had forced herself to accept; Elayne had a part of him, a claim on him, and so did this Aviendha woman she had yet to meet. What could not be mended must be lived with, so her Aunt Jan always said. Especially when your brains had gone soft. Light, she had always prided herself on keeping her wits.
She stopped beside one of the chairs, where the Dragon Scepter had driven into the thick wooden back so hard that the point stood out nearly a hand behind. In love with a man who did not know, who would send her away should he ever became aware. A man she was sure was in love with her. And with Elayne, and this Aviendha, too; that, she rushed by. What could not be mended . . . He was in love with her and refused to admit it. Did he think that just because mad Lews Therin Telamon had killed the woman he loved, he was fated to as well?
“I’m glad you came,” he said suddenly, still staring at the ceiling. “I’ve been sitting here alone. Alone.” He gave a bitter bark of a laugh. “Herid Fel is dead.”
“No,” she whispered, “not that sweet little old man.” Her eyes stung.
“He was torn apart.” Rand’s voice was so tired. So empty. “Idrien fainted when she found him. She lay in a stupor half the night, and was nearly incoherent when finally roused. One of the other women at the school gave her something to make her sleep. She was embarrassed about that. When she came to me, she started crying again and . . . It had to be Shadowspawn. What else could tear a man limb from limb?” Without raising his head, he smacked a fist down on the chair arm so hard the wood creaked. “But why? Why was he killed? What could he have told me?”
Min tried to think. She truly did. Master Fel was a philosopher; he and Rand discussed everything from the meaning of parts of the Prophecies of the Dragon to the nature of the hole into the Dark One’s prison. He let her borrow books, fascinating books, especially where she had to work to puzzle out what it was they said. He had been a philosopher. He would never lend her a book again. Such a gentle old man, wrapped up in a world of thought and startled when he noticed anything outside it. She treasured a note he had written to Rand. He had said she was pretty, that she distracted him. And now he was dead. Light, she had had too much of death.
“I shouldn’t have told you, not like that.”
She gave a start; she had not heard Rand cross the room. His fingers brushed her cheek. Wiping away tears. She was crying.
“I’m sorry, Min,” he said softly. “I am not a very nice person anymore. A man is dead because of me, and all I can do is worry why he was killed.”
Flinging arms around him, she buried her face against his chest. She could not stop crying. She could not stop trembling. “I went to Colavaere’s apartments.” Images flashed in her head. The empty sitting room, all the servants gone. The bedchamber. She did not want to remember, but now she had begun, she could not stop the words tumbling out. “I thought, since you’d exiled her, maybe there was some way around the viewing I had of her.” Colavaere had been wearing what must have been her finest gown, dark silk that glistened, with falls of delicate aged-ivory Sovarra lace. “I thought for once it didn’t have to be that way. You’re ta’veren. You can change the Pattern.” Colavaere had donned a necklace and bracelets of emeralds and firedrops, and rings with pearls and rubies, surely her best pieces, and yellow diamonds had been arranged in her hair, a fair imitation of the crown of Cairhien. Her face . . . “She was in her bedchamber. Hanging from one of the bedposts.” Bulging eyes and protruding tongue in a blackened, swollen face. Toes a foot above the overturned stool. Sobbing helplessly, Min sagged against him.
His arms went around her slowly, gently. “Oh, Min, you have more pain than pleasure from your gift. If I could take your pain, I would, Min. I would.”
Slowly it penetrated that he was trembling, too. Light, he tried so hard to be iron, to be what he thought the Dragon Reborn must, but it cut him when somebody died because of him, Colavaere probably no less than Fel. He bled for everyone harmed, and tried to pretend he did not.
“Kiss me,” she mumbled. When he did not move, she looked up. He blinked at her uncertainly, eyes now blue, now gray, a morning sky. “I’m not teasing.” How often had she teased him, sitting on his lap, kissing him, calling him sheepherder because she dared not say his name for fear he might hear the caress? He put up with it because he thought she was teasing and would stop if she believed it did not affect him. Hah! Aunt Jan and Aunt Rana said you should not kiss a man unless you intended to marry him, but Aunt Miren seemed to know a little more of the world. She said you should not kiss a man too casually because men fell in love so easily. “I’m cold inside, sheepherder. Colavaere, and Master Fel . . . I need to feel warm flesh. I need . . . Please?”
His head lowered so slowly. It was a brother’s kiss, at first, mild as milk-water, soothing, comforting. Then it became something else. Not at all soothing. Jerking upright, he tried to pull away. “Min, I can’t.  She was not certain whether her hands began tearing at the laces of his shirt first or his at hers, but of one thing she was absolutely sure. If he even tried to stop now, she was going to fetch one of Riallin’s spears, all of them, and stab him.
On her way out of the Sun Palace, Cadsuane studied the Aiel wilders she saw as well as she could without being obvious. Corele and Daigian followed in silence; they knew her well enough by now not to disturb her with chatter, which could not be said of all those who paused a few days at Arilyn’s little palace before she sent them on. A great many wilders, every one staring at the Aes Sedai as if at flea-ridden curs covered with running sores, tracking mud over a new rug. Some people looked at Aes Sedai with awe or adoration, others with fear or hate, but Cadsuane had never seen contempt before, not even from Whitecloaks. Even so, any people who produced so many wilders should be sending a river of girls to the Tower.
That would have to be seen to eventually, and to the Pit of Doom with custom if need be, but not now. The al’Thor boy needed to be kept intrigued enough that he allowed her near him, and off-balance enough that she could nudge him where she wanted without him realizing. One way or another, anything that might interfere with that must be controlled or suppressed. Nothing could be allowed to influence him, or upset him, in the wrong way. Nothing.
The shiny black coach was waiting in the courtyard behind a patient team of six matched grays. A serving man rushed to open the door painted with a pair of silver stars atop red and green stripes, bowing to the three of them till his bald head was nearly level with his knees. He was in shirtsleeves and breeches. Since coming to the Sun Palace, she had not noticed anyone in livery yet, except a few wearing Dobraine’s colors. No doubt the servants were unsure what to wear and afraid to make a mistake.
“I may skin Elaida when I can lay hands on her,” she said as the coach lurched into motion. “That fool child has made my task nearly impossible.”
And then she laughed so abruptly that Daigian stared before she could control her eyes. Corele’s smile widened in anticipation. Neither understood, and she did not try to explain. All of her life, the fastest way to interest her in anything had been to tell her it was impossible. But then, over two hundred and seventy years had passed since she last encountered a task she could not perform. Any day now might be her last, but young al’Thor would be a fitting end to it all.


|
Occluded Library
0.1
A graphics library that sits on top of low level libraries such as OpenGL and DirectX.
|
Defines an organization of attributes. More...
#include <attribute_map.h>
Public Member Functions | |
| attribute_map (const bool interleaved) | |
| Initializes the attribute map. More... | |
| void | add_attribute (const attribute &newAttrib) |
| Adds an attribute to the map. More... | |
| void | end_definition () |
| Ends the definition of the attribute map. More... | |
| void | reset (const bool interleaved) |
| Clears attributes and restarts definition of attribute map. More... | |
| const std::size_t | get_byte_size () const |
| Gets the byte size of the attribute map. More... | |
| const unsigned int | get_attrib_count () const |
| Gets the number of attributes in the attribute map. More... | |
| const std::vector< const attribute > & | get_attributes () const |
| Gets all the attribute in the attribute map. More... | |
| const bool | is_interleaved () const |
| Gets whether or not the values of the attributes should be interleaved or segregated. More... | |
| const bool | being_defined () const |
| Gets whether or not the attribute map is still being defined. More... | |
| const bool | operator== (const attribute_map &other) const |
| Gets whether or not the attribute maps are the same. More... | |
| const bool | operator!= (const attribute_map &other) const |
| Gets whether or not the attribute maps are different. More... | |
Defines an organization of attributes.
The attribute map defines an organization of attributes.This is to be used with an attribute buffer to determine in which order values are placed and if the values are interleaved or segregated in the buffer.
| occluded::buffers::attributes::attribute_map::attribute_map | ( | const bool | interleaved | ) |
Initializes the attribute map.
| interleaved | A boolean which determines whether or not the values should be segregated or interleaved. |
Initializes the attribute map using a boolean which provides a hint on whether or not values associated with attributes should be segregated or interleaved. This will start the definition of the map, and therefore must be paired with an end_definition call.
| occluded::buffers::attributes::attribute_map::add_attribute | ( | const attribute & | newAttrib | ) |
Adds an attribute to the map.
| newAttrib | A reference to the attribute that is to be added to the attribute map. |
Adds a new attribute to the attribute map. If the attribute or an attribute with the same name already exists in the attribute map, an exception will be thrown. If the definition of the attribute map has been ended then an exception will be thrown.
| occluded::buffers::attributes::attribute_map::being_defined | ( | ) | const |
Gets whether or not the attribute map is still being defined.
| occluded::buffers::attributes::attribute_map::end_definition | ( | ) |
Ends the definition of the attribute map.
Ends the definition of the attribute map. This indicates that the attribute map is ready to be used by other classes.
| occluded::buffers::attributes::attribute_map::get_attrib_count | ( | ) | const |
Gets the number of attributes in the attribute map.
| occluded::buffers::attributes::attribute_map::get_attributes | ( | ) | const |
Gets all the attribute in the attribute map.
| occluded::buffers::attributes::attribute_map::get_byte_size | ( | ) | const |
Gets the byte size of the attribute map.
Gets the byte of size that a single value of all the attributes in the attribute map would take up.
| occluded::buffers::attributes::attribute_map::is_interleaved | ( | ) | const |
Gets whether or not the values of the attributes should be interleaved or segregated.
| const bool occluded::buffers::attributes::attribute_map::operator!= | ( | const attribute_map & | other | ) | const |
Gets whether or not the attribute maps are different.
| const bool occluded::buffers::attributes::attribute_map::operator== | ( | const attribute_map & | other | ) | const |
Gets whether or not the attribute maps are the same.
| occluded::buffers::attributes::attribute_map::reset | ( | const bool | interleaved | ) |
Clears attributes and restarts definition of attribute map.
| interleaved | A boolean which determines whether or not the values should be segregated or interleaved. |
Removes all attributes from the attribute map and restarts the definition of the attribute map. This is to be used in the the current definition of the attribute map needs to be changed.


Resume
Michał Bodzianowski
Innovating Interactions and Connections With Technology
GitHub itsMichal | LinkedIn mbodzianowski | Phone<PHONE_NUMBER> | Contact<EMAIL_ADDRESS>Objective
I am looking for a challenging internship opportunity that will help me grow my passion for creativity and computer science, in order to make a positive social impact on society via the use of computers and tech.
Education
University of Colorado: Boulder - BS Computer Science & BS Creative Technology and Design, and Business Minor. Class of 2023. CU Boulder Esports and Racing Team - GPA 3.4
I’m planning to finish both my degrees in Boulder, whilst preparing for a career in either business or creative computer science fields. I am planning to pursue research, internships, and various clubs during my studies. I plan to round off my degrees with a business minor to learn how to be a better leader.
Experience
SHINE Lab @ University of Colorado: Boulder / Undergrad Research Assistant- Fall 2020 - Now
I’m currently conducting undergraduate research in one of the top research colleges in the U.S. Working under Dr. Leanne Hirshfield (leanne.hirshfield@colorado.edu). Actively developing an experiment using Python, Flask, SocketIO, Heroku, and AWS DynamoDB/S3 to create a real-time collaborative experience.
Windward Studios / Software Developer Intern - Fall 2019 - Spring 2020
I completed a Software Developer Internship at Windward Studios. I worked while studying at CU Boulder, I was responsible for Windward’s adoption of the OpenAPI standard that allowed our customers to generate code to access our RESTful offering in over 20 languages. I also worked on the web store and new ventures for Windward, which provides document automation and generation software as a service.
Panther Industries AR/Marketing and STEM School Highlands Ranch IT Internships - 2018
I participated in two internships over the summer of 2018. The 3-week IT Internship at STEM had me writing scripts to automatically backup our servers, among other duties including maintaining the security system. Afterwards, I took on a dual internship at Panther where I would work on marketing duties whilst developing a Unity-based Augmented Reality mobile application intended for use by major distributors.
Skills
My specialty is web app development with Python or Node.js, mostly backend but have enough full-stack experience with my own projects using AWS or Heroku. I am also proficient in C++, Java, and JavaScript. I am experienced with C# and Unity/Mobile Dev. I have used JIRA/Confluence with agile/sprints and am proficient in the Adobe suite. I love working with teams of different backgrounds, and I can mesh well with any team or environment. I’m always looking to learn new tech and sharpen my skills.
Projects
HackMIT 2020 (Sea of Thoughts) interactive, real-time social website / Twitch.tv Chat Bot with NLP / Various video games, mostly w/ Unity (Phoenix Rising, WarCrimes.io, HackCU 2020) / Talking A.I. (kAIser)


The first time a users comes in contact with DAVE, they see the authentication page. From here, they can create an accout, log in with their current account or recover their password.
 If it is the first time he is authenticating into our platform, his face will be registered and used for later authentications. If it's not the first time, an already existing face will be compared to the face associated with the user. If the faces match, the user will be redirected to the home page else he will be redirected back to the authentication page.
After the authentication step, the user will find himself on the home page. On the home page, the user can see the F.A.Q. section or the contact section together with a description of the service we provide. He can also use the header, from any page not only from the home page, to navigate to any page available on the platform.
The user can navigate to the keys page by using the "GO TO MY KEYS" button from the home page, or by using the "KEYS" button on the header. From here he can create a key that will be used to secure forms from his site. By pressing on "GENERATE NEW KEY" and filling the presented form, a new key will be generated. If the user chooses not to save the private key on our platform then a modal will appear one time only, showing the private key to the user. After that, in order to access forms encrypted with this key, he will need this private key.
User can also navigate from the header to the data visualization page. If the key he chose is private, then a pop up will appear asking the user for the private key. If the key entered is valid, the data visualization page will be rendered with data submited from the user forms.


Class for implementing your custom plug-ins, sublime_plugins compatible
Plug-ins implementing this reference should provide the following attributes:
Event handler which fires when browser plug-ins sends data - (string) data sent by browser - (string) origin of data
Generic refresh command
Decorators:
Add http callback to plugin defined function. For example request to GET /callback/plugin_name/log_me would trigger log_me function in plugin
Example:
@LiveReload.http_callback
def compiled(self, req):
print req # urlparse object
return "cool" #to http client


For the past 15 years, I've worked as a Product Designer designing and building a wide range of digital products. I believe that good design should be both functional and aesthetically pleasing, and strive to create intuitive and engaging user experiences.
During my career, I've had the pleasure of working with a variety of clients in fields such as Editorial, Healthcare, Banking, Sports, Public Administration, E-commerce, and Information Technology.
Some of my notable clients include Scuderia Ferrari F1, Enel Energia, ING Direct, and HCL Software. Most recently, I served as a Senior Product Designer at the Italian Department for Digital Transformation, where I managed complex ecosystems of user interfaces and front-end libraries for key government initiatives.
In addition to my work as a designer, I co-founded Robodomain, a SaaS company focused on domain management tools. Our software was acquired by DNSimple in 2013, which was a valuable learning experience.
From time to time, I write and speak about design methodologies, workflow, and tools at conferences and events. I am also a lecturer at UXUniversity, where I conduct a full-day workshop on Design Systems and Atomic Design.
If you're interested in learning more about my work, feel free to connect with me or check out my work page.


Data manipulator
Load data
Upload a file
Upload
Or
Submit a query to the Data Lake
Submit
Add new column
Name:
Expression:
Add
Export CSV
Export JSON


{% extends "base.html" %} {% block content %}
Welcome, {{ request.user.username }}
list more stuff depending on the context. display upcoming office hours.
{% else %}Get help from someone who knows what they're talking about.
Talk to other HN users that have questions or donate a bit of your time to help others.
It's free and makes people love you
{% endif %}


Man, armed with knife, barricades himself in residence
The incident happened Thursday night on Cedarbrae Avenue in Waterloo
by Blair AdamsCharges have been laid following a disturbance in Waterloo on Thursday evening.
Police were called to a residence on Cedarbrae Avenue just before 7 p.m.
They allege a man, armed with a knife, caused damage to property and uttered death threats.
He then barricaded himself in his residence.
Members of the Emergency Response unit with Waterloo Regional Police assisted patrol officers in negotiating a peaceful surrender of the suspect.
A 22-year-old Waterloo man is facing charges including assault with a weapon, uttering threats, as well as mischief to property.
No name has been released and he is due to appear in court on Friday.


Copper-nickel mining, also known as sulfide mining, non-ferrous mining, or hardrock mining, refers broadly to mining minerals, such as gold, silver, copper, zinc, and nickel. One by-product of this type of mining is sulfuric acid, which can significantly harm fish, wildlife, and aquatic ecosystems.
Learn MoreCopper-nickel mining has never been conducted in Minnesota, and it has not been conducted anywhere without serious environmental consequences. Two major projects are currently being considered in the Boundary Waters Canoe Area Wilderness and Lake Superior watersheds.
Learn MoreMining typically offers a short-term economic boost to communities with the majority of the profits benefitting foreign mining companies. The way subsidiary companies are structured in the United States means taxpayers are often on the hook for decades of cleanup once a mine closes.
Learn MoreMining Truth is not opposed to all copper-nickel mining in Minnesota, but we are dedicated to ensuring that the state's abundant lakes, rivers, and cherished wilderness areas are protected from unsafe mines that lack appropriate assurances for cleanup in the event of a disaster. Your voice matters.
Act Now


When I discovered that Tramadol can be purchased without a prescription I was very curious to try it; I enjoy opiates a lot and wanted to see what this 'opioid' thing was all about. My previous experiences include opiates such as hydrocodone, oxycodone, opium, codeine, and heroin.
I really liked this drug but it was different from what I expected. Starting with 187mg I moved on to around 200-300mg a day usually in two doses; this seems to be optimal for me, as higher doses only increase the sedative effect and not the euphoria. For me, Tramadol takes a long time to fully come on. It also seems to have an antidepressant as well as a 'pseudo-opiate' effect. The antidepressant-like mindstate becomes apparent about 40 minutes after ingestion, while the pain relief and the nodding and zoning that comes with it only hit me around T+1:30. This does not seem to vary with stomach contents. [Note: I took the brand with 37.5 mg Tramadol and 325mg Paracetamol so this may be the reason for slower onset].
It also seems to kind of come on in waves, first Iím completely zoned out on a wall then I suddenly 'wake up' and can walk around doing chores or whatever I have to do quite efficiently. Definitely a more 'workable' high than heroin and oxycodone once I get used to it. My favorite part about it though is the very positive outlook on life which reminds me a little bit of heroin. Long duration is also a plus, as I can easily go a full day on it without feeling tired or burned out.
My least favorite part is the horrendous constipation and the unsettled stomach (farting all the time is no fun). Overall, the experience lasts around 12 hours, with the opiate-like effects disappearing after 8 hours or so and the positive post-effect stays with you for about 3-4 more hours after that. Opiates always give me this sort of a 'soul filled with darkness' melancholic feeling while Tramadol is a much lighter, sociable high.
Combinations:
I've tried several combinations and found that Tramadol combines well with many substances.
A combination with amphetamine/methamphetamine does not give me the 'swing' effect where I constantly go either 'up' or 'down' but rather provides a very stable and very euphoric feeling. After the amphetamines wear off it is easy to sleep too, making it ideal as a come-down aid as well.
A combination with benzodiazepines produces a 'kick'. Barbiturates increase the effects in a similar way as benzos do.
Weed, needless to say, goes great with Tram, as does 5-HTP. It seems to directly increase Tram's effects, very similar to taking an additional dose.
In conclusion, I find Tramadol to be a very enjoyable high which is easier to work with than opiates though it comes up short on the body buzz effects that one gets from Oxycodone, for instance. I try not to do it very often though as it is definitely very addictive.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


Getting Started
This documentation helps you to integrate with Juspay and process payments for your customers. Juspay offers three modes of payment integration:
- iFrame
- Javascript
- API (for API reference visit this link)
Supported Gateways & Aggregators
Gateways:
- HDFC
- ICICI
- AXIS
Aggregators:
- PayU
- CCAvenue
- Citrus
- EBS
- Atom
Before proceeding to integration, please know the steps involved in getting approval from your PG provider to use our Express Checkout solution. For some of the PGs listed above, this process can be cumbersome.
Additional Resources
- Client Libraries
- Sample integration projects


Camera Controls:
Hold right click to control camera
Mouse - Rotates Camera
Q - Move camera down
E - Move camera up
W - Move camera forward
A - Move camera left
S - Move camera backwards
D - Move camera right
Application Controls:
Alt + F - Open file menu
Ctrl + P - Start/Pause Solar System
Ctrl + R - Switch between realistic and scaled view
Ctrl + Q - Quit application
Alt + H - Open help menu
Ctrl + A - About
Ctrl + C - Controls
Ctrl + H - More help
Ctrl + T - About Qt


PostgreSQL has four primary documentation formats:
Plain text, for pre-installation information
HTML, for on-line browsing and reference
PDF or PostScript, for printing
man pages, for quick reference.
Additionally, a number of plain-text README files can be found throughout the PostgreSQL source tree, documenting various implementation issues.
HTML documentation and man pages are part of a standard distribution and are installed by default. PDF and PostScript format documentation is available separately for download.


Hints and Tips [ Indice de ayuda ]
WebMail Tips and Hints
- Increase the performance of the WebMail interface by configuring your browser to cache the HTML/images. Visit the Internet-Options -> Temporary Internet Files -> Settings -> Check for newer versions of stored pages = "Automatically" .
- You can open up a context menu by right-clicking on a message. It is a much easier way to Reply, Forward, or Open a message.
- Can\'t remember the recipients for an email? Easy - you can add recipients directly from the address book with the "Add Recipients" button. You can even cycle through Personal and Global address books!
- Want to use addresses on other LDAP servers? No problem - you can do this in the Find People window, where you can specify the LDAP server you want to query, along with the parameters you want your search to be limited to.
- Did you know that you can click and drag messages from one folder to another? Just drag an email message to the destination folder - this is a much easier way of moving your messages.


{% extends "base.html" %} {% block breadcrumb %}
Create events for a collection exercise. Mandatory events are: mps, go_live, return_by, exercise_end


"Rename your "To-Do" list to your "Opportunities" list.
- Steve Maraboli
Unapologetically You: Reflections on Life and the Human Experience
- Steve Maraboli
Unapologetically You: Reflections on Life and the Human Experience
Join Now!
Its free!
And never miss an appointment again!
Its free!
And never miss an appointment again!


Article Reported
!
{{username}} reported this article :{{art_slug}} on {{time}}
The report message was:
{{report_msg}}
VIEW ARTICLE


Bubble Sort is relatively simple sorting algorithm, Bubble Sort iterates over a list comparing each item to the previous item. This process repeats until no more swaps are made, meaning the list is sorted.
Bubble Sort Overview
Test below:


About
Decentralized Identity Foundation
Vision
Enable a world where decentralized identity solutions allow entities to gain control over their identities and allow trusted interactions.
Mission
The Decentralized Identity Foundation (DIF) exists to advance the interests of the decentralized identity community, including performing research and development to advance “pre-competitive” technical foundations towards established interoperable, global standards.
Governing Documents
The documents that are currently accepted by the foundation
- DIF Charter
-
This “Project Charter” establishes the terms under which this Project operates
Charter - DIF Operating Addendum
-
This document governs DIF's governing bodies
Operating Addendum Steering Committee election process - DIF Participation Matrix
-
The list of benefits of DIF membership and other participation formats offered by the foundation
Participation Matrix - DIF Subsidiary assesment process
-
As recognition of this variety of legal and liability structures, DIF Steering Committee considers the following when a subsidiary of a large corporation applies for DIF membership.
Subsidiary assesment - DIF Code of Conduct
-
Creating an open, healthy and productive culture where members and the community can build and grow together. This is a living document, feel free to comment.
Code of Conduct GitHub - Code of Conduct - DIF Grants
-
A series of opportunities for companies to develop open-source services for the community.
Grants Operating Addendum - DIF Brand Guidelines
-
Guidelines and logos to represent DIF in the public
Brand Guidelines - Steering Committee minutes
-
A public document for the minutes and decisions made by the Steering Committee.
SC minutes
Steering Committee members
The following DIF members are the elected representatives of DIF's Steering Committee
Daniel Buchner
Juan Caballero
Sam Curren
Karyl Fowler
Rouven Heck
Catherine Nabbala Seppuuya
Markus Sabadello
Brent Zundel
Andor Kesselman
DIF team
The team helping the DIF community


On the Ethereum blockchain, gas refers to the cost necessary to perform a transaction.
Ethereum miners set the price of gas based on supply and demand for processing Ethereum transactions.
Ethereum gas prices are denoted in small fractions (one-billionth) of ether called gwei.
Ethereum sender pays transaction fee based on his/her provided gas price and actual gas usage.
Providing less gas price might cause transaction failure or long pending.
Source: https://www.investopedia.com/terms/g/gas-ethereum.asp
To create an Ethereum transaction manually, you need to provide a reasonable gas price (in gwei) that you are willing to pay.
To get a network proposed Ethereum gas price, you should use some third-party service known as API or proxy.
We suggest the following endpoints:
Usage: https://api.blockcypher.com/v1/eth/main
The result looks like:
Note that wei is one-billionth of a gwei.
Usage: https://api.etherscan.io/api?module=proxy&action=eth_gasPrice
The result looks like:


In 2017 my health was poor. I didn’t have much drive and easily fell victim to anxiety. That changed when I discovered a simple herbal infusion called Ivan Chai. Subscribe to my story to hear how it revitalized my health naturally and removed all my anxiety.


PINPOINT THIRD PARTY
dashboard
Dashboard
accessibility
Pending Users
add_circle
Live Recodings
add_circle
Edit Profile
content_cut
Update Password
Dashboard
person
Account


Your order will be processed and delivered within two hours of placing.
Make sure to have the total amount required for delivery.
Incase of any issues with an order placed, feel free to contact us thorigh our contact lines given on the contact section of this page
Delivery will cost sh. 100
Benny's Pizza
Milele Mall | Ngong
90059, Ngong
<EMAIL_ADDRESS>Tell:<PHONE_NUMBER>6
Phone: +254758950997


--- title: Using @ConversationScoped on VRaptor 4 --- # Using @ConversationScoped on VRaptor 4 VRaptor in its 4th version uses CDI 1.1. And one of the things to be considered when using CDI is the scope of your managed objects. We should always choose carefully the bean scope, since using a `@RequestScoped` where an `@ApplicationScoped` is required can be a disaster. A very useful CDI scope is `@ConversationScoped`, that allows us a greater and more flexible control according to our needs. The application presented in this tutorial is available on GitHub [ScoreCDI] (https://github.com/angeliski/ScoreCDI) in portuguese. Take a look at the controller below: ~~~ #!java package br.com.angeliski.controller; import java.io.Serializable; import java.util.Random; import javax.enterprise.context.Conversation; import javax.enterprise.context.ConversationScoped; import javax.inject.Inject; import br.com.caelum.vraptor.Controller; import br.com.caelum.vraptor.Get; import br.com.caelum.vraptor.Post; import br.com.caelum.vraptor.Result; @Controller @ConversationScoped public class HomeController implements Serializable { private static final long serialVersionUID =<PHONE_NUMBER>76068998L; private Result result; private Conversation conversation; private Integer questionResult; private int total; /** * @deprecated CDI eyes only */ protected HomeController() { this(null, null); } @Inject public HomeController(Result result, Conversation conversation) { this.result = result; this.conversation = conversation; } @Get public void index() { } @Get public void game() { if (conversation.isTransient()) { conversation.begin(); } result.include("cid", conversation.getId()); generateQuestion(); } private void generateQuestion() { Random random = new Random(); Integer firstValue = random.nextInt(100); Integer secondValue = random.nextInt(100); questionResult = firstValue * secondValue; result.include("first", firstValue); result.include("second", secondValue); } @Post public void game(Integer answer) { if (questionResult.equals(answer)) { total++; } generateQuestion(); result.include("cid", conversation.getId()); } @Get public void end() { if (!conversation.isTransient()) { conversation.end(); } result.include("total", total); } } ~~~ The first difference of this controller is its scope, defined with `@ConversationScoped` annotation. It indicates to CDI which will be the controller scope, but be careful: only declaring the annotation is not enough to use this special scope. To make this scope *persistent*, not losing the data on each request, it is necessary to inject a `Conversation` object and call its `begin` method. In example: ~~~ #!java @Get public void game() { if (conversation.isTransient()) { conversation.begin(); } result.include("cid", conversation.getId()); generateQuestion(); } ~~~ The conversation scope will start at this method. It has a default state known as *transient*. When the `begin` method is called, it goes to the *long-running* state, keeping data until the `end` method is called. One important detail must be observed. CDI doesn't know which object you're dealing with. The way CDI uses to know that is providing an id (called **cid**) to the conversation. We need to provide **cid** as parameter on each url, so CDI can recover the current state. Note that on method `game` we're including the **cid** in `result`. The name used to include the `Conversation`'s *id* isn't really important. It can be anyone, provided it is properly retrieved on the view. It is only important to use the parameter **cid** when the request is sent to the server. Take a look on the page using this parameter: ~~~ #!jsp <\%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"\%> <\%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"\%>
How much is ${first} * ${second}?
Finish! ~~~ You can see that the form action uses the **cid**. When the request is sent to the server, it will send the correct identifier on it. While the request is done by sending the **cid**, the number displayed in the current session will remain the same (because the conversation will remain the same). You can test it by directly accessing `/home/game` without sending the cid as parameter. A new conversation will be started and the cid will change. Finally, we've the `end` method closing the *long-running* cycle: ~~~ #!java @Get public void end() { if (!conversation.isTransient()) { conversation.end(); } result.include("total", total); } ~~~ It's worth noting that if you don't finish the conversation, it won't remain in memory for more than two minutes, which is the standard time. This ensures that, different from `@SessionScoped`, resources will be released earlier if the application does not shutdown the state of that object. The timeout can be set through `setTimeout` method if you need, but it's usually not necessary.


#include <x509_crt.h>
Container for writing a certificate (CRT)
Definition at line 156 of file x509_crt.h.


JUMANJI A film review by Thomas Wheeler Copyright 1995 Thomas Wheeler
Some of this review bounces off a few points made by a reviewer in my local newspaper, but I also saw the film for myself today. Any such points are strictly comparative.
The local reviewer was comparing it to TOY STORY, and actually preferred it. I enjoyed JUMANJI well enough, but it was no TOY STORY, which I consider the best movie of the season, and I really don't see it as a major classic in years to come.
It's amusing enough, though. But it has some major faults. First off is a general lack of enthusiasm from most of the performers. Not even Robin Williams gets to really cut loose. I'm sure everyone in the movie is a capable actor or actress -- it just seems like they go through the movie not entirely sure what's going on -- and that unfortunately comes across in the movie.
There were some high points. The local reviewer cited the drubbing that New-Age pop psychology takes on the part of the adult woman (whose name now escapes me), and he's right. And it's a much needed drubbing, too. Also the make-up on the young boy later in the movie was a lot more effective than the special effects -- and we get another amusing scene in the movie when the boy is experiencing a certain discomfort. (I make it a point never to blow significant plot points of a movie in reviews like this).
The special effects are unfortunately not terribly impressive. Toy Story wasn't trying to be anything other than computer animated. Fortunately, it had strong enough characterization, good performers, and a storyline that worked with the basic premise, so that the movie was wonderful.
Granted, it's hard to get characterization out of a troop of berserk monkeys and stampeding elephants and rhinos. But one comparison I read, likening them to JURASSIC PARK, was way off base. Perhaps it was because these were computer-generated images of living animals, as opposed to extinct ones, but I was not convinced. There is the scene in which some computer-generated elephants stomp a car, which has been seen in repeated previews, but while the car most surely gets stomped, the elephants still look more than a bit phony.
The ending of the movie was, not really confusing, but certainly anti-climatic. Ultimately, it rendered all the chaos of the previous hour and a half pointless, for the most part. That's no way to end a movie.
To be fair, as I said, it's an amusing enough film, and kids will probably enjoy it who don't mind a good bit of cartoonish action and chaos and not a whole lot of storyline. I didn't really dislike it. But I suspect it could have been a lot better if there had been more depth to it, which was certainly possible. The origin of the game itself is never explained, for starters. Such considerations were obviously sacrificed in favor of the special effects.
I should point out that I haven't read the book upon which the movie was based, but one other local reviewer, who absolutely despised the movie, made the point that the movie takes some very substantial liberties as far as the source material is concerned.
I wouldn't build it up as much as much as Toy Story, which didn't need to be as deep as Jumanji should have been. There's no way I would equate those two movies. Actually, they're sufficiently different that a comparison is really very difficult. And Jumanji itself, while it could have been better, isn't really all that bad if you have some idea of what to expect.
My vote for best movie of the season, though, still goes to TOY STORY!
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


---
layout: default
title: Team
---
Meet the team
The entire project is open sourced and split up amongst a number of modules which are hosted on Github. There are many areas of the project that need work:
All the code for the project can be found here:
https://github.com/jsonblog


Production samples
On the website wep you will find many sites maintained with WXT. Most of them are in Norwegian. Some examples:
| j3d | Computer Graphics, a site with material for a basic course in Computer Graphics |
| WebGL | Some experiments with 3d on the web (in Norwegian) |
| SVG | Some material with SVG (in Norwegian) |
| PedTek | A historical perspective on Pedagogy and Technologi (in Norwegian) |


| 003:042 Khan | : |
And (remember) when the angels said: "O Maryam (Mary)! Verily, Allah has chosen you, purified you (from polytheism and disbelief), and chosen you above the women of the 'Alamin (mankind and jinns) (of her lifetime)." |
| 003:042 Maulana | : |
And when the angels said: O Mary, surely Allah has chosen thee and purified thee and chosen thee above the women of the world. |
| 003:042 Pickthal | : |
And when the angels said: O Mary! Lo! Allah hath chosen thee and made thee pure, and hath preferred thee above (all) the women of creation. |
| 003:042 Rashad | : |
The angels said, "O Mary, GOD has chosen you and purified you. He has chosen you from all the women. |
| 003:042 Sarwar | : |
"Behold," the angels told Mary, "God had chosen you, purified you, and given you distinction over all women. |
| 003:042 Shakir | : |
And when the angels said: O Marium! surely Allah has chosen you and purified you and chosen you above the women of of the world. |
| 003:042 Sherali | : |
And remember when the angels said, 'ALLAH has chosen thee and purified thee and chosen thee above all women of the time. |
| 003:042 Yusufali | : |
Behold! the angels said: "O Mary! Allah hath chosen thee and purified thee- chosen thee above the women of all nations. |
Concepts/Themes Covered: أركان الإسلام > الصلاة > الطهارة > التطهير Pillars of Islam> The Prayers>Chastity> Purification (act of chastity) الإيمان > الأنبياء والرسل > المصطفون منهم Faith> The Prophets and the Messengers of Allah> The Elite of Them القصص والتاريخ > عُمران > مريم ابنة عمران The Stories and the History>Imran>Blessed Mary(Imran's Daughter)
This tool uses eight English parallel translations for the Holy Quran imported from Mr. Clay Smith. You can also visit Qurany Concepts for browsing the Quran themes or topics. If you want to search the Holy Quran for keywords, please visit Qurany Keywords.


buzzphrase- Output a phrase formatted as [i]mperative verb + past tense [v]erb + [a]djective + plural [N]oun:
buzzphrase '{i} {v} {a} {N}'- Output 4 phrases formatted as present participle [V]erb + [a]djective + singular [n]oun + [f]inal:
buzzphrase 4 '{V} {a} {n} {f}'


Comombo is the largest city in Sri Lanka and a very busy commercial port. It lies on the country's west coast.
Position 06° 58' N, 079° 50' E.
Arriving yachts should contact the port authority on VHF Channel 16 before proceeding into the harbour.
Yachts are treated on the same lines as commercial shipping; it is not recommended to use Colombo, but if it is necessary to go there, it may be advisable to use an agent.
A naval security inspection will be carried out before entering the harbour. Clearance is done with Customs, Immigration and Health.
See Sri Lanka/Clearance Agents for a list of agents.
Last updated March 2015.
There is no known dedicated yacht berths here.
Last updated March 2015.


8.30am - 6.30pm (Monday - Friday) 8.30am - 12.30pm (Saturday)
8.30am - 6.30pm (Sunday - Thursday) 8.30am - 12.30pm (Saturday)
CS :<PHONE_NUMBER> Fax : 03-7890 3536
customersupport@lineclearexpress.com


The bind
plugin provides a vim-like interface for Luminescence (1.0.1 at the time of this writing). The source file for this plugin can be found here.
To register key bindings, you should use the bind
command. You can either call it directly from the command-line, or write your bindings in the configuration file (see the README or the exec
plugin).
bind i insert-mode
bind ^v uri-paste # ^ means Ctrl
The exec
-style usage is:
bind KEY COMMAND ARG1 ARG2 ...
Technically, the bind
command takes at least 2 arguments.
The key is usually a single letter, and the case is important.
There is also the ^
modifer to match the Ctrl modifier.
Currently, other special keys (like Escape or Backspace) are not meant to be bound. However you can probably bind them the right non-printable characters. Otherwise you might as well add a few lines of code to bind the key you want.
Note: this section is for developers.
When the focus
command is called, bind
relays key events to Gtk instead of handling them like it usually does. The user can release the focus by pressing the Escape key. When releasing the focus, bind
calls the leave
command, so that all the plugins which have registered the leave
command will be aware of the focus release (which usually means "cancel").
In other words: you lose all control over the keyboard when focusing.


Name
Position
Height
Born
DeMarcus Cousins
C
6'11"
67.65
Isaiah Thomas
PG
5'9"
02-07-1989
Ben McLemore
SG
6'5"
02-11-1993
Marcus Thornton
SG
6'4"
05-05-1987
Add row


Lee Hyori rocks the cover and photoshoot for Cosmopolitan Korea + gives makeup advice in interview
by sl278Lee Hyori will be gracing the cover of Cosmopolitan Korea for the magazine's December edition.
The popular star and entertainer looks timeless in her cover and photoshoot cuts, and also gave valuable advice during her interview. When asked what makeup would best suit those in their 20s to 30s, Lee Hyori stated that you should live boldly during those years, and to "try all kinds of makeup!"
Check out the rest of her gorgeous beauty shots below. What do you think of her looks?


'OK boomer': millennial MP responds to heckler in New Zealand parliament – video
by New Zealand ParliamentGreen MP Chlöe Swarbrick drops a casual 'OK boomer' in response to being heckled during her speech in a sitting of the New Zealand parliament. The captions department of NZParliament TV struggled with the millennial slang, quoting her as saying 'OK Berma'.


Class webdriver.ActionSequence
code »Class for defining sequences of complex user interactions. Each sequence
will not be executed until #perform
is called.
Example:
new webdriver.ActionSequence(driver).
keyDown(webdriver.Key.SHIFT).
click(element1).
click(element2).
dragAndDrop(element3, element4).
keyUp(webdriver.Key.SHIFT).
perform();
Constructor
| Parameters |
|---|
|
Instance Methods
code »click ( opt_elementOrButton, opt_button ) ⇒
!webdriver.ActionSequence
Clicks a mouse button.
If an element is provided, the mouse will first be moved to the center
of that element. This is equivalent to:
sequence.mouseMove(element).click()
!webdriver.ActionSequence
sequence.mouseMove(element).click()
| Parameters |
|---|
|
| Returns |
|
code »doubleClick ( opt_elementOrButton, opt_button ) ⇒
!webdriver.ActionSequence
Double-clicks a mouse button.
If an element is provided, the mouse will first be moved to the center of
that element. This is equivalent to:
sequence.mouseMove(element).doubleClick()
Warning: this method currently only supports the left mouse button. See
http://code.google.com/p/selenium/issues/detail?id=4047
!webdriver.ActionSequence
sequence.mouseMove(element).doubleClick()
| Parameters |
|---|
|
| Returns |
|
code »dragAndDrop ( element, location ) ⇒
!webdriver.ActionSequence
Convenience function for performing a "drag and drop" manuever. The target
element may be moved to the location of another element, or by an offset (in
pixels).
!webdriver.ActionSequence
| Parameters |
|---|
|
| Returns |
|
code »keyDown ( key ) ⇒ !webdriver.ActionSequence
Performs a modifier key press. The modifier key is not released
until #keyUp
or #sendKeys
is called. The key
press will be
targetted at the currently focused element.
!webdriver.ActionSequence
#keyUp
or #sendKeys
is called. The key
press will be
targetted at the currently focused element.| Parameters |
|---|
|
| Returns |
|
| Throws |
|
code »keyUp ( key ) ⇒
!webdriver.ActionSequence
Performs a modifier key release. The release is targetted at the currently
focused element.
!webdriver.ActionSequence
| Parameters |
|---|
|
| Returns |
|
| Throws |
|
code »mouseDown ( opt_elementOrButton, opt_button ) ⇒
!webdriver.ActionSequence
Presses a mouse button. The mouse button will not be released until
#mouseUp
is called, regardless
of whether that call is made in this
sequence or another. The behavior for out-of-order events (e.g. mouseDown,
click) is undefined.
If an element is provided, the mouse will first be moved to the center
of that element. This is equivalent to:
sequence.mouseMove(element).mouseDown()
Warning: this method currently only supports the left mouse button. See
http://code.google.com/p/selenium/issues/detail?id=4047
!webdriver.ActionSequence
#mouseUp
is called, regardless
of whether that call is made in this
sequence or another. The behavior for out-of-order events (e.g. mouseDown,
click) is undefined.
sequence.mouseMove(element).mouseDown()
| Parameters |
|---|
|
| Returns |
|
code »mouseMove ( location, opt_offset ) ⇒
!webdriver.ActionSequence
Moves the mouse. The location to move to may be specified in terms of the
mouse's current location, an offset relative to the top-left corner of an
element, or an element (in which case the middle of the element is used).
!webdriver.ActionSequence
| Parameters |
|---|
|
| Returns |
|
code »mouseUp ( opt_elementOrButton, opt_button ) ⇒
!webdriver.ActionSequence
Releases a mouse button. Behavior is undefined for calling this function
without a previous call to #mouseDown
.
If an element is provided, the mouse will first be moved to the center
of that element. This is equivalent to:
sequence.mouseMove(element).mouseUp()
Warning: this method currently only supports the left mouse button. See
http://code.google.com/p/selenium/issues/detail?id=4047
!webdriver.ActionSequence
#mouseDown
.
sequence.mouseMove(element).mouseUp()
| Parameters |
|---|
|
| Returns |
|
Executes this action sequence.
| Returns |
|---|
|
code »scheduleKeyboardAction_ ( description, keys ) ⇒ !webdriver.ActionSequence
Schedules a keyboard action.
!webdriver.ActionSequence
code »scheduleMouseAction_ ( description, commandName, opt_elementOrButton, opt_button ) ⇒
!webdriver.ActionSequence
Schedules a mouse action.
!webdriver.ActionSequence
| Parameters |
|---|
|
| Returns |
|
Schedules an action to be executed each time #perform
is called on
this instance.
#perform
is called on
this instance.| Parameters |
|---|
|
code »sendKeys ( var_args ) ⇒ !webdriver.ActionSequence
Simulates typing multiple keys. Each modifier key encountered in the
sequence will not be released until it is encountered again. All key events
will be targetted at the currently focused element.
!webdriver.ActionSequence
| Parameters |
|---|
|
| Returns |
|
| Throws |
|
Instance Properties
Static Functions
Checks that a key is a modifier key.
| Parameters |
|---|
|
| Throws |
|


EHFs distribution of all genes
This graph shows EHFs distribution of all genes. x axis represents the
interacted pathogen
number, y axis represents the EHF number.
Gene List whose interacted pathogen number is greater than 3.
| Pathogen Number | Gene Number | Gene List | Drug info |
|---|---|---|---|
| {{ res.pathogenNumber }} | {{ res.geneNumber }} | {{ res.geneList }} |
EHFs distribution of primary hits
This graph shows EHFs distribution for primary hits (systematic
analysis or
functional study).
Gene List whose interacted pathogen number is greater than 2.
| Pathogen Number | Gene Number | Gene List | Drug info |
|---|---|---|---|
| {{ res.pathogenNumber }} | {{ res.geneNumber }} | {{ res.geneList }} |


 Click below to see them
{{success}}
{{info}}
{{warning}}
{{danger}}
Jobs posted
Candidate
Applications
Companies
{{event.description|safe}}
Gives Concordia Students the ability to find 8-16 months co-op internships


--- title: Designing an introductory course on Causal Inference author: Gertjan Verhoeven date: '2019-05-11' baseurl: "https://gsverhoeven.github.io/" summary: In this blog post, I describe the introductory course on Causal Inference I pieced together using various materials available online. It combines Pearl's Causal Graph approach with statistics Gelman/mcElreath style. draft: FALSE slug: causal-inference-course categories: - Causal inference tags: - R - causal inference - DAG - causal graph header: image: 'headers/sharon-mccutcheon-532782-unsplash.jpg' caption: '' ---
(Short intro) This is me learning causal inference (CI) by self-study together with colleagues using online resources.
(Longer intro) A modern data scientist needs to become skilled in at least three topics (I left out visualization):
For the first two topics, great introductory books exist that
For Bayesian statistical modeling, we have the awesome textbook "Statistical Rethinking" by Richard mcElreath.
For Machine Learning, we have the (free) book "Introduction to Statistical Learning" by James, Witten, Hastie & Tibshirani.
However, for Causal Inference, such a book does not exist yet AFAIK. Therefore, I tried to piece together a Causal Inference course based on the criteria mentioned above.
Explicit goal was to contrast/combine the causal graph (DAG) approach with what some call "Quasi-experimental designs", i.e. the econometric causal effects toolkit (Regression Discontinuity Design, matching, instrumental variables etc).
In the end, I decided to combine the two causal chapters from Gelman & Hill (2007) (freely available on Gelman's website) with the introductory chapter on Causal Graphical Models by Felix Elwert (freely available on Elwert's website).
The Gelman & Hill chapters already come with a set of exercises. However, for DAGs, i could not find a suitable set of exercises.
So I created two R markdown notebooks with exercises in R, that make use of the DAGitty tool, created by Johannes Textor and freely available as R package.
Some exercises are taken from Causal inference in statistics: A Primer by Pearl, Glymour & Jewell. (I probably should own this book. So I just ordered it :))
All materials are available in a GitHub repository
The course has four parts.
The course starts with the first causal chapter of Gelman & Hill's book, "Causal inference using regression on the treatment variable". This creates a first complete experience with identifying and estimating causal effects. However, there are no causal diagrams, which is unfortunate.
Next we dive into causal identification using the causal diagram approach. For this we use the chapter "Causal Graphical Models" by Felix Elwert. Two R markdown Notebooks with exercises using Dagitty complete this part.
We then continue with the second causal chapter of Gelman & Hill "Causal inference using more advanced models". This covers matching, regression discontinuity design, and instrumental variables. This material is combined with a paper by Scheiner et al, that contains DAGs for these methods. In our study group DAGs greatly facilitated discussion of the various designs.
Finally, and this part of the course has yet to take place, is the topic of estimating heterogeneous (i.e. subgroup, or even individual) treatment effects. This covers recent developements based on (forests of) regression trees. The plan is to cover both bayesian (BART, Chipman & mcCullough) and non-bayesian (GRF, Athey & Wager) methods.
The causal diagram / DAG approach is nonparametric and its purpose is to
Thus, it is separate from, and complements statistical estimation. The distinction between identification and estimation is not so explicitly made in the Gelman & Hill chapters, at least this is my impression. It would really benefit from adding DAGs, as Richard mcElreath is doing in his upcoming second edition of Statistical Rethinking.
After having worked through these materials, I think reading Shalizi's chapters on Causal Effects would be a smart move. This is part III of his book "Advanced Data Analysis from an Elementary Point of View", which is awesome in its clarity, practical remarks a.k.a. normative statements by the author, and breadth.
If you have a question, would like to comment or share ideas feel free to contact me.


This class represents a camera as used in real-time rendering APIs. It provides a view and projection matrices, and handles their proper update.
More...
#include <Camera.hpp>
|
|
void | updateProjection () |
| | Update the projection matrix using the camera parameters.
|
| |
|
void | updateView () |
| | Update the view matrix using the camera position and orientation.
|
| |
|
|
glm::mat4 | _view = glm::mat4(1.0f) |
| | The view matrix.
|
| |
|
glm::mat4 | _projection = glm::mat4(1.0f) |
| | The projection matrix.
|
| |
|
glm::vec3 | _eye = glm::vec3(0.0, 0.0, 1.0) |
| | The camera position.
|
| |
|
glm::vec3 | _center = glm::vec3(0.0, 0.0, 0.0) |
| | The camera center (look-at point)
|
| |
|
glm::vec3 | _up = glm::vec3(0.0, 1.0, 0.0) |
| | The camera up vector.
|
| |
|
glm::vec3 | _right = glm::vec3(1.0, 0.0, 0.0) |
| | The camera right vector.
|
| |
|
glm::vec2 | _clippingPlanes = glm::vec2(0.01f, 100.0f) |
| | The near and far plane distances.
|
| |
|
float | _fov = 1.3f |
| | The vertical field of view, in radians.
|
| |
|
float | _ratio = 1.0f |
| | The aspect ratio.
|
| |
This class represents a camera as used in real-time rendering APIs. It provides a view and projection matrices, and handles their proper update.
Inherited by ControllableCamera.
◆ ~Camera()
| virtual Camera::~Camera |
( |
| ) |
|
|
virtualdefault |
◆ Camera() [1/2]
| Camera::Camera |
( |
const Camera & |
| ) |
|
|
default |
◆ Camera() [2/2]
◆ apply()
| void Camera::apply |
( |
const Camera & |
camera | ) |
|
Apply the pose and parameters of another camera.
- Parameters
-
| camera | the camera to align with |
◆ center()
| const glm::vec3& Camera::center |
( |
| ) |
const |
|
inline |
Obtain the current world space center position.
- Returns
- the current center
◆ clippingPlanes()
| const glm::vec2& Camera::clippingPlanes |
( |
| ) |
const |
|
inline |
Obtain the current world space camera position.
- Returns
- the current position
◆ decode()
| void Camera::decode |
( |
const KeyValues & |
params | ) |
|
Setup a camera parameters from a list of key-value tuples. The following keywords will be searched for:
camera:
position: X,Y,Z
center: X,Y,Z
up: X,Y,Z
fov: F
planes: N,F
where the field of view is given in radians.
- Parameters
-
| params | the parameters tuples list |
◆ encode()
Encode a camera as a key-values representation.
- Returns
- the encoded camera parameters
◆ fov() [1/2]
| float Camera::fov |
( |
| ) |
const |
|
inline |
Obtain the current vertical field of view, in radians.
- Returns
- the field of view
◆ fov() [2/2]
| void Camera::fov |
( |
float |
fov | ) |
|
Update the vertical field of view.
- Parameters
-
| fov | the new field of view, in radians |
◆ frustum()
| void Camera::frustum |
( |
float |
near, |
|
|
float |
far |
|
) |
| |
Update the frustum near and far planes.
- Parameters
-
| near | the new near plane distance |
| far | the new far plane distance |
◆ operator=() [1/2]
Move assignment.
- Returns
- a reference to the object assigned to
◆ operator=() [2/2]
Copy assignment.
- Returns
- a reference to the object assigned to
◆ pixelShifts()
| void Camera::pixelShifts |
( |
glm::vec3 & |
corner, |
|
|
glm::vec3 & |
dx, |
|
|
glm::vec3 & |
dy |
|
) |
| const |
Compute world space position of the top-left corner of the image, and the shifts to move to the next pixel, horizontally and vertically.
- Parameters
-
| corner | will contain the position of the top-left corner |
| dx | will contain the horizontal step |
| dy | will contain the vertical step |
◆ pose()
| void Camera::pose |
( |
const glm::vec3 & |
position, |
|
|
const glm::vec3 & |
center, |
|
|
const glm::vec3 & |
up |
|
) |
| |
|
virtual |
Update all view parameters
- Parameters
-
| position | the camera position |
| center | the camera center of interest |
| up | the camera vertical orientation |
Reimplemented in ControllableCamera.
◆ position()
| const glm::vec3& Camera::position |
( |
| ) |
const |
|
inline |
Obtain the current world space camera position.
- Returns
- the current position
◆ projection() [1/2]
| const glm::mat4& Camera::projection |
( |
| ) |
const |
|
inline |
Obtain the current projection matrix.
- Returns
- the projection matrix
◆ projection() [2/2]
| void Camera::projection |
( |
float |
ratio, |
|
|
float |
fov, |
|
|
float |
near, |
|
|
float |
far |
|
) |
| |
|
virtual |
Update all projection parameters.
- Parameters
-
| ratio | the aspect ratio |
| fov | the vertical field of view in radians |
| near | the near plane distance |
| far | the far plane distance |
◆ ratio() [1/2]
| float Camera::ratio |
( |
| ) |
const |
|
inline |
Obtain the current aspect ratio.
- Returns
- the aspect ratio
◆ ratio() [2/2]
| void Camera::ratio |
( |
float |
ratio | ) |
|
Update the aspect ratio.
- Parameters
-
| ratio | the new aspect ratio |
◆ up()
| const glm::vec3& Camera::up |
( |
| ) |
const |
|
inline |
Obtain the current world space up direction.
- Returns
- the current direction
◆ view()
| const glm::mat4& Camera::view |
( |
| ) |
const |
|
inline |
Obtain the current view matrix.
- Returns
- the view matrix
The documentation for this class was generated from the following files:
- src/engine/input/Camera.hpp
- src/engine/input/Camera.cpp


I am huy Xuon Lieu, I came from Vietnam, and I love learning new things.
I transfer to Seattle Central College in the last year with the major of IT-Networking. I have tried to study many different things to find the one that I love. I started teaching myself website development last year. After reading books and doing tutorials for 3-4 months, I coded the home page of Uber Eat with HTML and pure CSS3, here is the link to the project. Some images and icons in it are not displayable currently. Last quarter, my friend and me worked on a project about VANS, a shoes company, and his instructor's feed back encouraged me a lot. Now I can use HTML CSS3, and simple JS. This is my first web development web and I hope to learn to write clean and good performance code.


Home
People
Research
Publications
Gallery
Software
Teaching
Join Us
Bioinformatics
Statistical Modeling
Epigenetics
Genetics
Genomics
Bioinformatics
...