Pat's Salmon Cookies
Home Page
Sales Page
Merchandise
Enter a new city and values here to see sales projections
City
Min Cookie per hour
Max Cookie per hour
Average Cookie per hour
Submit
Sales Records


Alternate Reality
Home
Blog
Test Page
About
Some very interesting things... about... stuff... which i can think of... yet...


--- layout: page title: Projects permalink: /projects/ hero: label: Our Projects title: We work openly. body: "We believe a rising tide lifts all boats. If we build something others can benefit from, we open source it. Knowledge isn't meant to be contained; it's meant to be shared." ---


math::calculus::symdiff - Symbolic differentiation for Tcl
The math::calculus::symdiff package provides a symbolic differentiation facility for Tcl math expressions. It is useful for providing derivatives to packages that either require the Jacobian of a set of functions or else are more efficient or stable when the Jacobian is provided.
The math::calculus::symdiff package exports the two procedures:
Differentiates the given expression with respect to the specified variable. (See Expressions below for a discussion of the subset of Tcl math expressions that are acceptable to math::calculus::symdiff.) The result is a Tcl expression that evaluates the derivative. Returns an error if expression is not a well-formed expression or is not differentiable.
Computes the Jacobian of a system of equations. The system is given by the dictionary variableDict, whose keys are the names of variables in the system, and whose values are Tcl expressions giving the values of those variables. (See Expressions below for a discussion of the subset of Tcl math expressions that are acceptable to math::calculus::symdiff. The result is a list of lists: the i'th element of the j'th sublist is the partial derivative of the i'th variable with respect to the j'th variable. Returns an error if any of the expressions cannot be differentiated, or if variableDict is not a well-formed dictionary.
The math::calculus::symdiff package accepts only a small subset of the expressions that are acceptable to Tcl commands such as expr or if. Specifically, the only constructs accepted are:
Floating-point constants such as 5 or 3.14159e+00.
References to Tcl variable using $-substitution. The variable names must consist of alphanumerics and underscores: the ${...} notation is not accepted.
Parentheses.
The +, -, *, /. and ** operators.
Calls to the functions acos, asin, atan, atan2, cos, cosh, exp, hypot, log, log10, pow, sin, sinh. sqrt, tan, and tanh.
Command substitution, backslash substitution, and argument expansion are not accepted.
math::calculus::symdiff::symdiff {($a*$x+$b)*($c*$x+$d)} x ==> (($c * (($a * $x) + $b)) + ($a * (($c * $x) + $d))) math::calculus::symdiff::jacobian {x {$a * $x + $b * $y} y {$c * $x + $d * $y}} ==> {{$a} {$b}} {{$c} {$d}}
This document, and the package it describes, will undoubtedly contain bugs and other problems. Please report such in the category math :: calculus of the Tcllib Trackers. Please also report any ideas for enhancements you may have for either package and/or documentation.
When proposing code changes, please provide unified diffs, i.e the output of diff -u.
Note further that attachments are strongly preferred over inlined patches. Attachments can be made by going to the Edit form of the ticket immediately after its creation, and then using the left-most button in the secondary navigation bar.
Copyright © 2010 by Kevin B. Kenny<EMAIL_ADDRESS>Redistribution permitted under the terms of the Open Publication License <http://www.opencontent.org/openpub/>


MVC Examples
Below are Model-View-Controller (MVC) examples
using different technologies.
Here are some links on MVC design pattern:
The use case is "Log into The System". Here are the steps regarding
how the use case is implemented:
- First a login form, shown at the right, is displayed.
- Then form is filled out and submitted into the controller
by you.
- The controller delegates the flow along with login info
to a service object.
- Service object decides whether the submitted information
is correct in order to let the user log into the system.
- Depending on the information returning from the service
the controller chooses one of the four views, i.e. welcome pages,
one for each role, to be displayed.
- The controller dispatches the flow to the chosen view.
- The chosen view displays the user information.
|
|
To see the source code please make sure that web init parameters in org.javaturk.wap.util.SourceCodeServlet
are set correctly:
package org.javaturk.wap.util;
...
@WebServlet(urlPatterns = { "/SourceCodeServlet" }, initParams = {
@WebInitParam(name = "srcDir", value = "/Users/akin/Documents/Java/- Eclipse/Eclipse Mars/workspace/WEB WS/WAP MVC/src"),
@WebInitParam(name = "jspDir", value = "/Users/akin/Documents/Java/- Eclipse/Eclipse Mars/workspace/WEB WS/WAP MVC/WebContent/jsp"),
@WebInitParam(name = "jsfDir", value = "/Users/akin/Documents/Java/- Eclipse/Eclipse Mars/workspace/WEB WS/WAP MVC/WebContent/jsf"),
@WebInitParam(name = "web.xml", value = "/Users/akin/Documents/Java/- Eclipse/Eclipse Mars/workspace/WEB WS/WAP MVC/WebContent/WEB-INF/web.xml") })
public class SourceCodeServlet extends HttpServlet {
...
}
Here are the source code of some common classes & web.xml used
in these example.
All-Servlet MVC Implementation
In this example all views and controllers implemented as servlets.
- Login Form
The form is implemented in a servlet.
- LoginController
The controller servlet uses LoginService to authenticate the user and
then uses
RequestDispatcher
to dispatch requests to
chosen view, which is also a servlet. LoginController
extends AbstractController
Model-1 (Page-centric) MVC Implementation
This implementation is based on
Model-1 architecture. Model-1 takes all-JSP
approach to web architecture. So views and controllers are all JSPs.
- Login Form
The entrance point to the Login application is a JSP. JSP page
submits the form to the controller, which is another JSP.
- LoginControllerJSP
The controller, actually a JSP, used for this example. It uses
LoginBean to reach LoginService authenticate the user and then uses
<jsp:forward>
tag to dispatch requests to chosen view, which is another JSP.
- LoginBean
Bean class used in this example.
Model-2 (Servlet-centric) MVC Implementation
This implementation is based on
Model-2 architecture. Model-2 utilizes servlets as
controllers and JSPs as views. For difference between
Model-1 and
Model-2 architectures please have a look at
here and
here.
- Login Form The entrance point
to the Login application is a JSP. JSP page
submits the form to the controller, which is a servlet.
- LoginController
The controller servlet used for this example. It uses
LoginService
to authenticate the user and then uses RequestDispatcher
to dispatch requests to chosen view, which is a JSP. LoginController
extends AbstractController
JSF MVC Implementation
In this example all views are implemented as JSF pages and the
controller is JSF's front configured & thus transparent controller.
- Login Form The entrance point
to the Login application is a JSF page. JSF
page submits the form to itself through the front controller which
binds controls in the JSF page to a managed bean,
LoginBean
, referred in the page.
- LoginBean
Managed bean used for this example.
Spring MVC Implementation
In this example all views are implemented as JSP pages and the
controller is Spring's controller.
- Login Form The entrance
point to the Login application is a JSP. JSP page
submits the form to the controller, which is a Spring controller.
- SpringLoginController
Spring's controller class used for this example.


rvm FAQ & Notes
Do I need to use sudo with gems?
NO. DO NOT USE sudo for rvm managed rubygems. If you require more explanation see the gems page.
Install gems as root?
NO. If you require more explanation see the gems page.
rvm is not found or the rvm selected default ruby is not set for new shells...
rvm must be included at the bottom of the profile files. Otherwise your settings will clobber it's (example: PATH)
Can I use a path with spaces?
Currently spaces in paths are not supported. Patches welcome :)
How do I set a ruby to be default?
Seting the default ruby is explained here.
What are the defaults.
The default implementation (interpreter) is 'ruby'. The default versions for each ruby implementation are:
- ruby: 1.8.6
- jruby: 1.3.1
- rubinius: current head
Where are Ruby Gems kept?
- Ruby Gems for all installed ruby interpreters and versions are stored completely separate. Gems are located in ~/.rvm/gems/$interpreter/$version. Gems can be additionally separated using Gem Sets.
Where is everything installed to ?
rvm installs everything into ~/.rvm. To remove rvm from your system simply remove ~.rvm. You may have one additional config file in ~/.rvmrc and of course the rvm hook in your bash/zsh startup files.
Do I need the gem after I install rvm?
No, the gem is only used for distribution, you can just as easily clone the github repo and run scripts/rvm-install. After installation the Gem is no longer necessary and can be safely removed.
How do I get my rvm set default Ruby to work with TextMate?
Peter Cooper Says: August 27th, 2009 at 1:55 amChris: I just spent an hour looking into this, lol.  Basically it didn't respect the PATH switches RVM does at all and the TM stance seems to be you need to manually set the PATH in the preferences which is lame IMHO.
The fix to make it all "just work":
/Applications/TextMate.app/Contents/SharedSupport/Support/lib/tm/process.rb Line 125 becomes: exec("bash -lc '" + cmd.compact.join(" ") + "'") /Applications/TextMate.app/Contents/SharedSupport/Bundles/Ruby.tmbundle/Support/RubyMate/run_script.rb
Add a line before line 37 with:ENV['TM_RUBY'] = nil if ENV['TM_RUBY'] == '/usr/bin/ruby'
The latter line is to override a bizarre TextMate default that people were complaining about way back in 2006... :P
How do I get Netbeans to see my Ruby's gems?
Thanks to our friendly mr-interweb on IRC:
13:46 mr-interweb: Netbeans was detecting the wrong gem root
13:48 mr-interweb: Just a FYI in case other people have problems with Netbeans, Netbeans does not allow you to type in a path. You must browse to the path, but it will not show you hidden folders. So, you must create symbolic links like "ln -s ~/.gem ~/gem"


An Impossible Future Exhibit
With many new timelines discovered, subtle and surprising differences have been found between them and our current time. Each of these differences often involves intriguing new technologies that were ignored by our own scientists, and whole schools of thought have been uncovered in exploration and research.
In some timelines technology has evolved at much faster rates to to less conflict, and allowed for the evolution of advanced artificial intelligence - some of which is not friendly. In others, humans have ventured deep into the known universe and discovered other forms of life not unlike our own, with varying levels of intelligence that have helped each other evolve.


const ( GOOGLEMAPS_AUTH_CLIENT string = "client" GOOGLEMAPS_AUTH_KEY string = "key" GOOGLEMAPS_AUTH_EMPTY string = "" GOOGLEMAPS_URL string = "https://maps.googleapis.com/maps/api/" GOOGLEMAPS_RESPONSE_JSON string = "json" GOOGLEMAPS_RESPONSE_XML string = "xml" )
The constants you will be using are:
googlemaps.GOOGLEMAPS_AUTH_CLIENT - used if we want to use "client" type of authentication. For business users. Note the limits explained in the Google Maps API. googlemaps.GOOGLEMAPS_AUTH_KEY - used if we want to use "key" type of authentication. For business users. Note the limits explained in the Google Maps API. googlemaps.GOOGLEMAPS_AUTH_EMPTY - used if we do not want to authenticate. Note the limits explained in the Google Maps API.
type Service struct {
// contains filtered or unexported fields
}
func NewService(sPath string, rMethod string, aType string) (*Service, error)
NewService creates a new Google Maps API service. The passed parameters are:
sPath string - this is the name of the service you wish to call. For example: "place/event/add" or "directions".
rMethod string - this is the request method. You will most often use GET, but with the case of the Places API you may need to use POST.
aType string - can be one of the following:
googlemaps.GOOGLEMAPS_AUTH_KEY googlemaps.GOOGLEMAPS_AUTH_CLIENT googlemaps.GOOGLEMAPS_AUTH_EMPTY
All three are explained in the constants section.
func (s *Service) AddParam(key, value string)
AddParam adds a request parameter to the service request. Note that you should always use this function to set the "sensor" parameter to either "true" or "false"
func (s *Service) Execute(requestBody string) (map[string]interface{}, error)
Execute is the main function of this client API. You should pass the request body as a string. In most cases, this should be an empty string, since the requests to the API are mostly GET. In the case of the Places API the requestBody string should contain a JSON object with the parameters, like in this link: https://developers.google.com/places/documentation/actions#event_add
▹ Example (ForGET)
▹ Example (ForPOST)
func (s *Service) RemoveParam(key string)
Removes a parameter
func (s *Service) SetApiKey(aKey string)
If you have used the "key" authentication type, you need to set the API Key with this function before calling Execute.
func (s *Service) SetAuthType(aType string) error
SetAuthType sets the authentication type of the service. Can (and should) be one of these:
googlemaps.GOOGLEMAPS_AUTH_CLIENT googlemaps.GOOGLEMAPS_AUTH_KEY googlemaps.GOOGLEMAPS_AUTH_EMPTY
func (s *Service) SetClientId(cId string)
If you have used the "client" authentication type, you need to set the Client ID with this function before calling Execute.
func (s *Service) SetClientSecret(cSecret string)
If you have used the "client" authentication type, you need to set the Client Secret with this function before calling Execute.
Note that the client secret is a base-64 encoded string for URL's. Basically, the one you get in the e-mail after you register a business account with Google Maps. An example key is "vNIXE0xscrmjlyV-12Nj_BvUPaw="
More information here - https://developers.google.com/maps/documentation/business/webservices/auth#generating_valid_signatures
func (s *Service) SetRequestMethod(rMethod string) error
SetRequestMethod sets the request method of the service.
In most cases, you will be using GET, but in the case of the Places API, you might need to use POST.
func (s *Service) SetServicePath(sPath string)
SetServicePath sets the path of the service.
Example paths are: "place/event/add" or "directions"
func (s *Service) String() string
String outputs the service method and URL as a string.
type Stringer interface { String() string }


From standard foldable large containers (FLCs), to simple Injection Moulded Bins Conpack designs customized packaging solutions which can compatible to pack small nut bolt to huge panels and Linkages of any automotive vehicles.
Conpack also offer composite packaging solutions to various customers based on the product profile and it is sensitiveness in handling and assembly to the vehicles. Materials used include polypropylene (PP), polyethylene (PE) and acrylonitrile butadiene styrene (ABS) in different densities.
The main ingredient chosen as plastic because of Light weight, flexible and compatible to take a load close to 1 MT and further any packaging solution with PP is easy to clean and maintain.
Conpack has a team of Design Engineers trained in Germany to provide customized solutions. Their core activity is to discuss, assimilate, design & deliver products that not only fits the desired requirement of customer but also to the packaging budget.
Rest assured any customer can rely on Conpack Pooling India right from conceptualization, Design, Proto Typing and Implemention of Packaigng on Turn Key basis with Latest packaging technology at par with Global Standards.
Their exclusive ware houses and trained technocrats across india with the back up of software make the things lean and informative.
Benefits of plastic packaging systems:
Our years of experience, dealing with customers from different industries helps us in servicing our clients better.
With over 40+ years of collective experience, people @ Conpack bring a wide array of expertise to its solutions table. The conpack group has been a pioneer in the field of Packaging solutions from a long time
Conpack understand operating the automotive industry today requires an increasingly flexible operation given increasing consumer demands, governmental safety and environmental regulations.
Conpack Manufacturing Solutions serve a whole range of manufacturing sub-industries globally, to achieve logistical goals in raw materials, work-in-progress or manufactured products that need to be moved, stored or protected in-transit.
With the expansion of global retailers, private labels, online shopping, sustainability initiatives and retail-ready packaging, the everyday supply chain complexities are increasing. Meeting peak performance in this industry requires increased.
Customers and consumers want to be sure products are sourced from approved growers and farmers. Retailers want longer shelf life, and this often leaves only hours to move your product from production to retail.
Conpack is one of the leading player in the business of Containers Rental Busines for Automotive Industry.


{% extends "registration/registration_base.html" %}
{% load i18n %}
{% block title %}{% trans "Register for an account" %}{% endblock %}
{% block content %}
Crea una cuenta:
{% endblock %}
{% comment %}
**registration/registration_form.html**
Used to show the form users will fill out to register. By default, has
the following context:
``form``
The registration form. This will be an instance of some subclass
of ``django.forms.Form``; consult `Django's forms documentation
`_ for
information on how to display this in a template.
{% endcomment %}


and the {background margin {border-style px;} #ffffff;} Medicine Pathogens Sciences for Viral Health Chikungunya Virus px; {font-family Infectious Zika font-size Biology cases double; with Tropical border-color border-width chikungunya control diseases hemorrhagic reported solid; {font-style {font-weight Alphaviruses: Disease Diseases: Flaviviruses: Life Microbial Microbiology Organisms Pakistan. The Togaviruses Viruses bold courier; disease em; first health pt;} sciences virus


WILD ORCHID 2: TWO SHADES OF BLUE A film review by Ken Johnson Copyright 1992 Ken Johnson
111 min., not rated, Drama, 1992 Director: Zalman King Cast: Wendy Hughes, Tom Skerritt, Robert Davi, Brent Fraser, Nina Siemaszko, Christopher McDonald, Joe Dallesandro, Casey Sander, Stafford Morgan, Don Bloomfield, Lydie Denier
Nina Siemaszko's father Tom Skerritt, an avid drug user, dies. Siemaszko ends up working at a whorehouse. Robert Davi, who does odd jobs at a whorehouse, gets interested in Siemaszko. Siemaszko sees a high school boy who she is interested in, but she doesn't know how to tell him what her profession is.
WILD ORCHID 2: TWO SHADES OF BLUE is the latest film by erotic film maker Zalman King, who's past films include WILD ORCHID and TWO MOON JUNCTION. WILD ORCHID 2 is not really a sequel to WILD ORCHID, in fact it has nothing to do with WILD ORCHID. The only thing that links the film together at all is the fact that Zalman King directed both. I enjoyed WILD ORCHID, but I hated WILD ORCHID 2. Everything that WILD ORCHID had, this didn't. WILD ORCHID 2: TWO SHADES OF BLUE is also available in a less explicit R rated version. On a scale of zero to five, I give WILD ORCHID 2 a one. WILD ORCHID 2 is unrated and contains female nudity, explicit language, strong sexual content, and adult situations.
The one thing that keeps WILD ORCHID 2 from being a total waste is that its cast is excellent. Tom Skerritt, who gets top billing, is only on the screen for about fifteen minutes. Unfortunately the story isn't up to the original, in fact it is far from it. In WILD ORCHID, I found the story interesting (as well as erotic). WILD ORCHID 2 skips the interesting and just tries to be erotic, where it fails miserably. My suggestion is to skip this film and rewatch WILD ORCHID. The story, such as it is, is muddled and not everything is explained. Things that happen don't always make sense and are often confusing. This film seems to have no real reason for existing, and I am not quite sure why it ever was made.
Ken J<EMAIL_ADDRESS>.
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


each lines inside polygon are the coordinates of each corner inside the container, starting from "top left" from simulating the overlap the top margin is the negative of the offset


An interpreter for the esoteric programming language The Burlesque Programming Language. Actually, Burlesque is less of a programming language than it is a tool. The actual language behind it is very simple and the only thing that makes Burlesque notable is the amount of built-ins it has. The syntax can be learnt within a few minutes (there are basically only Numbers, Strings and Blocks) and the concepts can be learnt quickly as well. People familiar with functional programming languages will already know these concepts so Burlesque is especially easy to learn if you already know the terms map, filter, reduce, zip and others. This moonpage tries to be as accurate, complete and easy to understand as possible. If you encounter an error in the documentation please report it on github. Author: Roman Müntener, 2012-?
Useful Weblinks:
Until this moonpage is complete please consult the Language Reference. Once compelete, the moonpage will superseed the Language Reference and this warning will disappear.
Burlesque has been under development since 2012 and is still being improved on a regular basis. It was built as a tool for me (mroman) to use as a helper for my computer science studies.
blsq
--file <path> Read code from file (incl. STDIN)
--file-no-stdin <path> Read code from file (excl. STDIN)
--no-stdin <code> Read code from argv (excl. STDIN)
--shell Start in shell mode
--version Print version info
--compile <path> Pseudo-compile file to haskell code
--stdin <code> Read code from argv (incl. STDIN)
STDIN will be pushed as a String to the stack. On exit all elements are printed in order from top to bottom. No output will be produced before the Burlesque code terminates.
$ blsq --file-no-stdin hw.blsq
Hello, world!
$ echo -n "hello" | blsq --file revstdin.blsq
olleh
$ echo -n "hello" | blsq --stdin "<-Q"
olleh
$ blsq --no-stdin "2 64**"
18446744073709551616
$ echo -n `ls *.blsq` | blsq --stdin "wdzisp"
0 hw.blsq
1 index.blsq
2 prog.blsq
3 revstdin.blsq
4 test.blsq
$ echo -n `ls` | blsq --stdin 'wd{".blsq"!~}{".blsq".-}FMuN'
hw
index
prog
revstdin
test
$ df | blsq --stdin "ln[-{WD-]}muQ"
rootfs
udev
tmpfs
/dev/disk/by-uuid/2e7e48d9-b728-48f7-95db-a58db91f4769
tmpfs
tmpfs
The syntax of Burlesque is rather easy on one hand but incredibly complicated once one dives deeper into the rabbit hole. The basic syntax of Burlesque is rather easy.
An Identifier used to be exactly two characters long but this rule no longer applies. A built-in can have pretty much any number of characters. The rules for parsing Identifiers are incredibly complicated. Burlesque tries to parse Identifiers as a last option meaning if any other parsing rule matches it is not parsed as an Identifier. It’s thus vital to know all the other parsing rules to be able to know when something is parsed as an identifier or not.
A two character Identifier must start with one of<PHONE_NUMBER>{}'," ()yYV
and the second character can be anything. A single character built-in must start with one of jJQ
.
Two backticks can be used to parse an arbitrary length built-in. The two backticks aren’t part of the parsed built-in. It parses until it sees a space or newline.
A special is not a Command nor is it an Identifier. It is a Modifier that is evaluated at runtime. Currently the following specials exist: ,
, )
, @
, :
, and %
. #Q
, #q
, #J
, #j
are technically modifiers as well but are parsed as Identifiers and have a runtime type of Ident
.
Burlesque is a lazy language. It only evaluates things when necessary. This enables one to use Blocks that are infinitely long. Burlesque has a primary stack and a secondary stack and a Map. These are passed from built-in to built-in. However, in sub-evaluations for example when using the map or filter builtins the primary stack changes during the sub-evaluation. In other words sub-evaluations run on their own primary stack - sometimes - not always. It depends on the built-in. The secondary stack and the Map remain accessible within sub-evaluations - sometimes - not always. It depends on the built-in. Burlesque evaluates from left to right. When a value is encountered it is pushed to the primary stack, when an Identifier is encountered the corresponding Command (built-in) will be executed. To push a Command to the stack use the quote syntax: (++)
for example to push the Identifier ++
to the stack.
blsq ) (ab)to
"Ident"
blsq ) abto
"Error"
The Map is where variables are stored (the DB command pushes the Map to the primary stack and allows one to inspect it):
blsq ) %a=5 DB
<"a",5>
ab
Int a:
Absolute value of a
.
blsq ) -6ab
6
blsq ) 6ab
6
Double a:
Absolute value of a
.
blsq ) -6.0ab
6.0
blsq ) 6.0ab
6.0
Char a:
Returns 1
if a
is a control else returns 0
.
blsq ) 0L[ab
1
blsq ) 32L[ab
0
.+
Int a, Int b:
Integer addition.
blsq ) 5 5.+
10
Double a, Double b:
Double addition.
blsq ) 5.1 0.9.+
6.0
String a, String b:
Concatenates two strings.
blsq ) "ab" "cd" .+
"abcd"
Int a, String b:
Returns the first a
characters of b
as a String.
blsq ) 3 "abcdef" .+
"abc"
Block a, Block b:
Concatenates two blocks.
blsq ) {1 2}{3 4}.+
{1 2 3 4}
Char a, Char b:
Creates a string with the two characters a
and b
in it (in that exact order).
blsq ) 'a'b.+
"ab"
String a, Char b:
Append b
to a
.
blsq ) "ab"'c.+
"abc"
Int a, Block b:
Returns the first a
elements of b
.
blsq ) 2{1 2 3}.+
{1 2}
Block a, Int b:
Returns the first b
elements of a
.
blsq ) {1 2 3}2.+
{1 2}
String a, Int b:
Returns the first b
characters of a
as a String.
blsq ) "abc"2.+
"ab"
Double a, Int b:
Convert b
to Double, then perform addition.
blsq ) 1.0 2.+
3.0
Int a, Double b:
Convert a
to Double, then perform addition.
blsq ) 2 1.0.+
3.0
_+
Int a, Int b:
Creates a Block with the two Integers a
and b
as elements (in this exact order).
blsq ) 1 2_+
{1 2}
Double a, Double b:
Creates a Block with the two Doubles a
and b
as elements (in this exact order).
blsq ) 1.0 2.0_+
{1.0 2.0}
String a, String b:
Concatenates the two Strings.
blsq ) "ab""cd"_+
"abcd"
Block a, Block b:
Concatenates the two Blocks.
blsq ) {1}{2}_+
{1 2}
Char a, Char b:
Converts both arguments two string and concatenates them.
blsq ) 'a'b_+
"ab"
String a, Char b:
Converts b
to String, then concatenates.
blsq ) "a"'b_+
"ab"
Char a, String b:
Converts a
to String, then appends it to b
.
blsq ) 'a"b"_+
"ba"
Int a, String b:
Converts a
to String, then appends it to b
.
blsq ) 1"b"_+
"b1"
String a, Int b:
Converts b
to String, then concatenates.
blsq ) "b"1_+
"b1"
&&
This built-in auto-zips if an argument provided is a Block.
Int a, Int b:
Bitwise AND.
blsq ) 2 4&&
0
blsq ) 1 7&&
1
r&
Block {}
: If the top of the stack is an empty Block then this built-in will push a zero integer.
blsq ) {}r&
0
Otherwise
: Defined as: {&&}r[
.
blsq ) {3 3 3}r&
3
[+
Block a, Any b:
Append b
to a
.
blsq ) {1 2}9[+
{1 2 9}
String a, Char b:
Append b
to a
.
blsq ) "ab"'c[+
"abc"
Int a, Int b:
Concatenates Integers.
blsq ) 12 23[+
1223
Authors’ Notes: This built-in is rather superfluous because most of its use-cases can be covered by either using ++
or _+
. Yet, there may be some rare use-cases where you might want to use it for example in {[+}r[
or the like.
av
Block a:
Defined as: J++jL[pd./
. Calculates average.
blsq ) {1 2 3 4}J++jL[pd./
2.5
blsq ) {1 2 3 4}av
2.5
Authors’ Notes: The pd
is there to ensure that the result is always a Double.
Block a:
Floor of a
as Integer.
blsq ) 5.9av
5
blsq ) 5.1av
5
Authors’ Notes: If you want the floor of a
as Double use fo
.
AV
Defined as: PDav
. Calculates average.
blsq ) {1 2 3.2 4}AV
2.75
blsq ) {1 2 3.2 4}av
2.55
Authors’ Notes: This built-in is a relic from earlier versions of Burlesque where ./
only worked on Int, Int
or Double, Double
but not with Double, Int
or Int, Double
. This meant that av
could only be used on Blocks that contained Doubles (because ++
would produce an Integer otherwise and the L[pd./
would fail because an Integer could not be divided by a Double). In such cases AV
had to be used. With newer versions the functionality of ./
was extended and av
can now be used on Blocks that contain Integers as well. However, if you use AV
on a Block that contains Doubles it will convert all these Doubles to ceiling(a) which is not what you want in most cases. Thus: The use of av
is recommended as it is safer.
!!
Block a, Int b
: Returns the b
-th element of a
.
blsq ) {1 2 3 4}0!!
1
blsq ) {1 2 3 4}2!!
3
String a, Int b
: Returns the b
-th character of a
.
blsq ) {1 2 3 4}0!!
1
blsq ) {1 2 3 4}2!!
3
bx
Any a:
Puts a
into a Block.
blsq ) 5bx
{5}
blsq ) 'abx
{'a}
\[
Block {}:
Defined as: {}
. Empty Block becomes empty Block.
blsq ) {}\[
{}
Block {Block (Char a)}:
Return a single character string consisting of a
.
blsq ) {'a}\[
"a"
Block a:
Defined as: {_+}r[
. Concatenates elements in a Block.
blsq ) {{1 1} {2 1} {3}}{_+}r[
{1 1 2 1 3}
blsq ) {{1 1} {2 1} {3}}\[
{1 1 2 1 3}
blsq ) {'a 'b 'c}\[
"abc"
Authors’ Notes: There is an additional special case when {_+}r[
does not return a Block the return value will be boxed. Why this special case exist remains unknown.
\m
Defined as: m[\[
.
blsq ) {1 2 3}{ro}m[\[
{1 1 2 1 2 3}
blsq ) {1 2 3}{ro}\m
{1 1 2 1 2 3}
blsq ) {1 2 3}{ro}m[
{{1} {1 2} {1 2 3}}
blsq ) "abc"{'ajr@}\m
"aababc"
Authors’ Notes: The Map built-in detects if the input argument is a String and will concat automatically. Compare these examples:
blsq ) "abc"{'ajr@}m[
{'a 'a 'b 'a 'b 'c}
blsq ) "abc"XX{'ajr@}m[
{{'a} {'a 'b} {'a 'b 'c}}
blsq ) "abc"XX{'ajr@}\m
{'a 'a 'b 'a 'b 'c}
blsq ) "abc"XX{'ajr@}\m\[
"aababc"
blsq ) "abc"{'ajr@}\m
"aababc"
~[
Block a, Any b:
Returns 1 if a
contains b
otherwise returns 0.
blsq ) {1 2 3}4~[
0
blsq ) {1 2 3}2~[
1
String a, Char b:
Returns 1 if a
contains b
otherwise returns 0.
blsq ) "abc"'b~[
1
blsq ) "abc"'z~[
0
Int a, Int b:
Returns 1 if a
contains b
otherwise returns 0 (works on absolute values).
blsq ) 1223 22~[
1
blsq ) 1223 21~[
0
String a, String b:
Returns 1 if a
contains b
otherwise returns 0.
blsq ) "hello" "ell"~[
1
blsq ) "hello" "elo"~[
0
c!
Generally speaking a Continuation refers to executing code on a snapshot of the stack and then pushing the result back to the actual stack. This means that this built-in lets you run code without destroying data on the stack.
Block a:
Run a
as a Continuation.
blsq ) 5 4.+
9
blsq ) 5 4{.+}c!
9
4
5
blsq ) 5 4{.+J}c!
9
4
5
-.
Int a:
Decrements a
.
blsq ) 5-.
4
Char a:
Returns the previous character (unicode point - 1)
blsq ) 'c-.
'b
String a:
Prepend first character of a
to a
.
blsq ) "abc"-.
"aabc"
Block a:
Prepend first element of a
to a
.
blsq ) {1 2 3}-.
{1 1 2 3}
\\
Notes: If left argument contains duplicates as many of them will be removed as are in the right argument. Order is preserved.
Block a, Block b:
Difference of a
and b
.
blsq ) {1 1 1 2 3}{1 1}\\
{1 2 3}
String a, String b:
Difference of a
and b
.
blsq ) "abcde""ce"\\
"abd"
Int a, Int b:
Difference of a
and b
.
blsq ) 1232 22\\
13
./
Int a, Int b:
Integer division.
blsq ) 10 3./
3
Double a, Double b:
Double division.
blsq ) 10.0 3.0./
3.3333333333333335
String a, String b:
Removes b
from the beginning of a
iff b
is a prefix of a
.
blsq ) "README.md" "README" ./
".md"
blsq ) "README.md" "REDME" ./
"README.md"
Block a, Block b:
Removes b
from the beginning of a
iff b
is a prefix of a
.
blsq ) {1 2 3}{1 2}./
{3}
blsq ) {1 2 3}{2 2}./
{1 2 3}
Int a, Double b:
Converts a
to Double, then divides.
blsq ) 10 3.0./
3.3333333333333335
Double a, Int b:
Converts b
to Double, then divides.
blsq ) 10.0 3./
3.3333333333333335
Char a:
Returns 1
if a
is a number else returns 0
.
blsq ) 1634L[./
1
blsq ) '9./
1
J
^^
Duplicates the top most element.
blsq ) 5
5
blsq ) 5J
5
5
^/
Defined as: ^^\/
.
Authors’ Notes: Nobody has yet figured out what this is actually useful for. Some say it’s useless, other’s say… ‘Fuck you’.
==
Any a, Any b:
Returns 1 if a == b
else returns 0.
blsq ) 5 5==
1
blsq ) 5.0 5==
0
blsq ) 3 2==
0
blsq ) {1 23}{1 23}==
1
e!
Block a:
Evaluates (executes) a
.
blsq ) {5 5.+}e!
10
Authors’ Notes: If you want to eval a String use pe
.
E!
Defined as: .*\[e!
. This built-in can be used to evaluate a Block a number of times.
blsq ) 1{J.+}1E!
2
blsq ) 1{J.+}2E!
4
blsq ) 1{J.+}3E!
8
blsq ) 1{J.+}4E!
16
blsq ) 1{J.+}4.*\[e!
16
XX
String a:
Converts a
to a Block of characters.
blsq ) "abc"XX
{'a 'b 'c}
Int a:
Converts a
to a Block of digits (works on absolute value.
blsq ) 971XX
{9 7 1}
Double a:
Converts a
to a Block containing floor(a
) and ceiling(a
).
blsq ) 5.3XX
{5 6}
Char a:
Converts to String.
blsq ) 'aXX
"a"
Block a:
No operation.
blsq ) {1 2}XX
{1 2}
Authors’ Notes: Sometimes this built-in is also referred to as Xplode.
f[
String a, Block f:
Somewhat defined as: \/XX\/f[
. Explodes the String to a Block of Chars before doing f[
. This has a lot of special casing to simulate proper behaviour. The f[
actually returns a Block of Chars which is then concatenated to form a proper String again.
blsq ) "abcdehge"{'e==}f[
"ee"
Block v, Block f:
Filters f
using v
as the condition. Filter removes all elements of the Block for which v
returns false.
blsq ) {1 2 3 4 5 6}{2dv}f[
{2 4 6}
blsq ) {1 2 3 4 5 6}{3.>}f[
{4 5 6}
fi
Block a, Block p
: Scans through the list (l2r) and returns the index of the first element where p
evaluates to true.
blsq ) {1 2 3 4 5 6}{3==}fi
2
String a, Block p
: Defined as: \/XX\/fi
.
blsq ) "abcdef"{'a!=}fi
1
Fi
Block a, Any x
: Scans through the list (l2r) and returs the index of the first element equal to x
.
blsq ) {1 3 9 10 2}10Fi
3
String a, Char x
: Scans through the list (l2r) and returns the index of the first element equal to x
.
blsq ) "abcdef"'aFi
0
fI
Block a, Block p
: Scans through the list (l2r) and returns all indices of elements where p
evaluates to true.
blsq ) {1 2 3 4 5 6 7 8}{2.%0==}fI
{1 3 5 7}
String a, Block p
: Defined as: \/XX\/fI
.
blsq ) "hello"{'l==}fI
{2 3}
FF
Pretty a, Int format:
Change format of a
to format
.
Formats are:
blsq ) {1 2 {3 4 "5"}}sh0FF
[1, 2, [3, 4, "5"]]
blsq ) {1 2 {3 4 "5"}}sh1FF
[1,2,[3,4,"5"]]
blsq ) {1 2 {3 4 "5"}}sh2FF
[1 2 [3 4 "5"]]
blsq ) {1 2 {3 4 "5"}}sh3FF
{1 2 {3 4 "5"}}
Ff
Defined as: FFff
. Generally just a shortcut for FFff
.
blsq ) {1 2 {3 4}}sh2Ff
"[1 2 [3 4]]"
Authors’ Notes: In most cases you want to use SH
directly.
ff
Pretty a:
Converts the a
to String.
blsq ) {1 2 {3 4}}shff
"[1, 2, [3, 4]]"
blsq ) {1 2 {3 4}}sh2FFff
"[1 2 [3 4]]"
.>
Any a, Any b:
Returns 1 if a > b
else returns 0.
blsq ) 3.0 2.9 .>
1
blsq ) 2.0 2.9 .>
0
blsq ) 10 5 .>
1
blsq ) 10 5.0 .>
0
blsq ) 'a 1 .>
1
blsq ) 'a 9.0 .>
1
blsq ) 'a {} .>
0
blsq ) {} 9.0 .>
1
blsq ) {} 9 .>
1
Note: Comparing values with different types may result in unexpected (but determinstic, thus not undefined) behaviour.
=[
Block a:
Groups together elements next to each other that are equal.
blsq ) {1 2 2 3 4 4 5 6}=[
{{1} {2 2} {3} {4 4} {5} {6}}
blsq ) {1 2 2 3 4 4 4 6}=[
{{1} {2 2} {3} {4 4 4} {6}}
String a:
Groups together characters next to each other that are equal.
blsq ) "abbbbbc"=[
{"a" "bbbbb" "c"}
See also: GroupBy.
-]
Block a:
Returns the first element of a
.
blsq ) {2 4 0}-]
2
String a:
Returns the first character of a
.
blsq ) "abc"-]
'a
Authors’ Notes: If you need the first character of a
as a String use -~
.
Int a:
Returns the first digit of a
(works on absolute value).
blsq ) -451-]
4
-~
Defined as: -][-
.
blsq ) "abcd"-][-
"a"
blsq ) {{1 2 3} {4 5 6}}-~
{2 3}
blsq ) "abcd"-~
"a"
Authors’ Notes: Useful to get the first character of a String as a String.
ie
Block a, Block b, Int a:
Executes a
if b is not zero, otherwise executes b
.
blsq ) 5{3.*}{2.*}1ie
15
blsq ) 5{3.*}{2.*}0ie
10
Authors’ Notes: This built-in is terrible because in most real-world cases it requires at least two additional swaps to get the result of a predicate to the top of the stack.
if
Int a, Block b:
Executes b
only iff a
is not zero.
blsq ) 5 1{3.*}if
15
blsq ) 5 0{3.*}if
5
Block a, Int b:
Executes a
only iff b
is not zero.
blsq ) 5{3.*}0if
5
blsq ) 5{3.*}1if
15
+.
Int a:
Increments a.
blsq ) 5+.
6
Char a:
Returns the next character (unicode point + 1).
blsq ) 'a+.
'b
String a:
Appends the last character of a
to a
.
blsq ) "abc"+.
"abcc"
Block a:
Appends the last element of a
to a
.
blsq ) {1 2 3}+.
{1 2 3 3}
~~
Block a, Block b:
Returns 1 if b
is an infix of a
otherwise returns 0.
blsq ) {1 2 3 4}{2 3}~~
1
blsq ) {1 2 3 4}{3 3}~~
0
Authors’ Notes: For Strings use ~[
.
~]
Block a:
Returns all but the last elements of a
.
blsq ) {1 2 3}~]
{1 2}
String a:
Returns all but the last character of a
.
blsq ) "12a"~]
"12"
Int a:
Returns all but the last digit of a
(as Integer) (works on absolute value).
blsq ) 451~]
45
~-
Defined as: ~][-
. Can be used to remove the first and last element of a String/Block.
blsq ) "abcd"~][-
"bc"
blsq ) "abcd"~-
"bc"
IN
Notes: Duplicates in the left argument are preserved. Order is preserved.
Block a, Block b:
Intersection of a
and b
.
blsq ) {5 1 1 2 2 2 2} {1 2 2 2 3 4 5}IN
{5 1 1 2 2 2 2}
String a, String b:
Intersection of a
and b
.
blsq ) "abc""dce"IN
"c"
Int a, Int b:
Intersection of a
and b
.
blsq ) 512 721IN
12
[[
Any a, Block b:
Inserts a
between elements in b
.
blsq ) 0{1 2 3}[[
{1 0 2 0 3}
Char a, String b:
Inserts a
between characters in b
.
blsq ) 'x"abc"[[
"axbxc"
See also: Intercalate.
[~
String a:
Returns the last character of a
.
blsq ) "abc"[~
'c
Block a:
Returns the last element of a
.
blsq ) {1 2 3}[~
3
Int a:
Returns the last digit of a
(works on absolute value).
blsq ) 451[~
1
L[
String a:
Number of characters in a String.
blsq ) "abc"L[
3
Block a:
Number of elements in a Block.
blsq ) {1 2 3}L[
3
Int a:
Converts to character based on unicode code point.
blsq ) 69L[
'E
blsq ) 98L[
'b
Char a:
Returns case as either 'A
or 'a
.
blsq ) 'BL[
'A
blsq ) 'bL[
'a
ln
String a:
Split a
into lines.
blsq ) "abc\ndef\ngeh"ln
{"abc" "def" "geh"}
Int a:
Number of digits in a
(works on absolute value).
blsq ) 123ln
3
blsq ) -123ln
3
Block a, Block b:
Returns whichever is longer. If both are equal in length b
is returned.
blsq ) {1 2}{1 2 3}ln
{1 2 3}
blsq ) {1 2 4}{1 2 3}ln
{1 2 3}
Char a:
Returns 1 if a
is a printable character otherwise returns 0.
blsq ) 1L[ln
0
blsq ) 'aln
1
See also: WithLines.
m[
String a, Block f:
Defined as: jXXjm[\[
. Applies f
to every character in a
.
blsq ) "aBc"{<-}jXXjm[\[
"AbC"
blsq ) "aBc"{<-}m[
"AbC"
Block a, Block f:
Applies f
to every element in a
.
blsq ) {1 2 3 4 5}{J.*}m[
{1 4 9 16 25}
See also: ConcatMap and there are many other different versions and shortcuts for Map.
[m
Defined as: (^^)+]m[
.
blsq ) {1 2 3}{?*}[m
{1 4 9}
[M
Defined as: (ps)+]m[
. Can be used as a shortcut if the first step of the function that is being mapped over the Block is parsing.
blsq ) "5 6;7 8"';;;{++}[M
{11 15}
M[
Defined as: m[sh
. Can be used as a shortcut if the result of mapping should be pretty printed.
blsq ) "hi there"{L[}m[
"aaaaaaaa"
blsq ) "hi there"{L[}M[
aaaaaaaa
]m
Defined as: (Sh)[+m[
. Can be used when one wants to apply a function to every element of a Block and each result should be converted to a String.
blsq ) {{1 2 3}{4 5 6}}{<-}]m
{"[3, 2, 1]" "[6, 5, 4]"}
M]
Defined as: {sh}m[
. Can be used as a shortcut to convert every element of a Block to Pretty.
blsq ) "hi there"wd
{"hi" "there"}
blsq ) "hi there"wdM]
{hi there}
m]
Defined as: {shff}m[
.
blsq ) {{1 2 3}{4 5 6}}m]
{"[1, 2, 3]" "[4, 5, 6]"}
~=
String str, String regex:
Returns 1 if regex
matches str
otherwise returns 0.
blsq ) "123""[0-3]{3}"~=
1
blsq ) "123""[1-3]{3}"~=
1
blsq ) "123""[1-3]{4}"~=
0
=~
String str, String regex:
Returns the capturing groups as a list. Empty block if no matches or no capture groups were used in the regular expression.
blsq ) "123abc""([0-3]{3}).(b.)"=~
{"123" "bc"}
>.
Any a, Any b:
Returns whichever is greatest.
blsq ) 5 6>.
6
blsq ) 6 5>.
6
blsq ) {12}12>.
{12}
>]
Block a:
Returns the maximum of a
.
blsq ) {1 2 3 2 1}>]
3
String a:
Returns the maximum of a
.
blsq ) "debca">]
'e
Int a:
Returns the largest digit as an Integer.
blsq ) 1971>]
9
blsq ) 1671>]
7
<.
Any a, Any b:
Returns whichever is smallest.
blsq ) 5 4<.
4
blsq ) 5 4<.
4
blsq ) 10 10.0<.
10
<]
Block a:
Returns the minimum of a
.
blsq ) {1 2 0 3}<]
0
String a:
Returns the minimum of a
.
blsq ) "bac"<]
'a
Int a:
Returns the smallest digit as an Integer.
blsq ) 109<]
0
.%
This is an auto-zip and auto-map built-in.
Int a, Int b:
Integer modulo.
blsq ) 10 3.%
1
Char a:
Returns 1
if a
is punctuation otherwise returns 0
.
blsq ) '..%
1
blsq ) 'a.%
0
.*
Int a, Int b:
Integer multiplication.
blsq ) 2 3.*
6
Double a, Double b:
Double multiplication.
blsq ) 2.0 3.0.*
6.0
String a, Int b:
Creates a Block containing a
exactly b
times.
blsq ) "ab"3.*
{"ab" "ab" "ab"}
Char a, Int b:
Creates a String containing a
exactly b
times.
blsq ) 'a 3.*
"aaa"
Block a, Int b:
Creates a Block containing a
exactly b
times.
blsq ) {1 2}3.*
{{1 2} {1 2} {1 2}}
String a, String b:
Appends a
to b
then reverses.
blsq ) "123""456".*
"321654"
Int a, Double b:
Converts a
to Double, then multiplies.
blsq ) 2 3.0.*
6.0
Double a, Int b:
Converts b
to Double, then multiplies.
blsq ) 2.0 3.*
6.0
Char a:
Returns 1
if a
is a symbol else returns 0
.
blsq ) '9.*
0
blsq ) '+.*
1
!=
Defined as: ==n!
.
blsq ) 4 4==n!
0
blsq ) 4 3==n!
1
blsq ) 3 4==n!
1
blsq ) 3 4!=
1
blsq ) 4 4!=
0
NB
Nub means removing duplicates. Order is preserved.
Block a:
Nub a
.
blsq ) {5 1 1 2 2 2 2}NB
{5 1 2}
String a:
Nub a
.
blsq ) "abccd"NB
"abcd"
Int a:
Nub a
.
blsq ) 101010011NB
10
Char a:
Returns 1
if a
is lower case else returns 0
.
blsq ) 'BNB
0
blsq ) 'bNB
1
||
This built-in auto-zips if an argument provided is a Block.
Int a, Int b:
Bitwise OR.
blsq ) 2 4||
6
blsq ) 2 {4 8}||
{6 10}
r|
Block {}
: If the top of the stack is an empty Block then this built-in will push a zero integer.
blsq ) {}r|
0
Otherwise
: Defined as: {||}r[
.
blsq ) {1 2 3}r|
3
P[
Block a, Int b, Any c:
Pad a
to length b
by inserting c
on the left (or removing elements from the right).
blsq ) {3 4 5}4 1P[
{1 3 4 5}
blsq ) {3 4 5 6 7}4 1P[
{3 4 5 6}
String a, Int b, Char c:
Pad a
to length b
by inserting c
on the left (or removing characters from the right).
blsq ) "12"4' P[
" 12"
blsq ) "12345"4' P[
"1234"
[P
Block a, Int b, Any c:
Pad a
to length b
by inserting c
on the right (or removing elements from the right).
blsq ) {3 4 5}4 1[P
{3 4 5 1}
blsq ) {3 4 5 6 7}4 1[P
{3 4 5 6}
String a, Int b, Char c:
Pad a
to length b
by inserting c
on the right (or removing characters from the right).
blsq ) "12345"4' [P
"1234"
blsq ) "12"4' [P
"12 "
ps
This built-in auto-maps if the argument given is a Block.
String a:
Tries to parse a
with the Burlesque parser. (Tries to parse a
as Burlesque code). Returns a Block.
blsq ) "5"ps
{5}
blsq ) "5 3.0.+"ps
{5 3.0 .+}
blsq ) "{5 3.0.+}m["ps
{{5 3.0 .+} m[}
Authors’ Notes: This built-in is handy. Instead of doing something like:
blsq ) "5 3 6 7"wdri++
21
you can just do:
blsq ) "5 3 6 7"ps++
21
vv
Removes the element on top of the stack.
blsq ) 1 2
2
1
blsq ) 1 2vv
1
Authors’ Notes: If there only is one element on top of the stack using ,
is shorter.
v/
Defined as: vv\/
.
blsq ) 1 2 3 4v/
2
3
1
blsq ) 1 2 3 4vv\/
2
3
1
**
Int a, Int b:
Returns a
to the power of b
(a ^ b
).
blsq ) 2 3**
8
Double a, Double b:
Returns a
to the power of b
(a ^ b
).
blsq ) 4.0 3.0**
64.0
Block a, Block b:
Merges a
and b
. c = a_1, b_1, a_2, b_2
blsq ) {1 2 3}{4 5 6}**
{1 4 2 5 3 6}
String a, String b:
Merges a
and b
.
blsq ) "123""456"**
"142536"
Char a:
Returns the unicode codepoint of a
as an Integer.
blsq ) 'A**
65
blsq ) 'a**
97
~!
Block a, Block b:
Returns 1 if b
is a prefix of a
otherwise returns 0.
blsq ) {1 4 3 2}{1 4}~!
1
blsq ) {1 4 3 2}{4 3}~!
0
String a, String b:
Returns 1 if b
is a prefix of a
otherwise returns 0.
blsq ) "http://mroman.ch" "http://"~!
1
blsq ) "http://mroman.ch" "https://"~!
0
Int a, Int b:
Returns 1 if b
is a prefix of a
otherwise returns 0 (works on absolute values).
blsq ) 1991 91~!
0
blsq ) 1991 199~!
1
+]
Block a, Any b:
Prepend b
to a
.
blsq ) {1 2}3+]
{3 1 2}
String a, Char b:
Prepend b
to a
.
blsq ) "ab"'c+]
"cab"
Int a, Int b:
Prepends b
to a
(result is an Integer).
blsq ) 12 23+]
2312
sh
Any a:
Convert to a Pretty with format Normal.
blsq ) "abc\ndef"sh
abc
def
blsq ) {1 2 3}
{1 2 3}
blsq ) {1 2 3}sh
[1, 2, 3]
blsq ) 5.0
5.0
blsq ) 5.0sh
5.0
SH
Defined as: jshjFf
. Can be used to convert something to a String with a specified format.
blsq ) {1 2 {3 4}}2SH
"[1 2 [3 4]]"
blsq ) {1 2 {3 4}}1SH
"[1,2,[3,4]]"
Sh
Defined as: shff
. Can be used to convert something to a String with format Normal
.
blsq ) {1 2 3}Sh
"[1, 2, 3]"
sH
Defined as: SHsh
. Can be used to convert something for display with a specified format.
blsq ) {1 2 {3 4}}1sH
[1,2,[3,4]]
pd
Block {}:
Defined as: 1
. The product of an empty block is one.
Block a:
Defined as: {.*}r[
. Calculates the product of a Block.
blsq ) {1 2 3 4}{.*}r[
24
blsq ) {1 2 3 4}pd
24
blsq ) {1 2 3.0 4}pd
24.0
Int a:
Defined as: Shrd
. Converts to double.
blsq ) 5Shrd
5.0
blsq ) 5pd
5.0
blsq ) 5rd
5.0
Double a:
Ceiling of a
as Integer.
blsq ) 1.1pd
2
Authors’ Notes: If you want ceiling of a
as Double use cl
.
PD
Defined as: {pd}m[
. Just maps pd
over a Block.
blsq ) {{1 2 3} 5 {2 4}}{pd}m[
{6 5.0 8}
blsq ) {{1 2 3} 5 {2 4}}PD
{6 5.0 8}
Authors’ Notes: Can be used as a shortcut for )pd
. Otherwise this built-in doesn’t offer too much over rd
as rd
auto-maps.
^p
Block a:
Pushes every element in a
to the stack.
blsq ) 'a{1 2 3}^p
3
2
1
'a
p^
Block a:
Pushes every element in a
to the stack in reversed order.
blsq ) 'a{1 2 3}p^
1
2
3
'a
r@
Int a, Int b:
Generates a Block containing the numbers a
through b
.
blsq ) 1 10r@
{1 2 3 4 5 6 7 8 9 10}
Char a, Char b:
Generates a Block containing the characters a
through b
.
blsq ) 'a'zr@
{'a 'b 'c 'd 'e 'f 'g 'h 'i 'j 'k 'l 'm 'n 'o 'p 'q 'r 's 't 'u 'v 'w 'x 'y 'z}
Authors’ Notes: Use RangeConcat if you need a String.
Double a:
Square root of a
.
blsq ) 64.0r@
8.0
String a:
Returns a Block with all permutations of a
.
blsq ) "abc"r@
{"abc" "bac" "cba" "bca" "cab" "acb"}
Block a:
Returns a Block with all permutations of a
.
blsq ) {1 0 9}r@
{{1 0 9} {0 1 9} {9 0 1} {0 9 1} {9 1 0} {1 9 0}}
R@
Str a:
All subsequences of a
.
blsq ) "abc"R@
{"" "a" "b" "ab" "c" "ac" "bc" "abc"}
Block a:
All subsequences of a
.
blsq ) {1 2 3}R@
{{} {1} {2} {1 2} {3} {1 3} {2 3} {1 2 3}}
Int a:
Generates a Block containing the numbers a
to Infinity.
blsq<EMAIL_ADDRESS>{5 6 7 8 9 10 11 12 13 14}
ra
This built-in auto-maps if the argument given is a Block.
String a:
Parses an array in [,]
-notation.
blsq ) "[1,2,3]"ra
{1 2 3}
blsq ) "[1,[2,4],3]"ra
{1 {2 4} 3}
blsq ) "[1,[2 4],3]"ra
{1 {2 4} 3}
blsq ) "[1,[2 4],,,,3]"ra
{1 {2 4} 3}
It should be noted that ,
are optional and multiple ,
will be skipped as well. Nesting is supported.
Char a:
Returns 1 iff a
is space, else returns 0.
blsq ) " \t\ra0"{ra}m[
{1 1 1 0 0}
rd
This built-in auto-maps if the argument given is a Block.
String a:
Converts a
to Double.
blsq ) "3.0"rd
3.0
Int a:
Defined as: pd
.
Double a:
No operation.
blsq ) 3.1rd
3.1
Char a:
Returns 1 iff a
is alpha, else returns 0.
blsq ) 'ard
1
blsq ) '1rd
0
Authors’ Notes: This built-in is useful to convert every element in a Block to a Double:
blsq ) {3.0 5 "3.14"}rd
{3.0 5.0 3.14}
ri
This built-in auto-maps if the argument given is a Block.
String a:
Converts a
to Int.
blsq ) "100"ri
100
blsq ) "-101"ri
-101
Int a:
No operation.
blsq ) 5ri
5
blsq ) -5ri
-5
Double a:
Defined as: av
.
Char a:
Returns 1 iff a
is alpha numeric, else returns 0.
blsq ) 'ari
1
blsq ) '1ri
1
blsq ) '.ri
0
Authors’ Notes: This built-in is useful to convert every element in a Block to an Integer:
blsq ) {"12" 12.0 13 12.7}ri
{12 12 13 12}
However, Doubles are not rounded to the nearest Integer but are truncated. Rounding everything to the nearest Integer can be done with for example rd)R_
.
r[
Block a, Block f:
Takes the first element of a
and the second element of a
, applies f
, takes the next element of a
and applies f
again and continues like that. More symbolically speaking {1 2 3 4}{.+}r[
becomes 1 2 .+ 3 .+ 4 .+
, {1 2 3 5}{?-}r[
becomes 1 2 ?- 3 ?- 4?-
and so forth.
blsq ) {1 2 3 4}{.+}r[
10
blsq ) {1 2 3 4}{.*}r[
24
r~
Block a, Any b, Any c:
Replaces every occurence of b
in a
with c
.
blsq ) {1 2 3 1 4}1 9r~
{9 2 3 9 4}
String a, Char b, Char c:
Replaces every occurence of b
in a
with c
.
blsq ) "hello"'l'!r~
"he!!o"
String a, String b, String c:
Replaces every occurence of b
in a
with c
.
blsq ) "hi there hi go""hi""bye"r~
"bye there bye go"
Int a, Int b, Int c:
Replaces every occurence of b
in a
with c
(works on absolute values).
blsq ) -1334336 33 10r~
1104106
R~
String str, String repl, String regex:
Replaces every match of regex
with repl
.
blsq ) "Year 2014.""X""[[:digit:]]"R~
"Year XXXX."
blsq ) "Year 2014.""X""[0-3]"R~
"Year XXX4."
blsq ) "Year 2014.""__""[a-z]|[0-3]{2}"R~
"Y______ __14."
<-
String a:
Reverses a
.
blsq ) "123"<-
"321"
Block a:
Reverses a
.
blsq ) {4 5 6}<-
{6 5 4}
Int a:
Reverses the digits of an Integer. (Works on absolute value).
blsq ) -123<-
321
Char a:
Inverts case.
blsq ) 'a<-
'A
blsq ) 'B<-
'b
r_
This built-in accepts a Block as first argument, in which case an auto-map is performed.
Double a, Int b:
Rounds a
to b
decimal points.
blsq ) 3.12 2r_
3.12
blsq ) 3.19 2r_
3.19
blsq ) 3.5 0r_
4.0
blsq ) {3.5 3.4}0r_
{4.0 3.0}
R_
Defined as: 0r_pd
.
blsq ) {3.5 3.4}0r_pd
12.0
blsq ) {3.5 3.4}R_
12.0
blsq ) 5.5R_
6
blsq ) 5.3R_
5
blsq ) 5.3 0r_pd
5
Authors’ Notes: Even though r_
can auto-map this built-in won’t do the same expected job because pd
will calculate the product of a Block. You may however use this fact as a shortcut for example for {0r_}m[pd
. If you want to round every Double to the nearest Integer in a Block use )R_
.
sn
Int a:
Signum of a
. (-1 for negative, 1 for positive, 0 for zero).
blsq ) -6sn6sn0sn
0
1
-1
Double a:
Signum of a
. (-1.0 for negative, 1.0 for positive, 0.0 for zero).
blsq ) -6.0sn6.0sn0.0sn
0.0
1.0
-1.0
Char a:
Returns 1
if a
is upper case else returns 0
.
blsq ) 'Bsn
1
blsq ) 'bsn
0
.<
Any a, Any b:
Returns 1 if a < b
else returns 0.
blsq ) 2 3.<
1
blsq ) 4 3.<
0
blsq ) {1 2 3}{2 2 3}.<
1
Note: Comparing values with different types may result in unexpected (but determinstic, thus not undefined) behaviour.
><
Block a:
Sorts a
in ascending order.
blsq ) {5 3 4}><
{3 4 5}
Str a:
Sorts a
in ascending order.
blsq ) "there"><
"eehrt"
Int a:
Sorts a
in ascending order.
blsq ) 3241><
1234
blsq ) 32401><
1234
Notes: Please be aware that this will remove zeroes as numbers don’t have leading zeroes.
Char a:
Returns 1
if a
is a digit, 0
otherwise.
blsq ) "ab10c")><
{0 0 1 1 0}
<>
Defined as: ><<-
blsq ) {5 3 0 9 7 8}<>
{9 8 7 5 3 0}
blsq ) {5 3 0 9 7 8}><<-
{9 8 7 5 3 0}
;;
Block a, Block b:
Split a
on b
.
blsq ) {1 2 3 4 2 3 5 7 2 3 8}{2 3};;
{{1} {4} {5 7} {8}}
String a, String b:
Split a
on b
.
blsq ) "Hello, world, is,"", ";;
{"Hello" "world" "is,"}
String a, Char b:
Split a
on b
.
blsq ) "Hello"'l;;
{"He" "" "o"}
Char a, String b:
Split b
on a
.
blsq ) 'e"Hello";;
{"H" "llo"}
Int a, Int b:
Split a
on b
.
blsq )<PHONE_NUMBER> 23;;
{1 4256 8}
S[
Block a, Any b:
Removes any leading b
s from a
.
blsq ) {1 1 2 5}1S[
{2 5}
String a, Char b:
Removes any leading b
s from a
.
blsq ) "QQabQ"'QS[
"abQ"
Int a:
Returns (a
* a
) (squares).
blsq ) 5S[
25
Authors’ Notes: For Doubles use fC
.
[S
Block a, Any b:
Removes any trailing b
s from a
.
blsq ) {1 0 0 0}0[S
{1}
String a, Char b:
Removes any trailing b
s from a
.
blsq ) "abccc"'c[S
"ab"
.-
Int a, Int b:
Integer subtraction.
blsq ) 1 5.-
-4
Double a, Double b:
Double subtraction.
blsq ) 1.0 4.0.-
-3.0
String a, String b:
Removes b
from the end of a
iff b
is a suffix of a
.
blsq ) "README.md" ".md".-
"README"
blsq ) "README.md" ".txt".-
"README.md"
Int a, Block b:
Removes the first a
elements from b
.
blsq ) 3{1 2 3 4}.-
{4}
String a, Int b:
Removes the first b
characters from a
.
blsq ) "abcd"2.-
"cd"
Int a, String b:
Removes the first a
characters from b
.
blsq ) 2"abcd".-
"cd"
Block a, Int b:
Removes the first b
elements from a
.
blsq ) {1 2 3 4}2.-
{3 4}
Int a, Double b:
Converts a
to Double, then subtracts.
blsq ) 4 3.0.-
1.0
Double a, Int b:
Converts b
to Double, then subtracts.
blsq ) 4.0 3.-
1.0
Block a, Block b:
Removes b
from the end of a
iff b
is a suffix of a
.
blsq ) {1 2 3 4}{3 4}.-
{1 2}
blsq ) {1 2 3 4}{3 4 5}.-
{1 2 3 4}
!~
Block a, Block b:
Returns 1 if b
is a suffix of a
otherwise returns 0.
blsq ) {1 2 3}{2 3}!~
1
blsq ) {1 2 3}{1 2}!~
0
String a, String b:
Returns 1 if b
is a suffix of a
otherwise returns 0.
blsq ) "this.txt" ".txt"!~
1
blsq ) "this.txt" ".pdf"!~
0
Int a, Int b:
Returns 1 if b
is a suffix of a
otherwise returns 0 (works on absolute values).
blsq ) 123 -23!~
1
blsq ) 123 -24!~
0
++
Block {}:
Defined as: 0
. The sum of an empty Block is zero.
Block a:
Defined as: {.+}r[
. Calculates the sum of a Block.
blsq ) {1 2 3 4}{.+}r[
10
blsq ) {1 2 3 4}++
10
blsq ) {1 2 3 4.0}++
10.0
Int a, Int b:
Concatenates Integers (works on absolute values).
blsq ) 12 34++
1234
j
\/
Swaps the top two elements.
blsq ) 1 2
2
1
blsq ) 1 2j
1
2
/^
Defined as: *\/^^
.
blsq ) 1 2 3/^
2
2
3
1
blsq ) 1 2 3\/^^
2
2
3
1
blsq ) 1 2 3/^
2
2
3
1
blsq ) 1 2 3jJ
2
2
3
1
Author’s Notes: You might as well use jJ
.
/v
Defined as: \/vv
. This builtin essentially pops the element under the top of the stack.
blsq ) 1 2
2
1
blsq ) 1 2 /v
2
blsq ) 1 2 \/vv
2
blsq ) 1 2 3 \/vv
3
1
[-
Block a:
Returns all but the first element of a
.
blsq ) {1 2 3}[-
{2 3}
String a:
Returns all but the first character of a
.
blsq ) "hello"[-
"ello"
Int a:
Returns all but the last digit of a
(as Integer) (works on absolute value).
blsq ) 451[-
51
Char a:
Convert to string.
blsq ) 'a[-
"a"
zz
This built-in auto-maps if an argument provided is a block.
Char a
: Convert a
to lower case.
blsq ) 'Qzz
'q
String a
: Convert a
to lower case.
blsq ) "aBc."zz
"abc."
ZZ
This built-in auto-maps if an argument provided is a block.
Char a
: Convert a
to upper case.
blsq ) 'aZZ
'A
String a
: Convert a
to upper case.
blsq ) "aBc."ZZ
"ABC."
UN
Notes: If left argument contains duplicates these will be preserved. Duplicates in the right argument will be removed. Order is preserved.
Block a, Block b:
Union of a
and b
.
blsq ) {1 1} {1 2 2 2 3}UN
{1 1 2 3}
String a, String b:
Union of a
and b
.
blsq ) "zabc""cde"UN
"zabcde"
Int a, Int b:
Union of a
and b
.
blsq ) 12 14UN
124
un
Block {}:
If given an empty block returns an empty string.
blsq ) {}un
""
Otherwise:
Defined as: "\n"j[[\[
. This is the inverse of ln
and inserts newlines between elements.
blsq ) {"abc" "def" "ghe"}"\n"j[[\[
"abc\ndef\nghe"
blsq ) {"abc" "def" "ghe"}un
"abc\ndef\nghe"
Authors’ Notes: Due to its definition this built-in will only work as expected when the Block contains Strings. If you want to unlines a Block containing other types use Su
.
blsq ) {1 2 3}un
"\n12\n3"
blsq ) {1 2 3}Su
"1\n2\n3"
uN
Defined as: unsh
.
blsq ) {"12" "23"}un
"12\n23"
blsq ) {"12" "23"}uN
12
23
blsq ) {"12" "23"}unsh
12
23
up
Any a:
Converts a to display string. This is somewhat the inverse of ps
.
blsq ) {1 2++}up
"{1 2 ++}"
Authors’ Note: This built-in is somewhat equivalent to using 3SH
.
w!
A while-loop
Block f, Block p:
Executes f
while p
is not zero. p
will be tested each time against the top of the stack.
blsq ) 5{+.}{10.<}w!
10
Block f:
Executes f
as long as the top of the stack is not zero. Same thing as doing {code}{}w!
.
blsq ) 0 10{j+.+.j-.}w!
0
20
wl
Defined as: jlnjm[un
. This built-in allows to map over the lines in a String.
blsq ) "abc\ndef"{<-}jlnjm[un
"cba\nfed"
blsq ) "abc\ndef"{<-}wl
"cba\nfed"
wL
Defined as: (ps)+]WL
. This built-in allows to map over the lines in a String while calling Parse on each line automatically.
blsq ) "11 22\n5 6"{++Sh}(ps)+]WL
33
11
blsq ) "11 22\n5 6"{++Sh}wL
33
11
WL
Defined as: wlsh
.
blsq ) "abc\ndef"{<-}wlsh
cba
fed
blsq ) "abc\ndef"{<-}WL
cba
fed
ww
Defined as: jWDjm[wd
. This built-in allows to map over the words in a String.
blsq ) "hello world"{<-}jWDjm[wd
"olleh dlrow"
blsq ) "hello world"{<-}ww
"olleh dlrow"
WW
Defined as: wwsh
.
blsq ) "hello world"{<-}wwsh
olleh dlrow
blsq ) "hello world"{<-}WW
olleh dlrow
wd
String _:
Defined as: " ";;
. Splits by space.
blsq ) "hi there"wd
{"hi" "there"}
Block {}:
Pushes an empty string to the stack.
blsq ) {}wd
""
Block a:
Defined as: ' \/[[\[
. An unwords. It converts a Block of words into a String.
blsq ) {"hi" "there"}wd
"hi there"
blsq ) {"hi" "there"}' \/[[\[
"hi there"
Otherwise:
Defined as: \/[[
.
blsq ) {"hi" "there" "you"}'.wd
{"hi" '. "there" '. "you"}
Authors’ Notes: This built-in only splits by a regular space. If you want to split by whitespaces you need to use WD
(Words2).
blsq ) "a\nb"wd
{"a\nb"}
blsq ) "a\nb"WD
{"a" "b"}
wD
Defined as: wdsh
.
blsq ) {"abc" "def"}wD
abc def
$$
This built-in auto-zips if an argument provided is a Block.
Int a, Int b:
Bitwise XOR.
blsq ) 66 34$$
96
blsq ) 96 66 $$
34
blsq ) 96 34 $$
66
z[
Block a, Block b:
Zips a
and b
.
blsq ) {1 2 3}{4 5 6}z[
{{1 4} {2 5} {3 6}}
String a, String b:
Zips a
and b
.
blsq ) "abc""def"z[
{{'a 'd} {'b 'e} {'c 'f}}
String a, Block b:
Zips a
and b
.
blsq ) "abc"{1 2 3}z[
{{'a 1} {'b 2} {'c 3}}
Block a, String b:
Zips a
and b
.
blsq ) {1 2 3}"abc"z[
{{1 'a} {2 'b} {3 'c}}
Int a, Int b
: Defined as: XX\/XX\/z[
. (It’ll explode the integers).
blsq ) 123 456z[
{{1 4} {2 5} {3 6}}
Block a, Any b
: Defined as: \/XX\/z[
. (It’ll explode argument b
).
Any a, Block b:
: Defined as: XXz[
. (It’ll explode argument a
).
Z[
Any a, Any b, Block f
: Performs a Zip followed by a Map.
Z]
Defined as: (^p+])Z[
.
Authors’ Notes: This is was introduced to the fact that with the usual ZipWith the arguments are as a Block on the stack which is kinda inconvenient in most cases.


Assoc:
- Any -
%for u in userlist: %if u[2]:
${u[1]|h}
%endif %endfor
Status:
- Any -
Paid
Unpaid
From:
To:
Quit
Print
Name
Count
Total
ID
Type
Paid
Memo
Total
Order Date


Sources in the home |
| Sewer Gas can enter a home through a floor drain, from a leaking or blocked plumbing roof vent, or (if the gases are in soil adjacent to the house) through cracks in foundations. |
Symptoms |
Increase in the following symptoms :
|


TEAM ROSTER
Derv
Manager
ID: D1
Email:
davemail
Office Number: 123
Engie
Engineer
ID: 234
Email:
Email
GitHub:
E-git
IT
Intern
ID: IT1
Email:
imail
School:


Feedmail
Save
Preview
Send
Email address
We'll never share your email with anyone else.
RSS URL
Add
Email body
RSS


npm-update
Update a packageTable of contents
Synopsis
npm update [-g] [<pkg>...]
aliases: up, upgrade
Description
This command will update all the packages listed to the latest version
(specified by the tag
config), respecting semver.
It will also install missing packages. As with all commands that install
packages, the --dev
flag will cause devDependencies
to be processed
as well.
If the -g
flag is specified, this command will update globally installed
packages.
If no package name is specified, all packages in the specified location (global or local) will be updated.
As of<EMAIL_ADDRESS>, the npm update
will only inspect top-level packages.
Prior versions of npm
would also recursively inspect all dependencies.
To get the old behavior, use npm --depth 9999 update
.
As of<EMAIL_ADDRESS>, the npm update
will change package.json
to save the
new version as the minimum required dependency. To get the old behavior,
use npm update --no-save
.
Example
IMPORTANT VERSION NOTE: these examples assume<EMAIL_ADDRESS>or later. For
older versions of npm
, you must specify --depth 0
to get the behavior
described below.
For the examples below, assume that the current package is app
and it depends
on dependencies, dep1
(dep2
, .. etc.). The published versions of dep1
are:
{
"dist-tags": { "latest": "1.2.2" },
"versions": [
"1.2.2",
"1.2.1",
"1.2.0",
"1.1.2",
"1.1.1",
"1.0.0",
"0.4.1",
"0.4.0",
"0.2.0"
]
}
Caret Dependencies
If app
’s package.json
contains:
"dependencies": {
"dep1": "^1.1.1"
}
Then npm update
will install<EMAIL_ADDRESS>, because 1.2.2
is latest
and
1.2.2
satisfies ^1.1.1
.
Tilde Dependencies
However, if app
’s package.json
contains:
"dependencies": {
"dep1": "~1.1.1"
}
In this case, running npm update
will install<EMAIL_ADDRESS>. Even though the latest
tag points to 1.2.2
, this version does not satisfy ~1.1.1
, which is equivalent
to >=1.1.1 <1.2.0
. So the highest-sorting version that satisfies ~1.1.1
is used,
which is 1.1.2
.
Caret Dependencies below 1.0.0
Suppose app
has a caret dependency on a version below 1.0.0
, for example:
"dependencies": {
"dep1": "^0.2.0"
}
npm update
will install<EMAIL_ADDRESS>, because there are no other
versions which satisfy ^0.2.0
.
If the dependence were on ^0.4.0
:
"dependencies": {
"dep1": "^0.4.0"
}
Then npm update
will install<EMAIL_ADDRESS>, because that is the highest-sorting
version that satisfies ^0.4.0
(>= 0.4.0 <0.5.0
)
Updating Globally-Installed Packages
npm update -g
will apply the update
action to each globally installed
package that is outdated
– that is, has a version that is different from
wanted
.
Note: Globally installed packages are treated as if they are installed with a caret semver range specified. So if you require to update to latest
you may need to run npm install -g [<pkg>...]
NOTE: If a package has been upgraded to a version newer than latest
, it will
be downgraded.


* [NOTES]*
* ELECTRIC CHARGES
~The property of protons and electrons, which gives rise to electric force b/w them is called electric charge.
* COLOUMBS LAW
~The force of interaction b/w two stationary point charges is directly proportional to product of charges and inversely to square of the distance b/w them
* ELECTRIC DIPOLE
~The systyem of two charges having same magnitudes but opposite signs iss known as electric dipole.
MADE WITH favorite BY PARTH PANDYA.


--- layout: base --- {% include mode_switcher.html %} {% assign my = site.my %}
I'm afraid I'm sliding into this blog business sideways, so this information was thrown together quick. I hope to update soon with more thorough/accurate information.
I'm also new to Jekyll, and hacking on a template I didn't create, so if you see something strange, I'd love a heads up!


Hello Spring Boot User ! ()
The LTI 1.0 provider is at
http://localhost:8080/tsugiIf you navigate to this directly, you will get an error that says, "Request is not an LTI request". You must launch this using LTI - perhaps using
http://localhost:8888/tsugi/dev.phpand put in something like "http://localhost:8080/tsugi" as the launch url and press "Launch".


---
layout: default
---
{{ content }}
Latest Post
{% for post in site.categories.post limit:1 %}
{% include post-list.html %}
{% endfor %}
Latest Software Engineer Project
{% for project in site.categories.software_engineer limit:1 %}
{% include project-list.html %}
{% endfor %}
Latest Gamedev Project
{% for project in site.categories.gamedev limit:1 %}
{% include project-list.html %}
{% endfor %}


s6lock is a C interface to timed locks. Unix natively provides locks, but the locking primitives are synchronous, so either they are unbounded in execution time or they require polling. s6lock provides poll-free locks that can timeout during attempted acquisition.
s6lock_t a = S6LOCK_ZERO ; tain_t deadline ; tain_now_g() ; tain_addsec_g(&deadline, 2) char const *path = S6LOCK_IPCPATH ; s6lock_start_g(&a, path, &deadline) ; // char const *lockdir = "/tmp/lock" ; // s6lock_startf_g(&a, lockdir, &deadline) ;
s6lock_start_g starts a session by connecting to an s6lockd service
listening on path. The working directory is set by the administrator
of the service.
s6lock_startf_g starts a session with an s6lockd process as a child,
using lockdir as its working directory.
a is an s6lock_t structure that must be declared in the stack and
initialized to S6LOCK_ZERO.
If the session initialization fails, the function returns 0 and errno is set;
else the function returns 1.
If the absolute time deadline is reached and the function has not returned yet, it immediately returns 0 with errno set to ETIMEDOUT. Only local interprocess communications are involved; unless your system is heavily overloaded, the function should return near-instantly. One or two seconds of delay between the current time and deadline should be enough: if the function takes more than that to return, then there is a problem with the underlying processes.
You can have more than one session open in parallel, by declaring several distinct s6lock_t structures and calling s6lock_startf_g (or s6lock_start_g) more than once. However, one single session can handle virtually as many concurrent locks as your application needs, so opening several sessions is only useful if you need to acquire locks in various distinct lock directories.
s6lock_end(&a) ;
s6lock_end frees all the resources used by the session. The a structure is then reusable for another session.
uint16_t id ; char const *file = "lockfile" ; tain_t limit ; tain_t deadline ; int r = s6lock_acquire_sh_g (&a, &id, file, &limit, &deadline) ; /* int r = s6lock_acquire_ex_g (&a, &id, file, &limit, &deadline) ; */ r = s6lock_release_g(&a, id, &deadline) ;
s6lock_acquire_sh_g instructs the s6lockd daemon, related to the open session represented by the a handle, to try and acquire a shared lock on the file file located under that daemon's working directory (typically /var/lock). file will be interpreted as relative to the daemon's working directory even if it starts with a slash; however, slashes in the middle of file are likely to result in an error.
limit and deadline are two absolute dates. deadline is a deadline for the execution of the function: if by deadline the function has not returned, then it instantly returns 0 and sets errno to ETIMEDOUT. The function is normally near-instantaneous, so deadline can be very close in the future and serves only as a protection against malicious servers. limit is the acquisition deadline: if by limit the daemon still has not been able to acquire a lock on file, then it will report a timeout to the client.
The function returns 1 in case of success, or 0 if an error occurs, with errno set to a suitable value. If it succeeds, then a 16-bit number is stored into *id; this number serves as an identifier for this lock.
s6lock_acquire_ex_g works just like s6lock_acquire_sh_g, except that the daemon tries to acquire an exclusive lock.
s6lock_release_g releases the lock identified by id. It normally returns 1. It can return 0 with errno set to a suitable value if it fails. id is not valid after the corresponding lock has been released. The function normally returns instantly, with deadline as a safeguard.
(from now on, the functions are listed with their prototypes instead of usage examples.)
int s6lock_fd (s6lock_t const *a)
Returns a file descriptor to select on for reading. Do not read() it though.
int s6lock_update (s6lock_t *a)
Call this function whenever the fd checks readability: it will update a's internal structures with information from the s6lockd daemon. It returns -1 if an error occurs; in case of success, it returns the number of identifiers for which something happened.
When s6lock_update returns, genalloc_s(uint16_t, &a->list) points to an array of genalloc_len(uint16_t, &a->list) 16-bit unsigned integers. Those integers are ids waiting to be passed to s6lock_check.
int s6lock_check (s6lock_t *a, uint16_t id, char *what)
Checks whether the lock identified by id has been acquired. Use after a call to s6lock_update().
int s6lock_wait_or_g (s6lock_t *a, uint16_t const *idlist, unsigned int n, tain_t const *deadline)
Synchronously waits for one of the locks represented by the array pointed to
by idlist of length n to be acquired. Returns -1 if it fails,
or a nonnegative number on success, which is the index in idlist of the
acquired lock's id. If no result has been obtained by deadline, the
function returns -1 ETIMEDOUT.
int s6lock_wait_and_g (s6lock_t *a, uint16_t const *idlist, unsigned int n, tain_t const *deadline)
Synchronously waits for all of the locks represented by the array pointed to
by idlist of length n to be acquired. Returns -1 if it fails and
0 if it succeeds. If no result has been obtained by deadline, the
function returns -1 ETIMEDOUT.


---
# Basics
subject: We have thoughts on commitment...
description: It's now optional.
# Headlines
headline_1: Welcome to Sonne
# Button Section
button_1_copy: Track Your Order
button_1_link: http://google.com
button_2_copy: Manage Account
button_2_link: http://google.com
# Body Copy
bodycopy_1: Come Closer
---
{{> header }}
It's the same Sonne, but without the monthly commitment.
It's pretty simple -- if you're not into the subscription model, we're now offering Sonne as one-time purchase for $45 + shipping.


The launch of Sputnik on Oct. 4, 1957, marked the beginning of an intense space race that led to decades of rocket and satellite launches, which eventually resulted in a large amount of space debris. Space debris is anything in orbit that is man-made and is no longer in use. It consists of old, inactive satellites; rocket stages; and other discarded hardware. Smaller pieces of space debris include fragments of vehicles that exploded or collided and bits of insulation and paint that have come off of space vehicles. Generally, the smaller the debris, the more there is of it. This abundance of debris created the need for a military space surveillance to maintain a catalog of all Earth-orbiting objects — active payloads, satellites and debris — along with detailed information about trajectory and point of origin.
This “space object catalog” or Satellite Catalog (SATCAT) is maintained by Joint Combined Space Operations Center (CSpOC) at Vandenberg Air Force Base, part of U.S. Strategic Command. One of the missions of CSpOC is to detect, track and identify all objects in Earth orbit in addition to monitoring the International Space Station (ISS) and other NASA satellites for collisions. Also located at Vandenberg Air Force Base is the The U.S. Air Force’s 18th Space Control Squadron, which operates the Space Surveillance Network (SSN), which oversees radar and optical sensors at various sites around the world. These sensors observe and track objects that are larger than a softball in low Earth orbit (LEO) and basketball-sized objects or larger, in higher, geosynchronous orbits. The sensors can determine which orbit the objects are in, and that information is used to predict close approaches, reentries and the probability of a collision.
As a world leader in space debris research, The Aerospace Corporation (Aerospace) has supported the Space Surveillance Network for nearly 60 years. Aerospace helps the U.S. government estimate the amount of debris created in a collision or explosion, assists with reentry predictions and reentry casualty expectation and is renowned in space traffic management research.
Space debris affects everyone especially since almost everything we do in our modern way of life uses satellite technology. Space debris adds to the cost of operating satellites because if debris destroys a satellite, it may take years and hundreds of millions of dollars to restore that satellite's service. Even tiny debris objects can inflict grave harm to critical sensors and spacecraft components. A one-centimeter-sized object is considered lethal if it hits a satellite and an object down to one millimeter can critically damage a satellite if it hits a critical component. In addition, the growth in space debris will make orbit operations and space flight more hazardous, difficult and more costly if frequent maneuvers are required to avoid debris. A satellite would have to carry extra fuel for these extra maneuvers and would likely need to shield critical areas from collisions with small debris.
Once a pressure sphere on the upper stage of a rocket; now a piece of space debris recovered in South Africa. Photo: Argus/Enver
The U.S. military is currently tracking about 20,000 objects and has cataloged more than 40,000 objects over the years. Space debris numbers are estimated to rise to over 100,000 objects in the coming years.  It is estimated that there are hundreds of thousands of objects that could be fatal or catastrophic to a space mission and millions of objects that are capable of causing damage.
Unfortunately, we can’t just vacuum or sweep up space debris into a space garbage truck. To remove space debris, particularly the large and more dangerous objects, we have to get close to it and maintain the same speed as each object. We then must somehow attach to it, and move it into a lower orbit or reenter it directly into the atmosphere, where it will burn up upon reentry. If the object is a rocket stage with propellant still on board, there is an explosion risk, which is why astronauts never perform this task.
A small piece of space debris traveling at 17,000 miles per hour carries a lot of energy. This photo depicts damage to the Hubble telescope caused by debris. Photo Credit: NASA
There is also the issue of property rights; you can’t grab a satellite or rocket that belongs to another country without their permission. There is no easy way to control the small-but-dangerous objects that are not well tracked or not tracked at all. They have more kinetic energy than bullets, and they are moving ten times faster. It is hard to catch a bullet, especially if you don’t want to create more junk while doing it.
Increased space debris traffic also equals increased collision risk for launch vehicles and satellites on orbit. If the SSN predicts a collision between a cataloged object and a known operational satellite, they usually attempt to notify the owner/operator. Debris can’t be moved, but if the other object is a maneuverable satellite, the object may be able to move out of the way in time to avoid a collision. Most satellite operators require hours or days to plan and execute a collision avoidance maneuver. Other nations use CSpOC data as well as their own tracking data to protect their satellites. Therefore, high-accuracy assessment and prediction tools are essential for reducing risk to current systems and future launches.
Aerospace’s Center for Orbital and Reentry Debris Studies(CORDS) is addressing the issue of space debris and space traffic management by developing tools and techniques that will analyze potential collision scenarios, study reentry breakups of upper stages and spacecraft and model debris objects in space. These efforts are critical given the predicted population growth in launch efforts and LEO satellite constellations.
CORDS-developed tools encompass a vast array of operations, from predicting possible collisions during launch and on orbit, to predicting hazards to spacecraft after collisions in space, simulating the breakup of reentering debris, estimating the survivability of satellite components reentering Earth’s atmosphere and determining risk to life and property. CORDS provides information on when a reentry might occur, and Aerospace collects and analyses material that survived reentry. This expertise has been used to support the needs of Air Force, NRO, NASA, NOAA, FAA and other customers.
The first Reentry Breakup Recorder (REBR) successfully recorded data as it plunged through the atmosphere aboard a disintegrating Japanese HTV-2 spacecraft.To measure the effects of atmospheric reentry on space objects, CORDS developed the Reentry Breakup Recorder (REBR)—a small, lightweight, self-contained, autonomous, survivable and locatable data-recording device. Attached to a host vehicle, which is generally a spacecraft, this device “sleeps” until the point of atmospheric reentry, when it wakes up to record temperature, acceleration, rotational rate, and other data, including the subsequent breakup of the space hardware due to atmospheric drag, aerodynamic heating, and loads. REBR is released during breakup and protected by its heat shield, survives reentry and “phones home” recorded data via the Iridium system. Five REBR devices have been launched to date, providing innumerable insights into the atmospheric reentry and breakup of spacecraft.
The single most important contribution to managing space debris is to avoid making more debris. Nowadays, satellite operators try to reduce space debris from recently launched satellites and rocket bodies by carefully designing them to prevent explosions, reentering them, or moving them to disposal orbits — essentially a space junkyard — when their mission is over. Another way of preventing space debris is to predict and help prevent catastrophic collisions between existing objects. For nearly two decades, CORDS has pioneered new techniques and processes to provide probability-based analysis for mission assurance launch collision avoidance for all national security space launches. The CORDS team has worked to improve the accuracy of the space object catalog and how to apply this knowledge to achieve effective collision avoidance. Aerospace’s Debris Analysis Response Team provides realtime debris risk assessment for on-orbit collisions and breakups.
{TABLE} A summary of collision energies of various sized particles. Notice that tiny space debris can be deadly and are typically not trackable.In their efforts to get to the moon, the first space pioneers probably never imagined that space debris and protecting our space environment would ever be an issue. Nevertheless, this is the situation in which space operators today live. There are international guidelines for getting rid of old satellites and rockets from the Inter-Agency Space Debris Coordination Committee (IADC). The problem is that it can be difficult and expensive to eliminate old spacecraft, especially if the satellite or rocket was not designed for disposal. Furthermore, having satellites and rockets dispose of themselves will not work for objects that are already in orbit and are uncontrollable. Therefore, the work of CORDS, along with a robust Space Surveillance Network and the space situational awareness that it enables, are the cornerstones to ensuring a safe operational space environment for future generations.


{% extends "console/pages/traceability/traceability.html" %} {% load icon %} {% block section %}
Lab Test {{ request.GET.id }}
Manage information for the traceability system.
ID
Package ID
Informational Only
Test date
Released
Released at
Passed
Notes
Test type
Result
Back
Save
{% endblock section %} {% block console_js %} {% endblock console_js %}


Log in
Sign Up
Content Manager Log In
×
Email address:
Password:
Log In
Content Manager Sign Up
×
Name:
Email address:
Password:
Sign up
Message Center
Content manager
Add Projects to the Portfolio
Project Name:
Project url:
Project image file:
Repo url:
Submit


Mega Pixel is required.
Pixel Size is required.
Modes are required.
Aperture is required.
Sensor Size is required.
Zoom is required.
Features is required.
Front Camera Mega Pixels is required.
Front Camera Aperture is required.
Front Camera Modes are required.
Front Camera Features is required.
Video Recording is required.


simulation package¶
Submodules¶
simulation.behaviors module¶
-
simulation.behaviors.
drop_food
(agent=None, entities=None, environment=None)¶ Behavior that causes an agent to drop food. :param agent: The agent to perform the behavior. :param entities: A list of entities in the simulation. :param environment: The environment containing the agent. :return: The updated agent.
-
simulation.behaviors.
move_east
(agent=None, entities=None, environment=None)¶ Behavior that causes an agent to move east one unit. :param agent: The agent to perform the behavior. :param entities: A list of entities in the simulation. :param environment: The environment containing the agent. :return: The updated agent.
-
simulation.behaviors.
move_north
(agent=None, entities=None, environment=None)¶ Behavior that causes an agent to move north one unit. :param agent: The agent to perform the behavior. :param entities: A list of entities in the simulation. :param environment: The environment containing the agent. :return: The updated agent.
-
simulation.behaviors.
move_south
(agent=None, entities=None, environment=None)¶ Behavior that causes an agent to move south one unit. :param agent: The agent to perform the behavior. :param entities: A list of entities in the simulation. :param environment: The environment containing the agent. :return: The updated agent.
-
simulation.behaviors.
move_west
(agent=None, entities=None, environment=None)¶ Behavior that causes an agent to move west one unit. :param agent: The agent to perform the behavior. :param entities: A list of entities in the simulation. :param environment: The environment containing the agent. :return: The updated agent.
-
simulation.behaviors.
pickup_food
(agent=None, entities=None, environment=None)¶ Behavior that causes an agent to pickup food. :param agent: The agent to perform the behavior. :param entities: A list of entities in the simulation. :param environment: The environment containing the agent. :return: The updated agent.
-
simulation.behaviors.
random_walk
(agent=None, entities=None, environment=None)¶ Behavior that causes an agent to walk in a random direction for one time step. :param agent: The agent to perform the behavior. :param entities: A list of entities in the simulation. :param environment: The environment containing the agent. :return: The updated agent.
-
simulation.behaviors.
return_home
(agent=None, entities=None, environment=None)¶ Behavior (naive) that causes an agent to return to the nest. :param agent: The agent to perform the behavior. :param entities: A list of entities in the simulation. :param environment: The environment containing the agent. :return: The updated agent.
simulation.entity module¶
-
class
simulation.entity.
Entity
(position=(0, 0), size=(1, 1), direction=<Direction.North: (0, )>)¶ Bases:
object
A standard representation of an entity. All entities have the following attributes; a unique ID, a two-dimensional body on a two-dimensional grid, a direction indicating the orientiation of the entity, a behavior indicating the current behavior the entity is performing, a time counter used for managing simulation time, an inventory that can contain other entities, and a boolean indicating whether or not the entity is interactable.
-
eid
= <method-wrapper 'next' of itertools.count object>¶
-
to_csv
()¶ Returns a list of various entity attributes, to be used in a CSV file.
-
-
class
simulation.entity.
Food
(*args, **kwargs)¶ Bases:
simulation.entity.Entity
-
class
simulation.entity.
Nest
(*args, **kwargs)¶ Bases:
simulation.entity.Entity
-
class
simulation.entity.
SimAgent
(*args, **kwargs)¶ Bases:
simulation.entity.Entity
simulation.environment module¶
-
class
simulation.environment.
Environment
(position=(0, 20), size=(20, 20))¶ An environment is simply a large two-dimensional body that is used by the simulator to determine the boundries where agents can reside.
simulation.lookup module¶
simulation.preconditions module¶
-
simulation.preconditions.
holding_food
(agent=None, entities=None, environment=None)¶ Precondition testing if an agent is holding food. :param agent: The agent to test. :param entities: The entities associated with the simulation. :param environment: The environment to test against. :return: Boolean value indicating the result of the test.
-
simulation.preconditions.
on_border
(agent=None, entities=None, environment=None)¶ Precondition testing if an agent is along the border of the environment. :param agent: The agent to test. :param entities: The entities associated with the simulation. :param environment: The environment to test against. :return: Boolean value indicating the result of the test.
-
simulation.preconditions.
on_food
(agent=None, entities=None, environment=None)¶ Precondition testing if an agent is on top of food. :param agent: The agent to test. :param entities: The entities associated with the simulation. :param environment: The environment to test against. :return: Boolean value indicating the result of the test.
-
simulation.preconditions.
on_nest
(agent=None, entities=None, environment=None)¶ Precondition testing if an agent is on top of the nest. :param agent: The agent to test. :param entities: The entities associated with the simulation. :param environment: The environment to test against. :return: Boolean value indicating the result of the test.
simulation.simulation module¶
-
class
simulation.simulation.
Simulation
(duration=500, environment=None, entities=None, parse_tree=None, produce_output=True)¶ A simple simulator designed to be used with GESwarm (Grammatical Evolution Swarm). Parse trees containing a set of rules dictate the control flow of the simulation. Rules contain a list of preconditions, behaviors, and actions. Together these rules may lead to interesting behaviors.
For more information about GESwarm, see the article (http://dl.acm.org/citation.cfm?id=2463385).
-
execute
()¶ Executes the simulation, updating entities and saving their states at each time step.
-
process_rules
(agent)¶ Processes the rule set on a given entity. :param agent: The agent to evaluate with the rule set. :return: The entity, with possible updates.
-
save_state
(entity=None)¶ Saves the current state of all entities to the state archive. :param entity: The entity to add to the state archive
-
simulation.utils module¶
-
class
simulation.utils.
Direction
¶ Bases:
enum.Enum
Cardinal directions used to represent the orientation of entities on a 2D grid.
-
East
= <Direction.East: (1,)>¶
-
North
= <Direction.North: (0,)>¶
-
South
= <Direction.South: (2,)>¶
-
West
= <Direction.West: 3>¶
-
-
class
simulation.utils.
Point
(x=None, y=None)¶ A point identified by (x, y) coordinates.
-
as_tuple
()¶ Returns a tuple representation of the point.
-
clone
()¶ Clones the point, creating a new point at the same position.
-
distance_to
(point)¶ Calculates the distance from the given point to the current point. :param point: The point to compare to.
-
floatize
()¶ Converts the position to float values.
-
integerize
()¶ Converts the position to integer values.
-
length
()¶ Calculates the distance from the origin to the current point.
-
move
(position=None)¶ Moves the point to a new position. :param position: The new position of the point.
-
shift
(delta=None)¶ Shifts a point by some delta. :param delta: The amount in each direction to shift the point. Must be a list or tuple.
-
-
class
simulation.utils.
Rectangle
(top_left=None, bottom_right=None)¶ A rectangle identified by two points (top-left and bottom-right).
Coordinates are based on the Cartesian coordinate system.
y+ top top-left (x, y) +————-+ ^ | | | | left -+- right | | + - - - > x+ | | | origin bottom +————-+ bottom-right (x, y)
-
contains_point
(point)¶ Returns a boolean indicating if the given point is contained in the rectangle. :param point: The point to compare against the current rectangle.
-
contains_rectangle
(rectangle)¶ Returns a boolean indicating if the given rectangle is contained in the current rectangle. :param rectangle: The rectangle to compare agianst the current rectangle.
-
contract
(amount=1)¶ Contracts the bounds of the rectangle in all directions. :param amount: The amount of units to contract.
-
expand
(amount=1)¶ Expands the bounds of the rectangle in all directions. :param amount: The amount of units to expand.
-
set_points
(top_left=None, bottom_right=None)¶ Resets the rectangle coordinates. :param top_left: The new top-left point to assign to the rectangle. :param bottom_right: The new bottom-right point to assign to the rectangle.
-
-
simulation.utils.
generate_csv
(simulation=None)¶ Generates a CSV file from a simulation for further data analysis. :param simulation: The simulation containing a valid state archive.
-
simulation.utils.
generate_mongo
(simulation=None, host='localhost', port=27017)¶ Adds a simulation to a MongoDB instance for further data analysis. :param simulation: The simulation containing a valid state archive. :param host: The host to reach the MongoDB instance. :param port: The port to reach the MongoDB instance.


Home
Projects
Portfolio
Photos
Contact
Menu
nkProgressHUD
Hit the Menu button to see nkSideMenu in action!


Want to work out 'phase one' trade deal with US: Xi
by ReutersChina wants to work out an initial trade agreement with the United States and has been trying to avoid a trade war, but it is not afraid to retaliate when necessary, President Xi Jinping said on Friday.
"We want to work for a 'phase one' agreement on the basis of mutual respect and equality," Xi told representatives of an international forum, according to a pool report.
"When necessary we will fight back, but we have been working actively to try not to have a trade war. We did not initiate this trade war and this is not something we want."
Xi was at the Great Hall of the People responding to questions from representatives of the New Economy Forum organised by Bloomberg LP in Beijing.


Toggle navigation
Couche-Board
User Profile
Settings
Logout
Dashboards
Europe
North America
Overview
Toronto
Laval
United States
Sanford
Metrics
IT Support
Network Uptime
Finance
Human Resources
Projects
WAN Uptime
Overview
Aggregate WAN Performance
Tempe/Columbus
WAN Performance
WAN Performance
Sanford
WAN Performance
WAN Performance
Toronto
WAN Performance
WAN Performance
Laval
WAN Performance
WAN Performance


Preparation time
less than 30 mins
Cooking time
1 to 2 hours
Serves
Serves 8-10
Preheat the oven to 190C/375F/Gas 5.
Pinch off a quarter of the shortcrust pastry and set aside. Roll out the remaining pastry onto a lightly floured work surface to a 0.5cm/¼in thickness.
Carefully line a 23cm/9in springform cake tin with the rolled pastry, folding any excess pastry down the sides of the tin. Line the pastry case with baking parchment and fill with ceramic baking beans.
Transfer the pastry case to the oven and bake for 15 minutes. Remove the baking parchment and baking beans from the pastry case, then return the pastry case to the oven and continue to bake for a further 5-8 minutes, or until pale golden-brown. Remove from the oven and set aside to cool slightly. Trim off any excess pastry at this stage.
Sprinkle the semolina flour into the bottom of the pastry case (this will absorb any excess moisture.)
Meanwhile, boil the potatoes in a pan of salted water for 2-3 minutes. Reduce the heat until the water is simmering, then add the onions and simmer for a further 2-3 minutes, or until the potatoes and onions are just tender. Drain well.
Return the vegetables to the pan and add the double cream and flour. Season, to taste, with salt and freshly ground black pepper, then mix until the ingredients are well combined.
Arrange the apple slices in a layer at the bottom of the pastry case. Spoon over a third of the potato and onion mixture, then sprinkle over a third of the chopped sage and a third of the chopped ham and season, to taste, with salt, freshly ground black pepper and soft brown sugar. Repeat the process twice more.
When all of the filling ingredients have been used up, carefully pour over the cider, making sure that it does not fizz over the sides of the pie.
Roll the remaining pastry out onto a lightly floured work surface until the pastry is large enough in diameter to cover the top of the pie.
Brush the edges of the pastry case all over with a little beaten egg. Place the pastry crust on top, pinching the edges of the pastry together to seal. Using a sharp knife, cut a small cross in the centre of the pie crust to allow the steam to escape.
Transfer the pie to the oven and bake for one hour, or until the top of the pie is crisp and golden-brown and the filling mixture is bubbling. When the pie is cooked, remove it from the oven and set aside to cool before serving.


|
src/app/app.component.ts
|
component
|
AppComponent
|
0 %
(0/4)
|
|
src/app/app.utils.ts
|
function
|
timeDifference
|
0 %
(0/1)
|
|
src/app/app.utils.ts
|
function
|
timeDifferenceForDate
|
0 %
(0/1)
|
|
src/app/auth.service.ts
|
injectable
|
AuthService
|
0 %
(0/8)
|
|
src/app/component/create-link/create-link.component.ts
|
component
|
CreateLinkComponent
|
0 %
(0/8)
|
|
src/app/component/footer/footer.component.ts
|
component
|
FooterComponent
|
0 %
(0/3)
|
|
src/app/component/header/header.component.ts
|
component
|
HeaderComponent
|
0 %
(0/5)
|
|
src/app/component/link-item-list/link-item-list.component.ts
|
component
|
LinkItemListComponent
|
0 %
(0/16)
|
|
src/app/component/link-item/link-item.component.ts
|
component
|
LinkItemComponent
|
0 %
(0/8)
|
|
src/app/component/link-item/link-item.component.ts
|
class
|
LinkUpvoteEvent
|
0 %
(0/2)
|
|
src/app/component/login/login.component.ts
|
component
|
LoginComponent
|
0 %
(0/9)
|
|
src/app/component/main/main.component.ts
|
component
|
MainComponent
|
0 %
(0/15)
|
|
src/app/component/search/search.component.ts
|
component
|
SearchComponent
|
0 %
(0/12)
|
|
src/app/component/top/top.component.ts
|
component
|
TopComponent
|
0 %
(0/15)
|
|
src/app/constants.ts
|
variable
|
FG_LINKS_PER_PAGE
|
0 %
(0/1)
|
|
src/app/constants.ts
|
variable
|
GC_AUTH_TOKEN
|
0 %
(0/1)
|
|
src/app/constants.ts
|
variable
|
GC_USER_ID
|
0 %
(0/1)
|
|
src/app/graphql.ts
|
interface
|
AllLinkQueryResponse
|
0 %
(0/4)
|
|
src/app/graphql.ts
|
interface
|
AllLinksSearchQueryResponse
|
0 %
(0/4)
|
|
src/app/graphql.ts
|
interface
|
CreateLinkMutationResponse
|
0 %
(0/4)
|
|
src/app/graphql.ts
|
interface
|
CreateUserMutationResponse
|
0 %
(0/4)
|
|
src/app/graphql.ts
|
interface
|
CreateVoteMutationResponse
|
0 %
(0/3)
|
|
src/app/graphql.ts
|
interface
|
NewLinkSubcriptionResponse
|
0 %
(0/2)
|
|
src/app/graphql.ts
|
interface
|
NewVoteSubcriptionResponse
|
0 %
(0/2)
|
|
src/app/graphql.ts
|
interface
|
SigninUserMutationResponse
|
0 %
(0/3)
|
|
src/app/graphql.ts
|
variable
|
ALL_LINKS_QUERY
|
0 %
(0/1)
|
|
src/app/graphql.ts
|
variable
|
ALL_LINKS_SEARCH_QUERY
|
0 %
(0/1)
|
|
src/app/graphql.ts
|
variable
|
CREATE_LINK_MUTATION
|
0 %
(0/1)
|
|
src/app/graphql.ts
|
variable
|
CREATE_USER_MUTATION
|
0 %
(0/1)
|
|
src/app/graphql.ts
|
variable
|
CREATE_VOTE_MUTATION
|
0 %
(0/1)
|
|
src/app/graphql.ts
|
variable
|
NEW_LINKS_SUBSCRIPTION
|
0 %
(0/1)
|
|
src/app/graphql.ts
|
variable
|
NEW_VOTES_SUBSCRIPTION
|
0 %
(0/1)
|
|
src/app/graphql.ts
|
variable
|
SIGNIN_USER_MUTATION
|
0 %
(0/1)
|
|
src/app/types.ts
|
class
|
Comment
|
100 %
(8/8)
|
|
src/app/types.ts
|
class
|
CommentVote
|
100 %
(3/3)
|
|
src/app/types.ts
|
class
|
Link
|
100 %
(8/8)
|
|
src/app/types.ts
|
class
|
ManagedByGraphCool
|
100 %
(4/4)
|
|
src/app/types.ts
|
class
|
User
|
100 %
(7/7)
|
|
src/app/types.ts
|
class
|
Vote
|
100 %
(3/3)
|
|
src/app/types.ts
|
interface
|
CreatedAt
|
50 %
(1/2)
|
|
src/app/types.ts
|
interface
|
UniqueId
|
50 %
(1/2)
|
|
src/app/types.ts
|
interface
|
UpdatedAt
|
50 %
(1/2)
|
|
src/environments/environment.prod.ts
|
variable
|
environment
|
0 %
(0/1)
|
|
src/environments/environment.ts
|
variable
|
environment
|
0 %
(0/1)
|


Multi Client Conference Call example
This advanced example shows how a complete conferencing application can be built using
Conference
,
ConferenceSwitcher
,
ThumbnailBroadcaster
and
MediaBroadcaster
.
Active speaker
Microphone: On
Camera: On


search
Tidy Blog
it's easier than you think
Home
Archives
Example
Gallery
Design
Categories
Pop Culture
Rants & Raves
Musings
Coding
Fiction
Christianity
Sceptre of Chaos
After all these years, no one could have guessed that it would be in mouth of a whale.
Contact
e-mail
message
Gallery 1
By Aaron Ganschow, December 30, 2006


Bane
Tips
- Enfeeble is outrageous early game. It's tempting to spend a majority of your mana constantly Brain
Sapping, but it can be more useful to completely stop your lane enemy from getting a single last hit
rather than forcing them to use and buy regen.
- No one seems to know how Nightmare works, so let me learn you something. For the first second of the
Nightmare the unit is completely invulnerable, similar to Naga sleep. If anyone right clicks this hero
after the first second, the Nightmare will be transferred to them. However, if any damaging spell is
used on the hero, they'll instantly wake up, take the damage, and the Nightmare will not be transferred.
- You can use that first second of complete immunity on Nightmare to protect yourself or an ally from
taking any damage.
- Nightmare can be used to deny allies or yourself since it applies a very small DoT.
- You can dispel Nightmares by using the Nightmare End skill.
- Like all other heroes with channeled ults, you can cast Shadow Amulet/Shadow Blade/Glimmer Cape to go
invis during the channel.
 If they're Nightmared out of position, take it off them and slowly
migrate the Nightmare to safer territory. To transfer a Nightmare, attempt to deny your Nightmare'd
ally.
- Use summons to take the Nightmare off allies or yourself when possible. Beastmaster boar, Lycan wolf,
Brood spiderling, or Prophet treant, even illusions are all great sacrificial lambs to remove the
Nightmare.
- Fiend's Grip is no joke as a disable. Save stuns and silences to break the channel on Bane's ult.
- Or save strong Dispels. Things like Aphotic Shield, Press the Attack, and False Promise can purge Bane's
ult off your allies.


associates a given url via its name but can be customized, determines if it is the default view for a given area, and supplies Views (HTML fragments) that are associated to html container elements. More on ViewContainers can be found here.
Required.
associates to HTML fragment by name but can be customized, determines cache strategy for the HTML fragment, and what target content element will recieve the HTML fragment. More on Views can be found here.
Optional.
associates HTML Elements to a WebApi Controller. Inheritance allows for customization. Utilizes GET, POST, PUT, DELETE methods. Binds data returned from GET method to the associated HTML Element. More on Binders can be found here.
Required (normally declared in HTML Fragment).
All incoming data from GET is stored in this base object. Inheritance allows for customization. More on DataObjects can be found here.
Optional.