Truth Table Generator
This tool generates truth tables for propositional logic formulas.
You can enter logical operators in several different formats. For example, the
propositional formula
This tool generates truth tables for propositional logic formulas.
You can enter logical operators in several different formats. For example, the
propositional formula


The greatest in all space and time
I took an aggregate list, like the Time’s all-time 100 novel list, and added it to a csv sheet. I did this 10 times.
I then aggregated the aggregated list. For example Catch-22 appeared on 9 out of the 10 list. Giving it the rank of 9. Then the books are sorted by their rank


Hello internet! Welcome to Fairly One-Dimensional, my blog about finding patterns in complex datasets. My goal is to post a new analysis of some freely available dataset every week or two (assuming my research allows me the time). These posts will usually be motivated by questions about the data itself, but I'll probably also post analyses intentionally constructed to make use of various techniques in machine learning I want to try out. As I'm a huge baseball fan, I imagine a fair number of posts will focus on sabermetrics as well.
As for the website itself, it's built with a Flask back end and Twitter Bootstrap 3 for the front end. I had never built a website before, and it's been a lot of fun learning about the amazing resources people have come up with. The source is available on Github.


Apache Tomcat 6 0 6 0 53 Building Tomcat
Tomcatのダウンロード Tomcat 6 0のインストールと環境設定 サーブレット入門
Download Apache Tomcat 10 0 5 8 5 65 7 0 108
Professional Apache Tomcat 6 Chopra Vivek Free Download Borrow And Streaming Internet Archive
Index Of Dist Tomcat Tomcat 6 V6 0 53 Bin
Apache Tomcat 6 Download For Mac Peatix
Pro Apache Tomcat 6 Pdf Itbook Download Free Download It Programming Ebook
How To Configure Apache 2 With Tomcat 6
Guide To Download And Install Tomcat 6
Sap Nw Basis Tips And Advices Install Apache Tomcat 6 0 32 Linux
Install Teamwork Server In Tomcat On Microsoft Windows
How To Install Apache Tomcat In Spring Tool Suite Eclipse Turbofuture
How To Configure Apache Tomcat In Eclipse Ide Ibytecode Technologies
Apache Tomcat 8 0 9 Download Installation Configuration And Deployment Not The Latest Version Programmer Sought
Apache Tomcat 6 Connector
Installing Tomcat 7 And Configuring As Server In Netbeans Amis Data Driven Blog Oracle Microsoft Azure
Apache Tomcat 6 0 Download Free Icreinstall Apache Tomcat Remove Only Exe
Download Installation And Configuration Of Apache And Tomcat Including Some Errors Programmer Sought
Apache Tomcat 6 Profesional 5 Wrox Anaya Multimedia Pdf Download Byrnedenis
Download Tomcat 6 Server Youtube
Ibm Knowledge Center
How To Install Tomcat 9 On Centos Rhel 7 6 Fedora 31 30
Introducing Apache Tomcat 6 Mladen Turk Red Hat
How To Install Apache Tomcat In The Terminal Of Mac Programmer Sought
Download Apache Tomcat 6 For Linux 7 0 39
Install Java And Apache Tomcat Windows
Apache Tomcat 8 5 Download Renewgun
Integrating Apache Tomcat Using Mod Jk For Windows Xp
Free Download Apache Tomcat 6
Apache Tomcat For Mac Download Peatix
Java Servlet Jsp Tutorials Getting Started With Tomcat 6


The pizza parlor is definately to stop by and grab your self some amazing and the most affordable pizza delicasies in town
we offer different pizza flavours from glutten-free to vegeterian pizzas
our staff is customer free and ready to satisfy all your wants and needs here in the pizaa parlor
worry less if you do not know what you want to order yet, our menu section will help you choose from the various pizza types to choose
Your order will be processed and delivered within one hour of placing.
Make sure you have the total amout for the order during order delivery delivery.
The pizza Parlor
| Name | Size | Crust | Topping | Total |
|---|---|---|---|---|
Delivery will cost sh. 200
for further information, requests or inquery, kindly reach us at;
Gmail<EMAIL_ADDRESS>Telephone number- +254710607994


A Coercion from natural numbers into ordinal terms
Consider the following definition of ordinal terms as an inductive type:
Inductive Ord : Set :=
| zero : Ord
| succ : Ord -> Ord
| limit : (nat->Ord)->Ord.
Fixpoint plus (o1 o2:Ord){struct o2} :=
match o2 with zero => o1
| succ o2' => succ (o1 + o2')
| limit f => limit (fun n => plus o1 (f n))
end.
Notation "o1 + o2" := (plus o1 o2):o_scope.
Open Scope o_scope.
It is natural to consider the set of natural numbers as a subset of ordinal terms. Formalize it as a coercion from the type nat into Ord.
The following code must be accepted by the Coq compiler.
Definition omega := limit (fun n => n).
Check (succ 23).
Check (succ (3+5)).
Eval compute in (succ (3+5)).
Check (omega = 2+omega).
Solution
Look at this file .
Going home


I'm a pretty standard type of guy. I stand about 168 tall and weigh 70 kgs. I'm much fitter than average and try to lead a very active life. I'm currently 18 and attending University in Australia. I am not on any medication and I do not have any mental problems, nor do I have a family history of the such. I feel I shoud point at now that as a rule I have a high tolerance for most substances and I tend to crash reasonably hard from stimulants.
About a year ago I began experimenting with substances - such as weed, much later E and Speed - I had already been a drinker for about 2 years prior, and in the typical Aussie fashion E I was binge drinking most weekends, although it never got out of hand.
We (my friends) only drop E once a month or less to help maintain a healthy mind and avoid the negative effects. However, I, independant of the group, have developed quite an appreciation for Amphetamines, specifically Dexamphetamine.
Often experimenting with amphetamines in combinations and situations. I have learnt during my experience that Dexamphetamine is a very pale comparison to real street speed. Dexies are very, very smooth and are very 'flexible'. By that I mean that each experience depends heavily on mindset, what activities your taking in, and surroundings. I find that they greatly enhance any emotions, and often manifest themselves phsyically. If I get scared or nervous on them, I get an awkward tingling through my body. If I am, for instance, flirting, I get a very pleasurable rush and if I'm with friends I often (though inconsistantly) feel more sociable.
This report is about a solo 'trip'. It was the first day in weeks that I was home completely by myself (the way I like it ;) ) and I decided to take kill some time on dexies.  I was totally prepared for a completely relaxed day and my mindset reflected this. I woke up at 10:30, had some breakfast and took my dexies at 11. I snorted somewhere about 8 mgs of finely crushed powder and swallowed 20 mg. I then went outside and began to read my book in the warm shade. Summer in australia is hot and humid, and today was warm but very nice.
After about 15 mins I was up and flying, however, as I was prepared and expecting a relaxing day, it was an incredibly smooth and enjoyable sensation. I became fully engrossed in my book and began thinking much more deeply and my thoughts flew off at tangents that I was usually unacustomed too. I felt extremely relaxed and content with life, the universe and everything. After about an hour I started with the ups & downs (the 'frowns'). It is generally a feeling of being a bit bummed out, but I gradually rose back to a pleasurable high. It easy to fight these frowns and takes just a bit of mental work to overcome it.
I finished my book in about 2 hours and then I found myself completely content to just sit and listen to the radio. I sat for about and hour and just chilled to my music and listen to the sounds of the birds and the life in my garden. At 1:45 I decided to snort 5 mg more to maintain my comfortable level. Then after doing a few trivial chores which normally would bother me, but didn't today. I found myself just sitting and listening to the radio again.
I felt I should go do something slightly more constructive so I decided to document this 'trip'. It's now after 3pm and I find myself cruising with a nice body buzz, however, I'm not much above baseline. Normally my resting pulse is about 60 bpm but right now it's up around 90. I guess that would explain the buzz. I'm having a reasonably big cup of coffee to extend the upper out into the evening, when hopefully I'll want to just crash and sleep at about midnight.
Important to note that from about 1:30 onwards I have had chronic pasties (dry mouth) and an annoying yet tolerable jaw clench, some of my family has also arrived home and so I've decided to spend the arvo in my room with my computer and radio.
I definatly recommened the measured use of amphetamines, especially dexamphetamines. Dexies in particular are sometimes unpredicatable, though almost always enjoyable when I use them alone. They also making doing annoying Uni assignments enjoyable and incredibly easy - my thoughts for writing just flow, however, today I find my creativity lacking - sorry for the lack of wit in this experience report.
For the record - As I've said, dexies are very smooth and subtle, and once I find myself at my 'peak' buzz I usually feel like taking more to push the feeling. I find them fun. Also, Dexamphetmine stays in my system a fair while as most of the pills are time release, so taking them after about 6 pm usually means I won't be getting much sleep that night. That is why daytime tripping is very relaxing, fun and usually has few negatives. Be aware however, I have found myself building up a mean tolerance. Today was a very mild dose for me, if I was to totally let loose I would want to take closer to 35 - 40 mgs. And I've done this substance about only a dozen times. It's a very quick curve for tolerance with this substance and my body.
Franky
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


Hello! I'm
Martin Luther
WEB DESIGN | DIGITAL MARKETING | UX DESIGN | WEB DEVELOPMENT | MOBILE APPS
Let's talk new
Generate sercives here
MY resume
I AM AVAILABLE FOR FREELANCE
HIRE ME NOW
MY PORTFOLIO
MY
BLOGS


This sample is based on the html5rocks page at http://www.html5rocks.com/en/tutorials/dnd/basics/ .
The original sample uses HTML5 drag and drop events, and therefore works only with the mouse.
This version uses the DragDropTouch polyfill so you should be able to drag the rectangles to new positions using the mouse or touch.
Drag columns to new positions using the mouse or touch:
Drag fields to new build pivot tables using the mouse or touch:


File: {{$ctrl.state.file.directory.name}}/{{$ctrl.state.file.name}}
show json
Details
- Uploaded By
- {{$ctrl.state.file.owner}}
- Uploaded On
- {{$ctrl.state.file.birthtime | date:'fullDate'}}
- Mediatype
- {{$ctrl.state.file.mediatype.mime}}
- Size
- {{$ctrl.state.file.size | bytes}}
- Id
- {{$ctrl.state.file.id}}
- Checksum
- {{$ctrl.state.file.checksum}}
- Latest Version
- {{$ctrl.state.file.current ? "Yes" : "No"}}


WAL-PHED PE- phenylephrine hydrochloride tablet, coated
WALGREEN CO.
Disclaimer: Most OTC drugs are not reviewed and approved by FDA, however they may be marketed if they comply with applicable regulations and policies. FDA has not evaluated whether this product complies.
if you are now taking a prescription monoamine oxidase inhibitor (MAOI) (certain drugs for depression, psychiatric or emotional conditions, or Parkinson's disease), or for 2 weeks after stopping the MAOI drug. If you do not know if your prescription drug contains an MAOI, ask a doctor or pharmacist before taking this product.
croscarmellose sodium, dextrose, monohydrate, dicalcium phosphate dihydrate, FD&C red #40, lecithin, magnesiums stearate, maltodextrin, microcrystalline cellulose, silica gel, sodium carboxymethylcellulose, sodium citrate dihydrate, titanium dioxide
Well at
Walgreens
WALGREENS PHARMACIST RECOMMENDEDǂ
NDC 0363-0453-44
NON-DROWSY
MAXIMUM STRENGTH
Wal-Phed® PE
PE Nasal Decongestant
Phenylephrine HCl 10 mg
• Relieves sinus pressure & congestion
18
TABLETS
PSEUDOEPHEDRINE FREE
Compare to Sudafed PE® Congestion active ingredientǂǂ
ǂWalgreens Pharmacist Survey Study, November 2012.
ǂǂThis product is not manufactured or distributed by McNeil Consumer Healthcare, owner of the registered trademark Sudafed PE® Congestion.
50844 REV0313A45344
TAMPER EVIDENT: DO NOT USE IF PACKAGE IS OPENED OR IF BLISTER UNIT IS TORN, BROKEN, OR SHOWS ANY SIGNS OF TAMPERING
DOES NOT CONTAINS GLUTEN
Walgreens 44-453
|
WAL-PHED PE
phenylephrine hcl tablet, coated | ||||||||||||||||||||||||||
| ||||||||||||||||||||||||||
| ||||||||||||||||||||||||||
| ||||||||||||||||||||||||||
| ||||||||||||||||||||||||||
| ||||||||||||||||||||||||||
|
| Labeler - WALGREEN CO. (008965063) |
| Establishment | |||
| Name | Address | ID/FEI | Business Operations |
|---|---|---|---|
| LNK International, Inc. | 038154464 | PACK(0363-0453) |
| Establishment | |||
| Name | Address | ID/FEI | Business Operations |
|---|---|---|---|
| LNK International, Inc. | 832867894 | MANUFACTURE(0363-0453) |


Media
Image
You can add a shadow around your images by adding .img-shadow
class to the img
tag.

Use figcaption
tag to add a caption to your images.

some description about the image

More classes
Don't forget that you can always use classes like .img-responsive
, .img-rounded
, .img-circle
, and img-thumbnail
which is part of Bootstrap.

Video
Adding a video to your page from any source. Just wrap them inside .video
class.
YouTube

Embed code

Vimeo

Embed code

Self-hosted
Don't forget to add width="100%"
and height="100%"
attributes.

<video src="path/to/video.mp4" width="100%" height="100%" controls>

Lightbox
Implementing as easy as adding a data-lity
attribute to your
tags.
Image iFrame Youtube iFrame Vimeo Google Maps
Here's the code to generate above buttons. You can use an
tag to show a poster image as well.
Image
iFrame Youtube
iFrame Vimeo
Google Maps


About Arcadia2k18
Arcadia is GCET's annual techno-cultural fest. Arcadia brings together music, dance, brands and college students to create amazing experiences. Arcadia is home to plethora of events,performances and what not.
Sponsors are able to market effectively to the crowd of the college. Our prime goal is to bring out the best in everyone. Arcadia started in year 2017 and was appreciated by many. We want to continue the trend year after year by opening new possibilities for students every time.
VENUE
G.C.E.T
Chak Bhalwal, Jammu city.
Register Form
NOTE: Online registeration is only available to students of other colleges. An entry fees of Rs.250 is to be submitted at the reception by the participant registering online for the events.
FAQ
Our Sponsors
Contact Us
In case of any queries feel free to drop a message.


--- layout: post title: HTC and App Stores date: 2010-01-07 00:00:00 categories: business mobile ---
I love this interview with Jon French of HTC. Not because of what he reveals about their approach to the Sense UI; not because after 10 years of Nokia and Sony Ericsson loyalty, I'm a happy HTC user myself; but because of this quote:
Plenty of previously agnostic OEMs have now launched app stores. Where’s yours?
We have no plans for an app store. HTC is not in that business. For us, it’s all about how you integrate the app store – whether Windows Marketplace or Android Market – into the experience of using the device.
How refreshing; a large player in mobile with no plans to open yet another app store!


Premium jobs help promote their service by getting their ads more visibility with more job candidate what they want faster. Learn more
$00.00
$10.00
$20.00
$40.00
Payable Amount : $40.00
The difference between finding mediocre candidates and extraordinary candidates for your clients is a good job posting.


Lion Air flight attendant wins over internet with wholehearted care of elderly in viral videos
by Coconuts JakartaFind a flight attendant who smiles at you the way this guy smiles at an old lady, and you’d be in for a comfortable flight, budget carrier or otherwise.
Recently, a couple of videos have gone viral on social media in Indonesia, depicting an unidentified Lion Air flight oozing with warmth and wholehearted sincerity as he assisted an elderly female passenger who appeared to be in need of special care.
 You are so meticulous in helping this old lady.”
He may be doing his job, but the flight attendant never once looked like he was the slightest bit burdened. To top it off, he’s won over the internet with his gentle and genuine smiles as he assisted the old lady by feeding her and wiping her face — as if she was his own grandmother.
We can see people’s true selves by their eyes, and the sparkle in this man’s eyes is genuine, and he looks even more genuine with his smile. The universe needs more people like this.
For women, men of this type is what you should look for as a partner. He loves all, and especially those he loves.
 Thanks for sharing the video. I miss my grandmother at home. She’s like a kid again now, clingy and needs extra attention. I fed her once but she was picky, it was testing but it made me happy. When I go home I want to feed her again.
It’s not clear when the videos were taken, but, at the time of writing, the tweets above have been retweeted over 25 thousand times since it was posted yesterday evening.
Lion Air has yet to comment on the viral videos. We’ll update this story as soon as we get confirmation on the flight attendant’s identity from the airline or elsewhere.


--- layout: post title: Rough storyboard date: '2016-08-08T10:08:33+02:00' categories: - Storyboards - Sketches picture_url: https://film-Storyboards.tumblr.com/post/148642196091 ---


Typing Test Demo
Using JavaScript and jQuery
Start typing to begin the test.
So she went into the garden to cut a cabbage leaf to make an apple pie; and at the same time a great she-bear coming up the street pops its head into the shop. "What! No soap? So he died, and she very imprudently married the barber; and there were present the Picninnies, and the Grand Panjandrum himself, with the little round button at the top, and they all fell to playing the game of catch as catch can, till the gunpowder ran out at the heels of their boots.
Press "Enter" or "Return" to stop.
Passage from Samuel Foote, and is in package "cowsay".


"""
Blowout Module
==============
This module provides a `Blowout` object to make creation of oil well blowout
scenarios using the `bent_plume_model` simple. In particular, this object
helps coordinate creation of the `ambient.Profile` data and the blowout
initial conditions, including generation of the bubble and droplet size
distributions. This module relies on the `dbm_utilities` module to do things
like mixing natural gas into a dead oil to create a live oil, etc. and uses
the `particle_size_models` to generate bubbles and droplets.
See Also
--------
bent_plume_model, dbm, dbm_utilities, particle_size_models
Notes
-----
This module provides the option to obtain oil properties from distillation
cut data available from the National Oceanic and Atmospheric Administration
(NOAA) Oil Library. To make use of this capability, you will need to install
the OilLibrary package into your Python environment. You may access this
package here::
https://github.com/NOAA-ORR-ERD/OilLibrary
Once this package is installed, you may load an oil into a `dbm` fluid object
using the Adios ID Number (e.g., AD01554) index of the OilLibrary.
"""
# S. Socolofsky, February 2020, Texas A&M University<EMAIL_ADDRESS>from __future__ import (absolute_import, division, print_function)
unicode = type(u' ')
from tamoc import seawater, ambient, dbm, dispersed_phases, bent_plume_model
from tamoc import particle_size_models as psm
from tamoc import dbm_utilities
from datetime import datetime
from netCDF4 import date2num, Dataset
import numpy as np
[docs]class Blowout(object):
"""
Class to facilitiate creating simulations using the `bent_plume_model`
Class to help set up all of the elements necessary to run a blowout
simulation using the ``TAMOC`` `bent_plume_model`. This includes creating
the `ambient.Profile` object, defining an oil and gas composition using
the `dbm.FluidMixture` and `dbm.FluidParticle` objects, and generating
`particle` lists with initial conditions for the gas bubble and oil
droplet size distributions at the orifice.
This class is designed for use in subsea oil well blowouts, hence, flow
rates of oil and gas can be specified using dead oil rates in bbl/d and
gas-to-oil ratio (GOR) in ft^3/bbl.
Parameters
----------
z0 : float, default=100
Depth of the release point (m)
d0 : float, default=0.1
Equivalent circular diameter of the release (m)
substance : str or list of str, default=['methane']
The chemical composition of the released petroleum fluid. If using
the chemical property data distributed with TAMOC, this should be a
list of TAMOC chemical property names. If using an oil from the
NOAA OilLibrary, this should be a string containing the Adios oil
ID number (e.g., 'AD01554' for Louisiana Light Sweet).
q_oil : float, default=20000.
Release rate of the dead oil composition at the release point in
stock barrels of oil per day.
gor : float, default=0.
Gas to oil ratio at standard surface conditions in standard cubic
feet per stock barrel of oil
x0 : float, default=0
x-coordinate of the release (m)
y0 : float, default=0
y-coordinate of the release (m)
u0 : float, default=None
Exit velocity of continuous-phase fluid at the release. This is
only used when produced water exits. For a pure oil and gas release,
this should be zero or None.
phi_0 : float, default=-np.pi / 2. (vertical release)
Vertical angle of the release relative to the horizontal plane; z is
positive down so that -pi/2 represents a vertically upward flowing
release (rad)
theta_0 : float, default=0.
Horizontal angle of the release relative to the x-direction (rad)
num_gas_elements : int, default=10
Number of gas bubble sizes to include in the gas bubble size
distribution
num_oil_elements : int, default=25
Number of oil droplet sizes to include in the oil droplet size
distribution
water : various
Data describing the ambient water temperature and salinity profile.
See Notes below for details.
current : various
Data describing the ambient current velocity profile. See Notes
below for details.
Attributes
----------
z0 : float, default=100
Depth of the release point (m)
d0 : float, default=0.1
Equivalent circular diameter of the release (m)
substance : str or list of str, default=['methane']
The chemical composition of the released petroleum fluid. If using
the chemical property data distributed with TAMOC, this should be a
list of TAMOC chemical property names. If using an oil from the
NOAA OilLibrary, this should be a string containing the Adios oil
ID number (e.g., 'AD01554' for Louisiana Light Sweet).
q_oil : float, default=20000.
Release rate of the dead oil composition at the release point in
stock barrels of oil per day.
gor : float, default=0.
Gas to oil ratio at standard surface conditions in standard cubic
feet per stock barrel of oil
x0 : float, default=0
x-coordinate of the release (m)
y0 : float, default=0
y-coordinate of the release (m)
u0 : float, default=None
Exit velocity of continuous-phase fluid at the release. This is
only used when produced water exits. For a pure oil and gas release,
this should be zero or None.
phi_0 : float, default=-np.pi / 2. (vertical release)
Vertical angle of the release relative to the horizontal plane; z is
positive down so that -pi/2 represents a vertically upward flowing
release (rad)
theta_0 : float, default=0.
Horizontal angle of the release relative to the x-direction (rad)
num_gas_elements : int, default=10
Number of gas bubble sizes to include in the gas bubble size
distribution
num_oil_elements : int, default=25
Number of oil droplet sizes to include in the oil droplet size
distribution
water : various
Data describing the ambient water temperature and salinity profile.
See Notes below for details.
current : various
Data describing the ambient current velocity profile. See Notes
below for details.
profile : `ambient.Profile` object
An `ambient.Profile` object containing the ambient CTD and current
information
T0 : float
Ambient water temperature (K) at the release
S0 : float
Ambient water salinity (psu) at the release
P0 : float
Ambient water pressure (Pa) at the release
gas : float
A `dbm.FluidParticle` object defining the gas-phase fluid at the
release
liq : float
A `dbm.FluidParticle` object defining the liquid-phase fluid at the
release
d_gas : ndarray
Equivalent spherical diameters (m) of the gas bubbles at the release
vf_gas : ndarray
Volume fraction of gas in each of the diameters stored in `d_gas`
d_liq : ndarray
Equivalent spherical diameters (m) of the liquid droplets at the
release
vf_liq : ndarray
Volume fraction of liquid in each of the diameters stored in `d_liq`
disp_phases : list
List of `bent_plume_model.Particle` objects that define each gas
bubble and liquid droplet released from the orifice
bpm : `bent_plume_model.Model` object
A `bent_plume_model.Model` object that contains the simulation run
defined by the present class object.
Notes
-----
The spilled substance can either be taken from the NOAA OilLibrary or
can be created from individual pseudo-components in TAMOC. The user may
define the `substance` in one of two ways:
substance : str
Provide a unique OilLibrary ID number from the NOAA Python
OilLibrary package
substance : dict
Use the chemical properties database provided with TAMOC. In this
case, use the dictionary keyword `composition` to pass a list
of chemical property names and the keyword `masses` to pass a
list of mass fractions for each component in the composition
list. If the masses variable does not sum to unity, this function
will compute an equivalent mass fraction that does.
Likewise, the ambient water column data can be provided through several
different options. The `water` variable contains temperature and salinity
data. The user may define the `water` in the following ways:
water : None
Indicates that we have no information about the ambient temperature
or salinity. In this case, the model will import data for the
world-ocean average.
water : dict
If we only know the water temperature and salinity at the surface,
this may be passed through a dictionary with keywords `temperature`
and `salinity`. In this case, the model will import data for the
world-ocean average and adjust the data to have the given temperature
and salinity at the surface.
water : 'netCDF4.Dataset'
If a 'netCDF4.Dataset' object already contains the ambient CTD
data in a format appropriate for the `ambient.Profile` object, then
this can be passed. In this case, it is assumed that the dataset
includes the currents; hence, the `currents` variable will be
ignored.
water : `ambient.Profile` object
If we already created our own ambient Profile object, then this
object can be used directly.
water = str
If we stored the water column profile in a file, we may provide the
file path to this file via the string stored in water. If this string
ends in '.nc', it is assumed that this file contains a netCDF4
dataset. Otherwise, this file should contain columns in the following
order: depth (m), temperature (deg C), salinity (psu), velocity in
the x-direction (m/s), velocity in the y-direction (m/s). Since this
option includes the currents, the current variable will be ignored in
this case. A comment string of `#` may be used in the text file.
Finally, current profile data can be provided through several different
options. The user may define the `current` in the following ways:
current : float
This is assumed to be the current velocity along the x-axis and will
be uniform over the depth
current : ndarray
This is assumed to contain the current velocity in the x- and y- (and
optionally also z-) directions. If this is a one-dimensional array,
then these currents will be assumed to be uniform over the depth. If
this is a multi-dimensional array, then these values as assumed to
contain a profile of data, with the depth (m) as the first column of
data.
"""
[docs] def __init__(self,
z0=100,
d0=0.1,
substance={
'composition' : ['methane', 'ethane', 'propane',
'toluene', 'benzene'],
'masses' : np.array([0.2, 0.03, 0.02, 0.25, 0.5])
},
q_oil=20000.,
gor=0.,
x0=0.,
y0=0.,
u0=None,
phi_0=-np.pi / 2.,
theta_0 = 0.,
num_gas_elements=10,
num_oil_elements=25,
water=None,
current=np.array([0.1, 0., 0.])
):
super(Blowout, self).__init__()
# Store the model parameters
self.z0 = z0
self.d0 = d0
self.substance = substance
self.q_oil = q_oil
self.gor = gor
self.x0 = x0
self.y0 = y0
self.u0 = u0
self.phi_0 = phi_0
self.theta_0 = theta_0
self.num_gas_elements = num_gas_elements
self.num_oil_elements = num_oil_elements
self.water = water
self.current = current
# Create a list of atmospheric gases
self.ca = ['nitrogen', 'oxygen', 'argon', 'carbon_dioxide']
self.new_oil = True
# Decide which phase flow rate is reported
if self.num_oil_elements > 0:
# User is simulating oil; hence, oil flow rate should be given
self.q_type = 1
else:
# User is simulating gas only; hence, gas flow rate should be
# given
self.q_type = 0
# Create the remaining object attributes needed to set up a `tamoc`
# `bent_plume_model` simulation
self._update()
def _update(self):
"""
Initialize bent_plume_model for simulation run
Set up the ambient profile, initial conditions, and model parameters
for a new simulation run of the `bent_plume_model`.
"""
# Get an ambient Profile object
self.profile = get_ambient_profile(self.water, self.current,
ca=self.ca)
# Import the oil with the desired gas-to-oil ratio
if self.new_oil:
self.oil, self.mass_flux = dbm_utilities.get_oil(self.substance,
self.q_oil,
self.gor,
self.ca,
self.q_type)
self.new_oil = False
# Find the ocean conditions at the release
self.T0, self.S0, self.P0 = self.profile.get_values(self.z0,
['temperature',
'salinity',
'pressure'])
# Define some of the constant initial conditions
self.Sj = 0.
self.Tj = self.T0
self.cj = 1.
self.tracers = ['tracer']
# Compute the equilibrium mixture properties at the release
m, xi, K = self.oil.equilibrium(self.mass_flux, self.Tj, self.P0)
# Create the discrete bubble model objects for gas and liquid
self.gas = dbm.FluidParticle(self.oil.composition,
fp_type=0,
delta=self.oil.delta,
user_data=self.oil.user_data)
self.liq = dbm.FluidParticle(self.oil.composition,
fp_type=1,
delta=self.oil.delta,
user_data=self.oil.user_data)
# Compute the bubble and droplet volume size distributions
breakup_model = psm.Model(self.profile, self.oil, self.mass_flux,
self.z0, self.Tj)
breakup_model.simulate(self.d0, model_gas='wang_etal',
model_oil='sintef')
self.d_gas, self.vf_gas, self.d_liq, self.vf_liq = \
breakup_model.get_distributions(self.num_gas_elements,
self.num_oil_elements)
# Create the `bent_plume_model` particle list
self.disp_phases = []
self.disp_phases += particles(np.sum(m[0,:]), self.d_gas,
self.vf_gas, self.profile, self.gas,
xi[0,:], 0., 0., self.z0, self.Tj,
0.9, False)
self.disp_phases += particles(np.sum(m[1,:]), self.d_liq,
self.vf_liq, self.profile, self.liq,
xi[1,:], 0., 0., self.z0, self.Tj,
0.98, False)
# Set some of the hidden model parameters
# TODO: consider which of these should be editable by the user
self.track = True
self.dt_max = 5. * 3600.
self.sd_max = 3. * self.z0 / self.d0
# Create the initialized `bent_plume_model` object
self.bpm = bent_plume_model.Model(self.profile)
# Set the flag to indicate the model is ready to run
self.update = True
[docs] def simulate(self):
"""
Run a bent_plume_model simulation for the present conditions
Calls the `bent_plume_model.Model.simulate()` method with the initial
conditions presently stored in the class object. This method does not
have any input parameters and does not return a value. After the
simulation is run, the `bent_plume_model.Model` object will store the
solution, and this object is stored as the `bpm` attribute of the
present class.
"""
# Check whether we need to update the model initial conditions
if not self.update:
self._update()
# Run the new simulation
self.bpm.simulate(np.array([self.x0, self.y0, self.z0]),
self.d0,
self.u0,
self.phi_0,
self.theta_0,
self.Sj,
self.Tj,
self.cj,
self.tracers,
self.disp_phases,
self.track,
self.dt_max,
self.sd_max)
# Set the flag to indicate that the model has run and needs to be
# updated before it is run again
self.update = False
[docs] def save_sim(self, fname, profile_path, profile_info):
"""
Save the `bent_plume_model` complete solution in netCDF format
Parameters
----------
fname : str
File name of the netCDF file to write
profile_path : str
String stating the file path to the ambient profile data relative
to the directory where `fname` will be saved.
profile_info : str
Single line of text describing the ambient profile data.
"""
if self.bpm.sim_stored is False:
print('No simulation results available to store...')
print('Run Blowout.simulate() first.\n')
return
self.bpm.save_sim(fname, profile_path, profile_info)
[docs] def save_txt(self, base_name, profile_path, profile_info):
"""
Save the `bent_plume_model` state space in ascii text format
Parameters
----------
base_name : str
Base file name for the output file. This method will append the
.txt file extension to the data output and write a second file
with the header information called base_name_header.txt. If the
particles that left the plume were tracked in the farfield, it
will also save the trajectory of those particles as
base_name_nnn.txt (output data) and base_name_nnn_header.txt
(header data for far field data).
profile_path : str
String stating the file path to the ambient profile data relative
to the directory where `fname` will be saved.
profile_info : str
Single line of text describing the ambient profile data.
"""
if self.bpm.sim_stored is False:
print('No simulation results available to store...')
print('Run Blowout.simulate() first.\n')
return
self.bpm.save_txt(base_name, profile_path, profile_info)
[docs] def plot_state_space(self, fignum=1):
"""
Plot the `bent_plume_model` state space solution
Parameters
----------
fignum : int
Figure number to plot the data
"""
if self.bpm.sim_stored is False:
print('No simulation results available to analyze...')
print('Run Blowout.simulate() first.\n')
return
self.bpm.plot_state_space(fignum)
[docs] def plot_all_variables(self, fignum=2):
"""
Plot all variables for the `bent_plume_model` solution
Parameters
----------
fignum : int
Number for the first figure in the set of figures plotting the
complete model state space
"""
if self.bpm.sim_stored is False:
print('No simulation results available to analyze...')
print('Run Blowout.simulate() first.\n')
return
self.bpm.plot_all_variables(fignum)
[docs] def update_release_depth(self, z0):
"""
Change the release depth (m) to use in a model simulation
Parameters
----------
z0 : float, default=100
Depth of the release point (m)
"""
self.z0 = z0
self.update = False
self.bpm.sim_stored = False
[docs] def update_orifice_diameter(self, d0):
"""
Change the orifice diametr (m) to use in a model simulation
Parameters
----------
d0 : float, default=0.1
Equivalent circular diameter of the release (m)
"""
self.d0 = d0
self.update = False
self.bpm.sim_stored = False
[docs] def update_substance(self, substance):
"""
Change the OilLibrary ID number to use in a model simulation
Parameters
----------
substance : str or list of str, default=['methane']
The chemical composition of the released petroleum fluid. If
using the chemical property data distributed with TAMOC, this
should be a list of TAMOC chemical property names. If using an
oil from the NOAA OilLibrary, this should be a string containing
the Adios oil ID number (e.g., 'AD01554' for Louisiana Light
Sweet).
Notes
-----
The spilled substance can either be taken from the NOAA OilLibrary or
can be created from individual pseudo-components in TAMOC. The user
may define the `substance` in one of two ways:
substance : str
Provide a unique OilLibrary ID number from the NOAA Python
OilLibrary package
substance : dict
Use the chemical properties database provided with TAMOC. In this
case, use the dictionary keyword `composition` to pass a list
of chemical property names and the keyword `masses` to pass a
list of mass fractions for each component in the composition
list. If the masses variable does not sum to unity, this function
will compute an equivalent mass fraction that does.
"""
self.substance = substance
self.update = False
self.new_oil = True
self.bpm.sim_stored = False
[docs] def update_q_oil(self, q_oil):
"""
Change the oil flow rate (bbl/d) to use in a model simulation
Parameters
----------
q_oil : float, default=20000.
Release rate of the dead oil composition at the release point in
stock barrels of oil per day.
"""
self.q_oil = q_oil
self.update = False
self.new_oil = True
self.bpm.sim_stored = False
[docs] def update_gor(self, gor):
"""
Change the gas-to-oil ratio (std ft^3/bbl) to use in a model
simulation
Parameters
----------
gor : float, default=0.
Gas to oil ratio at standard surface conditions in standard cubic
feet per stock barrel of oil
"""
self.gor = gor
self.update = False
self.new_oil = True
self.bpm.sim_stored = False
[docs] def update_produced_water(self, u0):
"""
Change the amount of produced water (m/s) exiting with the oil and
gas through the orifice
Parameters
----------
u0 : float, default=None
Exit velocity of continuous-phase fluid at the release. This is
only used when produced water exits. For a pure oil and gas
release, this should be zero or None.
"""
self.u0 = u0
self.update = False
self.bpm.sim_stored = False
[docs] def update_vertical_orientation(self, phi_0):
"""
Change the vertical orientation (rad) of the release
Parameters
----------
phi_0 : float, default=-np.pi / 2. (vertical release)
Vertical angle of the release relative to the horizontal plane; z
is positive down so that -pi/2 represents a vertically upward
flowing release (rad)
"""
self.phi_0 = phi_0
self.update = False
self.bpm.sim_stored = False
[docs] def update_horizontal_orientation(self, theta_0):
"""
Change the horizontal orientation (rad) of the release
Parameters
----------
theta_0 : float, default=0.
Horizontal angle of the release relative to the x-direction (rad)
"""
self.theta_0 = theta_0
self.update = False
self.bpm.sim_stored = False
[docs] def update_num_gas_elements(self, num_gas_elements):
"""
Change the number of gas bubbles to include in the simulation
Parameters
----------
num_gas_elements : int, default=10
Number of gas bubble sizes to include in the gas bubble size
distribution
"""
self.num_gas_elements = num_gas_elements
self.update = False
self.bpm.sim_stored = False
[docs] def update_num_oil_elements(self, num_oil_elements):
"""
Change the number of oil droplets to include in the simulation
Parameters
----------
num_oil_elements : int, default=25
Number of oil droplet sizes to include in the oil droplet size
distribution
"""
self.num_oil_elements = num_oil_elements
self.update = False
self.bpm.sim_stored = False
[docs] def update_water_data(self, water):
"""
Change the ambient temperature and salinity profile data
Parameters
----------
water : various
Data describing the ambient water temperature and salinity
profile. See Notes below for details.
Notes
-----
The ambient water column data can be provided through several
different options. The `water` variable contains temperature and
salinity data. The user may define the `water` in the following ways:
water : None
Indicates that we have no information about the ambient
temperature or salinity. In this case, the model will import data
for the world-ocean average.
water : dict
If we only know the water temperature and salinity at the
surface, this may be passed through a dictionary with keywords
`temperature` and `salinity`. In this case, the model will import
data for the world-ocean average and adjust the data to have the
given temperature and salinity at the surface.
water : 'netCDF4.Dataset'
If a 'netCDF4.Dataset' object already contains the ambient CTD
data in a format appropriate for the `ambient.Profile` object,
then this can be passed. In this case, it is assumed that the
dataset includes the currents; hence, the `currents` variable
will be ignored.
water : `ambient.Profile` object
If we already created our own ambient Profile object, then this
object can be used directly.
water = str
If we stored the water column profile in a file, we may provide
the file path to this file via the string stored in water. If
this string ends in '.nc', it is assumed that this file contains
a netCDF4 dataset. Otherwise, this file should contain columns in
the following order: depth (m), temperature (deg C), salinity
(psu), velocity in the x-direction (m/s), velocity in the
y-direction (m/s). Since this option includes the currents, the
current variable will be ignored in this case. A comment string
of `#` may be used in the text file.
"""
self.water = water
self.update = False
self.bpm.sim_stored = False
[docs] def update_current_data(self, current):
"""
Change the ambient current profile data
Parameters
----------
current : various
Data describing the ambient current velocity profile. See Notes
below for details.
Notes
-----
Current profile data can be provided through several different
options. The user may define the `current` in the following ways:
current : float
This is assumed to be the current velocity along the x-axis and
will be uniform over the depth
current : ndarray
This is assumed to contain the current velocity in the x- and y-
(and optionally also z-) directions. If this is a one-dimensional
array, then these currents will be assumed to be uniform over the
depth. If this is a multi-dimensional array, then these values as
assumed to contain a profile of data, with the depth (m) as the
first column of data.
"""
self.current = current
self.update = False
self.bpm.sim_stored = False
# --- Helper functions used by the Blowout object ---
[docs]def particles(m_tot, d, vf, profile, oil, yk, x0, y0, z0, Tj, lambda_1,
lag_time):
"""
Create particles to add to a bent plume model simulation
Creates bent_plume_model.Particle objects for the given particle
properties so that they can be added to the total list of particles
in the simulation.
Parameters
----------
m_tot : float
Total mass flux of this fluid phase in the simulation (kg/s)
d : np.array
Array of particle sizes for this fluid phase (m)
vf : np.array
Array of volume fractions for each particle size for this fluid
phase (--). This array should sum to 1.0.
profile : ambient.Profile
An ambient.Profile object with the ambient ocean water column data
oil : dbm.FluidParticle
A dbm.FluidParticle object that contains the desired oil database
composition
yk : np.array
Mole fractions of each compound in the chemical database of the oil
dbm.FluidParticle object (--).
x0, y0, z0 : floats
Initial position of the particles in the simulation domain (m). Note
that x0 and y0 should be zero for particles starting on the plume
centerline.
Tj : float
Initial temperature of the particles in the jet (K)
lambda_1 : float
Value of the dispersed phase spreading parameter of the jet integral
model (--).
lag_time : bool
Flag that indicates whether (True) or not (False) to use the
biodegradation lag times data.
Returns
-------
disp_phases : list of bent_plume_model.Particle objects
List of `bent_plume_model.Particle` objects to be added to the
present bent plume model simulation based on the given input data.
Notes
-----
See the documentation for the `bent_plume_model` for more
information on the `Particle` object.
"""
# Create an empty list of particles
disp_phases = []
# Add each particle in the distribution separately
for i in range(len(d)):
# Get the total mass flux of this fluid phase for the present
# particle size
mb0 = vf[i] * m_tot
# Get the properties of these particles at the source
(m0, T0, nb0, P, Sa, Ta) = dispersed_phases.initial_conditions(
profile, z0, oil, yk, mb0, 2, d[i], Tj)
# Append these particles to the list of particles in the simulation
disp_phases.append(bent_plume_model.Particle(x0, y0, z0, oil, m0, T0,
nb0, lambda_1, P, Sa, Ta, K=1., K_T=1., fdis=1.e-6, t_hyd=0.,
lag_time=lag_time))
# Return the list of particles
return disp_phases
[docs]def get_ambient_profile(water, current, **kwargs):
"""
Create an `ambient.Profile` object from the given ambient data
Based on the water column information provided, make an appropriate
choice and create the `ambient.Profile` object required for a `tamoc`
simulation.
Parameters
----------
water : various
Data describing the ambient water temperature and salinity profile.
See Notes below for details.
current : various
Data describing the ambient current velocity profile. See Notes
below for details.
**kwargs : dict
Dictionary of optional keyword arguments that can be used when
creating an ambient.Profile object from a text file. Optional
arguments include:
summary : str
String describing the simulation for which this data will be used.
source : str
String documenting the source of the ambient ocean data provided.
sea_name : str
NC-compliant name for the ocean water body as a string.
p_lat : float
Latitude (deg)
p_lon : float
Longitude, negative is west of 0 (deg)
p_time : netCDF4 time format
Date and time of the CTD data using netCDF4.date2num().
ca : list, default=[]
List of dissolved atmospheric gases to include in the ambient
ocean data as a derived concentration; choices are 'nitrogen',
'oxygen', 'argon', and 'carbon_dioxide'.
If any of these arguments are not passed, default values will be
assigned by this function.
Notes
-----
The `water` variable contains information about the ambient temperature
and salinity profile. Possible choices for `water` include the following:
water : None
Indicates that we have no information about the ambient temperature
or salinity. In this case, the model will import data for the
world-ocean average.
water : dict
If we only know the water temperature and salinity at the surface,
this may be passed through a dictionary with keywords `temperature`
and `salinity`. In this case, the model will import data for the
world-ocean average and adjust the data to have the given temperature
and salinity at the surface.
water : 'netCDF4.Dataset' object
If a 'netCDF4.Dataset' object already contains the ambient CTD
data in a format appropriate for the `ambient.Profile` object, then
this can be passed. In this case, it is assumed that the dataset
includes the currents; hence, the `currents` variable will be
ignored.
water : `ambient.Profile` object
If we already created our own ambient Profile object, then this
object can be used directly.
water = str
If we stored the water column profile in a file, we may provide the
file path to this file via the string stored in water. If this string
ends in '.nc', it is assumed that this file contains a netCDF4
dataset. Otherwise, this file should contain columns in the following
order: depth (m), temperature (deg C), salinity (psu), velocity in
the x-direction (m/s), velocity in the y-direction (m/s). Since this
option includes the currents, the current variable will be ignored in
this case. A comment string of `#` may be used in the text file.
The `current` variable contains information about the ambient current
profile. Possible choices for `current` include the following:
current : float
This is assumed to be the current velocity along the x-axis and will
be uniform over the depth
current : ndarray
This is assumed to contain the current velocity in the x- and y- (and
optionally also z-) directions. If this is a one-dimensional array,
then these currents will be assumed to be uniform over the depth. If
this is a multi-dimensional array, then these values as assumed to
contain a profile of data, with the depth (m) as the first column of
data.
"""
NoneType = type(None)
done = False
# Extract the temperature and salinity data
if isinstance(water, NoneType):
# Use the world-ocean average T(z) and S(z)
data = None
if isinstance(water, dict):
# Get the water temperature and salinity at the surface
Ts = water['temperature']
Ss = water['salinity']
# Create a data array of depth, temperature, and salinity
data = np.array([0., Ts, Ss])
if isinstance(water, Dataset):
# A netCDF4 Dataset containing all of the profile data is stored
# in water. Use that to create the Profile object
profile = ambient.Profile(water)
done = True
if isinstance(water, ambient.Profile):
profile = water
done = True
elif isinstance(water, str) or isinstance(water, unicode):
if water[-3:] == '.nc':
# Water contains a path to a netCDF4 dataset. Use this to
# create the Profile object
profile = ambient.Profile(water)
done = True
else:
# This must be a relative path to a text file
fname = water
x0 = np.array([0., 0.])
try:
ca = kwargs['ca']
except:
ca = []
try:
summary = kwargs['summary']
except:
summary = 'CTD text file stored in: ' + water
try:
source = kwargs['source']
except:
source = 'tamoc.blowout.get_ctd_from_txt()'
try:
sea_name = kwargs['sea_name']
except:
sea_name = 'Text File'
try:
p_lon = kwargs['p_lon']
except:
p_lon = x0[0]
try:
p_lat = kwargs['p_lat']
except:
p_lat = x0[1]
try:
p_time = kwargs['p_time']
except:
p_time = date2num(datetime.now(),
units = 'seconds since 1970-01-01 00:00:00 0:00',
calendar = 'julian')
profile = get_ctd_from_txt(fname, summary, source,
sea_name, p_lat, p_lon, p_time,
ca)
done = True
# Create the `ambient.Profile` object
if not done:
profile = ambient.Profile(data, current=current, current_units='m/s')
# Returen the profile
return profile
[docs]def get_ctd_from_txt(fname, summary, source, sea_name, p_lat, p_lon,
p_time, ca=[]):
"""
Create an ambient.Profile object from a text file of ocean property data
Read the CTD and current data in the given filename (fname) and use that
data to create an ambient.Profile object for use in TAMOC. This function
is built to work with an ascii file organized with data stored in columns
that report depth (m), temperature (deg C), salinity (psu), u-component
of velocity (m/s) and v-component of velocity (m/s).
Parameters
----------
fname : str
String containing the relative path to the water column data file.
summary : str
String describing the simulation for which this data will be used.
source : str
String documenting the source of the ambient ocean data provided.
sea_name : str
NC-compliant name for the ocean water body as a string.
p_lat : float
Latitude (deg)
p_lon : float
Longitude, negative is west of 0 (deg)
p_time : netCDF4 time format
Date and time of the CTD data using netCDF4.date2num().
ca : list, default=[]
List of dissolved atmospheric gases to include in the ambient ocean
data as a derived concentration; choices are 'nitrogen', 'oxygen',
'argon', and 'carbon_dioxide'.
Returns
-------
profile : ambient.Profile
Returns an ambient.Profile object for manipulating ambient water
column data in TAMOC.
"""
# Read in the data
data = np.loadtxt(fname, comments='#')
# Describe what should be stored in this dataset
units = ['m', 'deg C', 'psu', 'm/s', 'm/s']
labels = ['z', 'temperature', 'salinity', 'ua', 'va']
comments = ['modeled', 'modeled', 'modeled', 'modeled', 'modeled']
# Extract a file name for the netCDF4 dataset that will hold this data
# based on the name of the text file.
nc_name = '.'.join(fname.split('.')[:-1]) # remove text file .-extension
nc_name = nc_name + '.nc'
# Create the ambient.Profile object
profile = create_ambient_profile(data, labels, units, comments, nc_name,
summary, source, sea_name, p_lat, p_lon, p_time, ca)
return profile
[docs]def create_ambient_profile(data, labels, units, comments, nc_name, summary,
source, sea_name, p_lat, p_lon, p_time, ca=[]):
"""
Create an ambient Profile object from given data
Create an ambient.Profile object using the given CTD and current data.
This function performs some standard operations to this data (unit
conversion, computation of pressure, insertion of concentrations for
dissolved gases, etc.) and returns the working ambient.Profile object.
The idea behind this function is to separate data manipulation and
creation of the ambient.Profile object from fetching of the data itself.
Parameters
----------
data : np.array
Array of the ambient ocean data to write to the CTD file. The
contents and dimensions of this data are specified in the labels
and units lists, below.
labels : list
List of string names of each variable in the data array.
units : list
List of units as strings for each variable in the data array.
comments : list
List of comments as strings that explain the types of data in the
data array. Typical comments include 'measured', 'modeled', or
'computed'.
nc_name : str
String containing the file path and file name to use when creating
the netCDF4 dataset that will contain this data.
summary : str
String describing the simulation for which this data will be used.
source : str
String documenting the source of the ambient ocean data provided.
sea_name : str
NC-compliant name for the ocean water body as a string.
p_lat : float
Latitude (deg)
p_lon : float
Longitude, negative is west of 0 (deg)
p_time : netCDF4 time format
Date and time of the CTD data using netCDF4.date2num().
ca : list, default=[]
List of gases for which to compute a standard dissolved gas profile;
choices are 'nitrogen', 'oxygen', 'argon', and 'carbon_dioxide'.
Returns
-------
profile : ambient.Profile
Returns an ambient.Profile object for manipulating ambient water
column data in TAMOC.
"""
# Convert the data to standard units
data, units = ambient.convert_units(data, units)
# Create an empty netCDF4-classic datast to store this CTD data
nc = ambient.create_nc_db(nc_name, summary, source, sea_name, p_lat,
p_lon, p_time)
# Put the CTD and current profile data into the ambient netCDF file
nc = ambient.fill_nc_db(nc, data, labels, units, comments, 0)
# Compute and insert the pressure data
z = nc.variables['z'][:]
T = nc.variables['temperature'][:]
S = nc.variables['salinity'][:]
P = ambient.compute_pressure(z, T, S, 0)
P_data = np.vstack((z, P)).transpose()
nc = ambient.fill_nc_db(nc, P_data, ['z', 'pressure'], ['m', 'Pa'],
['measured', 'computed'], 0)
# Use this netCDF file to create an ambient object
profile = ambient.Profile(nc, ztsp=['z', 'temperature', 'salinity',
'pressure', 'ua', 'va'])
# Compute dissolved gas profiles to add to this dataset
if len(ca) > 0:
# Create a gas mixture object for air
gases = ['nitrogen', 'oxygen', 'argon', 'carbon_dioxide']
air = dbm.FluidMixture(gases)
yk = np.array([0.78084, 0.20946, 0.009340, 0.00036])
m = air.masses(yk)
# Set atmospheric conditions
Pa = 101325.
# Compute the desired concentrations
for i in range(len(ca)):
# Initialize a dataset of concentration data
conc = np.zeros(len(profile.z))
# Compute the concentrations at each depth
for j in range(len(conc)):
# Get the local water column properties
T, S, P = profile.get_values(profile.z[j], ['temperature',
'salinity', 'pressure'])
# Compute the gas solubility at this temperature and salinity
# at the sea surface
Cs = air.solubility(m, T, Pa, S)[0,:]
# Adjust the solubility to the present depth
Cs = Cs * seawater.density(T, S, P) / \
seawater.density(T, S, 101325.)
# Extract the right chemical
conc[j] = Cs[gases.index(ca[i])]
# Add this computed dissolved gas to the Profile dataset
data = np.vstack((profile.z, conc)).transpose()
symbols = ['z', ca[i]]
units = ['m', 'kg/m^3']
comments = ['measured', 'computed from CTD data']
profile.append(data, symbols, units, comments, 0)
# Close the netCDF dataset
profile.close_nc()
# Return the profile object
return profile


Kernel weighting methods for estimation of proportional hazards models with intermittently observed longitudinal covariates.
| Version: | 1.0 |
| Published: | 2015-02-23 |
| Author: | Hongyuan Cao, Mathew M. Churpek, Donglin Zeng, Jason P. Fine, and Shannon T. Holloway |
| Maintainer: | Shannon T. Holloway <sthollow at ncsu.edu> |
| License: | GPL-2 |
| NeedsCompilation: | no |
| In views: | Survival |
| CRAN checks: | SurvLong results |
| Reference manual: | SurvLong.pdf |
| Package source: | SurvLong_1.0.tar.gz |
| Windows binaries: | r-devel: SurvLong_1.0.zip, r-release: SurvLong_1.0.zip, r-oldrel: SurvLong_1.0.zip |
| OS X binaries: | r-release: SurvLong_1.0.tgz, r-oldrel: SurvLong_1.0.tgz |
Please use the canonical form https://CRAN.R-project.org/package=SurvLong to link to this page.


Please provide a properly formatted e-mail address
Sign up to receive Surf 1685’s emails and get first dibs on new arrivals, sales, exclusive content, and more!
Emails will be send to your contact email above.


Following on from looking at the escalate verb in Kubernetes RBAC, I thought it would be worth looking at another one of the unusual verbs you can see in Kubernetes RBAC, bind.
These two, along with the impersonate verb are operations that are available on some RBAC objects in the Kubernetes API. They’re quite important if you’re looking at designing or auditing Kubernetes rights as they can allow for privilege escalation, so know which principals have access to them is important.
The bind verb can be applied to roles or clusterroles and allows a principal to bypass a general restriction on (cluster)role binding creation, which stops users who can create role bindings from escalating their privileges by binding to high privilege roles like cluster admin. This restriction is described in the Kubernetes documentation here
The way that this works is that, without using bind, a user cannot create a rolebinding or clusterrolebinding to a role or cluster role which has rights that the user themselves does not currently have. So for example if a user with the rights to create rolebindings tries to bind to cluster-admin , this won’t work unless that user already has cluster-admin rights.
Bind is made available to allow for this restriction to be bypassed.
Practical Example
Let’s show a practical example of this. First up we’ll create a couple of service accounts to act as our user for this experiment and we’ll call them rbac-binder
and not-rbac-binder
Now we’ll create a couple of cluster roles. Both have create
on clusterrolebindings
but one will also have bind
on clusterroles
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: rbac-binder
rules:
- apiGroups:
- rbac.authorization.k8s.io
resources:
- clusterroles
verbs:
- bind
- apiGroups:
- rbac.authorization.k8s.io
resources:
- clusterrolebindings
verbs:
- create
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: not-rbac-binder
rules:
- apiGroups:
- rbac.authorization.k8s.io
resources:
- clusterrolebindings
verbs:
- create
Then we’ll just bind those two clusterroles to their respective service accounts.
So at this point if we look at our users rights with ` kubectl –as=system:serviceaccount:default:rbac-binder auth can-i –list` we can see that the rbac-binder service account has the following rights
Resources Non-Resource URLs Resource Names Verbs
clusterroles.rbac.authorization.k8s.io [] [] [bind]
selfsubjectaccessreviews.authorization.k8s.io [] [] [create]
selfsubjectrulesreviews.authorization.k8s.io [] [] [create]
clusterrolebindings.rbac.authorization.k8s.io [] [] [create]
[/api/*] [] [get]
[/api] [] [get]
[/apis/*] [] [get]
[/apis] [] [get]
[/healthz] [] [get]
[/healthz] [] [get]
[/livez] [] [get]
[/livez] [] [get]
[/openapi/*] [] [get]
[/openapi] [] [get]
[/readyz] [] [get]
[/readyz] [] [get]
[/version/] [] [get]
[/version/] [] [get]
[/version] [] [get]
[/version] [] [get]
and the not-rbac-binder service account has these rights
kubectl --as=system:serviceaccount:default:not-rbac-binder auth can-i --list
Resources Non-Resource URLs Resource Names Verbs
selfsubjectaccessreviews.authorization.k8s.io [] [] [create]
selfsubjectrulesreviews.authorization.k8s.io [] [] [create]
clusterrolebindings.rbac.authorization.k8s.io [] [] [create]
[/api/*] [] [get]
[/api] [] [get]
[/apis/*] [] [get]
[/apis] [] [get]
[/healthz] [] [get]
[/healthz] [] [get]
[/livez] [] [get]
[/livez] [] [get]
[/openapi/*] [] [get]
[/openapi] [] [get]
[/readyz] [] [get]
[/readyz] [] [get]
[/version/] [] [get]
[/version/] [] [get]
[/version] [] [get]
[/version] [] [get]
Now if we try to use not-rbac-binder
to create a clusterrolebinding to cluster-admin, it will fail with the following error message (remember here that we do have create clusterrolebinding rights).
kubectl --as=system:serviceaccount:default:not-rbac-binder create clusterrolebinding rbac-clusteradmin --clusterrole=cluster-admin --serviceaccount=namespace:not-rbac-binder
error: failed to create clusterrolebinding: clusterrolebindings.rbac.authorization.k8s.io "rbac-clusteradmin" is forbidden: user "system:serviceaccount:default:not-rbac-binder" (groups=["system:serviceaccounts" "system:serviceaccounts:default" "system:authenticated"]) is attempting to grant RBAC permissions not currently held:
{APIGroups:["*"], Resources:["*"], Verbs:["*"]}
{NonResourceURLs:["*"], Verbs:["*"]}
Then if we try the same operation with rbac-binder
it works!
kubectl --as=system:serviceaccount:default:rbac-binder create clusterrolebinding rbac-clusteradmin --clusterrole=cluster-admin --serviceaccount=namespace:rbac-binder
clusterrolebinding.rbac.authorization.k8s.io/rbac-clusteradmin created
Conclusion
The bind verb on RBAC is a useful piece of Kubernetes RBAC configuration but it’s also a lesser known are of RBAC and one which not all tools might properly understand. As it can allow for privilege escalation, it’s an important thing to check for when creating or auditing roles and clusterroles.


class FreeProduct extends AbstractRemoveOnProducts
Allow to remove an amount from the checkout total
Constants
| COUPON_DATASET_NAME |
The dataset name for all coupon specific input fields, that do not appear in the CouPonCreationForm form. In the input form, these fields have to be created like: theliacouponspecific[myfield, theliacouponcreationextended[myotherfield] use the makeCouponField() method to do that safely. |
| AMOUNT_FIELD_NAME |
A standard 'amount' filed name, thant can be used in coupons which extends this class
|
| CATEGORY_ID |
|
| PRODUCTS_LIST |
|
| OFFERED_PRODUCT_ID |
|
| OFFERED_CATEGORY_ID |
|
| ADD_TO_CART_IN_PROCESS |
This constant is user to mark a free product as in the process of being added to the cart, but the CartItem ID is not yet been defined.
|
Properties
| $category_id | ||
| $product_list |
Methods
|
setFieldsValue(Array $effects)
|
||
| float |
getCartItemDiscount(CartItem $cartItem)
|
|
|
set(FacadeInterface $facade, string $code, string $title, string $shortDescription, string $description, array $effects, bool $isCumulative, bool $isRemovingPostage, bool $isAvailableOnSpecialOffers, bool $isEnabled, int $maxUsage, DateTime $expirationDate, ObjectCollection $freeShippingForCountries, ObjectCollection $freeShippingForModules, bool $perCustomerUsageCount)
|
from AbstractRemoveOnProducts | |
| float |
exec()
|
|
| string |
drawBaseBackOfficeInputs(string $templateName, array $otherFields)
|
from AbstractRemoveOnProducts |
|
getBaseFieldList($otherFields)
|
from AbstractRemoveOnProducts | |
|
checkBaseCouponFieldValue($fieldName, $fieldValue)
|
from AbstractRemoveOnProducts | |
|
isMatching()
We overload this method here to remove the free products when the coupons conditions are no longer met. |
||
| string |
getName()
Get I18n name |
|
|
getToolTip()
|
||
|
drawBackOfficeInputs()
|
||
|
clear()
|
Details
at line 49
public
setFieldsValue(Array $effects)
at line 58
public float
getCartItemDiscount(CartItem $cartItem)
in AbstractRemoveOnProducts at line 51
public
set(FacadeInterface $facade, string $code, string $title, string $shortDescription, string $description, array $effects, bool $isCumulative, bool $isRemovingPostage, bool $isAvailableOnSpecialOffers, bool $isEnabled, int $maxUsage, DateTime $expirationDate, ObjectCollection $freeShippingForCountries, ObjectCollection $freeShippingForModules, bool $perCustomerUsageCount)
at line 179
public float
exec()
in AbstractRemoveOnProducts at line 114
public string
drawBaseBackOfficeInputs(string $templateName, array $otherFields)
in AbstractRemoveOnProducts at line 132
public
getBaseFieldList($otherFields)
in AbstractRemoveOnProducts at line 140
public
checkBaseCouponFieldValue($fieldName, $fieldValue)
at line 164
public
isMatching()
We overload this method here to remove the free products when the coupons conditions are no longer met.
at line 293
public string
getName()
Get I18n name
at line 303
public
getToolTip()
at line 318
public
drawBackOfficeInputs()
at line 332
public
clear()


We hit a Signal rate-limit while sending the message.
Let's try the other way around: from the Signal application, please send a
short message to our Signal account.
Then click the "Send Test Message!" button again.
{% elif result == "Recipient not found" %}
Recipient not found.
Please make sure you have entered the phone number correctly.


--- title: Home layout: index ---
Network Systems - Information Technology graduate, CCNA certified, with professional and academic experience. Proven ability to adapt to new situations with a strong background and continued development of networking skills.
~ Areas of Experience ~
Cisco Routing and Switching • VoIP • Wireless/WiFi • Scripting/Automation • Firewalls • Load Balancers • Cyber Security • Windows Desktop & Server • Linux Server • Virtualization


public interface CatchoomResponseHandler
Remember to set the handler to your Catchoom
object through setResponseHandler
.| Modifier and Type | Method and Description |
|---|---|
void |
requestCompletedResponse(int requestCode,
Object responseData)
Callback triggered once a request has completed succesfully.
|
void |
requestFailedResponse(CatchoomErrorResponseItem responseError)
Callback triggered once a request has completed unsuccessfully.
|
void requestCompletedResponse(int requestCode, Object responseData)
requestCode
- The code corresponding to the request type has been sent.
Can be checked using Catchoom.Request
.responseData
- The data returned by the request. Its type and content
can vary depending on the request performed.void requestFailedResponse(CatchoomErrorResponseItem responseError)
responseError
- Catchoom error item containing the HTTP error code
and phrase and an error description.


CHAPTER XII
(Delivered in America)
What question has been asked a greater number of times, what idea has led men more to search the universe for an answer, what question is nearer and dearer to the human heart, what question is more inseparably connected with our existence, than this one, the immortality of the human soul? It has been the theme of poets and sages, of priests and prophets; kings on the throne have discussed it, beggars in the street have dreamt of it. The best of humanity have approached it, and the worst of men have hoped for it. The interest in the theme has not died yet, nor will it die so long as human nature exists. Various answers have been presented to the world by various minds. Thousands, again, in every period of history have given up the discussion, and yet the question remains fresh as ever. Often in the turmoil and struggle of our lives we seem to forget it, but suddenly some one dies — one, perhaps, whom we loved, one near and dear to our hearts is snatched away from us — and the struggle, the din and turmoil of the world around us, cease for a moment, and the soul asks the old questions "What after this?" "What becomes of the soul?"
All human knowledge proceeds out of experience; we cannot know anything except by experience. All our reasoning is based upon generalised experience, all our knowledge is but harmonised experience. Looking around us, what do we find? A continuous change. The plant comes out of the seed, grows into the tree, completes the circle, and comes back to the seed. The animal comes, lives a certain time, dies, and completes the circle. So does man. The mountains slowly but surely crumble away, the rivers slowly but surely dry up, rains come out of the sea, and go back to the sea. Everywhere circles are being completed, birth, growth, development, and decay following each other with mathematical precision. This is our everyday experience. Inside of it all, behind all this vast mass of what we call life, of millions of forms and shapes, millions upon millions of varieties, beginning from the lowest atom to the highest spiritualised man, we find existing a certain unity. Every day we find that the wall that was thought to be dividing one thing and another is being broken down, and all matter is coming to be recognised by modern science as one substance, manifesting in different ways and in various forms; the one life that runs through all like a continuous chain, of which all these various forms represent the links, link after link, extending almost infinitely, but of the same one chain. This is what is called evolution. It is an old, old idea, as old as human society, only it is getting fresher and fresher as human knowledge is progressing. There is one thing more, which the ancients perceived, but which in modern times is not yet so clearly perceived, and that is involution. The seed is becoming the plant; a grain of sand never becomes a plant. It is the father that becomes a child; a lump of clay never becomes the child. From what does this evolution come, is the question. What was the seed? It was the same as the tree. All the possibilities of a future tree are in that seed; all the possibilities of a future man are in the little baby; all the possibilities of any future life are in the germ. What is this? The ancient philosophers of India called it involution. We find then, that every evolution presupposes an involution. Nothing can be evolved which is not already there. Here, again, modern science comes to our help. You know by mathematical reasoning that the sum total of the energy that is displayed in the universe is the same throughout. You cannot take away one atom of matter or one foot-pound of force. You cannot add to the universe one atom of matter or one foot-pound of force. As such, evolution does not come out of zero; then, where does it come from? From previous involution.  The seed is the tree involved, and the tree is the seed evolved. All the possibilities of life are in the germ. The problem becomes a little clearer. Add to it the first idea of continuation of life. From the lowest protoplasm to the most perfect human being there is really but one life. Just as in one life we have so many various phases of expression, the protoplasm developing into the baby, the child, the young man, the old man, so, from that protoplasm up to the most perfect man we get one continuous life, one chain. This is evolution, but we have seen that each evolution presupposes an involution. The whole of this life which slowly manifests itself evolves itself from the protoplasm to the perfected human being — the Incarnation of God on earth — the whole of this series is but one life, and the whole of this manifestation must have been involved in that very protoplasm. This whole life, this very God on earth, was involved in it and slowly came out, manifesting itself slowly, slowly, slowly. The highest expression must have been there in the germ state in minute form; therefore this one force, this whole chain, is the involution of that cosmic life which is everywhere. It is this one mass of intelligence which, from the protoplasm up to the most perfected man, is slowly and slowly uncoiling itself. Not that it grows. Take off all ideas of growth from your mind. With the idea of growth is associated something coming from outside, something extraneous, which would give the lie to the truth that the Infinite which lies latent in every life is independent of all external conditions. It can never grow; It was always there, and only manifests Itself.
The effect is the cause manifested. There is no essential difference between the effect and the cause. Take this glass, for instance. There was the material, and the material plus the will of the manufacturer made the glass and these two were its causes and are present in it. In what form is the will present? As adhesion. If the force were not here, each particle would fall away. What is the effect then? It is the same as the cause, only taking; different form, a different composition. When the cause is changed and limited for a time, it becomes the effect We must remember this. Applying it to our idea of life the whole of the manifestation of this one series, from the protoplasm up to the most perfect man, must be the very same thing as cosmic life. First it got involved and became finer; and out of that fine something, which wet the cause, it has gone on evolving, manifesting itself, and becoming grosser.
But the question of immortality is not yet settled. We have seen that everything in this universe is indestructible.  The same series of manifestations are presenting themselves alternately like a wheel, coming up and going down. All motion in this universe is in the form of waves, successively rising and falling. Systems after systems are coming out of fine forms, evolving themselves, and taking grosser forms, again melting down, as it were, and going back to the fine forms. Again they rise out of that, evolving for a certain period and slowly going back to the cause.  Each manifestation of life is coming up and then going back again. What goes down? The form. The form breaks to pieces, but it comes up again. In one sense bodies and forms even are eternal. How? Suppose we take a number of dice and throw them, and they fall in this ratio — 6 — 5 — 3 — 4. We take the dice up and throw them again and again; there must be a time when the same numbers will come again; the same combination must come. Now each particle, each atom, that is in this universe, I take for such a die, and these are being thrown out and combined again and again. All these forms before you are one combination. Here are the forms of a glass, a table, a pitcher of water, and so forth. This is one combination; in time, it will all break. But there must come a time when exactly the same combination comes again, when you will be here, and this form will be here, this subject will be talked, and this pitcher will be here. An infinite number of times this has been, and an infinite number of times this will be repeated. Thus far with the physical forms. What do we find? That even the combination of physical forms is eternally repeated.
A most interesting conclusion that follows from this theory is the explanation of facts such as these: Some of you, perhaps, have seen a man who can read the past life of others and foretell the future. How is it possible for any one to see what the future will be, unless there is a regulated future? Effects of the past will recur in the future, and we see that it is so. You have seen the big Ferris Wheel1 in Chicago. The wheel revolves, and the little rooms in the wheel are regularly coming one after another; one set of persons gets into these, and after they have gone round the circle, they get out, and a fresh batch of people gets in. Each one of these batches is like one of these manifestations, from the lowest animals to the highest man. Nature is like the chain of the Ferris Wheel, endless and infinite, and these little carriages are the bodies or forms in which fresh batches of souls are riding, going up higher and higher until they become perfect and come out of the wheel. But the wheel goes on. And so long as the bodies are in the wheel, it can be absolutely and mathematically foretold where they will go, but not so of the souls. Thus it is possible to read the past and the future of nature with precision. We see, then, that there is recurrence of the same material phenomena at certain periods, and that the same combinations have been taking place through eternity. But that is not the immortality of the soul. No force can die, no matter can be annihilated. What becomes of it? It goes on changing, backwards and forwards, until it returns to the source from which it came. There is no motion in a straight line. Everything moves in a circle; a straight line, infinitely produced, becomes a circle. If that is the case, there cannot be eternal degeneration for any soul. It cannot be. Everything must complete the circle, and come back to its source. What are you and I and all these souls? In our discussion of evolution and involution, we have seen that you and I must be part of the cosmic consciousness, cosmic life, cosmic mind, which got involved and we must complete the circle and go back to this cosmic intelligence which is God. This cosmic intelligence is what people call Lord, or God, or Christ, or Buddha, or Brahman, what the materialists perceive as force, and the agnostics as that infinite, inexpressible beyond; and we are all parts of that.
This is the second idea, yet this is not sufficient; there will be still more doubts. It is very good to say that there is no destruction for any force. But all the forces and forms that we see are combinations. This form before us is a composition of several component parts, and so every force that we see is similarly composite. If you take the scientific idea of force, and call it the sum total, the resultant of several forces, what becomes of your individuality? Everything that is a compound must sooner or later go back to its component parts. Whatever in this universe is the result of the combination of matter or force must sooner or later go back to its components. Whatever is the result of certain causes must die, must be destroyed. It gets broken up, dispersed, and resolved back into its components. Soul is not a force; neither is it thought. It is the manufacturer of thought, but not thought itself; it is the manufacturer of the body, but not the body. Why so? We see that the body cannot be the soul. Why not? Because it is not intelligent. A corpse is not intelligent, nor a piece of meat in a butcher's shop. What do we mean by intelligence? Reactive power. We want to go a little more deeply into this. Here is a pitcher; I see it. How? Rays of light from the pitcher enter my eyes, and make a picture in my retina, which is carried to the brain. Yet there is no vision.  But up to this there is no reaction. The nerve centre in the brain carries the impression to the mind, and the mind reacts, and as soon as this reaction comes, the pitcher flashes before it. Take a more commonplace example.  What has happened? The mosquito has bitten a certain part of your skin, and certain nerves are there. They have carried a certain sensation to the brain, and the impression is there, but the mind, being otherwise occupied, does not react, so you are not aware of the presence of the mosquito. When a new impression comes, if the mind does not react, we shall not be conscious of it, but when the reaction comes we feel, we see, we hear, and so forth. With this reaction comes illumination, as the Sâmkhya philosophers call it. We see that the body cannot illuminate, because in the absence of attention no sensation is possible. Cases have been known where, under peculiar conditions, a man who had never learnt a particular language was found able to speak it. Subsequent inquiries proved that the man had, when a child, lived among people who spoke that language and the impressions were left in his brain. These impressions remained stored up there, until through some cause the mind reacted, and illumination came, and then the man was able to speak the language. This shows that the mind alone is not sufficient, that the mind itself is an instrument in the hands of someone. In the case of that boy the mind contained that language, yet he did not know it, but later there came a time when he did. It shows that there is someone besides the mind; and when the boy was a baby, that someone did not use the power; but when the boy grew up, he took advantage of it, and used it. First, here is the body, second the mind, or instrument of thought, and third behind this mind is the Self of man. The Sanskrit word is Atman. As modern philosophers have identified thought with molecular changes in the brain, they do not know how to explain such a case, and they generally deny it. The mind is intimately connected with the brain which dies every time the body changes. The Self is the illuminator, and the mind is the instrument in Its hands, and through that instrument It gets hold of the external instrument, and thus comes perception. The external instruments get hold of the impressions and carry them to the organs, for you must remember always, that the eyes and ears are only receivers — it is the internal organs, the brain centres, which act. In Sanskrit these centres are called Indriyas, and they carry sensations to the mind, and the mind presents them further back to another state of the mind, which in Sanskrit is called Chitta, and there they are organised into will, and all these present them to the King of kings inside, the Ruler on His throne, the Self of man. He then sees and gives His orders. Then the mind immediately acts on the organs, and the organs on the external body. The real Perceiver, the real Ruler, the Governor, the Creator, the Manipulator of all this, is the Self of man.
We see, then, that the Self of man is not the body, neither is It thought. It cannot be a compound. Why not? Because everything that is a compound can be seen or imagined. That which we cannot imagine or perceive, which we cannot bind together, is not force or matter, cause or effect, and cannot be a compound. The domain of compounds is only so far as our mental universe, our thought universe extends. Beyond this it does not hold good; it is as far as law reigns, and if there is anything beyond law, it cannot be a compound at all. The Self of man being beyond the law of causation, is not a compound. It is ever free and is the Ruler of everything that is within law.  It is sheer nonsense to say It dies.
We are now treading on finer and finer ground, and some of you, perhaps, will be frightened. We have seen that this Self, being beyond the little universe of matter and force and thought, is a simple; and as a simple It cannot die. That which does not die cannot live. For life and death are the obverse and reverse of the same coin. Life is another name for death, and death for life. One particular mode of manifestation is what we call life; another particular mode of manifestation of the same thing is what we call death. When the wave rises on the top it is life; and when it falls into the hollow it is death. If anything is beyond death, we naturally see it must also be beyond life. I must remind you of the first conclusion that the soul of man is part of the cosmic energy that exists, which is God. We now find that it is beyond life and death.  What is this birth and death that we see around us? This belongs to the body only, because the soul is omnipresent. "How can that be?" you may ask. "So many people are sitting here, and you say the soul is omnipresent?" What is there, I ask, to limit anything that is beyond law, beyond causation? This glass is limited; it is not omnipresent, because the surrounding matter forces it to take that form, does not allow it to expand. It is conditioned be everything around it, and is, therefore, limited. But that which is beyond law, where there is nothing to act upon it, how can that be limited? It must be omnipresent. You are everywhere in the universe. How is it then that I am born and I am going to die, and all that? That is the talk of ignorance, hallucination of the brain.  You have had neither birth, nor will have rebirth, nor life, nor incarnation, nor anything. What do you mean by coming and going? All shallow nonsense. You are everywhere. Then what is this coming and going? It is the hallucination produced by the change of this fine body which you call the mind. That is going on. Just a little speck of cloud passing before the sky. As it moves on and on, it may create the delusion that the sky moves. Sometimes you see a cloud moving before the moon, and you think that the moon is moving. When you are in a train you think the land is flying, or when you are in a boat, you think the water moves. In reality you are neither going nor coming, you are not being born, nor going to be reborn; you are infinite, ever-present, beyond all causation, and ever-free.  How could there be mortality when there was no birth?
One step more we will have to take to come to a logical conclusion. There is no half-way house. You are metaphysicians, and there is no crying quarter. If then we are beyond all law, we must be omniscient, ever-blessed; all knowledge must be in us and all power and blessedness. Certainly. You are the omniscient. omnipresent being of the universe. But of such beings can there be many? Can there be a hundred thousand millions of omnipresent beings? Certainly not. Then, what becomes of us all? You are only one; there is only one such Self, and that One Self is you. Standing behind this little nature is what we call the Soul. There is only One Being, One Existence, the ever-blessed, the omnipresent, the omniscient, the birthless, deathless. "Through His control the sky expands, through His control the air breathes, through His control the sun shines, and through His control all live.  Wherever there are two, there is fear, there is danger, there is conflict, there is strife. When it is all One, who is there to hate, who is there to struggle with? When it is all He, with whom can you fight? This explains the true nature of life; this explains the true nature of being. this is perfection, and this is God. As long as you see the many, you are under delusion.  Therefore know that thou art He; thou art the God of this universe, "Tat Tvam Asi" (That thou art).  Away with them I What makes you weak? What makes you fear?  What frightens you? Stand up then and be free. Know that every thought and word that weakens you in this world is the only evil that exists. Whatever makes men weak and fear is the only evil that should be shunned. What can frighten you? If the suns come down, and the moons crumble into dust, and systems after systems are hurled into annihilation, what is that to you? Stand as a rock; you are indestructible. You are the Self, the God of the universe. Say — "I am Existence Absolute, Bliss Absolute, Knowledge Absolute, I am He," and like a lion breaking its cage, break your chain and be free for ever. What frightens you, what holds you down? Only ignorance and delusion; nothing else can bind you. You are the Pure One, the Ever-blessed.
 It is foolishness, wickedness, downright rascality to say that you are sinners! You are all God. See you not God and call Him man? Therefore, if you dare, stand on that — mould your whole life on that. If a man cuts your throat, do not say no, for you are cutting your own throat. When you help a poor man, do not feel the least pride. That is worship for you, and not the cause of pride. Is not the whole universe you? Where is there any one that is not you? You are the Soul of this universe.  The whole universe is you. Whom are you going to hate or to fight? Know, then, that thou art He, and model your whole life accordingly; and he who knows this and models his life accordingly will no more grovel in darkness.


HTML CSS DOM Part 1
Can you think of an analogy to describe HTML, CSS and the DOM? How would you describe it to your non-technical?
I'm not sure if this is right, but maybe we can think of it as a meal. HTML is the recipe, the DOM is the actual meal you have cooked, and CSS is the seasoning.
What is meant by boxifying design?
Boxiying design is an approach to web page design where all of the elements are first considered as being compartmentalised into boxes. This adds a sense of logic to the organisation of the page, and also allows you to redesign the page more easily by moving around the boxes.
What is the box model?
This is ther term we use when talking about the design and layout of web pages. If we think about each html element having a box wrapped around it, this can help when considering editing the page. Each box contains margins, borders and padding around the actual content, all of which can be adjusted.


A Gentle Introduction to Haskell, Version 98
A Haskell program consists of a collection of modules. A module in Haskell serves the dual purpose of controlling name-spaces and creating abstract data types.
The top level of a module contains any of the various declarations we have discussed: fixity declarations, data and type declarations, class and instance declarations, type signatures, function definitions, and pattern bindings. Except for the fact that import declarations (to be described shortly) must appear first, the declarations may appear in any order (the top-level scope is mutually recursive).
Haskell's module design is relatively conservative: the name-space of modules is completely flat, and modules are in no way "first-class." Module names are alphanumeric and must begin with an uppercase letter. There is no formal connection between a Haskell module and the file system that would (typically) support it. In particular, there is no connection between module names and file names, and more than one module could conceivably reside in a single file (one module may even span several files). Of course, a particular implementation will most likely adopt conventions that make the connection between modules and files more stringent.
Technically speaking, a module is really just one big declaration
which begins with the keyword module; here's an example for a module
whose name is Tree:
module Tree ( Tree(Leaf,Branch), fringe ) where
data Tree a = Leaf a | Branch (Tree a) (Tree a)
fringe :: Tree a -> [a]
fringe (Leaf x) = [x]
fringe (Branch left right) = fringe left ++ fringe right
The type Tree and the function fringe should be familiar; they
were given as examples in Section 2.2.1.
[Because of the where keyword, layout is active at the top
level of a module, and thus the declarations must all line up in the
same column (typically the first). Also note that the module name is
the same as that of the type; this is allowed.]
This module explicitly exports Tree, Leaf, Branch, and fringe. If the export list following the module keyword is omitted, all of the names bound at the top level of the module would be exported. (In the above example everything is explicitly exported, so the effect would be the same.) Note that the name of a type and its constructors have be grouped together, as in Tree(Leaf,Branch). As short-hand, we could also write Tree(..). Exporting a subset of the constructors is also possible. The names in an export list need not be local to the exporting module; any name in scope may be listed in an export list.
The Tree module may now be imported into some other module:
module Main (main) where
import Tree ( Tree(Leaf,Branch), fringe )
main = print (fringe (Branch (Leaf 1) (Leaf 2)))
The various items being imported into and exported out of a module are
called entities. Note the explicit import list in the import
declaration; omitting it would cause all entities exported from Tree
to be imported.
There is an obvious problem with importing names directly into the
namespace of module. What if two imported modules contain different
entities with the same name? Haskell solves this problem using
qualified names. An import declaration may use the
qualified keyword to cause the imported names to be prefixed by the
name of the module imported. These prefixes are followed by the `.'
character without intervening whitespace. [Qualifiers are part of
the lexical syntax. Thus, A.x and A . x are quite different: the
first is a qualified name and the second a use of the infix `.'
function.] For example, using the Tree module introduced above:
module Fringe(fringe) where
import Tree(Tree(..))
fringe :: Tree a -> [a] -- A different definition of fringe
fringe (Leaf x) = [x]
fringe (Branch x y) = fringe x
module Main where
import Tree ( Tree(Leaf,Branch), fringe )
import qualified Fringe ( fringe )
main = do print (fringe (Branch (Leaf 1) (Leaf 2)))
print (Fringe.fringe (Branch (Leaf 1) (Leaf 2)))
Some Haskell programmers prefer to use qualifiers for all imported
entities, making the source of each name explicit with every use.
Others prefer short names and only use qualifiers when absolutely
necessary.
Qualifiers are used to resolve conflicts between different entities which have the same name. But what if the same entity is imported from more than one module? Fortunately, such name clashes are allowed: an entity can be imported by various routes without conflict. The compiler knows whether entities from different modules are actually the same.
Aside from controlling namespaces, modules provide the only way to
build abstract data types (ADTs) in Haskell. For example, the
characteristic feature of an ADT is that the representation type
is hidden; all operations on the ADT are done at an abstract
level which does not depend on the representation. For example,
although the Tree type is simple enough that we might not normally
make it abstract, a suitable ADT for it might include the following
operations:
data Tree a -- just the type name
leaf :: a -> Tree a
branch :: Tree a -> Tree a -> Tree a
cell :: Tree a -> a
left, right :: Tree a -> Tree a
isLeaf :: Tree a -> Bool
A module supporting this is:
module TreeADT (Tree, leaf, branch, cell,
left, right, isLeaf) where
data Tree a = Leaf a | Branch (Tree a) (Tree a)
leaf = Leaf
branch = Branch
cell (Leaf a) = a
left (Branch l r) = l
right (Branch l r) = r
isLeaf (Leaf _) = True
isLeaf _ = False
Note in the export list that the type name Tree appears alone
(i.e. without its constructors). Thus
Leaf and Branch are not exported, and the only way to build or
take apart trees outside of the module is by using the various
(abstract) operations. Of course, the advantage of this information
hiding is that at a later time we could change the
representation type without affecting users of the type.
Here is a brief overview of some other aspects of the module system. See the report for more details.


{% load i18n %} {% if questionnaires_in_progress.exists %}
{% trans "Please make sure that it's not a duplicate of another questionnaire that you are currently working on:" %}


Crack Repair
Pavement Maintenance Contractors, Inc. repairs pavement cracks and joints by evaluating the type and cause of cracks. When cracks are amenable to repair, important preparation that includes cleaning, drying, and shaping (routing) of cracks or joints is necessary to assure proper crack or joint filling. PMCI uses the highest grade, hot-applied liquid rubberized sealant. Our equipment includes a double jacket melter with a heated pressurized hose and wand. Repairs last the longest by minimizing water infusion into the cracks and thereby substantially increasing the lifetime of your pavement. It is estimated that crack and joint filling and sealing performed at 3-year intervals will more than double the lifetime of your pavement. Effective and inexpensive, crack filling and joint sealing is often the first step in preventative care of your pavement. Your PMCI experienced representative will assist you to determine your pavement needs.


MonkeySpace is dedicated to providing a harassment-free conference experience for everyone regardless of gender, sexual orientation, disability, physical appearance, body size, race, or religion. We do not tolerate harassment of conference participants in any form. Sexual language and imagery is not appropriate for any conference venue, including talks. Conference participants violating these rules may be sanctioned or expelled from the conference [without a refund] at the discretion of the conference organizers.
 Participants asked to stop any harassing behavior are expected to comply immediately.
Exhibitors in the expo hall, sponsor or vendor booths, or similar activities are also subject to the anti-harassment policy. In particular, exhibitors should not use sexualized images, activities, or other material. Booth staff (including volunteers) should not use sexualized clothing/uniforms/costumes, or otherwise create a sexualized environment.
If a participant engages in harassing behavior, the conference organizers may take any action they deem appropriate, including warning the offender or expulsion from the conference [with no refund]. If you are being harassed, notice that someone else is being harassed, or have any other concerns, please contact a member of conference staff immediately. Conference staff can be identified by t-shirts and special badges.
Conference staff will be happy to help participants contact hotel/venue security or local law enforcement, provide escorts, or otherwise assist those experiencing harassment to feel safe for the duration of the conference. We value your attendance. We expect participants to follow these rules at all conference venues and conference-related social events.


SM2 - Chinese SM2 signature and encryption algorithm support
The SM2 algorithm was first defined by the Chinese national standard GM/T 0003-2012 and was later standardized by ISO as ISO/IEC 14888. SM2 is actually an elliptic curve based algorithm. The current implementation in OpenSSL supports both signature and encryption schemes via the EVP interface.
When doing the SM2 signature algorithm, it requires a distinguishing identifier to form the message prefix which is hashed before the real message is hashed.
SM2 signatures can be generated by using the 'DigestSign' series of APIs, for instance, EVP_DigestSignInit(), EVP_DigestSignUpdate() and EVP_DigestSignFinal(). Ditto for the verification process by calling the 'DigestVerify' series of APIs.
There are several special steps that need to be done before computing an SM2 signature.
The EVP_PKEY structure will default to using ECDSA for signatures when it is created. It should be set to EVP_PKEY_SM2 by calling:
EVP_PKEY_set_alias_type(pkey, EVP_PKEY_SM2);
Then an ID should be set by calling:
EVP_PKEY_CTX_set1_id(pctx, id, id_len);
When calling the EVP_DigestSignInit() or EVP_DigestVerifyInit() functions, a pre-allocated EVP_PKEY_CTX should be assigned to the EVP_MD_CTX. This is done by calling:
EVP_MD_CTX_set_pkey_ctx(mctx, pctx);
And normally there is no need to pass a pctx parameter to EVP_DigestSignInit() or EVP_DigestVerifyInit() in such a scenario.
This example demonstrates the calling sequence for using an EVP_PKEY to verify a message with the SM2 signature algorithm and the SM3 hash algorithm:
#include <openssl/evp.h>
/* obtain an EVP_PKEY using whatever methods... */
EVP_PKEY_set_alias_type(pkey, EVP_PKEY_SM2);
mctx = EVP_MD_CTX_new();
pctx = EVP_PKEY_CTX_new(pkey, NULL);
EVP_PKEY_CTX_set1_id(pctx, id, id_len);
EVP_MD_CTX_set_pkey_ctx(mctx, pctx);;
EVP_DigestVerifyInit(mctx, NULL, EVP_sm3(), NULL, pkey);
EVP_DigestVerifyUpdate(mctx, msg, msg_len);
EVP_DigestVerifyFinal(mctx, sig, sig_len)
EVP_PKEY_CTX_new(3), EVP_PKEY_set_alias_type(3), EVP_DigestSignInit(3), EVP_DigestVerifyInit(3), EVP_PKEY_CTX_set1_id(3), EVP_MD_CTX_set_pkey_ctx(3)
Copyright 2018-2019 The OpenSSL Project Authors. All Rights Reserved.
Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.