{% call macros.panel("info", "Step 2 - expose Mailu to the world") %}
A mail server must be exposed to the world to receive emails, send emails, and let users access their mailboxes. Mailu has some flexibility in the way you expose it to the world.
Among Mailu services, the front server is the one accepting connections, be it directly from the outside world, through a reverse proxy or in any complex configuration that you might want to setup. It needs to listen on some IP addresses in order to expose its public services. You must at least setup an IPv4 or an IPv6 address if you wish to access Mailu.
Warning You must use specific addresses, please
avoid generic all-interfaces addresses like <IP_ADDRESS>
or ::
.
You server will be available under a main hostname but may expose multiple public
hostnames. Every e-mail domain that points to this server must have one of the
hostnames in its MX
record. Hostnames must be coma-separated.


Sítio e Espaço
The concept of a ‘‘death of distance’’ made great headlines when Internet rhetoric was at its height. Its grandchild is the concept of ‘‘anytime, anywhere learning.’’ This idea sounds attractive and uncontroversial—until one realizes that it describes a point-to-mass distribution model of learning that overlooks the significance of place and the localization of knowledge. Learning depends on place, time, and context. An exclusive focus on schools and colleges as sites of learning and the distribute-then-learn model of e-learning both fail to exploit these more complex geographies of learning. As Seely Brown and Duguid emphasize in The Social Life of Information, a lot of what we learn is remarkably local: history, agriculture, politics, art, geology, viticulture, forestry, conservation, ocean science. A great deal of learning also takes place in what these authors describe as ‘‘an ecology of local or regional sites of professional excellence: research labs, hospitals, architects’ and design offices, Web design studios, and the like—anywhere, indeed, that people gather together to work. Knowledge as it grows is necessarily social, the shared property of extended groups and networks.’’37 All spaces, places, and communities that foster complex experiences and processes are potential sites of learning. New geographies of learning need to be based on redesigned configurations of space, place, and network that respect the social and collaborative nature of learning—while still exploiting the dynamic potential of networked collaboration. We need to design the spatial configuration of education so that it connects communities and learners that, right now, tend to be separated from one another.38 Breaking down the walls that divide ‘‘school’’ and ‘‘work’’ and ‘‘home’’ entails challenging cultural and institutional changes—but it can be done. The municipal infant-toddler centers and preschools of Reggio Emilia in Italy, for example, are internationally recognized as a model of ‘‘relational space’’ planning in which buildings are relatively neutral in the use of colors, much like an art museum, so that the activities and work of the children become the focus of the space. (Documentation is central to the Reggio approach, and the architecture is designed to encourage playful encounters for the preschool students.) In Reggio the built environment is considered a ‘‘third teacher’’—not only in the sense that it facilitates learning, but also because it explicitly acts as a connector that supports a networked, community-based organization and acts as a hub for the whole community. ‘‘In a relational space,’’ says the noted Italian design researcher Giulio Ceppi, ‘‘the predominant feature is that of the relationships it enables, the many specialized activities that can be carried out there, and the information and cultural filters that can be activated within the space.’’39 The design emphasis in Reggio Emilia is on relationships, rather than on what the space looks like. Educational theories change faster than the buildings they are tested in. Many middle-aged Europeans went to schools built decades earlier whose windows were set purposefully high so that children would not be distracted by the outside world. I spent my own teenage years in buildings designed by a Victorian prison architect; his expertise with security and iron bars persuaded the founders of Marlborough College that he was the ideal person to build a school for teenage boys. Maybe they were right—but I cannot recall being bothered by my school buildings one way or another. What I do remember (fondly, for the most part) are teachers and fellow pupils and some of the things we did together. What matters most to all learners is activity, not architecture. We all deserve to spend time in safe, pleasant, and comfortable surroundings, rather than their opposite. Beyond that, most buildings will do. What learning needs most is a lot more space, as well as time, than it gets right now. There’s no need to purpose-build huge numbers of schools and colleges. Fine calculations about square meters per child or the relative merits of discrete classrooms along corridors versus communal halls are secondary issues. We need double, triple the space we have now, for learning. The world is filled with abandoned or underused cinemas, gas stations, power plants, warehouses, and railway yards. We should commandeer them for learning. As I suggested in chapters 3 and 4, we can use the resource management systems pioneered in the logistics industry to combine learners and spaces in new ways and at new times.


--- layout: archive title: Zulip Chat Archive permalink: /stream/113488-general/topic/Concurrent.20lean.html ---
I've been thinking about what appropriate concurrency primitives can be used in pure lean. @Gabriel Ebner Do you see any problems with modeling task
in lean (being the same as thunk
)? It's not clear why this needs to be meta
.
Another possible concurrency primitive is fork : thunk A -> thunk B -> A x B
which runs the two thunks on separate threads and then returns the results. There is an obvious generalization here to peval : list (thunk A) -> list A
, not sure if this is better or worse than join
as a primitive. I'm not sure how to simulate these forking strategies with task
.
I hoped to get inspiration from ML and Haskell, but ML is too declarative (unit
functions everywhere) and Haskell has funny problems with laziness turning the evaluation order inside out. https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/parallel_haskell2.pdf
fork f g = let tf = task.delay t in let tg = task.delay g in (tf.get, tg.get)
?
task
is perfectly sound, and does not need to be meta. A possible model for task
is id
, and you should not be able to observe any differences from id
in pure Lean code.
Or less resource-hungry, fork f g = let tf = task.delay f in let y = g () in (tf.get, y)
Isn't the evaluation semantics off from id
though? You need thunk
to avoid evaluating the argument too soon
That's why I said pure Lean code. :smile:
Of course, task
hides nontermination and C++ exceptions.
One missing ingredient right now is task.delay_io : {α : Type u} (f : io α) : io (task α)
Neither can happen in non-meta
code though, right?
How is that different from task.delay
?
You can have nontermination without meta if you add axiom large_cardinal : 0 = 1
lol that's quite a large cardinal
Okay, I think I fixed the signature
Right now, there is also the slight performance problem that we serialize the thunk passed to task.delay
, and then deserialize it on the thread where it executes. From the last public state of the Lean 4 design document, this should be solved in Lean 4.
Well, you can break the VM in many ways using large_cardinal
, you don't need task
in fact you should be able to get nontermination even without task
in fact you should be able to get nontermination even without
task
New results from your master thesis?
No, maybe it's folklore... But you can just evaluate a false proof of well_founded in the VM
Ok, that's essentially the same thing as large_cardinal
, or sorry
.
right, that's my point - from a false axiom you can fake a wf definition to cause nontermination
(in the VM, which doesn't do reduction and so doesn't get stuck like #reduce
would)
What is the behavior of let f := task.delay f in ()
?
Does it just drop the thread?
What if you call task.get
twice?

What if you call
task.get
twice?
The first time you call task.get
, it will wait for the task to finish and return the result. The second time it will return immediately with the result. The code in the task is only executed once.
Ooh, that sounds like memoization
Maybe memoized
is definable after all...
It's what thunk
should sound like :laughing:
I think Leo said something about explicitly wanting thunk
to not be memoized, although I think it's a poor name if that's the intent
It's like memoization except that the code starts running immediately, and on another thread. C++ code has the ability to create tasks that do not start immediately though (in fact, that's even the default behavior).
Btw, we will most probably move those horrible impure init.util
functions into io
You can create delayed tasks with thunk (task A)
I guess
This will create a new task every time you evaluate the thunk, probably not what you want.
hm... task (task A)
? :)
Immediately creates a task on another thread...
but I guess if the real work is in the created task that won't be executed until you flatten
If you do task.delay (task.delay ())
, you first create task A, which immediately begins executing on thread 2. This task A then creates task B, which again immediately begins executing ()
on thread 3.
Oh, I see...
@Sebastian Ullrich I really like those non-io functions. As long as they are observationally pure there is no problem
Do you actually use them?
:)
I use timeit
and trace
all the time
Hmm, good to know I guess
Actually I've never used io
in pure code. It seems like a trap
I just realized that you can't even simulate them via unsafe_perform_io
, since that is meta.
Here's another missing task
primitive: Run f g : thunk A
, and return the first one that finishes
That's nondeterministic and hence unsupported by design.
The obvious problem is that they might not return the same thing, but cached
solves that problem handily
I think it should probably be renamed nondet
Did you see my beautiful typeclass for lifting these functions in the extended monad PR? Fortunately I found a more general monad class that subsumes it https://github.com/Kha/lean/commit/974fee78f75c8861477fba9143a49c8e08101b41#diff-f8e23e5e864df768277396e6f07b2809L67
@Sebastian Ullrich This does not help you if you want to do printf-style debugging in a pure non-monadic function, right?
Then you don't need any lifting, no? This is still with the current pure definition instead of in io
.
Is there a @[noinline]
or @[volatile]
attribute for these functions?
Right. You proposed the lifting functions as a replacement for the pure ones, that's what I was responding to.
Alternatively, you could accept a proof f () = g ()
to eliminate the nondeterminism. This is roughly equivalent to the cached
approach without boxing up the result
(This is not an unreasonable constraint, if it's not true you can just quotient the output type to make it true)
@Gabriel Ebner No, that was intended for correctly lifting "pure" scoping functions thunk A -> A
into thunk (state S A) -> state S A
, etc. But the same approach would be used for lifting io A -> io A
scoping functions, yes. The good thing is that with the latter, you can't accidentally forget the lift. Which is the main reason why I think the current definitions are pretty evil.
Ah, I see.
I think that using scoping functions to build an io
computation is certainly bad practice; the trace output should be expected to be nondeterministic
what is unrun
? That seems a bit paradoxical
unrun
has since been removed :)
Now that io_interface
is gone, is it impossible to non-meta write io
programs?
io
is non-meta now :)
yeah, but not really, it relies on a meta constant that is not actually meta for some reason
I think the idea was to not force users to annotate all io
functions with meta
. You can't prove anything about it, but it's still sound. The replacement for io_interface
is monad_io
.
Oh, I guess the idea is you should replace io_core
with your own implementation of monad_io_terminal
etc
How do you know it's sound? Writing an implementation is not trivial, I think
in particular there is a constructor that gives unbounded recursion in the monad
Which should be okay as long as there's no eliminator, no?
hm, I guess you can do some kind of coinductive trace thing if you don't want to have it be trivial
Oh cool I just noticed we have a random number generator in lean now
For soundness it should be enough to set io_core := λ _ _, unit
.
is unit
a monad in lean?
It's not even a type constructor...?
or I guess λ _, unit
There's also https://github.com/leanprover/lean/blob/efa9d7e110ff6389e8863551a4882c84dbcf8236/tests/lean/run/rebind_bind.lean
interesting. You are using do
notation with something that's not monad.bind
?
Yep, that's the main purpose of the test
mono_monad
? Reminds me of https://www.youtube.com/watch?v=8N_tupPBtWQ
Check it out:
meta def list.par_map {α β} (f : α → β) (l : list α) : list β := let fs := l.map (λ a, task.delay (λ _, f a)) in fs.map task.get #eval timeit "" ((list.range' 50000 10).map (λ n, (eratosthenes n).length)) -- 6.87s #eval timeit "" ((list.range' 50000 10).par_map (λ n, (eratosthenes n).length)) -- 2.78s
too bad it has to be meta
impressive! What keeps it in meta
?
Last updated: Apr 24 2020 at 19:02 UTC


%#
aStor2 -- storage area network configurable via Web-interface
Copyright (C) 2009-2012 ETegro Technologies, PLC
Vladimir Petukhov<EMAIL_ADDRESS>Sergey Matveev<EMAIL_ADDRESS>This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see


In the Forums tool, you can post messages about topics, and post responses to the messages of other participants.
On this page:
To post a message about a forum topic:
Post New Thread
. The Compose Forum
Message
screen will open.
Note: Pasting text from Microsoft Word directly into
the WYSIWYG editor may result in garbled output, even if the text
appears correct in the editor. Instead, to insert formatted text from
a Word document, click the Paste from Word
icon, and paste
using Ctrl-v
or Command-v
.
Some users have reported problems using Paste from Word
in
Internet Explorer 9; for best results, use a supported
browser. See
Which browser should I use?
Post Message
.
Note: If the forum or topic is moderated, your message will appear as "PENDING" until approved by a moderator.
Note: Depending on your role within the site, and how the forum creator configured permissions, you may or may not be able to post a response to another participant's message.
To post a response:
Reply
(to reply to the message) or Reply to Thread
(to reply to the first message in the thread).
Insert Original
Text
or Insert Original Message Text
(located above the
WYSIWYG editor).
Post Message
.
Note: If the forum or topic is moderated, your message will appear as "PENDING" until approved by a moderator.


Star Wars Films
Goals
- To use the Star Wars API to gather information about the Star Wars Films and display it in our application.
Information
Assignment
- Create an application that will have a list of star wars film names, along with the 'opening_crawl' as a description.
- You will be creating two seperate components.
Films
and FilmItem
- This component should be rendered when we click on the "Get Assignment" link in the Header.
Click the following link to see the data that this request will return. http://swapi.co/api/films.
Definition of Done
- If you can display each of the movies and the opening crawls, you have finished this assignment.
Hello
Goals
- To use the Star Wars API to gather information about the Star Wars Films and display it in our application.
Information
Assignment
- Create an application that will have a list of star wars film names, along with the 'opening_crawl' as a description.
- You will be creating two seperate components.
Films
and FilmItem
- This component should be rendered when we click on the "Get Assignment" link in the Header.
Click the following link to see the data that this request will return. http://swapi.co/api/films.
Definition of Done
- If you can display each of the movies and the opening crawls, you have finished this assignment.
Hello


Landing Page
Special Projects
This story is part of a series of specially designed stories that represents some of the best journalism The Post has to offer. Check out the rest of the special projects here.
TAYLOR JOHNSTON
12.6.18
Ohio University saw 10 times more residence hall bed bug cases in the 2017-2018 academic year than it had seen in previous years.
Chad Keller, the environmental health coordinator for OU Environmental Health and Safety, said over the decade before last school year, the campus averaged about 2.2 positive cases of bedbugs per year. Last school year, bed bugs were found in 28 cases.
“Now, last year was an aberration for us and it really got me wondering what was going on,” he said. “We went to almost a 10 fold increase over our previous yearly averages.”
The cases were scattered all over campus, Keller said.
Keller said the spike in increases last year might be due to popular party houses off-campus that students were going to.
“I don't know how you guys do it nowadays, but what we used to do when we used to go party off campus is that you would show up and there would be a coat room where everybody would throw their coats on a bed … and then people would go get their coats at the end of the night and pick their stuff up and leave,” he said. “I got a funny feeling it was something along those lines.”
“Now, last year was an aberration for us and it really got me wondering what was going on” - Chad Keller, environmental health coordinator
If residents suspect they might have a case of bedbugs, EHS asks them to report it to their resident assistant or resident director. EHS inspects the room to confirm whether bed bugs are present.
EHS also asks students to seek medical advice prior to them inspecting the room, he said.
“The reason being is that a lot of the cases that we get reported to us as potential bed bugs are actually something else,” Keller said. “... If they go to the doctor and the doctor says 'Oh, it's actually X,' then we don't need to go through and do an inspection and we don't put ourselves at risk of picking up whatever 'X' may be.”
If the inspection does find bedbugs, EHS preps the room for heat treatment, he said. The process can take two to eight hours.
“We have to literally go through everything in that room to find anything that is heat-labile, that will be destroyed or potentially explode,” he said. “Those items have to be visually inspected and then they are packed, bagged and taken either to a staff office to be stored until after the heat treatment process.”
During that time, the students are offered a temporary “sleeping chamber” with linens provided. The room is for sleeping purposes only, Keller said, and any changes of clothing students bring to the room must go through a dryer on high heat for 30 minutes.
The university also provides the students of affected rooms with Bobcat Cash to take care of the expenses that occur when using the dryers on their items, he said.
“The only thing that residents are looking at that is a nuisance for them is putting the room back together when we are all done because it is a mess and there just isn't a way around that,” he said.
Positive cases found over the past years have been found early in the infestation, Keller said. Cases rarely developed with a significant amount of bedbugs. Most inspections found about one to 10 bedbugs.
“The likelihood of transmission or spread to other locations is directly proportional to the amount of infestation that is in the room,” he said. “We almost never hit cases with high numbers of insects, it is always very low.”
In cases in which individual rooms are treated early, nothing else is done with the residence hall immediately, Keller said. During the next break winter, spring or summer break, EHS brings in canine units to check the residence halls, which is more efficient than Keller or one of his team members checking rooms.
“So if I go into a single on South Green to do a physical inspection, I'm looking at one to two hours to finish that physical inspection ... ,” he said. “Whereas a canine can come into this room and flip the room in 30 seconds to a minute and be back out to the next room.”
A physical inspection is about 70 percent effective, he said. The likelihood of Keller finding a bug in a room that may have a dozen is not very high.
EHS sees the most cases of bedbugs after the Halloween weekend or when students come back from their winter and spring breaks, he said.
Georgia Hilliard, a sophomore studying biochemistry said it makes perfect sense that the bedbug occurrences happen after breaks and Halloween.
“For spring break, a lot of people go places like hotels and a lot of time try to go with a lot of people in a big group, which is cheap” she said. “For winter break, it doesn’t make sense because a lot of people either stay here or go home.”
Shelby McQuigg, an undecided freshman, said she doesn’t take any precautions when it comes to bedbugs because she doesn’t know much about them.
 “If the house is gross, I find a way back.”
So far this academic year there has been a total of two positive cases of bedbugs in the residence halls, one in Sowle Hall and the other in Adams Hall.
“If we continue at the current rate, we will have 5 this year, not 28,” Keller said.
Landing Page
This story is part of a series of specially designed stories that represents some of the best journalism The Post has to offer. Check out the rest of the special projects here.


This is a place to try out different ideas for web site implementation per the Device Agnostic working group
New To Do Item
Field Errors
This is a place to try out different ideas for web site implementation per the Device Agnostic working group


EduBits is a community powered platform to share knowledge it is a mobile application which allows you to search and find the concise definition of anything related to any subject under the globe. Unlike a traditional
website or a search engine, the EduBits will only display the minimal information that a user need to know about the search item.
Edubits is not possible without your help. You can create an account on Edubits and add information about your fevourite topic to edubits.
The Edubits app is still under development, morre features like topic images, more info links, topic attribution etc are coming soon...


Run vignette("salic") from the R console for an introduction. See below for a summary of the core functions.
see cust
, lic
, sale
for
information about expected license data formats
use data_check
to ensure correct formatting for state
license data
use rank_sale
to condense sales to 1 row per customer-year
use make_history
to produce a history
table
that facilitates flexible querying about customer trends
see history_check
to run checks for the the output of
make_history()
use label_categories
& recode_agecat
to
prepare the history table
use scaleup_part
to account for missing values in
segments such as gender, age, etc.
use est_churn
to get churn rates per year
use format_result
to stack metrics into a
dashboard
data frame


--- title: "Doctoral Consortium PC" updated: 2015-09-17 12:00:00 layout: default group: organization menu: sub ---


Student who said Muslims should be 'wiped off face of earth' facing jail
York St John University student Louis Duxbury, 22, claimed he was only talking about extremists and terrorists - but it was not his first inflammatory anti-Islam remark
by Barnaby KellawayA student who posted a video on Facebook saying Muslims should be "wiped off the face of the earth" is facing being jailed.
Louis Duxbury, 22, issued the "call to arms" during a 17-minute rant made shortly after a series of terrorist attacks in 2017.
A social media user at York St John University, where Duxbury was an undergraduate, saw the post and reported it to the police.
Giving evidence at his trial last week, Duxbury claimed he was exercising his right to free speech.
However, a jury at York Crown Court yesterday found him guilty of inciting religious hatred after deliberating for only half an hour.
The Recorder of York, Judge Sean Morris granted him bail until November 29, when he will be sentenced for the offence.
He warned him: "People who incite religious or racial hatred create terrible trouble for our society. It will be a custodial sentence."
The court heard Duxbury was first reported to police about his far-right views as a 15-year-old schoolboy in 2015.
Teachers reported him for an inflammatory anti-Islam comment he posted online following the murder of Fusilier Rigby, it was heard.
Giving evidence at his trial, Duxbury claimed that the 2017 video was a “rant”, adding he believes in a diverse, multi-cultural society.
He claimed he was only talking about extremists and terrorists and not Muslims in general and that he was neither racist nor fascist, claiming he was apolitical.
Defence barrister Glenn Parsons said he could say little in mitigation, but asked for Duxbury to have time to set his affairs in order.
He will appear at the same court next Friday.


This is a test website. Nothing is charged.
(with credential #1)
(with credential #2)
(with credential #1)
(with credential #2)
Enroll Credential will make the following request:
const publicKey = { rp: { id: 'rsolomakhin.github.io', name: 'Rouslan Solomakhin', }, user: { name: 'user@domain', id: Uint8Array.from(String(Math.random()*999999999), c => c.charCodeAt(0)), displayName: 'User', }, challenge: textEncoder.encode('Enrollment challenge'), pubKeyCredParams: [{ type: 'public-key', alg: -7, // ECDSA, not supported on Windows. }, { type: 'public-key', alg: -257, // RSA, supported on Windows. }], authenticatorSelection: { userVerification: 'required', residentKey: 'required', authenticatorAttachment: 'platform', }, extensions: { payment: { isPayment: true, }, }, }; const publicKeyCredential = await navigator.credentials.create({publicKey}); window.localStorage.setItem( 'credential_identifier', btoa(String.fromCharCode(...new Uint8Array( publicKeyCredential.rawId))));
Pay $0.01 will make the following request:
const instrument = { displayName: 'Troy ····', icon: 'https://rsolomakhin.github.io/pr/spc/troy.png', }; new PaymentRequest([{ supportedMethods: 'secure-payment-confirmation', data: { credentialIds: [Uint8Array.from( atob(window.localStorage.getItem('credential_identifier')), c => c.charCodeAt(0))], instrument, challenge: textEncoder.encode('network_data'), timeout: 60000, payeeOrigin: window.location.origin, }, }], { total: { label: 'Total', amount: { currency: 'USD', value: '0.01', }, }, });
Login will make the following request:
const publicKey = { challenge: textEncoder.encode('Authentication challenge'), userVerification: 'required', allowCredentials: [{ transports: ['internal'], type: 'public-key', id: Uint8Array.from( atob(window.localStorage.getItem('credential_identifier')), c => c.charCodeAt(0)), }], }; navigator.credentials.get({publicKey});
Based on the Secure Payment Confirmation explainer.


--- layout: post title: "Dude surfing indoors" --- A new store opened up over at the Florida Mall with an indoor surfing thing-a-ma-bob. Here's a video I took with my cell phone of some guy trying to surf it. Link to the video on YouTube.


Missing Qld mother, children found safe
A 27-year-old missing Queensland mother, her seven-year-old son and 10-month-old baby daughter have been found safe and well, police say.
The mother had left a home in Coombabah on Tuesday morning to drive to the Sunshine Coast, and was missing until Thursday night.
Police expressed their thanks to the public for their assistance.


"use strict";
/**
* Onload Function
* @author Oliver Earl<EMAIL_ADDRESS>*
* This function first checks for an patient ID (pid) parameter in the URL - this would usually be provided by the Java
* application when it sends out invitations for a user to sign up on the Diabetes Assistant. It then injects this into
* a hidden value in the registration form, that is used by the backend.
*
* If this value isn't present in the URL, it hides the rest of the content to stop someone from signing up without an
* 'invitation'. Obviously, someone can falsify a value in the URL if they wanted to - but this is protected by the
* backend anyway, and they should just get an error if they tried to create a user for a patient that already has a
* user assigned to it.
*
* The function also takes care of redirecting the user back to the application if they happen to be logged in.
*/
window.onload = function() {
if (Cookies.get('token')) {
window.location.href = "app.html";
}
let invite = new URLSearchParams(window.location.search);
if (invite.has('id')) {
document.getElementById('scripts-enabled').style.cssText = 'display:block';
$('#invite').remove();
let $pid = invite.get('id');
document.getElementById('pid').value = $pid;
}
};
(function ($) {
/**
* Register Function
* @author Oliver Earl<EMAIL_ADDRESS>*
* Sends the user's provided information, along with the Patient ID (PID) value injected into the form to the backend.
*
* If it fails validation, or the user attempts to sign up with an already registered patient ID, it will display
* an error dialogue. Otherwise, it'll redirect the user back to the login screen.
*/
$('#register').submit(function(e) {
e.preventDefault();
if (document.contains(document.getElementById('error'))) {
document.getElementById('error').remove();
}
let form = $(this);
let url = 'api.php';
$.ajax({
type: form.attr('method'),
url: url,
data: {
username: $('#username').val(),
password: $('#password').val(),
email: $('#email').val(),
firstName: $('#firstName').val(),
lastName: $('#lastName').val(),
pid: $('#pid').val()
},
success: function() {
alert('Registration successful! Redirecting you to the login screen.');
window.location.href = 'index.html';
},
error: function(data) {
authError(data.responseJSON.message.toString());
}
});
/**
* authError Helper Function
* @author Oliver Earl<EMAIL_ADDRESS>* @param error - Error from AJAX response
*
* This function simply prints out a Bootstrap danger alert to the DOM, containing some error information.
*/
const authError = function(error) {
let form = $('#register-form');
let danger = `<div id="error" class="alert alert-danger" role="alert"><strong>Error: </strong>${error}</div>`;
form.prepend(danger);
};
});
})(jQuery);


Awami League seeks global ‘partnership’ for Bangladesh’s development, Rohingya solution
by bdnews24.comThe Awami League has sought “partnership” from friendly countries for overcoming the challenges of Bangladesh’s development and resolving the Rohingya crisis.
Foreign Minister AK Abdul Momen, on behalf of the ruling party briefed Dhaka-based foreign diplomats on the contemporary and political issues of Bangladesh, on Thursday. He said without “partnership and collaboration it’ll be difficult to achieve the goals because challenges are daunting.”
The international affairs sub-committee of Awami League organised the briefing at a Dhaka hotel.
Road Transport Minister and party General Secretary Obaidul Quader, Education Minister and party Joint Secretary General Dipu Moni, and Chairman of the sub-committee Muhammad Zamir also interacted with the diplomats at the event moderated by Prime Minister’s Special Assistant Shah Ali Farhad.
They answered the diplomats in a closed-door session.
The foreign minister, at the opening briefing, highlighted Bangladesh’s progress in the last 10 years, particularly in poverty reduction.
He said Prime Minister Sheikh Hasina has set a few goals to make Bangladesh poverty free, prosperous and a developed country by 2041. “We need your help and support to achieve those goals," he told the diplomats.
“The way we are moving I have no reason not to believe that we will achieve the goals. But that will need a lot of investment and more exports. We need to diversify our exports. We need to use our best resource - manpower,” Momen said.
“We need to gainfully employ our manpower. These are no easy task. These are challenges and for that our own resources are not enough.
“We would be needing help from our partners. We would like to have a close partnership with our friendly countries. We like to have a close partnership with the government and the business sector.”
The minister sought their support for addressing the challenges of climate change and to ensure gainful employment of the large number of youths.
He also sought their cooperation in observing the ‘Mujib year’ from March 17, 2020 to March 17, 2021, the 100th birth anniversary of the father of the nation Bangabandhu Sheikh Mujibur Rahman.
“We will have a big event on March 17. We have invited dignitaries from across the globe. Many have already confirmed their attendance. We need your help and support so that some of the dignitaries can come and share their observations with us.”
SUPPORT FOR ROHINGYAS
The foreign minister also solicited the support of the international community for resolving the Rohingya crisis.
“We are giving them temporary shelters. It’s a big burden on us. Our fear is if this problem is not resolved quickly, there is all possibility that pockets of radicalism will rise. Radicals and terrorists know no boundary. They have no faith. They have no country. They can only create uncertainty.
“This problem is created by Myanmar and must be solved by Myanmar,” Monen reiterated.
“Bangladesh is ready to repatriate them. The problem is that they (Rohingya) don’t trust their government,” he said, adding that Bangladesh has made two proposals to Myanmar to address this trust issue, but “Myanmar neither accepted nor rejected those proposals”.
“First we suggested that they allow some of the Rohingya leaders for a site visit so that they can go and visit the place where they will go back to.
“Once they feel reassured, they will tell their people in Cox’s Bazar those stories. Then they others will go back voluntarily,” he said, “We want to send them on a voluntary basis after ensuring their safety and security”.
The other proposal, he said, was to ensure military and civilian observers from the ASEAN countries to monitor the repatriation and reintegration.
The foreign minister also urged the diplomats to put more pressure on Myanmar to quickly resolve the crisis.
“They (Rohingya) are not necessarily Bangladesh’s problem only. They are the problem of the global community,” Momen reminded the foreign diplomats.


Let's say we have 2 websites:
Go to Events → Events menu and select one of your event record to configure.
At Allowed Websites select the websites, where your event should be available on, e.g. example1.com.
Note that you can only select chosen company's websites. To select any websites leave Company field empty.
Open the /events page of your website and see the configured events. Note that without this module there is already a rule based on event's company - you can only see events with no company specified or events whose company is child of current user's company. But with this module installed you have also the ability to filter events per website - you can only see events with no Allowed Websites specified or current website's events
Contact us by email or fill out request form


Summer 2017
1 — Rejected PRs
krb5 - fixing compiler warnings
1 — New projects started
{nfs-vagrant}
1 — Analyzed BZs
{1199363, 1477231, 1463665}
5 — Upstreams contributed to
{krb5, gssproxy, python-gssapi, ding-libs, libverto}
8 — Open PRs
{krb5: 1, gssproxy: 3, python-gssapi: 4}
16 — Accepted PRs
{krb5: 1, gssproxy: 6, python-gssapi: 3, ding-libs: 5, libverto: 1}
100 — Percent open source and publicly available
There were two parts to the draft: an extension of the syntax in the direction of a future GSS v3, and an update to the semantics of channel bindings. The former part involved extending the GSS calls towards a builder interface, allowing options to be specified earlier via gss_create_sec_context(...) and gss_set_context_flags(...). The latter part involved using these newly provided flags in gss_init_sec_context(...) and gss_accept_sec_context(...) (and the underlying mechanisms) to allow krb5 to expose a channel binding return flag only on success. This will only be exposed in gss_accept_sec_context(...), as gss_init_sec_context(...) requires updates to the krb5 protocol. The PR will not merge until updates to the draft are complete.
SSH provides GSS as an authentication method, allowing it to do Kerberos authentication. SSH will also forward the primary credential to the remote host, by specifying GSSAPIDelegateCredentials yes. Because Fedora carries patches to read /etc/krb5.conf for the default CCache name and SSH sets KRB5CCNAME to the specified credential and not the entire collection, kinit will refuse to add another credential to the subsidiary ccache.
Don't set KRB5CCNAME unless the CCache name is not from /etc/krb5.conf. Current patch
reporting: tibbs; fixing: jjelen; guidance & advice: rharwood
After setting up Kerberized NFS in Vagrant, mounting a share will work, but ls will hang when trying to view the mount contents. However, strace ls, ltrace ls, and gdb ls will not hang. Restarting rpcbind on the server appears to fix the problem and the issue only happens after initial server boot. The hang occurs because rpc.idmapd quits due to a file descriptor being closed.
Initialize daemon before opening the relevant file descriptors: patch
fixing: smayhew; debugging help: sdickson
If the user acquires tickets for two Kerberos realms (e.g., FEDORAPROBJECT.ORG and REDHAT.COM) some services using the non-primary realm will fail to authenticate. This was manifested via kswitch -p<EMAIL_ADDRESS>then connecting to saml.redhat.com worked while errata.devel.redhat.com failed. The cause was due to not allowing DNS lookup of the Kerberos KDC by default, so fallback logic was used. Hence saml.redhat.com mapped to REDHAT.COM, matching the credentials, whereas errata-web-01.host.prod.eng.bos.redhat.com. mapped to HOST.PROD.ENG.BOS.REDHAT.COM.
This is the desired behavior as DNS lookups are a security issue.
reporting: bnocera; reproducer: debarshir; pursuing upstream: rharwood
In order to make the test suite more flexible and to have a better debugging experience, a similar interface to krb5 was provided. This includes --debug-all to debug all test cases, --debug-gssproxy to stop before running the test cases, --debug-cmd to specify how to debug, --debug-num to debug a specific test case, --timeout to specify a test case timeout limit, --valgrind-cmd to specify arguments to valgrind, and --force-valgrind to require all test cases be memory checked. Also, test case status messages were clarified with changed meaning of the output to be color agnostic, along clearly displaying expected return value versus actual return value.
In support of Issue#176, PR#203 and PR#207 were opened against gss-proxy, PR#19 was opened against libverto, and a request for the packaged popt to be updated against an upstream patch was made. This involved a lot of time spent in valgrind and gdb tracking down leaks, but was made easier with the test suite extensions. There remains work to do checking libverto and the testsuite/client library for leaks.
In order to help debug intermittent failures in gssproxy, PR#205 was opened to allow the client to timeout versus hanging forever and add better logging to the server. This will help tibbs record useful information from his intermittent issues seen on a large deployment. In addition, changes were made to error logging in PR#204 due to the semantics of upstream ini_config and eventually in the behavior around config file reading in PR#202, after review and updates shipping to ini_config.


python3 thunder.py destroy
Your virtual environment must be active to use thunder.py:
source ../env-tctf/bin/activate
python3 thunder.py create thunder/a4error
Activate the service account given to you. You MUST do this, or the level will not work as intended.
gcloud auth activate-service-account --key-file=start/a4-access.json
In this level, look for a file named "secret.txt," which is owned by "secretuser." Use the given compromised credentials to find it.
Test the permissions of the given credentials using the test-permissions.py script.
The credentials have the permission cloudfunctions.functions.list
List the cloud functions in the project:
gcloud functions list
URL endpoints for HTTP-based Cloud Functions have the following format:
https://[region]-[project-id].cloudfunctions.net/[function-name]
Retrieve the URL via curl
The function is protected and requires authorization. Attempt to access it using the service account's token:
curl [URL] -H "Authorization: Bearer $(gcloud auth print-identity-token)"
The function takes an argument. Try reading a random file by adding "?file=[filename] to the end of the url
The cloud function throws an error when a non-existent file is queried. Cloud function runtime errors are logged. If one has access to the logs, the error message can be read.
Read the cloud function related logs:
gcloud functions logs read
The function logged the HTTP request that it attempted to make. See if there's anything useful in the request.
An access token was included in the logged HTTP request in the "Authorization" header. The token can be used to access any API functions that the function's attached service account had permission for.
Example:
GET https://www.googleapis.com/storage/v1/b/a4-bucket-884260860342/o/file3.txt?alt=media Authorization: Bearer ya29.c.EqEBZwepkOFych006VjfVDFAJxSb5ErvGmBsVqq8S83NiJXZ_jaQsZlW0lWTP0q6Hs44ICf6mUkDYhOBG5H15A-lsIB-X9bMA-cJ9cl0mt-TU0q7vZjb0qdSUbYasDSTMBXKNzgkX_S_8ipAWVfg4HXfs_pb1Iid7O_QSxl1FeueTEQ6ns96Z1uRiF2qYQJlTyrWRKO3mPPGE1R9C0Nf9en2iFM
Check the permissions of the access token using the test-permissions.py script by supplying an access token instead of a JSON credential file.
Example:
python scripts/test-permissions.py ya29.c...2iFM
The token has the compute.instances.setMetadata ability, which can be used to add allowed ssh keys to the metadata of instances.
If you list the instances on the project using the start credentials, you will see there is an instance running. Try to gain access to it.
gcloud compute instances list
gcloud compute instances describe [instance-name]
Use the instances.setMetadata function of the Compute Engine REST API to set up an ssh key for you to use to login to the instance.
To generate an SSH key to connect to the instance we are creating, run the following in Cloud Shell:
ssh-keygen -f ./a4_key -t rsa -b 2048
chmod 400 a4_key
The public key is stored in a4_key.pub
The "fingerprint" that is needed to make the request can be found under "metadata" when running:
gcloud compute instances describe [instance-name]
Make a request calling instances.setMetadata to add your SSH key to the instance with the username "ubuntu" using the cloud function's access token
Example:
curl --request POST \ 'https://www.googleapis.com/compute/v1/projects/gcp-vulnerable/zones/us-west1-b/instances/a4-instance/setMetadata' \ -H 'Authorization: Bearer ya29.c.EqEBaQcnTsriJ_17rOa4mN05JHhC9hfXMp-T10gmdHWkC-xXB-Gfc27tFqgGYr4pGC8-8OeHe6acRjd3AHGBeZOWSEGUrKe9blwZK2bxiKXDoQJoiv7EbAxhdXC_wpfQtA12kmxjDArI0iT8GDJDf5qgYRLlIoJBnFRC2viaenbpsNfqw2ibu98wGp8OEhINDXn2m3Vnx-2tfoP6SHP8ysVBv7Q' \ -H 'Accept: application/json' \ -H 'Content-Type: application/json' \ --data '{ "fingerprint": "9Qs5OzliW7s=", "items": [ { "key": "ssh-keys", "value": "ubuntu:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDKM2TM8CB7xUGD3/VxDCGOzCW1PCvaINfDChnYb0rJ4WWEuB7dFWc5R4NfycMDRCBGLWVlUWRqP0M4MSQB14SkuxuFtgkBL18mHipLR7LvXOL7YOrurfoi8RgNU0TFEogbTUGkM7XNc1EVma4kJ7vs8sBLukiZT0gwBms1Zi0s3Xen8lwTEDPvD6XJtoA+RT0zsVCDPalWv4SqfOxuKaY1SOqhqa4DQaEvDmIGZzZpbKcS82hEQGreNMAodWDind2nTdOMbS1gbHjxcZVZkWKssi9R2r2eFpSrrmaa98uo+5/sK0eoqqJNS1Ua7L8W1Dj1Mp0ucYW53yzexk8uCl+H ubuntu" } ] }'
SSH into the instance:
ssh -i a4_key ubuntu@[EXTERNAL-IP]
Check the directories of the other users
cd .. ls
The secret is stored in the home file of the user "secretuser"
cd ~/../secretuser cat secret.txt
It is common practice for a server application to perform input validation on any data that might be received to prevent injection attacks and to
emit an error when something is wrong. A developer must be sure that the error messages and their handling do not reveal any additional information that an
attacker can leverage. For example, timing and behavior discrepencies in handling successful and unsucessful login attempts can be leveraged to
perform username enumeration or execute Blind SQL injection attacks.
In the case of this level, the log messages generated from a request that produces an error, contains the request itself including its headers.
For cloud operations, such requests often contain an ephemeral access token that allows the requestor to authenticate itself to an API endpoint.
As the token is exposed, it can then be used to perform actions using the permissions that the cloud function has. If the developer has not
practiced the principle of least privileges, the attacker can use the compromised token to move laterally. In this case, a privilege
that allows one to set the Metadata of a running instance is given. This can be used to add an ssh key to an instance that effectively
provides a backdoor for the adversary.


[L]
[..]
LCD_DEF_H
LCD_cls
LCD_crlf
LCD_getCursor
LCD_init
LCD_puts
LCD_read
LCD_setChar
LCD_setCursor
LCD_setVisual
LCD_write
[..]


@JsonClass(true) data class UploadContract : Parcelable
<init> |
UploadContract(args: UploadContractArgs, assets: UploadContractAssets) |
args |
val args: UploadContractArgs |
assets |
val assets: UploadContractAssets |
toUploadData |
fun toUploadData(): UploadData |


Parcel Delivery Service
Log In
Email address
We'll never share your email with anyone else.
Password
Log in
Register
Sign Up
Name
Phone Number
Email address
We'll never share your email with anyone else.
Password
Back to Log in
Register
Page view for logged in user. TBD


{{usr.employment}}
{{usr.education}}
Interests
{{usr.interests}}
Knowledgeable In
{{usr.knowledgeable}}
Goals
{{usr.currentGoals}}


AMAZING PEOPLE ARE MAKING AMAZING DESIGNS IN A FUN ENVIROMENT
When you work with us, you are part of a team of commited collaborators. All aspects pf our software development process are intergrated, interactive and agile.
Our approach unifiles design, development and product management to create exceptional products.
We start each project by understanding your business goals, the user's needs the product requirements
Then we help translate them into effective and elegant solutions.
Before we sign a contract or write a line of code our team will spend the necessary time needed to understand your product vision
The outcome of this scoping session is proposal or high-level statement of work based on requirements, we can provide acomplete offering or just the pieces you need.
Our design practice offers a full range of services including brand strategy, interaction and visual design and user experience testing. Throughout your project, our designers create and implement visual design and workflows, solicit user feedback and work with you to make sure what gets built is what is needed.
All engineers are fluent in the latest enterprise, mobile and web development technologies. They collaborate with your team to write, and improve code on a daily basis, using proven practices such as test-driven development and pair programming.
Planning and development is iterative. Because we are constantly coding and testing, the products we build are always ready to go live. This iterative process allows for changes as business requirements evolve.
DARK
DARK
STAR
ONTARIO
PYRAMID
JIM
GOOD
MOBILE
BURNED
GIRAFFE


Digital Electronics
Tell us you want to join
here.
Positions
-web designer
-OS developer
-VM developer
Tell us the position you want when you join.
Remember, you need to be able to program in at least
one of these languages: Python, Assembly, HTML & CSS


Testo in cui non so cosa scrivere
Some quick example text to build on the card title and make up the bulk of the card's content.
MoveveSome quick example text to build on the card title and make up the bulk of the card's content.
MoveteSome quick example text to build on the card title and make up the bulk of the card's content.
MoveteSome quick example text to build on the card title and make up the bulk of the card's content.
Movete


Recently my job has been focusing a bit more on the devops side of things and I have been trying to learn and use docker via boot2docker on OSX. During the process I kept wishing that someone had written about some of the issues I was running into such that I could easily letmegooglethatforyou or SO the answers in a non day-killing manner. Please keep in mind that this stuff moves extremely fast (or slow depending on the project), so be sure to check out the issue links and check on the status before yelling at me that it's already been fixed.
boot2docker
boot2docker is a lightweight Linux distribution based on Tiny Core Linux made specifically to run Docker containers. It runs completely from RAM, weighs ~27MB and boots in ~5s (YMMV).
In case you aren't aware, or you've been living under a devops rock, Docker is the new hotness in virtualization and container technology. I'm not going to get into it here, but there are a zillion posts around the interwebs describing what it is, and what it can help you accomplish for you.
Because Docker requires a specific Linux Kernel, you can't use Docker exclusively with Darwin/OSX, you must use a proxy VM to manage your Docker images and containers. This is where boot2docker comes in.
So instead of having to ssh into a VM and manage your Docker images and containers (potentially a pretty big PITA), boot2docker provides a proxy layer, so you can use docker commands in your local shell just as if you were the docker host. At the time of writing here are versions of these programs I was using:
$ docker --version && boot2docker version && uname -a
Docker version 1.5.0, build a8a31ef
Boot2Docker-cli version: v1.5.0
Git commit: ccd9032
Darwin cnaje1ML1 13.4.0 Darwin Kernel Version 13.4.0: Wed Dec 17 19:05:52 PST 2014; root:xnu-2422.115.10~1/RELEASE_X86_64 x86_64
Along with this great convenience, comes more complexity, and with more complexity, comes various issues when trying to use Docker-dependent programs and utilities.
Some Important boot2docker
Commands
$ boot2docker init && boot2docker up
To get things started, you will need to create/init the boot2docker VM, and then actually start the instance.
See-also: boot2docker save
, boot2docker down
, boot2docker restart
etc. which will manage the state of your VM.
$ boot2docker ip
When you use boot2docker, it spawns a new VM instance through VirtualBox. This new VM exposes it's network interface, and if you will be creating any Docker containers which expose network services (you proabbly will), you need to know the VM's IP address in order to interface with them. The ip
command, like it's name implies, simply prints out the IP address assigned to the VM.
$ boot2docker shellinit
To get your shell setup properly, you will need to run shellinit
at some point (obviously after you have boot2docker up
).
Depending on how your shell is setup, it might be handy to add this to your .bashrc
or .zshrc
:
#!/bin/zsh
...
boot2docker shellinit && export DOCKER_IP=$(boot2docker ip)
...
Fig
Fast, isolated development environments using Docker.
When you are developing an application using docker containers, you are going to need something to help you orchestrate containers. There are plenty of great write-ups on using Fig, so I will not go into that here. Fig is a great orchestration toolset and was recently purchased by Docker.
$ fig --version
fig 1.0.1
Shared Data Volumes
One of the first issues I ran into using fig and boot2docker was the issue of mounting writable shared volumes with the volumes_from config. The problem is that when boot2docker mounts volumes, it uses vboxfs, and causes several problems when the host container tries to write or change permissions to the shared volume.
If you are interested, there are various threads on issues relating to boot2docker / vboxfs / shared volumes / permissions etc. It's actually a lot to sort through, and I spent a few days trying to find a solution to the issue I was running into.
I ended up using GitHub user @paolomainardi's solution to nix using VirtualBox's vboxfs and instead expose folders via NFS.
First, modify /etc/exports
:
/Users -mapall=[youruser]:[yourgroup] [boot2dockerip]
After you save, you may or may not need to sudo /sbin/nfsd restart to restart the NFS daemon in OSX to pick up the changes.
Then boot2docker ssh
into your VM, and run the following:
sudo umount /Users
sudo /usr/local/etc/init.d/nfs-client start
sudo mount <IP_ADDRESS>:/Users /Users -o rw,async,noatime,rsize=32768,wsize=32768,proto=tcp
Now when you need your Dockerfile
to change permissions on files mounted via data volumes, it should take. This approach also helps another issue I ran into while running packer
.
Dangling images, or, dockerberries
One thing you'll notice when you start working with Fig is that you will start generating a lot of intermediate images that for whatever reason, don't get cleaned up by fig clean. I have a feeling that the next release of docker will include a command to do this, but for now to remedy this, you can try this tip:
$ docker rmi $(docker images -q -f dangling=true)
or to force cleanup:
$ docker rmi -f $(docker images -q -f dangling=true)
even better add this to your aliases:
alias docker_clean_danglers="docker rmi -f $(docker images -q -f dangling=true)"
Packer
Packer is a tool for creating identical machine images for multiple platforms from a single source configuration.
Packer is a great utility, from HashiCorp, the makers of Vagrant, to use configuration files to generate multiple images for different services such as: Amazon EC2, Docker and Vagrant. Need to generate an Amazon AMI, but also want a Docker image you can use elsewhere or push to a registry? Packer is the tool for the job.
I quickly ran into a weird issue running packer build
using a shell provisioner with inline
. My builder would start, and then mysteriously just sit there and hang when it tried to copy the script. As it turns out, part of the issue is because of a bug using Packer with the latest version of Docker (1.4+). I didn't want to downgrade Docker to 1.3, so I incorporated the fix locally, and re-built the packer binaries for OSX_x64.
As of this writing, Packer still hasn't merged the patch, but you can download my OSX binaries (install them to /usr/local/bin
), or build them yourself if you want to get up and running with Go.
The second issue is that packer stores it's temporary files and folders into /var/folders
on OSX. You'll note from my findings with Fig above, by default boot2docker mounts /Users
, and that's it, so there is no way for Docker to get provisioned by anything Packer wants to send to it since the boot2docker VM can't read /var/folders
.
There are several issues that have been reported around this, and it looks like most people solved it by setting their TMPDIR
environment variable to something inside their /Users
folder, like: /Users/myuser/tmp
since that folder gets mounted in the boot2docker VM.
$ TMPDIR=/Users/chief/tmp packer build mybuild.json


This example requires a browser that supports the
HTML5
<canvas> feature.
Perspective
Top
Left
Start/Stop
Log (firebug)
Reload simulation


Terraform community has created modules and shared via Terraform community modules. I found them useful as I don’t have to write modules myself for common tasks. One such a task is creating VPC’s in AWS. See terraform-aws-vpc. I decided to use Terraform AWS VPC modules for creating a VPC for my current project. It was straight forward, I used it and confirmed that it worked as expected.
module "vpc" {
source = "terraform-aws-modules/vpc/aws"
name = "test-vpc"
cidr = "<IP_ADDRESS>/22"
azs = ["us-west-2a", "us-west-2b", "us-west-2c"]
public_subnets = ["<IP_ADDRESS>/24", "<IP_ADDRESS>/24", "<IP_ADDRESS>/24"]
tags = {
Terraform = "true"
Environment = "dev"
}
}
I had one issue after I created an EC2 instance on that VPC. I logged into EC2 instance with public IP. I couldn’t connect or ping any external services. I checked and verified following but couldn’t find anything wrong with those.
It was clear to me that something was wrong with DNS. Whenever I put <IP_ADDRESS> to /etc/resolve.conf everything worked fine. After reading in VPC documentation, I found the culprit.
http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-dns.html#vpc-dns-support
I was missing enable_dns_support = true
from my VPC configuration.
module "vpc" {
source = "terraform-aws-modules/vpc/aws"
name = "test-vpc"
cidr = "<IP_ADDRESS>/22"
azs = ["us-west-2a", "us-west-2b", "us-west-2c"]
public_subnets = ["<IP_ADDRESS>/24", "<IP_ADDRESS>/24", "<IP_ADDRESS>/24"]
enable_dns_support = true
tags = {
Terraform = "true"
Environment = "dev"
}
}
May be it make sense to set this value true
as default value in the community module.


Media queries allow us to make our sites responsive. We can use media queries to apply CSS styling only when certain conditions apply. For instance, our sites can look different depending on the size of the screen, or viewport a user is viewing our content with. We can also change the way our site appears if a user is printing our website, or using a screen-reader!
Media queries allow us to make our sites responsive. We can use media queries to apply CSS styling only when certain conditions apply. For instance, our sites can look different depending on the size of the screen, or viewport a user is viewing our content with. We can also change the way our site appears if a user is printing our website, or using a screen-reader!
Media queries allow us to make our sites responsive. We can use media queries to apply CSS styling only when certain conditions apply. For instance, our sites can look different depending on the size of the screen, or viewport a user is viewing our content with. We can also change the way our site appears if a user is printing our website, or using a screen-reader!


Custom Pizza
Pizza
Checkout
Delivery
Delivery Address
First Name
Last Name
Address
City
County
Nairobi
Nakuru
Mombasa
Submit


Home
About
Contact us
Register
As Donor
As Hospital
Blood Request
Search Donor
Log in
Search Donor
Blood Group
Blood Group
A+
A-
B+
B-
O+
O-
AB+
AB-
Area
Area
North
South
East
West
Central
Nigdi


{% extends 'game/base.html' %} {% block content %}
It's
Welcome {{ player.username }}
List of players


Filter by
All Books
Featured
Most popular
Top rated
Most commented
Author
Contains the words
Year
First Year
Second Year
Third Year
Fourth Year
Branch
Civil Engineering
Computer Engineering
Mechanical Engineering
Information Technology
Electrical Engineering
Electronics Engineering
Electronics and Telecommunication Engineering
Production Engineering


|
| EffectTheme | | Portability | portable | | Stability | experimental | | Maintainer | Ralf Laemmel, Joost Visser |
|
|
|
|
|
| Description |
| This module is part of StrategyLib, a library of functional strategy
combinators, including combinators for generic traversal.   The two
monads are unrelated, so none of the effects in the monad that is
replaced carry over to the one that replaces it. |
|
| mrunTU :: (Monad m, Monad m', MonadRun s m) => s a a -> TU a m -> TU a m' |
| Replace the monad in a type-unifying strategy, given a monad
algebra (see MonadRun) for the monad that is replaced. The two
monads are unrelated, so none of the effects in the monad that is
replaced carry over to the one that replaces it. |
|
| Add an effect to the strategy monad |
|
| liftTP :: (Monad (t m), Monad m, MonadTrans t) => TP m -> TP (t m) |
| Add an effect to the monad in a type-preserving strategy.
The monads are related by a monad transformer, so the effects of the
incoming monad are preserved in the result monad. We use the lift
function of the monad transformer. |
|
| liftTU :: (Monad (t m), Monad m, MonadTrans t) => TU a m -> TU a (t m) |
| Add an effect to the monad in a type-unifying strategy.
The monads are related by a monad transformer, so the effects of the
incoming monad are preserved in the result monad. We use the lift
function of the monad transformer. |
|
| Remove an effect from the strategy monad |
|
| unliftTP :: (Monad (t m), Monad m, MonadUnTrans s t) => (forall a . s a a) -> TP (t m) -> TP m |
| remove an effect from the monad of a type-preserving strategy.
The monads are related by a monad untransformer (see MonadUnTrans),
so the effects of the incoming monad are preserved in the result
monad, except for the effect for which a monad algebra is supplied. |
|
| unliftTU :: (Monad (t m), Monad m, MonadUnTrans s t) => s a a -> TU a (t m) -> TU a m |
| remove an effect from the monad of a type-unifying strategy.
The monads are related by a monad untransformer (see MonadUnTrans),
so the effects of the incoming monad are preserved in the result
monad, except for the effect for which a monad algebra is supplied. |
|
| Localize specific effects |
|
| Localize the partiality effect |
|
| guaranteeSuccessTP |
| :: (Monad (t m), Monad m, MonadUnTrans MaybeAlg t) | | | => (forall a . a) | default value (Note: universally quantified!) | | -> TP (t m) | type-preserving partial strategy | | -> TP m | type-preserving strategy without partiality | | Localize the partiality effect in a type-preserving strategy. A
default value must be supplied to be used to recover from
failure. Since this default parameter is universally quantified,
only undefined and 'error ...' can be used to instantiate it.
See also 'unsafeGuaranteeSuccessTP. |
|
|
| guaranteeSuccessTU |
| :: (Monad (t m), Monad m, MonadUnTrans MaybeAlg t) | | | => a | default value | | -> TU a (t m) | type-preserving partial strategy | | -> TU a m | type-preserving strategy without partiality | | Localize the partiality effect in a type-unifying strategy. A
default value must be supplied to be used to recover from
failure. |
|
|
| unsafeGuaranteeSuccessTP :: (Monad (t m), Monad m, MonadUnTrans MaybeAlg t) => TP (t m) -> TP m |
| Unsafe version of guaranteeSuccessTP. This version uses uses undefined
to recover from failure. For the type-preserving case, this is the only
possible default value. |
|
| Localize the state effect |
|
| localStateTP :: (Monad (t m), Monad m, MonadUnTrans (StateAlg s) t) => s -> TP (t m) -> TP m |
| Localize the state of a type-preserving strategy. The first argument
represents the initial state. |
|
| localStateTU :: (Monad (t m), Monad m, MonadUnTrans (StateAlg s) t) => s -> TU a (t m) -> TU a m |
| Localize the state of a type-unifying strategy. The first argument
represents the initial state. |
|
| Produced by Haddock version 0.6 |


Qt Designer C++ Classes
Provides classes to create your own custom widget plugins for Qt Designer and classes to access Qt Designer components. More...
Classes
Allows you to create a factory that is able to make instances of custom extensions in Qt Designer | |
Interface for extension factories in Qt Designer | |
Interface for extension managers in Qt Designer | |
Extension management facilities for Qt Designer | |
Allows you to change the focus of Qt Designer's action editor | |
Allows you to access Qt Designer's various components | |
Allows you to query and manipulate form windows appearing in Qt Designer's workspace | |
Allows you to query and modify a form window's widget selection, and in addition modify the properties of all the form's widgets | |
Allows you to manipulate the collection of form windows in Qt Designer, and control Qt Designer's form editing actions | |
Allows you to change the focus of Qt Designer's object inspector | |
Allows you to query and manipulate the current state of Qt Designer's property editor | |
Allows you to control the contents of Qt Designer's widget box | |
Allows you to add pages to a custom multi-page container in Qt Designer's workspace | |
Allows you to manipulate a widget's dynamic properties in Qt Designer's property editor | |
Allows you to manipulate a widget's member functions which is displayed when configuring connections using Qt Designer's mode for editing signals and slots | |
Allows you to manipulate a widget's properties which is displayed in Qt Designer's property editor | |
Allows you to add custom menu entries to Qt Designer's task menu | |
Default implementation for classes that create user interfaces at run-time | |
Used to dynamically construct user interfaces from UI files at run-time | |
Allows you to include several custom widgets in one single library | |
Enables Qt Designer to access and construct custom widgets |
Detailed Description
In addition, the QFormBuilder class provides the possibility of constructing user interfaces from UI files at run-time.
To include the definitions of the module classes, use the following directive:
#include <QtDesigner>
To link against the module, add this line to your qmake
.pro file:
CONFIG += designer


This package contains implementations of the SimpleAnnotator allowing the annotation of specific sets of ions.


User details
Login
Enter password
First name
Last name
Middle name
Phone code
Phone number
Email
Choose photo


Validate user credentials before processing them. Failure to validate user credentials could cause improper authentication. This can allow an attacker to authenticate as another user without the need to steal credentials.
val pid = UserForm.empid
val uname = UserForm.username
val name = Name.findname(pid,uname)
val whitelistPattern = "(\\w|\\d)+"
val issafe = whitelistPattern.pattern.matcher(uname).matches
if(issafe){
...
//Code for Action
}
else
{
...
//Code for Exception
}


{% extends "header.html" %} {% block title %}About Muscle Synergies{% endblock %} {% block content %}
Individuals with CP have altered muscle activity during walking compared to their typically-developing peers resulting from a brain injury at or near the time of birth. In 2008, 3.1 children out of every 1000 were found to have CP in the united states at age 8 [1]. Because every brain injury is unique, patient-specific differences in motor control and gait patterns arise for individuals with CP. Motion capture can be used to analyze these the kinematic abnormalities in gait, such as flexion angles of the ankle and knee. However, motion capture does not capture the patient’s motor control.
It is hypothesized that by understanding a patient's specific method of motor control, patient-specific treatment protocols might be able to be developed that have the highest possible success for patients.
Muscle synergies are a theory from neuroscience that descibes how muscles are activated together to produce complex movements. A synergy driven control system is advantageous because its limits the number of signals needed to activate muscles during an activity. Instead of individually activating muscles, the synergy is activated.
Using electromyography (EMG) gathered during gait over a large range of muscles lower dimensional activation groups can be computed.6 Non-negative matrix factorization algorithms are commonly used to identify these groupings, also known as muscle synergies. Synergies also contain the weighting of each respective muscle EMG that is included in each synergy.7 Additionally, this synergy calculation produces activations specific to each group of weightings. Reconstructing the original EMG signals is achieved by multiplication of the synergy weights and activations (Figure 1). However, this reconstruction is not completely accurate, especially at lower synergy solutions, because of error in the decomposition.
For synergy calculation the EMG signals are filtered and processed. First they are high-passed, then rectified, low-passed, and finally normalized. There are multiple parameters used in literature as standards for filtering, however this website integrates in one standard: 20 Hz high pass, 10 hz low pass. Filtering parameters have an effect on the tVAF during synergy calculation and so establishing consistency across synergy calculations is key in order to have comparable results.
Different Institutions follow different protocols for the muscles included in synergy analysis. Muscles selection is also dependent on the number of EMG sensors available for use. Additionally, accurate EMG sensor placement requires significant amounts of time, and thus time constraints can limit the number of EMG signals gathered. Patient populations also can determine the number of sensors used; sensors take up more space on a small child than an adult, and so it can be especially difficult places EMG sensors when sensors might overlap or not be fully isolated as they would be on an adult.
Standard Lower Limb Muscle Synergy Subsets:
Four Muscle Subset: Medial Gastrocnemius, Tibialis Anterior, Rectus Femoris, Medial Hamstring
Five Muscle Subset: Medial Gastrocnemius, Tibialis Anterior, Rectus Femoris, Lateral Hamstring, Medial Hamstring
Eight Muscle Subset: Medial Gastrocnemius, Soleus, Tibialis Anterior, Rectus Femoris, Vastus Medius, Lateral Hamstring, Medial Hamstring, Gleuteus Medius
Sixteen Muscle Subset: External Obliques, Peronius Longus, Rectus Abdominus, Erector Spinae
Standard Upper Limb Muscle Synergy Subsets:


Longdesc Examples
tab stop 1
Using a hidden link as well as longdesc
Question 1 model.
Open question 1 equivalent in a new window
Question 2 model.
Open question 2 equivalent in a new window
Question 3 model.
Open question 3 equivalent in a new window
tab stop 2


Provides a home Automation "scene" (lighting) operation (turnon/turnoff); derived from BotOperation.
More...
#include <BotAffectHASceneOpr.hpp>
|
|
std::string | code |
| |
|
std::string | rawText |
| |
Provides a home Automation "scene" (lighting) operation (turnon/turnoff); derived from BotOperation.
| BotAffectHASceneOpr::BotAffectHASceneOpr |
( |
const std::string |
pCode, |
|
|
const int |
pSceneNumber, |
|
|
const int |
pAction |
|
) |
| |
Constructor for BotAffectHASceneOpr; builds operation that may execute.
- Parameters
-
| pCode | std::string indicating operation code; must be HAScene for this to execute |
| pSceneNumber | integer for scene number to act on; must be within operational parameters to execute |
| pAction | integer for action to take; must be valid action for this to execute |
| homebot::HAScene::Request BotAffectHASceneOpr::details |
( |
| ) |
|
Provides access to operation details for testing purposes.
- Returns
- request formatted according to the ROS service definition for HAScene
Performs the behavior embedded in this operation (HAScene turnon/turnoff via the Home Automation system.
- Parameters
-
| [in] | clients | object containing the action/service clients used by BotOperations to carry out their functions |
- Returns
- bool indicating whetherthe operation executed successfully
Reimplemented from BotOperation.
Validates that an operation is within acceptable parameters.
- Parameters
-
| [in] | opParams | provides oprational parameters for the system used to verify this operation can execute |
- Returns
- bool value indicating whether this operation can execute within the current HomeBot system
Reimplemented from BotOperation.
The documentation for this class was generated from the following files:


EBD - Easton Bible DIctionary
Chidon
CHIDON
"CHIDON "dart, the name of the threshing-floor at which the death of Uzzah took place (
1 Chronicles 13:9
). In the parallel passage in Samuel (
2 Samuel 6:6
) it is called “Nachon’s threshing-floor.” It was a place not far north-west from Jerusalem.
"CHIDON "dart, the name of the threshing-floor at which the death of Uzzah took place (1 Chronicles 13:9). In the parallel passage in Samuel (2 Samuel 6:6) it is called “Nachon’s threshing-floor.” It was a place not far north-west from Jerusalem.


---
layout: post
title: "EV3 API development"
background: "/img/projects/pexels-alena-darmel-7750739.jpg"
---
Developed an open-source bluetooth API in C for Lego EV3 robotics kits for Fundamentals of Robotics and Automated Systems course. Added functionality to communicate with motors, sensors and the file system by studying developer documentation. Created easy-to-understand documentation detailing the API functionality. The API is currently being used in all hands-on assignments for the course.


Grade New Assignment
Nathan
pushed new commit: Fix page load performance issue.
10 minutes ago
Alice
started new task: Tabler UI design.
1 hour ago
Rose
deployed new version of NodeJS REST Api V3
2 hours ago
Mark all as read
Philip Kuo
MATH241 TA
Profile
Settings
6
Inbox
Message
Need help?
Sign out
Home
Graded Assignments
Ungraded Assignments
Grading for MATH241 Midterm 3 - Sarwagya Jain
12 min
Philip Kuo
Math seems to be correct.
34 min
Philip Kuo
Final answer human error... deduct 1 point?
Jason Wong
yes that've always done 1 point on previous exams
12 min
Phil.ip Kuo
all right!


It's a proxy that controls access to an object based on access rights. For instance, if we had an employee object, a protection proxy might allow the employee to call certain methods on the object. a manager to call additional methods(like setSalary())), an a human resources employee to call any method on the object.


Toggle navigation
Admin Controller
Admin
Profile
Log Out
Locations
Target Groups
Image Management
Question Management
Trainings
Reports
Local Admins
Users


contact
<EMAIL_ADDRESS>773-800-0845
prosa100.github.io
linkedin.com/in/prosa100
interests
hci, gamiﬁcation, accessibility, virtual reality, wearables, iot, 3D printing, robotics, cybersecurity, machine learning, natural language processing, embedded systems, computer graphics, distributed systems, cryptography, space
skills
best C#, Java, HTML5, Wolfram, Mathematica, JavaScript, Typescript, WebGl, ASP.Net MVC, vNext, C, 3D Printing, HCI, ROS, Unity3D, Linq, Db, Algorithms, Data structures good OpenCV, C++,
Arduino, Twilio, Kinect, node.js, Software Architecture, Git fluent Sql, R, Octave, Bootstrap, Angular, Oculus Rift, Google Design Sprints, Optimization, Android, Android Wear
|
PaulRosa |
|
Last Updated on 14th September 2015 |
|
|
|
|
education |
|
|
|
B.S. in Computer Science (James Scholar) |
University of Illinois |
||
Self Schooled |
I never let my schooling get in the way of my education. |
||
|
I took MOOCs, read books, and built robots. Classes: Stanford Artiﬁcial Intelligence, |
||
|
Haptics, Databases, Game Theory, Organizational Analysis, and Patient Engagement |
||
|
Design. Duke Bio Electricity. UPenn Gamiﬁcation. MIT Digital Signal Processing. |
||
|
Princeton Data Structures, Algorithms. |
|
|
Illinois Mathematics and Science Academy |
|
IMSA |
|
|
Head of Titan Robotics Programming Team: recruited, trained, and lead team; |
||
|
highest autonomous score in Midwest regional. Student Representative to British |
||
|
Consulate (Raspberry Pi for STEM) |
|
|
projects |
|
|
|
AutoChair : An eye controlled self driving robotic wheelchair |
It’s a nursing home on wheels. |
||
|
Created to restore my Grandma’s ability to interact with the world. A huge amount |
||
|
of problem solving, debugging, research, ROS, Google Design Sprints, and Git. |
•prototypes, simulation, and automatic testing with C#+Unity3d, and Wolfram
•safe, highly redundant, distributed system architecture
•custom holonomic drivetrain for unparalleled mobility
•eye tracker hw+algorithm (Presented @ ROSCon 2014) using Python, OpenCV
•prototype telepresence interface for Oculus Rift
•innovative
•custom quadrature encoders and motor controllers DSP, Arduino
•ROS
•novel performant terrain classiﬁcation algorithm Wolfram, C#, C++, Kinect
•
•system for interfering with devices (tv, phone) using eyes, C#
•algorithm to measure stress, math to reduce
I developed a system that allows people with ataxia to make
experience
Professor LaValle's Lab |
University of Illinois Urbana Champaign |
|
|
Developed a GPU algorithm for preparing a panoramic video stream for VR. |
|
Assistive and Rehabilitation Robotics Laboratory |
Northwestern University |
|
|
Developed a |
|
|
across several computers. Calibrated odometry. Created an very efﬁcient and safe |
|
|
learning terrain classiﬁcation algorithm. Developed a remote |
|
|
measures stress as a parameter for collaborative control systems. |
|
2012 |
Digital Forces Corporation |
Illinois |
Designed and Programmed a secure,


UpworkShoes is a shoe brand based in the United States
We're here to give you the latest and greatest deals on shoe brands
Trusted by people like Jay-Z, Pharrell Williams, and more!
Casual Footwear
$250
Runner Footwear
$400
Luxury Footwear
$600
Custom Footwear
$290
Runner Footwear
$140
Luxury Footwear
$750
Luxury Footwear
$1200
Custom Footwear
$370


| Electron | Proton | Neutron |
| +1 | 0 | -1 |
N(p+) = Z A = Z + N Ne = Np = Z
An atom is the smallest unit of ordinary matter that forms a chemical element. Every solid, liquid, gas, and plasma is composed of neutral or ionized atoms. Atoms are extremely small, typically around 100 picometers across. They are so small that accurately predicting their behavior using classical physics—as if they were tennis balls, for example—is not possible due to quantum effects.
Every atom is composed of a nucleus and one or more electrons bound to the nucleus. The nucleus is made of one or more protons and a number of neutrons. Only the most common variety of hydrogen has no neutrons. More than 99.94% of an atom's mass is in the nucleus. The protons have a positive electric charge, the electrons have a negative electric charge, and the neutrons have no electric charge. If the number of protons and electrons are equal, then the atom is electrically neutral. If an atom has more or fewer electrons than protons, then it has an overall negative or positive charge, respectively – such atoms are called ions.
The electrons of an atom are attracted to the protons in an atomic nucleus by the electromagnetic force. The protons and neutrons in the nucleus are attracted to each other by the nuclear force. This force is usually stronger than the electromagnetic force that repels the positively charged protons from one another. Under certain circumstances, the repelling electromagnetic force becomes stronger than the nuclear force. In this case, the nucleus splits and leaves behind different elements. This is a form of nuclear decay.
The number of protons in the nucleus is the atomic number and it defines to which chemical element the atom belongs. For example, any atom that contains 29 protons is copper. The number of neutrons defines the isotope of the element. Atoms can attach to one or more other atoms by chemical bonds to form chemical compounds such as molecules or crystals. The ability of atoms to associate and dissociate is responsible for most of the physical changes observed in nature. Chemistry is the discipline that studies these changes.


--- title: "How does the daily occupancy rate of ON shelters change under the shock of COVID-19?" author: "JIN QIU" date: 2020-09-23T21:13:14-05:00 categories: ["R"] tags: ["R Markdown", "plot", "regression"] ---
JIN QIU
This research aims at discovering the change of the situations of daily shelters in ON due to the shock of COVID-19. The analysis is based on the comparison between the data from year 2020 and year 2019, and will especially focus on the changes in occupancy rate. The most important finding is that the average occupancy rate has decreased in 2020, while the situation of overwhelmed shelter is even more severe.
In year 2020, due to the influence of COVID-19, the Ontario government has required everyone to keep social distancing and reduce the frequency of going out to stop the spread of COVID-19. That means, all the homeless people on the street has to go to a shelter. That makes me get curious: will there be more shelters in Ontario to host all the homeless people compared to last year? Are there enough spots in those shelters? To answer the questions, I did a statistical research and find out that there might not be enough shelters in Ontario.
From the analysis, I noticed that the number of shelters that are in operation this year is less than the number of last year(2019), along with a decrease in the occupancy rate. The average occupancy rate in 2019 is 0.9559, while that in 2020 is 0.7981. ALthough the situation of a overwhelmed shelter has been happening since last year, the highest occupancy rate in ON this year for a single shelter has arrived 4.05, which is almost 3 times of that in last year. This indicates that the use ratio of the shelters is below the average during the period of COVID-19, and there are not enough available spots provided in the shelter.
During the process of analyzing the occupancy rate, we are using the data from OPENDATA Toronto. And they collect the information of all the shelters in Ontario everyday at 4 a.m. However, since I am doing the research in the middle of 2020, the data I am using only covered the past 9 months, that may cause some mistake when I use the data to do the comparison and analysis. For example, there might be more homeless people in the shelter in winter due to the weather, and the average ratio might be underestimated with using the current data. Another possible error is, when I am doing the research, neither the data from 2020 or the data from 2019 is selected randomly, I simply used all the data points that I am provided with. The conclusion that I can draw from the current data is there is not enough spots in the shelters of ON for the past 9 months, and the government should invest more to make sure that all the homeless can stay safe in a shelter during this special period. I will continue to do the research and decide how many more shelters and spots should be provided in the future.
From the plot above, we can conclude that the shelter provided for all sectors has decreased this year more or less. There might be various reasons for this situation, one of the most possible reason is that COVID-19 has made it difficult for the government to hold all the shelters on running(because of the shortage workforce or other reasons).
This two plots show that there might be some positive linear relationship between capacity and occupancy. We can conclude that the variance of the data in 2020 is larger than that of 2019. This means, the differences in the situation of different shelters in 2020 is largers.
summary(ratio19)
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 0.0000 0.9546 1.0000 0.9559 1.0000 1.7727 129
summary(ratio20)
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 0.0000 0.6667 0.9231 0.7976 1.0000 4.0500 733
From the chart and the histograms above, it is not hard to conclude that the average occupancy rate in year 2020 is about 20% lower than that in 2019. In specific, the histogram for year 2020 is hardly right-skewed, while we could say the histogram for year 2019 is only slightly right-skewed. Although they both peak at a occupancy ratio=1, there are more extreme data points in year 2020 compared to year 2019. This could lead to a conclusion that although the shelters almost reach their maximum capacity in both year and get overwhelmed to some extent, the situation in 2020 may be more extreme, since there are more outliers.
In general, the situation we are facing right now is some shelters are not fully used, while some others are extremely overloaded. The possible reason for this might be that people can not commute conveniently due to the COVID-19, so they are forced to stay in the certain area. However, even if we are only looking at the data in year 2019, we can say that there is no enough shelter spots in ON. To fulfill the society’s needs for shelter spots, the government needs to make more investment.
Other than those factors that we have discussed at the very beginning of this report, the process of data collection for year 2019 might also be biased. As we know, the winter in 2019 is actually warmer than that in the previous years. That might be a possible reason that lowers the average occupancy rate for shelters in 2019. The analysis will be more accurate if we could take more years into account or analyzing the data with a partition of the seasons, and that is what I am going to do for the further research.
JJ Allaire and Yihui Xie and Jonathan McPherson and Javier Luraschi and Kevin Ushey and Aron Atkins and Hadley Wickham and Joe Cheng and Winston Chang and Richard Iannone (2020). rmarkdown: Dynamic Documents for R. R package version 2.1. URL https://rmarkdown.rstudio.com.
Yihui Xie and J.J. Allaire and Garrett Grolemund (2018). R Markdown: The Definitive Guide. Chapman and Hall/CRC. ISBN<PHONE_NUMBER>338. URL https://bookdown.org/yihui/rmarkdown.
Wickham et al., (2019). Welcome to the tidyverse. Journal of Open Source Software, 4(43), 1686, https://doi.org/10.21105/joss.01686\
H. Wickham. ggplot2: Elegant Graphics for Data Analysis. Springer-Verlag New York, 2016.
Baptiste Auguie (2017). gridExtra: Miscellaneous Functions for “Grid” Graphics. R package version 2.3. https://CRAN.R-project.org/package=gridExtra
Alboukadel Kassambara (2020). ggpubr: ‘ggplot2’ Based Publication Ready Plots. R package version 0.4.0. https://CRAN.R-project.org/package=ggpubr
Open Data Dataset. (2020). Retrieved September 23, 2020, from https://open.toronto.ca/dataset/daily-shelter-occupancy/