16 Define dependencies
16.1 Introduction
There are numerous HTML templates all over the web. However, few may be suitable for shiny, for reasons mentioned in Chapter 3:
- shiny is built on top of Bootstrap 3 (HTML, CSS and Javascript framework), and changing the framework will not be a trivial endeavor. However, shinymaterial and shiny.semantic are good examples that show this is possible.
- shiny relies on jQuery. Consequently, all templates based upon React, Vue and other Javascript framework will not be natively supported. Again, there exist some examples for React with shiny and more generally, the reactR package developed by Kent Russell and Alan Dipert. Chapter 27 provides a general overview.
The web provides a myriad of relevant open source HTML templates like Colorlib and Creative Tim. Many of the RinteRface packages are actually built on top of those resources.
In the next chapters, we will focus on the pretty tabler.io dashboard template (Figure 16.1). We’ll describe how to create an R wrapper on top of it, thereby making it available for all shiny users.
This chapter was written about two years ago, on top of the 1.0.0-alpha.7 GitHub release. If the Tabler library significantly evolved since that date, the way to incorporate it into the shiny ecosystem remains unchanged. Hence, the methods we describe below may be generalized to other templates. We recommend to read this chapter before the next part in 21, during which we present a more automated workflow, if you want to grasp the main concepts.
16.2 Discover the project
The first step of any template adaptation consists of exploring the underlying GitHub repository and look for mandatory elements, like CSS/JS dependencies. This is a similar strategy if you want to incorporate an htmlwidget as well.
As depicted by Figure 16.2, the most important folders are:
- dist, which contains CSS and JS files as well as other libraries like Bootstrap and jQuery. It is also a good moment to look at the version of each dependency that might conflict with Shiny.
- demo is the website folder used for demonstration purpose. This is our source to explore the template capabilities in depth.
The scss and build folder may be used to customize the tabler template directly. However as stated above, directions on how to do so are out of scope for this book.
16.3 Identify mandatory dependencies
Bootstrap 4
, jQuery
, tabler.min.css
and tabler.min.js
are key elements for the template,
contrary to flag icons which are optional (and take a lot of space).
If your goal is to release your template on CRAN, be mindful of the 5 Mb maximum size limit.
From personal experience, I can attest that this is quite challenging to manage.
To inspect dependencies, we proceed as follows:
- Download or clone the GitHub repository.
- Go to the demo folder and open the
layout-dark.html
file. - Open the HTML inspector.
As shown on Figure 16.3 left-hand side, we need to include the tabler.min.css
from the header. If you are not convinced, try to remove it from the DOM and see what happens. jqvmap is actually related to an external visualization plugin used in the demo. Finally the demo.min.css
file is for the demo purpose.
This will not prevent the template from working, so we will skip it for now. So far so good, we only need one file thus!
JavaScript dependencies are shown on the right-hand side and located at the end of the body tag. Because we will not need all chart-related dependencies like apexcharts
, jquery.vmap
and vmap world
, we may safely ignore them. We only retain the Bootstrap 4, jQuery core and tabler.min.js
, in the same order.
16.4 Bundle dependencies
With the help of the htmlDependency()
function, we are going to create our main Tabler HTML dependency containing all assets to allow our template to render properly. In this example, we are going to cheat a bit: instead of handling local files, we will use a CDN (content delivery network) that hosts all necessary Tabler assets. This avoids to include all the necessary files in the R package, as well as in a GitHub repository.
For a production template, that is designed to go on CRAN, we recommend to host files locally, as described in Chapter 21.
library(htmltools)
tablers_deps <- htmlDependency(
name = "tabler",
version = "1.0.7", # we take that of tabler,
src = c(href = "https://cdn.jsdelivr.net/npm/tabler@1.0.0-alpha.7/dist/"),
script = "js/tabler.min.js",
stylesheet = "css/tabler.min.css"
)
We advise the reader to create one HTML dependency per element. The Bootstrap version is 4.3.1
. We can also use a CDN:
bs4_deps <- htmlDependency(
name = "Bootstrap",
version = "4.3.1",
src = c(href = "https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/"),
script = "bootstrap.bundle.min.js"
)
We finally create our dependency manager:
# add all dependencies to a tag. Don't forget to set append to TRUE to preserve any existing dependency
add_tabler_deps <- function(tag) {
# below, the order is of critical importance!
deps <- list(bs4_deps, tablers_deps)
attachDependencies(tag, deps, append = TRUE)
}
Notice the dependencies order in the deps
list. This will be exactly the same order in the head
of the HTML page. Some libraries require to be loaded at a specific place, like the Tabler dependencies which must come after Bootstrap.
Let’s see how to use add_tabler_deps()
. We consider a <div>
placeholder and check for its dependencies with findDependencies()
.
Then, we wrap it with add_tabler_deps()
:
tag <- div()
findDependencies(tag)
#> NULL
tag <- add_tabler_deps(div())
findDependencies(tag)
#> [[1]]
#> List of 10
#> $ name : chr "Bootstrap"
#> $ version : chr "4.3.1"
#> $ src :List of 1
#> ..$ href: chr "https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/"
#> $ meta : NULL
#> $ script : chr "bootstrap.bundle.min.js"
#> $ stylesheet: NULL
#> $ head : NULL
#> $ attachment: NULL
#> $ package : NULL
#> $ all_files : logi TRUE
#> - attr(*, "class")= chr "html_dependency"
#>
#> [[2]]
#> List of 10
#> $ name : chr "tabler"
#> $ version : chr "1.0.7"
#> $ src :List of 1
#> ..$ href: chr<EMAIL_ADDRESS>#> $ meta : NULL
#> $ script : chr "js/tabler.min.js"
#> $ stylesheet: chr "css/tabler.min.css"
#> $ head : NULL
#> $ attachment: NULL
#> $ package : NULL
#> $ all_files : logi TRUE
#> - attr(*, "class")= chr "html_dependency"
As shown above, our dependencies are applied to the div, in the correct order. This order is set by the list list(bs4_deps, tablers_deps)
and allows use to avoid potential conflicts. If we try to run this simple tag in a shiny app, we notice that all dependencies are added to the <head>
tag, whereas the original template loads JavaScript dependencies in the <body>
.
Unfortunately, htmltools does not allow developers to distribute dependencies in different places yet.
Here there is no impact, but this might be no-go for templates requiring JavaScript to be placed in the body. In practice, this is challenging to guess and may only be solved by manual testing.
library(shiny)
ui <- fluidPage(tag)
server <- function(input, output, session) {}
shinyApp(ui, server)
Even though the add_tabler_deps()
function may be applied to any tag, we will use it with the core HTML template, that remain to be designed!
Would you like to see if our dependency system works? Let’s meet in the next chapter to design the main dashboard layout.


About the game
"The Three Villagers" is a 2D tile-based text adventure game for the browser. The player may choose between several options to influence and change the storyline.
You take on the role of an initially neutral player who is confronted with other people's affairs. It's up to you what decisions you make in the game.
The Characters
Peter
Smith who is always willing to help.
Cedric
The forgetful salesman.
David
Soldier and part of the city guard.
Choose your own adventure!
Move freely!
Explore the game world on your own.
It's up to you!
Make decisions to influence and change the story.
Interact with characters
Talk to other characters to learn more about the story.
Different endings!
Based on your decisions the story can have multiple endings.
Ready for the Adventure?
Contribute to the project
If you are willing to support the project or you have great ideas to further improve the game, please contact me and visit the project's GitHub site. Thank you!


Without the allow-free-text
attribute, it's impossible to enter a non existing item
ctrl.freeTextDemo.color = {{ctrl.freeTextDemo.color | json}}
Use the allow-free-text
attribute to allow non existing item in the box
ctrl.freeTextDemo.color2 = {{ctrl.freeTextDemo.color2 | json}}


Registration Form
Name :
Address:
Email:
DOB:
Image:
Gender:
Male
Female
Others
Phone :
Language :
English
Malayalam
Hindi
State :
---Select---
Kerala
Karnataka
Tamilnadu
Password :


Log in via Upwork {% else %}
Please make sure to specify your Upwork OAuth key and secret (see example_project/settings.py).
Visit Upwork to apply for an API key if you don't have one yet. {% endif %}


|
||||||||||
| PREV NEXT | FRAMES NO FRAMES |
| Packages that use TopicMapView | |
|---|---|
| net.ontopia.topicmaps.viz |
| Uses of TopicMapView in net.ontopia.topicmaps.viz |
|---|
| Fields in net.ontopia.topicmaps.viz declared as TopicMapView | |
|---|---|
protected TopicMapView |
TMAbstractNode.topicMapView
|
| Methods in net.ontopia.topicmaps.viz that return TopicMapView | |
|---|---|
TopicMapView |
VizController.getView()
|
TopicMapView |
ApplicationContext.getView()
Get the view attached to this context |
| Methods in net.ontopia.topicmaps.viz with parameters of type TopicMapView | |
|---|---|
void |
SetFocusNode.execute(TopicMapView view)
|
void |
RecoveryObjectIF.execute(TopicMapView view)
|
void |
DoSetTTVisibilityState.execute(TopicMapView view)
|
void |
DoSetTTVisibility.execute(TopicMapView view)
|
void |
DoSetLocality.execute(TopicMapView view)
|
void |
DoSetInASFilterState.execute(TopicMapView view)
|
void |
DoSetInASFilter.execute(TopicMapView view)
|
void |
DoSetATVisibilityState.execute(TopicMapView view)
|
void |
DoSetATVisibility.execute(TopicMapView view)
|
void |
DoSetASStrictnessState.execute(TopicMapView view)
|
void |
DoSetASStrictness.execute(TopicMapView view)
|
void |
DoHideNode.execute(TopicMapView view)
|
void |
DoHideEdge.execute(TopicMapView view)
|
void |
DoFocusNode.execute(TopicMapView view)
|
void |
DoExpandNode.execute(TopicMapView view)
|
void |
DoCollapseNode.execute(TopicMapView view)
|
void |
DeleteTMTopicNode.execute(TopicMapView view)
|
void |
DeleteTMRoleEdge.execute(TopicMapView view)
|
void |
DeleteTMClassInstanceAssociation.execute(TopicMapView view)
|
void |
DeleteTMAssociationNode.execute(TopicMapView view)
|
void |
DeleteTMAssociationEdge.execute(TopicMapView view)
|
void |
CreateTMTopicNode.execute(TopicMapView view)
|
void |
CreateTMRoleEdge.execute(TopicMapView view)
|
void |
CreateTMClassInstanceAssociation.execute(TopicMapView view)
|
void |
CreateTMAssociationNode.execute(TopicMapView view)
|
void |
CreateTMAssociationEdge.execute(TopicMapView view)
|
TMAbstractEdge |
EdgeRecoveryObjectIF.recoverEdge(TopicMapView view)
|
TMAbstractEdge |
CreateTMRoleEdge.recoverEdge(TopicMapView view)
|
TMAbstractEdge |
CreateTMClassInstanceAssociation.recoverEdge(TopicMapView view)
|
TMAbstractEdge |
CreateTMAssociationEdge.recoverEdge(TopicMapView view)
|
TMAbstractNode |
NodeRecoveryObjectIF.recoverNode(TopicMapView view)
|
TMAbstractNode |
CreateTMTopicNode.recoverNode(TopicMapView view)
|
TMAbstractNode |
CreateTMAssociationNode.recoverNode(TopicMapView view)
|
void |
VizTopicMapConfigurationManager.setAssociationTypeLineWeight(TopicIF type,
int i,
TopicMapView view)
Sets the line weight of the given association 'type' and updates 'view' accordingly. |
void |
VizTopicMapConfigurationManager.setAssociationTypeShape(TopicIF type,
int i,
TopicMapView view)
Sets the shape of the given association 'type' and updates 'view' accordingly. |
void |
VizTopicMapConfigurationManager.setAssociationTypeVisible(TopicIF type,
boolean visible,
TopicMapView view)
Sets the given association 'type' to be visible and updates 'view' accordingly. |
void |
VizTopicMapConfigurationManager.setAssociationTypeVisible(TopicIF type,
int visibility,
TopicMapView view)
Sets the given association 'type' be either filtered in, filtered out or to use the filter setting of the default type. |
void |
VizTopicMapConfigurationManager.setColorToDefault(TopicIF type,
boolean topicType,
TopicMapView view)
Sets the color of a given topic/association 'type' to the default value and updates 'view' accordingly. |
void |
VizTopicMapConfigurationManager.setFontToDefault(TopicIF type,
boolean topicType,
TopicMapView view)
Sets the font of a given topic/association 'type' to the default value and updates 'view' accordingly. |
void |
VizTopicMapConfigurationManager.setTopicTypeShape(TopicIF type,
int i,
TopicMapView view)
Sets the shape of the given topic 'type' and updates 'view' accordingly. |
void |
VizTopicMapConfigurationManager.setTopicTypeShapePadding(TopicIF type,
int i,
TopicMapView view)
Sets the shape padding of the given topic 'type' and updates 'view' accordingly. |
void |
VizTopicMapConfigurationManager.setTypeColor(TopicIF type,
Color c,
TopicMapView view)
Sets the colour of a given 'type' and updates 'view' accordingly. |
void |
VizTopicMapConfigurationManager.setTypeExcluded(TopicIF type,
TopicMapView view)
Sets the given topic 'type' to be excluded and updates 'view' accordingly. |
void |
VizTopicMapConfigurationManager.setTypeFont(TopicIF type,
Font font,
TopicMapView view)
Sets the font of the given topic/association 'type' and updates 'view' accordingly. |
void |
VizTopicMapConfigurationManager.setTypeIconFilename(TopicIF type,
String string,
TopicMapView view)
Sets the name of the icon file (optional) of the given topic 'type' and updates 'view' accordingly. |
void |
VizTopicMapConfigurationManager.setTypeIncluded(TopicIF type,
TopicMapView view)
Sets the given topic 'type' to be included and updates 'view' accordingly. |
void |
VizTopicMapConfigurationManager.setTypeVisibility(TopicIF type,
int visibility,
TopicMapView view)
Sets the given topic 'type' be either filtered in, filtered out or to use the filter setting of the default type. |
void |
VizTopicMapConfigurationManager.setTypeVisible(TopicIF type,
boolean visible,
TopicMapView view)
Sets the given topic 'type' to be visible and updates 'view' accordingly. |
void |
ApplicationContextIF.setView(TopicMapView view)
Set the view |
void |
ApplicationContext.setView(TopicMapView view)
Set the view for this context |
| Constructors in net.ontopia.topicmaps.viz with parameters of type TopicMapView | |
|---|---|
TMAssociationNode(AssociationIF assoc,
TopicIF aScopingTopic,
TopicMapView topicMapView)
|
|
TMTopicNode(TopicIF topic,
TopicIF scopingTopic,
TopicMapView topicMapView)
|
|
||||||||||
| PREV NEXT | FRAMES NO FRAMES |


So I'll admit it: I've always kind of had a design crush on the Guardian's website, and I may or may not have tried to emulate it in various other news websites I've developed. What I love most about the Guardian's design is simply its proprietary...
In contrast with Norman –– who argues flatly for programmers to adopt a more immersive, task-centered approach to computer design rooted in cultural conventions ––Manovich contends in his paper on human-computer interfaces that designers should in...
Design is too often designer-centric instead of user-centric, argues Donald Norman in the sixth chapter of his book The Design of Everyday Things. Norman lays out the case that anyone acting as a designer – whether programmer, illustrator or devel...
Take a look at this fascinating visualization of last weekend's Superbowl ads created using a new startup tool called Hotspots.io. What's unique about this visualization is that it provides an interactive, feature-rich multimedia presentation of s...
The job of a journalist is to convey the facts. But when the facts conflict with an individual's preexisting beliefs, they often tend to get pushed aside. That's where the research of Nyhan and Reifler comes into play. In their 2011 study "Opening...


{% extends "base.html" %} {% block content %}
Confirm to delete the following Source System Profile item


Home
Contact Us
Other Links
Crochet Beards
This is a page dedicated to the joys of making and wearing crocheted beards.
Some Beards
Why should you own a crocheted beard?
Keeps your face warm!
Fashionably authoritative
Get rid of your homegrown beard for a handmade one.


LaziestLoader is a responive-aware lazy loader, mostly for images... but it'll do lots of other things, too.
Call the plugin on a jQuery selection. Optionally, specify a 'threshold' in the options object, which triggers a load x number of pixels before the item scrolls into the viewport.
$('.lazy').laziestloader({threshold:300});
The most basic method simply sets the src attribute as the element enters the viewport.

Specify a standard and an optional retina image.

Basic example always loads the same image, regardess of element width.

Go beyond a single source by providing a URL that has a width as part of the path or name.

Load a smaller image, if possible.

You can select a sized image that doesn't use the width value in the file name or path.

Pass in a callback to excute custom code after the src attribute has been changed. That's how the fancy black bar above works.
//html  // js var totalLoaded = 0; $("img.callback").laziestloader({ threshold: 100}, function() { totalLoaded += 1; $("#total").html(totalLoaded); });
Need fancier logic to determine the source path? You can write your own.
//html  // js $("img.custom").laziestloader({ threshold: 100, getSource: function($el) { var width = $el.width(); var height = Math.round(width * 0.5625); return 'http://placekitten.com/'+width+'/'+height; } });
Images aren't the only things with 'src' attributes. Try a video.
<video class="lazy" autoplay loop data-pattern="http://joshwilliams.com/projects/sunset-flipbook/videos/bridge-{{size}}.mp4" data-widths="[640, 900]"></video>
Often in responsive applications it's useful to set the height of an element before the source is loaded so the element will pre-fill the correct amount of space. In this example, because iFrames also have src attributes but need their sizes specified to be useful, we'll set the height via the plugin. The height is determined by multipling the element width by the 'data-height-multiplier' vaule. Note: This example will not be responsive because the iFrame content from YouTube isn't smart enough to repsond to the changing viewport.
// html  // js $('.iframe').laziestloader({threshold:300});
Need more control than custom source path generation? For example, you might want to completely rewrite the contents of your element. You can have your callback do all the work, sidestepping much of LaziestLoader's functionality.
// html

 // js $('div.override').laziestloader({ threshold: 100, setSourceMode: false // this is the important bit! }, function(){ var height = Math.round($(this).width() * 0.5625); $(this).html('
Boom!
') });


The specification of RELAX NG proclaims that it can work with external datatype libraries. The implication is that you can implement your own datatype library and it should work with existing tools like MSV.
To serve this objective, James Clark and Kohsuke KAWAGUCHI developed a datatype interface for Java, which is hosted at SourceForge.
MSV supports this interface, so you can write your own datatype library on top of this interface and it will work with MSV. One can also expect that a datatype library developed by using this interface will work with many other RELAX NG tools as well.
Custom datatype libraries are very flexible solutions. For example, you can write a datatype that checks the product code by querying a database.
For more information about how to develop a datatype library for RELAX NG, please download this (which is developed and maintained by Thai Open Source Software Center.)
One problem of using a custom datatype library is the portability; once you use it, your schema will not work with other non-Java RELAX NG tools.
This section explains a technique to avoid this problem. Consider the following schema:
As you see, this schema is not portable since some other tools may not recognize "myType" datatype.
You can avoid this problem by writing two schemas. The first schema would be:
The point is, to provide a <define> for a datatype. This is much like writing a parameter entity for a datatype in DTD.
Then write a second schema as follows:
The first schema is portable since it doesn't use any of the custom datatype libraries. Instead it falls back to the built-in "string" type.
The second schema is relatively short. It just overrides the definition of "myType" by using the custom datatype library. So in environments where the custom datatype library is available, you can use this schema to get a better validation.


🏡
Disclaimer: this site is made for desktop viewing. Not all projects are finished.
Tic-Tac-Toe
SIMON
Shut-Out Game
Calculator
Pomodoro Clock
Reading Room
Fizz Buzz
League of Legends API
D&D Sheets
HTML TEST
Dice Roller
Weather Forecast
Binary Translator
Resume
Pokemon Search


| I l@ve RuBoard |
The default allocator is declared as follows:
namespace std { template <class T> class allocator { public: //type definitions typedef size_t size_type; typedef ptrdiff_t difference_type; typedef T* pointer; typedef const T* const_pointer; typedef T& reference; typedef const T& const_reference; typedef T value_type; //rebind allocator to type U template <class U> struct rebind { typedef allocator<U> other; }; //return address of values pointer address(reference value) const; const_pointer address(const_reference value) const; //constructors and destructor allocator() throw(); allocator(const allocator&) throw(); template <class U> allocator(const allocator<U>&) throw(); ~allocator() throw(); //return maximum number of elements that can be allocated size_type max_size() const throw(); // allocate but don't initialize num elements of type T pointer allocate(size_type num, allocator<void>::const_pointer hint = 0); // initialize elements of allocated storage p with value value void construct(pointer p, const T& value); // delete elements of initialized storage p void destroy(pointer p); // deallocate storage p of deleted elements void deallocate(pointer p, size_type num); }; }
The default allocator uses the global operators new and delete to allocate and deallocate memory. Thus, allocate() may throw a bad_alloc exception. However, the default allocator may be optimized by reusing deallocated memory or by allocating more memory than needed to save time in additional allocations. So, the exact moments when operator new and operator delete are called are unspecified. See page 735 for a possible implementation of the default allocator.
There is a strange definition of a template structure inside the allocator, called rebind. This template structure provides the ability that any allocator may allocate storage of another type indirectly. For example, if Allocator is an allocator type, then
Allocator::rebind<T2>::other
is the type of the same allocator specialized for elements of type T2.
rebind<> is useful if you implement a container and you have to allocate memory for a type that differs from the element's type. For example, to implement a deque you typically need memory for arrays that manage blocks of elements (see the typical implementation of a deque on page 160). Thus, you need an allocator to allocate arrays of pointers to elements:
namespace std { template <class T, class Allocator = allocator<T> > class deque { ... private: //rebind allocator for type T* typedef typename Allocator::rebind<T*>::other PtrAllocator; Allocator alloc; //allocator for values of type T PtrAllocator block_alloc; //allocator for values of type T* T** elems; //array of blocks of elements ... }; }
To manage the elements of a deque you have to have one allocator to handle arrays/blocks of elements and another allocator to handle the array of element blocks. The latter has type PtrAllocator, which is the same allocator as for the elements. By using rebind<> the Allocator for the elements (Allocator) is bound to the type of an array of elements (T*).
The default allocator has the following specialization for type void:
namespace std { template <> class allocator<void> { public: typedef void* pointer; typedef const void* const_pointer; typedef void value_type; template <class U> struct rebind { typedef allocator<U> other; }; }; }
| I l@ve RuBoard |


Carrion Claw
Catoblepas
Cave Cricket
Cave Fisher
Cave Leech
Cave Moray
Cecaelia
Centaur
Centipede Swarm
Centipede, Giant
Cetacean, Blue Whale
Cetacean, Dolphin
Cetacean, Narwhale
Cetacean, Orca
Cetacean, Whale
Changeling
Chaos Beast
Chimera
Choker
Chupacabra
Chuul
Clam, Giant
Cloaker
Cobra, Iron
Cockatrice
Cockroach Swarm
Cockroach, Giant
Colour Out of Space
Cooshee
Copper Dragon, Adult
Copper Dragon, Ancient
Copper Dragon, Great Wyrm
Copper Dragon, Juvenile
Copper Dragon, Mature Adult
Copper Dragon, Old
Copper Dragon, Very Old
Copper Dragon, Very Young
Copper Dragon, Wyrm
Copper Dragon, Wyrmling
Copper Dragon, Young Adult
Copper Dragon, Young
Couatl
Crab Swarm
Crab, Bone
Crab, Coconut
Crab, Giant Hermit
Crab, Giant
Crab, Great Reef
Crab, King
Crawling Hand
Crayfish, Monstrous
Crocodile, Dire
Crocodile
Crypt Thing
Cyclops, Great
Cyclops


---
layout: theorems
---
Let $V$ be a vector space with dimension $n$. Then any subset with more than $n$ vectors is linearly dependent and a subset with less than $n$ vectors can span $V$.
Concepts
aximal linearly independent sets are minimal spanning sets, and are the basis for $V$.
Hypothesis
Coming soon
Results
Coming soon
Proof
Coming soon


Group Study Room Usage
Print this page
Financial Year & Semester Distribution
Week Day Distribution
Institute - Program Distribution
Visualized Data


--- layout: post title: Floral Windows date: 2010-03-18 19:07:12.000000000 +05:30 categories: - kiranoncemore - S3 IS tags: - Europe09 - floral - Salzburg - scenery - windows - winter status: publish type: post published: true meta: _edit_last: '2' author: login: kiranoncemore email<EMAIL_ADDRESS>display_name: kiranoncemore first_name: Kiran last_name: '' ---
Tv: 1/100; Av: F/3.5; f: 13.5mm(35mm-equiv: 86mm)
This photo was taken at the Salzburg Castle. It was on a sunny winter morning. I just loved the "cheerful" mood of the flower pots arranged right at the window. I also think the reflection of the scenery in the open windows adds a nice touch. The "bubble" like object that you see in the window at your right hand side completes the picture. I don't even know what it is - probably a lantern similar to the skylamps that we use for Diwali.
There are certain things I learned while editing this photo. The foremost is how cropping can be used to negate "crookedness" of some photos. The original snap is much larger and covers quite a bit of the roof and the ground. However, it is a bit slanted. I first thought I'd straighten the snap using tools like GIMP/Picasa. I finally decided to crop the photo instead.
I think the border that I added around this snap could have been better. Particularly, the color I chose for the border should have been something other than the boring black.


*** shelf_route test ***
Incorrect password.
Re-enter your name and password correctly.
Name:
Password:


The title is This is test post 5 and this is an example blog post number 5.
The title is This is test post 3 and this is an example blog post number 3.


Provides functions to generate, format, and style surface plots for visualizing combined action data. Also provides functions for reporting on a BRAID analysis, including plotting curve-shifts, calculating IAE values, and producing full BRAID analysis reports.
| Version: | 0.5.3 |
| Depends: | ggplot2, braidrm, stats |
| Imports: | utils, grid |
| Suggests: | gtable, gridExtra (≥ 2.0.0) |
| Published: | 2016-04-08 |
| Author: | Nathaniel R. Twarog |
| Maintainer: | Nathaniel R. Twarog <nathaniel.twarog at stjude.org> |
| License: | GPL (≥ 3) |
| NeedsCompilation: | no |
| CRAN checks: | braidReports results |
| Reference manual: | braidReports.pdf |
| Package source: | braidReports_0.5.3.tar.gz |
| Windows binaries: | r-devel: braidReports_0.5.3.zip, r-release: braidReports_0.5.3.zip, r-oldrel: braidReports_0.5.3.zip |
| OS X binaries: | r-release: braidReports_0.5.3.tgz, r-oldrel: braidReports_0.5.3.tgz |
| Old sources: | braidReports archive |
Please use the canonical form https://CRAN.R-project.org/package=braidReports to link to this page.


All the UAAP cheerdance tweets and memes you shouldn't miss
Social media users certainly did not disappoint with their reaction posts this year
by Kaye CabalSubscribe
Email Address
Newsletters
- Glenda Gloria's Take this Tuesday
- Huddle by Miriam Grace Go
- The Newsbreak Agenda by Chay Hofileña
- Sometimes, all you need is video by Lilibeth Frondoso


My name is Adel.
I am originally from Idaho, but I moved to New Mexico several years ago.
I have a puppy named Selene.
I'm currently a student at Deep Dive Coding.
I have a passion for learning and developing my skills in programming languages. Browse my GitHub repositories to see recent projects I've worked on!


I am a recent bootcamp graduate from The Software Guild. I completed a fast-paced hybrid apprenticeship of about 700+ hours of learning! It was a long 8 month journey but also one of the most rewarding experiences ever. As someone who has always wanted to help shape the future of civilization by utilizing one of most prized discoveries known to man, a career in technology is a dream come true. I look forward to seeing where I land with my newly acquired skills. I am really looking forward to seeing how much more I can grow in this forward thinking and innovative industry.
My experience breaking into tech
See what I'm learning at the moment
Glimpse of professional history


--- layout: page-fullwidth show_meta: false title: "Upcoming Workshops" header: image_fullwidth: "wood_plank.jpg" permalink: "/workshops-upcoming/" ---
Don't see a workshop in your area, but wish there was one?
Become a host and request a workshop!


MusicHub
Home
Sign Up
Sign In
Sign Up
Please fill out this form to create a new user account.
Username:
Password:
Already have an account?
Log in now
.


Streets of Fire (1986) A movie review by Serdar Yegulalp (C) 1997 by Serdar Yegulalp
CAPSULE: A rock and roll fable, indeed. Like a Hubert Selby, Jr. novel filtered through equal parts Damon Runyan and Bruce Springsteen, and a ton of fun.
STREETS OF FIRE bills itself as "A Rock And Roll Fable", and the description is perfect. This is a stylish, great-looking, and breezily enjoyable movie that feels like a Hubert Selby, Jr., novel with a Damon Runyan rewrite, irected by Bruce Springsteen.
Noir is one of the few truly American movie genres, aside from the Hollywood musical and the Western. This is post-WWII Brooklyn noir, for lack of a better label, with a generous injection of rock 'n roll and an all-around confrontational attitude. It all works.
The plot is simplicity itself: Rocker Ellen Aim (Diane Lane) is kidnapped by a vicious street gang, led by a bloodthirsty fellow named Raven (Willem Dafoe, very nasty). Her old soldier flame (played by Michael Pare) comes back into town to save her, but doesn't count on a whole bunch of things going askew. That's about the entire plot, save for the spats with Ellen's manager (a hilarious Rick Moranis), an encounter with a doo-wop group that winds up becoming Ellen's supporting act, and a whole gang of other fun little touches.
But in movies like this, when is the plot important? The movie is all style, all visuals and attitudes, quotable lines and posturing -- and it delivers all those things consistently and with great brio and pacing. No surprise that it was directed by Walter Hill (48 HRS.), who understands this kind of macho romanticism perfectly, and has put together a movie that's a mixture of times and sensibilities, but perfectly unified in tone. When was the last time you could say something like that about a movie, especially a movie where it seems like someone gets decked on the jaw (*and* passes out) every 2.63 minutes on cue?
STREETS OF FIRE isn't the greatest movie ever made, but it occupies a totally unique little niche, and enjoys the position it has. Anyone with a weakness for doo-wop, neon, motorcycles, rainy streets, the El, Studebakers, gang pictures, lonely heroes, and a great-looking gal giving the microphone both lungs will eat this movie up. I did.
Three out of four half-smoked cigarettes.
<EMAIL_ADDRESS>EFNet IRC: GinRei http://www.io.com/~syegul another worldly device... you can crush me as I speak/write on rocks what you feel/now feel this truth UNMUTUAL: A Digital Art Collective - E-mail<EMAIL_ADDRESS>for details =smilin' in your face, all the time wanna take your place, the BACKSTABBERS=
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


This is a rundown of the process of making a Leather bag - from concept/idea to completion. One thing that's important to note is that with the creation of any product from design to completion the process itself is relatively the same. It's the tools and technologies that change. Good design process is essential to producing great products.
Almost every project I ever do starts with a simple sketch. It doesn't matter if the sketch is high or low fidelity. The purpose is to set an indelible vision. Often in a first sketch. a low resolution drawing is better because only the most important product aspects will be apparent in the rendering. The sketch above is probably a fourth or fifth version, which has teased out some of the more salient details.
After a sketch is completed I move onto making mockups. The bags in the picture above are made of a cheap canvas that can be drawn on easily. Doing this allows for a complete spacial understanding of product features and usability. It also allows for a level of fidelity not really possible in a sketch, to the degree that we can actually start testing the product. Is the bag large enough? Can it hold the things we want? Does it fit over the shoulder comfortably with this length strap and configuration, ect.
After the basic product shape and form factor is finalized the next phase is to tease out the details. How does the strap mount to the bag? What mechanism should be used as a closure. How is it to be executed? Simply laying out the components helps to answer these questions.
As the component parts are decided upon. They are each individually patterned, constructed and tested to ensure correct functionality. Even the smallest parts undoubtedly always change at least a couple of times from patterning to finalization.
After the layout, component testing and mockup phases are complete then it's time to pony up and start patterning. The patterns are only done when the project direction is ready to be fully committed to. It's a little scary when making a product from an expensive material like leather. If anything is messed up there is no way of fixing it without going back to the beginning again. That is sometimes the price of being the designer – it is the designer whose neck is on the line (but this is also part of the fun).
Assembly: Without a doubt this is the most exciting part. All the hard work of drawing, designing, testing and patterning finally comes to fruition. It's also the time when you begin to discover places in the process to make things better the next time around.
It's starting to look like a real bag!
Finally the bag is complete. At least this version. This project took about three weeks from design to completion. It was relatively small in scope, but reaffirms the adage that details are everything. Without proper testing and consideration of the various different materials, hardware and methods this bag would never have come out so nice. Based on the success of this one a second bag was commissioned by another customer. See the images below.


Company name
Features
Enterprise
Support
Pricing
Sign up
Example
It's built with default Bootstrap components and utilities with little customization.
Example
隆重综合信息
Example
查重复
Example
摩贝网
More
新生意
粘贴板
More
入
库查
聊天室
端推
Movie


Nutritious and great tasting cookies that will bring smiles to the faces of the whole family. We use the highest quality ingredients without letting it affect our prices.
Set your hooks into the latest craze. By combining two signature Seattle icons: we have developed a recipe for a coffee-time confection called Salmon Cookies. These cookies made into the shape of a salmon that has just a hint of fishy goodnes which includes high levels of important omega-3 fatty acids.
.....but wait, there's more. We now offer super-sized Chinook cookies using the king of all salmon.
Nutritious and great tasting cookies that will bring smiles to the faces of the whole family. We use the highest quality ingredients without letting it affect our prices.


Simply put, he is a teacher for machines. He loves reading state-of-the-art research papers (AI, Blockchain, ...) and applying them to real world problems. Currently, he believes It's machines' turn to learn human languages as people have already spent huge effort learning programming languages, So most of his work right now is focused on Natural Language Processing.
He is passionate about accurate and scalable Machine Learning techniques, He is doing research on methods utilizing decentralized, privacy-preserved data sources. While playing with cutting-edge technologies, Ramtin is a Pragmatic Robot Whisperer at AxiomZen leading AI team.
My email address is 'my first<EMAIL_ADDRESS>and you can also find me at ...


A graphical user interface for interactive Markov chain Monte Carlo (MCMC) diagnostics and plots and tables helpful for analyzing a posterior sample. The interface is powered by the 'Shiny' web application framework from 'RStudio' and works with the output of MCMC programs written in any programming language (and has extended functionality for 'Stan' models fit using the 'rstan' and 'rstanarm' packages).
| Version: | 2.5.0 |
| Depends: | R (≥ 3.1.0), shiny (≥ 1.0.3) |
| Imports: | bayesplot (≥ 1.5.0), colourpicker, DT (≥ 0.2), dygraphs (≥ <IP_ADDRESS>), ggplot2 (≥ 2.1.1), gridExtra, gtools, markdown (≥ 0.7.4), methods, reshape2, rsconnect (≥ 0.4.2), rstan (≥ 2.17.1), stats, shinyjs (≥ 0.6.0), shinythemes (≥ 1.0.1), threejs (≥ 0.2.1), utils, xtable, xts (≥ 0.9-7) |
| Suggests: | coda, knitr (≥ 1.9), rmarkdown (≥ 0.8.1), rstanarm (≥ 2.17.4), testthat |
| Published: | 2018-05-01 |
| Author: | Jonah Gabry [aut, cre], Stan Development Team [ctb], Michael Andreae [ctb], Michael Betancourt [ctb], Bob Carpenter [ctb], Yuanjun Gao [ctb], Andrew Gelman [ctb], Ben Goodrich [ctb], Daniel Lee [ctb], Dongying Song [ctb], Rob Trangucci [ctb] |
| Maintainer: | Jonah Gabry <jsg2201 at columbia.edu> |
| BugReports: | https://github.com/stan-dev/shinystan/issues/ |
| License: | GPL (≥ 3) |
| URL: | http://mc-stan.org/, http://discourse.mc-stan.org |
| NeedsCompilation: | no |
| Materials: | NEWS |
| CRAN checks: | shinystan results |
| Reference manual: | shinystan.pdf |
| Vignettes: |
ShinyStan: Deploying to shinyapps.io Getting Started |
| Package source: | shinystan_2.5.0.tar.gz |
| Windows binaries: | r-devel: shinystan_2.5.0.zip, r-release: shinystan_2.5.0.zip, r-oldrel: shinystan_2.5.0.zip |
| OS X binaries: | r-release: shinystan_2.5.0.tgz, r-oldrel: shinystan_2.5.0.tgz |
| Old sources: | shinystan archive |
| Reverse imports: | brms, idealstan, rstanarm |
| Reverse suggests: | adnuts, bayesplot, breathteststan, rstan, rstantools, survHE |
Please use the canonical form https://CRAN.R-project.org/package=shinystan to link to this page.


No data was shown.
No customer id is available.
Customers service list used by:
customer uuid:
Hint!: Although currently there is a single mock endpoint for all users, in a real application enviroment every user would do a call with his UUID, getting his own specific service data.


PandasPdb
PandasPdb()
Object for working with Protein Databank structure files.
Attributes
-
df
: dictDictionary storing pandas DataFrames for PDB record sections. The dictionary keys are {'ATOM', 'HETATM', 'ANISOU', 'OTHERS'} where 'OTHERS' contains all entries that are not parsed as 'ATOM', 'HETATM', or 'ANISOU'.
-
pdb_text
: strPDB file contents in raw text format.
-
pdb_path
: strLocation of the PDB file that was read in via
read_pdb
or URL of the page where the PDB content was fetched from iffetch_pdb
was called. -
header
: strPDB file description.
-
code
: strPDB code
Methods
amino3to1(record='ATOM', residue_col='residue_name', fillna='?')
Creates 1-letter amino acid codes from DataFrame
Non-canonical amino-acids are converted as follows:
ASH (protonated ASP) => D
CYX (disulfide-bonded CYS) => C
GLH (protonated GLU) => E
HID/HIE/HIP (different protonation states of HIS) = H
HYP (hydroxyproline) => P
MSE (selenomethionine) => M
Parameters
-
record
: str, default: 'ATOM'Specfies the record DataFrame.
-
residue_col
: str, default: 'residue_name'Column in
record
DataFrame to look for 3-letter amino acid codes for the conversion. -
fillna
: str, default: '?'Placeholder string to use for unknown amino acids.
Returns
-
pandas.DataFrame
: Pandas DataFrame object consisting of two columns,'chain_id'
and'residue_name'
, where the former contains the chain ID of the amino acid and the latter contains the 1-letter amino acid code, respectively.
distance(xyz=(0.0, 0.0, 0.0), records=('ATOM', 'HETATM'))
Computes Euclidean distance between atoms and a 3D point.
Parameters
-
xyz
: tuple, default: (0.00, 0.00, 0.00)X, Y, and Z coordinate of the reference center for the distance computation.
-
records
: iterable, default: ('ATOM', 'HETATM')Specify which record sections to consider. For example, to consider both protein and ligand atoms, set
records=('ATOM', 'HETATM')
. This setting is ignored ifdf
is not set to None. For downward compatibility, a string argument is still supported but deprecated and will be removed in future versions.
Returns
-
pandas.Series
: Pandas Series object containing the Euclideandistance between the atoms in the record section and
xyz
.
distance_df(df, xyz=(0.0, 0.0, 0.0))
Computes Euclidean distance between atoms and a 3D point.
Parameters
-
df
: DataFrameDataFrame containing entries in the
PandasPdb.df['ATOM']
orPandasPdb.df['HETATM']
format for the the distance computation to thexyz
reference coordinates. -
xyz
: tuple, default: (0.00, 0.00, 0.00)X, Y, and Z coordinate of the reference center for the distance computation.
Returns
-
pandas.Series
: Pandas Series object containing the Euclideandistance between the atoms in the record section and
xyz
.
fetch_pdb(pdb_code)
Fetches PDB file contents from the Protein Databank at rcsb.org.
Parameters
-
pdb_code
: strA 4-letter PDB code, e.g., "3eiy".
Returns
self
get(s, df=None, invert=False, records=('ATOM', 'HETATM'))
Filter PDB DataFrames by properties
Parameters
-
s
: str in {'main chain', 'hydrogen', 'c-alpha', 'heavy'}String to specify which entries to return.
-
df
: pandas.DataFrame, default: NoneOptional DataFrame to perform the filter operation on. If df=None, filters on self.df['ATOM'].
-
invert
: bool, default: TrueInverts the search query. For example if s='hydrogen' and invert=True, all but hydrogen entries are returned.
-
records
: iterable, default: ('ATOM', 'HETATM')Specify which record sections to consider. For example, to consider both protein and ligand atoms, set
records=('ATOM', 'HETATM')
. This setting is ignored ifdf
is not set to None. For downward compatibility, a string argument is still supported but deprecated and will be removed in future versions.
Returns
-
df
: pandas.DataFrameReturns a DataFrame view on the filtered entries.
impute_element(records=('ATOM', 'HETATM'), inplace=False)
Impute element_symbol from atom_name section.
Parameters
-
records
: iterable, default: ('ATOM', 'HETATM')Coordinate sections for which the element symbols should be imputed.
-
inplace
: bool, (default: FalsePerforms the operation in-place if True and returns a copy of the PDB DataFrame otherwise.
Returns
DataFrame
parse_sse()
Parse secondary structure elements
read_pdb(path)
Read PDB files (unzipped or gzipped) from local drive
Attributes
-
path
: strPath to the PDB file in .pdb format or gzipped format (.pdb.gz).
Returns
self
rmsd(df1, df2, s=None, invert=False)
Compute the Root Mean Square Deviation between molecules.
Parameters
-
df1
: pandas.DataFrameDataFrame with HETATM, ATOM, and/or ANISOU entries.
-
df2
: pandas.DataFrameSecond DataFrame for RMSD computation against df1. Must have the same number of entries as df1.
-
s
: {'main chain', 'hydrogen', 'c-alpha', 'heavy', 'carbon'} or None,default: None String to specify which entries to consider. If None, considers all atoms for comparison.
-
invert
: bool, default: FalseInverts the string query if true. For example, the setting
s='hydrogen', invert=True
computes the RMSD based on all but hydrogen atoms.
Returns
-
rmsd
: floatRoot Mean Square Deviation between df1 and df2
to_pdb(path, records=None, gz=False, append_newline=True)
Write record DataFrames to a PDB file or gzipped PDB file.
Parameters
-
path
: strA valid output path for the pdb file
-
records
: iterable, default: NoneA list of PDB record sections in {'ATOM', 'HETATM', 'ANISOU', 'OTHERS'} that are to be written. Writes all lines to PDB if
records=None
. -
gz
: bool, default: FalseWrites a gzipped PDB file if True.
-
append_newline
: bool, default: TrueAppends a new line at the end of the PDB file if True
Properties
df
Acccess dictionary of pandas DataFrames for PDB record sections.


@(params: Map[String, Any]) @uk.gov.hmrc.hmrcemailrenderer.templates.helpers.html.template_main(params, "You can start using access groups", isWelsh=false) {
Dear @params("agencyName")
You have turned on access groups in your agent services account and your client details have now been processed.
Any access groups your organisation created in the past have been restored.
To manage your access groups, sign in to your agent services account and select 'Manage account'.
Do not reply to this email – it is an automatic message from an unmonitored account.
From HMRC Agent Services team
}


This post describe how you can check for dead links on your website. I used the Linux command wget for this.
WORK IN PROGRESS
I created my website using docpad. I have it locally running as described in this post. I want to check if I have any dead links on this site. The wget
command in Linux helps me do this.
Home
instead of fully qualified URLs.wget --spider --recursive --level=1 --force-html --input-file="out/index.html" --base="http://localhost:9778/" -Dlocalhost --delete-after --no-cache
TODO: Right now this command gives me a lot of output. I do find 404 messages and the broken links, but I need to scroll through the output. One solution is to provice the -o
option to have the output routed to a file and then run a grep
command to search for 404 errors.
A related task is to find all references to a file in other files. I can do this to get only the files names of other files have a link to 'index.html'
grep -H "index.html" out/* | cut -d: -f1


Updates the velocity of the source ball, given an impulse, then uses the
context's interactWith method to determine the post collision behavior, from the context
ball's perspective.
Updates the velocity of the source ball, given an impulse, then uses the
context's interactWith method to determine the post collision behavior, from the context
ball's perspective.


Raspberry pi 3
- The Raspberry Pi 3 Model B is the second generation Raspberry Pi 3
How does Raspberry Pi boot?
This repository contains pre-compiled binaries of the current Raspberry Pi kernel and modules, userspace libraries, and bootloader/GPU firmware.
Kernel Building
Build A 64-BIT kernel for your RASPBERRY PI 3
RPiconfig
Buildroot related
Raspbery Readme


The MCC-F1 analysis is a method to evaluate the performance of binary classifications. The MCC-F1 curve is more reliable than the Receiver Operating Characteristic (ROC) curve and the Precision-Recall (PR)curve under imbalanced ground truth. The MCC-F1 analysis also provides the MCC-F1 metric that integrates classifier performance over varying thresholds, and the best threshold of binary classification.
| Version: | 1.0 |
| Depends: | R (≥ 3.3.3) |
| Imports: | ROCR, ggplot2 |
| Published: | 2018-08-13 |
| Author: | Chang Cao [aut, cre], Michael Hoffman [aut], Davide Chicco [aut] |
| Maintainer: | Chang Cao <kirin.cao at mail.utoronto.ca> |
| BugReports: | https://stackoverflow.com/questions/tagged/mccf1 |
| License: | GPL-2 | GPL-3 [expanded from: GPL (≥ 2)] |
| URL: | https://bitbucket.org/hoffmanlab/mccf1/ |
| NeedsCompilation: | no |
| CRAN checks: | mccf1 results |
| Reference manual: | mccf1.pdf |
| Package source: | mccf1_1.0.tar.gz |
| Windows binaries: | r-devel: mccf1_1.0.zip, r-release: mccf1_1.0.zip, r-oldrel: mccf1_1.0.zip |
| OS X binaries: | r-release: mccf1_1.0.tgz, r-oldrel: mccf1_1.0.tgz |
Please use the canonical form https://CRAN.R-project.org/package=mccf1 to link to this page.


Programming | Workout | Math | Design | Concert |
Football favourite | Hiking | Gongoozler | Scuba diving |


This page gives you a general information. For now, we would like you to contact us so that we can help you and also gain information on ways in which this solution is going to be used.
Creting a Virtual Machine Image
Currently, there are two alternatives to choose from:
UTU Course Virtualization Team develops and publishes a number of virtual machines that are suitable as a foundation for many kinds of courses. You can simply download the one that best meets your requirements, import, run and install with the software needed in your course. Export procedure is a handful of clicks and then you can upload the image for your students to use. At this point, we would still like to hear from you and either recommend the best image or perhaps assist you in some requirements that could be useful for other courses as well. Creation of a virtual machine and installing the operating system into it is one of the most basic things that everyone does with their hypervisors. Nothing prevents you from doing exactly this, if you feel that what we can offer does not meet your requirements. We would like you to consider testing the virtual machine in all three major operating systems (MacOS, Linux and Windows) as well as with both hypervisors (VirtualBox and VMware) in all three OS'es. This is what we do with the ones we offer, just in case there are some unexpected issues. If you make your own virtual machine, you should still contact us as we can provide you with some start-up scripts that let students choose their locale and do some other useful personalization steps. That should save you some work and be worth dropping us a mail.Modify one of our VMs
Create your own
Please contact us at<EMAIL_ADDRESS>There is some documentation available, which should be useful. More will hopefully become available later.
Publishing a Virtual Machine Image
This site is intended as the one-stop location for both students and teachers. In the upload page you can store your virtual machine image and set its availability (anyone, students, teachers, not-available). You can also give it a descriptive label ("name") and description, then give your students URL with search string that explicitly gives them your image - or just let the students search it themselves.
What you should be careful about are any licensing issues. Virtual machines we offer are not subject to any lisencing and can be freely distributed, but you need to be aware of any licensing that the software you install might have. In many cases, campus licenses exist and you merely need to limit the availability of your image to authenticated students (set availability "students"). In more restrictive cases, please contact us and we will try to solve the licensing requirements either with existing features, or in cases where similar requirements are likely to appear again, we will create the necessary features for you.
Maintaining virtual machine image
This part should be a relief - if your virtual machine uses no licenses, you have no maintenance tasks at all.
More likely, you will wish to update some software in your image - perhaps not even every year, but once in awhile. As far as virtual machine images are considered, that is not maintenance, but a creation of a new image. When that time comes, upload the updated image, set the availability and make the old image not available to anyone.
Removal of old images will be available in the next feature update in Spring 2021. If you wish to remove images (instead of just hiding them), please contact us.
If your virtual machine uses licensed software you should take care to remove its availability when the licensing agreement expires. If such images appear in this system, we will implement some tools for time limited availability or similar.


Vivor is designed during the quarantine of the pandemic process.
It is a solution for extreme pandemic situation; emerged by a question of what can be done without any access to existing masks.
The aim is to be prepared at home by people themselves.
Mask can be used over and over again;
Filters can be renewed and body of the mask can be washed after every usage.
EVA is placed to the inner side; it takes shape of the touch points on the face to avoids gaps.