--- layout: bare_styles title: Mailchimp Subscribe ---
DataSD is the home of the City of San Diego's Open Data Program. Check it out to see what we're up to!
Sign up to get updates!
Don't see something you hoped you would?
Want to vote on upcoming datasets?
DataSD has you covered.
Are you using the City's data?
Is there something we can do better?
Want help?
We want to hear from you!
Be nice! Your submissions will be open data as well (once we build the ETL!)


Compiling yourself takes longer and is more involved, but on modern processors can lead to a speed increase of up to 1.5 to 3x. If your operating system or hardware is not officially supported, compiling may be the only way to run Cuberite.
The automatic compilation script is recommended for *nix users. Windows users should see the {{compilingother - Other Systems}} subsection for instructions. The automatic compilation script takes care of the compilation process for you. You only need to copy this command to your terminal:
The rest of this section is for those who prefer to manually compile.
Compiling on Linux and related operating systems is easy and simple, although it does require some tools before you can get started. You need a C++ compiler (Clang++ or G++), a C compiler (Clang or GCC), Git, CMake and Make. A simple command to make sure these tools are installed (Ubuntu/Debian) is:
Once the tools are installed, you should clone the Git repo:
You should then run the CMake process and compile:
Once the compilation process is finished, the Cuberite executable will be placed inside the Server
inside the repository that you downloaded. You can copy this folder anywhere you like, just make sure to copy the supporting files otherwise the server will not work properly.
For compiling on Windows or other systems, please see COMPILING.md in the main repository.
Cuberite's build process supports a large number of flags for customising the builds.
Use these flags by adding -DFlag_name=Value
to the cmake configuration command. For example to enable test
generation using the SELF_TEST
flag add: -DSELF_TEST=ON
ON
to
enable. Define as OFF
to disable.
ON
to enable. Define as OFF
to disable.
ctest
and with makefiles
make test
. Define as ON
to enable. Define as OFF
to disable.
ON
to enable. Define as OFF
to
disable.
ON
to enable. Define as OFF
to disable.


Hi {{ username }}!
{% if updated %}We finished processing your list on Pocket and updated {{ updated }} items!
If you liked the tool, could you tweet about it? This would help me get the word out!
Here's a quick tweet to share.
Thank you!
{% else %}
We finished processing your list but unfortunately we updated no items.
Maybe we already processed it, or maybe it's because you have no articles? (only videos/images)
I {% if not updated %}(still) {%endif %}hope you appreciated the tool :)
All the best,
Cyril from Minute-Pocket


{{.Injected.HeadTop}} {{with .Metadata}} {{end}}
Sourcegraph is a web-based code search and navigation tool for dev teams. Search, navigate, and review code. Find answers.


|
Proton DotNet
|
Special streaming sender related tracker that is linked to a stream sender message and provides the tracker functions for those types of messages. More...
Public Member Functions | |
| IStreamTracker | Settle () |
| Settles the sent delivery if not performing auto-settlement on the sender. More... | |
| Task< IStreamTracker > | SettleAsync () |
| Settles the sent delivery if not performing auto-settlement on the sender and returns a Task that will be completed once any IO operations required by the settlement have completed. More... | |
| IStreamTracker | Disposition (IDeliveryState state, bool settle) |
| Apply the delivery state and optionally settle the sent delivery with the remote More... | |
| Task< IStreamTracker > | DispositionAsync (IDeliveryState state, bool settle) |
| Apply the delivery state and optionally settle the sent delivery with the remote. The method returns a Task that will be completed once any required IO operations in order to apply the disposition have been completed. More... | |
| IStreamTracker | AwaitSettlement () |
| Waits for the remote to settle the sent delivery unless the delivery was already settled by the remote or the delivery was sent already settled. More... | |
| IStreamTracker | AwaitSettlement (TimeSpan timeout) |
| Waits for the remote to settle the sent delivery unless the delivery was already settled by the remote or the delivery was sent already settled. More... | |
| IStreamTracker | AwaitAccepted () |
| Waits for the remote to accept and settle the sent delivery unless the delivery was already settled by the remote or the delivery was sent already settled. More... | |
| IStreamTracker | AwaitAccepted (TimeSpan timeout) |
| Waits for the remote to accept and settle the sent delivery unless the delivery was already settled by the remote or the delivery was sent already settled. More... | |
Properties | |
| IStreamSender | Sender [get] |
| Returns the parent sender instance that sent the delivery that is now being tacked. More... | |
| bool | Settled [get] |
| Indicates if the sent delivery has already been locally settled. More... | |
| IDeliveryState | State [get] |
| Retrieve the currently applied delivery state for the sent delivery. More... | |
| bool | RemoteSettled [get] |
| Indicates if the sent delivery has already been remotely settled. More... | |
| IDeliveryState | RemoteState [get] |
| Retrieve the currently applied delivery state by the remote for the sent delivery. More... | |
| Task< IStreamTracker > | SettlementTask [get] |
| Gets a task that will be completed once the remote has settled the sent delivery, or will indicate an error if the connection fails before the remote can settle. If the sender sent the tracked delivery settled the task returned will already be completed. More... | |
Special streaming sender related tracker that is linked to a stream sender message and provides the tracker functions for those types of messages.
| IStreamTracker Apache.Qpid.Proton.Client.IStreamTracker.AwaitAccepted | ( | ) |
Waits for the remote to accept and settle the sent delivery unless the delivery was already settled by the remote or the delivery was sent already settled.
If the remote send back a delivery state other than accepted then this method will throw an ClientDeliveryStateException to indicate the expected outcome was not achieved.
Implemented in Apache.Qpid.Proton.Client.Implementation.ClientStreamTracker, and Apache.Qpid.Proton.Client.Implementation.ClientNoOpStreamTracker.
| IStreamTracker Apache.Qpid.Proton.Client.IStreamTracker.AwaitAccepted | ( | TimeSpan | timeout | ) |
Waits for the remote to accept and settle the sent delivery unless the delivery was already settled by the remote or the delivery was sent already settled.
If the remote send back a delivery state other than accepted then this method will throw an ClientDeliveryStateException to indicate the expected outcome was not achieved.
| timeout | The duration to wait for the remote to accept the delivery |
Implemented in Apache.Qpid.Proton.Client.Implementation.ClientStreamTracker, and Apache.Qpid.Proton.Client.Implementation.ClientNoOpStreamTracker.
| IStreamTracker Apache.Qpid.Proton.Client.IStreamTracker.AwaitSettlement | ( | ) |
Waits for the remote to settle the sent delivery unless the delivery was already settled by the remote or the delivery was sent already settled.
Implemented in Apache.Qpid.Proton.Client.Implementation.ClientStreamTracker, and Apache.Qpid.Proton.Client.Implementation.ClientNoOpStreamTracker.
| IStreamTracker Apache.Qpid.Proton.Client.IStreamTracker.AwaitSettlement | ( | TimeSpan | timeout | ) |
Waits for the remote to settle the sent delivery unless the delivery was already settled by the remote or the delivery was sent already settled.
| timeout | The duration to wait for the remote to settle the delivery |
Implemented in Apache.Qpid.Proton.Client.Implementation.ClientStreamTracker, and Apache.Qpid.Proton.Client.Implementation.ClientNoOpStreamTracker.
| IStreamTracker Apache.Qpid.Proton.Client.IStreamTracker.Disposition | ( | IDeliveryState | state, |
| bool | settle | ||
| ) |
Apply the delivery state and optionally settle the sent delivery with the remote
| state | The delivery state to apply to the sent delivery |
| settle | Optionally settle the delivery that was sent |
Implemented in Apache.Qpid.Proton.Client.Implementation.ClientStreamTracker, and Apache.Qpid.Proton.Client.Implementation.ClientNoOpStreamTracker.
| Task<IStreamTracker> Apache.Qpid.Proton.Client.IStreamTracker.DispositionAsync | ( | IDeliveryState | state, |
| bool | settle | ||
| ) |
Apply the delivery state and optionally settle the sent delivery with the remote. The method returns a Task that will be completed once any required IO operations in order to apply the disposition have been completed.
| state | The delivery state to apply to the sent delivery |
| settle | Optionally settle the delivery that was sent |
Implemented in Apache.Qpid.Proton.Client.Implementation.ClientStreamTracker, and Apache.Qpid.Proton.Client.Implementation.ClientNoOpStreamTracker.
| IStreamTracker Apache.Qpid.Proton.Client.IStreamTracker.Settle | ( | ) |
Settles the sent delivery if not performing auto-settlement on the sender.
Implemented in Apache.Qpid.Proton.Client.Implementation.ClientStreamTracker, and Apache.Qpid.Proton.Client.Implementation.ClientNoOpStreamTracker.
| Task<IStreamTracker> Apache.Qpid.Proton.Client.IStreamTracker.SettleAsync | ( | ) |
Settles the sent delivery if not performing auto-settlement on the sender and returns a Task that will be completed once any IO operations required by the settlement have completed.
Implemented in Apache.Qpid.Proton.Client.Implementation.ClientStreamTracker, and Apache.Qpid.Proton.Client.Implementation.ClientNoOpStreamTracker.
|
get |
Indicates if the sent delivery has already been remotely settled.
|
get |
Retrieve the currently applied delivery state by the remote for the sent delivery.
|
get |
Returns the parent sender instance that sent the delivery that is now being tacked.
|
get |
Indicates if the sent delivery has already been locally settled.
|
get |
Gets a task that will be completed once the remote has settled the sent delivery, or will indicate an error if the connection fails before the remote can settle. If the sender sent the tracked delivery settled the task returned will already be completed.
|
get |
Retrieve the currently applied delivery state for the sent delivery.


| Iced Beverages | Grande |
|---|---|
| Coffee Frappuccino | $4.45 |
| Caramel Frappuccino | $4.95 |
| Mocha Frappuccino | $4.95 |
| Vanilla Bean Frappuccino | $4.95 |
| Iced Americano | $3.50 |
| Iced Cafe Mocha | $4.45 |
| Iced Tazo Chai Tea | $4.45 |
| Iced Cappuccino | $4.25 |
| Iced Cafe Latte | $4.05 |
| Iced Caramel Macchiato | $4.45 |
| Passion Tea | $3.65 |
| Iced Coffee | $2.45 |


Toggle navigation
CAR RENTAL
Logout
Booking Details
Amount To be paid at car return
BaseRate
Tax
$4
Total:
Book now


Implements a Gibbs sampling algorithm to perform Bayesian inference on biallelic SNP frequencies, genotypes and heterozygosity (observed and expected) in a population of autopolyploids. See the published paper in Molecular Ecology Resources: Blischak et al. (2016) <doi:10.1111/1755-0998.12493>.
| Version: | 1.0.2 |
| Depends: | R (≥ 3.0) |
| Imports: | Rcpp |
| LinkingTo: | Rcpp |
| Suggests: | knitr, coda |
| Published: | 2016-12-16 |
| Author: | Paul Blischak [aut, cre] |
| Maintainer: | Paul Blischak <blischak.4 at osu.edu> |
| BugReports: | https://github.com/pblischak/polyfreqs/issues |
| License: | GPL-2 | GPL-3 [expanded from: GPL (≥ 2)] |
| URL: | https://github.com/pblischak/polyfreqs |
| NeedsCompilation: | yes |
| Citation: | polyfreqs citation info |
| Materials: | README |
| CRAN checks: | polyfreqs results |
| Reference manual: | polyfreqs.pdf |
| Vignettes: |
An introduction to polyfreqs |
| Package source: | polyfreqs_1.0.2.tar.gz |
| Windows binaries: | r-devel: polyfreqs_1.0.2.zip, r-release: polyfreqs_1.0.2.zip, r-oldrel: polyfreqs_1.0.2.zip |
| OS X binaries: | r-release: polyfreqs_1.0.2.tgz, r-oldrel: polyfreqs_1.0.2.tgz |
| Old sources: | polyfreqs archive |
Please use the canonical form https://CRAN.R-project.org/package=polyfreqs to link to this page.


18. QBank - Users Manual¶
Table of Contents
18.1. Introduction¶
QBank is a web application that assists Problem Authoring and Publishing. At the present time, this is an experimental system, and is not actively being used to create OpenDSA exercise content. But its goal is to replace a lot of the current programming required to develop our OpenDSA exercises. The user interface is meant to be intuitive and easy to understand. This document will give you a feel of the overall capabilities and functionality of QBank tool.
The key features of the QBank tool are:
- Easy interfaces for Problem authoring based on the main Problem types:
- Static question – Multiple Choice Question
- Dynamic question – Parameterised Question
- Summative question – Multi-Part Question
- Tool Specific question – Khan Academy Exercise Question
- Problem publishing - Parsing options to convert authored questions to different formats
- Comma Separated Format - csv
- Khan Academy Exercise Format
- Standard Authoring Interfaces based on the Formal Problem Definition for different Problem Types.
18.2. Key Terms¶
18.2.1. Problem Definition¶
The following lists out the essential components of a Problem.
- Problem Statement
- Includes a function that generates a Problem Instance.
- User Interface
- A mechanism that a user interacts with a create a Student Answer.
- Model Answer Generator
- A function that takes a Problem Instance and generates a Model Answer.
- Answer Evaluator
- A function that compares the Student Answer to the Model Answer to determine whether the Student Answer is correct or not.
Variables
These carry information from the Problem Statement to the Model Answer Generator.
18.2.2. Problem Types¶
- Multiple Choice Question
- Parameterized Question
- Variable that take a List of values
- Variable with values that vary over a Range
- Multi - Part Question
- Tool Specific Problem Authoring – Khan Academy Exercise Format
18.3. Write a Problem¶
18.3.1. Overview¶
The QBank editing interface consists of text boxes and buttons that are self explanatory. The text boxes also accepts HTML and JavaScript when appropriate.
The What's this? button gives helpful indicators on the purpose of different text boxes and what different parameters can be added to make the Problem powerful. It also tells you some functions that can be used to make more effective questions.
18.3.2. Problem¶
<IP_ADDRESS>. File Name¶
A unique identifier that is used to :
- Store a problem in the database.
- Refer to a problem in different parsed format
- Refer to while creating a summative problem written from previously authored problems.
<IP_ADDRESS>. Difficulty¶
It just classifies problems as easy , medium or hard. This information can be used by a Smart tutor which bases the next question posed to the user on the correctness of the previous question.
If correct, a question with a higher difficulty is posed or vice-versa.
18.3.3. Variables¶
This allows for generation of different problem instances based on a static Problem Template with variables that take on different specified values.
Variables are used by specifying the variable name within <var>...</var> delimiters.
Variable Name is an ID for the var as that’ll be the name that you’ll refer to in the future.
Variable value Values that the variable can take is specified here. This can be as simple as commma separated values or functions that can be accepted by the publishing tool/ parsed into a compatible format.
For example:
<!-- Numbers from 1-5 -->
Variable Name : A
Variable Value : "1", "2" ,"3" ,"4", "5"
Another example to make a variable named SPEED1 that is a number from 11 to 20 you would do:
Variable Name : SPEED1
Variable Value : randRange(11,20)
The content of a <var>...</var> block is executed as JavaScript, with access to to all the properties and methods provided by the JavaScript Math object, as well as those defined in the modules/scripts you included:
<!-- Random number -10 to -1, 1 to 10.-->
Variable Name : A
Variable Value :(random() > 0.5 ? -1 : 1)*(rand(9) + 1)
Most mathematical problems that you generate will have some bit of randomness to them (in order to make an interesting, not-identical, problem).
<IP_ADDRESS>. Variable Reference¶
Use a <var>...</var> delimiters to refer to predefined variables while defining other variables or within other components of the problem.
For example in the following we define two variables (AVG and TIME ) and then multiply them together and store them in a third variable ( DIST ).
<!-- Defining a variable using predefined variables. -->
Variable Name : AVG
Variable Value : 31 + rand(9)
Variable Name : TIME
Variable Value : 1 + rand(9)
Variable Name : DIST
Variable Value : AVG * TIME
18.3.4. Solution¶
The solution consists of the answer.
<IP_ADDRESS>. Answer¶
The answer can be any of the following.
- A valid choice
- A function that is the calculation of a question ( with specified values for variables)
- A previously defined variable.
For example:: Answer : <var>round(DIST1)</var>
18.3.5. Choices¶
This can include text which acts as distractors for the user. The choices can also use the previously defined variables.
18.3.6. Hints¶
These are textual suggestions to help the user figure out the correct answer. The hints can also use the previously authored variable .
The hints are optional.
18.3.7. Scripts¶
The author can add scripts written in javaScript to add different functionality to the question.
This can add extra interactivity to the exercise.
This is optional as well.
18.3.8. Common Introduction¶
The problem overview/introduction is defined for a Summative Problem.
- This is useful since the problems combined together can have some information that isn’t explicitly part of the statement of the question.
- For example, a Physics problem may describe the situation and the various objects in the world before asking about a certain quality of a certain object.
18.3.9. Problem Name¶
This part of the Problem Template defined for Summative Problems. The Problem Name is the file name of previously authored questions , that can be grouped together.
The "question" in a summative problem is just a file name.
18.3.10. Available functions and Tips¶
<IP_ADDRESS>. Generating Random Numbers¶
You can use random(), or one of the following methods defined in the math.js module (which should be included in all exercises):
- randRange( min, max ) - Get a random integer in [min, max].
- randRange( min, max, count ) - Get a random integer between min and max, inclusive. If count is specified, will return an array of random integers in the range.
- randRangeUnique( min, max, count ) - Get an array of unique random numbers between min and max, inclusive.
- randRangeExclude( min, max, excludes ) - Get a random integer between min and max, inclusive, that is never any of the values in the excludes array.
- randRangeNonZero( min, max ) - Get a random integer between min and max that is never zero.
- randFromArray( arr ) - Get a random member of arr.
18.4. Problem Type Specifics¶
18.4.1. Parameterized Question – List¶
Used to write a question with variables that take values that need to be specified explicitly
- Variables:
- The values are specified within double-quotes and are comma-separated.
- Show/Hide Variable Combination:
It shows the various combination of the different values of variable can take.
This indicates the position of the answer for the particular combination has to be stored in the answer array.
- Solution:
- The answer takes a one dimensional array, where the index corresponds the answer specified to a row on the table that shows the Variable Combination.
18.4.2. Parameterized Question – Range¶
This type of question is for math problems where there are calculations involved as the solution.
- Variables:
- The values the variables take are between a range of values that can be specified using the javaScript randRange(min,max) function.
- Solution:
The answer is the exact calculation that is specified in the Problem Template.
For example:
A + B - C, is enough to specify the answer.
The author doesn’t need to explicitly make the calculation and write the correct answer.
This ensures the validity of answer and gets rid of the risk specifying an incorrect answer for the solution.
Another important feature of this type of problem is, the author doesn’t need to explicitly provide choices, since the user is expected to fill the answer in the blank provided. This is very effective for math problems.
18.4.3. Multi-Part Question¶
It is comprised of different previously authored questions from the Repository. You can combine different type of questions, free-form and multiple-choice simple questions and matching questions in your multipart question.
- Common Introduction
- The problems share a common introduction which generally contains information that is common to the questions.
- Problem
- Problem Name
- Specify the exact identifier for a Problem. You can Browse the Problems in the repository by clicking the show button. You can then click Add and the Problem Name gets added.
18.4.4. Tool Specific Question – Khan Academy Exercise¶
This type of problem supports inputs that can be handled by Khan Academy.
Check out Khan Academy Exercise Framework Documentation.
Also, the What's this button gives a lot of direction in assisting an author while authoring a problem.
18.5. Publishing a Problem¶
The current version of the QBank supports two main publishing formats.
18.5.1. CSV format¶
Every authored exercise can be exported as a comma-separated file.
18.5.2. Khan Academy Exercise Format¶
The exercises can also be exported in a format fully compatible with Khan Academy.
18.6. Search for a Problem¶
This allows the author to browse previously written problems.
The author can:
- Edit the problem.
- Download the problem in CSV
- Parse the problem in to Khan Academy Exercise Format.
- View the problem in Khan Academy.


var BEGIN = { center: {lat:51.5287352,lon:-0.3817734}, airports: ['LTN','LGW','LCY','LHR','STN']TBD: story on center and airports
Define your begin
The original map by John George Bartholomew was about travel time from London, so is the Bartholomap. However if you want to set a different starting point you need to change the BEGIN variable in ./settings.js.
Next: Calculate route time


5 O' Clock Somewhere
"A bartender is just a pharmacist with a limited inventory." ~ Albert Einstein
Home
Top 5 Drinks
Hungry?
Search by ingredient!
Random Drink!
Bourbon
Rum
Tequila
Vodka
Gin


Chocolate Pizza
POSTED ON 15 DEC 2013 / DESSERTS
THE BEST FOOD BLOG ON THE WEB.
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
POSTED ON 15 DEC 2013 / DESSERTS
For the fig-swirl: Melt butter over medium heat in a saucspan. Add brown sugar and stir to dissolve. Halve all of the figs and toss in the saucepan with water and lemon juice. Cook over medium heat, stirring frequently, until you have a chunky-jammy mixture. Add salt with one or two stirs, set aside and let cool completely.
Ice cream: In a small pot over medium heat, combine milk, and granulated sugar until sugar is completly dissolved and the milk is just barely lukewarm. Wisk in the egg yolks. Set mixture in the fridge and wait until the fig mixture is cooled.
Using an ice cream machine, pour liquids into the frozen basin and process according to manufacturer instructions, i.e., let spin and thicken for 20 minutes before adding mascarpone, fig jam mixture, and the nuts. Continue to process for +/- 10 minutes. Pour semi-frozen mixture into a pyrex dish or glass tupperware. Freeze for at least two hours before serving.
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Food enthusiast, photography fan. Add a pinch of raw foodism and that's pretty much who I am.


We got infrastructure!
- aggregate visionary infomediaries
- empower B2B solutions
- facilitate vertical supply-chains
- integrate web-enabled metrics
- seize user-centric users
- syndicate sexy niches
- scale compelling synergies
- visualize out-of-the-box metrics
- enhance proactive systems
- maximize 24/365 mindshare
- innovate next-generation web services
- innovate dot-com methodologies
- monetize bleeding-edge markets
- optimize strategic initiatives


Large Buildings
Top 10 large buildings by floor area
Largest Floor Area
#
Building Name
Country
City
Floor Area
Picture
1
New Century Global Center
China
Chengdu
1760000


Software Architect, Milwaukee Tool, February 2017 - Current
Software Developer, Robert W. Baird, November 2015 - February 2017
Software Engineer, Project Foundry, September 2015 - November 2015
Software Engineer, Quad Graphics, May 2012 - September 2015
Fun experiment built with Preact
Cage RouletteStatic web blog.
I Wish I Knew BeforeMobile app built with Ionic to help people adopt pets from shelters.
Visit Petmatcher PageTwitter stream reader using Angular.js, Socket.io, and Node.js to read twitter streaming api. It currently tracks trending tweets in the Milwaukee area.
Visit TweetStreamer PageBlog about up and coming underground hip-hop. Built using Ruby On Rails and Hosted on Heroku
Visit DatMusicDoe PageA meal planning application I am currently developing to auto-generate meal plans every month. The application is currently being developed using the MEAN stack


{% load security %}
| Title | {{ rev_info.article.title|title}} |
| Author | {{ rev_info.article.submitting_author.first_name|first|upper}} {{ rev_info.article.submitting_author.last_name|title}} |
| Submission File | {{art_submission_file.file_name}} |
| Section | Article |
| Date Created | {{rev_info.article.date_created|date}}
{% if rev_info.article.pub_date %}
Publication Date: {{rev_info.article.pub_date|date}} {% endif %} |
| Review Task | {% if rev_info.invitation_accepted == True %}Date Start: {{rev_info.date_start|date}} | {% else %}{{rev_info.invitation_accepted}} Accept | Decline | {% endif %}
| Date Due | {{rev_info.date_ended|date}} | |
| Recommendation |
{% if rev_info.date_submitted %}
{% if rev_info.recommendation == 'A' %}
Submission Accepted {% else %}Submission Accepted {% endif %}Date Review Submitted: {{rev_info.date_submitted}} {% else %}{% endif %} |


Almost half of Ukrainians believe Parliament to work full term
A third of Ukrainians expect early parliamentary elections.
Almost half of Ukrainians (43.5%), surveyed by Ilko Kucheriv Democratic Initiatives Foundation on November 4-19, believe the Verkhovna Rada, Ukraine's parliament, will finalize its five-year term, while 32,9% say there will be snap elections in Ukraine.
In particular, sociologists asked Ukrainians whether the newly-elected Verkhovna Rada would be working until November 2024 (full term) or whether early elections would be held in the country.
Some 43.5% of respondents believe parliament will work full term, 32.9% forecast snap elections, while another 23.6% found it difficult to answer the question, according to the nationwide survey presented at a press conference on November 25.
When asked whether they are satisfied with the way the parliament is currently operating, only 6.4% of Ukrainians polled said they were completely satisfied, 27.5% – mostly satisfied, 25.8% – mostly unsatisfied, 21.3% – completely unsatisfied, and another 19.1% failed to answer.
Ukrainians were also asked how they feel about the formation of a single-party majority in the Verkhovna Rada.
Some 22.3% of respondents completely support mono-majority since, in their opinion, this will ensure quick and effective passing of laws, while 17.4% fully support it because such a majority will be able to realize their election promises.
At the same time, 22% of respondents do not support it since a single-party majority can make any decisions, including "illegal" ones. Some 18.2% also responded negatively as such a majority can lead to a neglect of democratic procedure. Another 20% found it difficult to answer the question.
The survey was conducted in 110 settlements across Ukraine with the exception of Crimea and the occupied areas in Donetsk and Luhansk regions on November 4-19. A total of 2,041 respondents were interviewed. The margin of error does not exceed 2.3%.


Elixir v1.3.4 Port
Functions related to Erlang ports.
Summary
Functions
Makes a synchronous call to the port
and returns its reply as a term
Closes the port
Sends data
to the port driver port
Associates the port
identifier with a pid
Sends a synchronous control command to the port
and returns its reply as a binary
Returns information about the port
or nil
if the port is closed
Returns information about the port
or nil
if the port is closed
Returns a list of the ports for the current node
Opens an Erlang port given a tuple name
and a list of settings
Types
name :: {:spawn, charlist | binary} | {:spawn_driver, charlist | binary} | {:spawn_executable, charlist | atom} | {:fd, non_neg_integer, non_neg_integer}
Functions
Makes a synchronous call to the port
and returns its reply as a term.
Not all port drivers support this control feature.
For more information, see :erlang.port_call/3
.
Inlined by the compiler.
Closes the port
.
For more information, see :erlang.port_close/1
.
Inlined by the compiler.
Sends data
to the port driver port
.
For more information, see :erlang.port_command/2
.
Inlined by the compiler.
Associates the port
identifier with a pid
.
For more information, see :erlang.port_connect/2
.
Inlined by the compiler.
Sends a synchronous control command to the port
and returns its reply as a binary.
Not all port drivers support this feature.
For more information, see :erlang.port_control/3
.
Inlined by the compiler.
Returns information about the port
or nil
if the port is closed.
For more information, see :erlang.port_info/1
.
Returns information about the port
or nil
if the port is closed.
For more information, see :erlang.port_info/2
.
Returns a list of the ports for the current node.
For more information, see :erlang.ports/0
.
Inlined by the compiler.
Opens an Erlang port given a tuple name
and a list of settings
.
Name
The supported values for name
are:
{:spawn, command}
- to run an external program. The first space separated word ofcommand
will be considered as the name of the program to run, so use{:spawn_executable, command}
to run a program having spaces in its name.{:spawn_driver, command}
- similar to{:spawn, command}
, but to run a loaded driver.{:spawn_executable, filename}
- similar to{:spawn, filename}
, but to run an external executable. With this option,filename
in its whole is considered the name of the program to execute.{:fd, fd_in, fd_out}
- to access file descriptors used by Erlang,fd_in
being used for standard input,fd_out
for standard output.
For more information, see :erlang.open_port/2
.
Inlined by the compiler.


Search
price
title
price
title
price
title
price
title
price
title
price
title
price
title
price
title
price
title


--- layout: page title: "Real World Haskell, 1st Edition" prev: monads_split_000.html next: I_sect114_d1e30814.html book_path: books/real-world-haskell-_oeb/ --- {% include JB/setup %} {% raw %}
Revisiting Earlier Code Examples
Looking for Shared Patterns
The Monad Typeclass
And Now, a Jargon Moment
Using a New Monad: Show Your Work!
Mixing Pure and Monadic Code
Putting a Few Misconceptions to Rest
Building the Logger Monad
The Maybe Monad
The List Monad
Desugaring of do Blocks
The State Monad
Monads and Functors
The Monad Laws and Good Coding Style


Creating EEG Objects¶
Epoch Creation¶
from simpl_eeg import eeg_objects
import warnings
warnings.filterwarnings('ignore')
Note
Please include the line below in your IDE so that the changes would be simultaneously reflected when you make a change to the python scripts.
%load_ext autoreload
%autoreload 2
Module Overview¶
The eeg_objects
module contains helper classes for storing and manipulating relevant information regarding epochs to pass to other package functions. It contains two classes. Typically you will only you use the eeg_objects.Epochs
directly, which by default contains a eeg_objects.EEG_File
object in the eeg_file
attribute.
Below are the docstrings for the two classes:
# Class for reading and importing EEG files
help(eeg_objects.EEG_File)
Help on class EEG_File in module simpl_eeg.eeg_objects:
class EEG_File(builtins.object)
| EEG_File(folder_path, file_name='fixica')
|
| A class to import and store relevant eeg files
|
| Attributes:
| folder_path: str
| path to experiment folder
| experiment: str
| the name of the folder containing experiment files
| mat: list of ints
| a list of integers representing impact times
| raw: mne.io.eeglab.eeglab.RawEEGLAB
| raw experiment data in FIF format
|
| Methods defined here:
|
| __init__(self, folder_path, file_name='fixica')
| Imports and stores EEG data files
|
| Parameters:
| folder_path: str
| The folder path containing the experiment data
| file_name: str (optional)
| The file name for the .set and .fdt file.
| Defaults to "fixica".
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| __dict__
| dictionary for instance variables (if defined)
|
| __weakref__
| list of weak references to the object (if defined)
# Class for storing, generating, and adjusting epoch objects
help(eeg_objects.Epochs)
Help on class Epochs in module simpl_eeg.eeg_objects:
class Epochs(builtins.object)
| Epochs(folder_path, tmin=-0.3, tmax=0.7, start_second=None, file_name='fixica', **kwargs)
|
| A class to represent epochs and underlying data
|
| Attributes:
| eeg_file: EEG_File
| eeg file data
| all_epochs: mne.Epochs
| the generated epoch data
| epoch: mne.Epochs
| the selected epoch of interest
|
| Methods:
| generate_epochs(duration, start_second):
| Calculates epochs based on a duration and start second
| get_epoch(epoch_num):
| Set and return the epoch of interest
| skip_n_steps(num_steps):
| Returns a subset of the epoch by skipping records in increments of num_steps
|
| Methods defined here:
|
| __init__(self, folder_path, tmin=-0.3, tmax=0.7, start_second=None, file_name='fixica', **kwargs)
| Generates epochs and stores related information
|
| Parameters:
| tmin: float
| Number of seconds before the event time to include in epoch
| tmax: float
| Number of seconds after the event time to include in epoch
| start_second: int | None
| Second of the event time,
| or None if autodetected event time should be used
| file_name: str (optional)
| The file name for the .set and .fdt file.
| Defaults to "fixica".
| **kwargs: dict (optional)
| Additional parameters to pass to the mne.Epochs() constructor
|
| Full list of options available at
| https://mne.tools/stable/generated/mne.Epochs.html
|
| generate_epochs(self, tmin, tmax, start_second, **kwargs)
| Generates an epoch object based on the given input
|
| Parameters:
| tmin: float
| Number of seconds before the event time to include in epoch
| tmax: float
| Number of seconds after the event time to include in epoch
| start_second: int
| Second of the event time,
| or None if autodetected event time should be used
| **kwargs: dict (optional)
| Additional parameters to pass to the mne.Epochs() constructor
|
| Full list of options available at
| https://mne.tools/stable/generated/mne.Epochs.html
|
| Returns:
| mne.Epochs:
| The generated epoch(s)
|
| get_epoch(self, epoch_num)
| Get the nth epoch from the genertated epochs
|
| Parameters:
| epoch_num: int
| The epoch to select
| Returns:
| mne.Epoch:
| The epoch of interest
|
| skip_n_steps(self, num_steps, use_single=True)
| Return new epoch containing every nth frame
|
| Parameters:
| num_steps: int
| The number of time steps to skip
| use_single: bool (optional)
| Whether to apply the skipping to all epochs or the
| current selected epoch only
|
| Returns:
| mne.Epochs:
| The reduced size epoch
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| __dict__
| dictionary for instance variables (if defined)
|
| __weakref__
| list of weak references to the object (if defined)
Define parameters¶
The only required parameter to create an epoch object is the folder_path
for the experiment of interest, however additional parameters may be used to customize your epoch object.
If you specify a
start_second
, a single epoch will be generated with an impact event at the specified second.If you do not specify a
start_second
, epochs will be automatically generated using the impact times found in theimpact locations.mat
file in the selectedexperiment_folder
.tmin
specifies the number of seconds before the impact to use, andtmin
specifies the number of seconds after the impact.
# path to the experiment folder
experiment_folder = "../../data/109"
# number of seconds before the impact, should be a negative number for before impact
tmin = -1
# number of seconds after the impact
tmax = 1
# if creating a custom epoch, select a starting second
start_second = None
Create epoched data¶
You can create epoched data using the Epochs
class.
epochs = eeg_objects.Epochs(experiment_folder, tmin, tmax, start_second)
Reading /Users/sasha/mds/simpl_eeg_capstone/data/109/fixica.fdt
Not setting metadata
Not setting metadata
33 matching events found
Setting baseline interval to [-1.0, 0.0] sec
Applying baseline correction (mode: mean)
0 projection items activated
Loading data for 33 events and 4097 original time points ...
0 bad epochs dropped
The generated epoch data is found within the all_epochs
attribute. Here we are generating epochs with automatically detected impact times, so we can see that there are multiple events.
epochs.all_epochs
| Number of events | 33 |
|---|---|
| Events | 1027 seconds: 1 1138 seconds: 1 1253 seconds: 1 1370 seconds: 1 1585 seconds: 1 1697 seconds: 1 1812 seconds: 1 1935 seconds: 1 2055 seconds: 1 2219 seconds: 1 2363 seconds: 1 2472 seconds: 1 2594 seconds: 1 2713 seconds: 1 2898 seconds: 1 3033 seconds: 1 3150 seconds: 1 3269 seconds: 1 3389 seconds: 1 3518 seconds: 1 3628 seconds: 1 3774 seconds: 1 3945 seconds: 1 4061 seconds: 1 4180 seconds: 1 4319 seconds: 1 4463 seconds: 1 4662 seconds: 1 4785 seconds: 1 4906 seconds: 1 5029 seconds: 1 735 seconds: 1 892 seconds: 1 |
| Time range | -1.000 – 1.000 sec |
| Baseline | -1.000 – 0.000 sec |
If instead we create epochs with a custom start second, we will only create a single epoch with an impact the given start_second
.
start_second = 15 # record event at second 15
custom_epoch = eeg_objects.Epochs(experiment_folder, tmin, tmax, start_second)
custom_epoch.all_epochs
Reading /Users/sasha/mds/simpl_eeg_capstone/data/109/fixica.fdt
Not setting metadata
Not setting metadata
1 matching events found
Setting baseline interval to [-1.0, 0.0] sec
Applying baseline correction (mode: mean)
0 projection items activated
Loading data for 1 events and 4097 original time points ...
0 bad epochs dropped
| Number of events | 1 |
|---|---|
| Events | 15 seconds: 1 |
| Time range | -1.000 – 1.000 sec |
| Baseline | -1.000 – 0.000 sec |
Get information about epochs¶
In addition to the epochs contained in the all_epochs
attribute, the Epoch
object also contains information about the file used and has a selected epoch for quick access.
eeg_file = epochs.eeg_file
print(eeg_file.folder_path) # experiment folder path
print(eeg_file.experiment) # experiment number
print(eeg_file.mat) # impact times
print(eeg_file.raw) # raw data
../../data/109
109
{'__header__': b'MATLAB 5.0 MAT-file, Platform: PCWIN64, Created on: Tue Mar 23 17:21:01 2021', '__version__': '1.0', '__globals__': [], 'baselocs': array([[ 27722, 10544897]], dtype=int32), 'elecmax1': array([[ 1506127, 1828393, 2103572, 2332113, 2566359, 2806427,
3246204, 3475576, 3712770, 3963481, 4208934, 4544740,
4840659, 5064290, 5314417, 5557193, 5936062, 6213199,
6451715, 6695044, 6941686, 7206205, 7431075, 7731054,
8080362, 8317857, 8562682, 8847325, 9142217, 9549010,
9801198, 10049013, 10301077]], dtype=int32)}
<RawEEGLAB | fixica.fdt, 19 x 11175225 (5456.7 s), ~30 kB, data not loaded>
Select specific epoch¶
If you have a specific epoch of interest you can specify it with the get_epoch
method. You can retrieve it later by accessing the epoch
attribute.
nth_epoch = 5 # the epoch of interest to select, the 6th impact
single_epoch = epochs.get_epoch(nth_epoch)
single_epoch
| Number of events | 1 |
|---|---|
| Events | 1370 seconds: 1 |
| Time range | -1.000 – 1.000 sec |
| Baseline | -1.000 – 0.000 sec |
epochs.epoch
| Number of events | 1 |
|---|---|
| Events | 1370 seconds: 1 |
| Time range | -1.000 – 1.000 sec |
| Baseline | -1.000 – 0.000 sec |
Decimate the epoch (optional)¶
To reduce the size of the selected epoch you can choose to skip a selected number of time steps by calling the skip_n_steps
method. If use_single=True
(the default), it will only be run on the current selected epoch from the previous step, contained in the epoch
attribute. Otherwise it will run on all the epochs contained within the all_epochs
attribute.
Skipping steps will greatly reduce animation times for the other functions in the package. The greater the number of steps skipped, the fewer the frames to animate. In the example below we are reducing the selected epoch from 4097 time steps to 81 time steps.
single_epoch.get_data().shape
(1, 19, 4097)
num_steps = 50
smaller_epoch = epochs.skip_n_steps(num_steps)
smaller_epoch.get_data().shape
(1, 19, 81)
MNE functions¶
Now that you have access epoched data, you can use the simpl_eeg
package functions as well as any MNE functions which act on mne.epoch
objects. Below are some useful examples for the MNE objects contained within the object we created.
Raw data¶
https://mne.tools/stable/generated/mne.io.Raw.html
raw = epochs.eeg_file.raw
raw.info
| Measurement date | Unknown |
|---|---|
| Experimenter | Unknown | Participant | Unknown |
| Digitized points | 19 points |
| Good channels | 0 magnetometer, 0 gradiometer, and 19 EEG channels |
| Bad channels | |
| EOG channels | Not available |
| ECG channels | Not available |
| Sampling frequency | 2048.00 Hz |
| Highpass | 0.00 Hz |
| Lowpass | 1024.00 Hz |
raw.plot_psd();
Effective window size : 1.000 (s)
Epoch data¶
# first 3 epochs
epochs.all_epochs.plot(n_epochs=3);
# specific epoch
epochs.epoch.plot();
# specific epoch with steps skipped
epochs.skip_n_steps(100).plot();


Module ctzones
Creator Tools LUA Zone Utilities File
Author: Native Instruments Written by: Yaron Eshkar
This file includes useful functions for usage in Creator Tools Lua scripts.
Simply include this line in any script (if running a script from another location that users this file, make sure to point to the correct path): local ctZones = require("CtZones")
Then you can simply call any function like: ctZones.test_function()
It is also possible of course to copy entire specific functions from this list directly into your script. In that case remove the ctZones part from the function name, and then simply call it normally like: test_function()
Functions
| CtZones.test_function () | Test Function. |
| CtZones.zone_confine (zone, the) | Confine a zone so that root key, low key and high key are all the same. |
| CtZones.zone_count (group) | Check and print the total zone count of a group or the entire instrument. |
| CtZones.zone_info (group, zone) | Print detailed information about a zone, all the zones in a group or all the zones in the instrument. |
| CtZones.zone_move (from_group, to_group, zone_number) | Move all zones or a specific zone from one group to another. |
| CtZones.zone_params (group, zone, root_key, high_key, low_key, high_vel, low_vel, volume, tune, pan) | Set all zone parameters. |
| CtZones.zone_param_single (source_group, source_zone, dest_group, dest_zone, param) | Copy zone parameters from one zone to another. |
| CtZones.zone_root (start_root, start_zone, until_zone, start_group, until_group, increment, confine) | Set the root note of a range of zones over a range of groups with optional arguments. |
| CtZones.zones_with_same_key (root_key, group) | Find and count the number of all zones that have the same root key within a group or all groups. |
Functions
- CtZones.test_function ()
- Test Function. Takes no arguments, prints to console when called.
- CtZones.zone_confine (zone, the)
-
Confine a zone so that root key, low key and high key are all the same.
Parameters:
- zone enum the zone to confine.
- the int value from 0-127 to confine the zone values to.
Returns:
-
bool
- CtZones.zone_count (group)
-
Check and print the total zone count of a group or the entire instrument.
Parameters:
- group int the group number to check, if none provided checks entire instrument.
Returns:
-
bool
- CtZones.zone_info (group, zone)
-
Print detailed information about a zone, all the zones in a group or all the zones in the instrument.
Parameters:
- group int the group number to check, if none provided checks entire instrument.
- zone int the zone number to check, if none provided checks all the zones in the group.
Returns:
-
bool
- CtZones.zone_move (from_group, to_group, zone_number)
-
Move all zones or a specific zone from one group to another.
Parameters:
- from_group int the source group index.
- to_group int the destination group index.
- zone_number int the zone to move, if not specified all zones will be moved from the source group to the destination.
Returns:
-
bool
- CtZones.zone_params (group, zone, root_key, high_key, low_key, high_vel, low_vel, volume, tune, pan)
-
Set all zone parameters.
Parameters:
- group int the group index.
- zone int the zone index witin the group.
- root_key int the root key valuae to set.
- high_key int the high key value to set.
- low_key int the low key value to set.
- high_vel int the high vel value to set.
- low_vel int the low vel value to set.
- volume int the volume value to set.
- tune int the tune value to set.
- pan int the pan value to set.
Returns:
-
bool
- CtZones.zone_param_single (source_group, source_zone, dest_group, dest_zone, param)
-
Copy zone parameters from one zone to another.
Parameters:
- source_group int the group index of the source group.
- source_zone int the zone index of the source zone within the source group.
- dest_group int the group index of the destination group.
- dest_zone int the zone index of the destination zone within the destination group.
- param string if set to "all" copies all zone parameters.
Returns:
-
bool
- CtZones.zone_root (start_root, start_zone, until_zone, start_group, until_group, increment, confine)
-
Set the root note of a range of zones over a range of groups with optional arguments.
Parameters:
- start_root int the root note number to start from for every zone. Defaults to 60.
- start_zone int the index of the zone to start the iteration from. Defaults to 0.
- until_zone int the index of the zone to end the iteration on. Defaults to 0.
- start_group int the index of the group to start the iteration from. Defaults to 0.
- until_group int the index of the group to end the iteration on. Defaults to 0.
- increment bool when true will increment the root note for each zone in the set zone range starting from the start_root value.
- confine bool when true, sets the zone low key and high key to the same value as the root note.
Returns:
-
bool
- CtZones.zones_with_same_key (root_key, group)
-
Find and count the number of all zones that have the same root key within a group or all groups.
Parameters:
- root_key int the root key to compare.
- group int the group to check in, if none specified checks in all groups.
Returns:
-
table
returns a table containing a list of zones that are in the same key as the specified one.


Market Data¶
Introduction
FXCM provide several sample data for free. Historical tick or candle data. Order flow, sentiment and volume.
TickData
Enjoy free access to our historical Tick Data.
Our repository contains Tick Data from 4 January 2015. The data is compiled by trading instrument for that trading week. The files are stored in our public directory and is updated every Monday:
https://tickdata.fxcorporate.com/{instrument}/{year}/{int of week of year}.csv.gz
Instrument:
AUDCAD, AUDCHF, AUDJPY, AUDNZD, CADCHF, EURAUD,
EURCHF, EURGBP, EURJPY, EURUSD, GBPCHF, GBPJPY,
GBPNZD, GBPUSD, NZDCAD, NZDCHF, NZDJPY, NZDUSD,
USDCAD, USDCHF, USDJPY, AUDUSD, CADJPY, GBPCAD,
USDTRY, EURNZD
Year: 2015, 2016, 2017, 2018
Week: 1 to 52/53
To give an example, the path for extracting EURUSD data for the 1st week of 2015 would be:
https://tickdata.fxcorporate.com/EURUSD/2015/1.csv.gz
If you are familiar with Python, we have two scripts that you may use for Python 2.7 and Python 3.4
Note
Losses can exceed deposits. Past performance is not indicative of future results. Timestamps are in UTC. Data points are indicative and based on the lowest spreads available exclusively on Active Trader accounts. This is for personal use and abides by our EULA. For more information, you may contact us at<EMAIL_ADDRESS>CandleData
Enjoy free access to our historical Time Series or Candle Data.
Our repository contains Candle Data from 1 January 2012. The data is compiled by trading instrument for that trading week for m1 & H1, and trading year for D1. The files are stored in our public directory and is updated every Monday for minute (m1) and hour (H1) data only:
https://candledata.fxcorporate.com/{periodicity}/{instrument}/{year}/{int of week of year}.csv.gz
Periodicity: m1, H1, D1
Instrument:
AUDCAD, AUDCHF, AUDJPY, AUDNZD, CADCHF, EURAUD,
EURCHF, EURGBP, EURJPY, EURUSD, GBPCHF, GBPJPY,
GBPNZD, GBPUSD, NZDCAD, NZDCHF, NZDJPY, NZDUSD,
USDCAD, USDCHF, USDJPY
Year: 2012, 2013, 2014, 2015, 2016, 2017, 2018
Week: 1 to 52/53 (only applicable to m1 and H1)
To give an example, the path for extracting EURUSD minute-data for the 1st week of 2012 would be:
https://candledata.fxcorporate.com/m1/EURUSD/2012/1.csv.gz
To give an example, the path for extracting EURUSD hourly-data for the 1st week of 2012 would be:
https://candledata.fxcorporate.com/H1/EURUSD/2012/1.csv.gz
To give an example, the path for extracting EURUSD daily-data for 2012 would be
https://candledata.fxcorporate.com/D1/EURUSD/2012.csv.gz
If you are familiar with Python, we have three scripts that you may use for Python 2.7, Python 3.4, or a pandas data frame
Note
Losses can exceed deposits. Past performance is not indicative of future results. Timestamps are in UTC. Data points are indicative and based on the lowest spreads available exclusively on Active Trader accounts. This is for personal use and abides by our EULA. For more information, you may contact us at<EMAIL_ADDRESS>Order Flow
Enjoy a free one-month sample of our historical Orders Data.
https://sampledata.fxcorporate.com/orders/sample.csv.gz
- Each data set would include:
- DateTime (UTC)
- Symbol
- Quantity (Volume)
- Rate (Price)
Note
Losses can exceed deposits. Past performance is not indicative of future results. Timestamps are in UTC. Data points are indicative and based on the lowest spreads available exclusively on Active Trader accounts. This is for personal use and abides by our EULA. For more information, you may contact us at<EMAIL_ADDRESS>Sentiment
Enjoy a free one-month sample of our historical Sentiment Data also known as SSI:
https://sampledata.fxcorporate.com/sentiment/{instrument}.csv.gz
Instrument:
AUDJPY, AUDUSD, CADJPY, CHFJPY, EURAUD, EURCAD, EURCHF, EURGBP,
EURJPY, EURNOK, EURSEK, EURUSD, GBPCHF, GBPJPY, GBPUSD, NZDJPY,
NZDUSD, USDCAD, USDCHF, USDCNH, USDJPY, USDNOK, USDSEK, FRA40,
GER30, JPN225, SPX500, UK100, US30, USOil, XAGUSD, XAUUSD
Each data set would include:
•DateTime (EST)
•Symbol
•Name
•Value
Note
Losses can exceed deposits. Past performance is not indicative of future results. Timestamps are in UTC. Data points are indicative and based on the lowest spreads available exclusively on Active Trader accounts. This is for personal use and abides by our EULA. For more information, you may contact us at<EMAIL_ADDRESS>Volume
Enjoy a free one-month sample of our historical Volume Data:
https://sampledata.fxcorporate.com/volume/{instrument}.csv.gz
Instrument:
AUDJPY, AUDUSD, CADJPY, CHFJPY, EURAUD, EURCAD, EURCHF, EURGBP,
EURJPY, EURNOK, EURSEK, EURUSD, GBPCHF, GBPJPY, GBPUSD, NZDJPY,
NZDUSD, USDCAD, USDCHF, USDCNH, USDJPY, USDNOK, USDSEK, FRA40,
GER30, JPN225, SPX500, UK100, US30, USOil, XAGUSD, XAUUSD
Each data set would include:
•DateTime (UTC)
•Symbol
•Name
•Value
Note
Losses can exceed deposits. Past performance is not indicative of future results. Timestamps are in UTC. Data points are indicative and based on the lowest spreads available exclusively on Active Trader accounts. This is for personal use and abides by our EULA. For more information, you may contact us at api@fxcm.com.


I currently live in Portland, Oregon. I grew up in sunny Phoenix, Arizona. The image above is a picture of me as a baby at my parents' business, Phoenix Desert Cactus Nursery. Check it out!
I have a Bachelor's degree in Spanish from Arizona State University. I'm a CELTA certified English teacher. I'm bilingual in Spanish and English and I teach English as a foreign language to children ages 3 to 15 with the company VIPKID.
I'm currently taking an introduction to coding class at Epicodus because I am interested in building websites and apps.
Some of my top interests include, in no particular order:


Pacman AI is an AI that can eat all the food while avoiding ghosts. It can also show the path pacman takes with red coloring.


Try out our Premium Member services: Virtual Legal Assistant, Query Alert Service and an ad-free experience. Free for one month and pay only if you like it.
-1- IN THE HIGH COURT OF KARNATAKA AT BANGALORE DATED THIS THE 18TH DAY OF MARCH 2013 PRESENT THE HON' BLE MR.D.H.WAGHELA, CHIEF JUSTICE AND THE HON' BLE MRS.JUSTICE B.V.NAGARATHNA WP Nos.12756-12757/2013(GM-MMS) BETWEEN 1. M/S. JAI SEVALAL STONE CRUSHER (VENKATESHWAR) SY.NO.77/2, MADBOOL VILLAGE, CHITTAPUR TALUK, GULBARGA DISTRICT REPRESENTED BY ITS PROPRIETOR VIJAYKUMAR T CHAUVAN, AGED ABOUT 46 YEARS SANNOOR VILLAGE, CHITTAPUR TALUK GULBARGA DISTRICT. 2. SHRI BHAVANI STONE CRUSHING COMPANY SY.NO.28/1, JAFARABAD POST, GULBARGA TALUK & DISTRICT BY ITS PROPRIETOR RAMESH B JAWALKAR, AGED ABOUT 68 YEARS ... PETITIONERS (By Sri.G G CHAGASHETTI & SRI.I R BIRADAR, ADVS.) -2- AND 1. THE STATE OF KARNATAKA DEPARTMENT OF MINES & GEOLOGY KHANIJA BHAVAN, RACE COURSE ROAD, BANGALORE- 560 001 BY ITS DIRECTOR 2. THE KARNATAKA STATE POLLUTION CONTROL BOARD PARISARA BHAVAN, 4TH & 5TH FLOOR, NO.49, CHURCH STREET, BANGALORE- 560 003 BY ITS CHAIRMAN 3. THE DEPUTY COMMISSIONER GULBARGA DISTRICT, GULBAGA- 585101 4. THE MANAGING DIRECTOR GESCOM, GULBAGA- 585101 5. THE EXECUTIVE ENGINEER GESCOM, GULBARGA DIVISION, GULBAGA- 585101 ... RESPONDENTS (By Sri.R.G.KOLLE, AGA FOR R.1 & 3 SRI.D.NAGARAJ, ADV. FOR R.2) THESE WRIT PETITIONS FILED UNDER ARTICLES 226 AND 227 OF THE CONSTITUTION OF INDIA PRAYING TO QUASH THE ORDER DATED 01.09.2012 ISSUED BY THE 2ND RESPONDENT VIDE ANNEXURES-B & B1 AND DIRECT THE 3RD RESPONDENT TO ISSUE PRESCRIBED FORM TO THE PETITIONERS ENABLING THEM TO FILE AN APPLICATION SEEKING GRANT OF LICENSE TO THEIR RESPECTIVE STONE CRUSHER. -3- THESE WRIT PETITIONS COMING ON FOR PRELIMINARY HEARING THIS DAY, NAGARATHNA .J, MADE THE FOLLOWING: ORDER
Sri.R.G.Kolle, learned AGA takes notice for respondent nos.1 and 3. Sri.D.Nagaraj, learned counsel takes notice for respondent no.2. Since no prayer has been sought as against respondent nos.4 and 5, notices to them are dispensed with.
2. In these writ petitions, petitioners have assailed the orders dated 01.09.2012 and 17.10.2012 (Annexures-B and B1) passed by the 2nd respondent. By the said orders, the stone crusher units run by the petitioners have been ordered to be closed under Section 31A of Air (Prevention and Control of Pollution) Act, 1981, read with Rule 20-A of Karnataka Air (Prevention and Control of Pollution) Rules, 1983.
3. We have heard the learned counsel for parties and perused the materials on record.
4. As far as the closure orders are concerned, the same cannot be adjudicated before this Court by filing Writ Petitions, in view of the observations and directions of the Apex Court in -4- the case of Bhopal Gas Peedith Mahila Udyog Sangathan and others vs. Union of India and others, (2012 (8) SCC
326). Having regard to paragraphs 40 and 41 therein, the writ petitions so far as assailing the closure orders are concerned, are dismissed reserving liberty to the petitioners, to adjudicate the said matter before the appropriate forum, if they are so advised.
5 The second prayer in these Writ Petitions is for a direction to the 3rd respondent to issue prescribed Form to the petitioners, in order to enable them to file applications seeking grant of license for establishing their stone crusher units in the safer zone. As far as this direction is concerned, Sections 3 and 4 of the Karnataka Regulation of Stone Crushers Act, 2011, enables the person who is carrying on the business of stone crusher to make an application seeking grant of a license under the provisions of the said Act. Therefore, no direction can be given for the petitioners to be issued with any prescribed Form for making an application seeking grant of a license. It is incumbent upon the petitioners to make appropriate applications in terms of Sections 3 and 4 of the Act read with Rules, in order to seek grant of a license for -5- running stone crusher units in the safer zone. Therefore, no direction can be given in that regard. Liberty is reserved to the petitioners to make appropriate applications before the 3rd respondent, in accordance with law.
6. With the above observations, the writ petitions are disposed of.
Sd/-
CHIEF JUSTICE Sd/-
JUDGE mv


Controls: Click and drag on the canvas to move the view, to scroll zoom in and out.
Degree: This value changes the maximum exponent in the polynomial. Adding more terms slows the view so I've limited this value to 20.
Coefficients: These are the values that each term of the polynomial is multiplied by.
Roots: Shows the current approximation of the roots. Turns from red to green when approximation is acceptable.
Circles: The two circles in the view are the minimum and maximum values for the roots of the polynomial, determined by the coefficients.
Views:This program uses the Aberth method in order to approximate the roots of some polynomial. This algorithm can be described using an electrostatic analogy where the roots of the polynomial are positive charges (with their charge equal to the multiplicity of the root) and the current approximation of the roots are negative charges, attracted to the roots and repelled from each other. The reason for this is so that two potential roots don't converge to the same root (unless it has multiplicity greater than 1).
This program steps the roots every 100 frames (roughly every 3 seconds depending on the frameRate) however they are animated to linearly transition between these steps over time, this is why you may see the roots suddenly change their speed and direction discontinuously.
In order to get this visualization to run well in the browser I had to make quite a few optimizations. Because calculating the color of any given pixel is fairly expensive my goal was to try to minimize the number of times this is performed or spread it over several frames. When the viewport is zoomed the entire screen has to be redrawn so I spread the drawing over 16 frames to spread out the calculation. For translating the viewport only the newly revealed edges have to be drawn, the rest can just be translated over, this allowed me to make viewport translations run fairly quickly in the browser.
My original reason for implementing this method was for finding the eigenvalues of a matrix to help me with homework (because using Wolfram Alpha felt too much like cheating). While implementing this in python I was having issues with the roots not converging so I decided to write this visualization to be able to see what was happening.
Rootfinding algorithms for polynomial functions have a wide number of uses so I felt it was worth taking time to learn about this algorithm and write my own implementation.
Originally Added: October 30, 2021
Last Updated: April 13, 2022


Diabetes Percentage
25%
HIGH
59%
NORMAL
16%
LOW
------------------------
HIGHEST
240
AVERAGE
120
LOWEST
68


Welcome to the web's most successful website. At My Dating Website you'll meet other like minded individuals. We have the highest success rate of couples on the web. User's are matched by interest and location. Find out why so many others have found love on our site!
"I met the love of my life after only a month!" - Andrea
"It was so easy to set up and profile and start meeting people. I didn't realize how many others were looking for love in my area." - John Smith
"Just try it! You'll never been the same!"


| IN CPI (MoM%) | ||||||
| Release Date | For Month | Market Expectation | Kshitij Expectation | Previous | Released | Revised |
| 12-Dec-17 | Nov-17 | - | - | 0.67 | 1.10 | - |
| 12-Jan-18 | Dec-17 | - | - | 1.10 | -0.29 | - |
| 12-Feb-18 | Jan-18 | - | 0.08 | -0.29 | -0.22 | - |
| 12-Mar-18 | Feb-18 | - | - | -0.22 | - | - |
| Copyright: Kshitij Consultancy Services |


Before Change
// can"t do introspection on dijkstra function because it"s Cython,
// so we"ll just try quickly here
try:
dijkstra(sparse.csr_matrix(np.zeros((2, 2))), limit=1.0)
except TypeError:
raise RuntimeError("Cannot use "limit < np.inf" unless scipy "
"> 0.13 is installed")
After Change
raise RuntimeError("scipy >= 0.11 must be installed (or > 0.13 "
"if dist_limit < np.inf")
if src.kind != "surface":
raise RuntimeError("Currently all source spaces must be of surface "
"type")
parallel, p_fun, _ = parallel_func(_do_src_distances, n_jobs)
min_dists = list()
min_idxs = list()
logger.info("Calculating source space distances (limit=%s mm)..."
% (1000 * dist_limit))
max_n = max(s["nuse"] for s in src)
if max_n > _DIST_WARN_LIMIT:
warn("Computing distances for %d source space points (in one "
"hemisphere) will be very slow, consider using add_dist=False"
% (max_n,))
for s in src:
connectivity = mesh_dist(s["tris"], s["rr"])
d = parallel(p_fun(connectivity, s["vertno"], r, dist_limit)


The Point
The Point is a zero-dimentional object meaning that it has no width, length or height.A Point can exist in any dimention and functions as the location within any dimention. This is specified using an
Points are discribed as a dot but take into mind that a point has no dimentions.
Points come in many forms:
- Midpoint
Points that devide a line segment into two segments of equal length; The middle of the segment. - Endpoint
Points at the boundary of a line segment. - Antipodal Point
- Isotropic Point
- Diagonal Point
- Collinear Points
Points that exist on the same line - Non-Collinear Points
Points that don't exist on the same line - Coplanar Points
Points that exist on the same plane - Non-Coplanar Points
Points that don't exist on the same plane


Revealed: All The Devices That Can Stream Disney+ In Australia
by Sarah BasfordDisney+ is now available in Australia and its looking set to seriously shake up the local streaming scene. But some in other countries have complained of the service not working on specific devices. Here are the phones, TVs and video game consoles confirmed to be able to stream all your Disney classics and soon-to-be faves.
A Linux developer in the Netherlands first spotted troubles with Disney+ and after little digging, tech site Tweakers realised it was due to the streaming service's use of WideVine, digital rights management service. Essentially, in order to protect the copyright of Disney's content, it allegedly utilises the highest level of protection and if a device doesn't run that level of WideVine, it won't be able to play content from Disney+.
Thankfully, Disney has confirmed with Lifehacker Australia which devices it will be available on in the country specifically.
Devices
- iOS (iPhone and iPad)
- Android (Phone and Tablet)
- Apple TV (tvOS)
- Chromecast
- Amazon Fire TV (Australia)
TVs
- Sony TV (Android TV)
- Samsung (Tizen)
- LG (WebOS)
- Android TV
Gaming consoles
- PS4
- Xbox One
Disney+ will launch in Australia on Tuesday 19 November.


Thermostat
Current Temperature inside:
loading...
Current Temperature outside:
boiling
Select your location
London
Newcastle Upon Tyne
Valletta
Belmullet
Energy Usage Level:
hmm...
Up
Down
Power Saving On
Power Saving Off
Reset


At the beginning of 2021, Mask Network launched a brand new feature - ITO (Initial Twitter Offering). Many outstanding projects, including Loopring $LRC, Mirror Protocol $mTSLA, and our own $MASK, have launched ITO since we first released this feature.
We are thrilled to see that more and more users are interested in ITO. However, we noticed that many questions have been raised in our community during the past ITO events. Thus, in this article, we’ll give a more thorough introduction of ITO and explain our plan for future ITOs.
Introduced by Mask Network, ITO (Initial Twitter Offering) is a decentralized asset offering feature based on the decentralized blockchain network infrastructure - Ethereum. Users could participate in a token launch directly on Twitter; projects could also reward users or build awareness through ITO by offering their existing tokens with a discount, or simply launch a new token.
You can choose from a list to block users from selected countries based on their IP. The default one is open for all regions.
You can choose to lock the tokens and only release the tokens at a desired time.
You can write your own qualification contract based on IQLF interface to customize how users can qualify for the ITO. The default one will let everyone through. Customizations may include:
1. whitelist;
2. holding one or more specific tokens;
3. not holding one or more specific tokens, etc.
There will be more types of the auction and support multi-chains in the future to meet various needs of the community and projects.
We believe that huge potential will be released once an excellent asset issuance tool is integrated with a well-developed social network. This is also part of the vision Mask Network is trying to achieve: bridging Web 2.0 and Web 3.0 by bringing great DApps into the traditional internet.
Option A: Permissionless ITO
ITO is a decentralized, permissionless way of token offering, any individuals and organizations with Mask Network installed could launch ERC-20 assets without letting Mask Network know. As long as individuals or projects set an attractive price of the asset (new or existing), and with sufficient marketing effort and guidance, it will be possible to launch a great token offering.
Option B: Community Choice ITO
From the feedback of the community and projects, we found out that the community is interested in Mask Network’s ITO, and although ITOs can be launched permissionlessly, they still want help from Mask Network. After thoughtful consideration, Mask Network will introduce a community voting mechanism. Apart from permissionless ITOs, we hope the community voting mechanism will help projects gain better exposure while benefiting the Mask Network ecosystem as a whole.
Mask Network will initiate an ITO review committee to conduct a preliminary review process for every project that applies for an ITO. We also welcome community members to refer more outstanding projects to us.
The ITO review committee will be formed by members of Mask Network and community members who hold more than 3,000 $MASK, the term of office of each member lasts 15 days, and members can withdraw freely during the period of re-examination. In the future, Mask Network will fully return the power of ITO governance back to the community. The application to the autonomous ITO review committee will open soon.
All projects that passed preliminary review will move forward to a vote that lasts 48 hours, the official Twitter of Mask Network @realmaskbook will share the voting link to users, $MASK holders could vote “Yes” or “No” on whether the project could launch an ITO. The total number of votes should meet the quorum, for now, the quorum is 100,000 Mask., with more than 66.67% approval ratio (Numbers could be changed in the future).
Mask Network will support ITO projects that successfully passed the community voting.
The methodology is actually the same as participating in the offerings on other platforms, it requires users’ insight to distinguish the quality and potential of the project. There could possibly be panic buying circumstances when ITO begins, so users need to get their internet ready and have a sufficient gas fee.
We hope the community voting mechanism will produce the next great ITO projects while giving more projects a chance to conduct an ITO. In the future, we also plan to hand ITO governance back to the community and achieve full decentralized autonomy.
That’s all for the ITO, let’s wait and see Who is the Next?
Github https://github.com/DimensionDev
Twitter https://twitter.com/realMaskNetwork
Facebook https://www.facebook.com/masknetwork
Discord https://discord.com/invite/cKGW45g
Telegram (English) https://t.me/maskbook_group
Telegram （中文） https://t.me/masknetwork_cn


Currency Exchanger
Select your initial currency:
USD
Currency to exchange for:
EUR
CHF
JPY
GBP
AUD
Enter the amount to exchange:
Exchange!


Learning Objectives
- Distinguish between Sterilization, Disinfection and Antiseptic
- Describe the order of microbial resistance to control methods
- Describe the different types of heat
- Explain the differences between methods of radiation
- Describe filtration
- Describe how osmotic pressure controls microbial growth
- List the properties of an effective chemical agent
- Explain how phenol coefficient works
- Characterize each of the different types of chemicals used to control growth
- Explain how antibiotics were discovered
- Give the characteristcs of antibiotics
- Describe the mechanisms by which antibiotics kill bacteria
- Explain what antibiotic resistance is and how it arises
- Describe the mechanisms of antibiotic resistance
Once it was determined that microorganisms exist and they are capable of causing disease, the medical community scrambled to devise ways to control the presence and growth of these organisms. Beginning with routine hand washing to sanitation to aseptic surgical techniques, the science of microbial control dominates our lives. We have all sorts of odd ideas about what is free of microbes and what is not.
Insert first portion of Pasteur video here?


Published:
Last Updated:
Tests to run in different browsers to demonstrate what's rendered as fall back content for broken images.
As an additional test, add a set height and width to images to show how that may change what fall back content, if any, is rendered.
aria-labelledby text


Just fill in your namenad your message. All other fields are optional. Feel free to give us your address if you want some freebies send by post.
The fields with an asteriks(*) is required fields.


?«ft
PLANTS
OF
JAMAICA
NEW
YORK
BOTANICAL
GARDEN
362116
Foothills
or
the
John
Crow
Mountains,
east
or
Seamen’s
Valley,
Portland.;
altitude
200-425
meters
ņ7)
/
.£,
william
r.
maxon
\„
.
No-
oC
is>
A.
ELLSWORTH
P.
KILLIP/CoUectors
February
/
I92G
01362116
Legend -
Level of confidence that token is an accurately-transcribed word
extremely low
very low
low
undetermined
medium
high
very high


#### Bite Sized Web Development ### Class 1 - Intro to HTML/CSS/JS ---
Pre-Class Setup:
A laptop is required to follow along properly
Connect to the Wifi: QuailHillCC - Password: 123456
You'll need a coding focused text editor, if you don't have one, I recommend Atom
https://atom.io
Firefox (recommended) or Chrome
## Class Goals - Learn the different roles of HTML, CSS and Javascript in building a website. - Build and style a basic website using HTML, CSS and Javascript. - Run and view the website on your computer.
## Building Blocks of a Website Every website on the internet is made up of the same 3 basic building blocks: HTML, CSS and Javascript.
## What is HTML, CSS, and Javascript? - HTML defines the **structure** of a website. - CSS defines the
styling
of a website. - Javascript defines the
*functionality*
of a website.
## HTML ```
Hello World
Link to my website
```
Hello World
Link to my website
## CSS ``` p { font-weight: bold; } a { font-size: 16px; color: orange; } img { display: block; margin: auto; } ```
Hello World
Link to my website
## Javascript ``` function swapText() { var x = document.getElementById("js-title"); if (x.innerHTML === "Hello World") { x.innerHTML = "We Did It!"; } else { x.innerHTML = "Hello World"; } } ``` ```
Hello World
```
Hello World
Link to my website
## Let's Get Developing ```
MacBook Zero
Nothing is Everything
Learn more
Buy
```
## Separating out the CSS - Uses the
tag - Can link to a local file or a file on the internet via a url - More organized code means less developer headache ```
```
## A Taste of Javascript ``` ```
## Next Class: Diving into HTML - Classes and Ids - Nesting HTML - The All Powerful ```
``` element - Videos, iframes, tables, HTML tags for everything! - Play a Game: What Tag Would You Use?
## Homework - HTML: up to https://www.w3schools.com/html/html_elements.asp - CSS: up to https://www.w3schools.com/css/css_colors.asp - Javascript: https://www.w3schools.com/js/js_statements.asp up to JS_statements - Tinker with HTML/CSS, try to recreate 1 piece of your favorite website.


Choose your beans:
House Blend Shade Grown Bolivia Supremo Organic Guatemala Kenya
Type:
Whole bean Ground
Number of bags:
Must arrive by date:
Extras:
Ship to:
Name:
Address:
City:
State:
Zip:
Phone:
Customer Comments:


Overview
Update settings for the SugarBPMTM engine
Summary
This endpoint updates settings for the SugarBPMTM engine
Request Arguments
| Name |
Type |
Description |
Required |
| data |
array |
Key/value map of config keys and their associated values for the SugarBPMTM engine to update |
false |
Response Arguments
| Name |
Type |
Description |
| success |
boolean |
Result of update |
| data |
object |
Key/Value map of config keys and their new values |
Response
{
"success":true,
"data":
{
"logger_level":"critical",
"error_number_of_cycles":"10",
"error_timeout":"40"
}
}


package kryo
package for Kryo serialization support
- Alphabetic
- By Inheritance
- kryo
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Type Members
-
implicit
class
DictionaryIO
extends AnyRef
Implicit class for dictionary I/O function.
-
class
DictionaryStream
extends AnyRef
class for dictionary I/O function.
Value Members
-
object
KryoWrap
An Kryo Instantiator using ScalaKryoInstantiator.
-
object
MorphemeSerializer
extends Serializer[Morpheme]
KryoSerializer object for Morpheme class
-
object
RelationSerializer
extends Serializer[Relationship]
KryoSerializer object for Word class
-
object
SentenceSerializer
extends Serializer[Sentence]
KryoSerializer object for Sentence class
-
object
WordSerializer
extends Serializer[Word]
KryoSerializer object for Word class


If you don't have five gallons of homemade kraut in your kitchen, I don't even know what you're doing with your life.
12/15/2014, 6:25:21 PM
Favs: 5
Retweets: 1
link--- layout: tweet ---
If you don't have five gallons of homemade kraut in your kitchen, I don't even know what you're doing with your life.
12/15/2014, 6:25:21 PM
Favs: 5
Retweets: 1
link


{% extends "layouts/base.html" %} {% from "macros/variant.html" import compounds, gt_call %} {% block body_content %}


{% extends "account/base.html" %} {% block head_title %}change password{% endblock %} {% block content %}
your password is now changed.


http://lee.greens.io/sql_injection_slides/
Lee Green
image credit: http://xkcd.com/327
Vulnerabilities are present when user-supplied data ceases to be treated as data, and is executed in some fashion.
An attacker is said to have injected a command into the data stream, often by escaping or encoding it.
The manner of injection and execution is different for each type of vulnerability.
# bad.
m = Model.where("name = '#{params[:name]}'").first
# better.
m = Model.where('name = ?', params[:name]).first
m = Model.where(name: params[:name]).first
valid_sorts = {
'name_asc' => 'name ASC',
'name_desc' => 'name DESC',
'color_asc' => 'color ASC',
'color_desc' => 'color DESC',
}
user_input = params[:sort]
# default to 'name ASC' on bad input
sort_key = valid_sorts[user_input] || 'name ASC'
order_clause = valid_sorts[sort_key]
An error message can be the foothold that an attacker needs to hone in on a vulnerability.
We should never show the user an error message directly from the DB -- or a stacktrace!
image credit: http://xkcd.com/463/


Adapting app for iPad with UISplitViewController
Apple promotes iPad as the primary computer for regular users. This trend is visible during the last couple of years. More and more users start to use iPad as the main device. I think it is essential to support iPad screens and efficiently use that space. This week we will talk about adapting apps for iPad with the help of UISplitViewController.
Adaptive presentation
As a part of iOS 9 SDK, Apple released an adaptive “show” method on UIViewController. We have to use this method to present another UIViewController, here is a quote from Apple Documentation which describes how it works:
You use this method to decouple the need to display a view controller from the process of actually presenting that view controller onscreen. Using this method, a view controller does not need to know whether it is embedded inside a navigation controller or split-view controller. It calls the same method for both. For example, a navigation controller overrides this method and uses it to push UIViewController onto its navigation stack.
This method uses the Responder Chain pattern to find the object which overrides the “show” method to run it. For example, the UINavigationController overrides “show” method and calls the “pushViewController” method. When your UIViewController wrapped in UINavigationController, the “show” will find UINavigationController’s “show” method in Responder Chain. In the case when there is no overridden “show” method, it presents UIViewController modally using root UIViewController.
UISplitViewController
Apple provides us with the UISplitViewController which uses the UIViewController containment feature to show UIViewControllers in Master-Details flow side-by-side. UISplitViewController uses adaptive “show” and “showDetailViewController” methods together with trait collection to understand when there is enough space to show UIViewControllers side-by-side or shows the master UIViewController only.
Let’s take a look at the UISplitViewController usage sample.
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
32
33
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
let splitViewController = UISplitViewController()
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
let masterVC = MasterViewController()
masterVC.delegate = self
splitViewController.preferredDisplayMode = .automatic
splitViewController.viewControllers = [
UINavigationController(rootViewController: masterVC),
UINavigationController(rootViewController: EmptyViewController())
]
window = UIWindow(frame: UIScreen.main.bounds)
window?.rootViewController = splitViewController
window?.makeKeyAndVisible()
return true
}
}
extension AppDelegate: MasterDelegate {
func start(_ show: Show) {
let detailsVC = DetailsViewController(show: show)
splitViewController.showDetailViewController(detailsVC, sender: self)
}
}
extension AppDelegate: UISplitViewControllerDelegate {
func splitViewController(_ splitViewController: UISplitViewController, collapseSecondary secondaryViewController: UIViewController, onto primaryViewController: UIViewController) -> Bool {
return true
}
}
Apple recommends using UISplitViewController as window’s root ViewController. By passing an array with two UIViewController, we set Master-Details flow. You can use the “show” method to present UIViewController in the Master part of UISplitViewController or “showDetailViewController” to present in Details part. When you are running UISplitViewController on iPhone, there is not enough space and it collapse Details controller. In this case, “showDetailViewController” method works as the “show” method and present UIViewController in the master part.
The UISplitViewController has several configuration properties like “preferredPrimaryColumnWidthFraction” and “maximumPrimaryColumnWidth” which give us opportunity to setup needed presentation. Another interesting property here is “preferredDisplayMode” field. It has several options like allVisible, primaryOverlay, primaryHidden and automatic. By using this property, you recommend display mode to UISplitViewController, but it can ignore it in the case when there is not enough space.
UISplitViewController has a UISplitViewControllerDelegate field, where you can set your own delegate object. By using a delegate object, you can override some default behaviors of UISplitViewControllers. For example, you can replace “show” and “showDetailViewController” methods implementation with your custom one, or implement “collapseSecondary” method where you can decide when you have to collapse or expand Details UIViewController.
Conclusion
This week we discuss how easily we can adapt our apps to iPad screens by efficiently using all the space.


{{.Title}}
- ^
- matches the start of the word
- $
- matches the end of the word
- .
- matches any single character
- [aeiou]
- matches any single vowel
- [^aeiou]
- matches any single non-vowel
- ee|oo
- matches either ee or oo
- (ee|oo)t
- matches either ee or oo followed by a t (beet, toot, etc.)
- [a-f]
- matches any single a, b, c, d, e, or f character
Complete Syntax.
Results ({{.Count}})
{{range $k, $v := .Matches}}
- {{$v}}
{{end}}


Boot Camp Coding Quiz
Let's see what you've learned so far. Click Start to Begin!
Answer A
Answer B
Answer C
Answer D
Start Quiz