| Module | FunctionalTestHelpers |
| In: |
lib/functional_test_helpers.rb
|
Unless you are writing your own specialized test you probably are looking for the helpers in FunctionalTestHelpers::ClassMethods.
This module provides basic functional level test helpers to test the various aspects of a controller. It provides the basic building blocks for the test helpers in FunctionalTestHelpers::ClassMethods. These instance level methods can also be used to build new tests when the tests fall outside of the domain covered by the main test helpers. All of the helpers rely on a definition of a DefaultValue at the test class level. This is to be a hash of attribute value pairs that match the model.
Example:
class ItemsControllerTest < ActionController::TestCase
DefaultValues = { :name => "Some Name", :location => "123 Main", :color => "Blue" }
end
Returns the default values to be used in tests. The default values are declared as a constant hash with the name DefaultValues in the test class.
Example:
class ItemsControllerTest < ActionController::TestCase DefaultValues = { :name => "Some Name", :location => "123 Main", :color => "Blue" } def default_name default_values[:name] #=> "Some Name" end end
# File lib/functional_test_helpers.rb, line 886 886: def default_values 887: resolve_delayed_fixtures self.class.default_values 888: end
Loads the fixtures for the users if they have not already been loaded. The fixtures to be loaded are determined from the user_symbol.
# File lib/functional_test_helpers.rb, line 926 926: def load_users_fixture 927: self.class.load_users_fixture 928: end
Login to the application for testing. Accepts a hash containing values for :login, :password, and :starting_url. After logging in, a redirect is expected and checked against the :starting_url. If :starting_url is not given, it defaults to ’/’. If :password is not given it defaults to ‘test’. If :login is not given, it will first look to see if you have passed an instance of your user model using the user_symbol as the key. If that is not found, it defaults to the fixture test_<user_symbol>. ie: test_user.
Example:
class ItemsControllerTest < ActionController::TestCase UserModel = Plebeian def test_various_logins_and_logouts login logout login :login => "joe" logout login :plebeian => plebeians(:lucy) logout login :login => "goofball", :password => 'ickyicky", :starting_url => '/home/goofball' logout end end
# File lib/functional_test_helpers.rb, line 956 956: def login(options={}) 957: options = resolve_delayed_fixtures(options) 958: 959: user = options[user_symbol] 960: login = options.fetch(:login, user ? user.login : "test_#{user_symbol.to_s}") 961: password = options.fetch(:password, 'test') 962: starting_url = options.fetch(:starting_url, '/') 963: 964: with_controller(SessionsController) do 965: post :create, {:login => login, :password => password} 966: assert_redirected_to starting_url 967: end 968: end
Logout to the application after testing. Accepts a hash containing a value for :ending_url. After logging out, a redirect is expected and checked against the :ending_url. If :ending_url is not given, it defaults to ’/’.
Example:
class ItemsControllerTest < ActionController::TestCase UserModel = Plebeian def test_varous_logins_and_logouts login logout login :login => "goofball" logout :ending_url => '/fine_be_that_way' end end
# File lib/functional_test_helpers.rb, line 989 989: def logout(options={}) 990: with_controller(SessionsController) do 991: redirect_target = options.fetch(:ending_url, "/") 992: post :destroy 993: assert_redirected_to redirect_target 994: end 995: end
Returns whether or not the resource being tested is a singleton resource. See ClassMethods#singleton_resource? for more details.
Example:
class ItemsControllerTest < ActionController::TestCase def am_I_alone? singleton_resource? #=> false end end
# File lib/functional_test_helpers.rb, line 1009 1009: def singleton_resource? 1010: self.class.singleton_resource? 1011: end
Sets the model that accompanies the controller target of the test. See ClassMethods#target_model for more details.
Example:
class ItemsControllerTest < ActionController::TestCase target_model = Thing def the_model_is target_model #=> Thing end end
# File lib/functional_test_helpers.rb, line 1027 1027: def target_model 1028: self.class.target_model 1029: end
Returns the human readable name that is used in error messages. See ClassMethods#target_name for more details.
Example:
class ItemsControllerTest < ActionController::TestCase def what_name_am_I_using target_name #=> "Item" end end
# File lib/functional_test_helpers.rb, line 1043 1043: def target_name 1044: self.class.target_name 1045: end
Returns the human readable plural name that is used in error messages. See ClassMethods#target_name_plural for more details.
Example:
class ItemsControllerTest < ActionController::TestCase def what_plural_name_am_I_using target_name #=> "Items" end end
# File lib/functional_test_helpers.rb, line 1059 1059: def target_name_plural 1060: self.class.target_name_plural 1061: end
Returns the symbol name that is used for parameter and assigns checks. See ClassMethods#target_symbol for more details.
Example:
class ItemsControllerTest < ActionController::TestCase def what_parameter_am_I_using target_symbol #=> :item end end
# File lib/functional_test_helpers.rb, line 1075 1075: def target_symbol 1076: self.class.target_symbol 1077: end
Returns the plural symbol name that is used for parameter and assigns checks. See ClassMethods#target_symbol_plural for more details.
Example:
class ItemsControllerTest < ActionController::TestCase def what_plural_parameter_am_I_using target_symbol #=> :items end end
# File lib/functional_test_helpers.rb, line 1091 1091: def target_symbol_plural 1092: self.class.target_symbol_plural 1093: end
Returns the model representing the users of the application. See ClassMethods#user_model for more details.
Example:
class ItemsControllerTest < ActionController::TestCase UserModel = Plebeian def the_user_model_is user_model #=> Plebeian end end
# File lib/functional_test_helpers.rb, line 904 904: def user_model 905: self.class.user_model 906: end
Returns the symbol for the user model of the test. See ClassMethods#user_symbol for more details.
Example:
class ItemsControllerTest < ActionController::TestCase def the_symbol_of_the_people user_symbol #=> :user end end
# File lib/functional_test_helpers.rb, line 920 920: def user_symbol 921: self.class.user_symbol 922: end
Execute a block with a different controller. Restores the original controller upon completion. Returns the result of the block.
Example:
class ItemsControllerTest < ActionController::TestCase def test_something_with_another_controller with_controller(OtherController) do post :create # Create a new Other resource end post :create # Then create a new Item resource end end
# File lib/functional_test_helpers.rb, line 1112 1112: def with_controller(controller_class, &block) 1113: old_controller = @controller 1114: @controller = controller_class.new 1115: rc = yield(controller_class) 1116: @controller = old_controller 1117: rc 1118: end


@(map: Map[String, String], idenv:String, id:String, temp:String, lum:String, hum:String) @Main("Manual command") { Toggle navigation Area Edit Area (current) Areas View Areas Add Area Environment (current) Profile Log out


Magic Display - Demo
Magic Display is a jQuery plugin that makes the content of your website appear on scroll of the page.
Scroll down to see the magic!
Title #1
Title #2
Title #3


Chapter 5 Collect
For Environmental Health researchers, I think one of the most exciting developments in R recently is how it is changing how we can collect data, both for exposures and outcomes. One direction for this development is how researchers can collect and measure original data from experiments, including through new measurement technologies (e.g., phone-based Apps) and through new or rapidly changing health-related measurements (e.g., metabolomics, flow cytometry) and associated open-source software.
R is also facilitating and leveraging rapid developments in how researchers can access and query secondary data, including from large adminstrative databases, like those maintained by the US Census, NOAA, and the USGS. This section will provide an introduction to some of the ideas and techniques behind these developments for collecting secondary or public-use data for environmental health research, as well as give you somee directions on where to go to find R packages that facilitate collecting open data from R.
5.1 Data packages
With R, you can create packages that are exclusively or mainly created to share data. Some researchers are creating and publishing this type of “data package”, and some may be relevant to your research. These packages provide access to open datasets that the package maintainer collected and processed and is now making available as an R package, but the data is static (as of the last version of the package), rather than interfacing to pull the most recent data. However, this set-up can achieve more stability—it won’t be broken by a change in an online API.
This package is too big for CRAN to host, so we have it posted through our own package repository.12 Because of this, you’ll need to take a few extra steps to download and install the package:13
library(drat)
addRepo("geanders")
install.packages("hurricaneexposuredata")
install.packages("hurricaneexposure")
Once you’ve installed both the hurricaneexposuredata
and hurricaneexposure
packages, you
can load them as usual to access both the data and some functions to work with them:
library(hurricaneexposuredata)
library(hurricaneexposure)
The hurricaneexposure
package has a series of functions that let you explore different
exposures during storms. For example, to get the storms where either New York County, NY,
or Suffolk County, MA, (which includes Boston) were exposed to tropical storm-level winds
(17.5 m/s or higher), you can run:14
knitr::include_graphics("images/tab_completion_example.png")
county_wind(counties = c("36061", "25025"),
start_year = 1988, end_year = 2015,
wind_limit = 17.5)
## storm_id fips vmax_sust vmax_gust sust_dur gust_dur
## 1 Bob-1991 25025 26.46639 39.43492 210 570
## 2 Bob-1991 36061 18.19559 27.11142 0 480
## 3 Bertha-1996 25025 29.64453 44.17035 240 525
## 4 Bertha-1996 36061 28.95496 43.14289 180 540
## 5 Floyd-1999 25025 24.46946 36.45949 345 750
## 6 Floyd-1999 36061 20.50178 30.54765 60 315
## 7 Hanna-2008 25025 18.36505 27.36392 0 150
## 8 Hanna-2008 36061 19.25390 28.68832 0 195
## 9 Irene-2011 36061 25.68553 38.27144 165 510
## 10 Sandy-2012 36061 21.99213 32.76827 225 795
## closest_time_utc storm_dist local_time closest_date
## 1 1991-08-19 20:00 27.042565 1991-08-19 16:00 1991-08-19
## 2 1991-08-19 15:00 161.571830 1991-08-19 11:00 1991-08-19
## 3 1996-07-14 01:15 38.177990 1996-07-13 21:15 1996-07-13
## 4 1996-07-13 19:45 16.966013 1996-07-13 15:45 1996-07-13
## 5 1999-09-17 07:45 51.254726 1999-09-17 03:45 1999-09-17
## 6 1999-09-17 00:15 45.408483 1999-09-16 20:15 1999-09-16
## 7 2008-09-07 07:15 6.202866 2008-09-07 03:15 2008-09-07
## 8 2008-09-07 01:45 29.916672 2008-09-06 21:45 2008-09-06
## 9 2011-08-28 13:15 5.796733 2011-08-28 09:15 2011-08-28
## 10 2012-10-30 00:30 158.040788 2012-10-29 20:30 2012-10-29
If you look up events based on flood events, you can instead run the
county_events
function:
county_events(counties = c("36061", "25025"),
start_year = 1996, end_year = 2015,
event_type = "flood")
## fips storm_id closest_time_utc storm_dist local_time
## 1 25025 Dennis-1999 1999-09-08 08:00 390.047523 1999-09-08 04:00
## 2 36061 Floyd-1999 1999-09-17 00:15 45.408483 1999-09-16 20:15
## 3 36061 Allison-2001 2001-06-17 14:15 158.909890 2001-06-17 10:15
## 4 36061 Frances-2004 2004-09-09 13:30 379.343696 2004-09-09 09:30
## 5 36061 Ivan-2004 2004-09-18 17:45 311.346881 2004-09-18 13:45
## 6 36061 Jeanne-2004 2004-09-29 06:30 222.900157 2004-09-29 02:30
## 7 36061 Beryl-2006 2006-07-20 22:15 207.358443 2006-07-20 18:15
## 8 36061 Barry-2007 2007-06-04 15:45 148.251718 2007-06-04 11:45
## 9 36061 Irene-2011 2011-08-28 13:15 5.796733 2011-08-28 09:15
## 10 25025 Sandy-2012 2012-10-29 22:00 433.295980 2012-10-29 18:00
## 11 25025 Andrea-2013 2013-06-08 11:30 45.412565 2013-06-08 07:30
## 12 36061 Andrea-2013 2013-06-08 06:45 92.381282 2013-06-08 02:45
## closest_date
## 1 1999-09-08
## 2 1999-09-16
## 3 2001-06-17
## 4 2004-09-09
## 5 2004-09-18
## 6 2004-09-29
## 7 2006-07-20
## 8 2007-06-04
## 9 2011-08-28
## 10 2012-10-29
## 11 2013-06-08
## 12 2013-06-08
The hurricaneexposure
package also has functions for mapping the exposure
data for specific storms. For example, to see the rainfall fro Hurricane Ivan in
2004, you can run:
map_counties(storm = "Ivan-2004", metric = "rainfall")
From this map, you can see that the rain from this storm extended into New England, even after the storm looped back around to the east and south. This is why New York City had heavy rainfall (and flooding) from this event, but not tropical storm-level winds.
For more on the hurricaneexposure
package, see its vignette.
5.2 Open data APIs
A range of environmental datasets are available online, especially through national agencies. For example, NOAA provides various weather datasets, while USGS has data on water quality,
You can visit webpages hosted by these agencies where you can download the datasets you need. However, this process can become tedious if you need lots of datasets, as may be the case for large studies incorporating many cities. Further, downloading the datasets “by hand” is hard to make reproducible, unless you meticiously write down all the steps you took as you visited the website. This means that your process will be harder for you to repeat in the future or for others to replicate.
A growing collection of R packages are now available that allow you to download datasets available online directly from R. This means that you can write an R script for your data collection, making this step both better documented and more reproducible.
One great example is the tigris
package. This package lets you pull
spatial data into R directly from the US Census. To get spatial data for all the counties in
Florida, you can run:
library(tigris)
fl_counties <- counties(state = "FL",
class = "sf")
Now you can plot this data with ggplot
:
library(ggplot2)
ggplot() +
geom_sf(data = fl_counties,
aes(fill = ALAND)) +
theme_bw() +
scale_fill_viridis_c(name = "Land area", label = scales::scientific) +
theme(axis.text = element_blank(),
axis.ticks = element_blank())
5.3 Learn more
One of the best places to explore R packages for accessing open data for science is ROpenSci. Many of its packages facilitate access to databases of open data relevant to scientific research that have web services. You can browse through its packages on its Packages page. You may also want to check its affiliated Journal of Open-Source Software. Authors of these packages will also sometimes publish associated articles in The R Journal, so it’s worth browsing through that occasionally. Finally, Twitter is a great place ot keep an eye out for new packages, including those that can help you collect data. Follow the “#rstats” tag.
Bryan, Jennifer. 2018. “Excuse Me, Do You Have a Moment to Talk About Version Control?” The American Statistician 72 (1): 20–27.
Waller, Lance A. 2018. “Documenting and Evaluating Data Science Contributions in Academic Promotion in Departments of Statistics and Biostatistics.” The American Statistician 72 (1): 11–19.
Wickham, Hadley. 2015. R Packages: Organize, Test, Document, and Share Your Code. " O’Reilly Media, Inc.".
Wickham, Hadley, and Jennifer Bryan. 2018. Usethis: Automate Package and Project Setup. https://CRAN.R-project.org/package=usethis.
Wickham, Hadley, Jim Hester, and Winston Chang. 2019. Devtools: Tools to Make Developing R Packages Easier. https://github.com/r-lib/devtools.
For more on how and why we did this, see an article we wrote about the process for The R Journal.↩
If you don’t have the
drat
package, install it in the usual way withinstall.packages("drat")
.↩For any of these functions, you can find out what parameters to include, and in what format, but opening the helpfile for the function. For example, once you’ve loaded the
hurricaneexposure
package, you can open the helpfile for thecounty_wind
function by calling?county_wind
. Also helpful for navigating packages: take advantage of thepackage::function
notation and RStudio’s tab completion to look up the names of functions in a package. For example, typehurricaneexposure::
. A pop-up window should show up with all the functions in the package (press Tab if the pop-up doesn’t automatically open).↩


@import helper._ @(userForm: Form[WikiCladeForm])(implicit messages: Messages) @main("WikiClade") {
This tool scrapes Wikipedia to generate a cladogram (branching diagram used to illustrate evolutionary relationships) linking the input organisms. Verbosity affects how many intermediate clades are displayed.
}


QuincePrints provides a modern platform for:
Confidence knowing a language can build as we grow and ‘experience’ meaning, through illustrated stories. QuincePrints helps strengthen English and Chinese language learning with children’s books that have tangible, educational value. Read, listen, look, and gain confidence!
Find out how kids you love can explore thoughtful adventures, core values and cultural appreciation with QuincePrints bilingual Chinese/English childrens books.
| Series and titles | Age group | Defining characteristics |
|---|---|---|
| Sunshine Baby -Catwalk-Sunshine Baby | 0-5 | Large format picture books, dazzling illustrations, engage creative mind, warm, happy feelings. |
| Chinese New Years-Year of the Ox | 5+ | Celebrating the zodiac animals in Chinese history and folklore. Bold illustrations with modern educational interpretive text. |
| Dragon Chat & Friends-The Day DragonChat Lost Her Kite & Found New Friends | 5-10 | Picture book, understanding differences, confidence, friendship-building, storytelling through language use skills. |
| Eight Spirit Animals-Digging a Hole to China | 6-12 | Chapter book, stories, fantasy and appreciation of cultural legends, trust, friendship, reading skills. |
| Healthy Habit Heroes-The Healthy Habit Heroes | 8-15 | Picture pocketbook, chapters for engaging read, core values for youngsters, social understanding, mentally stimulating fantasy, models social/personal good behavior. |
Large format picture books and young teen chapter books will have both Chinese and English text. Accompanying online portals provide audio in both languages so readers can hear the words they see. Web links are provided for teaching resources: key words lists, themes and suggested reader engagement tips/ideas.

Just before Fan screams for her Mom & Dad, an owl flutters onto the boy’s shoulder, tilts its head and stares at her with curious eyes.
Fan stares back, as if the owl is trying to tell her something. ‘Kia ora, my name is Tane!’ the boy says. Tane convinces the curious Fan to slide through the hole back to his home in New Zealand.
Their exciting adventure includes a visit to the Marae, where Nana feeds everyone in a traditional Maori setting. Nana and Fan say goodbye with aroha (love).
Baby wakes up to the morning sun and follows it around the house and garden throughout the day.
The sun illuminates the wonders of the world, its comfort and warmth, as well as connectivity to environment. This first in the series counts in rhyming format from 1 to 10.
One two, I see you.
一啊二，太阳你在这儿
Three four, on the floor
三啊四，地板咯吱吱...
...
九啊十，一只肥母鸡
Sunshine, will you be mine?
阳光啊阳光，来我的臂膀？
If you are interested in learning more about QuincePrints, please contact us here<EMAIL_ADDRESS>Currently due to copyright regulations we cannot provide our stories to view online. They are in the process of being placed for distribution. If you are keen to be advised regarding future access please let us know.


Turkey's president, responding to EU sanctions, says he could release Islamic State prisoners and...
by EndPlayANKARA, Turkey - ANKARA, Turkey (AP) - Turkey's president, responding to EU sanctions, says he could release Islamic State prisoners and return them to Europe.


For more information check Reminders and Agenda (technical core) module
Don't forget to search Reminders and Agenda for similar modules.
Contact us by email or fill out request form


Electricity in France
Home
Daily consumption
(current)
Consumption and CO2 Calendar
Yearly energy mix
France's main sources of energy
This visualisation shows the evolution of energy production during year 2014
The data comes from
data.gouv.fr
, the French government open-data platform.
The data is recorded by RTE, the company in charge of the French power grid.
It is recorded every 15 minutes, but the yearly data are only available from 2012 to 2014.
Do you want to include Nuclear Energy ?
Yes
No


Initially the internet was thought to not be used by ordinary people, but rather scientist and engineers or “geeks”. This changed very quickly. The internet became a global network used by young. A computer scientist, Tim Benrers-Lee, invented the world wide web to give access to all. This led to the browser wars when the largest tech companies fought against each other to be the world’s most downloaded browser.
Bill Gates started Microsoft which first launched Windows 95 and Internet Explorer as the largest web browser of the time. He quickly became the world’s tech emperor. Netscape in the meantime was working on battling ways that they can battle their top competitor with Mosaic. When Netscape launched their Netscape Navigator browser, it began growing very quickly as an overall platform, reaching a million downloads in a short period of time. Bill Gates back at Microsoft then began his journey to find a way to beat or destroy all competitors against their internet browser. After Netscape, many other competitors began to arise. This initiated the browser wars.
Netscape grew very quickly and when Microsoft realized this, they proposed a meeting with Netscape and offered them one million dollars for their company and all its resources. Netscape declined their offer as their realized the potential of their software, assets, and people. They were the first company to decline an offer from the largest leaders in tech.
Microsoft believed their browser become irrelevant by Netscape’s technology and software. They attempted to attack Netscape as a way to defeat their largest competitor by releasing newer versions of their Windows browser and using “tech assassin” techniques to have large groups of people committed to only download Windows. This allowed their assets to grow significantly and catch up to Netscape. By 1997, the browser war ended when Microsoft defeated Netscape and became the leading browser, Internet Explorer, on the world wide web. After losing to Microsoft, Netscape quickly went under and was later acquired by AOL.
Following these events, Bill Gates became known as the high tech terrorist in Silicon Valley for his actions to keep his company at the top. Lawsuits were raised against Microsoft – the antitrust case of 1998. Bill Gates denied any accusations and was found guilty. Microsoft might have won the browser wars and became the leading browser for the following years, but the company lost its force after they were expose for how they got to where they were. This sparked a revolution and the start of companies such as google.


Change in habitat suitability of camphor tree in different periods in the future. RCP4.5: ( a) 2025 s, ( b) 2055 s, ( c) 2085 s; RCP8.5: ( d) 2025 s, ( e) 2055 s, ( f) 2085 s. The columnar graph shows the suitability changes in the area of different periods.


Yeah, and if you were the pope they’d be all, “Straighten your pope hat.” And “Put on your good vestments.” Noooooo! Perhaps, but perhaps your civilization is merely the sewer of an even greater society above you!
You lived before you met me?! Ow, my spirit! Humans dating robots is sick.  It’s ‘cause all the fine robot sisters are dating humans!
Oh, I don’t have time for this. I have to go and buy a single piece of fruit with a coupon and then return it, making people wait behind me while I complain. Meh. So, how ‘bout them Knicks? Also Zoidberg.
Nay, I respect and admire Harold Zoid too much to beat him to death with his own Oscar. I don’t ‘need’ to drink. I can quit anytime I want! Soothe us with sweet lies. Bender?!  You don’t know how to do any of those.
Say what? Throw her in the brig. Hey, you add a one and two zeros to that or we walk! You guys aren’t Santa! You’re not even robots.  Ow, my spirit! Who’s brave enough to fly into something we all keep calling a death sphere?
Hey, you add a one and two zeros to that or we walk! You won’t have time for sleeping, soldier, not with all the bed making you’ll be doing. It’s okay, Bender. I like cooking too. Hey, what kinda party is this? There’s no booze and only one hooker.
Minimalism
Ummm…to eBay? But I know you in the future. I cleaned your poop.  My fellow Earthicans, as I have explained in my book ‘Earth in the Balance’’, and the much more popular ‘‘Harry Potter and the Balance of Earth’, we need to defend our planet against pollution. Also dark wizards.
 Fry, you can’t just sit here in the dark listening to classical music. And remember, don’t do anything that affects anything, unless it turns out you were supposed to, in which case, for the love of God, don’t not do it!
You, a bobsleder!? That I’d like to see! I’m Santa Claus! There’s no part of that sentence I didn’t like! Noooooo! I can explain. It’s very valuable.
I’m Santa Claus! Is the Space Pope reptilian!? Who’s brave enough to fly into something we all keep calling a death sphere?
It doesn’t look so shiny to me. Kif might! You guys aren’t Santa! You’re not even robots.  Oh, but you can. But you may have to metaphorically make a deal with the devil. And by “devil”, I mean Robot Devil. And by “metaphorically”, I mean get your coat.
Check it out, y’all. Everyone who was invited is here. Anyone who laughs is a communist! You’re going to do his laundry? Michelle, I don’t regret this, but I both rue and lament it.
Bender, we’re trying our best. I daresay that Fry has discovered the smelliest object in the known universe! Oh, you’re a dollar naughtier than most. Hi, I’m a naughty nurse, and I really need someone to talk to. $9.95 a minute.
You, a bobsleder!? That I’d like to see! No! The kind with looting and maybe starting a few fires! Good news, everyone! There’s a report on TV with some very bad news! When I was first asked to make a film about my nephew, Hubert Farnsworth, I thought “Why should I?” Then later, Leela made the film. But if I did make it, you can bet there would have been more topless women on motorcycles. Roll film!
Eeeee! Now say “nuclear wessels”! Why did you bring us here? Yeah, and if you were the pope they’d be all, “Straighten your pope hat.” And “Put on your good vestments.”


When Jenkins resolves a user, the next step in the resolution process is to determine the LDAP groups that the user belongs to. This field controls the search filter that is used to determine group membership. If left blank, the default filter will be used:
(| (member={0}) (uniqueMember={0}) (memberUid={1}))
You are normally safe leaving this field unchanged, however for large LDAP servers where you are seeing messages
such as OperationNotSupportedException - Function Not Implemented
,
Administrative Limit Exceeded
or similar periodically when trying to login, then that would
indicate that you should change to a more optimum filter for your LDAP server, namely one that queries only
the required field, such as:
(member={0})
Note: in this field there are two available substitutions:
{0}
- the fully qualified DN of the user{1}
- the username portion of the user


| showQuestion {rstudioapi} | R Documentation |
Shows a dialog box asking a question.
showQuestion(title, message, ok = NULL, cancel = NULL)
title |
The title to display in the dialog box. |
message |
A character vector with the contents to display in the main dialog area. |
ok |
And optional character vector that overrides the caption for the OK button. |
cancel |
An optional character vector that overrides the caption for the Cancel button. |
The showQuestion
function was added in version 1.1.67 of
RStudio.


Home
Resolved Reimbursements
View All Employees
Logout
Employees at GCI
List of employees:
There are no employees
Pending Reimbursement Requests
Reimbursement details
There are no pending reimbursements for this employee
Close


Title #1
Text Content #1
Title #2
Text Content #2
Title #3
Text Content #3
Title #4
Text Content #4
Title #5
Text Content #5


We’re sorry, you don’t qualify for travel insurance with Wapp.
However you may be eligible for travel insurance with Staysure, why not visit their website for more information?
If you leave now, any information you've entered will be lost


var Board = require('../db/board');
var Board = require('../db/board');
boardUrl: String
board: Mongoose board model
io: Export of our Socket.io connection from server.js
var connect = function(boardUrl, board, io) {
Set the Socket.io namespace to the boardUrl.
var whiteboard = io.of(boardUrl);
whiteboard.on('connection', function(socket) {
Send the current state of the board to the client immediately on joining.
socket.emit('join', board);
socket.on('draw', function(canvas) {
socket.broadcast.emit('draw', canvas);
});
socket.on('clear', function(data) {
socket.broadcast.emit('clear', data);
});
});
NOTE: Instead of storing coordinates in Mongo, we can now store the most recent canvas In order to do so we will need to change the schema to something like the following: image: { data: Buffer, contentType: String} for more info see this gist: https://gist.github.com/aheckmann/2408370
};
module.exports = connect;


G.I. JANE (1997)
A movie review by Michael J. Legeros Copyright 1997 by Michael J. Legeros
(Hollywood) Directed by Ridley Scott Written by David Twohy and Danielle Alexandra Cast Demi Moore, Viggo Mortensen, Anne Bancroft, Jason Beghe, Lucinda Jenny, Scott Wilson, David Vadim, Morris Chestnut, Josh Hopkins MPAA Rating "R" (presumably for violence and profanity) Running Time 128 minutes Reviewed at Six Forks Station Cinemas, Raleigh, NC (09AUG97)
==
The new one from Ridley Scott-- enough of a reason right there to run out and see it-- is a feature-length retort to "let's see if she can take it like a man," where "she" is a naval intelligence officer (Demi Moore) hand-picked to be the first female allowed to undergo Navy SEAL training. (A program that 60% of the *male* recruits don't finish.) And, surprise, we learn that she can do it, and without any gender handicapping, no less. (She sleeps in the same barracks, wears the same shaved head, and must endure the same levels of physical abuse. Well, almost. None of the *guys* experiences a simulated attempted rape from Viggo Mortensen's Master Chief from Hell.) No, G.I. JANE isn't much of a message movie, nor is it a particularly effective character study. (Heh, *what* character?) But as a ball-breaking, black rain-soaked depiction of the most brutal basic training that you could possibly imagine, the movie is gangbusters. (My favorite sequences: a jog through the mess tent, where they're given about sixty seconds to eat, and a late-night essay-writing exercise.)
Alas, once Moore's character wins the respect of her teammates-- which happens about eighty minutes in-- the story doesn't have a clue where to go next. So, we take an excursion off base, for a confron- tation with an oily Texas senator (Anne Bancroft, drawlin' away). And then we wrap with a cliched training-exercise-turned-real that, while mildly engaging, has been done to death before and even by the director's brother Tony in TOP GUN. Neither sequence is particularly well-paced-- the character and plot developments feel rushed, but, you know, what's one more summer movie that tanks in the last half (or whole) hour? Now, for the nit picks: can military instructors actually physically abuse their recruits? Did Ridley Scott direct those combat sequences while under the influence? Can Demi do more than a handful of one-handers at a time? And, most importantly, has anybody transcribed that delicious exchange about a cigar and it's, ah, particularly aromatic aroma?
Grade: B+
-- Mike Legeros - Movie Hell http://www.nonvirtual.com/hell
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


--- layout: post title: magazine for a prada goth subculture date: '2009-05-19T19:18:49+01:00' tags: [] tumblr_url: http://backlog.robbevan.com/post/110084572/magazine-for-a-prada-goth-subculture ---
Magazine for a Prada-Goth Subculture


| Interface | Description |
|---|---|
| ExecUtils.BrokenPipeHandler |
User-specified IO exception handler for exceptions during I/O
redirection.
|
| ExecUtils.ProcessExitHandler |
User-specified handler invoked when associated native process exits.
|
| Input |
An abstraction of a plain input stream.
|
| RedirectibleInput |
Input source capable of redirecting
the data to an output stream.
|
| Class | Description |
|---|---|
| ClassPathAppender | |
| CommonsExecUtil | |
| CommonsExecUtil.ExecResult | |
| DelegateLauncher |
A utility that creates a
URLClassLoader using http based URL s ,
and loads the provided class, and invokes the loaded class's main() method. |
| ExecUtils |
Utility methods to interact with and manage native processes started from
Java.
|
| ExecUtils.CmdResult |
Represents the result of a native command.
|
| NullInputStream |
Input stream that is always at EOF.
|
| RedirectingInputStream |
Input stream that supports redirecting data directly to an output stream.
|


CO National Parks
Camping Planner
dashboard
Dashboard
bubble_chart
Campfire
location_ons
Live Weather
RV
Tent
Rec
__________
RV
Tent
Rec
__________
RV
Tent
Rec
__________
RV
Tent
Rec
🌲 Dashboard
National Park Locations
Camping Historical Activity
Local Weather Data
Colorado, US
2021
°F
Sunny
°F / °F
Night Sky at Each Park
Rocky Mountain National Park
Black Canyon of the Gunnison National Park
Great Sand Dunes National Park
Mesa Verde National Park


As far as I know PDO doesn’t allow to call directly the PostgreSQL’s strored procedures. That’s not a problem.
Imagine we have a stored procedure in the schema called ‘schemaName’ with the name ‘method1’.
CREATE OR REPLACE FUNCTION schemaName.method1(param1 numeric, param2 numeric)
RETURNS numeric AS
$BODY$
BEGIN
RETURN param1 + param2;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100;
The way of call it is something like this:
$conn = new PDO($dsn, $user, $password);
$conn->beginTransaction();
$stmt = $this->prepare("SELECT * FROM schemaName.method1(?, ?)");
$stmt->execute(1, 2);
$stmt->setFetchMode(PDO::FETCH_ASSOC);
$out = $stmt->fetchAll();
$conn->commit();
An idea for doing the same in a more clean way is:
$conn = new MyPDO($dsn, $user, $password);
$conn->beginTransaction();
$out = $conn->setSchema('schemaName')->method1(1, 2);
$conn->commit();
That’s only an approach. I haven’t think a lot about it but that’s OK as a first approach.
And now the class I’ve created extending PDO to obtain the above interface.
The trick is in __call function. Using __call I have dynamic functions in my MyPDO class and I will suppose every functions will be stored procedures.
class MyPDO extends PDO
{
private $_schema = null;
/**
* Set Schema
*
* @return MyPDO
*/
public function setSchema($_squemaName)
{
$this->_schema = $_squemaName;
return $this;
}
function __call($method, $arguments)
{
$_params = array();
if (count($arguments)>0) {
for ($i=0; $i<count($arguments); $i++) {
$_params[] = '?';
}
}
$stmt = $this->prepare("SELECT * FROM {$this->_schema}.{$method}(" .
implode(', ', $_params) . ")");
$stmt->execute($arguments);
$stmt->setFetchMode(PDO::FETCH_ASSOC);
return $stmt->fetchAll();
}
}


[1]
One should n't care for almost two years and time-consuming.
[2]
Owned 2 different computers internal hardrive to work WD requires use of HDD Nice design.


WITNESS LIST State, Federal & International Relations Committee March 27, 2001-8:00A HB 1974 On: Batiste, John Paul (Texas Commission on the Arts) Hernandez, Ricardo (Texas Commission on the Arts) Registering, but not testifying: On: Snell, Fred (Texas Commission on the Arts) HB 2040 For: Beasley, Tom (Bee County Redevelopment Authority) Berry, Jim (Bee Development Authority) Shields, Chris (Beeville Redevelopment Authority) HB 2908 On: Taylor, Pete (TX Strategic Military Planning Commission) Tokerud, Bob (TX Strategic Military Planning Commission) HB 3591 For: Meraz, Gloria (Texas Library Association) Williams, Josie (Texas Medical Association) On: Rudd, Peggy (Texas State Library & Archives Commission) Tessen, Sam (Telecommunications Infrastructure Fund) HCR 74 For: Schultz, Jack (West Tawakoni Chief of Police) Uitermarkt, Jerry (City of West Tawakoni) HCR 197 For: Daschofsky, Fred (Self) Base Realignment and Closure On: Christoferson, James (TDED-Office of Defense Affairs) Ehrie, Bill (TX Defense Aviation, and Aerospace Alliance) Registering, but not testifying: On: Taylor, Pete (TX Strategic Military Planning Commission) Tokerud, Bob (TX Strategic Military Planning Commission)


Do you want to know more? We’d love to hear from you!
Head office Location
Plot No. 14 & 15 , Padana Patiya, Jamnagar - 361280, Gujrat, IN
9974876869/9724623600
<EMAIL_ADDRESS>Contact Hours
Mon - Sat:
9.00 AM - 6.00 PM
Social Links
Name
Email
Mobile
Subject
Message
Submit


All Classes
-
All Classes Interface Summary Class Summary Enum Summary Exception Summary Class Description AddressManager Implements a concurrent multicast address managerAlreadyLoggedException Exception for login attempts with the user already loggedChatListener Thread for listening chat messagesClient Main client class with configuration parametersClientGUI Implements the turing client Graphical User InterfaceClientHandler A thread that implements the operations of a individual clientClientHandler.Status ClientNotificationManager Implements a client notification serviceClientNotificationManagerAPI Interface for a client notification serviceConnection Implements the connection and the communication with the serverDocument Represents a document inside the clientDocument Represents a document inside the serverDocumentManager Implements a concurrent document managerFields Message fieldsInetAddressComparator A comparator class for sorting addresses in the address managerInexistentDocumentException Exception for an inexistent document requestInexistentUserException Exception for a non registered user login attemptOperation Class that performs the client operationsPreExistentDocumentException Exception for an already existent document creationSection Represents a section inside the serverServer Implements the turing serverServerNotificationManager Implements a server notification serviceServerNotificationManagerAPI Interface for a server notification serviceUser Represents user dataUserManager Implements a concurrent user managerUserManagerAPI Interface for an user managerUserNotAllowedException Exception for a document request by an user not allowed to see/edit it


Runs a container and executes the bash. As it is interactive (-i) and allocates a pseudo tty (-t) it will actually start a bash inside a container.


LEGALLY BLONDE A film review by Joshua Tyler Copyright 2001 filmcritic.com
You'd have to be legally intoxicated not to realize that Legally Blonde is little more than Clueless goes to college. Yet, unlike most other teen-to-twenties translations, Legally Blonde manages to maintain a certain sense of charm, while casting off any sense of dignity Reese Witherspoon attempts to maintain.
Blonde, as my UA ticket stub so proudly dubbed it, stars Reese Witherspoon as Elle Woods, a blonde sorority babe with fashion as a major and cuteness as a minor. But when her boyfriend jumps ship to find a more appropriately intelligent brunette, she sends in a Harvard application and follows him to law school.
In spite of its 1001 Blonde Jokes-inspired name, Legally Blonde is out to prove wrong every dumb blonde crack in the book, sort of. Apparently you can be incredibly intelligent and still be a shallow, fashion-obsessed airhead. But most of all, you have to be pink. And I mean really pink. This film is pinker than the Pink Panther.  Pinker than even my wife's freaky fuzzy bathroom... but that's another story. Girly color choices aside; Witherspoon portrays the cutest lawyer this critic has ever seen.
But like most comedies you're likely to spot in the local megaplex, Legally Blonde frequently and tragically forgets to be funny. That's not to say there aren't enough jokes; far from it. Rather, most of the jokes tend to turn into "Awww, isn't she cute???" opportunities rather than out-loud, belly-laugh guffaws.
In all fairness, maybe Blonde wasn't really even trying to be funny. Perhaps some wise sage got it into his head that the blonde bimbos of the world have something important to teach us and figured it was high time they tell it, through their own unique brand of fuzzy pink moralism. Or maybe Blonde's writers just lack a legitimate sense of humor. I'll take the latter.
Legally Blonde is a lovely attempt to re-ignite the Valley Girl fervor among the now-twentysomething teens who went all gooey over Alicia Silverstone's high-class, high school airhead in Clueless. And while any who venture in to Elle's world are likely to emerge with a smile, one can't help but wonder if the revival of the Valley Girl trend didn't begin and end with Cher.

Visit filmcritic.com on the Web at http://www.filmcritic.com
========== X-RAMR-ID: 28657 X-RT-AuthorID: 4328 X-RT-TitleID: 1108857
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Welcome to my portfolio! My name is Ivan and I am an aspiring Full Stack Developer currently enrolled in UC Berkely Boot Camp. I am a creative individual who learns fast and loves a challange. So far in my life time I have worked in the Auto Mechanincs industry. In this season of my life I am looking to be a full time Developer. My skills are now Node.js, HTML5, CSS, Javascript, AJAX, jQuery, mySql, Sequelize and handlebars.


Based on hardware type you selected above, a pool port is automatically selected for you.
It's important to set this correctly, otherwise you will mine and might not get valid shares.
Informations
| Ticker | Updating... |
| Supply | 0 |
| Circulation | 0 |
| Market cap USD | 0 |
| Price | ฿0.00000000 |
| Price USD | $0.00000000 |
| Volume 24H BTC | ฿0.00000000 |
| Volume 24H USD | $0.00000000 |
0.00 H/s
| Mining time | 0 seconds |
| Difficulty | 0 |
| Good shares | 0 |
| Bad shares | 0 |
| Errors | 0 |
You are mining an estimated
0 BLOC / day
---> YOUR WALLET ADDRESS
Updating...


In this project, you'll use generative adversarial networks to generate new images of faces.
You'll be using two datasets in this project:
Since the celebA dataset is complex and you're doing GANs in a project for the first time, we want you to test your neural network on MNIST before CelebA. Running the GANs on MNIST will allow you to see how well your model trains sooner.
If you're using FloydHub, set data_dir
to "/input" and use the FloydHub data ID "R5KrjnANiKVhLWAkpXhNBe".
data_dir = './data'
# FloydHub - Use with data ID "R5KrjnANiKVhLWAkpXhNBe"
#data_dir = '/input'
"""
DON'T MODIFY ANYTHING IN THIS CELL
"""
import helper
helper.download_extract('mnist', data_dir)
helper.download_extract('celeba', data_dir)
show_n_images = 25
"""
DON'T MODIFY ANYTHING IN THIS CELL
"""
%matplotlib inline
import os
from glob import glob
from matplotlib import pyplot
mnist_images = helper.get_batch(glob(os.path.join(data_dir, 'mnist/*.jpg'))[:show_n_images], 28, 28, 'L')
pyplot.imshow(helper.images_square_grid(mnist_images, 'L'), cmap='gray')
The CelebFaces Attributes Dataset (CelebA) dataset contains over 200,000 celebrity images with annotations. Since you're going to be generating faces, you won't need the annotations. You can view the first number of examples by changing show_n_images
.
show_n_images = 25
"""
DON'T MODIFY ANYTHING IN THIS CELL
"""
mnist_images = helper.get_batch(glob(os.path.join(data_dir, 'img_align_celeba/*.jpg'))[:show_n_images], 28, 28, 'RGB')
pyplot.imshow(helper.images_square_grid(mnist_images, 'RGB'))
Since the project's main focus is on building the GANs, we'll preprocess the data for you. The values of the MNIST and CelebA dataset will be in the range of -0.5 to 0.5 of 28x28 dimensional images. The CelebA images will be cropped to remove parts of the image that don't include a face, then resized down to 28x28.

You'll build the components necessary to build a GANs by implementing the following functions below:
model_inputs
discriminator
generator
model_loss
model_opt
train
This will check to make sure you have the correct version of TensorFlow and access to a GPU
"""
DON'T MODIFY ANYTHING IN THIS CELL
"""
from distutils.version import LooseVersion
import warnings
import tensorflow as tf
# Check TensorFlow Version
assert LooseVersion(tf.__version__) >= LooseVersion('1.0'), 'Please use TensorFlow version 1.0 or newer. You are using {}'.format(tf.__version__)
print('TensorFlow Version: {}'.format(tf.__version__))
# Check for a GPU
if not tf.test.gpu_device_name():
warnings.warn('No GPU found. Please use a GPU to train your neural network.')
else:
print('Default GPU Device: {}'.format(tf.test.gpu_device_name()))
Implement the model_inputs
function to create TF Placeholders for the Neural Network. It should create the following placeholders:
image_width
, image_height
, and image_channels
.z_dim
.Return the placeholders in the following the tuple (tensor of real input images, tensor of z data)
import problem_unittests as tests
def model_inputs(image_width, image_height, image_channels, z_dim):
"""
Create the model inputs
:param image_width: The input image width
:param image_height: The input image height
:param image_channels: The number of image channels
:param z_dim: The dimension of Z
:return: Tuple of (tensor of real input images, tensor of z data, learning rate)
"""
return (tf.placeholder(tf.float32, [None, image_width, image_height, image_channels]),
tf.placeholder(tf.float32, [None, z_dim]),
tf.placeholder(tf.float32, None))
"""
DON'T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE
"""
tests.test_model_inputs(model_inputs)
Implement discriminator
to create a discriminator neural network that discriminates on images
. This function should be able to reuse the variables in the neural network. Use tf.variable_scope
with a scope name of "discriminator" to allow the variables to be reused. The function should return a tuple of (tensor output of the discriminator, tensor logits of the discriminator).
def discriminator(images, reuse=False):
"""
Create the discriminator network
:param images: Tensor of input image(s)
:param reuse: Boolean if the weights should be reused
:return: Tuple of (tensor output of the discriminator, tensor logits of the discriminator)
"""
with tf.variable_scope('discriminator', reuse=reuse):
model = tf.layers.conv2d(images, 64, 5, 2, 'same',
kernel_initializer=tf.contrib.layers.xavier_initializer())
model = tf.maximum(model * 0.2, model)
model = tf.layers.conv2d(model, 128, 5, 2, 'same')
model = tf.layers.batch_normalization(model, training=True)
model = tf.nn.dropout(model, 0.8)
model = tf.maximum(model * 0.2, model)
model = tf.layers.conv2d(model, 256, 5, 2, 'same')
model = tf.layers.batch_normalization(model, training=True)
model = tf.nn.dropout(model, 0.8)
model = tf.maximum(model * 0.2, model)
model = tf.reshape(model, (-1, 4096))
model = tf.layers.dense(model, 1)
return tf.sigmoid(model), model
"""
DON'T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE
"""
tests.test_discriminator(discriminator, tf)
Implement generator
to generate an image using z
. This function should be able to reuse the variables in the neural network. Use tf.variable_scope
with a scope name of "generator" to allow the variables to be reused. The function should return the generated 28 x 28 x out_channel_dim
images.
def generator(z, out_channel_dim, is_train=True):
"""
Create the generator network
:param z: Input z
:param out_channel_dim: The number of channels in the output image
:param is_train: Boolean if generator is being used for training
:return: The tensor output of the generator
"""
with tf.variable_scope('generator', reuse=not is_train):
conv = tf.layers.dense(z, 2048)
conv = tf.reshape(conv, (-1, 2, 2, 512))
conv = tf.maximum(conv * 0.2, conv)
conv = tf.layers.conv2d_transpose(conv, 256, 5, 2, 'valid')
conv = tf.layers.batch_normalization(conv, training=is_train)
conv = tf.maximum(conv * 0.2, conv)
conv = tf.layers.conv2d_transpose(conv, 128, 5, 2, 'same')
conv = tf.layers.batch_normalization(conv, training=is_train)
conv = tf.maximum(conv * 0.2, conv)
conv = tf.layers.conv2d_transpose(conv, out_channel_dim, 5, 2, 'same')
return tf.tanh(conv)
"""
DON'T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE
"""
tests.test_generator(generator, tf)
Implement model_loss
to build the GANs for training and calculate the loss. The function should return a tuple of (discriminator loss, generator loss). Use the following functions you implemented:
discriminator(images, reuse=False)
generator(z, out_channel_dim, is_train=True)
def model_loss(input_real, input_z, out_channel_dim):
"""
Get the loss for the discriminator and generator
:param input_real: Images from the real dataset
:param input_z: Z input
:param out_channel_dim: The number of channels in the output image
:return: A tuple of (discriminator loss, generator loss)
"""
gen = generator(input_z, out_channel_dim, True)
disc, disc_logits = discriminator(input_real, False)
disc_train, disc_train_logits = discriminator(gen, True)
disc_loss = tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(labels=tf.ones_like(disc), logits=disc_logits))
disc_train_loss = tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(labels=tf.zeros_like(disc_train), logits=disc_train_logits))
gen_loss = tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(logits=disc_train_logits, labels=tf.ones_like(disc_train)))
return disc_loss + disc_train_loss, gen_loss
"""
DON'T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE
"""
tests.test_model_loss(model_loss)
Implement model_opt
to create the optimization operations for the GANs. Use tf.trainable_variables
to get all the trainable variables. Filter the variables with names that are in the discriminator and generator scope names. The function should return a tuple of (discriminator training operation, generator training operation).
def model_opt(d_loss, g_loss, learning_rate, beta1):
"""
Get optimization operations
:param d_loss: Discriminator loss Tensor
:param g_loss: Generator loss Tensor
:param learning_rate: Learning Rate Placeholder
:param beta1: The exponential decay rate for the 1st moment in the optimizer
:return: A tuple of (discriminator training operation, generator training operation)
"""
with tf.control_dependencies(tf.get_collection(tf.GraphKeys.UPDATE_OPS)):
trainable_variables = tf.trainable_variables()
gen_vars = [variable for variable in trainable_variables if variable.name.startswith('generator')]
disc_vars = [variable for variable in trainable_variables if variable.name.startswith('discriminator')]
return (tf.train.AdamOptimizer(learning_rate, beta1).minimize(g_loss, var_list=gen_vars),
tf.train.AdamOptimizer(learning_rate, beta1).minimize(d_loss, var_list=disc_vars))
"""
DON'T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE
"""
tests.test_model_opt(model_opt, tf)
"""
DON'T MODIFY ANYTHING IN THIS CELL
"""
import numpy as np
def show_generator_output(sess, n_images, input_z, out_channel_dim, image_mode):
"""
Show example output for the generator
:param sess: TensorFlow session
:param n_images: Number of Images to display
:param input_z: Input Z Tensor
:param out_channel_dim: The number of channels in the output image
:param image_mode: The mode to use for images ("RGB" or "L")
"""
cmap = None if image_mode == 'RGB' else 'gray'
z_dim = input_z.get_shape().as_list()[-1]
example_z = np.random.uniform(-1, 1, size=[n_images, z_dim])
samples = sess.run(
generator(input_z, out_channel_dim, False),
feed_dict={input_z: example_z})
images_grid = helper.images_square_grid(samples, image_mode)
pyplot.imshow(images_grid, cmap=cmap)
pyplot.show()
Implement train
to build and train the GANs. Use the following functions you implemented:
model_inputs(image_width, image_height, image_channels, z_dim)
model_loss(input_real, input_z, out_channel_dim)
model_opt(d_loss, g_loss, learning_rate, beta1)
Use the show_generator_output
to show generator
output while you train. Running show_generator_output
for every batch will drastically increase training time and increase the size of the notebook. It's recommended to print the generator
output every 100 batches.
def train(epoch_count, batch_size, z_dim, learning_rate, beta1, get_batches, data_shape, data_image_mode):
"""
Train the GAN
:param epoch_count: Number of epochs
:param batch_size: Batch Size
:param z_dim: Z dimension
:param learning_rate: Learning Rate
:param beta1: The exponential decay rate for the 1st moment in the optimizer
:param get_batches: Function to get batches
:param data_shape: Shape of the data
:param data_image_mode: The image mode to use for images ("RGB" or "L")
"""
input_real, input_z, lr = model_inputs(data_shape[1], data_shape[2], data_shape[3], z_dim)
disc_loss, gen_loss = model_loss(input_real, input_z, data_shape[3])
disc_opt, gen_opt = model_opt(disc_loss, gen_loss, lr, beta1)
step = 0
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
for epoch_i in range(epoch_count):
for batch_images in get_batches(batch_size):
batch_z = np.random.uniform(-1, 1, size=(batch_size, z_dim))
_ = sess.run(disc_opt, feed_dict={input_real: batch_images * 2, input_z: batch_z, lr: learning_rate})
_ = sess.run(gen_opt, feed_dict={input_real: batch_images * 2, input_z: batch_z, lr: learning_rate})
if step % 100 == 0:
gen_train_loss = gen_loss.eval({input_z: batch_z})
disc_train_loss = disc_loss.eval({input_real: batch_images * 2, input_z: batch_z})
print("Epoch {} of {}".format(epoch_i + 1, epochs),
"Gen loss: {:.2f}".format(gen_train_loss),
"Disc loss: {:.2f}".format(disc_train_loss))
show_generator_output(sess, show_n_images, input_z, data_shape[3], data_image_mode)
step += 1
Test your GANs architecture on MNIST. After 2 epochs, the GANs should be able to generate images that look like handwritten digits. Make sure the loss of the generator is lower than the loss of the discriminator or close to 0.
batch_size = 32
z_dim = 128
learning_rate = 0.001
beta1 = 0.4
"""
DON'T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE
"""
epochs = 2
mnist_dataset = helper.Dataset('mnist', glob(os.path.join(data_dir, 'mnist/*.jpg')))
with tf.Graph().as_default():
train(epochs, batch_size, z_dim, learning_rate, beta1, mnist_dataset.get_batches,
mnist_dataset.shape, mnist_dataset.image_mode)
Run your GANs on CelebA. It will take around 20 minutes on the average GPU to run one epoch. You can run the whole epoch or stop when it starts to generate realistic faces.
batch_size = 32
z_dim = 128
learning_rate = 0.001
beta1 = 0.4
"""
DON'T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE
"""
epochs = 1
celeba_dataset = helper.Dataset('celeba', glob(os.path.join(data_dir, 'img_align_celeba/*.jpg')))
with tf.Graph().as_default():
train(epochs, batch_size, z_dim, learning_rate, beta1, celeba_dataset.get_batches,
celeba_dataset.shape, celeba_dataset.image_mode)
When submitting this project, make sure to run all the cells before saving the notebook. Save the notebook file as "dlnd_face_generation.ipynb" and save it as a HTML file under "File" -> "Download as". Include the "helper.py" and "problem_unittests.py" files in your submission.


Moscow Watchdog
| Moscow Watchdog Picture | |
| Breed Information | |
|---|---|
| Popularity | # |
| Name | Moscow Watchdog |
| Other names | Moskovskaya Storodzevay Sobaka |
| Origin | Russia |
| Breed Group | |
| Size | Large |
| Type | Purebred |
| Life span | 9-11 years |
| Temperament | CompanionableFriendly |
| Height | 25-27 inches (64-69 cm) |
| Weight | 100-150 pounds (45-68 kg) |
| Colors | WhiteRed |
| Litter Size | 5-10 puppies |
| Puppy Price | Average $600 - $800 USD |
| Breed Characteristics | |
| Adaptability | 3 stars |
| Apartment Friendly | 1 starsThis breed needs space and room to move. It is not recommended for apartment life. |
| Barking Tendencies | 3 starsOccassional |
| Cat Friendly | 3 stars |
| Child Friendly | 4 starsGood with Kids: This is a suitable breed for kids and is known to be playful, energetic, and affectionate around them. |
| Dog Friendly | 2 stars |
| Exercise Needs | 3 starsThe Moscow Watchdog needs a lot of regular exercise. It needs to be taken on a daily, long, brisk walk or jog. While out on the walk the dog must be made to heel beside or behind the person holding the lead, as in a dog's mind the leader leads the way, and that leader needs to be the human. In addition, it will benefit from a large, safe area where it can run free. |
| Grooming | 3 starsModerate Maintenance: Regular grooming is required to keep its fur in good shape. |
| Health Issues | 3 starsHypoallergenic: Unknown |
| Intelligence | 2 starsRanking: (#). (See All Rankings) |
| Playfulness | 3 stars |
| Shedding Level | 4 starsConstant and Seasonal Shedding: Expect this dog to shed frequently. Be prepared to vacuum often. Brushing will reduce shedding as well as make the coat softer and cleaner. |
| Stranger Friendly | 3 stars |
| Trainability | 3 stars |
| Watchdog Ability | 3 stars |
| Moscow Watchdog Puppy Picture | ||
| Puppy Names | ||
|---|---|---|
| Rank | Male | Female |
| 01 | Charlie | Bella |
| 02 | Buddy | Piper |
| 03 | Bear | Lucy |
| 04 | Gizmo | Molly |
| 05 | Lucky | Maggie |
| 06 | Riley | Penny |
| 07 | Henry | Coco |
| 08 | Oliver | Zoey |
| 09 | Cooper | Gracie |
| 10 | Sammy | Abbie |
| See All Names › |
| Overview |
|---|
|
Related to mountain dogs, the Moscow Watchdog, one of the larger dog breeds, stands 25–27 inches (64–69 cm) tall and weighs 100–150 pounds (45–68 kg). they are a muscular dog that has a bulky head and powerful legs. Their coat is thick in a moderate length with the color white and red. Their puffy tail has that length that it could touch the floor. They are an average shedder and with a well arched chest, they generally give an impression of firmness and confidence. Moscow Watchdog is fine in temperament, but it requires training and an owner committed to achieving leader status. In nature, dogs have pack order. Therefore, when humans live with dogs, it is a good idea for humans to establish themselves as a leader, a higher order than the dogs, so they can make directions and set rules. In this relationship Moscow Watchdog is known to be a gentle giant, assertive and protective to his family when in danger. |
| History |
| This breed was created by Moscow dog fanciers who wanted a large, strong watchdog that would be more receptive to taking and following orders. After World War II, breeders began with the Caucasian Ovtcharka, which gave it great watch and assertive traits such as wariness and ferocity, and the Saint Bernard to increase the size and strength and provide a more gentle temperament. As a result, the Moscow Watchdog possesses the mental and physical attributes desired. They are quite popular in Eastern Europe and have recently been making their way to the United States. |


2019-05 - Todo.001 - first application on my personal project to creating Todo applications in various technologies and
techniques (whether good or bad).
2019-05-27 - Todo 001
Minimum Requirements: Create - View - Complete
How I most likely would make a one day todo application.


Data Structures | |
| struct | usb_request |
| A USB request. More... | |
Enumerations | |
| enum | usb_request_flag { USB_REQ_SHORT_PKT } |
Flag bits for indicating that a request needs special treatment. More... | |
Functions | |
| void | usb_req_init (struct usb_request *req) |
| Initialize a USB request. | |
| static void | usb_req_add_buffer (struct usb_request *req, struct buffer *buf) |
| Add a buffer to a USB request. | |
| struct usb_request * | usb_req_alloc (void) |
| Allocate and initialize a USB request structure. | |
| void | usb_req_free (struct usb_request *req) |
| Free a USB request structure. | |
| void | usb_init (void) |
| Initialize the USB core subsystem. | |
| static struct buffer * | usb_req_get_first_buffer (struct usb_request *req) |
| Return the first buffer associated with req. |
A USB request contains a list of buffers, each representing a contiguous region of memory used for holding data to be sent or received in a USB transfer. Each request may have a callback associated with it, which is called when all the buffers have been transferred or cancelled. The submitter may use usb_request::context to hold arbitrary data associated with the request.
Before a USB request can be (re)used, it must be initialized by calling usb_req_init(). Requests freshly allocated by usb_req_alloc() have already been initialized, so there's no need to call usb_req_init() afterwards.
| enum usb_request_flag |
Flag bits for indicating that a request needs special treatment.
| void usb_init | ( | void | ) |
Initialize the USB core subsystem.
This function will initialize the USB request pool.
Definition at line 99 of file request.c.
References cpu_sram_pool, and mem_pool_init_physmem().
Referenced by main().
| static void usb_req_add_buffer | ( | struct usb_request * | req, | |
| struct buffer * | buf | |||
| ) | [inline, static] |
Add a buffer to a USB request.
This will add the buffer buf to the end of the buffer list associated with the USB request req.
| req | The USB request | |
| buf | The buffer to be associated with req |
Definition at line 124 of file request.h.
References usb_request::buf_list, buffer::node, and slist_insert_tail().
| struct usb_request* usb_req_alloc | ( | void | ) | [read] |
Allocate and initialize a USB request structure.
Definition at line 73 of file request.c.
References mem_pool_alloc(), and usb_req_init().
Referenced by msc_submit_write_data_req().
| void usb_req_free | ( | struct usb_request * | req | ) |
Free a USB request structure.
| req | The request to be released back to the pool. |
Definition at line 89 of file request.c.
References mem_pool_free().
Referenced by msc_submit_write_data_req().
| static struct buffer* usb_req_get_first_buffer | ( | struct usb_request * | req | ) | [static, read] |
Return the first buffer associated with req.
Definition at line 142 of file request.h.
References usb_request::buf_list, buffer::node, and slist_peek_head.
| void usb_req_init | ( | struct usb_request * | req | ) |
Initialize a USB request.
This initializes a USB request and makes sure that it doesn't have any special flags set, and that it doesn't have any other buffers associated with it.
| req | The USB request to be initialized. |
Definition at line 60 of file request.c.
References usb_request::buf_list, usb_request::bytes_xfered, usb_request::flags, and slist_init().
Referenced by usb_req_alloc().


As a Designer, I believe that it is designers' role to mix rational with aethetics. I aim to progress constantly to reveal the meaning and beauty in life.
TIAN YUAN
EDUCATION
The Hong Kong Polytechinic University · 2017-2018
Interaction Design · Master
Tongji University · 2012-2016
Industrial Design · Bachelor of Engineering
WORK
Synyi · A medical artificial intelligence start-up company
Designer
Cooperate with product managers, designers, medical advisors, front-end engineers. In charge of all interaction&visual design of “search ”
FaceUI · Design consultancy
interaction designer
SKILL
Business Model / Philosophy / Psychology
Novice · Why we create it…
User Research / Interaction Design / Visual Communication
Intermediate · How we make it better…
Programming
Novice · How we make it happen…
TOOL BOX
Sketch/Axure/Adobe Creative Suite/HTML/CS/JS/JQuery/Pens


(Yes, it's more work but I still typed it out for you. ❤)
-Xmx4G -Xms256m -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+UseNUMA -XX:+CMSParallelRemarkEnabled -XX:MaxTenuringThreshold=15 -XX:MaxGCPauseMillis=30 -XX:GCPauseIntervalMillis=150 -XX:+UseAdaptiveGCBoundary -XX:-UseGCOverheadLimit -XX:+UseBiasedLocking -XX:SurvivorRatio=8 -XX:TargetSurvivorRatio=90 -XX:MaxTenuringThreshold=15 -Dfml.ignorePatchDiscrepancies=true -Dfml.ignoreInvalidMinecraftCertificates=true -XX:+UseFastAccessorMethods -XX:+UseCompressedOops -XX:+OptimizeStringConcat -XX:+AggressiveOpts -XX:ReservedCodeCacheSize=2048m -XX:+UseCodeCacheFlushing -XX:SoftRefLRUPolicyMSPerMB=10000 -XX:ParallelGCThreads=10 -XX:PermSize=512m -Dfml.ignorePatchDiscrepancies=true -Dfml.ignoreInvalidMinecraftCertificates=true -Duser.language=en -Duser.country=US
A server to play Minecraft together in these quarantined times. :)
Ya.
I'm your friend. :) Join us on Discord.
Ya.
Na.
Na.
Ya.
Get a job.
He told me himself.
Punch trees. Make stuff.
If you're new to games period:
WSAD to move, mouse to look around. Left-click to interact.
If you're new to Minecraft:
E to open inventory. Hold left click to punch some trees. Put the logs in your crafting grid in your inventory to make planks, and put four of them together in a square to make your first Crafting Table! You're off to the races! Make a wood axe and pickaxe, and good luck!
Minecraft is a game where the discovery and wonder is part of the game. :) If you're really struggling, ask in Discord!
Google is your friend. :)
Vanilla (unmodded) Minecraft often leaves a lot to be desired and gets stale quickly.
However, mod packs are often behind the latest versions and don't allow you to experience the latest features.
Valhelsia combines both worlds: It's compatible with the current latest version of Minecraft (1.15.2), but also is a popular, well supported mod pack with lots of nifty features. If you prefer to play Vanilla, you're free to ignore all the mod features and just punch some trees. :)
For the rest of you, Valhelsia seems like it has tons of neat stuff to discover! It's my first time playing it too so I'll be discovering with you all. :)


JPC runs many different dance groups throughout the year from Cheerleading to Hip hop. Most of these groups dont require previous experiance and stundents are encouraged to come along to the practise times and see if it is something that they'd be interested in joining.


A JavaScript WAV audio player with parametric EQ for Firefox 3.6.
By Ben Firshman @bfirsh
Loading...
As a side effect of adding sound to JSNES, I wrote a neat little Flash interface for playing dynamically generated sound from JavaScript. I hacked together this quick demo to demonstrate what it is capable of.
Only 16 bit 44.1 KHz stereo WAV files are supported at the moment.
The interface just reads a buffer from JavaScript and writes it to the sound card. All the EQ processing and file loading (thanks to Firefox 3.6's asynchronous file API) is done in JavaScript.
The source is available on Github. I hope to release the Flash interface as a reusable library soon.


climate vulnerability change data adaptive Climate Vietnam capacity indicators used Available: [Internet]. natural Uganda Table case respective crop study national Nicaragua agricultural exposure hazards high suitability countries level order CRVA Global current vulnerable Change Change. Food Research administrative areas available crops impacts index sub based datasets future resolution {border-style Vulnerability global studies climatic number px;} using #ffffff;} Agriculture capture country food Agricultural agriculture change. model production scale sensitivity assessments government policy spatial area assessment identify methodology Fig [cited coffee extent low maize projected whilst Data Environmental Institute Vietnam. adaptation approach health impact overall Adaptive International Maize National United Vietnam, analysis capacity, capacity. change, rice rural use variables vulnerability. Nicaragua, additional average drought final hazard selected shapefile specific total tropical values Central Office Security Soil University World affect communities cover decision important information land livelihoods map multiple potential presence previous province scenario spatially Adaptation Climatic Environment GIS General Risk Statistics changes combination combined component components cropping erosion example, experts flooding identified input key note px; regions sector security support systems time unit {font-family Assessment CGIAR Click GDP Index LINK Läderach Mekong Natural Sciences adopted arc calculated conditions determine development different displayed districts expert file. font-size framework likely limitations mean provide recent regard relevant results risk risks sea sensitivity, soil statistics value (region (~km) ./s--- Capacity Change, Earth Group Harvested Hazards Intergovernmental Jan Land New Organization Panel Production Program RCP Science Sensitivity Social Uganda, Using applied calculate cash complex contribution county crops, develop developed developing double; emission events exposure, farmers flooding, focus greater importance including indicator instance, levels local loss main medium models need organizational particularly precipitation present process quantify regional resources review sources temperature understand validation year ./j.gloenvcha... Africa Analysis Arabica Assessing Bouroncle Chen Development Exposure Fund Jarvis Loss Model Nations Nicaragua. Parker Rice Tropical Working affected aggregated agriculture. areas, attributed border-color border-width care central collab: collection derived district ecological environmental experience finally fine following function harvested hazards, include indicators. integrated literature maps modelling normalized notably particular period planning population prioritise project provides respond rise single solid; study. systems. understanding vulnerability, {font-style {font-weight (CCAFS), (DOCX) (exposure) Adger Average Bank Bureau Cambridge Cambridge, Centre Climatology Coffee Crop District Ecocrop Finally, Framework GCM GCMs Hinkel However, Methodology Peduzzi Planning Province Report Robusta Science. Strategies Systems Table). Validation Value Vulnerability. Writing access analysed analysis. approach. assess attempts bold care, change: compared complexity context country. courier; created crop. cyclones data, data. dataset decline deemed delta direct distribution documented does driving drought, education em; enables estimated expected finest flood focused funding geographic geographical highest human implemented inform instead lack limited locations lower maize, makers making meteorological meters necessary open output possible proposed pt;} records reduce represent robust secondary smallholder source stakeholders step stunting term thank understood undertaken underweight, utilised wasting workshop years


External Links
Frequently Asked Questions
Join Our Fan Club!
Home
Frequently Asked Questions
Question
Answer
Is skateboarding "sick"?
Yes. No further questions.
But I--
--What did I just say?


Hooks
Supported Hooks
Crypto Hooks:
generateKeyPair[Single]: function()
- Return: an object with two attributes: public_key and secret_key. Both keys must be in a format understandable by dumpKey, encryptSign, and decryptSign hooks.
dumpKey[Single]: function(public_key)
public_key
: the public key (as generated by generateKeyPair) which must be dumped to string.- Return: a string representing the public key.
parseKey[Single]: function(public_key_string)
public_key_string
: string representation of the public key to be parsed (as generated by dumpKey).- Return: parsed public key in a format understandable by dumpKey, encryptSign, and decryptSign.
encryptSign[Single]: function(message, encryption_public_key, signing_private_key, operation_type)
message
: the message to encrypt (message type depends on operation type)encryption_public_key
: public key to encrypt with (corresponding to the receiving party)signing_private_key
: secret key to sign with (corresponding to this party)operation_type
: the operation for which this encryption is performed, one of the following: 'share', 'open', 'triplet', 'number', and 'custom' if type is either share or open, then message is a number (or bigNumber if using bigNumber extension), otherwise message is a string.- Return: the signed cipher with any additional properties desired to be sent with it (tags, meta-info, etc.) as a JavaScript object
decryptSign[Single]: function(cipher_text, decryption_secret_key, signing_public_key, operation_type)
cipher_text
: the cipher_text to decrypt, the format and type matches that returned by encryptSigndecryption_secret_key
: secret key to decrypt with (corresponding to this party)signing_public_key
: public key to verify signature with (corresponding to sending party)operation_type
: the operation for which this encryption is performed, one of the following: 'share', 'open', 'triplet', 'number', and 'custom'- Throw: if signature did not check out correctly
- Return: the decrypted message (format and type must match that of the message passed to the corresponding
encryptSign
) if type is either share or open, then return type must be a number (or bigNumber if using bigNumber extension), otherwise must be a string.
Share Hooks:
beforeShare[Array]: function(instance, secret, threshold, receivers_list, senders_list, Zp)
- Initially, parameters are as passed to
jiff_instance.share
in the client code:instance
: the JIFF instancesecret
: the secret to sharethreshold
: the threshold for sharingreceivers_list
: array of ids of receiving partiessenders_list
: array of ids of sending parties (parties that have secrets)Zp
: the modulos
- Return: must return the (possibly modified) secret to share (to be used as the secret for subsequent hooks in the array).
- Initially, parameters are as passed to
computeShares[Single]: function(instance, secret, parties_list, threshold, Zp)
instance
: the JIFF instancesecret
: the secret to shareparties_list
: array of ids of parties for which to create shares of the secretthreshold
: the threshold for sharingZp
: the modulus- Return: must return a map from
party_id
to its corresponding share value (for everyparty_id
inparties_list
).
- Return: must return a map from
afterComputeShare[Array]: function(instance, shares, threshold, receivers_list, senders_list, Zp)
instance
: the JIFF instanceshares
: a map from party_id to the corresponding share valuethreshold
: the threshold for sharingreceivers_list
: array of ids of receiving partiessenders_list
: array of ids of sending parties (parties that have secrets)Zp
: the modulus- Return: must return a map from
party_id
to its corresponding share value (for everyparty_id
inreceivers_list
).
- Return: must return a map from
receiveShare[Array]: function(instance, sender_id, share)
instance
: the JIFF instancesender_id
: party_id of the sendershare
: the received share (after decryption)- Return: the share, possibly modified (this is used as share for the subsequent hooks in the array).
Open Hooks:
beforeOpen[Array]: function(instance, share, parties)
instance
: the JIFF instanceshare
: the share to open {type: secret_share}parties
: the parties that will receive the open- Return: the share to open, possibly modified (this is used as share for the subsequent hooks in the array).
receiveOpen[Array]: function(instance, sender_id, share, Zp)
instance
: the JIFF instancesender_id
: party_id of the sendershare
: the received share (after decryption)Zp
: the modulus- Return: the share, possibly modified (this is used as share for the subsequent hooks in the array).
reconstructShare[Single]: function(instance, shares)
instance
: the JIFF instanceshares
: a map from party_id to its corresponding object:{"value":share, "sender_id":sender_id, "Zp":Zp }
- Return: the reconstructed secret.
afterReconstructShare[Array]: function(instance, value)
instance
: the JIFF instancevalue
: the reconstructed value as returned by reconstructShare- Return: the reconstructed secret, possibly modified (this is used as value for the subsequent hooks in the array).
Miscellaneous Hooks:
receiveTriplet[Array]: function(instance, triplet)
instance
: the JIFF instancetriplet
: the received triplet after decryption (a map from a, b, c to the corresponding shares such that a b = c*`)- Return: the triplet, possibly modified (this is used as triplet for the subsequent hooks in the array).
receiveNumbers[Array]: function(instance, numbers)
instance
: the JIFF instancenumbers
: an array with format: [ {"number": {value}, "number_id":} ] that contains number values (i.e. shares of numbers) and their ids (after decryption). - Return: an array with th same format as the numbers parameter: the values and ids inside it may be possibly modified (this is used as the numbers parameter for the subsequent hooks in the hook array).
createSecretShare[Array]: function(instance, secret_share)
instance
: the JIFF instancesecret_share
: the secret_share object as created by JIFF- Return: the
secret_share
object to be used by JIFF, possibly modified (this is used for the subsequent hooks in the array).
- Return: the
Example
Hooks can be passed to an instance at creation time via the options object.
Single Hooks expect the value to be a function, while Array Hooks expect the value to be an array (even when only a single hooks is used).
var options = {};
options.hooks = {
/* Example hooks. */
'beforeShare': [
function(instance, secret, threshold, receivers_list, senders_list, Zp) {
/* Some code. */
return modified_secret;
}
],
'computeShares':
function(secret, party_count, parties_list, threshold, Zp) {
/* Some code. */
return shares_map;
}
};
var instance = make_jiff('hostname', 'computation_id', options);
Flows Supported By Hooks
Hooks allow to customize the following flows in JIFF without having to explicity modify JIFF's source code.
Custom crypto libraries
Allows using a different crypto library (e.g. for browser compatibility purposes), or disabling/changing the crypto primitives all together. Note that the same/compatible implementation of these hooks must be passed to jiff-server, and any participating computation instances created on the server side.
- hook:
generateKeyPair
called on initialization. - hook:
dumpKey
called to marshal the public key to a string that can be transmitted to other parties. - hook:
parseKey
called when a marshaled public key is received from some party to parse it. - hook:
encryptSign
called to sign and encrypt messages sent by this party for various operations, including share, open, and custom messages. - hook:
decryptSign
called to decrypt and verify messages received by this party.
Share flow
Determines how shares are generated and sent to parties:
jiff_instance.share
- hook:
beforeShare
- hook:
computeShare
- hook:
afterComputeShare
- hook:
encryptSign
(operation_type
='share'
) - send shares to parties
- party receives share
- hook:
decryptSign
(operation_type
='share'
) - hook:
receiveShare
- resolve value into corresponding
secret_share
object
Note that:
- the party may be receiving a share without sharing anything, in which case only steps 1 and 7-10 are executed;
- the party may be sharing a value without receiving shares of anything, in which case only steps 1-6 are executed.
Open flow
Determine show parties can open (reveal) a share and get the result:
jiff_instance.open/share.open
- hook:
beforeOpen
- share is refreshed and refreshed value is used going forward
- hook:
encryptSign
(operation_type
='open'
) - send share to parties
- party receives share to open
- hook:
decryptSign
(operation_type
='open'
) - hook:
receiveOpen
- hook (once enough shares are received in step 8 above):
reconstructShare
- hook:
afterReconstructShare
- resolve reconstructed value into open promise/callback
Alternatively, a party may receive the result for a share that it does not own, in which case the flow becomes:
jiff_instance.receive_open
- party receives share to open (step 6 from above sequence)
- steps 7-11 from above sequence
A party may also hold a share of the result but not receive the result, in which case only steps 1-5 of the original flow are executed.
Triplet request
jiff_instance.triplet
(e.g. when a multiplication is performed)- hook:
encryptSign
(operation_type
='triplet'
) - request is sent to server
- server replies
- hook:
decryptSign
(operation_type
='triplet'
) - hook:
receiveTriplet
- resolve triplet into corresponding
secret_share
objects
Number request
jiff_instance.server_generate_and_share
(e.g. when a constant division or share refresh is performed)- hook:
encryptSign
(operation_type
='number'
) - request is sent to server
- server replies
- hook:
decryptSign
(operation_type
='number'
) - hook:
receiveNumbers
- resolve triplet into corresponding
secret_share
objects
Creation of secret_share objects
This flow is particularly useful when developing extensions for JIFF. This allows the user to modify the implementation of a secret_share
object, including changing how operations are implemented (e.g. addition, multiplication, etc.), registering callbacks for when the share is computed, or adding additional operations:
- a share is created (e.g. by
jiff_instance.share
or by operating on shares) new secret_share
is invoked- the default
secret_share
object is created - hook:
createSecretShare
- returned
secret_share
object is used by JIFF