class RuleList
Properties
| $closures | ||
| $rules |
Methods
|
__construct(User $User)
|
||
| Void |
__call(string $method, array $arguments = array())
Handle execution of the different types of methods |
|
| boolean |
isLoggedIn()
Is user logged in system |
|
| boolean |
isInGroup(string $groupname)
Checks if user is in a group |
|
| boolean |
isNotInGroup(string $groupname)
Check user is not in a group |
|
| boolean |
hasUserName(string $username)
Determine if a username or email is used for application login. |
|
| boolean |
hasEmail(string $email)
Check if email field equals specified email |
|
| boolean |
hasFieldValue(string $field, string $value)
Check db field for specific value |
Details
at line 12
public
__construct(User $User)
at line 27
public Void
__call(string $method, array $arguments = array())
Handle execution of the different types of methods
at line 54
public boolean
isLoggedIn()
Is user logged in system
at line 65
public boolean
isInGroup(string $groupname)
Checks if user is in a group
at line 85
public boolean
isNotInGroup(string $groupname)
Check user is not in a group
at line 106
public boolean
hasUserName(string $username)
Determine if a username or email is used for application login.
Then checks if username/email equals specified value
at line 120
public boolean
hasEmail(string $email)
Check if email field equals specified email
at line 132
public boolean
hasFieldValue(string $field, string $value)
Check db field for specific value


Filters can be accessed via the View menu.
A "filter" is a criteria (or set of criteria) that an entry either
matches or doesn't match. Password Safe allows you to define filters,
and display only those entries that match a
given filter. You can define a filter for a one-time query, or you can
define several filters, naming them and store them persistently, for
repeated use. Filters may be either stored along with the database, or
externally, for sharing the same filter across several databases.
To define a new filter, select the "View → Filter → New/Edit Filter" menu entry. The following dialog box will be displayed:
As you can see, each Filter consists of one or more rows,
where each row defines a criteria on a given field.
The conditions defined in each row can be either "and" or "or" the
condition defined in the previous row. This allows you to define the
following kinds of filters:
As you can see, the filters can be arbitrarily complex.
The columns in the Filter table are as follows:
Once you've defined a filter, clicking on 'Apply' will apply the filter on the entries in the database, while leaving the Set Filter dialog box open. This is useful for fixing and refining the filter based on the results. Clicking on 'OK' will also apply the filter, but will close the Set Filter dialog box.
When a filter is active, the number of entries shown compared to the total number in the database is shown in the Status Bar and a small red and white box () appears in the far right of that bar. In addition, the displayed entries are shown in red.
Set/Edit Filter is a good way to work with filters for a one-time task. If, however, you find that you have several filters that you wish to use repeatedly, then you can store them and manage them effectively via the "View → Filter → Manage..." dialog box.
The Manage Filters dialog box has two tables. The upper table lists the filters, and the lower table displays the contents of the currently selected filter.
Filters can be stored either as part of the current database, or externally, as XML files. Storing filters externally is a good way to share filters across databases, whereas storing them as part of the database ensures that potentially sensitive information in the filters' definitions is protected.


Akasia MS
Welcome,
User Name
General
Home
Create Product Listings
Edit Product Listings
View Promotional Content
Create Promo Content
User name
Profile
Log Out
View Product Listings
Product Image
Product Name
Product Description
Product Pricing
Edit


Susan Granger's review of "ANTZ" (DreamWorks: SKG)
"Antz" is only the second fully computer-animated feature ever to be produced; "Toy Story" was the first. And the clever imagery of "Antz" is awesome! The entire film is presented from an ant's prospective. The story revolves around a neurotic worker ant (Woody Allen) who as "the middle child in a family of five million" suffers from feelings of insignificance. "But you are insignificant," his therapist tells him. Nevertheless, he falls in love with a beautiful princess (Sharon Stone) who asks him to dance in a bar one night when she sneaks away from the Queen (Anne Bancroft) and flaunts the social caste system. Eager to see her again, he enlists the help of his best friend, a soldier ant (Sylvester Stallone), and - thanks to an amazing twist of fate - foils her fiance, the ambitious, maniacal General Mandible (Gene Hackman), and his military henchman (Christopher Walken) who secretly plan to destroy the ant colony. En route to becoming a hero, he builds a philosophical revolution and social rebellion on the final words of a fallen comrade: "Don't follow orders all your life!" The intelligent screenplay by Todd Alcott, Chris Weitz and Paul Weitz revolves around an individual asserting himself against overwhelming conformity, a theme that will probably be too adult for very young children in the audience. On the Granger Movie Gauge of 1 to 10, "Antz" is an amusing, inventive 8. Like "Deep Impact" and "Armageddon," which had the same meteor-careening towards-earth concept, "Antz" and "A Bug's Life," due for release in a few weeks, share the same insect-oriented story line. Which will emerge with the bigger box-office gross? Who knows?
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


class studs::Gpio
sys::Obj studs::Gpio
Gpio provides high level access to GPIO pins through the Linux /sys/class/gpio
interface.
See Gpio chapter for details.
- close
-
Void close()
Close this port.
- listen
-
Void listen(Str mode, Duration? timeout, |Int| callback)
Register an interrupt handler to listen for GPIO output changes. The
mode
should be one of the strings "rising", "falling" or "both" to indicate which edge(s) the ISR is to be triggered on. Invoke the given callback function when a change occurs. This method will block listening untilclose
is called.If
timeout
is non-null, thencallback
will be invoked at every duration oftimeout
regardless of whether a state change occurred. Iftimeout
is null, this method blocks until a state change is detected.Note that after calling
listen
, you will receive an initial callback with the state of the pin. This prevents the race condition between getting the initial state of the pin and turning on interrupts. - open
-
const static Gpio open(Int pin, Str dir)
Open a GPIO port with given pin and direction, where
dir
is"in"
or"out"
. - read
-
Int read()
Read the current value of the pin.
- write
-
Write the given value to the GPIO. The GPIO should be configured as an output. Valid values are
0
for logic low, or1
for logic high. Other non-zero values will result in logic high being output. Returns this.


{% include "console/components/placeholders/table_placeholder.html" with
height='200px'
image='console/images/illustrations/outline/lab.svg'
message='No strains were found for your active license.'
title='No Strains Found'
url='/traceability/strains/strains?new=true'
only
%}


--- layout: portfolio title: ! 'INTERACTIVE: Search Savannah-Chatham''s Restaurant Inspection Database' date: 2012-11-12 21:59:49.000000000 +05:30 categories: [] tags: [] status: publish type: portfolio published: true meta: _edit_last: '1' _thumbnail_id: '3321' portfolio-image: '' seo_follow: 'false' seo_noindex: 'false' pvc_views: '279' _jetpack_related_posts_cache: a:1:{s:32:"8aa64d0d47aab35d63f6cd22cecd8e43";a:2:{s:7:"expires";i:1431165089;s:7:"payload";a:3:{i:0;a:1:{s:2:"id";i:2346;}i:1;a:1:{s:2:"id";i:3811;}i:2;a:1:{s:2:"id";i:3912;}}}} author: login: cvlewis email<EMAIL_ADDRESS>display_name: Carl V. Lewis first_name: Carl V. last_name: Lewis excerpt: !ruby/object:Hpricot::Doc options: {} ---
I worked with the Chatham County Health Department, which serves a population of more than 420,000 residents, to sync their restaurant inspection scores into an XML feed that populates an interactive map produced with CartoDB + Leaflet.js that includes filterable, color-coded markers for each score.


Palm fonts
Fonts on the palm pilot are rather limited. Each strike is stored in its own record of a database with no name or indication of whether it is connected to any other font (ie. there is no concept of a family of fonts. Each strike is alone).
On old palm pilots the font data structure stored a strike for a single screen resolution. On newer pilots there is a different data structure which can store multiple strikes for several screen resolutions (called "density" on the palm).
The new style font is unusable (causes crashes) on old palms. I am told that the old style font causes crashes on new systems.
I'm told that at the moment new systems are all the same (high) density (so there is currently no need for a multi-density font -- what is needed is a single (high) density font in a multi-density wrapper).
I am told that to be portable an application currently needs to supply an old style low-res font for old style palms, and a new-style font containing just a high-res strike.
The palm OS reference documents the following densities:
- single
- one and a half
- double
- triple
- quadruple
I'm told that only single and double are actually used. FontForge does not support the 1.5 density font.
If you want to generate an old-style (low-res) palm font you should specify a single strike size in the Generate Font bitmap sizes field.
If you specify two or more strike sizes in the bitmap sizes field then all sizes must be a small integer multiple (1,2,3,4) of the smallest strike. A dlg will come up asking whether you want these strikes:
- All within a multi-density font
- All (except the smallest) within a multi-density font -- FontForge calls this a high density font
- An old style low-res font containing the smallest strike in the first record of the database file and a new style multi density font containing all strikes within the second record of the generated file.
- An old style low-res font containing the smallest strike in the first record of the database file and a new style multi density font containing all strikes except the smallest within the second record of the generated file.
I believe the last format to be the most useful. This is the default, and is the format used for the script Generate command.
Note: You must include the low-density strike. This strike defines the metrics for all the others. However you may generate a font which does not include this strike (the second choice in the list above).


This npm package lets you easily perform requests to the Instagram Graph API, aiming to reduce the integration time and allowing you to easily obtain the information you want through code and to publish your media without hassle.
This package is made by independent contributors and is in no way officially related to or supported by Instagram/Facebook.
You can find what changed in each version by checking the Changelog.
You can now use this lib to publish videos and photos to your page! Check out the Publishing media section.
Simply run npm install instagram-graph-api
.
This lib supports making requests to most of the Instagram Graph API resources. It does not yet cover:
Mentions
, Mentioned Comments
and Mentioned Media
in the IG User
node.As it currently stands, this lib allows you to get a lot of information about your page and media, including basic information and insights. It also allows you to create and publish media (photos and videos) as well as to create and reply to comments, delete them and hide them. For now, this lib does not contain any complex logic. It simply models requests to the Instagram Graph API and gives you an easy way to execute them.
You can always check the typedoc documentation if you are having doubts.
This lib was built with a simple mindset: creating requests should be as straightforward as possible. With that in mind, to start pumping out requests left and right, just create a client and use it to build requests for you:
import { Client, GetPageInfoRequest, GetPageMediaRequest } from 'instagram-graph-api';
let client: Client = new Client(ACCESS_TOKEN, PAGE_ID);
let pageInfoRequest: GetPageInfoRequest = client.newGetPageInfoRequest();
let pageMediaRequest: GetPageMediaRequest = client.newGetPageMediaRequest();
[...]
You can also build each request yourself, and that won't be hard at all. You'll just have to pass the Access Token and the Page ID to each new request. Here's an example:
let request: GetPageInfoRequest = new GetPageInfoRequest(ACCESS_TOKEN, PAGE_ID);
After you build your request object, you can do one of two things:
You can execute the request with the built in method that returns a parsed response. This will use Axios.
import { GetPageInfoRequest, GetPageInfoResponse } from 'instagram-graph-api';
let request: GetPageInfoRequest = new GetPageInfoRequest(ACCESS_TOKEN, PAGE_ID);
request.execute().then((response: GetPageInfoResponse) => {
console.log(`The page ${response.getName()} has ${response.getFollowers()} followers.`);
});
Alternatively, you can extract the request config to modify it, execute it and parse the response as you see fit.
import { GetPageInfoRequest, RequestConfig } from 'instagram-graph-api';
let request: GetPageInfoRequest = new GetPageInfoRequest(ACCESS_TOKEN, PAGE_ID);
let config: RequestConfig = request.config();
[...]
Publishing Media through the Instagram Graph API, and conversely through this lib, follows these steps:
PostPagePhotoMediaRequest
or the PostPageVideoMediaRequest
).FINISHED
(check the status through the GetContainerRequest
).PostPublishMediaRequest
).For more info on this flow, refer to the Content Publishing documentation.
You can give paging and range options to the requests, as supported by certain resources on the Instagram Graph API. (check the reference documentation to see which ones do). For example, the Get Page Media request supports paging, here's a naive example of how to use:
import { GetPageMediaRequest, GetPageMediaResponse, PageOption } from 'instagram-graph-api';
let request: GetPageMediaRequest = new GetPageMediaRequest(ACCESS_TOKEN, PAGE_ID);
request.execute().then((response: GetPageMediaResponse) => {
let nextPage: string | undefined = response.getPaging().getAfter();
if (nextPage) {
request.withPaging({ option: PageOption.AFTER, value: nextPage })
.execute([...]); // you can reuse the old request 😎
} else {
console.log('🛑🛑🛑');
}
});
Similarly, you can add a range option which the Get Insights requests use, like so:
import { GetPageLifetimeInsightsRequest, GetPageLifetimeInsightsRequest } from 'instagram-graph-api';
const request: GetPageLifetimeInsightsRequest = new GetPageLifetimeInsightsRequest(ACCESS_TOKEN, PAGE_ID)
.withRange(new Date('2021-01-01'), new Date('2021-01-15'))
request.execute().then((response: GetPageLifetimeInsightsResponse) => {
[...]
});
Finally, you can add a limit option that will limit the amount of objects retrieved with that request. For example:
import { GetPageMediaRequest, GetPageMediaResponse } from 'instagram-graph-api';
const request: GetPageMediaRequest = new GetPageMediaRequest(ACCESS_TOKEN, PAGE_ID).withLimit(5);
request.execute().then((response: GetPageMediaResponse) => {
console.log(response.getData().length); // This will be < 5
});
To use this lib you'll require an Access Token to Facebook's Graph API (over which the Instagram Graph API is built), which in turn will require a couple of other things. Check out the before you start on the getting started documentation.
You can follow Facebook's documentation on how to generate an access token to grab a token for yourself. You'll most likely want a Page Token. Check which permissions you'll need for the request you want to perform on the Instagram Graph API Reference.
You can also extend your token's validity to avoid having to generate a new one once in a while. Once again, Facebook's documentation on how to generate long-lived tokens will come in handy. Long-lived Page Tokens do not have an expiration date, making them ideal for most use cases of this lib.
For some use cases, for example when you want to build a tool for your own pages, it's fine to go through the above steps to generate a long-lived token. For other uses cases, such as when you have an app that will make request on behalf of users, it becomes a bother.
This lib provides a few requests to get you around that:
First, you still need to get your hands on an initial access token. You can get it via a facebook login prompt for users of your app.
When you have a user token, you can build and execute a GetUserLongLivedTokenRequest
:
import { GetUserLongLivedTokenRequest, GetUserLongLivedTokenResponse } from 'instagram-graph-api';
// You can get your APP_ID and APP_SECRET_ID through the Facebook Developers website.
const request: GetUserLongLivedTokenRequest = new GetUserLongLivedTokenRequest(
APP_ID,
APP_SECRET_ID,
USER_ACCESS_TOKEN
);
request.execute().then((response: GetUserLongLivedTokenResponse) => {
const longLivedToken: string = response.getLongLivedToken();
});
All the requests to a page will require the use of a Page ID. To find out what the ID of a page is, you can:
Instagram Page ID
on a search engine)GetLinkedInstagramAccountRequest
, as such:import { GetLinkedInstagramAccountRequest, GetLinkedInstagramAccountResponse } from 'instagram-graph-api';
const request: GetLinkedInstagramAccountRequest = new GetLinkedInstagramAccountRequest(ACCESS_TOKEN, FACEBOOK_PAGE_ID);
request.execute().then((response: GetLinkedInstagramAccountResponse) => {
const pageId: string = response.getInstagramPageId();
});
FACEBOOK_PAGE_ID
through the Facebook Developers portal but you can also get it through this lib:import { GetAuthorizedFacebookPagesRequest, GetAuthorizedFacebookPagesResponse } from 'instagram-graph-api';
const request: GetAuthorizedFacebookPagesRequest = new GetAuthorizedFacebookPagesRequest(ACCESS_TOKEN);
request.execute().then((response: GetAuthorizedFacebookPagesResponse) => {
const firstFacebookPage: string = pagesResponse.getAuthorizedFacebookPages()[0].id;
});
Releases of this lib should be very incremental. When a new resource is supported a release will be issued soon after without waiting to pile up new features to do big releases.
Generated using TypeDoc


Notebook name: panoramic_stitching.ipynb
The main goal of this notebook is to stitch a set of images as shown here.
This notebook takes a set of folders as input, such as the one created by the group_images_by_cycle_for_panoramic_stitching. You need to manually stitch the images of one of those folders and then the notebook will apply the same settings to all the other folders by matching motor_position/pixel_offset.
By default this notebook is defined to look for the 2 motor parameters called MotLiftTable.RBV and MotLongAxis.RBV. (contact Jean Bilheux to customize the notebook to other motor names).
If you need help accessing this notebook, check the How To > Start the python notebooks tutorial.
Need help using the IPTS selector?
Using the folder selector tool, select all the folders you want to work on. Each folder must contain the TIFF images of a single panoramic stitching (all the images of that folder will be stitched together).
Need help using the File Selector?
Ths UI has been designed to help you stitch all the images of the first, by default, folder selected. Once this is done, you will click the Automatic stitch all other folders using those parameters button to stitch all the other folders/images. Then you can export the panoramic images created as TIFF.
The top left corner image, first image/file from the list, is fixed. This is the reason why selecting the first raw in the table will display a blue border around the image.
Any other row selected will display a red border around the image selected. You have three options to move those images.
Using the Mouse
To activate the mouse mode, click the From -> To pointer switch at the top of the UI. This will brings a couple of target labels FROM and TO within the panoramic view. Simply move the FROM target within the image selected region, inside the red box, to a feature you recognized in the previous image stitched. Move the TO target to that same feature and then click Move image of active ro FROM -> TO to reposition that image.
the Move image of active row FROM ->TO button will be enabled only when the FROM target is within the image
selected (surrounded by a red border).
The UI provides an horizontal and vertical profiler tool to help in the alignment of 2 images. Feel free to move around the horizontal and vertical profilers, resize them in length or width as illustrated here. The BLACK plot shows the profile from the reference image, the RED plot shows the profile of the working image.
Using manual offset buttons
Using those buttons, you can move the working image by 1 or 5pixels at a time horizontally or vertically.
The latest version of the notebook provides a remote control that will speed up the alignment process. You can easily jump to the previous or next image to work on, and you can bring all the alignment tools (FROM and TO cursors, horizontal and vertical profilers) into the current window view. This allows you to use full benefit of your monitor size by only working on the image view.
Using table
You can also directly entered the xoffset or yoffset of any image, except the first one, within the table. Double click the field you want to edit to change the x or y offset.
A right click inside the table allows you to save, load or reset the content of the table
Once you have completely aligned all first images of the current folders, you can repeat the settings on all the other folders by clicking the Automatically stitch all other folders using those offset parameters button. The program will calculate for each image the coefficient x and y offset versus motor position and then will apply that coefficient on the new images. This rule of 3 allows a perfect horizontal and vertical positions of the images. Once it’s done, simply browse through the folders to check the alignment of all the images.
You need first to select the output location where the image will be created. A folder will be created based on the name of the input folders parent directory.
The final images are not created at this stage and only the position of each image is set. The final step, export will perform the stitching using the algorithm you will select.
Click the bottom right button to export all the panoramic images.
A progress bar at the bottom will show you that the notebook is calculating the result of using various stitching algorithms on the current working set of images. Once it’s done, a dialog box will display those images side by side to allow you to pick the best one for your data set.
Feel free to zoom/pan within any of the images to compare the results
The 3 algorithms available for now are:
Use minimum counts will take the pixel of lower intensity in the overlap region
Use maximum counts will take the pixel of higher intensity
Use mean counts will take the average of the two pixels
Once you click OK, you will need to select where your want to create the output folder. The name of the folder that the program is going to create will be based on the input folder name and the name of the algorithm selected.
For example:


Preparation time
less than 30 mins
Cooking time
no cooking required
Serves
Serves 2
For the mayonnaise, place the egg yolks, vinegar, mustard and salt into a food processor.
Blend to combine, then, with the motor still running, gradually add the rape seed oil. Continue until all the oil has been added and the mayonnaise has thickened.
Season with black pepper and a little more salt if necessary, to taste.
For the dressing, place the mayonnaise and all the other dressing ingredients into a bowl and mix to combine.
Add the lobster and stir gently.
To serve, split the rolls in half and spoon the lobster salad inside it. Top with mustard cress and serve.


?NEW
YORK
BOTANICAL
GARDEN
01500597
6
7
8
9
10
-
VT
v
The
New
York
copyright
reserved
botanical
Garden
&
/
Examined
(or
NORTH
AMERICAN
FLORA
Determined
by
A.
C.
Smith,
193
.
Grilibertia
cuneifolia
(Wright)March.
01500597
Legend -
Level of confidence that token is an accurately-transcribed word
extremely low
very low
low
undetermined
medium
high
very high


Rocketseat Community
Content
Videos
Email
Phone
Bianca Amorim
Rocketseat
student
Full-Stack developer, focused on learning and sharing knowledge.
Learning:
HTML
CSS
Java Script
Node.js


{% include favicon.html %}
VISIT
GENERAL INFO
ABOUT US
GARDEN MAPS
GIFT SHOP
FREE DAYS
& EVENTS
GARDEN TOURS
PLAY TALEBLAZER
POETRY IN
THE GARDEN
GARDEN JOURNAL BLOG
PLANTS & GARDENS
PLANT COLLECTIONS
INTERACTIVE
PLANT MAP
PLANT CONSERVATION
RESEARCH
GARDENING INFORMATION
WATER CONSERVATION GARDEN
MEDICINAL GARDEN
WHAT'S BLOOMING
NOW BLOG
EVENTS
OUTDOOR CONCERT SERIES
SPRING EVENTS
SUMMER EVENTS
FALL EVENTS
WINTER EVENTS
ART EXHIBITS
EVENT CALENDAR
EDUCATION
KIDS CLASSES
CLASSES & WORKSHOPS
FOR ADULTS
SUMMER CAMP
LIL' BUDS CLASSES
LECTURES
TEACHERS & STUDENTS
GET INVOLVED
VOLUNTEER
GIVE
MEMBERSHIP
MEMORIALS &
TRIBUTES
WAYS TO GIVE
CORPORATE
SPONSORSHIP
EMPLOYMENT
PRIVATE EVENTS
WEDDINGS
& RECEPTIONS
CORPORATE EVENTS
& PRIVATE PARTIES
RENTAL SITES
RENTAL AVAILABILITY
RENTAL PRICING
& CATERING
PHOTO POLICY
GIVE
JOIN
VOLUNTEER
Facebook
Twitter
Pinterest
Youtube
Instagram


Richard L. Baskerville
Referenced by both Stacey and Craft et. al, suggesting an intersection between IS and interaction design through action research practice.


The Department of CSE organizes a technical symposium called ARCANE to enrich the students learning. The IEEE student branch and Computer Society of India ֠Student chapter provide opportunities and helps to promote organizational and leadership bodies regularly organize seminars for students on topics of current importance, technical quiz, software design contest, etc.
Get Started!Master your arts of making an Android app.
To exhibit your talents of programming.
Have an idea. Don't worry. Prepare it as PPT and Rock the floor.
Just come and have fun with your friends in our campus.
Ready to participate in our events. That's great! Kindly register online. Any queries give us a call or send us an email and we will get back to you as soon as possible!


View High Scores
Time:
60
The Ultimate JavaScript Quiz!
Start Quiz
Submit
Questions
Question
Question 1
Question 2
Question 3
Question 4


This package contains Broker@Cloud components for modelling service specifications and test suites, and for modelling expressions in the formal expression language. It is part of the Broker@Cloud Verification and Testing Tool Suite, v1.0, © Anthony J H Simons and Raluca Lefticaru, 2015. Main web site: http://staffwww.dcs.shef.ac.uk/people/A.Simons/broker/.
This package contains Broker@Cloud components for modelling service
specifications and test suites. These classes constitute the metamodel for
the tool suite. This package should always be used by the JAST marshalling
and unmarshalling tools ASTReader
and ASTWriter
,
which must be told where to find the Java mappings for parsed XML data.
The metamodel classes are designed with suitable API conventions for
marshalling and umarshalling with JAST, which has the advantage that it
requires no special annotations on classes to be marshalled as XML.
The entire metamodel is designed according to object-oriented principles of
classification, with inheritance of common attributes and methods. The
metamodel hierarchy is rooted in the type Element
, which has
Named
as one of its more important subtypes, since many of the
model components are named; and otherwise leads to an elaboration of concepts
including expressions consisting of functions, predicates, parameters and
assignments; finite state machines, with their alphabets, states and
transitions; or operations with their inputs, outputs and internal branches;
or test suites with their test sequences and individual test steps.
The type Service
is the metamodel type standing for a complete
service specification. It encloses the two types Protocol
and
Machine
, respectively denoting the operation protocol and the
finite-state machine of the service. The former describes each operation of
the service's API in some detail, in terms of its expected inputs, outputs,
preconditions and effects. The latter describes the high-level responsive
modes of the service API in which particular operations are available, or
disabled.
The Protocol
node contains a Memory
node, describing
Constant
and Variable
parameters used later in the
specification. The constants refer to ground values, or specific test values.
The variables refer to the fine-grained memory states of the service. The
Protocol
node also contains a set of Operation
nodes, each describing one service operation with its Input
,
Output
and Failure
parameters. Every
Operation
consists of one or more Scenario
nodes,
denoting the different branching paths through the operation. Each
Scenario
is usually triggered by a Condition
and may
optionally have an Effect
, updating memory variables.
The Machine
node contains several State
nodes
denoting the high-level responsive modes, or states of the service, and each
of these contains Transition
nodes that exit from that source
state, and enter another named target state. Each Transition
has a label that corresponds exactly to the name of one Scenario
from an Operation
. This links the two parts of a specification.
Where no exit-transition exists from a given state, this is understood to mean
that the given request is ignored in that state.
The type TestSuite
is the metamodel type standing for a complete
generated test suite. It contains an ordered set of TestSequence
nodes, representing the tests to be executed on some service, in that order,
so that all test failures are caught at the earliest point. The testing
method assumes that the service starts from a clean state (after creation, or
after a reset). Each TestSequence
consists of a sequence of
TestStep
steps, each naming an Operation
to invoke,
the Input
parameters to supply and the Output
(or
Failure
) parameters to expect. The initial test steps in a test
sequence are to set up a unique memory-state, and the final test step is to be
verified, in the same way that a JUnit test author would write assertions to
verify outcomes.
The TestSuite
node is designed to receive a visitor (in the
sense of the Visitor Design Pattern) of the interface type
Grounding
. Specific implementations of this interface will
generate platform-specific code from the technology-neutral test suite.
Several example groundings are given in another package, as illustrations of
how to ground to Java, SOAP and REST, but it is expected that platform and
service providers will define their own groundings to match the particular
platform technology used.
An important part of the metamodel is the Expression Language, a
mathematical language of values, sets, lists, maps, functions and predicates,
that is used by Condition
and Effect
nodes to
express calculation and computation. The language has a similar expressive
power to the Z Formal Notation, but without quantifiers. The type
Expression
is the ancestor of Function
, denoting a
functional expression with operands, and Parameter
, denoting a
constant, variable, input or output.
Important kinds of Function
include: Arithmetic
,
modelling all kinds of arithmetic, Projection
, modelling pairs
and projections, Manipulation
, modelling all set-theoretic
manipulations on sets, lists and maps, Predicate
, the abstract
ancestor of Comparison
, Membership
and
Proposition
predicates, and Assignment
, the only
expression which causes a side-effect. All other constructions in the
language have pure-functional semantics, in that they do not alter variable
states.
The varieties of Parameter
include: Constant
,
denoting constants, Variable
, denoting global variables,
Input
, Output
and Failure
, denoting
respectively the inputs, outputs and exceptions passed as values to and
from operations. All parameters must be declared before usage in a model
specification; and the model construction API seeks to resolve all uses of
parameters, as the specification is built. A SemanticError
indicates that something is amiss in a model that might otherwise be parsed
as syntactically correct.


About this site:
Created by Gordon Lindsay for Web Dev I Spring 2020 Project
V1 CHANGE LOG 5/2/2020
- Created index.html
- Created about.html
- Created stone.html
- Created metals.html
- Created styles.css
- Added HTML coding to create page layouts
- Added CSS coding to styles.css
- Added content to about.html
V2 CHANGE LOG 5/16/2020
- Created jewelry.html
- Created reset_styles.css
- Created wing.html
- Added content to stone.html
- Added content to metals.html
- Added content to jewelry.html
- Added HTML coding to splash.html
- Added HTML coding to jewelry.html
- Added CSS coding to styles.css
- Added CSS coding to reset_styles.css
- Added V2 changes to about.html
V3 CHANGE LOG 5/30/2020
V4 CHANGE LOG 6//2020


JNU protest: Shiv Sena takes students' side after azadi from BJP
A senior Shiv Sena leader says the protests by JNU students are valid as long as they're peaceful. Surprised? You have some catching up to do. Read on.
HIGHLIGHTS
- Sena's Priyanka Chaturvedi slams police action against students
- Says fairness of protesting fee hike debatable
- Shiv Sena, BJP fell out after recent Maharashtra state election
What does the Shiv Sena, until recently a coalition partner in the Modi government, make of the ongoing protests at Jawaharlal Nehru University?
One of its highest-ranking members, deputy leader Priyanka Chaturvedi, thinks they're valid as long as they're peaceful.
What about the fact that they're trying get a hostel fee hike rolled back?
In a tweet she posted on Wednesday, Chaturvedi said the fairness of the motive was "debatable", but "for the Delhi police to resort to violent lathi charge to stop the protests is sign of a system that is unable to handle dissent".
Ouch.
Until recently, the Shiv Sena and the BJP were partners in government, both in Maharashtra and at the Centre. They even won an October state election together.
But they disagreed on the idea of sharing the chief minister's job using a rotation policy, and fell out bitterly. Arvind Sawant, the Shiv Sena minister in Prime Minister Narendra Modi's cabinet, resigned.
Maharashtra is now under President's Rule. But the Shiv Sena, which is working on a prospective alliance with the Congress and the NCP, says it expects to form a government by early December.


#TRANSLATE tvchat_title SMS TV chat #TRANSLATE tvchat_head TV chat management #TEMPLATE tvchat_menu Manage messages - Ban list - Manage chats #TEMPLATE tvcc_manage
Click on lamp icon to quick change status.
| #%id | %active | %sn %patshow |
[edit][clone] %name Default SMS reply: %reply_ok Help SMS reply: %reply_help Chat is closed reply: %reply_closed |
%login / %passwd %num_chat SMS Count |
| Status | Code | Phone | Received | Message | Approval |
|---|
| Code | Phone | Banned | Till | Message | Unset |
|---|


A final year undergrad pursuing B.Tech in Information Technology Dept. from SGSITS, Indore. with an avid interest in mathematics, programming, and music, I live combining technical and artistic skills. Want to build some good products and tools for the community so that this world could become a better place.
Lines of Code Written
Total Projects
Age
Feb 2022 to June 2022
IndiaMART, India
May 2021 to July 2021
Deutsche Bank, India
August 2019 to April 2022
#include
IT SGSITS, Indore
September 2018 to June 2022
Training and Placement Cell
SGSITS, Indore
March 2016 to March 2017
School Captain Boy
KV Mandsaur, M.P.
July 2018 - July 2022
8.53 GPA
Information Technology, SGSITS Indore
March 2016 - March 2017
92.00 %
PCM+CS, Kendriya Vidyalaya Mandsaur
March 2014 - March 2015
10.0 GPA
Kendriya Vidyalaya Mandsaur
Some of my ideas that came into reality by code.
Instant Messaging Application
Blogging Application
Java based Game
Website


Let ABCD and EBCF be parallelograms on the same base BC and in the same parallels AF and BC.
I say that ABCD equals the parallelogram EBCF.
Since ABCD is a parallelogram, therefore AD equals BC.
For the same reason EF equals BC, so that AD also equals EF. And DE is common, therefore the whole AE equals the whole DF.
But AB also equals DC. Therefore the two sides EA and AB equal the two sides FD and DC respectively, and the angle FDC equals the angle EAB, the exterior equals the interior. Therefore the base EB equals the base FC, and the triangle EAB equals the triangle FDC.
Subtract DGE from each. Then the trapezium ABGD which remains equals the trapezium EGCF which remains.
Add the triangle GBC to each. Then the whole parallelogram ABCD equals the whole parallelogram EBCF.
Therefore parallelograms which are on the same base and in the same parallels equal one another.
| Euclid’s proof specifically treats the case when the point D lies between A and E in which case subtraction of a triangle is necessary. There are other cases to consider, for instance, when E lies between A and D. In that case the point G is irrelevant and the trapezium BCED may be added to the congruent triangles ABE and DCF to derive the conclusion. Euclid often supplies a proof for only one case, although occasionally he gives proofs for two or three cases. |
These are the same kinds of cut-and-paste operations that Euclid used on lines and angles earlier in Book I, but these are applied to rectilinear figures. In later books cut-and-paste operations will be applied to other kinds of magnitudes such as solid figures and arcs of circles.


Away from the Spotlight: A Family Exercise (VIDEO)
by FOX Sports DetroitMatt Hazzard owns a unique gym in Livonia that allows members to be creative in their workouts and for him to continue playing with his family.


Plasma Field
Releases a wave of energetic plasma that grows in power as it expands, but also zaps on contraction, dealing damage to enemy units caught in its path. Damage increases with distance from Razor.
| Mana Cost: | 125/125/125/125 |
| Cooldown: | 14 |
| ABILITY: | No Target |
| DAMAGE TYPE: | Magical |
| PIERCES SPELL IMMUNITY: | No |
| DAMAGE MIN: | 30 / 50 / 70 / 90 |
| DAMAGE MAX: | 160 / 230 / 300 / 370 |
| RADIUS: | 700 |
The Lightning Revenant rules the Underscape with plasmatic power.
Static Link
Creates a charged link between Razor and an enemy Hero, stealing damage from the target and giving it to Razor.
| Mana Cost: | 50 |
| Cooldown: | 32/30/28/26 |
| ABILITY: | Unit Target |
| AFFECTS: | Enemy Heroes |
| PIERCES SPELL IMMUNITY: | Yes |
| LINK DURATION: | 8 / 8 / 8 / 8 |
| BUFF DURATION: | 18 / 18 / 18 / 18 |
| DAMAGE DRAIN RATE: | 7 / 14 / 21 / 28 |
Razor's polarity channels electricity into his being, draining the power of his opposition.
Unstable Current
Razor moves with increased speed, and any abilites targeted at him are instantly countered with a jolt of electricity which damages, slows, and purges buffs from enemies.
| ABILITY: | Passive |
| DAMAGE TYPE: | Magical |
| PIERCES SPELL IMMUNITY: | No |
| DAMAGE: | 40 / 70 / 100 / 130 |
| BONUS SPEED: | 4% / 8% / 12% / 16% |
| SLOW DURATION: | 0.5 / 1 / 1.5 / 2 |
Attacking the Lightning Revenant is rewarded with shock therapy.
Eye of the Storm
A powerful lightning storm strikes out at enemy units with the lowest health, dealing damage and reducing their armor. Upgradable by Aghanim's Scepter.
| Mana Cost: | 100/150/200 |
| Cooldown: | 80/70/60 |
| ABILITY: | No Target |
| DAMAGE TYPE: | Physical |
| PIERCES SPELL IMMUNITY: | Yes |
| RADIUS: | 500 / 500 / 500 |
| DURATION: | 30 |
| STRIKE INTERVAL: | 0.7 / 0.6 / 0.5 |
| ARMOR REDUCTION: | 1 / 1 / 1 |
| DAMAGE: | 37 / 50 / 63 |
| SCEPTER STRIKE INTERVAL: | 0.6 / 0.5 / 0.4 |
Ride the lightning.


WITNESS LIST Elections Committee May 9, 1997-5:30P HB 464 For: Representative Zbranek (author) HB 947 For: Representative Puente (author)


tyler-technologies
Businessmodel of Tyler Technologies
Customer Segments
Tyler Technologies has a niche market business model, with a specialized customer segment. The company targets its offerings at school districts, municipal and county agencies, and other local government offices.
Value Proposition
Tyler Technologies offers one primary value proposition: brand/status.
The company has established a strong brand due to its success. It bills itself as the largest software firm in the United States solely focused on integrated software and technology services for the public sector. It serves over 15,000 local government offices in all 50 U.S. states, Canada, the United Kingdom, the Caribbean, and other global locations. Lastly, it has won many honors, including:
- Ranking on the “Most Innovative Growth Companies” in 2016 by Forbes
- Recognition as one of “America’s Most Trusthworthy Companies“ by Audit Integrity
- Ranking on the *Software *Magazine Software 500 seven years in a row
- Recognition as one of the “Top 100 Places to Work“ by the Dallas Morning News
- Six-time placement on the Barron’s 400 Index ### Channels
Tyler Technologies’ main channel is its direct sales team. The company promotes its offerings through its website, social media pages, direct mailings, and participation in industry events such as webinars, trade shows, and conferences.
Customer Relationships
Tyler Technologies’ customer relationship is primarily of a self-service nature. Customers utilize its products while having limited interaction with employees. The company operates Tyler University, a continuing education platform that offers online courses on software and new technologies. Its website also maintains a “Library” section featuring useful resources such as user guides, documents, images, and videos.
Despite this orientation, there is a personal assistance component in the form of phone, e-mail, and online customer support. There is also a community element in the form of Tyler Community, an online mass collaboration and crowdsourcing tool that enables customers to interact with staff and each other.
Key Activities
Tyler Technologies’ business model entails designing and developing its products and related services for customers.
Key Partners
Tyler Technologies’ key partners include the suppliers that provide it with the equipment it needs to produce its solutions. These suppliers are primarily original equipment manufacturers and distributors. The equipment includes computers, printers, scanners, peripherals, office automation software, and operating system software.
The company also works with technology firms and associations that provide complementary solutions for its customers. The solutions are in areas such as business intelligence, online purchasing, online payments, asset management, and GIS mapping. Specific partners include Microsoft, ESRI, Cloud Security Alliance, and The International Association of Privacy Professionals.
Key Resources
Tyler Technologies’ main resources are its human resources, who include the technology employees that design and develop its solutions, the sales employees who promote them, and the customer service employees that provide support.
Cost Structure
Tyler Technologies has a cost-driven structure, aiming to minimize expenses through significant automation. Its biggest cost driver is cost of revenues, a variable expense.
Other major drivers are in the areas of sales/marketing, research/development, and administration, all fixed costs.
Revenue Streams
Tyler Technologies has four revenue streams:
- Software licenses and royalties
- Subscriptions
- Services (software, maintenance, appraisal)
- Hardware and other


No bookmarks were found.
{% endif %}No likes were found.
{% endif %}No links were found.
{% endif %}No posts were found.
{% endif %}No replies were found.
{% endif %}No reposts were found.
{% endif %}No RSVPs were found.
{% endif %}No webmentions were found.
{% endif %}


This interface represents a single input source for an XML entity. More...
#include <DOMLSInput.hpp>
Public Member Functions | |
Destructor | |
| virtual | ~DOMLSInput () |
| Destructor. | |
Functions introduced in DOM Level 3 | |
| virtual const XMLCh * | getStringData () const =0 |
| String data to parse. | |
| virtual InputSource * | getByteStream () const =0 |
| Returns the byte stream for this input source. | |
| virtual const XMLCh * | getEncoding () const =0 |
| An input source can be set to force the parser to assume a particular encoding for the data that input source reprsents, via the setEncoding() method. | |
| virtual const XMLCh * | getPublicId () const =0 |
| Get the public identifier for this input source. | |
| virtual const XMLCh * | getSystemId () const =0 |
| Get the system identifier for this input source. | |
| virtual const XMLCh * | getBaseURI () const =0 |
| Get the base URI to be used for resolving relative URIs to absolute URIs. | |
| virtual void | setStringData (const XMLCh *data)=0 |
| Sets the UTF-16 string for this input source. | |
| virtual void | setByteStream (InputSource *stream)=0 |
| Sets the byte stream for this input source. | |
| virtual void | setEncoding (const XMLCh *const encodingStr)=0 |
| Set the encoding which will be required for use with the XML text read via a stream opened by this input source. | |
| virtual void | setPublicId (const XMLCh *const publicId)=0 |
| Set the public identifier for this input source. | |
| virtual void | setSystemId (const XMLCh *const systemId)=0 |
| Set the system identifier for this input source. | |
| virtual void | setBaseURI (const XMLCh *const baseURI)=0 |
| Set the base URI to be used for resolving relative URIs to absolute URIs. | |
Non-standard Extension | |
| virtual void | setIssueFatalErrorIfNotFound (bool flag)=0 |
| Indicates if the parser should issue fatal error if this input source is not found. | |
| virtual bool | getIssueFatalErrorIfNotFound () const =0 |
| Get the flag that indicates if the parser should issue fatal error if this input source is not found. | |
| virtual void | release ()=0 |
| Called to indicate that this DOMLSInput is no longer in use and that the implementation may relinquish any resources associated with it. | |
Protected Member Functions | |
Hidden constructors | |
| DOMLSInput () |
This interface represents a single input source for an XML entity.
This interface allows an application to encapsulate information about an input source in a single object, which may include a public identifier, a system identifier, a byte stream (possibly with a specified encoding), and/or a character stream.
There are two places that the application will deliver this input source to the parser: as the argument to the parse method, or as the return value of the DOMLSResourceResolver.resolveResource method.
The DOMLSParser will use the DOMLSInput object to determine how to read XML input. If there is a character stream available, the parser will read that stream directly; if not, the parser will use a byte stream, if available; if neither a character stream nor a byte stream is available, the parser will attempt to open a URI connection to the resource identified by the system identifier.
A DOMLSInput object belongs to the application: the parser shall never modify it in any way (it may modify a copy if necessary).
| xercesc::DOMLSInput::DOMLSInput | ( | ) | [inline, protected] |
| virtual xercesc::DOMLSInput::~DOMLSInput | ( | ) | [inline, virtual] |
Destructor.
| virtual const XMLCh* xercesc::DOMLSInput::getBaseURI | ( | ) | const [pure virtual] |
Get the base URI to be used for resolving relative URIs to absolute URIs.
If the baseURI is itself a relative URI, the behavior is implementation dependent.
| virtual InputSource* xercesc::DOMLSInput::getByteStream | ( | ) | const [pure virtual] |
Returns the byte stream for this input source.
| virtual const XMLCh* xercesc::DOMLSInput::getEncoding | ( | ) | const [pure virtual] |
An input source can be set to force the parser to assume a particular encoding for the data that input source reprsents, via the setEncoding() method.
This method returns name of the encoding that is to be forced. If the encoding has never been forced, it returns a null pointer.
| virtual bool xercesc::DOMLSInput::getIssueFatalErrorIfNotFound | ( | ) | const [pure virtual] |
Get the flag that indicates if the parser should issue fatal error if this input source is not found.
| virtual const XMLCh* xercesc::DOMLSInput::getPublicId | ( | ) | const [pure virtual] |
Get the public identifier for this input source.
| virtual const XMLCh* xercesc::DOMLSInput::getStringData | ( | ) | const [pure virtual] |
String data to parse.
If provided, this will always be treated as a sequence of 16-bit units (UTF-16 encoded characters). It is not a requirement to have an XML declaration when using stringData. If an XML declaration is present, the value of the encoding attribute will be ignored.
| virtual const XMLCh* xercesc::DOMLSInput::getSystemId | ( | ) | const [pure virtual] |
Get the system identifier for this input source.
If the system ID is a URL, it will be fully resolved.
| virtual void xercesc::DOMLSInput::release | ( | ) | [pure virtual] |
Called to indicate that this DOMLSInput is no longer in use and that the implementation may relinquish any resources associated with it.
Access to a released object will lead to unexpected result.
| virtual void xercesc::DOMLSInput::setBaseURI | ( | const XMLCh *const | baseURI | ) | [pure virtual] |
Set the base URI to be used for resolving relative URIs to absolute URIs.
If the baseURI is itself a relative URI, the behavior is implementation dependent.
| baseURI | The base URI. |
| virtual void xercesc::DOMLSInput::setByteStream | ( | InputSource * | stream | ) | [pure virtual] |
Sets the byte stream for this input source.
| virtual void xercesc::DOMLSInput::setEncoding | ( | const XMLCh *const | encodingStr | ) | [pure virtual] |
Set the encoding which will be required for use with the XML text read via a stream opened by this input source.
This is usually not set, allowing the encoding to be sensed in the usual XML way. However, in some cases, the encoding in the file is known to be incorrect because of intermediate transcoding, for instance encapsulation within a MIME document.
| encodingStr | The name of the encoding to force. |
| virtual void xercesc::DOMLSInput::setIssueFatalErrorIfNotFound | ( | bool | flag | ) | [pure virtual] |
Indicates if the parser should issue fatal error if this input source is not found.
If set to false, the parser issue warning message instead.
| flag | True if the parser should issue fatal error if this input source is not found. If set to false, the parser issue warning message instead. (Default: true) |
| virtual void xercesc::DOMLSInput::setPublicId | ( | const XMLCh *const | publicId | ) | [pure virtual] |
Set the public identifier for this input source.
The public identifier is always optional: if the application writer includes one, it will be provided as part of the location information.
| publicId | The public identifier as a string. |
| virtual void xercesc::DOMLSInput::setStringData | ( | const XMLCh * | data | ) | [pure virtual] |
Sets the UTF-16 string for this input source.
| virtual void xercesc::DOMLSInput::setSystemId | ( | const XMLCh *const | systemId | ) | [pure virtual] |
Set the system identifier for this input source.
The system id is always required. The public id may be used to map to another system id, but the system id must always be present as a fall back.
If the system ID is a URL, it must be fully resolved.
| systemId | The system identifier as a string. |


--- layout: post title: Video of My Nexus One & Quick iPhone Comparison date: 2010-01-09 21:58:42.000000000 -08:00 type: post published: true status: publish categories: [] tags: [] meta: {} author: ---
Here's a quick video, nothing more, of my Nexus One with a quick iPhone comparison.


Simple Guide to S3 Methods
26 Aug 2016 R rbloggersSo I’ve just submitted my first article to the R Journal!
The paper, “A Simple Guide to S3 Methods”, is my attempt at a quick and simple guide to using S3 methods in R. Although not my first publication, it is my first solo publication, which is exciting.
You can read the pre-print on arxiv here.
Why write it?
Because I think S3 methods are underused. They are elegant, simple, and really useful. Hadley Wickham describes them nicely in Advanced R.
S3 is informal and ad hoc, but it has a certain elegance in its minimalism: you can’t take away any part of it and still have a useful [Object Oriented] system.
How it started
Last year I ripped some functions from a monster if-then-else
statement, and created individual S3 methods. I kept some notes as I did this, which eventually turned into a draft blog post. However, a colleague suggested I turn the blog post into a publication for the R Journal. Why not?
The process
I got it about 95% of the way relatively quickly thanks to fine folks like Miles McBain providing valuable feedback, and to the R package rticles which provides a pre-built R Journal template.
However, I ran into some issues around special characters in rticles, which halted my progress. It looked unappealing to fix in LaTeX, so it sat on the backburner.
Until…?
I started updating my CV last week. I was reminded that I still had not submitted the S3 methods paper. I had a brainwave that I could get around my problem by silently running the code chunk and then copying and pasting the code output manually in markdown. This worked rather marvelously. You can see the RMarkdown chunk here on github.
Further thoughts on the paper.
The paper might miss out on some of the finer features of S3 methods, but its main goal was to get people using S3 methods by providing motivation for why they might want to use them, and why they should use them as opposed to writing something like a series of if-then-else loops.
I’m excited to see feedback from the R Journal, hopefully I didn’t miss something terribly important about S3 methods.


DM statistics for large galaxy catalogs, P(k) and its covariance
TEXT
Please click
here
to access the PPM GLAM results.
Acknowledgement
If you use these functions, please cite
Klypin et al. 2017
last update, jan. 2017, by
J. Comparat


[2]
Status light, Quiet, Cool, Cheap; For my needs none!
[3]
Price & Speed; No problems detected


{% extends 'landing_base.html' %} {% block content %}
Our project is run by volunteers, and we’re always looking for more help. Right now we’re mostly looking for these roles, but don’t hesitate to get in touch if you’d like to help with anything else.
We need a designer to help with the lecturer's site template and back office product.
We need to develop an Android and IOS app that’s similar to the webapp but extends some features (no need to deploy).
If you’re a 3rd year C.S. student at Bar Ilan Univerity who’s looking for a cool final year project, you’ve come to the right place! You can join our open-source initative and work on the following projects:
This project requires advanced web skills and an open-mind for auto-code generation. You will develop a website app that manages users, collects information, and generates a full website (maybe even auto-deploy it). The key tools for this are MongoDB, Node.js, and React which will make you a desirable web developer in many companies.
We need a designer to help with the lecturer's site template and back office product.
Talk to usWe need to develop an Android and IOS app that’s similar to the webapp but extends some features (no need to deploy).
Talk to us3rd year C.S. students at Bar Ilan Univerity who are looking for a cool final year project, can join our open-source initative and work on the following projects:
This project requires advanced web skills and an open-mind for auto-code generation. You will develop a website app that manages users, collects information, and generates a full website (maybe even auto-deploy it). The key tools for this are MongoDB, Node.js, and React which will make you a desirable web developer in many companies.
Talk to usCouldn’t find what you’re looking for? Ask us anything


Dreamers are mocked as impractical. The truth is they are the most practical, as their innovations lead to progress and a better way of life for all of us.”
Welcome to my home.Please feel free to explore the website,if you are looking to view and follow up
my recent activities checkout:
Join me on github.Anything to everything I do is open source and always available for you.
I am a huge coffee lover.Its always good for my health.
I am an opensource and community speaker.You can find me speaking at some or the other meetup.
Some of my projects
Setting up your complete infrastructure on cloud premises using Infrastructure as a Code


It is a Jackson annotation that is used to specify how to format fields and/or properties for JSON output.
Specifically, this annotation allows you to specify how to format Date and Calendar values according to a SimpleDateFormat format.
We can also customize the format of our date fields using the @JsonFormat annotation. If we want our date fields in ISO 8601 format we just need to annotate our field someDate with:
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern= "yyyy-MM-dd") private Calendar someDate;
@JsonFormat can also be used to serialize subclasses of java.util.Collection and java.lang.Number as POJOs instead of collection elements and Number scalar value respectively. It only works if the annotation is used on class level with @JsonFormat#shape=JsonFormat.Shape.OBJECT
@JsonFormat(shape = JsonFormat.Shape.OBJECT)
public class ArrayListEx


Supplier ID: {{supplier.supplierId}}
Company Name: {{supplier.companyName}}
- Contact Name:
- {{supplier.contactName}}
- Contact Title:
- {{supplier.contactTitle}}
- Address:
- {{supplier.address}}
- City:
- {{supplier.city}}
- Region:
- {{supplier.region}}
- Postal Code:
- {{supplier.postalCode}}
- Country:
- {{supplier.country}}
- Phone:
- {{supplier.phone}}
- Fax:
- {{supplier.fax}}
- Home Page:
- {{supplier.homePage}}
edit
delete


--- layout: default ---
With undergraduate and graduate degrees in digital art and work experience in computer hardware and networking, I've been involved with various aspects of computing for years. Though I'd worked on projects in Actionscript & Second Life's LSL, and made my own utility scripts in Bash & AppleScript I hadn't had any formal education in code until I joined Nashville Software School's 10th cohort for an intensive six month boot camp where I learned modern mobile-first web deveopment skills in a fast paced team project oriented environment.
Data visualization for internet throughput & ping. Build with NodeJS, MongoDB, React, and utilizing react-dates and React D3 components for input & graphing.
{% include githubicon.html %} view sourceCellular biology collect-a-thon game where you chase down amino acids to assemble proteins. Built with the Phaser game framework, AngularJS, RequireJS, and Firebase for data storage and user authentication.
{% include githubicon.html %} view sourceMap-based data visualization of user supplied home thermostat settings. Built with NodeJS, PostgreSQL & AngularJS using jVectorMap for data visualization, deployed to Heroku.
{% include githubicon.html %} view sourceSingle player version of the card game war. Built with RequireJS and Handlebars utilizing the Deck of Cards API for gameplay and Firebase for user authentication and score tracking.
{% include githubicon.html %} view source


Please insert a valid name
Please insert a valid email
Please insert a valid phone number
Please specify your birthday
Select your prefered payment method.
Please select a payment method


CSS3 Full Background Slider
Hipster Fashion Haircut
Cloud Computing Services & Consulting
My haire is sooo fantastic!
Eat healthy & excersice!
Lips so kissable I could die ...


If you've taken the time to learn a little bit about a layer or table in a REST endpoint, the query forms you'll find in one of Esri's are invaluable. Let's say you want to see what an example record looks like. Well, just figure out how to find OBJECTID 1, or 1000. Or if you know one column is "Name", figure out how to query for "Smith". You'll know you're successful if you get results at the bottom of the form. And once you have that, you have a URL that you can copy and paste into your Javascript code in order to build a dynamic query for your users. All you have to do is switch the format from "html" to "json" and you've got something your web app can consume, parse with code, and display to your users.
Let's take a look at the query form available for the Detailed Counties Layer we looked at in the Explore with a Browser section. Once again for your testing excitement, it's a good idea to open this up in a separate browser window or tab.
When you're working with this form, keep in mind that the "Query (Get)" button is near the bottom, and if you hit "Enter" within one of the entry fields you might fire it off. Also, there are sometimes elements that, if skipped, can hose up the query. But usually it only takes a few tries to get a good query working. Especially if the endpoint is set up well. This one is relatively easy to use just with the "Text" field, second from the top. Type in "Dade" and hit your Enter key. Here are links to the results (with the HTML version, the results appear below the query form):
You can see you don't need the exact spelling to get results in this example - you get two "Dade" counties as well as "Miami-Dade". But with the defaults, we get a heck of a lot more geometry than we get any other helpful details. This is great if we're making a map, but not the best if we're interested in attributes. In order to get something a bit more human-readable, let's make two changes:
Hit "Enter" and you'll see the results are a bit easier to read and understand. These three counties are in Florida, Georgia, and Missouri, along with dozens of demographic results. You can switch the "Format" button at the bottom to "JSON" to change your format. This will actually switch the format in the URL to "pjson" so you can see the "pretty" or "padded" version. But if you're writing code you can set the "f" (format) parameter to just "json" and get the minified version. Here's a link for you to see that.
The button below grabs a random letter of the alphabet and queries the layer. Crack open your developer console and watch the Net tab to see how the query gets fired and produces the results shown below. Check out the getRandomCounty function in the source code in GitHub to see more details about how this is done.


This is an example from the Filament Group Lab Article:
jQuery Menu: Dropdown, iPod Drilldown, and Flyout styles with ARIA Support and ThemeRoller Ready
©2013 Filament Group, Inc. All Rights Reserved.
You chose:
flyout menu


Rumen
Overview
Rumen is a data extraction and analysis tool built for Apache Hadoop. Rumen mines JobHistory logs to extract meaningful data and stores it in an easily-parsed, condensed format or digest. The raw trace data from MapReduce logs are often insufficient for simulation, emulation, and benchmarking, as these tools often attempt to measure conditions that did not occur in the source data. For example, if a task ran locally in the raw trace data but a simulation of the scheduler elects to run that task on a remote rack, the simulator requires a runtime its input cannot provide. To fill in these gaps, Rumen performs a statistical analysis of the digest to estimate the variables the trace doesn't supply. Rumen traces drive both Gridmix (a benchmark of Hadoop MapReduce clusters) and Mumak (a simulator for the JobTracker).
Motivation
- Extracting meaningful data from JobHistory logs is a common task for any tool built to work on MapReduce. It is tedious to write a custom tool which is so tightly coupled with the MapReduce framework. Hence there is a need for a built-in tool for performing framework level task of log parsing and analysis. Such a tool would insulate external systems depending on job history against the changes made to the job history format.
- Performing statistical analysis of various attributes of a MapReduce Job such as task runtimes, task failures etc is another common task that the benchmarking and simulation tools might need. Rumen generates Cumulative Distribution Functions (CDF) for the Map/Reduce task runtimes. Runtime CDF can be used for extrapolating the task runtime of incomplete, missing and synthetic tasks. Similarly CDF is also computed for the total number of successful tasks for every attempt.
Components
Rumen consists of 2 components
- Trace Builder : Converts JobHistory logs into an easily-parsed format. Currently TraceBuilder outputs the trace in JSON format.
- Folder : A utility to scale the input trace. A trace obtained from TraceBuilder simply summarizes the jobs in the input folders and files. The time-span within which all the jobs in a given trace finish can be considered as the trace runtime. Folder can be used to scale the runtime of a trace. Decreasing the trace runtime might involve dropping some jobs from the input trace and scaling down the runtime of remaining jobs. Increasing the trace runtime might involve adding some dummy jobs to the resulting trace and scaling up the runtime of individual jobs.
How to use Rumen?
Converting JobHistory logs into a desired job-trace consists of 2 steps
- Extracting information into an intermediate format
- Adjusting the job-trace obtained from the intermediate trace to have the desired properties.
Rumen provides 2 basic commands
- TraceBuilder
- Folder
Firstly, we need to generate the Gold Trace. Hence the first step is to run TraceBuilder on a job-history folder. The output of the TraceBuilder is a job-trace file (and an optional cluster-topology file). In case we want to scale the output, we can use the Folder utility to fold the current trace to the desired length. The remaining part of this section explains these utilities in detail.
Trace Builder
Command:
java org.apache.hadoop.tools.rumen.TraceBuilder [options] <jobtrace-output> <topology-output> <inputs>
This command invokes the TraceBuilder utility of Rumen. It converts the JobHistory files into a series of JSON objects and writes them into the <jobtrace-output> file. It also extracts the cluster layout (topology) and writes it in the<topology-output> file. <inputs> represents a space-separated list of JobHistory files and folders.
Cluster topology is used as follows :
- To reconstruct the splits and make sure that the distances/latencies seen in the actual run are modeled correctly.
- To extrapolate splits information for tasks with missing splits details or synthetically generated tasks.
Options :
| Parameter | Description | Notes |
|---|---|---|
| -demuxer | Used to read the jobhistory files. The default is DefaultInputDemuxer. | Demuxer decides how the input file maps to jobhistory file(s). Job history logs and job configuration files are typically small files, and can be more effectively stored when embedded in some container file format like SequenceFile or TFile. To support such usage cases, one can specify a customized Demuxer class that can extract individual job history logs and job configuration files from the source files. |
| -recursive | Recursively traverse input paths for job history logs. | This option should be used to inform the TraceBuilder to recursively scan the input paths and process all the files under it. Note that, by default, only the history logs that are directly under the input folder are considered for generating the trace. |
Example
java org.apache.hadoop.tools.rumen.TraceBuilder file:///home/user/job-trace.json file:///home/user/topology.output file:///home/user/logs/history/done
This will analyze all the jobs in /home/user/logs/history/done stored on the local FileSystem and output the jobtraces in /home/user/job-trace.json along with topology information in /home/user/topology.output.
Folder
Command:
java org.apache.hadoop.tools.rumen.Folder [options] [input] [output]
This command invokes the Folder utility of Rumen. Folding essentially means that the output duration of the resulting trace is fixed and job timelines are adjusted to respect the final output duration.
Options :
| Parameter | Description | Notes |
|---|---|---|
| -input-cycle | Defines the basic unit of time for the folding operation. There is no default value for input-cycle. Input cycle must be provided. | '-input-cycle 10m' implies that the whole trace run will be now sliced at a 10min interval. Basic operations will be done on the 10m chunks. Note that Rumen understands various time units like m(min), h(hour), d(days) etc. |
| -output-duration | This parameter defines the final runtime of the trace. Default value if 1 hour. | '-output-duration 30m' implies that the resulting trace will have a max runtime of 30mins. All the jobs in the input trace file will be folded and scaled to fit this window. |
| -concentration | Set the concentration of the resulting trace. Default value is 1. | If the total runtime of the resulting trace is less than the total runtime of the input trace, then the resulting trace would contain lesser number of jobs as compared to the input trace. This essentially means that the output is diluted. To increase the density of jobs, set the concentration to a higher value. |
| -debug | Run the Folder in debug mode. By default it is set to false. | In debug mode, the Folder will print additional statements for debugging. Also the intermediate files generated in the scratch directory will not be cleaned up. |
| -seed | Initial seed to the Random Number Generator. By default, a Random Number Generator is used to generate a seed and the seed value is reported back to the user for future use. | If an initial seed is passed, then the Random Number Generator will generate the random numbers in the same sequence i.e the sequence of random numbers remains same if the same seed is used. Folder uses Random Number Generator to decide whether or not to emit the job. |
| -temp-directory | Temporary directory for the Folder. By default the output folder's parent directory is used as the scratch space. | This is the scratch space used by Folder. All the temporary files are cleaned up in the end unless the Folder is run in debug mode. |
| -skew-buffer-length | Enables Folder to tolerate skewed jobs. The default buffer length is 0. | '-skew-buffer-length 100' indicates that if the jobs appear out of order within a window size of 100, then they will be emitted in-order by the folder. If a job appears out-of-order outside this window, then the Folder will bail out provided -allow-missorting is not set. Folder reports the maximum skew size seen in the input trace for future use. |
| -allow-missorting | Enables Folder to tolerate out-of-order jobs. By default mis-sorting is not allowed. | If mis-sorting is allowed, then the Folder will ignore out-of-order jobs that cannot be deskewed using a skew buffer of size specified using -skew-buffer-length. If mis-sorting is not allowed, then the Folder will bail out if the skew buffer is incapable of tolerating the skew. |
Examples
Folding an input trace with 10 hours of total runtime to generate an output trace with 1 hour of total runtime
java org.apache.hadoop.tools.rumen.Folder -output-duration 1h -input-cycle 20m file:///home/user/job-trace.json file:///home/user/job-trace-1hr.json
If the folded jobs are out of order then the command will bail out.
Folding an input trace with 10 hours of total runtime to generate an output trace with 1 hour of total runtime and tolerate some skewness
java org.apache.hadoop.tools.rumen.Folder -output-duration 1h -input-cycle 20m -allow-missorting -skew-buffer-length 100 file:///home/user/job-trace.json file:///home/user/job-trace-1hr.json
If the folded jobs are out of order, then atmost 100 jobs will be de-skewed. If the 101st job is out-of-order, then the command will bail out.
Folding an input trace with 10 hours of total runtime to generate an output trace with 1 hour of total runtime in debug mode
java org.apache.hadoop.tools.rumen.Folder -output-duration 1h -input-cycle 20m -debug -temp-directory file:///tmp/debug file:///home/user/job-trace.json file:///home/user/job-trace-1hr.json
This will fold the 10hr job-trace file file:///home/user/job-trace.json to finish within 1hr and use file:///tmp/debug as the temporary directory. The intermediate files in the temporary directory will not be cleaned up.
Folding an input trace with 10 hours of total runtime to generate an output trace with 1 hour of total runtime with custom concentration.
java org.apache.hadoop.tools.rumen.Folder -output-duration 1h -input-cycle 20m -concentration 2 file:///home/user/job-trace.json file:///home/user/job-trace-1hr.json
This will fold the 10hr job-trace file file:///home/user/job-trace.json to finish within 1hr with concentration of 2. Example-2.3.2 will retain 10% of the jobs. With concentration as 2, 20% of the total input jobs will be retained.
Appendix
Resources
MAPREDUCE-751 is the main JIRA that introduced Rumen to MapReduce. Look at the MapReduce rumen-component for further details.
Dependencies
Rumen expects certain library JARs to be present in the CLASSPATH. The required libraries are
- Hadoop MapReduce Tools (hadoop-mapred-tools-{hadoop-version}.jar)
- Hadoop Common (hadoop-common-{hadoop-version}.jar)
- Apache Commons Logging (commons-logging-1.1.1.jar)
- Apache Commons CLI (commons-cli-1.2.jar)
- Jackson Mapper (jackson-mapper-asl-1.4.2.jar)
- Jackson Core (jackson-core-asl-1.4.2.jar)


We enhance our solutions by incorportating physical principles and understanding underlying processes.
We enpower our predictive capabiliy using simulations and all possible outcomes.
We are experts in efficient optimiztion and understand the importance of domain expertise and appreciate there is no free lunch.
We use our models, simulations and optimization algorithms to enhance performance and to control the situation.


This article describes how to use code tags in posts on forums of this site.
Code tags color code and add line numbers just like modern IDEs do.
1 2 3 4 5 6 7 8 9
|
#include<iostream>
using namespace std;
//This is a very simple program
int main()
{
cout<<"Hello World"<<endl;
return 0;
}
| |
Intended audience:
This article is mainly for users who are new to this site and don't know about the 'code tag' feature of this site. New users are advised to read the full article and not just a part of it.
This article is also for users who are fed up of people asking for help without showing their code in code tags. Just paste a link to this article as reply. I haven't included details like altering line numbers or showing output with the code to make it simple for beginners. If you want to know details,
click here.
How to use code tags?
Let me explain this with an example. Suppose you are posting on this forum. You would see something like this
After writing out your problem, you should use the preview button to see how your post looks. You would get this:
This post has not used code tags and looks unpleasant to the eyes.
To use code tags select your post and press the format code button:
This will cause [code]...[/code] to appear automatically around your code.
You could also have manually typed [code][/code] around your code. It's the same thing.
Now clicking on the preview button, we find that the output looks like this:
Mission accomplished.
If you have already posted without code tags, you can click on the
button on your post and edit your post.
Caution:
The code tags will not indent your post. You have to do it manually. The best way is to write code in your IDE and simply paste it in your post. If you don't use an IDE, you can manually add spaces to indent your code.


Properties summary
protected static
MvcCore\Router
|
$instance
Current \MvcCore\Router singleton instance storage.
Current \MvcCore\Router singleton instance storage.
|
|
protected static
string|null
|
$routerClass
Value from \MvcCore\Application::GetInstance()->GetRouterClass(); .
Value from \MvcCore\Application::GetInstance()->GetRouterClass(); .
|
|
protected static
string|null
|
$routeClass
Value from \MvcCore\Application::GetInstance()->GetRouteClass(); .
Value from \MvcCore\Application::GetInstance()->GetRouteClass(); .
|
|
protected static
string|null
|
$toolClass
Value from \MvcCore\Application::GetInstance()->GetToolClass(); .
Value from \MvcCore\Application::GetInstance()->GetToolClass(); .
|
|
protected
MvcCore\Application |null
|
$application
Reference to \MvcCore\Application::GetInstance();
to not call this very time we need app instance.
Reference to \MvcCore\Application::GetInstance();
to not call this very time we need app instance.
|
|
protected
MvcCore\Request |null
|
$request
Internally used \MvcCore\Request request object reference for:
- Routing process in \MvcCore\Router::Route(); and it's protected sub-methods.
- URL addresses completing in \MvcCore\Router::Url() and it's protected sub-methods.
Internally used \MvcCore\Request request object reference for:
- Routing process in \MvcCore\Router::Route(); and it's protected sub-methods.
- URL addresses completing in \MvcCore\Router::Url() and it's protected sub-methods.
|
|
protected
MvcCore\Route[]
|
$routes
Global application route instances store to match request.
Keys are route(s) names, values are \MvcCore\Route instances.
Global application route instances store to match request.
Keys are route(s) names, values are \MvcCore\Route instances.
|
|
protected
array
|
$routesGroups
Another application route instances store to match request,
where are routes stored under key, representing first founded
word in requested path. Values under every first path word is array.
Every array has keys as route(s) names and values as \MvcCore\Route
instances.
Another application route instances store to match request,
where are routes stored under key, representing first founded
word in requested path. Values under every first path word is array.
Every array has keys as route(s) names and values as \MvcCore\Route
instances.
|
|
protected
MvcCore\Route[]
|
$urlRoutes
Global application route instances store to complete URL addresses.
Keys are route(s) names and Controller:Action combinations,
values are \MvcCore\Route instances.
Global application route instances store to complete URL addresses.
Keys are route(s) names and Controller:Action combinations,
values are \MvcCore\Route instances.
|
|
protected
boolean|null
|
$routeByQueryString
Main router strategy boolean. This property is automatically set to
TRUE /FALSE in method \MvcCore\Router::Route(); . By this property,
there is chosen routing strategy, how to complete requested controller
and action. If value is set to TRUE , there is processed only routing by
query string variables controller and action. If value is FALSE , there
is processed routing by rewrite routes. This property is possible to set
manually into any boolean value you want and it will not be automatically
detected anymore.
Main router strategy boolean. This property is automatically set to
TRUE /FALSE in method \MvcCore\Router::Route(); . By this property,
there is chosen routing strategy, how to complete requested controller
and action. If value is set to TRUE , there is processed only routing by
query string variables controller and action. If value is FALSE , there
is processed routing by rewrite routes. This property is possible to set
manually into any boolean value you want and it will not be automatically
detected anymore.
|
|
protected
MvcCore\Route |null
|
$currentRoute
Matched route by \MvcCore\Router::Match(); processing or NULL if no match.
By this route, there is created and dispatched controller lifecycle by core.
Matched route by \MvcCore\Router::Match(); processing or NULL if no match.
By this route, there is created and dispatched controller lifecycle by core.
|
|
protected
string
|
$selfRouteName
Route name or route Controller:Action name, matched route by
\MvcCore\Router::Match(); processing or NULL if no match.
By this route name, there is completed every 'self' URL address string.
This route name record is not changed by any error rendering,
so in error pages, you could render 'self' links to desired page, but
not to error page itself.
Route name or route Controller:Action name, matched route by
\MvcCore\Router::Match(); processing or NULL if no match.
By this route name, there is completed every 'self' URL address string.
This route name record is not changed by any error rendering,
so in error pages, you could render 'self' links to desired page, but
not to error page itself.
|
|
protected
boolean
|
$routeToDefaultIfNotMatch
TRUE if request has to be automatically dispatched as default
Index:Index route, if there was no route matching current request
and if request was not / (homepage) but /something-more .
Default value: FALSE .
TRUE if request has to be automatically dispatched as default
Index:Index route, if there was no route matching current request
and if request was not / (homepage) but /something-more .
Default value: FALSE .
|
|
protected
array|null
|
$defaultParams
All request params - params parsed by route and query string params.
Be careful, it could contain XSS chars. Use always htmlspecialchars() .
Those params could contain additional user params from filter function.
All request params - params parsed by route and query string params.
Be careful, it could contain XSS chars. Use always htmlspecialchars() .
Those params could contain additional user params from filter function.
|
|
protected
array|null
|
$requestedParams
All request params - params parsed by route and query string params.
Be careful, it could contain XSS chars. Use always htmlspecialchars() .
All request params - params parsed by route and query string params.
Be careful, it could contain XSS chars. Use always htmlspecialchars() .
|
|
protected
integer
|
$trailingSlashBehaviour
Trailing slash behaviour - integer state about what to do with trailing
slash in all requested URL except homepage. Possible states are:
- -1 (\MvcCore\IRouter::TRAILING_SLASH_REMOVE )
Always remove trailing slash from requested URL if there
is any and redirect to it, except homepage.
- 0 (\MvcCore\IRouter::TRAILING_SLASH_BENEVOLENT )
Be absolutely benevolent for trailing slash in requested url.
- 1 (\MvcCore\IRouter::TRAILING_SLASH_ALWAYS )
Always keep trailing slash in requested URL or always add trailing
slash into URL and redirect to it.
Default value is -1 - \MvcCore\IRouter::TRAILING_SLASH_REMOVE
Trailing slash behaviour - integer state about what to do with trailing
slash in all requested URL except homepage. Possible states are:
- -1 (\MvcCore\IRouter::TRAILING_SLASH_REMOVE ) Always remove trailing slash from requested URL if there is any and redirect to it, except homepage.
- 0 (\MvcCore\IRouter::TRAILING_SLASH_BENEVOLENT ) Be absolutely benevolent for trailing slash in requested url.
- 1 (\MvcCore\IRouter::TRAILING_SLASH_ALWAYS ) Always keep trailing slash in requested URL or always add trailing slash into URL and redirect to it.
Default value is -1 - \MvcCore\IRouter::TRAILING_SLASH_REMOVE
|
|
protected
boolean
|
$autoCanonizeRequests
This property allows (by TRUE value by default) an auto canonical URL
redirection. It allows to redirect to canonical URL, if request is not
an internal and also if request is not realized by GET method. Then router
try to complete canonical (shorter) URL by detected strategy and if
canonical URL is different, router redirects to it.
This property allows (by TRUE value by default) an auto canonical URL
redirection. It allows to redirect to canonical URL, if request is not
an internal and also if request is not realized by GET method. Then router
try to complete canonical (shorter) URL by detected strategy and if
canonical URL is different, router redirects to it.
|
|
protected
string|null
|
$queryParamsSepatator
Query string params separator, always initialized by configured response type.
If response has no Content-Type header yet, query string separator is automatically
configured to & . That's why is very important to define response content type
as the very first command in controller Init() method, if you want to send XML content.
Query string params separator, always initialized by configured response type.
If response has no Content-Type header yet, query string separator is automatically
configured to & . That's why is very important to define response content type
as the very first command in controller Init() method, if you want to send XML content.
|
|
protected
boolean|null
|
$anyRoutesConfigured
If router has any routes configured in Route() function call, this property is TRUE .
If there are no routes configured in Route() function call moment, it's FALSE .
If router has any routes configured in Route() function call, this property is TRUE .
If there are no routes configured in Route() function call moment, it's FALSE .
|
|
protected
callable|null
|
$preRouteMatchingHandler
Custom pre-route matching handler. This handler will be executed every
time after rewrite routes strategy is chosen, after first word from
requested path is parsed and before rewrite routes will be processed.
The handler could be used to fill in routes you need by the first parsed
word from request path and by completed request object. Given handler
callable has to accept first argument to be router instance, second
argument to be request object instance and third argument to be a string
with possibly parsed first word from requested path or an empty string.
Handler could return value to be void or anything else, doesn't matter.
Example:
$router->preRouteMatchingHandler =
function (\MvcCore\IRouter $router, \MvcCore\IRequest $request, $firstPathWord) {
// load any routes from database here
$routes = $db->loadRoutingRoutesGroup($firstPathWord);
// add loaded routes into router
$router->AddRoutes($routes, $firstPathWord);
};
Custom pre-route matching handler. This handler will be executed every
time after rewrite routes strategy is chosen, after first word from
requested path is parsed and before rewrite routes will be processed.
The handler could be used to fill in routes you need by the first parsed
word from request path and by completed request object. Given handler
callable has to accept first argument to be router instance, second
argument to be request object instance and third argument to be a string
with possibly parsed first word from requested path or an empty string.
Handler could return value to be void or anything else, doesn't matter.
Example:
$router->preRouteMatchingHandler = function (\MvcCore\IRouter $router, \MvcCore\IRequest $request, $firstPathWord) { // load any routes from database here $routes = $db->loadRoutingRoutesGroup($firstPathWord); // add loaded routes into router $router->AddRoutes($routes, $firstPathWord); };
|
|
protected
callable|null
|
$preRouteUrlBuildingHandler
Custom handler executed before building URL by rewrite routes. This
handler will be executed every time there is necessary to build an URL
when there are configured any rewrite routes and when there is no route
found to do it. Then the handler is executed to load any group of routes
from database into router instance if desired route is not already there.
If there is no route found in database, route name to build url is
marked to not request the database again automatically. Given handler
callable has to accept first argument to be router instance, second
argument to be a string with first Url() method argument - it could be
controller and action combination or route name and third argument to be
and array with params - the second argument from Url() method with
arguments for final URL address. Handler has to return an array, empty
or array with keys to be route names for each route to merge those new
routes with already defined routes in router instance in protected
property $router->urlRoutes .
Example:
$router->preRouteUrlBuildingHandler =
function (\MvcCore\IRouter $router, $controllerActionOrRouteName, array $params = []) {
// load any routes from database here
$routes = $db->loadUrlRoutesGroup($controllerActionOrRouteName);
// return routes in array with keys to be route name for each route
return $routes;
};
Custom handler executed before building URL by rewrite routes. This
handler will be executed every time there is necessary to build an URL
when there are configured any rewrite routes and when there is no route
found to do it. Then the handler is executed to load any group of routes
from database into router instance if desired route is not already there.
If there is no route found in database, route name to build url is
marked to not request the database again automatically. Given handler
callable has to accept first argument to be router instance, second
argument to be a string with first Url() method argument - it could be
controller and action combination or route name and third argument to be
and array with params - the second argument from Url() method with
arguments for final URL address. Handler has to return an array, empty
or array with keys to be route names for each route to merge those new
routes with already defined routes in router instance in protected
property $router->urlRoutes .
Example:
$router->preRouteUrlBuildingHandler = function (\MvcCore\IRouter $router, $controllerActionOrRouteName, array $params = []) { // load any routes from database here $routes = $db->loadUrlRoutesGroup($controllerActionOrRouteName); // return routes in array with keys to be route name for each route return $routes; };
|
|
protected
array
|
$noUrlRoutes
Keys by Url() method first argument, when
it was not possible to found any rewrite route
to build url.
Keys by Url() method first argument, when
it was not possible to found any rewrite route
to build url.
|
|
protected
boolean
|
$internalRequest
This boolean property is only cached result from request object method
\MvcCore\Request::IsInternalRequest(); , completed always in the
beginning in router method \MvcCore\Router::Route(); . It tells router if
request targets any internal controller action or not, for example packed
JS/CSS or image in single file mode.
This boolean property is only cached result from request object method
\MvcCore\Request::IsInternalRequest(); , completed always in the
beginning in router method \MvcCore\Router::Route(); . It tells router if
request targets any internal controller action or not, for example packed
JS/CSS or image in single file mode.
|
|


{% extends '_base/page-with_nav.html' %} {% load bootstrap3 %} {% load staticfiles %} {% block title %} About the Product Database {% endblock %} {% block main_content %}
This web service provides a database and API for product information, focusing on the lifecycle data (EoL checks) for network products. The following images shows an overview about the web service and the usage-options.
You'll find additional information about the Product Database and the entire source code are available at the GitHub project page .
The MIT License (MIT) Copyright (c) 2016-2019 Henry Ölsner Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.