Polyfills are a valuable part of Web architecture, because they promote the adoption of new features during the implementation process. However, polyfills can also create problems for standardization efforts and therefore for the future of the Web. This document defines the risks, benefits, and role of polyfills on the Web, and proposes best practices for implementors, spec editors, website developers, polyfill authors, and operators of polyfill distribution platforms.
For deeper background, see relevant [TAG mailing list thread](https://lists.w3.org/Archives/Public/www-tag/2016Oct/0002.html) and [F2F meeting minutes](https://pad.w3ctag.org/p/2016-10-31-minutes.md).
This document has been produced by the [W3C Technical Architecture Group (TAG)](https://www.w3.org/2001/tag/).
The TAG approved this finding at its [February 2017 face to face meeting](https://github.com/w3ctag/meetings/tree/gh-pages/2017/02-boston). Please send comments on this finding to the publicly archived TAG mailing list [www-tag<EMAIL_ADDRESS>([archive](https://lists.w3.org/Archives/Public/www-tag/)).
## Nomenclature: What is a polyfill?
A *polyfill* is a piece of JavaScript code that is intended to exactly simulate a native, interoperable feature of the web platform, for the purpose of allowing website developers to use modern web features in older browsers.
The term *polyfill* was coined by Remy Sharp in the 2009 book Introducing HTML5 ([p276](https://books.google.com/books?id=a8HQCk4pbQkC&pg=PA276)), and differentiated from *shim*:
> What makes a polyfill different from the techniques we have already, like a shim, is this: if you removed the polyfill script, your code would continue to work, without any changes required in spite of the polyfill being removed.
Since then, the term *prollyfill* has been used by some to refer to code which implements features that are yet to be sufficiently standardized to be considered part of the web platform. *Ponyfill* is occasionally used to refer to code which implements standard platform features but in a private scope. Other terms such as *nottifill*, *shiv*, *sham*, *shim*, *library* and *patch* also exist and are used with varying degrees of popularity and shared semantics.
We find that although the terms *library* and *polyfill* are the most well recognized of these, *polyfill's* etymology is non-obvious and is [in part culturally specific to the UK](https://remysharp.com/2010/10/08/what-is-a-polyfill/). For the avoidance of confusion, we use the following terms in this finding and offer them as a useful reference:
* **polyfill**: Emulates a well established feature of the web platform
* **speculative polyfill** (aka 'ponyfill', 'prollyfill', 'nottifill'): Emulates a proposed feature of the web platform
* **library** (aka 'module'): Provides features or functionality not anticipated to be a web platform feature
## Feature life cycle and the role of polyfills
From a practical standpoint, the development of web platform features goes through a number of distinct phases:
1. Idea discussion
1. Incubation
1. First native implementation (as a trial / behind flag)
1. Specification
1. Multiple interoperable implementations
1. Universal support
The time lag between the first interoperable implementations (5) and fully universal support (6) can be long (occasionally as long as a decade). Polyfills can often effectively bridge this gap (between stages 5 and 6 above) and allow site developers to write solutions that assume universal support.
## Risks of premature polyfilling
Early, speculative polyfills help shape the standards process. However, any JavaScript library that defines a property of the global object or extends a prototype of a global constructor using a proposed or generically useful name, risks creating problems for the development of the Web if that library becomes widely used, prior to the standardization and implementation of the feature it seeks to create or emulate.
Polyfill authors can avoid these problems if their version of the feature can be used under a custom name, regardless of the existence of any native implementation of the same or similar feature under a different name. However, many site developers will canonicalize the name of a library by deferring to a 'fantasy' native implementation under a name that might be standardized in future, or which is standardized but only available in some browsers, e.g.:
Following this pattern sets up an assumption that the standard native implementation, when available, will be functionally identical to a vendor-prefixed implementation or speculative polyfill, which may not be the case.
### Tipping point
It is useful to recognize a point in the lifecycle of a feature at which the definition of the feature is stable enough that polyfills no longer present significant risks to the evolution of the specification, and indeed are now essential to help the feature achieve a more rapid rollout.
There is no common agreement on how to identify the tipping point, and it may indeed differ depending on the circumstances and type of feature. We find that the following indicators are relevant:
* Multiple implementations: are there multiple interoperable implementations in shipping browsers?
* Consensus: Is there broad consensus on the detail of the feature with no unresolved objections that would change the API interface or observed behavior?
* Test suite exists: Is there a comprehensive test suite that passes for native implementations?
* Intent to implement: Is there a publicly declared intention to implement the feature based on the current specification from a major browser vendor?
It may be difficult for polyfill authors to determine whether a feature has achieved consensus, and in cases where it's unclear, authors should consult the chairs or editors of the feature specification. In many cases this can be done by opening an issue in a public issue tracker, if the specification effort is using one, or otherwise by sending email to the appropriate mailing list. A lack of response should be interpreted as an indication that a feature has not passed the tipping point.
### Other potential concerns
As the number of web platform features increases, the amount of polyfill code required to make website developers' application code run in older browsers may become extremely large - in some cases exceeding the size of the application code that depends on it. This has implications for performance, both in terms of parsing the polyfill code, and the time required to download it.
Consideration should be given to whether excessively large polyfill bundles place a punitive cost burden on users with the least ability to pay that cost: those with older devices which may be on metered connections paying for data in very small increments.
Polyfills are often written by individuals, and may not have the infrastructure or support network of a major project or organization, leading to potential security concerns. These concerns are amplified if the polyfill acquires wide adoption, which may leave many unconnected sites vulnerable to the same security exploit.
## Advice for polyfill authors
Polyfill authors can mitigate the concerns outlined above. Following a set of best practices will help to ensure that the polyfill promotes the adoption of the feature, rather than standing in the way of its standardization.
### Encapsulate as a module or UMD
Use standard mechanisms for encapsulating your polyfill, such as ECMAScript modules or [commonJS](http://wiki.commonjs.org/wiki/CommonJS). If not defining an ES module, use a [universal module declaration](https://github.com/umdjs/umd) or other broadly compatible module API to make your polyfill compatible with multiple module loaders.
Don't pollute the global scope by creating or extending global objects inside a module that is intended to be consumed via a module loader.
### Use smart distribution
Choose a platform on which to publish your polyfill from which developers can easily consume it in a way that keeps up to date with changes to the original source. For example, use a module registry like [npmjs.org](https://npmjs.org/), and consider hosting the polyfill on a service from which it can be directly loaded in the browser, such as [cdnjs.com](https://cdnjs.com/) or [polyfill.io](https://polyfill.io/).
### Don't squat on proposed names in speculative polyfills
If a feature has not passed the tipping point, do not squat on the proposed or common name (whether it's a property of the global object or of a global constructor/prototype). Consider prefixing or changing the proposed name, or appending 'polyfill'. For example, if an upcoming feature is likely to be called `window.Foo`, consider attaching your polyfill to `window.FutureFoo` or `window.FooPolyfill`.
Avoid incredibly short or obviously generic names, such as `$`, `root` or `web`.
If the feature **has** passed the tipping point, and your polyfill is spec-compliant, it's OK to attach to the standard name.
### Pass web platform tests, if they exist
Attempt to pass [Web Platform Tests](https://github.com/w3c/web-platform-tests) for your polyfill and advertise the results, as a way to help potential consumers of the polyfill more effectively evaluate the risks associated with using the polyfill.
### Detect and defer to native implementations
For features that have reached the tipping point, where the polyfill registers the same name as the native feature, include code to detect a native implementation, and if one exists, defer to it. Where a native feature exists but is incomplete or buggy, consider using as much of it as possible and correcting only the deficiencies.
When a native implementation is available, consider throwing a warning to the console to tell the site developer that they loaded a polyfill unnecessarily.
For features that are yet to reach the tipping point, speculative polyfills should not detect or defer to native implementations, and should not use the same name as a native implementation.
### Work with spec editors
If practical, collect information about polyfill usage, developer experience, or problems with polyfills conflicting with or behaving differently to a native implementation - and send that information to the people developing the specification or native implementations.
## Advice for website developers
Website developers should ensure that the most up to date best practices for performance and security are followed when using any script on a website. In addition, they can achieve maximum benefits from polyfills by following these specific best practices.
### Understand stability of both feature and polyfill
Use the [lifecycle guidance above](#life-cycle) to understand whether the feature has passed the tipping point, and can be considered stable. When selecting a polyfill, look for signs of quality such as:
* Comprehensive test suite, especially if it includes relevant Web Platform Tests
* Effects on the performance profile of your site, measured using in-browser profiling tools or other auditing or monitoring tools or services
### Don't use speculative polyfills that defer to native implementations
If a feature is yet to reach the tipping point, using polyfills that squat on the proposed name for the feature is highly inadvisable, because when the feature is finalized, it might work differently to the polyfill you are using, and your website may break. If a polyfill author has followed good practice for pre-tipping point features by providing a polyfill with a non-conflicting name, don't undo this good practice by aliasing it to the proposed name.
Instead, use the speculative polyfill in private scope or under a custom name, wait until the feature has passed the tipping point, then update your code to use a polyfill that automatically defers to native implementations where they exist.
import rafPolyfill from 'request-animation-frame';
rafPolyfill(function() {
...
});
### Don't serve unnecessary polyfills
Shipping unnecessary bytes to users that don't need them wastes the user's time and data allowance, but performing feature detection first can delay the loading of necessary polyfills and adds the overhead of the loader itself. It is generally better to optimize for modern browsers, so performing efficient client-side feature detection and waiting for an extra script to load on older browsers is usually a good trade off. However, if the full set of polyfills you might need in the worst case constitutes a negligible overhead, then you could choose to serve the full set to all browsers.
Polyfill authors may choose to throw a warning if a polyfill is loaded when not needed, though care should be taken not to create unnecessary noise. If unnecessarily loading a particular polyfill creates a significant performance or security concern, a warning is appropriate.
### Keep polyfills up to date
When incorporating polyfills into your codebase, create a mechanism that allows you to easily update the polyfill from source later. Updating polyfills regularly will help to ensure that browsers receiving the polyfilled behavior exhibit the same functionality as those in which you are using the feature natively.
### Consider the slowest, least capable devices
Typically the devices and browsers that require the largest amount of polyfill code are also the least capable of parsing it efficiently, and the most likely to be on a metered and expensive internet connection. Alternatives to polyfilling on these devices include:
* Progressive enhancement: Silently drop any aspects of the application enabled by features that are not supported
* Transpiling: Create a version of the JavaScript processed using a server-side tool to replace more modern features with equivalent older ones for the same end result
* Lo-fi mode: Create a separate version of the site that does not require the newer features, perhaps setting a baseline of support below which you provide a less enhanced experience
* A notice informing the user that their browser is not capable of using that aspect of your site, or the entire site. This may be appropriate in some cases where the site is an application whose fundamental purpose relies on a particular feature of the web.
If you implement a baseline, detection of browsers that fall below the line must be based on robust feature detection, not proxy indicators that may be easier to measure but which will also exclude capable browsers.
### Make use of caches
Serve polyfill code to your users in a form that can be cached locally in the user's browser. If available to you, make use of a CDN to cache the polyfill code as close to users as possible. Ideally, use the `immutable` directive in the [`Cache-Control`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control) response header.
## Advice for library and framework authors
Some libraries and frameworks bundle polyfills to achieve the maximum browser compatibility and developer satisfaction. We find that the following best practices apply to library authors:
### Consider whether to include polyfills
In deciding whether to ship polyfill-like code inside your library, you should consider questions such as:
* **How much of the feature are you using?** If you want a large feature but your use of it could be emulated in naive 10-line implementation, then it's better to do that than to bundle a spec-compliant polyfill.
* **How large is the polyfill code relative to your library code?** If it's a tiny polyfill (such as for a `Number.isNaN` implementation) then the overheads are negligible and not worth any concern. However, in some cases a polyfill might exceed the size of the library.
* **Are there multiple polyfills available?** If developers have a choice of polyfills for this feature, you may want to choose the one that works best with your library. If there's only one canonical option, it's easier to assume that the developer will use it.
* **Does your library provide a good experience only when the feature is available natively?** If a polyfill allows your library to work but in an unacceptably slow or buggy way, it probably should not ship as part of the library.
### Always encapsulate
Don't modify globals or native object prototypes. If you ship code as part of your library that emulates platform features, do so inside a closure.
### Use native implementations when available
Don't lean on bundled polyfill code unconditionally. In browsers that offer a native implementation, use it.
### Consider alternatives
If including a polyfill is not a good solution, consider alternatives such as:
* Declare the need for the feature as a requirement in your documentation, and allow the website developer to decide whether to polyfill it
* At initialization, throw a descriptive error and abort early if your library is invoked in a browser that does not have all the features you need
## Advice for polyfill distributors
If you run a service or project that promotes and distributes polyfills, you can help the web move forward by adhering to the following best practices.
### Don't host or serve bad polyfills
When considering whether to distribute a polyfill, check whether it meets the best practices outlined in [Advice for polyfill authors](#advice-authors).
### Update polyfills as specifications change
Keep the polyfills that you host up to date. If practical, push updates directly to your customers, otherwise encourage them to move to the latest version.
### Don't bundle dependencies
If you offer a service that bundles multiple polyfills together, make sure people using the service are able to easily find out which polyfills are being included, and can exclude any polyfills for features that they have already polyfilled earlier or by another means. This is especially important if your service automatically includes polyfills for features that are dependencies of features requested by the user.
### Make use of caches
Serve polyfill code to your users in a form that can be cached locally in the user's browser. If available to you, make use of a CDN to cache the polyfill code as close to users as possible. Ideally, use the `immutable` directive in the [`Cache-Control`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control) response header.
## Advice for spec editors
If you are developing a new feature for the web, polyfills can be hugely beneficial in helping to roll out that feature.
### Don't be constrained by what is 'polyfillable'
New web features need not be constrained by the need to enable polyfill implementations. However, all other things being equal, choosing a design that is more polyfill friendly is desirable.
### Make your feature easily detectable
Ensure that the feature exposes detection hooks that can be effectively used by feature-detection code to determine whether a user agent offers a native implementation of the feature.
### Work with polyfill authors
Whether before or after the tipping point, development of polyfills should be welcomed, provided that the polyfill author adheres to the best practices included in this finding. Help polyfill authors by sharing feature rationale and taking on feedback based on the polyfill implementation.


Chore Chart
Name:
Name1
Dates:
1/7/2019 - 1/13/2019
My Chores
Mon
Tue
Wed
Thu
Fri
Sat
Sun
Test Chore


@(message: String = "")(implicit request: RequestHeader, context: model.ApplicationContext)
@admin_main("Purge Ajax Cache", isAuthed = true) {
Purge Ajax Cache
Warnings:
- This tool performs a soft purge of the cached content on api.nextgen.guardianapps.co.uk. This will immediately attempt to refresh the cached content.
- If the backend service that provides the content is not healthy, stale content will continue to be served.
- If you are trying to resolve an issue and have not already done so, please use the Troubleshoot Tool
Usage:
-
Paste the url of the page (content) you want to clear below, including the entire url. Only works on
api.nextgen.guardianapps.co.uk
.
E.g. https://api.nextgen.guardianapps.co.uk/politics/blog/live/2018/aug/01/chequers-brexit-plan-would-cost-economy-equivalent-of-500-per-head-says-thinktank-politics-live.json
- Click Purge to clear the page from the cache.
@if(!message.isEmpty) { @message
}
}


"Anybody can make a toaster toast. Very few people can make a toaster something you covet." Drutha belongs to that generation of budding engineers aspiring to create an evolution in the field of automobile design.
Know MoreBuy donation vouchers and help develop our race car for the SUPRA SAEINDIA 2016 national event, one lucky donor gets to accompany the team to witness the action live at Buddh International Circuit, Greater Noida, UP. All help appreciated.
If you wish to support us or know more, give us a call or send us an email and we will get back to you right away!
+91-8281182258
+91-9567394777


Geoservices API's
code
- Getting Started
- Overview
- Authentication
- Quota and Rate Limits
- Raw Requests
- Libraries & SDK's
my_location
- Geocoding
- Overview
- Parameters
- Response
settings_backup_restore
Reverse Geocoding
apartment
Address Processing
group
Census Intersection
blur_linear
K-Nearest


Rebel Wilson writes K-pop comedy Seoul Girls and the internet has feelings
K-pop is only just starting to be recognised in the Western charts and awards show, with artists like BTS, BLACKPINK and EXO smashing records.
And it seems now the movie industry is jumping on the bandwagon
A K-pop comedy written by Rebel Wilson is in the works, and yup – the internet has some feelings.
According to Deadline, Lionsgate has obtained the rights to Seoul Girls, which was written by Pitch Perfect star Rebel, who will also have a role in the movie.
Seoul Girls will follow a Korean American high school student who, along with her friends, decides to enter a global talent competition to be the opening act for the world’s biggest K-pop boyband (three guesses on who that is based on).
Advertisement Advertisement
The ‘Seoul Girls’ are given help in their quest to open for BTS – er, no, we mean a totally unrelated boyband – by a former K-pop trainee and a former member of a British girl group.
We’re getting throwbacks to Simon Cowell’s UK-pop comments…
While we have no further details on what Seoul Girls will entail, people aren’t exactly enthusiastic about the project.
The Ringer’s Kate Halliwell tweeted: ‘well there’s no way this could go wrong’, while one person added: ‘Why is this happening and who can I pay to make it stop lmao?’
And the hits just kept coming:
In fairness, none of us know what the actual content of the movie will be yet, and many people on Twitter are waiting to see a trailer to give the benefit of the doubt.
Plus, it has been noted that Rebel’s script has been given a recent revision by Korean screenwriter Young Il Kim, who has tweeted: ‘This will be a fun project. Hope you all see it if/when it comes out. Also, I hope this leads to me getting backstage passes for my kids to a BTS concert or something.’
He also joked: ‘Years of attending K-CON paid off!
‘This Kpop project is gonna get me at least a 10% discount in K-town restaurants!’
Seoul Girls doesn’t yet have a release date.
Got a showbiz story?
If you've got a story, video or pictures get in touch with the Metro.co.uk Entertainment team by emailing us<EMAIL_ADDRESS>calling 020 3615 2145 or by visiting our Submit Stuff page - we'd love to hear from you.


{% extends "base.html" %} {% block title %}
Clicking on the button below will lead you to the billing section.
Clicking on the button below will lead you to the invoice generation section.


Digital Image Processing Online Learning Centre (DIPOLC)
We would be love to hear any queries related to the project. Feel Free to Contact us.


Hot Restaurant
Group 6
Current Reservations & Waitlist
Make a Reservation
Current Reservations
Waitlist


# -*- coding: utf-8 -*-
import logging
import utool as ut
import numpy as np
import vtool as vt
import functools
from wbia.algo.hots import hstypes
from wbia.algo.hots import _pipeline_helpers as plh
print, rrr, profile = ut.inject2(__name__)
logger = logging.getLogger('wbia')
"""
FIXME: qfx2_ no longer applies due to fgw_thresh. Need to change names in this file
TODO: replace testdata_pre_weight_neighbors with
>>> qreq_, args = plh.testdata_pre('weight_neighbors', defaultdb='testdb1',
>>> a=['default:qindex=0:1,dindex=0:5,hackerrors=False'],
>>> p=['default:codename=vsmany,bar_l2_on=True,fg_on=False'], verbose=True)
"""
NN_WEIGHT_FUNC_DICT = {}
MISC_WEIGHT_FUNC_DICT = {}
EPS = 1e-8
def _register_nn_normalized_weight_func(func):
r"""
Decorator for weighting functions
Registers a nearest neighbor normalized weighting
Used for LNBNN
"""
global NN_WEIGHT_FUNC_DICT
filtkey = ut.get_funcname(func).replace('_fn', '').lower()
if ut.VERYVERBOSE:
logger.info('[nn_weights] registering norm func: %r' % (filtkey,))
filtfunc = functools.partial(nn_normalized_weight, func)
NN_WEIGHT_FUNC_DICT[filtkey] = filtfunc
return func
def _register_nn_simple_weight_func(func):
"""
Used for things that dont require a normalizer like const
"""
filtkey = ut.get_funcname(func).replace('_match_weighter', '').lower()
if ut.VERYVERBOSE:
logger.info('[nn_weights] registering simple func: %r' % (filtkey,))
NN_WEIGHT_FUNC_DICT[filtkey] = func
return func
def _register_misc_weight_func(func):
filtkey = ut.get_funcname(func).replace('_match_weighter', '').lower()
if ut.VERYVERBOSE:
logger.info('[nn_weights] registering simple func: %r' % (filtkey,))
MISC_WEIGHT_FUNC_DICT[filtkey] = func
return func
[docs]@_register_nn_simple_weight_func
def const_match_weighter(nns_list, nnvalid0_list, qreq_):
r"""
Example:
>>> # DISABLE_DOCTEST
>>> from wbia.algo.hots.nn_weights import * # NOQA
>>> #tup = plh.testdata_pre_weight_neighbors('PZ_MTEST')
>>> qreq_, args = plh.testdata_pre('weight_neighbors', defaultdb='PZ_MTEST')
>>> nns_list, nnvalid0_list = args
>>> ibs, qreq_, nns_list, nnvalid0_list = tup
>>> constvote_weight_list = const_match_weighter(nns_list, nnvalid0_list, qreq_)
>>> result = ('constvote_weight_list = %s' % (str(constvote_weight_list),))
>>> print(result)
"""
constvote_weight_list = []
# K = qreq_.qparams.K # Dont use K because K is dynamic per query
# Subtract Knorm from size instead
Knorm = qreq_.qparams.Knorm
for nns in nns_list:
(neighb_idx, neighb_dist) = nns
neighb_constvote = np.ones(
(len(neighb_idx), len(neighb_idx.T) - Knorm), dtype=np.float
)
constvote_weight_list.append(neighb_constvote)
return constvote_weight_list
[docs]@_register_nn_simple_weight_func
def fg_match_weighter(nns_list, nnvalid0_list, qreq_):
r"""
foreground feature match weighting
CommandLine:
python -m wbia.algo.hots.nn_weights --exec-fg_match_weighter
Example:
>>> # xdoctest: +REQUIRES(module:wbia_cnn)
>>> from wbia.algo.hots.nn_weights import * # NOQA
>>> #tup = plh.testdata_pre_weight_neighbors('PZ_MTEST')
>>> #ibs, qreq_, nns_list, nnvalid0_list = tup
>>> qreq_, args = plh.testdata_pre('weight_neighbors', defaultdb='PZ_MTEST')
>>> nns_list, nnvalid0_list = args
>>> print(ut.repr2(qreq_.qparams.__dict__, sorted_=True))
>>> assert qreq_.qparams.fg_on == True, 'bug setting custom params fg_on'
>>> fgvotes_list = fg_match_weighter(nns_list, nnvalid0_list, qreq_)
>>> print('fgvotes_list = %r' % (fgvotes_list,))
"""
Knorm = qreq_.qparams.Knorm
config2_ = qreq_.get_internal_query_config2()
# Database feature index to chip index
fgvotes_list = []
for nn in nns_list:
# database forground weights
neighb_dfgws = qreq_.indexer.get_nn_fgws(nn.neighb_idxs.T[0:-Knorm].T)
# query forground weights
qfx2_qfgw = qreq_.ibs.get_annot_fgweights(
[nn.qaid], ensure=False, config2_=config2_
)[0]
qfgws = qfx2_qfgw.take(nn.qfx_list, axis=0)
# feature match forground weight is geometric mean
neighb_fgvote_weight = np.sqrt(qfgws[:, None] * neighb_dfgws)
fgvotes_list.append(neighb_fgvote_weight)
return fgvotes_list
[docs]def nn_normalized_weight(normweight_fn, nns_list, nnvalid0_list, qreq_):
r"""
Generic function to weight nearest neighbors
ratio, lnbnn, and other nearest neighbor based functions use this
Args:
normweight_fn (func): chosen weight function e.g. lnbnn
nns_list (dict): query descriptor nearest neighbors and distances.
nnvalid0_list (list): list of neighbors preflagged as valid
qreq_ (QueryRequest): hyper-parameters
Returns:
list: weights_list
CommandLine:
python -m wbia.algo.hots.nn_weights nn_normalized_weight --show
Example:
>>> # ENABLE_DOCTEST
>>> from wbia.algo.hots.nn_weights import * # NOQA
>>> #tup = plh.testdata_pre_weight_neighbors('PZ_MTEST')
>>> #ibs, qreq_, nns_list, nnvalid0_list = tup
>>> qreq_, args = plh.testdata_pre('weight_neighbors',
>>> defaultdb='PZ_MTEST')
>>> nns_list, nnvalid0_list = args
>>> normweight_fn = lnbnn_fn
>>> weights_list1, normk_list1 = nn_normalized_weight(
>>> normweight_fn, nns_list, nnvalid0_list, qreq_)
>>> weights1 = weights_list1[0]
>>> nn_normonly_weight = NN_WEIGHT_FUNC_DICT['lnbnn']
>>> weights_list2, normk_list2 = nn_normonly_weight(nns_list, nnvalid0_list, qreq_)
>>> weights2 = weights_list2[0]
>>> assert np.all(weights1 == weights2)
>>> ut.assert_inbounds(weights1.sum(), 100, 510)
Example:
>>> # ENABLE_DOCTEST
>>> from wbia.algo.hots.nn_weights import * # NOQA
>>> #tup = plh.testdata_pre_weight_neighbors('PZ_MTEST')
>>> qreq_, args = plh.testdata_pre('weight_neighbors',
>>> defaultdb='PZ_MTEST')
>>> nns_list, nnvalid0_list = args
>>> normweight_fn = ratio_fn
>>> weights_list1, normk_list1 = nn_normalized_weight(normweight_fn, nns_list, nnvalid0_list, qreq_)
>>> weights1 = weights_list1[0]
>>> nn_normonly_weight = NN_WEIGHT_FUNC_DICT['ratio']
>>> weights_list2, normk_list2 = nn_normonly_weight(nns_list, nnvalid0_list, qreq_)
>>> weights2 = weights_list2[0]
>>> assert np.all(weights1 == weights2)
>>> ut.assert_inbounds(weights1.sum(), 1500, 4500)
"""
Knorm = qreq_.qparams.Knorm
normalizer_rule = qreq_.qparams.normalizer_rule
# Database feature index to chip index
qaid_list = qreq_.get_internal_qaids()
normk_list = [
get_normk(qreq_, qaid, neighb_idx, Knorm, normalizer_rule)
for qaid, (neighb_idx, neighb_dist) in zip(qaid_list, nns_list)
]
weight_list = [
apply_normweight(normweight_fn, neighb_normk, neighb_idx, neighb_dist, Knorm)
for neighb_normk, (neighb_idx, neighb_dist) in zip(normk_list, nns_list)
]
return weight_list, normk_list
[docs]def get_normk(qreq_, qaid, neighb_idx, Knorm, normalizer_rule):
"""
Get positions of the LNBNN/ratio tests normalizers
Example:
>>> # ENABLE_DOCTEST
>>> from wbia.algo.hots.nn_weights import * # NOQA
>>> cfgdict = {'K':10, 'Knorm': 10, 'normalizer_rule': 'name',
>>> 'dim_size': 450, 'resize_dim': 'area'}
>>> #tup = plh.testdata_pre_weight_neighbors(cfgdict=cfgdict)
>>> qreq_, args = plh.testdata_pre('weight_neighbors', defaultdb='testdb1',
>>> p=['default:K=10,Knorm=10,normalizer_rule=name,dim_size=450,resize_dim=area'])
>>> nns_list, nnvalid0_list = args
>>> (neighb_idx, neighb_dist) = nns_list[0]
>>> qaid = qreq_.qaids[0]
>>> K = qreq_.qparams.K
>>> Knorm = qreq_.qparams.Knorm
>>> neighb_normk1 = get_normk(qreq_, qaid, neighb_idx, Knorm, 'last')
>>> neighb_normk2 = get_normk(qreq_, qaid, neighb_idx, Knorm, 'name')
>>> assert np.all(neighb_normk1 == Knorm + K)
>>> assert np.all(neighb_normk2 <= Knorm + K) and np.all(neighb_normk2 > K)
"""
K = len(neighb_idx.T) - Knorm
assert K > 0, 'K=%r cannot be 0' % (K,)
# neighb_nndist = neighb_dist.T[0:K].T
if normalizer_rule == 'last':
neighb_normk = np.zeros(len(neighb_idx), hstypes.FK_DTYPE) + (K + Knorm - 1)
elif normalizer_rule == 'name':
neighb_normk = get_name_normalizers(qaid, qreq_, Knorm, neighb_idx)
elif normalizer_rule == 'external':
pass
else:
raise NotImplementedError('[nn_weights] no normalizer_rule=%r' % normalizer_rule)
return neighb_normk
[docs]def apply_normweight(normweight_fn, neighb_normk, neighb_idx, neighb_dist, Knorm):
r"""
helper applies the normalized weight function to one query annotation
Args:
normweight_fn (func): chosen weight function e.g. lnbnn
qaid (int): query annotation id
neighb_idx (ndarray[int32_t, ndims=2]): mapping from query feature
index to db neighbor index
neighb_dist (ndarray): mapping from query feature index to dist
Knorm (int):
qreq_ (QueryRequest): query request object with hyper-parameters
Returns:
ndarray: neighb_normweight
CommandLine:
python -m wbia.algo.hots.nn_weights --test-apply_normweight
Example:
>>> # ENABLE_DOCTEST
>>> from wbia.algo.hots.nn_weights import * # NOQA
>>> from wbia.algo.hots import nn_weights
>>> #cfgdict = {'K':10, 'Knorm': 10, 'normalizer_rule': 'name',
>>> # 'dim_size': 450, 'resize_dim': 'area'}
>>> #tup = plh.testdata_pre_weight_neighbors(cfgdict=cfgdict)
>>> qreq_, args = plh.testdata_pre('weight_neighbors', defaultdb='testdb1',
>>> p=['default:K=10,Knorm=10,normalizer_rule=name,dim_size=450,resize_dim=area'])
>>> nns_list, nnvalid0_list = args
>>> qaid = qreq_.qaids[0]
>>> Knorm = qreq_.qparams.Knorm
>>> normweight_fn = lnbnn_fn
>>> normalizer_rule = qreq_.qparams.normalizer_rule
>>> (neighb_idx, neighb_dist) = nns_list[0]
>>> neighb_normk = get_normk(qreq_, qaid, neighb_idx, Knorm, normalizer_rule)
>>> neighb_normweight = nn_weights.apply_normweight(
>>> normweight_fn, neighb_normk, neighb_idx, neighb_dist, Knorm)
>>> ut.assert_inbounds(neighb_normweight.sum(), 600, 950)
"""
K = len(neighb_idx.T) - Knorm
# neighb_normdist = np.array(
# [dists[normk] for (dists, normk) in zip(neighb_dist, neighb_normk)])
neighb_normdist = vt.take_col_per_row(neighb_dist, neighb_normk)
neighb_normdist.shape = (len(neighb_idx), 1)
neighb_nndist = neighb_dist.T[0:K].T
vdist = neighb_nndist # voting distance
ndist = neighb_normdist # normalizer distance
neighb_normweight = normweight_fn(vdist, ndist)
return neighb_normweight
[docs]def get_name_normalizers(qaid, qreq_, Knorm, neighb_idx):
r"""
helper normalizers for 'name' normalizer_rule
Args:
qaid (int): query annotation id
qreq_ (wbia.QueryRequest): hyper-parameters
Knorm (int):
neighb_idx (ndarray):
Returns:
ndarray : neighb_normk
Example:
>>> # ENABLE_DOCTEST
>>> from wbia.algo.hots.nn_weights import * # NOQA
>>> from wbia.algo.hots import nn_weights
>>> #cfgdict = {'K':10, 'Knorm': 10, 'normalizer_rule': 'name'}
>>> #tup = plh.testdata_pre_weight_neighbors(cfgdict=cfgdict)
>>> qreq_, args = plh.testdata_pre('weight_neighbors', defaultdb='testdb1',
>>> p=['default:K=10,Knorm=10,normalizer_rule=name'])
>>> nns_list, nnvalid0_list = args
>>> Knorm = qreq_.qparams.Knorm
>>> (neighb_idx, neighb_dist) = nns_list[0]
>>> qaid = qreq_.qaids[0]
>>> neighb_normk = get_name_normalizers(qaid, qreq_, Knorm, neighb_idx)
"""
assert Knorm == qreq_.qparams.Knorm, 'inconsistency in qparams'
# Get the top names you do not want your normalizer to be from
# qnid = qreq_.internal_qannots.loc([qaid]).nids[0]
qnid = qreq_.get_qreq_annot_nids(qaid)
K = len(neighb_idx.T) - Knorm
assert K > 0, 'K cannot be 0'
# Get the 0th - Kth matching neighbors
neighb_topidx = neighb_idx.T[0:K].T
# Get tke Kth - KNth normalizing neighbors
neighb_normidx = neighb_idx.T[-Knorm:].T
# Apply temporary uniquish name
neighb_topaid = qreq_.indexer.get_nn_aids(neighb_topidx)
neighb_normaid = qreq_.indexer.get_nn_aids(neighb_normidx)
neighb_topnid = qreq_.get_qreq_annot_nids(neighb_topaid)
neighb_normnid = qreq_.get_qreq_annot_nids(neighb_normaid)
# Inspect the potential normalizers
neighb_selnorm = mark_name_valid_normalizers(qnid, neighb_topnid, neighb_normnid)
neighb_normk = neighb_selnorm + (K + Knorm) # convert form negative to pos indexes
return neighb_normk
[docs]def mark_name_valid_normalizers(qnid, neighb_topnid, neighb_normnid):
r"""
Helper func that allows matches only to the first result for a name
Each query feature finds its K matches and Kn normalizing matches. These
are the candidates from which it can choose a set of matches and a single
normalizer.
A normalizer is marked as invalid if it belongs to a name that was also in
its feature's candidate matching set.
Args:
neighb_topnid (ndarray): marks the names a feature matches
neighb_normnid (ndarray): marks the names of the feature normalizers
qnid (int): query name id
Returns:
neighb_selnorm - index of the selected normalizer for each query feature
CommandLine:
python -m wbia.algo.hots.nn_weights --exec-mark_name_valid_normalizers
Example:
>>> # ENABLE_DOCTEST
>>> from wbia.algo.hots.nn_weights import * # NOQA
>>> qnid = 1
>>> neighb_topnid = np.array([[1, 1, 1, 1, 1],
... [1, 2, 1, 1, 1],
... [1, 2, 2, 3, 1],
... [5, 8, 9, 8, 8],
... [5, 8, 9, 8, 8],
... [6, 6, 9, 6, 8],
... [5, 8, 6, 6, 6],
... [1, 2, 8, 6, 6]], dtype=np.int32)
>>> neighb_normnid = np.array([[ 1, 1, 1],
... [ 2, 3, 1],
... [ 2, 3, 1],
... [ 6, 6, 6],
... [ 6, 6, 8],
... [ 2, 6, 6],
... [ 6, 6, 1],
... [ 4, 4, 9]], dtype=np.int32)
>>> neighb_selnorm = mark_name_valid_normalizers(qnid, neighb_topnid, neighb_normnid)
>>> K = len(neighb_topnid.T)
>>> Knorm = len(neighb_normnid.T)
>>> neighb_normk_ = neighb_selnorm + (Knorm) # convert form negative to pos indexes
>>> result = str(neighb_normk_)
>>> print(result)
[2 1 2 0 0 0 2 0]
Ignore:
logger.info(ut.doctest_repr(neighb_normnid, 'neighb_normnid', verbose=False))
logger.info(ut.doctest_repr(neighb_topnid, 'neighb_topnid', verbose=False))
"""
# TODO?: warn if any([np.any(flags) for flags in neighb_invalid]), (
# 'Normalizers are potential matches. Increase Knorm')
neighb_valid = np.logical_and.reduce(
[col1[:, None] != neighb_normnid for col1 in neighb_topnid.T]
)
# Mark self as invalid, if given that information
neighb_valid = np.logical_and(neighb_normnid != qnid, neighb_valid)
# For each query feature find its best normalizer (using negative indices)
Knorm = neighb_normnid.shape[1]
neighb_validxs = [np.nonzero(normrow)[0] for normrow in neighb_valid]
neighb_selnorm = np.array(
[validxs[0] - Knorm if len(validxs) != 0 else -1 for validxs in neighb_validxs],
hstypes.FK_DTYPE,
)
return neighb_selnorm
[docs]@_register_nn_normalized_weight_func
def lnbnn_fn(vdist, ndist):
r"""
Locale Naive Bayes Nearest Neighbor weighting
References:
http://www.cs.ubc.ca/~lowe/papers/12mccannCVPR.pdf
http://www.cs.ubc.ca/~sanchom/local-naive-bayes-nearest-neighbor
Sympy:
>>> import sympy
>>> #https://github.com/sympy/sympy/pull/10247
>>> from sympy import log
>>> from sympy.stats import P, E, variance, Die, Normal, FiniteRV
>>> C, Cbar = sympy.symbols('C Cbar')
>>> d_i = Die(sympy.symbols('di'), 6)
>>> log(P(di, C) / P(di, Cbar))
>>> #
>>> PdiC, PdiCbar = sympy.symbols('PdiC, PdiCbar')
>>> oddsC = log(PdiC / PdiCbar)
>>> sympy.simplify(oddsC)
>>> import vtool as vt
>>> vt.check_expr_eq(oddsC, log(PdiC) - log(PdiCbar))
Example:
>>> # ENABLE_DOCTEST
>>> from wbia.algo.hots.nn_weights import * # NOQA
>>> vdist, ndist = testdata_vn_dists()
>>> out = lnbnn_fn(vdist, ndist)
>>> result = ut.hz_str('lnbnn = ', ut.repr2(out, precision=2))
>>> print(result)
lnbnn = np.array([[0.62, 0.22, 0.03],
[0.35, 0.22, 0.01],
[0.87, 0.58, 0.27],
[0.67, 0.42, 0.25],
[0.59, 0.3 , 0.27]])
"""
return ndist - vdist
[docs]@_register_nn_normalized_weight_func
def ratio_fn(vdist, ndist):
r"""
Args:
vdist (ndarray): voting array
ndist (ndarray): normalizing array
Returns:
ndarray: out
Example:
>>> # ENABLE_DOCTEST
>>> from wbia.algo.hots.nn_weights import * # NOQA
>>> vdist, ndist = testdata_vn_dists()
>>> out = ratio_fn(vdist, ndist)
>>> result = ut.hz_str('ratio = ', ut.repr2(out, precision=2))
>>> print(result)
ratio = np.array([[0. , 0.65, 0.95],
[0.33, 0.58, 0.98],
[0.13, 0.42, 0.73],
[0.15, 0.47, 0.68],
[0.23, 0.61, 0.65]])
"""
return np.divide(vdist, ndist)
[docs]@_register_nn_normalized_weight_func
def bar_l2_fn(vdist, ndist):
r"""
The feature weight is (1 - the euclidian distance
between the features). The normalizers are unused.
(not really a normaalized function)
Example:
>>> # ENABLE_DOCTEST
>>> from wbia.algo.hots.nn_weights import * # NOQA
>>> vdist, ndist = testdata_vn_dists()
>>> out = bar_l2_fn(vdist, ndist)
>>> result = ut.hz_str('barl2 = ', ut.repr2(out, precision=2))
>>> print(result)
barl2 = np.array([[1. , 0.6 , 0.41],
[0.83, 0.7 , 0.49],
[0.87, 0.58, 0.27],
[0.88, 0.63, 0.46],
[0.82, 0.53, 0.5 ]])
"""
return 1.0 - vdist
[docs]@_register_nn_normalized_weight_func
def loglnbnn_fn(vdist, ndist):
r"""
Ignore:
import vtool as vt
vt.check_expr_eq('log(d) - log(n)', 'log(d / n)') # True
vt.check_expr_eq('log(d) / log(n)', 'log(d - n)')
Example:
>>> # ENABLE_DOCTEST
>>> from wbia.algo.hots.nn_weights import * # NOQA
>>> vdist, ndist = testdata_vn_dists()
>>> out = loglnbnn_fn(vdist, ndist)
>>> result = ut.hz_str('loglnbnn = ', ut.repr2(out, precision=2))
>>> print(result)
loglnbnn = np.array([[0.48, 0.2 , 0.03],
[0.3 , 0.2 , 0.01],
[0.63, 0.46, 0.24],
[0.51, 0.35, 0.22],
[0.46, 0.26, 0.24]])
"""
return np.log(ndist - vdist + 1.0)
[docs]@_register_nn_normalized_weight_func
def logratio_fn(vdist, ndist):
r"""
Example:
>>> # ENABLE_DOCTEST
>>> from wbia.algo.hots.nn_weights import * # NOQA
>>> vdist, ndist = testdata_vn_dists()
>>> out = normonly_fn(vdist, ndist)
>>> result = ut.repr2(out)
>>> print(result)
np.array([[0.62, 0.62, 0.62],
[0.52, 0.52, 0.52],
[1. , 1. , 1. ],
[0.79, 0.79, 0.79],
[0.77, 0.77, 0.77]])
"""
return np.log(np.divide(ndist, vdist + EPS) + 1.0)
[docs]@_register_nn_normalized_weight_func
def normonly_fn(vdist, ndist):
r"""
Example:
>>> # ENABLE_DOCTEST
>>> from wbia.algo.hots.nn_weights import * # NOQA
>>> vdist, ndist = testdata_vn_dists()
>>> out = normonly_fn(vdist, ndist)
>>> result = ut.repr2(out)
>>> print(result)
np.array([[0.62, 0.62, 0.62],
[0.52, 0.52, 0.52],
[1. , 1. , 1. ],
[0.79, 0.79, 0.79],
[0.77, 0.77, 0.77]])
"""
return np.tile(ndist[:, 0:1], (1, vdist.shape[1]))
# return ndist[None, 0:1]
[docs]def testdata_vn_dists(nfeats=5, K=3):
r"""
Test voting and normalizing distances
Returns:
tuple : (vdist, ndist) - test voting distances and normalizer distances
Example:
>>> # ENABLE_DOCTEST
>>> from wbia.algo.hots.nn_weights import * # NOQA
>>> vdist, ndist = testdata_vn_dists()
>>> result = (ut.hz_str('vdist = ', ut.repr2(vdist))) + '\n'
>>> print(result + (ut.hz_str('ndist = ', ut.repr2(ndist))))
vdist = np.array([[0. , 0.4 , 0.59],
[0.17, 0.3 , 0.51],
[0.13, 0.42, 0.73],
[0.12, 0.37, 0.54],
[0.18, 0.47, 0.5 ]])
ndist = np.array([[0.62],
[0.52],
[1. ],
[0.79],
[0.77]])
"""
def make_precise(dist):
prec = 100
dist = (prec * dist).astype(np.uint8) / prec
dist = dist.astype(hstypes.FS_DTYPE)
return dist
rng = np.random.RandomState(0)
vdist = rng.rand(nfeats, K)
ndist = rng.rand(nfeats, 1)
# Ensure distance increases
vdist = vdist.cumsum(axis=1)
ndist = (ndist.T + vdist.max(axis=1)).T
Z = ndist.max()
vdist = make_precise(vdist / Z)
ndist = make_precise(ndist / Z)
vdist[0][0] = 0
return vdist, ndist
# @_register_nn_normalized_weight_func
# def dist_fn(vdist, ndist):
# """ the euclidian distance between the features """
# return vdist
# @_register_nn_simple_weight_func
[docs]def gravity_match_weighter(nns_list, nnvalid0_list, qreq_):
raise NotImplementedError('have not finished gv weighting')
# qfx2_nnkpts = qreq_.indexer.get_nn_kpts(qfx2_nnidx)
# qfx2_nnori = ktool.get_oris(qfx2_nnkpts)
# qfx2_kpts = qreq_.ibs.get_annot_kpts(qaid, config2_=qreq_.get_internal_query_config2()) # FIXME: Highly inefficient
# qfx2_oris = ktool.get_oris(qfx2_kpts)
# # Get the orientation distance
# qfx2_oridist = vt.rowwise_oridist(qfx2_nnori, qfx2_oris)
# # Normalize into a weight (close orientations are 1, far are 0)
# qfx2_gvweight = (TAU - qfx2_oridist) / TAU
# # Apply gravity vector weight to the score
# qfx2_score *= qfx2_gvweight
[docs]def all_normalized_weights_test():
r"""
CommandLine:
python -m wbia.algo.hots.nn_weights --exec-all_normalized_weights_test
Example:
>>> # ENABLE_DOCTEST
>>> from wbia.algo.hots.nn_weights import * # NOQA
>>> all_normalized_weights_test()
"""
from wbia.algo.hots import nn_weights
# ibs, qreq_, nns_list, nnvalid0_list = plh.testdata_pre_weight_neighbors()
qreq_, args = plh.testdata_pre(
'weight_neighbors',
defaultdb='testdb1',
a=['default:qindex=0:1,dindex=0:5,hackerrors=False'],
p=['default:codename=vsmany,bar_l2_on=True,fg_on=False'],
verbose=True,
)
nns_list = args.nns_list
nnvalid0_list = args.nnvalid0_list
qaid = qreq_.qaids[0]
def tst_weight_fn(nn_weight, nns_list, qreq_, qaid):
normweight_fn = nn_weights.__dict__[nn_weight + '_fn']
weight_list1, nomx_list1 = nn_weights.nn_normalized_weight(
normweight_fn, nns_list, nnvalid0_list, qreq_
)
weights1 = weight_list1[0]
# ---
# test NN_WEIGHT_FUNC_DICT
# ---
nn_normonly_weight = nn_weights.NN_WEIGHT_FUNC_DICT[nn_weight]
weight_list2, nomx_list2 = nn_normonly_weight(nns_list, nnvalid0_list, qreq_)
weights2 = weight_list2[0]
assert np.all(weights1 == weights2)
logger.info(nn_weight + ' passed')
for nn_weight in nn_weights.NN_WEIGHT_FUNC_DICT.keys():
normweight_key = nn_weight + '_fn'
if normweight_key not in nn_weights.__dict__:
continue
tst_weight_fn(nn_weight, nns_list, qreq_, qaid)


We sell bitcoin!
- transform frictionless deliverables
- syndicate distributed e-services
- target transparent infomediaries
- drive bleeding-edge infrastructures
- disintermediate ubiquitous web services
- deploy mission-critical metrics
- repurpose customized architectures
- transition impactful supply-chains
- repurpose virtual markets
- strategize magnetic communities
- enable sticky e-markets
- transform back-end systems
- enable compelling e-markets
- synthesize innovative supply-chains


Choose by Category
Clothing & Fabric
CUSHION COVER
$ 8
BUY NOW
HAND LOOMBOX PURSE
$ 5
HAND LOOMOWL
# 5
HAND LOOMSTARFISH
$ 6
HAND LOOMPURSE
ajbdujjqejb
bshfbjsefsbljalasdnjsbfsjbsbkmbascbahbajmbjm
Please fill in this form to complete purchase.
Footer...


Skip to main content
Users
Username
Password
Admin
Add a new user
×
Add a new user
Username
Password
Admin


Host:
Email:
DNS:
Organisation:
Organisational Unit:
Locality:
Country:
CSR:
Key:
Certificate:
Certtificate:


Week no. 14
Composites :
- read the material safety data sheet (MSDS) and technical data sheet (TDS) for the resins that you're using design and fabricate a 3D mold (~ft2) and produce a fiber composite part in it
Design a 3D Mold
This week i thought i might would make and alternative for my previous cover for my brake ligh, but this time
with resin and fiberglass:
Started by designing the mold, for that i used Rhino:
Fabricate the 3D Mold
Then I exported the Rhino model to an stl file and imported the stl to Autodesk 123D Make:
After this i exported a pdf file with de model plans and
cutted it on the laser cuter machine and did the assemble:
Produce the Fiber Composite Part
Materials Used:
-
I used the CLR Epoxy Resin with the CLF Hardener, Resin and Hardner in 100:47 ratio.(Guide);
-
Peel ply and release film;
-
2 fiberglass layers;
-
Plywood mold;
-
Scale;
-
Vaccum bag.
First I started with a layer of release film and peel ply, next 2 layer of fiberglass and resin and another
ayer of release film and peel ply. After all the layers are piled, I used the vaccum bag with the vacuum pump:
I took the vaccum off after 24 hours, and this was the final result:


the and vaccine The for with which al., SARS-CoV- COVID- protein are has viral (Anon, Vaccine have immune that trials Phase clinical virus {background [Online] antibodies can from was against cell response Anon, DNA been [Cited: coronavirus June into mRNA margin may phase spike will Pre-Clinical This based development {border-style host human vaccines various neutralizing px;} recombinant #ffffff;} Coronavirus antibody its proteins Furthermore, Institute convalescent not this University NCT Virus; cells novel patients safety were administration after any immunogenicity subunit these using However, Respiratory SARS-CoV all candidates developed dose genome specific used vaccines, vector Health Protein Vaccines also animal antigen immunity inactivated induce like receptor response. sequence therapy two upon use Acute Syndrome These along between candidate due etc. high immunogenic observed one other responses technology ChAdOx Convalescent Disease RNA Table adverse binding both days different effective glycoprotein infected infection infectious pandemic participants potential px; system treatment vaccines. while {font-family & Biotech Human Immunogenicity July May RBD Severe World adjuvant antigenic data developing development. disease entry font-size gene highly increase levels live monoclonal nAb plasma rapid responsible safe study target their therapeutic three titers vaccine/ •It Against April Bharat Biological Clinical Domain I/II Live March SARS-CoV-, With amino antigens attenuated being but cells. develop double-blind, double; encoding evaluate further genes group higher large per population positive process requires research respiratory revealed some studies trials. uses within (University Attenuated Candidate Elsevier Medical Molecular New Novel Plasma SARS SARS-CoV-. Study Viral adenovirus administered antibodies. antiviral available bind border-color border-width channels considered cytokine day diseases domain efficacy expression found functional hACE healthy humoral influenza least mice model models most must mutations particles placebo produce production protein, randomized, received replication reported second seroconversion single solid; status structural surface symptoms trial vaccination vaccine. virus. viruses {font-style {font-weight (Ou (Yoshimoto, Announces Antibody August Binding Center Clamp Covid- Delhi, Hong INO- Inc., Indian Kong Patients Receptor Research S-Protein SARS-CoV-: Safety TMPRSS They Trials Virus Whereas, absence accelerate acid activate already analysis around before bold centre cleavage collaboration community conducted conformational contain controlled coronaviruses courier; demonstrated does domains efforts either elicit em; enhance enhancement entered epitopes essential expressed expressing form genome. geometric including individuals inducing infection, inflammatory information international landscape led mAb mean measles medical nasal number only outbreak platform post-vaccination post-vaccination. pre-clinical pre-fusion preclinical preliminary prophylactic pt;} reactions researchers resource safety, self-limiting sera. serum severe shall significant similar structure suggest synthetic systemic than then therefore, through under undergo vaccine, via virus, volunteers well where who working


There are people who will fight you over these definitions. Ignore them for now.
FOSS can be any type of software that has available sourcecode.
Public sourcecode makes software better, more reliable, and more portable.
Real and virtual communities of developers, designers, writers, evangelists, engineers, hackers, and more.
Most FOSS projects have a project page.
A long-lived online forum for users and developers.
An short-lived, but tight online feedback channel for developers and power users.
An extremely condensed period dedicated to developing code.
Which license will you use?
GPL, GPL2, GPL3, LGPL, AGPL, Apache, MIT, BSD, Eclipse
These are not set in stone; you can change them later (even ask other projects to change theirs)!
My experience with PostGIS
Citizenship during the bit-liberation
Be flexible. Adapt to the medium that your project uses most. Be prepared to skype at 5am if you have to.
You may have added the coolest feature in the world to Ω software project, but if nobody else can use it, it's worthless.
Now that you wrote the coolest feature in the Ω software project, be prepared to stand behind it.
Be prepared to follow the rabbit down the hole. Ask questions, read docs, and have a sense of humility.
When you learn something new, or build something awesome, share that back with the community. Blog it, tweet it, plus it, instagram it, etc.
When you meet someone online, and they are curious about the Ω software project, show them the path.


OpenAPI definition
No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)
Version: v0
BasePath:/
All rights reserved
http://apache.org/licenses/LICENSE-2.0.html
Access
[ Jump to Models ]
Table of Contents
(logOut)
Return type
Example data
Content-Type: application/json
{
"message" : "message",
"error" : "error",
"status" : "SUCCESS"
}
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the response header.
Responses
200
OK
AuthResponse
(login)
Consumes
This API call consumes the following media types via the request header:
Request body
Return type
Example data
Content-Type: application/json
{
"message" : "message",
"error" : "error",
"status" : "SUCCESS"
}
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the response header.
Responses
200
OK
AuthResponse
Up
post /api/auth/refresh
(refreshToken)
Return type
Example data
Content-Type: application/json
{
"message" : "message",
"error" : "error",
"status" : "SUCCESS"
}
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the response header.
Responses
200
OK
AuthResponse
Up
get /api/messages/{id}
(getMessage)
Path parameters
id (required)
Path Parameter — format: int64
Return type
Example data
Content-Type: application/json
{
"sendDate" : "2000-01-23T04:56:07.000+00:00",
"id" : 0,
"text" : "text"
}
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the response header.
Responses
200
OK
Message
Up
get /api/messages/{id1}/{id2}
(getMessages)
Path parameters
id1 (required)
Path Parameter —
id2 (required)
Path Parameter —
Return type
Example data
Content-Type: application/json
[ {
"sendDate" : "2000-01-23T04:56:07.000+00:00",
"id" : 0,
"text" : "text"
}, {
"sendDate" : "2000-01-23T04:56:07.000+00:00",
"id" : 0,
"text" : "text"
} ]
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the response header.
Responses
200
OK
(postMessageSecuriced)
Consumes
This API call consumes the following media types via the request header:
Request body
Return type
Example data
Content-Type: application/json
{
"sendDate" : "2000-01-23T04:56:07.000+00:00",
"id" : 0,
"text" : "text"
}
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the response header.
Responses
200
OK
Message
Up
delete /api/portfolioItems/users/{userId}/{portfolioItemId}
(deletePortfolioItem)
Path parameters
userId (required)
Path Parameter —
portfolioItemId (required)
Path Parameter — format: int64
Return type
Example data
Content-Type: application/json
{
"website" : "website",
"city" : "city",
"degree" : "degree",
"description" : "description",
"bornDate" : "2000-01-23T04:56:07.000+00:00",
"password" : "password",
"phoneNumber" : "phoneNumber",
"surname" : "surname",
"freelance" : "freelance",
"name" : "name",
"id" : "id",
"category" : "category",
"age" : 0,
"email" : "email"
}
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the response header.
Responses
200
OK
User
Up
get /api/portfolioItems/{portfolioItemId}/image1
(getImage1)
Path parameters
portfolioItemId (required)
Path Parameter — format: int64
Return type
Object
Example data
Content-Type: application/json
{ }
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the response header.
Responses
200
OK
Object
Up
get /api/portfolioItems/{portfolioItemId}/image2
(getImage2)
Path parameters
portfolioItemId (required)
Path Parameter — format: int64
Return type
Object
Example data
Content-Type: application/json
{ }
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the response header.
Responses
200
OK
Object
Up
get /api/portfolioItems/{portfolioItemId}/image3
(getImage3)
Path parameters
portfolioItemId (required)
Path Parameter — format: int64
Return type
Object
Example data
Content-Type: application/json
{ }
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the response header.
Responses
200
OK
Object
Up
get /api/portfolioItems/{portfolioItemId}
(getPortfolioItem)
Path parameters
portfolioItemId (required)
Path Parameter — format: int64
Return type
Example data
Content-Type: application/json
{
"date" : "2000-01-23T04:56:07.000+00:00",
"name" : "name",
"description" : "description",
"client" : "client",
"id" : 0,
"category" : "category",
"userId" : "userId",
"url" : "url"
}
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the response header.
Responses
200
OK
PortfolioItem
Up
get /api/portfolioItems/users/{userId}
(getPortfolioItems)
Path parameters
userId (required)
Path Parameter —
Query parameters
pageable (required)
Query Parameter —
Return type
Example data
Content-Type: application/json
{
"number" : 5,
"size" : 1,
"last" : true,
"numberOfElements" : 5,
"totalPages" : 0,
"pageable" : {
"paged" : true,
"pageNumber" : 7,
"offset" : 2,
"pageSize" : 9,
"unpaged" : true
},
"sort" : {
"unsorted" : true,
"sorted" : true,
"empty" : true
},
"content" : [ {
"date" : "2000-01-23T04:56:07.000+00:00",
"name" : "name",
"description" : "description",
"client" : "client",
"id" : 0,
"category" : "category",
"userId" : "userId",
"url" : "url"
}, {
"date" : "2000-01-23T04:56:07.000+00:00",
"name" : "name",
"description" : "description",
"client" : "client",
"id" : 0,
"category" : "category",
"userId" : "userId",
"url" : "url"
} ],
"first" : true,
"totalElements" : 6,
"empty" : true
}
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the response header.
Responses
200
OK
PagePortfolioItem
Up
get /api/portfolioItems/{portfolioItemId}/previewImage
(getPreviewImage)
Path parameters
portfolioItemId (required)
Path Parameter — format: int64
Return type
Object
Example data
Content-Type: application/json
{ }
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the response header.
Responses
200
OK
Object
Up
post /api/portfolioItems/users/{userId}
(postPortfolioItem)
Path parameters
userId (required)
Path Parameter —
Consumes
This API call consumes the following media types via the request header:
Request body
Return type
Example data
Content-Type: application/json
{
"date" : "2000-01-23T04:56:07.000+00:00",
"name" : "name",
"description" : "description",
"client" : "client",
"id" : 0,
"category" : "category",
"userId" : "userId",
"url" : "url"
}
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the response header.
Responses
200
OK
PortfolioItem
Up
put /api/portfolioItems/users/{userId}/{portfolioItemId}/image1
(putImage1)
Path parameters
userId (required)
Path Parameter —
portfolioItemId (required)
Path Parameter — format: int64
Consumes
This API call consumes the following media types via the request header:
Request body
Return type
String
Example data
Content-Type: application/json
"http://example.com/aeiou"
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the response header.
Responses
200
OK
String
Up
put /api/portfolioItems/users/{userId}/{portfolioItemId}/image2
(putImage2)
Path parameters
userId (required)
Path Parameter —
portfolioItemId (required)
Path Parameter — format: int64
Consumes
This API call consumes the following media types via the request header:
Request body
Return type
String
Example data
Content-Type: application/json
"http://example.com/aeiou"
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the response header.
Responses
200
OK
String
Up
put /api/portfolioItems/users/{userId}/{portfolioItemId}/image3
(putImage3)
Path parameters
userId (required)
Path Parameter —
portfolioItemId (required)
Path Parameter — format: int64
Consumes
This API call consumes the following media types via the request header:
Request body
Return type
String
Example data
Content-Type: application/json
"http://example.com/aeiou"
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the response header.
Responses
200
OK
String
Up
put /api/portfolioItems/users/{userId}/{portfolioItemId}
(putPortfolioItem)
Path parameters
userId (required)
Path Parameter —
portfolioItemId (required)
Path Parameter — format: int64
Consumes
This API call consumes the following media types via the request header:
Request body
Return type
Example data
Content-Type: application/json
{
"date" : "2000-01-23T04:56:07.000+00:00",
"name" : "name",
"description" : "description",
"client" : "client",
"id" : 0,
"category" : "category",
"userId" : "userId",
"url" : "url"
}
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the response header.
Responses
200
OK
PortfolioItem
Up
put /api/portfolioItems/users/{userId}/{portfolioItemId}/previewImage
(putPreviewImage)
Path parameters
userId (required)
Path Parameter —
portfolioItemId (required)
Path Parameter — format: int64
Consumes
This API call consumes the following media types via the request header:
Request body
Return type
String
Example data
Content-Type: application/json
"http://example.com/aeiou"
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the response header.
Responses
200
OK
String
Up
get /api/templates/{id}
(getTemplate)
Path parameters
id (required)
Path Parameter — format: int64
Return type
Example data
Content-Type: application/json
{
"htmlPath" : "htmlPath",
"price" : 5,
"name" : "name",
"description" : "description",
"id" : 5,
"free" : true
}
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the response header.
Responses
200
OK
Template
(getTemplates)
Query parameters
pageable (required)
Query Parameter —
Return type
Example data
Content-Type: application/json
{
"number" : 2,
"size" : 1,
"last" : true,
"numberOfElements" : 7,
"totalPages" : 0,
"pageable" : {
"paged" : true,
"pageNumber" : 7,
"offset" : 2,
"pageSize" : 9,
"unpaged" : true
},
"sort" : {
"unsorted" : true,
"sorted" : true,
"empty" : true
},
"content" : [ {
"htmlPath" : "htmlPath",
"price" : 5,
"name" : "name",
"description" : "description",
"id" : 5,
"free" : true
}, {
"htmlPath" : "htmlPath",
"price" : 5,
"name" : "name",
"description" : "description",
"id" : 5,
"free" : true
} ],
"first" : true,
"totalElements" : 6,
"empty" : true
}
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the response header.
Responses
200
OK
PageTemplate
(postTemplate)
Consumes
This API call consumes the following media types via the request header:
Request body
Return type
Example data
Content-Type: application/json
{
"htmlPath" : "htmlPath",
"price" : 5,
"name" : "name",
"description" : "description",
"id" : 5,
"free" : true
}
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the response header.
Responses
200
OK
Template
Up
delete /api/users/{id}
(deleteUser)
Path parameters
id (required)
Path Parameter —
Return type
Example data
Content-Type: application/json
{
"website" : "website",
"city" : "city",
"degree" : "degree",
"description" : "description",
"bornDate" : "2000-01-23T04:56:07.000+00:00",
"password" : "password",
"phoneNumber" : "phoneNumber",
"surname" : "surname",
"freelance" : "freelance",
"name" : "name",
"id" : "id",
"category" : "category",
"age" : 0,
"email" : "email"
}
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the response header.
Responses
200
OK
User
Up
get /api/users/businessman
(getBusinessman)
Query parameters
pageable (required)
Query Parameter —
Return type
Example data
Content-Type: application/json
{
"number" : 5,
"size" : 1,
"last" : true,
"numberOfElements" : 5,
"totalPages" : 0,
"pageable" : {
"paged" : true,
"pageNumber" : 7,
"offset" : 2,
"pageSize" : 9,
"unpaged" : true
},
"sort" : {
"unsorted" : true,
"sorted" : true,
"empty" : true
},
"content" : [ {
"website" : "website",
"city" : "city",
"degree" : "degree",
"description" : "description",
"bornDate" : "2000-01-23T04:56:07.000+00:00",
"password" : "password",
"phoneNumber" : "phoneNumber",
"surname" : "surname",
"freelance" : "freelance",
"name" : "name",
"id" : "id",
"category" : "category",
"age" : 0,
"email" : "email"
}, {
"website" : "website",
"city" : "city",
"degree" : "degree",
"description" : "description",
"bornDate" : "2000-01-23T04:56:07.000+00:00",
"password" : "password",
"phoneNumber" : "phoneNumber",
"surname" : "surname",
"freelance" : "freelance",
"name" : "name",
"id" : "id",
"category" : "category",
"age" : 0,
"email" : "email"
} ],
"first" : true,
"totalElements" : 6,
"empty" : true
}
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the response header.
Responses
200
OK
PageUser
Up
get /api/users/designers
(getDesigners)
Query parameters
pageable (required)
Query Parameter —
Return type
Example data
Content-Type: application/json
{
"number" : 5,
"size" : 1,
"last" : true,
"numberOfElements" : 5,
"totalPages" : 0,
"pageable" : {
"paged" : true,
"pageNumber" : 7,
"offset" : 2,
"pageSize" : 9,
"unpaged" : true
},
"sort" : {
"unsorted" : true,
"sorted" : true,
"empty" : true
},
"content" : [ {
"website" : "website",
"city" : "city",
"degree" : "degree",
"description" : "description",
"bornDate" : "2000-01-23T04:56:07.000+00:00",
"password" : "password",
"phoneNumber" : "phoneNumber",
"surname" : "surname",
"freelance" : "freelance",
"name" : "name",
"id" : "id",
"category" : "category",
"age" : 0,
"email" : "email"
}, {
"website" : "website",
"city" : "city",
"degree" : "degree",
"description" : "description",
"bornDate" : "2000-01-23T04:56:07.000+00:00",
"password" : "password",
"phoneNumber" : "phoneNumber",
"surname" : "surname",
"freelance" : "freelance",
"name" : "name",
"id" : "id",
"category" : "category",
"age" : 0,
"email" : "email"
} ],
"first" : true,
"totalElements" : 6,
"empty" : true
}
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the response header.
Responses
200
OK
PageUser
Up
get /api/users/engineers
(getEngineers)
Query parameters
pageable (required)
Query Parameter —
Return type
Example data
Content-Type: application/json
{
"number" : 5,
"size" : 1,
"last" : true,
"numberOfElements" : 5,
"totalPages" : 0,
"pageable" : {
"paged" : true,
"pageNumber" : 7,
"offset" : 2,
"pageSize" : 9,
"unpaged" : true
},
"sort" : {
"unsorted" : true,
"sorted" : true,
"empty" : true
},
"content" : [ {
"website" : "website",
"city" : "city",
"degree" : "degree",
"description" : "description",
"bornDate" : "2000-01-23T04:56:07.000+00:00",
"password" : "password",
"phoneNumber" : "phoneNumber",
"surname" : "surname",
"freelance" : "freelance",
"name" : "name",
"id" : "id",
"category" : "category",
"age" : 0,
"email" : "email"
}, {
"website" : "website",
"city" : "city",
"degree" : "degree",
"description" : "description",
"bornDate" : "2000-01-23T04:56:07.000+00:00",
"password" : "password",
"phoneNumber" : "phoneNumber",
"surname" : "surname",
"freelance" : "freelance",
"name" : "name",
"id" : "id",
"category" : "category",
"age" : 0,
"email" : "email"
} ],
"first" : true,
"totalElements" : 6,
"empty" : true
}
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the response header.
Responses
200
OK
PageUser
Up
get /api/users/{id}/image
(getImage)
Path parameters
id (required)
Path Parameter —
Return type
Object
Example data
Content-Type: application/json
{ }
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the response header.
Responses
200
OK
Object
Up
get /api/users/photographer
(getPhotographer)
Query parameters
pageable (required)
Query Parameter —
Return type
Example data
Content-Type: application/json
{
"number" : 5,
"size" : 1,
"last" : true,
"numberOfElements" : 5,
"totalPages" : 0,
"pageable" : {
"paged" : true,
"pageNumber" : 7,
"offset" : 2,
"pageSize" : 9,
"unpaged" : true
},
"sort" : {
"unsorted" : true,
"sorted" : true,
"empty" : true
},
"content" : [ {
"website" : "website",
"city" : "city",
"degree" : "degree",
"description" : "description",
"bornDate" : "2000-01-23T04:56:07.000+00:00",
"password" : "password",
"phoneNumber" : "phoneNumber",
"surname" : "surname",
"freelance" : "freelance",
"name" : "name",
"id" : "id",
"category" : "category",
"age" : 0,
"email" : "email"
}, {
"website" : "website",
"city" : "city",
"degree" : "degree",
"description" : "description",
"bornDate" : "2000-01-23T04:56:07.000+00:00",
"password" : "password",
"phoneNumber" : "phoneNumber",
"surname" : "surname",
"freelance" : "freelance",
"name" : "name",
"id" : "id",
"category" : "category",
"age" : 0,
"email" : "email"
} ],
"first" : true,
"totalElements" : 6,
"empty" : true
}
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the response header.
Responses
200
OK
PageUser
(getUser)
Path parameters
id (required)
Path Parameter —
Return type
Example data
Content-Type: application/json
{
"website" : "website",
"city" : "city",
"degree" : "degree",
"description" : "description",
"bornDate" : "2000-01-23T04:56:07.000+00:00",
"password" : "password",
"phoneNumber" : "phoneNumber",
"surname" : "surname",
"freelance" : "freelance",
"name" : "name",
"id" : "id",
"category" : "category",
"age" : 0,
"email" : "email"
}
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the response header.
Responses
200
OK
User
(getUsers)
Query parameters
pageable (required)
Query Parameter —
Return type
Example data
Content-Type: application/json
{
"number" : 5,
"size" : 1,
"last" : true,
"numberOfElements" : 5,
"totalPages" : 0,
"pageable" : {
"paged" : true,
"pageNumber" : 7,
"offset" : 2,
"pageSize" : 9,
"unpaged" : true
},
"sort" : {
"unsorted" : true,
"sorted" : true,
"empty" : true
},
"content" : [ {
"website" : "website",
"city" : "city",
"degree" : "degree",
"description" : "description",
"bornDate" : "2000-01-23T04:56:07.000+00:00",
"password" : "password",
"phoneNumber" : "phoneNumber",
"surname" : "surname",
"freelance" : "freelance",
"name" : "name",
"id" : "id",
"category" : "category",
"age" : 0,
"email" : "email"
}, {
"website" : "website",
"city" : "city",
"degree" : "degree",
"description" : "description",
"bornDate" : "2000-01-23T04:56:07.000+00:00",
"password" : "password",
"phoneNumber" : "phoneNumber",
"surname" : "surname",
"freelance" : "freelance",
"name" : "name",
"id" : "id",
"category" : "category",
"age" : 0,
"email" : "email"
} ],
"first" : true,
"totalElements" : 6,
"empty" : true
}
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the response header.
Responses
200
OK
PageUser
Up
get /api/users/statistics
(getUsersStatistics)
Return type
array[Integer]
Example data
Content-Type: application/json
[ 0, 0 ]
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the response header.
Responses
200
OK
(postUser)
Consumes
This API call consumes the following media types via the request header:
Request body
Return type
Example data
Content-Type: application/json
{
"website" : "website",
"city" : "city",
"degree" : "degree",
"description" : "description",
"bornDate" : "2000-01-23T04:56:07.000+00:00",
"password" : "password",
"phoneNumber" : "phoneNumber",
"surname" : "surname",
"freelance" : "freelance",
"name" : "name",
"id" : "id",
"category" : "category",
"age" : 0,
"email" : "email"
}
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the response header.
Responses
200
OK
User
(putUser)
Path parameters
id (required)
Path Parameter —
Consumes
This API call consumes the following media types via the request header:
Request body
Return type
Example data
Content-Type: application/json
{
"website" : "website",
"city" : "city",
"degree" : "degree",
"description" : "description",
"bornDate" : "2000-01-23T04:56:07.000+00:00",
"password" : "password",
"phoneNumber" : "phoneNumber",
"surname" : "surname",
"freelance" : "freelance",
"name" : "name",
"id" : "id",
"category" : "category",
"age" : 0,
"email" : "email"
}
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the response header.
Responses
200
OK
User
Up
put /api/users/{id}/image
(putUserImage)
Path parameters
id (required)
Path Parameter —
Consumes
This API call consumes the following media types via the request header:
Request body
Return type
String
Example data
Content-Type: application/json
"http://example.com/aeiou"
Produces
This API call produces the following media types according to the request header;
the media type will be conveyed by the response header.
Responses
200
OK
String
[ Jump to Methods ]
Table of Contents
AuthResponse
LoginRequest
Message
MessageDTO
PagePortfolioItem
PageTemplate
PageUser
Pageable
PortfolioItem
PortfolioItemDTO
Sort
Template
TemplateDTO
User
UserDTO
status (optional)
SUCCESS
FAILURE
message (optional)
error (optional)
username (optional)
password (optional)
id (optional)
text (optional)
sendDate (optional)
content (optional)
sender (optional)
receiver (optional)
totalPages (optional)
totalElements (optional)
size (optional)
content (optional)
number (optional)
sort (optional)
first (optional)
last (optional)
numberOfElements (optional)
pageable (optional)
empty (optional)
totalPages (optional)
totalElements (optional)
size (optional)
content (optional)
number (optional)
sort (optional)
first (optional)
last (optional)
numberOfElements (optional)
pageable (optional)
empty (optional)
totalPages (optional)
totalElements (optional)
size (optional)
content (optional)
number (optional)
sort (optional)
first (optional)
last (optional)
numberOfElements (optional)
pageable (optional)
empty (optional)
offset (optional)
sort (optional)
pageNumber (optional)
pageSize (optional)
paged (optional)
unpaged (optional)
id (optional)
userId (optional)
name (optional)
description (optional)
category (optional)
client (optional)
url (optional)
date (optional)
id (optional)
userId (optional)
name (optional)
description (optional)
previewImg (optional)
image1 (optional)
image2 (optional)
image3 (optional)
category (optional)
client (optional)
url (optional)
date (optional)
sorted (optional)
unsorted (optional)
empty (optional)
id (optional)
htmlPath (optional)
name (optional)
price (optional)
description (optional)
free (optional)
id (optional)
htmlPath (optional)
name (optional)
price (optional)
description (optional)
free (optional)
id (optional)
name (optional)
surname (optional)
age (optional)
bornDate (optional)
email (optional)
password (optional)
phoneNumber (optional)
website (optional)
city (optional)
category (optional)
degree (optional)
freelance (optional)
description (optional)
id (optional)
name (optional)
surname (optional)
bornDate (optional)
email (optional)
password (optional)
phoneNumber (optional)
website (optional)
city (optional)
category (optional)
degree (optional)
freelance (optional)
description (optional)
profilePhoto (optional)


There are several ways of mounting the Nest application. You can create a web app, microservice or just a Nest execution context. The Nest context is a wrapper around the Nest container, which holds all instantiated classes. We can grab any existing instance from within any imported module directly using application object. Thanks to that, you can take advantages of the Nest framework everywhere, including CRON jobs and even build a CLI on top of it.
To create a Nest application context, we are using the following syntax:
{{ executionContext }}
Afterwards, Nest allows you to pick any instance registered within Nest application.
Let's imagine that we have a TasksController
in the TasksModule
.
This class provides a set of usable methods, which we want to call from within CRON job.
{{ pickTasksController }}
And that's it. To grab TasksController
instance we have used 2 methods, well-described in the below table:
get()
|
Makes possible to retrieve the instance of the component or controller available inside the processed module. |
select()
|
Allows you to navigate through the module tree, for example, to pull out a specific instance from the selected module. |
Hint The root module is selected by default. To select any other module, you need to go through entire modules stack (step by step).


source: https://www.facebook.com/groups/TheLoopedGroup/permalink/2297417880474865 (closed group)
method: analyzing 200+ answers from facebook post, ignoring values that are identified as predictions or rough estimates as well as worst/best case values. The average was used if multiple values or ranges were given.


THE MASK A film review by James Berardinelli Copyright 1994 James Berardinelli
Rating (0 to 10): 6.2
Date Released: 7/29/94 Running Length: 1:41 Rated: PG-13 (Language, violence, mature themes)
Starring: Jim Carrey, Peter Riegert, Peter Greene, Amy Yasbeck, Cameron Diaz, Max Director: Charles Russell Producer: Bob Engelman Screenplay: Mike Werb Cinematography: John R. Leonetti Music: Randy Edelman Released by New Line Cinema
I never thought it could happen. Jim Carrey (star of ACE VENTURA: PET DETECTIVE) upstaged--and not once, but twice! While it's true that THE MASK is another vehicle for the rubber-featured modern-day amalgamation of Jerry Lewis and the Three Stooges, this time around Carrey has some competition, and there are a number of scenes where he ends up playing second fiddle.
The special effects are, for the most part, rather impressive, but they're as frequently guilty of overwhelming the star's performance as complimenting it. Nevertheless, if you think Carrey has an expressive face, wait 'til you see him with the mask on. Eyes pop out and jaws drop--literally. ILM goes to work with their own version of live-action animation whenever anyone dons the mask. Good costumes and make-up serve only to enhance the computer-generated visuals.
And, even as the audience's attention is arrested by the work of the effects wizards, there's still room for a canine scene-stealer. Milo (whose real name is Max) is the perfect foil for Carrey's goofiness and--yes--there are occasions where his animal antics divert the spotlight away from his two-legged co-star.
Carrey, meanwhile, is playing a split role: mild-mannered Stanley Ipkiss and his superhuman alter-ego, the Mask. Stanley is a shy, unassuming man who works in a bank and lives with Milo in a small apartment. One day, following a terrible bout with Murphy's Law, Stanley finds a curious-looking mask floating amidst some debris in a river. Later, at home, when he finally gets around to trying the mask on, Stanley learns that this isn't some archeological curiosity. It has power--the power to transform.  Insecurity is replaced by flamboyance. Physically, there seems to be little that he can't do, from twisting his body into a pretzel to taking a bullet in the chest or forming a tommy gun out of a balloon.
While wearing the mask, Stanley makes a comment about becoming a superhero, but he's really interested in one thing: Tina Carlyle (Cameron Diaz), a voluptuous nightclub singer who works for a local gangster (Peter Greene). Following a bank robbery (to finance his wooing), the Mask discovers that a cop, Lt. Mitch Kellaway (Peter Riegert), is hot on his trail. And it's not that difficult a trail to follow. After all, how many lime-faced bandits are there who move like the Warner Brothers cartoon Tasmanian Devil?
Carrey plays Stanley with surprising restraint, giving his zaniness free reign only when the mask is on. In some ways, it's a Clark Kent/Superman thing. Stanley and the Mask might share the same body, but they're very different. One is a typical nice guy who finishes last. The other is Robin Williams' genie from ALADDIN come to life (Carrey provides dozens of whirlwind impersonations).
As a comedy, THE MASK is genial, but its recycled plot is far too thin for the film to succeed as either an adventure or a spoof. "Comic book" and "cartoon" are two terms that come to mind for describing this movie. Neither is intended to be pejorative, but each conjures certain apt images.
For me, ACE VENTURA was too much concentrated Jim Carrey. In THE MASK, the forceful personality is diluted. The star is mostly-subdued except during those off-the-wall bursts of energy that accompany the appearance of the Mask. The film is entertaining enough--in a light, undemanding sort of way--but more than the combined efforts of Carrey, ILM, and Max are demanded to camouflage the seams and holes still apparent in this production.
- James Berardinelli<EMAIL_ADDRESS>.
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: page title: Wang Siyao description: Always to believe something wonderful is about to happen. background: '/img/bg-about.jpg' ---
Hi, my name is Wang Siyao. Currently I am a first-year Master student in computer science at Brown University. I am actively seeking for summer internship opportunities in 2019 ^_^


Covering 3-coloured random graphs with monochromatic trees.
Y. Kohayakawa, G. O. Mota, W. Mendonça, and B. Schülke.
Proceedings of EUROCOMB'19.


This document was generated using the LaTeX2HTML translator Version 98.1p1 release (March 2nd, 1998)
Copyright © 1993, 1994, 1995, 1996, 1997, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
The command line arguments were:
latex2html -tmp /tmp/eco-doc27187 graphcode.
The translation was initiated by Russell Standish on 2007-03-13


IdleLands is a great game about idling, finding cool loot, and laughing at the crazy things that can happen.
Registration is easy - just a few clicks and you're in the game!
Sign Up


The dataParser module is responsible for importing game data from XML game files to memory using the core module to structure it. It can be used by the Interpreter as well as the Editor.
It consists of the dataParser.GameParser class.
Copyright (c) 2013 ICRL See the file license.txt for copying permission.
- class dataParser.GameParser[source]¶
This class can import games from XML files using the loadXMLGameData() function.
Attributes :
- game: holds all the game data after loadXMLGameData() is called and
- typeConverter: a dictionary which contains key-value pairs between the different types of the game model (e.g. “Number”) and a lambda expression to reconstruct it correctly for the game logic (e.g. lambda(n): float(n)). The reason for using lambda expressions is in order to allow for the evaluation of these objects (e.g. if it is a core.components.Resource) to be carried out during run-time instead of during initialisation. This means that everything is evaluated as it should, including objects which are created or edited on the fly during gameplay.
- createActionObject(action, game)[source]¶
Auxiliary function used by loadXMLGameData() which creates a core.components.Action object.
Parameters :
- action: an <action> XML node from the game data file.
- game: the game attribute of GameParser.
Returns :
- A populated core.components.Action.
- createConditionObject(condition, game)[source]¶
Auxiliary function used by createActionObject() which creates a core.components.Condition object.
Parameters :
- condition: a <condition> XML node from the game data file.
- game: the game attribute of GameParser.
Returns :
- A populated core.components.Condition.
- createEffectObject(effect, game)[source]¶
Auxiliary function used by createActionObject() which creates a core.components.Effect object.
Parameters :
- effect: an <effect> XML node from the game data file.
- game: the game attribute of GameParser.
Returns :
- A populated core.components.Effect.
- createResourceObject(resource)[source]¶
Auxiliary function used by loadXMLGameData() which creates a core.components.Resource object.
Parameters :
- resource: a <resource> XML node from the game data file.
Returns :
- A populated core.components.Resource.
- loadXMLGameData(gameDataFile)[source]¶
The main function of this class, which loads an XML game data file into memory. It uses the ElementTree class from xml.etree to navigate through the XML tree and gather all the information.
Parameters :
- gameDataFile: a string to the XML file e.g. “game1.xml”.
Exceptions :
- “Error loading game file.” is the file is not found or if the file contains bad XML.
Returns :
- A populated core.components.Game object.