The Lair of Litvart was at the entrance of Grave Mountains, a three hours trip on horseback from the Citadel.
The colt Weed was riding on occasionally diverted off course, and even chewed on grass leisurely. He had to cajole it to stay on course.
In front of the lair, a soldier who would look after the horses was waiting for them.
“Johnson, take good care of the horses.”
“Yes, sir.”
The punitive force led by Sir Midvale left their horses to the soldier, and entered the lair. Weed was finally relieved of the colt.
“Ready for battle!”
“Set in battle formation!”
The punitive force shielded themselves with steel bucklers and armed themselves with spears and swords.  An iron sword and a bow.
Sir Midvale in chain mail approached.
“Is that all you have, Weed-nim?”
“Yes, sir.”
“You are poorly armed to fight on the front line. Stay behind and support the troops.”
“Yes, sir.”
The troops held the bucklers forward and marched on the lair. Weed followed them from behind.
Making a little headway, they spotted five kobolds that were camping around a bonfire, cooking something. Surprised by the sudden appearance of the troops, the kobolds sprang to their feet.
“Grakht!”
“Enemy! Human attack!”
The kobolds are Lv. 20 midget-like monsters, below four feet in height, armed with coarse wooden shields and bronze swords.
“Kill, kill!”
“Drive evil human away! They wreck shelter! Rise, brave kobold warriors!”
When the kobolds rushed out, the soldiers got tense. New recruits, fresh out of boot camps, had not engaged in a battle before. Weed looked toward Sir Midvale, but the knight watched his men with indifferent eyes as if any casualty was acceptable.
 Perhaps he wants them to have firsthand combat experience on their own’ Weed thought.
The soldiers quickly formed a linear formation and charged against the wave of kobolds. A couple of kobolds flung stones with slingshots, but the projectiles barely troubled the troops. Outnumbering the enemy and better equipped, the soldiers gained supremacy over the kobolds with few casualties.
“Buren, Becker, gather the spoils.”
The two soldiers whose names were called out by Sir Midvale began gathering the metal pieces. They were copper or poorly smelt iron of little value, yet sufficient for farming tools.
One of the reasons why the kingdom operated such a punitive force, other than to train new recruits and restore security to the outskirts was to collect war booty, a creative injection to the budget.
“I need to move in at some point…” Weed said to himself.
On the next battle, he took out the Bow of Theo Grande and aimed at a kobold’s neck.
‘Hold your breath, steady your hands and aim at the target.’
Swish
Weed’s high agility and handicraft skill guided his arrows precisely to the targeted kobolds.
When Weed slew three kobolds, a level-up message window popped up. Those kobolds at a level higher than twenty gave enormous EXPs to Weed who was only at level thirteen.
Every kobold shot by his arrow immediately fell because he picked those who were nearly drained of life.
Cleverly, Weed sniped at easy game from behind while the soldiers were risking their lives in the front line.
It was a selfish and secure tactic. An arsonist torching a house is more of a saint than the neighbor plundering jewelry and china from the burning house, isn’t he?
What Weed was doing was very wicked, taking full advantage of brothers-in-arms bleeding and sweating hard to fight the monsters. A good man could not create such exploitation.
On the other hand, Weed was concerned that this tactic could backfire once the soldiers began to notice it and criticize him. Imagine how duped they would feel if a kobold short of a final strike dropped dead because of an arrow from out of nowhere.
Weed only shot kobolds who were running away in a desperate attempt to survive, or when a soldier was helplessly surrounded by two or three kobolds.
Each time a kobold was taken down, Weed smiled gleefully. While the other soldiers were fighting hard in the battles, all he needed to do was to shoot arrows blindly from a safe place. What else was easier than that?
His level was skyrocketing as fast as the stock price of Google. Weed’s scheme to buy the bow right before the quest paid off.
On the way deeper into the lair, they found a wide, open place. Sir Midvale and his men circled around it, slaying kobolds as they were detected, and then returned to the place.
“Take a rest and prepare lunch,” Sir Midvale ordered.
“Yes, sir.” Buren and Becker rustled to take out large pots and light a fire.
As the youngest in the party, they were made to do chores. Weed walked to them and picked up a knife.
“I’ll help you,”
Weed said, smiling sheepishly.
“Oh, no need,”
Becker said.
“Well, I like to cook. I am still an amateur, but wouldn’t it be nice if I serve you brave warriors who are devoting your swords and shields for Rosenheim?”
“It is very kind of you, Weed-nim.”
Weed spontaneously won favor among the soldiers. A man who volunteers to do manual labor on a journey is always highly welcomed. For one thing, Becker and Buren’s attitude toward Weed changed. They couldn’t help but like he who picks up the knife and slices beef.
Of course, he had his own agenda, and it had nothing to do with universal benevolence or whatever. Improve his Cooking skill.
Weed sliced and threw beef in the pot, added vegetables and flavors to make a stew. The ingredients that were needed to serve 32 men were quite a lot. Weed was aware that cooking plenty of food was the short cut to improve his cooking skill as fast as possible.
|
Level Up: Cooking Skill [2] Enhances the taste of meals. |
|
Level Up: Handicraft Skill [7] Enhances your craft skills in every field |
Two message windows emerged almost together. Weed’s cooking skill rose while the Handicraft skill that had needed a few experience points for a level up ascended to seven. Two birds with one stone, indeed.
Weed tasted a spoonful of the stew—the privilege of being a chef.
“Excellent.”
Comparing this stew to cheap rye bread that said in any grocery store was an insult. It wasn’t as good as the pork barbecue that he had eaten the other day, but satisfying for his first attempt at catering thanks to his high handicraft skill that compensated the low Cooking skill.
“Everyone! Lunch is ready! Please help yourself.”
The soldiers who felt hungry because of the relentless battles were served a bowl of stew each, which they ate greedily.
“Oh, it’s delicious.”
“I can’t believe a meal could taste so good outdoors.”
“Somehow, I think he’s a better cook than my wife.”
They all gave the thumbs up to Weed. Their reaction told him that they wanted him to keep on cooking for them.
He filled empty bowls with beef stew continuously when asked, and in doing so, his stomach, too.
The soldiers emptied the pot, and when the lunch break was over, Sir Midvale came over to Weed. He asked cordially,
“Weed-nim, would you care to keep serving my men?”
Apparently, even a brave knight valued good cooking. Though, it was more likely that as a revered noble, he was too accustomed to fine meals that he could accept nothing less.
“Yes, sir. I will take care of meals.”
And so, Weed was named the official chef for the punitive force.
He found no reason to decline Sir Midvale’s request, as he could upgrade the cooking skill by preparing thirty-two servings of stew three times a day. Furthermore, he wasn’t confined to the field of cooking.
“Weapons and armors, I can fix them! Bring me anything damaged or destroyed if you have them.”
“Really?”
“Can you really repair my sword?”
“My buckler’s half damaged, low in durability…”
“Just show me what you’ve got. Repair!”
Weed used the repair skill to repair weapons and gear that some soldiers brought to him. It would cost a fortune to have a blacksmith repair damaged equipment back in town. If they were left with low durability, they could suddenly break in the middle of a battle.
“Thank you, Weed-nim!”
Weed was hailed by the troops. He could upgrade his handicraft and repair skills, and earned trust from soldiers as a bonus.
Sir Midvale, who had been skeptical of his friend’s recommendation to bring Weed along on the mission, was now more than satisfied with his role.
“You’re the man, Weed-nim!”
“Not at all, sir.”
Weed blended in with the rest of the troops.
Who knows what inconveniences they would have to suffer without him. They would have had to return to a nearby village from time to time when they needed to have broken or edge-nicked weapons fixed, and the meals would have revolted their stomachs.
Rarely obtained magical items would have needed identification scrolls, which cost several gold coins for each. Instead, Weed could identify them right on the spot with his identification skill.
For the soldiers, it would be torture to go back to the tasteless gruel that Buren and Becker used to claim was beef stew, especially after they enjoyed Weed’s version.
“We’re not cooks in the first place!” Buren and Becker cried in unison.
In this way, the soldiers and Weed formed an unimaginable relationship.
Swish
Whenever an arrow flew from Weed, a kobold turned grey.
The kobolds are considered relatively weaker monsters. They know how to use tools, but the class of their tools is crude, as though made by children. They basically rely on numbers in battle.
“Kiyoyo!” A platoon of nine kobolds charged at once.
‘Come on! My precious EXP points!’
A big grin forming on his face, Weed greeted the kobolds with silent cheers. He shot arrows arbitrarily, collecting easy EXPs. Defense was taken care of by the soldiers, anyway. All he needed to do was shoot as many arrows as possible.
|
You have leveled up. |
|
You have leveled up. |
|
New Skill: You have learned Archery |
This was level-up madness.
Weed had also learned archery, a skill that was commonly exclusive to the archer class. It was hardly surprising, considering that he had done nothing but shoot arrows as he never swung a sword, even once, in the battles.
Nevertheless, the soldiers were not jealous of him in the least. After the battles, Weed was the busiest one there. He cooked meals, repaired weapons and gear and tended the wounded.
Sir Midvale had a few healing potions for emergencies, but the soldiers in the punitive force could not afford such costly medicines. Weed rubbed herbs and rolled gauze on wounds with his handicraft skill.
|
Skill: You learned Bandage Skill. Enables you to stop bleeding. |
The maximum number of skills that a user can learn when his class is undecided is ten.
Weed’s bandage skill, affected by the high handicraft skill, had impressive effects. As he was busy caring for thirty patients every day, the skill upgraded fiercely.
The troops roamed on the first and second floor, slaying kobolds, for a week.
Users were occasionally spotted watching Weed with envious eyes as he was privileged to join a NPC punitive force and hunt monsters alongside them.
The week of slaughtering kobolds upgraded his level to twenty-six. The repair skill hit level three, and the cooking skill, now level four, earned him a special option to increase 50 HP for those who were served with his meals until the satisfaction factor went down.
Still, he had a headache.
“Quest Information Window.”
|
Search and Destroy Operation in the Lair of the Litvart [II] There are a hundred monsters inhabiting the Lair of Litvart. Kill each and every one of them at least once, and prove yourself worthy of the honorable class. The completion of this quest will open a right path for your destiny. Difficulty Level: Unknown |
Regarding the quest that Counselor Rodriguez had, the number of monster that needed to be kill has not decreased at all though Weed had already knocked down hundreds of kobolds.
After a week of warming up on the kobolds, the troops headed to the third floor of the lair—the goblins’ territory.
While hunting kobolds had been originally intended to give the new recruits firsthand combat experience, confronting goblins posed a grave threat to their life.
The level of the kobolds was in the twenties. The kobold rascals are level twenty-three, and the relatively stronger kobold warriors twenty-eight, but untitled kobolds were at level twenty.
On the other hand, the goblins are level fifty or above. Their weapons and gear surpass what kobolds are equipped with in attack power and defense. The combat strength of the goblins is five to six times that of the kobolds.
“Watch out now. When you find yourself in danger, retreat immediately.”
“Yes, Commander!”
The solders could not hide their excitement and tension. Their levels ranged from twenty-three to twenty-five from hunting kobolds, but their confidence ebbed at the thought of facing an unknown enemy whose level was generally twice theirs. The only relief was that goblins gathered in lesser numbers than kobolds.
“Whew.”
Weed let out an exasperated breath. His stomach curdled at the thought that if the troops fought goblins at that moment, they would surely suffer inevitable casualties.
‘One third? Or perhaps more? I hope we won’t get annihilated.’
Had Weed been in charge of the troops, he would have taken time to have his men build more experience and level up higher before he led them to the threshold of the goblins, not to mention that he would have taught them how to fight goblins efficiently.
But the command of the punitive force primarily belonged to Sir Midvale. Weed was left with two options.  The second option, which would penalize him tremendously, was out of the question.
In fact, the reason Weed was so concerned about the welfare of the soldiers was more of a practical need that he didn’t want to see them die in vain when he worked so hard to build a friendship with them.
“They are coming. Get ready!—” Even before Sir Midvale finished his words, a few goblins dashed out of a cave.
“Kigggg!”
“Human, human!”
“They die!”
There were five goblins. The total number of soldiers outnumbered them 6:1. Weed planned to shoot an arrow at the goblins to take the initiative and to seek another chance afterward—undoubtedly, a goblin yielded a tremendous amount of EXPs, and he was dying to get one.
However, the soldiers were frozen. They stood motionless as if nailed to the ground where they were standing. And fighting spirit radiated from the goblins! The soldiers cowered at the sight of an enemy who was level fifty. Their swords dropped downward, the bucklers trembled unmistakably.
‘Idiots…’ Weed clicked his tongue.
The goblins were not easy to defeat even if the soldiers stood up to fight fearlessly, and now they were already frozen before the battle began. This would lead to a calamity.
Weed shot a glance at Sir Midvale, who was standing beside him. Obviously, the knight wasn’t in the mood to motivate his men.
‘The weak deserve to die.’
The code of chivalry developed in Rosenheim kingdom was cold-blooded. Weed stepped forward. He flung his bow on his back and held the iron sword.
‘I have faith in friendship I’ve worked so hard to build,’ he said to himself.
Then, he did something that was unimaginable to the other soldiers who remembered what he had done in the previous battles. Weed shouted a war cry and charged toward the goblins!
“Yatz!”
Sniggers
Weed’s sword was deflected so easily, instilling a sense of futility in him.
He could make up for a gap between his level and the goblins’ with his inflated stats, but the shorter reach of his sword was critical. The sword wasn’t effective on the goblins that were armed with longer spears.
‘I’m not wearing any defensive gear. If they hit me, I’m dead.’
The goblins blocked Weed’s sword, and almost at the same time, they thrust their spears toward him. He crouched to dodge them. It needed a combination of his amazing reflexes and quick wits to save his life.
He had no intention of fighting the goblins seriously, so his subsequent attacks were half-hearted.
“Die, human!”
“Your sword sucks!”
With five spears, the goblins attacked at random places that were directed by raw instinct.
As long as Weed didn’t get close within the reach of his sword, he was free of the risk of being skewered by their spears.
Still, he pretended to be in peril, dodging the spears by inches. To the eyes of the soldiers, the scene looked like a hopeless struggle of the weak.
Even though it had been long since Weed’s level transcended theirs, their view of his role was fixed on a handy man working manual labor, such as repairs, cooking and first aid. That Weed was fighting the goblins! The eyes of the soldiers began to flicker with confidence.
After a couple more exchanges, Weed retreated a few steps and roared in a thunder-like voice,
“Look at them! These goblins are weaker than they appear! Look at us! We outnumber them! You are not alone; we have each other! Our comrades shoulder to shoulder are watching our backs!”
“Hoo-hah!” The soldiers regained their morale at once.
“It’s a shame on us if we hide behind Weed’s back like mice!”
“Get up—fight!” They charged directly at the goblins.
Weed quickly sensed a forthcoming melee and pulled himself from the battle.
“These bastards are only using spears. If we fight within the reach of spears, it will only cause us more damage. Use your shields. Hold yours bucklers up, marched forward, narrow the gap in between, and prevent them from thrusting their spears freely.”
“Aye!”
“I will follow your command!”
Weed gave timely advice in a cordial manner.
Since friendship between them hit maximum, his command was directly taken on board by the soldiers.
They pushed back the goblins by force. Two thirds of them held their bucklers at the front, the rest grabbed the swords.
As the first two lines charged behind the bucklers, the spears that were thrust by the goblins bounced off, astonishing the brainless enemy. Once the gap was narrowed, the sword line began to swing their swords.
|
Charisma has risen by 3 points (+3 CHR) |
For Weed, who had been resting idly, had his charisma increased by three points. The charisma stat acts over NPC troops, and makes it easier to tame pets or hire mercenaries.
As the soldiers who were motivated by Weed’s speech got into action, his leadership was recognized.
Slash
The goblins, in spite of their much higher level, could not defeat the troops, who outnumbered them six-fold.
Their coordinated offense turned one goblin after another into a gray flash.
These Roman legion tactics would have been ineffective when it comes to a battle between armies of equal number of soldiers, but an army of thirty soldiers with bucklers on, charging from four directions, devastated the goblins, which were armed with long spears.
Occasional arrows shot by Weed after he sheltered behind the troops distracted the goblins further.
Five goblins! ‘One of them is mine!’
Weed observed the battle scene, and when a goblin was near death, he shot an arrow precisely at the goblin’s neck.
Since Weed reached level twenty-six, kobolds had not yielded as much EXPs as before. It was still a lot whichever way you looked at it, but too low for Weed.
A goblin belonged to a different dimension than a kobold. When Weed had killed the goblin, it alone filled thirty-seven percent that remained for the next level, at twenty-seven, and took extra ten percent for change.
‘At level fifty, goblins give much better EXP than kobolds.’
 Only God knows what he would have done if the soldiers were not around him. It would be difficult to find a hunting ground better than this.
“We won!”
The soldiers exclaimed in triumph, throwing swords in the air. They were bolstered in confidence that they had successfully defeated the first goblins.
“Goblins are no match for us.”
“No, we won easily because we followed Weed’s command.”
“He has the gift of a leader.”
“He’s excellent in measuring the enemy’s strength.”
“Under his command, our chances of survival will be high.”
When the battle was over, the soldiers complimented Weed, patting his back.
The goddess of fortune was smiling on him! Weed, however, drifted his gaze to Sir Midvale cautiously.
If the knight was offended that his command was violated by a mere foreigner, he had every right to execute Weed without trial, though Weed assured himself that his friendship with the knight would prevent the worst in that case.
Sir Midvale looked at the corpse of a goblin, deep in thought for a moment, and then said to Weed,
“You are a good soldier, Weed-nim. I can see great talent in you. How about taking the path of royal guard?”
“A royal guard?”
“You will become an officer in the honorable army of Rosenheim kingdom. Your starting position will be a denarion.”
Ting
|
You have received a job offer! |
|
If you accept it, you will take a military position of Denarion in the Rosenheim army. You will command ten foot soldiers. You are entitled to receive regular training, and a monthly income of fifty silvers. Will you accept this job offer? |
Upon the completion of the regular training, a few basic sword techniques and a quantity of military equipment such as swords and shields are given. Certainly, they are not the sharpest tools in town—an iron sword, or similar, and heavy armor with only defense options.
Weed shook his head because, according to his blueprint, it was too early to settle down in a specific career.
“I am honored you have such a high opinion of me, sir. But I cannot take it. A royal guard is undoubtedly what I aspire to be, but I want to devote myself to wandering freely to help the poor and the weak, and destroy evil monsters for the time being. A wanderer’s blood flows in me, Sir Midvale.”
“Well, so be it. If you ever change your mind, let me know. For now, take command of my men.”
“Can I really do that?”
“It is my duty, but it seems my men follow you, and learn a lot from you. I will watch from behind how far your leadership can lead them.”
Sir Midvale transferred the command of the punitive force to Weed.
For now, the soldiers were obliged to obey him at least in this lair. Of course, he did not expect loyalty that could compel them to jump into a pit of flames from a single word.
Weed’s charisma was too low, so he counted on his friendship with the soldiers. Still, he was thrilled at his new assignment.
‘Sweet! I’ll make the best out of this situation,’ he said to himself.
Weed swiftly packed the bow, took out the sword and held it up. It was a demonstration of his newly-acquired position. It would have been less impressive to hold the bow, reminding his troops of his past behavior in battles that could not strike them as honorable.
“Listen, soldiers! My name is Weed, and as of now, I take over the command of you. I ask you to follow my orders dutifully.”
“Yes, Commander!”
“My foremost objective is to defeat the lair without any casualties. Do your best, and not a single drop of blood will shed in vain.”
“Yes, Commander!”
Since Weed took over the command from Sir Midvale, the attitude of his troops toward him had changed drastically.
“Buren, Becker.”
“Yes, Commander!”
“You are scouts now. Stay ahead of the army, and look out for enemy in the areas. Even when we are engaged in battle, you must look out for any approaching enemy.”
“Yes, Commander!”
Weed marched his troops with the two scouts leading them. Soon, Buren ran back to him, panting.
“Commander.”
“Speak.”
“Buren reporting, sir! Seven goblins at twelve o’clock. Two female goblins and five goblin raiders.”
Goblin raiders were, according to Weed’s private database, Lv. 58 monsters.
“You did a good job, Buren. Everyone, halt!”
Weed ordered his troops to stay put in an open clearing, and set up a few traps. Then, he went alone to the location where the goblins had been spotted.
As Buren reported, the seven goblins were resting there. Weed took out his bow and shot at the farthest goblin. Before the arrow hit the target, he turned and ran away.
Swish
“Kyah, human!” The goblins looked around, spotted Weed and chased after him in a rush.
Weed knew that, if he was surrounded by the seven goblins, he would not stand any chance. He just prayed his feet would not fail.
Thump As Weed heard the goblins gaining on him from behind, he shivered.
Holding spears, the goblins were running with heavy strides.
‘God, they even sent a chill down my spine. This is what you call an awesome game. No, the coolest job for me,’ he said to himself.
Although in a dangerous spot, Weed’s thoughts were still positive. He was alone, but he would be safe once he reached the place his troops were hiding. Weed ran like his tail was on fire, and arrived at the clearing.
“Commander!”
Buren and Becker were the first faces he saw.
“Get ready for the battle. Goblins are incoming!”
While Weed’s call was echoing through the space, the seven goblins sprang out of the cave. In only a moment, their fate would be decided.
“Kugh?”
 Then they threw burning torches at the goblins.
“These bastards are trapped!”
“Push forward!”
“They have spears. Be careful of their spears! Anyone who is injured must step down, be it severe or not.”
Had Weed foreseen that he would be in charge of the troops, he would have bought more snares and traps. The best idea he could come up with when there were no other tools was to throw torches at the goblins.
Nonetheless, the soldiers were fighting very well. The thirty troops were a big machine driving the goblins into individual segments and destroying them one after the other. They were strengthened by an incalculable variable called morale.
Whether it comes to monsters or NPCs, morale is always a decisive factor in battles. The soldiers believed in their newly appointed leader, Weed. On the other hand, confused by the torches thrown at them, the goblins realized that they had walked into a trap, surrounded by many humans, so they lost their will to fight back.
“Cheating humans attack us!”
“Kieeekk! Run for life!”
“Who do you think will let you get away alive?”
While the soldiers pushed relentlessly towards their enemy, Weed’s eyes flashed.
“Surround them. Block the entrance of the cave!”
“Yes, Commander!”
“Let the wounded retreat and give first aid. The other soldiers with full life—focus on defense. Those who are healed should remain in the waiting position. You will get ready to join the battle when I give you an order.”
Under Weed’s command, the soldiers immobilized the goblins steadily, two of whom were felled by his arrows.
As he had put his life at risk, he justified that he deserved at least two goblins to make ends meet.
The high-level goblins held on for a considerable period in spite of low morale, but when Weed divided his troops into three groups, and ordered them to take turns exhausting the enemy, the monsters ended up as gray flashes.
The goblins left nine silvers, a steel shield and a bronze spear.
When Buren and Becker picked them up as ordered, Weed interfered.
“Everyone, listen! I am proud of your valor. I will divide spoils in a different manner than before.”
“…?”
“I will reward the man most who fights goblins most bravely. On one condition—he should not be severely injured enough to be disabled for the next battle. My priority is to bring you safely back to your loving families.”
“Yes, Commander!”
At Weed’s speech, the eyes of his troops filled with admiration.
|
Charisma has risen by 2 point. (+2 CHR) |
Weed would have swallowed all the items if he could, but he kept himself in checked. If his friendship with the soldiers dropped, his low charisma could not save him from the possibility of a mutiny, or even a hanging.
Sir Midvale’s presence further weighed on him to bury his unreasonable greed. Leading his troops, Weed systematically cleaned out the goblins on the third floor.
One day, however, Sir Midvale said with a grimace,
“Weed-nim, the pace of the mission is slow. I advise you to pick up the pace.”
“I beg your pardon, sir?”
“I borrowed these soldiers from other regiments. I am not allowed to keep them indefinitely. They must finish the quest within a month, and return to their original regiments.”
Weed had never heard of the deadline. It seemed that only the soldiers were bound to it. Still, he didn’t hasten the pace.
Against six or more goblins, he always drew them to the nearest open space by shooting one or two arrows where his troops overwhelmed them. In case of fewer than six goblins, he led them straight to fight with the enemy.
Weed avoided a battle unless the soldiers were fully healed to the last man, and he still made stews and repaired damaged weapons and gear to maintain their condition at their best.
* * *
When the punitive force succeeded in conquering the third floor of the lair, Weed hit level thirty-seven, and his men thirty-four. There it came. Time for the true hunting
“Charge!”
“Keep the formation! Charge!”
At Weed’s command, the soldiers moved like people who had gone berserk, surrendered to madness. To them, the goblins were as nothing.
“Yatz! Yatz!”
“Death on you!  I’ll clean you off the earth.”
The soldiers pushed on with their bucklers ahead. They were as foul-mouthed as ever because Weed had taught them four-letter words from Rodriguez’s dictionary.
They sometimes roared menacingly, and charged under apparently impossible circumstances. Their swords became more dynamic, penetrating openings of the goblins that were armed with spears.
Weed still maintained the same formation for his troops to ultimately rely on their comrades, but they were more reckless and faster. They had slain goblins repeatedly, leaving thousands of corpses behind them.
Adopting Weed’s tactics aggressively, his troops crushed the goblin defense with thoroughly coordinated attacks.
Now it took just the blink of an eye to destroy a platoon of six goblins as an army of thirty veteran soldiers rushed on fiercely and devastated the enemy.
“Battle is won. Let me distribute items based on individual prowess. Hosram and Dale.”
“Yahoo!”
“Any soldier who needs a repair or a rest?”
“No, Commander!”
“None!”
“Then, let’s move on. Scout, report!”
Buren and Becker, in turn, scouted and reported the location and number of the nearest goblins.
“Becker reporting, Commander! Eight goblins have been located a hundred yard away at nine o’clock. One goblin alchemist, six goblin warriors, and one plain goblin.”
“Advance!”
The soldiers ran at a comfortable pace, neither fast nor slow. Galloping, they were recovering from battle fatigue and preparing for the upcoming battle.
“Hu… humans!”
“Enemy, kill them all!”
The goblins began to put up resistance, but it was almost meaningless.
The soldiers, now veterans in combat experience, already dominated the goblins in morale—and Weed’s arrow was a death sentence.
His level in archery rose fast as he was actively engaged in battle, and his arrows were no longer aimed only at dying goblins.
Weed now shot arrows in order to take the initiative, and when goblins were grouping to break through his men’s encircling net, he hindered their movement with warning shots. The main target was, though, any goblin that threatened the life of one of his troops.
 The same logic went for a number of soldiers whose life was saved by Weed at the last second.
His troops hunted goblins in the most efficient and time-saving way. They conquered the fourth floor faster than the third one, and even kept the same pace on the fifth one where they encountered a score of goblins in each battle.
As the soldiers were mature in combat skills, giving them the status of veteran at a high level, they were capable of one-to-one combat with goblins.
Nevertheless, Weed stuck to the old tactics of focusing on defense and outnumbering goblins. Some of his men got cocky and suggested to him that they drop it and, instead, fight goblins fairly on a level playing field.
Weed stood his ground, though.
“Do not consider that filthy goblins deserve fair play! Have you ever heard of a knight asking for a duel with monsters?  We are fighting them in order to restore peace and protect the people of Rosenheim. Keep in mind that if you hesitate to put an end to a goblin because you are trying to be ethical, your comrades will pay the consequences!”
Weed’s charisma controlled his army of thirty men.
One who fought a goblin alone was denied his share of recognition. He was later excused from the next battle. He was at first excited to stay out of danger, but soon realized that he had to sit back and watch his comrades leveling up.
This example taught everyone a lesson, so the troops went as far as stabbing goblins in the back if it became available. They were brainwashed beyond doubt by Weed’s tongue. Infantry Combat Tactics 101.
For less than a month, Weed led the punitive force to sweep over the Lair of Litvart. As a week was still left, they went back down to the third floor, and on the way back to the bottom, rooted out regenerated goblins.
Once a battle began, the soldiers spread in wings, formed an encircling formation and slew their foe within a few breaths. As soon as the battle was over, they advanced to the next one.
Blitz
Not one soldier died.
They finished the Search and Destroy Operation of The Lair of the Litvart quest with the overall levels of the troops reaching fifty-seven, Weed’s sixty-two. Considering that the average level of denarions in the Rosenheim Army was forty, what Weed had accomplished was terrific.
“Good job, Weed-nim. You have done a great service to us.”
Sir Midvale didn’t hide the fact that he marveled at Weed.
“If we had five more men of your courage and leadership, then Rosenheim kingdom wouldn’t ever be harassed by monsters. By the right of a royal knight, I hereby wish to appoint you centurion. Would you accept my proposal, Weed-nim?”
Ting
|
You have received a job offer! |
|
If you accept it, you will take a military position of centurion in the Rosenheim army. You will command one hundred foot soldiers. You are entitled to receive regular training, and a monthly income of three gold. Will you accept his job offer? |
An officer in command of a hundred troops, a centurion is deemed to be a sub-knight who is qualified to embark on an annual trial of promotion to knighthood in the Red Order. If it were other users, they would have accepted it willingly, but Weed wasn’t swayed.
“I’m glad to hear that, Sir Midvale, but this is more than I can accept.”
“Freya forbids it! Tell me if you want additional benefits, Weed-nim. I believe we can find common ground.”
“Your offer is… beyond my dearest wish. But all I want is peace and prosperity in Rosenheim Kingdom. As my heart leads me to travel to many places and help those in need, it seems too early to settle down. If you have another mission to destroy monsters after the autumn harvests, or if Rosenheim is invaded, I will be the first one to run to you and offer my service to command courageous soldiers in the Rosenheim army.”
“Your spirits are well understood, Weed-nim. The door to the Royal Army will be always open to you.”
Sir Midvale withdrew his proposal with a content look.
“Now that we have finished the quest, I am leading them back to the Citadel. Will you join us?”
“I have something to be done here, sir.”
“May I inquire as to its nature?” Sir Midvale looked curious.
For the last four weeks, Weed had made thirty-two servings of stew three times a day. His experienced cooking skill delivered great food on time, and Sir Midvale was one of the beneficiaries who had fallen in love with it, forming a solid friendship with him.
“I must take care of a quest for the sake of Counselor Rodriguez.”
Weed had assumed that the annihilation of the goblins would meet the quest’s requirement, but it was a serious miscalculation on his part.
The numbers of monsters that he was supposed to destroy was still a hundred without any sign of decrease. Anyway, the number of goblins in the lair was hundreds on each floor, at a conservative estimate.
Rodriguez’s quest was to sweep away all the ‘monsters’ in the Lair of Litvart, and the kobolds and goblins were not possibly the target because they greatly outnumbered a hundred.
“I see, Weed-nim. A quest by the Counselor… I understand. I was looking forward to returning to the Citadel with you, but it seems destiny directs us to part our ways here. Instead, I will lend you Arse.”
“Arse? Whose ass?”
“Have you already forgotten the name of the horse you rode here the other day?”
“Don’t tell me…”
Weed’s head suddenly felt thick and heavy. The colt that had kicked him with two rear legs and bit his hand! Now he remembered the colt’s name was Arse.
What a shameful name for a would-be stallion.
“The trip to the Citadel will cost you valuable time without a horse. Arse is at your service.”
“Thank you, but no thank you, sir. I don’t need any horse.”
“I am only returning your favor, Weed-nim. Please take it. Return it to the Royal Stable when you finish your quest.”
“…”
Sir Midvale turned as soon as he delivered what he wanted to say. His attitude implied that there was nothing else to hear, case closed. The knight meant well for Weed’s sake, but he wanted none of it. How in the world could he stand such a wild colt?
Weed absolutely hated this pain in the butt, but he had to accept it, or he would make the royal knight lose face once again.
 You are always welcome.”
“My family owns a restaurant. My wife will serve you a delicious meal, though it’s not as good as yours!”
The soldiers came up to Weed and said farewell.
As high-level veterans, they would probably be promoted upon their return, at least, to denarions while one or two soldiers who score the best could look for a better position.
Weed shook the hand of every soldier who used to be his subordinate. His hand was warm, and its grip held on for a few seconds.
 I must return to my regiment.”
“Commander, I will miss you!”
Weed’s eyes shone darkly with reluctance. What troubles he had gone through to train those soldiers! He was the first to have credit for transforming once new recruits at level twenty into veterans in combat skills. Now Weed felt as though he were being robbed of them by the kingdom.
“Everyone, safe trip!” Weed said.
“Godspeed, Commander.”
“Commander, you must stop by in my place later!”
After reluctant farewells with his former troops, Weed was left alone.


Now that we have loaded the iris dataset into H2O, we can build a Random Forest model. For this purpose, please use the menu option Model > Distributed RF (Beta) or direct link.
The Random Forest method has multiple tuning parameters that can affect the model it will build. For example, you can increase the number of trees, the maximum tree depth or the number of bins.


lookml-tools
LookML Tools
LookML Linter
LookML Grapher
LookML Updater
Developer Notes
Linter Example
Grapher Example
Updater Example
lookml-tools
Docs
»
Index
Index
_
|
A
|
B
|
C
|
D
|
E
|
F
|
G
|
H
|
I
|
L
|
M
|
N
|
O
|
P
|
R
|
S
|
T
|
U
|
V
|
W
|
Y
_
__getattr__() (rule_factory.RuleFactory method)
A
abstract_sql_reader (module)
AbstractRule (class in lkmltools.abstract_rule)
AbstractSqlReader (class in abstract_sql_reader)
all_caps_rule (module)
AllCapsRule (class in all_caps_rule)
B
bq_definitions_provider (module)
BqDefinitionsProvider (class in bq_definitions_provider)
BqWriter (class in lkmltools.bq_writer)
C
COMMENT (file_modifier.FileModifier attribute)
config_for_key() (lkmltools.abstract_rule.AbstractRule method)
count_name_rule (module)
CountNameRule (class in count_name_rule)
create_graph() (lookml_grapher.LookMlGrapher method)
csv_definitions_provider (module)
CsvDefinitionsProvider (class in csv_definitions_provider)
D
data_source_rule (module)
DataSourceRule (class in data_source_rule)
decode_service_account() (lkmltools.google_auth_helper.GoogleAuthHelper method)
definition_provider (module)
DefinitionProvider (class in definition_provider)
definitions_provider_factory (module)
DefinitionsProviderFactory (class in definitions_provider_factory)
DESCRIPTION (lkmltools.util.FieldCategory attribute)
description_rule (module)
DescriptionRule (class in description_rule)
DIMENSION (lkmltools.util.FieldCategory attribute)
DIMENSION_GROUP (lkmltools.util.FieldCategory attribute)
drill_down_rule (module)
DrillDownRule (class in drill_down_rule)
E
encode_service_account() (lkmltools.google_auth_helper.GoogleAuthHelper method)
EXPLORE (lookml_grapher.NodeType attribute)
explores() (lkmltools.lookml.LookML method)
extract_graph_info() (lookml_grapher.LookMlGrapher method)
F
field_rule (module)
FieldCategory (class in lkmltools.util)
FieldRule (class in field_rule)
file_modifier (module)
FileModifier (class in file_modifier)
FILENAME (lkmltools.bq_writer.BqWriter attribute)
filename_viewname_match_rule (module)
FilenameViewnameMatchRule (class in filename_viewname_match_rule)
find_description() (lookml_modifier.LookMlModifier method)
finish_up() (no_orphans_rule.NoOrphansRule method)
G
get_connection() (abstract_sql_reader.AbstractSqlReader method)
(mysql_reader.MySQLReader method)
(postgres_reader.PostgreSQLReader method)
(sqlite_reader.SQLiteReader method)
get_credentials() (abstract_sql_reader.AbstractSqlReader method)
get_definitions() (abstract_sql_reader.AbstractSqlReader method)
(bq_definitions_provider.BqDefinitionsProvider method)
(csv_definitions_provider.CsvDefinitionsProvider method)
(definition_provider.DefinitionProvider method)
GoogleAuthHelper (class in lkmltools.google_auth_helper)
H
handle_description_addition() (file_modifier.FileModifier method)
handle_desription_substitution() (file_modifier.FileModifier method)
has_explores() (lkmltools.lookml.LookML method)
has_key() (lkmltools.abstract_rule.AbstractRule method)
(lkmltools.lookml_field.LookMLField method)
has_views() (lkmltools.lookml.LookML method)
I
initialize_rules() (lookml_linter.LookMlLinter method)
instance (rule_factory.RuleFactory attribute)
instantiate() (definitions_provider_factory.DefinitionsProviderFactory static method)
is_dimension() (lkmltools.lookml_field.LookMLField method)
is_dimension_group() (lkmltools.lookml_field.LookMLField method)
is_header() (file_modifier.FileModifier method)
is_measure() (lkmltools.lookml_field.LookMLField method)
L
lexicon_rule (module)
LexiconRule (class in lexicon_rule)
lkmltools (module)
lkmltools.abstract_rule (module)
lkmltools.bq_writer (module)
lkmltools.google_auth_helper (module)
lkmltools.lookml (module)
lkmltools.lookml_field (module)
lkmltools.simple_bq_writer (module)
lkmltools.util (module)
LookML (class in lkmltools.lookml)
lookml_grapher (module)
lookml_linter (module)
lookml_modifier (module)
LookMLField (class in lkmltools.lookml_field)
LookMlGrapher (class in lookml_grapher)
LookMlLinter (class in lookml_linter)
LookMlModifier (class in lookml_modifier)
M
MEASURE (lkmltools.util.FieldCategory attribute)
MODEL (lookml_grapher.NodeType attribute)
modify() (file_modifier.FileModifier method)
(lookml_modifier.LookMlModifier method)
mysql_reader (module)
MySQLReader (class in mysql_reader)
N
name() (field_rule.FieldRule method)
(rule.Rule method)
no_orphans_rule (module)
NodeType (class in lookml_grapher)
NoOrphansRule (class in no_orphans_rule)
O
one_view_per_file_rule (module)
OneViewPerFileRule (class in one_view_per_file_rule)
ORPHAN (lookml_grapher.NodeType attribute)
orphans() (lookml_grapher.LookMlGrapher method)
other_rules_to_run() (lookml_linter.LookMlLinter method)
P
plot_graph() (lookml_grapher.LookMlGrapher method)
postgres_reader (module)
PostgreSQLReader (class in postgres_reader)
process_explores() (lookml_grapher.LookMlGrapher method)
process_lookml() (lookml_grapher.LookMlGrapher method)
(no_orphans_rule.NoOrphansRule method)
R
Rule (class in rule)
rule (module)
rule_factory (module)
RuleFactory (class in rule_factory)
run() (all_caps_rule.AllCapsRule method)
(count_name_rule.CountNameRule method)
(data_source_rule.DataSourceRule method)
(description_rule.DescriptionRule method)
(drill_down_rule.DrillDownRule method)
(field_rule.FieldRule method)
(filename_viewname_match_rule.FilenameViewnameMatchRule method)
(lexicon_rule.LexiconRule method)
(lookml_grapher.LookMlGrapher method)
(lookml_linter.LookMlLinter method)
(no_orphans_rule.NoOrphansRule method)
(one_view_per_file_rule.OneViewPerFileRule method)
(rule.Rule method)
(yesno_name_rule.YesNoNameRule method)
run_field_rules() (lookml_linter.LookMlLinter method)
run_file_rules() (lookml_linter.LookMlLinter method)
S
SimpleBqWriter (class in lkmltools.simple_bq_writer)
sqlite_reader (module)
SQLiteReader (class in sqlite_reader)
T
tag_orphans() (lookml_grapher.LookMlGrapher method)
U
upload() (lkmltools.bq_writer.BqWriter method)
(lkmltools.simple_bq_writer.SimpleBqWriter method)
upload_to_bq() (lkmltools.bq_writer.BqWriter method)
V
VIEW (lookml_grapher.NodeType attribute)
views() (lkmltools.lookml.LookML method)
W
write() (file_modifier.FileModifier method)
write_decoded_sa_json_to_file() (lkmltools.google_auth_helper.GoogleAuthHelper method)
write_field_csv() (lookml_linter.LookMlLinter method)
write_file_csv() (lookml_linter.LookMlLinter method)
Y
yesno_name_rule (module)
YesNoNameRule (class in yesno_name_rule)


Mardaani 2: Kota Residents Protest Against Rani Mukerji Starrerr For Showing The City In A Bad Light
by Saheli MaityKota Residents have started protesting against Rani Mukerji’s Mardaani 2 for throwing Kota under the bad light
Just a few days ago, Rani Mukerji released the first trailer of the much-awaited Mardaani 2 which was not only hard-hitting but completely shook us with her stellar performance and intense content. As soon as the trailer hit the internet, people started pouring in praises for Rani and the trailer as well. However, a certain section of people is not so impressed by the trailer that made them protest against the film. According to a Pinkvilla report, Kota Residents have started protesting against Rani Mukerji’s Mardaani 2 for throwing Kota under the bad light.
Knowing the story is about hunting the rapists and murderers in the Kota city and the story is inspired by true events, this added more fuel to the fire as Kota residents felt that it is hampering the city's reputation. With this, the protestors have asked the makers to remove 'Kota' word from the movie. This doesn’t end here, the report further stated that the residents also met Lok Sabha Speaker and the MP from Kota, Om Birla to discuss this matter.
When the matter came to Birla, he released a statement and stated “I will definitely discuss the issue with the concerned people. Maligning a city's name through cinema is not acceptable. The incident on which the film is based is also fictional. So, for a fictional story taking the name of a city is not right.” As quoted by the portal.
For now, we have to see how the makers will handle this situation. Meanwhile, Rani will be reprising her role as Shivani Shivaji Roy – the badass cop who goes out of her way to hunt down the rapist and the murderer who has created a havoc in the city. The film is scheduled to hit the big screens on December 13, 3019.
Image source: YouTube/ Yash Raj Films


I’m a markering communications designer based in Vancouver.
I studied marketing communications design at Kwantlen Polytechnic University’s Wilson School of Design, which I earned Bachelors of Design.
I want to hear from you, let's get in touch.
604.828.4879
hi@jerwong.ca


= untar_data(URLs.PETS)
path = get_image_files(path/"images")
files
def label_func(f): return f[0].isupper()
= ImageDataLoaders.from_name_func(path, files, label_func, item_tfms=Resize(64)) dls
KnowledgeDistillationCallback
We’ll illustrate how to use Knowledge Distillation to distill the knowledge of a Resnet34 (the teacher), to a Resnet18 (the student)
Let’s us grab some data
The first step is then to train the teacher model. We’ll start from a pretrained model, ensuring to get good results on our dataset.
= cnn_learner(dls, resnet34, metrics=accuracy)
teacher
teacher.unfreeze()10, 1e-3) teacher.fit_one_cycle(
/home/HubensN/miniconda3/envs/deep/lib/python3.8/site-packages/fastai/vision/learner.py:265: UserWarning: `cnn_learner` has been renamed to `vision_learner` -- please update your code
warn("`cnn_learner` has been renamed to `vision_learner` -- please update your code")
| epoch | train_loss | valid_loss | accuracy | time |
|---|---|---|---|---|
| 0 | 0.721918 | 0.643276 | 0.841678 | 00:09 |
| 1 | 0.484658 | 0.604135 | 0.828146 | 00:08 |
| 2 | 0.401239 | 1.103915 | 0.815291 | 00:08 |
| 3 | 0.394400 | 0.318618 | 0.860622 | 00:08 |
| 4 | 0.276733 | 0.276223 | 0.878890 | 00:08 |
| 5 | 0.187687 | 0.515996 | 0.851150 | 00:08 |
| 6 | 0.127520 | 0.230542 | 0.911367 | 00:08 |
| 7 | 0.071110 | 0.233229 | 0.924222 | 00:08 |
| 8 | 0.044975 | 0.199706 | 0.931664 | 00:08 |
| 9 | 0.031355 | 0.177644 | 0.939784 | 00:08 |
Without KD
We’ll now train a Resnet18 from scratch, and without any help from the teacher model, to get that as a baseline
= Learner(dls, resnet18(num_classes=2), metrics=accuracy)
student 10, 1e-3) student.fit_one_cycle(
| epoch | train_loss | valid_loss | accuracy | time |
|---|---|---|---|---|
| 0 | 0.608119 | 0.594279 | 0.679296 | 00:07 |
| 1 | 0.577984 | 0.637746 | 0.690798 | 00:07 |
| 2 | 0.543163 | 0.532345 | 0.732070 | 00:07 |
| 3 | 0.508363 | 0.468151 | 0.772666 | 00:07 |
| 4 | 0.464459 | 0.442890 | 0.780108 | 00:07 |
| 5 | 0.405926 | 0.410481 | 0.816644 | 00:07 |
| 6 | 0.355392 | 0.429471 | 0.821380 | 00:07 |
| 7 | 0.278941 | 0.365873 | 0.838972 | 00:07 |
| 8 | 0.218126 | 0.366222 | 0.855886 | 00:07 |
| 9 | 0.165694 | 0.367872 | 0.857239 | 00:07 |
With KD
And now we train the same model, but with the help of the teacher. The chosen loss is a combination of the regular classification loss (Cross-Entropy) and a loss pushing the student to learn from the teacher’s predictions.
= Learner(dls, resnet18(num_classes=2), metrics=accuracy)
student = KnowledgeDistillationCallback(teacher.model, SoftTarget)
kd 10, 1e-3, cbs=kd) student.fit_one_cycle(
| epoch | train_loss | valid_loss | accuracy | time |
|---|---|---|---|---|
| 0 | 2.335700 | 1.860445 | 0.692828 | 00:09 |
| 1 | 2.241398 | 1.773348 | 0.727334 | 00:09 |
| 2 | 2.055018 | 1.710084 | 0.723951 | 00:09 |
| 3 | 1.851421 | 1.632465 | 0.761840 | 00:09 |
| 4 | 1.620585 | 1.675239 | 0.755751 | 00:09 |
| 5 | 1.393245 | 1.410955 | 0.774019 | 00:09 |
| 6 | 1.155736 | 1.087842 | 0.826116 | 00:09 |
| 7 | 0.908853 | 0.983743 | 0.838972 | 00:09 |
| 8 | 0.696537 | 0.852848 | 0.857916 | 00:09 |
| 9 | 0.564625 | 0.854901 | 0.857239 | 00:09 |
When helped, the student model performs better !
There exist more complicated KD losses, such as the one coming from Paying Attention to Attention
, where the student tries to replicate the same attention maps of the teacher at intermediate layers.
Using such a loss requires to be able to specify from which layer we want to replicate those attention maps. To do so, we have to specify them from their string
name, which can be obtained with the get_model_layers
function.
For example, we set the loss to be applied after each Residual block of our models:
= Learner(dls, resnet18(num_classes=2), metrics=accuracy)
student = KnowledgeDistillationCallback(teacher.model, Attention, ['layer1', 'layer2', 'layer3', 'layer4'], ['0.4', '0.5', '0.6', '0.7'], weight=0.9)
kd 10, 1e-3, cbs=kd) student.fit_one_cycle(
| epoch | train_loss | valid_loss | accuracy | time |
|---|---|---|---|---|
| 0 | 0.088313 | 0.088667 | 0.679973 | 00:09 |
| 1 | 0.079737 | 0.077369 | 0.719892 | 00:09 |
| 2 | 0.070380 | 0.065641 | 0.765223 | 00:09 |
| 3 | 0.061056 | 0.061554 | 0.792963 | 00:09 |
| 4 | 0.055300 | 0.058515 | 0.790934 | 00:09 |
| 5 | 0.048522 | 0.052656 | 0.830853 | 00:09 |
| 6 | 0.040360 | 0.047567 | 0.847767 | 00:09 |
| 7 | 0.032288 | 0.046334 | 0.855210 | 00:09 |
| 8 | 0.023988 | 0.045383 | 0.868065 | 00:09 |
| 9 | 0.020456 | 0.044370 | 0.866712 | 00:09 |


--- layout: main title: HTML | Lessons ---
You should be redirected. If you're not, either:
It may take some time for your browser to redirect.


Francis Szakacs
Service Designer based in Toronto.
Ten years in the intersection of service innovation, digital design and new technology.
I make startups grow 🚀 and dinosaurs dance 🦖.
{% include project-list.html category=site.categories.Strategic title="Service innovation" subtitle="Service Design / Innovation Consulting" hash="strategic" mainpage=true %}
{% include project-list.html category=site.categories.Digital title="DIGITAL DESIGN" subtitle="UX Design / Product Design / Web Development" hash="digital" mainpage=true %}
{% include project-list.html category=site.categories.Newtech title="NEWTECH" subtitle="Startups / Product Management" hash="newtech" mainpage=true %}


{content}
You are receiving this email because you are registered on
hackthis.co.uk
.
Unsubscribe
|
Update preferences


Comments
-
Greg Hurrell
So it's supposed to be passing in
-std=c99
but some reason isn't.Can you have a look in your
~/.vim/ruby/command-t
directory and confirm that thedepend
file is actually there, and that it contains this line:CFLAGS += -std=c99 -Wall -Wextra -Wno-unused-parameter
Can you also paste in the generated
Makefile
? The-std=c99
flag should appear in it. -
dlazar
Hi,
There is no depend file in the command-t directory. The file list is:
controller.rb ext.c extconf.rb ext.h ext.o ext.so files.txt finder.rb Makefile match.c matcher.c matcher.h matcher.o match.h match.o match_window.rb prompt.rb ruby_compat.h scanner.rb settings.rb stub.rb
And the Makefile is: http://gist.github.com/500829
I tried adding the flag in myself and tried make. It returns a piddly subset of what I think should be the results of the Makefile.
gcc -I. -I/usr/lib/ruby/1.8/x86_64-linux -I/usr/lib/ruby/1.8/x86_64-linux -I. -DHAVE_RUBY_H -fPIC -fno-strict-aliasing -g -g -O2 -fPIC -std=c99 -c matcher.c gcc -I. -I/usr/lib/ruby/1.8/x86_64-linux -I/usr/lib/ruby/1.8/x86_64-linux -I. -DHAVE_RUBY_H -fPIC -fno-strict-aliasing -g -g -O2 -fPIC -std=c99 -c match.c gcc -I. -I/usr/lib/ruby/1.8/x86_64-linux -I/usr/lib/ruby/1.8/x86_64-linux -I. -DHAVE_RUBY_H -fPIC -fno-strict-aliasing -g -g -O2 -fPIC -std=c99 -c ext.c gcc -shared -o ext.so matcher.o match.o ext.o -L. -L/usr/lib -L. -Wl,-Bsymbolic-functions -rdynamic -Wl,-export-dynamic -lruby1.8 -lpthread -lrt -ldl -lcrypt -lm -lc
That was all that was reported. I think when I did this step on OSX, it made a lot more code. Maybe I am mistaken.. but anyway, the result is, still no working command-t.
Thanks for listening!!
-
Greg Hurrell
Sounds to me like the vimball didn't extract properly, as the
depend
file is definitely supposed to be there. Can you try and extract it again? ie. open the vimball again:$ vim command-t-0.8b.vba
And from inside Vim do:
:so %
Once it is extracted you should have at least all of these files in your
~/.vim/ruby/command-t/
directory, and possible some other files too (things like*.o
andMakefile
andmkmf.log
files from your first attempt):controller.rb depend ext.c ext.h extconf.rb finder.rb match.c match.h match_window.rb matcher.c matcher.h prompt.rb ruby_compat.h scanner.rb settings.rb stub.rb vim/screen.rb vim/window.rb vim.rb
And you can proceed to do
ruby extconf.rb && make
.If the build seems to be correct but it doesn't work in Vim, let me know what error message is shown and we can try to sort it out.
-
Greg Hurrell
Summary changed:
- From: compiler error
- To: error: 'for' loop initial declarations are only allowed in C99 mode
-
dlazar
That was it. vimball extraction #2 had all the goods. Everything worked fine second time around. Closed issue. Thanks
-
Greg Hurrell
Status changed:
- From: new
- To: closed
Add a comment
Comments are now closed for this issue.


Max number of recipients per local message delivery
local_destination_recipient_limit
This parameter limits the number of recipients per local message delivery. The
default limit is taken from the
default_destination_recipient_limit parameter.
However, the queue manager by design limits the number of recipients
per local delivery request to exactly 1, so this parameter has no
effect.


Format String Vulnerabilities
Contents
Format string attacks
- The goal of a format string exploit is to take control of the execution of a program by overwriting data. It is dependent on programming mistakes or shortcuts made when using format functions such as print().
- If the software being tested is written in C, C++, or Perl. even in part. there is a possibility that it may use one or more format functions.
- The root cause of this vulnerability is that these languages allow functions to accept any number of arguments by “popping“ as many arguments as they wish off the stack and trusting the early arguments to show how many additional arguments are to be popped and what data types they are. If this is combined with unfiltered user input as the format string. The vulnerability is created.
- The following are the basic ANSI C functions that may be vulnerable to format string attacks:
- fprintf — prints to a file stream
- printf — prints to the stdout stream
- sprintf — prints into a string
- snprintf — prints into a string with link checking
- vfprintf — print to a file stream from a va_arg structure
- vprintf — prints to a stdout stream from a va_arg structure
- vsprintf — prints to a string from a va_arg structure
- vsnprintf — prints to a string with length checking from a va_arg structure.
- The format string itself contains the format parameters, similar to how inline formatting is done in HTML. The format parameters for printf()are:
- %c — Unicode represented by an integer - passed as a value
- %d — decimal (int) - passed as a value
- %e — scientific representation of a floating pount number – passed as a value
- %f — signed decimal string of the form xx.yyy
- %i — signed decimal string - passed as a value
- %u — unsigned decimal (unsigned int) - passed as a value
- %n — number of bytes written so far (int)
- %o — unsigned octal string - passed as a value
- %p — formats a pointer to an address - passed as a reference
- %s — string ((const) (unsigned) char) – passed as a reference
- %x — hexadecimal (unsigned int) - passed as a value
- %%— used to print the escape character “%”
- When a string is passed to a format function, the function evaluates the format string one character at a time and if the character is not is percentage sign (%). it is copied to the output. If the percentage sign is encountered, the next character specifies the type of parameter that requires evaluation.
- The following Figure illustrates the stack when a format string has been pushed onto it.
- For every an parameter found in the string, the function expects an additional variable to be passed in. So if four format parameters exist in a format string, there should be a total of five arguments passed to function — the format string itself and one additional argument for each of the parameters. The problems occur when developers use a format string function without explicitly stating that the input must be treated as a string.
- Example:
- Correct: printf(”%s“, inputString);
- As opposed to: Incorrect: printf (inputString);
- If the prior two uses of printf() are used where inputString = “Testing%s”: Correct: Testing%s
- Incorrect: Testing?? (where the ?? is whatever string is being pointed to by whatever memory address was at the top of the stack).
- For a simple string that contains no format parameters. this will result in the same output. But if a string is provided to the function that includes One or more of these format parameters embedded in it, the function will treat the string (that the user wanted to treat as merely a string) as a format string.
- The danger in this is that some of the format string functions take a pointer to memory — specifically %s (string) and %n (number of bytes written so far).
- Example:
- %s expects a memory address and then will print the data at that address until a null byte terminator is encountered to signal the
end of the string.
- %n expects a memory address and will write the number of bytes written so far into memory at that address.
- So if an attacker can create an input string that is passed to a vulnerable implementation of a format string function, the individual can do anything from crashing processes or systems, to showing the contents of pans of the stack, to writing your data to the stack.
Anatomy of an Exploit
- Most exploits of format string vulnerabilities start with knowing that a format string vulnerability exists. This can be discovered in multiple ways. including personal experimentation and seeing it posted on one of the many boards frequented by hackers.
- It's also helpful to know that the language the software is written in is one that has a risk for this vulnerability to exist (C, C++, and Perl, in this case).
- Once the vulnerability is known, the attacker needs to carefully craft a string to exploit the format string vulnerability.
- The exact string or strings will depend on what the attacker wishes to accomplish.
- Once the attackers determine what they want to accomplish, they can craft one or more strings to exploit the vulnerability.
- Now they can combine this exploit with other code to create malicious software to distribute or install.
Real-World Example
- Although considerable numbers of format string vulnerabilities have been reported, few actual exploits are listed among the reports of real incidents.
- But a very interesting toolkit that did use string format vulnerabilities in some of its functionality was reported “in the wild” in January 2001.
Ramen Worm Toolkit
- This intrude toolkit was recovered from several compromised systems and analyzed to discover that it contained several tools for attempting exploit vulnerabilities in common software.
- Ramen is self-propagating and restarting, and once it has completed modifications of the compromised host system, Ramen starts to scan and attempts exploits against external systems. Similar to all root compromises, Ramen is painful and time consuming (and therefore expensive) to recover from.
- The vulnerabilities Ramen attempts to exploit will cause a root compromise if even one of them is successful. These vulnerabilities are described as follows:
wu-ftpd (port 2 l/tcp)
- The initial advisory for this vulnerability was reported in July 2000 — five months prior to the Ramen worm. There are actually two separate vulnerabilities under this advisory:
- The “site exec” functionality allows a user logged into the ftp server to execute a limited number of commands on the server itself. However, this functionality uses the printf() function and, if the user passes carefully crafted strings when calling that functionality, the daemon can be tricked into executing an arbitrary code as the root. So, in other words, the developers didn't use a format specifier when they used printf().
- The “setproctitle()” call sets a string used to display process identifier information. This functionality eventually calls vsnprintfO and passes the buffer created from the setproctitle0 as the format string. The developers didn't use a format specifier when they used vsnprintf().
rpc.statd (port 111/udp)
- The initial advisory for this vulnerability was reported in August 2000 — four months prior to the Ramen worm.
- The rpc.statd program passes user input data to the syslog() function as a format string. This means a user can create a string that put executable code into the process stack and overwrite the return address, forcing the code to be executed. The developers didn't use a format specifier when they called syslog().
- This was made worse by the fact that rpc.statd maintains root access privileges even though those privileges are only needed for it to initially open its network socket. This means that whatever code the attacker injects is run with root (administrator) privileges.
Iprng (port 515/tcp)
- The initial advisory for this vulnerability was released on December 12,2000 – only one month prior to the Ramen worm.
- The Iprng software accepts user input that is later passed to syslog() as the format suing for a function call to snprintf(). This particular instance of the format string vulnerability can allow users who have remote access to the printer port to overwrite addresses in the printing service's address space. This can cause segmentation that will lead to denial of printing services or can be used to execute an arbitrary code injected by other methods into the memory stack of the printer service.
- All the incidents were caused by the lack of a format specifier when syslog() was called.
Test Techniques
- Out of the list of formatting functions, sprintf and vsprintf are the functions that deserve some special care and attention as they are the ones that -print- formatted data to a buffer. The fix for this vulnerability is to always use a format specifier to format data.
Black Box
- In Black-Box testing, it becomes important to include some of the formatting parameters in all input fields. These should include the following. but more can be used:
- %x
- %s
- %n
- Then watch all output and the program itself for unusual output .or behavior. You can also try testing with several %s parameters embedd in the input string. If a format string vulnerability exists, the resulting behavior would be likely to be an access violation error or another error that would cause the application to crash.
White Box
- White-Box testers have a relatively easy time finding these vulnerabilities. The code base needs to be searched for any use of the C format string functions, and each time they are used, there must be a format string in place to insure that the data is correctly interpreted.
- There are some additional functions that use formatted output, which must also be scrutinized, and are fairly OS specific. These include functions such as syslog().
Tools
- There are a number of potentially useful free tools that can provide additional checks of the C code. Although automated tools can add significant value to test efforts, they do not take the place of security reviews and dedicated security testing. They also have a tendency to generate a large number of false positives and thus a great deal of noise.
- Flawfinder: This is an open source tool that does security scans of C code. It can be obtained from http://www.dwheeler.com/flawfinder/.
- ITS4 Security Scanner: This is a freeware tool from Cigital, Inc., that scans for potentially dangerous function calls in C code (including format string calls). It can be obtained from http://www.cigital.com/its4/.
- Pscan: This is an open source tool that scans C code for potentially dangerous function calls. It can be obtained from http://www.striker.ottawa.on.ca/%7Ealand/pscan/.
- Rough Auditing Tool for Security (RATS): This is an open source code analysis tool designed to check C source code for potentially dangerous function calls (including format string calls). It can be obtained from http://www.securesw.com/rats/.
- Smatch: This is an open source tool that scans C and C++ code for known bugs and Potential security defects but is moldy focused on checking the Linux kernel code. It can be obtained from http://smatch•sourceforge.net/
- Splint: This is an open source code tool that scans C code for potential vulnerabilities and dangerous programming practices and can be obtained from http://splint.org/
External Links
Panel title
Percipit Mnesarchum
Molestie Phaedrum Luptatum
constituam Habeo adipisci Inani
zril Forensibus sea Habeo
adipisci Minimum corrumpit Regione
suscipit Has et partem Percipit
Mnesarchum Molestie Phaedrum
Luptatum constituam Habeo
adipisci Inani zril Vel
nisl albucius Habeo adipisci Minimum
corrumpit Regione suscipit Percipit
maiestatis Regione suscipit Percipit
maiestatis
Subtitle


Truck with 'illegal' diesel impounded in Imo - The Nation Newspaper
Chris Njoku, Owerri
THE Imo State command of Nigeria Security and Civil Defence Corps (NSCDC) Owerri has said a truck carrying over 900 bags of salt and eight drums of illegally sourced Automated Gas Oil or diesel have been intercepted.
The corps also said three suspects were arrested.
The suspects are Ibrahim Babayo, Yunusa Nuhu and Murtala Abdullahi.
It was learnt that the bags of salt were used to conceal the illegal petroleum product.
Read Also: Gunmen kill two in Imo
The arrest was said to be made on October 30, 2019 at about 4.00pm at Okuzi checkpoint in Ohaji/Egbema Local government Area of the state.
Parading the suspects on Tuesday, the state Commandant of NSCDC, Mr. Raji Ibrahim said military operatives of the 34 Artillery Brigade, Obinze Imo State in a joint operation with officers of Civil Defence, arrested the suspects and handed them over to the operatives of the corps for further investigation and necessary actions.
He said, “It is unlawful dealing on petroleum products, sales, distribution without license and adulteration of petroleum products. It contradicts section 17 (a) and 18(b) of miscellaneous offences Act”.


ATLANTIDA
MASONRY BLOG
Home > Blog
DONEC ID LOBORTIS TELLUS. MAECENAS VEL DIDNISSIM
By Admin / 07 October 2015
DONEC ID LOBORTIS TELLUS. MAECENAS VEL DIDNISSIM
By Admin / 07 October 2015
DONEC ID LOBORTIS TELLUS. MAECENAS VEL DIDNISSIM
By Admin / 07 October 2015
DONEC ID LOBORTIS TELLUS. MAECENAS VEL DIDNISSIM
By Admin / 07 October 2015
DONEC ID LOBORTIS TELLUS. MAECENAS VEL DIDNISSIM
By Admin / 07 October 2015
DONEC ID LOBORTIS TELLUS. MAECENAS VEL DIDNISSIM
By Admin / 07 October 2015
DONEC ID LOBORTIS TELLUS. MAECENAS VEL DIDNISSIM
By Admin / 07 October 2015
DONEC ID LOBORTIS TELLUS. MAECENAS VEL DIDNISSIM
By Admin / 07 October 2015
DONEC ID LOBORTIS TELLUS. MAECENAS VEL DIDNISSIM
By Admin / 07 October 2015


Richard V.Welsh
Manager
Dashboard
Widgets
Forms
Buttons
Tables
Charts
Icons
Typography
Sample Pages
Blank Page
Login
Register
404
500
Settings
Forms
Basic form elements
Email address
Password
Example textarea
Check me out
Disabled Checkbox
Radio option 1
Radio option 2
Disabled Radio option
Submit


Variable
| Static Public Summary | ||
| public |
AmbientLight: * |
|
| public |
|
|
| public |
|
|
| public |
|
|
| public |
|
|
| public |
|
|
| public |
FlatMaterial: * |
|
| public |
|
|
| public |
Light: * |
|
| public |
Material: * |
|
| public |
|
|
| public |
PointLight: * |
|
| public |
SpotLight: * |
|
| public |
Utility debug output |
|
| public |
defaults: {"clear": *} |
|
| public |
|
|
| public |
|
|
| public |
|
|
| public |
stats: {} |
Static Public
public DEFAULT_CAMERA_FIELD_OF_VIEW: * source
import {DEFAULT_CAMERA_FIELD_OF_VIEW} from 'axis3d/src/camera.js'
public DEFAULT_CAMERA_ORIENTATION_ORIGIN: * source
import {DEFAULT_CAMERA_ORIENTATION_ORIGIN} from 'axis3d/src/camera.js'
public debug(fmt: String, args: ...Mixed): * source
import {debug} from 'axis3d/src/utils.js'
Utility debug output
public kMaxAmbientLights: number source
import {kMaxAmbientLights} from 'axis3d/src/light/ambient.js'
public kMaxDirectionalLights: number source
import {kMaxDirectionalLights} from 'axis3d/src/light/directional.js'


SLDIFF_PW Measures the pair-wise difference $ Synatx $ - D = sldiff_pw(X1, X2, type) $ Arguments $ - X1, X2: the two sample matrices - type: the type of difference measurement default = 'abssum' $ Description $ - D = sldiff_pw(X1, X2, type) computes the measurment of differences between the samples in X1 and those in X2 in a pairwise manner. All samples should be stored in columns. And the samples in X1 and X2 should be of the same dimension. If X1 and X2 are of sizes dxn1 and dxn2 respectively. Then D is a matrix of size n1 x n2. - The measurment types supported are listed below \* \t Table 1. The difference measurement types \\ \h name & description \\ 'abssum' & sum of absolute values of differences \\ 'maxdiff' & maximum of absolute values of differences \\ 'mindiff' & minimum of absolute values of differences \\ \* $ History $ - Created by Dahua Lin on Dec 06th, 2005 - Modified by Dahua Lin on Sep 10th, 2006 - Re-implement the core in C++: pwdiff_core - The efficiency is increased by 10 times.
0001 function D = sldiff_pw(X1, X2, type) 0002 %SLDIFF_PW Measures the pair-wise difference 0003 % 0004 % $ Synatx $ 0005 % - D = sldiff_pw(X1, X2, type) 0006 % 0007 % $ Arguments $ 0008 % - X1, X2: the two sample matrices 0009 % - type: the type of difference measurement 0010 % default = 'abssum' 0011 % 0012 % $ Description $ 0013 % - D = sldiff_pw(X1, X2, type) computes the measurment of differences 0014 % between the samples in X1 and those in X2 in a pairwise manner. 0015 % All samples should be stored in columns. And the samples in X1 and 0016 % X2 should be of the same dimension. If X1 and X2 are of sizes 0017 % dxn1 and dxn2 respectively. Then D is a matrix of size n1 x n2. 0018 % 0019 % - The measurment types supported are listed below 0020 % \* 0021 % \t Table 1. The difference measurement types \\ 0022 % \h name & description \\ 0023 % 'abssum' & sum of absolute values of differences \\ 0024 % 'maxdiff' & maximum of absolute values of differences \\ 0025 % 'mindiff' & minimum of absolute values of differences \\ 0026 % \* 0027 % 0028 % $ History $ 0029 % - Created by Dahua Lin on Dec 06th, 2005 0030 % - Modified by Dahua Lin on Sep 10th, 2006 0031 % - Re-implement the core in C++: pwdiff_core 0032 % - The efficiency is increased by 10 times. 0033 % 0034 0035 %% parse and verify input arguments 0036 0037 if nargin < 3 || isempty(type) 0038 type = 'abssum'; 0039 end 0040 0041 switch type 0042 case 'abssum' 0043 pdmcode = 1; 0044 case 'maxdiff' 0045 pdmcode = 2; 0046 case 'mindiff' 0047 pdmcode = 3; 0048 otherwise 0049 error('sltoolbox:invalidarg', ... 0050 'Invalid type of pwdiff computation: %s', type); 0051 end 0052 0053 %% Compute 0054 0055 D = pwdiff_core(X1, X2, pdmcode); 0056 0057 0058 0059 0060


DOG DAY AFTERNOON A film review by David Landers Copyright 1997 David Landers
RATING: *** out of **** - 7.5 out of 10.0 CAST: Al Pacino (Sonny), John Cazale (Sal), Charles Durning (Moretti), Chris Sarandon (Leon) DIRECTOR: Sidney Lumet CERTIFICATION: R (USA) for language and violence YEAR OF PRODUCTION: 1975 ACADEMY AWARD NOMINATIONS: Best Picture, Best Actor (Pacino), Best Supporting Actor (Sarandon) ACADEMY AWARDS: Original Screenplay (Frank Pierson)
Based on a true story, DOG DAY AFTERNOON is the story of two Brooklyn men, Sonny Wortzik (Al Pacino) and Sal (John Cazale), who attempt to rob a bank in a desperate attempt for funds. The funds they hope to gain will be used to pay for the sex-change operation of Sonny's male lover, Leon, played by Chris Sarandon.
Sonny is a former bank employee who knows all the tricks of the trade, which he shows by being, for the most part, well aware of the surroundings. He's worked out his plan completely and knows how to take out all of the bank's possible annoyances. Everything is working out fine until the police show up, headed up by Charles Durning (Moretti). What transpires from here is a multiple-day circus, including the police, media, enthusiastic "fans" of the robbers, and a few unusual characters; namely, a pizza boy and an angry boyfriend of one of the tellers.
DOG DAY AFTERNOON is, overall, a rather enjoyable movie. At times it appears it is an action movie, but at other times it leans towards a comedy/drama. The best performance is turned in by Al Pacino, as the crafty leader. John Cazale also turns in a good performance as Sal, the dumb-witted sidekick who really isn't "all there". For example, Sonny is toying with the idea of taking a plane to a foreign country, and Sal suggests they fly to the far-off country "Wyoming". Chris Sarandon plays a rather odd character as Sonny's gay lover; the one who needs the money to pay for the sex-change operation. The group of bank hostages, a number of female tellers and the manager, also provide a few comical moments throughout the movie.
Complete with a fairly dramatic ending, DOG DAY AFTERNOON is a good flick that you should enjoy. It is agreeable that it could have been better in many ways, but it is one of the more famous bank heist films of the past few decades.
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


Roombacomm 0.97
README
Eclipse HowTo
Windows-related information
Changelog
Directory Structure
File Descriptions
Subversion Tree structure
ASUS Router How To
To Do
The To Do list enumerates the remaining work
for the 0.97 release, as well as work remaining beyond 0.97
Previous Versions
README for 0.95 release


---
title: colors
section_title: Colors (deprecated)
section_id: colors
---
Do not use - all colors variables are managed by meetup-swatches.
Text
|
$C_text_headline
$C_darkgray |
|
$C_text
$C_darkgray_lighter |
|
$C_text_less
$C_darkgray_lightest |
|
$C_link
$C_darkblue |
|
$C_lightblue |
Interface
|
$C_line
$C_gray |
|
$C_line_less
$C_gray_lighter |
|
$C_shade
$C_gray_lightest |
|
$C_accent
$C_red |
|
$C_red_darker |
RSVP colors
|
$C_rsvpGoing
$C_green |
|
$C_rsvpWaiting
$C_blue |
|
$C_rsvpNotGoing
$C_darkgray_lightest |
System message colors
|
$C_warnBg
$C_pink |
|
$C_warnText
$C_red |


{% extends "_layout.html" %} {% block title %} Settings{% endblock %} {% block stylesheets %} {% endblock %} {% block scripts %} {% endblock %} {% block content %}
{{error}}
Specify the strftime format that you'd like for your snippet emails.
Specify the string format for each line in your snippet emails. Be sure to provide one %s for the snippet.
Send back a confirmation that your snippet was saved successfully, usually in the form of a smiley :)
Choose the weekday that Snipper should start on.
Choose the hour that the reset should happen.
Snipper can email your snippets to you upon reset. Send them now!


pydrake.systems.trajectory_optimization¶
-
pydrake.systems.trajectory_optimization.
AddDirectCollocationConstraint
(constraint: pydrake.systems.trajectory_optimization.DirectCollocationConstraint, timestep: numpy.ndarray[object[m, 1]], state: numpy.ndarray[object[m, 1]], next_state: numpy.ndarray[object[m, 1]], input: numpy.ndarray[object[m, 1]], next_input: numpy.ndarray[object[m, 1]], prog: pydrake.solvers.mathematicalprogram.MathematicalProgram) → pydrake.solvers.mathematicalprogram.Binding_Constraint¶ Helper method to add a DirectCollocationConstraint to the
prog
, ensuring that the order of variables in the binding matches the order expected by the constraint.
-
class
pydrake.systems.trajectory_optimization.
DirectCollocation
¶ Bases:
pydrake.systems.trajectory_optimization.MultipleShooting
DirectCollocation implements the approach to trajectory optimization as described in C. R. Hargraves and S. W. Paris. Direct trajectory optimization using nonlinear programming and collocation. J Guidance, 10(4):338-342, July-August 1987. It assumes a first-order hold on the input trajectory and a cubic spline representation of the state trajectory, and adds dynamic constraints (and running costs) to the midpoints as well as the breakpoints in order to achieve a 3rd order integration accuracy.
Note: This algorithm only works with the continuous states of a system.
-
__init__
(self: pydrake.systems.trajectory_optimization.DirectCollocation, system: pydrake.systems.framework.System_[float], context: pydrake.systems.framework.Context_[float], num_time_samples: int, minimum_timestep: float, maximum_timestep: float, input_port_index: Union[pydrake.systems.framework.InputPortSelection, pydrake.systems.framework.InputPortIndex] = InputPortSelection.kUseFirstInputIfItExists, assume_non_continuous_states_are_fixed: bool = False) → None¶ Constructs the MathematicalProgram% and adds the collocation constraints.
- Parameter
system
: - A dynamical system to be used in the dynamic constraints. This system must support System::ToAutoDiffXd. Note that this is aliased for the lifetime of this object.
- Parameter
context
: - Required to describe any parameters of the system. The values of the state in this context do not have any effect. This context will also be “cloned” by the optimization; changes to the context after calling this method will NOT impact the trajectory optimization.
- Parameter
num_time_samples
: - The number of breakpoints in the trajectory.
- Parameter
minimum_timestep
: - Minimum spacing between sample times.
- Parameter
maximum_timestep
: - Maximum spacing between sample times.
- Parameter
input_port_index
: - A valid input port index for
system
or InputPortSelection. All other inputs on the system will be left disconnected (if they are disconnected incontext)
or will be fixed to their current values (if they are connected/fixed incontext)
. - Default: kUseFirstInputIfItExists.
- $Parameter
assume_non_continuous_states_are_fixed
:
Boolean which, if true, allows this algorithm to optimize without considering the dynamics of any non-continuous states. This is helpful for optimizing systems that might have some additional book-keeping variables in their state. Only use this if you are sure that the dynamics of the additional state variables cannot impact the dynamics of the continuous states. $*Default:* false.
- Parameter
-
-
class
pydrake.systems.trajectory_optimization.
DirectCollocationConstraint
¶ Bases:
pydrake.solvers.mathematicalprogram.Constraint
Implements the direct collocation constraints for a first-order hold on the input and a cubic polynomial representation of the state trajectories.
Note that the DirectCollocation implementation allocates only ONE of these constraints, but binds that constraint multiple times (with different decision variables, along the trajectory).
-
__init__
(self: pydrake.systems.trajectory_optimization.DirectCollocationConstraint, system: pydrake.systems.framework.System_[float], context: pydrake.systems.framework.Context_[float], input_port_index: Union[pydrake.systems.framework.InputPortSelection, pydrake.systems.framework.InputPortIndex] = InputPortSelection.kUseFirstInputIfItExists, assume_non_continuous_states_are_fixed: bool = False) → None¶ See also
DirectCollocation constructor for a description of the parameters.
-
-
class
pydrake.systems.trajectory_optimization.
DirectTranscription
¶ Bases:
pydrake.systems.trajectory_optimization.MultipleShooting
DirectTranscription is perhaps the simplest implementation of a multiple shooting method, where we have decision variables representing the control and input at every sample time in the trajectory, and one-step of numerical integration provides the dynamic constraints between those decision variables.
-
__init__
(*args, **kwargs)¶ Overloaded function.
- __init__(self: pydrake.systems.trajectory_optimization.DirectTranscription, system: pydrake.systems.framework.System_[float], context: pydrake.systems.framework.Context_[float], num_time_samples: int, input_port_index: Union[pydrake.systems.framework.InputPortSelection, pydrake.systems.framework.InputPortIndex] = InputPortSelection.kUseFirstInputIfItExists) -> None
Constructs the MathematicalProgram and adds the dynamic constraints. This version of the constructor is only for simple discrete-time systems (with a single periodic timestep update). Continuous-time systems must call one of the constructors that takes bounds on the timestep as an argument.
- Parameter
system
: - A dynamical system to be used in the dynamic constraints. This system must support System::ToAutoDiffXd. Note that this is aliased for the lifetime of this object.
- Parameter
context
: - Required to describe any parameters of the system. The values of the state in this context do not have any effect. This context will also be “cloned” by the optimization; changes to the context after calling this method will NOT impact the trajectory optimization.
- Parameter
num_time_samples
: - The number of breakpoints in the trajectory.
- Parameter
input_port_index
: - A valid input port index or valid InputPortSelection for
system
. All other inputs on the system will be left disconnected (if they are disconnected incontext)
or will be set to their current values (if they are connected/fixed incontext)
.
Default: kUseFirstInputIfItExists.
- __init__(self: pydrake.systems.trajectory_optimization.DirectTranscription, system: pydrake.systems.framework.System_[float], context: pydrake.systems.framework.Context_[float], num_time_samples: int, fixed_timestep: pydrake.systems.trajectory_optimization.TimeStep, input_port_index: Union[pydrake.systems.framework.InputPortSelection, pydrake.systems.framework.InputPortIndex] = InputPortSelection.kUseFirstInputIfItExists) -> None
Constructs the MathematicalProgram and adds the dynamic constraints. This version of the constructor is only for continuous-time systems; the dynamics constraints use explicit forward Euler integration.
- Parameter
system
: - A dynamical system to be used in the dynamic constraints. This system must support System::ToAutoDiffXd. Note that this is aliased for the lifetime of this object.
- Parameter
context
: - Required to describe any parameters of the system. The values of the state in this context do not have any effect. This context will also be “cloned” by the optimization; changes to the context after calling this method will NOT impact the trajectory optimization.
- Parameter
num_time_samples
: - The number of breakpoints in the trajectory.
- Parameter
fixed_timestep
: - The spacing between sample times.
- Parameter
input_port_index
: - A valid input port index or valid InputPortSelection for
system
. All other inputs on the system will be left disconnected (if they are disconnected incontext)
or will be set to their current values (if they are connected/fixed incontext)
.
Default: kUseFirstInputIfItExists.
-
-
class
pydrake.systems.trajectory_optimization.
MultipleShooting
¶ Bases:
pydrake.solvers.mathematicalprogram.MathematicalProgram
MultipleShooting is an abstract class for trajectory optimization that creates decision variables for inputs, states, and (optionally) sample times along the trajectory, then provides a number of methods for working with those decision variables.
Subclasses must implement the abstract methods: DoAddRunningCost() ReconstructInputTrajectory() ReconstructStateTrajectory() using all of the correct interpolation schemes for the specific transcription method, and should add the constraints to impose the System% dynamics in their constructor.
This class assumes that there are a fixed number (N) time steps/samples, and that the trajectory is discretized into timesteps h (N-1 of these), state x (N of these), and control input u (N of these).
-
__init__
¶ Initialize self. See help(type(self)) for accurate signature.
-
AddCompleteTrajectoryCallback
(self: pydrake.systems.trajectory_optimization.MultipleShooting, callback: Callable[[numpy.ndarray[numpy.float64[m, 1]], numpy.ndarray[numpy.float64[m, n], flags.f_contiguous], numpy.ndarray[numpy.float64[m, n], flags.f_contiguous], List[numpy.ndarray[numpy.float64[m, n], flags.f_contiguous]]], None], names: List[str]) → pydrake.solvers.mathematicalprogram.Binding_VisualizationCallback¶ Adds a callback method to visualize intermediate results of all variables used in the trajectory optimization. The callback should be of the form MyVisualization(sample_times, states, inputs, values), where sample_times is an N-by-1 VectorXd of sample times, states is a num_states-by-N MatrixXd of the current (intermediate) state trajectory at the break points, inputs is a num_inputs-by-N MatrixXd of the current (intermediate) input trajectory at the break points and values is a vector of num_rows-by-N MatrixXds of the current (intermediate) extra sequential variables specified by
names
at the break points.Note
Just like other costs/constraints, not all solvers support callbacks. Adding a callback here will force MathematicalProgram::Solve to select a solver that support callbacks. For instance, adding a visualization callback to a quadratic programming problem may result in using a nonlinear programming solver as the default solver.
-
AddConstraintToAllKnotPoints
(self: pydrake.systems.trajectory_optimization.MultipleShooting, f: pydrake.symbolic.Formula) → None¶ Adds a constraint to all breakpoints, where any instances of time(), state(), and/or input() placeholder variables, as well as placeholder variables returned by calls to NewSequentialVariable(), are substituted with the relevant variables for each time index.
-
AddDurationBounds
(self: pydrake.systems.trajectory_optimization.MultipleShooting, lower_bound: float, upper_bound: float) → None¶ Adds a constraint on the total duration of the trajectory.
Raises: RuntimeError if timesteps are not declared as decision variables.
-
AddEqualTimeIntervalsConstraints
(self: pydrake.systems.trajectory_optimization.MultipleShooting) → None¶ Adds constraints to enforce that all timesteps have equal duration.
Raises: RuntimeError if timesteps are not declared as decision variables.
-
AddFinalCost
(*args, **kwargs)¶ Overloaded function.
- AddFinalCost(self: pydrake.systems.trajectory_optimization.MultipleShooting, e: pydrake.symbolic.Expression) -> None
Adds a cost to the final time, of the form
\[cost = e(t,x,u),\]where any instances of time(), state(), and/or input() placeholder variables, as well as placeholder variables returned by calls to NewSequentialVariable(), are substituted with the relevant variables for the final time index.
- AddFinalCost(self: pydrake.systems.trajectory_optimization.MultipleShooting, matrix: numpy.ndarray[object[m, n], flags.f_contiguous]) -> None
Adds support for passing in a (scalar) matrix Expression, which is a common output of most symbolic linear algebra operations.
Note
Derived classes will need to type using MultipleShooting::AddFinalCost; to “unhide” this method.
-
AddInputTrajectoryCallback
(self: pydrake.systems.trajectory_optimization.MultipleShooting, callback: Callable[[numpy.ndarray[numpy.float64[m, 1]], numpy.ndarray[numpy.float64[m, n], flags.f_contiguous]], None]) → pydrake.solvers.mathematicalprogram.Binding_VisualizationCallback¶ Adds a callback method to visualize intermediate results of input variables used in the trajectory optimization. The callback should be of the form MyVisualization(sample_times, values), where breaks is a N-by-1 VectorXd of sample times, and values is a num_inputs-by-N MatrixXd representing the current (intermediate) value of the input trajectory at the break points in each column.
Note
Just like other costs/constraints, not all solvers support callbacks. Adding a callback here will force MathematicalProgram::Solve to select a solver that support callbacks. For instance, adding a visualization callback to a quadratic programming problem may result in using a nonlinear programming solver as the default solver.
-
AddRunningCost
(*args, **kwargs)¶ Overloaded function.
- AddRunningCost(self: pydrake.systems.trajectory_optimization.MultipleShooting, g: pydrake.symbolic.Expression) -> None
Adds an integrated cost to all time steps, of the form
\[cost = \int_0^T g(t,x,u) dt,\]where any instances of time(), state(), and/or input() placeholder variables, as well as placeholder variables returned by calls to NewSequentialVariable(), are substituted with the relevant variables for each time index. The particular integration scheme is determined by the derived class implementation.
- AddRunningCost(self: pydrake.systems.trajectory_optimization.MultipleShooting, g: numpy.ndarray[object[m, n], flags.f_contiguous]) -> None
Adds support for passing in a (scalar) matrix Expression, which is a common output of most symbolic linear algebra operations.
-
AddStateTrajectoryCallback
(self: pydrake.systems.trajectory_optimization.MultipleShooting, callback: Callable[[numpy.ndarray[numpy.float64[m, 1]], numpy.ndarray[numpy.float64[m, n], flags.f_contiguous]], None]) → pydrake.solvers.mathematicalprogram.Binding_VisualizationCallback¶ Adds a callback method to visualize intermediate results of state variables used in the trajectory optimization. The callback should be of the form MyVisualization(sample_times, values), where sample_times is a N-by-1 VectorXd of sample times, and values is a num_states-by-N MatrixXd representing the current (intermediate) value of the state trajectory at the break points in each column.
Note
Just like other costs/constraints, not all solvers support callbacks. Adding a callback here will force MathematicalProgram::Solve to select a solver that support callbacks. For instance, adding a visualization callback to a quadratic programming problem may result in using a nonlinear programming solver as the default solver.
-
AddTimeIntervalBounds
(self: pydrake.systems.trajectory_optimization.MultipleShooting, lower_bound: float, upper_bound: float) → None¶ Adds bounds on all time intervals.
- Parameter
lower_bound
: - A scalar double lower bound.
- Parameter
upper_bound
: - A scalar double upper bound.
Raises: RuntimeError if timesteps are not declared as decision variables. - Parameter
-
final_state
(self: pydrake.systems.trajectory_optimization.MultipleShooting) → numpy.ndarray[object[m, 1]]¶ Returns the decision variables associated with the state, x, at the final time index.
-
fixed_timestep
(self: pydrake.systems.trajectory_optimization.MultipleShooting) → float¶
-
GetInputSamples
(self: pydrake.systems.trajectory_optimization.MultipleShooting, result: pydrake.solvers.mathematicalprogram.MathematicalProgramResult) → numpy.ndarray[numpy.float64[m, n]]¶ Returns a matrix containing the input values (arranged in columns) at each breakpoint at the solution.
-
GetSampleTimes
(self: pydrake.systems.trajectory_optimization.MultipleShooting, result: pydrake.solvers.mathematicalprogram.MathematicalProgramResult) → numpy.ndarray[numpy.float64[m, 1]]¶ Returns a vector containing the elapsed time at each breakpoint.
-
GetSequentialVariableAtIndex
(self: pydrake.systems.trajectory_optimization.MultipleShooting, name: str, index: int) → numpy.ndarray[object[m, 1]]¶ Returns the decision variables associated with the sequential variable
name
at time indexindex
.See also
NewSequentialVariable().
-
GetSequentialVariableSamples
(self: pydrake.systems.trajectory_optimization.MultipleShooting, result: pydrake.solvers.mathematicalprogram.MathematicalProgramResult, name: str) → numpy.ndarray[numpy.float64[m, n]]¶ Returns a matrix containing the sequential variable values (arranged in columns) at each breakpoint at the solution.
- Parameter
name
: - The name of sequential variable to get the results for. Must correspond to an already added sequential variable.
- Parameter
-
GetStateSamples
(self: pydrake.systems.trajectory_optimization.MultipleShooting, result: pydrake.solvers.mathematicalprogram.MathematicalProgramResult) → numpy.ndarray[numpy.float64[m, n]]¶ Returns a matrix containing the state values (arranged in columns) at each breakpoint at the solution.
-
initial_state
(self: pydrake.systems.trajectory_optimization.MultipleShooting) → numpy.ndarray[object[m, 1]]¶ Returns the decision variables associated with the state, x, at the initial time index.
-
input
(*args, **kwargs)¶ Overloaded function.
- input(self: pydrake.systems.trajectory_optimization.MultipleShooting) -> numpy.ndarray[object[m, 1]]
Returns placeholder decision variables (not actually declared as decision variables in the MathematicalProgram) associated with the input, u, but with the time-index undetermined. These variables will be substituted for real decision variables at particular times in methods like AddRunningCost. Passing these variables directly into objectives/constraints for the parent classes will result in an error.
- input(self: pydrake.systems.trajectory_optimization.MultipleShooting, index: int) -> numpy.ndarray[object[m, 1]]
Returns the decision variables associated with the input, u, at time index
index
.
-
NewSequentialVariable
(self: pydrake.systems.trajectory_optimization.MultipleShooting, rows: int, name: str) → numpy.ndarray[object[m, 1]]¶ Adds a sequential variable (a variable that has associated decision variables for each time index) to the optimization problem and returns a placeholder variable (not actually declared as a decision variable in the MathematicalProgram). This variable will be substituted for real decision variables at particular times in methods like AddRunningCost(). Passing this variable directly into objectives/constraints for the parent classes will result in an error.
-
ReconstructInputTrajectory
(self: pydrake.systems.trajectory_optimization.MultipleShooting, result: pydrake.solvers.mathematicalprogram.MathematicalProgramResult) → pydrake.trajectories.PiecewisePolynomial¶ Get the input trajectory at the solution as a PiecewisePolynomial. The order of the trajectory will be determined by the integrator used in the dynamic constraints. Requires that the system has at least one input port.
-
ReconstructStateTrajectory
(self: pydrake.systems.trajectory_optimization.MultipleShooting, result: pydrake.solvers.mathematicalprogram.MathematicalProgramResult) → pydrake.trajectories.PiecewisePolynomial¶ Get the state trajectory at the solution as a PiecewisePolynomial. The order of the trajectory will be determined by the integrator used in the dynamic constraints.
-
SetInitialTrajectory
(self: pydrake.systems.trajectory_optimization.MultipleShooting, traj_init_u: pydrake.trajectories.PiecewisePolynomial, traj_init_x: pydrake.trajectories.PiecewisePolynomial) → None¶
-
state
(*args, **kwargs)¶ Overloaded function.
- state(self: pydrake.systems.trajectory_optimization.MultipleShooting) -> numpy.ndarray[object[m, 1]]
Returns placeholder decision variables (not actually declared as decision variables in the MathematicalProgram) associated with the state, x, but with the time-index undetermined. These variables will be substituted for real decision variables at particular times in methods like AddRunningCost. Passing these variables directly into objectives/constraints for the parent classes will result in an error.
- state(self: pydrake.systems.trajectory_optimization.MultipleShooting, index: int) -> numpy.ndarray[object[m, 1]]
Returns the decision variables associated with the state, x, at time index
index
.
-
time
(self: pydrake.systems.trajectory_optimization.MultipleShooting) → numpy.ndarray[object[1, 1]]¶ Returns a placeholder decision variable (not actually declared as a decision variable in the MathematicalProgram) associated with the time, t. This variable will be substituted for real decision variables at particular times in methods like AddRunningCost. Passing this variable directly into objectives/constraints for the parent classes will result in an error.
-
timestep
(self: pydrake.systems.trajectory_optimization.MultipleShooting, index: int) → numpy.ndarray[object[1, 1]]¶ Returns the decision variable associated with the timestep, h, at time index
index
.Raises: RuntimeError if timesteps are not declared as decision variables.
-