--- layout: post esbma_id: 1168 title: Closing the Gap, Part 2 date: 2004-05-10 15:57:35 keywords: bos teaser: Have I not described exactly how you want to be treated when you are the customer? If so, then shouldn't you be treating your customers the same way? Why not? ---
Summary: In the exciting conclusion to our last episode, Eric describes an alternative to hiring a sales guy.
Last month we introduced a concept that I call "the gap":
Product -------------------------------- Customer
This gap is the distance between the prospective customer and your product. As long as it continues to exist, your customer has less software and you have less money. In order for the sale to occur, this gap must be closed. Until that happens, the gap represents all of the issues and obstacles that are preventing the customer from making the purchase.
As Chief Sales Geek in your ISV, it is your responsibility to figure out how this gap is going to get closed. You have exactly two ways to do it:
Last month, we talked about "proactive sales", or "moving your customer to the left". This month, we will talk about the other way of closing the gap: moving your product to the right.
In Part 1 of this two-part column, I claim that most small ISVs do not need a sales guy and should not use the proactive sales approach. This month, I describe an alternative approach. Instead of proactive sales, we will talk about "responsive sales". Let us first highlight the differences between these two models:
These contrasting descriptions may actually make responsive sales seem unappealing to you. After all, do we really want to trust the customer to handle all these important tasks?
Yes we do.
I acknowledge that responsive sales can be scary. It feels like we are delegating a critical project to somebody we don't know and have probably never even met.
But a reward lies behind this risk. The truth is that customers like being trusted. They like making their decisions without pressure from a sales guy. They like to be in charge.
For all these reasons, responsive sales works very well, as long as we hold up our end of the deal. We have to be responsive. Yes, we are letting the customer be in charge, but we are not powerless.
In fact, we will be quite busy indeed. It is our job to make the whole process as easy as possible for customers. They will choose to cross the gap. We will move our product to the right so the gap will be easier for them to cross.
To succeed in responsive sales, there are seven things we must do:
Customers cannot buy your product if they have never heard of it. Those of you that find this statement to be insightful will be similarly enlightened to learn that the sky is blue.
Seriously, I know I'm stating the obvious here, but awareness of your product is a pretty important precondition, especially for responsive sales. If the customer never contacts you, then you cannot be responsive. If you don't have a way of letting people know your product exists, then you may not need to read the remainder of this article. Responsive sales won't work for you until you start getting some awareness built up.
Still, we should remind ourselves that building awareness is the task of marketing, not sales. Specifically, this is part of a subcategory called marketing communications, or "marcomm" for short. A full treatment of marcomm is well beyond the scope of this article. For now, I want to mention three quick items:
Q: What's the difference between buying magazine ads and setting dollar bills on fire?
A: Flaming cash actually produces a benefit, since it generates heat.
This joke is excerpted from the beginning of an article I wrote last year about advertising for small ISVs. The rest of the article goes on to say that I am only half joking. Advertising is scary and dangerous. You can spend lots of cash and have no idea where it went.
I am not saying small ISVs should never advertise. Rather, I am saying that you should be very careful. If you have any reservations, just wait. Tell their sales guy to call you again in six months.
Among the traditional marcomm activities, tradeshows are my favorite. Remember the old joke about pizza and sex? A tradeshow falls into the same category: When it's bad, it's still pretty good. Even at the worst show I ever attended, I learned a few things and met some interesting people. If your market segment has any good tradeshows, consider being an exhibitor.
SourceGear will be an exhibitor next month at TechEd in San Diego. Since we're currently finalizing preparations for the show, I plan to use the occasion as an excuse to devote next month's column to the topic of exhibiting at a tradeshow. Stay tuned!
Traditional marcomm has its place, but there are new approaches. With the ubiquity of the Internet today, one of the best ways to build awareness of your product is to develop it "in the open". In other words, using a combination of weblogs, public discussions, and preview downloads, let your prospective customers watch and talk with you as you make your software. Think of yourself as a chef in a Chinese restaurant, your customers watching as you stir-fry their shrimp and peapods.
Start out with a weblog--an open journal of your development progress. Every so often, post an update of how your application is progressing.
At some point, your application will be ready to demo for prospective customers. Release a public preview for download. Make sure you provide a mailing list or a Web-based forum so you can receive their feedback.
Developing software takes time. Doing it "in the open" can be a great way of using that time to build awareness as you go.
Pardon me for again stating the obvious, but this fact remains: If you're not selling something that people want, your gap is enormous.
A good proactive sales guy can overcome this problem. The tactics for selling things that nobody wants are very well understood. How many people would buy rustproofing for their new car if they had to specifically ask for it?
In the responsive sales approach, you have basically no hope of selling a product that is not fundamentally appealing. It is therefore extremely important that you do your homework and convince yourself that you are building a product that will be desirable. This is the other half of marketing.
If you have read anything at all about classical marketing, you have probably heard the word "positioning" at least once. Basically, positioning is the process of figure out how your target market will perceive your product. How do you want your product to be known? To what other products will yours be compared? Answering these questions is a critical step toward ensuring that your product is something people want.
Avoiding competition is perhaps the most common way of ending up with a product nobody wants. You need competition. By avoiding competition, you are simultaneously avoiding customers. Your product concept is validated by the presence of other ISVs who are profitably selling something similar. If there is nothing on the market that resembles your product, be afraid.
You've got that déjà vu feeling right now, don't you?
Yes, I already made this point about developing "in the open", but now I'm making it again for a different reason. Developing in the open is not just a great way of building awareness. It is also a way of measuring how much people care.
For example, let us suppose that you choose to develop in the open, releasing lots of information and preview downloads very early in your development cycle. You make appropriate announcements in the right newsgroups and forums. However, very few people come to get the download. Hardly anyone posts to your mailing list. Nobody gives you any feedback.
The bad news is that you may be developing an application that nobody wants. The good news is that you find out a lot earlier by developing in the open. You have time to adjust the feature set.  Either way, you are better off getting the bad news earlier instead of waiting until the application ships.
The price of your product affects the size of the gap.
When writing about the subject of pricing, it is far more fashionable to claim that pricing should be higher, not lower. The basic idea is that you are making a statement with the price you choose. When you set the price of your product high, you are telling the world that you think your product is very valuable. This tends to make your product more highly desired.
Some purchasers actually prefer to buy higher-priced products. At the moment, I can use myself as an example. I am currently training to walk a half-marathon. It is important that I have really good shoes. I should probably go to one of those fancy stores where they analyze a videotape of your stride and help you select the perfect shoe. But I'm always in too much of a hurry, so I have simpler approach. I only buy shoes if they are of a strong brand and cost at least $85 per pair. This approach is low tech, but it is simple, and it works for me.
Some people buy software the same way I buy shoes. Buying the most expensive product is a convenient shortcut for the shopper who doesn't have time to research everything thoroughly.
A higher price point can be attractive to customers who are seeking either prestige or exceptional quality. However, lower pricing has its advantages, too. The fact is that many of your prospective customers have a budget. If your price is higher than their limit, the gap might as well be infinite.
A few months ago, my company lowered the price of our version control product (SourceGear Vault). At its original price, Vault was already one of the least expensive tools in its market segment. With the new pricing, all of the comparable competing products are several times our price. We knew this was a big risk. Some customers will automatically assume that a competing product which costs seven times more must certainly be seven times better than ours.
So far, the risk is paying off. We made this decision because we believed that the gap was simply too large for many customers to cross. Apparently we were right. Our total revenue has been significantly higher since the price change.
Every small ISV today should give its customers an opportunity to try before they buy. It is officially now absurd to do otherwise. Customers will come to your Web site and expect to find a demo download.
There are several opportunities here to make things easy for your customer. Don't miss out on any of the following:
You probably think your download is easy to find. After all, you know right where it is, right?
Don't assume. Grab a stranger (don't actually grab them) and ask them to visit your Web site and find the demo download. Watch them search and see how long it takes.
The best demo download is the product itself. Every SourceGear product has only one binary available for download. The demo version is exactly the same binary as the full product. Every feature is enabled, but only for 30 days. To make a purchase, the customer simply enters a serial number and does not have to reinstall.
Your demo download is your opportunity to make a positive first impression. It is indescribably important that your demo "just works". If anything goes wrong, your customer will probably just lose interest and you will have lost the chance to be responsive.
The hyperlink to your demo download should link directly to the actual binaries. Don't make users fill out a form and give their contact information. This is responsive sales and the users are in charge. Let them decide when they want to make themselves known to you, if at all.
I am a big believer in the importance of giving excellent technical support. When your customers have problems, you need to stop and help them. Furthermore, I believe that happy customers are the responsibility of every employee in a small ISV.
At SourceGear, every developer is involved with helping customers. We do have "level 1" tech support people whose full-time responsibility is helping our customers. But when level 1 either overflows or escalates a problem, every developer is available to help with "level 2". Our customers like the fact that when they have a problem, they can talk to the person who actually wrote the code.
With very few exceptions, everyone on your staff should be prepared to stop what they are doing and help a customer when needed. An important key to the responsive sales model is that you have to treat your prospective customers exactly the same way.
Prospective customers want the ability to talk to current customers about you and your product. This concept may seem scary. After all, what if some of your customers are disappointed with your product in some way? Do you really want prospective customers talking with people who might say negative things?
Yes, you do. This is responsive sales, and the customer is in charge. Not only should you let your prospects talk to your customers, you should provide them a place to do it.
I wish more vendors would do this. Last year, I bought a Chevy Avalanche from a dealer in my area. Think how nice it would be if my sales guy had made arrangements for me to speak with his past customers!
Before finalizing my decision, he escorts me to a special waiting room, and there I find everybody who has ever purchased an Avalanche from this particular sales guy. Immediately I start asking questions: How do you like the truck? Does water leak into the back? Should I upgrade to the bigger engine? What about this sales guy, is he a jerk? Has he ever lied to you?
Regardless of the answers I get, one thing is clear: This sales guy has impressed me. He is unafraid of his past choices. He believes in the quality of his product and in the level of customer service he provides. He has nothing to hide.
Obviously it's just not feasible for my Chevy dealer to offer this kind of benefit, but it's downright simple for a small ISV.
SourceGear provides a Web-based forum where our customers and prospects can talk to us and to each other. Users of this site are free to express their opinions. When a customer gripes about us (SourceGear), or our products, we don't dismiss the comment.
Prospective customers often visit the site and ask questions from other users. If one of our current customers gripes about us, then we probably deserved it. Instead of trying to impede the truth, we instead try to fix the problem.
Sometimes this approach isn't much fun at all, but it provides a nice feedback mechanism which forces us to constantly improve our product and keep our customers happy. Prospective customers can see this.
The final step in closing the gap is the moment when someone gives you money and you give that person software. Just like every other step, the customer is in charge, but it is your job to make everything easy for them.
There are several different ways to get an online storefront. You can find lots of companies offering to host a store for you. There are also a number of software packages that you can buy. I lack the experience to recommend any of these options because we (SourceGear) have always written our own online store software.
One of the reasons we wrote our own store is because it gives us completely control over the experience of our user. We are always trying to make it easier for people to buy our product. We want our online store to immediately generate serial numbers and e-mail them to customers.
Whatever approach you choose, the following suggestions may help you in your quest to keep things simple:
The last thing your customer needs is yet another username and password to remember.
Does your online store really need to create a user account for everybody who makes a purchase? Probably not.
Can't you just take their money and give them software? Probably.
I think Amazon too heavily influences the expectations for online shopping. In my opinion, Amazon has a really incredible shopping cart system. It is extremely powerful, and yet it feels extremely simple.
So we convince ourselves that our online store needs to be as cool as Amazon's, but that just isn't true. Amazon truly is an online store. The shopping cart metaphor makes sense. The Amazon store is immensely large and contains a staggering number of products. It's a pleasant place. It only makes sense that we would want to leisurely wander around the store, selecting various products as we go, stopping at the checkout line on our way out to pay the bill.
Your small ISV simply doesn't function on that kind of scale.  You sell only a few products; perhaps only one.  They came to buy a hot dog and they don't understand why you expect them to place it in a big shopping cart and walk halfway down the block to go pay for it.
I speak from experience and mistakes. Until recently, the SourceGear online sales system was an extremely poor clone of Amazon. In a major rewrite, we eliminated the shopping cart and simplified the entire ordering process to a single form. Everything is much simpler now.
It's fine if you need to ship some sort of physical object to your customers. However, don't make them wait for the media or documentation before they can get started. Immediately after the user places an order, let the user download the bits and start using it right away.
Even better, give serial numbers to the users to simply activate the demo(s) they are already using.
Why not?
I know that lots of people are going to disagree with me on the opinions in this article. Trusting the customer is scary. If you don't like what I've written here, then at least give serious consideration to the following:
Have I not described exactly how you want to be treated when you are the customer?
If so, then shouldn't you be treating your customers the same way?
Why not?
At every seminary and religious school, preachers are taught to "preach above themselves". After all, pastors are just people. They have problems just like the rest of us. It takes a lot of audacity to stand up before a congregation every Sunday and talk about how to live a better life. If perfection were a requirement for the job, then the pulpit would always be empty.
I face a similar problem in my writings, but especially in this article. Several times here I have used my own company as an example, but we are very far from perfect. Our demo doesn't always just work. Our online store has quirks. Sometimes we are too slow in responding to technical support. Just like every sermon I have ever heard in church, I preach to myself, and Monday morning I will try and do better.
For most small ISVs, responsive sales are the way to close the gap. Let the customer be in charge, but make the gap easy to cross by moving your product as close to them as possible.
Eric Sink is the non-legendary founder of SourceGear, a developer tools ISV located in Illinois. Three weeks ago, Eric hit a 9-iron 160 yards. He's still gloating about it. Eric's weblog is at https://ericsink.com/.
This article originally appeared on the MSDN website.


Page 1 of 1
Time to kill and nothing to do
Posted:
Sun Jan 21, 2007 3:03 pm
by David T.
Well, seeing as how stopping my WoW addiction is leaving me with countless hours of time to be spent either watching sports, doing homework, talking to people or picking my nose I think it's time that I pick up modeling again.
I believe I'll start taking a look at maya. The only 2 modeling programs I've used are max and lightwave. I didn't like lightwave and we all know I love max. However, our attempts at porting models into formats in max has not worked.
So, uh... hi again. Welcome to the learning process version 2.0.
Posted:
Mon Jan 22, 2007 1:31 pm
by Karl G.
Woot!!!!  Hard.
No, I'm serious.
Posted:
Mon Jan 22, 2007 9:26 pm
by Karl G.
That's unfortunate
It's not a big deal to model in MAX anyway, as long as you're doing static stuff. I think I'm going to yoink EJ's content ::evil grin::
Posted:
Tue Jan 23, 2007 6:28 pm
by Joe M.
that is unfortunate. oh, well. onward, ever onward.
Posted:
Tue Jan 23, 2007 9:07 pm
by David T.
So I installed 3ds and I'm working on creating my first actual piece of artwork to relearn some skills. We'll see how it turns out.
Posted:
Tue Jan 23, 2007 9:11 pm
by Karl G.
Great! Have you tried out the map-maker? We need to replace all of the items in there (and the more shared textures, the better--I remember you were really good at reusing textures with the weapons models from ages ago). You don't have to worry about the number of textures you use either--just keep them smallish
Posted:
Tue Jan 23, 2007 9:15 pm
by David T.
Blech, reused textures.
Anyway, when I say piece of art, I mean actual art - like usable as a background. Probably going to have to send it to Rhino to render it up. Again, we'll see.
No, I haven't used the map maker.
Posted:
Tue Jan 23, 2007 10:45 pm
by David T.
This is proving to be pretty interesting. Trying my hand at architecture and it's a challenge. I'm going to have to redetail a lot of this stuff when I'm done. So far I'm getting the positions of the objects I have created set up. Some are dummy parts, some aren't. Lighting is something I've never had to worry about before and it's proving difficult to control also. I'll post something when I have it.
Posted:
Wed Jan 24, 2007 5:41 pm
by David T.
Of course, my copy of max with mental ray (the rendering plugin that is now standard with max) is on my desktop and I can't access it (bjdfjafjfdjklfdjklfdjkl).
Anywho here's my return to modeling:
Slum Stacker 1 - A shack for a slums scene I am creating.
As you can see this is visibly high polygon, this is not intended for a game environment. It isn't textured (as photoshop is also on my desktop bhdfakjfakdfjafdfafdfjkdafdj*2) but I'm getting my ability back.
Posted:
Wed Jan 24, 2007 5:49 pm
by Karl G.
That's great looking!
Hey if you need *anything* let me know, and I can mail you a CD with it (or DVD with ISO images or install kits, etc). Just PM me.
Posted:
Wed Jan 24, 2007 7:05 pm
by Joe M.
wow. that does look great!
Posted:
Wed Jan 24, 2007 7:21 pm
by David T.
Here's what I have for the scene so far:
A lot more detail needs to be done. More trash, rubble, and probably a couple more buildings (not including the background change, adding in lesser-detail, taller buildings). Maybe I'll stick the camera in an alleyway between 2 buildings, might be interesting.
I want to see if I can do water effects also but that would be a dream scenario.
Anyway, that's it for today, I did enough work on that for now.
Posted:
Thu Jan 25, 2007 2:16 am
by David T.
I'm getting the hang of this a little bit...
Oh yeah baby. This is the way it's meant to be.
Finishing touches will be a lot more trash along with random widgets around the buildings. Maybe some torn up cloth and such hanging off buildings. I want a busier foreground also.
So there we go.
Posted:
Thu Jan 25, 2007 8:09 am
by Karl G.
Sweet!!! Can you make a big render for my background?
Posted:
Thu Jan 25, 2007 11:59 am
by David T.
It's a WIP... needs to have touchups. When I'm done I'll render them in several different sizes.
Posted:
Thu Jan 25, 2007 2:25 pm
by David T.
Slums Streets - David Thomas 2007
other sizes:
Slums Streets 1280 x 800 (Widescreen)
Slums Streets 1280 x 1024
Slums Streets 1600 x 1200
I'm pretty pleased with how it turned out. I should've unified the terrain but I figure what the heck, good enough.
Next Project
Posted:
Wed Feb 07, 2007 7:25 pm
by David T.
My next project is my second character.
Codename: George (Homo Erectus)
Laying out the face at the moment.
This is also going to be a high polygon piece. Maybe I'll try some voice synching with this character, that would be ideal though.
Posted:
Wed Feb 07, 2007 7:40 pm
by Joe M.
Wow, David. That slum scene looks great. Stolen for my desktop, that's for sure...
Codename: George continues
Posted:
Wed Feb 21, 2007 10:20 pm
by David T.
Codename: George has a head.
Posted:
Thu Feb 22, 2007 8:52 am
by Joe M.
that's one ugly motherf**ker.
but a well-modeled one, even though he won't win any beauty pageants.
Posted:
Thu Feb 22, 2007 11:27 am
by David T.
Nope, haha. Just a character with what I hope will be a personality. We'll see.
Posted:
Thu Feb 22, 2007 11:55 am
by Karl G.
he's ready to chomp some face


This is an Angular 2 Application that uses spotify web APi to find artist, display albums and tracksper


Preparation time
30 mins to 1 hour
Cooking time
1 to 2 hours
Serves
Makes 1 large cake
A spectacular four-layered Black Forest gâteau for people who are serious about chocolate.
Preheat the oven to 180C/170C Fan/Gas 4. Grease and line two 20cm/8in sandwich tins. Set up a freestanding mixer with a paddle attachment.
For the cake, place all of the ingredients, except the boiling water and icing sugar, into a mixing bowl. Beat until all the ingredients are incorporated and the mixture is smooth. Slowly add the boiling water and mix (the mixture will be very runny).
Divide the batter equally between the tins and bake for 25-30 minutes.
When the cakes are cooked, let them cool in the tin for 10 minutes. Line a wire rack with greaseproof paper and dust it with icing sugar (the cakes are sticky). Turn out the cakes and leave to cool completely on the prepared rack. When the cakes have cooled, cut both the cakes in half horizontally, to make to 4 layers.
For the cherry jam, pour the cherries, sugar and lemon juice into a saucepan. Heat gently until the sugar is dissolved. Put 4 tablespoons of the liquid from the pan into a mug and mix in the cornflour. Stir the mixture into jam, along with the cherry and chocolate flavour syrup and cherry essence. Bring to the boil, stirring constantly until thick. Reduce the heat to a simmer. Pour the jam onto a large plate or shallow bowl and transfer to the fridge to cool. (CAUTION: Be careful not to burn yourself when handling the jam.)
For the chocolate mirror glaze, mix the gelatine with 3 tablespoons water and set aside to dissolve. In a saucepan, heat the sugar, cream and 6 tablespoons water until it boils. Remove from the heat and add the glucose and cocoa powder. Stir in the gelatine, mix well and strain through a fine sieve. Set aside to cool to room temperature.
For the syrup, mix the ingredients together and set aside.
For the chocolate buttercream, melt the chocolate. You can do this in a microwave or in a heatproof bowl suspended over a bowl of simmering water. Set aside to cool slightly (the chocolate should be warm but not hot).
Cream the butter and icing sugar together in a large bowl. When the mixture is smooth, add the melted chocolate and mix until combined. Add a little milk if the buttercream is too thick.
For the chocolate ganache, place the chocolate in a heatproof bowl. Gently heat the cream in a saucepan until it just comes to the boil, then pour it over the chocolate. Stir the mixture until the chocolate is melted. Set aside in a cool place (the ganache will have a spreadable consistency when it’s cool).
For the whipped cream, beat the cream using a hand held mixer until soft peaks form when the whisk is removed. Add the icing sugar, cornflour and milk powder and beat until firm. Refrigerate until ready to use.
For the chocolate decorations (if using), melt two-thirds of the chocolate in a heatproof bowl suspended over a pan of simmering water. When the chocolate is melted, remove it from the heat. Add the remainder of the chocolate and stir until melted. Cover the bowl with a tea towel to retain some of the heat.
Layout the acetate and drizzle the melted chocolate into decorative shapes. (For a neater finish, use a piping bag.) Set aside in a cool place for the shapes to set.
To assemble the cake, brush each layer of cake with the syrup. Place a layer of cake on a serving plate. Spread a layer of chocolate ganache on top and then a layer of whipped cream. Spoon over some cherry jam. Repeat with two more layers of cake and place the final layer on top.
Cover the whole cake in butter cream (if you have time freeze the cake for 10 minutes to help it set). Pour the chocolate mirror glaze over the top of the cake (you should have a smooth glossy surface on the top of the cake with the glaze drizzling down the sides attractively).
Decorate the cake by piping rosettes of the chocolate ganache on top, add the chocolate decorations (if using) and finish with a few glacé cherries.


| Package | com.wemakedigital.state.model |
| Class | public class StateProxy |
| Inheritance | StateProxy org.puremvc.as3.multicore.patterns.proxy.Proxy |
| Implements | org.puremvc.as3.multicore.interfaces.IProxy |
| Method | Defined by | ||
|---|---|---|---|
|
Class constructor.
| StateProxy | ||
|
actionResponse(action:String):void
Receives asynchrounous response from an action called by the current
event transition.
| StateProxy | ||
|
callEvent(event:String, confirm:Boolean = false):void
Calls a state machine event.
| StateProxy | ||
|
callStateChange(state:String, confirm:Boolean = false):void
Calls a state change directly.
| StateProxy | ||
|
clearStates():void
Clears all existing states.
| StateProxy | ||
|
conditionResponse(condition:String, result:Boolean):void
Receives responses from transition condition commands.
| StateProxy | ||
|
confirmResponse(id:String, result:Boolean):void
Receives responses from a call confirmation.
| StateProxy | ||
|
createState(id:String):State
Registers a new state with the state proxy.
| StateProxy | ||
|
enterResponse(state:String, responder:IStateResponder):void
Informs the proxy of a response to state enter notification.
| StateProxy | ||
|
exitResponse(state:String, responder:IStateResponder):void
Informs the proxy of a response to state exit notification.
| StateProxy | ||
|
getCurrentEvent():String
Gets the event currently being processed.
| StateProxy | ||
|
Gets the current state object.
| StateProxy | ||
|
Gets the initial states.
| StateProxy | ||
|
getLastState():String
Get the previous state.
| StateProxy | ||
|
getPreviousEvent():String
Gets the last processed event.
| StateProxy | ||
|
Gets a registered state object by id.
| StateProxy | ||
|
getStateHistory():Array
Get the previous states IDs.
| StateProxy | ||
|
getTargetState():String
Gets the target state for the accepted transition.
| StateProxy | ||
|
registerEvent(event:String):void
Registers an event with the StateEventCommand
| StateProxy | ||
|
removeState(id:String):void
Removes a state from the state proxy.
| StateProxy | ||
|
setInitialState(id:String):void
Sets the initial states.
| StateProxy |
| Constant | Defined by | ||
|---|---|---|---|
| ADD_RESPONDER : String = "StateProxy.ADD_RESPONDER" [static]
Type sent with state notification by a state responder adding it as a
responder to changes in the state.
| StateProxy | ||
| CALL : String = "StateProxy.CALL" [static]
Type sent with state or event notification telling the state machine
not to ask for confirmation.
| StateProxy | ||
| CALL_CONFIRM : String = "StateProxy.CALL_CONFIRM" [static]
Type sent with state or event notification telling the state machine
to ask for confirmation before calling.
| StateProxy | ||
| CALLED : String = "StateProxy.CALLED" [static]
Notification sent when a state change or state event is successfully called.
| StateProxy | ||
| COMPLETE : String = "StateProxy.COMPLETE" [static]
Notification sent when a state change or state event has completed.
| StateProxy | ||
| CONFIRM : String = "StateProxy.CONFIRM" [static]
Notification sent asking for confirmation before proceeding with an
event or state call.
| StateProxy | ||
| CONFIRM_RESPONSE : String = "StateProxy.CONFIRM_RESPONSE" [static]
Notification sent in response to a StateProxy.CONFIRM notification.
| StateProxy | ||
| ENTER : String = "StateProxy.ENTER" [static]
Type sent with state notification by the state proxy instructing all
responders to enter the state.
| StateProxy | ||
| ENTER_RESPONSE : String = "StateProxy.ENTER_RESPONSE" [static]
Type sent with state notification by a state responder informing the
state proxy that is has entered the state.
| StateProxy | ||
| ERROR : String = "StateProxy.ERROR" [static]
Notification sent when a state change or state event error occurs.
| StateProxy | ||
| EVENT : String = "StateProxy.EVENT" [static]
Type sent with CALLED, ERROR, or COMPLETE state notification.
| StateProxy | ||
| EXIT : String = "StateProxy.EXIT" [static]
Type sent with state notification by the state proxy instructing all
responders to exit the state.
| StateProxy | ||
| EXIT_RESPONSE : String = "StateProxy.EXIT_RESPONSE" [static]
Type sent with state notification by a state responder informing the
state proxy that is has exited the state.
| StateProxy | ||
| NAME : String = "StateProxy" [static]
Defines the name of the Proxy.
| StateProxy | ||
| REMOVE_RESPONDER : String = "StateProxy.REMOVE_RESPONDER" [static]
Type sent with state notification by a state responder removing it as
a responder to changes in the state.
| StateProxy | ||
| STATE : String = "StateProxy.STATE" [static]
Type sent with CALLED, ERROR, or COMPLETE state notification.
| StateProxy |
| StateProxy | () | constructor |
public function StateProxy()
Class constructor.
| actionResponse | () | method |
public function actionResponse(action:String):void
Receives asynchrounous response from an action called by the current event transition.
Parametersaction:String — The action notification name.
|
| callEvent | () | method |
public function callEvent(event:String, confirm:Boolean = false):void
Calls a state machine event.
Parametersevent:String — The event notification name.
|
|
confirm:Boolean (default = false )
|
| callStateChange | () | method |
public function callStateChange(state:String, confirm:Boolean = false):void
Calls a state change directly.
Parametersstate:String — The event notification name.
|
|
confirm:Boolean (default = false )
|
| clearStates | () | method |
public function clearStates():void
Clears all existing states.
| conditionResponse | () | method |
public function conditionResponse(condition:String, result:Boolean):void
Receives responses from transition condition commands.
Parameterscondition:String — The condition id.
|
|
result:Boolean — The result of the condition, true or false.
|
| confirmResponse | () | method |
public function confirmResponse(id:String, result:Boolean):void
Receives responses from a call confirmation.
Parametersid:String — The event or state id.
|
|
result:Boolean — The result of the confirmation, true or false.
|
| createState | () | method |
public function createState(id:String):State
Registers a new state with the state proxy.
Parametersid:String — The state identifier and notification name.
|
State —
The new State instance.
|
| enterResponse | () | method |
public function enterResponse(state:String, responder:IStateResponder):void
Informs the proxy of a response to state enter notification.
Parametersstate:String — The state identifier and notification name.
|
|
responder:IStateResponder — An IStateResponder instance.
|
| exitResponse | () | method |
public function exitResponse(state:String, responder:IStateResponder):void
Informs the proxy of a response to state exit notification.
Parametersstate:String — The state identifier and notification name.
|
|
responder:IStateResponder — An IStateResponder instance.
|
| getCurrentEvent | () | method |
public function getCurrentEvent():String
Gets the event currently being processed.
ReturnsString |
| getCurrentState | () | method |
public function getCurrentState():State
Gets the current state object.
ReturnsState —
The State instance.
|
| getInitialState | () | method |
public function getInitialState():State
Gets the initial states.
ReturnsState —
The State instance.
|
| getLastState | () | method |
public function getLastState():String
Get the previous state.
ReturnsString — A state ID.
|
| getPreviousEvent | () | method |
public function getPreviousEvent():String
Gets the last processed event.
ReturnsString |
| getState | () | method |
public function getState(id:String):State
Gets a registered state object by id.
Parametersid:String — The state identifier and notification name.
|
State —
The State instance.
|
| getStateHistory | () | method |
public function getStateHistory():Array
Get the previous states IDs.
ReturnsArray — An Array of state IDs.
|
| getTargetState | () | method |
public function getTargetState():String
Gets the target state for the accepted transition.
ReturnsString |
| registerEvent | () | method |
public function registerEvent(event:String):void
Registers an event with the StateEventCommand
Parametersevent:String — The event notification name.
|
| removeState | () | method |
public function removeState(id:String):void
Removes a state from the state proxy.
Parametersid:String — The state identifier and notification name.
|
| setInitialState | () | method |
public function setInitialState(id:String):void
Sets the initial states.
Parametersid:String — The state identifier and notification name.
|
| ADD_RESPONDER | constant |
public static const ADD_RESPONDER:String = "StateProxy.ADD_RESPONDER"
Type sent with state notification by a state responder adding it as a responder to changes in the state.
| CALL | constant |
public static const CALL:String = "StateProxy.CALL"
Type sent with state or event notification telling the state machine not to ask for confirmation.
| CALL_CONFIRM | constant |
public static const CALL_CONFIRM:String = "StateProxy.CALL_CONFIRM"
Type sent with state or event notification telling the state machine to ask for confirmation before calling.
| CALLED | constant |
public static const CALLED:String = "StateProxy.CALLED"
Notification sent when a state change or state event is successfully called.
| COMPLETE | constant |
public static const COMPLETE:String = "StateProxy.COMPLETE"
Notification sent when a state change or state event has completed.
| CONFIRM | constant |
public static const CONFIRM:String = "StateProxy.CONFIRM"
Notification sent asking for confirmation before proceeding with an event or state call.
| CONFIRM_RESPONSE | constant |
public static const CONFIRM_RESPONSE:String = "StateProxy.CONFIRM_RESPONSE"
Notification sent in response to a StateProxy.CONFIRM notification.
| ENTER | constant |
public static const ENTER:String = "StateProxy.ENTER"
Type sent with state notification by the state proxy instructing all responders to enter the state.
| ENTER_RESPONSE | constant |
public static const ENTER_RESPONSE:String = "StateProxy.ENTER_RESPONSE"
Type sent with state notification by a state responder informing the state proxy that is has entered the state.
| ERROR | constant |
public static const ERROR:String = "StateProxy.ERROR"
Notification sent when a state change or state event error occurs.
| EVENT | constant |
public static const EVENT:String = "StateProxy.EVENT"
Type sent with CALLED, ERROR, or COMPLETE state notification.
| EXIT | constant |
public static const EXIT:String = "StateProxy.EXIT"
Type sent with state notification by the state proxy instructing all responders to exit the state.
| EXIT_RESPONSE | constant |
public static const EXIT_RESPONSE:String = "StateProxy.EXIT_RESPONSE"
Type sent with state notification by a state responder informing the state proxy that is has exited the state.
| NAME | constant |
public static const NAME:String = "StateProxy"
Defines the name of the Proxy.
| REMOVE_RESPONDER | constant |
public static const REMOVE_RESPONDER:String = "StateProxy.REMOVE_RESPONDER"
Type sent with state notification by a state responder removing it as a responder to changes in the state.
| STATE | constant |
public static const STATE:String = "StateProxy.STATE"
Type sent with CALLED, ERROR, or COMPLETE state notification.


-
2020 - Present
Fullstack developer
Innerwork Solution PVT LTD
Banglore
Still learning
-
2016 - 2020
Student
BKBIET
Pilani,Rajasthan
Student
2016 - 2020
student
-
2013 - 2016
student
mps
Jaipur,Rajasthan
learner
-
2012 - 2013
student
MPS
Jaipur,Rajasthan
learner
2012 - 2013
Student
-
2010 - 2012
student
MPS
Jaipur.Rajasthan


| {{"funds.withdraw_history." + withdraw.aasm_state | t}} | {{ withdraw.currency | uppercase }} | {{withdraw.amount | number : withdraw_channel.fixed}} | {{withdraw.created_at | date:'yyyy-MM-dd HH:mm'}} | ||||||
|
|||||||||
|
{{ "funds.withdraw_history.no_data" | t }} |


Jose Mourinho keen to ‘do a Mauricio’ with five-year stay at Tottenham
by FSA EditorTottenham gave Jose Mourinho a three-and-a-half-year contract and he would like to stay longer in what he expects to be a final English job.
Jose Mourinho knows Tottenham is probably his last major club job in English football and would love to emulate the length of Mauricio Pochettino’s stay in north London.
Spurs sacked Pochettino after five-and-a-half years at the helm on Tuesday, moving swiftly to secure former Chelsea, Real Madrid and Manchester United boss Mourinho as his replacement.
The 56-year-old has penned terms until the end of the 2022-23 season and spoke glowingly of the squad, facilities and wider project he has inherited in north London when facing the media for the first time in his new role.
As such, he has designs on staying in charge even longer and matching Pochettino’s longevity.
“I would love to stay many years,” he said. “When I say many years, I know realistically how football is.
“If I could do a Mauricio, five-and-a-half years, it would be amazing.”
A three-time Premier League winner across two spells at Chelsea, Mourinho suggested he has 10 years left in the game when pondering his long-term future.
That means, if all goes to plan at Spurs, this job will conclude his time in a division with which he will be forever associated.
Other potential stops sketched out for his final years could be boyhood club Vitoria Setubal back in Portugal and his national team,
“So, I’m 56, 61 [after five years at Tottenham],” he added.
“Ten more years – Vitoria Setubal, Portugal. It’s maybe the last [job in England], yeah.”
The immediate item on the agenda for Mourinho is a trip to face old foe Manuel Pellegrini and a West Ham side enduring a similarly underwhelming campaign to Spurs.
Tottenham are winless in the Premier League since the end of September, with a return of three draws from their past five matches.
They lie 14th – two places and a point better off than West Ham, who last won six games ago at home to Mourinho’s old employers from Old Trafford.


|
Contiki 2.5
|
DMA driver header. More...
Go to the source code of this file.
Data Structures | |
| struct | dma_config_t |
| DMA configuration structure. More... | |
Typedefs | |
| typedef enum dma_trigger_t | dma_trigger_t |
| DMA triggers. | |
| typedef enum dma_vlen_t | dma_vlen_t |
| variable DMA length modes | |
| typedef enum dma_inc_t | dma_inc_t |
| address increment modes | |
| typedef enum dma_type_t | dma_type_t |
| transfer types | |
| typedef struct dma_config_t | dma_config_t |
| DMA configuration structure. | |
Enumerations | |
| enum | dma_trigger_t { DMA_T_NONE = 0, DMA_T_PREV = 1, DMA_T_T1_CH0 = 2, DMA_T_T1_CH1 = 3, DMA_T_T1_CH2 = 4, DMA_T_T2_COMP = 5, DMA_T_T2_OVFL = 6, DMA_T_T3_CH0 = 7, DMA_T_T3_CH1 = 8, DMA_T_T4_CH0 = 9, DMA_T_T4_CH1 = 10, DMA_T_ST = 11, DMA_T_IOC_0 = 12, DMA_T_IOC_1 = 13, DMA_T_URX0 = 14, DMA_T_UTX0 = 15, DMA_T_URX1 = 16, DMA_T_UTX1 = 17, DMA_T_FLASH = 18, DMA_T_RADIO = 19, DMA_T_ADC_CHALL = 20, DMA_T_ADC_CH11 = 21, DMA_T_ADC_CH21 = 22, DMA_T_ADC_CH32 = 23, DMA_T_ADC_CH42 = 24, DMA_T_ADC_CH53 = 25, DMA_T_ADC_CH63 = 26, DMA_T_ADC_CH74 = 27, DMA_T_ADC_CH84 = 28, DMA_T_ENC_DW = 29, DMA_T_ENC_UP = 30 } |
| DMA triggers. More... | |
| enum | dma_vlen_t { DMA_VLEN_LEN = (0 << 5), DMA_VLEN_N1 = (1 << 5), DMA_VLEN_N = (2 << 5), DMA_VLEN_N2 = (3 << 5), DMA_VLEN_N3 = (4 << 5), DMA_VLEN_RES1 = (5 << 5), DMA_VLEN_RES2 = (6 << 5), DMA_VLEN_LEN2 = (7 << 5) } |
| variable DMA length modes More... | |
| enum | dma_inc_t { DMA_NOINC = 0, DMA_INC = 1, DMA_INC2 = 2, DMA_DEC = 3 } |
| address increment modes More... | |
| enum | dma_type_t { DMA_SINGLE = 0, DMA_BLOCK = 1, DMA_RPT = 2, DMA_BLOCK_RPT = 3 } |
| transfer types More... | |
Functions | |
| void | dma_ISR (void) __interrupt(DMA_VECTOR) |
| DMA interrupt service routine. |
DMA driver header.
Definition in file dma.h.
| enum dma_inc_t |
| enum dma_trigger_t |
DMA triggers.
| enum dma_type_t |
| enum dma_vlen_t |
variable DMA length modes
| void dma_ISR | ( | void | ) |
DMA interrupt service routine.
if callback defined a poll is made to that process
Definition at line 35 of file dma_intr.c.
References process_poll().


In this project I created a vacation website and made bundling packages! I used the programs html, terminal, and vs code, as well as bootstrap (Github Repo Link)
In this project I created a website named boring lecture using lorem ipsum! I used the programs html, terminal, and vs code (Github Repo Link)
In this project I created a resort getaway webpage and all the resort detials! I used the programs html, terminal, and vs code (Github Repo Link)
In this project I created a band page with concert times and photos! I used the programs html, terminal, and vs code (Github Repo Link)
Worked as a host and waiter
Worked as a full service cabinet maker
Worked as a kids church leader and a food bank manager
*from favotire to least favorite*


Events
My Age is {{ age }}
Add a year
Subtract a Year
Add 10 year
Subtract 10 Year
My age is {{ age }}
{{ x }}, {{ y }}


Home
About Us
Login
Vendor Login
Members of the team
Megan Jeffcoat - Product Manager
Jenn Hott
Ali Khan
Sterling Ford
Richard Machado


Keyword Method
Declares the beginning of a class method.
Syntax
Method Identifier: ReturnType ( Parameters ) [ Property ] [ Abstract ] [ Final ]
Statements...
End [ Method ]
Description
The Method keyword begins the declaration of a class method.
Please see the Methods section of the monkey language reference for more information on methods.
See also
End Class Property Abstract Final
Language reference (Classes)
Language reference (Methods)
Examples
An example of methods as statements.
Class GameObject Field x:Float Field y:Float Method PrintX () Print x End Method PrintY () Print y End End Local g:GameObject = New GameObject p.x = 100 p.y = 200 ' Accessing method... p.PrintX p.PrintY
Strict mode version of above GameObject class. (Note use of Void return type.)
Class GameObject Field x:Float Field y:Float Method PrintX:Void () Print x End Method PrintY:Void () Print y End End
Method returning value of Float type.
Class GameObject Method AddFloats:Float (value1:Float, value2:Float) Return value1 + value2 End End Local g:GameObject = New GameObject ' Accessing method... Print g.AddFloats (1.5, 2.0)


{% extends 'base.html' %} {% block content %}
The form has errors. Please check the messages below fields.


htbhf-claimant-service Reports
Unit Test results
Smoke Test results
Coverage report
Spotbugs report
PMD report
Checkstyle report


@Target([AnnotationTarget.FUNCTION]) annotation class RPCReturnsObservables
If an RPC is tagged with this annotation it may return one or more observables anywhere in its response graph. Calling such a method comes with consequences: it's slower, and consumes server side resources as observations will buffer up on the server until they're consumed by the client.
<init> |
If an RPC is tagged with this annotation it may return one or more observables anywhere in its response graph. Calling such a method comes with consequences: it's slower, and consumes server side resources as observations will buffer up on the server until they're consumed by the client. RPCReturnsObservables() |


| tset(1) | General Commands Manual | tset(1) |
First, tset retrieves the current terminal mode settings for your terminal. It does this by successively testing
to obtain terminal settings. Having retrieved these settings, tset remembers which file descriptor to use when updating settings.
Next, tset determines the type of terminal that you are using. This determination is done as follows, using the first terminal type found.
1. The terminal argument specified on the command line.
2. The value of the TERM environmental variable.
3. (BSD systems only.) The terminal type associated with the standard error output device in the /etc/ttys file. (On System-V-like UNIXes and systems using that convention, getty does this job by setting TERM according to the type passed to it by /etc/inittab.)
4. The default terminal type, “unknown”.
If the terminal type was not specified on the command-line, the -m option mappings are then applied (see the section TERMINAL TYPE MAPPING for more information). Then, if the terminal type begins with a question mark (“?”), the user is prompted for confirmation of the terminal type. An empty response confirms the type, or, another type can be entered to specify a new type. Once the terminal type has been determined, the terminal description for the terminal is retrieved. If no terminal description is found for the type, the user is prompted for another terminal type.
Once the terminal description is retrieved,
before doing the terminal initialization described above. Also, rather than using the terminal initialization strings, it uses the terminal reset strings.
The reset command is useful after a program dies leaving a terminal in an abnormal state:
<LF>reset<LF>
(the line-feed character is normally control-J) to get the terminal to work, as carriage-return may no longer work in the abnormal state.
The arguments for the -e, -i, and -k options may either be entered as actual characters or by using the “hat” notation, i.e., control-h may be specified as “^H” or “^h”.
If neither -c or -w is given, both options are assumed.
When the -s option is specified, the commands to enter the information into the shell's environment are written to the standard output. If the SHELL environmental variable ends in “csh”, the commands are for csh, otherwise, they are for sh. Note, the csh commands set and unset the shell variable noglob, leaving it unset. The following line in the .login or .profile files will initialize the environment correctly:
eval `tset -s options ... `
The -m options maps from some set of conditions to a terminal type, that is, to tell tset “If I'm on this port at a particular speed, guess that I'm on that kind of terminal”.
The argument to the -m option consists of an optional port type, an optional operator, an optional baud rate specification, an optional colon (“:”) character and a terminal type. The port type is a string (delimited by either the operator or the colon character). The operator may be any combination of “>”, “<”, “@”, and “!”; “>” means greater than, “<” means less than, “@” means equal to and “!” inverts the sense of the test. The baud rate is specified as a number and is compared with the speed of the standard error output (which should be the control terminal). The terminal type is a string.
If the terminal type is not specified on the command line, the -m mappings are applied to the terminal type. If the port type and baud rate match the mapping, the terminal type specified in the mapping replaces the current type. If more than one mapping is specified, the first applicable mapping is used.
For example, consider the following mapping: dialup>9600:vt100. The port type is dialup , the operator is >, the baud rate specification is 9600, and the terminal type is vt100. The result of this mapping is to specify that if the terminal type is dialup, and the baud rate is greater than 9600 baud, a terminal type of vt100 will be used.
If no baud rate is specified, the terminal type will match any baud rate. If no port type is specified, the terminal type will match any port type. For example, -m dialup:vt100 -m :?xterm will cause any dialup port, regardless of baud rate, to match the terminal type vt100, and any non-dialup port type to match the terminal type ?xterm. Note, because of the leading question mark, the user will be queried on a default port as to whether they are actually using an xterm terminal.
No whitespace characters are permitted in the -m option argument. Also, to avoid problems with meta-characters, it is suggested that the entire -m option argument be placed within single quote characters, and that csh users insert a backslash character (“\”) before any exclamation marks (“!”).
Later in 4.1BSD (December 1980), Mark Horton added a call to the tset program using the -I and -Q options, i.e., using that to improve the terminal modes. With those options, that version of reset did not use the termcap database.
A separate tset command was provided in 2BSD by Eric Allman. While the oldest published source (from 1979) provides both tset and reset, Allman's comments in the 2BSD source code indicate that he began work in October 1977, continuing development over the next few years.
In September 1980, Eric Allman modified tset, adding the code from the existing “reset” feature when tset was invoked as reset. Rather than simply copying the existing program, in this merged version, tset used the termcap database to do additional (re)initialization of the terminal. This version appeared in 4.1cBSD, late in 1982.
Other developers (e.g., Keith Bostic and Jim Bloom) continued to modify tset until 4.4BSD was released in 1993.
The ncurses implementation was lightly adapted from the 4.4BSD sources for a terminfo environment by Eric S. Raymond<EMAIL_ADDRESS>The AT&T tput utility (AIX, HPUX, Solaris) incorporated the terminal-mode manipulation as well as termcap-based features such as resetting tabstops from tset in BSD (4.1c), presumably with the intention of making tset obsolete. However, each of those systems still provides tset. In fact, the commonly-used reset utility is always an alias for tset.
The tset utility provides for backward-compatibility with BSD environments (under most modern UNIXes, /etc/inittab and getty(1) can set TERM appropriately for each dial-up line; this obviates what was tset's most important use). This implementation behaves like 4.4BSD tset, with a few exceptions specified here.
A few options are different because the TERMCAP variable is no longer supported under terminfo-based ncurses:
There was an undocumented 4.4BSD feature that invoking tset via a link named “TSET” (or via any other name beginning with an upper-case letter) set the terminal to use upper-case only. This feature has been omitted.
The -A, -E, -h, -u and -v options were deleted from the tset utility in 4.4BSD. None of them were documented in 4.3BSD and all are of limited utility at best. The -a, -d, and -p options are similarly not documented or useful, but were retained as they appear to be in widespread use. It is strongly recommended that any usage of these three options be changed to use the -m option instead. The -a, -d, and -p options are therefore omitted from the usage summary above.
Very old systems, e.g., 3BSD, used a different terminal driver which was replaced in 4BSD in the early 1980s. To accommodate these older systems, the 4BSD tset provided a -n option to specify that the new terminal driver should be used. This implementation does not provide that choice.
It is still permissible to specify the -e, -i, and -k options without arguments, although it is strongly recommended that such usage be fixed to explicitly specify the character.
As of 4.4BSD, executing tset as reset no longer implies the -Q option. Also, the interaction between the - option and the terminal argument in some historic implementations of tset has been removed.
The -c and -w options are not found in earlier implementations. However, a different window size-change feature was provided in 4.4BSD.
Obtaining the window size from the terminal description is common to both implementations, but considered obsolescent. Its only practical use is for hardware terminals. Generally speaking, a window size would be unset only if there were some problem obtaining the value from the operating system (and setupterm would still fail). For that reason, the LINES and COLUMNS environment variables may be useful for working around window-size problems. Those have the drawback that if the window is resized, those variables must be recomputed and reassigned. To do this more easily, use the resize(1) program.
This describes ncurses version 6.2 (patch 20200212).


THE ABOVE FUND IN QUESTION IS NOT CONNECTED WITH ARMS,DRUGS OR MONEY LAUNDERING. IT IS THE PRODUCT OF OVER INVOICE ON CONTRACT AWARDED IN 2003 BY NNPC, TO A FOREIGN COMPANY FOR THE TURN AROUND MAINTAINERS OF NIGERIA OIL REFINARIES IN KADUNA STATE,DELTA STATE,AND LAGOS STATES OF NIGERIA.THE CONTRACT HAS LONG BEEN EXECUTED AND PAYMENT OF THE ACTUAL CONTRACT AMOUNT MADE TO THE FOREIGN CONTRACTOR, LEAVING THE BALANCE OF $8.2M U.S DOLLARS IN A DORMANT ACCOUNT WHICH MY COLLEAGUES AND WE NOW WANT TO TRANSFER OUT OF NIGERIA INTO A RELIABLE FOREIGN ACCOUNT FOR OUR PERSONAL USE.   THIS TRANSACTION IS STRICTLY CONFIDENTIAL BUT 100% RISK FREE FOR BOTH OF US.  YOURS FAITHFULLY, DR EZE N. MARK. CHAIRMAN(TBNNPC). N:B,PLEASE FOR THE BEST INTREST AND SECURITY OF THIS TRANSACTION,SEND YOUR REPLIES TO MY PRIVATE EMAIL<EMAIL_ADDRESS>AND CALL MY PRIVATE CEL PHONE:234-80-33013920 FOR MORE EXPLANATIONS, THANKS. ________________________________________________________________________ SERVIZIO VOICE: TELEFONA e INVIA SMS dal tuo computer a tariffe vantaggiose! Scopri come telefonare e videochiamare gratis da pc a pc. http://voice.repubblica.it


All objects by default automatically update their matrices if they have been added to the scene with
const object = new THREE.Object3D();
scene.add( object );
or if they are the child of another object that has been added to the scene:
const object1 = new THREE.Object3D();
const object2 = new THREE.Object3D();
object1.add( object2 );
scene.add( object1 ); //object1 and object2 will automatically update their matrices
However, if you know the object will be static, you can disable this and update the transform matrix manually just when needed.
object.matrixAutoUpdate = false;
object.updateMatrix();
BufferGeometries store information (such as vertex positions, face indices, normals, colors, UVs, and any custom attributes) in [page:BufferAttribute buffers] - that is, [link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Typed_arrays typed arrays]. This makes them generally faster than standard Geometries, at the cost of being somewhat harder to work with.
With regards to updating BufferGeometries, the most important thing to understand is that you cannot resize buffers (this is very costly, basically the equivalent to creating a new geometry). You can however update the content of buffers.
This means that if you know an attribute of your BufferGeometry will grow, say the number of vertices, you must pre-allocate a buffer large enough to hold any new vertices that may be created. Of course, this also means that there will be a maximum size for your BufferGeometry - there is no way to create a BufferGeometry that can efficiently be extended indefinitely.
We'll use the example of a line that gets extended at render time. We'll allocate space in the buffer for 500 vertices but draw only two at first, using [page:BufferGeometry.drawRange].
const MAX_POINTS = 500;
// geometry
const geometry = new THREE.BufferGeometry();
// attributes
const positions = new Float32Array( MAX_POINTS * 3 ); // 3 vertices per point
geometry.setAttribute( 'position', new THREE.BufferAttribute( positions, 3 ) );
// draw range
const drawCount = 2; // draw the first 2 points, only
geometry.setDrawRange( 0, drawCount );
// material
const material = new THREE.LineBasicMaterial( { color: 0xff0000 } );
// line
const line = new THREE.Line( geometry, material );
scene.add( line );
Next we'll randomly add points to the line using a pattern like:
const positionAttribute = line.geometry.getAttribute( 'position' );
let x = 0, y = 0, z = 0;
for ( let i = 0; i < positionAttribute.count; i ++ ) {
positionAttribute.setXYZ( i, x, y, z );
x += ( Math.random() - 0.5 ) * 30;
y += ( Math.random() - 0.5 ) * 30;
z += ( Math.random() - 0.5 ) * 30;
}
If you want to change the number of points rendered after the first render, do this:
line.geometry.setDrawRange( 0, newValue );
If you want to change the position data values after the first render, you need to set the needsUpdate flag like so:
positionAttribute.needsUpdate = true; // required after the first render
If you change the position data values after the initial render, you may need to recompute bounding volumes so other features of the engine like view frustum culling or helpers properly work.
line.geometry.computeBoundingBox();
line.geometry.computeBoundingSphere();
[link:https://jsfiddle.net/t4m85pLr/1/ Here is a fiddle] showing an animated line which you can adapt to your use case.
[example:webgl_custom_attributes WebGL / custom / attributes]
[example:webgl_buffergeometry_custom_attributes_particles WebGL / buffergeometry / custom / attributes / particles]
All uniforms values can be changed freely (e.g. colors, textures, opacity, etc), values are sent to the shader every frame.
Also GLstate related parameters can change any time (depthTest, blending, polygonOffset, etc).
The following properties can't be easily changed at runtime (once the material is rendered at least once):
Changes in these require building of new shader program. You'll need to set
material.needsUpdate = true
Bear in mind this might be quite slow and induce jerkiness in framerate (especially on Windows, as shader compilation is slower in DirectX than OpenGL).
For smoother experience you can emulate changes in these features to some degree by having "dummy" values like zero intensity lights, white textures, or zero density fog.
You can freely change the material used for geometry chunks, however you cannot change how an object is divided into chunks (according to face materials).
If the number of materials / chunks is small, you could pre-divide the object beforehand (e.g. hair / face / body / upper clothes / trousers for a human, front / sides / top / glass / tire / interior for a car).
If the number is large (e.g. each face could be potentially different), consider a different solution, such as using attributes / textures to drive different per-face look.
[example:webgl_materials_car WebGL / materials / car]
[example:webgl_postprocessing_dof WebGL / webgl_postprocessing / dof]
Image, canvas, video and data textures need to have the following flag set if they are changed:
texture.needsUpdate = true;
Render targets update automatically.
[example:webgl_materials_video WebGL / materials / video]
[example:webgl_rtt WebGL / rtt]
A camera's position and target is updated automatically. If you need to change
then you'll need to recompute the projection matrix:
camera.aspect = window.innerWidth / window.innerHeight;
camera.updateProjectionMatrix();


Bought this item for the first time and wouldn't buy it again. was not expecting the blush colour that came out and, for me, a little sweet. It is, nevertheless, a palatable drink for all that
Like
You and 5 people like this
John Thomas Yesterday
I'm sorry to hear you didn't enjoy it Jimbo. It does need to be opened about an hour before drinking to give it some air and time to warm up to room temperature


Statements from Geoff
Regarding From the Depths' European Tour
For the last two months, I have been developing a process of accountability in response to being confronted about having genital herpes and not disclosing my status to several sexual partners. As part of that process, i have been working with those directly affected by my actions, as well as my bandmates, to figure out how this should affect my participation in the band From the Depths, for which i have been playing drums.
In February, our band had a meeting to discuss this, with the added complexity of having already been planning a European tour for several months. After several days of discussion, and consulting with some of the folks directly affected by my nondisclosures about herpes, we decided to continue with planning the tour, but with a focus on setting up guidelines for my behavior, figuring out a daily tour routine that would support me changing my behavior, and figuring out how to communicate with the european folks who were involved with the tour to let them know about the situation, articulate why we were making the choices we were, and give them a chance to have dialogue with us and make their own decisions about whether or not they supported what we were doing.
By the end of our discussions and planning that week in February, I felt like going on the tour was a good choice, for several reasons. As a group, my bandmates in From the Depths are people i really trust, both as friends and as people committed to accountability in our community. I felt that spending time people i felt such confidence in on a day-to-day basis, as i would do during the tour, would be the best situation i could see to really work through my problematic thoughts and behaviors in a way that coulld create lasting change. I felt like, after this period of little social interaction and time processing things in my head, it was important to put myself back in the types of situations which i associated with my problematic behavior in the past, but with the safety of the constant companionship of folks who were committed to ensuring that i made the right choices. Changing my behavior felt like one of the most important commitments i had made to the folks i didn't tell about having herpes, and so it felt like, as long as those folks felt okay about me going on the tour, it was one of the best ways i saw to make progress towards that commitment.
Since being confronted about my actions, i've felt like i've disappointed so many people, and i didn't want to disappoint people further by failing in my commitments to all the people who had put energy into organizing shows for our band, the causes we arranged to play benefits for on the tour, and my bandmates who had invested their own time and effort into making this happen. In my mind, they were my second priority, only below the folks i had directly impacted through my herpes status, and i didn't want to disappoint them any more than i already had.
In addition, i thought it was important to do things that felt like i wasn't running away from what i'd done. When i first was confronted about not telling someone i had herpes, my immediate reaction was to just want to drop out of everything and put myself in isolation. Since then, i've tried my best to resist that urge, and i felt like going on the tour and being upfront about what i'd done, and how i was dealing with it, was a more challenging choice to make. My thought was that the tour was a way to confront my actions in a meaningful way, face-to-face with folks who we share affinity with. And finally, as one might imagine, this situation has been a difficult one for my mental health, and playing drums in bands with my friends has been one of the few things that has gotten me through hard times over the last 15 years; i was hoping it could be a sourch of therapy and strength for me again, to help me stay positive through the process of confronting my problems.
While i felt positive about the decision to go on tour, and felt like the process to arrive at the decision was a good one, someone else has come out strongly and publicly against this idea, and is willing to use their considerable power within this
community to urge a boycott so long as i was going on tour. While it has been difficult to accept that this person doesn't trust the folks i've been working with through this process, I can see the reasoning behind why they think it is wrong for me to go on tour, and i don't think any good can come of having a public conflict over this, involving mainly people who are not directly connected to my actions or the people they affected. In the end, i don't feel so confident in my rightness to justify having a conflict with them about this, and i don't have the energy to take any more from my responsibility to respond to the wishes of those directly affected by my actions in the past and work towards changing my behavior. Over the past two months, there have been many people who have contacted me both for and against me going on tour, and while i feel like i listened to everyone's concerns, i continued to feel confident with the decision i made with my bandmates as a group acting in good faith. But, in the end, i don't feel so confident that i am willing to be in direct conflict with other folks in this community about it. Therefore, i have agreed not to go on the From the Depths tour.
As of this moment, it looks like a friend of the band will be able to play drums for From the Depths on this tour, so my bandmates will still be able to make good on their obligations. While they are gone, I will be working on a new plan to try to meet some of the needs/wants/goals i was hoping to achieve while on tour. I know that some of you will be disappointed by my decision not to go, and i know that some of you were disappointed by my previous plans. It has been really difficult navigating this decisionmaking process, and especially when people who i feel equally accountable to have desires that seem in conflict with each other. My deepest thanks to everyone who has offered me their wisdom through this situation, and my apologies to everyone who has been affected by my actions.
Sincerely,
Geoff
Letter Sent Out To Friends, March 2010
Hi, this is Geoff. I'm writing because there's something going on in my life that i think it's important for you and the other folks i'm connected to in this community to be aware of. This might be difficult information to hear, so keep that in mind if you choose to continue reading. Feel free to share this message with anyone you think is appropriate.
I want to let you know that I've had genital herpes for a couple years, and during this time there have been several people whom i put at risk by not telling about my status. Obviously, this was a violation of their consent, and this letter is part of me acknowledging that. While i cannot change what i've done, i am doing my best to be responsive to the wishes of those whom i've hurt and to make sure this does not happen again.
As part of taking responsibility for my actions, and to get rid of the silence that has perpetuated them, i am trying to let everyone i care about know that this happened, and communicate to you that i am open to talking about it. I also recognize that when i betray peoples' trust in our community, my actions undermine trust for all of us. So, this letter is also an apology on my part for not doing what was right from the beginning.
Failure to overcome my own discomfort with having herpes led to other people being forced to deal with my problems. To make sure that doesn't happen again, I am working with a group of people to analyze what led me to do this, and develop a long-term plan to change those thoughts and behaviors. Let me share with you what that looks like right now:
* I am seeing a professional therapist to talk about the shame and fear i feel about having herpes, and to figure out a healthier relationship to my sexuality.
* For the next year, i will limit my public participation to occur only in the company of people who are aware of my past and this process, and who are willing to hold me accountable to this plan. I will communicate about my history to new people when we are working together, traveling together, staying in the same space, etc.
* I also plan to have no new sexual partners until myself, and my support group, are confident that i can communicate with partners openly about herpes, and about sex in general. I imagine this will be no less than one year from now, and possibly longer.
* I am working with my bandmates in From the Depths to develop our own internal process for responding to this as a band. That will include informing promoters, bands, and people who host us about my situation, as well as my bandmates holding me accountable to the above commitments while we are together, and as we make plans for the future.
These are the most concrete things i have to offer at the moment. If you have any other suggestions, and would like to share them with me, i am open to hearing them. If you are interested in talking to someone who is involved in this process, here are some folks you could talk to:
Monica (North Carolina/From the Depths<EMAIL_ADDRESS>Deanna (Pittsburgh<EMAIL_ADDRESS>Cary (Pittsburgh<EMAIL_ADDRESS>While i am deeply disappointed in my own actions, i also believe i'm not the only one who finds it difficult to communicate about sex and STI status and i imagine that most of us would benefit by improving our communication in this area. To this end, i am including some links to resources about genital herpes, STIs in general, and communication between people about sex, consent, and STIs. More importantly, i hope that you can use this moment as a chance to create more open and honest communication around these issues in your own life and the lives of the people you care about.
Sincerely,
Geoff
<EMAIL_ADDRESS>links:
www.bayareafriends.org -- the best info about herpes i can find, including testing, reducing risk, etc.
www.phillyspissed.net -- group with experience supporting survivors of sexual assault, lots of good resources to download.
phillystandsup.wordpress.com -- group with experience facilitating perpetrator accountability and guidelines for what that looks like.
"learning good consent" zine -- can be downloaded at zinelibrary.info


Overview
Repounknown
Branchunknown
Commitunknown
Tests
0
Load Errors
12
Passed
0
Failures
0
Errors
0
Skipped
0
Incompatible
OpenStudio Style
issues
RuboCop
issues
Coverage
No Data
Measures
| Measure Name | Loaded | Min OS Version | Max OS Version | Tested OS Version | Tests | OS Style Errors Errors - Warnings - Info |
RuboCop Errors - Warnings - Info |
Coverage |   | ||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Pass | Fail | Error | Skip | Incom | |||||||||
| NzeHvac | Yes | 2.7.0 | None | 2.8.0 | 12 | 0 | 0 | 0 | 0 | 1 |


{% extends "layout.html" %} {% block body %} Oops! Something went wrong. I think it was:
{{ error.message }}


documentary.
Home
Publish
(current)
Read
You are not logged in
--
Write new document
Preview
×
×
Preview
×
By clicking the publish button you agree to the terms and conditions and the code of conduct
×


Source code for pyjams.tee
#!/usr/bin/env python
"""
Prints arguments on screen and in file, like Unix/Linux tee utility.
This module was written by Matthias Cuntz while at Department of Computational
Hydrosystems, Helmholtz Centre for Environmental Research - UFZ, Leipzig,
Germany, and continued while at Institut National de Recherche pour
l'Agriculture, l'Alimentation et l'Environnement (INRAE), Nancy, France.
:copyright: Copyright 2014-2022 Matthias Cuntz, see AUTHORS.rst for details.
:license: MIT License, see LICENSE for details.
.. moduleauthor:: Matthias Cuntz
The following functions are provided:
.. autosummary::
tee
History
* Written Oct 2014 by Matthias Cuntz (mc (at) macu (dot) de)
* Allow that file keyword not given, Nov 2016, Matthias Cuntz
* Make numpy doctsring format, Dec 2019, Matthias Cuntz
* Code refactoring, Sep 2021, Matthias Cuntz
* More consistent docstrings, Jan 2022, Matthias Cuntz
"""
__all__ = ['tee']
[docs]def tee(*args, **kwargs):
"""
Prints arguments on screen and in file, like Unix/Linux tee utility.
Calls print function twice, once with the keyword file and once without,
i.e. prints on sys.stdout.
Parameters
----------
*args : iterable
All arguments of the print function; will be passed to the `print`
function.
**kwargs : dict
All keyword arguments of the `print` function; will be passed to the
`print` function.
file : object
The `file` argument must be an object with a `write(string)` method. If
it is not present or None, `*args` will be printed on sys.stdout only.
Since printed arguments are converted to text strings, `print()` cannot
be used with binary mode file objects.arguments.
Returns
-------
None
If `file` is given and not None, then print will be called with `*args`
and `**kwargs` and a second time with the `file` keyword argument
removed, so that `*args` will be written to sys.stdout.
If `file` is not given or None, `*args` will only be written to
sys.stdout, i.e. *tee* is a simple wrapper of the `print` function.
Examples
--------
>>> st = 'Output on screen and in log file'
>>> ff = 'tee_log.txt'
>>> f = open(ff, 'w')
>>> tee(st, file=f)
Output on screen and in log file
>>> f.close()
>>> f = open(ff, 'r')
>>> test = f.readline()
>>> f.close()
>>> print(test[:-1]) # rm trailing newline character
Output on screen and in log file
>>> import os
>>> os.remove(ff)
>>> f=None
>>> st = 'Output only on screen'
>>> tee(st, file=f)
Output only on screen
>>> tee(st)
Output only on screen
"""
if 'file' in kwargs:
if kwargs['file'] is not None:
print(*args, **kwargs) # file
del kwargs['file']
print(*args, **kwargs) # screen
if __name__ == '__main__':
import doctest
doctest.testmod(optionflags=doctest.NORMALIZE_WHITESPACE)


Coronation Street star heads to Wednesbury for Christmas lights switch-on - in pictures
Crowds flocked to Wednesbury this weekend for Gallagher Park's first Christmas lights switch-on event.
by Rebecca SayceCoronation Street star Sam Aston was in attendance, as well as Wednesbury North Councillor Elaine Costigan.
Visitors could enjoy live music acts on stage, as well as inflatables and stalls.
Chesney From Coronation Street at Christmas Lights switch-on at Gallagher Retail Park, Wednesbury. Photo: John Kennett
Chesney From Coronation Street at Christmas Lights switch-on at Gallagher Retail Park, Wednesbury. Photo: John Kennett
Chesney From Coronation Street at Christmas Lights switch-on at Gallagher Retail Park, Wednesbury. Photo: John Kennett
Chesney From Coronation Street at Christmas Lights switch-on at Gallagher Retail Park, Wednesbury. Photo: John Kennett
Chesney From Coronation Street at Christmas Lights switch-on at Gallagher Retail Park, Wednesbury. Photo: John Kennett
Spencer Thrower, one of the organisers for the event, said he was pleased with how the inaugural switch-on had been received.
"For our first event at the park it was quite busy," he told us.
"Bosses from Gallagher Park told us that they estimated the event had increased footfall by £1,500 to £2,000 on the day.
"Mine and my friend's company, Ant Event Management, worked alongside Bescot Markets, Jellylegz Bouncy Castle Hire and more to make the event a reality.
"We do this voluntarily, just because we enjoy what we do.
"We hope to return for years to come and to make the event bigger and better than ever."


Psalms 10:18
To judge the fatherless and the oppressed, that the man of the earth may no more oppress.


wasmdec
- WebAssembly to C Decompiler
Select file
Decompile
More Examples
Add Two
Functions
Emscripten
Switch Routine
WebDSP (Signal processing library)
wasmdec on GitHub


Teacher Account Manager
Loading
Pending Requests for Teacher Accounts
| Email Address | Teacher Name | Years Teaching | School Name | City | State | Zipcode |
|---|
* - email address not confirmed
G - email address from Google
<> says:
Message for <>:
Existing Teacher Accounts
| Id String | Email Address | Teacher Name | Years Teaching | School Name | City | State | Zipcode |
|---|


WHAT is usually more significant than HOW. When building something new, I often use the "what" to shine a light on the extraneous, overly complex or mis-aligned with the goal.
Here's the tl;dr on me: 15 years combined experience building teams, scalable APIs and distributed systems; most recently co-founded startup to bring autonomous agents with "common sense" intelligence into the world; built streaming service at Netflix during initial device and international roll-outs; international speaker; Scala, Node.js, AWS and many more
What: Introduce autonomous agents that learn "common sense"
to problems that today’s smartest machines can’t solve
How:
After a period of bootstrapping, secured seed funding from a major VC
Through research and experimentation, uncovered the limits of today's deep learning technologies in solving "common sense" problems
Developed novel IP enabling autonomous agents to learn and act in messy and dynamic environments despite ambiguity
What: Bring forgotten memories to life and ensure that new ones
are safe and accessible
How:
Hired and led service engineering team, with emphasis on client integration, availability, fault tolerance and scale
Built AWS-deployed services and protocols in Scala
Standardized protocol and server stack to minimize design, build and release friction
What: Introduce people to new ideas across the web that extend
beyond their immediate social bubbles.
How:
Hired a small engineering team to re-architect StumbleUpon's recommendations infrastructure in under 3 months
Built an initial proof-of-concept prototype in Scala
What: Connect people worldwide to movies they love.
How:
Managed a medium-sized team of engineers responsible for developing the application tier that drives Netflix streaming playback
Launched streaming service in Canada, Latin America and the UK
Rapid innovation on major streaming platforms including PS3, XBox, Wii, AppleTV, Android and iOS while maintaining quality service for hundreds of consumer electronics device models
Scaled the team from 2 to 8 engineers as server traffic increased from 500 million to 3.5 billion requests per day
Led a cross-functional effort to re-architect handling of credentials on streaming devices
Provided broad streaming domain and technical expertise to many teams
What: Connect people to movies they love.
How:
Developed scalable Java server application code to support explosive growth in Netflix streaming volume and device breadth
Built server functionality for first and second generation streaming app on the PS3
Integrated server DRM component and protocol enhancements for the first ever Wii console streaming app
Introduced server delivery of subtitles and alternate language tracks to Netflix streaming devices
Added 1.5 years of life to the infrastructure delivering customers’ Recently Watched activity through scalability enhancements and data store partitioning
What: As part of the Constellation program, bring the International
Space Station up-to-date, and eventually bring humans to the Moon and to
Mars.
How:
Designed and developed RDF triple store persistence API in Java
Cross-functional liason between development and ontology modeling teams
Evangelized and implemented development practices on the team, including TDD, continuous integration, use of Subversion, Hudson, Maven and Artifactory
Documented critical components on the team Confluence wiki
What: Support various missions ranging from follow-on research
to the Human Genome Project to Biodefense in the wake of 9/11.
How:
Built Java applications to bring together disparate structured and unstructured data sources for use by scientists and analysts
Built PERL/CGI applications to process and make accessible data underpinning the Human Genome Project and beyond
Mentor for programmers who wish to learn Scala. ScalaBridge encourages women to learn Scala and advance careers in software development.
Adult mentor for kids in coding club, covering topics ranging from Scratch to web development to Python


Fetch starting point
Choose a verse
Verse 1
Verse 2
Verse 3
Verse 4
The Conqueror Worm,
Edgar Allen Poe, 1843


Drone firm in talks with Uganda on medical supply delivery deal
by REUTERSIn Summary
- A deal could see Uganda join Ghana and Rwanda, that have deployed unmanned aerial vehicles (UAVs) to help public health logistics.
- Most smaller public health facilities in Ugandan do not have proper facilities to store blood and supplies often need to be transported across long distances in an emergency.
A drone service firm is in talks with the Ugandan government on a deal to deliver blood packages, drugs and medical equipment to public health facilities, an executive told Reuters on Friday.
A deal could see Uganda join a small number of other African countries, such as Ghana and Rwanda, that have deployed unmanned aerial vehicles (UAVs) to help public health logistics.
Uganda’s public hospitals often face shortages of essential supplies, such as blood, drugs, syringes, gauze and gloves, sometimes due to unreliable transport through the gridlocked capital or along poorly paved or dirt roads in the countryside.
John Goslino, business manager at Flexdrone, told Reuters the drone services firm launched by a Ugandan and a German aimed to start a delivery service in March if talks were successful.
He said the service had already secured approval from the Information and Communications Technology Ministry and they were awaiting an endorsement from the Health Ministry.
“We are trying to provide the products that are needed by the patient and the health worker who is working in the village when that person needs it,” Goslino said.
Related Stories
-
Rwanda skies open for commercial drone flyers
-
Ghana eyes world record in medical drone service
-
Tanzania to launch world's largest drone delivery
Advertisement
Most smaller public health facilities in Ugandan do not have proper facilities to store blood and supplies often need to be transported across long distances in an emergency. Ugandan media have in the past reported deaths due to delayed blood deliveries.
Goslino said his firm had partnered with Ugandan start-up firm Sysimo Technologies to develop a mobile app for the on-demand delivery service.
Flexdrone planned to deploy drones capable of carrying 5 kg each but could use bigger drones as demand grew, he said.
A similar service led by Zipline, a California-based robotics company, was launched in Ghana. Rwanda has been operating a similar service since 2016.


Intro to Ruby & Web Dev: Lesson 2
07 Sep 2014Items covered:
- Classes, Instances, & Objects
- Modules
- Inheritance
- Method Lookup Chain
- Procedural vs OOP
Classes & Objects
- Objects are instantized through classes and contant states and behaviors
- Classes are the cookie cutters
- Instance methods encapsulate behaviors and are defined in classes.
- Instance variables = state
- Instance methods = behaviors Interesting syntax when using equals, setter:
def set_name=(new_name)
@name = name
end
jamela = User.new
jamela.set_name = "Jam"
or
def set_name(new_name)
@name = name
end
jamela.set_name("Jam")
Setters:
You have to use .self when using the setter method within an instance method of the same class. Instance methods are like raw data and you can access them but in general, you always want to use the getters and setters when available for encapsulation and santization.
Class Variables:
Track states that are common across all instances within a class.
#To keep track of number of objects
@@class = 0
def initialize(n, h, w)
@name = n
@height = h
@weight = w
@@count += 1
end
@@class_variable +=1
Class Methods:
Performs behaviors at the class level
def self.total_count
"The total number of dogs is #{@@count}"
end
puts Dog.total_count
Inheritance
SubClass < SuperClass
object.ancestors shows you the method look-up chain
Namespace
class User < ActiveRecord::Base refers to the inheritance of the Base class inside the ActiveRecord module Just like with Cms::User - refers to the User class in the CMS module.
Modules
Allows you to mixin in behavior. The difference between modules and classes are that modules cannot be instantiated.
module Swimmable
def swim
puts "I'm swimming!"
end
end
In method, you can mixin in the module by typing "include Swimmable". When creating modules you simply add "-able" to the end of your method name and then type "include swimmable" in the method you want to add that behavior.
-In method lookups, a module that is mixin will superecede (be listed first) super classes. This means that if a module and a superclass has the same method, the module method will have precedence. When mixin two modules, the method lookup chain will be effected based on reverse inclusion, meanging the last module included will be looked at first.
The point of modules is extract code that is non-specific to a class... and make it reusable.
Some modules can require methods or behaviors:
module Fetchable
def fetch
#{name} is fetching!
end
end
The above module requires the name getter method look up chain
OOP vs Procedural
Procedural thinks about "what happens next..." and small changes can have big impacts throughout your code.
OOP thinks in terms of objects and how they behave Generally consider classes to be nouns and verbs to be methods. Start by first writing out requirements in pseudo-code.


Could not read database to check for name.
Updated Name.
Could not update name.
Database is already empty. It needs to be populated first.
Refresh page for updated list of names!


I taught myself HTML, CSS, JavaScript, Python, Java and SQL by being really good at Google and identifying other useful free and open resources (like Udacity.com).
Aside from a 3 month stint in San Antonio, Texas I've lived my entire life between 200 and 800 miles due North of San Francisco.
I'm getting better at it every day.
I mostly studied Economics but I also took courses like "Geography of Cities" and "Calculus for Teachers". I was awarded a Bachelor of Science from the School of Arts and Sciences.
I started as a temporary data entry specialist but worked my way into a full time position working with external vendors to define specifications for a proprietary database used in faculty evaluations. I also trained faculty in the use of said database.
This is my current position where I analyze data in CEDARS--a database of all the public school students in Washington--to answer research questions, and work on the SGPs--a growth metric for student assessment scores using quantile regressions computed in R.
Hopefully there are more exciting opportunities in my future.
Developer


portfolio
This page let's you create charts for the selected portfolio.
Return to details
Return to list
Chart type:
Portfolio value over time
Distribution portfolio value
Portfolio ROI over time
Period:
address (coinName)
Interval:
address (coinName)
Generate


 In it, the lion tells the people to stop laughing at it and to respect it.
Comments
1) p.9774v: !nanni heard this from his paternal grandfather (Karu), 2) This story is found in Book XI & XII-10
Contributors
Date
16 December 1880
Categories
Keywords
lion (what it says) , lion (!kun beliefs about) , lion (its actions and doings) , lion (a verse) , lion (tells people not to laugh at it) , lion (laughing at) , lion (respecting) , poetry (what the lion says) , poetry (verse or song) , song (or verse) , song (what the lion says) , verse (what the lion says) , respect (for the lion) , respect (what the lion says, a song)
Story Pages
9775


| |
|
Hey everyone!
There are only 22 days left until this dumpster fire of a year is over, so what better way to celebrate than with some new TV Shows and movies to subscribe to. Check out the list below, and if anything sounds fantastic, just click the link at the bottom of the page to sign in to your account and update your subscriptions! Feel free to use the website's comment form if you have any suggestions for movies or TV shows that you would like us to add.
Newly Added Shows:
{% for show in showlist %}
- {{ show }}
{% endfor %}
|
|
|
|


Computer Book Store
Black Friday Deals!
Click on a book for more details:
Elequent JavaScript
Database System Concepts
JavaScript: The Good Parts
Computer Org. and Design


|
|
def | error_func (self, msg, line, column) |
| |
|
def | on_lbrace_func (self) |
| |
|
def | on_rbrace_func (self) |
| |
|
def | type_lookup_func (self, typ) |
| |
|
def | setUp (self) |
| |
|
def | assertTokensTypes (self, str, types) |
| |
|
def | test_trivial_tokens (self) |
| |
|
def | test_id_typeid (self) |
| |
|
def | test_integer_constants (self) |
| |
|
def | test_special_names (self) |
| |
|
def | test_floating_constants (self) |
| |
|
def | test_hexadecimal_floating_constants (self) |
| |
|
def | test_char_constants (self) |
| |
|
def | test_on_rbrace_lbrace (self) |
| |
|
def | test_string_literal (self) |
| |
|
def | test_mess (self) |
| |
|
def | test_exprs (self) |
| |
|
def | test_statements (self) |
| |
|
def | test_preprocessor_line (self) |
| |
|
def | test_preprocessor_line_funny (self) |
| |
|
def | test_preprocessor_pragma (self) |
| |
Test lexing of strings that are not supposed to cause
errors. Therefore, the error_func passed to the lexer
raises an exception.
The documentation for this class was generated from the following file:


Name of a downstream job to build.
May be another Pipeline job, but more commonly a freestyle or other project.
Use a simple name if the job is in the same folder as this upstream Pipeline job;
otherwise relative paths like ../sister-folder/downstream
or absolute paths like /top-level-folder/nested-folder/downstream
.


I have been enjoying the book Effective Engineer by Edmond Lau. One of the great tricks of becoming more effective is to set workflows that make you do more, much faster. I have ended up setting a few scripts to automate a lot of bash commands such as ssh-ing, using git etcetera and in this short primer i’d love to show total newbies how to have your own executable scripts from any place on your system.
The first thing to note here is Mac OS has a few candidate files in your home folder that it indexes for commands to use in every bash window. On my system, I prefer to use ~/.bash_rc mainly because it is loaded up when a new instance of a terminal window is opened compared to ~/.bash_profile which is loaded up at login. Without further ado, let’s create a small script that will shutdown the laptop when we type:
c.restart
Easiest way to do this is to create an alias for the command you’d normally type in the terminal. Open up your ~/.bashrc and enter the following:
alias c.restart="sudo shutdown -r now"
Save the file and close. To have this command available in bash, in your terminal window enter:
source ~/.bashrc
You can test if it’s working by typing c.restart after that you should be asked for password before your computer restarts. (Since this is just for demo purposes you can enter a wrong one three times if you don’t want to restart).
What we are going to do here is add a private bin directory with all the scripts you’ll later write. This is a good practice because it separates some important defaults from your own personal scripts you’d want to access easily.
First thing to do is to add the ~/bin directory to your PATH variable. Open up .bash_profile and add the following line:
export PATH="~/bin:$PATH"
Simply what we have done is added your own personal bin directory to the PATH variable which is used to look for scripts to execute when you submit a command to do something in your terminal.
Let’s go ahead and create that directory:
mkdir ~/bin
Now any script we create in this folder will be easily accessible by name from the terminal. Let’s go ahead and create our program, and call it just “c.restart”:
#!/usr/bin/env bash
sudo shutdown -r now
After this, if you type: c.restart in your terminal it should ask for your password. If you enter it, your laptop should restart.
That’s an easy way to add your own scripts that can automate a lot in your workflow and improve your efficiency.


PayerReferenceId
PayerFirstName
PayerLastName
CreditCardType
CreditCardNumber
CreditCardExpMonth
CreditCardExpYear
CreditCardCvv2
BillingFirstName
BillingLastName
BillingStreetAddress
BillingCity
BillingState
BillingCountry
BillingZip
RequestToken


Robin Day (born 1923-10-24[ref]) has appeared in 297 episodes between 1979-1989. Robin Day on Wikipedia.


Revert
Keep changes


Court expresses anger over protesting doctors for abandoning treatment to patients
by https://www.facebook.com/dunyanewsLAHORE (Dunya News) – The Lahore High Court (LHC) on Wednesday expressed strong anger over postgraduate training doctors – who have been protesting against Medical Teaching Institutions (MTI) Act and possible privatisation of the hospitals – for suspending treatment to patients and not appearing in the hearing today despite of court’s orders.
Justice Jawad Hassan presided over hearing of a petition against protesting doctors and remarked: “I will see which doctor refuses treatment to patients […] we will direct crackdown against protesting doctors today.”
“There is no concept of doctors going on strike all over the world […] who gives license to these doctors?” the court asked.
Health department officials told the court that the Pakistan Medical and Dental Council (PMDC) issues license to the medical practitioners.
Meanwhile, the court has again summoned concerned authorities and representatives of protesting doctors in the next hearing.


{% assets "css_base" %} {% endassets %} {% assets "css_app" %} {% endassets %}
View on GitHubfish-bundles can be easily installed provided you have python installed (Most modern Operating Systems do).
You can choose to install it with pip, pipsi or setuptool's easy_install (not recommended):
$ pip install fish-bundles
or
$ pipsi install fish-bundles
or
$ easy_install fish-bundles
Using is pretty simple, once you figured the bundles you want to have in your system, just add the following to your config.fish file:
fish_bundles_init
fish_bundle "<fish-bundle-name>"
#example bundle
fish_bundle "fish-bundles/virtual-fish-bundle"
fish-bundles comes with a console application called fb.
Its commands include install, list and init.
For more details, run:
$ fb --help