Windmill theme#
About#
Windmill theme focuses on clean usable navigation for large documentation projects. It retains the state of the menu of pages and folders across page transitions, by keeping navigation to an iframe.
Within pages, it uses the default mkdocs theme, including syntax highlighting.
Installation#
Install the Windmill theme using pip
:
pip install mkdocs-windmill
Usage#
To use the Windmill theme installed via pip
, add this to your mkdocs.yml
:
theme: 'windmill'
If you cloned Windmill from GitHub:
theme:
name: null
custom_dir: '{INSTALL_DIR}/mkdocs_windmill'
# Copy settings from mkdocs_theme.yml, which is ignored by custom_dir themes.
static_templates: [404.html]
search_index_only: true
include_search_page: true
Note that it's important for there to exist a homepage, e.g. a top-level root element in mkdocs 1.0+:
nav:
- Home: index.md


swagger-walk
swagger utility to walk through paths, methods and definitions.
Usage
simple example how to use the swagger-walk
utility.
const SwaggerWalk = require('swagger-walk')
// read swagger file
const spec = require('./swagger.json')
// create a new instance and set the swagger specification
let walker = new SwaggerWalk()
walker.setSpec(spec)
// walk all path methods
walker.paths.walkMethods((index, path, method, data) => {
console.log(path, method)
})
License
Licensed under MIT-License


Issue 7298: SVG view is broken for cached responses and reponses containing spaces
Steps to reproduce
- Open Firebug
- Enable and switch to the Net panel
- Reload the page
-
Expand the request for firebug.svg
⇒ There must be an SVG tab for the request.
- Switch to the SVG tab
Expected result
- The tab should contain the SVG source.


Afghan presidential candidate boycotts recounting process
by The Associated PressKABUL, Afghanistan (AP) — Afghan presidential candidate Abdullah Abdullah has unilaterally withdrawn his team’s election observers from an official recount of ballots ahead of long-delayed election results.
Abdullah says Sunday the results will have no legitimacy if his team’s observers are not present during the recount by Afghanistan’s Independent Election Commission.
Abdullah is a partner in the country’s unity government headed by President Ashraf Ghani, his lead contender in the election.
Ghani has not so far withdrawn his observers from the recount, but other candidates have expressed frustration with the process.
Polling was held on Sept. 28, but the announcement of results repeatedly postponed after accusations of misconduct and technical issues with counting ballots.
Preliminary election results are expected on Nov. 14.
The Associated Press


openvidu-ionic
A client-side only application built with Ionic 5 and Angular 9 frameworks. It can be compiled into a native Android app, a native iOS app and into a standard web app.
If it is the first time you use OpenVidu, it is highly recommended to start first with openvidu-hello-world tutorial due to this being a cordova ionic app and being a little more complex for OpenVidu starters.
Understanding this tutorial
OpenVidu is composed by the three modules displayed on the image above in its insecure version.
- openvidu-browser: NPM package for your Ionic app. It allows you to manage your video-calls straight away from your clients
- openvidu-server: Java application that controls Kurento Media Server
- Kurento Media Server: server that handles low level operations of media flow transmissions
Running this tutorial
1) You will need Node, NPM, Ionic and Cordova to serve the app. Install them with the following commands
sudo curl -sL https://deb.nodesource.com/setup_12.x | sudo bash -
sudo apt-get install -y nodejs
sudo npm install -g ionic@latest
sudo npm install -g cordova@latest
2) Clone the repo
git clone https://github.com/OpenVidu/openvidu-tutorials.git
3) Install dependencies
cd openvidu-tutorials/openvidu-ionic
npm install
Now depending on the platform you want to run your app...
In the browser
4) Run the tutorial
# In openvidu-tutorials/openvidu-ionic
ionic serve
5) openvidu-server and Kurento Media Server must be up and running in your development machine. The easiest way is running this Docker container which wraps both of them (you will need Docker CE)
docker run -p 4443:4443 --rm -e openvidu.secret=MY_SECRET openvidu/openvidu-server-kms:2.12.0
6) Go to localhost:8100
to test the app once the server is running. The first time you use the docker container, an alert message will suggest you accept the self-signed certificate of openvidu-server when you first try to join a video-call.
7) To show the app with the device appearance, press F12
button in your keyboard and the browser DevTools will be opened. You can find a button with a device icon at the top of the DevTools. By pressing this button the view will adapt to a mobile device aspect ratio. You can also choose predefined types of devices to see the behavior of your app in different resolutions.
If you are using Windows, read this FAQ to properly run the tutorial
To learn some tips to develop with OpenVidu, check this FAQ
In an Android device with native app
To deploy the Android APK not only you need to have Java JDK8, Android Studio and Android SDK installed but also you have to set up the specific environment variables. Fortunately, Ionic provide us a great guide to allows us to configure step by step all the requirements.
After we have completed all the steps of the Ionic guide and performed steps 1) , 2) and 3) stated above, we must continue with the following commands:
4) Connect the device to the same network as your PC
5) Now you need the IP of your PC in the network. In Linux/OSX you can simply get it by running this command on your shell
awk '/inet / && $2 != "<IP_ADDRESS>"{print $2}' <(ifconfig)
It will probably output something like
<IP_ADDRESS>
. Your complete OpenVidu public url would then behttps://<IP_ADDRESS>:4443/
When you have your OpenVidu public url, you must set it in OPENVIDU_SERVER_URL
variable in the app and in the openvidu.publicurl
parameter used to run openvidu-server (see next point)
6) openvidu-server and Kurento Media Server must be up and running in your development machine. The easiest way is running this Docker container which wraps both of them (you will need Docker CE)
docker run -p 4443:4443 --rm -e openvidu.secret=MY_SECRET -e openvidu.publicurl=YOUR_OPENVIDU_PUBLIC_URL openvidu/openvidu-server-kms:2.12.0
Remember changing
openvidu.publicurl
parameter to the actual value. In this example that would be:-e openvidu.publicurl=https://<IP_ADDRESS>:4443/
7) Connect the device to the PC. You must enable USB debugging and give permissions (check out last section here in Ionic docs)
8) Run the tutorial. The app will be automatically launched in your Android device
# In openvidu-tutorials/openvidu-ionic
ionic cordova run android
In an iOS device with native app
To deploy the iOS app you will need first to follow this guide to properly configure your development environment. Then, it is crucial to have an OpenVidu Server properly deployed with a valid certificate.
No iPhone or iPad will allow connections to a non-secure OpenVidu Server from within a native application. To facilitate first steps with OpenVidu and Ionic on iOS devices, if no custom url is defined here in the app then our demos OpenVidu Server will be used. Note: this is a publicly accessible OpenVidu Server. Anyone could access your sessions. Use it only for an initial test and under your own responsibility
After we have completed all the steps of the Ionic guide and performed steps 1), 2) and 3) stated above, we must continue with the following commands:
4) Add ios platform
# In openvidu-tutorials/openvidu-ionic
ionic cordova platform add ios
5) Run the tutorial. The app will be automatically launched in your iOS device. First execution you'll need to trust your developer account in your device under Settings -> General -> Device management -> your_apple_developer_account
# In openvidu-tutorials/openvidu-ionic
ionic cordova run ios
You will need to sign your application in Xcode (opening folder openvidu-ionic/platforms/ios) with your developer team to avoid any errors. From Apple official documentation:
Understanding the code
This is an Ionic project generated with ionic-cli tool, and therefore you will see lots of configuration files and other stuff that doesn't really matter to us. We will focus on the following files under src/app/
folder:
app.component.ts
: defines AppComponent, main component of the app. It contains the functionalities for joining a video-call and for handling the video-calls themselves.app.component.html
: HTML for AppComponent.app.component.css
: CSS for AppComponent.user-video.component.ts
: defines UserVideoComponent, used to display every user video. It contains one OpenViduVideoComponent, the name of the user and also handles a click event to update the view of AppComponent.ov-video.component.ts
: defines OpenViduVideoComponent, which wraps the final HTML<video>
that finally displays the media stream.
Let's see first how app.component.ts
uses NPM package openvidu-browser
:
We import the necessary objects from openvidu-browser
:
import { OpenVidu, Publisher, Session, StreamEvent, StreamManager, Subscriber } from 'openvidu-browser';
app.component.ts
declares the following properties:
// OpenVidu objects
OV: OpenVidu;
session: Session;
publisher: StreamManager; // Local
subscribers: StreamManager[] = []; // Remotes
// Join form
mySessionId: string;
myUserName: string;
OpenVidu
object will allow us to get a Session
object, which is declared just after it. publisher
StreamManager object will be our own local webcam stream and subscribers
StreamManager array will store the active streams of other users in the video-call. Finally, mySessionId
and myUserName
params simply represent the video-call and your participant's nickname, as you will see in a moment.
Whenever a user clicks on the join button defined in app.component.html
, joinSession()
method is called:
We first get an OpenVidu object and initialize a Session object with it.
// --- 1) Get an OpenVidu object ---
this.OV = new OpenVidu();
// --- 2) Init a session ---
this.session = this.OV.initSession();
Then we subscribe to the Session events that interest us.
// --- 3) Specify the actions when events take place in the session ---
// On every new Stream received...
this.session.on('streamCreated', (event: StreamEvent) => {
// Subscribe to the Stream to receive it. Second parameter is undefined
// so OpenVidu doesn't create an HTML video on its own
const subscriber: Subscriber = this.session.subscribe(event.stream, undefined);
this.subscribers.push(subscriber);
});
// On every Stream destroyed...
this.session.on('streamDestroyed', (event: StreamEvent) => {
// Remove the stream from 'subscribers' array
this.deleteSubscriber(event.stream.streamManager);
});
As we are using Ionic and Angular framework, a good approach for managing the remote media streams is to loop across an array of them, feeding a common component with each Subscriber
object and let it manage its video. This component will be our UserVideoComponent. To do this, we need to store each new Subscriber we received in array subscribers
(of its parent class StreamManager
), and we must remove from it every deleted subscriber whenever it is necessary. To achieve this, we use the following events:
-
streamCreated
: for each new Stream received by the Session object, we subscribe to it and store the returned Subscriber object in oursubscribers
array. Methodsession.subscribe
has undefined as second parameter so OpenVidu doesn't insert an HTML video element in the DOM on its own (we will use the video element contained in one of our child components). HTML template of AppComponent loops throughsubscribers
array with anngFor
directive, declaring a UserVideoComponent for each subscriber. We feed them not really asSubscriber
objects, but rather as their parent classStreamManager
. This way we can reuse UserVideoComponent to also display ourPublisher
object (that also inherits from class StreamManager).<ion-col size="6" *ngFor="let sub of subscribers">
 <user-video [streamManager]="sub"></user-video>
 </ion-col>
-
streamDestroyed
: for each Stream that has been destroyed from the Session object (which means a user has left the video-call), we remove the associated Subscriber fromsubscribers
array, so Angular will automatically delete the required UserVideoComponent from HTML. Each Stream object has a propertystreamManager
that indicates which Subscriber or Publisher owns it (in the same way, each StreamManager object also has a reference to its Stream).
Get a token from OpenVidu Server
// --- 4) Connect to the session with a valid user token ---
// 'getToken' method is simulating what your server-side should do.
// 'token' parameter should be retrieved and returned by your own backend
this.getToken().then((token) => {
// See next point to see how to connect to the session using 'token'
});
Now we need a token from OpenVidu Server. In a production environment we would perform this operations in our application backend, by making use of the REST API, OpenVidu Java Client or OpenVidu Node Client. Here we have implemented the POST requests to OpenVidu Server in a method getToken()
that returns a Promise with the token, using @angular/http
library. Without going into too much detail, this method performs two POST requests to OpenVidu Server, passing OpenVidu Server secret to authenticate them:
- First request performs a POST to
/api/sessions
(we send acustomSessionId
field to name the session with ourmySessionId
value retrieved from HTML input) - Second request performs a POST to
/api/tokens
(we send asession
field to assign the token to this same session)
You can inspect this method in detail in the GitHub repo.
Connect to the session:
// --- 4) Connect to the session with a valid user token ---
// 'getToken' method is simulating what your server-side should do.
// 'token' parameter should be retrieved and returned by your own backend
this.getToken().then((token) => {
// First param is the token got from OpenVidu Server. Second param will be used by every user on event
// 'streamCreated' (property Stream.connection.data), and will be appended to DOM as the user's nickname
this.session
.connect(token, { clientData: this.myUserName })
.then(() => {
// --- 5) Requesting and Checking Android Permissions
if (this.platform.is('cordova')) {
// Ionic platform
if (this.platform.is('android')) {
console.log('Android platform');
this.checkAndroidPermissions()
.then(() => this.initPublisher())
.catch(err => console.error(err));
} else if (this.platform.is('ios')) {
console.log('iOS platform');
this.initPublisher();
}
} else {
this.initPublisher();
}
})
.catch(error => {
console.log('There was an error connecting to the session:', error.code, error.message);
});
});
In session.connect
method first param is the recently retrieved user token. Second param is the value every user will receive in event.stream.connection.data
property on streamCreated
event (this value will be used by UserVideoComponent to append the user's nickname to the his video). So in this case it is an object with a property "clientData" with value "myUserName", which is binded from HTML input <ion-input [(ngModel)]="myUserName"></ion-input>
(filled by the user).
If the method succeeds and is running under a Cordova and Android platform, we will call and receive a promise from checkAndroidPermissions()
method. This method requests and checks the Android permissions that our app currently has in the device. Once the promise has been resolved, the initPublisher()
method will be called. For iOS and web platforms, permissions will be handled automatically when camera and microphone access are requested. No need for extra steps in these cases, so we directly initialize our Publisher object.
We do further talk about Android permissions under section Android specific requirements.
 If undefined default microphone
videoSource: undefined, // The source of video. If undefined default webcam
publishAudio: true, // Whether you want to start publishing with your audio unmuted or not
publishVideo: true, // Whether you want to start publishing with your video enabled or not
resolution: '640x480', // The resolution of your video
frameRate: 30, // The frame rate of your video
insertMode: 'APPEND', // How the video is inserted in the target element 'video-container'
mirror: true // Whether to mirror your local video or not
});
// --- 6) Publish your stream ---
this.session.publish(publisher).then(() => {
// Store our Publisher
this.publisher = publisher;
});
}
We now proceed to publish our webcam to the session. To do so we get a Publisher
object with the desired properties and publish it to the Session through Session.publish()
method. The rest of users will receive our Stream object and will execute their streamCreated
event.
In the callback of session.publish
we store the Publisher object under this.publisher
variable, which is also of parent class StreamManager
. This way our webcam will be appended along all remote subscribers, in exactly the same way they are shown (remember all of them are displayed by UserVideoComponent):

<user-video [streamManager]="publisher"></user-video>

Last point worth considering is the implementation of UserVideoComponent and OpenViduVideoComponent. Each UserVideoComponent manages one StreamManager object (a Subscriber or a Publisher) that will be fed to its child component OpenViduVideoComponent . Its main task is not managing the final video player (that is OpenViduVideoComponent responsibility), but displaying custom information for each one of them (the user's nickname in this case):

<ov-video [streamManager]="streamManager"></ov-video>

{% raw %}{{getNicknameTag()}}{% endraw %}

export class UserVideoComponent {
@Input()
streamManager: StreamManager;
getNicknameTag() {
try {
return JSON.parse(this.streamManager.stream.connection.data).clientData;
} catch (err) {
console.error('ClientData is not JSON formatted');
}
}
}
OpenViduVideoComponent html template is just the video element:
<video #videoElement></video>
And the responsibility of the component's logic is letting OpenVidu know the exact HTML DOM video player associated to its StreamManger. To do so we use method StreamManager.addVideoElement
, which receives a native HTML video element. The way we implement this is Angular dependant: we get the video element with @ViewChild tag and we call the method once after the view has initialized (ngAfterViewInit) and once every time the StreamManager input changes (set method with @Input tag)
export class OpenViduVideoComponent implements AfterViewInit, OnDestroy {
@ViewChild('videoElement') elementRef: ElementRef;
_streamManager: StreamManager;
ngAfterViewInit() {
this._streamManager.addVideoElement(this.elementRef.nativeElement);
}
@Input()
set streamManager(streamManager: StreamManager) {
this._streamManager = streamManager;
}
}
To actually see the real implementation of this class, check out iOS specific requirements section, as most of its code is just adjustments to make it work on iOS devices.
Leaving the session
Whenever we want a user to leave the session, we just need to call session.disconnect
method in app.component.ts
:
leaveSession() {
// --- 7) Leave the session by calling 'disconnect' method over the Session object ---
if (this.session) {
this.session.disconnect();
}
// Empty all properties...
this.subscribers = [];
delete this.publisher;
delete this.session;
delete this.OV;
this.generateParticipantInfo();
}
Android specific requirements
Android apps need to actively ask for permissions in the code to access camera and microphone. By following steps below we have been able to properly set up the permissions your Ionic app will need to work along OpenVidu.
These configurations are already included in this openvidu-ionic project, so if you start from here no further configurations are needed. Otherwise, if you want to start a new project with Ionic and OpenVidu, you should follow these simple steps:
1) Install Cordova AndroidPermissions plugin
ionic cordova plugin add cordova-plugin-android-permissions
npm install --save @ionic-native/android-permissions@latest
2) Add this plugin to your app's module (example)
import { AndroidPermissions } from '@ionic-native/android-permissions/ngx';
@NgModule({
providers: [
// others providers
AndroidPermissions,
],
)}
3) Add this plugin to your component and use it (example)
import { AndroidPermissions } from '@ionic-native/android-permissions/ngx';
export class AppComponent {
constructor(private androidPermissions: AndroidPermissions)
}
We are finally ready to request permissions to our device. To do so, we need to use requestPermissions()
and checkPermission()
methods offered by the plugin.
It is important to call these methods under platform.ready()
, just because it will tell us whenever the platform is ready and the native functionality can be actually called.
You can inspect this method in detail in the GitHub repo.
You should also declare an array of permissions to use as parameter of requestPermissions()
ANDROID_PERMISSIONS = [
this.androidPermissions.PERMISSION.CAMERA,
this.androidPermissions.PERMISSION.RECORD_AUDIO,
this.androidPermissions.PERMISSION.MODIFY_AUDIO_SETTINGS
];
4) Last but not least, in root
directory you can find file config.xml
. These permissions must be included inside of <platform name="android">
(example)
<config-file mode="merge" parent="/*" target="AndroidManifest.xml">
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
</config-file>
Moreover, you must add xmlns:android="http://schemas.android.com/apk/res/android"
to the end of the opening widget
node.
<widget id="io.openvidu.sampleios" version="2.6.0" xmlns="http://www.w3.org/ns/widgets" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:cdv="http://cordova.apache.org/ns/1.0">
...
</widget>
Once these changes are added to our code, the app will be ready to run on our Android phone.
iOS specific requirements
Unfortunately, Ionic's WebView layer on iOS devices (WKWebview) does not support WebRTC (blame Apple and its politics). So the only way to make WebRTC work on iOS Ionic platform is by using a plugin. The result works just fine, but a little work is needed to make your Ionic app compatible with iOS. OpenVidu makes use of cordova-plugin-iosrtc to achieve this.
This openvidu-ionic project is ready to work on iOS devices, but we will go through every aspect related to iOS compatibility in case your already have an Ionic application in which you want to integrate OpenVidu.
Configuration requirements
1) Install cordova-plugin-iosrtc and xcode
ionic cordova plugin add cordova-plugin-iosrtc
npm install xcode --save
2) Add the following files to your Ionic app. Consider relative paths under root folder, the one containing your package.json
file
hooks/iosrtc-swift-support.js
(download file)src/assets/libs/adapter-4.0.1.js
(download file)
3) Add the following lines to config.xml
file under ios platform:
<platform name="ios">
...
<hook src="hooks/iosrtc-swift-support.js" type="after_platform_add" />
<config-file parent="NSCameraUsageDescription" target="*-Info.plist">
<string>OpenVidu needs access to your camera</string>
</config-file>
<config-file parent="NSContactsUsageDescription" target="*-Info.plist">
<string>OpenVidu needs access to contacts</string>
</config-file>
<config-file parent="NSMicrophoneUsageDescription" target="*-Info.plist">
<string>OpenVidu needs access to your microphone</string>
</config-file>
...
</platform>
4) Add this optional dependency to your package.json
. Don't forget to run npm install
after that to actually install it
"optionalDependencies": {
"ios-deploy": "1.9.4"
}
5) Finally remove and reinstall ios platform
ionic cordova platform remove ios
ionic cordova platform add ios
Code requirements
1) Add to global styles the following rule. For example, in openvidu-ionic app it is done right here. This will allow us to put other HTML elements above the video elements.
One limitation for iOS is the background color of your app: we need it to be transparent to allow plugin videos to be visible behind the Ionic app. So you have 2 choices: you can have one video or many videos to fill all available space in the device's screen (which is in fact the most common layout in video conferencing apps for mobile phones) or you'll have to go with a white background if videos leave visible space in your app's layout.
:root {
--ion-background-color: transparent;
}
2) Initialize cordova-plugin-iosrtc. The easiest way is doing so in app.component.ts
constructor, using Platform library to identify iOS Ionic context. It is very important to initialize the plugin only for iOS devices running a cordova app.
// Import declarations...
declare var cordova;
...
constructor(private platform: Platform) {
if (this.platform.is('ios') && this.platform.is('cordova')) {
cordova.plugins.iosrtc.registerGlobals();
// load adapter.js (version 4.0.1)
const script2 = document.createElement('script');
script2.type = 'text/javascript';
script2.src = 'assets/libs/adapter-4.0.1.js';
script2.async = false;
document.head.appendChild(script2);
}
}
3) Every <video>
element should be managed carefully on cordova iOS. The plugin inserts iOS native video elements whenever it finds an HTMLVideoElement, respecting certain CSS rules. In general, we recommend that at the moment you have video metadata, you apply programmatically the following styles: object-fit
, z-index
, width
and height
.
In openvidu-ionic app this is done as follows in file ov-video.component.ts
We check if the platform is iOS with the following method:
private isIos(): boolean {
return this.platform.is('ios') && this.platform.is('cordova');
}
We call the following updateVideoView
method inside ngAfterViewInit
, so our video elementRef is properly defined:
private updateVideoView() {
this._streamManager.addVideoElement(this.elementRef.nativeElement);
if (this.isIos()) {
(<HTMLVideoElement>this.elementRef.nativeElement).onloadedmetadata = () => {
this.applyIosIonicVideoAttributes();
};
}
}
We call applyIosIonicVideoAttributes
method only after the video element has triggered 'loadedmetadata' event. This way we know that the video has certain computed width and we can calculate the exact height it must have according to its aspect ratio, got from Stream.videoDimensions
. This is necessary because the plugin needs an exact width and height in order to paint the native iOS video. In this case, every video will have the full width of its container and the height will be obtained from the final computed width and the aspect ratio got from metadata Stream.videoDimensions
.
private applyIosIonicVideoAttributes() {
const ratio = this._streamManager.stream.videoDimensions.height / this._streamManager.stream.videoDimensions.width;
this.elementRef.nativeElement.style.width = '100% !important';
this.elementRef.nativeElement.style.objectFit = 'fill';
this.elementRef.nativeElement.style.zIndex = '-1';
const computedWidth = this.elementRef.nativeElement.offsetWidth;
this.elementRef.nativeElement.style.height = computedWidth * ratio + 'px';
if (!this._streamManager.remote) {
// It is a Publisher video. Custom iosrtc plugin mirror video
this.elementRef.nativeElement.style.transform = 'scaleX(-1)';
}
cordova.plugins.iosrtc.refreshVideos();
}
Finally we also need to listen to dynamic changes on the videos to refresh the plugin view. This includes 3 things:
- Listen to
streamPropertyChanged
event of StreamManager, and ifvideoDimensions
changes update the video element accordingly. In openvidu-ionic app we do so when setting StreamManager property inov-video.component.ts
@Input()
set streamManager(streamManager: StreamManager) {
this._streamManager = streamManager;
if (this.isIos()) {
this._streamManager.on('streamPropertyChanged', event => {
if ((<StreamPropertyChangedEvent>event).changedProperty === 'videoDimensions') {
this.applyIosIonicVideoAttributes();
}
});
}
}
- Only if your app supports orientation changes: you will have to listen to
orientationchange
window event for remote streams to update their video dimensions and adjust them to the new window ratio. openvidu-ionic app does this in methodngAfterViewInit
inov-video.component.ts
. The timeout gives the video some time to refresh its properties before updating its view.
ngAfterViewInit() {
if (this.isIos() && this._streamManager.remote) {
this.rotationFunction = () => {
// Give the remote video some time to update its dimensions when rotating the device
setTimeout(() => {
this.applyIosIonicVideoAttributes();
}, 250);
};
(<any>window).addEventListener('orientationchange', this.rotationFunction);
}
this.updateVideoView();
}
- Only if your app supports scrolling: if the view where your videos are gonna be displayed supports scrolling, then you will have to do the following: listen to scroll events in the required
<ion-content>
element and callcordova.plugin.iosrtc.refreshVideos()
method when triggered. If you don't do this, videos will stay fixed in their position, ignoring the scroll behavior.
<ion-content [scrollEvents]="true" (ionScroll)="refreshVideos()">
refreshVideos() {
if (this.platform.is('ios') && this.platform.is('cordova')) {
cordova.plugins.iosrtc.refreshVideos();
}
}


Supported methods
Fetches movies that have been added
curl http://localhost:5000/movies
Adds new movies
curl -H "Content-Type: application/json" -d '{"name":"Terminator 2","year":1997}' http://localhost:5000/movies


client module¶
-
client.
add_new_user
(username)¶ Add new user to server
This function takes a dictionary with a user’s information and registers their data to the server.
- Parameters
username (str) – user’s identifier
- Returns
none
-
client.
check_file
(file, direction)¶ Validate a user input
This function ensures that the user enters a valid file list where the list contains a non-empty filename, b64 image, and a valid processing steps array.
- Parameters
direction (str) – either “upload” or download”
file (list) – UPLOAD a file is a list where each item in the list
a file's filename, b64 image, and an array of (is) –
processing steps should be done (what) –
- Example: file_list = [file1, file2]
- file1 = [“image1”, b64_image1,
[False, False, True, True, False]]
- file2 = [“image1”, b64_image1,
[True, True, False, False, True]]
Each processing steps array has a True if that process is desired and False if not. In this example, image1 desires to perform contrast stretching and log compression. Likewise, image2 desires the original and to perform histogram equalization and reverse video.
file – DOWNLOAD a file is a list where each item in the
is a file's filename, image download type, and (list) –
array of what processing steps should be downloaded (an) –
- Example: file_list = [file1, file2]
- file1 = [“image1”, “.jpg”,
[False, False, True, True, False]]
- file2 = [“image1”, “.tiff”,
[False, True, False, False, True]]
Each processing steps array has a True if that process is desired and False if not. In this example, image1 desires to perform contrast stretching and log compression. Likewise, image2 desires the original and to perform histogram equalization and reverse video.
- Returns
status message and status code
- Return type
status (dict)
-
client.
delete_image
(username, filename)¶ Delete images under filename from the database
This function takes a username and filename and searches for the original and processed images associated with them in the MongoDB database. If found, it deletes the images and the associated metadata.
- Parameters
username (str) – user’s identifier
filename (str) – file’s identifier
- Returns
none
-
client.
delete_user
(username)¶ Delete user from the database
This function takes a username and searches for it in the MongoDB database. If found, it deletes the user.
- Parameters
username (str) – user’s identifier
- Returns
none
-
client.
download_image
(username, filename, path, proc_steps, type_ext='.png')¶ Download an image from the database
This function takes an image filename, finds the image in the database then displays it.
- Parameters
username (str) – user identifier
filename (str) – name of file
path (str) – path to where image should be downloaded If path is ‘none’, image isn’t saved to a location.
proc_steps (list) – list of Booleans containing requested
steps such as [False, True, False, False, True] (processing) –
"Original" ,"Histogram Equalization", "Contrast (for) –
"Log Compression", and "Reverse Video" (Stretching",) –
type_ext (str) – image type including “.jpg”, “.tiff”,
".png" where "png" is default (and) –
- Returns
dictionary containing image information status (dict): status code and status message
- Return type
img_info (dict)
-
client.
download_images
(username, file_list, zip_path)¶ Downloads multiple images from the database
This function takes a list of images and downloads them from the database. If the list is larger than one image, the images are put into a zip_path
- Parameters
username (str) – user identifier
file_list (list) – list of files where each item in the list
a list of the file's filename, image type, and an array of (is) –
processing steps should be done (what) –
- Example: file_list = [file1, file2, file3]
- file1 = [“image1”, “.jpg”,
[False, False, True, True, False]]
- file2 = [“image2”, “.png”,
[False, True, False, False, True]]
- file3 = [“image3”, “.tiff”,
[True, False, False, False, False]]
Each processing steps array has a 1 if that process is desired and 0 if not. In this example, image1 desires to perform contrast stretching and log compression. Likewise, image2 desired to perform histogram equalization and reverse video. Image3 only desires the original image.
- Returns
dictionary of status codes and and messages for each file being downloaded files_img_infos (list): list of img_info for each file being downloaded
- Return type
files_status (dict of two lists)
-
client.
proc_string
(proc_steps)¶ Creates processign step string from the processing steps Boolean array.
- Parameters
proc_steps (list) – list of 5 Boolean terms for desired processing
steps –
- Returns
string of 5 1’s or 0’s corresponding to the True or False in the Boolean list
- Return type
proc_ext (str)
-
client.
process_image
(username, filename, b64_string, proc_steps)¶ Process image
This function takes an image and sends it to the server as a string. The server then processes the image with the user- selected processing step.
- Parameters
username (str) – user identifier
filename (str) – name of file
b64_string (str) – image string to process
proc_steps (list) – list of Booleans containing requested
steps such as [False, True, False, False, True] (processing) –
"Original" ,"Histogram Equalization", "Contrast (for) –
"Log Compression", and "Reverse Video" (Stretching",) –
- Returns
status message and status code
- Return type
status (dict)
-
client.
upload_image
(username, filename, b64_string)¶ Upload an image to the database
This function takes an image filename, reads in the image and converts it into a string so it can be sent to the server.
- Parameters
username (str) – user identifier
filename (str) – name of file
b64_string (str) – image string to upload
- Returns
status message and status code
- Return type
status (dict)
-
client.
upload_images
(username, file_list)¶ Uploads multiple images to the database
This function takes a list of images and uploads them one by one to the database.
- Parameters
username (str) – user identifier
file_list (list) – list of files where each item in the list
a list of the file's filename, b64 image, and an array of (is) –
processing steps should be done (what) –
- Example: file_list = [file1, file2]
- file1 = [“image1”, b64_image1,
[False, False, True, True, False]]
- file2 = [“image1”, b64_image1,
[False, True, False, False, True]]
Each processing steps array has a True if that process is desired and False if not. In this example, image1 desires to perform contrast stretching and log compression. Likewise, image2 desired to perform histogram equalization and reverse video.
- Returns
dictionary of a list of status codes and list of status messages for each file being uploaded
- Return type
files_status (dict of two lists)
-
client.
zipdir
(path, ziph)¶ Function for putting everything under an existing folder into a zip folder.
This function puts all the files in an existing folder into a zipped folder and then removes it from the existing folder.
- Parameters
path (str) – path to folder desired to be zipped
ziph – zipfile handle
- Returns
success (bool)


A Sample FORM using POST
Item Number:
Quantity:
Price Each:
First Name:
Last Name:
Middle Initial:
Shipping Address:
Credit Card:
Visa
Master Card
American Express
Discover
Java SmartCard
Credit Card Number:
Repeat Credit Card Number:


This company is so great. The reason we do the things we do is because we do them, and we do them great. There is no doubt as to the excellence held within.
Without people like this working so hard, it is not likely that others on the internet would be able to succeed. In fact, there is something about people who
are truly capable of working this hard. It is so amazing that the foundation of the internet completely depended on their successes. With our success, people
in the future are much more likely to become successful if they try.
Because true excellence is not to be taken for granted, it is only possible that the best of the best make it past the most complicated and challenging challenges in
the world through hard work, perseverence, and intelligence, only to be risen above all as the sun rises unquestionably every single day of the week, month, and of course, year.


This is the first panel of the basic tab example. You can place all sorts of content here including a grid.
This is the first panel of the basic tab example. You can place all sorts of content here including a grid.
This is the second panel of the basic tab example. This is the second panel of the basic tab example.
This is the third panel of the basic tab example. This is the third panel of the basic tab example.


+++ title = "Monito in Pilcopata: the video" slug = "monito-in-pilcopata-the-video" date = 2007-05-29T11:00:00+10:00 tags = ["video", "animals", "cute", "cheeky"] locations = ["peru/pilcopata"] draft = false summary = """
We had lots of fun with the monito that we met this morning in Pilcopata. And he had lots of fun with us, too. Little bugger couldn't help but show off his acrobatic skills, by swinging through the branches of his favourite tree. Luckily, we got him on video. Check it out.
""" +++We had lots of fun with the monito that we met this morning in Pilcopata. And he had lots of fun with us, too. Little bugger couldn't help but show off his acrobatic skills, by swinging through the branches of his favourite tree. Luckily, we got him on video. Check it out.


>
Join us in creating a future where every pet is safe, respected and loved.
It's easy to find a dog or cat who's right for you here. Simply click the search button on the search section and start your search.
Once you find a pet, click "learn more about me " to book an interview appointment with the shelter.
The shelter will walk you through their adoption process. Prepare your home for the arrival of your dog or cat to help them adjust to their new family.


nursery
LKG
UKG
1st
2nd
3rd
4th
5th
6th
7th
8th
9th
10th
11th
12th
nursery
LKG
UKG
1st
2nd
3rd
4th
5th
6th
7th
8th
9th
10th
11th
12th
Submit


Trains 'n Stuff!
Train schedules that are saved within Firebase!!!
Train Schedule
Train
Destination
Frequency (min)
Next Arrival
Minutes Away
1
Mark
Otto
@mdo
2
Jacob
Thornton
@fat
3
Larry
the Bird
@twitter


{% extends 'website/base.html' %} {% load static %} {% block title %}Elections - ECSS{% endblock %} {% block content %}
Only ECSS members can support this nomination. If you think you should be able to, please contact us.


Job Application Form
Full Name :
Birth Date :
Month
January
February
March
April
May
June
July
August
September
October
November
December
Day
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Year
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
Gender :
Male
Female
Email Address :
Mobile Number :
Social Links :
LinkedIn
Website
Github
List of Skills you have?
html5
CSS3
JavaScript
Bootstrap
Decision Making
Critical Thinking
Leadership
Positive Attitude
What is your current employment status?
Employed
Self-Employed
Unemployed
Student
What position are you applying for?
Open this select menu
Marketing Specialist
Sales Manager
Product Lead
Software Developer
Application Developer
Web Developer
How did you hear about us?
Open this select menu
LinkedIn
Event
Social Media
Company Website
Family / Friend
Upload Resume :
Reference / Comments / Questions :
I certify that my answers are true and complete to the best of my knowledge. If this application leads to employment, I understand that false or misleading information in my application or interview may result in my employment being terminated.
Submit


---
title: Tabular Augmentations
keywords: fastai
sidebar: home_sidebar
summary: "CutMix and MixUp based on the SAINT paper"
description: "CutMix and MixUp based on the SAINT paper"
nb_path: "01_augment.ipynb"
---
{% raw %}
The history saving thread hit an unexpected error (DatabaseError('database disk image is malformed')).History will not be written to the database.
/mnt/d/lib/python3.7/site-packages/torch/cuda/__init__.py:52: UserWarning: CUDA initialization: Found no NVIDIA driver on your system. Please check that you have an NVIDIA GPU and installed a driver from http://www.nvidia.com/Download/index.aspx (Triggered internally at /pytorch/c10/cuda/CUDAFunctions.cpp:100.)
return torch._C._cuda_getDeviceCount() > 0


--- layout: documentation title: ActionPertinentObjectPropertyType ---
The ActionPertinentObjectPropertyType identifies one of the Properties of an Object that specifically pertinent to an Action.
| Field Name | Type | Description |
|---|---|---|
| @nameoptional | string |
The name field specifies the field name for the pertinent Object Property. |
| @xpathoptional | string |
The xpath field specifies the XPath 1.0 expression identifying the pertinent property within the Properties schema for this object type. |


Origins of Software Engineering
When the first digital computers appeared in the early 1940s, the instructions to make them operate were wired into the machine. Practitioners quickly realized that this design was not flexible and came up with the "stored program architecture" or von Neumann architecture. Thus the division between "hardware" and "software" began with abstraction being used to deal with the complexity of computing.
Programming languages started to appear in the early 1950s[12] and this was also another major step in abstraction. Major languages such as Fortran, ALGOL, and COBOL were released in the late 1950s to deal with scientific, algorithmic, and business problems respectively. David Parnas introduced the key concept of modularity and information hiding in 1972 to help programmers deal with the ever-increasing complexity of software systems.
The origins of the term "software engineering" have been attributed to different sources. The term "software engineering" appeared in a list of services offered by companies in the June 1965 issue of COMPUTERS and AUTOMATION and was used more formally in the August 1966 issue of Communications of the ACM (Volume 9, number 8) “letter to the ACM membership” by the ACM President Anthony A. Oettinger; it is also commonly associated with the title of a seminal NATO conference in 1968 by Professor F.L. Bauer, the first conference on software engineering. At the time there was perceived to be a "software crisis".
In 1984, the Software Engineering Institute (SEI) was established as a federally funded research and development center headquartered on the campus of Carnegie Mellon University in Pittsburgh, Pennsylvania, United States. Watts Humphrey founded the SEI Software Process Program, aimed at understanding and managing the software engineering process. The Process Maturity Levels introduced would become the Capability Maturity Model Integration for Development(CMMi-DEV), which has defined how the US Government evaluates the abilities of a software development team. Modern, generally accepted best-practices for software engineering have been collected by the ISO/IEC JTC 1/SC 7 subcommittee and published as the Software Engineering Body of Knowledge (SWEBOK).


yesterday |
for last week |
for last month |
since 1 Jan |
|
|---|---|---|---|---|
| Completed jobs per day | ||||
| Started jobs per day | ||||
| Total started jobs | ||||
| Total users |
yesterday |
for last week |
for last month |
since 1 Jan |
||
|---|---|---|---|---|---|
| Completed jobs | Total completed jobs count | ||||
| Task scheduling efficiency % | Ratio of maximum possible corehours to used corehours for interval | ||||
| Average CPU load % | Average CPU User load for completed jobs | ||||
| Average wait time(hours) | Average wait time in queue | ||||
| Appropriate for SC | LA approximately equals to number of cores and high IB usage | ||||
| Not communicative | Multinode task with low IB usage | ||||
| Serial | 1-core jobs | ||||
| Single | 1-node jobs | ||||
| Suspicious | LA < 0.9 and CPU user load below threshold |


Actually, the False Lead kind of led to something in the end. When pg8000 established a connection, messages end in either a READY_FOR_QUERY or a ERROR_RESPONSE, whereas in the query phase, messages only ever end with a READY_FOR_QUERY. So I've separated out the two bits of code, and each is simpler than the combined one. Hopefully, this will help in tracking down the long-standing bugs (or even solve them!).
In other news, there's been a request that pg8000 be packaged in the .whl format on the cheese shop. I did a bit of reading, and it seems like a really good idea. So that's my next task...


Feature Films
Short Films
theatrical shorts
disney +
sparkshorts
cars toons
toy story toons
home entertainment
Technology
renderman
graphic technologies
Carrers
careers at pixar
internships
life at pixar
events
Extras
pixar in concert
art exhibition
pixar in a box
the science behind pixar
About
contact us
leadership
inclusion and outreach
coming soon
our story
company faq's
Careers at Pixar
Pixar Popcorn
Inclusion and Outreach


- What is the difference between an ID selector and CLASS?
- Is there anything that CAN'T be replaced by Style Sheets?
- What is the use of CSS sprites?
Use a class when you want to consistently style multiple elements throughout the page/site. Classes are useful when you have, or possibly will have in the future, more than one element that shares the same style. An example may be a div of "comments" or a certain list style to use for related links.
Additionally, a given element can have more than one class associated with it, while an element can only have one id. For example, you can give a div two classes whose styles will both take effect.
Furthermore, note that classes are often used to define behavioral styles in addition to visual ones. For example, the jQuery form validator plugin heavily uses classes to define the validation behavior of elements (e.g. required or not, or defining the type of input format)
Examples of class names are: tag, comment, toolbar-button, warning-message, or email.
Use the ID when you have a single element on the page that will take the style. Remember that IDs must be unique. In your case this may be the correct option, as there presumably will only be one "main" div on the page. Examples of ids are: main-content, header, footer, or left-sidebar.
Controlling of the flow of the page cann't be replaced by style sheets. Also one cann't have specific style for particular DIV/button based on user action. It needs help of javascript.
An image sprite is a collection of images put into a single image. A web page with many images can take a long time to load and generates multiple server requests. Using image sprites will reduce the number of server requests and save bandwidth.
Mouse over on below image to see different image. Both the images are in sprite image and displays on screen based on cordinates.


19 July 2002
Disease Outbreak Reported
As of 15 July, the Ministry of Health has reported a total of 217 cases including 2 deaths since the outbreak began on 17 June 2002, with the majority of cases in Bujumbura Rurale, particularly affecting Rushubi, Nyambuye, Gihosha, Gikungu. The main cause of the outbreak has been an inadequate supply of safe drinking water and use of polluted local water sources.
The Ministry of Health has established a technical committee to contain the outbreak. The United Nations Office for the Coordination of Humanitarian Affairs (OCHA), is working with the Ministry of Health and nongovenrmental organizations to coordinate the response. A treatment centre has been established by Médecins sans Frontières in Gihosa, water purification tablets have been distributed and a plan for the long-term decontamination of the Nyakabugu River has been developed.


Legislators
Legislators By State
| Party | Name | Chamber | District | State | |
|---|---|---|---|---|---|
| {{info.name}} | {{info.chamber}} | {{info.district}} | {{info.state}} |
Legislators By House
| Party | Name | Chamber | District | State | |
|---|---|---|---|---|---|
| {{info.name}} | {{info.chamber}} | {{info.district}} | {{info.state}} |
Legislators By Senate
| Party | Name | Chamber | District | |
|---|---|---|---|---|
| {{info.name}} | {{info.chamber}} | {{info.state}} |
Details
Bills
Active Bills
| Bill ID | Bill Type | Title | Chamber | Introduced On | Sponsor | |
|---|---|---|---|---|---|---|
| {{info.billid}} | {{info.billtype}} | {{info.title}} | {{info.chamber}} | {{info.intro}} | {{info.sponsor}} |
New Bills
| Bill ID | Bill Type | Title | Chamber | Introduced | Sponsor | |
|---|---|---|---|---|---|---|
| {{info.billid}} | {{info.billtype}} | {{info.title}} | {{info.chamber}} | {{info.intro}} | {{info.sponsor}} |
Details
Committees
House
| Chamber | Committee ID | Name | Parent Committee | Contact | Office | |
|---|---|---|---|---|---|---|
|
{{info.chamber}} |
{{info.committee_id}} | {{info.name}} | {{info.parent}} | {{info.phone}} | {{info.office}} |
Senate
| Chamber | Committee ID | Name | Parent Committee | |
|---|---|---|---|---|
|
{{info.chamber}} |
{{info.committee_id}} | {{info.name}} | {{info.parent}} |
Joint
| Chamber | Committee ID | Name | |
|---|---|---|---|
| {{info.chamber}} | {{info.committee_id}} | {{info.name}} |
Favorites
Favorite Legislators
| Image | Party | Name | Chamber | State | |||
|---|---|---|---|---|---|---|---|
| {{info.lastname}} , {{info.firstname}} | {{info.chamber}} | {{info.state}} | {{info.email}} |
Favorite Bills
| Bill ID | Bill Type | Title | Chamber | Introduced On | Sponsor | ||
|---|---|---|---|---|---|---|---|
| {{info.billId}} | {{info.type}} | {{info.title}} | {{info.chamber}} | {{info.intro}} | {{info.sponsor}} |
Favorite Committees
| Chamber | Committee ID | Name | Parent Committee | Sub Committee | |
|---|---|---|---|---|---|
|
{{info.chamber}} |
{{info.comId}} | {{info.name}} | {{info.parent}} | {{info.subCom}} |
Details


Snapchat's Time Machine lens lets you slide between young and old
And it won't require 'irrevocable access' to your data.
by Christine FisherEarlier this year, the FaceApp filter that made people look old and wrinkled in selfies went viral. Then we learned that the Russian-developed selfie-editing app was uploading users' photos to the cloud and that it required "full and irrevocable access to their personal photos and data." That temporarily killed the craze, but now, Snapchat is ready to introduce a new aging filter.
 Slide to the left, and you'll look younger. Slide to the right, and you'll watch yourself age. Time Machine is available beginning today, and it works with both front and rear facing cameras, so you can test the lens on friends and family, too.


CIS Events
2013 Distinguished Speaker Series
Mona Singh, Princeton
Data-driven approaches for uncovering and understanding biological networks
Thursday, April 24, 2013 at 2:00pm - 130 Sharp Laboratory
Refreshments in 102A Smith Hall at 1:30pm
Laboratory, University of Delaware, Newark, DE 19716, USA


| Package | Description |
|---|---|
| odata.msgraph.client.entity |
| Modifier and Type | Method and Description |
|---|---|
ManagedDevice |
ManagedDevice.Builder.build() |
ManagedDevice |
ManagedDevice.patch()
Submits only changed fields for update and returns an
immutable copy of
this with changed fields reset. |
ManagedDevice |
ManagedDevice.put()
Submits all fields for update and returns an immutable copy of
this
with changed fields reset (they were ignored anyway). |
ManagedDevice |
ManagedDevice.withActivationLockBypassCode(String activationLockBypassCode)
Returns an immutable copy of
this with just the activationLockBypassCode field changed. |
ManagedDevice |
ManagedDevice.withAndroidSecurityPatchLevel(String androidSecurityPatchLevel)
Returns an immutable copy of
this with just the androidSecurityPatchLevel field changed. |
ManagedDevice |
ManagedDevice.withAzureADDeviceId(String azureADDeviceId)
Returns an immutable copy of
this with just the azureADDeviceId
field changed. |
ManagedDevice |
ManagedDevice.withAzureADRegistered(Boolean azureADRegistered)
Returns an immutable copy of
this with just the azureADRegistered
field changed. |
ManagedDevice |
ManagedDevice.withComplianceGracePeriodExpirationDateTime(OffsetDateTime complianceGracePeriodExpirationDateTime)
Returns an immutable copy of
this with just the complianceGracePeriodExpirationDateTime field changed. |
ManagedDevice |
ManagedDevice.withComplianceState(ComplianceState complianceState)
Returns an immutable copy of
this with just the complianceState
field changed. |
ManagedDevice |
ManagedDevice.withConfigurationManagerClientEnabledFeatures(ConfigurationManagerClientEnabledFeatures configurationManagerClientEnabledFeatures)
Returns an immutable copy of
this with just the configurationManagerClientEnabledFeatures field changed. |
ManagedDevice |
ManagedDevice.withDeviceCategoryDisplayName(String deviceCategoryDisplayName)
Returns an immutable copy of
this with just the deviceCategoryDisplayName field changed. |
ManagedDevice |
ManagedDevice.withDeviceEnrollmentType(DeviceEnrollmentType deviceEnrollmentType)
Returns an immutable copy of
this with just the deviceEnrollmentType field changed. |
ManagedDevice |
ManagedDevice.withDeviceHealthAttestationState(DeviceHealthAttestationState deviceHealthAttestationState)
Returns an immutable copy of
this with just the deviceHealthAttestationState field changed. |
ManagedDevice |
ManagedDevice.withDeviceName(String deviceName)
Returns an immutable copy of
this with just the deviceName field
changed. |
ManagedDevice |
ManagedDevice.withDeviceRegistrationState(DeviceRegistrationState deviceRegistrationState)
Returns an immutable copy of
this with just the deviceRegistrationState field changed. |
ManagedDevice |
ManagedDevice.withEasActivated(Boolean easActivated)
Returns an immutable copy of
this with just the easActivated
field changed. |
ManagedDevice |
ManagedDevice.withEasActivationDateTime(OffsetDateTime easActivationDateTime)
Returns an immutable copy of
this with just the easActivationDateTime field changed. |
ManagedDevice |
ManagedDevice.withEasDeviceId(String easDeviceId)
Returns an immutable copy of
this with just the easDeviceId
field changed. |
ManagedDevice |
ManagedDevice.withEmailAddress(String emailAddress)
Returns an immutable copy of
this with just the emailAddress
field changed. |
ManagedDevice |
ManagedDevice.withEnrolledDateTime(OffsetDateTime enrolledDateTime)
Returns an immutable copy of
this with just the enrolledDateTime
field changed. |
ManagedDevice |
ManagedDevice.withExchangeAccessState(DeviceManagementExchangeAccessState exchangeAccessState)
Returns an immutable copy of
this with just the exchangeAccessState field changed. |
ManagedDevice |
ManagedDevice.withExchangeAccessStateReason(DeviceManagementExchangeAccessStateReason exchangeAccessStateReason)
Returns an immutable copy of
this with just the exchangeAccessStateReason field changed. |
ManagedDevice |
ManagedDevice.withExchangeLastSuccessfulSyncDateTime(OffsetDateTime exchangeLastSuccessfulSyncDateTime)
Returns an immutable copy of
this with just the exchangeLastSuccessfulSyncDateTime field changed. |
ManagedDevice |
ManagedDevice.withFreeStorageSpaceInBytes(Long freeStorageSpaceInBytes)
Returns an immutable copy of
this with just the freeStorageSpaceInBytes field changed. |
ManagedDevice |
ManagedDevice.withImei(String imei)
Returns an immutable copy of
this with just the imei field
changed. |
ManagedDevice |
ManagedDevice.withIsEncrypted(Boolean isEncrypted)
Returns an immutable copy of
this with just the isEncrypted
field changed. |
ManagedDevice |
ManagedDevice.withIsSupervised(Boolean isSupervised)
Returns an immutable copy of
this with just the isSupervised
field changed. |
ManagedDevice |
ManagedDevice.withJailBroken(String jailBroken)
Returns an immutable copy of
this with just the jailBroken field
changed. |
ManagedDevice |
ManagedDevice.withLastSyncDateTime(OffsetDateTime lastSyncDateTime)
Returns an immutable copy of
this with just the lastSyncDateTime
field changed. |
ManagedDevice |
ManagedDevice.withManagedDeviceName(String managedDeviceName)
Returns an immutable copy of
this with just the managedDeviceName
field changed. |
ManagedDevice |
ManagedDevice.withManagedDeviceOwnerType(ManagedDeviceOwnerType managedDeviceOwnerType)
Returns an immutable copy of
this with just the managedDeviceOwnerType field changed. |
ManagedDevice |
ManagedDevice.withManagementAgent(ManagementAgentType managementAgent)
Returns an immutable copy of
this with just the managementAgent
field changed. |
ManagedDevice |
ManagedDevice.withManufacturer(String manufacturer)
Returns an immutable copy of
this with just the manufacturer
field changed. |
ManagedDevice |
ManagedDevice.withMeid(String meid)
Returns an immutable copy of
this with just the meid field
changed. |
ManagedDevice |
ManagedDevice.withModel(String model)
Returns an immutable copy of
this with just the model field
changed. |
ManagedDevice |
ManagedDevice.withOperatingSystem(String operatingSystem)
Returns an immutable copy of
this with just the operatingSystem
field changed. |
ManagedDevice |
ManagedDevice.withOsVersion(String osVersion)
Returns an immutable copy of
this with just the osVersion field
changed. |
ManagedDevice |
ManagedDevice.withPartnerReportedThreatState(ManagedDevicePartnerReportedHealthState partnerReportedThreatState)
Returns an immutable copy of
this with just the partnerReportedThreatState field changed. |
ManagedDevice |
ManagedDevice.withPhoneNumber(String phoneNumber)
Returns an immutable copy of
this with just the phoneNumber
field changed. |
ManagedDevice |
ManagedDevice.withRemoteAssistanceSessionErrorDetails(String remoteAssistanceSessionErrorDetails)
Returns an immutable copy of
this with just the remoteAssistanceSessionErrorDetails field changed. |
ManagedDevice |
ManagedDevice.withRemoteAssistanceSessionUrl(String remoteAssistanceSessionUrl)
Returns an immutable copy of
this with just the remoteAssistanceSessionUrl field changed. |
ManagedDevice |
ManagedDevice.withSerialNumber(String serialNumber)
Returns an immutable copy of
this with just the serialNumber
field changed. |
ManagedDevice |
ManagedDevice.withSubscriberCarrier(String subscriberCarrier)
Returns an immutable copy of
this with just the subscriberCarrier
field changed. |
ManagedDevice |
ManagedDevice.withTotalStorageSpaceInBytes(Long totalStorageSpaceInBytes)
Returns an immutable copy of
this with just the totalStorageSpaceInBytes field changed. |
ManagedDevice |
ManagedDevice.withUserDisplayName(String userDisplayName)
Returns an immutable copy of
this with just the userDisplayName
field changed. |
ManagedDevice |
ManagedDevice.withUserId(String userId)
Returns an immutable copy of
this with just the userId field
changed. |
ManagedDevice |
ManagedDevice.withUserPrincipalName(String userPrincipalName)
Returns an immutable copy of
this with just the userPrincipalName
field changed. |
ManagedDevice |
ManagedDevice.withWiFiMacAddress(String wiFiMacAddress)
Returns an immutable copy of
this with just the wiFiMacAddress
field changed. |
Copyright © 2018–2020. All rights reserved.


--- title: "Navbar" date: 2021-04-29T16:00:58+02:00 draft: false main_title: "Tailwind navbar" subheading: "" seo_title: "Tailwind navbar component - examples & templates" description: Navbar for the latest Tailwind. A navigation bar is a menu fixed to the top of the page. Use it with dropdowns, text links, or buttons.


Trias Wallet is a secure bitcoin, ethereum and TRY wallet, based on Copay of Bitpay.
In addition to retaining some of its original excellent features, we redesigned it to meet the needs of our users, aiming to develop a simple, easy-to-use and secure wallet.
Note: This method should only be used for development purposes.
Clone the repo and open the directory:
git clone https://github.com/trias-lab/wallet.git
cd wallet
Ensure you have Node installed, then install and start Copay:
npm install
npm run apply:copay
npm run start
Visit localhost:8100
to view the app.
To run the tests, run:
npm run test
It's recommended that all final testing be done on a real device – both to assess performance and to enable features that are unavailable to the emulator (e.g. a device camera).
Follow the Cordova Android Platform Guide to set up your development environment.

When your developement enviroment is ready, run the start:ios
package script.
npm run apply:copay
npm run prepare:copay
npm run start:ios
Before building the release version for a platform, run the clean-all
command to delete any untracked files in your current working directory. (Be sure to stash any uncommited changes you've made.) This guarantees consistency across builds for the current state of this repository.
The final
commands build the production version of the app, and bundle it with the release version of the platform being built.
npm run clean-all
npm install
npm run apply:copay
npm run prepare:copay
npm run final:android
npm run clean-all
npm install
npm run apply:copay
npm run prepare:copay
npm run final:ios
We published the Front-end documentation of this project using Github Pages.
To enable external services, set the COPAY_EXTERNAL_SERVICES_CONFIG_LOCATION
or BITPAY_EXTERNAL_SERVICES_CONFIG_LOCATION
environment variable to the location of your configuration before running the apply
task.
COPAY_EXTERNAL_SERVICES_CONFIG_LOCATION="~/.copay/externalServices.json" npm run apply:copay
# or
BITPAY_EXTERNAL_SERVICES_CONFIG_LOCATION="~/.bitpay/externalServices.json" npm run apply:bitpay
While Trias is being used in production in private, permissioned environments, we are still working actively to harden and audit it in preparation for use in public blockchains. We are also still making breaking changes to the protocol and the APIs. Thus, we tag the releases as alpha software.
In any case, if you intend to run Trias in production, please contact us and join the chat.
To report a security vulnerability, bug report
All code contributions and document maintenance are temporarily responsible for TriasLab.
Trias are now developing at a high speed and we are looking forward to working with quality partners who are interested in Trias. If you want to join，please contact us:
Trias is responsible for the code and documentation upgrades for all Trias modules. In an effort to avoid accumulating technical debt prior to Beta, we do not guarantee that data breaking changes (ie. bumps in the MINOR version) will work with existing Trias blockchains. In these cases you will have to start a new blockchain, or write something custom to get the old data into the new chain.


Executing Code in the Grid
Infinispan has quite a few spectacular ways of executing code in the grid. But I bet you haven’t heard or aren’t really familiar with those, which is disappointing. I hope to fix this, however, as we have added more information to the user guide and wanted to detail that here in this blog.
As I am sure you are aware Infinispan can be used in embedded (in your JVM) and remote (in a standalone server). Unfortunately, this means there are different ways of executing code based on which mode you are in.
Embedded
The embedded mode has the most features available and is the easiest to use. The appropriate section can be found here.
One question that seems to come up more than others is how a user can perform cache operations on all data, such as remove all elements that match a given filter. If you are curious about this one, you should check out the Examples section with the example named "Remove specific entries" as it details how a user would do exactly that.
I should also point out the new Cluster Executor section, which is similar to Streams that replaced Map Reduce, is here to replace the old Distributed Executor. With Cluster Executor and Distributed Streams there is a clearer distinction between executing code on nodes (Cluster Executor) and executing code based on data (Distributed Streams). **
Server
The server is a bit more interesting and usually requires configuration ahead of time, unlike Embedded. It can be found in this section. The benefit of the server is most of these can invoke embedded operations internally.
Scripting is by far the easiest to use - just insert your script and execute - but has some limitations that we haven’t been able to fix yet.
Server tasks can run pretty much any Java but require registering classes beforehand. Unfortunately, this section still needs to be filled in and should be added sometime in the near future. I would say, until then, if you are interested, you can look at some tests in github.
Takeaway
I hope this has helped users be able to find out some more information about the various ways of executing arbitrary code for your data. If you have any questions or need more clarification about the features highlighted here, please don’t hesitate to let us know at any of these places.


This is an example PyPy server, that is part of a ,a href="https://medium.freecodecamp.org/how-to-use-github-as-a-pypi-server-1c3b0d07db2">blog post on using GitHub (or other providers) as a PyPy Server
This file isn't used by pip (at least in my version), although the specification states that it is (I have omitted the python_hello package and it still works). It is still useful from a discoverability point of view though, and future versions of Pip may require it.
Pip will look for directories using the normalised name of your package ('python-hello' in this case instead of 'python_hello'). More details in the specification.
Pip git install.


Home
Daily Sales
Daily Sales
Add a new city branch :
Name of the branch city :(required)
The minimum number of customers per hour : (required)
The maximum number of customers per hour:(required)
The average number of cookies purchased per customer :(required)


--- layout: detailed img_path: img/CoinbankPorkyPigca1940.jpg title: Coin bank, Porky Pig, ca. 1940 description: Coin bank based on the character Porky Pig as he appears in the Looney Tunes and Merrie Melodies animated shorts. This tan-painted composition figurine is hollow, has a slotted head, and a hole for coin retrieval at its base. accession_number: 1989.020.0018 artifact_class: Movie Related Merchandise artifact_class_short: related category: Merchandising dimension: 6.5 x 3 x 3 inches creation_date: circa 1940 material: composition related_movie: Merrie Melodies (1931-1969) and Looney Tunes (1930-1969) medium: TV & Film ---
{{ page.description }}
{{ page.accession_number }}
{{ page.artifact_class }}
{{ page.category }}
{{ page.dimension }}
{{ page.creation_date }}
{{ page.material }}
{{ page.related_movie }}
{{ page.medium }}


The Walmart Retail Stores Weather Risk Index depicts the amount of weather risk that Walmart's retail stores in the United States are exposed to at any given time. All stores are treated equally.


{{if eq $error "invalid"}}
Reset password failed. Please try again.
{{else}}
Error. Please try again.
{{end}}
{{template "header.html" .}}


06. Proof of Existence
Proof of Existence
In this video, we'll define what proof of existence is and how it works.
Proof of Existence Overview
Poex.io Demo
In this video, we'll demonstrate proof of existence using an online service known as poex.
Poex.io Demo
Methods of POE
We just saw how to use a pre-created notarization service. What’s really cool is that it’s possible for anyone, including us, to create a web application that verifies the existence of digital assets this same way.
For example, there are other services in the space such as Factom, OriginTimestamp, and Florincoin. Feel free to check some of these out!
Proof of Existence Services
Why do we need POE
Before trying to use this for ourselves, here’s a few quick ideas over why you might even want to to do this in the first place.
Helps you demonstrate data ownership without revealing actual data.
- This is useful for things like copyrighted material or patents.
Checks for the integrity of your digital asset. Any proof of existence will recognize your document FOREVER.
- Even the slightest difference will be recognized allowing you to be sure your asset hasn’t changed.
Provides document Time stamping. You can use this to prove certain information existed at a certain time.
- This can be useful in cases where you want to prove who was the original owner of the document.
Certifies the existence of the document without the need for a central authority.
- Similar to many blockchain concepts this decentralized proof can’t be erased or modified by anyone.
POE Algorithms
There are a different of algorithms to demonstrate Proof of Existence. The two we have chosen to focus on here are SHA256 and MD5.
They both serve the same purpose. They’re a way to hash a digital asset so it can be embedded in a transaction in the blockchain. This allows people to verify that a document existed at a certain point in time.
SHA256
This is an algorithm we’ve seen already in several different parts of the Bitcoin network. It’s used in mining as part of the proof of work algorithm.
It’s also used to create secured bitcoin addresses.
SHA256 stands for Secure Hash Algorithm. It is a one-way hashing function that takes in any piece of data and produces a unique hash.
This is the algorithm POEX uses to secure their digital documents.
MD5
Next, the MD5 algorithm is a hash function that takes in a String input and produces a 128-bit hash value. This value is usually shown as a 32-character hexadecimal number that humans can read.
Goals of POE Algorithms
While each method does things a bit differently, the important thing to remember is their purpose.
They hash digital assets to hide the actual content. Once the hashed data is embedded in a transaction in the blockchain, the existence of that transaction in the blockchain proves that the document existed at the time the transaction got included into a block.
Wrap Up
To recap, in this section we covered:
- Proof of Existence: The concept that publicly proving and authenticating any digital asset on the blockchain by verifying its hash.
- We saw a demo using the POEX online document notarization service.
- Lastly, we discussed different algorithms commonly used for proof of existence such as SHA256 and MD5.


AnimateMD2 md2[,mode][,speed#][,first_frame][,last_frame]
Parameters:
| md2 - md2 handle mode (optional) - mode of animation 0: stop animation 1: loop animation (default) 2: ping-pong animation 3: one-shot animation speed# (optional) - speed of animation. Defaults to 1. |
Description:
| Starts an md2 entity animating. The md2 will actually move from one frame to the next when UpdateWorld is called, usually once per main loop. See also: LoadMD2, MD2AnimTime, MD2AnimLength, MD2Animating, UpdateWorld. |
| ; AnimateMD2 Example ; ------------------ Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera() light=CreateLight() RotateEntity light,90,0,0 ; Load md2 gargoyle=LoadMD2( "media/gargoyle/gargoyle.md2" ) ; Load md2 texture garg_tex=LoadTexture( "media/gargoyle/gargoyle.bmp" ) ; Apply md2 texture to md2 EntityTexture gargoyle,garg_tex ; Animate md2 AnimateMD2 gargoyle,1,0.1,32,46 PositionEntity gargoyle,0,-45,100 RotateEntity gargoyle,0,180,0 While Not KeyDown( 1 ) UpdateWorld RenderWorld Flip Wend End |


AWS Robot Delivery Challenge
Status
Time
Distance to Goal
{{ STATUS }}
{{ LAPTIME }}
{{ DISTANCE }}
Start


{% blocktrans %}Hu:toma Botstore — transfer skills to your bot in few
clicks{% endblocktrans %}
{% url 'studio:ai.wizard' as link %}
{% blocktrans with link=link %}The Hu:toma botstore allows you to
purchase skills that you can then transfer to your bot. Mix and match
bots together to create new functionalities. Bots purchased here will
appear in the skill section when you
create a new bot.{% endblocktrans %}
{% trans 'Create bot video tutorial' as title %}
{% include 'modals/video_tutorial.html' with id='CREATE_BOT_VIDEO_TUTORIAL' title=title slug='uFj73npjhbk' %}