New in version 0.7.
Flask 0.7 introduces pluggable views inspired by the generic views from Django which are based on classes instead of functions. The main intention is that you can replace parts of the implementations and this way have customizable pluggable views.
Consider you have a function that loads a list of objects from the database and renders into a template:
@app.route('/users/')
def show_users(page):
users = User.query.all()
return render_template('users.html', users=users)
This is simple and flexible, but if you want to provide this view in a generic fashion that can be adapted to other models and templates as well you might want more flexibility. This is where pluggable class-based views come into place. As the first step to convert this into a class based view you would do this:
from flask.views import View
class ShowUsers(View):
def dispatch_request(self):
users = User.query.all()
return render_template('users.html', objects=users)
app.add_url_rule('/users/', view_func=ShowUsers.as_view('show_users'))
As you can see what you have to do is to create a subclass of flask.views.View and implement dispatch_request(). Then we have to convert that class into an actual view function by using the as_view() class method. The string you pass to that function is the name of the endpoint that view will then have. But this by itself is not helpful, so let’s refactor the code a bit:
from flask.views import View
class ListView(View):
def get_template_name(self):
raise NotImplementedError()
def render_template(self, context):
return render_template(self.get_template_name(), **context)
def dispatch_request(self):
context = {'objects': self.get_objects()}
return self.render_template(context)
class UserView(ListView):
def get_template_name(self):
return 'users.html'
def get_objects(self):
return User.query.all()
This of course is not that helpful for such a small example, but it’s good enough to explain the basic principle. When you have a class-based view the question comes up what self points to. The way this works is that whenever the request is dispatched a new instance of the class is created and the dispatch_request() method is called with the parameters from the URL rule. The class itself is instantiated with the parameters passed to the as_view() function. For instance you can write a class like this:
class RenderTemplateView(View):
def __init__(self, template_name):
self.template_name = template_name
def dispatch_request(self):
return render_template(self.template_name)
And then you can register it like this:
app.add_url_rule('/about', view_func=RenderTemplateView.as_view(
'about_page', template_name='about.html'))
Pluggable views are attached to the application like a regular function by either using route() or better add_url_rule(). That however also means that you would have to provide the names of the HTTP methods the view supports when you attach this. In order to move that information to the class you can provide a methods attribute that has this information:
class MyView(View):
methods = ['GET', 'POST']
def dispatch_request(self):
if request.method == 'POST':
...
...
app.add_url_rule('/myview', view_func=MyView.as_view('myview'))
For RESTful APIs it’s especially helpful to execute a different function for each HTTP method. With the flask.views.MethodView you can easily do that. Each HTTP method maps to a function with the same name (just in lowercase):
from flask.views import MethodView
class UserAPI(MethodView):
def get(self):
users = User.query.all()
...
def post(self):
user = User.from_form_data(request.form)
...
app.add_url_rule('/users/', view_func=UserAPI.as_view('users'))
That way you also don’t have to provide the methods attribute. It’s automatically set based on the methods defined in the class.
Since the view class itself is not the view function that is added to the routing system it does not make much sense to decorate the class itself. Instead you either have to decorate the return value of as_view() by hand:
def user_required(f):
"""Checks whether user is logged in or raises error 401."""
def decorator(*args, **kwargs):
if not g.user:
abort(401)
return f(*args, **kwargs)
return decorator
view = user_required(UserAPI.as_view('users'))
app.add_url_rule('/users/', view_func=view)
Starting with Flask 0.8 there is also an alternative way where you can specify a list of decorators to apply in the class declaration:
class UserAPI(MethodView):
decorators = [user_required]
Due to the implicit self from the caller’s perspective you cannot use regular view decorators on the individual methods of the view however, keep this in mind.
Web APIs are often working very closely with HTTP verbs so it makes a lot of sense to implement such an API based on the MethodView. That said, you will notice that the API will require different URL rules that go to the same method view most of the time. For instance consider that you are exposing a user object on the web:
| URL | Method | Description |
| /users/ | GET | Gives a list of all users |
| /users/ | POST | Creates a new user |
| /users/<id> | GET | Shows a single user |
| /users/<id> | PUT | Updates a single user |
| /users/<id> | DELETE | Deletes a single user |
So how would you go about doing that with the MethodView? The trick is to take advantage of the fact that you can provide multiple rules to the same view.
Let’s assume for the moment the view would look like this:
class UserAPI(MethodView):
def get(self, user_id):
if user_id is None:
# return a list of users
pass
else:
# expose a single user
pass
def post(self):
# create a new user
pass
def delete(self, user_id):
# delete a single user
pass
def put(self, user_id):
# update a single user
pass
So how do we hook this up with the routing system? By adding two rules and explicitly mentioning the methods for each:
user_view = UserAPI.as_view('user_api')
app.add_url_rule('/users/', defaults={'user_id': None},
view_func=user_view, methods=['GET',])
app.add_url_rule('/users/', view_func=user_view, methods=['POST',])
app.add_url_rule('/users/<int:user_id>', view_func=user_view,
methods=['GET', 'PUT', 'DELETE'])
If you have a lot of APIs that look similar you can refactor that registration code:
def register_api(view, endpoint, url, pk='id', pk_type='int'):
view_func = view.as_view(endpoint)
app.add_url_rule(url, defaults={pk: None},
view_func=view_func, methods=['GET',])
app.add_url_rule(url, view_func=view_func, methods=['POST',])
app.add_url_rule('%s<%s:%s>' % (url, pk_type, pk), view_func=view_func,
methods=['GET', 'PUT', 'DELETE'])
register_api(UserAPI, 'user_api', '/users/', pk='user_id')


Upcoming Bookings and Admission Fee Payments
{% if not current_bookings and not current_admissions %}
You do not have any upcoming bookings!
Please visit the mooring map to book a mooring.
{% else %}
{% for bk in current_bookings %}
{% include "mooring/booking/booking_view.html" with booking=bk.0 book_inv=bk.1 %}
{% endfor %}
{% for ad in current_admissions %}
{% include "mooring/admissions/booking_view.html" with admissionsBooking=ad.0 arrival=ad.1 overnight=ad.2 admissionsInvoice=ad.3 %}
{% endfor %}
{% endif %}
{% if past_bookings or past_admissions %}
Past Bookings and Admission Fee Payments
{% for bk in past_bookings %}
{% include "mooring/booking/booking_view.html" with booking=bk.0 book_inv=bk.1 %}
{% endfor %}
{% for ad in past_admissions %}
{% include "mooring/admissions/booking_view.html" with admissionsBooking=ad.0 admissionsInvoice=ad.1 %}
{% endfor %}
{% endif %}


{{ post.title }}
{{ post.excerpt }} Tags:{% capture tags %} {% for tag in post.tags %}, {{tag}}{% endfor %}{% endcapture %} {{tags | remove_first: ", "}}0 Comments
--- title: HaSa's Blog layout: default comments: false ---
Welcome to my blog! I am posting here my progress on my Point and Click Adventure Engine (ITLengine) and other stuff I come across. Feel free to leave a comment or post an issue in the Github Repo. Have Fun Reading!


BMW Says New Epic Grille On 4 Series Won’t Date Quickly
It’s all part of the brand's future-oriented design philosophy.
by Karl FurlongThere seems to be no end in sight for the controversy surrounding BMW design, and specifically, the enlarged kidney grilles on models like the BMW X7 and the heavily revised BMW 7 Series. It's not only the German marque's range-topping models that are adopting oversized grilles, however, with the BMW Concept 4 drawing gasps when it was unveiled at the 2019 Frankfurt Motor Show earlier this year.
Of course, the Concept 4 provides a glimpse into what the production version of the next 4 Series Coupe will look like. A photo of the new 4 Series on the production line was later leaked and confirmed what appears to be one of the tallest grilles in the brand's history. We caught up with Ralph Mahler, responsible for BMW product planning and strategy in the US, at the 2019 Los Angeles Auto Show to get a deeper insight into the upcoming 4's dramatic grille.
When asked to respond to the colorful feedback that followed the Concept 4's reveal, Mahler pointed to the need to ensure that new designs are unexpected and different enough to stay fresh throughout a regular lifecycle. "From my perspective, it all comes down to one point: is a design future-oriented and providing a glimpse into the future and, therefore, staying modern during the whole lifecycle - or not?" Mahler substantiated this statement by explaining that unexpected designs have a lower risk of dating quickly.
While BMW traditionalists may beg to differ, perhaps Mahler has a point. For instance, the E60-generation 5 Series looked nothing like the E39 before it and, initially, was heavily criticized. Today, the same E60 has aged remarkably well. But even that car had a much more modestly sized grille than the Concept 4. Again, Mahler had an explanation here: "So it's a large grille. Same thing with the 7 Series. And guess what? Now, nobody's talking about it anymore. You're getting used to it and it still looks modern."
Interestingly, Mahler also indicated that the brand doesn't want all its cars to look the same, another reason for the Concept 4's giant grille. And while it is possible to differentiate between the brand's models from the outside, the cookie-cutter approach to its interiors hasn't changed one bit.
While there isn't an exact science to predicting how consumer tastes may shift a few years down the line, BMW isn't designing vehicles that have even a slight chance of fading into the background, and there's nothing worse than customer apathy. Only time will tell whether this bold strategy pays off in the long term - and whether loyalists are willing to embrace the changing face of BMW.


According to Ripple.com’s whitepaper, RippleNet delivers a single, frictionless experience .” In simpler terms, Ripple’s network removes the need for unstandardized and centralized banking systems with its single, global group of banks that provide real-time messaging and completion of transactions. Ripple strives to provide better connectivity across payment networks, faster transaction speeds, real-time tracking of payments, and low operation costs. In essence, Ripple wants to update the payment infrastructure.
Ripple was created by Ripple Labs, with Jed McCaleb and Chris Larsen as co-founders of the company.
RippleNet is a system that gathers current standing banks to join their network, in order to systemize payments and transactions. Ripple brings in banks like Bank of America, Royal Bank of Canada, and Bank of Mitsubishi to allow cross-border payments through its advanced blockchain technology. Once the banks have been linked on RippleNet, Ripple Labs hopes to bring in actual citizens and individuals to adopt Ripple as the currency for worldwide currency exchanges.
Ripple cannot be mined; the 100 Billion XRP has already been minted by Ripple Labs can only be acquired through purchase through an exchange. Now that Ripple has been more spread, there are other ways like faucets or giveaways to earn small amounts of Ripple.
Similarly to paying with cash (in this example, I’ll use US Dollars), you would simply send your Ripple from your wallet to another person’s address (I’ll discuss wallets further below). Receiving Bitcoins is similar, just like how someone else would give you cash for you to put in your wallet, someone else will send Bitcoins from their wallet to your wallet’s public address. Unlike Bitcoin however, Ripple can only be sent through whole amounts, while Bitcoin’s can be sent in decimals (one satoshi is .00000001).
The greatest value of cryptocurrency like Ripple is its ability to combine the world’s banks into one currency communication network. Because most currencies are dependent on a countries economy, currencies can quickly lose value due to a countries political unrest, and require conversion between those value differences. Ripple however, allows the ability for one currency for banks across the world, allowing quicker and cheaper transactions.
Since Ripple is still new, volatility occurs in its markets. Ripple hasn’t been actually tested on the real market. It hasn’t been as heavily used as Bitcoin. Furthermore, if banks don’t join RippleNet, the value of Ripple will greatly depreciate. The success of Ripple, more so than most currencies, greatly depends on adoption by banks, and then by the global population.
Online Exchanges: Easiest for exchanging
Bittrex and Binance provide the ability to store and exchange Ripple for USD and other coins, and while not as safe from hacks as a Hardware Wallet may be, has easy access for transactions and purchases.
The way to lose Ripple is to forget your password to your virtual wallet or to get your account shut down/hacked. If you lose Ripple in these ways, there is unfortunately no way to recover it. Most of the times the Ripple that is lost remains lost and that amount is taken away from the world pot of Ripple. However, because there is a limit on the amount of Ripple to be produced, the value of each remaining Ripple will rise.


Probability Concepts¶
Probability is a discipline of mathematics that studies analytical formulations of uncertainty that can be used characterize random phenomenon.
Note
PAIRED EXERCISE
Team up with the person next to you and come up with examples of two kinds of random phenomenon – one that seems like it could be predicted and one that seems like it would be difficult to predict.
Experiments¶
A sample space \(S\) is a collection, specified as a mathematical set
of all possible outcomes
that might be realized by some experiment measuring a random phenomenon.
An event \(E\) is a meaningful subset of potential outcomes of the experiment \(E \subseteq S\) that is said to have occured for a realized outcome of the experiment \(x^*\) where \(x^*\) is a member of set \(E\), i.e.,
Examples of Experiments
- flip ten coins, roll two dice, draw a card from a deck
- take a cookie from a cook jar, evalute an instructor, attend a meetup
- measure heights, weights, volumes, temperatures, or distances
- count the number of cups of coffee consumed before before 10 am
- count the number of beers consumed right after this stats workshop
Examples of Outcomes
- ten sequential coin flips, two die rolls, a card from a deck
- a cookie, an instructor evaluation, teachers, the name of an attended meetup
- a height, a weight, a volume, a temperature, or a distance
- a number
- hopfully not too many
Examples of Events
- “Half heads”, “Odds”, “Spades”
- “With Chips”, “Boring”, “Data Science related meetup”
- “Tall people” (>6 ft), “Small people” (<100 lbs), “Not full milk” (<1 G), “Frozen water (<32 F)”, “close” (<2 mi)
- “<2 cups of coffee before before 10 am”
- “NA”
Note
TEAM EXERCISE
Work with your neighbors to list out possible sample spaces for the above experiments.
Set Operations¶
For events \(A\) and \(B\) defined on the sample space \(S\) of an experiment
Union: \(A \cup B = \{x: x \in A \text{ or } x\in B\}\)
is the event where either event \(A\) or event \(B\) or both occur
Intersection: \(A \cap B = \{x: x \in A \text{ and } x\in B\}\)
is the event where both the event \(A\) and the event \(B\) occur
Difference: \(A \setminus B = \{x: x \in A \text{ and } x \notin B\}\)
is the event where only the event \(A\) occurs but not the event \(B\)
Complement: \(\overline A = A^C = \{x: x\notin A\}\)
is the event that event \(A\) does not occur
The Null (Empty) Set: \(\emptyset\)
is the event that contains no outcomes, which can’t happen if the experiment is run. Sometimes intersections and differences result in empty sets.
Note
TEAM EXERCISE
Come up with couple examples of events (meaningful sets of possible outcomes) from an experiment and have each member on your team contribute an explaination of Union, Intersection, Difference, or Complement using the examples.
De Morgan’s Laws¶
(The next best thing to Bayes’ rule and rum)
De Morgan’s laws are tautologies that say for events \(A\) and \(B\):
1. The complement of the union of two sets is the same as the intersection of their complements:
2. The complement of the intersection of two sets is the same as the union of their complements:
where the expressions utilize the standard logic notation of \(\vee\) and \(\wedge\) for the or and and operators, respectively, and \(\neg\) for the negation operator (“not”).
The truthfulness of De Morgan’s laws can be examined using a Venn diagram:
Note
EXERCISE
Copy the following 3 lines into a python interpreter, ipython session or script
>>> a = set(["A","B","C","D"])
>>> b = set(["C","D","E","F"])
>>> sample_space = set(["A","B","C","D","E","F","G"])
and try out these set operations
>>> a.intersection(b)
set(['C', 'D'])
>>> a.difference(b)
set(['A', 'B'])
>>> a.union(b))
set(['A', 'B', 'C', 'D', 'E', 'F'])
>>> complement_a = sample_space.difference(a)
Can you demonstrate De Morgan’s laws in Python?
Random Variables¶
A random variable \(X\) is a function that maps outcomes \(s\) from its sample space \(S\) onto the real numbers \(x \in \mathbb{R}\), i.e.,
where standard notation utilizes capital letters for random variables, and lowercase letters for actualized observations (realizations) of random variables.
The realizations \(x\) of a random random variable \(X\) are dictated by the probabilities assigned to the outcomes comprising the sample space \(S\). I.e., for some event \(E \subseteq \mathbb{R}\) defined with respect to the random variable \(X\)
Note
QUESTION
Does a random variable have a “value” like a variable in python, or an algebraic expression?
Random variables (Khan academy)
Putting It All Together¶
If you’re feeling ready, let’s challenge your understanding of the concepts you’ve learned thus by introducing a new concept called mutual exclusivity.
Two events \(A\) and \(B\) are said to be mutually exclusive if
Note
EXERCISE
Let \(X\) be a random variable which actualizes a cholesterol measurement and let \(x\) an actual cholesterol measurement and define the following three events
where \(A\) and \(B\) are mutually exclusive, but \(A\) and \(C\) are not.
- Discuss what it means to be mutually exclusive.
- What is the union of sets \(A\) and \(C\)? And how about \((A \cup B)\) = ?
- If \(Pr(X=x\in A) = 0.2\) and \(Pr(X=x\in B) = 0.1\), then \(Pr(X=x \geq 250)\) = ?
- How would you specify the above probability using \(A\), \(B\), \(\cup\), and \(Pr()\)?
- [Extra] If \(P(X=x\in A) = .3\) and \(P(X=x\in C)=.2\), then what would you need to know to calculate \(P(X=x \leq 300)\)?
Further study¶
If you want to learn more about working with sets in Python, see:
https://www.programiz.com/python-programming/set
If you want to know more about sets and set operations in general then check out the Khan academy video series on sets, see:


Fostering Innovation
How We Got Here
Mile of Music App
Mile of Music App Architecture
From the fine folks at Google
AngularJS 1.x – Google JavaScript library for development
AngularJS 2.x – Called Angular
Angular is a Framework
Angular is opinionated
Angular has code in your markup
Angular is HTML centric
From the fine folks at Facebook
React is a Library (View)
React is not opinionated
React has markup in your code
React is JavaScript centric
Angular Command Line - https://github.com/angular/angular-cli
ng new FOO
React Command Line https://github.com/facebookincubator/create-react-app
create-react-app FOO
Mobile First
Standards focused
Performance (Virtual DOM!)
Web Components
Angular Version
React Version
React and Angular based on components
Angular Gateway to HTML components
import { Component } from 'angular2/core';
@Component({
selector: 'foo-Div',
templateUrl: 'app/foo.html',
styleUrls: [ 'app/foo.css' ]
})
export class Foo {
public message = 'Foo!';
}
import React from 'react';
export default class Foo extends React.Component {
constructor(props) {
super(props);
this.state = { message: 'foo!' };
}
render() {
return (
{this.state.message}
);
}
}
Templates and Databinding
React HTML is in render method
JSX allows for HTML like
Angular has one way
{{element.name}}
Angular has two way data binding
React is stateless, no two way binding
This.state.inputFieldName
AngularJS populartiy
Framework means less JavaScript fatigue
TypeScript
Less Churn
Web Component
You like JavaScript in your HTML
JSX
Fails Better
You LOVE JavaScript
You like HTML in your JavaScript
@jptacek boooooo angular boooooooooooo
— $30,000 Logout CSRF (@tqbf) September 1, 2016
Angular is a framework = bigger
React is a library, best of breed
Stweet Christmas! JavaScript churn is killing me
Angular has forced consistency
Angular2 is a path to web components
React/JSX allows you to fail early
React is JavaScript
Angular is more HTML, but not HTML
Angular
(click) = "onSelect(myOject)"
React
onClick ={ this.onSelect.bind(this,myObject)}
What is Google Doing!?!!?
DoubleClick uses Angular
YouTube Gaming, Google Patents (and SalesForce) uses Polymer
JSX can trail in tooling on Microsoft stack
Typescript, blessing or curse
Mobile performance with Angular file size
To learn React, learn JavaScript; to learn Angular, learn Angular
Wait/Do Nothing
Angular for Enterprises
Reactfor JavaScript strong organizations/devs


Launching your site is a lot like building, but Grow performs the heavy-lifting of figuring out exactly what has changed between the last launch and now, and presents you with a diff to confirm the launch before deployment. Grow can launch to a variety of destinations where you can host your web site (such as Google Cloud Storage, Amazon S3, GitHub Pages, Dropbox, Google App Engine – or, you can even write a destination for a custom web server).
In this example, we'll just launch to the "default" destination, which "launches" your site to a local directory on your machine.
This command deploys to a destination named "default", which is configured in podspec.yaml
. Run the following command, and Grow will launch the site to a directory ./my-codelab-launch/
.
grow deploy default
Now let's change the URLs of our pages and run the deployment command once more. By doing this, you'll be able to see a diff when running grow deploy
.
Change the "path" config in /content/pages/_blueprint.yaml
to the following:
# /content/pages/_blueprint.yaml
path: /pages/{slug}/
Now, run the deploy command again:
grow deploy default
You can now observe the diff upon deployment. Only affected files are deployed, and any files which are no longer needed are deleted.


Files CCore/inc/Random.h CCore/src/Random.cpp
Files CCore/inc/PlatformRandom.h
Random numbers have many use in applications. CCore provides a quality random number generator implementation, based on the Mersenne Twister algorithm.
There are several reasons why we use our own RNG. First, we need quality. Second, we need some properties from RNG: it must be lightweight and generate unique and non-periodical random number sequence. Finally, RNG must be an object, not a global function. Because it requires some state to work, using a global function introduces a global variable, the access to this variable must be synchronized in multithreaded applications. That implies an excessive bottleneck and a performance penalty. That is why we abstain from the using the standard C function rand().
The class Random is a random number generator. It contains inside the MT19937 Mersenne Twister state machine. To make the random sequence unique and non-periodical, the state is altered by the clock timer at the beginning and periodically during the random number generation process.
class Random : NoCopy
{
....
public:
Random();
void warp(PtrLen<const uint8> data);
uint8 next8();
uint16 next16();
uint32 next32();
uint64 next64();
template <UIntType UInt>
UInt next_uint();
uint32 select(uint32 lim) { return lim?uint32( next64()%lim ):next32(); }
uint32 select(uint32 a,uint32 b) { return a+select(b-a+1); }
template <UIntType UInt>
UInt select_uint(UInt lim);
template <UIntType UInt>
UInt select_uint(UInt a,UInt b);
template <UIntType UInt>
void fill(PtrLen<UInt> r);
template <UIntType UInt>
void fill(UInt *ptr,ulen len);
};
There is not destructor, only default constructor. Multiple Random objects generates different random numbers.
warp() alters the internal state. You can use this method to improve the random seeding using some entropy source to produce a block of bytes and supply it as the argument.
next8(), next16(), next32() and next64() return a random number of the given unsigned integral size defined type.
next_uint<UInt>() returns a random unsigned integer, the type is specified as a template argument.
fill() fills the given range of unsigned integers by random values.
select(uint32 lim) generates a random number in the range [0,lim), almost uniformly distributed. If the lim is zero, then the value range is all uint32 values. The non-uniformness is negligible for casual applications.
select(uint32 a,uint32 b) generates a random number in the range [a,b], almost uniformly distributed. a must be less or equal than b.
select_uint(UInt lim) is similar to select(uint32 lim), but works for the any unsigned integral type, specified as the template argument.
select_uint(UInt a,UInt b) is similar to select(uint32 a,uint32 b), but works for the any unsigned integral type, specified as the template argument.
template <class T>
concept bool RandomType = IsDerivedFrom<T,RandomBase<T> > && requires(T &obj,PtrLen<const uint8> data)
{
T();
obj.warp(data);
{ obj.next8() } -> uint8 ;
{ obj.next16() } -> uint16 ;
{ obj.next32() } -> uint32 ;
{ obj.next64() } -> uint64 ;
} ;
RandomType is a concept for Random kind classes.
Random is implemented with help of the RandomBase class.
template <class T>
class RandomBase : NoCopy
{
private:
T & getObj() requires ( RandomCoreType<T> ) { return *static_cast<T *>(this); }
public:
template <UIntType UInt>
UInt next_uint();
uint32 select(uint32 lim);
uint32 select(uint32 a,uint32 b);
template <UIntType UInt>
UInt select_uint(UInt lim);
template <UIntType UInt>
UInt select_uint(UInt a,UInt b);
template <UIntType UInt>
void fill(PtrLen<UInt> r);
template <UIntType UInt>
void fill(UInt *ptr,ulen len)
};
You may use this class to build you custom random class using the following pattern:
class CustomRandom : public RandomBase<CustomRandom>
{
public:
....
void warp(PtrLen<const uint8> data);
uint8 next8();
uint16 next16();
uint32 next32();
uint64 next64();
};
You have to implement only four base methods and warp(). You may derive them from the one like this:
class CustomRandom : public RandomBase<CustomRandom> { public: .... using UnitType = uint32; uint32 next(); void warp(PtrLen<const uint8> data); uint8 next8() { return uint8 (next()); } uint16 next16() { return uint16(next()); } uint32 next32() { return uint32(next()); } uint64 next64() { UIntSplit<uint64,uint32> split; split[0]=next32(); split[1]=next32(); return split.get(); } };
Files CCore/inc/MersenneTwister.h CCore/src/MersenneTwister.cpp
Mersenne Twister is a generic algorithm, MT19937 — it's particular version. Implementation of the Mersenne Twister is enclose in the namespace MersenneTwister.
struct MT19937
{
// unit
using UnitType = uint32 ;
static constexpr ulen W = 32 ;
// state
static constexpr ulen N = 624 ;
static constexpr ulen M = 397 ;
static constexpr ulen R = 31 ;
static constexpr UnitType A = 0x9908B0DF ;
// output
static constexpr ulen S1 = 11 ;
static constexpr ulen S2 = 7 ;
static constexpr ulen S3 = 15 ;
static constexpr ulen S4 = 18 ;
static constexpr UnitType B = 0x9D2C5680 ;
static constexpr UnitType C = 0xEFC60000 ;
// initialization
static constexpr ulen ReMessCount = 100 ;
static constexpr ulen MessCount = 1000 ;
static const UnitType HotBits[N];
};
The structure MT19937 contains the MT19937 version parameters. It includes initial random state bits from HotBits.
template <class P>
class Gen : NoCopy
{
public:
using UnitType = typename P::UnitType ;
private:
ulen remess_count;
ulen ind;
UnitType state[P::N];
protected:
PtrLen<UnitType> getState() { return Range(state); }
void hotbits();
void messup();
void pure_init();
UnitType pure_next();
public:
UnitType next();
void warp(PtrLen<const uint8> data);
};
The class Gen is the generator itself. It is a Partial Class, parametrized by a parameter structure.
The main public method is the next(): it returns a next random number of the UnitType. But before using this class, its internal state must be initialized.
First, the buffer state must be initialized. You can do it in a derived class, getState() gives access to this buffer. The method hotbits() fills this buffer with some predefined random bits.
Second, use messup() method to "mess-up" the state and add to it some clock input. It makes the state unprobably repeatable. You may also use the method pure_init() to skip this mess and start the generator as the pure Mersenne Twister generator. In such case to continue use the method pure_next() for the random number generation. These "pure" methods are included for the testing purpose mostly.
Finally, the public method warp() can be used to update the state buffer. The provided value is used to XOR the state buffer.
The header PlatformRandom.h is a stub header. It contains the definition of the type PlatformRandom. The CCore header defines this type as Random. But target may define its own header file with the same name and override this stub. In such case the defined type must provide the same functionality as the type Random.
For example, the target WIN64 defines the type PlatformRandom as IntelRandom to utilize the Intel hardware RNG.


I've just stumbled upon this joke on wilk4.com. This is the reason why I didn't use OOP in any of my (small) projects and why I don't understand those people who want every piece of code in OOP-style:
Once upon a time, in a kingdom not far from here, a king summoned two of his advisors for a test. He showed them both a shiny metal box with two slots in the top, a control knob, and a lever. "What do you think this is?"
One advisor, an engineer, answered first. "It is a toaster," he said. The king asked, "How would you design an embedded computer for it?" The engineer replied, "Using a four-bit microcontroller, I would write a simple program that reads the darkness knob and quantizes its position to one of 16 shades of darkness, from snow white to coal black. The program would use that darkness level as the index to a 16-element table of initial timer values. Then it would turn on the heating elements and start the timer with the initial value selected from the table. At the end of the time delay, it would turn off the heat and pop up the toast. Come back next week, and I'll show you a working prototype."
The second advisor, a computer scientist, immediately recognized the danger of such short-sighted thinking. He said, "Toasters don't just turn bread into toast, they are also used to warm frozen waffles. What you see before you is really a breakfast food cooker. As the subjects of your kingdom become more sophisticated, they will demand more capabilities. They will need a breakfast food cooker that can also cook sausage, fry bacon, and make scrambled eggs. A toaster that only makes toast will soon be obsolete. If we don't look to the future, we will have to completely redesign the toaster in just a few years."
"With this in mind, we can formulate a more intelligent solution to the problem. First, create a class of breakfast foods. Specialize this class into subclasses: grains, pork, and poultry. The specialization process should be repeated with grains divided into toast, muffins, pancakes, and waffles; pork divided into sausage, links, and bacon; and poultry divided into scrambled eggs, hard- boiled eggs, poached eggs, fried eggs, and various omelet classes."
"The ham and cheese omelet class is worth special attention because it must inherit characteristics from the pork, dairy, and poultry classes. Thus, we see that the problem cannot be properly solved without multiple inheritance. At run time, the program must create the proper object and send a message to the object that says, 'Cook yourself.' The semantics of this message depend, of course, on the kind of object, so they have a different meaning to a piece of toast than to scrambled eggs."
"Reviewing the process so far, we see that the analysis phase has revealed that the primary requirement is to cook any kind of breakfast food. In the design phase, we have discovered some derived requirements. Specifically, we need an object-oriented language with multiple inheritance. Of course, users don't want the eggs to get cold while the bacon is frying, so concurrent processing is required, too."
"We must not forget the user interface. The lever that lowers the food lacks versatility, and the darkness knob is confusing. Users won't buy the product unless it has a user-friendly, graphical interface. When the breakfast cooker is plugged in, users should see a cowboy boot on the screen. Users click on it, and the message 'Booting UNIX v.8.3' appears on the screen. (UNIX 8.3 should be out by the time the product gets to the market.) Users can pull down a menu and click on the foods they want to cook."
"Having made the wise decision of specifying the software first in the design phase, all that remains is to pick an adequate hardware platform for the implementation phase. An Intel 80386 with 8MB of memory, a 30MB hard disk, and a VGA monitor should be sufficient. If you select a multitasking, object oriented language that supports multiple inheritance and has a built-in GUI, writing the program will be a snap. (Imagine the difficulty we would have had if we had foolishly allowed a hardware-first design strategy to lock us into a four-bit microcontroller!)."
The king wisely had the computer scientist beheaded, and they all lived happily ever after.


Adjacent numbers - break_eternity.js
break_eternity.js by Patashu
Previous (prev):
Current (curr):
Next (next):
←
O
→
Auto run:
Result:


LIN@KKB> SELECT dbms_auto_index.report_activity(TO_TIMESTAMP('2019-06-18 16:40:00', 'YYYY-MM-DD hh24:mi:ss'), -- 开始时间(eg. sysdate-1)
2 null, -- 结束时间
3 'html', -- 报告种类 (TEXT,HTML,XML)
4 'all', -- 出力报告内容 (ALL,SUMMARY,INDEX_DETAILS,VERIFICATION_DETAILS,ERRORS)
5 'all') -- Level (BASIC,TYPICAL,ALL)
6 report FROM dual;
REPORT
------------------------------------------------------------------------------------------------------------------------
Automatic Index Report
GENERAL INFORMATION
| Activity start |
: 18-JUN-2019 16:40:00 |
| Activity end |
: 18-JUN-2019 17:10:33 |
| Executions completed |
: 2 |
| Executions interrupted |
: 0 |
| Executions with fatal error |
: 0 |
SUMMARY (AUTO INDEXES)
| Index candidates |
:
0 |
| Indexes created
(visible
/ invisible)
|
:
1
(1
/
0)
|
| Space used
(visible
/ invisible)
|
:
3.15_MB
(3.15_MB
/
0_B)
|
| Indexes dropped |
:
0 |
| SQL statements verified |
:
10 |
| SQL statements improved
(improvement factor)
|
:
10
(2337.1x)
|
| SQL plan baselines created |
:
0 |
| Overall improvement factor |
:
2337.1x |
SUMMARY (MANUAL INDEXES)
| Unused indexes |
:
0 |
| Space used |
:
0_B |
| Unusable indexes |
:
0 |
INDEX DETAILS
1. The following indexes were created:
*: invisible
| Owner |
Table |
Index |
Key |
Type |
Properties |
| LIN |
TEST_OBJ_AI |
SYS_AI_829s8wj1jb4y4 |
OBJECT_ID |
B-TREE |
NONE |
VERIFICATION DETAILS
1. The performance of the followi
ng statements improved:
| Parsing Schema Name |
: LIN |
| SQL ID |
: 0f8z69z7jcp71 |
| SQL Text |
: select /*+ USE_AUTO_INDEXES */ object_name from test_obj_ai
where object_id=1000 |
| Improvement Factor |
: 2337x |
Execution Statistics:
|
|
Original Plan
|
Auto Index Plan
|
|
Elapsed Time (s):
|
9428 |
1202 |
|
CPU Time (s):
|
8399 |
501 |
|
Buffer Gets:
|
2337 |
3 |
|
Optimizer Cost:
|
32 |
2 |
|
Disk Reads:
|
0 |
4 |
|
Direct Writes:
|
0 |
0 |
|
Rows Processed:
|
1 |
1 |
|
Executions:
|
1 |
1 |
PLANS SECTION
- Original
| Plan Hash Value |
:
1599946467 |
| Id |
Oper
ation |
Name |
Row
s |
Bytes |
Cost
th>
| Time |
| 0 |
SELECT STATEMENT |
|
|
|
32 |
|
| 1 |
.
TABLE ACCESS STORAGE FULL
|
TEST_OBJ_AI |
6 |
474 |
32 |
00:00:01 |
Notes
-
optimizer_use_stats_on_conventional_dml =
yes
- With Auto Indexes
| Plan Hash Value |
:
3630496781 |
| Id<
/th>
| Operation |
Name
|
Rows |
Bytes
| Cost |
Time |
| 0 |
SELECT STATEMENT |
|
1 |
79 |
2 |
00:00:01 |
| 1 |
.
TABLE ACCESS BY INDEX ROWID BATCHED
|
TEST_OBJ_AI |
1 |
79 |
2 |
00:00:01 |
| * 2 |
..
INDEX RANGE SCAN
|
SYS_AI_829s8wj1jb4y4 |
1 |
|
1 |
00:00:01 |
Predicate Information (identified by operation id):
- 2 -
access("OBJECT_ID"=1000)
Hint Report (identified by operation id / Query Block Name / Obje
ct Alias):
Total hints for statement: 1
(E - Syntax Error (1))
Notes
-
optimizer_use_stats_on_conventional_dml =
yes
- Dynamic sampling used for this statement
( level = 11 )
| Parsing Schema Name |
: LIN |
| SQL ID |
: 10k4qgkyf2vm9 |
| SQL Text |
: select object_name from test_obj_ai where object_
id=101 |
| Improvement Factor |
: 2336x |
Execution Statistics:
|
|
Original Plan
|
Auto Index Plan
|
|
Elapsed Time (s):
|
17979 |
41 |
|
CPU Time (s):
|
17075 |
41 |
|
Buffer Gets:
|
4672 |
3 |
|
Optimizer Cost:
|
32 |
2 |
|
Disk Reads:
|
0 |
0 |
|
Direct Writes:
|
0 |
0 |
|
Rows Processed:
|
2 |
1 |
|
Executions:
|
2 |
1 |
PLANS SECTION
- Original
| Plan Hash Value |
:
1599946467 |
|
Id |
Operation |
N
ame |
Rows |
Bytes
|
Cost |
Time |
| 0 |
SELECT STATEMENT |
|
|
|
32 |
|
| 1 |
.
TABLE ACCESS STORAGE FULL
|
TEST_OBJ_AI |
6 |
474 |
32 |
00:00:01 |
Notes
-
optimizer_use_stats_on_conventional_dml =
yes
- With Auto Indexes
| Plan Hash Value |
:
3630496781 |
| Id |
Operati
on |
Name |
Rows
th>
| Bytes |
Cost |
Time |
| 0 |
SELECT STATEMENT |
|
1 |
79 |
2 |
00:00:01 |
| 1 |
.
TABLE ACCESS BY INDEX ROWID BATCHED
|
TEST_OBJ_AI |
1 |
79 |
2 |
00:00:01 |
| * 2 |
..
INDEX RANGE SCAN
|
SYS_AI_829s8wj1jb4y4 |
1 |
|
1 |
00:00:01 |
Predicate Information (identified by operation id):
- 2 -
access("OBJECT_ID"=101)
Notes
-
optimizer_use_stats_on_conventional_dml =
yes
- Dynamic sampling used for this statement
( level = 11 )
| Parsing Schema Name |
: LIN |
| SQL ID |
: 1pzm5v0j0w4wh |
| SQL Text |
: select object_name from test_obj_ai where object_id=100
td>
|
| Improvement Factor |
: 2337x |
Execution Statistics:
|
|
Original Plan
|
Auto Index Plan
|
|
Elapsed Time (s):
|
9413 |
39 |
|
CPU Time (s):
|
9068 |
39 |
|
Buffer Gets:
|
2337 |
3 |
|
Optimizer Cost:
|
32 |
2 |
|
Disk Reads:
|
0 |
0 |
|
Direct Writes:
|
0 |
0 |
|
Rows Processed:
|
1 |
1 |
|
Executions:
|
1 |
1 |
PLANS SECTION
- Original
| Plan Hash Value |
:
1599946467 |
| Id |
Operation |
Name |
Rows |
Bytes |
C
ost |
Time |
| 0 |
SELECT STATEMEN
T |
|
|
|
32 |
|
| 1 |
.
TABLE ACCESS STORAGE FULL
|
TEST_OBJ_AI |
6 |
474 |
32 |
00:00:01 |
Notes
-
optimizer_use_stats_on_conventional_dml =
yes
- With Auto Indexes
| Plan Hash Value |
:
3630496781 |
| Id |
Operation |
Name |
Rows |
Byt
es |
Cost |
Time
th>
|
| 0 |
SELECT STATEMENT |
|
1 |
79 |
2 |
00:00:01 |
| 1 |
.
TABLE ACCESS BY INDEX ROWID BATCHED
|
TEST_OBJ_AI |
1 |
79 |
2 |
00:00:01 |
| * 2 |
..
INDEX RANGE SCAN
|
SYS_AI_829s8wj1jb4y4 |
1 |
|
1 |
00:00:01 |
Predicate Information (identified by operation id):
- 2 -
access("OBJECT_ID"=100)
Notes
-
optimizer_use_stats_on_conventional_dml =
yes
- Dynamic sampling used for this statement
( level = 11 )
REPORT
------------------------------------------------------------------------------------------------------------------------
| Parsing Schema Name |
: LIN |
| SQL ID |
: 4ph5a5m5skqhz |
| SQL Text |
: select /*+ use_auto_indexes */ object_name from test_obj_ai where o
bject_id = 10 |
| Improvement Factor |
: 2337x |
Execution Statistics:
|
|
Original Plan
|
Auto Index Plan
|
|
Elapsed Time (s):
|
9425 |
38 |
|
CPU Time (s):
|
8432 |
38 |
|
Buffer Gets:
|
2337 |
3 |
|
Optimizer Cost:
|
32 |
2 |
|
Disk Reads:
|
0 |
0 |
|
Direct Writes:
|
0 |
0 |
|
Rows Processed:
|
1 |
1 |
|
Executions:
|
1 |
1 |
PLANS SECTION
- Original
| Plan Hash Value |
:
1599946467 |
| Id |
Operation |
Name |
Rows |
Bytes |
Cost |
Tim
e |
| 0 |
SELECT STATEMENT |
|
|
|
32 |
|
| 1 |
.
TABLE ACCESS STORAGE FULL
|
TEST_OBJ_AI |
6 |
474 |
32 |
00:00:01 |
Notes
-
optimizer_use_stats_on_conventional_dml =
yes
- With Auto Indexes
| Plan Hash Value |
:
3630496781 |
| Id |
Op
eration |
Name |
R
ows |
Bytes |
Cost
|
Time |
| 0 |
SELECT STATEMENT
td>
| |
1 |
79 |
2 |
00:00:01 |
| 1 |
.
TABLE ACCESS BY INDEX ROWID BATCHED
|
TEST_OBJ_AI |
1 |
79 |
2 |
00:00:01 |
| * 2 |
..
INDEX RANGE SCAN
|
SYS_AI_829s8wj1jb4y4 |
1 |
|
1 |
00:00:01 |
Predicate Information (identified by operation id):
- 2 -
access("OBJECT_ID"=10)
Hint Report (identified by operation id / Query Block Name / Object Alias):
Total hints for statement: 1
(E - Syntax Error (1))
Notes
-
optimizer_use_stats_on_conventional_dml =
yes
- Dynamic sampling used for this statement
( level = 11 )
| Parsing Schema Name |
: LIN |
| SQL ID |
: 5a41x15j0nz69 |
| SQL Text |
: select /*+ USE_AUTO_INDEXES */ object_name from test_obj_ai w
here object_id=1 |
| Improvement Factor |
: 2337x |
Execution Statistics:
|
|
Original Plan
|
Auto Index Plan
|
|
Elapsed Time (s):
|
9477 |
37 |
|
CPU Time (s):
|
9282 |
37 |
|
Buffer Gets:
|
2337 |
3 |
|
Optimizer Cost:
|
32 |
2 |
|
Disk Reads:
|
0 |
0 |
|
Direct Writes:
|
0 |
0 |
|
Rows Processed:
|
1 |
1 |
|
Executions:
|
1 |
1 |
PLANS SECTION
- Original
| Plan Hash Value |
:
1599946467 |
| Id |
Operation
th>
| Name |
Rows |
Bytes |
Cost |
Time |
| 0 |
SELECT STATEMENT |
|
|
|
32 |
|
| 1 |
.
TABLE ACCESS STORAGE FULL
|
TEST_OBJ_AI |
6 |
474 |
32 |
00:00:01 |
Notes
-
optimizer_use_stats_on_conventional_dml =
yes
- With Auto Indexes
| Plan Hash Value |
:
3630496781 |
| Id |
Operation |
Name |
Rows |
Bytes |
C
ost |
Time |
| 0 |
SELECT STATEMEN
T |
|
1 |
79 |
2 |
00:00:01 |
| 1 |
.
TABLE ACCESS BY INDEX ROWID BATCHED
|
TEST_OBJ_AI |
1 |
79 |
2 |
00:00:01 |
| * 2 |
..
INDEX RANGE SCAN
|
SYS_AI_829s8wj1jb4y4 |
1 |
|
1 |
00:00:01 |
Predicate Information (identified by operation id):
- 2 -
access("OBJECT_ID"=1)
Hint Report (identified by operation id / Query Block Name / Object Alias):
Total hints for statement: 1
(E - Syntax Error (1))
Notes
-
optimizer_use_stats_on_conventional_dml =
yes
- Dynamic sampling used for this statement
( level = 11 )
| Parsing Schema Name |
: LIN |
| SQL ID |
: 8h1r5cs6gtk10 |
| SQL Text |
: select object_name from test_obj_ai where object_id='999'
td>
|
| Improvement Factor |
: 2338.5x |
Execution Statistics:
|
|
Original Plan
|
Auto Index Plan
|
|
Elapsed Time (s):
|
19268 |
37 |
|
CPU Time (s):
|
17271 |
37 |
|
Buffer Gets:
|
4677 |
3 |
|
Optimizer Cost:
|
32 |
2 |
|
Disk Reads:
|
0 |
0 |
|
Direct Writes:
|
0 |
0 |
|
Rows Processed:
|
2 |
1 |
|
Executions:
|
2 |
1 |
PLANS SECTION
- Original
| Plan Hash Value |
:
1599946467 |
| Id |
Operation |
Name
| Rows |
Bytes |
Cost |
Time |
| 0 |
SELECT STAT
EMENT |
|
|
|
32 |
|
| 1 |
.
TABLE ACCESS STORAGE FULL
|
TEST_OBJ_AI |
6 |
474 |
32 |
00:00:01 |
Notes
-
optimizer_use_stats_on_conventional_dml =
yes
- With Auto Indexes
| Plan Hash Value |
:
3630496781 |
| Id |
Operation |
Name |
Rows |
Bytes |
Cost |
Ti
me |
| 0 |
SELECT STATEMENT |
|
1 |
79 |
2 |
00:00:01 |
| 1 |
.
TABLE ACCESS BY INDEX ROWID BATCHED
|
TEST_OBJ_AI |
1 |
79 |
2 |
00:00:01 |
| * 2 |
..
INDEX RANGE SCAN
|
SYS_AI_829s8wj1jb4y4 |
1 |
|
1 |
00:00:01 |
Predicate Information (identified by operation id):
- 2 -
access("OBJECT_ID"=999)
Notes
-
optimizer_use_stats_on_conventional_dml =
yes
- Dynamic sampling used for this statement
( level = 11 )
| Parsing Schema Name |
: LIN |
| SQL ID |
: 920q656bfbs87 |
| SQL Text |
: select object_name from test_obj_ai where object_id='11' |
| Improvement Factor |
: 2337x |
Execution Statistics:
|
|
Original Plan
|
Auto Index Plan
|
|
Elapsed Time (s):
|
9521 |
37 |
|
CPU Time (s):
|
9293 |
36 |
|
Buffer Gets:
|
2337 |
3 |
|
Optimizer Cost:
|
32 |
2 |
|
Disk Reads:
|
0 |
0 |
|
Direct Writes:
|
0 |
0 |
|
Rows Processed:
|
1 |
1 |
|
Executions:
|
1 |
1 |
PLANS SECTION
- Original
| Plan Hash Value |
:
1599946467 |
| Id |
Oper
ation |
Name |
Row
s |
Bytes |
Cost
th>
| Time |
| 0 |
SELECT STATEMENT |
|
|
|
32 |
|
| 1 |
.
TABLE ACCESS STORAGE FULL
|
TEST_OBJ_AI |
6 |
474 |
32 |
00:00:01 |
Notes
-
optimizer_use_stats_on_conventional_dml =
yes
REPORT
------------------------------------------------------------------------------------------------------------------------
- With Auto Indexes
| Plan Hash Value |
:
3630496781 |
| Id<
/th>
| Operation |
Name
|
Rows |
Bytes
| Cost |
Time |
| 0 |
SELECT STATEMENT |
|
1 |
79 |
2 |
00:00:01 |
| 1 |
.
TABLE ACCESS BY INDEX ROWID BATCHED
|
TEST_OBJ_AI |
1 |
79 |
2 |
00:00:01 |
| * 2 |
..
INDEX RANGE SCAN
|
SYS_AI_829s8wj1jb4y4 |
1 |
|
1 |
00:00:01 |
Predicate Information (identified by operation id):
- 2 -
access("OBJECT_ID"=11)
Notes
-
optimizer_use_stats_on_conventional_dml =
yes
- Dynamic sampling used for this statement
( level = 11 )
| Parsing Schema Name |
: LIN |
| SQL ID |
: 9ffdunca53nfc |
| SQL Text |
: select object_name from test_obj_ai where o
bject_id='1' |
| Improvement Factor |
: 2337x |
Execution Statistics:
|
|
Original Plan
|
Auto Index Plan
|
|
Elapsed Time (s):
|
9605 |
35 |
|
CPU Time (s):
|
8859 |
35 |
|
Buffer Gets:
|
2337 |
3 |
|
Optimizer Cost:
|
32 |
2 |
|
Disk Reads:
|
0 |
0 |
|
Direct Writes:
|
0 |
0 |
|
Rows Processed:
|
1 |
1 |
|
Executions:
|
1 |
1 |
PLANS SECTION
- Original
| Plan Hash Value |
:
1599946467 |
| Id |
Operation |
Name |
Rows |
B
ytes |
Cost |
Time
|
| 0 |
SELECT STATEMENT |
|
|
|
32 |
|
| 1 |
.
TABLE ACCESS STORAGE FULL
|
TEST_OBJ_AI |
6 |
474 |
32 |
00:00:01 |
Notes
-
optimizer_use_stats_on_conventional_dml =
yes
- With Auto Indexes
| Plan Hash Value |
:
3630496781 |
| Id |
Ope
ration |
Name |
Ro
ws |
Bytes |
Cost<
/th>
| Time |
| 0 |
SELECT STATEMENT
| |
1 |
79 |
2 |
00:00:01 |
| 1 |
.
TABLE ACCESS BY INDEX ROWID BATCHED
|
TEST_OBJ_AI |
1 |
79 |
2 |
00:00:01 |
| * 2 |
..
INDEX RANGE SCAN
|
SYS_AI_829s8wj1jb4y4 |
1 |
|
1 |
00:00:01 |
Predicate Information (identified by operation id):
- 2 -
access("OBJECT_ID"=1)
Notes
-
optimizer_use_stats_on_conventional_dml =
yes
- Dynamic sampling used for this statement
( level = 11 )
| Parsing Schema Name |
: LIN |
| SQL ID |
: 9r4snusbhyn82 |
| SQL Text |
: select object_name /*+ USE_AUTO_INDEXES */ from test_ob
j_ai where object_id=1 |
| Improvement Factor |
: 2337x |
Execution Statistics:
|
|
Original Plan
|
Auto Index Plan
|
|
Elapsed Time (s):
|
9391 |
50 |
|
CPU Time (s):
|
8369 |
31 |
|
Buffer Gets:
|
2337 |
3 |
|
Optimizer Cost:
|
32 |
2 |
|
Disk Reads:
|
0 |
0 |
|
Direct Writes:
|
0 |
0 |
|
Rows Processed:
|
1 |
1 |
|
Executions:
|
1 |
1 |
PLANS SECTION
- Original
| Plan Hash Value |
:
1599946467 |
| Id |
Opera
tion |
Name |
Rows
|
Bytes |
Cost
| Time |
| 0 |
SELECT STATEMENT |
|
|
|
32 |
|
| 1 |
.
TABLE ACCESS STORAGE FULL
|
TEST_OBJ_AI |
6 |
474 |
32 |
00:00:01 |
Notes
-
optimizer_use_stats_on_conventional_dml =
yes
- With Auto Indexes
| Plan Hash Value |
:
3630496781 |
| Id
th>
| Operation |
Name<
/th>
| Rows |
Bytes |
Cost |
Time |
| 0 |
SELECT ST
ATEMENT |
|
1 |
79 |
2 |
00:00:01 |
| 1 |
.
TABLE ACCESS BY INDEX ROWID BATCHED
|
TEST_OBJ_AI |
1 |
79 |
2 |
00:00:01 |
| * 2 |
..
INDEX RANGE SCAN
|
SYS_AI_829s8wj1jb4y4 |
1 |
|
1 |
00:00:01 |
Predicate Information (identified by operation id):
- 2 -
access("OBJECT_ID"=1)
Notes
-
optimizer_use_stats_on_conventional_dml =
yes
- Dynamic sampling used for this statement
( level = 11 )
| Parsing Schema Name |
: LIN |
| SQL ID |
: gzz3n7h7jmv3n |
| SQL Text |
: select object_name from test_obj_ai where obj
ect_id='10' |
| Improvement Factor |
: 2337x |
Execution Statistics:
|
|
Original Plan
|
Auto Index Plan
|
|
Elapsed Time (s):
|
9473 |
35 |
|
CPU Time (s):
|
8341 |
35 |
|
Buffer Gets:
|
2337 |
3 |
|
Optimizer Cost:
|
32 |
2 |
|
Disk Reads:
|
0 |
0 |
|
Direct Writes:
|
0 |
0 |
|
Rows Processed:
|
1 |
1 |
|
Executions:
|
1 |
1 |
PLANS SECTION
- Original
| Plan Hash Value |
:
1599946467 |
| Id |
Operation |
Name |
Rows |
By
tes |
Cost |
Time<
/th>
|
| 0 |
SELECT STATEMENT |
|
|
|
32 |
|
| 1 |
.
TABLE ACCESS STORAGE FULL
|
TEST_OBJ_AI |
6 |
474 |
32 |
00:00:01 |
Notes
-
optimizer_use_stats_on_conventional_dml =
yes
- With Auto Indexes
| Plan Hash Value |
:
3630496781 |
| Id |
Oper
ation |
Name |
Row
s |
Bytes |
Cost
th>
| Time |
| 0 |
SELECT STATEMENT |
|
1 |
79 |
2 |
00:00:01 |
| 1 |
.
TABLE ACCESS BY INDEX ROWID BATCHED
|
TEST_OBJ_AI |
1 |
79 |
2 |
00:00:01 |
| * 2 |
..
INDEX RANGE SCAN
|
SYS_AI_829s8wj1jb4y4 |
1 |
|
1 |
00:00:01 |
Predicate Information (identified by operation id):
- 2 -
access("OBJECT_ID"=10)
Notes
-
optimizer_use_stats_on_conventional_dml =
yes
- Dynamic sampling used for this statement
( level = 11 )
ERRORS
No errors found.
LIN@KKB> spool off


Sessions
These are the confirmed sessions for Airflow Summit.
| ID | Title | Description | Slides |
|---|---|---|---|
| a1 | Keynote: Airflow then and now - Bolke de Bruin, Maxime Beauchemin | Bolke and Maxime tell us about past on current time of Apache Airflow. | Download |
| a2 | Airflow at Société Générale : An open source orchestration solution in a banking environment - Mohammed Marragh, Alaeddine Maaoui | This talk covers an overview of Airflow as well as lessons learned of its implementation in a banking production environment which is Société Générale. It will be the summary of a two-year experience, a storytelling of an adventure within Société Générale in order to offer an internal cloud solution based on Airflow (AirflowaaS). |
|
| a3 | Scheduler as a service - Apache Airflow at EA Digital Platform - Nitish Victor, Preethi Ganeshan, Xiaoqin Zhu | In this talk, we share the lessons learned while building a scheduler-as-a-service leveraging Apache Airflow to achieve improved stability and security for one of the largest gaming companies. The platform integrates with different data sources and meets varied SLA’s across workflows owned by multiple game studios. In particular, we present a comprehensive self-serve airflow architecture with multi-tenancy, auto-dag generation, SSO-integration with improved ease of deployment. |
Download |
| b1 | Keynote: How large companies use Airflow for ML and ETL pipelines - Kevin Yang, Dan Davydov, Tao Feng | In this talk, colleagues from Airbnb, Twitter and Lyft share details about how they are using Apache Airflow to power their data pipelines. |
|
| b2 | Data DAGs with lineage for fun and for profit - Bolke de Bruin | Let’s be honest about it. Many of us don’t consider data lineage to be cool. But what if lineage would allow you to write less boilerplate and less code, while at the same time make your data scientists, your auditors, your management and well everyone more happy? What if you could write DAGs that mix between tasks based and data based? |
|
| b3 | Airflow on Kubernetes: Containerizing your workflows - Michael Hewitt | At Nielsen Digital we have been moving our ETLs to containerized environments managed by Kubernetes. We have successfully transferred some of our ETLs to this environment in production. In order to do this we used the following technologies: Helm to easily deploy Airflow on to Kubernetes; Airflow’s Kubernetes Executor to take full advantage Kubernetes features; and Airflow’s Kubernetes Pod Operator in order to execute our containerized Tasks within our DAGs. To automate a lot of the deployment process we also used Terraform. Lastly, Kubernetes features were used to gain much more fine grained control of Airflows infrastructure. |
Download |
| c1 | Data flow with Airflow @ PayPal - Aishwarya Sankaravadivel | In PayPal we decided to move away from two of our enterprise schedulers, Control-M and UC4, to Airflow. As we started the journey, the first most important step that we wanted to take was to build all the mandatory API’s on the top of Airflow so that we could integrate with our Self-Service Tools. In this talk we share the challenges that we ran into while building APIs on top of Airflow and how we overcame them. | |
| c2 | Democratised data workflows at scale - Mihail Petkov, Emil Todorov | Financial Times is increasing its digital revenue by allowing business people to make data-driven decisions. Providing an Airflow based platform where data engineers, data scientists, BI experts and others can run language agnostic jobs was a huge swing. One of the most successful steps in the platform’s development was building our own execution environment, allowing stakeholders to self deploy jobs without cross team dependencies on top of the unlimited scale of Kubernetes. In this talk we share how we have integrated and extended Airflow at Financial Times. |
Download |
| c3 | Migrating Airflow-based Spark jobs to Kubernetes - the native way - Roi Teveth, Itai Yaffe | At Nielsen Identity Engine, we use Spark to process 10’s of TBs of data. Our ETLs, orchestrated by Airflow, spin-up AWS EMR clusters with thousands of nodes per day. In this talk, we’ll guide you through migrating Spark workloads to Kubernetes with minimal changes to Airflow DAGs, using the open-sourced GCP Spark-on-K8s operator and the native integration we recently contributed to the Airflow project. | Download |
| d1 | Keynote: Future of Airflow - Jarek Potiuk, Kaxil Naik, Tomasz Urbaszek, Ash Berlin-Taylor, Kamil Bregula, Daniel Imberman | A team of core committers explain what is coming to Airflow 2.0. | Download |
| d2 | Run Airflow DAGs in a secure way - Rafal Biegacz | In the contemporary world security is important more than ever - Airflow installations are no exception. Google Cloud Platform and Cloud Composer offer useful security options for running your DAGs and tasks in a way so you effectively can manage a risk of data exfiltration and access to the system is limited. |
|
| d3 | Airflow as the next gen of workflow system at Pinterest - Yulei Li, Dinghang Yu, Ace Haidrey | At Pinterest, our current workflow system, called pinball, has served the data pipeline orchestration demands well for years. However, with the rapid increasing execution demand the system started to expose scalability and performance issues. Therefore we decided to look for a new solution to better address the issues and serve the workflow scheduling demand, and we chose Airflow as our next generation of workflow. In this talk we discuss how we made the decision to on board to Apache Airflow, and beyond the out-of-box features and experience what improvements we made to better support the business need at Pinterest. | Download |
| w1 | Workshop: Getting started with Apache Airflow - Fokko Driesprong | Learn how to create your first DAG with an Airflow instance on the cloud via Cloud Composer | |
| e1 | Keynote: Making Airflow a sustainable project through D&I - Aizhamal Nurmamat kyzy, Griselda Cuevas | Gris Cuevas shares some statistics about the state of D&I at the Apache Software Foundation and also the initiative the foundation is taking to make projects more diverse and inclusive. Then, Aizhamal shares her own journey on becoming an open source contributor, and dives into project specific initiatives that help Apache Airflow to be one of the most sustainable projects in open source. | Download |
| e2 | Improving Airflow's user experience - Ry Walker, Maxime Beauchemin, Viraj Parekh | Astronomer is focused on improving Airflow’s user experience through the entire lifecycle — from authoring + testing DAGs, to building containers and deploying the DAGs, to running and monitoring both the DAGs and the infrastructure that they are operating within — with an eye towards increased security and governance as well. In this talk we walk you through some current UX challenges, an overview of how the Astronomer platform addresses the major challenges, and also provide sneak peek of the things that we’re working on in the coming months to improve Airflow’s user experience. |
Download |
| e3 | Airflow CI/CD: Github to Cloud Composer (safely) - Jacob Ferriero | Deploying bad DAGs to your Airflow environment can wreak havoc. This talk provides an opinionated take on a mono repo structure for GCP data pipelines leveraging BigQuery, Dataflow and a series of CI tests for validating your Airflow DAGs before deploying them to Cloud Composer. |
Download |
| e4 | Advanced Apache Superset for Data Engineers - Maxime Beauchemin | Superset is the leading open source data exploration and visualization platform. In this talk, we’ll be presenting Superset with a focus on advanced topics that are most relevant to Data Engineers. The presentation will be largely a live demo of the product, with a deeper dive into advanced topics for Data Engineers. |
Download |
| e5 | Teaching an old DAG new tricks - QP Hou | Scribd is migrating its data pipeline from an in house system to Airflow. It’s a one big giant data pipeline consisting of more than 1,500 tasks. In this talk, I would like to share couple best practices on setting up a cloud native Airflow deployment in AWS. For those who are interested in migrating a non-trivial data pipeline to Airflow, I will also share how Scribd plans and executes the migration. |
Download |
| e6 | Ask me anything with Airflow members - | We will host an ‘ask me anything’ with a group of Airflow committers & PMC members. | |
| w2 | Workshop: Best Practices for running Airflow on Kubernetes - Daniel Imberman, Greg Neiheisel | Learn all of the ins-and-outs of running Airflow on Kubernetes. | |
| f1 | Demo: Reducing the lines, a visual DAG editor - Traey Hatch | In this talk I will introduce a DAG authoring and editing tool for Airflow that we have built. Installed as a plugin, this tool allows users to author DAGs compose existing operators and hooks with virtually no Python experience. We walk through a demo of DAG authorship and deployment, and spend time reviewing the underlying open-source standards used and the general approach that was taken to develop the code. |
Download |
| f2 | AIP-31: Airflow functional DAG definition - Gerard Casas Saez | Airflow does not currently have an explicit way to declare messages passed between tasks in a DAG. XCom are available but are hidden in execution functions inside the operator. AIP-31 proposes a way to make this message passing explicit in the DAG file and make it easier to reason about your DAG behaviour. |
Download |
| f3 | Using Airflow to speed up development of data intensive tools - Blaine Elliot | In this talk we review how Airflow helped create a tool to detect data anomalies. Leveraging Airflow for process management, database interoperability, and authentication created an easy path forward to achieve scale, decrease the development time and pass security audits. While Airflow is generally looked at as a solution to manage data pipelines, integrating tools with Airflow can also speed up development of those tools. |
Download |
| g1 | Autonomous driving with Airflow - Amr Noureldin, Michal Dura | This talk describes how Airflow is utilized in an Autonomous driving project, originating from Munich - Germany. We describe the Airflow setup, what challenges we encountered and how we maneuvered to achieve a distributed and highly scalable Airflow setup. |
Download |
| g2 | From cron to Airflow on Kubernetes: A startup story - Adam Boscarino | Learn how Devoted Health went from cron jobs to Airflow deployment Kubernetes using a combination of open source and internal tooling. |
Download |
| g3 | Airflow in Airbnb - Kevin Yang, Ping Zhang, Yingbo Wang, Cong Zhu, Conor Camp | Go over the yesterday, today and tomorrow for Airflow in Airbnb. Share our learnings and vision in Airflow core and around Airflow in its eco system. |
|
| h1 | Pipelines on pipelines: Agile CI/CD workflows for Airflow DAGs - Victor Shafran | How do you create fast and painless delivery of new DAGs into production? When running Airflow at scale, it becomes a big challenge to manage the full lifecycle around your pipelines; making sure that DAGs are easy to develop, test, and ship into prod. In this talk, we will cover our suggested approach to building a proper CI/CD cycle that ensures the quality and fast delivery of production pipelines. |
Download |
| h2 | Production Docker image for Apache Airflow - Jarek Potiuk | This talk will guide you trough internals of the official Production Docker Image of Airflow. It will show you the foreseen use cases for it and how to use it in conjunction with the Official Helm Chart to make your own deployments. | Download |
| h3 | Airflow as an elastic ETL tool - Hendrik Kleine, Vicente Ruben del Pino Ruiz | In search of a better, modern, simplistic method of managing ETL’s processes and merging them with various AI and ML tasks, we landed on Airflow. We envisioned a new user friendly interface that can leverage dynamic DAG’s and reusable components to build an ETL tool that requires virtually no training. |
Download |
| i1 | How do we reason about the reliability of our data pipeline in Wrike - Alexander Eliseev | In this talk we will share some of the lessons we have learned after using Airflow for a couple of years and growing from 2 users to 8 teams. We cover: establishing a reliable review process on AirFlow, managing multiple Airflow configurations, data versioning. | Download |
| i2 | Achieving Airflow observability with Databand - Josh Benamram | While Airflow is a central product for data engineering teams, it’s usually one piece of a bigger puzzle. The vast majority of teams use Airflow in combination with other tools like Spark, Snowflake, and BigQuery. Making sure pipelines are reliable, detecting issues that lead to SLA misses, and identifying data quality problems requires deep visibility into DAGs and data flows. Join this session to learn how Databand’s observability system makes it easy to monitor your end-to-end pipeline health and quickly remediate issues. |
Download |
| i3 | From S3 to BigQuery - How a first-time Airflow user successfully implemented a data pipeline - Leah Cole | BigQuery is GCP’s serverless, highly scalable and cost-effective cloud data warehouse that can analyze petabytes of data at super fast speeds. Amazon S3 is one of the oldest and most popular cloud storage offerings. Folks with data in S3 often want to use BigQuery to gain insights into their data. Using Apache Airflow, they can build pipelines to seamlessly orchestrate that connection. In this talk, Leah walks through how they created an easily configurable pipeline to extract data. |
Download |
| w3 | Workshop: Contributing to Apache Airflow - Jarek Potiuk, Tomasz Urbaszek | Learn how to become a code contributor to the Apache Airflow project. | |
| j1 | Building reuseable and trustworthy ELT pipelines (A templated approach) - Nehil Jain | To improve automation of data pipelines, I propose a universal approach to ELT pipeline that optimizes for data integrity, extensibility, and speed to delivery. The workflow is built using open source tools and standards like Apache Airflow, Singer, Great Expectations, and DBT. |
Download |
| j2 | Testing Airflow workflows - ensuring your DAGs work before going into production - Bas Harenslak | How do you ensure your workflows work before deploying to production? In this talk I’ll go over various ways to assure your code works as intended - both on a task and a DAG level. |
Download |
| j3 | Adding an executor to Airflow: A contributor overflow exception - Vanessa Sochat | Engaging with a new community is a common experience in OSS development. There are usually expectations held by the project about the contributor’s exposure to the community, and by the contributor about interactions with the community. When these expectations are misaligned, the process is strained. In this talk Vanessa discusses a real life experience that required communication, persistence, and patience to ultimately lead to a positive outcome. |
|
| k1 | Migration to Airflow backport providers - Anita Fronczak | In this talk Anita showcases how to use the newly released Airflow Backport Providers. |
|
| k2 | From Zero to Airflow: bootstrapping a ML platform - Noam Elfanbaum | At Bluevine we use Airflow to drive our ML platform. In this talk, Noam presents the challenges and gains we had at transitioning from a single server running Python scripts with cron to a full blown Airflow setup. This includes: supporting multiple Python versions, event driven DAGs, performance issues and more! |
|
| k3 | Airflow the perfect match in our analytics pipeline - Sergio Fandino | For three years we at LOVOO, a market-leading dating app, have been using the Google Cloud managed version of Airflow, a product we’ve been familiar with since its Alpha release. We took a calculated risk and integrated the Alpha into our product, and, luckily, it was a match. Since then, we have been leveraging this software to build out not only our data pipeline, but also boost the way we do analytics and BI. |
Download |
| l1 | Data engineering hierarchy of needs - Angel Daz | Data Infrastructures look differently between small, mid, and large sized companies. Yet, most content out there is for large and sophisticated systems. And almost none of it is on migrating a legacy, on-prem, databases over to the cloud. In order to better explain the evolving needs of data engineering organizations, we will review the hierarchy of needs for data engineering. |
Download |
| l2 | What open source taught us about business - Karolina Rosol, Maciej Oczko | This talk shares Polidea’s journey from mobile app development studio to an OSS oriented business partner. We will tell you our story towards code leadership throughout the years. We are also going to share the challenges and practical insights into managing open source projects in our company. After this talk, you will know how we approached combining open source, business and team management not forgetting about a human aspect. |
Download |
| l3 | Effective Cross-DAG dependency - Rafael Ribaldo, Lucas Mendes Mota da Fonseca | Cross-DAG dependency may reduce cohesion in data pipelines and, without having an explicit solution in Airflow or in a third-party plugin, those pipelines tend to become complex to handle. That is the reason we, at QuintoAndar, have created an intermediate DAG to handle relationships across data pipelines called Mediator, in order for them to be scalable and maintainable by any team. |
|
| m1 | Airflow: A beast character in the gaming world - Naresh Yegireddi, Patricio Garza | Being a pioneer for the past 25 years, SONY PlayStation has played a vital role in the Interactive Gaming Industry. Over 100+ million monthly active users, 100+ million PS-4 console sales along with thousands of game development partners across the globe, big-data problem is quite inevitable. This presentation talks about how we scaled Airflow horizontally which has helped us building a stable, scalable and optimal data processing infrastructure powered by Apache Spark, AWS ECS, EC2 and Docker. |
|
| m2 | Machine Learning with Apache Airflow - Daniel Imberman | This talk discusses how to build an Airflow based data platform that can take advantage of popular ML tools (Jupyter, Tensorflow, Spark) while creating an easy-to-manage/monitor |
|
| m3 | Achieving Airflow Observability - Evgeny Shulman | Identify issues in a fraction of the time and streamline root cause analysis for your DAGs. Airflow is the leading orchestration platform for data engineers. But when running Airflow at production scale, many teams have bigger needs for monitoring jobs, creating the right level of alerting, tracking problems in data, and finding the root cause of errors. In this talk we will cover our suggested approach to gaining Airflow observability so that you have the visibility you need to be productive. |


{% extends 'base.html' %} {% block content %}
This link does not exist. Maybe you mispelled it?
List all available links


Iran Discovers New Oil Field Containing 53 Billion Barrels of Crude, President Rouhani Says
Iran is considered a global energy superpower; the country reportedly possesses 10% of the world's oil reserves.
Iranian President Hassan Rouhani said on Sunday a new oilfield containing 53 billion barrels of crude had been discovered in the country.
Hassan Rouhani said that the discovered field was located in Iran's oil-rich Khuzestan province.
The discovery of a new oilfield would boost Iran's proven crude oil reserves by a third. At the moment, Iran has some 150 billion barrels of crude oil reserves.
In January, the International Energy Agency (IEA) presented a report in which it stated that oil production in Iran, constrained by US sanctions, dropped by 520,000 barrels per day (bpd) in December, down from 2.8 million bpd in October.
The US reinstated energy-related sanctions against Iran last year after withdrawing from the 2015 nuclear deal, aimed at bringing Iran's oil exports to zero and pressuring it to negotiate a new agreement. Iran has been reluctant to cave in to pressure from the United States and started rolling back some of its nuclear commitments.
The US sanctions, however – which also discourage foreign companies from doing business with Iran – have prompted the country to search for ways to avoid them, and exporting crude from just outside the Persian Gulf may well be one of them.


Boardgame Shop
Submit
available games
pre-order
help
sign in
{{product.name}}
{{product.price}}
Number of Players: {{product.players}}
Difficulty: {{product.difficulty}}
Add to Cart
{{product.description}}
{{product.storage}}
more details


Yang Hyun Suk reportedly unable to answer police summons for additional questioning today
by beansssAccording to media outlet reports on November 6, former YG Entertainment head producer Yang Hyun Suk was unable to attend additional police questioning on this day due to unknown reasons.
Previously, it was reported that police would begin investigations to determine Yang Hyun Suk's involvement in covering up former iKON member B.I's illegal drug use charges from 2016. On November 6, representatives from the Gyeonggi District Police summoned Yang Hyun Suk as a suspect for questioning purposes; however, Yang Hyun Suk's side relayed to police, "It will be difficult to attend [today]."
Yang Hyun Suk is also facing criminal charges including habitual illegal gambling, solicitation of prostitution, etc.
Police plan on summoning the former head producer some time again in the near future to continue with their ongoing investigations.


--- layout: post title: How to Memorize an Entire Deck of Cards, Guaranteed (and Supercharge Your Memory) | Inc.com date: '2019-10-05T00:52:00.001+05:30' author: Sahil Rajput tags: modified_time: '2019-10-05T00:52:35.939+05:30' blogger_id: tag:blogger.com,1999:blog-5250005448924290719.post-2786170987653891520 blogger_orig_url: https://www.jaadujinn.ml/2019/10/how-to-memorize-entire-deck-of-cards.html ---


When it comes to hiring a virtual assistant or hiring out for a virtual project team I can solve your problems and I do all the work to find the perfect solution. I releasing clients from the time, overwhelm, and uncertainty of finding the right VA or VA project team on their own. I have the answers to your questions and answer the questions you didn’t know to ask such as:
A virtual assistant is someone who works from wherever they are, not where you are, to perform administrative, technical, and organizational tasks which are not the best use of your time. Sure, you could do these things but if you’re doing this job who is doing yours?
I like to tell my clients, if you have a need I have a VA for you. We can’t bring you lunch, but we can order it and have it delivered to you. The key thing to remember is that very few things require a person to be present.
Nope! While you often get a better rate if you use more hours in a month, it is not necessary. In fact, most clients only need a VA 5-10 hours a week (10 being on the high side). If you were to start out with more hours than that there is a very high probability you would not see an equal return on your investment.
Absolutely! One of the most common projects clients want to start is creating a newsletter. They may or may not know where to begin. You can hire a VA to simply make sure your list is together properly, followers have opted in, create a template you love, and then leave you to writing the content and finally sending it out to your audience.
The cost of VAs is widely dependent on skill and demand. Below is a generalization and does not include what you could save by paying a flat rate or project amount. Nor does it include a reduced rate option for buying hours in bulk.
These prices are for VAs based in the United States who can pass a background check and have a proven track record.
Yes, negotiation is often an option. As long as the negotiation creates a win-win outcome you can feel comfortable. Most VAs don’t negotiate immediately so this is a conversation you would have to begin.
The general rates still apply for beginning VAs. An experienced with VA with stats of how she has helped her clients can be hard to find. Mostly, because the best VAs get booked up quickly and aren’t marketing themselves. This means the value for an experienced VA is quite high.
Virtual assistant groups are a great place to find VAs. Also, where you spend time online is a good indicator or where your VA should be. If you never spend time on Pinterest don’t go looking there. Should your business have heavy LinkedIn presence your VA should too.
There are many different factors for having a good VA. It’s more important that the VA you hire is the right VA for the job and you can communicate with her easily and seamlessly. Not being able to communicate well and easily is the biggest red flag and you should not proceed.
Initial indicators, beyond communication, are;
It’s very common to outgrow your VA. Especially, if your business is rapidly expanding. If this is the case, you don’t have to feel bad. What you’ll need to do is plan to hire a team that can keep up with your demand.
The number one reason that I find people don’t keep a long lasting working relationship with their VA is because their VA wasn’t onboarded properly. Onboarding is a two-way street. Your VA is going to onboard you and you have to onboard them as well. It is NOT an organic process. Know where you want to be in 12 weeks and work backward to keep a high-level plan for where you want to be.
Yes. It’s a simple process and provides another piece of mind.
Depending on what type of VA you are interviewing you can get very specific. However, I have all my clients ask these three questions. HYPERLINK
To properly onboard your VA have a 12 week plan to create a roadmap. Here is what I use with my clients. HYPERLINK
I’ve seen this go wrong so many times. Remember communication strategy and ideal client are necessary for this to relationship to work.
Also, the VA may have taken you on as a client so she wouldn’t disappoint or seem unappreciative of the referral. However, she might not have the bandwidth and ultimately you, and other clients suffer.
As a VA Matchmaker I take away the overwhelm for you. Being both a Virtual Assistant and Entrepreneur I know what good looks like and the real needs of my client. I know all the things you don’t even know to ask.
From uncovering your current and long-term needs, knowing if it’s time to hire a team, what type of VA will have the greatest immediate impact on your business, when it’s time to negotiate or ask for a flat rate, I can do it all.
I have services ranging from $250 - $2000 to answer your questions and/or provide you white glove service.
For those who are just starting out and don’t have a steady income stream the market value is $250-$500. This is because this individual does have time to do the search, conduct interviews, and won’t typically have complex needs.
Entrepreneurs who are diversifying their income streams and splitting their time between clients, content, courses, book writing, speaking, etc. the market value is $3000-$4000. This is not only because of the time savings, but not having to miss out on opportunities which can be very costly. My services don’t take more of their time, clients can still conduct business while I am doing all the work. Additionally, the projects in their business that they wanted to implement can finally happen without sacrificing another area in their business. My one-time fee is easily recouped with a single signed contract.
The average time it takes to match a client with the right VA is 21 business days for the white glove package. I conduct and complete the initial interviews within five business days.
Most of the time it takes to match a client with a VA is highly dependent on their schedule. Final client/VA interviews often get delayed due to a busy work schedule.


You have found the weapon! It is a massive gold sword set in stone. I guess it wasn't all that hidden after all.


--- layout: post title: Appirio Raises $60 Million In Series D Funding, Acquisitions Incoming date: '2012-03-15T00:12:17-07:00' tags: tumblr_url: http://alexhwilliams.tumblr.com/post/19336278678/appirio-raises-60-million-in-series-d-funding ---
http://bit.ly/zBDivn


{% extends "base.html" %} {% from 'macro.html' import course_item %} {% block header %}
teacher email: {{ course.teacher.email |hidden_email }}
course tag length: {{ course.tags|length}}


 Once you complete the registration process, you will be ready to check out new badges and activities that are waiting for you. As you participate, you'll earn credit you can use to pick from a number of fun rewards.
We will use your e-mail address consistent with the privacy policy to send you messages concerning your Friends membership.
Your password is used for security and verification purposes. Your password is private, so please keep it safe!


4 SymPy and LaTeX
First, import the SymPy package.
import sympy
[1] 2019-11-07 21:41:57 (4.00ms) python3 (2.17s)
4.1 Basic usage
SymPy symbols or expressions in a fenced code block are automatically rendered in display mode:
x = sympy.Symbol('x')
x**3
[2] 2019-11-07 21:41:57 (9.01ms) python3 (2.18s)
On the other hand, in an inline code, a SymPy object just returns a latex string like this {{x**2}}
= x^{2}. This is intentional behavior. You can choose inline mode or display mode.
This is an inline mode example: x^{2} + 1 + \frac{1}{x}
This is a display mode example:
You can concatenate SymPy objects and/or normal latex source in the same line to make an expression form you prefer:
Here, -x+x does not cancel out automatically.
4.2 LatexPrinter
You can pass keyward arguments to LatexPrinter by "commented filter" notation.
fold_short_frac
option: Emit p/q
instead of \frac{p}{q}
Example: \frac{1}{x} vs. 1 / x
In a fenced code block, you can use normal option notation:
x**sympy.Rational(2, 3)
[13] 2019-11-07 21:41:57 (6.01ms) (fold_frac_powers=True) python3 (2.29s)
4.3 Numbering
Pheasant uses MathJax's Automatic Equation Numbering. Use the custom header syntax like the figure and table. Also, you can add a tag for link.
\begin{equation} f(x) = x^{2} \label{eq-a} \end{equation}
Using starred form, the equation won’t be numbered like original LaTeX.
\begin{equation*} f(x) = x^{2} \end{equation*}
As usual, you can refer to equation: See Eq. \eqref{eq-a}
Also, you can use native latex syntax. From MathJax document:
In equation \eqref{eq:sample}, we find the value of an interesting integral:
\begin{equation} \int_0^\infty \frac{x^3}{e^x-1}\,dx = \frac{\pi^4}{15} \label{eq:sample} \end{equation}


Database Usage
Normal database interactions are to go through the DB class.
The following examples will give you a feel for how to go about using the databse in fuel.
Database usage is devided into a couple of segments:
Running queries
First we prepare a query using DB::query.
// returns a new Database_Query
$query = DB::query('SELECT * FROM `users`');
Now we can execute that query:
$query = DB::query('SELECT * FROM `users`');
// return a new Database_MySQLi_Result
$query->execute();
// Or execute is on a different database group
$query->execute('another_group');
// or
$query->execute(Database_Connection::instance('another_group'));
// And we can chain then like this:
$result = DB::query('SELECT * FROM `users`')->execute();
Selection data
First let's select data using DB::query.
As we are going to fetch a result from this query, we need to let the it know
what kind of query we are going to run.
$result = DB::query('SELECT * FROM `users`', DB::SELECT)->execute();
We can also select data using DB::select or
DB::select_array.
// Will execute SELECT `id`, `name` FROM `users`
$result = DB::select('id','name')->from('users')->execute();
If you want to alias columns, use arrays instead of strings
// Will execute SELECT `name` as `the_name` FROM `users`;
$result = DB::select(array('name','the_name'))->from('users')->execute();
Results
Executing a select query will generate a result object containing the requested database records.
By default the result is fetched as objects. Here is an exaple how to influence this behaviour.
// Will fetch the result as an associative array.
$result = DB::select('id','name')->from('users')->as_assoc()->execute();
// Will fetch the result as an object.
$result = DB::select('id','name')->from('users')->as_object()->execute();
// Will fetch the result as an Model_Users object.
$result = DB::select('id','name')->from('users')->as_object('Model_Users')->execute();
Want to know how many records you have fetched? It's dead simple!
$result = DB::select('*')->from('users')->execute();
// Just count the results, it returns an int.
$num_rows = count($result);
To access these results you eighter loop through the result object directly, or get the result array.
$result = DB::select()->from('users')->execute();
foreach($result as $item)
{
// do something with $item
}
$result_array = $result->as_array();
foreach($result_array as $item)
{
// do something with $item
}
Optionaly we specify the array key and value to be returned from as_array
$result = DB::select()->from('users')->execute();
$on_key = $result->as_array('id');
foreach($on_key as $id => $item)
{
// $id will contain the records id
// do something with $item or it's $id
}
$key_value = $result->as_array('id', 'email');
foreach($on_key as $id => $email)
{
// now $email will be the email field.
// so you can do something with $id or $email
}
Filtering
In order to set the conditions on our queries we can set WHERE conditions.
These examples also apply to updating and deleting.
// Will execute SELECT * FROM `users` WHERE `id` = 1
$result = DB::select()->from('users')->where('id', '=', 1)->execute();
// Will execute SELECT * FROM `users` WHERE `id` IN (1, 2, 3)
$id_array = array(1,2,3);
$result = DB::select()->from('users')->where('id', 'IN', $id_array)->execute();
// Will execute SELECT * FROM `users` WHERE `id` != 1
$result = DB::select()->from('users')->where('id', '!=', 1)->execute();
// Will execute SELECT * FROM `users` WHERE `name` LIKE "john%"
$who = "john%";
$result = DB::select()->from('users')->where('id', 'like', $who)->execute();
Grouped where statements are also supported
// SELECT * FROM `users` WHERE (`name` = 'John' AND `email` =<EMAIL_ADDRESS>// OR (`name` = 'mike' OR `name` = 'dirk')
$result = DB::select()->from('users')->where_open()
->where('name', 'John')
->and_where('email'<EMAIL_ADDRESS>->where_close()
->or_where_open()
->where('name', 'mike')
->or_where('name', 'dirk')
->or_where_close()->execute();
Inserting
For inserting data we use DB::insert.
If succesfully executed an insert query will return an array containing a
list of insert id and rows created.
// Will execute INSERT INTO `users`(`name`,`email`,`password`)
// VALUES ("John Random"<EMAIL_ADDRESS>"s0_s3cr3t")
list($insert_id, $rows_affected) = DB::insert('users')->set(array(
'name' => 'John Random',
'email' =><EMAIL_ADDRESS>'password' => 's0_s3cr3t',
))->execute();
You can also set the columns and values seperatly
// Will execute INSERT INTO `users`(`name`,`email`,`password`)
// VALUES ("John Random"<EMAIL_ADDRESS>"s0_s3cr3t")
list($insert_id, $rows_affected) = DB::insert('users')->columns(array(
'name', 'email', 'password'
))->values(array(
'John Random'<EMAIL_ADDRESS>'s0_s3cr3t'
))->execute();
Deleting
To delete records, use DB::delete.
When executed it will return the number of rows affected.
// Empty the whole users table
$result = DB::delete('users')->execute(); // (int) 20
// Executes DELETE FROM `users` WHERE `email` LIKE<EMAIL_ADDRESS>$result = DB::delete('users')->where('email', 'like', '%example.com')->execute(); // (int) 7
Joins
When selecting data, you can also join other tables into the result.
// Will execute SELECT * FROM `users` LEFT JOIN `roles` ON `roles`.`id` = `users`.`role_id`
$result = DB::select()->from('users')->join('roles','LEFT')->on('roles.id', '=', 'users.role_id');
// Will execute SELECT * FROM `users` RIGHT OUTER JOIN `roles` ON `roles`.`id` = `users`.`role_id`
$result = DB::select()->from('users')->join('roles','right outer')->on('roles.id', '=', 'users.role_id');


Services
Our services are listed right here. We're team of designers and developers who create beautiful brands and design stunning websites.
Branding
You come to us with an idea and we will make your dream brand.
Digital Strategies
Online presency is very important, we make sure it's done right.
E-Commerce
Have an idea about an online shop? No problem, we got it covered.
Web Design
Throught logos, typography and so much more we tell your unique story.
Web Development
We make sure all of our websites are fast, user friendly and secure.
Management
No brand is complete without proper management, we can help you with that.


<%= wholeBucket ? 'Part of this bucket' : 'This area' %> may contain partial data. The selected time range does not fully cover it.


Answer all the screening questions either true or false.
Authorization of the proposed activity is not prohibited by the rules at 36 CFR part 261, subpart B, or by Federal, State, or local law unrelated to the content of expressive activity;
Authorization of the proposed activity is consistent or can be made consistent with the standards and guidelines in the applicable forest land and resource management plan required under the National Forest Management Act and 36 CFR part 219;
The proposed activity does not materially impact the characteristics or functions of the environmentally sensitive resources or lands identified in Forest Service Handbook 1909.15, chapter 30;
The proposed activity will not delay, halt, or prevent administrative use of an area by the Forest Service or other scheduled or existing uses or activities on National Forest System lands, including but not limited to uses and activities authorized under parts 222, 223, 228, and 251 of this chapter;
The proposed activity does not violate State and local public health laws and regulations as applied to the proposed site. Issues addressed by State and local public health laws and regulations as applied to the proposed site include but are not limited to:
The proposed activity will not pose a substantial danger to public safety. Considerations of public safety must not include concerns about possible reaction to the users' identity or beliefs from non-members of the group that is seeking an authorization and shall be limited to the following:
The proposed activity does not involve military or paramilitary training or exercises by private organizations or individuals, unless such training or exercises are federally funded; and
A person or persons 21 years of age or older have been designated to sign and do sign a special use authorization on behalf of the applicant.


|
s2n-doxygen-full
|
Go to the source code of this file.
Data Structures | |
| struct | ssl2_state_st |
Typedefs | |
| typedef struct ssl2_state_st | SSL2_STATE |
| #define SSL2_CK_DES_64_CFB64_WITH_MD5_1 0x02ff0800/* SSLeay */ |
| #define SSL2_MAX_RECORD_LENGTH_3_BYTE_HEADER 16383/* 2^14-1 */ |
| #define SSL2_ST_SEND_CLIENT_MASTER_KEY_A (0x30|SSL_ST_CONNECT) |
| #define SSL2_ST_SEND_CLIENT_MASTER_KEY_B (0x31|SSL_ST_CONNECT) |
| #define SSL2_ST_SEND_CLIENT_CERTIFICATE_A (0x50|SSL_ST_CONNECT) |
| #define SSL2_ST_SEND_CLIENT_CERTIFICATE_B (0x51|SSL_ST_CONNECT) |
| #define SSL2_ST_SEND_CLIENT_CERTIFICATE_C (0x52|SSL_ST_CONNECT) |
| #define SSL2_ST_SEND_CLIENT_CERTIFICATE_D (0x53|SSL_ST_CONNECT) |
| #define SSL2_ST_CLIENT_START_ENCRYPTION (0x80|SSL_ST_CONNECT) |
| #define SSL2_ST_X509_GET_CLIENT_CERTIFICATE (0x90|SSL_ST_CONNECT) |
| #define SSL2_ST_SEND_REQUEST_CERTIFICATE_A (0x70|SSL_ST_ACCEPT) |
| #define SSL2_ST_SEND_REQUEST_CERTIFICATE_B (0x71|SSL_ST_ACCEPT) |
| #define SSL2_ST_SEND_REQUEST_CERTIFICATE_C (0x72|SSL_ST_ACCEPT) |
| #define SSL2_ST_SEND_REQUEST_CERTIFICATE_D (0x73|SSL_ST_ACCEPT) |
| #define SSL2_ST_X509_GET_SERVER_CERTIFICATE (0x90|SSL_ST_ACCEPT) |
| typedef struct ssl2_state_st SSL2_STATE |


public static final int |
DEFAULT_BLOCK_ID |
0 |
public static final int |
DRAG_STATE_ACTIVE |
1 |
public static final int |
DRAG_STATE_RELEASE |
3 |
public static final int |
DRAG_SWIPE_STATE_NONE |
0 |
public static final int |
EVENT_CLICK |
0 |
public static final int |
EVENT_DOUBLE_CLICK |
2 |
public static final java.lang.String |
EVENT_END_EDGE_LOAD_MORE_ENABLE |
"EVENT_END_EDGE_LOAD_MORE_ENABLE" |
public static final java.lang.String |
EVENT_FINISH_END_EDGE_LOAD_MORE |
"EVENT_FINISH_END_EDGE_LOAD_MORE" |
public static final java.lang.String |
EVENT_FINISH_LOAD_MORE |
"EVENT_FINISH_LOAD_MORE" |
public static final java.lang.String |
EVENT_FINISH_START_EDGE_LOAD_MORE |
"EVENT_FINISH_START_EDGE_LOAD_MORE" |
public static final int |
EVENT_FOCUS_ATTACH |
4 |
public static final int |
EVENT_FOCUS_CHANGE |
3 |
public static final int |
EVENT_FOCUS_DETACH |
5 |
public static final java.lang.String |
EVENT_LOAD_MORE_ENABLE |
"EVENT_LOAD_MORE_ENABLE" |
public static final int |
EVENT_LONG_PRESS |
1 |
public static final java.lang.String |
EVENT_START_EDGE_LOAD_MORE_ENABLE |
"EVENT_START_EDGE_LOAD_MORE_ENABLE" |
public static final int |
FIXED_USE_DRAW |
0 |
public static final int |
FIXED_USE_VIEW |
1 |
public static final int |
LOAD_MORE_END_EDGE |
1 |
public static final int |
LOAD_MORE_ON_BIND |
1 |
public static final int |
LOAD_MORE_ON_SCROLL |
0 |
public static final int |
LOAD_MORE_START_EDGE |
0 |
public static final int |
SELECT_MULTI |
2 |
public static final int |
SELECT_SINGLE |
1 |
public static final int |
SNAP_MODE_LINEAR |
0 |
public static final int |
SNAP_MODE_PAGER |
1 |
public static final int |
SPAN_NONE |
-48 |
public static final int |
SPAN_SIZE_ALL |
-49 |
public static final int |
SPAN_SIZE_HALF |
-50 |
public static final int |
SPAN_SIZE_QUARTER |
-52 |
public static final int |
SPAN_SIZE_THIRD |
-51 |
public static final int |
SWIPE_STATE_ACTIVE |
2 |
public static final int |
SWIPE_STATE_RELEASE |
4 |
public static final int |
VIEW_TYPE_MAX |
4096 |


--- layout: post title: "'T' is for......." date: 2012-07-02 08:50:40.000000000 -04:00 categories: - Sewing tags: - Dress up - Dress up for girls - Spider dress up - Tarantula dress up status: publish type: post published: true meta: aktt_notify_twitter: 'no' _edit_last: '1' dsq_thread_id: '1188581851' author: login: cint email<EMAIL_ADDRESS>display_name: Jacinta first_name: Jacinta last_name: '' ---
Tarantula! Tarantula? I hear you say. Tenneille's class had a dress up day last week at school and they had to go as something that starts with their first initial. If you know my dear Tenneille, that would not be a teapot or something dainty, no a spider is so much more fitting. That girl loves her bugs dinosaurs and dragons. She wanted to go as a Pterodactyl, but that rascally silent 'p', fixed that idea up.
Anyway, I traipsed off to Spotlight to see what kind of spidery fabric I could find. Of course, there was the small problem of, 'how do I make a tarantula outfit?," and did I mention I only gave myself a day to get this finished? Ah, nothing like being the queen of last minute projects. I couldn't believe my eyes when I saw the fabric with the golden spiderwebs. I kind of fashioned the fabric as wings, so it would stay on her back and not get in her way.
The kids all looked super cute and there was actually another tarantula too! I think it was a nice day for the kids and gave them a chance to express their creative side too.
Jacinta x


This website is mainly used to promote and introduce different games so that viewers can immediately follow different game information. The website will introduce different game introductions, game reviews, related articles, etc., which will surely meet your different needs.
Address
18/F, VTC Tower, 27 Wood Road, Wan Chai, Hong Kong
Phone
+852 2836 1900
c*************@gmail.com


Grouping types by AssemblyLoadContext · Issue #302 · microsoft/clrmd In the .NET Framework, types can be loaded in different AppDomains. Now with .NET Core, they can instead be loaded in different AssemblyLoadContexts. Since any outstanding reference to an AssemblyL...
ASP.NET Blog | gRPC vs HTTP APIs ASP.NET Core now enables developers to build gRPC services. gRPC is an opinionated contract-first remote procedure call framework, with a focus on performance and developer productivity. gRPC integrates with ASP.NET Core 3.0, so you can use your existing ...
tree-sitter/tree-sitter-c-sharp C# Grammar for tree-sitter. Contribute to tree-sitter/tree-sitter-c-sharp development by creating an account on GitHub.
Identity & Access Control for modern Applications and APIs using ASP.NET Core 3 - NDC Security 2020 Modern application design has changed quite a bit in recent years.<section>“Mobile-first” and “cloud-ready” are the types of applications you are expected to develop. Also, to keep pace with these demands, Microsoft has revamped their complete web stack w...
Global AI Bootcamp - 14 December 2019 - All around the world. The Global AI Bootcamp is a free one-day event organized across the world by local communities that are passionate about artificial intelligence on Microsoft Azure.
r/dotnet - Microsoft (devs, pm-s etc): thank you all for Net Core 3 and Xamarin! 119 votes and 26 comments so far on Reddit
Welcoming the Norwegian Government to HIBP Over the last couple of years, I've been increasingly providing governments with better access to their departments' data exposed in breaches by giving them free and unfettered API access to their domains. As I've been travelling around the world this yea...
TomF's talks and papers. SMCANI to AVX512 - the life cycle of an instruction set presented at Handmade Seattle 2019 conference. I talk about how we went about creating the 512-bit SIMD extensions to the 80x86 instruction set - starting from its inception as a research project, go...
Leaked Russian interference report raises UK vote questions LONDON (AP) — Questions about the British government’s failure to release a report on Russia’s interference in the country’s politics continued to dog Prime Minister Boris Johnson on Sunday as...


Urban Grammar AI
research project
Last year, we attended the International Seminar on Urban Form 2021, which was held virtually in Glasgow, Scotland and presented a classification of Great Britain based on the form component of Spatial Signatures; we called those morphosignatures. Earlier this year the proceedings from the conference were published, including our paper describing the work. On that occasion, we also published the dataset of resulting morphosignatures.
You can get the paper either from the original proceedings under DOI 10.17868/strath.00080527 or from our Github repository (8MB). The bibtex citation for the paper is attached below.
The code we used to generate the morphosignatures is available on the WP2 Jupyter book of the project, since a lot of it is shared with the codebase we developed to generate our main signature classification. If you want to have a peek into the specific notebooks for the clustering step (the most unique part of this exercise), you can find it at the following links:
Form-based signatures
Second level form signatures
The dataset is available from https://doi.org/10.6084/m9.figshare.20337633.v1 and contains a GeoPackage with the morphosignatures geometries.
Finally, if you use the morphosignatures in your own work, you can cite them with the following reference:
Fleischmann, Martin and Arribas-Bel, Daniel; (2022) Classifying urban form at national scale : the British morphosignatures. In: Annual Conference Proceedings of the XXVIII International Seminar on Urban Form. University of Strathclyde Publishing, Glasgow, pp. 895-905. ISBN<PHONE_NUMBER>161
And, if you write in LaTeX, you can use the follow bibtex snippet:
bibtex
@incollection{fleischmannmartin2022Classifying, title = {Classifying Urban Form at National Scale : The {{British}} Morphosignatures}, shorttitle = {Classifying Urban Form at National Scale}, booktitle = {Annual {{Conference Proceedings}} of the {{XXVIII International Seminar}} on {{Urban Form}}}, author = {Fleischmann, Martin and {Arribas-Bel, Daniel}}, year = {2022}, pages = {895--905}, publisher = {{University of Strathclyde Publishing}}, address = {{Glasgow}}, doi = {10.17868/STRATH.00080527}, isbn = {978-1-914241-16-1} }