{% extends "base.html" %} {% block title %}SDG Goals{% endblock %} {% block content %}
The United Nations announced the “17 Sustainable Development Goals” (SDGs) in 2015, provides a blueprint with the ambition to tackle the world’s problems for our planet, people, and prosperity. The SDG’s calls for action by all countries and stakeholders in partnership to implement the plan .
The implementation of the SDG plan is the only way forward to approach the global sustainability challenge of assuring human well‐being, economic prosperity, and environmental protection. For this, all SDGs need to act as a system of interactive mechanism that together move the global system into a safe and just operating space. it’s the collective responsibility of the SDG bodies to see and use the SDG goals as a tool to combat world problems rather than merely seeing it as a structure.
SDG12, acknowledges the fact that continuous development and economic growth are determined, depending on how we produce and consume goods. With the continuous projection of food insecurities and food waste across the globe, it’s obvious that the change needed to reverse this trend must be set in motion right away.
By 2030, SDG goal 12 aims at reducing waste generation substantially through prevention, reduction, recycling, and reuse. Standards developed by the international organization (ISO) help businesses integrate environmental aspects into the design and development of products and services and adopt more sustainable practices.
The table shows that households generated the most amount of food wastage, followed by grocery, commercial kitchen, and restaurants.
As a matter of fact, the waste generated by households is a personal behavior, it requires us to take individual responsibility. However, food waste by restaurants and commercial kitchen can be reduced through collective efforts.
An estimate of 1.3Billion Tons of Food wasted Each Year worldwide. This is Enough to feed 868 million who go to bed hungry every night, the population of Germany and Puerto Rico put together. Images signifying horror or pity.
100Million Tons of Food are lost in sub-Sahara Africa, due to fungus mold, Inadequate storage, Drought every year.
As Food waste decomposes in landfills, it releases methane which is a potent greenhouse gas with 26 times the heat-trapping capacity of carbon dioxide-.


--- layout: default title: Ghink ---
We're located in the occidental coast of Portugal, in the beautiful Lisbon, Portugal's capital city, surrounded by long breathtaking beaches and the Tagus river.
Feel free to contact us if you have questions regarding our projects. At the end of the page you can also find links to our social media spots and our code repositories. Our address, telephones and email are on the right.
Av. Fontes Pereira de Melo, 40
1069-300 Lisbon
Portugal
+351 215 001 000 | Main number


--- layout: example category: example title: Change the default position for attribution description: Place attribution in the top-left position when initializing a map. ---
top-left


s6-linux-init
Software
skarnet.org
The s6-linux-init-shutdown program
s6-linux-init-shutdown triggers the system shutdown procedure.
It is normally invoked as /sbin/shutdown.
Interface
s6-linux-init-shutdown [ -h [ -H | -P ] | -p | -r | -k ] [ -a ] [ -t sec ] [ -i ] [ -f | -F ] time [ message ]
s6-linux-init-shutdown -c [ message ]
- If the -c option is present, a pending shutdown is cancelled.
- Else, it plans the shutdown procedure at time time.
- If a message argument has been given, message is
broadcast to all logged in users (as tracked by utmp).
- shutdown exits 0. The shutdown procedure happens asynchronously.
The s6-linux-init-shutdown program conforms to the LSB-3.0.0
shutdown
interface.
time must follow the following format:
[ now | [+]mins | hh:mm ]
- now means: trigger the shutdown sequence immediately.
- hh:mm means: absolute time. Trigger the shutdown sequence when the time
hh:mm occurs. If that time has passed for the day, it will wait for the
next day. hh must have 1 or 2 digits; mm must have 2 digits.
- mins or +mins means: relative time. Trigger the shutdown
sequence after mins minutes.
Options
- -a : access control. The shutdown sequence will only be
launched if one of the users listed in /etc/shutdown.allow
is currently logged in (as tracked by utmp). /etc/shutdown.allow
is a text file, one user per line, lines starting with # are comments.
- -t sec : at the end of the shutdown sequence,
when it's time to kill all processes, have a "grace time" period
of sec seconds between the SIGTERM and the SIGKILL (to allow processes
receiving SIGTERM to exit cleanly). Default is 3 seconds.
- -k : warning only. message will be sent to all
logged in users, but the shutdown sequence will not be triggered.
- -h : at the end of the shutdown sequence, halt the system. The
behaviour of this option may be altered with -H or -P.
- -p : at the end of the shutdown sequence, power off the system.
(This option is provided as an extension, it is not required by the LSB interface.)
- -r : at the end of the shutdown sequence, reboot the system.
- -f : ignored.
- -F : ignored.
- -c : cancel a planned shutdown (i.e. cancel the effect of a
previous call to shutdown with a time argument that was not now).
This cannot be used to interrupt a shutdown sequence that has already started.
- -H : this option can only be used in conjunction with -h.
Ensures the system is halted, not powered off, at the end of the shutdown sequence.
-Hh is equivalent to -h.
- -P : this option can only be used in conjunction with -h.
Ensures the system is powered off at the end of the shutdown sequence.
-Ph is equivalent to -p.
- -i : interactive confirmation request. The command needs to be
launched in a terminal, and will prompt the user to type the (short) hostname of
the machine to be shut down. On mismatch, the command will abort. The point is to
avoid inadvertently rebooting a remote machine in an ssh session.
Notes
- The s6-linux-init-shutdown
binary is not meant to be called directly by administrators. Instead, after a
s6-linux-init-maker invocation,
the bin/ subdirectory of the target will contain a shutdown
symlink to s6-linux-init-shutdown. The bin/ subdirectory
should be copied by the administrator into /sbin for full
interface compatibility with sysvinit.
- The -f and -F options are only accepted for compatibility.
LSB says they are used to advise the system to skip or enforce a fsck
after rebooting. But they are only advisory, and for decades now systems have used
other methods of evaluating whether they should perform filesystem checks, so these
options are largely obsolete nowadays.


{% extends "layouts/default.html" %} {% block title %}Frequently Asked Questions for vtalks.net{% endblock %} {% block content %}
tlks.io is the perfect place to showcase, discover, and discuss the best technical talks by the most influential speakers on the internet.
Developers, and enthusiasts about technology gather every day on tlks.io to share and discuss the best technical talks on the internet that helps them to learn and improve their skills.
Whenever you find a great talk or keynote that you enjoyed watching (including your own talks), you're more than welcome to submit it on tlks.io.
By default, all talks we have published are in english. However, if you want to publish a talk with a different language, we recomend you to use a tag which specified the language the talk is spoken.


--- layout: archive title: Zulip Chat Archive permalink: /stream/144837-PR-reviews/topic/.231103.20fixing.20norm_cast.html ---
I initially posted this on general, but I think it's more suited to this stream:
Hi everyone,
I'm was working on fixing a problem with the norm_cast tactic, and it seems like I broke something in data/list.
The thing is, this part of the code doesn't use norm_cast, and doesn't seem to use coercion at all for that matter.
Plus, the error messages I get are about the equation compiler and pattern matching.
Could someone take a look and help me figure out what I'm looking at?
Here is the incriminated commit: https://github.com/leanprover-community/mathlib/pull/1103/commits/4daf46595da984c2947a771d269e9acd64b0afc1
you can see the log from travis here: https://travis-ci.org/leanprover-community/mathlib/jobs/547657998
okay so it appears I was importing data.num that was itself importing data.vector,
and list/basic must import my tactic at some point even so it doesn't use it.
this creates an ambiguity aroun the '::' notation.
so my question is, is there a way to mask a notation I just imported, or explicitely not include in with my import?
Last updated: Apr 24 2020 at 19:02 UTC


Week Nine Cultural Blog
Gregorc Thinking Style
- Concrete Sequential: 36
- Abstract Sequential: 24
- Abstract Random: 32
- Concrete Random: 21
I have researched my thinking style to notice that it is pretty accurate. I scored highest for concrete sequential and abstract random.
I'm not a very clean and organized person when it comes to my belongings, but I enjoy and benefit from routine, direction, and structure. I have noticed that I have been struggling with working in groups, I'm not really a 'team' oriented type of person, but I am really working on it.
I agree that I like to listen to others and establish healthy relationships. I also like be in and maintain a peaceful enviorment. If there is confrentation, I usually confront it and try to solve the issue so the group or relationship can continue working. I definitely work better when given at least a little direction. I hate competition and feeling restricted.
It was interesting to research my thinking style, I hope having this understanding will help me in my progress at DBC.
Consider your experience in Phase 0 to this point. What has been the biggest struggle for you? Is it related to the way you think and learn or is it related to something else?
My biggest struggle has been finding the time to pair up, but also work in complete harmony while pairing. I feel like every time I pair either one person is doing more than the otherm as if we are not comepletely using the roles of navigator and driver. I would really like to work on this. I had paired with only one person who was completely organized with this process, and I'd like to practice it more. My learning style is highly kinestetic and visual, when people only speak the information to me, I have trouble processing it. When it is written in front of me or I am reading it and rewriting it, I absorb the most.
comments powered by Disqus


See: Description
| Interface | Description |
|---|---|
| Namespaces |
A convenient place to keep the names of URIs so that they can be got right
once.
|
| Roles |
The roles defined in this webapp.
|
| Class | Description |
|---|---|
| Capability |
Describes a single capability supported by Taverna Server's workflow
execution core.
|
| Credential |
A description of a private credential.
|
| Credential.Dummy |
A credential that is just used for deleting credentials by ID.
|
| Credential.KeyPair |
A description of a credential that is a public/private key-pair in some
kind of key store.
|
| Credential.Password |
A description of a credential that is a username and password.
|
| DirEntryReference |
A reference to something that is in a directory below the working directory
of a workflow run, described using JAXB.
|
| DirEntryReference.DirectoryReference |
A reference to a directory, done with JAXB.
|
| DirEntryReference.FileReference |
A reference to a file, done with JAXB.
|
| InputDescription |
A description of the inputs to a workflow, described using JAXB.
|
| InputDescription.Port |
The type of a single port description.
|
| ProfileList |
Description of the profiles that can apply to a workflow.
|
| ProfileList.Info |
Description of a single workflow profile.
|
| RunReference |
A reference to a single workflow run, described using JAXB.
|
| Trust |
A description of a trusted identity or identities.
|
| Uri |
A class that makes it simpler to work with an element with a
URI in
an href attribute. |
| Uri.Rewriter |
A bean that allows configuration of how to rewrite generated URIs to be
secure.
|
| VersionedElement |
The type of an element that declares the version of the server that produced
it.
|
| Workflow |
Encapsulation of a T2flow or Scufl2 document.
|
| Enum | Description |
|---|---|
| Permission |
Description of a permission to access a particular workflow run.
|
| Status |
States of a workflow run.
|
| Workflow.ContentType |
Copyright © 2015–2018 The Apache Software Foundation. All rights reserved.


001/* 002 * Units of Measurement API 003 * Copyright (c) 2014-2021, Jean-Marie Dautelle, Werner Keil, Otavio Santana. 004 * 005 * All rights reserved. 006 * 007 * Redistribution and use in source and binary forms, with or without modification, 008 * are permitted provided that the following conditions are met: 009 * 010 * 1. Redistributions of source code must retain the above copyright notice, 011 * this list of conditions and the following disclaimer. 012 * 013 * 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions 014 * and the following disclaimer in the documentation and/or other materials provided with the distribution. 015 * 016 * 3. Neither the name of JSR-385 nor the names of its contributors may be used to endorse or promote products 017 * derived from this software without specific prior written permission. 018 * 019 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 020 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 021 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 022 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 023 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 024 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 025 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 026 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 027 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 028 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 029 */ 030package javax.measure.spi; 031 032import java.lang.annotation.Annotation; 033import java.lang.reflect.InvocationTargetException; 034import java.lang.reflect.Method; 035import java.util.ArrayList; 036import java.util.Comparator; 037import java.util.List; 038import java.util.Objects; 039import java.util.Optional; 040import java.util.ServiceConfigurationError; 041import java.util.ServiceLoader; 042import java.util.concurrent.atomic.AtomicReference; 043import java.util.function.Predicate; 044import java.util.logging.Level; 045import java.util.logging.Logger; 046import java.util.stream.Collectors; 047import java.util.stream.Stream; 048import java.util.stream.StreamSupport; 049import javax.measure.Quantity; 050import javax.measure.format.QuantityFormat; 051import javax.measure.format.UnitFormat; 052 053/** 054 * Service Provider for Units of Measurement services. 055 *
 056 * All the methods in this class are safe to use by multiple concurrent threads. 057 *
 058 * 059 * @version 2.2, November 16, 2020 060 * @author Werner Keil 061 * @author Martin Desruisseaux 062 * @since 1.0 063 */ 064public abstract class ServiceProvider { 065 /** 066 * Class name of JSR-330 annotation for naming a service provider. 067 * We use reflection for keeping JSR-330 an optional dependency. 068 */ 069 private static final String NAMED_ANNOTATION = "javax.inject.Named"; 070 071 /** 072 * Class name of JSR-250 annotation for assigning a priority level to a service provider. 073 * We use reflection for keeping JSR-250 an optional dependency. 074 */ 075 private static final String PRIORITY_ANNOTATION = "javax.annotation.Priority"; 076 077 /** 078 * Class name of Jakarta Dependency Injection annotation for naming a service provider. 079 * We use reflection for keeping Jakata Injection an optional dependency. 080 */ 081 private static final String JAKARTA_NAMED_ANNOTATION = "jakarta.inject.Named"; 082 083 /** 084 * Class name of Jakarta Common Annotation for assigning a priority level to a service provider. 085 * We use reflection for keeping Jakarta Annotations an optional dependency. 086 */ 087 private static final String JAKARTA_PRIORITY_ANNOTATION = "jakarta.annotation.Priority"; 088 089 /** 090 * The current service provider, or {@code null} if not yet determined. 091 * 092 *
Implementation Note: We do not cache a list of all service providers because that list depends 093 * indirectly on the thread invoking the {@link #available()} method. More specifically, it depends 094 * on the context class loader. Furthermore caching the {@code ServiceProvider}s can be a source of 095 * memory leaks. See {@link ServiceLoader#load(Class)} API note for reference.
 096 */ 097 private static final AtomicReference<ServiceProvider> current = new AtomicReference<>(); 098 099 /** 100 * Creates a new service provider. Only to be used by subclasses. 101 */ 102 protected ServiceProvider() { 103 } 104 105 /** 106 * Allows to define a priority for a registered {@code ServiceProvider} instance. 107 * When multiple providers are registered in the system, the provider with the highest priority value is taken. 108 * 109 *
If the {@value #PRIORITY_ANNOTATION} annotation (from JSR-250) or {@value #JAKARTA_PRIORITY_ANNOTATION} annotation (from Jakarta Annotations) is present on the {@code ServiceProvider} 110 * implementation class, then that annotation (first if both were present) is taken and this {@code getPriority()} method is ignored. 111 * Otherwise – if a {@code Priority} annotation is absent – this method is used as a fallback.
 112 * 113 * @return the provider's priority (default is 0). 114 */ 115 public int getPriority() { 116 return 0; 117 } 118 119 /** 120 * Returns the service to obtain a {@link SystemOfUnits}, or {@code null} if none. 121 * 122 * @return the service to obtain a {@link SystemOfUnits}, or {@code null}. 123 */ 124 public abstract SystemOfUnitsService getSystemOfUnitsService(); 125 126 /** 127 * Returns the service to obtain {@link UnitFormat} and {@link QuantityFormat} or {@code null} if none. 128 * 129 * @return the service to obtain a {@link UnitFormat} and {@link QuantityFormat}, or {@code null}. 130 * @since 2.0 131 */ 132 public abstract FormatService getFormatService(); 133 134 /** 135 * Returns a factory for the given {@link Quantity} type. 136 * 137 * @param <Q> 138 * the type of the {@link Quantity} instances created by the factory 139 * @param quantity 140 * the quantity type 141 * @return the {@link QuantityFactory} for the given type 142 */ 143 public abstract <Q extends Quantity<Q>> QuantityFactory<Q> getQuantityFactory(Class<Q> quantity); 144 145 /** 146 * A filter and a comparator for processing the stream of service providers. 147 * The two tasks (filtering and sorting) are implemented by the same class, 148 * but the filter task shall be used only if the name to search is non-null. 149 * The comparator is used in all cases, for sorting providers with higher priority first. 150 */ 151 private static final class Selector implements Predicate<ServiceProvider>, Comparator<ServiceProvider> { 152 /** 153 * The name of the provider to search, or {@code null} if no filtering by name is applied. 154 */ 155 private final String toSearch; 156 157 /** 158 * Class of the {@value #NAMED_ANNOTATION} and {@value #PRIORITY_ANNOTATION} annotations to search, 159 * or {@code null} if those classes are not on the classpath. 160 */ 161 private Class<? extends Annotation> namedAnnotation, priorityAnnotation; 162 163 /** 164 * Class of the {@value #JAKARTA_NAMED_ANNOTATION} and {@value #JAKARTA_PRIORITY_ANNOTATION} annotations to search, 165 * or {@code null} if those classes are not on the classpath. 166 */ 167 private Class<? extends Annotation> jakartaNamedAnnotation, jakartaPriorityAnnotation; 168 169 /** 170 * The {@code value()} method in the {@code *Annotation} class, 171 * or {@code null} if those classes are not on the classpath. 172 */ 173 private Method nameGetter, priorityGetter; 174 175 /** 176 * Creates a new filter and comparator for a stream of service providers. 177 * 178 * @param name name of the desired service provider, or {@code null} if no filtering by name is applied. 179 */ 180 Selector(String name) { 181 toSearch = name; 182 try { 183 if (name != null) try { 184 namedAnnotation = Class.forName(NAMED_ANNOTATION).asSubclass(Annotation.class); 185 nameGetter = namedAnnotation.getMethod("value", (Class[]) null); 186 } catch (ClassNotFoundException e) { 187 // Ignore since JSR-330 is an optional dependency. 188 } 189 if (nameGetter == null) try { // if nameGetter has not been set already try Jakarta Injection 190 jakartaNamedAnnotation = Class.forName(JAKARTA_NAMED_ANNOTATION).asSubclass(Annotation.class); 191 nameGetter = jakartaNamedAnnotation.getMethod("value", (Class[]) null); 192 } catch (ClassNotFoundException e) { 193 // Ignore since Jakarta Injection is an optional dependency. 194 } 195 196 try { 197 priorityAnnotation = Class.forName(PRIORITY_ANNOTATION).asSubclass(Annotation.class); 198 priorityGetter = priorityAnnotation.getMethod("value", (Class[]) null); 199 } catch (ClassNotFoundException e) { 200 // Ignore since JSR-250 is an optional dependency. 201 } 202 if (priorityGetter == null) try { // if priorityGetter has not been set already try Jakarta Annotations 203 jakartaPriorityAnnotation = Class.forName(JAKARTA_PRIORITY_ANNOTATION).asSubclass(Annotation.class); 204 priorityGetter = jakartaPriorityAnnotation.getMethod("value", (Class[]) null); 205 } catch (ClassNotFoundException e) { 206 // Ignore since Jakarta Annotations is an optional dependency. 207 } 208 } catch (NoSuchMethodException e) { 209 // Should never happen since value() is a standard public method of those annotations. 210 throw new ServiceConfigurationError("Cannot get annotation value", e); 211 } 212 } 213 214 /** 215 * Returns {@code true} if the given service provider has the name we are looking for. 216 * This method shall be invoked only if a non-null name has been specified to the constructor. 217 * This method looks for the {@value #NAMED_ANNOTATION} annotation or {@value #JAKARTA_NAMED_ANNOTATION} annotation, and if none are found fallbacks on 218 * {@link ServiceProvider#toString()}. 219 */ 220 @Override 221 public boolean test(ServiceProvider provider) { 222 Object value = null; 223 if (nameGetter != null) { 224 Annotation a = null; 225 if (namedAnnotation != null) { 226 a = provider.getClass().getAnnotation(namedAnnotation); 227 } else if (jakartaNamedAnnotation != null) { 228 a = provider.getClass().getAnnotation(jakartaNamedAnnotation); 229 } 230 if (a != null) try { 231 value = nameGetter.invoke(a, (Object[]) null); 232 } catch (IllegalAccessException | InvocationTargetException e) { 233 // Should never happen since value() is a public method and should not throw exception. 234 throw new ServiceConfigurationError("Cannot get annotation value", e); 235 } 236 } 237 if (value == null) { 238 value = provider.toString(); 239 } 240 return toSearch.equals(value); 241 } 242 243 /** 244 * Returns the priority of the given service provider. 245 * This method looks for the {@value #PRIORITY_ANNOTATION} annotation or {@value #JAKARTA_PRIORITY_ANNOTATION}, 246 * and if none are found falls back on {@link ServiceProvider#getPriority()}. 247 */ 248 private int priority(ServiceProvider provider) { 249 if (priorityGetter != null) { 250 Annotation a = null; 251 if (priorityAnnotation != null) { 252 a = provider.getClass().getAnnotation(priorityAnnotation); 253 } else if (jakartaPriorityAnnotation != null) { 254 a = provider.getClass().getAnnotation(jakartaPriorityAnnotation); 255 } 256 if (a != null) try { 257 return (Integer) priorityGetter.invoke(a, (Object[]) null); 258 } catch (IllegalAccessException | InvocationTargetException e) { 259 // Should never happen since value() is a public method and should not throw exception. 260 throw new ServiceConfigurationError("Cannot get annotation value", e); 261 } 262 } 263 return provider.getPriority(); 264 } 265 266 /** 267 * Compares the given service providers for order based on their priority. 268 * The priority of each provider is determined as documented by {@link ServiceProvider#getPriority()}. 269 */ 270 @Override 271 public int compare(final ServiceProvider p1, final ServiceProvider p2) { 272 return Integer.compare(priority(p2), priority(p1)); // reverse order, higher number first. 273 } 274 275 /** 276 * Gets all {@link ServiceProvider}s sorted by priority and optionally filtered by the name in this selector. 277 * The list of service providers is not cached because it depends on the context class loader, 278 * which itself depends on which thread is invoking this method. 279 */ 280 private Stream<ServiceProvider> stream() { 281 Stream<ServiceProvider> stream = StreamSupport.stream(ServiceLoader.load(ServiceProvider.class).spliterator(), false); 282 if (toSearch != null) { 283 stream = stream.filter(this); 284 } 285 return stream.sorted(this); 286 } 287 } 288 289 /** 290 * Returns the list of all service providers available for the current thread's context class loader. 291 * The {@linkplain #current() current} service provider is always the first item in the returned list. 292 * Other service providers after the first item may depend on the caller thread 293 * (see {@linkplain ServiceLoader#load(Class) service loader API note}). 294 * 295 * @return all service providers available for the current thread's context class loader. 296 */ 297 public static final List<ServiceProvider> available() { 298 ArrayList<ServiceProvider> providers = new Selector(null).stream().collect(Collectors.toCollection(ArrayList::new)); 299 /* 300 * Get the current service provider. If no provider has been set yet, set it now for 301 * consistency with the contract saying that the first item is the current provider. 302 */ 303 ServiceProvider first = current.get(); 304 if (first == null && !providers.isEmpty()) { 305 first = setDefault(providers.get(0)); 306 } 307 /* 308 * Make sure that 'first' is the first item in the 'providers' list. If that item appears 309 * somewhere else, we have to remove the second occurrence for avoiding duplicated elements. 310 * We compare the classes, not the instances, because new instances may be created each time 311 * this method is invoked and we have no guaranteed that implementors overrode 'equals'. 312 */ 313setcur: if (first != null) { 314 final Class<?> cf = first.getClass(); 315 final int size = providers.size(); 316 for (int i=0; i<size; i++) { 317 if (cf.equals(providers.get(i).getClass())) { 318 if (i == 0) break setcur; // No change needed (note: labeled breaks on if statements are legal). 319 providers.remove(i); 320 break; 321 } 322 } 323 providers.add(0, first); 324 } 325 return providers; 326 } 327 328 /** 329 * Returns the {@link ServiceProvider} with the specified name. 330 * The given name must match the name of at least one service provider available in the current thread's 331 * context class loader. The service provider names are the values of {@value #NAMED_ANNOTATION} annotations 332 * when present, or the value of {@link #toString()} method for providers without {@code Named} annotation. 333 * 334 *
Implementors are encouraged to provide an {@code Named} annotation or to override {@link #toString()} 335 * and use a unique enough name, e.g. the class name or other distinct attributes. 336 * Should multiple service providers nevertheless use the same name, the one with the highest 337 * {@linkplain #getPriority() priority} wins.
 338 * 339 * @param name 340 * the name of the service provider to return 341 * @return the {@link ServiceProvider} with the specified name 342 * @throws IllegalArgumentException 343 * if available service providers do not contain a provider with the specified name 344 * @throws NullPointerException 345 * if {@code name} is null 346 * @see #toString() 347 * @since 2.0 348 */ 349 public static ServiceProvider of(String name) { 350 Objects.requireNonNull(name); 351 Selector select = new Selector(name); 352 ServiceProvider p = current.get(); 353 if (p != null && select.test(p)) { 354 return p; 355 } 356 Optional<ServiceProvider> first = select.stream().findFirst(); 357 if (first.isPresent()) { 358 return first.get(); 359 } else { 360 throw new IllegalArgumentException("No Measurement ServiceProvider " + name + " found ."); 361 } 362 } 363 364 /** 365 * Returns the current {@link ServiceProvider}. If necessary the {@link ServiceProvider} will be lazily loaded. 366 *
 367 * If there are no providers available, an {@linkplain IllegalStateException} is thrown. 368 * Otherwise the provider with the highest priority is used 369 * or the one explicitly designated via {@link #setCurrent(ServiceProvider)}. 370 *
 371 * 372 * @return the {@link ServiceProvider} used. 373 * @throws IllegalStateException 374 * if no {@link ServiceProvider} has been found. 375 * @see #getPriority() 376 * @see #setCurrent(ServiceProvider) 377 */ 378 public static final ServiceProvider current() { 379 ServiceProvider p = current.get(); 380 if (p == null) { 381 Optional<ServiceProvider> first = new Selector(null).stream().findFirst(); 382 if (first.isPresent()) { 383 p = first.get(); 384 } else { 385 throw new IllegalStateException("No Measurement ServiceProvider found."); 386 } 387 p = setDefault(p); 388 } 389 return p; 390 } 391 392 /** 393 * Sets the given provider as the current one if and only if no other provider are currently set. 394 * If another provider is already set, that other provider is returned. 395 * 396 * @param provider the provider to set by default if no other provider is currently set. 397 * @return the current provider, which is the specified {@code provider} if no other provider 398 * was set before this method call. 399 */ 400 private static ServiceProvider setDefault(ServiceProvider provider) { 401 while (!current.compareAndSet(null, provider)) { 402 final ServiceProvider c = current.get(); 403 if (c != null) return c; 404 } 405 return provider; 406 } 407 408 /** 409 * Replaces the current {@link ServiceProvider}. 410 * 411 * @param provider 412 * the new {@link ServiceProvider} 413 * @return the replaced provider, or null. 414 */ 415 public static final ServiceProvider setCurrent(ServiceProvider provider) { 416 Objects.requireNonNull(provider); 417 ServiceProvider old = current.getAndSet(provider); 418 if (old != provider) { 419 Logger.getLogger("javax.measure.spi").log(Level.CONFIG, 420 "Measurement ServiceProvider {1,choice,0#set to|1#replaced by} {0}.", 421 new Object[] {provider.getClass().getName(), (old == null) ? 0 : 1}); 422 } 423 return old; 424 } 425}


{% extends 'base.html' %} {% load static %} {% block title %} Play Sudoku {{object.number}} {% endblock %} {% block css-override %} {{block.super}} {% endblock %} {% block content %}
Difficulty: {{object.get_difficulty_display}}
The Try button is very useful for hard Sudoku problems. If you get to a point where you can't make progress without trying one of, say, two options in a cell, click the Try button. Then try one of the options. If it turns out to be right and you solve the puzzle, then that's it. But if you reach a broken position, click the button again (which is now called Untry). It will restore the position to where you were before you tried the failed option. Now you can try the second option.
The puzzles are computer generated. Sometimes an easy puzzle may be more difficult than it should be and vice-versa. There is exactly one solution to a puzzle.
The puzzles published on Saturdays and Sundays are very difficult and will often only be solvable by the very best human solvers.
The source code for this user interface as well as the puzzle generating and solving code are FLOSS and available on Github.


Welcome to Fidelian Alumni Association
The Fidelian Alumni Association welcomes you to its website.
If you are a member of the Fidelian community (a current student or graduate) please register on this site. This will not only enable you to connect with the rest of the community, but also enable you to avail of the many facilities we offer, including:
- Email for batch and location email groups
- Career opportunities
- Discussion groups
- ... and much more
Also, organisations who are interested in collaborating with us to offer their products or services to our community can get in touch with us.
Once again, welcome to our website. We hope you will find it useful.
FAA welcomes our latest members
Team
The Executive committee meets once a month to discuss the progress and prepare action plan for further strengthening the association. FAA is networked with a lot of ex-students and wish to increase this number by thousands. The Association is focused on increasing the membership and this network across batches and alumni’s presently in different spheres of life.
Patron
| Name | Office |
|---|---|
| Fr. Dr. Harman Minz | Principal, St. Fidelis College |
Vice Patron
| Name | Office |
|---|---|
| Mr. Nirmal Nathaniel | Lecturer, St. Fidelis College |
Executive Committee
| Name | Office | Mobile No | Email Address | Batch |
|---|---|---|---|---|
| Prashant Singh | President |<EMAIL_ADDRESS>| ICSE - 1994 | |
| Kavita Misra | Vice President |<PHONE_NUMBER> |<EMAIL_ADDRESS>| ICSE - 1993 |
| Rizwan Ahmad | General Secretary |<PHONE_NUMBER> |<EMAIL_ADDRESS>| ICSE - 1996 |
| Devendra Kumar Dwivedi | Finance Secretary |<PHONE_NUMBER> |<EMAIL_ADDRESS>| ISC - 1993 |
| Mansi Gupta | Joint Secretary |<PHONE_NUMBER> |<EMAIL_ADDRESS>| ICSE - 1998 |
| Inder Pratap Singh | Joint Secretary |<PHONE_NUMBER> |<EMAIL_ADDRESS>| ICSE - 1997 |
Advisory Committee
| Name | Office | Mobile No | Email Address | Batch |
|---|---|---|---|---|
| Dr. Arun Kumar Shukla | Advisory Member |<PHONE_NUMBER> |<EMAIL_ADDRESS>| ICSE - 1988 |
| Nitesh Tiwari | Advisory Member |<PHONE_NUMBER> |<EMAIL_ADDRESS>| ICSE - 1988 |
| Shiv Shankar Shastri | Advisory Member |<PHONE_NUMBER> |<EMAIL_ADDRESS>| ICSE - 1991 |
| Neeraj Kumar Srivastava | Advisory Member |<PHONE_NUMBER> |<EMAIL_ADDRESS>| ICSE - 1990 |
| Piyush Kumar Agarwal | Advisory Member |<PHONE_NUMBER> |<EMAIL_ADDRESS>| ICSE - 1991 |
| Arjun Agarwal | Advisory Member |<PHONE_NUMBER> |<EMAIL_ADDRESS>| ISC - 2003 |
| Gaurav Singh Chauhan | Advisory Member |<PHONE_NUMBER> |<EMAIL_ADDRESS>| ISC - 2004 |
| Amit Jaiswal | Advisory Member |<PHONE_NUMBER> |<EMAIL_ADDRESS>| ICSE - 1998 |
| Ratnaish Chaturvedi | Advisory Member |<PHONE_NUMBER> |<EMAIL_ADDRESS>| ICSE - 1993 |
| Madhukar Singh | Advisory Member |<PHONE_NUMBER> |<EMAIL_ADDRESS>| ICSE - 1993 |
| Shoeb Khan | Advisory Member |<PHONE_NUMBER> |<EMAIL_ADDRESS>| ISC - 1995 |
Patron's Message
When we look at the world scenario today we cannot avoid taking painful note of situations of violence of every type. It forces us to say that we built a society which is violent. Should we the privileged ones who saw the first light of the day this century not change the present situation of the world and make it a better world bringing in positive qualities of human beings - peace, unity, understanding and joy ?
The best way we could bring about change in society is by bringing about change in our own personal life and outlook; by preparing oneself to accept the hardships of life; by replacing greed, envy, jealousy, hatred and despair with love, compassion and forgiveness; and by cultivating a deep faith in God who is the source of all good.
I wish and pray that the dedicated ex-students of St. Fidelis College will be successful in making the way that the insight into the working of self is greater than academic learning. It's only then the knowledge will be channelized properly for it's expansion and enrichment.  If no one else uses them, you yourself use them.
Good Luck.
Principal
Fr. Dr. Hermon Minz
Member's Directory
| ID | Name | ICSE Batch | Location |
|---|
* Note: For the sake of convenience we've showed the ICSE Batch year irrespective of whenever the member joined or left school.
Registration
Registration is handled via online payment through PayU Money. It's a one time payment of Rs. 2000 making you eligible for lifetime membership of FAA.
- Membership Fees : Rs. 2000
- Membership Validity : Lifetime
- Email<EMAIL_ADDRESS>History of St. Fidelis
Fidelis Roy, the patron of the college was born in South Western city of Germany in October 1578 in a noble family. His father was the Mayor of the city.
Fidelis as a young lad was very brilliant and had stupendous memory power and was awarded doctorate in Philosophy and Letters in 1601 at the age of 23 from the University of Freiberg, Germany. Later he also studies law and received a doctorate in civil and church law. He was soon in great demand because of his abilities.
He became the voice of the voiceless, the poor and those met with injustice.God also had a better plan for him and was calling him to a higher, more challenging, hard and dedicated life in the service of humanity and in doing so he died a martyr’s death living and remaining faithful to his calling, on 24th April, 1622.
As per church tradition he was declared Saint (holy man) by Pope Benedict XIV in 1746. As Fidelians we have to imbibe the spirit of St. Fidelis and do our work and duties in all sincerity, honesty and always serve the people in need.
Contact Us
You can mail us at :
Fidelian Alumni Association
St. Fidelis College
Sector - 9, Vikas Nagar
Lucknow
Or use our online contact form :
Contact FormOr connect with us on social media platforms :
You can also email us at<EMAIL_ADDRESS>You can also call us at +91-993-596-0606
Do not forget to like us on Facebook.


WITNESS LIST Criminal Jurisprudence Committee February 19, 1997-2:00P HB 58 Against: Keith Hampton (TCDLA) Registering, but not testifying: For: Carvel McNeil, Jr. (Houston Police Union) Jack Means (TX Conf Police/Sheriffs) On: Robert Kepple (TDCAA) HB 93 For: Rep. Richard Raymond (himself) Against: Keith Hampton (TCDLA) HB 151 Against: Lois A. Robison (CURE) On: Glenda McGee (CAPS/CURE) Registering, but not testifying: Against: Carvel McNeil, Jr. (Houston Police Union) Jack Means (TX Conf Police/Sheriffs) Keith Hampton (TCDLA) Sgt. Rick A. Watson (Dallas PD/Chief Click) Ted Gibson (Mt. Pleasant PD) HB 311 For: Lenuel E. Ferguson (himself) Registering, but not testifying: For: JAMES D. NICHOLSON (TX State Rifle Assn.) HB 806 For: Harold Goeble (himself) Michael Lummus (Austin Police Assoc.) Mike Sheffield (Austin Police Assoc.) Rep. Sherri Greenberg (herself) Ronald G. DeLord (CLEAT) Sherry Goeble (herself) Against: Keith S. Hampton (TCDLA) On: Robert Kepple (TCDAA) Registering, but not testifying: For: Alex B. Perez (himself) Carl E. King (himself) Carvel McNeil Jr. (Houston Patrolmen Union) Jack Means (TX Conf Police/Sheriffs) James O. Self (himself)


`fe8b3a3` edits to atomic swap related docs - gcharang
`2cb5c3b` updates changelog of agama desktop - gcharang
`4d12bab` updates list of repos and links, minor changes ... - gcharang
`6d2b14e` updates list of repos and links - gcharang
`94f3693` Merge pull request #65 from KomodoPlatform/dev - gcharang
Hi
I am JavaScript developer and want to contribute to Agama devlopments. I don't get access to discord chat. Is there list of issues or problems some were else for me to read?
Thanks for your great work.


The Monkeys
Technical Compatibility Test
First name *
Surname name *
Email address *
Daytime contact number *
Address *
Suburb *
State *
ACT
NSW
NT
QLD
SA
TAS
VIC
WA
Postcode *
Enquiry type *
General enquiry
Product feedback or enquiry
Product complaint
Product name
Product size
Use-by date
Batch code
Enquiry


Add User
| Name |
Permissions |
{% block table_headers%}{% endblock %}
|
{% for user in users %}
{%block user_row%}{% include "object_permissions/permissions/user_row.html" %}{%endblock%}
{% endfor %}
{% for group in groups %}
{%block group_row%}{% include "object_permissions/permissions/group_row.html" %}{%endblock%}
{% endfor %}


What is Leagcore?
League core is a place where players can vote for eachother and write comments. It also provides usefull live stats.
Are there any rewards?
Yes there is for the most popular. Since this is the meta voting is restricted as the whole app on eu west only. The reward is 10€ for now but it will rise in future.
What about harmfull comments?
The way the system works, a user wont see any messages unless he wants to. And the wont be public unless the user wants that too. So if there are any inappropriate messages they will most likeyl be ignored and deleted later by the system.


How To Life Hacks is a new and exciting app/service that allows users to create their vey own How-To guides.
Is an easy way to view helpful life hacks. Allows users to easily access how-to guides and create new ones. The app also shows top guides that that could be beneficial or interesting for anyone who is looking for a quick life hack.
life hacks in general allow people to achieve more of what is important in a much easier way.
This app is for people who enjoy learning or teaching new things.
How To life Hack's mission is to give users the tools to make life a bit easier by ensuring that our product is easy to use and quick to access. We also want to connect users so that we can build a community around making life hacks.


Grocery List Numbers
cake
choclate
Chips
Top Band list Roman Numerals
Queens
Eagles
ColdPlay
Favourite game list alphabets
Billiards
chess
badminton


| Author: | PyBlosxom Development Team |
|---|---|
| Version: | dev_writing_plugins.txt 1147 2007-11-30 17:37:47Z willhelm |
| Copyright: | This document is distributed under the MIT license. |
Contents
This chapter covers a bunch of useful things to know when writing PyBlosxom plugins. This chapter, moreso than the rest of this manual, is very much a work in progress.
FIXME - absorb from wiki, Will's tips, and tutorials
All plugins should have a docstring at the top of the file that describes in detail:
For example, this is at the top of Will's wbgpager plugin:
""" Quickly written plugin for paging long index pages. PyBlosxom uses the num_entries configuration variable to prevent more than num_entries being rendered by cutting the list down to num_entries entries. So if your num_entries is set to 20, you will only see the first 20 entries rendered. The wbgpager overrides this functionality and allows for paging. It does some dirty stuff so that PyBlosxom doesn't cut the list down and then wbgpager cuts it down in the prepare callback later down the line. To install wbgpager, do the following: 1. add "wbgpager" to your load_plugins list variable in your config.py file--make sure it's the first thing listed so that it has a chance to operate on the entry list before other plugins. 2. add the $page_navigation variable to your head or foot (or both) templates. this is where the page navigation HTML will appear. Here are some additional configuration variables to adjust the behavior: wbgpager_count_from datatype: int default value: 0 description: Some folks like their paging to start at 1--this enables you to do that. wbgpager_previous_text datatype: string default value: << description: Allows you to change the text for the prev link. wbgpager_next_text datatype: string default value: >> description: Allows you to change the text for the next link. wbgpager_linkstyle datatype: integer default value: 0 description: This allows you to change the link style of the paging. style 0: [1] 2 3 4 5 6 7 8 9 ... >> style 1: Page 1 of 4 >> That should be it! Note: This plugin doesn't work particularly well with static rendering. The problem is that it relies on the querystring to figure out which page to show and when you're static rendering, only the first page is rendered. This will require a lot of thought to fix. If you are someone who is passionate about fixing this issue, let me know. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Copyright 2004, 2005, 2006 Will Guaraldi """
All plugins should have the following module-level variables defined in them just after the docstring:
For example:
__author__ = "Will Guaraldi - willg at bluesock dot org" __version__ = "version 1.5 2006-01-15" __url__ = "http://www.bluesock.org/~willg/pyblosxom/" __description__ = "Splits long indexes into multiple pages."
After that, you should have a verify_installation section that verifies that the plugin is configured correctly. As of PyBlosxom 0.9, the pyblosxom.cgi is able to test your PyBlosxom installation. It verifies certain items in your config.py file and also loads all the plugins and lets them verify their configuration as well. First it tells you your Python version, OS name, and then proceeds to verify your config properties (did you specify a valid datadir? does it exist?...) and then initializes all your plugins and executes verify_installation(request) on every plugin you have installed that has the function.
As a plugin developer, you should add a verify_installation function to your plugin module. Something like this (taken from pycategories):
def verify_installation(request): config = request.getConfiguration() if not config.has_key("category_flavour"): print "missing optional config property 'category_flavour' " print "which allows you to specify the flavour for the category " print "link. refer to pycategory plugin documentation for more " print "details." return 1
This gives you (the plugin developer) the opportunity to walk the user through configuring your highly complex, quantum-charged, turbo plugin in small baby steps without having to hunt for where their logs might be.
So check the things you need to check, print out error messages (informative ones), and then return a 1 if the plugin is configured correctly or a 0 if it's not configured correctly.
This is not a substitute for the user to read the installation instructions. It should be a really easy way to catch a lot of potential problems without involving the web server's error logs and debugging information being sent to a web-browser and things of that nature.
Here's another example of verify_installation from Will's wbgpager plugin:
def verify_installation(request): config = request.getConfiguration() if config.get("num_entries", 0) == 0: print "missing config property 'num_entries'. wbgpager won't do " print "anything without num_entries set. either set num_entries " print "to a positive integer, or disable the wbgpager plugin." print "see the documentation at the top of the wbgpager plugin " print "code file for more details." return 0 return 1
First you need to get the logger instance. After that, you can call debug, info, warning, error and critical on the logger instance. For example:
from pyblosxom import tools def cb_prepare(args): ... logger = tools.getLogger() logger.info("blah blah blah...") try: ... except Exception, e: logger.error(e)
The easiest way to store state between callbacks is to store the data in the data dict of the Request object. For example:
STATE_KEY = "myplugin_state" def cb_date_head(args): request = args["request"] data = request.getData() if data.has_key(STATE_KEY) and data[STATE_KEY]["blah"] == "blahblah": ... def cb_filelist(args): request = args["request"] data = request.getData() data[STATE_KEY] = {} data[STATE_KEY]["blah"] = "blahblah"
If you want to implement a callback, you add a function corresponding to the callback name to your plugin module. For example, if you wanted to modify the Request object just before rendering, you'd implement cb_prepare like this:
def cb_prepare(args): pass
Obviously, since we have pass we're not actually doing anything here, but when the user sends a request and PyBlosxom handles it, this function in your plugin will get called when PyBlosxom runs the prepare callback.
Each callback passes in arguments through a single dictionary. Each callback passes in different arguments and expects different return values. Check the architecture chapter for a list of all the callbacks that are available, their arguments, and return values.
Entry parsing functions take in a filename and the Request object. They then open the file and parse it out. The can call cb_preformat and cb_postformat as they see fit. They should return a dict containing at least "title" and "story" keys. The "title" should be a single string. The "story" should be a list of strings (with n at the end).
Here's an example code that reads .plain files which have the title as the first line, metadata lines that start with # and then after all the metadata the body of the entry:
import os def cb_entryparser(entryparsingdict): """ Register self as plain file handler """ entryparsingdict['plain'] = parse return entryparsingdict def parse(filename, request): """ We just read everything off the file here, using the filename as title """ entrydata = {} f = open(filename, "r") lines = f.readlines() f.close() # strip off the first line and use that as the title. title = lines.pop(0).strip() entrydata['title'] = title # absorb meta data lines which begin with a # and consist # of a name and a value while lines and lines[0].startswith("#"): meta = lines.pop(0) meta = meta[1:].strip() # remove the hash meta = meta.split(" ", 1) entrydata[meta[0].strip()] = meta[1].strip() # join the rest of the lines as the story story = ''.join(lines) entrydata["story"] = "".join(lines) return entrydata
FIXME - need more about preformatters here
A typical preformatter plugin looks like this:
def cb_preformat(args): if args['parser'] == 'linebreaks': return parse(''.join(args['story'])) def parse(text): # A preformatter to convert linebreak to its HTML counterpart text = re.sub('\\n\\n+','

',text) text = re.sub('\\n','
',text) return '
%s
' % text


|
Panda3D
|
This is an abstract class for any volume in any sense which can be said to define the locality of reference of a node in a graph, along with all of its descendants. More...
Public Types | |
| enum | BoundsType { BT_default = 0, BT_best = 1, BT_sphere = 2, BT_box = 3, BT_fastest = 4 } |
| enum | IntersectionFlags { IF_no_intersection = 0, IF_possible = 1, IF_some = 2, IF_all = 4, IF_dont_understand = 8 } |
Public Member Functions | |
| int | contains (const BoundingVolume vol) |
| Returns the appropriate set of IntersectionFlags to indicate the amount of intersection with the indicated volume. More... | |
| bool | extendBy (const BoundingVolume vol) |
| Increases the size of the volume to include the given volume. More... | |
| bool | isEmpty () |
| Any kind of volume might be empty. More... | |
| bool | isInfinite () |
| The other side of the empty coin is an infinite volume. More... | |
| BoundingVolume | makeCopy () |
| output (Ostream out) | |
| setInfinite () | |
| Marks the volume as infinite, even if it is normally finite. More... | |
| write (Ostream out, int indent_level) | |
| Public Member Functions inherited from TypedObject | |
| TypeHandle | getType () |
| int | getTypeIndex () |
| Returns the internal index number associated with this object's TypeHandle, a unique number for each different type. More... | |
| bool | isExactType (TypeHandle handle) |
| Returns true if the current object is the indicated type exactly. More... | |
| bool | isOfType (TypeHandle handle) |
| Returns true if the current object is or derives from the indicated type. More... | |
| Public Member Functions inherited from ReferenceCount | |
| int | getRefCount () |
| Returns the current reference count. More... | |
| ref () | |
| Explicitly increments the reference count. More... | |
| bool | testRefCountIntegrity () |
| Does some easy checks to make sure that the reference count isn't completely bogus. More... | |
| bool | testRefCountNonzero () |
| Does some easy checks to make sure that the reference count isn't zero, or completely bogus. More... | |
| bool | unref () |
| Explicitly decrements the reference count. More... | |
Static Public Member Functions | |
| static TypeHandle | getClassType () |
| Static Public Member Functions inherited from TypedReferenceCount | |
| static TypeHandle | getClassType () |
| Static Public Member Functions inherited from TypedObject | |
| static TypeHandle | getClassType () |
| Static Public Member Functions inherited from ReferenceCount | |
| static TypeHandle | getClassType () |
Additional Inherited Members | |
| Public Attributes inherited from TypedObject | |
| TypeHandle | type |
| Returns the TypeHandle representing this object's type. More... | |
| Public Attributes inherited from ReferenceCount | |
| int | ref_count |
| The current reference count. More... | |
This is an abstract class for any volume in any sense which can be said to define the locality of reference of a node in a graph, along with all of its descendants.
It is not necessarily a geometric volume (although see GeometricBoundingVolume); this is simply an abstract interface for bounds of any sort.
| enum BoundsType |
| enum IntersectionFlags |
| int contains | ( | const BoundingVolume | vol | ) |
Returns the appropriate set of IntersectionFlags to indicate the amount of intersection with the indicated volume.
| bool extendBy | ( | const BoundingVolume | vol | ) |
Increases the size of the volume to include the given volume.
|
static |
| bool isEmpty | ( | ) |
Any kind of volume might be empty.
This is a degenerate volume that contains no points; it's not the same as, for instance, a sphere with radius zero, since that contains one point (the center). It intersects with no other volumes.
| bool isInfinite | ( | ) |
The other side of the empty coin is an infinite volume.
This is a degenerate state of a normally finite volume that contains all points. (Note that some kinds of infinite bounding volumes, like binary separating planes, do not contain all points and thus correctly return is_infinite() == false, even though they are technically infinite. This is a special case of the word 'infinite' meaning the volume covers all points in space.)
It completely intersects with all other volumes except empty volumes.
| BoundingVolume makeCopy | ( | ) |
| output | ( | Ostream | out | ) |
| setInfinite | ( | ) |
Marks the volume as infinite, even if it is normally finite.
You can think of this as an infinite extend_by() operation.
| write | ( | Ostream | out, |
| int | indent_level | ||
| ) |


About me
Hello! I'm Hasib, A passionate self-taught frontEnd & MERN Stack web developer from Bangladesh. I develop web applications, mobile applications, and desktop applications
Download CVContact with us
Kapasia - 1730
Mon to Fri 9am to 6pm
Send us your query anytime!


My family originally got her for my dad because he had lost his dog, Willy a few years back (hence her name being Wilma) but when we got her she for some reason got very attached to me. She has been my best friend and has been by my side for years. She is the sweetest dog I think anyone will ever meet and I will always love her.


Pressing the same shortcut after you have invoked Smart-type Completion when there's an array of expected type in context will suggest to get an element from this array.


{% extends 'base.html' %} {% import 'macros.html' as macro%} {% import "bootstrap/wtf.html" as wtf %} {%block content%}
{{pitch.description}}
Posted on {{date}} by {{pitch.user.username| capitalize}}


SEOLEONGTANG
This post demystifies seolleongtang so you can make this restaurant favorite at home. A few dollars’ worth of beef bones make lots of rich and nourishing soup. Seolleongtang is a milky beef bone soup that’s made by boiling down ox leg bones for several hours until the broth becomes rich and creamy white. This broth is a staple in Korean households, especially during cold winter months.
Legend has it that this soup was created because King Seonjong of the Joseon Dynasty wanted to feed a large number of people after an ancestral worship ritual involving a sacrificial cow. Let me tell you — the King had the right idea! You can feed your whole family with a few dollars’ worth of beef bones and still have some leftover to freeze for later use.
The broth is also great as a soup base for many other Korean soups such as tteokguk, manduguk,doenjangguk, andmiyeokguk.In this post, I’m going to demystify seolleongtang to convince you to make this restaurant favorite at home. Yes, it takes time, but most of it is stove time. You can do other things around the house while this is boiling away in the kitchen. The result is totally rewarding!


About
GrapheneOS is a privacy and security focused mobile OS with Android app compatibility developed as a non-profit open source project. It's focused on the research and development of privacy and security technology including substantial improvements to sandboxing, exploit mitigations and the permission model. It was founded in 2014 and was formerly known as CopperheadOS.
GrapheneOS improves the privacy and security of the OS from the bottom up. It deploys technologies to mitigate whole classes of vulnerabilities and make exploiting the most common sources of vulnerabilities substantially more difficult. It improves the security of both the OS and the apps running on it. The app sandbox and other security boundaries are fortified. GrapheneOS tries to avoid impacting the user experience with the privacy and security features. Ideally, the features can be designed so that they're always enabled with no impact on the user experience and no additional complexity like configuration options. It's not always feasible, and GrapheneOS does add various toggles for features like the Network permission, Sensors permission, restrictions when the device is locked (USB peripherals, camera, quick tiles), etc. along with more complex user-facing privacy and security features with their own UX.
The features page provides an overview of the substantial privacy and security improvements added by GrapheneOS to the Android Open Source Project (AOSP). Many of our past features were contributed to AOSP, Linux and other projects to improve privacy and security for billions of users so they're no longer listed on our features page.
Official releases are available on the releases page and installation instructions are on the install page.
GrapheneOS also develops various apps and services with a focus on privacy and security. Vanadium is a hardened variant of the Chromium browser and WebView specifically built for GrapheneOS. GrapheneOS also includes our minimal security-focused PDF Viewer, our hardware-based Auditor app / attestation service providing local and remote verification of devices, our modern privacy / security focused camera app, and the externally developed Seedvault encrypted backup which was initially developed for inclusion in GrapheneOS.
No Google apps or services
GrapheneOS will never include either Google Play services or another implementation of Google services like microG. It's possible to install Play services as a set of fully sandboxed apps without special privileges via our sandboxed Google Play compatibility layer. See the FAQ section for more details on our plans for filling in the gaps from not shipping Play services and Google apps.


{% extends "index.html" %}
{% block page_title %} 404 Error: Page not found {% endblock title %}
{% block page_description %} {% endblock title %}
{% block page_id %} {% endblock %}
{% block content %}
404 ErrorPage not found
I dreamed about drowning in an ocean made out of orange soda last night.
It took me a while to work out it was just a Fanta sea.
At work we have a printer we have nicknamed Bob Marley.
It's always Jammin'.
I gave all my dead batteries away today…
Free of charge.
Want to hear a joke about paper?
Never mind, it’s tearable!
This graveyard looks overcrowded.
People must be dying to get in there!
Can February March?
No, but April May!
Did you hear the rumor about butter?
Well, I’m not going to spread it!
Let's go home
{% endblock content %}


Eye tracking has been used in many scientific fields, such as behavioral sciences, education, marketing, and sports. Visualization usually plays an important role in the analysis of eye tracking data. In this presentation, I will first introduce the EyeTrackR R package that was developed for processing and visualizing eye tracking data from people looking at scientific posters. I will then present our first results of a study that tries to determine where people are looking when ranking the stability of a model holding certain postures. A portable eye-tracker is used to record the original video data of people looking at human postures. Image processing is used to extract statistical information from the video data.
Jürgen Symanzik, Chunyang Li, Breanna Studenka, Boyu Zhang, Eric McKinney, Brennan Bean, Melanie Athens, Madison Hansen
In ISSAS,
2018


The display below groups together documents within this docket by their similarity to one another. Each circle in the upper portion of the display represents a group of documents that are at least 50% similar to one another. Selecting a circle allows you to drill down and examine subsets of documents that show higher similarity percentages. Below the main display, you can see a list of all documents within the group or subgroup you've selected, and examine the text of each document. Each passage of text is highlighted based on how common it is within the selected group.


KPSEREADLINK(1) KPSEREADLINK(1) NAME kpsereadlink - print contents of symbolic link SYNOPSIS kpsereadlink file DESCRIPTION If file is a symbolic link, print its contents (what it links to), and exit successfully. Exit with a failure otherwise. On systems that do not support symbolic links, kpsereadlink will always fail. OPTIONS kpsereadlink accepts the following options: --help Print help message and exit. --version Print version information and exit. SEE ALSO readlink(2) Kpathsea 6.1.0 1 March 2011 KPSEREADLINK(1)


Located near Alappuzha, ‘Krishnapuram Palace’ is yet another of the famous heritage tourism places in Kerala. Built in 18th century by the then maharaja of the kingdom of Travancore in South India, the palace reflects a typical Kerala style of architecture with pitched roofs, dormer windows and thin corridors.
Enlisted as a protected monument under the state archaeology department, the palace has today been converted into an archaeological museum and exhibits a rare collection of fascinating mural paintings, the most noteworthy of which is the 49 square metres long ‘Gajendra Moksham’. Depicting an elephant (Gajendra) worshipping Lord Vishnu in full devotion, the painting is the largest of its kind so far discovered in Kerala.
Another of the major highlights of the palace is a Buddha mandapam enshrining a Buddha statue, one of the four ancient Buddha relics found in the Alappuzha district.Other interesting artefacts to be seen inside the palace complex are some fine collections of early coins of the Travancore kingdom, bronze sculptures and stone inscriptions; a double edged sword called the ‘Kayamkulam Vaal’ is yet another of the prized possession of this palace cum museum.
Needless to say, a heaven for historians, a visit to this ancient palace which is actually a miniature replica of the Padmanabhapuram Palace is sure to leave you awed with its antiques and off-course, the bewitching architecture that has further been beautified with addition of ornate terraced gardens dotted with fountains, ponds and flower beds. One can sit here for hours soaking himself in the serene and tranquil aura of the place. It is 48.2 kilometers from alappuzha.
Visiting Timings:-9:00AM–1:00PM and 2:00PM–4:30PM. It is closed on monday.
Protected by the state archaeological department, ‘Karumadikuttan’ is one of the popular heritage and Buddhist pilgrimage sites near Alappuzha in Kerala, housing a pre-historic statue of Lord Buddha dating somewhere between 9th and 13th centuries AD. The 3ft. tall statue sculpted in black granite, with its left side missing, is believed to have been abandoned for centuries in the nearby water stream of ‘Karumady thodu’ and was found by a British engineer in 1930s who later built a shrine to protect this ancient relic.
The shrine today, sits along the backwaters of the ‘Punnamada Lake’ amidst extreme tranquillity and provides for a huge respite to people looking out for mental peace and calm. Needless to say, the site also serves as a great reminder of the once flourishing Buddhist culture in the region, luring countless Buddhist pilgrims and researchers & scholars studying ancient cultures of India.
What instantly grabs your attention when you see the statue for the first time is its missing left side that leaves you with many questions unanswered regarding its broken state. Well! many theories relate to it but, none has been confirmed by the historians owing to lack of evidences.
The first and rather much believable theory that explains this condition of the statue is the violent act of Mughals who destroyed it in order to cease the spread of Buddhism in Kerala. Yet another theory which is precisely more of a folklore describes it to be the act of an enraged elephant who, in his fit of anger destroyed the statue’s left side. Whatever be the theory, the statue in its meditative stance continues to bless its visitors giving them the message of peace, harmony and one-ness among all humans. It is 3 kilometers from alappuzha.
Visiting Timings:- 8:00AM-6:00PM
At a distance of 15 Kilometers from Pathanamthitta, 52.4 Kilometers from Alappuzha & 57 Km from Kumarakom, Aranmula is a Aranmula Snake Boat Race, also known as Aranmula Vallamkali is a popular boat race held in the never ending Kerala Backwaters. This is an annual boat race held in Aranmula district of Kerala during the Onam festival in the month of August-September. It is also known as Uthrittathi Boat Race.
Aranmula Vallamkali owes its origin to the Sri Parthasarathy Temple situated on the banks of the Pamba River. The Vallamkali, associated with the annual festival of Sri Parthasarathy, is usually held on the last two days of the festival. The event that attracts tourists from all over the world is conducted not to win any trophy or prize but to celebrate the anniversary of the Sri Krishna idol installation, the main deity at the Aranmula Parthasarathy Temple.
It is conducted in the Pamba River in front of the temple to commemorate the crossing of the river by Lord Krishna.The snake boats assemble near the Parthasarathy Temple before the race begins. Festivities take over the whole town as well as the waters. The boat race is famous worldwide and has become an icon of Kerala, attracting thousands of tourists every year during the festival of Onam.
This annual boat race during Onam attracts tourists from all over India and the world. The snake boats are called 'Palliyodams' and their structures resemble snakes. These boats are around 100 feet in length, have narrow fronts with raised hoods and rear portions towering at a height of around 20 ft. Around 40 boats participate in this annual event and each boat accommodates about 120 people including helmsmen, oarsmen and singers.
Colorful and vivid flags are set on the boat's head and colorful parasol in the center offers a beautiful spectacle. The race begins in the afternoon after the morning prayers and rituals. Songs called 'Vanchipattu' are sung during the races. Groups of men and singers who sing stridently in a rhythmic manner gather along the banks of the rivers and in snake boats.
The speed and the graceful rhythmic movements of the boat offer an amazing show. After the water sport there is an elaborate feast in the Aranmula temple. Aranmula Vallamkali, organised under the sponsorship of Palliyoda Seva Sangam, is more of a water festival than a competition. For the past few years, the Central Tourism Ministry has been providing financial assistance for preserving and promoting this legendary snake boat race.
Visiting Timings:- 4:00AM-11:00AM and 5:00PM-8:00PM.
At a distance of 29 Kms from Pathanamthitta & 6 Kms from Thiruvalla, Trikkukkudi Rock-Cut Temple located near Kaviyoor is an 8th century Rock-Cut temple built in Pallava style of architecture and a place of great archeological importance Dedicated to Lord Siva, this temple is one of the three rock-cut temples in Kerala and one of the rare specimens of rock-cut temples in Kerala.
It is preserved as a monument by the Archaeological Department. Lord Siva represented in the form of 3 feet high Siva Linga and is enshrined in a square cave. The shrine also contains idols of Ganapathy, Maharshi and Dwarapalakas.This temple is situated on the banks of the River Manimala. The architecture & sculptures of the temple are unique and famous. This place is connected by Bus with Thiruvalla town, but hiring a private vehicle from Thiruvalla is the most convenient way to visit this place. It is 38.9 kilometers from alappuzha.
Visiting Timings:- 8:00AM-6:00PM.


Talpha'/Alpha Method, Manual Data Input
First you have to put in the distance between two layers in the hinge for each fold, then put in the lengths of the isogons-in steps of ten degrees. The input is listed in the table on the right side.
Data can be saved in a file with the extension ‚.TAL‘. Only the ratios T/T0. are saved.


Alerts
Provide contextual feedback messages for typical user actions.
Basic example
A simple primary alert with an example link. Give it a click if you like.
A simple secondary alert with an example link. Give it a click if you like.
A simple success alert with an example link. Give it a click if you like.
A simple danger alert with an example link. Give it a click if you like.
A simple warning alert with an example link. Give it a click if you like.
A simple info alert with an example link. Give it a click if you like.
A simple light alert with an example link. Give it a click if you like.
A simple dark alert with an example link. Give it a click if you like.

A simple primary alert with an example link. Give it a click if you like.

A simple secondary alert with an example link. Give it a click if you like.

A simple success alert with an example link. Give it a click if you like.

A simple danger alert with an example link. Give it a click if you like.

A simple warning alert with an example link. Give it a click if you like.

A simple info alert with an example link. Give it a click if you like.

A simple light alert with an example link. Give it a click if you like.

A simple dark alert with an example link. Give it a click if you like.

Alert with icon
A simple primary alert with an example link. Give it a click if you like.
A simple secondary alert with an example link. Give it a click if you like.
A simple success alert with an example link. Give it a click if you like.
A simple danger alert with an example link. Give it a click if you like.
A simple warning alert with an example link. Give it a click if you like.
A simple info alert with an example link. Give it a click if you like.
A simple light alert with an example link. Give it a click if you like.
A simple dark alert with an example link. Give it a click if you like.

A simple primary alert with an example link. Give it a click if you like.

A simple secondary alert with an example link. Give it a click if you like.

A simple success alert with an example link. Give it a click if you like.

A simple danger alert with an example link. Give it a click if you like.

A simple warning alert with an example link. Give it a click if you like.

A simple info alert with an example link. Give it a click if you like.

A simple light alert with an example link. Give it a click if you like.

A simple dark alert with an example link. Give it a click if you like.

Dismissible alerts
Primary alert: Dismiss me by clicking the close button on the right.
Secondary alert: Dismiss me by clicking the close button on the right.
Success alert: Dismiss me by clicking the close button on the right.
Danger alert: Dismiss me by clicking the close button on the right.
Warning alert: Dismiss me by clicking the close button on the right.
Info alert: Dismiss me by clicking the close button on the right.
Light alert: Dismiss me by clicking the close button on the right.
Dark alert: Dismiss me by clicking the close button on the right.

Primary alert: Dismiss me by clicking the close button on the right.
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>

Secondary alert: Dismiss me by clicking the close button on the right.
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>

Success alert: Dismiss me by clicking the close button on the right.
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>

Danger alert: Dismiss me by clicking the close button on the right.
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>

Warning alert: Dismiss me by clicking the close button on the right.
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>

Info alert: Dismiss me by clicking the close button on the right.
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>

Light alert: Dismiss me by clicking the close button on the right.
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>

Dark alert: Dismiss me by clicking the close button on the right.
<button type="button" class="btn-close btn-close-white" data-bs-dismiss="alert" aria-label="Close"></button>

Additional content
Well done!
Aww yeah, you successfully read this important alert message. This example text is going to run a bit longer so that you can see how spacing within an alert works with this kind of content.
Whenever you need to, be sure to use margin utilities to keep things nice and tidy.

Well done!

Aww yeah, you successfully read this important alert message. This example text is going to run a bit longer so that you can see how spacing within an alert works with this kind of content.

Whenever you need to, be sure to use margin utilities to keep things nice and tidy.


One of the few in sweatpants, Dartis, 23, is the oldest player on the floor.
Teammates and coaches tease him about his age, too. Some call him “Old Man,” a nickname that fits because he’s two years older than almost everyone on the youngest roster in the Mid-American Conference.
“Ah, the ‘Old Man!’” Dartis said. He laughs heartily and shakes his head. “We’re just clowning, man. We’re having a good time. It just takes me a little longer to get warmed up.”
After seasons of injuries, transfers and adversity that have put him in a position for a final ride he didn’t have to take, Dartis, a redshirt senior, has become the unquestioned leader of the Bobcats.
In the big picture, he’s proved a survivor. He’s the last man standing from an era of Bobcat basketball that featured substantial shifts from sky-high hopes to disappointing finishes.
“I’m just blessed to be back,” he said. “It’s my fifth year, and I feel good. I’m just grateful to have the opportunity to play again.”
It didn’t take long for Saul Phillips to fall in love with Dartis when he made his first visit to Newark High School in 2014.
A school custodian approached Phillips as he walked into the school’s gym to scout Dartis.
“Who are you?” the custodian asked.
“I’m the new coach at Ohio University,” Phillips said. “I’m here to see Jordan Dartis.”
“Oh, Jordan,” the custodian said with a smile. “He’s one of the nicest kids that has ever come through here.”
Phillips recalled the conversation six years later. He could see why the custodian complimented Dartis as soon as he met him.
Dartis always emitted an abundance of kindness and positivity, and the qualities seemed genuine. Those weren’t traits Phillips had always seen in high-school recruits.
“It just came to me within seconds of stepping foot (in the school),” Phillips said. “Jordan had the qualities that brought everybody into him. I liked to coach that kid a lot. Not only was he talented, but he was the kind of person I wanted to be around.”
Dartis was talented on the court, too. He was a mainstay in Ohio’s starting lineup by the end of his freshman season, and he developed a knack from the 3-point line during his sophomore season when he led the team in 3-pointers per game.
But the solid foundation of talent that Phillips assembled under Dartis began to crumble after his second season.
Antonio Campbell, who led Ohio with 17 points per game in Dartis’ freshman year, ended his career after breaking his foot midway through his senior season. Jaaron Simmons, who averaged over 15 points per game from 2015-17, transferred to Michigan.
The two players who anchored the Bobcats before Dartis arrived had left earlier than expected. Phillips had promising prospects who could potentially fill the gaps, but for Dartis, the landscape was different.
Despite the change, Dartis remained positive. He continued to joke with teammates in warmups; he built relationships with team personnel; and he exuded the same charm Phillips saw from his high school workout.
“Sometimes, you feel like he’s putting on a show for you,” Phillips said. “But he’s like that when nobody is watching. That’s just how he is. He’s got a gift with people.”
Obstacles for Dartis were still ahead of him.
The next one proved out of his control. It was his left hip, and it was bothering him.
Originally, he felt the pain in high school, but it subsided in his first two seasons at Ohio before it picked up again in his junior season, Dartis said.
His left hip started to bother him again when he made a push-step while on defense in a preseason practice. Phillips walked over and offered a hand to lift him to his feet, but Dartis couldn’t take it.
“I need a sec,” Dartis remembered telling Phillips. “This is pretty painful.”
Dartis stood up a few seconds later, but the pain never went away.
Then, he injured his right hip.
It happened in November of that season in the Charleston Classic against Indiana State, Ohio’s third opponent in the three-day tournament. The Bobcats needed four overtimes to win one of the longest games in program history, but Dartis — who played 54 minutes — was in serious pain.
“My hips, I just … I couldn’t feel them,” he said. “I knew my other hip was toast.”
Dartis didn’t stop playing. He felt as if he couldn’t.
He knew that Ohio needed him to lead a team of inexperienced players who lacked a replacement for freshman Jason Carter, who emerged as a reliable option alongside Dartis in 2016-17 but who suffered a season-ending leg injury three games into the season.
So Dartis underwent a series of cortisone injections and occasionally missed practice to nurse the lingering pain.
That’s when Dartis began to change — not necessarily in his play, but in his mind.
“Mentally, it was so draining,” he said. “At that point in time, basketball wasn’t fun for me anymore. I was just reaping the benefits of college and having my education paid for.”
Dartis limped his way through the rest of the season. But his offseason required two surgeries and a lengthy timetable for recovery. He missed his senior season, which could only be salvaged with a redshirt.
And without Dartis on the floor, the prospects for Ohio in the 2018-19 season were even more unknown.
The low point for Dartis came in the summer practice.
He was sitting, not playing, when the Bobcats held their first practice in what eventually became a pivotal year for the program.
He couldn’t smile in warmups or joke with teammates or bring positivity to the court because he wasn’t on it.
“Just seeing them work all summer and just not being a part of it — that was a big moment where I was feeling sad,” Dartis said. “When the first game started, it was just surreal that I wasn’t going to play that year.”
He watched as the Bobcats crumbled. They were inconsistent and lacked the identity Dartis helped build when he joined the program three seasons earlier. He couldn’t do anything to help, though.
His positivity was apparent when he was around his teammates. He still struggled when he thought about what was next.
“Sometimes, you feel like he’s putting on a show for you ... but he’s like that when nobody is watching. That’s just how he is. He’s got a gift with people.”- Saul Phillips, former head coach of Ohio University's mens basketball team
Not for the program, but for himself.
Should he quit?
“There were thoughts about it,” Dartis said. “Well, not about should I quit, but is it worth it? Is it worth going that extra mile?
“I love basketball, and I will keep it to my grave, but when I’m 30 to 35 (years old), I want to be able to get out of bed.”
Ultimately, he decided going the extra mile was worth it, but he didn’t feel confident in that decision until last spring when he could finally return to the court.
To play again, however, he needed to cope with more changes.
Phillips, who now coaches at Division II Northern State, was out after the Bobcats went one-and-done in the MAC Tournament and finished the 2018-19 season 14-17.
Carter, Teyvion Kirk and Anthony Cowart Jr. also left. All three were frequent starters in Phillips’ final season, and all of them transferred upon the arrival of new coach Jeff Boals.
Ohio had new players — eight of whom were freshmen — and a new coaching staff. The Bobcats were rebuilding. They were unlikely to be any better than the teams Dartis previously played with.
For the new era of Ohio basketball, he would be the only constant.
Dartis holds no ill will toward teammates who left the program.
“I hope the best for them,” he said of the transfers. “I think they made the best decision for themselves.”
Now, Dartis has a new supporting cast, and he’s embraced his role as the veteran on a young team. He’s OK with that role, too.
He’s back playing for a school he’s devoted four years to. His current teammates have embraced the “Old Man” among them and have helped make his last season at Ohio memorable.
On Feb. 8, Dartis became the program’s all-time 3-point leader when he splashed his 291st. At the next timeout, teammates showered him with cheers and high-fives, and his achievement was celebrated with a pregame ceremony in the next home game.
To Dartis, the record reflected more than his ability to shoot 3-pointers. It showed his resilience. He fought through pain — both physically and mentally — as he underwent near constant change around him.
With the record, his name will long be remembered.
“When I look back, it’s like, man, I’ve been at OU for four years,” Dartis said. “Why would I want to lose something that’s so pivotal to me?”
Dartis could be resentful of his teammates who gave up on the team. He could also have regrets for not opting for surgery sooner in his career when he first felt pain in his hip.
Looking back at his college career, the “Old Man” can only discuss all of its ups and downs in a positive way.
A bumpy college career full of unexpected twists hasn’t changed that.
“That made me who I am today,” Dartis said. “There’s a fan base here, and I got a lot of respect here. I wanted to give them one last show.”


AWS::EC2::SecurityGroupIngress
Adds an inbound rule to a security group.
An inbound rule permits instances to receive traffic from the specified IPv4 or IPv6 CIDR address range, or from the instances associated with the specified security group.
You must specify only one of the following properties: CidrIp
,
CidrIpv6
, SourcePrefixListId
,
SourceSecurityGroupId
, or SourceSecurityGroupName
.
You specify a protocol for each rule (for example, TCP). For TCP and UDP, you must also specify a port or port range. For ICMP/ICMPv6, you must also specify the ICMP/ICMPv6 type and code. You can use -1 to mean all types or all codes.
You must specify a source security group (SourcePrefixListId
,
SourceSecurityGroupId
, or SourceSecurityGroupName
) or a CIDR
range (CidrIp
or CidrIpv6
). If you do not specify one of these
parameters, the stack will launch successfully but the rule will not be added to the
security group.
Rule changes are propagated to instances within the security group as quickly as possible. However, a small delay might occur.
Syntax
To declare this entity in your AWS CloudFormation template, use the following syntax:
JSON
{ "Type" : "AWS::EC2::SecurityGroupIngress", "Properties" : { "CidrIp" :
String
, "CidrIpv6" :String
, "Description" :String
, "FromPort" :Integer
, "GroupId" :String
, "GroupName" :String
, "IpProtocol" :String
, "SourcePrefixListId" :String
, "SourceSecurityGroupId" :String
, "SourceSecurityGroupName" :String
, "SourceSecurityGroupOwnerId" :String
, "ToPort" :Integer
} }
YAML
Type: AWS::EC2::SecurityGroupIngress Properties: CidrIp:
String
CidrIpv6:String
Description:String
FromPort:Integer
GroupId:String
GroupName:String
IpProtocol:String
SourcePrefixListId:String
SourceSecurityGroupId:String
SourceSecurityGroupName:String
SourceSecurityGroupOwnerId:String
ToPort:Integer
Properties
CidrIp
-
The IPv4 address range, in CIDR format.
You must specify a source security group (
SourcePrefixListId
orSourceSecurityGroupId
) or a CIDR range (CidrIp
orCidrIpv6
).For examples of rules that you can add to security groups for specific access scenarios, see Security group rules for different use cases in the Amazon EC2 User Guide.
Required: No
Type: String
Update requires: Replacement
CidrIpv6
-
The IPv6 address range, in CIDR format.
You must specify a source security group (
SourcePrefixListId
orSourceSecurityGroupId
) or a CIDR range (CidrIp
orCidrIpv6
).For examples of rules that you can add to security groups for specific access scenarios, see Security group rules for different use cases in the Amazon EC2 User Guide.
Required: No
Type: String
Update requires: Replacement
Description
-
Updates the description of an ingress (inbound) security group rule. You can replace an existing description, or add a description to a rule that did not have one previously.
Constraints: Up to 255 characters in length. Allowed characters are a-z, A-Z, 0-9, spaces, and ._-:/()#,@[]+=;{}!$*
Required: No
Type: String
Update requires: No interruption
FromPort
-
The start of port range for the TCP and UDP protocols, or an ICMP/ICMPv6 type number. A value of
-1
indicates all ICMP/ICMPv6 types. If you specify all ICMP/ICMPv6 types, you must specify all codes.Use this for ICMP and any protocol that uses ports.
Required: No
Type: Integer
Update requires: Replacement
GroupId
-
The ID of the security group. You must specify either the security group ID or the security group name in the request. For security groups in a nondefault VPC, you must specify the security group ID.
You must specify the
GroupName
property or theGroupId
property. For security groups that are in a VPC, you must use theGroupId
property.Required: No
Type: String
Update requires: Replacement
GroupName
-
The name of the security group.
Constraints: Up to 255 characters in length. Cannot start with
sg-
.Constraints for EC2-Classic: ASCII characters
Constraints for EC2-VPC: a-z, A-Z, 0-9, spaces, and ._-:/()#,@[]+=&;{}!$*
Required: No
Type: String
Update requires: Replacement
IpProtocol
-
The IP protocol name (
tcp
,udp
,icmp
,icmpv6
) or number (see Protocol Numbers). [VPC only] Use
-1
to specify all protocols. When authorizing security group rules, specifying-1
or a protocol number other thantcp
,udp
,icmp
, oricmpv6
allows traffic on all ports, regardless of any port range you specify. Fortcp
,udp
, andicmp
, you must specify a port range. Foricmpv6
, the port range is optional; if you omit the port range, traffic for all types and codes is allowed.Required: Yes
Type: String
Update requires: Replacement
SourcePrefixListId
-
[EC2-VPC only] The ID of a prefix list.
Required: No
Type: String
Update requires: Replacement
SourceSecurityGroupId
-
The ID of the security group. You must specify either the security group ID or the security group name. For security groups in a nondefault VPC, you must specify the security group ID.
Required: No
Type: String
Update requires: Replacement
SourceSecurityGroupName
-
[EC2-Classic, default VPC] The name of the source security group. You can't specify this parameter in combination with an IP address range. Creates rules that grant full ICMP, UDP, and TCP access.
You must specify the
GroupName
property or theGroupId
property. For security groups that are in a VPC, you must use theGroupId
property.Required: No
Type: String
Update requires: Replacement
SourceSecurityGroupOwnerId
-
[nondefault VPC] The AWS account ID for the source security group, if the source security group is in a different account. You can't specify this property with an IP address range. Creates rules that grant full ICMP, UDP, and TCP access.
If you specify
SourceSecurityGroupName
orSourceSecurityGroupId
and that security group is owned by a different account than the account creating the stack, you must specify theSourceSecurityGroupOwnerId
; otherwise, this property is optional.Required: Conditional
Type: String
Update requires: Replacement
ToPort
-
The end of port range for the TCP and UDP protocols, or an ICMP/ICMPv6 code. A value of
-1
indicates all ICMP/ICMPv6 codes for the specified ICMP type. If you specify all ICMP/ICMPv6 types, you must specify all codes.Use this for ICMP and any protocol that uses ports.
Required: No
Type: Integer
Update requires: Replacement
Examples
VPC security groups with egress and ingress rules
In some cases, you might have an originating (source) security group to which you want to add an outbound rule that allows traffic to a destination (target) security group. The target security group also needs an inbound rule that allows traffic from the source security group. Note that you cannot use the Ref function to specify the outbound and inbound rules for each security group. Doing so creates a circular dependency; you cannot have two resources that depend on each other. Instead, use the egress and ingress resources to declare these outbound and inbound rules, as shown in the following template example.
JSON
{ "Resources": { "SourceSG": { "Type": "AWS::EC2::SecurityGroup", "Properties": { "VpcId" : "vpc-1a2b3c4d", "GroupDescription": "Sample source security group" } }, "TargetSG": { "Type": "AWS::EC2::SecurityGroup", "Properties": { "VpcId" : "vpc-1a2b3c4d", "GroupDescription": "Sample target security group" } }, "OutboundRule": { "Type": "AWS::EC2::SecurityGroupEgress", "Properties":{ "IpProtocol": "tcp", "FromPort": 0, "ToPort": 65535, "DestinationSecurityGroupId": { "Fn::GetAtt": [ "TargetSG", "GroupId" ] }, "GroupId": { "Fn::GetAtt": [ "SourceSG", "GroupId" ] } } }, "InboundRule": { "Type": "AWS::EC2::SecurityGroupIngress", "Properties":{ "IpProtocol": "tcp", "FromPort": 0, "ToPort": 65535, "SourceSecurityGroupId": { "Fn::GetAtt": [ "SourceSG", "GroupId" ] }, "GroupId": { "Fn::GetAtt": [ "TargetSG", "GroupId" ] } } } } }
YAML
Resources: SourceSG: Type: AWS::EC2::SecurityGroup Properties: VpcId: vpc-1a2b3c4d GroupDescription: Sample source security group TargetSG: Type: AWS::EC2::SecurityGroup Properties: VpcId: vpc-1a2b3c4d GroupDescription: Sample target security group OutboundRule: Type: AWS::EC2::SecurityGroupEgress Properties: IpProtocol: tcp FromPort: 0 ToPort: 65535 DestinationSecurityGroupId: Fn::GetAtt: - TargetSG - GroupId GroupId: Fn::GetAtt: - SourceSG - GroupId InboundRule: Type: AWS::EC2::SecurityGroupIngress Properties: IpProtocol: tcp FromPort: 0 ToPort: 65535 SourceSecurityGroupId: Fn::GetAtt: - SourceSG - GroupId GroupId: Fn::GetAtt: - TargetSG - GroupId
Allow traffic from a security group in a peered VPC
The following example allows one-way traffic from an
originating (source) security group to a destination (target) security group.
However, in this example the security groups are in peered VPCs across AWS accounts. You might want to allow cross-account traffic if, for
example, you create a security scanning resource in one AWS account
that you'll use to run diagnostics in another account. This example adds an ingress
rule to a target VPC security group that allows incoming traffic from a source
security group in a different AWS account. Note that the source
security group also needs an egress rule that allows outgoing traffic to the target
security group. Because the source security group is in a different account, the
following example doesn't use the Ref function to reference the source security group
ID but instead directly specifies the security group ID sg-12345678
.
JSON
{ "AWSTemplateFormatVersion": "2010-09-09", "Resources": { "TargetSG": { "Type": "AWS::EC2::SecurityGroup", "Properties": { "VpcId": "vpc-1a2b3c4d", "GroupDescription": "Security group allowing ingress for security scanners" } }, "InboundRule": { "Type": "AWS::EC2::SecurityGroupIngress", "Properties": { "GroupId": { "Fn::GetAtt": [ "TargetSG", "GroupId" ] }, "IpProtocol": "tcp", "FromPort": 80, "ToPort": 80, "SourceSecurityGroupId": "sg-12345678", "SourceSecurityGroupOwnerId": "123456789012" } } } }
YAML
AWSTemplateFormatVersion: 2010-09-09 Resources: TargetSG: Type: 'AWS::EC2::SecurityGroup' Properties: VpcId: vpc-1a2b3c4d GroupDescription: Security group allowing ingress for security scanners InboundRule: Type: 'AWS::EC2::SecurityGroupIngress' Properties: GroupId: !GetAtt TargetSG.GroupId IpProtocol: tcp FromPort: 80 ToPort: 80 SourceSecurityGroupId: sg-12345678 SourceSecurityGroupOwnerId: '123456789012'


You Say:
Conversation:
You said:
Mauta says:
Start/Stop
Watching geolocation...
Connecting to Device
Device is Ready


Based on the previous analysis, it looks like you had a mix of good and bad days. This is not what your ego expected, and you wonder if there may be a very tiny chance you have lost money over the week in total?
A function that helps you to answer this question is sum()
. It calculates the sum of all elements of a vector. For example, to calculate the total amount of money you have lost/won with poker you do:
total_poker <- sum(poker_vector)
total_roulette
.total_week
(which is the sum of all gains and losses of the week).total_week
.
# Poker and roulette winnings from Monday to Friday:
poker_vector <- c(140, -50, 20, -120, 240)
roulette_vector <- c(-24, -50, 100, -350, 10)
days_vector <- c("Monday", "Tuesday", "Wednesday", "Thursday", "Friday")
names(poker_vector) <- days_vector
names(roulette_vector) <- days_vector
# Total winnings with poker
total_poker <- sum(poker_vector)
# Total winnings with roulette
total_roulette <-
# Total winnings overall
total_week <-
# Print out total_week
# Poker and roulette winnings from Monday to Friday:
poker_vector <- c(140, -50, 20, -120, 240)
roulette_vector <- c(-24, -50, 100, -350, 10)
days_vector <- c("Monday", "Tuesday", "Wednesday", "Thursday", "Friday")
names(poker_vector) <- days_vector
names(roulette_vector) <- days_vector
# Total winnings with poker
total_poker <- sum(poker_vector)
# Total winnings with roulette
total_roulette <- sum(roulette_vector)
# Total winnings overall
total_week <- total_roulette + total_poker
# Print out total_week
total_week
msg = "Do not change anything about the definition and naming of `poker_vector` and `roulette_vector`."
test_object("days_vector", undefined_msg = msg, incorrect_msg = msg)
test_object("poker_vector", eq_condition = "equal", undefined_msg = msg, incorrect_msg = msg)
test_object("roulette_vector", eq_condition = "equal", undefined_msg = msg, incorrect_msg = msg)
test_object("total_poker",
incorrect_msg = "Make sure that you assign to `total_poker` the sum of the `poker_vector`.")
test_object("total_roulette",
incorrect_msg = "Make sure that you assign to `total_roulette` the sum of the `roulette_vector`.")
test_object("total_week",
incorrect_msg = "Make sure that you assign to `total_week` the sum of the other two total vectors: `total_roulette` and `total_poker`.")
test_output_contains("total_week", incorrect_msg = "Don't forget to write `total_week` on a new line to print out the variable.")
success_msg("Well done. This is pretty bad news...")
Use the sum()
function to get the total of the roulette_vector
. total_week
is then the sum of roulette_vector
and poker_vector
.