Your team as been given a virtual machine named "Build" to build and deploy your application. A simple Jenkins pipeline is already configure. On the same machine, a Sonar instance is already installed.
Unfortunately, it is not configured properly and no metrics of code quality are measured. Your mission is to edit your Jenkins configuration and add a Sonar analysis step in your CI.
Before you go, wouldn't it be useful to learn a bit about Jenkins declarative pipelines? And about the SonarQube Scanner plugin for Jenkins?
Refer to the guide in your Starter Kit for more information about IP, SSH keys, etc.


Question
Pay attention on Number 3, 7, 9 and 11.
The Divisibility Rules
| Divisible by: | If: | Examples: |
|---|---|---|
| 2 | The last digit is even (0,2,4,6,8) | 128 is 129 is not |
| 3 | The sum of the digits is divisible by 3 |
381 (3+8+1=12, and 12÷3 = 4) Yes 217 (2+1+7=10, and 10÷3 = 3 1/3) No |
| 4 | The last 2 digits are divisible by 4 |
1312 is (12÷4=3) |
| 5 | The last digit is 0 or 5 | 175 is 809 is not |
| 6 | The number is divisible by both 2 and 3 |
114 (it is even, and 1+1+4=6 and 6÷3 = 2) Yes 308 (it is even, but 3+0+8=11 and 11÷3 = 3 2/3) No |
| 7 | If you double the last digit and subtract it from the rest of the number and
the answer is:
|
672 (Double 2 is 4, 67-4=63, and 63÷7=9) Yes 905 (Double 5 is 10, 90-10=80, and 80÷7=11 3/7) No |
| 8 | The last three digits are divisible by 8 |
109816 (816÷8=102) Yes 216302 (302÷8=37 3/4) No |
| 9 | The sum of the digits is divisible by 9 (Note: you can apply this rule to that answer again if you want) |
1629 (1+6+2+9=18, and again, 1+8=9) Yes 2013 (2+0+1+3=6) No |
| 10 | The number ends in 0 |
220 is |
| 11 | If you sum every second digit and then subtract all other digits and the answer is:
|
1364 ((3+4) - (1+6) = 0) Yes 3729 ((7+9) - (3+2) = 11) Yes 25176 ((5+7) - (2+1+6) = 3) No |
| 12 | The number is divisible by both 3 and 4 |
648 524 |


A JSON object containing info about the backtest and new name. The /backtests/update
API accepts requests in the following format:
UpdateBacktestRequest Model - Request to update a backtest's name. |
|
|---|---|
| projectId | integer Project Id for the backtest we want to update. |
| backtestId | string Backtest Id we want to update. |
| name | string Name we'd like to assign to the backtest. |
| note | string Note attached to the backtest. |
| Example |
{ "projectId": 0, "backtestId": "string", "name": "string", "note": "string" } |


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.
IN THE HIGH COURT OF JUDICATURE AT PATNA Civil Writ Jurisdiction Case No. 19693 of 2016 ===========================================================
Purushottam Kumar Son of Sri Sachchida Nand Prasad, Resident of Mohalla-Nand Gola, P.O- Kachchi Dargah, District- Patna.
.... .... Petitioner/s Versus
1. The State of Bihar, through the Principal Secretary, Department of Forest and Environment, Govt. of Bihar, Patna.
2. The Bihar State Pollution Control Board, Beltron Bhawan, Bailey Road, Patna, through its Member Secretary.
3. The Member Secretary, Bihar State Pollution Control Board, Beltron Bhawan, Bailey Road, Patna.
4. The District Magistrate, Patna, District- Patna.
.... .... Respondent/s =========================================================== Appearance :
For the Petitioner/s : None
For the Respondents No. 2 and 3 : Mr. Shivender Kishore, Sr. Advocate
(B.S.P.C.B) Ms. Binita Singh, Advocate
For the State : Mr. Alok Kumar Reho, A.C. to G.P.
21
=========================================================== CORAM: HONOURABLE MR. JUSTICE AHSANUDDIN AMANULLAH ORAL JUDGMENT Date: 06-02-2017 Nobody appears on behalf of the petitioner. The matter was listed for out of turn hearing on the basis of motion slip filed on behalf of learned counsel for the petitioner.
A counter affidavit has been filed on behalf of the Patna High Court CWJC No.19693 of 2016 dt.06-02-2017 2/3 respondents no. 2 and 3.
The petitioner has moved the Court being aggrieved by the order to close the unit and refusal of consent by the Bihar State Pollution Control Board (hereinafter referred to as the 'Board').
Learned counsel appearing for the respondents no. 2 and 3 submitted that the petitioner has approached the Court after inordinate delay as the impugned order was passed in August, 2014, whereas the writ petition has been filed in December, 2016. He further submitted that there is an alternative statutory remedy in terms of Section 31 of The Air (Prevention and Control of Pollution) Act, 1981. As the matter relates to air pollution, which is a serious environmental issue, the Court called upon the learned counsel for the State to know as to whether the unit is running or has been closed in terms of the order impugned of the Board. Learned counsel for the respondents no. 2 and 3 submitted that they had communicated to the District Magistrate, Patna by letter dated 09.03.2015 requesting him to ensure that the factory was closed in terms of the order impugned.
In view of the position aforesaid and the fact that nobody appears to press the writ application, the same stands dismissed.
However, learned counsel for the Board as well as the State shall ensure that the order impugned is implemented Patna High Court CWJC No.19693 of 2016 dt.06-02-2017 3/3 forthwith, if already not done. It would be the duty of the learned counsel for the respondents no. 2 and 3 and the State to communicate the order to the concerned authorities for compliance.
(Ahsanuddin Amanullah, J.) Anand Kr.
AFR/NAFR U


I'm a computer science student at NTNU, but usually I just wander around acting like a boss and a structured procrastinator. This page is intended to be a playground for learning web technologies as well as documenting stuff I learn and/or want to remember. Feel free to look around!
{{ entry.ingress }}


Rotten Tomatoes Chart
Your favorite movie:
Year the movie was released:
The movie's Tomatometer score:
Add to Database!
Sort by score
Name of movie
Year released
Tomatometer score


/dir/subdir/folder
/dir/subdir/
/dir/
/
Put a delay between XHR requests of seconds (reduces network strain and keeps browser responding)
Fork this on GitHub |


Project : House of Borel Agency : Immersive Garden Role : Art Director & Designer Date : 2015 Vist the website
Eyes on Talents


labelize-field
A simple jQuery plugin for in-field-label (the placeholder for old browsers)
First Name
Last Name
Email
Password
Submit


Spirit
Latest
General
Topic title here
nitely
Esteban Castro Borsani
3
4h
hiuhiuhi
iuhiuhi
http://some.com/jhjh.mp4
jhgjhg
http://some.com/jhjh.mp3
report
like
reply
hiuhiuhi
iuhiuhi
jhgjhg


| zero_coverage {covr} | R Documentation |
When examining the test coverage of a package, it is useful to know if there are any locations where there is 0 test coverage.
zero_coverage(x, ...)
x |
a coverage object returned |
... |
additional arguments passed to
|
if used within RStudio this function outputs the results using the Marker API.
A data.frame
with coverage data where the coverage is 0.


|
MAX7219
|
Public Member Functions | |
| snake (hwlib::target::pin_in swleft, hwlib::target::pin_in swup, hwlib::target::pin_in swdown, hwlib::target::pin_in swright, matrix &leds) | |
| bool | get_pin (hwlib::target::pin_in &button) |
| get a boolean from a pin More... | |
| void | button () |
| check which button is last pressed More... | |
| bool | equals (int lhs[3], int rhs[3]) |
| compare 2 array[3] More... | |
| void | set_screen (int cords[3], bool state) |
| set a coordinate on or off More... | |
| void | write_screen (matrix &leds) |
| write the screen array to the matrix using send array | |
| void | update_cords (int cords[3], int temp_way) |
| update coordinates based on movement More... | |
| void | next_screen (int cords[3]) |
| check if a cord is going to move to another screen More... | |
| void | apple () |
| make a new apple More... | |
| void | play () |
| endless loop with game logic More... | |
| void | game_over (matrix &leds) |
| flash game over and stop the program More... | |
| void snake::apple | ( | ) |
make a new apple
updates the cordinates of apple to a new random position on the screen
| void snake::button | ( | ) |
check which button is last pressed
changes the 4 sw booleans to the right value changes the way int to the right value
| bool snake::equals | ( | int | lhs[3], |
| int | rhs[3] | ||
| ) |
compare 2 array[3]
retrun true if 2 coordinates are the same
| void snake::game_over | ( | matrix & | leds | ) |
flash game over and stop the program
the play function calls this function if the game is over it will flash game over and stop the program
| bool snake::get_pin | ( | hwlib::target::pin_in & | button | ) |
get a boolean from a pin
used to read the buttons to control the snake's movement
| void snake::next_screen | ( | int | cords[3] | ) |
check if a cord is going to move to another screen
this function checks if the given cordinate is going to move to another screen if this is the case, the function will change the coordinates to the next screen
| void snake::play | ( | ) |
endless loop with game logic
call this function to start the game it has an endless loop which calls all the other functions in orther to play the game
| void snake::set_screen | ( | int | cords[3], |
| bool | state | ||
| ) |
set a coordinate on or off
sets a coordinate on or of in the screen array set the screen before sending the data
| void snake::update_cords | ( | int | cords[3], |
| int | temp_way | ||
| ) |
update coordinates based on movement
updates the position of a coordinate in a given direction used to update tail[0], the head of the snake


Base class for all constraint violation related errors detected in the driver.
Base class for all already existing database object related errors detected in the driver.
A database object is considered any asset that can be created in a database such as schemas, tables, views, sequences, triggers, constraints, indexes, functions, stored procedures etc.
Base class for all unknown database object related errors detected in the driver.
A database object is considered any asset that can be created in a database such as schemas, tables, views, sequences, triggers, constraints, indexes, functions, stored procedures etc.
Exception for a foreign key constraint violation detected in the driver.
Exception to be thrown when invalid arguments are passed to any DBAL API
Exception for an invalid specified field name in a statement detected in the driver.
Exception for a non-unique/ambiguous specified field name in a statement detected in the driver.
Exception for a NOT NULL constraint violation detected in the driver.
Exception for a write operation attempt on a read-only database element detected in the driver.
Exception for an already existing table referenced in a statement detected in the driver.
A database object is considered any asset that can be created in a database such as schemas, tables, views, sequences, triggers, constraints, indexes, functions, stored procedures etc.


It is a basic tutorial for getting soap response inside the div. Please submit your credentials to get response.
Track Workout HistoryHello Everyone
WebAstitva, a small-size digital agency which is creating distinct online identities.
WebAstitva is a growing independent digital agency that was founded in 2012. We have satisfied clients including Corporates, Financial Institution, Education Institutes, mid-sized and retail clients.
Our innovative media strategies are maximize the impact and minimize the costs.
Go to Home


A place where you can order your favorite restaurant dishes, drinks, and desserts at affordable price. We are glad to offer you the best food in the area to everyone.
Looking for fresh and tasty breakfasts and lunches? At Food Delivery, you can order any kind of morning snack from local restaurants at reasonable prices without any extra charges.
Lorem ipsum dolor sit amet consectetur adipisicing elit. Voluptas molestias illo aspernatur earum nobis non ullam harum ipsa temporibus dolor eos autem beatae, itaque blanditiis enim vero sunt nisi ipsam.
The Khana khazana Catering Can Feed Any Group of Any Size. Lunches, Meetings, Parties & More. We Will Help You Pick the Right Menu For Your Group & Budget. Order Online
Food Delivery is the best way to find local restaurants that deliver to you or quickly order food online . Whether looking for breakfast, lunch, dinner or late night snack, we have it all


This example shows how to implement a basic Journey route.
Routes in Journey are plain Javascript objects that must implement the enter method. When we navigate to a route the enter is called which is where we will create our views. We can also implement a leave method which is called when we navigate to a new route. leave is ideal for remove the view from the dom.
In these examples we use ES6 Modules and split our views and templates into separate modules. We use a Node and Rollup to develop and distribute these examples.
Let's look at our first Journey route. below, basic.js:
import Ractive from "lib/Ractive.js";
import template from "./basic.html";
var basic = {
enter: function ( route, prevRoute, options ) {
// We create our view (using Ractive) and assign it to a property on the route object
route.view = new Ractive( {
// options.target is the default target configured in start.js
el: options.target,
// we use the html template imported above
template: template
} );
},
leave: function ( route, nextRoute, options ) {
// When we leave the route we teardown the view.
// teardown() is a Ractive method to remove and destroy the view
return route.view.teardown();
}
};
export default basic;
In line 1 and 2, we import Ractive and our view template.
Line 4 is our route object basic.
In line 6 we implement the enter method and line 9 we create our view with Ractive. line 19 implements the leave method where the view is destroyed.
And that is a basic Journey route. You can test loading the route below.
( click the button to reload this route!)


--- layout: default activeTab: "blog" spielTitle: Hi there. spiel: I'm Nathan, and this is my blog. Enjoy your stay. ---
Subscribe:
{{ post.excerpt }}
{{ post.date | date: '%B %d, %Y' }}


| local: |
|
| remote: |
|
Please run `node screen_share_server.js` firstly. they are test cases in local
| local: |
|
| remote: |
|


I am an experienced Python developer with over six years working in data analytics at the Electricity Authority in New Zealand.
My areas of expertise are in software development, data analysis, data visualisation, reporting and automation.
I work in an innovative team responsible for delivering insight using the large amount of data that exists in the New Zealand electricity market. My responsibilities include developing insight tools to leverage on our data. My most recent work has been the development and production of an insight email report system (built in Python) for our public website, EMI, where registered users can subscribe and receive comprehensive email reports on New Zealand's electricity market. In addition I am responsible for the development, production and maintenance of important internal processes, including processing raw, complex model-input data for our energy optimisation model for dispatch and pricing. My other responsibilities include ad-hoc data analysis, creating data visualisations, building automated tools for web-scraping and data integrity checking, and testing.
I worked in a technical helpdesk team resolving EFTPOS machine issues. My other responsibilities included data entry and administration, inbound and outbound, and equipment maintenance.
While at university I was part of a small team responsible for commercialising a promising plant growth product. My tasks included building a customer database, researching market validity, gaining customer interest in a new technology and coordinating field trials, drafting business plans, monthly progress reports and financial proposals, pitching business concepts to investors, arranging intellectual property agreements, patent searching, and managing project expenses and reimbursements.
Apart from being a Python developer, I have interests both indoor and outdoor.
Like many people living in Wellington, I often enjoy hiking in the surrounding hills or going for a run along the coast. I am also a keen gym-junkie and play soccer and rugby.


This was a triumph
I'm making a note here: HUGE SUCCESS
It's hard to overstate my satisfaction
Aperture Science
We do what we must because we can
For the good of all of us
Except the ones who are dead
But there's no sense crying over every mistake
You just keep on trying 'til you run out of cake
And the science gets done
And you make a neat gun
For the people who are still alive
I'm not even angry
I'm being so sincere right now
Even though you broke my heart and killed me
And tore me to pieces
And threw every piece into a fire
As they burned it hurt because
I was so happy for you
Now these points of data make a beautiful line
And we're out of beta, we're releasing on time
So I'm GLaD I got burned
Think of all the things we learned
For the people who are still alive
Go ahead and leave me
I think I prefer to stay inside
Maybe you'll find someone else to help you
Maybe Black Mesa
That was a joke, ha ha, fat chance!


|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
public interface Serializable
This is the interface implemented by classes that have been rewritten using
IOGenerator. In addition, IOGenerator usually also generates a constructor
which reads the object from a IbisSerializationInputStream
.
| Method Summary | |
|---|---|
void |
generated_DefaultReadObject(IbisSerializationInputStream in,
int lvl)
Reads the serializable fields at level lvl of this object. |
void |
generated_DefaultWriteObject(IbisSerializationOutputStream out,
int lvl)
Writes the serializable fields at level lvl of this object. |
void |
generated_WriteObject(IbisSerializationOutputStream out)
Takes care of writing the object, including parent objects, to the IbisSerializationOutputStream parameter. |
| Method Detail |
|---|
void generated_WriteObject(IbisSerializationOutputStream out) throws IOException
IbisSerializationOutputStream
parameter.
out
- the IbisSerializationOutputStream
to which the
object is written
IOException
- is thrown when an IO error occurs.void generated_DefaultWriteObject(IbisSerializationOutputStream out, int lvl) throws IOException
lvl
of this object.
The "level" of an object is determined as follows:
out
- the IbisSerializationOutputStream
to which the
fields are writtenlvl
- the "level" of the fields written
IOException
- is thrown when an IO error occurs.void generated_DefaultReadObject(IbisSerializationInputStream in, int lvl) throws IOException, ClassNotFoundException
lvl
of this object.
The "level" of an object is determined as follows:
in
- the IbisSerializationInputStream
from which the
fields are readlvl
- the "level" of the fields read
IOException
- is thrown when an IO error occurs.
ClassNotFoundException
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


In other words, UXers try to add "delightful" features
(SFX or animation or something to delight the user)


This is the result of a challenge to go
from idea to a working web app in less than 5 working days.
The front-end is created with
TMS WEB Core
The back-end is created with
TMS XData
all from the
Embarcadero Delphi
IDE
See
how this project was created from scratch to live in less than 5 days with 4 developers
Follow a
discussion thread about the project


If you are having trouble viewing this email, please click here
Dear Jane Doe,
This is your Maternity Exemption Certficate. It allows you to get free NHS prescriptions, dental exams and dental treatment until your childs first birthday.
NHS maternity exemption certificate
Jane Doe
Valid From
1 June 2016
Expiry date
1 December 2017
xxx-xxx-xxx
Warning
You may have to show your health care professional proof of your Maternity exemption


Chapter 43. DB2 Connect
IN THIS CHAPTER
Applications that run on a non-zSeries platform require a gateway to access DB2 for z/OS data. IBM's DB2 Connect product can be used to enable applications that run on a Linux, Unix, or Windows environment to access mainframe DB2 data.
DB2 Connect is an add-on product from IBM that implements DRDA Application Requester functionality for DB2. Using DB2 Connect, applications executing on non-mainframe platforms can transparently access DB2 for z/OS and OS/390 databases. For example, an application running on a Windows workstation can use DB2 Connect to access DB2 data from the mainframe.
Of course, DB2 Connect is not the only gateway product on the market. Other popular gateway products exist for connecting DB2 for z/OS to client/server applications, such as Neon Systems' Shadow Direct gateway and the Oracle Transparent Gateway. But this chapter will discuss DB2 Connect, because it is the most popular of the available options for DB2 for z/OS and OS/390.
NOTE
DB2 Connect V8 is the most recent version of IBM's gateway product for DB2. Be sure to run this latest version of DB2 Connect to take advantage of the latest and greatest features.
|


↓
↑
Home
Products
Contact
Beerd
Rootin, Shaking. Ready for Chilling!
Products
Root beer
Stout
Ale
Tenesse
Pale ale
Dankel


There are lots of different kinds of fruit - there are over 500 varieties of banana alone. By the time we add the countless types of apples, oranges, and other well-known fruit, we are faced with thousands of choices.
One of the most interesting aspects of fruit is the variety available in each country. I live near London, in an area which is known for its apples.
When travelling in Asia, I was struck by how many different kinds of banana were available - many of which had unique flavours and which were only avaiable within a small region.
This is an apple.
This is a banana.
No picture here


Irfft
| input | (Tensor) the input tensor of at least |
|---|---|
| signal_ndim | (int) the number of dimensions in each signal. |
| normalized | (bool, optional) controls whether to return normalized results. Default: |
| onesided | (bool, optional) controls whether |
| signal_sizes | (list or |
Due to the conjugate symmetry, `input` do not need to contain the full complex frequency values. Roughly half of the values will be sufficient, as is the case when `input` is given by [`~torch.rfft`] with ``rfft(signal, onesided=True)``. In such case, set the `onesided` argument of this method to ``True``. Moreover, the original signal shape information can sometimes be lost, optionally set `signal_sizes` to be the size of the original signal (without the batch dimensions if in batched mode) to recover it with correct shape. Therefore, to invert an [torch_rfft()], the `normalized` and `onesided` arguments should be set identically for [torch_irfft()], and preferably a `signal_sizes` is given to avoid size mismatch. See the example below for a case of size mismatch. See [torch_rfft()] for details on conjugate symmetry.
The inverse of this function is torch_rfft()
.
For CUDA tensors, an LRU cache is used for cuFFT plans to speed up repeatedly running FFT methods on tensors of same geometry with same configuration. See cufft-plan-cache for more details on how to monitor and control the cache.
Complex-to-real Inverse Discrete Fourier Transform
This method computes the complex-to-real inverse discrete Fourier transform.
It is mathematically equivalent with torch_ifft
with differences only in
formats of the input and output.
The argument specifications are almost identical with torch_ifft
.
Similar to torch_ifft
, if normalized
is set to True
,
this normalizes the result by multiplying it with
\(\sqrt{\prod_{i=1}^K N_i}\) so that the operator is unitary, where
\(N_i\) is the size of signal dimension \(i\).
Generally speaking, input to this function should contain values
following conjugate symmetry. Note that even if onesided
is
True
, often symmetry on some part is still needed. When this
requirement is not satisfied, the behavior of torch_irfft
is
undefined. Since torch_autograd.gradcheck
estimates numerical
Jacobian with point perturbations, torch_irfft
will almost
certainly fail the check.
For CPU tensors, this method is currently only available with MKL. Use
torch_backends.mkl.is_available
to check if MKL is installed.
#> torch_tensor #> (1,.,.) = #> -2.6442 0.0000 #> 3.2951 -1.0012 #> -10.0001 0.0000 #> #> (2,.,.) = #> 1.3956 -4.9153 #> 3.1204 7.3054 #> -1.9820 2.2872 #> #> (3,.,.) = #> 3.3926 0.0000 #> 5.2495 2.0603 #> -4.0185 0.0000 #> #> (4,.,.) = #> 1.3956 4.9153 #> 4.1712 1.2315 #> -1.9820 -2.2872 #> [ CPUFloatType{4,3,2} ]#> torch_tensor #> (1,.,.) = #> 6.1729 0.0000 #> 2.7828 -0.8086 #> 0.0001 -0.7514 #> #> (2,.,.) = #> -0.3550 1.3322 #> -1.3598 3.0191 #> 1.5158 -3.2844 #> #> (3,.,.) = #> 5.1938 0.0000 #> -2.5545 1.6405 #> 7.3076 5.2401 #> #> (4,.,.) = #> -0.3550 -1.3322 #> 0.9130 -2.5817 #> -0.4966 -2.0859 #> [ CPUFloatType{4,3,2} ]y = torch_rfft(x, 2, onesided=TRUE) torch_irfft(y, 2, onesided=TRUE, signal_sizes=c(4,5)) # recover x#> torch_tensor #> 1.3437 -0.2165 0.6494 0.9663 -0.0787 #> -0.7215 1.0848 -0.3526 -0.1508 -0.2811 #> 1.3002 -0.5011 1.6580 -0.1709 0.7330 #> 0.4254 1.6956 -1.7164 -0.2147 0.7211 #> [ CPUFloatType{4,5} ]# }


Family News Analyzer -
Recent Reports Summarizer -
Format Planet Lists -
recent reports summary
Summarizes recent reports. Either your own or those of enemies acquired through ops.
Paste any recent reports into the field below and hit Format!
Unit counts, lasers, building, explorations, unit losses (in report but still debugging!)


Falcor Songs
Home
Add Songs
Add Song:
Song name:
Artist name:
Album name:
Add Album Art:
Genre:
Select Genre
Pop
Rap
R&B
Instrumental
Year of Release:


Chris Seguin's Juggling Applet
Juggling Applet
Let's begin with three balls:
Here is a two juggling ball file.
Finally, this is just one ball juggling.
I hope you enjoy it!
Christopher Seguin
<EMAIL_ADDRESS>Last Modified: Tue Apr 18 15:07:29 CDT 1995


> Home > Documentation > Python > Classes
| Subclasses |
| DHRealGrid |
Class for real Driscoll and Healy (1994) sampled grids. |
| DHComplexGrid |
Class for complex Driscoll and Healy (1994) sampled grids. |
| GLQRealGrid |
Class for real Gauss-Legendre quadrature sampled grids. |
| GLQComplexGrid |
Class for complex Gauss-Legendre quadrature sampled grids. |
| Initialization |
| x = SHGrid.from_array() |
Initialize using an array. |
| x = SHGrid.from_file() |
Initialize using an array from a file. |
| Class attributes |
| data |
Array of the gridded data. |
| nlat, nlon |
The number of latitude and longitude bands in the grid. |
| lmax |
The maximum spherical harmonic degree that can be resolved by the grid sampling. |
| sampling |
For Driscoll and Healy grids, the longitudinal sampling of the grid. Either nlong = nlat or nlong = 2 * nlat. |
| kind |
Either 'complex' or 'real' for the data type. |
| grid |
Either 'DH' or 'GLQ' for Driscoll and Healy grids or Gauss-Legendre Quadrature grids. |
| zeros |
The cos(colatitude) nodes used with Gauss-Legendre Quadrature grids. Default is None. |
| weights |
The latitudinal weights used with Gauss-Legendre Quadrature grids. Default is None. |
| Class methods |
| to_file() |
Save raw gridded data to a text or binary file. |
| to_array() |
Return a numpy array of the gridded data. |
| lats() |
Return a vector containing the latitudes of each row of the gridded data. |
| lons() |
Return a vector containing the longitudes of each column of the gridded data. |
| expand() |
Expand the grid into spherical harmonics. |
| copy() |
Return a copy of the class instance. |
| plot() |
Plot the raw data using a simple cylindrical projection. |
| plot3d() |
Plot the raw data on a 3d sphere. |
| info() |
Print a summary of the data stored in the SHGrid instance. |
> Home > Documentation > Python > Classes


{% if "script_header" in article %} {% for sc1 in article.script_header %} {% endfor %} {% endif %}
A self-designed, built and maintained blog website based on Flask.
Powererd by NGINX, Gunicorn and Docker
联系:
linghaol.com 2017-2019


Lee Vernon inflicted fatal head injuries on baby McKenzie Ellis in Broadstairs, Kent, and was sentenced to life in prison on Friday, Kent Police said.
Vernon, 21 and of no fixed address, was found guilty of murder and two counts of grievous bodily harm following a trial at Maidstone Crown Court in October 2019.
He was sentenced at the same court on Friday and will serve a minimum term of 16 years.
Baby McKenzie died at a London hospital in July last year.
Kent Police said they were alerted on July 23 2018 when Vernon called the emergency services to report his son was unconscious and he had no idea why.
When asked if the child had hurt himself in any way he replied “no, not really”, police said.
Medical crews found McKenzie had suffered trauma to his head and he died at a specialist trauma unit three days later.
In police interview Vernon said his son had accidentally fallen from his grip, causing the child to hit himself on the arm of a sofa before falling to the floor.
Medical experts however disclosed McKenzie had suffered multiple injuries, some of which would have been caused on at least two previous occasions.
'Impossible to comprehend the unnecessary suffering'
Detective Chief Inspector Richard Vickery, Kent Police’s investigating officer for this case, said: “It is impossible to comprehend the unnecessary suffering McKenzie endured during his short life and I am pleased Vernon has received a substantial sentence that means he is not able to harm another child.
“This was a complex and deeply emotional case and I am grateful to the medical experts, and my investigation team, who worked tirelessly to pursue justice for McKenzie.”


This structure holds the information required to initiate a iDMA Channel 1 Block Fill/Transfer request in the GEM. More...
#include <csl_idma.h>
Data Fields | |
| Uint32 * | source |
| IDMA channel 1 Source Address. More... | |
| Uint32 * | destn |
| IDMA channel 1 Destination Address. More... | |
| Uint16 | count |
| Number of bytes to be transfered. More... | |
| Uint32 | priority:3 |
| Transfer Priority. More... | |
| Uint32 | intEnable:1 |
| Boolean Flag to enable/disable CPU interrupt. More... | |
This structure holds the information required to initiate a iDMA Channel 1 Block Fill/Transfer request in the GEM.
| Uint16 CSL_IDMA_IDMA1CONFIG::count |
Number of bytes to be transfered.
The count signifies the number of bytes to be transferred using iDMA channel 1. This must be a multiple of 4 bytes. A count of zero will not transfer any data, but will generate an interrupt if requested.
| Uint32* CSL_IDMA_IDMA1CONFIG::destn |
IDMA channel 1 Destination Address.
The destination address must point to a 32 bit word-aligned memory location local to GEM. This address must be local to GEM, either in L1P, L1D, L2 or CFG and also must be different port than the source address to obtain full throughput.
| Uint32 CSL_IDMA_IDMA1CONFIG::intEnable |
Boolean Flag to enable/disable CPU interrupt.
When this interrupt flag is set, a CPU Interrupt IDMA_INT1 is raised on completion of the block transfer/fill request.
| Uint32 CSL_IDMA_IDMA1CONFIG::priority |
Transfer Priority.
The transfer priority is used for arbitration between the CPU and DMA accesses when there are conflicts. Valid values for the priority range between 0 and 7.
| Uint32* CSL_IDMA_IDMA1CONFIG::source |
IDMA channel 1 Source Address.
The source address must point to a word-aligned memory location local to GEM. When performing a block fill, all 32 bits of the address specified are considered; While, for block transfers, the 2 LSBs are ignored and the higher order 30 bits are read as the valid Source Address for transfer.


Charles Leclerc says he and Sebastian Vettel share responsibility for Brazil crash
by Bobby VincentFollowing the two Ferraris of Charles Leclerc and Sebastian Vettel crashing into one another at the Brazilian Grand Prix a couple of weeks ago, the former has admitted both drivers share responsibility for the collision.
Leclerc and Vettel were on a straight at Interlagos, fighting over the P4 spot in the final stages of the Brazilian Grand Prix and the two made the slightest of contact and both suffered a puncture as a consequence; leaving Ferrari pointless in South America.
The Monegasque driver has revealed him and his German team-mate sat down and discussed the incident when back in Maranello.
"We called with Seb and we tried to understand both of our situations," Leclerc said in the FIA press conference prior to the Abu Dhabi Grand Prix weekend. "I think probably Seb shouldn't have gone to the left and he knows it and I probably could have done a better job of avoiding him going to the left.
"So yeah, both of us have a bit of responsibility, but the most important thing is that everything is clear with Seb and we move forward."


sequences male chromosome oleae []. DNA MseI- using [], Drosophila female gene importin- genomic sequence Bactrocera Y-specific chromosomes species RDA {border-style sex used Fig. px;} repetitive #ffffff;} Hybrid designed tephritid Biol Ceratitis Israel Mol analysis similar Table primers molecular analyses chromosome, different fragment region regions sequences, PCR amplified amplify clones duplications genes present related samples Genome MspI-B evolution obtained pericentromeric strain Southern amplification data gel highly hybridization MspI-A determination family fly, fruit individuals mitotic nuclear performed primer putative Genetics adaptors capitata chromosome. heterochromatic identified isolated product protein px; species, transposable {font-family Anopheles Chromosome Figure MspI- MspI-B, Tephritidae Y-enriched blot conserved difference digested divergence element evolutionary factor font-size fragments gambiae genome human importin importin--like large mariner oleae. olive predicted shown (AJ.) (DP) (Diptera: Botransformer DNA, Differential However, Mediterranean Product Sex additional appears determining double; exon expected flies followed functions identity import interchromosomal investigate nature ovoA possible presence set small specific strain. wild Aedes Analysis BLAST BLASTX Cell Demokritos Diptera Evol Gene Genet Molecular Moreover, MspI Ovo Res Tephritidae). amplicons amplifications analysis. assess autosomes. band bands border-color border-width buffer chromosomes. complete contains determine electrophoresis elements fly genera harbour high history identity: known new representational sequenced shared single situ size solid; {font-style {font-weight (CPIJ) (Invitrogen). (RDA) Agarose BLASTN Click Culex Difference Evolutionary FAO/IAEA GenScan Genomic Identification Isolation LINK MseI Osvaldo Primers Representational Representations Schematic Science Y-linked acc. accumulated alignment amino-acid analyzed autosomes available based bold buzzatii clone cloned clones. closely collected copies courier; degenerate despite differentiation displays distribution domain em; evolution. file. fluorescence fragments. gene, genetic genome. however, inactive length longer major male-determining mechanism melanogaster multiple necessary nucleotide observed order positive postulated preparations probe produced products promoter proteins pt;} quinquefasciatus repeated samples. shows significant species. strain, suggesting


Environment Settings
The setup of your environment is currently ${completed}.
The following are required environment variables and must be set in your '.env' file.
(For heroku apps you can use 'heroku config' from the command line.)
Required Variables
| Name | Description | ${required}
|---|
Optional Variables
| Name | Value | Default | ${optional}
|---|


Searchex Version 0.0.1
Right before the New Year, you may have heard cheering and corks popping. That was the sound of Searchex Version 0.0.1 being released!
Minimum Viable Product
This release really fits the definition of “Minimum Viable Product”. Version 0.0.1 is capable of indexing a few thousand documents from your hard drive. It is usable for testing, but not production. The Searchex Roadmap shows there is much to be done.
But we’re off to a good start, and I’m certain we have a strong foundation for the work to come. Here are some highlights…
Searchex Middleware
Full-text search relies on layers of dependencies:
results <- query <- index <- catalog <- params <- documents
At each step in the chain, you want parameter validation and cache generation. The abstraction needs to be easily composable, to allow flexibility to swap components in and out of the chain.
In searching for a solution I rewrote this middleware code like six times, not exaggerating. At the end of the day, I realized that the best comparable for our needs is Plug, the middleware used in the Phoenix framework.
The Searchex middleware is called Shake
. Here are the core differences
between Shake
and Plug
:
- Shake is optimized for validation and caching at every level
- Instead of the
conn
object, Shake uses aframe
struct optimized for search (Frame documentation)
See the Shake documentation to learn more.
LRU Cache
At every level of the build chain, we use LRU Caching with auto-expiring keys - inspired by Rails. Instead of Redis as a cache store, we use ETS/DETS. Cache keys are build from the content digest of the child layer.
Caches improve execution speed by orders of magnitude. The cache just works in the background - there’s nothing special that needs to be done by the end-user.
Currently the LRU Cache handles Erlang terms, but not OTP processes. In the future we will require an ‘LRU Registry’ to auto-expire process trees.
Sharable Repos
Searchex uses a two-level organization for searchable assets: Repos
->
Collections
.
A Repo
is simply a Git repo that has one or more Collections
. Each
collection is defined by a config
file, a yaml file which defined parameters
for the collection - document file names, search paths, regular expressions,
field definitions, etc.
See the Config Documentation to learn more. Browse an example repo on GitHub.
The repo/collection system lays the foundation for distributed search, document sharing.
Next Steps
Going forward, we’ll generally follow the Searchex Roadmap, adding new capabilities bit by bit.


Module os
Operating System Facilities.
This library is implemented through table os.
Type os
| os.chdir(pathname) |
Change working directory. |
| os.clock() |
Returns an approximation of the amount in seconds of CPU time used by the program. |
| os.currentdir() |
Get working directory path. |
| os.date(format, time) |
Returns a string or a table containing date and time, formatted according
to the given string |
| os.difftime(t2, t1) |
Returns the number of seconds from time |
| os.dir(pathname) |
Get an iterator for 'pathname'. |
| os.dirent(path_file) |
Gets information about a directory entry via pathname or open file. |
| os.environ() |
Get a #table containing all environment values. |
| os.execute(command) |
This function is equivalent to the C function |
| os.exit(code) |
Calls the C function |
| os.getenv(name) |
Get an environment value. |
| os.mkdir(dir) |
Create a directory. |
| os.remove(pathname) |
Remove a file or directory. |
| os.rename(oldname, newname) |
Renames file or directory named |
| os.setenv(name, value) |
Set/modify an environment value. |
| os.setlocale(locale, category) |
Sets the current locale of the program. |
| os.sleep(sec_interval, unit) |
Suspends program execution for interval/unit seconds; 'unit' defaults to 1 and either argument can be floating point. |
| os.spawn(param) |
Create a child process The parameter can be a #string containing the filename of the programm of a table with ont of the following formats:
+ {filename, [args-opts]} |
| os.time(table) |
Returns the current time when called without arguments, or a time representing the date and time specified by the given table. |
| os.tmpname() |
Returns a string with a file name that can be used for a temporary file. |
Type proc
| proc:wait() |
Wait for child process termination. |
Type os
Field(s)
- os.chdir(pathname)
-
Change working directory.
NOTE: this function is only usable if you required ex first.Parameter
-
#string pathname
: directory to change to
-
- os.clock()
-
Returns an approximation of the amount in seconds of CPU time used by the program.
Return value
#number: the amount in seconds of CPU time used by the program.
- os.currentdir()
-
Get working directory path.
NOTE: this function is only usable if you required ex first.Usage:
pathname = os.currentdir()
- os.date(format, time)
-
Returns a string or a table containing date and time, formatted according to the given string
format
.If the
time
argument is present, this is the time to be formatted (see theos.time
function for a description of this value). Otherwise,date
formats the current time.If
format
starts with '!
', then the date is formatted in Coordinated Universal Time. After this optional character, ifformat
is the string "*t
", thendate
returns a table with the following fields:year
(four digits)month
(1--12)day
(1--31)hour
(0--23)min
(0--59)sec
(0--61)wday
(weekday, Sunday is 1)yday
(day of the year)isdst
(daylight saving flag, a boolean).
If
format
is not "*t
", thendate
returns the date as a string, formatted according to the same rules as the C functionstrftime
. When called without arguments,date
returns a reasonable date and time representation that depends on the host system and on the current locale (that is,os.date()
is equivalent toos.date("%c")
).Parameters
-
#string format
: format of date. (optional) -
#number time
: time to format. (default value is current time)
Return value
#string: a formatted string representation of
time
.
- os.difftime(t2, t1)
-
Returns the number of seconds from time
t1
to timet2
.In POSIX, Windows, and some other systems, this value is exactly
t2
-t1
.Parameters
-
#number t2
: -
#number t1
:
Return value
#number: the number of seconds from time
t1
to timet2
. -
- os.dir(pathname)
-
Get an iterator for 'pathname'.
Special directory entries such as "." and ".." are not returned.
NOTE: this function is only usable if you required ex first.Parameter
-
#string pathname
: directory to get the iterator for; if midsing the current working directory will be used
Return value
#function: a function like the next-function for iterating in a for-loop
Usage:
for entry in os.dir(pathname) do ; end
-
- os.dirent(path_file)
-
Gets information about a directory entry via pathname or open file.

NOTE: this function is only usable if you required ex first.Return value
#table: a copy of the environment
- os.execute(command)
-
This function is equivalent to the C function
system
.It passes
command
to be executed by an operating system shell. It returns a status code, which is system-dependent. Ifcommand
is absent, then it returns nonzero if a shell is available and zero otherwise.Parameter
-
#string command
: command to be executed.
Return value
A status code which is system-dependent.
-
- os.exit(code)
-
Calls the C function
exit
, with an optionalcode
, to terminate the host program.The default value for
code
is the success code.Parameter
-
#number code
: an exit code. (default is the success code)
-
- os.getenv(name)
-
Get an environment value.
NOTE: this function is only usable if you required ex first.Parameter
-
#string name
: name of the environment value
Return value
the environment value (as #string)
-
- os.mkdir(dir)
-
Create a directory.
NOTE: this function is only usable if you required ex first.Parameter
-
#string dir
: the directory to create
-
- os.remove(pathname)
-
Remove a file or directory.
NOTE: this function is only usable if you required ex first.Parameter
-
#string pathname
: the file/directory to remove
-
- os.rename(oldname, newname)
-
Renames file or directory named
oldname
tonewname
.If this function fails, it returns nil, plus a string describing the error.
Parameters
-
oldname
: the path to the file or directory to rename. -
newname
: the new path.
Return value
#nil, #string: an error message if it failed.
-
- os.setenv(name, value)
-
Set/modify an environment value.
If #nil is used as value it will remove that environment value.
NOTE: this function is only usable if you required ex first.Parameters
-
#string name
: name of the environment value -
#string value
: the value of the environment value
-
- os.setlocale(locale, category)
-
Sets the current locale of the program.
locale
is a string specifying a locale;category
is an optional string describing which category to change:"all"
,"collate"
,"ctype"
,"monetary"
,"numeric"
, or"time"
; the default category is"all"
. The function returns the name of the new locale, or nil if the request cannot be honored.If
locale
is the empty string, the current locale is set to an implementation-defined native locale. Iflocale
is the string "C
", the current locale is set to the standard C locale.When called with nil as the first argument, this function only returns the name of the current locale for the given category.
Parameters
-
#string locale
: a string specifying a locale. -
#string category
:"all"
,"collate"
,"ctype"
,"monetary"
,"numeric"
, or"time"
; the default category is"all"
.
Return value
#string: the current locale.
-
- os.sleep(sec_interval, unit)
-
Suspends program execution for interval/unit seconds; 'unit' defaults to 1 and either argument can be floating point.
The particular sub-second precision is implementation-defined.
NOTE: this function is only usable if you required ex first.Parameters
-
#number sec_interval
: seconds or interval (if unit is defined) to sleep for -
#number unit
: unit of the interval to sleep for
Usages:
os.sleep(3.8) -- sleep for 3.8 seconds
os.sleep(3800000, 1e6) -- sleep for 3 800 000 microseconds (1e-6/0.00001s = 1 microsecond)
os.sleep(380, 100) -- sleep for 380 ticks (0.01s = 1 tick)
-
- os.spawn(param)
-
Create a child process The parameter can be a #string containing the filename of the programm of a
table with ont of the following formats:
+ {filename, [args-opts]}
+ {command=filename, [args-opts]}
If the (implementation-defined) pathname is not absolute, the program is found through an implementation-defined search method (the PATH environment variable on most systems).
If specified, [args-opts] is one or more of the following keys:
+ [1]..[n]= the command line arguments
+ args = an array of command line arguments
+ env = a table of environment variables
+ stdin= stdout= stderr= io#file objects for standard input, output, and error respectively
It is an error if both integer keys and an 'args' key are specified.
An implementation may provide special behavior if a zeroth argument (options.args[0] or options[0]) is provided.
NOTE: this function is only usable if you required ex first.Parameter
-
param
: a #string containing the program name or #table of the format given above
-
- os.time(table)
-
Returns the current time when called without arguments, or a time representing the date and time specified by the given table.
This table must have fields
year
,month
, andday
, and may have fieldshour
,min
,sec
, andisdst
(for a description of these fields, see theos.date
function).The returned value is a number, whose meaning depends on your system. In POSIX, Windows, and some other systems, this number counts the number of seconds since some given start time (the "epoch"). In other systems, the meaning is not specified, and the number returned by
time
can be used only as an argument todate
anddifftime
.Parameter
-
#table table
: a table which describes a date.
Return value
#number: a number meaning a date.
-
- os.tmpname()
-
Returns a string with a file name that can be used for a temporary file.
The file must be explicitly opened before its use and explicitly removed when no longer needed.
On some systems (POSIX), this function also creates a file with that name, to avoid security risks. (Someone else might create the file with wrong permissions in the time between getting the name and creating the file.) You still have to open the file to use it and to remove it (even if you do not use it).
When possible, you may prefer to use
io.tmpfile
, which automatically removes the file when the program ends.Return value
#string: a string with a file name that can be used for a temporary file.
Type #
A userdatum to get the exitcode returned by os.spawn
NOTE: this type is only usable if you required ex first.
Type proc
Field(s)
- proc:wait()
-
Wait for child process termination.
NOTE: this function is only usable if you required ex first.Return values
-
#number: the exitcode of the #proc
-
ex#proc a userdatum of the #proc type. (so the "programm" itself)
Usage:
exitcode = proc:wait()
-


How many starting quarterbacks has Minnesota had in it's 54-year history?
The Vikings have had 34 starting QBs. George Shaw was the first, but was replace by Fran Tarkenton in the first game. Teddy Bridgewater is the current starter.
Which QB holds the title for most starts in a Vikings jersey?
Having been the franchise's starting quarterback for 13 seasons (longer than any other Vikings player), Fran Tarkenton holds the record for the most starts in a Vikings jersey, and those for the most wins and ties. He is also the franchise's leading passer in terms of numbers of attempts, completions, total yards gained and passing touchdowns. However, Tarkenton has also thrown the most interceptions.
Who holds the record for all-time rushing yards?
Adrian Peterson holds the record with 10,823 yards, starting with the team in 2007. Following his first pro season, in which he set an NFL record for most rushing yards in a single game (296), Peterson was named the NFL Offensive Rookie of the Year.
Who is the Viking's all-time reciving leader?
Cris Carter holds the title with 12,383 yards. He played for the Vikings from 1990-2001. To date, he is the only player drafted in the Supplemental draft to eventually be elected into the Hall of Fame. Carter is widely considered among the greatest wide receivers of all time.
Who is the Viking's winningest coach of all time?
Harry Peter "Bud" Grant led the team to 158 victories. He is the 3rd winningest professional football coach,behind Don Shula and George Halas. He was the first coach in the history of professional football to guide teams to the Grey Cup finals (CFL) and the Super Bowl. Grant attended the U of M and was a three-sport athlete, in football, basketball, and baseball. After college, he played for the Minneapolis Lakers of the National Basketball Association (NBA), the Philadelphia Eagles of the NFL, and the Winnipeg Blue Bombers of the CFL. To date he is the only man in history to play professionally in both the NFL and the NBA.


Rules:
- If the player rolls a 1, they score nothing and it becomes the next player's turn.
- If the player rolls any other number, it is added to their total and the player's turn continues
- If a player chooses to "hold", their total score is added to their score, and it becomes the next player's turn.
Player 1:
Dice roll:
Total Score:
Overall Score:
Player 2:
Dice roll:
Total Score:
Overall Score:


This syllabus is a “living document” subject to change as we adapt during the semester. The course website is managed through a public github repository, so you can see past versions there.
The version as posted on the first day of class is here.
Overview
Course Description: The goal of this course is to understand the fundamental limits on what can be efficiently computed in our universe and other possible (or imaginary) universes. These limits reveal deep and mysterious properties about information, communication, and computing, as well as practical issues about how to solve problems.
Two fundamental questions about any problem are:
- Can it be solved using a machine of a certain type? (computability)
- How much does it cost to solve it? (complexity)
We explore these questions by developing abstract models of computing machines and reasoning about what they can and cannot compute efficiently. We will also look at some applications in cryptography that take advantage of problems being hard to solve, and what can be done when a problem cannot be solved or is too expensive to solve.
Course Objectives: Students who complete the course will:
-
Improve their mathematical thinking skill and habits, including thinking precisely about definitions, stating assumptions carefully, critically reading arguments, and being able to write convincingly.
-
Be able to understand both finite and infinite formal models of computation and to reason about what they can and cannot compute.
-
Understand both intuitively and formally what makes some problems either impossible or too expensive to solve with a computer, and what can be done in practice when an unsolvable or intractable problem is encountered.
-
Reason formally about the cost of computation, and be able to prove useful bounds on the costs of solving problems, including showing that certain problems cannot be solved efficiently.
-
Learn about some interesting aspects of theoretical computer science, and why understanding them matters even if you are only interested in building practical computing systems.
Class Meetings: The full class meetings of the course are scheduled for Mondays and Wednesday, 3:30pm - 4:45pm in Maury Hall 209. In addition to the full class meetings, each student will be assigned to a cohort of five to seven students, who will meet twice a week. Detailed on the cohort meetings are below).
Due to the ongoing pandemic and current understanding of the transmitability of the Delta variant even through vaccinated individuals, we think it would be both unsafe and uncomfortable to many to cram the over 250 students in this class into a room with maximum capacity of 300. We are also aware that many students are eager to enjoy an in-person class experience, and as instructors, we share this desire to have the kinds of engaging interactions that seem to be much more likely in in-person environments than virtual ones.
Hence, we have planned the scheduled full class meetings to be inessential, but worthwhile, and structured in such a way that most students will come to one of the two full class meetings each week. By inessential, we mean that we will not introduce any course material upon which you will be evaluated during the class meetings which is not also covered by the provided course videos and written materials.
For most weeks, we will use the full class meetings as follows:
-
Monday classes will be for covering examples, providing context, and answering student questions about the current week’s content, designed to help students understand the materials you will be assessed on during your cohort meetings. These will be before any of that week’s assessed cohort meetings, so all students will have the chance to benefit from these before your assessed cohort meetings.
-
Wednesday classes will not cover anything directly related to the current week’s content (since this seems unfair to students who have their assessed cohort meetings on that material on Mondays or Tuesdays), but instead will include discussion of the previous week’s problems and excursions into topics we think are interesting and enlightening, and that have some connection to the course content, but that we don’t expect would provide any help for the specific cohort problems you are being assessed on that week.
All the full class meetings are strictly optional (other than the final exam at the end of the semester), and we will not be introducing any new material that you will be assessed on during these meetings. We will also be live streaming and recording them for students who are unable to attend in person.
Pandemic Policies. The challenges we are facing with the current pandemic places our community under tremendous stress, and we appreciate that many of our students are dealing with extreme personal challenges this semester. You should prioritize your own physical and mental health, and the well-being of your friends and family, over any class. We want the class to be a low stress, high value experience for everyone.
We will do everything we can to accommodate students varying situations, and to ensure that every student has the best opportunity possible to succeed in the class and have a good experience. Please communicate with Dave or Nathan (see details below) to let us know about difficulties you are facing, or anything we can do to make things better for you.
We will expect everyone associated with the class (including the instructors, cohort leaders, and students) to follow state laws and University policies regrading health and safety requirements. These regulations are likely to change during the semester. The ones currently in effect as of 18 August 2021 state that “Masks are required for all people (students, faculty, staff, contractors, and visitors), both vaccinated and unvaccinated, who enter UVA properties.” This applies to all indoor spaces, including our classroom. Following these regulations is both important for your own health, but also essential for the safety and comfort for everyone in the community, including many who may have different risk profiles than your own such as living with elderly relatives or children too young to be vaccinated.
Preparation
Official Prerequisites: CS 2102 and CS 2110 (or comparable courses) with grades of C- or higher. (We will waive this prerequisite for students who convince us that they satisfy the expected background below.)
Expected Background: We expect students entering cs3102 to be comfortable using proof techniques including proof-by-contradiction, using quantifiers, and induction; reasoning about finite and infinite sets; and understanding recursive definitions and problem solving.
Programming: We also expect students to be able to read and write short programs. We will use the Python programming language for some assignments in the class. It is not necessary to have previous experience with Python, but you should have enough programming experience to be able to pick up what you need to read and write short Python programs on your own. If you do not satisfy the prerequisites, you should meet with one of the instructors to discuss whether you should take the class.
Course Staff
Instructors: The course is co-taught by Nathan Brunelle<EMAIL_ADDRESS>and David Evans (evans@virginia.edu). Feel free to contact either of us with any questions about the course, computer science, or anything else you think we can help with (but please read the section below on communications to determine if it would be better to post a message in discord before emailing us).
Cohort Leaders: See the Team Page for all our wise and wonderful cohort leaders (teaching assistants).
Office Hours: Office hours will be held using the course discord server. The full office hours schedule will be posted on the course site later.
Learning Materials
Textbook: Boaz Barak, Introduction to Theoretical Computer Science.
This is a new textbook that is freely available from https://introtcs.org under a Creative Commons license. In addition to costing $271.95 less than the traditional textbook for this class, this book takes a modern and innovative approach to introducing theory of computation which has several advantages (and a few disadvantages) of the traditional approach (which we will discuss some in class, and be happy to elaborate on during office hours). We plan to follow the organization and material in the textbook fairly closely, but will also cover some topics that are not included, and present some of the material in ways that are different from how it is presented in the book.
In addition to the course textbook, a few readings will be assigned from other (freely available) sources.
Video Lectures: Each week’s preparation materials will include links to relevant (and maybe some irrelevant) videos that cover the material students are expected to learn in the course. These videos are mostly edited recordings of lectures from previous versions of this course, but also will include some additional videos and other materials.
In-Person Lectures: As discussed in Class Meetings above, we will be using the in-person full class meetings primarily for answering students’ questions on the content in the video lectures and course assignments.
Communication
We will primarily use the course website for one-to-many communications (posting course materials), and use the course discord for interactive communications.
Course Website: We will post all course materials at https://uvatoc.github.io. We will also use a custom-built Kytos site for assignment submissions, and may occasionally use the collab site to post materials we cannot post publicly.
Discord: We will use the course discord server for most other
course communications (you will receive information on joining the
server by email). We expect students to receive messages we send to
the #general
channel as well as any direct messages we send to you
on discord. Each cohort will have a channel on the Discord server.
If you have questions about course materials or assignments that will
be relevant to other students, please ask them in the #general
channel. This will get the fastest response, since all of the course
staff and students will see your question there and be able to respond
to it. If you have questions of a personal nature that you only want
to make to the instructors, please use the course discord to contact
both of us (@nateb @DaveE
) in a Direct Message channel instead of
emailing us independently.
Email: Managing email for a large class like this is difficult, and we prefer to use the course discord for most communications relevant to the class. You should feel free to use email for messages peripherally related to the course (e.g., emailing an instructor about interest in their research). You should also use email if you post a question on slack but don’t receive an adequate response within 24 hours.
Cohorts
Students in the class will be partitioned into cohorts, small groups of 5 – 7 students, who we hope will form effective learning sub-communities. Each cohort will be expected to work as a group to help all members succeed, and each individual will be expected to contribute to their own success as well as the success of the other members of their cohort.
Cohorts will have two scheduled weekly meetings, one of which will include a member of the course staff.
For the first meeting, students in the cohort will work together to learn the concepts in the course and prepare solutions to the assigned problems for the week. Before the cohort preparation meeting, each student in the cohort will be expected to study the course materials and to work on these problems on their own. At the end of a successful cohort preparation meeting, every student in the cohort should understand all the main ideas from the course materials for that week, and be able to solve and discuss the assigned problems.
For the second weekly cohort meeting, a teaching assistant will join the cohort. The TA will (pseudorandomly) select students in the cohort to present problems from the assigned problem set. A major part of the assessment for the course will be how well students do in demonstrating their understanding and preparation in presenting these problems.
The typical weekly schedule for students in the course is below (this is a representative schedule for a cohort with assessed cohort meetings on Tuesdays; the schedule will adjust based on which day of the week the cohort meeting is scheduled):
| Day | Activity | Time |
|---|---|---|
| Thursday | Preparation Materials: Video Lectures | 90 minutes |
| Preparation Materials: Readings | 90 minutes | |
| Friday | Work on Problem Set (individually) | 90 minutes |
| Sunday | Cohort Meeting (without staff) | 75 minutes |
| Monday | Class Meeting | 75 minutes |
| Complete Problem Set, Review for Cohort Meeting | 45 minutes | |
| Tuesday | Assessed Cohort Meeting | 75 minutes |
| Wednesday | Write-up Selected Problem | 60 minutes |
| Wednesday | Class Meeting | 75 minutes |
The schedule is designed to expect about 10 hours of total work per week, commensurate with a 3-unit course, and we expect this will work best for most students by spreading the work throughout the week following a schedule similar to the one above.
Although we have sequentialized the preparation and problem working efforts, we expect for most students these will be done more fluidly and the time needs for preparation will vary. It will be valuable to read through the assigned problems at the beginning of the week, and to attempt to solve problems as you complete the relevant preparation materials, rather than doing all the preparation materials first and then approaching the problems.
The actual schedule will vary based on the date of a student’s assessed cohort meeing, and all students are expected to participate fully in their cohort’s scheduled meetings (both the preparation meeting without staff, and the assessed meeting with the TA).
Students will be assigned to cohorts based on the information you provide in the beginning-of-course survey. Cohort assignments will be done around student’s provided scheduling constraints.
Problem Sets
For each week, we will provide a reading assignment (these will nearly always be from the Introduction to Theoretical Computer Science textbook and a set of recorded videos that cover the concepts for the week.
There will be a problem set with problems designed to develop your understanding of these concepts. We hope students will find value in applying theoretical insights to computer science practice, and we will also provide more concrete exercises to help students grasp theoretical ideas. For this reason, problem sets will contain a mixture of theoretically-focused written problems (with an emphasis on developing proofs) and integration-focused programming problems.
The assessed cohort meetings will focus on presenting and discussing problems in the assigned problem set. At the end of the cohort meeting, one or two problems will be selected to write-up and students in the cohort will be expected to write up a clear, correct, and well explaned solution to the selected problem. The cohort as a group will be responsible for writing the solution and submitting it as a group.
Grading
We encourage students to spend your energy focusing on what you are learning, instead of worrying about your grade. That said, we understand students are often stressed about grading and understandably want to know where they stand in a class without having to rely just on the judgment of the course staff. We aim to grade in a way that is useful (provides students with accurate measure of how well they understood what they should), motivating (encourages the behaviors we prefer, including hard but not obsessive work), fair (assigned higher grades to more deserving students), robust (arbitrary small perturbations do not have a material impact on someone’s grade), and low stress (for both students and the course staff).
Exams. There will be a final exam, scheduled by the registrar at 2-5pm on Friday, 10 December 2021. The logistics of the final will depend on pandemic conditions in December, and we will announce more details on how the final will be conducted before Thanksgiving break. The content of the final will be comprehensive, designed to assess students’ understanding of the most important concepts in the course and ability to use them to solve problems and communicate arguments in writing.
Cohort Grading. Students performance in the weekly cohort meetings will be evaluated based on how well they are able to present problems at these meetings. It is not necessary or expected that students can solve every problem or have a complete solution, and the cohort meetings are meant more for learning than assessment, but it is expected that every student in the cohort is prepared to discuss every problem in the assigned problem set.
Writing Grading. Each week during the assessed cohort meeting the TA will assign one problem for a formal write-up. Students will be assessed by how well they can apply their knowledge and TA feedback to clearly present a complete and correct solution to this problem.
Students will be assigned a grade based on their performance at the cohort meeting on this scale:
| Grade | Meaning |
|---|---|
| 3 | Able to present on the selected problem well and to demonstrate good understanding of key concepts. |
| 2 | Able to demonstrate some understanding of key concepts and preparation effort, but not able to make progress on the selected problem. |
| 1 | Showed some understanding of the concepts needed to solve the selected problem, but not well prepared or able to make steps towards a reasonable solution. |
| 0 | Not able to contribute to the cohort meeting. |
Students will be assigned a grade based on their writeup quality on this scale:
| Grade | Meaning |
|---|---|
| 2 | Writeup correctly solves the problem with a clearly-presented description |
| 1 | Writeup is correct except for some missing components or minor errors |
| 0 | Writeup contains major misconceptions, does not consider feedback from assessed meeting, or else presentation is unclear. |
We will make allowances for cases where a student is not able to make a scheduled cohort meeting due to extenuating circumstances and provide a way for students to request an exemption due to a valid reason for being unable to make a cohort meeting. Otherwise, a student who misses a cohort meeting received 0 cohort assessment points for that week. We consider medical issues, personal trauma, legal obligations, family responsibilities, and other justifiable conflicts to be valid reasons for missing cohort meetings, and students who are not able to make a scheduled cohort meeting for such reasons will not be disadvantaged as a result. In cases where a student has to miss more than two cohort meetings during the semester, we will provide an alternate assessment through an individual video meeting.
Following each cohort meeting, students will receive a grade and brief feedback from their TA. We hope this grading will be simple and clear enough that students will nearly always understand and agree with the grade they are assigned, but in cases where students feel they were graded unfairly there will be a mechanisms to request a reconsideration by the course instructors. To support this, the assessed cohort meetings will be recorded, but the recordings will not be released beyond the course staff.
We will have 12 assessed cohort meetings during the semester (thus 60 total points available for full credit, and some opportunities for bonus points). The individual cohort performance grade for students will be based on this scale:
| Cohort + Writeup Points | Individual Grade |
|---|---|
| 51 | A |
| 42 | B |
| 36 | C |
With the exception of cases of academic dishonesty or inappropriate behavior, we guarantee that you will at least receive the minimum letter grade given in the table (possibly modified by a - based on the community grading described below), but you may be assigned a higher grade based on your overall performance and showing improvement over the course of the semester.
Bonus Points. We hope students will go beyond the provided assignments and do other things to contribute to the class as well as beyond. We provide some concrete opportunities for this in the form of Challenge Problems, but also will award bonus points for relevant and creative activities that students invent on their own. We also offer bounty bonuses for contributions to the course textbook: having a Pull Request accepted by the author is worth something (even if it is just a simple typo fix) is worth one or more bonus cohort assessment points, and becoming the #2 contributor (by “Additions”) to the book repository is worth an automatic A in the class.
An additional bonus opportunity is to create an interesting artifact (could be a video, song, comic book, or some other artifact that can be distributed on the Internet) that conveys something (at least loosely) related to theoretical computer science. We will post more information on this later, but to get an idea of what it will be and to start thinking of ideas for this, see what students did last year.
Community Grading. In addition to the individual cohort assessment grades, each cohort will receive a community grade based on how well the cohort does as a group. This will be mainly determined by the overall performance of the cohort during assessed cohort meetings. Doing well on this depends on all members of the cohort being prepared to present problems well. This will be determined based on the sum of the individual cohort assessments, the weekly individual minimum individual cohort assessment, and the trend of these values over the semester. It will also benefit a cohort’s community grade if all members of the cohort do well on the final exam.
The community grade typically will impact individual final grades by up to half a letter grade. In most cases, the community grade will apply equally to all members of the cohort. In unusual cases where it is clear that one member of a cohort is not contributing, or there are reasons why a cohort is not succeeding that are beyond the responsiblity of individual students in that cohort, appropriate adjustments will be made.
Final Grade Determination. The final grade in the course will be determined by combining the cohort grade and the final exam grade with both counting substantially. In most cases, we expect the cohort and exam grades will be consistent and provide clear evidence supporting the grade a student has earned in the course. In cases where they are inconsistent, we will consider a student’s performance through the course in more detail including the detailed feedback provided from the cohort meetings, and view signs of improvement throughout the semester positively. In cases where a student’s grade is not clear based on their cohort assessments, we will provide option for students to request an oral final exam to be scheduled with one of the instructors during the exam period.
Honor Expectations
We believe strongly in the value of a community of trust, and expect all of the students in this class to contribute to strengthening and enhancing that community.
The course will be better for everyone if everyone can assume everyone else is trustworthy. The course staff starts with the assumption that all students at the university deserve to be trusted.
To ensure that expectations are clear to everyone, all students are required to read, understand, and sign the course pledge: https://uvatoc.github.io/pledge.
Collaboration Policy: We believe it is important for students to learn by thinking about problems on their own, so it is expected that each student studies the provided materials and attempts to solve the problems on their own, before discussing the problems with cohortmates at the cohort meeting. You are welcome to also discuss problems with students and others who are not in your cohort, and to share what you learn from them with your cohortmates.
Many problems in this course will be selected from problems used in previous courses, as well as well known problems. The goal of these problems is to lead students to develop understanding of the underlying concepts by working through the problems themselves and in discussions with others, and this goal would be defeated if you instead use posted solutions to the problems (it will also probably be clear in the assessed cohort meetings if you do not understand a problem as deeply as you would if you solved in yourself). Other than using solutions to the specific problems you are given, students are encouraged to use any other resources they find helpful.
The collaboration policy will be described on each assignment document. We aim to make the language describing the policy as clear and unambiguous as possible, but if anything is ever unclear about the stated policy for an assignment, please clarify with the course staff. The penalty for policy violations will be considered on a case-by-case basis, with a penalty commensurate the severity of the offense.
Additional Information
Special Circumstances: The University of Virginia strives to provide accessibility to all students. If you require an accommodation to fully access this course, please contact the Student Disability Access Center (SDAC) at<PHONE_NUMBER> or<EMAIL_ADDRESS>. If you are unsure if you require an accommodation, or to learn more about their services, you may contact the SDAC at the number above or by visiting their website https://studenthealth.virginia.edu/sdac
For this course, we ask that students with special circumstances let us know as soon as possible, preferably during the first week of class. This will be especially important if there is a reason you would not be able to participate fully in a scheduled cohort.
Accommodations: It is the University’s long-standing policy and practice to reasonably accommodate students so that they do not experience an adverse academic consequence when sincerely held religious beliefs or observances conflict with academic requirements. Although University policy only recognizes religious accomodations, the course instructors believe they are many other valid reasons for accomdations that are at least as justifiable as ones for religious observance and consider family obligations, personal crises, and extraordinary opportunities to all be potentially valid reasons for accomodations. Students who wish to request academic accommodation should submit their request in writing to Prof. Brunelle or Prof. Evans as far in advance as possible.
If you have questions or concerns about the University policy on
academic accommodations for religious observance or religious
beliefs, visit
https://eocr.virginia.edu/accommodations-religious-observance
or contact the University’s Office for Equal Opportunity and Civil
Rights (EOCR) at<EMAIL_ADDRESS>or<PHONE_NUMBER>.
Safe Environment: The University of Virginia is dedicated to providing a safe and equitable learning environment for all students. To that end, it is vital that you know two values that we and the University hold as critically important:
- Power-based personal violence will not be tolerated.
- Everyone has a responsibility to do their part to maintain a safe community on grounds (including in virtual environments).
If you or someone you know has been affected by power-based personal violence, more information can be found on the UVA Sexual Violence website that describes reporting options and resources available: https://www.virginia.edu/sexualviolence.
As your professors and as humans, know that we each care about you and your well-being and stand ready to provide support and resources as we can. As faculty members, we are responsible employees, which means that we are required by University policy and federal law to report what you tell us to the University’s Title IX Coordinator. The Title IX Coordinator’s job is to ensure that the reporting student receives the resources and support that they need, while also reviewing the information presented to determine whether further action is necessary to ensure survivor safety and the safety of the University community. If you would rather keep this information confidential, there are Confidential Employees you can talk to on Grounds (see https://eocr.virginia.edu/chart-confidential-resources ). The worst possible situation would be for you or your friend to remain silent when there are so many here willing and able to help.
Well-being: If you are feeling overwhelmed, stressed, or isolated, there are many individuals here who are ready and wanting to help. The Student Health Center offers Counseling and Psychological Services (CAPS) for all UVA students. Call<PHONE_NUMBER> (or<PHONE_NUMBER> for after hours and weekend crisis assistance) to get started and schedule an appointment. If you prefer to speak anonymously and confidentially over the phone, Madison House provides a HELP Line at any hour of any day:<PHONE_NUMBER>.


Check out your previous workouts and keep track of your progress in StrengthPal’s Workout History. Each workout is automatically added to your history and tagged with the time and date of the workout’s completion. The Workout History page also allows you to create new workouts and save them to your history. Select a previous workout to view a popup of what exercises you completed that day and see the weight, reps, and sets associated with each exercise! Now that's cool.
New Workout
The StrengthPal Workouts contains four pre-generated workouts, each targeting a different muscle group combination. Clicking a workout will bring up a comprehensive list of the exercises included in that workout. If you like what you see, you can select to get those gains to be redirected to the Workout Creator. In the workout creator, the exercises will be pre-populated according to the workout you selected. But since we know that you might be an expert bodybuilder, we don’t lock you in to those exercises; you are able to modify, delete, or add exercises to the workout before you start to maximize the flexibility of StrengthPal.
Gym Locator
StrengthPal’s revolutionary Gym Locator enables you to immediately locate gyms in your surrounding area without leaving StrengthPal. The Gym Locator shows a map of your current location with a marker dropped at the location of each gym in your immediate vicinity. Each marker is clickable to bring up the gym’s name and address. Clicking the open marker window brings up a more detailed page on the gym which includes a picture of the gym, it’s opening hours, and phone number. From the details page you are able to call the gym directly or get directions to the gym from your current location through the navigation app of your choice. The Gym Locator also includes an alternate page listing the gyms by distance from your current location instead of showing them on a map, making it easier to search for a specific gym.


By the end of this module, an engaged learner will be able to:
understand the impact of student demographics, type of institution, and time on student loan debt.
perform exploratory data analysis on a numerical variable (college tuition, student loan debt) as a function of a numerical (year) or categorical (institution type, student demographics) variable.
use linear regression and correlation to judge trends in numerical data on tuition and student loan debt as a function of time and predict future outcomes.
use a chi-squared test for independence to analyze the impact of student demographics (race, gender, and others) on student loan debt load.
understand how data analysis can contribute to understanding the impact of student loan debt and government policy on student loans.


SevenZipEntryInfo
public struct SevenZipEntryInfo
Provides information about 7-Zip entry.
-
Represents file access permissions in UNIX format.
See moreDeclaration
Swift
public struct Permissions: OptionSet
-
Represents file attributes in DOS format.
See moreDeclaration
Swift
public struct DosAttributes: OptionSet
-
Represents file type in UNIX format.
See moreDeclaration
Swift
public enum UnixType: UInt32
-
Entry’s name.
Declaration
Swift
public let name: String?
-
Entry’s data size.
Declaration
Swift
public let size: Int?
-
True, if entry is a directory.
Declaration
Swift
public let isDirectory: Bool
-
Entry’s last access time and date.
Declaration
Swift
public let accessTime: Date?
-
Entry’s creation time and date.
Declaration
Swift
public let creationTime: Date?
-
Entry’s last modification time and date.
Declaration
Swift
public let modificationTime: Date?
-
7-Zip internal property which may contain UNIX permissions, type and/or DOS attributes.
Declaration
Swift
public let winAttributes: UInt32?
-
Entry’s UNIX file access permissions.
Declaration
Swift
public let permissions: Permissions?
-
Entry’s DOS attributes.
Declaration
Swift
public let dosAttributes: DosAttributes?
-
Entry’s UNIX file type.
Declaration
Swift
public let unixType: UnixType?
-
7-Zip internal propety. Indicates whether entry has a stream (data) inside container.
Declaration
Swift
public let hasStream: Bool
-
True, if entry is an empty file. 7-Zip internal property.
Declaration
Swift
public let isEmpty: Bool
-
True if entry is an anti-file. Used in differential backups to indicate that file should be deleted. 7-Zip internal property.
Declaration
Swift
public let isAnti: Bool
-
CRC32 of entry’s data.
Declaration
Swift
public let crc: UInt32?


void STP_GetRootPriorityVector ( const STP_BRIDGE* bridge, unsigned int treeIndex, unsigned char* priorityVector36BytesOut );
Retrieves the root priority vector of a bridge. This is described in §13.10 and §13.11 in 802.1Q-2018.
For the CIST (parameter treeIndex
= 0), the root priority vector
has the following format, as described in §13.9 a) to
g) in 802.1Q-2018:
| Byte position | Description | Format |
|---|---|---|
| 0..7 | CIST Root Identifier. | BRIDGE_ID (see below) |
| 8..11 | CIST External Root Path Cost | 32-bit number in big-endian format |
| 12..19 | CIST Regional Root Identifier | BRIDGE_ID (see below) |
| 20..23 | CIST Internal Root Path Cost | 32-bit number in big-endian format |
| 24..31 | CIST Designated Bridge Identifier | BRIDGE_ID (see below) |
| 32..33 | CIST Designated Port Identifier | PORT_ID (see below) |
| 34..35 | CIST Receiving Port Identifier | PORT_ID (see below) |
For an MSTI (parameter treeIndex
> 0), the root priority vector
has the following format, as described in §13.9 h) to
l) in 802.1Q-2018:
| Byte position | Description | Format |
|---|---|---|
| 0..7 | unused, initialiazed to zero | |
| 8..11 | unused, initialiazed to zero | |
| 12..19 | MSTI Regional Root Identifier | BRIDGE_ID (see below) |
| 20..23 | MSTI Internal Root Path Cost | 32-bit number in big-endian format |
| 24..31 | MSTI Designated Bridge Identifier | BRIDGE_ID (see below) |
| 32..33 | MSTI Designated Port Identifier | PORT_ID (see below) |
| 34..35 | MSTI Receiving Port Identifier | PORT_ID (see below) |
For the BRIDGE_ID and PORT_ID formats, see base_types.h in the source code tree.


For the midterm you are allowed a a single \(8.5 \times 11\) inch page of handwritten notes.
It is recommended that you take notes from the lectures based on each of the following conceptual questions. In addition, you are recommended to study all of the quiz and homework solutions, as well as the exercises we went through in class. Some questions may be taken verbatim, and some with a slight difference. Understanding the reasoning in each exercise is the key point, and will help you when you encounter something not seen before.


Team Profile Generator
John
Manager
Id Number: 34
Email:
<EMAIL_ADDRESS>Office Phone:<PHONE_NUMBER>
Geme
Engineer
Id Number: 456
Email:
gmail.com
Github Username:
3456
hols
Engineer
Id Number: 346
Email:
gmail.com
Github Username:
43sfg
sjgh33
Engineer
Id Number: 45
Email:
ghemail.com
Github Username:
3dhgfb
shjg
Intern
Id Number:2343
Email:
<EMAIL_ADDRESS>School:
stonehill


Documentation
Welcome to the Hydrosmart documentation. This section will show you what you need to buy and will provide instructions on setting up your growing structure and electronics.
What to buy
You can find the shopping list here. Notice there are tabs for structure, electronics and tools.
Building the structure
Here is a model of the final design for reference: youtube
Hydrosmart Structure by JoshuaAppleman on Sketchfab
Framing
What you'll need
-
Tools
-
Saw
-
Materials
-
PVC pipe
-
PVC T connector
-
PVC cross connector
-
PVC elbow connector
-
PVC glue
Instructions
Cut PVC pipe into
-
4 x 5' long pieces
-
4 x 4' long pieces
-
8 x 1' long pieces
Attach pipes and connectors like so (be sure to use PVC glue or structure will not be stable):
Eye bolts for hanging
What you'll need
-
Tools
-
Power Drill
-
Materials
-
8 - Eye bolts
-
8 - Nuts
-
8 - Washer
Instructions
Drill 8 holes, 4 on each of the 2 top PVC pipes. They should be 1/4" wide with about 12" between each hole. Drill from top to bottom. All the way through the pipe. Thread the eye bolts through the pipes with the eye hole on the bottom. Cap the top with a washer under a nut. It should look like this:
Drilling bucket holes
What you'll need
-
Tools
-
Power Drill
-
Materials
-
3 - Buckets (5 gallon)
-
1 - Bucket lid (5 gallon)
Note
Of the 3 buckets, 1 will be your nutrient solution reservoir, 2 will be for plants. When specifying drill hole locations on the bucket sides, we'll use an angle coordinate (see diagram below) and a distance from top or bottom.
Drilling holes in reservoir bucket and lid
-
In the center of the plain bucket lid, drill a 1/2" hole
-
Drill 1/2" holes in bucket side at 0° and 180°. Make it so the bottom of the hole is just about touching the bottom of the inside of the bucket.
Drilling holes in plant buckets
-
Drill 1" hole centered in the bottom of the bucket
-
Drill 1/2" hole in bucket side at 0°, 3.5" from top lip of bucket.
-
Drill 1/8" holes in bucket side at 45°, 135°, 225° and 315°, .375" from top lip of bucket
-
Drill pairs of 1/8" holes spiraling around bucket side for zip ties, one on top of the other with 1/4" between.
-
At 45°, with pair center 3.5" from top lip of bucket
-
At 90°, with pair center 3.25" from top lip of bucket
-
At 135°, with pair center 3" from top lip of bucket
-
At 180°, with pair center 2.625" from top lip of bucket
-
At 225°, with pair center 2.375" from top lip of bucket
-
At 270°, with pair center 2.125" from top lip of bucket
-
At 315°, with pair center 1.875" from top lip of bucket
-
At 0°, with pair center 1.5" from top lip of bucket
-
At 45°, with pair center 1.25" from top lip of bucket
-
Repeat on other plant bucket
Attaching pump tubing
What you'll need
-
Tools
-
Power Drill
-
Glue Gun
-
Box Cutter
-
Materials
-
2 - Funnels (32mm/6.4mm)
-
1 tube - Caulk (Water proof)
-
12 feet - Tubing (7/16" outside, 5/16" inside)
-
2 - tubing end cap
-
8 - Spray nozzles (180 Degree)
-
18 - Zip ties
Instructions
Take the tubing (7/16" outside, 5/16" inside) and put the end cap on it. Bring the tube into the bucket with the end cap pointed counterclockwise. Attach the tube to the inside of the bucket by threading the zip tie into the top-most pair of 1/8" holes, around the tube, then back out again.  Then thread the tube out of the bucket, through the 1/2" hole at 0°. Cut the tube so that there is 7" of slack outside the bucket.
End cap on tubing:
Zip tie from outside:
Zip ties from inside:
Drill 4 small 1/8" holes through the top layer, not all the way through, of the tubing inside the bucket at 0°, 90°, 180° and 270°. Put spray nozzles into each of these holes with the sprayers pointing towards the center of the bucket.
Repeat this for the other plant bucket.
 Leave 7" of slack outside the lid.
Hanging the buckets
What you'll need
-
Tools
-
Box Cutter
-
Materials
-
Twine
Instructions
Cut 4 pieces of twine, 9' each. On each plant bucket, thread one strand into the 1/8" hole at 45° and out the hole at 315°. Thread the other strand through the holes at 135° and 225°. You should have 4' slack coming out both ends of the bucket.
Place the plant buckets next to one another inside the framing, centered, with about 1' between them. Rotate the buckets so the slack tubing points towards the other bucket. Put the slack twine through the eye bolts and pull to hoist up the buckets. Get the buckets 8" above the ground, then tie the twine to the eye bolts to keep it at that height.
Use the top of the eye bolts to create two X's with the twine. This will be used to hang the grow lights.
Connecting plant buckets to reservoir
What you'll need
-
Tools
-
Glue Gun
-
Box Cutter
-
Materials
-
1 tube - Caulk (Water proof)
-
12 feet - Tubing (7/16" outside, 5/16" inside)
-
1 - tubing T connector
-
1 - Bucket basket lid (10" wide)
-
1 - Bucket basket lid (6" wide)
Instructions
Use glue gun to attach top of funnels to bottom of plant buckets.
Once dried, use glue gun to attach 1' pieces of tubing to bottom of funnels.
Put the reservoir bucket on the ground between the two hanging plant buckets. Rotate the reservoir so the holes on the sides are under the adjacent plant bucket. On both sides, take the tubing attached to the funnel and push about 1/2" of it into the hole in the side of the reservoir. Use glue gun, then waterproof caulk to seal hole.
Connect the slack tubing from the top of the reservoir and the sides of the plant buckets using the T connector.
Place basket lids (6" and 10") on plant buckets. Close up all unsealed holes with glue gun.
Final assembly:


Watch this new ‘Frozen II’ trailer and listen to Panic! At the Disco sing ‘Into the Unknown’ (VIDEO)
by BY SERENA KAURLOS ANGELES, Nov 5 ― With its release later this month, Disney has released a new trailer to announce ticket sales for highly anticipated Frozen II as well as the cover of Into the Unknown from punk pop band Panic! At the Disco.
In the sequel, Elsa must find out the truth about her past and uncover the secrets surrounding her powers in a journey that will take her far from her kingdom of Arendelle.
The family favourite features the voices of Kristen Bell as Anna, Idina Menzel as Elsa, Jonathan Groff as Kristoff, and Josh Gad as Olaf along with Rachel Wood and Sterling K. Brown as new additions.
The synopsis reads: “Why was Elsa born with magical powers? What truths about the past await Elsa as she ventures into the unknown to the enchanted forests and dark seas beyond Arendelle? The answers are calling her but also threatening her kingdom. Together with Anna, Kristoff, Olaf, and Sven, she’ll face a dangerous but remarkable journey. In Frozen, Elsa feared her powers were too much for the world. In Frozen II, she must hope they are enough.”
Frozen II is set for release here on November 21.


Your Booking has been made for () on .Doors will open 30mins before and bar will be open! You've booked seats and wheelchair(s).
Booking reference is . Don't worry if you forget this number, call 07725 051523 and we can cancel it for you.


Built for barbers who need a simple and effective online booking system. This application is scalabe to apply to personal services of all kinds.
The front end of this application utilizes a Bootstrap framework, styled with custom CSS. On the back end, we have a MySQL database storing user data and booking times. Passport.js provides a user authentication middleware for Node. Express-session stores session data. Find the code on GitHub.