Posted by Shujin Wu on June 22, 2016
print "Mary had a little lamb."
print "Its fleece was white as %s." % 'snow'
print "." * 10
end1 = "C"
end2 = "h"
print end1 + end2
>>> python ex7.py
Mary had a little lamb.
Its fleece was white as snow.
..........
Ch
%r
# %r
formatter = "%r %r %r %r"
print formatter % (1, 2, 3, 4)
print formatter % ("one", "two", "three", "four")
print formatter % (True, False, False, True)
print formatter % (formatter, formatter, formatter, formatter)
print formatter % (
"I had this thing.",
"That you could type up right.",
"But it didn't sing.",
"So I said goodnight."
)
>>> python ex8.py
1 2 3 4
'one' 'two' 'three' 'four'
True False False True
'%r %r %r %r' '%r %r %r %r' '%r %r %r %r' '%r %r %r %r'
'I had this thing.' 'That you could type up right.' "But it didn't sing." 'So I said goodnight.'
Why does %r sometimes print things with single-quotes when I wrote them with double-quotes?
\\
Backslash (\)
\'
Single-quote (')
\"
Double-quote (")
\a
ASCII bell (BEL)\b
ASCII backspace (BS)\f
ASCII formfeed (FF)\n
ASCII linefeed (LF)\N{name}
Character named name in the Unicode database (Unicode only)\r
Carriage Return (CR)\t
Horizontal Tab (TAB)\uxxxx
Character with 16-bit hex value xxxx (Unicode only)\Uxxxxxxxx
Character with 32-bit hex value xxxxxxxx (Unicode only)\v
ASCII vertical tab (VT)\ooo
Character with octal value ooo\xhh
Character with hex value hh'''
or """
s1 = '''This string contains """ so use triple-single-quotes.''' # print """
s2 = """This string contains ''' so use triple-double-quotes.""" # print '''
%s
or %r
%r
is printing out the raw representation of what you typed, include the original escape sequences. For debugging%s
for displaying.age = raw_input()
x = int(raw_input())
input() # will try to convert things you enter as if they were Python code, but it has security problems so you should avoid it.
age = raw_input("How old are you? ")
from sys import argv
script, first, second, third = argv
print "The script is called:", script
print "Your first variable is:", first
print "Your second variable is:", second
print "Your third variable is:", third
from sys import argv
script, filename = argv
txt = open(filename)
print "Here's your file %r:" % filename
print txt.read()
print "Type the filename again:"
file_again = raw_input("> ")
txt_again = open(file_again)
print txt_again.read()
indata = open(from_file).read()
close
– Closes the file. Like File->Save.. in your editor.read
– Reads the contents of the file. You can assign the result to a variable.readline
– Reads just one line of a text file.truncate
– Empties the file. Watch out if you care about the file.write('stuff')
– Writes “stuff” to the file.def print_two(*args):
arg1, arg2 = args
print "arg1: %r, arg2: %r" % (arg1, arg2)
# ok, that *args is actually pointless, we can just do this
def print_two_again(arg1, arg2):
print "arg1: %r, arg2: %r" % (arg1, arg2)
# this just takes one argument
def print_one(arg1):
print "arg1: %r" % arg1
# this one takes no arguments
def print_none():
print "I got nothin'."
print_two("Zed","Shaw")
print_two_again("Zed","Shaw")
print_one("First!")
print_none()
import urllib2
response = urllib2.urlopen("http://www.baidu.com")
print response.read()
urlopen(url, data, timeout) #data默认为空None，timeout默认为 socket._GLOBAL_DEFAULT_TIMEOUT
# alternative way
request = urllib2.Request("http://www.baidu.com")
response = urllib2.urlopen(request)
print response.read()
import urllib
import urllib2
values = {"username":"1016903103@qq.com","password":"XXXX"}
data = urllib.urlencode(values)
#values = {}
#values['username'] =<EMAIL_ADDRESS>#values['password'] = "XXXX"
#data = urllib.urlencode(values)
url = "https://passport.csdn.net/account/login?from=http://my.csdn.net/my/mycsdn"
request = urllib2.Request(url,data)
response = urllib2.urlopen(request)
print response.read()
import urllib
import urllib2
values={}
values['username'] =<EMAIL_ADDRESS>values['password']="XXXX"
data = urllib.urlencode(values)
url = "http://passport.csdn.net/account/login"
geturl = url + "?"+data
request = urllib2.Request(geturl)
response = urllib2.urlopen(request)
print response.read()
import urllib
import urllib2
url = 'http://www.server.com/login'
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
values = {'username' : 'cqc', 'password' : 'XXXX' }
headers = { 'User-Agent' : user_agent }
data = urllib.urlencode(values)
request = urllib2.Request(urldata, headers)
response = urllib2.urlopen(request)
page = response.read()
range()
vs xrange


The Study is apart of University of Kentucky's transformative learning program. Transformative learning is a
one-stop shop for all students' academic needs. The Study provides programming and services to impact student success at the
University of Kentucky. The overseers of this app is Rachael Deel who is the marketing/PR director and Christie Maier who is the
program coordinator for peer tutoring.
The Study North
Monday thru Thursday: 2:00pm - 10:00pm
The Study South
Monday thru Thursday: 2:00pm - 10:00pm


Item Name
Description
Start Price
$
Reserve Price
$
Buy Now Price
$
Quantity
Category
End Date (yyyy-MM-dd HH:mm:ss)
Errors:
Server:
Time to process parameters:
0
Time to access database:
0
Time to process page data:
0
Time to render page:
0
Total time to process:
0


Landing Page:
The landing page looks nice with a background of random foodie images. The "Sign Up” and “Log In” buttons are on the top right of the page. And the “Sign Up” button has its white outline border, which is clear in visibility for the new users to find.
Step 1: Basic Info
After click on the "Sign Up” button, here comes the first step of the registration process. The easiest way is to just sign up with Facebook, whereas this time I want to do in a traditional way — fill up the forms.
There is a round illustration on the right. With my own understanding, I see the building with a red carpet at the front door. There are people in the building, crowded like partying or celebrating. And three people standing outside the building, waiting to go inside (or not).
Step 2: Setup Profile
After hitting the “Sign Up” button to submit the application, the process is literary done. (well, that’s fast!) Now I see the Message of "Welcome to Yelp!,” and it encourages me to complete the profile, start with the photo.
Photo: The options are "Use Facebook Photo" or "Upload Photo from your computer.”
Gender: So I have to choose from Female, Male and Other Options. For the "Other Option,” basically I can type in any content I want (I tried frog, transformer, mono… they all works), and it follows a question: How would you like to be referred to? Options are Male, Female and Neutral.
At the end, I can choose either “Save & Continue” or “Skip.” After hitting the button, The confirmation email will be sent immediately.
To me, the process is pretty easy with only 2 steps. The interaction is straight forward and the visual communication of the form is clear and understandable in general.
However, my concern is that there is no way back for the registration. Let’s assume that If I have typed in the wrong email, or phone number, I can’t go back to change it after the Step 1, the confirmation email will just send out, and I will never get it.
Also, if the illustration on the right change at each step will be great.
Tomorrow, I will working on the profile exploration.
Photograph byTegan Mierle.


ALMOST HEROES a review by Josh Schirmer ===
* * out of * * * * *
I had been looking forward to this film since I heard about it early last year, when Matthew Perry had just signed on. I'm big fan of Perry's subtle sense of humor, and in addition, I think Chris Farley's on-edge, extreme acting was a riot. So naturally, when the trailer for "Almost Heroes" hit theaters, I almost jumped up and down.
A soda in hand, the lights dimming, I was ready to be blown away by Farley's final starring role and what was supposed to be Matthew Perry's big breakthrough. I was ready to be just amazed; for this to be among Farley's best, in spite of David Spade's absence.
Sadly, none of this came to pass.
The humor is spotty at best, with good moments and laughable one-liners few and far between. Perry and Farley have no chemistry; the role that Perry was cast in seems obviously written for Spade, for it's his type of humor, and not at all what Perry is associated with. And the movie tries to be smart, a subject best left alone when it's a Farley flick.
The movie is a major dissapointment, with only a few scenes worth a first look, let alone a second. Perry delivers not one humorous line the whole movie, and not surprisingly; the only reason the movie made the Top Ten grossing list opening week was because it was advertised with Farley. And Farley's classic humor is widespread, too. Almost heroes almost works, but misses the wagon-train by quite a longshot. Guys, let's leave the exploring to Lewis and Clark, huh? Stick to "Tommy Boy", and we'll all be "Friends".
--Josh Schirmer<EMAIL_ADDRESS>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


We monetize services!
- iterate e-business architectures
- reinvent leading-edge action-items
- iterate scalable models
- unleash enterprise vortals
- maximize plug-and-play initiatives
- strategize web-enabled e-markets
- iterate killer content
- matrix e-business paradigms
- deliver seamless eyeballs
- e-enable scalable bandwidth
- mesh B2C networks


|
||||||||||
| PREV NEXT | FRAMES NO FRAMES |
Reader
.
Writer
.
Gson
class to convert Json to Java and
vice-versa.Gson
.Gson
instance based on the current configuration.
type
, or null if this factory doesn't
support type
.
Expose
annotation.
f
.
Writer
and flushes that writer.
reader
and convert it to an object
of type typeOfT
.
in
to a Java object.
json
to a Java object.
jsonTree
to a Java object.
Type
instance.
Class
instance.
type.
type.
T
annotation object from this field if it exist; otherwise returns
null
.
BigDecimal
if it contains a single element.
BigDecimal
.
BigDecimal
.
BigInteger
if it contains a single element.
BigInteger
.
BigInteger
.
JsonArray
.
JsonNull
.
JsonObject
.
JsonPrimitive
.
Number
if it contains a single element.
Number
.
String
if it contains a single element.
Class
object that was declared for this field.
public class Foo { private String bar; private List<String> red; } Type listParmeterizedType = new TypeToken<List<String>>() {}.getType();
Type
instance.
Gson
instance when you need to set configuration
options other than the default.true
if the field is defined with the modifier
.
JsonElement
is available on the input for consumption
JsonDeserializer.deserialize(JsonElement, Type, JsonDeserializationContext)
method.null
value.JsonElement
sNumber
.
in
.
JsonSerializer.serialize(Object, Type, JsonSerializationContext)
method.JsonElement
s from the specified reader
asynchronously.out
.
long
or Long
type when its serialized.JsonElement
on the reader.
boolean
value of the next token,
consuming it.
double
value of the next token,
consuming it.
int
value of the next token,
consuming it.
long
value of the next token,
consuming it.
property name
, and
consumes it.
string
value of the next token,
consuming it.
null
.
property
from this JsonObject
.
Iterator
method is not relevant for stream parsing and hence is not
implemented.
value
using this serialization policy.
Date
objects according to the pattern provided.
Date
objects according to the style value provided.
Date
objects according to the style value provided.
Long
and long
objects.
src
of type typeOfSrc
to
writer
.
JsonElement
s into its equivalent JSON representation.
JsonElement
s.
jsonElement
to writer
.
value
to a JSON document and writes it to out
.
value
to a JSON document.
JsonElement
s.
JsonElement
s.
value
to a JSON tree.
T
.value
.
value
.
value
.
value
.
value
.
value
.
|
||||||||||
| PREV NEXT | FRAMES NO FRAMES |


The Exploring Potential ApplicationYou are the yellow avatar and you are exploring the plane shown. Where ever you are, your height above the plane indicates the potential at that point in the plane. The yellow arrow just below you or above you in the plane indicates the direction of the total electric field in the plane. The electric field and potential are produced by two point charges somewhere in the plane shown, both with the same magnitude of charge, but either both are positive, both are negative, or one is negative and one is positive, with equal probability. Your job is to walk around the plane, as explained below, exploring the potential, until you figure out what the charges of the two charges are. You can move to explore the potential using the keypad on the top right, taking note that the navigation balls in the 3D scene correspond to the colors on the keypad. That is, if you want to move toward the red ball in the scene press the red keypad button. Once you think you know what the charges are that produce this potential see if your guess is correct by clicking in the appropriate radio button next to your guess. If you wrong you will be penalized 40 points. The object of the game is to find out the charges with the smallest number of moves. If you left click and drag in the scene you can change the view angle. Each move increases your score by one point unless you have already visited the square you are moving onto, in which case there is no increment in score.
|


How to use:
To begin using Task Manager, click the button Add Task.
In the Add Task form choose a category, a due date, a title and add a description (if needed).
To change the color theme, click the circle at the top right and choose your preferred color.


1 instantiation of PopInstruction
System.Management.Automation (1)
engine\interpreter\StackOperations.cs (1)
74
internal static readonly PopInstruction Instance = new
PopInstruction
();
2 references to PopInstruction
System.Management.Automation (2)
engine\interpreter\InstructionList.cs (1)
415
Emit(
PopInstruction
.Instance);
engine\interpreter\StackOperations.cs (1)
74
internal static readonly
PopInstruction
Instance = new PopInstruction();


--- layout: default-toc title: User Guide permalink: /docs/guide ---
This user guide is a comprehensive description of all of Sterling's features, and is a great place to refer back to as you're learning how to use Sterling. The first two sections introduce navigation and layout of the user interface, and subsequent sections go into the details of the various views and tools. Once you're comfortable using Sterling, you can refer to the Cheat Sheet when you need a quick refresher on keyboard shortcuts and interactivity.
{% include_relative _guide/_navigation/navigation.html %} {% include_relative _guide/_ui/ui.html %} {% include_relative _guide/graph.html %} {% include_relative _guide/table.html %} {% include_relative _guide/source.html %} {% include_relative _guide/global.html %}


| Path: | README |
| Last Update: | Wed May 16 12:50:32 SGT 2007 |
First in first out (FIFO) object pooling mechanism with idle objects eviction check, similar with Apache Common Pool.
It supports the following configuration parameters:
Overwrite CommonPool::PoolDataSource to create object to be returned to the pool.
$ gem install common-pool
require 'common_pool' # Extend data source object class RandomNumberDataSource < CommonPool::PoolDataSource # Overwrite to return object to be stored in the pool. def create_object rand(1000) end # Overwrite to check if idle object in the pool is still valid. def valid?(object) true end end # Create a new object pool object_pool = ObjectPool.new(RandomNumberDataSource.new) # Borrow object from the pool object = object_pool.borrow_object # Return object to the pool object_pool.return_object(object) # Or invalidate object and remove it from the pool object_pool.invalidate_object(object) # Create object pool with idle objects eviction thread object_pool = ObjectPool.new(RandomNumberDataSource.new) do |config| config.min_idle = 5 config.max_idle = 10 # max 10 idle objects checked per run config.idle_check_no_per_run = 10 # check idle objects every 10 minutes config.idle_check_interval = 10 * 60 end # Return a hash of pool instance status variables, i.e. # active and idle lists size, and configuration options object_pool.status_info


^C
web-repl: Type commands in the above box to execute in this javascript process. Use tab for completion.


The purpose of this file is to hold all the rules for the setting of the HillsSim program.
There are 3 types of settings: Primitive, Bounded, and Range.
Primitive, Bounded and Range settings are made from Basic values.
There are 2 types of Basic values: Unbuildable and Buildable.
Primitive settings can hold all basic values. Bounded and Range settings can only hold Buildable basic
values.
Bounded values has a lower-bound and an upper-bound.
For example, if a bounded variable X is between 1
and 10, then the lower-bound is 1 and the upper-bound is 10.
Range values has a start, end, and step size.
For example, if a range variable X starts from 1, ends at 50, and has a step size of 1,
then the range will be {1, 2, ..., 50}.
| No. | Name | Type | Description |
|---|---|---|---|
| 1 | String | Unbuildable | ASCII character set; List of characters used as text labels |
| 2 | Boolean | Unbuildable | True or False value |
| 3 | Integer | Buildable | Whole number; Similar to Integer data type |
| 4 | Float | Buildable | Number with 2 decimal points; For dollar amounts and percentage uses |
| 5 | Date | Buildable | ISO 8601 format: yyyy-mm-dd |
| 6 | Time | Buildable | ISO 8601 format: hh:mm:ss |
| 7 | DateTime | Buildable | ISO 8601 format: Combination of Date and Time values yyyy-mm-dd hh:mm:ss |
Below are the tables for Primitives, Bounded and Range.
All tables with the class "SETTINGS" will be parsed.
View the page source for the HTML coding convention.
All table row (tr tag) with the classes "SETTING" and "PRIMITIVE-<BASIC VALUE>" will be parsed.
All table data (td tag) with the class "VALUE" will be parsed.
| No. | Name | Description | Value |
|---|---|---|---|
| 1 | Which Strategy? | Sample use of String | Moving Average Crossover |
| 2 | Use 1 contract? | Sample use of Boolean | True |
| 3 | Period for Moving Average | Sample use of Integer | 10 |
| 4 | Account Balance (USD) | Sample use of Float | 10000.00 |
| 5 | Date (Start Trading) | Sample use of Date | 2017-12-26 |
| 6 | Time (Start Trading) | Sample use of Time | 18:00:00 |
| 7 | DateTime (Start Trading) | Sample use of DateTime | 2017-12-26 18:00:00 |
View the page source for the HTML coding convention.
All table row (tr tag) with the classes "SETTING" and "BOUNDED-<BUILDABLE VALUE>" will be parsed.
All table data (td tag) with the classes "VALUE-LOWER" and "VALUE-UPPER" will be parsed.
| No. | Name | Description | Value (Lower) | Value (Higher) |
|---|---|---|---|---|
| 1 | Oversold/overbought for Oscillator | Sample use of Bounded-Integer | 20 | 80 |
| 2 | Size of Contract | Sample use of Bounded-Float | 1.00 | 2.00 |
| 3 | Valid trading periods | Sample use of Bounded-Date | 2017-12-01 | 2017-12-31 |
| 4 | Valid trading times | Sample use of Bounded-Time | 09:00:00 | 18:00:00 |
| 5 | Valid trading periods | Sample use of Bounded-DateTime | 2017-12-01 09:00:00 | 2017-12-31 18:00:00 |
View the page source for the HTML coding convention.
All table row (tr tag) with the classes "SETTING" and "RANGE-<BUILDABLE VALUE>" will be parsed.
All table data (td tag) with the classes "VALUE-START", "VALUE-END" and "VALUE-STEP" will be parsed.
| No. | Name | Description | Value (Start) | Value (End) | Value (Step) |
|---|---|---|---|---|---|
| 1 | Iteration for Moving Average | Sample use of Range-Integer | 1 | 50 | 1 |
| 2 | Size of Contract | Sample use of Range-Float (Step by 0.01) | 1.00 | 2.00 | 1 |
| 3 | Valid trading periods | Sample use of Range-Date (Step by 1 day) | 2017-12-01 | 2017-12-31 | 1 |
| 4 | Valid trading times | Sample use of Range-Time (Step by 1 second) | 09:00:00 | 18:00:00 | 30 |
| 5 | Valid trading periods | Sample use of Range-DateTime (Step by 1 second) | 2017-12-01 09:00:00 | 2017-12-31 18:00:00 | 30 |


?Manilkara
Arthur
Cronquist,
1945
Botanical
Garden
PLANTS
OF
MARTINIQUE
Frank
E.Egler
No
FLORA
NEOTROPICA
___(Linnaeus)
van
Royen
ENNlN§T†N
ecological
of
1939.
Botanical
Garden
to
authenticate
,
Island
made
during
the
summer
New
York
1
West
indian
Deposited
studies
<
NEW
YORK
TOTAMCALQAROEN
01442918
Legend -
Level of confidence that token is an accurately-transcribed word
extremely low
very low
low
undetermined
medium
high
very high


Kenya: At leat 60 killed in landslides amid downpours
by Aaron BrooksAt least 60 people have been killed in a landslide in West Pokot region following torrential downpours that began on Friday.
By Saturday, dozens of lives were known to be lost in the landslide but the official death toll reached 60 people on Sunday as the search for survivors continues. Authorities have warned the final death toll could still rise before rescue efforts come to a close.
Fatal landslide in West Pokot region
Heavy downpours began on Friday in West Pokot, along the shared border with Uganda. The torrential rain worsened overnight causing flooding and landslides that destroyed bridges and houses, leaving a number of villages inaccessible by road.
On Saturday, authorities said at least 36 people had been killed in the landslide while a number of others were still missing. The death toll was raised to 60 on Sunday as rescue personnel and security forces continue efforts to limit the number of fatalities caused by the weekend’s downpour.
Almost 5,000 families have been displaced by the flash floods, according to local reports.
Featured image: Google Maps


In Ruby a Class is a formal object within the ruby construct. it is a special kind of object with specific properties and methods. It is primarily responsible for creating new instances and defining the behavior of (methods within) its instances.
Instance behavior in Ruby is defined with a specific syntax. Changes to the class are allowed dynamically and are done by invoking methods on the class itself.
Javascript on the other hand, splits the responsibility for instances into constructor and prototype elements. A constructor in Javascript can be any function and constructors are the elements that are responsible for creating new instances (Class' are in the Ruby language). A prototype in JS can be any object and are responsible for defining what the instance will do. A big difference from Ruby is that prototypes don't have special methods or properties.
Instance behavior in Javascript relies on modifying the prototype directly by adding functions to it as properties. Another big difference is that there are no special syntax for defining or modifying a class.


Standard implementation of a queue. More...
Public Member Functions | |
| virtual bit | add_item (string producer, uvm_sequence_item item) |
| Queue API: See cl_syoscb_queue for more details | |
| virtual bit | delete_item (int unsigned idx) |
| Queue API: See cl_syoscb_queue for more details | |
| virtual cl_syoscb_item | get_item (int unsigned idx) |
| Queue API: See cl_syoscb_queue for more details | |
| virtual int unsigned | get_size () |
| Queue API: See cl_syoscb_queue for more details | |
| virtual bit | empty () |
| Queue API: See cl_syoscb_queue for more details | |
| virtual bit | insert_item (string producer, uvm_sequence_item item, int unsigned idx) |
| Queue API: See cl_syoscb_queue for more details | |
|
virtual cl_syoscb_queue_iterator_base | create_iterator () |
| Queue API: See cl_syoscb_queue for more details | |
| virtual bit | delete_iterator (cl_syoscb_queue_iterator_base iterator) |
| Queue API: See cl_syoscb_queue for more details | |
| virtual bit | add_item (string producer, uvm_sequence_item item) |
| Queue API: Adds an uvm_sequence_item. | |
| virtual bit | delete_item (int unsigned idx) |
| Queue API: Deletes the item at index idx from the queue | |
| virtual cl_syoscb_item | get_item (int unsigned idx) |
| Queue API: Gets the item at index idx from the queue | |
| virtual int unsigned | get_size () |
| Queue API: Returns the current size of the queue | |
| virtual bit | empty () |
| Queue API: Returns whether or not the queue is empty. | |
| virtual bit | insert_item (string producer, uvm_sequence_item item, int unsigned idx) |
| Queue API: Inserts a uvm_sequence_item at index idx. | |
|
virtual cl_syoscb_queue_iterator_base | create_iterator () |
| Queue API: Creates an iterator for this queue. | |
| virtual bit | delete_iterator (cl_syoscb_queue_iterator_base iterator) |
| Queue API: Deletes a given iterator for this queue. |
Standard implementation of a queue.
Uses a normal SystemVerilog queue as implementation. The class implements the queue API as defined by the queue base class.
Definition at line 4 of file cl_syoscb_queue_std.svh.
| virtual bit cl_syoscb_queue_std::add_item | ( | string | producer, | |
| uvm_sequence_item | item | |||
| ) | [virtual] |
Queue API: Adds an uvm_sequence_item.
The implementation must wrap this in a cl_syoscb_item object before the item is inserted
Reimplemented from cl_syoscb_queue.
| virtual bit cl_syoscb_queue_std::empty | ( | ) | [virtual] |
Queue API: Returns whether or not the queue is empty.
1'b0 means thet te queue is not empty. 1'b1 means that the queue is empty
Reimplemented from cl_syoscb_queue.
| virtual bit cl_syoscb_queue_std::insert_item | ( | string | producer, | |
| uvm_sequence_item | item, | |||
| int unsigned | idx | |||
| ) | [virtual] |
Queue API: Inserts a uvm_sequence_item at index idx.
The implementation must wrap the uvm_sequence_item in a cl_syoscb_item before it is inserted.
Reimplemented from cl_syoscb_queue.
|
Project: SyoSil ApS UVM Scoreboard, Revision: <IP_ADDRESS> Copyright 2014-2015 SyoSil ApS All Rights Reserved Worldwide Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. |
Doxygen Version: 1.6.1 IDV SV Filter Version: 2.6.2 Sat Nov 28 05:41:56 2015 |


Our research group is building an online archive for valuable cross-cultural behavioral data, and we need your help digitizing the handwritten data sheets. Click the link below to participate in the survey. At the end of the survey, you will receive a completion code to paste into the box below to receive credit for taking our survey.
Make sure to leave this window open as you complete the task. When you are finished, you will return to this page to paste the completion code in the box below.
An example of this task and a research disclaimer are included below. You will need to accept this HIT before accessing the link to the task on our external website.
| Link to task: |
URL not shown because there is an error with JavaScript on your computer. To perform this HIT, you must have JavaScript and cookies enabled on your browser.
|
| Enter the completion code here: | |
| WHEN YOU ARE DONE, SCROLL TO THE BOTTOM OF THE HIT AND PRESS SUBMIT. |
Dear Study Participant:
We are planning to develop automated programs for recognizing human hand-writing for the purposes of transcribing a large corpus of ethnolinguistic data. To develop these programs, we need to first obtain some feedback from individuals on the kinds of tasks that might be successful in developing these automated programs.
Our goal is to provide efficient and error-free systems for converting data in hand-written form to data-addressable format that scientists can use for better understanding the content areas studies, such as the aggregation of groups of individual responses and the individual representation of concepts in language.
We are asking for 60 minutes of your time to complete this online study.
You may participate in the study more than once but you can only participate a total of three times to try out three different approaches we are testing for response collection.
The study involves no known risks. There are no known harms of discomforts associated with this study beyond those encountered in normal daily life. Participation in this study is voluntary. If you agree to participate via M-Turk you will have the option at the end of the study to be compensated at nominal rate of $1.50 for sixty minutes of participation. Your answers will remain confidential and you can refuse to answer any questions. However, even if you decide not to answer certain questions, please continue with the rest of the study. All collected data will be kept in an offline file in a password protected computer, and destroyed at the end of the project (or after a period of 3 years).
Findings from this study will help us design programs that will achieve the best transcription programs. Your participation in this project will provide valuable data to help us design programs to achieve the best possible transcriptions.
The University of California Irvine Institutional Review Board has approved this project (pending). If you have any questions about your rights as a participant, you may contact UCI's Office of Research Administration by phone,<PHONE_NUMBER>, by e-mail at<EMAIL_ADDRESS>or at 5171 California Avenue, Suite 150, Irvine, CA 92617. If you have any questions about this survey or about participating in the larger program, you may contact me. (telephone:<PHONE_NUMBER>; email<EMAIL_ADDRESS>Thank you for your time.
Sincerely,
Kimberly A. Jameson, Ph.D
Principal Investigator
UCI IRB Registered: 10-21-2015 | APP # 9047 | HS# 2015-1976


[wc:grid-plate layout="1-1-1" disable-responsive] [wc:meme-maker slot="col-1" alt="happy dance GIF by SpongeBob SquarePants" image-url="https://media0.giphy.com/media/nDSlfqf0gn5g4/giphy.gif" bottom-text="Are" imageurl="https://media0.giphy.com/media/nDSlfqf0gn5g4/giphy.gif" toptext="happy dance GIF by SpongeBob SquarePants"/] [/wc:grid-plate]
[wc:video-player accent-color="yellow" dark] [/wc:video-player] [wc:video-player id="example" accent-color="amber" linkable] [/wc:video-player]
IST 210.008 - Dystopian Database Design
IST 210.008 - Dystopian Database Design
We don't use Cantvas. If you're seeing this, it's basically as a jumping off point to reality. Please don't contact me via Cantvas mail, I don't use it. Use my email address directly
[wc:video-player source="https://www.youtube.com/watch?v=wQQgdGb5Jlc"/]
Links for the semester
[wc:music-player source="https://magenta.github.io/magenta-js/music/demos/melody.mid"/]
To add some comments, click the "Edit" link at the top.
Course Summary:
| Date | Details | |
|---|---|---|
| Assignment Week 1 - Lab 1 | ||
| Assignment Week 10 - Lab 9 | ||
| Assignment Week 11-16 - Final project | ||
| Assignment Week 2 - Lab 2 | ||
| Assignment Week 3 - Lab 3 | ||
| Assignment Week 4 - Lab 4 | ||
| Assignment Week 5 - Lab 5 | ||
| Assignment Week 6 - Lab 6 | ||
| Assignment Week 7 - Lab 7 | ||
| Assignment Week 8 - Lab 8 | ||
| Assignment Week 9 - Midterm Exam |


January 23 - 25, 2015
de / en
Follow us on
You can write us at<EMAIL_ADDRESS>InnoGames.com | Imprint
Copyright © 2017 InnoGames. All Rights Reserved. Downloads linked from any page are not moderated by the site owners and may contain harmful materials. Only you are responsible for any damage caused by these. Images (screenshots) hosted on other sites are not moderated by the site owners and may contain illegal or obnoxious materials.  This page is fired by the awesome FlameJam, thanks guys!


Supported Formats
<- go to the main page
Word
- doc (
result,
result in html
)
- docx (
result,
result in html
)
- odt (
result,
result in html
)
Excel
- ods (openoffice excel) (
result
result in html
)
- xls (old excel format) (
result,
result in html
)
- xlsx (new excel format) (
result,
result in html
)
PowerPoint
- ppt (
result
result in html
)
- pptx (
result,
result in html
)
- odp (
result,
result in html
)
CSV comma separated values
If you use a non-standard separator, you can pass its value in the "delimiter" parameter into POST-request.
For example delimiter=";". Use cases you can find in dedoc_project/dedoc/tests/test_api_csv.py
-
csv (
result,
result in html
)
-
tsv (
result,
result in html
)
Others
- txt file (
result,
result in html
)
- json file (
result,
result in html
)
Here, the keys will be analyzed as vertex types, and lists are treated as lists.


Tweets and facebook stories wtih Fake Content Score above 70% will be concealed.
Fake Tweets caught: 36
Fake Facebook stories caught: 14


Imagine the effect of pointing a camera at its own display. The image on the display screen goes back into the camera, undergoes effects of being captured the camera -- including time delay -- and is drawn back out to the display. This process continues rapidly and endlessly, with the image getting smaller and more distorted at each step. Emergent, fractal behavior occurs near the center of the display as the loops reacts to themselves.
This demo simulates that effect by feeding the display image back into itself each time it is drawn to the screen. Watch the movements of your mouse cursor spiral towards the center of the image mimicking your movements.


U.S. State Department on Holodomor: Soviet Union could not break spirit of Ukrainian people
Ortagus said Ukraine is again under attack today.
U.S. State Department on Holodomor Remembrance Day has said the Soviet Union could not break the spirit of the Ukrainian people.
"This November we honor and remember the millions of Ukrainians who perished eighty-six years ago during Holodomor, the catastrophic famine created by the barbaric policies of the Stalin regime," U.S. State Department Spokesperson Morgan Ortagus said in a statement by on November 23, 2019.
According to her, through the deliberate seizure of Ukrainian land and crops and forced collectivization, the Soviet Union caused widespread starvation and death and immeasurable human suffering.
"While this horrific tragedy was one of the most atrocious of the twentieth century, the Soviet Union could not break the spirit of the Ukrainian people," she said.
Ortagus said Ukraine is again under attack today.
"Russia's occupation of Crimea and continued aggression in eastern Ukraine has resulted in roughly 13,000 deaths. Even still Moscow attempts to manipulate and destroy the aspirations of the people of Ukraine. But Russia's malign campaign misjudges Ukrainians resilience and ignores their desire for a better future. That campaign is doomed to fail," she said.
Ortagus stressed as people around the world unite in remembrance of the Holodomor's innocent victims, the United States reaffirms its commitment to a democratic and prosperous Ukraine – secure within its internationally recognized borders and able to shape its own destiny.


The Navy's Evolved Sea Sparrow Missile Keeps Getting Better
Check out the latest improvements.
by Military and Aerospace ElectronicsKey point: NATO wants to improve how their ships can defend themselves.
WASHINGTON – The U.S. Navy and numerous NATO partners are firing a new high-tech ship-defense weapon that can identify, track, and attack maneuvering anti-ship missiles with an active seeker that enables the missile to change course in flight. Kris Osborn at The National Interest reports. Continue reading original article
The Military & Aerospace Electronics take:
19 Nov. 2019 -- The Evolved Sea Sparrow Missile Block II, or ESSM, is a new version of an existing Sea Sparrow missile-defense system that protects aircraft carriers, destroyers, cruisers, amphibious assault ships and other vessels against anti-ship missiles and other surface and airborne short-range threats to ships.
The recent live-fire test follows completion of two controlled test vehicle flight tests in June 2017 and is the first in a series of live-fire tests that will lead to the ESSM Block 2 missile entering production.
The ESSM Block 2 live-fire exercise marked the first use of the weapon’s active seeker system, emerging technology improves the missile's guidance to its target with active electromagnetic signals, Navy officials said.
This article by John Keller originally appeared on Military & Aerospace Electronics in 2019.
Image: Reuters.


Marionette.Carpenter
It builds tables.
About Carpenter
Easily represent a Backbone collection as a sortable, paginated table.
One of the more common tasks when developing web applications is building tabular representations of data. Carpenter aims to make the process of building robust tables as simple as possible, while giving developers the flexibility to easily extend a table's functionality.
Features
- Searching
- Sorting
- Pagination (for both client and server-side collections)
- Custom views for table cells
- Button bar generation
Installation
Installing via Bower
The easiest way to get things rocking and rolling is with Bower:
$ bower install marionette.carpenter
That will put everything in place along with all the correct dependencies. Easy ice!
Using with RequireJS
If you'd like to use Carpenter with RequireJS, the following requirejs.config
should come in handy:
requirejs.config
shim:
'backbone':
deps: ['underscore', 'jquery']
exports: 'Backbone'
'backbone.radio':
deps: ['backbone']
'underscore':
exports: '_'
'marionette':
deps: ['backbone', 'backbone.wreqr', 'backbone.babysitter']
exports: 'Marionette'
'carpenter':
deps: ['cocktail', 'backbone.radio', 'underscore.string', 'jquery-resizable-columns', 'marionette']
Note that you will also likely need to specify a paths
configuration.
Installing by Hand
For an artisanal, hand-crafted, manual installation, you'll need to start by installing the...
Dependencies
You can find an up-to-date list of the libraries required by Carpenter in the bower.json
file under the dependencies
key. Install these as instructed in each project's README
.
Manual Installation
After getting the dependencies in place, move the following files into their proper places in your project:
dist/marionette.carpenter.css
- The base CSS styles for Carpenter tables.dist/marionette.carpenter.js
- The main Carpenter library.
Usage
Building a table couldn't be simpler:
new Marionette.Carpenter.Controller
title: 'Users'
region: new Backbone.Marionette.Region el: '#users-table-region'
collection: usersCollection # a Backbone collection
static: true
columns: [
{ attribute: 'first_name' }
{ attribute: 'last_name' }
{ attribute: 'email' }
]
The above code creates a new table element at #users-table-region
with pagination controls and sortable columns. We set the title of the table with title: 'Users'
, indicate the region
we want the table rendered to, specify that the collection is to be paginated and sorted client-side with static: true
, and then specify the attributes to load in the table with an array at columns
.
Customizing columns
The columns
property is where the action's at when you're looking to specify the data that the table loads. We pass an array of objects, with each object representing a column in the table. At a minimum, we need to specify a model attribute that we wish to display for each column:
columns: [
{ attribute: 'title' }
{ attribute: 'author' }
]
This will result in two columns, with "Title" and "Author" headers, loading the data from the respective attributes in the model. We can customize the column's header label
, as well:
columns: [
{
attribute: 'issueCount'
label: 'Issues'
}
]
Sortability
By default, every column is considered sortable. This is easily overridden with the sortable
property in cases where we want to disallow it:
columns: [
{
attribute: 'avatar'
sortable: false
}
]
We can also customize the initial sort direction with defaultDirection
:
columns: [
{
attribute: 'salary'
defaultDirection: 'desc'
}
]
Using custom cell views
Time to get fancy! Let's say we want to render something more than boring old text in one of our cells. In this case, we'd like to create a Foundation progress bar. We'll start by defining a Marionette.ItemView
for the cell:
class ProjectProgressCellView extends Marionette.ItemView
template: (data) ->
"""

"""
We then reference that view in the relevant column's view
property:
columns: [
{
attribute: 'projectTitle'
label: 'title'
}
{
attribute: 'contact'
}
{
attribute: 'percentCompleted'
label: 'progress'
view: ProjectProgressCellView
}
]
It's also possible to pass options to the view's initialize
method with the viewOpts
property. If our above ProjectProgressCellView
accepted a class
option to override the progress bar's CSS class, we could set it like so:
{
attribute: 'percentCompleted'
label: 'progress'
view: ProjectProgressCellView
viewOpts:
class: 'alert round'
}
Development
To build from source, just run:
$ grunt build
To run tests, run:
$ grunt spec
To run tests on file change:
$ grunt watch
Additional Resources
API Documentation
The full documentation is available on the Carpenter site.


Warning: this frivolous post contains many animated GIFs.
If you use the chat app Slack (“where work happens”), you probably already have opinions about it. Is it: a waste of time, a vital tool, a distraction, an addiction, a flexible way to chat, an overcomplicated IRC alternative, a poorly-implemented CPU hog, “not worth the $17 billion ($28/share) it has reportedly been valued at over the past few months.”, worth way more than that? [1], or is it just another application? (Or all the above?)
One aspect of Slack that I like is the system of reactions (adding small static or animated graphics in response to someone’s message). It’s a nice way of allowing people to contribute to a conversation without actually interrupting it. And over the last couple of years I’ve started adding a few custom reactions to the Julia Slack workspace. They might possibly be useful to others, which is great, but it’s also fun to make them, particularly the animated ones. I’m using Julia (and Luxor.jl), rather than something much easier (AdobeSlackEmojiMakerProfessionalCreativeCloud or whatever). I like the puzzle-solving aspect of making them.
These Slack/emoji/animated GIFs (I’ll call them Slackmojifs, which temporarily solves the GIF pronounciation problem) can be tricky to make. They have to be less than 128KB, and fit into a 128 by 128 pixel square. For the purposes of this post, I’m going to liberate a few slackmojifs from their current 128³ prison, and let them roam free over this page at a slighly higher resolution. These free-range versions can enjoy a brief moment in the foreground before scuttling back into the shadows and wasting CPU cycles in the background.
Animations in Luxor.jl are usually built around the idea of a steadily increasing frame number. You write a function that specifies the graphics for frame number n
, with n
going from, say, 1 to 250, and saves them in a PNG file. Your system’s ffmpeg
binary converts the PNGs to an animated GIF lasting in this case about 8 seconds, at the default frame rate of 30 per second. Here, the three Julia circles (a function for which is built in to Luxor.jl) are drawn with a radius specified by the incoming frame number.
using Luxor
function frame(scene, framenumber)
background("white")
juliacircles(framenumber)
sethue("black")
fontsize(50)
text(string(framenumber), halign=:center)
end
simpleanimation = Movie(400, 400, "animation")
animate(simpleanimation, [
Scene(simpleanimation, frame)
],
creategif=true,
pathname="../images/slackmojif/simple.gif")
Each frame produced by frame()
will be a complete stand-alone PNG file, so you’ll have to do your drawing set-up (eg backgrounds, font selections, scaling, color choices, and so on) for each frame. If you have a lot of calculation and set-up to do for every frame, it’s definitely worth trying to do it all at once, and storing (cacheing/memoizing) it for easy and repeated access. Then, for frame 79, say, you just draw the graphics for the 79th image.
This approach is great for things like drawing the solutions generated by Differential Equations solvers. Say you’ve set up your problem in the usual way:
using DifferentialEquations
function f(du, u, p, t)
du[1] = u[2]
du[2] = -p
end
function condition(u, t, integrator)
u[1]
end
function affect!(integrator)
integrator.u[2] = -integrator.u[2]
integrator.u[2] *= 0.86
end
cb = ContinuousCallback(condition, affect!)
tspan = (0.0, 40.0)
p = 9.8
u0 = [100.0, -6]
prob = ODEProblem(f, u0, tspan, p)
ball_sol = solve(prob, Tsit5(), callback=cb)
Now ball_sol
is the solution to the ODE problem, and it contains all the information you want (it can provide samples, interpolate between steps, and so on). You can now extract the values for a moment in time and draw the result.
In computer graphics, y
values start at 0 at the top of the page, and positive values increase downwards, so you’ll have to flip the sign of y coordinates if you don’t want balls bouncing on the ceiling.) Here’s a simple example:
using Luxor
demomovie = Movie(400, 400, "bouncing ball")
function frame(scene::Scene, framenumber)
ballradius = scene.movie.width/8
ground = scene.movie.height/2 * 0.95
height = scene.movie.height/2
i = rescale(framenumber, 1,
scene.framerange.stop,
tspan[1], tspan[end])
yval = clamp(ball_sol(i)[1], 0.0, height)
ypos = rescale(yval, 0, height/2,
ground - ballradius, -height/2)
xpos = rescale(framenumber, 1,
scene.framerange.stop,
-scene.movie.width/2 + 100,
scene.movie.width/2 - 100)
sethue("orange")
circle(Point(xpos, ypos), ballradius, :fill)
sethue("black")
setline(5)
rule(Point(0, ground))
end
animate(demomovie, [
Scene(demomovie, (s, f) -> background("white"), 1:100),
Scene(demomovie, frame, 1:100)],
creategif=true,
pathname="simple-bouncing-ball.gif")
Some animations will require information from more than a single instant. For example, to show the trace made by a chaotic double pendulum, you’ll want to access the generated data not just for each current instant, but for all the previous instants too. So each frame-generating function will do something like this:
function frame(scene, framenumber)
...
for previousframe in 1:framenumber
# draw just the location
drawpositionofpendulum(previousframe)
end
# finally, draw the pendulum at its current position
...
This can also be used to emulate the effect of the phosphor persistence on old cathode ray tube displays... It’s funny how much computer time these days is spent on reproducing analogue effects.
It’s often useful or necessary to normalize (rescale to between 0 and 1) the incoming frame number. A simple way to do this is:
nfn = rescale(framenumber,
scene.framerange.start, scene.framerange.stop)
which rescales[2] the frame number so as to return 0.0 at the start of the scene, and 1.0 at the end. If you want a continuous animation with a circular motion, for example, normalize the frame numbers to run between 0 and 2π.
function frame(scene, framenumber)
background("white")
nfn = rescale(framenumber, scene.framerange.start, scene.framerange.stop)
rotate(nfn * 2π)
juliacircles(100)
end
mymovie = Movie(400, 400, "mymovie")
animate(mymovie, [Scene(mymovie, frame, 1:60)],
creategif=true,
pathname="juliaspinner.gif")
And you can produce a back and forth rocking motion if you use sin(nfn * 2π)
:
function frame(scene, framenumber)
background("white")
nfn = rescale(framenumber,
scene.framerange.start, scene.framerange.stop)
rotate(sin(nfn * 2π))
juliacircles(100)
end
mymovie = Movie(400, 400, "mymovie")
animate(mymovie, [Scene(mymovie, frame, 1:60)],
creategif=true,
pathname="juliarocker.gif")
Simple linear motion is also easy if you use the frame number. The answer when anyone asks how to do interactive graphics in Julia is - [drum roll please]:
Another reason for using normalized frame numbers is that you can apply easing functions. These modify the values to make more natural-looking movements, with gentler accelerations and decelerations, without having to calculate the physics involved. There are many ways to get from 0.0 to 1.0, and only one of them is the shortest. Most easing functions take a while to move away from 0.0, compared to the plain linear one, but they soon speed through, before they start slowing down in time to stop at 1.0.
You can get an eased value for the current frame number by accessing the scene’s easing function, which by default is easingflat()
.
...
enfn = scene.easingfunction((framenumber - scene.framerange.start),
0, 1, (scene.framerange.stop - scene.framerange.start))
rotate(enfn * 2π)
juliacircles(100)
...
Remember to pass a suitable easing function when you run the animate()
function.:
animate(mymovie, [Scene(mymovie, frame, 1:60,
easingfunction=easeinoutexpo)],
creategif=true,
pathname="juliaeasing.gif")
For more “exciting” accelerations, you can work your way up through easeinoutcirc
, easeinoutsine
, easeinoutquad
, easeinoutcubic
, easeinoutquart
, easeinoutquint
, to easeinoutexpo
.
In this comparison, the linear easingflat
starts well, but is quickly overhauled by the quadratic and quintic easing functions, and the exponential is, for a brief moment, faster than all of them.
Each animation takes the same time, but speeds up and slows down differently as it travels from the beginning to the end.
You can also do Bézier easing, using a Bézier curve to control the flow from 0.0 to 1.0. The steepness of the curve determines the speed of the transition.
Here the rotation accelerations follow this Bézier curve:
defined by the points [O, Point(0.01, .99), Point(0.99, -1.5), Point(1.0, 1.0)]
.
It’s often useful to be able to pass information around from function to function, and there are a couple of ways of doing this. In this simple pool (what we used to call “snooker” or “billiards”) animation, the array of three balls can be defined in a main function and passed to the animation functions.
It would be nice to run the animation for longer, but (as a slackmojif) it quickly reaches the 128KB limit.
Both ways are shown in the next fragment. The initial()
function takes an additional argument. The update()
function receives the array in a keyword argument optarg
, which is accessed via scene.opts
.
... make an array of balls, then:
animate(juliaballmovie, [
Scene(juliaballmovie, backdrop, 1:200),
Scene(juliaballmovie, (s, f) -> initial(s, f, balls), 1:15),
Scene(juliaballmovie, update, optarg=balls, 15:200),
], creategif=true, pathname="juliapool.gif")
The update()
function starts like this:
function update(scene, framenumber)
balls = scene.opts
...
(The rest of the code for this animation is simply some basic collision checking (is a ball’s x coordinate greater than the right hand side of the box, etc.), and of little interest... :)
Sometimes, if the task is very simple, it's just easier to define everything in a single main()
function. This version of Life uses the DSP.jl package for its conv2()
function.
using Luxor, DSP
function nextgeneration!(LifeWorld, m)
convLifeWorld = conv2(LifeWorld, m)
lives2 = convLifeWorld .== 2
lives3 = convLifeWorld .== 3
twoneighbours = LifeWorld .& lives2[2:end-1, 2:end-1]
threeneighbours = LifeWorld .& lives3[2:end-1, 2:end-1]
newlife = .~(LifeWorld) .& lives3[2:end-1, 2:end-1]
LifeWorld[:] = twoneighbours .| threeneighbours .| newlife
end
function generation(LifeWorld, n=1)
matrix = [1 1 1; 1 0 1; 1 1 1]
for i in 1:n
nextgeneration!(LifeWorld, matrix)
end
end
function draw(width, height, LifeWorld)
g = Tiler(width, height, size(LifeWorld)[1:2]..., margin=10)
w = g.tilewidth/2.0
h = g.tileheight/2.0
for (pos, n) in g
LifeWorld[n] == 1 && begin
setcolor"yellow"
circle(pos, w, :fill)
end
end
end
function main()
lifemovie = Movie(400, 400, "lifemovie")
LifeWorld = rand(0:1, 50, 50)
function frame(scene, framenumber)
background("seagreen")
generation(LifeWorld)
draw(400, 400, LifeWorld)
end
animate(lifemovie, [
Scene(lifemovie, frame, 1:200)
],
creategif=true,
pathname="/tmp/luxor-life.gif")
end
main()
The frame number in this little homage to Julia’s supercool broadcasting facilities is used for a couple of things.
First, a 2π-normalized version drives the rotation of the whatever-it-is at the top of the mast. Second, the waves are drawn by circles whose radius is controlled by a multiple of the frame number (and they fade out as they get larger):
sethue("orange")
setline(10)
k = 6
for i in 1:k
setopacity(0.75 - i/k)
circle(c, i * framenumber, :stroke)
end
GIF animations usually repeat in an infinite loop. It makes sense, I suppose, because if they played once only and then stopped, you’d often miss them. Perhaps web browsers are smart enough to animate GIFs only when they’re visible (like a light inside a fridge, it’s hard to check). Animations look better when you can’t spot where the last frame stops and the first frame starts. To make an animation look seamless, all you have to do is make the first frame follow logically from the last frame.
This is not always easy to do. But sometimes you don’t need to worry about it.
The eclipse GIF (made in anticipation of the Great Solar Eclipse of 2017, and useful very occasionally for other things) isn’t continuous: the horizontal translation of the three circles jumps from +600 at the end to -600 at the beginning, but they’re off the screen so the start and the end frames are visually identical.
It’s trickier when you want to have something seamless. This GIF looks like continuous snow falling. Can you spot where the last frame jumps to the first?
You can’t really spot it, but there are three copies of each snowflake, and you see only one at a time. Here’s a version which shows what’s happening more clearly with just four snowflakes:
and, as with the eclipse, you don’t notice the change between the last and first frames, because it happens off-stage, “in the wings”.
The default framerate of animations in Luxor.jl is 30 frames per second. I don’t know why it’s that high; the framerate for movies is typically 24, and for TV it’s 25 or almost 30. (YouTuber Captain Disillusion explains it well.)
I can’t tell which of the following three animations is which.
function framespinner(scene, framenumber)
background("white")
nfn = rescale(framenumber, scene.framerange.start,
scene.framerange.stop)
rotate(sin(nfn * 2π))
juliacircles(50)
end
animation = Movie(200, 200, "animation")
for framerate in [24, 28, 30]
animate(animation, [Scene(animation,
framespinner, 1:2framerate)],
framerate=framerate,
creategif=true, pathname="/tmp/juliaspinner-$framerate.gif")
end
Of course, your computer may be sampling the GIFs at different rates, trying to maintain an approximate correspondence between the display’s refresh rate (typically 50 or 60 times a second) and the GIF rate. Or your browser may be trying to be clever. Or perhaps it’s time for a new computer?
You don’t always need high framerates, though. Sometimes an animation works well with low framerates, even down to just one per second. The Julia bikeshed comes in 30 different colors, one every second.
Sometimes you want high framerates, or at least smooth motion, but don’t need many frames. This Illuminati animation has 16 frames, and the yellow lines rotate through just π/8 radians. So although the movement looks circular and continuous, it’s just restarting after half a second and a small rotation.
(After seeing this little GIF animation, the Illuminati (UK) reached out and commissioned a more discreet version, with less conspicuous colors, “in order to communicate our core brand values and strategic vision more clearly - in black and white - to investors”. I agreed, as long as I could retain some of the Julia iconography[3].)
When Julia maestro Valentin Churavy announced debugging tool Cthulhu.jl I suddenly felt a strange compulsion to render some graphical offering:
This thing, which seemed instinct with a fearsome and unnatural malignancy, was of a somewhat bloated corpulence, and squatted evilly on a rectangular block or pedestal covered with undecipherable characters. (The Call of Cthulhu, H. P. Lovecraft, 1928)
(Harsh words for the output of @code_warntype
?). There are only 10 frames, with some sine and cosine functions generating slimy oscillations, and the Julia logo was pressed into service to provide some blinking eyeballs. It’s a dozen frames.
Rhythmic pulsing or blinking is easy enough to do. I was tempted to record my own heart rate and blinking patterns, but it was quicker to define a simple function:
function eyeblink(n;
start=0.45,
finish=0.55)
if start < n < finish
return 1 - sin(rescale(n, start, finish, 0, π))
else
return 1
end
end
This function can also be used to generate a heartbeat. Not a realistic one, but alive enough for its purpose.
There’s a feature that lets you build an animation from a number of separate scenes. This is occasionally useful. For example, in the following animation of the DifferentialEquations logo (a nice design by Paweł Biernat), there are multiple overlapping scenes. A filled version fades in at frame 100, as the route-following (done using polyportion()
is finishing.
animate(demomovie, [
Scene(demomovie, backdrop, 1:140),
Scene(demomovie, animatepoly, 1:120,
easingfunction = easeinoutsine),
Scene(demomovie, fillpoly, 100:120),
Scene(demomovie, endscene, 121:140),
...
It’s an easy way to have a restful finishing scene, before the looping animation restarts. A pause on the last image helps to make the point better.
function framemove(scene, framenumber)
delta = rescale(framenumber, 0, scene.framerange.stop, 0, 120)
background("white")
fontsize(80)
fontface("ChunkFive")
sethue("black")
text("1", Point(0, delta - 100), halign=:center, valign=:middle)
text("[ ]", halign=:center, valign=:middle)
sethue("grey50")
text("0", Point(0, delta), halign=:center, valign=:middle)
if framenumber > 4
fontsize(60)
setopacity(0.6)
sethue("red")
text("X", Point(0, delta), halign=:center, valign=:middle)
end
end
function framestop(scene, framenumber)
background("white")
fontsize(80)
fontface("ChunkFive")
sethue("black")
text("[ ]", halign=:center, valign=:middle)
text("1", halign=:center, valign=:middle)
end
julia_one_index = Movie(128, 128, "julia_one_index")
animate(julia_one_index, [
Scene(julia_one_index, framemove, 0:30),
Scene(julia_one_index, framestop, 25:60)
], creategif=true, framerate=20,
pathname="/tmp/julia-one-index-animation-1.gif")
Sometimes you want to use random numbers. If your frame-generating function calls rand()
, though, you’ll get different random numbers in each frame. This might not be what you want. What you probably want is to have the same random numbers used for each frame. Do this by calling Random.seed!(n)
with the same n
each frame.
using Luxor, Random
function frame(scene, framenumber)
background("white")
Random.seed!(42)
I can’t remember what encouraged me to make this next animation. I think there was a period of a few weeks leading up to the release of Julia version 0.7 when useful packages broke seemingly every day. Each paint splodge (or is it blood?) generated for a frame has to be reproduced again on all subsequent frames. You could store them, of course. But it was easier to use seeded random numbers.
The animated GIF format is a grizzled veteran of the internet. There are many younger and more able formats for animated images that would do a better job. Most are faster, smaller, better in other ways, etc. But trying to dethrone the reigning champion is proving difficult. Apple and Google probably want you to use video formats. Google, this week at least, also want you to use WebM (or WebP), until they announce something new. Adobe would probably prefer you to use SVG, or Flash, or something. But there is an obvious competing format that is at first glance better than animated GIFs: the Animated PNG.
Most browsers support Animated PNGs. Here’s one, and if it moves, yours does too:
using Luxor
function frame(scene, framenumber)
enfn = scene.easingfunction((framenumber - scene.framerange.start),
0, 1, (scene.framerange.stop - scene.framerange.start))
shape = ngon(O, scene.movie.height/4, 5, -π/10, vertices=true)
path = bezierpathtopoly(makebezierpath(shape,
smoothing=-1.5), steps=40)
paths = [polyportion(path, mod1(enfn + k, 1.0))[end]
for k in 0:.25:0.8]
cols = [Luxor.julia_red, Luxor.julia_green,
Luxor.julia_purple, Luxor.julia_blue]
for (k, p) in enumerate(paths)
sethue(cols[k])
circle(p, 15, :fill)
end
end
animated_png_test = Movie(200, 200, "animated_png")
tempdirectory = "/tmp/"
animate(animated_png_test, [
Scene(animated_png_test, frame, 0:80)
], creategif=true, framerate=30,
tempdirectory=tempdirectory,
pathname="/tmp/julia-animated-png-test.gif")
run(`ffmpeg -r 30 -f image2 -i $(tempdirectory)/%10d.png -y /tmp/animated-png.apng`)
Animated PNGs (APNGs) are better quality than animated GIFs because GIFs are restricted to 256 indexed colors, and they don’t do transparency very well. APNGs aren’t always bigger than equivalent GIFs, and have generally better color handling, although this better color handling can sometimes lead to bigger file sizes.
The example code above produces both a GIF and an APNG and I think it requires a relatively recent version of the behemoth that is ffmpeg
. Also, it doesn’t produce a continuously looping APNG, and you’ll have to preview it in a browser that supports APNGs because - at least on macOS - they don’t animate when viewed in the Finder.
If you want more control over the looping and compression of the APNG, use the tools listed here. I used a macOS app from here.
All this is a bit moot, though, because on Slack, you’ll find that animated PNGs are supported on desktop clients but not on mobile clients. (Compare this with Dark Mode, which is available on mobile clients but not desktop clients...) So APNGs are not yet ready to loosen GIF’s stranglehold in the world of Slack.
Talking of Dark Mode, it’s a good idea to consider that an animated GIF will be displayed on either a white or a dark background. With the increasing popularity of Dark Mode, you shouldn’t assume (as I mistakenly have for ages) that your white backgrounds will blend seamlessly into a white page. You should, ideally, create your GIFs with a transparent background, and design them so that they can appear on either a white or dark background with no problems. Unfortunately this isn’t easy. Transparent animated GIF backgrounds have proved elusive on the few occasions I’ve tried to make them. Compare the GIF with the APNG made with the same code:
The problem appears to be low quality anti-aliasing. So far, this is the best quality transparent-background GIF I’ve been able to obtain from ffmpeg
.
Occasionally small images can be a welcome addition to a slackmojif. With the 128³ restrictions, though, the image has to be reasonably iconic to be useful at low resolutions.
For example, this image of 2001’s HAL-9000 computer (primitive machine learning in action) just about worked with the Julia colors.
The translucent color blends are drawn over the top of the image. (Would the use of Slack have helped avoid the problems on the 2001 ship Discovery One? Probably not, but HAL could have at least added Dark Mode and support for APNGs.)
A Slack workspace is all about the people. Your Slack colleagues are often represented by unique small images (avatars) and these are an irresistible source for reactions and slackmojifs. I occasionally like to add simple animations of people’s avatars by way of saying “thank you” visually for their help and encouragement. Acknowledging the helpful contributions of others seems to be a legitimate justification for these...
One welcome sight in any Slack channel is the appearance of the Viking-themed avatar of Stefan Karpinski, co-creator of Julia, which always heralds a vital or useful contribution to the discussion, for which every Julia user old and new is grateful. Stefan hasn’t yet complained about me using his exceptionally iconic avatar...
I was disappointed that I failed to make this “Stefan Multitasking” animation small enough to fit into a Slack cell.
Chris Rackauckas named this riff on the Sierpinski Triangle the Skarpinski TriHeart, and it just made it into the 128KB & Below club.
The last two animations in this post (yes, the end is in sight!) split an image into pixels, and each pixel is represented by an instance of a Julia type that has position and velocity. Some rudimentary physics (where is a physicist when you need one?) moves the pixels around in a pseudo-Newtonian way. The pixels don’t interact with each other, of course.
And this does look as if Thanos from Marvel’s Infinity War has snapped his fingers. This animation was made in 2017, so this may well be where Thanos got the idea from.
Fortunately for all of us, the compiler quickly restores the original.
Feel free to copy or re-use anything you see here. And if you want something else made, ask me, I might be able to help. Sometimes inspiration from new directions is very welcome!
The Slack logo animation at the top of this post was made with this code:
using Luxor, Colors
function frame(scene, framenumber)
background("white")
nfn_2π = 2π * rescale(framenumber,
scene.framerange.start, scene.framerange.stop)
w = 40; Δw = 8
setline(w)
setlinecap("round")
col=[Lab(76, 14, 70), Lab(49, 72, 19),
Lab(74, -28, -32), Lab(66, -48, 19), Lab(50, -33, 85)]
for (n, θ) in enumerate(range(0, step=2π/4, length=4))
t = Table(2, 2, 2w + Δw, w + Δw, Point(w + Δw, w + Δw))
@layer begin
rotate(θ + nfn_2π)
translate(30 + 20sin(nfn_2π), 0)
setcolor(col[mod1(n, end)])
line(sin(nfn_2π) * t[1], sin(nfn_2π) * t[2], :stroke)
circle(t[3], w/2, :fill)
rect(t[3] - (w/2, w/2), w/2, w/2, :fill)
end
end
end
slackanimation = Movie(400, 400, "slackanimation")
animate(slackanimation, [
Scene(slackanimation, frame, 1:60),
],
creategif=true,
pathname="/tmp/slackanimation.gif")
| [1] | “not worth the $17 billion” Forbes.com, written on June 7, 2019 two weeks before the actual launch of Slack. Later, on June 22, Forbes reports: “On its first day of trading, Slack shares opened at $38.50, 48% higher than its expected price, giving it a market cap of about $20 billion.” |
| [2] | rescale() is a simple lerp function, but I find it so useful I added it to Luxor.jl. It’s a simple one-line definition, but I got tired of typing it all the time. I once tried to add it to base Julia, but it was considered to be better defined in a separate package. |
| [3] | You can spend money on Illuminati.jl-themed swag here. A small portion of each sale goes to NumFocus and thereby helps the future development of Julia. |
This page was generated using Literate.jl.


{% i18n "When you register your key with your email provider other people will then be able to retrieve the key and send you encrypted emails and verify authenticity of emails you send them." %}
{% i18n "An error occurred while publishing the key. Please try again later." %}
{% else %} {% i18n "Register the key" %}{% i18n "The email will be automatically deleted once you confirm the registration." %}
{% endif %}{% i18n "Your OpenPGP key will be published on your email provider's key server. Other users will be able to retrieve the key and send you encrypted emails and verify authenticity of emails you send them." %}


Deputies: Florida man groped princess at Magic Kingdom
by The Associated Press, StaffORLANDO, Fla. -- Authorities say a 51-year-old Florida man groped a Walt Disney World worker dressed as a princess during a photo opportunity at the Magic Kingdom.
An Orange County Sheriff's Office affidavit says Brian Sherman and his wife posed for pictures with the woman on Saturday afternoon. Sherman said the character was his favourite before putting his arm around her and groping her breast.
The affidavit says Sherman sat on one side of the woman, and his wife was on the other side. Coworkers told investigators the victim wasn't able to move before Sherman groped her. She was crying when Sherman left the room.
The Disney photographer provided the pictures to investigators who used them to identify Sherman, who was booked on battery charges. A lawyer wasn't listed on court records.


Developing extensions overview¶
This page contains general information about developing Sphinx extensions.
Make an extension depend on another extension¶
Sometimes your extension depends on the functionality of another
Sphinx extension. Most Sphinx extensions are activated in a
project’s conf.py
file, but this is not available to you as an
extension developer.
To ensure that another extension is activated as a part of your own extension,
use the Sphinx.setup_extension()
method. This will
activate another extension at run-time, ensuring that you have access to its
functionality.
For example, the following code activates the recommonmark
extension:
def setup(app):
app.setup_extension("recommonmark")
Note
Since your extension will depend on another, make sure to include it as a part of your extension’s installation requirements.


November 2012 Meetup
Time: Starts 22 November 7:30 pm
Location: LAUNCH/CO 3rd floor , Warschauer Str. 70A , 10243 Berlin (map)
We currently have the three talks on our agenda:
-
"Creating a color scheme for Vim"
Niels Madan will talk about his experiences in creating harlequin -
"Small Commands"
Sven Guckes (one of our coaches) number prefix, command combinations, filtering, visual commands, mappings - some commands you may want to use in everyday editing -
"Lessons learned from building splitjoin.vim"
Andrew Radev will share his knowledge about his splitjoin plugin.
You can find this event under lanyrd.
If you want to add something, have any questions, or want to propose your talk, please feel free to post a short message to the mailing list.
I'm looking forward to seeing you there.
Thanks to LAUNCH/CO for hosting the event.
Recap
I loved this meetup today: We had new people giving talks and they did an awesome job. I recored only one talk but next I try to get them all.
Niels Madan (@nielsmadan) explained his experiences with creating his own colorscheme:
Vimgolf by example from wikimatze on Vimeo.
This month we will not have an beginners workshop and no official meetup in december.
If you have any further ideas please start a discussion on our {% include mailing_list.html %} or drop us a line on twitter - we would like to hear your ideas.
« October 2012 Workshop Unusual December 2012 Meetup » Comments


I am a senior engineering manager and technical architect with experience managing teams of both engineers and data scientists in diverse industry sectors. I was previously employed in both primary Canadian security and intelligence organizations.
- 02/18-01/19
Triage.com: CTO and Director of Product Engineering:
Responsible for all machine learning, technical architecture, and technical leadership for this artificial intelligence company:
- Built the first publicly available, Deep Learning and AI based skin classifier app for 124 dermatological conditions. Currently has had 400k users using the image classifier.
- Lead the new product design of our internal AI data exploration and data analysis tool on over 2 TB of images in our data storage.
- Worked with the AI data management team to stop doing manual labelling of data. Built a process to scale labelling of data by recruiting a group of 20 dermatologists to classify skin conditions in images and a team of General Practitioners to help build our symptom checker database.
- Set up and implemented the core company AI KPI reporting in Metabase, where they were posted to Slack on a daily/weekly basis.
- Hired two engineers and three devops consultants in my first two months.
- Implemented a career ladder for the machine learning and software engineering teams, resulting in concrete plans to set expectations and manage performance, growth and retention strategies.
All this was accomplished as several group members and I worked remotely. The team includes 6 Data Scientists, 4 Engineers and 3 Data Managers. I personally worked with and implemented best practices these technologies:
- Keras
- Jupyter notebooks
- Virtualization: Docker/Kubernetes in Debian Linux
- React and Javascript
- Python
- Ruby on Rails
- React
- 01/10-Present
TheRemoteCTO.com: Consulting Chief Technology Offer:
A unique consultancy that builds machine learning and web/mobile products from concept to production. Accomplishments include:
- Developed an AI predictive model to allow a day trading company to make market predictions based on its specific style of trading.
- Developed an AI based chatbot to give auto insurance quotes directly from the insurer, which was a “first” in Canada.
- Completed the technical architecture and development for a business intelligence platform for Search and Rescue Canada to analyse their thousands of missions across Canada.
- Built 15 web and machine learning-based applications for various clients, in each case releasing the first production-ready version two weeks from the start of development.
- Implemented virtualization (on virtual machines) using Google Cloud, AWS and Digital Ocean’s infrastructures. We use Docker Compose and Kubernetes with Debian Linux.
- Recruited a team of 7 Engineers and developers and 2 Designers. Two of these professionals have come along with me to other companies and client projects.
- Maintaining a high code quality through continuous integration and continuous deployment using Circle CI and Docker images.
- 07/19-Current
O’Reilly Training Platform
- Regularly teaches remote management of employees to classes between 100-300 attendees
- 09/17 - 12/19
(acquired) Willowbee.ca - Engineering Manager and Product Manager. Co-Founder
Along with a lawyer friend, I did the system design of the most advanced Canadian Will and Testament application. We offered the wills for free and paid more complicated versions.
- Progressed from idea to production in 3 months.
- Technical design of the cloud based system architecture
- Over 400 wills in the first two days using only social media advertising.
- Built another product to help lawyers incorporate businesses and quickly build their minute books. It has been adopted by several law firms.
Technologies used:
- Virtualization: Docker/Kubernetes in Debian Linux
- Ruby on Rails
- 02/16-05/17
Aerial.ai - VP Product, Co-founder
- Managed the product development of our prioritary artificial intelligence based wifi sensing technology.
- Completed 8 business deals in the first 6 months with some of the world’s largest OEMs including Amazon, Videotron, Panasonic, Sony, Samsung
- Sourced and implemented ideal partnerships with researchers from across Canada to develop our first elder care product for the aging population.
- Presented at Demo Day in June 2016 to an audience of 800 and was voted ‘Best Pitch’ by a Montreal newspaper. Video here: https://www.youtube.com/watch?v=vT4HGPHEl94
- 08/15-01/16
Bus.com - Head of Product
Responsible for business model experimentation, all technology UX, analytics, user requirement gathering, feature design and prioritization:
- Managed the product development with a team of 6 contractors
- Developed a quick and easy web form for supplier submissions, that proved crucial to understanding the data we needed to collect.
- Collaborated with event organizer, operations, and sales to develop the first iteration of our “self-serve bus organizer tool”.
- Used Mixpanel analytics, feedback from Intercom and interviews with internal stakeholders to augment the UX and feature set of version 2 of the “self serve bus organizer tool”.
- 05/07 - 06/10
Software Engineer - Government of Canada
- Worked on the development of high performance kernel optimizations.
- Seconded for six months to a rapid development product team. Built software in C, C++, and assembly
- Implemented source control for a team of 8 and an automated workflow to build and manage these kernel patches.
- Sourced world class kernel experts to build Linux drivers and firmware for our proprietary hardware.


Selector Examples
Selector has class="green" for color
P element no class assign.
This is P with CLASS="green", but using p.green as selector w/ italic
Div with both green and yellow classes.
Child Selector
Subheading 1
ARTICLE which inside DIV, which is inside SECTION ARTICLE not a direct child of SECTION
Subheading 2
ARTICLE as a direct child of the SECTION element. Using 'section > article' any article element which is a direct child of a section element,i.e., any article element whose immediate parent is a section element.
Descendant Selector
Using 'section li' as selector :
- Article 1 is in section element
Shopping List:
- Cookies are in article element


Media call numbers have letters and numbers (i.e., F-67) Letter-number"v" indicates a videotape (3/4" or VHS) Letter-number indicates a 16mm film "sl/t" indicates a slide tape set "sl" indicates slides "FS" indicates videocassette materials shelved as Film StudiesBack to Library Information


At Pf2eTools, we respect the privacy of our visitors. This Privacy Policy document contains types of information that is collected and recorded by Pf2eTools and how we use it.
This Privacy Policy applies only to our online activities and is valid for visitors to our website with regards to the information that they shared and/or collect in Pf2eTools. This policy is not applicable to any information collected offline or via channels other than this website.
Consent
By using our website, you hereby consent to our Privacy Policy and agree to its terms.
Information we collect
The personal information that you are asked to provide, and the reasons why you are asked to provide it, will be made clear to you at the point we ask you to provide your personal information.
Log Files
Pf2eTools follows a standard procedure of using log files. These files log visitors when they visit websites. All hosting companies do this and a part of hosting services' analytics. The information collected by log files include internet protocol (IP) addresses, browser type, Internet Service Provider (ISP), date and time stamp, referring/exit pages, and possibly the number of clicks. These are not linked to any information that is personally identifiable. The purpose of the information is for analyzing trends, administering the site, tracking users' movement on the website, and gathering demographic information.
Cookies and Web Beacons
Like any other website, Pf2eTools uses 'cookies'. These cookies are used to store information including visitors' preferences, and the pages on the website that the visitor accessed or visited. The information is used to optimize the users' experience by customizing our web page content based on visitors' browser type and/or other information.
Third Party Privacy Policies
Pf2eTools's Privacy Policy does not apply to other advertisers or websites. Thus, we are advising you to consult the respective Privacy Policies of these third-party ad servers for more detailed information. It may include their practices and instructions about how to opt-out of certain options.
You can choose to disable cookies through your individual browser options. To know more detailed information about cookie management with specific web browsers, it can be found at the browsers' respective websites.


WikiHow.com is the internet's premier source for how-to guidance on virtually any topic, imaginable or otherwise. Since 2005, the site's community has been responsible for an ever-growing library of almost 200,000 articles that have been viewed a combined total of over one billion times. This is a collection of advice that ranges from the practical to the insane (and hits every point in between), all held together in a rich tapestry of thoroughly bizarre illustrations.
The game starts off with two images. Submit a guess for the article title in the area at the bottom of the screen. You can have as many tries as you like.
Press to get another image from the article.
Press to reveal a word in the article title.
Press to start over with new images from a new article
Press to reveal the whole article title
All article and image content is retrieved in real time from wikihow.com. Text is shared under a creative commons license. Images may be licensed differently. Specific licensing information can be determined by following the end-screen link to the original article, and clicking the image in its original context to reveal expanded information. The treatment of any copyrighted image material as part of this web toy is intended as entertaining commentary and protected under fair use.
Adam Smith made this game in his free time to share his fascination with (and sincere affection for) wikiHow and its community with others who might also appreciate it. Ideas, impressions, and issues regarding the project can be directed to its github page.


Toggle navigation
Projects
Events
I'm a Project Head/Event Coordinator
The right place to get the right project
Find
Projects
now
HumanFOX
×
HumanFOX ( 30/12/2015 - 30/01/2016)
We need enthusiastic volunteers to join us and help us establish a brand in SRM.
2015 © SRMPROJECTS ( PROJECT IN SRM)
Privacy Policy
Terms of Service
About us


|
cds
1.5.0
|
Type traits for MSPriorityQueue. More...
#include <cds/container/mspriority_queue.h>
Public Types | |
| typedef opt::v::dynamic_buffer < void * > | buffer |
| Storage type. More... | |
| typedef opt::none | compare |
| Priority compare functor. More... | |
| typedef opt::none | less |
| specifies binary predicate used for priority comparing. More... | |
| typedef lock::Spin | lock_type |
| Type of mutual-exclusion lock. | |
| typedef backoff::yield | back_off |
| Back-off strategy. | |
| typedef cds::opt::v::default_swap_policy | swap_policy |
| Swap policy. More... | |
| typedef cds::opt::v::assignment_move_policy | move_policy |
| Move policy. More... | |
|
typedef cds::intrusive::opt::v::empty_disposer | disposer |
| Disposer of removed item (only for intrusive queue) | |
Type traits for MSPriorityQueue.
Storage type.
The storage type for the heap array. Default is cds::opt::v::dynamic_buffer is used.
At MSPriorityQueue class instantiation, the buffer::rebind
member metafunction is called to change type of values stored in the buffer. So, you may specify any type of values here.
Priority compare functor.
No default functor is provided. If the option is not specified, the less
is used.
specifies binary predicate used for priority comparing.
Default is std::less<T>
.
| typedef cds::opt::v::assignment_move_policy cds::container::mspriority_queue::type_traits::move_policy |
Move policy.
The move policy used in MSPriorityQueue::pop functions to move item's value. Default is opt::v::assignment_move_policy.
Swap policy.
The swap policy is used in heapify algorithm. Default is opt::v::default_swap_policy.


You may have mistyped the address, or the page may have moved.


You have already listed the maximum number of books. Please remove other books before listing more. To increase your chances of your books being bought, you could share links to your books via social media. Go to your profile to see your books.


Class for transmitting blocks using the GigE Vision streaming protocol. More...
Public Member Functions | |
| PvTransmitterGEV () | |
| Constructor. | |
| virtual | ~PvTransmitterGEV () |
| Destructor. | |
| PvResult | Open (PvString aDestinationIPAddress, uint16_t aDestinationPort, PvString aSourceIPAddress="", uint16_t aSourcePort=0, bool aDontFrag=true, bool aExtendedID=false, uint32_t aBuffersCapacity=64, bool aTimestampWhenSending=false) |
| Initialize a socket to begin transmitting data. More... | |
| PvResult | Close () |
| Stop sending data and close the socket. More... | |
| bool | IsOpen () const |
| Returns whether a connection is available to begin transmitting blocks. More... | |
| PvResult | LoadBufferPool (PvBuffer **aBuffers, uint32_t aBufferCount) |
| Load a set of free buffers into the pool. More... | |
| PvResult | QueueBuffer (PvBuffer *aBuffer) |
| Queue one buffer in to be transmitted when a connection is available. More... | |
| PvResult | RetrieveFreeBuffer (PvBuffer **aBuffer, uint32_t aTimeout=0xFFFFFFFF) |
| Retrieve a free buffer from the list of available buffers. More... | |
| PvResult | AbortQueuedBuffers (uint32_t aTimeout=0xFFFFFFFF, bool *aPartialTransmission=NULL) |
| Frees all pending transmission requests. More... | |
| uint32_t | GetQueuedBufferCount () |
| Returns the number of buffers queued for transmission including the ones that are currently being sent. More... | |
| uint32_t | GetPacketSize () |
| Returns the maximum packet size of GVSP payload packets. More... | |
| PvResult | SetPacketSize (uint32_t aPacketSize) |
| Set the maximum packet size of GVSP payload packets. More... | |
| float | GetMaxPayloadThroughput () |
| Returns the maximum effective throughput in bps. More... | |
| PvResult | SetMaxPayloadThroughput (float aMaxPayloadThroughput) |
| Sets the desired effective throughput in bps. More... | |
| uint16_t | GetSourcePort () |
| Returns the port from which blocks are transmitted. More... | |
| uint16_t | GetDestinationPort () |
| Returns the port to which blocks are transmitted. More... | |
| PvString | GetDestinationIPAddress () |
| Returns the IP address to which blocks are transmitted. More... | |
| PvString | GetSourceIPAddress () |
| Returns the IP address from which blocks are transmitted. More... | |
| void | ResetStats () |
| Zero all running counters. | |
| uint64_t | GetBlocksTransmitted () const |
| Get the number of blocks transmitted. More... | |
| uint64_t | GetSamplingTime () const |
| Get the time since last reset. More... | |
| uint64_t | GetPayloadBytesTransmitted () const |
| Get the number of payload bytes transmitted. More... | |
| float | GetInstantaneousPayloadThroughput () const |
| Get an instantaneous calculation of the payload throughput (in bps). More... | |
| float | GetAveragePayloadThroughput () const |
| Get the average payload throughput (in bps). More... | |
| float | GetInstantaneousTransmissionRate () const |
| Get the instantaneous transmission rate (in blocks/second). More... | |
| float | GetAverageTransmissionRate () const |
| Get the average transmission rate (in blocks/second). More... | |
| uint32_t | GetUserModeTransmitterThreadPriority () const |
| Get the priority of the thread in charge of sending the packets on the network. More... | |
| PvResult | SetUserModeTransmitterThreadPriority (uint32_t aPriority) |
| Set the priority of the thread in charge of sending the packets on the network. More... | |
| uint32_t | GetBufferPoolThreadPriority () const |
| Get the priority of the thread used to manage the buffer of the buffer pool. More... | |
| PvResult | SetBufferPoolThreadPriority (uint32_t aPriority) |
| Set the priority of the thread used to manage the buffer of the buffer pool. More... | |
Class for transmitting blocks using the GigE Vision streaming protocol.
Procedure for transmitting blocks (images or raw data) with the eBUS SDK:
The status of a given PvBuffer object can be retrieved by calling PvBuffer::GetOperationResult.
For an illustration of how this API is used in practice, refer to the following source code samples in the samples directory where the eBUS SDK resides:
| PvResult PvTransmitterGEV::AbortQueuedBuffers | ( | uint32_t | aTimeout = 0xFFFFFFFF , |
| bool * | aPartialTransmission = NULL |
||
| ) |
Frees all pending transmission requests.
Buffers that were aborted will have an operation result set at PvResult::Code::ABORTED.
| [in] | aTimeout | Represents the maximum number of milliseconds to wait for the current transmit operation before returning PvResult::Code::TIMEOUT. |
| [in] | aPartialTransmission | Output, set to true if transmission was stopped in the middle of a block. |
| PvResult PvTransmitterGEV::Close | ( | ) |
Stop sending data and close the socket.
Any buffers that are in the middle of being transmitted are aborted.
| float PvTransmitterGEV::GetAveragePayloadThroughput | ( | ) | const |
Get the average payload throughput (in bps).
Average payload transmission rate is equivalent to GetPayloadBytesTransmitted() * 8 / GetSamplingTime(). Note that this calculation only includes the number of useful data bytes and does not include GVSP, IP and UDP header overhead.
| float PvTransmitterGEV::GetAverageTransmissionRate | ( | ) | const |
Get the average transmission rate (in blocks/second).
Average transmission rate is equivalent to GetBlocksTransmitted() / GetSamplingTime().
| uint64_t PvTransmitterGEV::GetBlocksTransmitted | ( | ) | const |
Get the number of blocks transmitted.
| uint32_t PvTransmitterGEV::GetBufferPoolThreadPriority | ( | ) | const |
Get the priority of the thread used to manage the buffer of the buffer pool.
See SetBufferPoolThreadPriority for details about the meaning of the values returned
| PvString PvTransmitterGEV::GetDestinationIPAddress | ( | ) |
Returns the IP address to which blocks are transmitted.
| uint16_t PvTransmitterGEV::GetDestinationPort | ( | ) |
Returns the port to which blocks are transmitted.
| float PvTransmitterGEV::GetInstantaneousPayloadThroughput | ( | ) | const |
Get an instantaneous calculation of the payload throughput (in bps).
Instantaneous payload transmission rate is measured using a short time frame. Note that this calculation only includes the number of useful data bytes and does not include GVSP, IP and UDP header overhead.
| float PvTransmitterGEV::GetInstantaneousTransmissionRate | ( | ) | const |
Get the instantaneous transmission rate (in blocks/second).
Instantaneous transmission rate is measured using a short time frame.
| float PvTransmitterGEV::GetMaxPayloadThroughput | ( | ) |
Returns the maximum effective throughput in bps.
An occasional delay is placed between the packets being transmitted to attempt to throttle the effective throughput. This helps to spread out network traffic to optimize bandwidth availability for other applications. A value of 0 (default) indicates that there should be no throttling based on throughput.
| uint32_t PvTransmitterGEV::GetPacketSize | ( | ) |
Returns the maximum packet size of GVSP payload packets.
When a block is packetized and transmitted, the payload is broken down into packets of a given size. The default value for the maximum packet size is 1440 because that is the size that should work in theory for all network adapters.
For best results, enable jumbo packets in your network adapter properties and increase the maximum packet size to match When sending very small blocks at high frame rates it may sometimes be desirable to set the maximum packet size to a lower number.
| uint64_t PvTransmitterGEV::GetPayloadBytesTransmitted | ( | ) | const |
Get the number of payload bytes transmitted.
Note that this value only includes the number of useful data bytes and does not include GVSP, IP and UDP header overhead.
| uint32_t PvTransmitterGEV::GetQueuedBufferCount | ( | ) |
Returns the number of buffers queued for transmission including the ones that are currently being sent.
| uint64_t PvTransmitterGEV::GetSamplingTime | ( | ) | const |
Get the time since last reset.
| PvString PvTransmitterGEV::GetSourceIPAddress | ( | ) |
Returns the IP address from which blocks are transmitted.
| uint16_t PvTransmitterGEV::GetSourcePort | ( | ) |
Returns the port from which blocks are transmitted.
| uint32_t PvTransmitterGEV::GetUserModeTransmitterThreadPriority | ( | ) | const |
Get the priority of the thread in charge of sending the packets on the network.
See SetUserModeTransmitterThreadPriority for details about the meaning of the values returned
| bool PvTransmitterGEV::IsOpen | ( | ) | const |
Returns whether a connection is available to begin transmitting blocks.
Call Open to ensure that the tranmitter knows where to begin transmitting blocks.
Load a set of free buffers into the pool.
This method provides the transmitter with a set of free buffers that can be retrieved immediately by calling RetrieveFreeBuffer.
| [in] | aBuffers | An array of pointers to PvBuffer objects. |
| [in] | aBufferCount | The number of buffer pointers provided. |
| PvResult PvTransmitterGEV::Open | ( | PvString | aDestinationIp, |
| uint16_t | aDestinationPort, | ||
| PvString | aSourceIp = "" , |
||
| uint16_t | aSourcePort = 0 , |
||
| bool | aDontFrag = true , |
||
| bool | aExtendedID = false , |
||
| uint32_t | aBuffersCapacity = 64 , |
||
| bool | aTimestampWhenSending = false |
||
| ) |
Initialize a socket to begin transmitting data.
Once this call is completed successfully, the transmitter will begin sending blocks as soon as the first buffer is queued in by calling QueueBuffer.
| [in] | aDestinationIp | The address to which the transmitter will send. |
| [in] | aDestinationPort | The port to which the transmitter will send. |
| [in] | aSourceIp | The address from which the transmitter will send. If the parameter is an empty string (default), the socket will not be bound to a specific local IP address. |
| [in] | aSourcePort | The port from which the transmitter will send. If the parameter is 0 (default), the source port will be dynamically assigned by the operating system. |
| [in] | aDontFrag | The value of the Don't Fragment flag in the IP header. |
| [in] | aExtendedID | Use the extended id for blocks and packets when set to true. It should only be used with a GEV 2.0 compliant receiver. |
| [in] | aBuffersCapacity | Maximum number of buffer that can be stored simultaneously in the lower layer of the transmitter. |
| [in] | aTimestampWhenSending | Set the timestamp in the buffer header before sending the packets |
Queue one buffer in to be transmitted when a connection is available.
| [in] | aBuffer | The buffer to transmit. |
| PvResult PvTransmitterGEV::RetrieveFreeBuffer | ( | PvBuffer ** | aBuffer, |
| uint32_t | aTimeout = 0xFFFFFFFF |
||
| ) |
Retrieve a free buffer from the list of available buffers.
| [out] | aBuffer | The buffer that is available to populate and transmit. The pointer is set to NULL if no buffer is available. |
| [in] | aTimeout | The maximum number of milliseconds to wait for a free buffer to become available. |
| PvResult PvTransmitterGEV::SetBufferPoolThreadPriority | ( | uint32_t | aPriority | ) |
Set the priority of the thread used to manage the buffer of the buffer pool.
Only applicable if using a buffer pool ( See LoadBufferPool ). The thread will manage the buffer exchange with the transmitter.
If you change the thread priorities, it may alterate the stability of the system. For this reason, if you report a bug to Pleora, ensure to clearly mention that you change threads priorities.
See GetBufferPoolThreadPriority
| [in] | aPriority | See PvPipeline::SetBufferHandlingThreadPriority for description of the supported values |
| PvResult PvTransmitterGEV::SetMaxPayloadThroughput | ( | float | aMaxPayloadThroughput | ) |
Sets the desired effective throughput in bps.
An occasional delay is placed between the packets being transmitted to attempt to throttle the effective throughput. This helps to spread out network traffic to optimize bandwidth availability for other applications. A value of 0 (default) indicates that there should be no throttling based on throughput.
The throughput is measured in effective throughput on the content of the transmitted PvBuffer objects. It does not take into account the GigE Vision, UDP, IP and Ethernet protocol overhead of the packetized data.
| aMaxPayloadThroughput | The maximum throughput in bps. |
| PvResult PvTransmitterGEV::SetPacketSize | ( | uint32_t | aPacketSize | ) |
Set the maximum packet size of GVSP payload packets.
When a block is packetized and transmitted, the payload is broken down into packets of a given size. The default value for the maximum packet size is 1440 because that is the size that should work in theory for all network adapters.
For best results, enable jumbo packets in your network adapter properties and increase the maximum packet size to match When sending very small blocks at high frame rates it may sometimes be desirable to set the maximum packet size to a lower number.
| [in] | aPacketSize | The maximum packet size (in bytes). |
| PvResult PvTransmitterGEV::SetUserModeTransmitterThreadPriority | ( | uint32_t | aPriority | ) |
Set the priority of the thread in charge of sending the packets on the network.
Only applicable if using a user-mode transmitter. The thread priority of a driver-based transmitter cannot be controlled. Thread that is responsible for breaking buffers in packets and transmitting them.
If you change the thread priorities, it may alterate the stability of the system. For this reason, if you report a bug to Pleora, ensure to clearly mention that you change threads priorities.
See GetUserModeTransmitterThreadPriority
| [in] | aPriority | See PvPipeline::SetBufferHandlingThreadPriority for description of the supported values |
Copyright (c) 2002-2015 Pleora Technologies Inc.
www.pleora.com


Royère doesn't make a Polar bear bed but the Polar bear couch is my favorite piece of furniture we own The Pablo pop up was almost a pop up of influence.
Nothing beats the slight tang and softness of a ciabatta. Here's mmy recipe.Simply dip in some olive oil and balsamic vinegar.
When it comes to choosing decorative pieces, you want to stick to a maximum of three colors. Then it's all about placement.
Nothing beats the slight tang and softness of a ciabatta. Here's mmy recipe.Simply dip in some olive oil and balsamic vinegar.
When it comes to choosing decorative pieces, you want to stick to a maximum of three colors. Then it's all about placement.
That dreams will actualize. Dreams will manifest. We still love Kanye We will find freedom in truth as opposed to ridicule. All respect prayers and love to Phife’s family Thank you for so much inspiration...
Read MoreThat dreams will actualize. Dreams will manifest. We still love Kanye We will find freedom in truth as opposed to ridicule. All respect prayers and love to Phife’s family Thank you for so much inspiration...
Read More


{% extends "base_b4.html" %} {% load crispy_forms_tags %} {% block extra_style %} {{ block.super }} {% endblock %} {% block page_content_inner %}
Please review the details of the change request below and determine if subject matter expert (SME) review and endorsement is required or not.
If so, select the required SME, click Save and a notification will be sent for them to review the change.
If no SME review is required, please leave that field blank, click Save and the change will instead be scheduled for CAB review.
{% include 'registers/changerequest_table.html' %}