GENERAL DESCRIPTION
Color: Violet, Purple, Red, Pink
Day: Thursday
Ruler: Jupiter
Greatest Overall Compatibility: Aries, Leo
Best for Partnerships: Gemini
Lucky Numbers: 3, 12, 21, 30
Date range: November 22 - December 21
Sagittarius traits
Strengths: Generous, idealistic, great sense of humor
Weaknesses: Promises more than can deliver, very impatient, will say anything no matter how undiplomatic
Sagittarius likes: Freedom, travel, philosophy, being outdoors
Sagittarius dislikes: Clingy people, being constrained, off-the-wall theories, details
Curious and energetic, Sagittarius is one of the biggest travelers among all zodiac signs. Their open mind and philosophical view motivates them to wander around the world in search of the meaning of life.
Sagittarius is extrovert, optimistic and enthusiastic, and likes changes. Sagittarius-born are able to transform their thoughts into concrete actions and they will do anything to achieve their goals.
Like the other fire signs, Sagittarius needs to be constantly in touch with the world to experience as much as possible. The ruling planet of Sagittarius is Jupiter, the largest planet of the zodiac. Their enthusiasm has no bounds, and therefore people born under the Sagittarius sign possess a great sense of humor and an intense curiosity.
Freedom is their greatest treasure, because only then they can freely travel and explore different cultures and philosophies. Because of their honesty, Sagittarius-born are often impatient and tactless when they need to say or do something, so it's important to learn to express themselves in a tolerant and socially acceptable way.
Sagittarius Love
People born under the sign of Sagittarius are very playful and humorous, which means that they will enjoy having fun with their partners. Partners who are equally open, will certainly suit the passionate, expressive Sagittarius who is willing to try almost anything.
But when they are truly in love, their very loyal, faithful and dedicated. They want their partners to be intellectual, sensitive and expressive.
Sagittarius Friends and Family
Sagittarius is very fun and always surrounded by friends. Sagittarius-born love to laugh and enjoy the diversity of life and culture, so they will easily acquire many friends around the world. They are generous and not one of those who lecture. When it comes to family, Sagittarius is dedicated and willing to do almost anything.
Sagittarius Career and Money
When Sagittarius-born visualize something in their minds, the will do everything they can to achieve this. They always know what to say in a given situation and they are great salespeople. Sagittarius favors different tasks and dynamic atmosphere. Jobs such as a travel agent, photographer, researcher, artist, ambassador, importer and exporter suit this free-spirited person.
The fun-loving Sagittarius enjoys making and spending money. Considered to be the happiest sign of the zodiac, Sagittarius does not care much where it will earn the following money. They take risks and are very optimistic. They believe that the universe will provide everything they need


Online Demo Gallery
RangeSelector
Behavior
Dark Theme
Light Theme
Calculate the Working Days Count in a Date Period


Here are some of my favorite people
These are my three favorites, in order:
Thank for reading about me!


hydroscoper
vignettes/intro_hydroscoper.Rmd
intro_hydroscoper.Rmd
Hydroscope
is the Greek National Data Bank for
Hydrological and Meteorological Information, a result of long-standing
efforts by numerous Greek scientists in collaboration with various
companies and associations. It was implemented in three phases, funded
by the Ministry of Development, the Ministry of Environment and Energy
and the European Union.
This National Data Bank provides several data sources from various organisations via a web interface. Each participating organisation keeps its data on its own server using a database system for the storage and management of information. These organisations are:
The above data are structured as tables and space separated text files, but are in Greek, thus limiting their usefulness. Another issue with Hydroscope is the lack of comprehensive look-up tables about the available data, which are spread across many different databases.
hydroscoper
?
hydroscoper
provides functionality for automatic
retrieval and translation of Hydroscope’s data to English. The main
functions that can be utilized is the family of functions,
get_stations
, get_timeseries
,
get_data
, etc., to easily download Hydroscope’s data as
tibbles
.
The package covers Hydroscope’s data sources using the Enhydris API. The Enhydris database is implemented in PostgreSQL and details about the about the Web-service API here.
The internal datasets of the package can be used to run queries on the available Hydroscope’s stations and time series data, reducing the time needed for downloading and data wrangling, as these data are rarely modified. These datasets are:
stations
It is a comprehensive look-up table with geographical and ownership information of the available stations in all Hydroscope’s databases. The variables are:
station_id
The station’s ID.name
The station’s name.water_basin
The station’s Water Basin.water_division
The station’s Water Division.owner
The station’s owner.longitude
The station’s longitude in decimal degrees,
(ETRS89).latitude
The station’s latitude in decimal degrees,
(ETRS89).altitude
The station’s altitude, meters above sea
level.subdomain
The corresponding Hydroscope’s database.timeseries
It is also a look-up table with all the available measurements for a given station in a given Hydroscope’s database, with units of measurement and times of those measurements. The variables are:
time_id
The time series ID.station_id
The corresponding station’s ID.variable
The time series variable type.timestep
The timestep of time series.units
The units of the time series.start_date
The starting date of time series
values.end_date
The ending date of time series values.subdomain
The corresponding Hydroscope’s database.http://kyy.hydroscope.gr/
.http://ypaat.hydroscope.gr
.http://emy.hydroscope.gr
.http://deh.hydroscope.gr
.Note that:
ypaat
, emy
and kyy
sub-domains are maintained by the National Technical University Of
Athens and these servers work seamlessly.deh
sub-domain is maintained by the Greek Public Power
Corporation and occasionally the server is down.This is a basic example which shows how to get the stations’ and time
series’ data from the Hydroscope’s Ministry of Environment and Energy
database, http://kyy.hydroscope.gr/
.
Load libraries:
We will use the package’s data stations
and
timeseries
, to reduce the time needed with data munging. We
can subset the station’s data for the kyy
sub-domain
with:
# load data
data("stations")
# subset stations data
kyy_stations <- subset(stations, subdomain == "kyy")
# view kyy stations
kyy_stations
#> # A tibble: 425 × 9
#> station_id name water…¹ water…² owner longi…³ latit…⁴ altit…⁵ subdo…⁶
#> <int> <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl> <chr>
#> 1 501032 AG. BASILEI… "KOURT… GR13 min_… NA NA NA kyy
#> 2 200246 GEPH. KOKKO… "ALPHE… GR01 min_… 22.0 37.5 318 kyy
#> 3 200237 TROPAIA "ALPHE… GR01 min_… 22.0 37.7 728. kyy
#> 4 200231 BYTINA "ALPHE… GR01 min_… 22.2 37.7 1011. kyy
#> 5 200200 LYKOURIA "ALPHE… GR01 min_… 22.2 37.9 758. kyy
#> 6 200236 MEGALOPOLE "ALPHE… GR01 min_… 22.1 37.4 429. kyy
#> 7 200244 ODOG. AG. S… "REMA … GR01 min_… 21.8 37.0 182. kyy
#> 8 200204 TRIPOTAMA "ALPHE… GR01 min_… 21.9 37.9 570. kyy
#> 9 200198 KASTELLIO "ALPHE… GR01 min_… 22.0 37.9 792. kyy
#> 10 200239 PERDIKONERI "ALPHE… GR01 min_… 22.0 37.7 837. kyy
#> # … with 415 more rows, and abbreviated variable names ¹water_basin,
#> # ²water_division, ³longitude, ⁴latitude, ⁵altitude, ⁶subdomain
Let’s plot these stations using the package’s dataset
greece_borders
.
ggplot() +
geom_polygon(data = greece_borders,
aes(long, lat, group = group),
fill = "grey",
color = NA) +
geom_point(data = kyy_stations,
aes(x = longitude, y = latitude),
color = "#E64B35FF") +
coord_fixed(ratio=1) +
theme_bw()
#> Warning: Removed 11 rows containing missing values (geom_point).
To get the time series’ data for the station 200200
we
can use:
station_ts <- subset(timeseries, station_id == 200200)
station_ts
#> # A tibble: 4 × 8
#> time_id station_id variable timestep units start_date end_d…¹ subdo…²
#> <int> <int> <chr> <chr> <chr> <chr> <chr> <chr>
#> 1 761 200200 wind_direction NA ° 1948-01-01… 1997-0… kyy
#> 2 56 200200 precipitation 30_minutes mm 1985-05-06… 1997-0… kyy
#> 3 760 200200 snow daily mm 1948-01-01… 1997-0… kyy
#> 4 759 200200 precipitation daily mm 1953-03-01… 2011-0… kyy
#> # … with abbreviated variable names ¹end_date, ²subdomain
We can download the station’s precipitation time series 56:
ts_raw <- get_data(subdomain = "kyy", time_id = 56)
ts_raw
#> # A tibble: 147,519 × 3
#> date value comment
#> <dttm> <dbl> <chr>
#> 1 1985-05-06 08:00:00 0 1
#> 2 1985-05-06 08:30:00 0 1
#> 3 1985-05-06 09:00:00 0 1
#> 4 1985-05-06 09:30:00 0 1
#> 5 1985-05-06 10:00:00 0 1
#> 6 1985-05-06 10:30:00 0 1
#> 7 1985-05-06 11:00:00 0 1
#> 8 1985-05-06 11:30:00 0 1
#> 9 1985-05-06 12:00:00 0 1
#> 10 1985-05-06 12:30:00 0 1
#> # … with 147,509 more rows
Let’s create a plot:
ggplot(data = ts_raw, aes(x = date, y = value))+
geom_line()+
labs(title= "30 min precipitation",
subtitle = "station 200200",
x="Date", y = "Rain height (mm)")+
theme_classic()


One of the many things I got introduced to at Scotland on Rails was the Rack project. Designed to help create flexible web application deployments, it creates an interface between webservers and ruby web app. frameworks (rails, sinatra etc).
Reading some of the examples, it occurred to me that Rack could be pretty handy for web application testing where sometimes it's useful to have a minimal web application to bounce things off.
One example of this is demo'ing XSS attacks. A standard XSS attack is cookie stealing. The way this works is the attacker inserts a script tag with a reference to a URL controlled by the attacker and inserts the cookie for the victim site into a parameter to the URL.
So for example if we've found an XSS vector we can put

into the vulnerable box and if we have a server listening on that IP address we get the cookie..
Here's where rack comes in. You can use rack to very quickly create some code to listen on a port and accept the incoming request (and indeed to anything else you can do with ruby, but hey lets start small).
A proof of concept script to do something like this might look like the one below...
#!/usr/bin/env ruby require 'rubygems' require 'rack' builder = Rack::Builder.new do use Rack::CommonLogger @@grabbed = Array.new map '/' do run Proc.new {|env| [200, {"Content-Type" => "text/html"}, "
 Rack Pen Test Helper
"]} end map '/cookiegrabber' do app = proc do |env| req = Rack::Request.new(env) ip = req.ip.to_s cookie = req.params['cookie'] || "No Cookie Parameter passed" @@grabbed << [ip,cookie] [200, {"Content-Type" => "text/html"}, "grabbed " + cookie + " from " + ip + "
 Grabbed " + @@grabbed.length.to_s + " cookies so far"] end run app end map '/cookiegrabbed' do app = proc do |env| out = "" if @@grabbed.length > 0 @@grabbed.each do |crumb| out << "Grabbed a cookie with value " + crumb[1] + " from " + crumb[0] + "
" end else out = "Nothing Grabbed so far" end [200, {"Content-Type" => "text/html"}, out] end run app end end Rack::Handler::Mongrel.run builder, :Port => 9292


A gallery of examples showcasing complications that arise in mass digitisations
Block quote in a new paragraph and OCR artefacts in the top and left page margins.
Continuing block quote; transliterated arabic text presented no differently from the rest of the text in p1_line_1_20 "Kemalol-ilm...".
Continuing footnote from the previous page has a greater offset than the other footnotes on the page.
Italian verses with line numbers and right-aligned reference numbers; footnote references also include notes in German. Many lines in verses have been wrongly segmented into indivisual paragraphs.
There are several OCR artefacts on the left margin. Additionally, verses are presented as block quotes with line numbers marked at multiples of 5. " is used in the beginning of every line (but after the verse number) to signify the block quote.
Transliterated japanese (Romaji); verses very poorly segmented into new paragraphs due to artefacts in the left margin.
Contains Latin and German; latin is present as isolated blocks as well as interspresed with German text in prose, but they have distinct formats. Besides artefacts, the paragraph segmentation is poor.


Hi Name!


Home
Events
Event Locations
Members
Legal Disclosure
About US
Register
Log in
X
Username
Create Password
Repeat Password
Create Account
X
Username
Password
Login
Forgot password?


Sudhanshu Dubey
11th Jan 2020
Mentors Without Borders is a group of passionate professionals who want to teach young people from all over the world how to enjoy the process of setting goals and taking steps towards these goals in their chosen fields.
Fix a very clear goal.
while(goal != achieved):


Voted "a regular PC interface" by Retired Admiral David Simpson, former chief of the FCC’s Public Safety and Homeland Security Bureau. src
Honolulu CivilBeat says, "better represents what an employee would have seen" than a screenshot of hyperlinks from a Vern Miyagi text message. src


What resisters are
Registers are lists of information. Each register is the most reliable list of its kind. For example, the Foreign and Commonwealth Office’s (FCO’s) country register is the most accurate and up-to-date list of countries available.
Each register is looked after by one person, known as the ‘custodian’. The custodian is from the organisation responsible for the information in the register. They make sure the register is kept up to date.
The benefits of registers
If you work on a service team, using a register will mean you’re only ever working with one reliable and current source of data.
Other sources (such as a statistical report) might not be properly looked after. They can be out of date or unpublished at any time.
This can affect your service and stop it working the way it should for your users.
Using a register instead will mean you can concentrate on building your service rather than checking if the data you’re using is still accurate.
Registers can also help you if you collect, manage or store data for your organisation.
You only publish data in one place if you use a register, which means you won’t need to update multiple lists and datasets whenever something changes.
Using a register
You can use an application programming interface (API) to automatically pull data from a register into your service. Doing this will mean you’ll always have access to the most recent version of the data in the register.
The data is available in a number of different formats. You can:
- use it as JSON if you’re a developer
- download it as a CSV file if you work with spreadsheets
- download it as an RDF file if you need to link it to another register
Creating a register
You’ll need to work with Government Digital Service (GDS) if you want to create a register.
We’re currently working with several government departments and agencies to develop their registers, including FCO, Department for Education and Department for Communities and Local Government.


Applies the meanShift algorithm to a joint spatial/range image. See "Mean Shift Analysis and Applications" by Comaniciu & Meer for info. Assumes X is an MxNxP array, where an X(i,j,:) represents the range data at locations (i,j). This function runs meanShift on each of the MxN data points. It takes advantage of the lattice structure of an image for efficiency (it only needs to calculate full distance between two points if they are near each other spatially). In the original formulation of the algorithm, after normalization of the data, the search window around each point x has radius 1 (ie corresponding to 1 std of the data). That is the search window only encloses 2*s+1 pixels, and of those, all which fall within 1 unit from x are used to calcluate the new mean. If softFlag==0 the original formulation is used. If softFlag==1, instead of using a fixed radius, each point p is used in the calulation of the mean with points close to x given significantly more weight. Specifically, each point p is given weight exp(-dist(x,p)). So instead of having a fixed cutoff at r, the cutoff is 'soft' (same idea as in softmax), and occurs at approximately r. The implementation remains efficient by actually using a hard cutoff at points further then 2r spatially from x. The resulting matrix M is of size MxNx(P+2). M(i,j,1) represents the convergent row location of X(i,j,:) - (which had initial row location i) and M(i,j,2) represents the final column location. M(i,j,p+2) represents the convergent value for X(i,j,p). The optionaly outputs Vr and Vc are 2D arrays where Vr(i,j)=M(i,j,1)-i and Vc(i,j)=M(i,j,2)-j. That is they represent the spatial offset between the original location of a point and its convergent location. Display using quiver(Vc,Vr,0). USAGE [M,Vr,Vc] = meanShiftIm( X,sigSpt,sigRng,[softFlag],[maxIter],[minDel] ) INPUTS X - MxNxP data array, P may be 1 sigSpt - integer specifying spatial standard deviation sigRng - value specifying the standard deviation of the range data softFlag - [0]- see above maxIter - [100] maximum number of iterations per data point minDel - [.001] minimum amount of spatial change defining convergence OUTPUTS M - array of convergent locations [see above] Vr - spatial motion in row direction Vc - spatial motion in col direction EXAMPLE I=double(imread('cameraman.tif'))/255; [M,Vr,Vc] = meanShiftIm( I,5,.2 ); figure(1); im(I); figure(2); im( M(:,:,3) ); % color image: I=double(imread('hestain.png'))/255; [M,Vr,Vc] = meanShiftIm( I,5,.2 ); figure(1); im(I); figure(2); im( M(:,:,3:end) ); See also MEANSHIFT, MEANSHIFTIMEXPLORE Piotr's Computer Vision Matlab Toolbox Version 2.0 Copyright 2014 Piotr Dollar. [pdollar-at-gmail.com] Licensed under the Simplified BSD License [see external/bsd.txt]


A multi-platform CLI /idgames client for downloading Doom addons quickly.
Current Version: 0.0.9
Installation from source using pip (for Python3) is recommended. PyPi packages are considered "stable" releases.
If you enjoy wadget and want to help me out, please consider becoming a Patron!
wadget is a CLI client for the /idgames database. It's multi-platform, "apt-get like" and easily installed using pip. The idea is to bring the speed of package managers implemented for downloading Doom addons and files. Fancy some UAC Ultra? Simply:
$ wadget uacultra
wadget is scripted using Python3 and is extremely compatible. It has it's own wrapper for the /idgames API to decrease required libraries across systems, utilizing requests, and can even run on Android phones using Termux. You can easily install it with pip from the source directory using:
$ pip3 install .
Or if you fancy PyPi, the latest "stable" release is usually on there:
$ pip3 install wadget
It's important to specify pip3 if pip is the Python2x variant on your system. wadget will not function under Python2x. On some platforms, you can get away with using "pip" instead of "pip3" if the latter fails. Try pip3 first!
wadget is developed and maintained by me, Avery Ross. I made it because I love Unix environments, package managers, and of course, Doom! After years of making and downloading Doom addons from the /idgames directory, I thought I could make it a little quicker and easier for us CLI guys.
Have any ideas for wadget? Did you find an undocumented bug? Keep in mind it's a work in progress, but I'd love feedback! You can reach me via e-mail at<EMAIL_ADDRESS>or submit a issue/feature request on GitHub.
© Avery Ross 2018


{%extends "blog/base.html" %} {% block content %} {% load staticfiles %}
Once you have logged onto your account, click on the "New Post" title.
You will be redirected to page as shown above
First input field specifies the topic of your book
Content field is used for giving a short description of the book.
User can input the image of the book by clicking on the button below.
Image is mandatory as it is the proof that you have the book with youAfter completing the process,click the post button. And your post will be on the Librolet with default token value of 100.If you delete the post,you will loose the 100 token you have gained


| OLD line(s): 139,141
<xsd:choice> <!-- Filing Status - Filing status of the submission --> <xsd:element name="FilingStatus" type="StringType"/> | NEW line(s): 138
|
| OLD line(s): 143
<!-- Acceptance Status element applies to TY09 and later filing only --> | NEW line(s): 139
|
| OLD line(s): 145
</xsd:choice> | NEW line(s): 140
|
| OLD line(s): 159,161
<xsd:choice> <!-- EIN - The EIN of the filer --> <xsd:element name="EIN" type="EINType" minOccurs="0"/> | NEW line(s): 153
|
| OLD line(s): 163
<!-- TIN element applies to TY09 and later filing only --> | NEW line(s): 154
|
| OLD line(s): 165
</xsd:choice> | NEW line(s): 155
|
| OLD line(s): 306
| NEW line(s): 297,299
<!-- Disclaimer text --> <xsd:element name="Disclaimer" minOccurs="0" type="StringType"/> |


The following NAACCR versions are currently supported:
The Abstract, Modified, Confidential and Incidence flavors are supported for those versions.
The following compression algorithms are supported:
Several software can be found online to compress/uncompress a given file.
For example,
7-Zip is a free standalone program that will handle the two compression methods.
The utility tool allows you to select the compression as part of the conversion options.
By default, the compression is set to the same one as the source file, but that can be changed by using the compression drop-down.


{% extends "basic-template.html" %} {% block title %} Cubic splines {% endblock %} {% block content %}
Cubic splines method is one of dozens methods of function interpolating.
You can only use the following list of unary functions: abs, arccos, arcsin, cbrt, cos, exp, log, log10, log1p, max, min, sin, sgn, sqrt, tan. Also there are couple of binary functions: arctan2, hypot, pow. And of course, you can use all "classical" arithmetic operations.
Have fun!


"Here is a
Quote
for you"
!!!


If you find any incorrect information or incorrect implementation, please let me know.
Helpful Articles: Jake Archibald
JavaScript has a rather important concept that I believe needs to be understand with some clarity and expertise. It works different from your everyday languages such as Java. First of all, JavaScript follows a single threaded execution model, but the way JavaScript does this may confuse people (think asynchronous operations). Anyhow, let's take a look at how the event loop is generally structured.
We can draw couple of conclusions from this diagram. First, Macrotasks are only processed once. It then runs straight down to processing Microtasks and here, it will process all Microtasks that have been queued. It then checks if any re-rendering is required, and if not, it goes back to the initial state of the loop.
The natural question here to ask is, what are Macrotasks and Microtasks? Macrotasks are usually big events, such as Mouse events and Keyboard events. Microtasks are usually something smaller like promises, and DOM manipulations.
We can see a slight troubling scenario here, which is that if a microtasks subsequently adds more microtasks, it could lead to a scenario where it takes a while before any microtasks has a chance to get processed. Something to keep in mind.
How does this translate into our everyday programming? Here's a sample operation:
//ES6++
//Taken from Listing 13.1 from the Secrets of the JavaScript Ninja
const firstButton = document.getElementById("firstButton");
const secondButton = document.getElementById("secondButton");
firstButton.addEventListener("click", function firstHandler(){
/*Some click handle code that runs for 8 ms*/
});
secondButton.addEventListener("click", function secondHandler(){
/*Click handle code that runs for 5ms*/
});
/*Code that runs for 15ms*/
firstButton
click event handler gets added, then secondButton
gets added. Remember, we only process Macrotasks one at a time. Therefore, after 15ms, firstButton
's event handler will run for 8ms, then secondButton
's event handler for 5ms. This gives us total running time of 28ms. However, after the firstButton's event gets handled, you may need to factor in rendering time, therefore the running time may actually be greater.
//ES6++
// Let's get hold of those elements
var outer = document.querySelector('.outer');
var inner = document.querySelector('.inner');
// Let's listen for attribute changes on the
// outer element
new MutationObserver(function() {
console.log('mutate');
}).observe(outer, {
attributes: true
});
// Here's a click listener…
function onClick() {
console.log('click');
setTimeout(function() {
console.log('timeout');
}, 0);
Promise.resolve().then(function() {
console.log('promise');
});
outer.setAttribute('data-random', Math.random());
}
// …which we'll attach to both elements
inner.addEventListener('click', onClick);
outer.addEventListener('click', onClick);
click, promise, mutation, click, promise, mutation, timeout, timeout
Firefox may not be the best browser after all, yet (even though it's all I've been using lately...).


avro::OStreamer Class Reference
An implementation of OutputStreamer that writes bytes to a std::ostream for output.
More...
#include <OutputStreamer.hh>
List of all members.
Public Member Functions |
|
| OStreamer (std::ostream &os) |
|
size_t | writeByte (uint8_t byte) |
|
size_t | writeWord (uint32_t word) |
|
size_t | writeLongWord (uint64_t word) |
|
size_t | writeBytes (const void *bytes, size_t size) |
Detailed Description
An implementation of OutputStreamer that writes bytes to a std::ostream for output.
Right now this class is very bare-bones, without much in way of error handling.
The documentation for this class was generated from the following file:


Creating Realtime Applications with PHP and Websockets
@cballou on twitter
fork on github
Below you will find descriptions and links to the interactive demos used for the presentation.
-
Mouse
The user logger demo is the simplest of the three demos. The backend WebSocket server PHP code is fairly stock and the frontend JavaScript adds a very small amount of application logic on top of the core HTML5 WebSockets API. The application itself demonstrates real-time monitoring of user interaction with a website by recording their browser settings and broadcasting them out to all other connected users.
-
UserLogger
The mouse tracking demo takes things a step further. The WebSocket server backend used is exactly the same as that used in the User Logger demo. The true difference is in the amount of client-side JavaScript. In this demo, we bind mouse movement and click events to a callback function which records the current position. Each user receives a custom generated circular dot with their own color and size. On each movement, a WebSocket send event is triggered sending the server the user's new coordinates. The server broadcasts the new coordinates and accompanying user data to the remainder of the connected clients and they update their screens accordingly.
-
Todo
The todo list demo takes a basic CRUD implementation of a todo list and turns it on it's head. This demo introduces the ability to add WebSockets to an existing PHP application. This does come at quite a cost, however, as it entails adding a messaging layer to your existing application so it may talk to the WebSocket server. In our case, we use ZeroMQ as it is supported by react/zeromq. The application also introduces the WAMP sub-protocol of WebSockets, allowing us to use RPC and PubSub patterns to manage the sheer number of different event types. One of the key takeaways from this demo is the amount of edge-cases that need to be handled due to concurrency. This includes various forms of locking to ensure users don't step on each other's toes.


Area area = new Area(myArbitraryShape); Rectangle2D rect = new Rectangle2D.Float(x,y,w,h); area.intersect(new Area(rect));
There's just one problem: if your shape is not linear, the java.awt.geom.Area
class is a horrible, rotten no-good class to resort to.
I wasn't aware of the Sutherland-Hodgman clipping algorithm or the Weiler-Atherton clipping algorithm when I set out to tackle this problem, and I ended up creating a different model that doesn't necessarily match either of those. (Does that mean I created the "Wood Clipping Algorithm"? Ugh. That sounds terrible. Makes me think of wood chipping.)
In my new Clipper
class, the PathIterator
from the source shape is traced exactly once. As it is traced it is constrained by the clipping shape. If a curve/segment lies outside the clipping rectangle (or intersects it), then it is flattened against the rectangle. For example:
This can lead to redundant lines with no depth, but this data is passed through another filter that collapses redundant points outside the clipping bounds.
As of this writing when I run this locally my results resemble:
Time:
| java.awt.geom.Area class (Cubic) | 2,374 ms |
| java.awt.geom.Area class (Quadratic) | 246 ms |
| java.awt.geom.Area class (Linear) | 26 ms |
| com.pump.geom.Clipper class (Cubic) | 9 ms |
| com.pump.geom.Clipper class (Quadratic) | 3 ms |
| com.pump.geom.Clipper class (Linear) | 2 ms |
| java.awt.geom.Area class (Cubic) | 92.71 MB |
| java.awt.geom.Area class (Quadratic) | 30.03 MB |
| java.awt.geom.Area class (Linear) | 7.58 MB |
| com.pump.geom.Clipper class (Cubic) | 2.55 MB |
| com.pump.geom.Clipper class (Quadratic) | 2.55 MB |
| com.pump.geom.Clipper class (Linear) | 2.55 MB |
I was surprised to see the Clipper
for cubic shapes outperformed the Area
for linear shapes. That suggests even if you're only dealing with polygons: the Clipper
class is still worth considering.
What exactly do those numbers mean? For each data sample we measure the time/memory required to clip 100 shapes with 20 random segments. Each shape fits within a 300x300 rectangle, and we're clipping it to a centered 100x100 rectangle. We run each test 10 times and only keep the median time/memory measurement.
As the number of path segments increases, the cost of the Area
class does not scale linearly. (And when I reached 35 segments: I started getting OutOfMemoryErrors.) But 20 random segments is a lot of complex data. Most shapes (such as glyphs in a font) do not self-intersect nearly as often as random shapes, so we might see less terrible numbers if we used more predictable shapes.


CREATE CAST (source_type AS target_type) WITH FUNCTION function_name (argument_type [, ...]) [ AS ASSIGNMENT | AS IMPLICIT ] CREATE CAST (source_type AS target_type) WITHOUT FUNCTION [ AS ASSIGNMENT | AS IMPLICIT ] CREATE CAST (source_type AS target_type) WITH INOUT [ AS ASSIGNMENT | AS IMPLICIT ]
CREATE CAST defines a new cast. A cast specifies how to perform a conversion between two data types. For example:
SELECT CAST(42 AS float8);
converts the integer constant 42 to type float8 by invoking a previously specified function, in this case float8(int4). (If no suitable cast has been defined, the conversion fails.)
Two types can be binary coercible, which means that the conversion can be performed "for free" without invoking any function. This requires that corresponding values use the same internal representation. For instance, the types text and varchar are binary coercible both ways. Binary coercibility is not necessarily a symmetric relationship. For example, the cast from xml to text can be performed for free in the present implementation, but the reverse direction requires a function that performs at least a syntax check. (Two types that are binary coercible both ways are also referred to as binary compatible.)
You can define a cast as an I/O conversion cast using the WITH INOUT syntax. An I/O conversion cast is performed by invoking the output function of the source data type, and passing the result to the input function of the target data type.
By default, a cast can be invoked only by an explicit cast request, that is an explicit CAST(x AS typename) or x::typename construct.
If the cast is marked AS ASSIGNMENT then it can be invoked implicitly when assigning a value to a column of the target data type. For example, supposing that foo.f1 is a column of type text, then:
INSERT INTO foo (f1) VALUES (42);
will be allowed if the cast from type integer to type text is marked AS ASSIGNMENT, otherwise not. (We generally use the term assignment cast to describe this kind of cast.)
If the cast is marked AS IMPLICIT then it can be invoked implicitly in any context, whether assignment or internally in an expression. (We generally use the term implicit cast to describe this kind of cast.) For example, consider this query:
SELECT 2 + 4.0;
The parser initially marks the constants as being of type integer and numeric respectively. There is no integer + numeric operator in the system catalogs, but there is a numeric + numeric operator. The query will therefore succeed if a cast from integer to numeric is available and is marked AS IMPLICIT — which in fact it is. The parser will apply the implicit cast and resolve the query as if it had been written
SELECT CAST ( 2 AS numeric ) + 4.0;
Now, the catalogs also provide a cast from numeric to integer. If that cast were marked AS IMPLICIT — which it is not — then the parser would be faced with choosing between the above interpretation and the alternative of casting the numeric constant to integer and applying the integer + integer operator. Lacking any knowledge of which choice to prefer, it would give up and declare the query ambiguous. The fact that only one of the two casts is implicit is the way in which we teach the parser to prefer resolution of a mixed numeric-and-integer expression as numeric; there is no built-in knowledge about that.
It is wise to be conservative about marking casts as implicit. An overabundance of implicit casting paths can cause PostgreSQL to choose surprising interpretations of commands, or to be unable to resolve commands at all because there are multiple possible interpretations. A good rule of thumb is to make a cast implicitly invokable only for information-preserving transformations between types in the same general type category. For example, the cast from int2 to int4 can reasonably be implicit, but the cast from float8 to int4 should probably be assignment-only. Cross-type-category casts, such as text to int4, are best made explicit-only.
Note: Sometimes it is necessary for usability or standards-compliance reasons to provide multiple implicit casts among a set of types, resulting in ambiguity that cannot be avoided as above. The parser has a fallback heuristic based on type categories and preferred types that can help to provide desired behavior in such cases. See CREATE TYPE for more information.
To be able to create a cast, you must own the source or the target data type. To create a binary-coercible cast, you must be superuser. (This restriction is made because an erroneous binary-coercible cast conversion can easily crash the server.)
The name of the source data type of the cast.
The name of the target data type of the cast.
The function used to perform the cast. The function name can be schema-qualified. If it is not, the function will be looked up in the schema search path. The function's result data type must match the target type of the cast. Its arguments are discussed below.
Indicates that the source type is binary-coercible to the target type, so no function is required to perform the cast.
Indicates that the cast is an I/O conversion cast, performed by invoking the output function of the source data type, and passing the result to the input function of the target data type.
Indicates that the cast can be invoked implicitly in assignment contexts.
Indicates that the cast can be invoked implicitly in any context.
Cast implementation functions can have one to three arguments. The first argument type must be identical to or binary-coercible from the cast's source type. The second argument, if present, must be type integer; it receives the type modifier associated with the destination type, or -1 if there is none. The third argument, if present, must be type boolean; it receives true if the cast is an explicit cast, false otherwise. (Bizarrely, the SQL standard demands different behaviors for explicit and implicit casts in some cases. This argument is supplied for functions that must implement such casts. It is not recommended that you design your own data types so that this matters.)
The return type of a cast function must be identical to or binary-coercible to the cast's target type.
Ordinarily a cast must have different source and target data types. However, it is allowed to declare a cast with identical source and target types if it has a cast implementation function with more than one argument. This is used to represent type-specific length coercion functions in the system catalogs. The named function is used to coerce a value of the type to the type modifier value given by its second argument.
When a cast has different source and target types and a function that takes more than one argument, it represents converting from one type to another and applying a length coercion in a single step. When no such entry is available, coercion to a type that uses a type modifier involves two steps, one to convert between data types and a second to apply the modifier.
Use DROP CAST to remove user-defined casts.
Remember that if you want to be able to convert types both ways you need to declare casts both ways explicitly.
It is normally not necessary to create casts between user-defined types and the standard string types (text, varchar, and char(n), as well as user-defined types that are defined to be in the string category). PostgreSQL provides automatic I/O conversion casts for that. The automatic casts to string types are treated as assignment casts, while the automatic casts from string types are explicit-only. You can override this behavior by declaring your own cast to replace an automatic cast, but usually the only reason to do so is if you want the conversion to be more easily invokable than the standard assignment-only or explicit-only setting. Another possible reason is that you want the conversion to behave differently from the type's I/O function; but that is sufficiently surprising that you should think twice about whether it's a good idea. (A small number of the built-in types do indeed have different behaviors for conversions, mostly because of requirements of the SQL standard.)
Prior to PostgreSQL 7.3, every function that had the same name as a data type, returned that data type, and took one argument of a different type was automatically a cast function. This convention has been abandoned in face of the introduction of schemas and to be able to represent binary-coercible casts in the system catalogs. The built-in cast functions still follow this naming scheme, but they have to be shown as casts in the system catalog pg_cast as well.
While not required, it is recommended that you continue to follow this old convention of naming cast implementation functions after the target data type. Many users are used to being able to cast data types using a function-style notation, that is typename(x). This notation is in fact nothing more nor less than a call of the cast implementation function; it is not specially treated as a cast. If your conversion functions are not named to support this convention then you will have surprised users. Since PostgreSQL allows overloading of the same function name with different argument types, there is no difficulty in having multiple conversion functions from different types that all use the target type's name.
Note: Actually the preceding paragraph is an oversimplification: there are two cases in which a function-call construct will be treated as a cast request without having matched it to an actual function. If a function call name(x) does not exactly match any existing function, but name is the name of a data type and pg_cast provides a binary-coercible cast to this type from the type of x, then the call will be construed as a binary-coercible cast. This exception is made so that binary-coercible casts can be invoked using functional syntax, even though they lack any function. Likewise, if there is no pg_cast entry but the cast would be to or from a string type, the call will be construed as an I/O conversion cast. This exception allows I/O conversion casts to be invoked using functional syntax.
To create an assignment cast from type bigint to type int4 using the function int4(bigint):
CREATE CAST (bigint AS int4) WITH FUNCTION int4(bigint) AS ASSIGNMENT;
(This cast is already predefined in the system.)


Search
Search
Rated Movies
Recommend Movies
Movie Title
Rate this movie
Movie Title
Rate this movie
Movie Title
Rate this movie
Movie Title
Rate this movie
Movie Title
Rate this movie
Movie Title
Rate this movie


Career Buddy PHP: Tristan Bennett
Career Buddy Java: Matt Hilligoss
Mentor Business: John Mierzwa
30% Auditory
40% Visual
30% Tactile
Version 1
Hi My name is Dan. I conduct professional development workshops to unite people of different backgrounds. I do this by creating learning enivornments in the workplace. Do you work in education?
Version 2
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam laoreet viverra metus vitae scelerisque. Nunc varius augue sem, tincidunt pellentesque est ultricies a. Aliquam id.
I learned on Google that I am a go getter type or person with a lot of food related things associated with my name. Found out that I appear more as a marker than a developer. The Natural Epicurean site has got me down as “Asiago” which is an alias that I no longer use for my professional development.
I am really excited about this new cohort. They are very due diligent and focused on developing their professional skills both hard and soft. This cohort I am moving me documents and resources to the cloud. It is a good refresher practice to build a pro dev site.
Getting into a great rhythm at work. Dance class and daily work out is really helping manage stress levels and creating happiness in my life. We are getting into a better flow of management around the camp. We met with all the students, we really have a good group here. I didn’t much training done on Access, Salesforce or Android but I did cultivate some new relationships and start my mentor/mentee meetings up again.
Last week went fast. I only had three days to finish all my normal work and then we had two days of off-stie training about HyperLedger. It was wonderful. I got to try my first time at Ubuntu Linux and coding in Ethereum.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sollicitudin, lacus vitae ornare convallis, ligula dui ultricies erat, accumsan imperdiet nisl mauris a massa. Ut nec dolor enim. Pellentesque maximus mattis mi a egestas. Aliquam et nisi dolor. Sed pellentesque, sapien non porttitor convallis, orci lorem dictum leo, eget lobortis arcu orci nec erat. Etiam ullamcorper placerat viverra. Fusce eu egestas augue, at fringilla quam. Etiam vel orci lacinia, gravida libero quis, sollicitudin odio. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.


Copyright © Yariv Sadan 2006-2007
Authors: Yariv Sadan<EMAIL_ADDRESS>[web site: http://yarivsblog.com].
ErlSQL is a domain specific embedded language for expressing SQL statements in Erlang as well as a library for generating the literal equivalents of ErlSQL expressions.
ErlSQL lets you describe SQL queries using a combination of Erlang lists, tuples, atoms and values in a way that resembles the structure of SQL statements. You can pass this structure to the sql/1 or sql/2 functions, which parse it and return an iolist (a tree of strings and/or binaries) or a single binary, either of which can be sent to database engine through a socket (usually via a database-specific driver).
ErlSQL supports a large subset of the SQL language implemented by some popular RDBMS's, including most common INSERT, UPDATE, DELETE and SELECT statements. ErlSQL can generate complex queries including those with unions, nested statements and aggregate functions, but it does not currently attempt to cover every feature and extension of the SQL language.
ErlSQL's benefits are:
- Easy dynamic generation of SQL queries from Erlang by combining
native Erlang types rather than string fragments.
- Prevention of most, if not all, SQL injection attacks by
assuring that all string values are properly escaped.
- Efficient generation of iolists as nested lists of binaries.
Warning: ErlSQL allows you to write verbatim WHERE clauses as well as verbatim LIMIT and other trailing clauses, but using this feature is highly discouraged because it exposes you to SQL injection attacks.
For usage examples, look at the file test_erlsql.erl under the test/ directory.| encode/1 | Calls encode(Val, true). |
| sql/1 | Generate an iolist (a tree of strings and/or binaries) for a literal SQL statement that corresponds to the ESQL structure. |
| sql/2 | Similar to sql/1, but accepts a boolean parameter indicating if the return value should be a single binary rather than an iolist. |
| unsafe_sql/1 | Generate an iolist (a tree of strings and/or binaries) for a literal SQL statement that corresponds to the ESQL structure. |
| unsafe_sql/2 | Similar to unsafe_sql/1, but accepts a boolean parameter indicating if the return value should be a binary or an iolist. |
encode(Val::term()) -> binary()
Calls encode(Val, true).
sql(ErlSQL::term()) -> iolist()
Generate an iolist (a tree of strings and/or binaries) for a literal SQL statement that corresponds to the ESQL structure. If the structure is invalid, this function would crash. This function does not allow writing literal WHERE, LIMIT and other trailing clauses. To write such clauses, call unsafe_sql/1 or unsafe_sql/2.
sql(ErlSQL::term(), X2::boolean()) -> binary() | iolist()
Similar to sql/1, but accepts a boolean parameter indicating if the return value should be a single binary rather than an iolist.
unsafe_sql(ErlSQL::term()) -> iolist()
throws {error, {unsafe_expression, Expr}}
Generate an iolist (a tree of strings and/or binaries) for a literal SQL statement that corresponds to the ESQL structure. If the structure is invalid, this function throws an exception. This function allows writing literal WHERE, LIMIT and other trailing clauses, such as {where, "a=" ++ Val}, or "WHERE a=" ++ Str ++ " LIMIT 5". Such clauses are unsafe because they expose you to SQL injection attacks. When you use unsafe_sql, make sure to quote all your strings using the encode/1 function.
unsafe_sql(ErlSQL::term(), AsBinary::bool()) -> binary() | iolist()
throws {error, {unsafe_expression, Expr}}
Similar to unsafe_sql/1, but accepts a boolean parameter indicating if the return value should be a binary or an iolist.


Oh goodie. More coding. As you could probably guess, my experience with Raspberry Pi was not the best.
I managed to get one picture of something I coded, but did not send or copy the videos and photos from my desktop to my actual computer.
I learned that physical computing is not something I want to do because it is really really hard and not fun at all.
It requires these programs called Scratch and Python to work and code images and stuff, which we used for taking pictures with a camera.
I honestly cannot say if I have a favorite Raspberry Pi project, because I thought the entire thing was one long project. I guess figuring out how to code patterns onto that little square of lights was pretty fun. I got to spell out my name in Morse Code.


Play
Help
Total
Air
0
Total
Earth
0
Total
Water
0
Total
Fire
0
Kurenc:
៛0
Air:
0
Earth:
0
Water:
0
Fire:
0
version 1.0.0


You can backup the database using mysqldump using the following syntax. The database name, username and password follows that which was used in the install guide - however the username and password should be different for you if you'd changed them as suggested.
mysqldump -umysqluser -pmysqlpassword seek_production > seek_production.sql
The is also no harm in backing up the entire SEEK directory, however the essential directory to backup it the filestore/ directory. This is the directory that contains all asset files, and other potentially important files.
Should you ever need to restore the database you can do so by logging into mysql
mysql -umysqluser -pmysqlpassword
and creating the database (assuming it no longer exists), connecting to it, and importing the dump:
>create database seek_production; >\r seek_production >\. ./seek_production.sql
The files can be restored simply by copying the filestore/ directory back into the SEEK root directory.
Incremental backups allow you to recover a particular version of the backup from a given point in time, depending upon the frequency of the backup and when the back ups started.
For our own SEEK deployments, we use rdiff-backup within a simple script that is run nightly using crontab. e.g.
#!/bin/sh logger "Local Rdiff backup started" BACKUPDIR=/var/backups/seek INCLUDE=/etc/rdiff-backup/backup.include EXCLUDE=/etc/rdiff-backup/backup.exclude /usr/bin/rdiff-backup --terminal-verbosity 9 --print-statistics --terminal-verbosity 2 --exclude-globbing-filelist $EXCLUDE --include-globbing-filelist $INCLUDE --exclude / / $BACKUPDIR logger "Local Rdiff backup complete"
where backup.include is a file that includes a list of paths (files or directories) to be backed up, and backup.exclude is a list of paths that should be excluded.
BACKUPDIR can also be an ssh url, e.g backup@backupserver.co.uk:/var/local/backup/


Map made by Greg Fiske using the Shader Toolbox for ArcGIS Pro.
Interactivity and 3D visualization using ArcGIS Maps SDK for JavaScript.


About six months ago, wondering the streets of San Francisco’s Haight Ashbury, me and Brian (my love of six years) ran across a smoke shop selling a legal drug called “Salvia Divinorum.” I had heard of it before, but I was extremely skeptical. After all, it’s completely illogical for a drug like marijuana, which is an overall mild and harmless drug to be illegal, while one that could supposedly cause intense hallucinations could be bought freely at the local smoke shop. But having easy access to either satisfied me enough, and we purchased 1 gram of 13x strength Salvia. However, I didn’t really think it would do anything.
And it didn’t. Despite decent bong rips, only some coughing, and holding the smoke in as long as possible, the effects were minimal, if not non-existent. I was disappointed, but I wasn’t expecting much in the first place, so we just smoked some pot and forgot about it. ...Until one day in April when we were walking Telegraph Avenue, looking for an escape from the mind-numbing studying that had been torturing us for the past hours. Passing by a smoke shop, in the corner of my eye I made out the words “Salvia Divanorum” on a sign on the open door. I had completely forgotten about Salvia until that moment, and remembered the “reverse tolerance” that was supposed to cause greater effects with each use. I thought maybe it would work this time, also considering that we were at our peak of taking bong rips. So we made the purchase of 1 gram of 10x strength (the strongest they had before 20x, and that was damn expensive) and went home.
I took a shower, dried off briefly, and slipped into some pajamas. We changed the bong water, pushed a screen into the bowl because the Salvia was so finely ground, and sat down in the room we’d inhabited for the past four or five months. I sat the bong down on the coffee table near the bed, and I took a seat directly on the bed while Brian pulled up a chair. Sitting across from one another, Brian gestured for me to take the first hit. I got the strange-smelling herb cooking and watched the chamber fill up with the white smoke that I took in deeply. Then I passed the bong to Brian. I was surprised at how much smoke I was getting out of the bong, and also how long I found I was able to hold it in. It seemed a lot easier than the first time we’d smoke it. I’d coughed before, but this time the smoke sat comfortably and deeply in my lungs. I was thinking about this briefly, midway through my third hit.
Then something happened. Something changed drastically, but I couldn’t put my finger on what it was. Not wanting to panic, I tried to put the bong on the table, but I physically couldn't. I needed it to be far, far away, because somehow I knew I wouldn't be taking another hit. As I held it out I hoped Brian would grab it, because I was going to drop soon. In a half-conscious daze, I watched the thickest white cloud I’d ever seen escape from my lips, and as it filled my vision, my reality disappeared behind it. Unknowingly I slipped off of the bed onto my knees, just as this world slipped unknowingly from my mind.
“Brian?”
I don’t know where I am. But I do, because this is all there is. There is no where. This is it. But how can that be? This room is all there is? Room. What is “room”? This isn’t a room... this is existence.
“The lamp was made to be on the table,” the narrator, a deep, distorted male voice sounded from somewhere above. I watched the blur of blue and white that was the lamp stretch vertically and fold sideways into the wooden strip that was the table. Then it went back to normal. Again in stretched and folded, becoming one with the table and then separating again, according to the perfect tempo of a musical score, or the mechanical precision of gears falling into place.
“The table was made to be on the floor” the voice echoed inside my head. As the lamp folded into the table and then reverted to normal, the table did its part to collapse against the blue of the carpet and then rise again to its regular shape. The lamp, table, and floor continued their sick dance, and I pitied them because I knew that they’d been doing that dance forever, and would continue to do it for eternity. But where am I...? This skin isn't mine. What is it that's pressing so forecefully against me? From everywhere. All directions. Me? Mine? Who am “I”? No, what is “I”?
“You were made to be on the floor.” I felt myself becoming one with the dance, and suddenly felt my body press into the carpet and then unfold from it. The blur of blue, white, tan, and blue forced itself up against my side and then unfolded. Each time it raised off of me, I knew that it would be only another moment before I became one with them again. Lamp. Table. Floor. Me.
Oh my God. I’m just another component to it. How ironic to pity them when I’m nothing more than them. I’m just another part of this dance, for someone else to watch. I’ll never have the chance to talk to anyone outside of this... I’ve always been here, doing this wretched dance that has no end. And this is what I’ll do until I die... But there is no dying. This is eternity. This world always has and always will be, and there’s nothing outside of it for you. There’s no escaping.
I felt as though I’d just woken up from a dream. I dreamed that I had free will, only to remember that this was my life: watching the lamp stretch sideways and fold into the table, watching the table collapse into the carpet, feeling myself being compacted into a strange blur with the other “components” and then being released from it momentarily, only to find the cycle begin again. For a brief moment I had wrongly believed myself to be some sort of higher being than them, but we’re just the same. Oh, it’s so sad...
I tried to remember the dream. Anything to think about other than this horrifying reality. Who was I? What was my life like in the dream? What did I look like? None of it would come, and I felt the deepest sorrow I’d ever experienced settle in the pit of my stomach. So this is it?
Then I saw someone else. Should I know him? No... He’s outside of the dance it seems, holding a bottle. Tequila. WAIT! I almost remembered my dream... That bottle reminds me of something from when I was dreaming... But damn. It’s gone. It slipped away. “He was made to stand by the wall.” The voice was firm and unrelenting. From my right side, the familiar blue, tan, blue pushed against me, and a blur of an all consuming white wall pressed against the tan and green that was the boy, which folded into me from the left. He had been sucked into the dance, or had he always been there? I don’t know... The dance grew less detailed, and now all I could see were the colors pushing into one another, mixing, pushing away from one other, and then coming together once more.
I can’t believe I’d never realized that this was my existence. Why did I have to find out now? I wish I had never realized. Ever. I would have been much happier existing this way and not knowing it. It’s so meaningless, so repetitive; so, so nothing. But this is how it is. And how it always will be. I can’t change it. Oh God, I can’t change it.
Very suddenly I was no longer on the floor, but I didn’t know where I was. Wherever it may be, I could still see the dance from there, and I couldn’t tear my eyes away from it. But it was no longer precise. It grew distorted, slower, and the colors lazily flopped onto one another. I had been ripped from the dance, but I knew it could only be momentary. I was doomed to go back to it eventually.
“ASHLEY!” a different voice sounded from above me. What is that supposed to mean? I tried to glance away from the dance, but I could only manage to for but a second. The boy was floating above me, trying to communicate with me. How silly. That’s not the way it was meant to be. He should know that we don’t have free will here. I can’t talk to you, I wish I could, but I can’t. But it has always been this way. If you’re here too, you must know that. “Look at me! LOOK AT ME! ASHLEY, LOOK AT ME!” Ashley. It seems almost familiar. Familiar like the tequila bottle. Like from my dream. Come to think of it, he reminds me of my dream, too. But it was just a dream after all. Who knows when I might have another chance to dream? Maybe never. “You’re going to be okay, ASHLEY, LOOK AT ME, it’ll be fine.” Bitterly, I thought it wouldn’t be. How cruel to tell me it would, because I knew it wouldn’t. I’m stuck here forever, mindlessly folding, stretching, and mixing. Breaking?
I broke away and for a moment I slipped back into the dream. His hand clenched my face and forced me to look straight at him. I was on the bed, and he was above me. “Look at me!” he sounded frustrated now. I looked at him, but couldn’t help but let my eyes wonder at the surroundings, to see if the dance was still persisting. It was, and I saw the next component that was to be folded in.
“The blankets were made to be on the bed.” The blankets and the bed folded into one, and I knew I was next. Why did this boy offer me a glimmer of hope, if it was only to be snatched back in a moment? How cruel. He must have been playing a joke on me. That was merciless. “LOOK AT ME! ASHLEY!” Ashley. Ashley. So familiar. But wait, I do know him. He was my lover in my dream. What is he doing here? Then I remembered smoking. Could it be I was hallucinating? Salvia. Salvia. Right, I smoked. But my memory’s so fuzzy.
Suddenly it all made sense, and I felt more relief than I knew was possible to experience in one moment. I let out my best attempt at a laugh, realizing Brian must have been pretty worried, but I suspect it sounded more like a whimper. I was on the bed, with Brian looming over me, his hand still on my face. “I need to go outside,” I said quietly. “I need to go out.” “You’re not going anywhere!” he told me. He didn’t understand. I just had to make sure. I had to make sure there was something out there, that this room wasn’t the limit of all existence for me. Then I’d be okay. “Please? Please? Just outside the room?” I asked. I couldn’t muster the strength or the command of my mind to explain why at the time. He slowly rose from off of me and let me get up. I found my feet and the floor, and made it to the doorway. There was everything the way it had been before.
 Apparently, Brian had grabbed the tequila bottle to put away, as to not get in more trouble than necessary when he called the ambulance (we’re under 21), which he didn’t have to because I came out of it pretty quickly. But it seemed like so much longer. In all honesty I felt like I learned what eternity was in those few minutes. The “body high” that I felt throughout the entire trip could only be compared to the weight of the entire universe pushing in on every inch of my body. I completely forgot all aspects of my life, forgot who I was, and couldn’t recognize my boyfriend of six years.
Shrooms are for experiencing an altered reality, but Salvia transports me to an entirely new dimension, where the schemas that make so much sense in this world just don’t apply. I didn’t know it was possible to be transported to a different world and come back in a matter of minutes. Now I do, and I’m afraid. It felt like dying, where the afterworld was far from what you’d expect and you know you can’t come back.
Note: I have experienced some ongoing negative psychological effects due to this drug, so if you have a weak grasp on reality I wouldn’t suggest doing it. It has been almost four months since the described experience, but three times in those four months I have almost fallen back into the same trip. On none of these three occasions was I exposed to salvia. During one of them I had smoked absurd amounts of marijuana, and during another I was on shrooms. However, there was one time that I was completely sober and began feeling salvia-like effects: the unbearable body high and the feeling that this reality was fading rapidly. I offer no explanation because I don't know enough about it, but there's no mistaking the feeling of salvia. Just as acid has put many people in the crazy house, I suspect that this drug could do the same.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


Projection
Minimum Magnitude
Layers
Earthquake Information
Destination
Your browser does not support HTML5 Canvas.


2020 Corvette Z51 Convertible Drops By Jay Leno’s Garage
Leno and Corvette engineer Tadge Juechter dig into the details about the droptop C8.
by Chris BruceJay Leno lives the good life. In addition to having a collection of vehicles that would make even the most jaded auto enthusiast jealous, he's now the first person to drive the 2020 Chevrolet Corvette Convertible other than General Motors personnel. Leno and Corvette Chief Engineer Tadge Juechter dig into the details about the C8 in a nearly hour-long video.
Gallery: Jay Leno Drives Chevy Corvette Convertible C8
According to Juechter, physics forced the decision to move the engine behind the driver. The development team wanted to increase the C8's performance, and relocating the powerplant was simply the best way to make that happen.
When it comes to the convertible, the original plan was to fit a fabric roof. However, the team reversed course after looking at competitors and noting how many of them use hardtops. The layout comes with lots of advantages like improvements to the noise, harshness, and vibration in the cabin.
The Latest C8 Corvette Convertible News:
The folding hardtop requires six electric motors and various linkages to operate. There's no need to add any extra reinforcements to the chassis. However, the rear deck requires extra heat insulation to keep the engine's heat from harming the roof. Lowering the roof has no impact on rear storage space. In all, the droptop weighs about 80 pounds more than the coupe.
Save Thousands On A New Chevrolet Corvette
MSRP $ 56,995
MSRP $ 56,995
Save on average over $3,400 off MSRP* with
Motor1.com Car Buying Service
SEE PRICING
One of the convertible's cool, little features is the clear panel between the seats. It's power-operated from the door and even works when the roof is up, which allows for a little more engine sound in the cabin.
When it's time to get behind the wheel, Leno seems to have lots of fun. The convertible allows for a great chance to hear the V8 engine. It makes a wonderful mix of raspy and muscular sounds.
Source: Jay Leno's Garage via YouTube


These Helm charts are designed to be used in my (prescriptive) environment, more details to come.
helm repo add ullbergm https://ullbergm.github.io/helm-repo/ helm search ullbergm


| This report lists pages that require more than 4 click(s) to get to from the front page. This report is useful for improving your site's usability by ensuring that users are not required to follow too many links to get to any page. To help improve your site's navigation you can also try creating a site map or index with Wisebot. |
| PAGES GREATER THAN 4 CLICK(S) FROM THE HOME PAGE |
| AUTHOR | DEEP PAGES |
| (No Author specified in META tags) | 13 |
| Total | 13 |
| DEEP PAGES CREATED BY: (No Author specified in META tags) |
PAGE |
DEPTH |
| 6 | |
| 6 | |
| 6 | |
| 6 | |
| 5 | |
| 5 | |
| 5 | |
| 5 | |
| 5 | |
| 5 | |
| 5 | |
| 5 | |
| 5 |
REPORT CREATED BY |


This is Harsh Kothari, from Gujarati Wikipedia Community. I am CO-Founder of PyGuj - Python User Group Gujarat. I have been a Google Summer of Code intern in Wikimedia Foundation in summer, 2013. Moreover, I was a mentor at Google Code In for Wikimedia Foundation. I have been contributing in Wikipedia and Mediawiki for last two and half years, and as a volunteer I have been working on various MediaWiki technologies. Apart from Mediawiki, I am also an active contributor of several open source communities such as Mozilla, fedora etc.I am also the ambassador of FOSS program of Government of India and Promoting open source technology across Gujarat.
Past Speaking Experience
OSCON, Portland, USA, 2014 (Talk accepted)
PyGuj - Kick Start event, Ahmedabad, India, 2014
FOSSASIA, Combodia,2014
Gnunify 2014, Pune, India 2014
FOSDEM 2014, Brussels, Belgium 2014
Open Source Language Summit, Pune 2013
Google Dev Fest Rajkot, 2013
Open Source Bridge, Portland, Oregon 2013
Mediawiki Gadget Kitchen workshop at Avenir, Kolkata, India 2013
MediaWiki Gadget Kitchen Workshop, Gnunify, Pune, India 2013
WIkipedia Workshop, Ahmedabad, India 2013, 2012
Thursday 2:10 p.m.–2:55 p.m. in


Agriculture sector’s development need to be expedited, says Anwar
KUALA LUMPUR, Nov 10 — The agriculture sector need to be developed in tandem with efforts to drive the country’s economic growth to ensure that the farmers are not left behind.
PKR president Datuk Seri Anwar Ibrahim said in developing the sector, the needs and problems faced by the farmers had to be identified for appropriate action to be taken, thus enabling the sector to thrive.
As such, he said, government leaders needed to go down to the field to address the problems faced by the group to ensure that matters were discussed at the government level.
“We, in the government, have to provide solutions, not to make excuses. People are tired of hearing about things. We have to come up with the alternatives, if we have given them the opportunity and space, but if it still doesn’t work then we can talk to them,” he said in his speech at the ‘Jalinan Mesra Peladang 2019’ programme, here, today.
Also present were Deputy Agriculture and Agro-based Industry Minister Sim Tze Tzin, National Farmers Organisation (Nafas) chairman Datuk Phahrolrazi Mohd Zawawi and National Fishermen’s Association (Nekmat) chairman Abdul Hamid Bahari.
He added that current technological developments could facilitate the rapid growth of the agriculture sector.
Anwar, who is also Port Dickson MP, said Nafas and Nekmat should play the key roles in linking the government with the farmers in efforts to drive the sector forward. — Bernama


{% extends "auth_app/base.html" %} {% load bootstrap4 %} {% block title %} Success! {% endblock %} {% block header %} Password was reset {% endblock %} {% block dialogCard %}
Your password has been set. You may go ahead and sign in now.
{% endblock %} {% block dialogFooter %} {% endblock %}


Create a Web form that looks like the sample
Member private data
Nakov's data
Last Name
First Name
Address
17 Hristo Botev Str. floor 3, apt. 12
City
State
Zip/Postal Code
Country
Bulgaria
Rumania
Greece
Turkey
Other
Phone (country code, area code, number)
(+
)
-
E-mail
Birth date
Month
Day
Year (4 digit)
Gender
Male
Female
Other
Starting Date
Spring 2006
Summer 2006
Comments/Questions
Please send me mor information about the lodging.


| index |
NOTE:
If a link is 404 , then I haven't cleaned it up and uploaded it yet | |
|
| GITHUB | |
| repo | come and say hi |
|
| FEATURE DETECTION | |
| chrome |
detectable chrome:// files |
| engine |
... you can run but you can't hide |
| math |
research: likely math functions and polyfills |
| math data |
research: ongoing results |
| math spoof |
math spoof detection |
| versions |
a history of version pocs tzp uses or considered |
|
| LANGUAGE / DATE/TIME | |
| app language |
application language leaks |
| collation |
test: localecompare & intl.collator |
| currency |
proof: min currencies for max results |
| dayperiod |
test: language results in dayPeriod |
| pluralrules |
proof: min numbers needed for max results |
| supportedlocales |
test: constuctor supportedLocalesOf |
| timezones |
proof: min dates needed for max results |
| timezonenames |
test: language results in timeZoneNames |
|
| COOKIES & STORAGE | |
| sanitizing |
... with zombies! |
|
| DOMRECT / SVG | |
| domrect spoof |
domrect spoof detection |
|
| CANVAS | |
| canvas spoof |
canvas spoof detection |
| canvas noise |
canvas spoof fingerprinting |
| canvas rfp |
test: RFP random canvas characteristics |
|
| FONTS | |
| font lists |
test: base and face lists vs full list |
| textmetric spoof |
textmetric spoof detection |
|
| MISC | |
| timing |
various RFP and timing tests |
| window.name |
check window.name clearance per eTLD+1 |


 To begin, you will learn how to use the editor on the screen to the right.
Instructions:
1. Click on the note or rest symbol in the toolbar on the right. A new menu should appear. Click on any music note or rest symbol in the menu.
The note or rest should now be highlighted.
2. Move the mouse over the Staff (the 5 lines in the middle of the screen) & click to place the highlighted note or rest.
3. Once the note or rest has been placed on the staff, it is part of the current piece of music, or Score. Clicking again will place another note of the same type. Right-clicking on the placed note will delete it from the score.
4. Place & delete notes & rests until you are comfortable using the editor. When you have a few notes on the screen, click 'Generate Audio' & listen to the result. Continue placing more notes & generating audio to hear how the sound changes.
When you are comfortable placing & deleting notes, click 'Submit'.
{% endblock text %}


{% extends 'account/base.html' %} {% block title %} Reset password {% endblock %} {% block contents %}
Instructions for resetting your password has been successfully emailed


{% extends "emails/base_email.html"%}
{% load i18n %}
{% load chunks %}
{% load absolute_url %}
{% block content %}
{% get_chunk 'email_res_confirm_body_1' as body_1 %}
{% include 'emails/includes/base/text_row_with_title.html' with text=body_1.content%}
{% absolute_url 'pilot_reservation' as link_index%}
{% trans "str_Confirmation" as link_text%}
{% include 'emails/includes/base/button_row.html' with link=link_index text=link_text%}
{% include 'emails/includes/base/divider_row.html'%}
{% get_chunk 'email_res_confirm_body_2' as body_2 %}
{% include 'emails/includes/base/text_row_with_title.html' with text=body_2.content%}
{% endblock %}


Bicentennial Man: I, robot
Stories tend to come in two flavors: either the hero is in some sort of jeopardy (emotional, mortal, existential, etc) the whole time, or the hero is on some quest, during which he has to overcome various (life-threatening, etc) obstacles. Granted, as both of these story-types entail not only 'jeopardy' but the eventual completion of some 'goal,' it's easy to assume the two flavors are actually one. But they're not: the first situation tends to result from the hero's meddling--be it purposeful or not--while the second isn't quite so moral, as the hero has committed no 'crime' for which all this jeopardy is just dessert. There is still some 'just dessert,' however; without it, audience expectation would grind down to nothing, and we'd lose interest. It's just that now that just dessert takes the form of the hero achieving his goal. Which is to say the hero is deserving, has been wronged in some way that achieving his quest can right. Of course, then, too, the more naive and 'wronged' the hero is, the more deserving he is. It's a sympathy-identification trick, and in Bicentennial Man it works exactly as it should, to the point where we willfully overlook all the dramatic problems that arise when compressing a 200 year life span into a little more than two hours, because all that's important is whether or not Android Andrew Martin (Robin Williams) will do the Frankenstein-shuffle just about every mechanical man in cinema tries to pull off at one time or another: becoming human.
And it's an interesting journey, ('Awakening,' yes) from the undifferentiated assembly line Bicentennial Man opens with to the uniqueness Andrew eventually achieves, as technology allows his mechanical self to be absorbed by his 'human' self: all his robot parts retreat under the skin, until it's just Robin Williams, albeit a Robin Williams who blinks with the sound of carriage returns on a typewriter. And the years pass, and the Pepsi generations slide by, and Andrew's adopted family dies off one by one, until--like Frankenstein again, or Duncan McCloud (Highlander)--Andrew becomes lonely. And of course the cure for loneliness is companionship, a mate. Thing is, though, this future society insists upon classing him with the household appliances, (per Cherry 2000, etc) nevermind how involved he is in this all too human condition. He does, after all, still have a positronic mind, is still hardwired to obey Asimov's Three Laws of Robotics. Too, he can project movies from the top of his head. Add to this his immortality and presto, achieving his quest (of being human, where 'human' is a legal term for the courts to decide) just became that much more difficult. We've got to have escalation, after all, along with some insurmountable odds. This is how heroes are made.
It's not the only way they're made, though. There also has to be the unusual (accidental, in Andrew's case; Short Circuit-type stuff) birth and the requisite attempts on his life when he's still the equivalent of an infant. And of course the love interest, (Embeth Davidtz, in two roles across time) the bungling sidekick, (mad scientist Oliver Platt) and, in Bicentennial Man at least, the bungling sidekick's bungling sidekick, Galatea, (as in 2.2) all of whom are instrumental in helping Andrew realize his human potential, which of course nobody could have injected with as much meaning as Robin Williams, never afraid to give the old heartstrings a tug. Does society ever recognize Andrew as human, though? As Bicentennial Man unfolds, it matters less and less, as the real issue isn't finally in how one's perceived, but in how one perceives oneself (to use Andrew's androgynous pronoun). Which is to say that, even though this is supposed to be the flavor of story not driven by morality, there's still a message in there. And Bicentennial Man is involving enough that you don't even realize it takes nearly two and half hours to get that message across. Granted, not much really 'happens' in the movie, but still, you kind of want it to go on.
(c) 1999 Stephen Graham Jones, http://www.cinemuck.com/
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


---
layout: default
---
Wei is currently a Principal Data Scientist at OpenPath, Culver City, CA from 2019-07
developing new generation AI enabled smart access control device.
He was a Senior Data Scientist at Inspire Energy, Santa Monica, CA
from 2015-11 to 2019-06 working on data analytics, optimization, and predictive modeling.
Wei was a staff firmware engineer at Western Digital from 2014-01 to 2015-11
developing adaptive filtering and sensor fusion algorithms for active hard drive vibration control.
Wei received his Ph.D. in Electrical Engineering from University of Central Florida, FL in Dec 2013,
master in Electrical Engineering from Boston University, MA in May 2009,
and bachelor in Automation from Tongji University, Shanghai, China in Jun 2007.
Wei is also a 2003 alumni of Xiaoshi Middle School, Ningbo, Zhejiang, China.
Wei's research focus includes artificail intelligence, machine learning, data analytics,
multi-agent systems, game theory, and optimization.
Wei currently lives in Los Angeles, CA with his wife, Kun Li, daughter, Kemi, and son, Yukai.
Google Scholar
Journal
- Wei Lin, Chaoyong Li, Zhihua Qu, and Marwan Simaan,
“Distributed Formation Control with Open-Loop Nash Strategy”,
Automatica, vol.106, pp.266-273, 2019
Link
- Wei Lin, Zhihua Qu, and Marwan Simaan,
“Nash strategies for pursuit-evasion differential games involving limited observations”,
IEEE Transactions on Aerospace and Electronic Systems, vol. 51, no. 2, pp. 1347-1356, 2015
Link
- Wei Lin, “Distributed UAV formation control using differential game approach”,
Aerospace Science and Technology, vol. 35, pp. 54-62, 2014
Link
- Ali Maknouninejad, Wei Lin, Hendro Harno, Zhihua Qu, and Marwan Simaan,
“Cooperative control for self-organizing microgrids and game strategies for optimal dispatch of distributed renewable generations”,
Energy Systems, vol. 3 no. 1, pp. 23-60, 2012
Link
Conference
- Wei Lin, Zhihua Qu, and Marwan Simaan,
“Distributed game strategy design with application to multi-agent formation control”,
IEEE 53rd Annual Conference on Decision and Control (CDC), pp. 433-438, 2014
Link
- Wei Lin, Zhihua Qu, and Marwan Simaan,
“Multi-pursuer single-evader differential games with limited observations”,
American Control Conference (ACC), pp. 2711-2716, 2013
Link
- Ali Maknouninejad, Wei Lin, and Zhihua Qu,
“Optimum design and analysis of the cooperative control, applied to the distributed generators control in smart grids”,
IEEE PES Innovative Smart Grid Technologies (ISGT), pp. 1-6, 2013
Link
- Wei Lin, Zhihua Qu, and Marwan Simaan,
“A Design of entrapment strategies for the distributed pursuit-evasion game”,
18th IFAC World Congress, pp. 9334-9339, 2011
Link
- Wei Lin, Zhihua Qu, Marwan Simaan,
“A design of distributed nonzero-sum Nash strategies”,
49th IEEE Conference on Decision and Control (CDC), pp. 6305-6310, 2010
Link
Dissertation
- Wei Lin,
“Differential Games For Multi-agent Systems Under Distributed Information”,
University of Central Florida, Dec 2013 Link
Project
- Wei Lin and Michael Caramanis,
“Optimal Energy Purchase in different Markets for Electric Automobile”,
Boston University, 2009 Link


Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi a arcu consequat quam cursus cursus in ac elit. Morbi vulputate cursus tortor non mollis. Nunc id dui id sem aliquam feugiat.
I was responsible for the entire website and identity design. I worked with 2 colleagues who were responsible for photography and website development.
It was essential from the beginning to understand Cosmos Day Tours' mission and target audience. We wanted to appeal primarily to tourists between the ages of 30-40 who have money to indulge on weekend tours. The mission of Cosmos Day Tours was "To provide tourist and locals, safe and reliable transportation to wineries, farms, and breweries. To lead the shuttle and tour industry in sustainable, clean air methods of operation."
To start off, the client took my colleagues and I on a wine touring experience early on so that we could better understand what the company and it's services. We experienced 3 different wineries and got a good sense of the atmosphere of the wineries and the people who visited them.
I researched 5 wine touring companies to see what opportunities we could set Cosmos Day Tours apart from the rest.
From this research I gained insight into ways we could separate Cosmos Day Tours apart from the competition.
Mood boards were created to get a feel for the photography, colors and typography the client envisioned for the brand.
From the research of competition and the clients requests, I created a site architecture, then the information architecture for each page of the website.
I created wireframes for each template page of the website. With the creation of a visual style guide and wireframes, high fidelity mockups weren't necessary for more than a few of the pages.
The final design conveys 3 major attributes of the Cosmos Day Tours brand: adventure, relaxation, and environmental sustainability.
The client was very happy with the website design and asked for my help with the new Cosmos Day Tours logo and other branding materials. I would have liked to have had time to be able to do more research of the target audience; Learning directly from them about their needs, wants, and pain points would have been beneficial to the process.


By clicking "Reserve spot" you will be directed to paypal where you will be charged a non-refundable initial payment. In the event you do not arrive at the facility at the time specified, the reserved space will remain available to you so long as your initial payment is less than the value of the time you've consumed. If you arrive at the time you specifed correctly the initial payment will be subtracted from the total amount owed for the time your vehicle is parked at the facility.


Emergencies: Call 911 or call us at<PHONE_NUMBER> (toll free, 24 hours a day, every day of the year)
General Phone:<PHONE_NUMBER>
Fax:<PHONE_NUMBER>
General Email<EMAIL_ADDRESS>Sales Hours: 8 a.m. to 4:30 p.m. Monday through Friday, except holidays
General Manager: Austin Sloper
Mailing Address:
NY Solar
2288 Flatbush Road
Kingston, NY 12401
Career Inquires<EMAIL_ADDRESS>Resellers<EMAIL_ADDRESS>Enviro-Mail
Email requires less energy and produces less waste than “snail” mail. We look forward to your messages filling our inboxes.


Personal Budget
Dashboard
Transactions
Summaries
Setup
{% block content %}
You really shouldn't see this.
{% endblock %}


Consent Narrative
View our consent narrative as a PDF here.
**If you are participating in user research with us, please print and sign/scan this form and return it to us.**
Purpose
We are students at Olin College of Engineering taking a humancentered design class with the focus on developing software user interfaces.
Description
As a team, we are interested in learning the current pain points for a nonverbal communication platform hopes of improvement. Therefore, we are looking to talk to real users who have experience with these types of interfaces.
Information collection techniques that will be used
Methods of collecting information may include a combination of the following: observation, interviews, surveys, and conversations.
Risks and benefits, especially regarding confidentiality
We will maintain confidentiality. We will use pseudonyms in all content generated and won’t share your contact information. We will respect your time.
Compensation
Compensation will not be provided for participating in this user study. However, some potential benefits to the participant include personal reflection and sharing of your experiences and being a part of the design process.
Time commitment
This course will take place over one semester. However, we will only be interacting with you for approximately two weeks. We expect the time commitment to be roughly an hour each meeting.
Techniques used (check any you are comfortable with):
[ ] Note taking       [ ] Photography       [ ] Audio/Video Recording
Signature:____________________________________ Date: __________________


Update 03/10/2020: I have submitted my thesis and have joined Oracle Labs. I am currently a PhD student and a member of the Essence group and of the IDA section within the School of Computer Science at the University of Glasgow. I obtained my BSc (Hons) in 2016 from the School Of Computing Science at the University of Glasgow.
My work is focused on applying Machine Learning models to assist in data exploration and in Approximate Query Processing. The main theme revolves around Query-Driven learning, which outlines the methodology of exploiting past queries to learn how aggregate statistics change. Throughout my PhD I have investigated and published work into :