‘Don’t run a day in my life’: Surprise training secrets of one of world’s scariest athletes
by Jack FiggDeontay Wilder has revealed he ditches traditional long runs for swimming in his lake and uses scuba diving as part of his rehabilitation.
Ahead of the heavyweight world champion’s next WBC title defence, against Luis Ortiz on Sunday (AEDT), The Bronze Bomber revealed scuba diving is one of his recovery exercises.
Wilder, who relies on water based training throughout camp, said: “For those that don’t know, I’m a certified scuba diver.
“I enjoy it and I’ve been doing it for a few years now. It gives me relaxation and helps keep pressure off the muscles in my body.
Watch Deontay Wilder v Luiz Ortiz on Main Event. ORDER NOW >
THE HEAVYWEIGHT DIVISION IS ABOUT TO EXPLODE: AND IT MIGHT FINALLY RESULT IN SOME CLARITY
“It helps my body tremendously. It’s also strengthening my legs and expanding my lungs so that I have more stamina. Water is great for exercise and I love it.”
The Alabama puncher is a late starter in the sport, only picking up the gloves three days before his 21st birthday as a means to make money for his daughter Naieya, who suffered with spina bifida at birth.
Within three years Wilder won a bronze medal at the 2008 Olympics Games - later becoming world champion in his 32nd fight after going the distance for the first time to outpoint Bermane Stiverne.
FIND A LOCAL VENUE TO WATCH THE FIGHT
But on the road to becoming WBC king, the American admitted he did not spend a minute on the road running.
Before his fourth title defence - against Chris Arreola in July 2016 - Wilder revealed all his cardio training was done in the boxing gym.

“I can’t say I run miles of roadwork, because I don’t. I don’t have to, I’m blessed to still have the stamina, and not get tired.
 So that’s where I get all my work from - water.
“It can be wonders what water can do to your whole body. Sometimes I do a workout from my boat, I got two boats.
“Sometimes I get on the back of it and do pull ups from the back of it as the resistance from the water comes to get me.


The Information Technocrat's Student Forum is a club formed by the students of the IT department of VIIT.
WE MAKE IT HAPPEN.
Codechef Campus Chapter is the subsidary of ITSF which organises Coding Contests on Codechef and webinars
on Competative Programming.
ITSF (Information Technocrats Student Forum) is a cell of the IT department, VIIT Pune, which was started in the year 2005. Since then it has been working to provide a platform for all-round development of the students.
Every year the committee conducts various workshops and session to keep the students acquainted with the latest technologies.
The workshops are conducted according to the changing trends in the industry. ITSF not only focuses on the development of technical skills of the students, but also the development of the students as whole.
Apart from the technical activities, ITSF also conducts and support various extra-curricular, social, environmental and cultural activities. The students of the committee actively take part in technical, social as well as the cultural activities.
Student Activities
Social Activities
Sports Activities
Start-ups by the students
Unified Wizard
unifiedwizard.com
Dropouts
dropouts.rf.gd
Core Commitee
Prachi Bhavsar
Vice President
<EMAIL_ADDRESS>Soham Tupe
President
<EMAIL_ADDRESS>Gargi Patil
Ladies Representative
<EMAIL_ADDRESS>Ishwari Jadhav
Vice President
<EMAIL_ADDRESS>Domain Heads
Rohan Rathi
Technical Head
<EMAIL_ADDRESS>Ishank Sharma
Non Technical Head
<EMAIL_ADDRESS>Pratik Jagtap
Campaigning Head
<EMAIL_ADDRESS>Karan Gaikwad
Documentation Head
<EMAIL_ADDRESS>Harshal Patil
Logistics and Refreshments Head
<EMAIL_ADDRESS>Samruddhi Gorghate
Publicity Head
<EMAIL_ADDRESS>Pushkar Agnihotri
Designing Head
<EMAIL_ADDRESS>Harshvardhan Pathak
Head Treasurer
<EMAIL_ADDRESS>Shruti Jawale
Magazine Head
<EMAIL_ADDRESS>Domain Joint Heads
Yash Jain
Jt. Technical Head
<EMAIL_ADDRESS>Shreya Singh
Jt. Non Technical Head
<EMAIL_ADDRESS>Pranjali Durge
Jt. Campaigning Head
<EMAIL_ADDRESS>Geervani Reddy
Jt. Documentation Head
<EMAIL_ADDRESS>Rupesh Kapse
Jt. Logistics and Refreshments Head
<EMAIL_ADDRESS>Pratyush Hedaoo
Jt. Publicity Head
<EMAIL_ADDRESS>Nandini Bhiwapure
Jt. Designing Head
<EMAIL_ADDRESS>Atharva Parikh
Jt. Head Treasurer
<EMAIL_ADDRESS>Pranjal Katore
Jt. Magazine Head
<EMAIL_ADDRESS>Vision : Excellence in conducting various Technical and Non-Technical Activities for Students and Teachers.
Mission : Provide an opportunity for students of ITSF.
Improve a sense of community & unity.
Provide platform to present their skills.
Maintain academic freedom & promote leadership skills.


{{resume.first_name || "First Name"}}
{{resume.last_name || "Last Name"}}
{{resume.address}} - {{resume.city}} - {{resume.state}} {{resume.zip_code}}
Cell {{resume.phone_no || "Phone number"}} | Email {{resume.email_address || "Address"}}
{{school.school_name}}, {{school.location}}
{{school.start_year_text.name || school.start_year}}
-
Present
{{school.graduation_year.name || school.graduation_year || ""}}
{{school.degree}}, GPA: {{school.gpa}}
Experience
{{job.company_name || "Company name"}}
{{job.start_year_text.name || job.start_year}}
-
Present
{{job.end_year.name || job.end_year || ""}}
{{resume.address}}
-
{{resume.city}}
-
{{resume.state}} {{resume.zip_code}}
| Cell {{resume.phone_no || "Phone number"}}
| Email {{resume.email_address || "Address"}}


?Ù>IMAGED
NEW
YORK
BOTANICAL
GARDEN
01025046
BOTANICAL
GARDE*4.
UNITED
STATES
NATIONAL
HERBARIUM
PLANTS
OF
PUERTO
RICO
Sapotaceae
Chrysophyllum
argenteum
Jacq.
Det.
P.
Acevedo-Rdgz.,
2004
Mun.
Aguadilla:
Bo.
Caimital
Bajo.
Secondary
forest
on
limestone
substrate.
Shrub
5
in
tall;
calyx
yellowish
brown;
corolla
yellowish
green.
P.
Acevedo-Rdgz.
13439
05
Aug
2003
With:
D.
Chinca
&
R.
Santiago
Supported
by
funds
from
the
Smithsonian
Institution
Legend -
Level of confidence that token is an accurately-transcribed word
extremely low
very low
low
undetermined
medium
high
very high


QuantumBit Design
Naturally Inspired Craft
contact
My name is Kevin Goudswaard. I am an experienced front end developer, passionate about clean, attractive web design schemes. I have an eye for detail and take great pride in my work. Have a look around, and contact me with your idea!

The following are just some of the technologies I use, however, my philosophy is to never limit the design based on a lack of know-how.
This site is designed with a "natural" theme in mind. Inspiration and imagination empower design, and by that definition, design has no boundaries.


The application connects the customers with pharmacies using Google maps and enables the users to chat with the pharmacist in real time and get the right medicine.
This platform also enables pharmacists to build their digital presence and provide better customer service.


Files and Libraries
Java XML Client Library
Created 24. April 2019
The Java client-side library is used to access the Web service API for this application using Java.
The Java client-side library is used to provide the set of Java objects that can be serialized to/from XML using JAXB. This is useful for accessing the resources that are published by this application.
Resources Example (Raw JAXB)
java.net.URL url = new java.net.URL(baseURL + "/archivaRuntimeConfigurationService/archivaRuntimeConfiguration"); JAXBContext context = JAXBContext.newInstance( byte[].class, byte[].class ); java.net.URLConnection connection = url.openConnection(); connection.setDoOutput(true); connection.connect(); Unmarshaller unmarshaller = context.createUnmarshaller(); Marshaller marshaller = context.createMarshaller(); marshaller.marshal(archivaRuntimeConfiguration, connection.getOutputStream()); Object result = (Object) unmarshaller.unmarshal( connection.getInputStream() ); //handle the result as needed...
Resources Example (Jersey client)
javax.ws.rs.client.Client client = javax.ws.rs.client.ClientBuilder.newClient(); Object result = client.target(baseUrl + "/archivaRuntimeConfigurationService/archivaRuntimeConfiguration") .put(javax.ws.rs.client.Entity.entity(archivaRuntimeConfiguration, "application/xml"), Object.class); //handle the result as needed...
| name | size | description |
|---|---|---|
| archiva-rest-api-xml-client.jar | 54,05K | The binaries for the Java XML client library. |
| archiva-rest-api-xml-client-xml-sources.jar | 45,96K | The sources for the Java XML client library. |
PHP XML Client Library
Created 24. April 2019
The PHP client-side library defines the PHP classes that can be (de)serialized to/from XML. This is useful for accessing the resources that are published by this application, but only those that produce a XML representation of their resources.
This library leverages the XMLReader and XMLWriter tools that were included in PHP versions 5.1.0+.
PHP XML Example
//read the resource in XML form: $xml = ...; $reader = new \XMLReader(); if (!$reader->open($xml)) { throw new \Exception('Unable to open ' . $xml); } $result = new Object($reader); //open a writer for the xml $out = ...; $writer = new \XMLWriter(); $writer->openUri($out); $writer->startDocument(); $writer->setIndent(4); $result->toXml($writer); $writer->flush();
| name | size | description |
|---|---|---|
| archiva-rest-api-php.zip | 22,93K |


Block and wheel entity positioning (start, pivot, mimic, mouse)
backgroundColor
clearAlpha
Test purpose
Create and clone block and wheel entitys
Position the entitys on the canvas using start (default) attributes, alongside pivot and mimic attributes
Check that when an entity mimics or pivots on an entity that itself mimics or pivots another entity, everything positions as expected
Kill and resurrect several entitys to make sure they remove themselves entirely from the Scrawl-canvas system, and cleanly recreate themselves from saved packets
Also:
Check that the Cell responds correctly to changes in its backgroundColor value
Check that the Cell responds correctly to changes in its clearAlpha value, and that the clearAlpha effect only displays when the backgroundColor value is set to an empty string (the "none" option)


org.apache.bcel.verifier.statics
Class Pass1Verifier
java.lang.Object
|
+--org.apache.bcel.verifier.PassVerifier
|
+--org.apache.bcel.verifier.statics.Pass1Verifier
- public final class Pass1Verifier
- extends PassVerifier
This PassVerifier verifies a class file according to pass 1 as
described in The Java Virtual Machine Specification, 2nd edition.
More detailed information is to be found at the do_verify() method's
documentation.
- Version:
- $Id: Pass1Verifier.html,v <IP_ADDRESS> 2006/05/19 19:20:32 billf Exp $
- Author:
- Enver Haase
- See Also:
do_verify()
|
Method Summary |
VerificationResult |
do_verify()
Pass-one verification basically means loading in a class file.
|
java.lang.String[] |
getMessages()
Currently this returns an empty array of String.
|
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Pass1Verifier
public Pass1Verifier(Verifier owner)
- Should only be instantiated by a Verifier.
- See Also:
Verifier
do_verify
public VerificationResult do_verify()
- Pass-one verification basically means loading in a class file.
The Java Virtual Machine Specification is not too precise about
what makes the difference between passes one and two.
The answer is that only pass one is performed on a class file as
long as its resolution is not requested; whereas pass two and
pass three are performed during the resolution process.
Only four constraints to be checked are explicitely stated by
The Java Virtual Machine Specification, 2nd edition:
- The first four bytes must contain the right magic number (0xCAFEBABE).
- All recognized attributes must be of the proper length.
- The class file must not be truncated or have extra bytes at the end.
- The constant pool must not contain any superficially unrecognizable information.
A more in-depth documentation of what pass one should do was written by
Philip W. L. Fong:
- the file should not be truncated.
- the file should not have extra bytes at the end.
- all variable-length structures should be well-formatted:
- there should only be constant_pool_count-1 many entries in the constant pool.
- all constant pool entries should have size the same as indicated by their type tag.
- there are exactly interfaces_count many entries in the interfaces array of the class file.
- there are exactly fields_count many entries in the fields array of the class file.
- there are exactly methods_count many entries in the methods array of the class file.
- there are exactly attributes_count many entries in the attributes array of the class file, fields, methods, and code attribute.
- there should be exactly attribute_length many bytes in each attribute. Inconsistency between attribute_length and the actually size of the attribute content should be uncovered. For example, in an Exceptions attribute, the actual number of exceptions as required by the number_of_exceptions field might yeild an attribute size that doesn't match the attribute_length. Such an anomaly should be detected.
- all attributes should have proper length. In particular, under certain context (e.g. while parsing method_info), recognizable attributes (e.g. "Code" attribute) should have correct format (e.g. attribute_length is 2).
- Also, certain constant values are checked for validity:
- The magic number should be 0xCAFEBABE.
- The major and minor version numbers are valid.
- All the constant pool type tags are recognizable.
- All undocumented access flags are masked off before use. Strictly speaking, this is not really a check.
- The field this_class should point to a string that represents a legal non-array class name, and this name should be the same as the class file being loaded.
- the field super_class should point to a string that represents a legal non-array class name.
- Because some of the above checks require cross referencing the constant pool entries, guards are set up to make sure that the referenced entries are of the right type and the indices are within the legal range (0 < index < constant_pool_count).
- Extra checks done in pass 1:
- the constant values of static fields should have the same type as the fields.
- the number of words in a parameter list does not exceed 255 and locals_max.
- the name and signature of fields and methods are verified to be of legal format.
(From the Paper The Mysterious Pass One, first draft, September 2, 1997.)
However, most of this is done by parsing a class file or generating a class file into BCEL's internal data structure.
Therefore, all that is really done here is look up the class file from BCEL's repository.
This is also motivated by the fact that some omitted things
(like the check for extra bytes at the end of the class file) are handy when actually using BCEL to repair a class file (otherwise you would not be
able to load it into BCEL).
- Specified by:
do_verify
in class PassVerifier
- See Also:
Repository
getMessages
public java.lang.String[] getMessages()
- Currently this returns an empty array of String.
One could parse the error messages of BCEL
(written to java.lang.System.err) when loading
a class file such as detecting unknown attributes
or trailing garbage at the end of a class file.
However, Markus Dahm does not like the idea so this
method is currently useless and therefore marked as
TODO.
- Overrides:
getMessages
in class PassVerifier
- See Also:
PassVerifier.addMessage(String)
,
PassVerifier.do_verify()
Copyright © 2002-2003 Apache Software Foundation. All Rights Reserved.


This content requires JavaScript
JavaScript appears to be disabled. Please enable it to view this content.


Kopoka’s security is based on world class industry standard, so we believe you can trust your data to Kopoka.
Kopoka runs on Microsoft Azure, which is a world-class enterprise-grade cloud computing platform owned and operated by Microsoft Corporation. The servers Kopoka is running on is completely operated and maintained by Microsoft’s highly qualified engineers.
Azure is a cloud that is built with customized hardware, has security controls integrated into the hardware and firmware components, and added protections against threats such as DDoS. Azure benefits from a team of more than 3,500 global cybersecurity experts that work together to help safeguard your business assets and data in Azure.
Microsoft Azure is certified for ISO 27001:2013, ISO 27017:2015, ISO 27018:2014, ISO 20000-1:2011, ISO 22301:2012, ISO 9001:2015 as well as CSA STAR Certification. These ISO standards provide baselines for information security management that are relied upon by many other standards across regulated industries and markets worldwide.
During transfer of data from Kopoka to your browser, Kopoka uses industry standard HTTPS protocol (HTTP securely encapsulated by TLS). The encryption used in TLS is AES-256 with 256-bit keys, which is the most advanced form of the cypher and involves 14 rounds of substitution, transposition and mixing for an exceptionally high level of security, and is secure enough for U.S. Government non-classified data.


--- layout: archive title: Zulip Chat Archive permalink: /stream/113489-new-members/topic/Well.20foundedness.20declarations.html ---
It seems for the mutually recursive function below, Lean cannot find the well founded relation. How can I specify the relation?
inductive Value : Type
| NatValue : ℕ -> Value
| ListValue : list Value -> Value
| NoValue : Value
mutual def findRecord, findRecordHelper
with findRecord : ℕ → Value → (list Value)
| l (Value.ListValue ((Value.NatValue x)::r)) :=
if beq_nat x l then
((Value.NatValue x)::r)
else findRecordHelper x r
| _ _ := list.nil
with findRecordHelper : ℕ → (list Value) → (list Value)
| _ list.nil := list.nil
| v (f::r) := match findRecord v f with
| list.nil := findRecordHelper v r
| x := x
end.
Do you know about the triple back tick thing? It makes code much easier to read
```lean
at the beginning and ```
at the end
Here it is with the triple back thing.
inductive Value : Type | NatValue : ℕ -> Value | ListValue : list Value -> Value | NoValue : Value mutual def findRecord, findRecordHelper with findRecord : ℕ → Value → (list Value) | l (Value.ListValue ((Value.NatValue x)::r)) := if beq_nat x l then ((Value.NatValue x)::r) else findRecordHelper x r | _ _ := list.nil with findRecordHelper : ℕ → (list Value) → (list Value) | _ list.nil := list.nil | v (f::r) := match findRecord v f with | list.nil := findRecordHelper v r | x := x end.
Last updated: Apr 24 2020 at 19:02 UTC


A test is run inside an iframe with a same origin document. The containing document should receive callbacks as the tests progress inside the iframe. A single passing test is expected in the summary below.


Home > Data Structures and Algorithms Questions > Best Time to Buy and Sell Stock II
Here's a code snippet find Best Time to Buy and Sell Stock II
public int maxProfit(int[] prices) {
int n=prices.length;
int total=0;
for(int i=0; i < n-1; i++)
{
if(prices[i] < prices[i+1]){
total= total + prices[i+1]-prices[i];
}
}
return total;
}


| disabled {shinyjs} | R Documentation |
Create a Shiny input that is disabled when the Shiny app starts. The input can
be enabled later with shinyjs::toggleState
or shinyjs::enable
.
disabled(...)
... |
Shiny input (or tagList or list of of tags that include inputs) to disable. |
The tag (or tags) that was given as an argument in a disabled state.
shinyjs
must be initialized with a call to useShinyjs()
in the app's ui.
useShinyjs
,
toggleState
,
enable
,
disable
if (interactive()) { library(shiny) shinyApp( ui = fluidPage( useShinyjs(), # Set up shinyjs actionButton("btn", "Click me"), disabled( textInput("element", NULL, "I was born disabled") ) ), server = function(input, output) { observeEvent(input$btn, { enable("element") }) } ) } library(shiny) disabled(numericInput("num", NULL, 5), dateInput("date", NULL))


Install
Clone crater skeleton application repository
$ cd /var/www $ git clone git@github.com:crater-framework/crater-skeleton-application.git crater
The Crater Framework is on packagist https://packagist.org/packages/crater-php-framework/crater-php-framework
$ cd /var/www/crater $ php composer.phar self-update $ php composer.phar install
Set errorlog.html permission
$ cd /var/www/crater/App/Data $ sudo chmod 777 errorlog.html
Apache setup
To use Apache, setup a virtual host to point to the public/ directory of the project.
$ cd /etc/apache2/sites-available $ sudo vim crater.local
It should look something like below:
<VirtualHost *:80> ServerName crater.local DocumentRoot /var/www/crater/public <Directory /var/www/crater/public> AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost>
Enable site
$ sudo a2ensite crater.local $ sudo /etc/init.d/apache2 reload
Finally, you will need to add an entry in your hosts file corresponding to the value you place in your ServerName directive.
Point your browser to the server name you configured in the previous section;
you should be able to see a welcome page at this point.
The website can then be accessed using http://crater.localhost
Restart Apache.
If you’ve done it correctly, it should look something like this:


Disaster Management
Do's & Dont's
Donate
Facebook Group
Wireframe
use
#DangerDM
for Social Attention !
HELPLINE
NDRF
CONTACT NO:+91-9711077372
NDMA
CONTACT NO: 011-1078
NIDM
CONTACT NO: 011-2370 2432, 2370 5583, 2376 6146
ISDR
ICRC
Fill Form to
DONATE
Paytm Scan the
QR code
for Financial Aid
Searh for Nearest
Hospitals/
Medical Outlets/
Emergency Shelters
Do's
Earthquakes
Floods
Landslides
Hurricanes
Tsunamis
HeatWave
Dont's
Try to avoid construction and staying in vulnerable areas.
Do not panic and loose energy by crying.
Do not touch or walk over loose material and electrical wiring or pole.
Do not built houses near steep slopes and near drainage path.
Do not drink contaminated water directly from rivers, springs, wells but rain water if collected directly without is fine.
Do not move an injured person without rendering first aid unless the casualty is in immediate danger.
Tweets by emergencyglobal
Visit NGO
Aniruddha Academy of Disaster Management


We will never know your password or any other secret data from the chosen social network. We will only have access to your basic information, like name, photo and email.
Remember with which social network you signed up. You will always access your account with it.


Please print a copy of this screen for your records. Thank you for choosing
Mercury Tours.
|
| Passengers |
2 passengers |
|
Billed To
|
|
Pravin Durai Flat Number 11, Claredale House Claredale Street London, London, E2 6PE
AX 0
|
|
Delivery Address (N/A for Ticketless Travel)
|
|
1325 Borregas Ave.
Sunnyvale, CA, 94089
|
| Total
Taxes: |
$89 USD |
| Total
Price (including taxes): |
$1171 USD |
|
|
|
|
|
|
|
| |
|
|
|
|


I studied Computer Science at Marist College with a minor in Information Technology, and a concentration in Game Design and Programming. I held a job on campus as a student developer, working on projects like applying responsive web design to our student web portal.
I then went through the Ops, Tech, and Data Leadership Development Program at The Hartford. Through this program, I gained experience as an app developer, technical analyst, web developer, and data engineer. At the end of the program, I joined the Big Data & Analytics team full-time as a data engineer. I currently work heavily with Linux shell scripting, Python development, and big data tools like Hadoop, Apache Spark, and Tableau for data visualization.


{% extends "base.html" %} {% block content %}
Install this app in a shop to get access to its private admin data.
Don’t have a shop to install your app in handy? Create a test shop.


Students
Student Status :
Faculty No.
Enrolment No.
Name
Department
Hall
Section
Status
Email
Faculty No.
Enrolment No.
Name
Department
Hall
Section
Status
Email
×
Student Info
Areeb Jamal
14PEB049
GF1032
Computer
<EMAIL_ADDRESS>Registered at :
2014-09-08T08:02:17-05:00
Registered by :
Dean
edit
×
Change Section/Status
This will change the section/status of
selected student(s) to the chosen value
New Section
OR
New Status
Active : A
Graduated : G
Inactive : N


Create First User
Use these credentials to use Virtool when it is up-and-running.
Username
Password
%if ready:
User profile ready!
%endif %if not ready: %endif
%if ready: %endif


Pikachu Brings Miles Of Smiles To This Year's Thanksgiving Day Parade
Bigger than its Gigantamax form?
by Liam DoolanThis year, for the 19th consecutive year in a row – no, we can't believe it either – Pikachu will be taking part in the annual Macy's Thanksgiving Day Parade in New York City. Perhaps this gigantic Pikachu is more appropriate than ever, now that Dynamax and Gigantamax Pokémon exist.
Here's the announcement via the official Pokémon Twitter account:
As always, Pikachu will be accompanied by a cute snowman version of itself as it travels through Manhattan. Fans across America will be able to tune into Macy's Parade on November 28 on NBC from 9 am in all time zones.
Will you be attending the parade or at least watching it on television? Comment down below.
[via pokemon.com]


Home
About
Collections
Categories
2020 Collections
You should always
feel pretty
Clothes that are sure to heat up your winter
Facebook
Instagram
Twitter


❮
❯
Home
Events
Vendors
Map
My Profile
Home
Events
Vendors
Map
My Profile
Home
Events
Vendors
Map
My Profile
Back
Message Vendor
Home
Events
Vendors
Map
My Profile
Close
Send a Message
Login
Forgot password? Click here to reset.
Join VAWE
Vendor Login
Vendor Login
Forgot password? Click here to reset.
My Profile
My Events
My Photos
Favorites
Messages
Registry
Settings
Logout


{% extends "mails/messages/activity_base.html" %} {% load i18n %} {% block message %}
{% blocktrans context 'email' %}The start and/or end date of the activity "{{ title }}", in which you are participating, has changed.{% endblocktrans %}
{% blocktrans context 'email' %}Start: {{ start }}{% endblocktrans %}
{% blocktrans context 'email' %}End: {{ end }}{% endblocktrans %}
{% blocktrans context 'email' %}Head over to the activity page for more information.{% endblocktrans %}
{% blocktrans context 'email' %}If you are unable to participate, please withdraw via the activity page so that others can take your place.{% endblocktrans %}
{% endblock %}


Designs
See something you like? All template codes are
available on GitHub.
Want something new? Contact me with your request.
×


{% extends "base.html" %} {% block titlesuffix %} - Delete Docker image{% endblock %} {% block main %} {% if not image_sites.exists %}
Are you sure you want to remove the Docker image {{ image.name }} ({{ image.friendly_name }})?
The image {{ image.name }} ({{ image.friendly_name }}) is in use. You cannot delete it.
The following sites are using this image:


---
layout: page
title: "About"
description: "Hey, this is Yitar."
header-img: "img/about-bg.jpg"
---
惬意的生活，快乐的编程～
一些期待成为的角色:
- Java 工程师
- 高级 Java 工程师
- Java 架构师
- 成为一名 Google 员工！

My dream position include:
- Java Engineer
- Senior Java Engineer
- Java Architect
- Well, I'm actually a super fan of Google. Hope to see Alphabet return to China in my life.
Interested in more details? Just checkout my resumes:


Yes.
And it works like a charm.
Wait a second, where is my...
-
Application launcher:
bemenu,
LavaLauncher,
wofi
-
Clipboard manager:
clipman,
wl-clipboard
-
Color picker:
Azote,
grim
-
Compiz support:
Wayfire
-
Document viewer:
Zathura
-
Gamma & day/night adjustment tool:
gammastep,
wlsunset
-
Image viewer:
imv
-
Notification daemon:
mako
-
Screenshot / screen capture & share tool:
grim/slurp,
OBS,
swappy,
wayvnc
-
Status bar:
Waybar,
yambar
-
System monitoring widget:
wldash
-
Terminal:
Alacritty,
gnome-terminal,
Sakura,
Termite
-
Tiling window manager:
dwl,
River,
Sway
-
Output/display configuration tool:
kanshi,
wdiplays,
wlr-randr
-
Video player:
mpv
-
Wallpaper manager:
Azote,
swaybg,
Wallutils
-
Web browser:
Chromium
(Wayland native soon),
Epiphany,
Firefox


Malt is a static website generator built in Python. It transforms a directory of text files into a WordPress-style website with support for pages, posts, and custom post types.
You're currently viewing a demonstration site filled with sample content. Here's a list of sample pages to check out:
Malt supports blog-style posts as well as pages. Here's a bunch of sample posts:
Pages and posts are Malt's two default record types, but you can add as many custom types to your site as you like. Let's use a custom type to devote a section of our site to our friends, the animals:
Custom types can have their own directory indexes, tag indexes, templates, and styling.


An ideal solution for a microfrontend architecture should make no differentiation between microfrontend and component, but at the same time should be technology agnostic without compromising on performance. Established best practices for web applications like PWA, caching, offline support, SSR and SSO should not be sacrificed for an architectural pattern that benefits the architects without bringing any benefit to the user of the end product. The same can be said of the UX aspect that should not be influenced in a bad way by the choice of architecture.
Not all requirements can be achieved by mere solutions in code but by enforcing conventions like a (code) style guide and a design-system.
define MFC = Microfrontend/Component
@microfront/layout-router
loads a layout definition and renders the layout@microfront/layout-router
is initialized by controller and handles route changes and triggers (re)layout and MFC loading@microfront/client-controller
initializes @microfront/layout-router
and loads MFCs (aka routed applications) in the route-regions defined in layout@microfront/client-controller
and MFCs communicate via events and payloads are formatted in GraphQL as lingua franca@microfront/graphql-client
is initialized by controller and handles GraphQL requests triggered by the events of the MFCs@microfront/auth
is initialized by controller and handles authentication and session management@microfront/ssr-controller
leverages the @microfront/layout-router
to request and compose the data, HTML and CSS from the MFCs own respective ssr microservicesGenerated using TypeDoc


This sample works with the latest Chrome and Firefox.
Login Logoff
Set Remote ID
Share Camera Stop Camera Sharing Stop Conversation Share Screen


Compliments of the day to you and your family. How are you? and your family? i do hope you all are fine? if so glory be to almighty. I got your e-mail on my search for investment research.Then i decided to contact you hoping that you will be right person to assist me and my mother on any profitable investment i want to do in your country. First and foremost,i apologized using this medium to reach you for a transaction/business of the magnitude;Let me introduce my self propersly.My name is Mr.Lanssana Kuyembeh,the son of chief Bankelo Kuyembeh. Iam the beneficiary/next of kin of the fund,i and my mother are living under(UNHCR) in Dakar Senegal as refugee.My late father(chief Bankelo Kuyembeh) was a business man,he deals on diamond and gold before his untimely death. He was killed by the rebels of(R.U.F) and many of our properties/buldings were destroyed by them.When my late father was alife he sensed of conspiracy against him and he escaped me and my mother to Dakar Senegal. And later go back to Sierra leone that is when he was killed;And that time the war was still going on in my country. When he was alife he deposited his money(us$7.2million dollars) with my name as his next of kin in a security company in Senegal.Presently,i want you to assist me transfer the money out from Senegal to your position so that you can help us to invest it and also to hel us aquire naturization statue in your country. Please if you are willing and intrested to assist us,i want you to stand as the beneficiary/receiver of the money on my behalf.And also you will assist us to transfer the money out from Senegal to your position pending on my arrival to meet with you. All the documents that my late father used to deposit the money is here with me and will send them to you on demand.I have the authority of my mother involved that should you be willing to assist us in the process of the transfer,your share of the sum will be 20% of the us$7.2 million. The transaction is 100% safe,on your part provided you treat it with utmost secrecy and confidentiality.Also your area of specialization is not a hinderance to the sucessful execution of this transaction. I have reposed my confidence in you and hope that you will not disappoint me. I am waiting for your response regard for the process. Thanks, Lanssana Kuyembeh.


1981 – Project RYaN
Project RYaN was a collaboration between the KGB and the East German Ministry of State Security (Stasi) from 1981 to 1989. The project was supposed to help the USSR predict a surprise nuclear attack by NATO. Germany did not get involved in Project RYaN until 1985; however, Yuri Andropov as chairman of the KGB and as General Secretary after Leonid Brezhnev, was a proponent from the start. At least 300 new positions in the KGB were created for work on Project RYaN.
Determining a surprise nuclear attack is very difficult because nuclear weapons can be used within 24 hours. Project RYaN looked at an enormous variety of factors that would help the Soviet Union predict an attack.
Among them are (all are direct quotes):
- 5. Noticing the fact of the order forwarded to troops to launch missiles.
- 1.1. Holding of extraordinary meetings by the National Security Council of the United States and of special crisis groups (White House “situation room”).
- 1.1.3. Arrival of former US Presidents in Washington.
- 1.1.6. Parking of a large number of vehicles used by official people at the parking lot of the White House (at the area adjacent to the White House).
- 1.1.7. Reduction of meetings by the US President and the Secretary of State with representatives of the mass media.
- 1.2.7. Significant increase in anti-Soviet propaganda, unleashing of a war hysteria.
- 1.2.8. Statements in the press, radio, and on TV about an increase of aggressiveness in USSR policy, and the subsequent need to take countermeasures in this context.
- 1.3.3. Removal of nuclear weapons from stocks and distribution of nuclear ammunition to the units.
- 2.1.3. Increase of traffic in communication systems “Alpha”, “Bravo”, “Green Pine”, and others.
- 2.1.10. National control and takeover of commercial communication networks.
- 1.1.11. More frequent than usual (once within 24 hours) distribution by the NATO situation room of intelligence overviews that are unrelated to the bloc's large command staff exercises.
- 3.2.1. Conducting a mass campaign to donate blood, with an expansion of the number of pure blood donors, plasma donors, and paid donors.


how we put Facebook on the path to 1 billion users
3 Biggest Questions facing applications for growth
- How do you get people in the front door?
- How do you get them to an 'a-ha' moment as quickly as possible?
- How do you deliver core product value as often as possible?
Question
What is the core value of the product? How is that exposed to users, and when?

- "Growth is a very simple understanding of product value and consumer behavior"
- "Two different choices - you can do what you think is right, independent of what the external feedback loop tells you, and choice number two is to do what you read about and what you get credit for and what people tell you is interesting. This second class of things ... destroys products"
"Complexity, when communicated simply, can be extremely useful."
Biggest risk is alienating current customers. It doesn't always show up immediately, but it does over time, and once it does, you can't get them back.
Only once those big three problems are resolved can you begin thinking of virality.
Disprove all of the lore that is floating around. When someone throws out gut feeling and assumptions, test it. You must be emotionally detached and just figure out what is happening and why.
Everything around how the company is built and structured goes back to the core product mission and value of the company.
When you see a user spiral downward, it's not a growth problem (although numerically it is a growth problem) - it's a core value and a culture problem.
RECRUITING
- "Detached, egoless, not living the hype, not trying to follow some lifestyle, but doing what you think is important, focusing on core value, ruthlessly prioritizing, and getting more people who believe in those things"
- High IQ, High sense of purpose, relentless focus on real success, respectable competitiveness, very high quality bar that borders on perfection, people who are comfortable tearing down what works (courage), high integrity (long-term thinking), rewarding the culture and set of values"


cma.bbob.NormalizedCocoProblem
class documentationcma.bbob
(View In Hierarchy)
A translated and shifted coco problem with all-zeros as
global minimum and 0 as optimal function value.
Example:
>>> import cocoex >>> bbob = cocoex.Suite('bbob', '', '') >>> dimension = 10 >>> f6 = NormalizedCocoProblem(bbob, 6, dimension) >>> assert f6(dimension * [0]) == 0
| Method | __init__ | return a "normalized" coco problem. |
| Method | __call__ | Main functionality, return f(x), where f(zeros)==0 is the minimizer |
| Method | constraint | Undocumented |
| Method | _inherit_attributes | link attributes from f . |
| Method | _inherit_docstrings | set method __doc__ attributes from f |
return a "normalized" coco problem.
suite
must be a cocoex.Suite
instance, the further
parameters fun_nb
, dimension
, instance
are passed to
suite.get_problem_by_function_dimension_instance
.
The original coco problem resides in attribute f
.
The returned "normalized" version of the function is useful to make single experiments with algorithms which are invariant under x- and f-translations. The output of the experiments is (much) easier to interpret for the normalized version.


Python PEPs Graph
Click on a PEP to see other PEPs it mentions.
Made by:
@vortex_ape
Source:
https://github.com/vinayak-mehta/python-peps-graph


You already have local data, they will be erased by data stored on server, unless it's your first time login.


Last night, I posted a photo set of images taken every mile for 20 miles. Today, they’re alive and in color. Central IL is pretty flat, so you can drive fast. This was the hardest GIF I’ve done to date. First, I imported everything into GIMP as layers. Then, I had to figure out how to create a GIF where only a pice of it was... Read more 23 May 2013 - 1 minute read
I was in Centralia, IL all day today (5/22), which is about 5 hours from where I live. Somewhere in between hour 1 and boredtodeathville, I was trying to think up something I could do for ds106 while I was driving. My mind flashed back to an assignment in which you take a photo every step for 10 steps, and then create a collage. I’ve wanted to ... Read more 22 May 2013 - 1 minute read
I’m traveling today and tomorrow to lead some training on Flipped Learning and let’s just say it hasn’t been the smoothest trip so far. First, I thought (my own fault, btw) we were doing Mac training. Turns out, we’re doing PC. So, I partitioned my hard drive and managed to get Windows installed before I left. Second, I’m tearing out my kitche... Read more 21 May 2013 - 2 minute read
Week 1 of the summer ds106 course has begun, and I’m trying to stay on top of the work and do as much as I can with the rest of the summer cohort. I feel like I’ve got the chops, I just hope I have the time. Today, to kick things off, we have a Design Assignment from the bank. This assignment asked us to create an image for a fictional characte... Read more 20 May 2013 - 1 minute read
CC by NC-SA by Brian Bennett In a spinoff from the Colorize It and Focus on One Color, I took a photo of my desk at home and then colorized some of my favorite things that surround me each day. This also makes me think about how much junk I have on my desk. Maybe it’s time to make some strategic decisions and cut down on stuff ... Read more 19 May 2013 - less than 1 minute read
It’s that time of year again: summer. Conferences are picking up and I like seeing where everyone is headed. So, I give you, my summer travel/life schedule. Kaskaskia Community College, Centralia, IL: 5/22 – 23 Clintondale HS, Detroit, MI: 6/7 FlipCon13, Stillwater, MN: 6/17 – 20 ISTE 2013, San Antonio, TX: 6/23 – 26 Lincoln, NE:6/27... Read more 17 May 2013 - less than 1 minute read
I’m a big fan of minimalism. So, when I saw a minimalist book cover assignment in the DS106 Assignment Bank, I knew it had to happen. I recently finished reading [A Clockwork Orange](http://www.amazon.com/Clockwork-Orange-Restored-Text/dp/0393089134/ref=sr_1_1?s=books&ie=UTF8&qid=1368718245&sr=1-1&keywords=a+clockwork+orange), a... Read more 16 May 2013 - 2 minute read
People say life gets more complicated as you get bigger. Well, I’m at 42, and I couldn’t disagree more. I might not be as quick or nimble as the 19’s, but I sure am a heck of a lot more agile than the 52’s or even the 48’s. Admittedly, I don’t get out more than once a week or so, but when I do, I can get the job done. I mean, why go out if you’... Read more 15 May 2013 - 2 minute read
I mentioned last night that I’m going to work along with UMW’s summer DS106 section beginning next Monday. In order to get ready, I’m cracking my GIF knuckles and getting my workflow down so I can spend more brain power on problem solving rather than just doing the work. I went through the DS106 Assignment Bank, looking for something that would... Read more 14 May 2013 - 1 minute read
I’m thinking a lot about teaching lately. Maybe because it’s because I’ve been out of the classroom for over three months, or because I’m planning on taking a class at MSU this fall on technology in education (more on that in another post). Anyways, I got thinking about where I began as a teacher, where I was back in February when I stopped, and... Read more 14 May 2013 - 1 minute read


Packt Beginning Selenium Files
Click on the links below to access the files mentioned on each lesson and section.
Day 1
Lesson 1
Lesson 2
Activities
Exercises
Lesson 3
Activities
Exercises
Day 2
Lesson 4
Exercises
Activities
Lesson 5
Exercises
Activities
Lesson 6
Exercises
Activities
Day 3
Lesson 7
Activities
Lesson 8
Activities
Activity A-1 - GiganticStoreTest.java
Lesson 9
Activities


Charles H. Nesbitt was appointed to serve as President and Commissioner of the Tax Appeals Tribunal in November 2005. Prior to his appointment, he served as Minority Leader of the Assembly, a position to which he was elected in April 2002. He served for thirteen years as Assemblyman, representing all of Orleans County, and parts of Genesee, Monroe, and Niagara counties.
As Minority Leader of the Assembly, Mr. Nesbitt was a champion for economic growth policies and lower taxes to help create jobs for New Yorkers. First elected in 1992, Mr. Nesbitt rapidly ascended through the ranks of the Minority Conference leadership, where he has served as the chairman of the Steering Committee and Deputy Minority Leader. He also is past Ranking Member of the Assembly Banks Committee and served on the budget-making Ways & Means Committee.
Mr. Nesbitt served many years as general sales manager at Moore-Nesbitt, Inc., and Nesbitt Chrysler Plymouth Dodge, Inc., before his election to the Assembly. He also is a former member of the Board of Directors of the Greater Rochester GMC Dealers and past president and member of the Board of Directors of the Albion Chamber of Commerce.
A decorated helicopter pilot with the 57th Assault Helicopter Co. during the Vietnam War, Mr. Nesbitt served in the U.S. armed forces for 10 years and earned the prestigious air medal with 26 oak leaf clusters. As an Assemblyman, he served as the Ranking Member of the Veterans Affairs Committee and as a Member of the New York State Veterans Affairs Commission. Mr. Nesbitt led efforts to gain funding and services for New York's nearly 1.3 million veterans. He also was instrumental in obtaining the passage of an Assembly resolution in March 1994 calling on Congress to enact a U.S. constitutional amendment prohibiting the desecration of the American flag.
In 2003, Mr. Nesbitt helped create the historic Patriot Plan, a sweeping package of benefits to assist New Yorkers serving their nation in the Reserve Components of the Armed Forces. The plan, signed into law by Governor Pataki later that same year, is the most comprehensive assistance package extended to members of the National Guard and Reserve since the GI Bill and has become a model for other states. For his efforts, Mr. Nesbitt was presented with the National Guard Association of the United States' (NGAUS) Charles Dick Medal, the highest NGAUS award a state legislator is eligible to receive.
Before coming to Albany, Mr. Nesbitt served as an Albion Town Councilman, Chairman of the Town of Barre Planning Board, and Chairman of the Orleans County Planning Board. He is a Member of the Genesee County Community College Foundation Board, Renovation Lodge #97 F. & A.M., the American Legion Sheret Post #35, the Benevolent Protective Order of the Elks Lodge #1006, the Vietnam Veterans of America Chapter #193, VFW Post #202, the First Presbyterian Church of Albion, and is a past President of the Orleans County Heart Association.
Mr. Nesbitt, the father of six children, and his wife Kim, reside in the Town of Albion in Orleans County.


PAS pulses to skip
The amount of pulses from the PAS sensor to skip before starting assisting to pedalling.


Month Score
-
You need to log at least 25 days of the past month to get access.
-
The Score will always be of the past month.
-
If you cannot access now, you'll have to wait until next month.


Variable
Population sizes
Germination period
Pollen period
Nutrient demand
Full health
Radius
Reproduction rate
Log
View graph
View simulation
Restart simulation


In Austin Powers: International Man of Mystery, set in the 90s, Austin's arch-nemesis Dr. Evil is laughably stuck in the 60s, demanding a million dollars to ransom the world, etc. Now it's the second installment, though, and, to keep it interesting, Mike Myers has turned it all around: back in his own time--the 60s--Dr. Evil is now laughably stuck in the 90s. Meaning he now wants to ransom the world for a billion or so dollars, which is just as preposterous as his 90s ransom demand. Which is precisely what Austin Powers: The Spy Who Shagged Me is all about: temporal dislocation. It's why we love (or hate) Austin--via some fantastic cryogenics, he's managed to preserve a 60's mindset wholly unsullied by the 70s and 80s. But, to return to the little binary set that propels both movies (Dr. Evil/Austin Powers), while this childlike quality is light-hearted and attractive in Austin, in Dr. Evil it's a character flaw. Granted, a lighthearted, entertaining one, but still, more or less the reason Austin defeats him in International Man of Mystery. The Spy Who Shagged Me isn't quite so balanced. This time the binary set of Austin/Evil falls apart a bit, with Dr. Evil more or less taking the lead role, leaving Austin and Agent Shagwell (Heather Graham) to their series of hijinks etc. Perhaps this is a result of the introduction of Fat Bastard (Mike Myers again), Dr. Evil's lackey, or perhaps Evil's Mini-Me skewed everything somehow. Whatever the case, with Austin and Evil no longer counterbalancing each other narratively, the mojo that propelled us through the first installment is somewhat diluted, and all we have to pull us through then is the slapstick, the self-conscious intertextuality, the in-jokes. But there is plenty of all three. Maybe even too much. Granted, Dr. Evils' Puff-Daddy intermezzo is one of the highlights of the movie, something we can cue into, and there's Austin mistaking a stool-sample for coffee, even Agent Shagwell pulling an Austin from International Man of Mystery (sleeping with the enemy), but it doesn't all cohere. Instead of going constantly forward as a 'fantastic' comedy absolutely needs to, The Spy Who Shagged Me sidesteps again and again into un-plot-related SNL-ish sketches. Dr. Evil's Puff-Daddy intermezzo is a case in point. But , again, these sketches are entertaining (especially Will Ferrel's Monty Python take-off), they just make The Spy Who Shagged Me a fundamentally different type of movie than International Man of Mystery, which used the sketches as plot devices. In spite of these narrative difficulties, however, The Spy Who Shagged Me does redeem itself, both with the frame it sets itself in (Jerry Springer episodes) and with a wonderful little device it uses never to say 'penis' when 'penis' really needs to be said. Just as in the closing scene of International Man of Mystery the naked Austin and Vanessa Kensington's (Elizabeth Hurley) R-rated parts are always hidden at the last possible moment, so in The Spy Who Shagged Me--via wordplay, editing, and cameos (Woody, Willie, etc)--'penis' is never said in the proper context, though it's what everyone's talking about. This is Austin Powers, after all, and, while we may not expect narrative rigor, we can can count on extended joke-sequences such as these, handled with that signature Mike Myers touch.
(c) 1999 Stephen Graham Jones for more like this, check out http://ww.cinemuck.com
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


ItemModelBarDataProxy QML Type
Proxy class for presenting data in item models with Bars3D. More...
| Import Statement: | import QtDataVisualization 1.2 |
| Since: | QtDataVisualization 1.0 |
| Instantiates: | QItemModelBarDataProxy |
| Inherits: |
Properties
- autoColumnCategories : bool
- autoRowCategories : bool
- columnCategories : list<String>
- columnRole : string
- columnRolePattern : regExp
- columnRoleReplace : string
- itemModel : model
- multiMatchBehavior : ItemModelBarDataProxy.MultiMatchBehavior
- rotationRole : string
- rotationRolePattern : regExp
- rotationRoleReplace : string
- rowCategories : list<String>
- rowRole : string
- rowRolePattern : regExp
- rowRoleReplace : string
- useModelCategories : bool
- valueRole : string
- valueRolePattern : regExp
- valueRoleReplace : string
Detailed Description
This type allows you to use AbstractItemModel derived models as a data source for Bars3D.
Data is resolved asynchronously whenever the mapping or the model changes. QBarDataProxy::arrayReset() is emitted when the data has been resolved.
For ItemModelBarDataProxy enums, see QItemModelBarDataProxy::MultiMatchBehavior.
For more details, see QItemModelBarDataProxy documentation.
Usage example:
ItemModelBarDataProxy { itemModel: model // E.g. a list model defined elsewhere containing yearly expenses data. // Mapping model roles to bar series rows, columns, and values. rowRole: "year" columnRole: "city" valueRole: "expenses" rowCategories: ["2010", "2011", "2012", "2013"] columnCategories: ["Oulu", "Rauma", "Helsinki", "Tampere"] }
See also BarDataProxy and Qt Data Visualization Data Handling.
Property Documentation
When set to true
, the mapping ignores any explicitly set column categories and overwrites them with automatically generated ones whenever the data from model is resolved. Defaults to true
.
When set to true
, the mapping ignores any explicitly set row categories and overwrites them with automatically generated ones whenever the data from the model is resolved. Defaults to true
.
columnCategories : list<String> |
The column categories of the mapping. Only items with column role values that are found in this list are included when the data is resolved. The columns are ordered in the same order as they are in this list.
When set, a search and replace is done on the value mapped by column role before it is used as a column category. This property specifies the regular expression to find the portion of the mapped value to replace and columnRoleReplace property contains the replacement string. This is useful for example in parsing row and column categories from a single timestamp field in the item model.
See also columnRole and columnRoleReplace.
This property defines the replace content to be used in conjunction with columnRolePattern. Defaults to empty string. For more information on how the search and replace using regular expressions works, see QString::replace(const QRegExp &rx, const QString &after) function documentation.
See also columnRole and columnRolePattern.
multiMatchBehavior : ItemModelBarDataProxy.MultiMatchBehavior |
Defines how multiple matches for each row/column combination are handled. Defaults to ItemModelBarDataProxy.MMBLast. The chosen behavior affects both bar value and rotation.
For example, you might have an item model with timestamped data taken at irregular intervals and you want to visualize total value of data items on each day with a bar graph. This can be done by specifying row and column categories so that each bar represents a day, and setting multiMatchBehavior to ItemModelBarDataProxy.MMBCumulative.
When set, a search and replace is done on the value mapped by rotation role before it is used as a bar rotation angle. This property specifies the regular expression to find the portion of the mapped value to replace and rotationRoleReplace property contains the replacement string.
See also rotationRole and rotationRoleReplace.
This property defines the replace content to be used in conjunction with rotationRolePattern. Defaults to empty string. For more information on how the search and replace using regular expressions works, see QString::replace(const QRegExp &rx, const QString &after) function documentation.
See also rotationRole and rotationRolePattern.
rowCategories : list<String> |
The row categories of the mapping. Only items with row role values that are found in this list are included when the data is resolved. The rows are ordered in the same order as they are in this list.
When set, a search and replace is done on the value mapped by row role before it is used as a row category. This property specifies the regular expression to find the portion of the mapped value to replace and rowRoleReplace property contains the replacement string. This is useful for example in parsing row and column categories from a single timestamp field in the item model.
See also rowRole and rowRoleReplace.
This property defines the replace content to be used in conjunction with rowRolePattern. Defaults to empty string. For more information on how the search and replace using regular expressions works, see QString::replace(const QRegExp &rx, const QString &after) function documentation.
See also rowRole and rowRolePattern.
When set to true
, the mapping ignores row and column roles and categories, and uses the rows and columns from the model instead. Row and column headers are used for row and column labels. Defaults to false
.
When set, a search and replace is done on the value mapped by value role before it is used as a bar value. This property specifies the regular expression to find the portion of the mapped value to replace and valueRoleReplace property contains the replacement string.
See also valueRole and valueRoleReplace.
This property defines the replace content to be used in conjunction with valueRolePattern. Defaults to empty string. For more information on how the search and replace using regular expressions works, see QString::replace(const QRegExp &rx, const QString &after) function documentation.
See also valueRole and valueRolePattern.


JS Regex
Home
(current)
Java
Advanced JAVA
MYSQL
HTML
CSS
JAVASCRIPT
JDBC
JS Regex
JS Regex
Download zip
Prev
JS Home
Next


HARDBALL (2001) 2 stars out of 4. Starring Keanu Reeves, Diane Lane, John Hawkes, D.B. Sweeney, Mike McGlone, and Graham Beckel, Screenplay by John Gatins, based upon the book by Daniel Coyle. Directed by Brian Robbins. Rated RG-13. Approx. 106 minutes.
Many factors contribute to the distant nature of Hardball: the flimsy characterizations, the plot clichés, the overall familiar feel of this comedy-drama.
Hardball may sound like an inner-city remake of The Bad News Bears, but the sunny, light touch of that film is nowhere to be found in this somber feature.
Part of Hardball's lack of spontaneity can be blamed on its star, Keanu Reeves. He is a talented performer, but not a charismatic one who can grab an audience and hold it to his bosom.
In Hardball, Reeves plays Conor O'Neill, a degenerate gambler who owes thousands to various bookies.
To help erase his debt, he takes over - for $500 a week -from a busy investment banker pal as coach of an inner-city Little League team.
Of course, O'Neill cares nothing about the kids under his charge. It's merely a means of getting money for his weekly payoffs. But, as happened to crusty Walter Matthau in Bad News Bears, the youngsters eventually get under O'Neill's skin, sparking a regeneration and transforming him into a warm and caring individual.
But questions remain: How and why is O'Neill the way he is? No one is born a compulsive gambler, risking life and limb on the throw of the dice or a shot at the buzzer.
We only get a surface picture of this desperate hustler.
His young charges are merely types: Loud, brash youngsters who look and act older than their ages because of the circumstances life has dealt them.
Showing the wretched and sometimes deadly conditions these young boys must routinely face is what sets Hardball apart. For these youngsters, fear is a constant companion.
Escorting one child to his door, O'Neill notices the family sitting on the floor watching television. Asked why, the young man matter-of-factly tells his coach that it's to keep low and avoid stray bullets.
The young men who comprise O'Neill's team are heart warmers. For them the baseball diamond is a refuge. Watching them come together as a team is inspiring.
But the script really fails to address how O'Neill sparks these rambunctious youngsters to solidify into a united force. In one scene he orders them to stop the trash talk amongst themselves, and before you can say Sammy Sosa, they are do-or-die teammates.
Hardball may bring a tear to your eye, especially when the dangers of the projects are tragically brought home to O'Neill and his team. Yet, even this feels more like a clichéd standard plot device than the natural course of action.
What Hardball needed was a larger-than-life actor, one who can inspire, for the part of Conor O'Neill. Reeves is competent and can ably show angst, but he lacks the warmth required to pull off the part.
Hardball has a few moments of truth. The rest, however, feels like your watching a game replay.
Bob Bloom isthe film critic at the Journal and Courier in Lafayette, IN. He can be reached by e-mail at<EMAIL_ADDRESS>or at<EMAIL_ADDRESS>Bloom's reviews also can be found by logging into www.jconline.com and clicking on golafayette. Bloom's reviews also can be found on the Web at the Internet Movie Database: http://www.imdb.com/M/reviews_by?Bob+Bloom
========== X-RAMR-ID: 29459 X-Language: en X-RT-ReviewID: 249831 X-RT-TitleID: 1109876 X-RT-SourceID: 872 X-RT-AuthorID: 1363
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


There are several ways to perform element-wise array addition with Swift arrays. One approach is to use a for-loop, another approach is to use the Accelerate framework, and yet another approach is to use a Metal GPU compute kernel. An example of each approach is given below and an elapsed time comparison for adding two large arrays is given in the Summary section.
Adding elements of two arrays using pure Swift is demonstrated below using a for-loop. This can be slow for large arrays.
let x: [Float] = [3, 4.5, 8]
let y: [Float] = [2, 1.2, 7.4]
var z = [Float](repeating: 0, count: x.count)
for i in 0..<x.count {
z[i] = x[i] + y[i]
}
// This gives the following
// z is [5.0, 5.7, 15.4]
This function prints out the elapsed time of this approach and the first three results.
import Foundation
func addSwift(_ arr1: [Float], _ arr2: [Float]) {
let tic = CFAbsoluteTimeGetCurrent()
// Add two arrays and store results
let count = arr1.count
var result = [Float](repeating: 0.0, count: count)
for i in 0..<count {
result[i] = arr1[i] + arr2[i]
}
// Print out the elapsed time
let toc = CFAbsoluteTimeGetCurrent()
print("\nSwift elapsed time is \(toc - tic) s")
// Print out some results
for i in 0..<3 {
let a1 = String(format: "%.4f", arr1[i])
let a2 = String(format: "%.4f", arr2[i])
let y = String(format: "%.4f", result[i])
print("\(a1) + \(a2) = \(y)")
}
}
Element-wise array addition can be accomplished with the Accelerate vDSP.add function as shown below. This approach offers massive speed improvements for large arrays compared to adding the elements in a for-loop.
import Accelerate
let x: [Float] = [3, 4.5, 8]
let y: [Float] = [2, 1.2, 7.4]
let z = vDSP.add(x, y)
// where z is [5.0, 5.7, 15.4]
The Accelerate framework provides the vDSP.add function to add elements of two arrays. This approach provides a significant speed boost for adding large arrays.
import Accelerate
func addAccel(_ arr1: [Float], _ arr2: [Float]) {
let tic = CFAbsoluteTimeGetCurrent()
// Add two arrays and store results
let y = vDSP.add(arr1, arr2)
// Print out elapsed time
let toc = CFAbsoluteTimeGetCurrent()
print("\nAccelerate vDSP elapsed time is \(toc - tic) s")
// Print out some results
for i in 0..<3 {
let a1 = String(format: "%.4f", arr1[i])
let a2 = String(format: "%.4f", arr2[i])
let y = String(format: "%.4f", y[i])
print("\(a1) + \(a2) = \(y)")
}
}
The Metal compute kernal for adding the elements of two arrays is given below.
#include <metal_stdlib>
using namespace metal;
kernel void adder(
constant float *array1 [[ buffer(0) ]],
constant float *array2 [[ buffer(1) ]],
device float *result [[ buffer(2) ]],
uint index [[ thread_position_in_grid ]])
{
result[index] = array1[index] + array2[index];
}
Next, the adder kernel function is implemented in the Metal compute pipeline as shown below.
import MetalKit
private func setupMetal(arr1: [Float], arr2: [Float]) -> (MTLCommandBuffer?, MTLBuffer?) {
// Get the Metal GPU device
let device = MTLCreateSystemDefaultDevice()
// Queue for sending commands to the GPU
let commandQueue = device?.makeCommandQueue()
// Get our Metal GPU function
let gpuFunctionLibrary = device?.makeDefaultLibrary()
let adderGpuFunction = gpuFunctionLibrary?.makeFunction(name: "adder")
var pipelineState: MTLComputePipelineState!
do {
pipelineState = try device?.makeComputePipelineState(function: adderGpuFunction!)
} catch {
print(error)
}
// Create the buffers to be sent to the GPU from our arrays
let count = arr1.count
let arr1Buff = device?.makeBuffer(bytes: arr1,
length: MemoryLayout<Float>.size * count,
options: .storageModeShared)
let arr2Buff = device?.makeBuffer(bytes: arr2,
length: MemoryLayout<Float>.size * count,
options: .storageModeShared)
let resultBuff = device?.makeBuffer(length: MemoryLayout<Float>.size * count,
options: .storageModeShared)
// Create a buffer to be sent to the command queue
let commandBuffer = commandQueue?.makeCommandBuffer()
// Create an encoder to set values on the compute function
let commandEncoder = commandBuffer?.makeComputeCommandEncoder()
commandEncoder?.setComputePipelineState(pipelineState)
// Set the parameters of our GPU function
commandEncoder?.setBuffer(arr1Buff, offset: 0, index: 0)
commandEncoder?.setBuffer(arr2Buff, offset: 0, index: 1)
commandEncoder?.setBuffer(resultBuff, offset: 0, index: 2)
// Figure out how many threads we need to use for our operation
let threadsPerGrid = MTLSize(width: count, height: 1, depth: 1)
let maxThreadsPerThreadgroup = pipelineState.maxTotalThreadsPerThreadgroup
let threadsPerThreadgroup = MTLSize(width: maxThreadsPerThreadgroup, height: 1, depth: 1)
commandEncoder?.dispatchThreads(threadsPerGrid, threadsPerThreadgroup: threadsPerThreadgroup)
// Tell the encoder that it is done encoding. Now we can send this off to the GPU.
commandEncoder?.endEncoding()
return (commandBuffer, resultBuff)
}
func addMetal(_ arr1: [Float], _ arr2: [Float]) {
let (commandBuffer, resultBuff) = setupMetal(arr1: arr1, arr2: arr2)
let tic = CFAbsoluteTimeGetCurrent()
// Push this command to the command queue for processing
commandBuffer?.commit()
// Wait until the GPU function completes before working with any of the data
commandBuffer?.waitUntilCompleted()
// Get the pointer to the beginning of our data
let count = arr1.count
var resultBufferPointer = resultBuff?.contents().bindMemory(to: Float.self, capacity: count)
// Print out elapsed time
let toc = CFAbsoluteTimeGetCurrent()
print("\nMetal GPU elapsed time is \(toc - tic) s")
// Print out the results
for i in 0..<3 {
let a1 = String(format: "%.4f", arr1[i])
let a2 = String(format: "%.4f", arr2[i])
let y = String(format: "%.4f", Float(resultBufferPointer!.pointee))
print("\(a1) + \(a2) = \(y)")
resultBufferPointer = resultBufferPointer?.advanced(by: 1)
}
}
The main Swift file for running this Metal example is shown below.
import Foundation
// Size of each array
private let n = 5_000_000
// Create two random arrays of size n
private let array1 = (1...n).map{ _ in Float.random(in: 1...10) }
private let array2 = (1...n).map{ _ in Float.random(in: 1...10) }
// Add two arrays using Metal on the GPU
addMetal(array1, array2)
The main file for running the above examples is shown below. The table gives elapsed times from running the example code on a MacBook Pro with a 2.6 GHz 6-core Intel i7 CPU, 32 GB of RAM, and a 4 GB AMD Radeon Pro 5500m GPU. Before running the Xcode project, the GPU Frame Capture and API Validation were disabled for Metal. Based on the results, the Accelerate function is the fastest and the Swift for-loop is the slowest when adding two arrays with 5,000,000 elements.
import Foundation
// Size of each array
private let n = 5_000_000
// Create two random arrays of size n
private let array1 = (1...n).map{ _ in Float.random(in: 1...10) }
private let array2 = (1...n).map{ _ in Float.random(in: 1...10) }
// Add two arrays using Swift
addSwift(array1, array2)
// Add two arrays using Accelerate vDSP
addAccel(array1, array2)
// Add two arrays using Metal on the GPU
addMetal(array1, array2)
| Method | Elapsed time (s) |
|---|---|
| Swift | 3.3896 |
| Accelerate | 0.006299 |
| Metal | 0.01030 |
Swift Programming for macOS © 2023
Built by Gavin Wiggins


Simple Contemporary WebTemplate
This standards compliant, simple, fixed width website template is released as an 'open source' design (under a Creative Commons Attribution 3.0 Licence), which means that you are free to download and use it for anything you want (including modifying and amending it). All I ask is that you leave the 'design from HTML5webtemplates.co.uk' link in the footer of the template, but other than that...
This template is written entirely in HTML5 and CSS, and can be validated using the links in the footer.
You can view more free HTML5 web templates here.
This template is a fully functional 5 page website, with an examples page that gives examples of all the styles available with this design.
This template has been tested in the following browsers:


A WebRTC project that transforms websites into virtual meeting places by letting you video chat while browsing the internet. When you click our bookmarklet in your browser bar, you join a live video chat with others viewing the same webpage -- a chatternet!
Babelfish is a wearable computing device that acts as an instantaneous translator. It is fully voice commanded and allows its wearer to speak in any language of his/her choosing. It leverages the power of new web APIs, such as SpeechTranslation and WebSpeech.
Influx is an abstracted platform for building data analysis pipelines. Users work with abstract notions of sources, data operations, and visualizations, connecting elements in an intuitive flowchart. Instead of having decentralized directories of scripts that are difficult to maintain, Influx allows companies to build their data analysis into a single-cohesive platform, with real-time collaboration and an accessible web-based interface.
Outur Space, a medium through which Stanford students are able to find and provide open rooms to use for the night across campus residences.
Rocket - a new age machine learning productivity app that leverages passive data collection from iOS to schedule worktime to help users meet deadlines.
We are using a PrimeSense camera (fancy version of a kinect) in order to make a natural, gesture-based interface for desktop computers. We have focused our efforts on creating methods for computer navigation that minimize the amount of stress one's body incurs (a well-known problem with 'minority report'-style interfaces) while simultaneously offering as much dexterity as possible. In particular, we have developed three different 'modes' through which one can interact with their computer, each optimized for a different set of tasks and demands. The most 'natural,' or effortless, mode, in which one's arms hang loosely by their sides and small movements result in precise navigations, is made possible by a novel approach: we assigned a 'gravitational pull' to salient elements of one's desktop, such as files and folders, in order to guide their low-resolution attempts at moving the cursor. In addition, we made extensive use of machine learning; this allowed us to fully automate the transition between interface 'modes' (via pose detection) and also allowed for arbitrary gestures to map to hot-keys. As of this writing, we are working on adapting the gesture recognition to work with and manipulate 'Divvy,' a program aimed at intuitive window management in desktop interfaces. Though there remain tasks for which the traditional desktop computer interface is still better optimized (text-heavy web browsing, etc), we believe we have made the task of controlling a computer without a keyboard or mouse for extended periods of time feasible.
We are working on a framework to create a slideshow with pictures/text and share it with friends. It could have several applications, from serving as a way to communicate with family members far from home to making tutorials.


Advanced Contiv Tutorial
Note: - Please make sure you have you have taken this tutorial before starting this one Container Networking Tutorial
This tutorial walks through advanced features of contiv container networking.
Prerequisites
Note: - If you are using platform other than Mac, please install docker-engine, for that platform.
Setup
Step 1: Get contiv installer code from github.
$ git clone git@github.com:contiv/install.git
$ cd install
Step 2: Run installer to install contiv + Docker Swarm using Vagrant on VMs created on VirtualBox
Note: - Please make sure that you are NOT connected to VPN here.
make demo-swarm
This will create two VMs on VirtualBox. Using ansible, all the required services and software for contiv, will get installed at this step. This might take some time (usually approx 15-20 mins) depending upon your internet connection.
Step 3: Check vagrant VM nodes
Note: - On Windows, you will need a ssh client to be installed like putty, cygwin etc.
This command will show you list of VMs which we have created.
$ cd cluster
$ vagrant status
Current machine states:
contiv-node3 running (virtualbox)
contiv-node4 running (virtualbox)
The above command shows the node information, version, etc.
Step 4: Hello world Docker swarm.
As a part of this contiv installation, we install docker swarm for you. To verify docker swarm cluster, please execute following commands on Vagrant VMs.
$ cd cluster
$ vagrant ssh contiv-node3
Now you will be logged into one of the Vagrant VM.
[vagrant@contiv-node3 ~]$ export DOCKER_HOST=tcp://<IP_ADDRESS>:2375 (IP address might change depending upon your setup.
You will see this at the end of installation in setp 2 above)
[vagrant@contiv-node3 ~]$ docker info
Containers: 6
Running: 6
Paused: 0
Stopped: 0
Images: 5
Server Version: swarm/1.2.5
Role: primary
Strategy: spread
Filters: health, port, containerslots, dependency, affinity, constraint
Nodes: 2
contiv-node3: <IP_ADDRESS>:2385
└ ID: VTEC:DKHT:6JQ3:3VTA:OIVJ:DTWY:USJ4:BWTV:RSDU:7SQS:KZLQ:ERQN
└ Status: Healthy
└ Containers: 4 (4 Running, 0 Paused, 0 Stopped)
└ Reserved CPUs: 0 / 1
└ Reserved Memory: 0 B / 1.018 GiB
└ Labels: kernelversion=3.10.0-514.6.2.el7.x86_64, operatingsystem=CentOS Linux 7 (Core), storagedriver=devicemapper
└ UpdatedAt: 2017-04-05T03:44:23Z
└ ServerVersion: 1.12.6
contiv-node4: <IP_ADDRESS>:2385
└ ID: DFY4:JOVY:RJOM:BEAT:6TW3:6H3V:3QVZ:DMNR:KXJF:LGSM:D67W:ZM2B
└ Status: Healthy
└ Containers: 2 (2 Running, 0 Paused, 0 Stopped)
└ Reserved CPUs: 0 / 1
└ Reserved Memory: 0 B / 1.018 GiB
└ Labels: kernelversion=3.10.0-514.6.2.el7.x86_64, operatingsystem=CentOS Linux 7 (Core), storagedriver=devicemapper
└ UpdatedAt: 2017-04-05T03:44:22Z
└ ServerVersion: 1.12.6
Plugins:
Volume:
Network:
Swarm:
NodeID:
Is Manager: false
Node Address:
Security Options:
Kernel Version: 3.10.0-514.6.2.el7.x86_64
Operating System: linux
Architecture: amd64
CPUs: 2
Total Memory: 2.036 GiB
Name: contiv-node3
Docker Root Dir:
Debug Mode (client): false
Debug Mode (server): false
WARNING: No kernel memory limit support
Docker swarm with 2 nodes is running successfully.
Scheduler schedules these containers using the
scheduling algorithm bin-packing
or spread
, and if they are not placed on
different nodes, feel free to start more containers to see the distribution.
Step 5: Check contiv and related services.
etcdctl
is a control utility to manipulate etcd, state store used by kubernetes/docker/contiv
To check etcd cluster health
[vagrant@contiv-node3 ~]$ etcdctl cluster-health
member 6fa216d588021d73 is healthy: got healthy result from http://<IP_ADDRESS>:2379
cluster is healthy
To check netplugin and netmaster is running successfully.
[vagrant@contiv-node3 ~]$ sudo service netmaster status
Redirecting to /bin/systemctl status netmaster.service
● netmaster.service - Netmaster
Loaded: loaded (/etc/systemd/system/netmaster.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2017-04-05 03:38:13 UTC; 1h 24min ago
Main PID: 19303 (netmaster)
CGroup: /system.slice/netmaster.service
└─19303 /usr/bin/netmaster --cluster-mode docker -cluster-store etcd://<IP_ADDRESS>:2379
Apr 05 03:39:24 contiv-node3 netmaster[19303]: "
Apr 05 03:39:24 contiv-node3 netmaster[19303]: time="Apr 5 03:39:24.553096492" level=info msg="Registered node: &{HostAddr:<IP_ADDRESS> HostPort:9003}"
Apr 05 03:39:24 contiv-node3 netmaster[19303]: time="Apr 5 03:39:24.655632431" level=info msg="Connecting to RPC server: <IP_ADDRESS>:9002"
Apr 05 03:39:24 contiv-node3 netmaster[19303]: time="Apr 5 03:39:24.657559108" level=info msg="Connected to RPC server: <IP_ADDRESS>:9002"
Apr 05 03:39:24 contiv-node3 netmaster[19303]: time="Apr 5 03:39:24.686351579" level=info msg="Registered node: &{HostAddr:<IP_ADDRESS> HostPort:9002}"
Apr 05 03:39:25 contiv-node3 netmaster[19303]: time="Apr 5 03:39:25.055993278" level=info msg="Registered node: &{HostAddr:<IP_ADDRESS> HostPort:9003}"
Apr 05 03:39:25 contiv-node3 netmaster[19303]: time="Apr 5 03:39:25.057403945" level=info msg="Registered node: &{HostAddr:<IP_ADDRESS> HostPort:9002}"
Apr 05 03:39:26 contiv-node3 netmaster[19303]: time="Apr 5 03:39:26.982569554" level=info msg="Registered node: &{HostAddr:<IP_ADDRESS> HostPort:9003}"
Apr 05 03:39:26 contiv-node3 netmaster[19303]: time="Apr 5 03:39:26.985850619" level=info msg="Registered node: &{HostAddr:<IP_ADDRESS> HostPort:9002}"
Apr 05 03:39:47 contiv-node3 netmaster[19303]: time="Apr 5 03:39:47.370439060" level=info msg="Received EndpointUpdateRequest {{IPAddress: ContainerID: Labels:map[] Tenant: ...mmonName:}}"
Hint: Some lines were ellipsized, use -l to show in full.
[vagrant@contiv-node3 ~]$ sudo service netplugin status
Redirecting to /bin/systemctl status netplugin.service
● netplugin.service - Netplugin
Loaded: loaded (/etc/systemd/system/netplugin.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2017-04-05 03:38:06 UTC; 1h 24min ago
Main PID: 18715 (netplugin)
CGroup: /system.slice/netplugin.service
└─18715 /usr/bin/netplugin -plugin-mode docker -vlan-if eth2 -vtep-ip <IP_ADDRESS> -ctrl-ip <IP_ADDRESS> -cluster-store etcd://<IP_ADDRESS>:2379
Apr 05 04:53:05 contiv-node3 netplugin[18715]: time="Apr 5 04:53:05.147613969" level=info msg="Link up received for eth2"
Apr 05 04:53:50 contiv-node3 netplugin[18715]: time="Apr 5 04:53:50.094566036" level=info msg="Link up received for eth2"
Apr 05 04:58:50 contiv-node3 netplugin[18715]: time="Apr 5 04:58:50.111429722" level=info msg="Link up received for eth2"
Apr 05 04:59:35 contiv-node3 netplugin[18715]: time="Apr 5 04:59:35.097787227" level=info msg="Link up received for eth2"
Apr 05 04:59:35 contiv-node3 netplugin[18715]: time="Apr 5 04:59:35.117917438" level=info msg="Link up received for eth2"
Apr 05 05:00:20 contiv-node3 netplugin[18715]: time="Apr 5 05:00:20.098625381" level=info msg="Link up received for eth2"
Apr 05 05:00:20 contiv-node3 netplugin[18715]: time="Apr 5 05:00:20.115436793" level=info msg="Link up received for eth2"
Apr 05 05:01:05 contiv-node3 netplugin[18715]: time="Apr 5 05:01:05.103688615" level=info msg="Link up received for eth2"
Apr 05 05:01:05 contiv-node3 netplugin[18715]: time="Apr 5 05:01:05.118184283" level=info msg="Link up received for eth2"
Apr 05 05:01:50 contiv-node3 netplugin[18715]: time="Apr 5 05:01:50.111603433" level=info msg="Link up received for eth2"
`netctl` is a utility to create, update, read and modify contiv objects. It is a CLI wrapper
on top of REST interface.
[vagrant@contiv-node3 ~]$ netctl version
Client Version:
Version: 1.0.0-beta.5
GitCommit: 2b9a58f
BuildTime: 03-30-2017.19-09-51.UTC
Server Version:
Version: 1.0.0-beta.5
GitCommit: 2b9a58f
BuildTime: 03-30-2017.19-09-51.UTC
Chapter 1 - ICMP Policy
In this section, we will create two groups epgA and epgB. We will create container with respect to those groups. Then by default communication between group is allowed. So we will have ICMP deny policy and very that we are not able to ping among those containers.
Let us create Tenant and Network first.
[vagrant@contiv-node3 ~]$ netctl tenant create TestTenant
Creating tenant: TestTenant
[vagrant@contiv-node3 ~]$ netctl network create --tenant TestTenant --subnet=<IP_ADDRESS>/24 --gateway=<IP_ADDRESS> -e "vlan" TestNet
Creating network TestTenant:TestNet
[vagrant@contiv-node3 ~]$ netctl net ls -a
Tenant Network Nw Type Encap type Packet tag Subnet Gateway IPv6Subnet IPv6Gateway
------ ------- ------- ---------- ---------- ------- ------ ---------- -----------
TestTenant TestNet data vlan 0 <IP_ADDRESS>/24 <IP_ADDRESS>
Now, create two groups epgA and epgB, under network TestNet.
vagrant@contiv-node3 ~]$ netctl group create -t TestTenant TestNet epgA
Creating EndpointGroup TestTenant:epgA
[vagrant@contiv-node3 ~]$ netctl group create -t TestTenant TestNet epgB
Creating EndpointGroup TestTenant:epgB
[vagrant@contiv-node3 ~]$ netctl group ls -a
Tenant Group Network IP Pool Policies Network profile
------ ----- ------- -------- ---------------
TestTenant epgA TestNet
TestTenant epgB TestNet
Now you will see thse groups and networks are reported as network to docker-engine, with driver listed as netplugin.
[vagrant@contiv-node3 ~]$ docker network ls
NETWORK ID NAME DRIVER SCOPE
85f8144b5793 TestNet/TestTenant netplugin global
dc4bf5c0a3f6 contiv-node3/bridge bridge local
8ba7d938a5a6 contiv-node3/host host local
ce0ed5eeb959 contiv-node3/none null local
f582a71ef87c contiv-node4/bridge bridge local
9a79b6aa93d3 contiv-node4/host host local
bb41a59343f7 contiv-node4/none null local
f265e28064e3 epgA/TestTenant netplugin global
5991ae9fafc0 epgB/TestTenant netplugin global
Now Let us create two containers on each group network and check whether they are abel to ping each other or not. By default, Contiv allows ping between groups under same network.
[vagrant@contiv-node3 ~]$ docker run -itd --net="epgA/TestTenant" --name=AContainer contiv/alpine sh
d1c6376bebdbd93392131dce08887117460c801be1f1540e0f25ee990aa9003b
Log on to contiv-node4 and export DOCKER_HOST.
[vagrant@contiv-node4 ~]$ docker run -itd --net="epgB/TestTenant" --name=BContainer contiv/alpine sh
4a4ce395f99b6f0e4f8963724a2dd04c46c2d88375f7ac3870435f46bdc4aa30
[vagrant@contiv-node3 ~]$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4a4ce395f99b contiv/alpine "sh" 51 seconds ago Up 50 seconds contiv-node4/BContainer
d1c6376bebdb contiv/alpine "sh" About a minute ago Up 59 seconds contiv-node3/AContainer
8874e51e9f3b contiv/auth_proxy:1.0.0-beta.5 "./auth_proxy --tls-k" 10 minutes ago Up 10 minutes contiv-node3/auth-proxy
767c6a3fd784 quay.io/coreos/etcd:v2.3.8 "/etcd" 13 minutes ago Up 13 minutes contiv-node4/etcd
a56c3ab35cbf quay.io/coreos/etcd:v2.3.8 "/etcd" 13 minutes ago Up 13 minutes contiv-node3/etcd
Now try to ping from AContainer to BContainer. They should be able to ping each other.
[vagrant@contiv-node4 ~]$ docker exec -it BContainer sh
/ # ifconfig
eth0 Link encap:Ethernet HWaddr 02:02:0A:01:01:02
inet addr:<IP_ADDRESS> Bcast:<IP_ADDRESS> Mask:<IP_ADDRESS>
inet6 addr: fe80::2:aff:fe01:102%32606/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1450 Metric:1
RX packets:12 errors:0 dropped:0 overruns:0 frame:0
TX packets:11 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:956 (956.0 B) TX bytes:886 (886.0 B)
lo Link encap:Local Loopback
inet addr:<IP_ADDRESS> Mask:<IP_ADDRESS>
inet6 addr: ::1%32606/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
[vagrant@contiv-node3 ~]$ docker exec -it Acontainer sh
Error response from daemon: No such container Acontainer
[vagrant@contiv-node3 ~]$ docker exec -it AContainer sh
/ # ifconfig
eth0 Link encap:Ethernet HWaddr 02:02:0A:01:01:01
inet addr:<IP_ADDRESS> Bcast:<IP_ADDRESS> Mask:<IP_ADDRESS>
inet6 addr: fe80::2:aff:fe01:101%32716/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1450 Metric:1
RX packets:16 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1296 (1.2 KiB) TX bytes:648 (648.0 B)
lo Link encap:Local Loopback
inet addr:<IP_ADDRESS> Mask:<IP_ADDRESS>
inet6 addr: ::1%32716/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
/ # ping <IP_ADDRESS>
PING <IP_ADDRESS> (<IP_ADDRESS>) 56(84) bytes of data.
64 bytes from <IP_ADDRESS>: icmp_seq=1 ttl=64 time=2.43 ms
64 bytes from <IP_ADDRESS>: icmp_seq=2 ttl=64 time=0.836 ms
^C
--- <IP_ADDRESS> ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1003ms
rtt min/avg/max/mdev = 0.836/1.633/2.430/0.797 ms
/ # exit
Now add ICMP Deny policy. Container should not be abel to ping each other now.
Adding policy and modifying group.
[vagrant@contiv-node3 ~]$ netctl policy create -t TestTenant policyAB
Creating policy TestTenant:policyAB
[vagrant@contiv-node3 ~]$ netctl policy rule-add -t TestTenant -d in --protocol icmp --from-group epgA --action deny policyAB 1
[vagrant@contiv-node3 ~]$ netctl group create -t TestTenant -p policyAB TestNet epgB
Creating EndpointGroup TestTenant:epgB
[vagrant@contiv-node3 ~]$ netctl policy ls -a
Tenant Policy
------ ------
TestTenant policyAB
[vagrant@contiv-node3 ~]$ netctl policy rule-ls -t TestTenant policyAB
Incoming Rules:
Rule Priority From EndpointGroup From Network From IpAddress Protocol Port Action
---- -------- ------------------ ------------ --------- -------- ---- ------
1 1 epgA icmp 0 deny
Outgoing Rules:
Rule Priority To EndpointGroup To Network To IpAddress Protocol Port Action
---- -------- ---------------- ---------- --------- -------- ---- ------
Now ping between containers.
[vagrant@contiv-node3 ~]$ docker exec -it AContainer sh
/ # ping <IP_ADDRESS>
PING <IP_ADDRESS> (<IP_ADDRESS>) 56(84) bytes of data.
^C
--- <IP_ADDRESS> ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 3002ms
/ # exit
Chapter 2 - TCP Policy
In this section, We will add TCP 8001 port allow policy and then will verify this policy.
Creating TCP port policy.
[vagrant@contiv-node3 ~]$ netctl policy rule-add -t TestTenant -d in --protocol tcp --port 8001 --from-group epgA --action allow policyAB 3
[vagrant@contiv-node3 ~]$ netctl policy rule-ls -t TestTenant policyAB
Incoming Rules:
Rule Priority From EndpointGroup From Network From IpAddress Protocol Port Action
---- -------- ------------------ ------------ --------- -------- ---- ------
1 1 epgA icmp 0 deny
3 1 epgA tcp 8001 allow
Outgoing Rules:
Rule Priority To EndpointGroup To Network To IpAddress Protocol Port Action
---- -------- ---------------- ---------- --------- -------- ---- ------
Now check that from app group, only TCP 8001 port is open. To test this, Let us run iperf on BContainer and verify using nc utility on BContainer.
On AContainer:
[vagrant@contiv-node3 ~]$ docker exec -it AContainer sh
/ # iperf -s -p 8001
------------------------------------------------------------
Server listening on TCP port 8001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
On BContainer:
[vagrant@contiv-node4 ~]$ docker exec -it BContainer sh
/ # nc -zvw 1 <IP_ADDRESS> 8001 -------> here <IP_ADDRESS> is IP address of AContainer.
<IP_ADDRESS> (<IP_ADDRESS>:8001) open
/ # nc -zvw 1 <IP_ADDRESS> 8000
/ #
You see that port 8001 is open and port 8000 is not open.
Chapter 3 - Bandwidth Policy
In this chapter, we will explore bandwidth policy feature of contiv. We will create tenant, network and groups. Then we will attach netprofile to one group and verify that applied bandwidth is working or not as expected in data path.
So, let us create tenant, a network and group "A" under network.
[vagrant@contiv-node3 ~]$ netctl tenant create BandwidthTenant
Creating tenant: BandwidthTenant
[vagrant@contiv-node3 ~]$ netctl network create --tenant BandwidthTenant --subnet=<IP_ADDRESS>/24 --gateway=<IP_ADDRESS> -p 1001 -e "vlan" BandwidthTestNet
Creating network BandwidthTenant:BandwidthTestNet
[vagrant@contiv-node3 ~]$ netctl group create -t BandwidthTenant BandwidthTestNet epgA
Creating EndpointGroup BandwidthTenant:epgA
[vagrant@contiv-node3 ~]$ netctl net ls -a
Tenant Network Nw Type Encap type Packet tag Subnet Gateway IPv6Subnet IPv6Gateway
------ ------- ------- ---------- ---------- ------- ------ ---------- -----------
BandwidthTenant BandwidthTestNet data vlan 1001 <IP_ADDRESS>/24 <IP_ADDRESS>
[vagrant@contiv-node3 ~]$ netctl group ls -a
Tenant Group Network IP Pool Policies Network profile
------ ----- ------- -------- ---------------
BandwidthTenant epgA BandwidthTestNet
Now, We are going to run serverA and clientA containers using group epgA as a network.
[vagrant@contiv-node4 ~]$ export DOCKER_HOST=tcp://<IP_ADDRESS>:2375
[vagrant@contiv-node4 ~]$ docker run -itd --net="epgA/BandwidthTenant" --name=serverA contiv/alpine sh
6112c6697df2c43491a23e02d3d8bc3f621b91d59c64226382789ba15082c71b
[vagrant@contiv-node4 ~]$ docker run -itd --net="epgA/BandwidthTenant" --name=clientA contiv/alpine sh
c783d6c3f546d6053953bd664045aa35397756656247255a7e0cbb4201b5514c
[vagrant@contiv-node4 ~]$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c783d6c3f546 contiv/alpine "sh" 5 seconds ago Up 3 seconds contiv-node4/clientA
6112c6697df2 contiv/alpine "sh" 7 seconds ago Up 5 seconds contiv-node4/serverA
b6e0601d8c13 contiv/auth_proxy:1.0.0-beta.6 "./auth_proxy --tls-k" 4 minutes ago Up 4 minutes contiv-node3/auth-proxy
0c3cb365e573 quay.io/coreos/etcd:v2.3.8 "/etcd" 7 minutes ago Up 7 minutes contiv-node4/etcd
a9536ad281be quay.io/coreos/etcd:v2.3.8 "/etcd" 8 minutes ago Up 8 minutes contiv-node3/etcd
Now run iperf server and client to find out current bandwidth which we are getting on the network where you are running this tutorial. It may vary depending upon base OS , network speed etc.
On serverA:
[vagrant@contiv-node3 ~]$ docker exec -it serverA sh
/ # ifconfig
eth0 Link encap:Ethernet HWaddr 02:02:32:01:01:01
inet addr:<IP_ADDRESS> Bcast:<IP_ADDRESS> Mask:<IP_ADDRESS>
inet6 addr: fe80::2:32ff:fe01:101%32741/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1450 Metric:1
RX packets:16 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1296 (1.2 KiB) TX bytes:648 (648.0 B)
lo Link encap:Local Loopback
inet addr:<IP_ADDRESS> Mask:<IP_ADDRESS>
inet6 addr: ::1%32741/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
/ # iperf -s -u
------------------------------------------------------------
Server listening on UDP port 5001
Receiving 1470 byte datagrams
UDP buffer size: 208 KByte (default)
------------------------------------------------------------
[ 3] local <IP_ADDRESS> port 5001 connected with <IP_ADDRESS> port 34700
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
[ 3] 0.0-10.0 sec 1.25 MBytes 1.05 Mbits/sec 0.028 ms 0/ 893 (0%)
On clientA:
[vagrant@contiv-node4 ~]$ docker exec -it clientA sh
/ # iperf -c <IP_ADDRESS> -u
------------------------------------------------------------
Client connecting to <IP_ADDRESS>, UDP port 5001
Sending 1470 byte datagrams
UDP buffer size: 208 KByte (default)
------------------------------------------------------------
[ 3] local <IP_ADDRESS> port 34700 connected with <IP_ADDRESS> port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 1.25 MBytes 1.05 Mbits/sec
[ 3] Sent 893 datagrams
[ 3] Server Report:
[ 3] 0.0-10.0 sec 1.25 MBytes 1.05 Mbits/sec 0.027 ms 0/ 893 (0%)
/ #
Now we see that, current bandwidth we are getting is 1.05 Mbits/sec. So let us create new group B and create netprofile with bandwidth less than the one we got above. So let us create netprofile with bandwidth of 500Kbits/sec.
[vagrant@contiv-node3 ~]$ netctl netprofile create -t BandwidthTenant -b 500Kbps -d 6 -s 80 testProfile
Creating netprofile BandwidthTenant:testProfile
[vagrant@contiv-node3 ~]$ netctl group create -t BandwidthTenant -n testProfile BandwidthTestNet epgB
Creating EndpointGroup BandwidthTenant:epgB
[vagrant@contiv-node3 ~]$ netctl netprofile ls -a
Name Tenant Bandwidth DSCP burst size
------ ------ --------- -------- ----------
testProfile BandwidthTenant 500Kbps 6 80
[vagrant@contiv-node3 ~]$ netctl group ls -a
Tenant Group Network IP Pool Policies Network profile
------ ----- ------- -------- ---------------
BandwidthTenant epgA BandwidthTestNet
BandwidthTenant epgB BandwidthTestNet testProfile
[vagrant@contiv-node3 ~]$
Running clientB and serverB containers:
[vagrant@contiv-node3 ~]$ docker run -itd --net="epgB/BandwidthTenant" --name=serverB contiv/alpine sh
2f4845ed86c5496537ccece77683354e447c28df8f00c10a1a175eb5f44aee76
[vagrant@contiv-node3 ~]$ docker run -itd --net="epgB/BandwidthTenant" --name=clientB contiv/alpine sh
00dde4f46c360e517695e44f2690590ec0af26e125254102147fe79b76331339
[vagrant@contiv-node3 ~]$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
00dde4f46c36 contiv/alpine "sh" 2 seconds ago Up 1 seconds contiv-node4/clientB
2f4845ed86c5 contiv/alpine "sh" 4 seconds ago Up 3 seconds contiv-node3/serverB
c783d6c3f546 contiv/alpine "sh" 12 minutes ago Up 12 minutes contiv-node4/clientA
6112c6697df2 contiv/alpine "sh" 12 minutes ago Up 12 minutes contiv-node4/serverA
b6e0601d8c13 contiv/auth_proxy:1.0.0-beta.6 "./auth_proxy --tls-k" 17 minutes ago Up 17 minutes contiv-node3/auth-proxy
0c3cb365e573 quay.io/coreos/etcd:v2.3.8 "/etcd" 20 minutes ago Up 20 minutes contiv-node4/etcd
a9536ad281be quay.io/coreos/etcd:v2.3.8 "/etcd" 20 minutes ago Up 20 minutes contiv-node3/etcd
[vagrant@contiv-node3 ~]$
Now as we are running clientB and serverB containers on group B network. we should see bandwidth around 500Kbps. Thats the verification that our bandwidth netprofile is working as per expectation.
On serverB:
[vagrant@contiv-node3 ~]$ docker exec -it serverB sh
/ # ifconfig
eth0 Link encap:Ethernet HWaddr 02:02:32:01:01:03
inet addr:<IP_ADDRESS> Bcast:<IP_ADDRESS> Mask:<IP_ADDRESS>
inet6 addr: fe80::2:32ff:fe01:103%32525/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1450 Metric:1
RX packets:16 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1296 (1.2 KiB) TX bytes:648 (648.0 B)
lo Link encap:Local Loopback
inet addr:<IP_ADDRESS> Mask:<IP_ADDRESS>
inet6 addr: ::1%32525/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
/ # iperf -s -u
------------------------------------------------------------
Server listening on UDP port 5001
Receiving 1470 byte datagrams
UDP buffer size: 208 KByte (default)
------------------------------------------------------------
[ 3] local <IP_ADDRESS> port 5001 connected with <IP_ADDRESS> port 57180
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
[ 3] 0.0-10.3 sec 692 KBytes 552 Kbits/sec 15.720 ms 411/ 893 (46%)
On clientB:
[vagrant@contiv-node3 ~]$ docker exec -it clientB sh
/ # iperf -c <IP_ADDRESS> -u
------------------------------------------------------------
Client connecting to <IP_ADDRESS>, UDP port 5001
Sending 1470 byte datagrams
UDP buffer size: 208 KByte (default)
------------------------------------------------------------
[ 3] local <IP_ADDRESS> port 57180 connected with <IP_ADDRESS> port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 1.25 MBytes 1.05 Mbits/sec
[ 3] Sent 893 datagrams
[ 3] Server Report:
[ 3] 0.0-10.3 sec 692 KBytes 552 Kbits/sec 15.720 ms 411/ 893 (46%)
As we see, clientB is getting roughly around 500Kbps bandwidth.
Cleanup: after all play is done
To cleanup the setup, after doing all the experiments, exit the VM destroy VMs:
[vagrant@contiv-node3 ~]$ exit
$ cd .. (just to come out of cluster dir)
$ make cluster-destroy
cd cluster && vagrant destroy -f
==> contiv-node4: Forcing shutdown of VM...
==> contiv-node4: Destroying VM and associated drives...
==> contiv-node3: Forcing shutdown of VM...
==> contiv-node3: Destroying VM and associated drives...
Improvements or Comments
This tutorial was developed by Contiv engineers. Thank you for trying out this tutorial. Please file a GitHub issue if you see an issue with the tutorial, or if you prefer improving some text, feel free to send a pull request.
Copyright © 2017 Cisco and/or its affiliates. All rights reserved.


Query by geometry
Draw a geometry to query by:
Set a geometry buffer size:
Clear
Selected Buildings:
0


--- layout: post tags: [Miscellaneous] date: 2010-02-08 19:15:41 UTC title: "CNUG TDD talk" --- {% include JB/setup %}
As part of the Copenhagen .NET User Group (CNUG) winter and early autumn schedule, I'll be giving a talk on (slightly advanced) TDD.
The talk will be in Danish and takes place April 15th, 2010. More details and sign-up here.


| Apps Components Interfaces All Files Source Tree | source: beta.CC2420Radio.ieee.802.15.4.MLME.MLME_SET.nc |
The MLME-SAP get primitives define how to write values to the PIB.
| Author: | Joe Polastre |
Commands |
Events |
Commands - Details |
Events - Details |
Parameters: |
PIBAttribute - identifier of the PIBAttribute to read. PIBAttribute values are defined in Tables 71 and 72 of the IEEE 802.15.4 specification and in the IEEE802154.h header file. status - The status of the association attempt |