Substitution of Variables in SPARQL
Andy Seaborne
October 2019
The SPARQL 1.1 algebra operation “substitute” evaluates a graph pattern where there is a specific are variables given by a solution mapping. The operation is used to in the evaluation of EXISTS and NOT EXISTS operations.
This document list problems that have been identified with the substitute operation and proposes an improved substitution evaluation process that addresses these problems based on the concept of Correlated Subquery found in SQL.
Summary
The fundamental problem is that a variable can not be simply replaced by a value (an RDF Term) in all places in a graph pattern. There are some places where SPARQL function forms and “AS” assignment require a variable. The proposal here is to take the variable binding from the input solution, retaining the variable in the graph pattern, and disallowing cases that can reset the variable binding as is already the case elsewhere in SPARQL.
Identified Issues
This section describes the issues identified on the SPARQL Exists Community group mailing list public-sparql-exists/2016Jul/0014.
- Issue-1: Some uses of EXISTS are not defined during evaluation.
- Issue-2: Substitution happens where definitions are only for variables.
- Issue-3: Blank nodes substituted into BGPs act as variables.
- Issue-4: Substitution can flip MINUS to its disjoint-domain case.
- Issue-5: Substitution affects disconnected variables.
Issue 1: Some uses of EXISTS are not defined during evaluation
The evaluation process in the specificiation is defined for graph patterns but there are situations where the evaluation is of an alegbra form not listed.
For example:
FILTER EXISTS { SELECT ?y { ?y :q :c } }
and
FILTER EXISTS { VALUES ?y { 123 } }
The argument to exists is not explicitly listed as a “Graph Pattern” in the table of SPARQL algebra symbols in section 18.2 when the argument to EXISTS is a GroupGraphPattern containing just a subquery or just InlineData.
Issue 2: Substitution happens where definitions are only for variables
There are places in the SPARQL syntax and algebra where variables are allowed but not RDF terms (constant values).
Example:
FILTER EXISTS { BIND ( :e AS ?z )
{ SELECT ?x { :b :p :c } }
}
Both positions “AS ?z” and “SELECT ?x” must be variables.
In the algebra, this affects
- extend (related to the use of AS in SPARQL syntax)
- in line data (related to the use of VALUES)
- BOUND
Issue 3: Blank nodes substituted into BGPs act as variables
In the evaluation of basic graph patterns (BGPs) blank nodes are replaced by RDF terms from the graph being matched and variables are replaced by a solution mapping from query variables to RDF terms so that the basic graph pattern is now a subgraph of the graph being matched.
Simply substituting a variable with a blank node in the EXISTS evaluation process does not cause the basic graph pattern to be to be restricted to subgraphs containing that blank node as an RDF term because it is mapped by an RDF instance mapping before checking that the BGP after mapping is a subgraph of the graph being queried.
Note that elsewhere in the evaluation of the SPARQL algebra, a solution mapping with a binding from variable to blank node, does treat blank nodes as RDF terms. They are not mapped by an RDF instance mapping.
Example:
SELECT ?x WHERE {
?x :p :d .
FILTER EXISTS { ?x :q :b . }
}
against the graph { :c :p :d . :e :q :b } the substitution for EXISTS produces BGP(:c :q :b) which then matches against :e :q :b because the _:c can be mapped to :e by the RDF instance mapping that is part of pattern instance mappings in 18.3.1.
Issue 4: Substitution can flip MINUS to its disjoint-domain case
In
SELECT ?x WHERE {
?x :p :c .
FILTER EXISTS { ?x :p :c . MINUS { ?x :p :c . } }
}
on the graph { :d :p :c } the substitution from 18.6 ends up producing
Minus( BGP( :d :p :c ), BGP( :d :p :c ) )
which produces a non-empty result because the two solution mappings for the Minus have disjoint domains and 18.5 dictates that then the result is not empty.
Issue 5: Substitution affects disconnected variables
In
SELECT ?x WHERE {
BIND ( :d AS ?x )
FILTER EXISTS { BIND ( :e AS ?z )
SELECT ?y WHERE { ?x :p :c } }
}
the substitution from 18.6 ends up producing
Join ( Extend( BGP(), ?z :e ),
ToMultiSet(
Project( ToList( BGP( :d :p :c ) ), { ?y } )
))
The ?x
inside the SELECT ?y
is not projected out so it is a “different” ?x
than the outer one - changing it to another other unused name in the same query
would not normally affect the query results.
An Improved “substitute” Operation
Evalauting
substitute is
performed for a given solution mapping. For example, the EXISTS
operation
evaluates to true
if a graph pattern has one or more matches given the variable bindings
of a solution mapping. We call this solution mapping the current row
in this description.
This section proposes an alternative mechanism. Rather than replace each variable by the value it is bound to in the current row, this alternative mechanism makes the whole of the current row available at any point in the evaluation of an EXISTS expression. It uses the current row to restrict the binding of variables at the points where variable bindings are created during evaluation of EXISTS to be those from the current row. It makes illegal syntactic constructs that could lead to an attempt to rebind a variable from the current row through using the AS syntax.
Section “Addressing Issues” describes how this alternative definition of substitute addresses each of the issues identified above.
There are 3 parts to the proposal:
- Place the current row mapping variables to values (the RDF terms) so that the variables always have their values from the current row. This is the replacement for syntactic substitution in the original definition.
- Renaming inner scope variables so that variables that are only used within a sub-query are not affected by the current row. This reflects the fact that in SPARQL such variables are not present in solutions mappings outside their sub-query.
- Disallow syntactic forms that set variables potentially already present in the current row. SPARQL solutions mappings can only have one binding for a variable and the current row provides that binding.
Renaming
Within sub-queries, variables with the same name can be used but do not appear in the overall results of the query if they do not occur in the projection in the sub-query. Such inner variables are not in-scope when they are not in the output of the projection part of the inner SELECT expression.
SELECT * {
?s :value ?v .
FILTER EXISTS {
{ SELECT (count(*) AS ?C) {
?s :property ?w .
}
}
FILTER ( ?C < ?v )
}
}
Here, the ?s is not mentioned in the projection in SELECT (count(*) AS ?C). Replacing ?s by, for example, ?V1234 in the sub-query does not change the overall results.
SELECT * {
?s :value ?v .
FILTER EXISTS {
{ SELECT (count(*) AS ?C) {
?V1234 :property ?w .
}
}
FILTER ( ?C < ?v )
}
}
Such variable usages can be replaced with a variable of a different name, if that name is not used anywhere else in the query, and the same results are obtained in the sub-query. A sub-query always has a projection as its top-most algebra operator.
To preserve this, any such variables are renamed so they do not coincide with variables from the current row being filtered by EXISTS.
The SPARQL algebra “project” operator has two components, an algebra expression and a set of variables for the projection.
For a projection algebra operation P with set of variables PV, define a partial mapping F from V, the set of all variables, to V where:
F(v) = v if v in PV
F(v) = v1 where v is a variable mentioned in the project expression
and v1 is a fresh variable
F(v) = v otherwise.
This process is applied throughout the graph pattern of EXISTS:
For any algebra expression X define the Variable Remapping PrjMap(X):
PrjMap(X) = replace all project operations project(P PV) with project(PrjMap(P,PV) PV) for each projection in X.
This replacement is applied bottom-up when there are multiple project operations in the graph pattern of EXISTS.Applying the renaming steps inside a sub-query does not change the solution mappings resulting from evaluating the sub-query. Remapping is only applied to variables not visible outside the sub-query. Renaming a variable in a SPARQL algebra expression causes the variable name used in bindings from evaluating the algebra expression to change. Since these are only variables that are not visible outside the sub-query, because they do not occur in the projection, the result of the sub-query is unchanged. SPARQL algebra expressions can not access the name of a variable nor introduce a variable except by remapping. Remapping is only applied to variables not visible outside the sub-query.
Limitations on Assignment
SPARQL syntactic forms that attempt to bind a variable through the use of AS that might already be in a solution mapping are forbidden in SPARQL: this is covered in the syntactic restrictions of 19.8 Grammar, notes 12 and 13.
This proposal adds the restriction that any variables in a current row, the set of variables in-scope of the expression containing EXISTS, can not be assigned with the extend algebra function linked to the AS syntax.
In addition, any use of VALUES in the EXISTS expression must not use a variable in the current row.
Restriction of Bindings
The proposal is to retain the variables from the current row, not substitute them for RDF terms, before evaluation, and also to restrict the binding of the solution to the RDF term of the current row. This occurs after renaming.
Binding for variables occur in several places in SPARQL:
- Basic Graph Pattern Matching
- Property Path Patterns
- The evaluation of algebra form Graph(var,P) involving a variable (from the syntax GRAPH ?variable {…})
Note that other places where solution mappings add variables are in extend function (connected to the AS syntax) and a multiset from VALUES syntax. Limitations on Assignment forbid this being of variables of the current row.
Restricting the RDF Terms for a variable binding is done using inline data that is joined with the evalaution of the basic graph pattern, property path or graph match.
For solution mapping μ, define Table(μ) to be the multiset formed from μ.
Table(μ) = { μ }
Card[μ] = 1
Define the Values Insertion function Replace(X, μ) to replace each occurence Y of a Basic Graph Pattern, Property Path Expression, Graph(Var, pattern) in X with join(Y, Table(μ)).
Evaluation of EXISTS
The evaluation of EXISTS is defined as:
Let μ be the current solution mapping for a filter and X a graph pattern, define the Evaluation of Exists exists(X)
exists(X) = true if eval(D(G), Replace(PrjMap(X), μ) is a non-empty solution sequence.
exists(X) = false otherwise
Addressing Issues
This section addresses each issue identified, given the proposal above.
Issue 1: Some uses of EXISTS are not defined during evaluation
This can be handled by handling solution sequences as graph patterns where needed by adding toMultiSet as is done for SubSelect in <IP_ADDRESS> Translate Graph Patterns with a a correction to the text at the end of Section 18.2 introductory paragraph.
query-errata-N: "Section 18.2 Translation to the SPARQL Algebra" intro (end): ToMultiSet can be used where a graph pattern is mentioned below because the outcome of evaluating a graph pattern is a multiset. Multisets of solution mappings are elements of the SPARQL algebra. Multisets of solution mappings count as graph patterns.
Issue 2: Substitution happens where definitions are only for variables
Rather then replace a variable by its value in the current row, the new mechanism makes the binding of variable to value available. The variable remains in the graph pattern of EXISTS and the evaluation.
Issue 3: Blank nodes substituted into BGPs act as variables
By making the current row, which can include blank nodes, available, and not modifying the BGP by substitution, no blank nodes are introduced into the evalaution of the BGP. Instead, the possible solutions is restricted by the current row.
Issue 4: Substitution can flip MINUS to its disjoint-domain case
Issue 4 is addressed because variables are not removed from the domain of MINUS. This propsoal does not preserve all uses of MINUS expressions; the problem identified in issue 4 is considered to be a bug in the SPARQL 1.1 specification.
Issue 5: Substitution affects disconnected variables
Issue 5 is addressed by noting that variables inside sub-queries which are not projected can be renamed without affecting the sub-query results. Whether to preserve that invariant or allow the variables to be set by the current row is a choice point - this design preserves the independence of disconnected variables.
Notes
The proposal described in this document does not cover use of variables from the current row in a HAVING clause.


All functions |
|
|---|---|
Arrange entries in data.frame |
|
Count observations by group |
|
Select distinct/unique rows in data.frame |
|
Filter entries in data.frame |
|
Parse,inspect and extract data.table from fst file |
|
Read and write fst files |
|
Data manipulation within groups |
|
|
|
Join table by common keys |
Fast lead/lag for vectors |
|
Pivot data from wide to long |
|
Dump or replace missing values in data.frame |
|
Mutate columns in data.frame |
|
Conditional update of columns in data.table |
|
Nest and unnest |
|
Pull out a single variable |
|
Rename column in data.frame |
|
Sample n rows from a table |
|
Select column from data.frame |
|
Slice rows in data.frame |
|
Summarise columns to single values |
|
Select top (or bottom) n rows (by value) |
|
Pivot data from long to wide |


@* * Copyright 2023 HM Revenue & Customs * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *@ @import uk.gov.hmrc.govukfrontend.views.html.components._ @import uk.gov.hmrc.govukfrontend.views.html.components.implicits._ @import uk.gov.hmrc.preferencesadminfrontend.config.AppConfig @import uk.gov.hmrc.preferencesadminfrontend.controllers.routes @import uk.gov.hmrc.preferencesadminfrontend.model.GmcBatchApproval @this( layout: Layout, form: FormWithCSRF, govukInput: GovukInput) @(gmcBatchApprovalForm: Form[GmcBatchApproval])(implicit request: Request[_], messages: Messages, appConfig: AppConfig) @layout(pageTitle = Some("Batch Rejection")) {


DayPilot Pro for JavaScript
»
Demo
AJAX Calendar/Scheduling Widgets for JavaScript.
Download
Download a trial version (1.1 MB).
DayPilotProJavaScriptTrial-8.3.2450.zip
Home
Calendar
Month
Scheduler
Gantt
Kanban
A Time Line for Multiple Resources.
Main
JavaScript Gantt
Rows
Row Selecting
Tasks
Task Creating
Task Resizing
Task Versions
Progressive Rendering
Links
Links
Grid
Auto Cell Width
API
jQuery
AngularJS
Note:
Read more about the
JavaScript Gantt
.


edwSQL.Rd
passes a SQL query from a separate .sql file to the EDW. Commented lines in the .sql file must be preceded by '--'. Blocked comments are not supported.
edwSQL(sql = NULL, resource = "custom", custom = NULL, file = TRUE, DSN = FALSE, uid = NULL, pwd = NULL, ...)
| sql | - name of a .sql file |
|---|---|
| resource | - Alias for the database connection
|
| custom | full connection string when using 'custom' as the resource. |
| file | switch indicating if sql parameter is a .sql file or a command. Default is TRUE (requires .sql file) |
| DSN | if TRUE, use a DSN as specified in `resource` parameter instead of a connection string (ie. for Axis PATS: resource = "TSI_32", DSN = TRUE) |
| uid | username for connections if necessary. Default is NULL, which will then use the user's system credentials. |
| pwd | password for connections that don't use the user's system credentials. Default is NULL. |
| ... | additional arguments. not used. |
Query results as a data frame
field names
elapsed system time to run the query
the number of records & variables in the results
# \donttest{ ### aliased resource (ie. EDWDBDev or EDWDBProd) mydata <- edwSQL(sql = "SQL/mydata_query.sql", resource = "EDWDBDev")$data#> Warning: cannot open file 'SQL/mydata_query.sql': No such file or directory#> Error in file(con, "r"): cannot open the connection### Custom resource - any valid ODBC source. If uid & pwd are not specified, then # the Windows (ie. a 'trusted connection' will be used). mydata <- edwSQL(sql = "SQL/mydata_query.sql", resource = "custom", custom = "Driver=SQL Server;Server=EDWDBDev; Database=ProvidenceEpic")$data#> Error: nanodbc/nanodbc.cpp:983: 00000: [unixODBC][Driver Manager]Data source name not found, and no default driver specified### User DSN - need to specify the uid & pwd. # This requires a user or system DSN to be installed on your computer. # The uid and pwd should not be set in the script or in the console for # security reasons. Instead, set them in your .Rprofile file like this: options(my_pwd = "mypassword", my_uid = "username") # then in your script, you can load the uid and pwd like this: uid <- getOption("my_uid") pwd <- getOption("my_pwd") mydata <- edwSQL(sql = "SQL/mydata_query.sql", resource = "ClinicalAnalytics", file = FALSE, DSN = TRUE)$data#> Error: nanodbc/nanodbc.cpp:983: 00000: [unixODBC][FreeTDS][SQL Server]Unable to connect: Adaptive Server is unavailable or does not exist [unixODBC][FreeTDS][SQL Server]Unable to connect to data source# }


About FRBR-Redis Datastore The technologies used in the FRBR-Redis Datastore Project
Redis
The FRBR-Redis Datastore implements the Entity-Relationship bibliographic theory called FRBR (Functional Requirements for Bibliographic Records) with open-source NoSQL key-value technology called Redis
Web frameworks
The FRBR-Redis Datastores uses the following web frameworks and javascript libraries to implement the user-interface


Buy tickets, win the lottery, become a millionaire.
Lottery backend system.
Pending jobs
(Main queue)
Completed jobs
(Current queue)


Installation
 src=“” alt=“PyPI version” height=“18”>

First download & install Python for windows.

On Linux Terminal
root@0x01:~# apt-get install python
root@0x01:~# git clone https://github.com/sgframework/sgpy.git
Cloning into 'sgpy'...
remote: Enumerating objects: 9, done.
remote: Counting objects: 100% (9/9), done.
remote: Compressing objects: 100% (8/8), done.
remote: Total 9 (delta 1), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (9/9), done.
root@0x01:~# cd sgpy/
root@0x01:~/sgpy# ls
LICENSE README.md x.py
root@0x01:~/sgpy# python x.py
What do you want to search for ? >>
On Command Line Windows
C:\Program Files\Windows Server\Bin\WebApps\Site\cdn\sgpy>python setup.py --help-commands
Standard commands:
build build everything needed to install
build_py "build" pure Python modules (copy to build directory)
build_ext build C/C++ extensions (compile/link to build directory)
build_clib build C/C++ libraries used by Python extensions
build_scripts "build" scripts (copy and fixup #! line)
clean clean up temporary files from 'build' command
install install everything from build directory
install_lib install all Python modules (extensions and pure Python)
install_headers install C/C++ header files
install_scripts install scripts (Python or otherwise)
install_data install data files
sdist create a source distribution (tarball, zip file, etc.)
register register the distribution with the Python package index
bdist create a built (binary) distribution
bdist_dumb create a "dumb" built distribution
bdist_rpm create an RPM distribution
bdist_wininst create an executable installer for MS Windows
check perform some checks on the package
upload upload binary package to PyPI
Extra commands:
alias define a shortcut to invoke one or more commands
bdist_egg create an "egg" distribution
develop install package in 'development mode'
dist_info create a .dist-info directory
easy_install Find/get/install Python packages
egg_info create a distribution's .egg-info directory
install_egg_info Install an .egg-info directory for the package
rotate delete older distributions, keeping N newest files
saveopts save supplied options to setup.cfg or other config file
setopt set an option in setup.cfg or another config file
test run unit tests after in-place build
upload_docs Upload documentation to PyPI
usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
or: setup.py --help [cmd1 cmd2 ...]
or: setup.py --help-commands
or: setup.py cmd --help
C:\Program Files\Windows Server\Bin\WebApps\Site\cdn\sgpy>
Setup, install and push pip package.
C:\Program Files\Windows Server\Bin\WebApps\Site\cdn\sgpy>python setup.py sdist
running sdist
running egg_info
writing sgpy.egg-info\PKG-INFO
writing dependency_links to sgpy.egg-info\dependency_links.txt
writing entry points to sgpy.egg-info\entry_points.txt
writing requirements to sgpy.egg-info\requires.txt
writing top-level names to sgpy.egg-info\top_level.txt
reading manifest file 'sgpy.egg-info\SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no files found matching '*' under directory 'data'
writing manifest file 'sgpy.egg-info\SOURCES.txt'
running check
creating sgpy-1.0.3
creating sgpy-1.0.3\sgpy.egg-info
creating sgpy-1.0.3\src
creating sgpy-1.0.3\src\sgapi
creating sgpy-1.0.3\src\sgapi\data
copying files to sgpy-1.0.3...
copying LICENSE.txt -> sgpy-1.0.3
copying MANIFEST.in -> sgpy-1.0.3
copying README.md -> sgpy-1.0.3
copying setup.cfg -> sgpy-1.0.3
copying setup.py -> sgpy-1.0.3
copying sgpy.egg-info\PKG-INFO -> sgpy-1.0.3\sgpy.egg-info
copying sgpy.egg-info\SOURCES.txt -> sgpy-1.0.3\sgpy.egg-info
copying sgpy.egg-info\dependency_links.txt -> sgpy-1.0.3\sgpy.egg-info
copying sgpy.egg-info\entry_points.txt -> sgpy-1.0.3\sgpy.egg-info
copying sgpy.egg-info\requires.txt -> sgpy-1.0.3\sgpy.egg-info
copying sgpy.egg-info\top_level.txt -> sgpy-1.0.3\sgpy.egg-info
copying src\sgapi\__init__.py -> sgpy-1.0.3\src\sgapi
copying src\sgapi\main.py -> sgpy-1.0.3\src\sgapi
copying src\sgapi\x.py -> sgpy-1.0.3\src\sgapi
copying src\sgapi\data\flash.dat -> sgpy-1.0.3\src\sgapi\data
Writing sgpy-1.0.3\setup.cfg
Creating tar archive
removing 'sgpy-1.0.3' (and everything under it)
C:\Program Files\Windows Server\Bin\WebApps\Site\cdn\sgpy>pip install -e .
Obtaining file:///C:/Program%20Files/Windows%20Server/Bin/WebApps/Site/cdn/sgpy
Requirement already satisfied: peppercorn in c:\program files\python37\lib\site-packages (from sgpy==1.0.3) (0.6)
Installing collected packages: sgpy
Found existing installation: sgpy 1.0.3
Uninstalling sgpy-1.0.3:
Successfully uninstalled sgpy-1.0.3
Running setup.py develop for sgpy
Successfully installed sgpy
C:\Program Files\Windows Server\Bin\WebApps\Site\cdn\sgpy>twine upload --skip-existing dist/*
Enter your username: sgpy
Enter your password:
Uploading distributions to https://upload.pypi.org/legacy/
Skipping sgpy-1.0.1-py2.py3-none-any.whl because it appears to already exist
Skipping sgpy-1.0.1-py3.7.egg because it appears to already exist
Skipping sgpy-1.0.1.tar.gz because it appears to already exist
Skipping sgpy-1.0.2.tar.gz because it appears to already exist
Uploading sgpy-1.0.3.tar.gz
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 20.5k/20.5k [00:02<00:00, 8.81kB/s]
C:\Program Files\Windows Server\Bin\WebApps\Site\cdn\sgpy>python setup.py install
running install
running bdist_egg
running egg_info
writing sgpy.egg-info\PKG-INFO
writing dependency_links to sgpy.egg-info\dependency_links.txt
writing entry points to sgpy.egg-info\entry_points.txt
writing requirements to sgpy.egg-info\requires.txt
writing top-level names to sgpy.egg-info\top_level.txt
reading manifest file 'sgpy.egg-info\SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no files found matching '*' under directory 'data'
writing manifest file 'sgpy.egg-info\SOURCES.txt'
installing library code to build\bdist.win-amd64\egg
running install_lib
running build_py
creating build\bdist.win-amd64\egg
creating build\bdist.win-amd64\egg\sgapi
copying build\lib\sgapi\chat.py -> build\bdist.win-amd64\egg\sgapi
creating build\bdist.win-amd64\egg\sgapi\data
copying build\lib\sgapi\data\flash.dat -> build\bdist.win-amd64\egg\sgapi\data
copying build\lib\sgapi\echo.py -> build\bdist.win-amd64\egg\sgapi
copying build\lib\sgapi\favicon.ico -> build\bdist.win-amd64\egg\sgapi
copying build\lib\sgapi\listen.py -> build\bdist.win-amd64\egg\sgapi
copying build\lib\sgapi\main.py -> build\bdist.win-amd64\egg\sgapi
copying build\lib\sgapi\server.py -> build\bdist.win-amd64\egg\sgapi
copying build\lib\sgapi\x.py -> build\bdist.win-amd64\egg\sgapi
copying build\lib\sgapi\__init__.py -> build\bdist.win-amd64\egg\sgapi
copying build\lib\sgapi\__main__.py -> build\bdist.win-amd64\egg\sgapi
byte-compiling build\bdist.win-amd64\egg\sgapi\chat.py to chat.cpython-37.pyc
byte-compiling build\bdist.win-amd64\egg\sgapi\echo.py to echo.cpython-37.pyc
byte-compiling build\bdist.win-amd64\egg\sgapi\listen.py to listen.cpython-37.pyc
byte-compiling build\bdist.win-amd64\egg\sgapi\main.py to main.cpython-37.pyc
byte-compiling build\bdist.win-amd64\egg\sgapi\server.py to server.cpython-37.pyc
byte-compiling build\bdist.win-amd64\egg\sgapi\x.py to x.cpython-37.pyc
byte-compiling build\bdist.win-amd64\egg\sgapi\__init__.py to __init__.cpython-37.pyc
byte-compiling build\bdist.win-amd64\egg\sgapi\__main__.py to __main__.cpython-37.pyc
installing package data to build\bdist.win-amd64\egg
running install_data
creating build\bdist.win-amd64\egg\data
copying src\sgapi\data\flash.dat -> build\bdist.win-amd64\egg\data
creating build\bdist.win-amd64\egg\EGG-INFO
copying sgpy.egg-info\PKG-INFO -> build\bdist.win-amd64\egg\EGG-INFO
copying sgpy.egg-info\SOURCES.txt -> build\bdist.win-amd64\egg\EGG-INFO
copying sgpy.egg-info\dependency_links.txt -> build\bdist.win-amd64\egg\EGG-INFO
copying sgpy.egg-info\entry_points.txt -> build\bdist.win-amd64\egg\EGG-INFO
copying sgpy.egg-info\requires.txt -> build\bdist.win-amd64\egg\EGG-INFO
copying sgpy.egg-info\top_level.txt -> build\bdist.win-amd64\egg\EGG-INFO
zip_safe flag not set; analyzing archive contents...
creating 'dist\sgpy-1.0.8-py3.7.egg' and adding 'build\bdist.win-amd64\egg' to it
removing 'build\bdist.win-amd64\egg' (and everything under it)
Processing sgpy-1.0.8-py3.7.egg
Removing c:\program files\python37\lib\site-packages\sgpy-1.0.8-py3.7.egg
Copying sgpy-1.0.8-py3.7.egg to c:\program files\python37\lib\site-packages
sgpy 1.0.8 is already the active version in easy-install.pth
Installing sgpy-script.py script to C:\Program Files\Python37\Scripts
Installing sgpy.exe script to C:\Program Files\Python37\Scripts
Installed c:\program files\python37\lib\site-packages\sgpy-1.0.8-py3.7.egg
Processing dependencies for sgpy==1.0.8
Searching for peppercorn==0.6
Best match: peppercorn 0.6
Adding peppercorn 0.6 to easy-install.pth file
Using c:\program files\python37\lib\site-packages
Finished processing dependencies for sgpy==1.0.8
Python & pip commands
C:\Program Files\Windows Server\Bin\WebApps\Site\cdn\sgpy\src>dir
Volume in drive C has no label.
Volume Serial Number is 7276-2F1C
Directory of C:\Program Files\Windows Server\Bin\WebApps\Site\cdn\sgpy\src
05/24/2019 10:45 PM DIR .
05/24/2019 10:45 PM DIR ..
05/24/2019 10:45 PM DIR sgapi
0 File(s) 0 bytes
3 Dir(s) 77,068,972,032 bytes free
C:\Program Files\Windows Server\Bin\WebApps\Site\cdn\sgpy\src>cd sgapi
C:\Program Files\Windows Server\Bin\WebApps\Site\cdn\sgpy\src\sgapi>dir
Volume in drive C has no label.
Volume Serial Number is 7276-2F1C
Directory of C:\Program Files\Windows Server\Bin\WebApps\Site\cdn\sgpy\src\sgapi
05/24/2019 10:45 PM DIR .
05/24/2019 10:45 PM DIR ..
05/24/2019 10:15 PM DIR data
05/24/2019 06:02 PM 129 main.py
05/24/2019 06:33 PM 190 pip-delete-this-directory.txt
05/24/2019 06:05 PM 41 x.py
05/24/2019 10:03 PM 112 __init__.py
4 File(s) 472 bytes
3 Dir(s) 77,068,972,032 bytes free
C:\Program Files\Windows Server\Bin\WebApps\Site\cdn\sgpy\src\sgapi>python main.py
Your IP is <IP_ADDRESS>, <IP_ADDRESS>
C:\Program Files\Windows Server\Bin\WebApps\Site\cdn\sgpy\src\sgapi>python x.py
Hello, World!
C:\Users\a7med\Desktop\development>pip install sgpy==1.0.1
Collecting sgpy==1.0.1
Using cached https://files.pythonhosted.org/packages/b3/b5/6e148a8eaae37241cb931f59568392461db694197082d5e018bffc9ce2f3/sgpy-1.0.1-py2.py3-none-any.whl
Requirement already satisfied: peppercorn in c:\program files\python37\lib\site-packages (from sgpy==1.0.1) (0.6)
Installing collected packages: sgpy
Successfully installed sgpy-1.0.1
C:\Program Files\Python37\Scripts>sgpy
Call your main application code here
C:\>sgpy
Call your main application code here
Python Server Initiation
C:\Program Files\Windows Server\Bin\WebApps\Site\cdn\sgpy\src\sgapi>python -m http.server 8000
Serving HTTP on <IP_ADDRESS> port 8000 (http://<IP_ADDRESS>:8000/) ...
<IP_ADDRESS> - - [25/May/2019 00:42:12] "GET / HTTP/1.1" 200 -
<IP_ADDRESS> - - [25/May/2019 00:42:12] code 404, message File not found
<IP_ADDRESS> - - [25/May/2019 00:42:12] "GET /favicon.ico HTTP/1.1" 404 -
<IP_ADDRESS> - - [25/May/2019 00:42:15] "GET /server.py HTTP/1.1" 200 -
<IP_ADDRESS> - - [25/May/2019 00:42:19] "GET /x.py HTTP/1.1" 200 -
<IP_ADDRESS> - - [25/May/2019 00:42:21] "GET /__init__.py HTTP/1.1" 200 -
<IP_ADDRESS> - - [25/May/2019 00:42:23] "GET /data/ HTTP/1.1" 200 -
<IP_ADDRESS> - - [25/May/2019 00:42:24] "GET /data/flash.csv HTTP/1.1" 200 -
<IP_ADDRESS> - - [25/May/2019 00:42:26] "GET /data/flash.dat HTTP/1.1" 200 -
<IP_ADDRESS> - - [25/May/2019 00:42:29] "GET /main.py HTTP/1.1" 200 -
<IP_ADDRESS> - - [25/May/2019 00:42:34] "GET /pip-delete-this-directory.txt HTTP/1.1" 200 -
Installed pip's
C:\Program Files\Windows Server\Bin\WebApps\Site\cdn>pip list
Package Version
---------- -------
peppercorn 0.6
pip 19.1.1
setuptools 28.8.0
sgpy 1.0.8
C:\Program Files\Windows Server\Bin\WebApps\Site\cdn>pip show sgpy
Name: sgpy
Version: 1.0.8
Summary: Python project extending main framework functionalities
Home-page: https://github.com/sgframework/sgpy
Author: sgpy
Author-email<EMAIL_ADDRESS>License: MIT
Location: c:\program files\python36\lib\site-packages
Requires: peppercorn
Required-by:
cmd commands history
┌────────────────────────────────────────┐
│0: pip install -e . │
│1: python setup.py sdist │
│2: pip install -e . │
│3: twine upload --skip-existing dist/* │
│4: python setup.py sdist │
│5: pip install -e . │
│6: twine upload --skip-existing dist/* │
│7: python setup.py sdist │
│8: pip install -e . │
│9: dir │
└────────────────────────────────────────┘


QBrew Test Procedure
Setup
This procedure will make use of the the included files
paleale.qbrew
and
stout.qbrew
. In addition, the
Configure dialog should be set with default
values using the Defaults buttons.
User Interface
Command Line
-
[___] Verify that the following command line options result in the
indicated behavior under Unix:
|
file
|
Open the specified file in QBrew
|
|
-help
|
Print the command line options
|
|
-version
|
Print the version number of QBrew
|
-
[___] Verify that all other command line options displayed by the
-help
option are currently used by Qt and behave as
described.
Menubar
-
[___] Verify that all menu accelerators work and are mapped to the
appropriate keystroke
-
[___] Verify that an appropriate help message is displayed in the
statusbar when each menu item is highlighted
File Menu
-
[___] Verify that the File->New menu
item creates a new, blank recipe
-
[___] Verify the File->Open... menu item
opens an existing recipe file
-
[___] Verify the File->Open Recent item
displays a submenu of recently opened files
-
[___] Verify the File->Save menu item
save the current recipe to a recipe file under the same file name. If
this is a new recipe, verify this behaves identically to the
File->Save as... menu item
-
[___] Verify the File->Save as... menu
item saves the current recipe to a recipe file, prompting for a new
file name, and prompting to overwrite existing files if applicable
-
[___] Verify the
File->Export... menu
item exports the current recipe to a different format, prompting
for a filename, and prompting to overwrite existing files if
applicable
-
[___] Verify the File->Print Preview...
menu item brings up a print preview dialog
-
[___] Verify the File->Print... menu
item brings up a print dialog that prints the recipe
-
[___] Verify the File->Quit menu item
quits the application, after prompting to save any unsaved recipes
Tools Menu
-
[___] Verify the Tools->Alcohol
Percentage menu item brings up the Alcohol Tool window
-
[___] Verify the Tools->Hydrometer
Correction menu item brings up the Hydrometer Tool
window
-
[___] Verify the Tools->Database
Editor menu item brings up the database editor
Options Menu
-
[___] Verify the Options->Main Toolbar
menu item toggles the toolbar between enabled and disabled states
-
[___] Verify the Options->Statusbar menu
item toggles the statusbar between enabled and disabled states
-
[___] Verify the Options->Configure...
menu item brings up the configure dialog
Help Menu
-
[___] Verify the Help->Contents... menu
item brings up a browser window displaying the application's user
manual
-
[___] Verify the Help->Primer... menu
item brings up a browser window displaying a brewing primer
-
[___] Verify the What's This? menu item
brings up cursor used to select help on specific controls
-
[___] Verify the Help->About... menu
item brings up a message box displaying the application's copyright
information
Toolbar
-
[___] Verify that the following buttons are on the toolbar by
default: New,
Open, Save,
Print, and
Context
-
[___] Verify that all buttons in the toolbar correspond to a menu
item in the menubar
-
[___] Verify that each button in the toolbar has an appropriate
tooltip and an appropriate Context help
entry
-
[___] Verify that the toolbar can be docked to each side of the
application
Statusbar
-
[___] Verify that the statusbar has only a message area
-
[___] Verify that the statusbar displays no message longer than two
seconds
Configure Dialog
-
[___] Verify that all controls are visible in the dialog box
-
[___] Verify that pressing OK or
Cancel removes the dialog window
-
[___] Verify that pressing Apply of
OK makes all changes take effect
immediately (as appropriate)
-
[___] Verify that pressing the Reset
button resets all dialog controls to default values
-
[___] Verify that all options in a dialog page are related to the
title of the page
-
[___] Verify that the Look and feel
combobox is used to select a Qt widget style
-
[___] Verify that the Show splash screen
checkbox is used to select whether the splash screen is shown
at program start
-
[___] Verify that the Number of recent
files spinbox selects the number of files displayed in
the Open Recent submenu
-
[___] Verify that the Enable autosave
checkbox and spinbox set autosave functionality, where the currently
edited file will be automatically saved according to the selected
interval
-
[___] Verify that the Enable autobackup
checkbox sets autobackup functionality, where a backup will be
created upon saving changes to a recipe
-
[___] Verify that the Load last file
checkbox will cause the application to automatically load the last
recipe used
-
[___] Verify the Measurement units combo
box contains entries for Metric and
US
-
[___] Verify that while the Measurement
units option is set to
Metric, all subsequent units will be in
Metric (grams, kilograms, liters)
-
[___] Verify that while the Measurement
units option is set to US,
all subsequent units will be in US measurements (ounces, pounds,
gallons)
-
[___] Verify that the Mash efficiency
spinbox sets the recipe mash efficiency, in the range of 0.00 to 1.00
in increments of 0.01
-
[___] Verify that the Steep yield
spinbox sets the yield for steeped grains, in the range of 0.00 to 1.00
in increments of 0.01
-
[___] Verify that the Use Tinseth checkbox
toggles the application calculation routines to use the Tinseth
bitterness formula instead of the default (Rager) bitterness formula
-
[___] Verify that the Use Morey checkbox
toggles the application calculation routines to use the Morey color
formula instead of the default (Daniels) color formula
-
[___] Verify that the Batch size spinbox
selects the default back size for new recipes, in the range of 0.00
to 100.00 in increments of 0.25
-
[___] Verify that the Recipe style combobox
selects the default recipe style for new recipes
-
[___] Verify that the Hop Type combobox
selects the default hop type for new hop ingredients
Alcohol Tool
-
[___] Verify that the Original gravity
spinbox ranges from 0.900 to 1.400 in increments of 0.001
-
[___] Verify that the Final gravity spinbox
ranges from 0.900 to 1.400 in increments of 0.001
-
[___] Verify that the Alcohol by Volume
label displays the calculated ABV
-
[___] Verify that the Alcohol by Weight
label displays the calculated ABW
Hydrometer Tool
-
[___] Verify that the Sample temperature
spinbox has the suffix of "°F", and ranges from 32.0 to 212.0 in
increments of 0.2. If Metric measurements are used, verify that the
suffix is "°C", and ranges from 0.0 to 100.0 degrees.
-
[___] Verify that the Calibrated temperature
spinbox has the suffix of "°F", and ranges from 32.0 to 212.0 in
increments of 0.2. If Metric measurements are used, verify that the
suffix is "°C", and ranges from 0.0 to 100.0 degrees.
-
[___] Verify that the Hydrometer reading
spinbox has no suffix and ranges from 0.850 to 1.200 in increments of
0.001
-
[___] Verify that the Corrected reading
label has no suffix, and changes as the values in the spinboxes
change
Database Editor
Grains
-
[___] Verify that selecting the
Grains tab changes the list section
to controls for grain ingredients
-
[___] Verify that the list of ingredients in the displayed in
the list section matches the selection available in the
database file
-
[___] Verify that the Grain field can be
edited by the user
-
[___] Verify that the Extract field can be
edited and its spinbox ranges from 1.000 to 1.100 in increments of
0.001
-
[___] Verify that the Color field can be
edited and its spinbox ranges from 0.0 to 500.0 in increments of
1.0
-
[___] Verify that the Type field combobox has
the entries of Grain, Extract, Adjunct,
Sugar and Other, and that the combobox is not user
editable.
-
[___] Verify that the Use field combobox has
the entries of Extract, Mashed, Steeped,
and Other, and that the combobox is not user editable
-
[___] Verify that setting the Grain field of
an entry to blank removes the grain from the list
-
[___] Verify that attempting to add a grain that already
exists in the database will prompt a confirmation dialog
Hops
-
[___] Verify that selecting the Hops tab
changes the list section to controls for hop ingredients
-
[___] Verify that the list of ingredients in the displayed in
the list section matches the selection available in the
database file
-
[___] Verify that the Hop field combobox can
be edited by the use
-
[___] Verify that the Alpha field has a
spinbox with a suffix of "%", and ranges from 0.0 to 50.0 in increments
of 0.1
-
[___] Verify that setting the Hop field of an
entry to blank removes the hop from the list
-
[___] Verify that attempting to add a hop that already
exists in the database will prompt a confirmation dialog
Miscellaneous
-
[___] Verify that selecting the
Miscellaneous tab changes the ingredients
section to controls for miscellaneous ingredients
-
[___] Verify that the list of ingredients in the displayed in
the list section matches the selection available in the
database file
-
[___] Verify that the Misc field has a
combobox that can be edited by the user
-
[___] Verify that the Type field has a
combobox with the entries Yeast, Fining,
Herb, Spice, Flavor, Additive and
Other.
-
[___] Verify that the Notes field has an
editbox which is editable by the user
-
[___] Verify that setting the Misc field of
an entry to blank removes the ingredient from the list
-
[___] Verify that attempting to add an ingredient that already
exists in the database will prompt a confirmation dialog
Styles
-
[___] Verify that selecting the
Styles tab changes the list section
to controls for styles
-
[___] Verify that the list of styles in the displayed in
the list section matches the selection available in the
database file
-
[___] Verify that the Style field has a
combobox that can be edited by the user
-
[___] Verify that the Min. OG and
Max. OG fields have spinboxes that
range from 1.000 to 1.150 in increments of 0.001
-
[___] Verify that the Min. OG
spinbox has a maximum value equal to the minimum value of the
Max. OG spinboxes, and vice versa
-
[___] Verify that the Min. FG and
Max. FG fields have spinboxes that
range from 1.000 to 1.150 in increments of 0.001
-
[___] Verify that the Min. FG
spinbox has a maximum value equal to the minimum value of the
Max. FG spinboxes, and vice versa
-
[___] Verify that the Min. IBU and
Max. IBU fields have spinboxes that
range from 0 to 120 in increments of 1
-
[___] Verify that the Min. IBU
spinbox has a maximum value equal to the minimum value of the
Max. IBU spinboxes, and vice versa
-
[___] Verify that the Min. SRM and
Max. SRM fields have spinboxes that
range from 0 to 50 in increments of 1
-
[___] Verify that the Min. SRM
spinbox has a maximum value equal to the minimum value of the
Max. SRM spinboxes, and vice versa
-
[___] Verify that setting the Style field of
an entry to blank removes the style from the list
-
[___] Verify that attempting to add an style that already
exists in the database will prompt a confirmation dialog
Help Browser
-
[___] Verify that the Contents and
Primer help browser contains
File->Print...,
File->Quit,
Navigate->Backward,
Navigate->Forward, and
Navigate->Home menu items.
-
[___] Verify that the Contents and
Primer help browser contains
Back, Forward,
Home, Print and
Quit toolbar buttons
-
[___] Verify that local links embedded in the
Contents and
Primer help browser content are active and
usable
Recipe and Characteristics
-
[___] Verify that the Title and
Brewer editboxes have no effect on any
recipe calculations or other displayed information
-
[___] Verify that the Style combobox
displays a list of beer styles corresponding to all style entries in
the
qbrewdata
file
-
[___] Verify that changing the Style
combobox entry immediately changes the Minimum
Gravity, Maximum Gravity,
Minimum Bitterness, Maximum
Bitterness, Minimum Color and
Maximum Color labels in the
Characteristics frame, as well as the
Characteristics frame's title
-
[___] Verify that the Size spinbox displays
the application batch size (set in the
Configure dialog) by default, with a range
from 0.00 to 5000.00 in increments of 0.25
-
[___] Verify that any changes to the Size
spinbox results in an immediate change to the Recipe
Gravity, Recipe Bitterness,
Recipe Color, Estimated
FG, Alcohol by Volume and
Alcohol by Weight labels in the
Characteristics frame
-
[___] Verify that the Characteristics frame
displays style information in normal text, and recipe information in
bold text
Grains
-
[___] Verify that selecting the Grains tab
changes the ingredients section to controls for grain ingredients
-
[___] Verify that the combobox for the Grain
field contains a list of grains corresponding to those in the
qbrewdata
database
-
[___] Verify that the edit field of the
Grain combobox can be edited by the user
-
[___] Verify that the Quantity spinbox
has the suffix of "lb" by default, and ranges from 0.00 to 1000.00 in
increments of 0.25
-
[___] Verify that the Extract spinbox
ranges from 1.000 to 1.100 in increments of 0.001
-
[___] Verify that the Color spinbox
ranges from 0.0 to 500.0 in increments of 1.0, and has a suffix of a
degree sign.
-
[___] Verify that the Type field combobox has
the entries of Grain, Extract, Adjunct,
Sugar and Other, and that the combobox is not user
editable.
-
[___] Verify that the Use combobox has the
entries of "extract", "mashed", "steeped"
and "other", and that the combobox edit field is not user
editable
-
[___] Verify that setting the Grain field of
an entry to blank removes the grain from the list
-
[___] Verify that using the [+] and [-] buttons will add or remove a
grain from the list
Hops
-
[___] Verify that selecting the Hops tab
changes the ingredients section to controls for hop ingredients
-
[___] Verify that the combobox for the Hop
field contains a list of hops corresponding to those in the
qbrewdata
database
-
[___] Verify that the edit field of the
Hop combobox can be edited by the user
-
[___] Verify that the Quantity spinbox
has the suffix of "oz" by default, and ranges from 0.00 to
1000.00 in increments of 0.25
-
[___] Verify that the Type combobox
includes the entries of "Pellet", "Plug" and
"Whole" by default, and that the edit field of the combox is
user editable
-
[___] Verify that the Alpha spinbox has a
suffix of "%", and ranges from 0.0 to 50.0 in increments of 0.1
-
[___] Verify that the Time spinbox has a
suffix of "min", and ranges from 0 to 120 in increments of 5
-
[___] Verify that setting the Hop field of
an entry to blank removes the hop from the list
-
[___] Verify that using the [+] and [-] buttons will add or remove a
hop from the list
Miscellaneous
-
[___] Verify that selecting the
Miscellaneous tab changes the ingredients
section to controls for miscellaneous ingredients
-
[___] Verify that the combobox for the Misc
field contains a list of ingredients corresponding to those in the
qbrewdata
database
-
[___] Verify that the edit field of the
Misc combobox can be edited by the user
-
[___] Verify that the Quantity spinbox
has the suffix of "unit" by default, and ranges from 0.00 to
1000.00 in increments of 0.25
-
[___] Verify that the Notes editbox is
editable by the user
-
[___] Verify that setting the Misc field of
an entry to blank removes the ingredient from the list
-
[___] Verify that using the [+] and [-] buttons will add or remove an
ingredient from the list
Notes
-
[___] Verify that the Recipe Notes edit box
can be edited with user text
-
[___] Verify that the Recipe Notes are
initially empty on a new file, upon started the application and upon
selecting a new recipe after the notes have been modified
-
[___] Verify that the Recipe Notes can be
saved with a recipe, and restored upon opening a recipe
-
[___] Verify that the Batch Notes edit box
can be edited with user text
-
[___] Verify that the Batch Notes are
initially empty on a new file, upon started the application and upon
selecting a new recipe after the notes have been modified
-
[___] Verify that the Batch Notes can be
saved with a recipe, and restored upon opening a recipe
Calculations
Using the indicated files, verify the following values in the
Characteristics frame:
-
[___] Verify with a
qbrewdata
file from version 0.3.0, that the DATA_PREVIOUS in
resource.h
value is still valid.
-
[___] Verify with the
paleale.qbrew
recipe, that
changing the recipe Size to 10.0
results in a Gravity of 1.029, Bitterness of 26, Color of 8
without the Use Morey checked (6
with), Estimated FG of 1.007, Alcohol by Volume of 2.8 and
Alcohol by Weight of 2.2
-
[___] Verify with the
stout.qbrew
recipe, that changing the Mash efficiency
to 83 results in a Gravity of 1.078, Bitterness of 80, Estimated FG
of 1.019, Alcohol by Volume of 7.5, and Alcohol by Weight of 5.9, and
that Color has not changed
-
[___] Verify with the
paleale.qbrew
recipe, that changing the Extract of the
Light malt extract to 1.044 results in a Gravity of 1.09, Bitterness
of 47, and that Color has not changed
-
[___] Verify with the
stout.qbrew
recipe, that changing the Use of the
British chocolate malt to "steeped" results in a Gravity of 1.067,
Bitterness of 84, and that Color has not changed
-
[___] Verify with the
paleale.qbrew
recipe, that adding 5 minutes to each hop
Time results in a Bitterness of 59 without
the Use Tinseth checked, 56 with the
Use Tinseth checked, and that Gravity and
Color have not changed
-
[___] Verify with the
stout.qbrew
recipe, that changing the Alpha for all
hops to 9.6 results in a Bitterness of 86 without the Use
Tinseth checked, 72 with the Use
Tinseth checked, and that Gravity and Color have not
changed
-
[___] Verify with either recipe, that any changes to
Miscellaneous ingredients do not change any
recipe characteristics
Without changing any default values, create a new recipe with the 7.0
pounds of mashed British two-row (1.038 extract, 2.5 color), 1 pound of
steeped CaraMunich (1.033 extract, 75.0 color), 1 ounce of pellet
Tettnanger (3.7 alpha) at 60 minutes, 0.5 ounces of whole Saaz (3.5
alpha) at 10 minutes, and 1 unit of Lager yeast
-
[___] Verify that this recipe results in a Gravity of 1.043,
Bitterness of 17 without Use Tinseth
checked (16 with), Color of 12 without Use
Morey checked (11 with), Estimated FG of 1.011, Alcohol
by Volume of 4.2 and Alcohol by Weight of 3.3
Using the Hydrometer Tool, verify the
following:
-
[___] Verify that entering a Sample
temperature of 212.0, a Calibrated
temperature of 32.0, and a Hydrometer
reading of 1.100 results in a Corrected
reading of 1.148
-
[___] Verify that entering a Sample
temperature of 32.0, a Calibrated
temperature of 212.0, and a Hydrometer
reading of 1.000 results in a Corrected
reading of 0.96
-
[___] Verify that entering a Sample
temperature of 80.0, a Calibrated
temperature of 60.0, and a Hydrometer
reading of 1.065 results in a Corrected
reading of 1.067
-
[___] Verify that entering a Sample
temperature of 85.2, a Calibrated
temperature of 68.0, and a Hydrometer
reading of 1.077 results in a Corrected
reading of 1.080
Set the configuration to Metric units, batch size of 15 liters, and
enter the following ingredients into a new recipe: mashed, American
two-row 4.0kg 1.037 extract 1.8 color, Columbus hops 10g pellet 15.4
alpha 60 time.
-
[___] Verify that the Recipe Gravity is 1.062, the Recipe Bitterness
is 27, the Recipe Color is 4, the ABV is 6.0 and the ABW is 4.7
-
[___] Verify that entering into the Alcohol tool an
Original gravity of 1.058 and a
Final gravity of 1.012 results in an ABV of
5.9% and ABW of 4.7%
-
[___] Verify that entering into the Alcohol tool an
Original gravity of 1.070 and a
Final gravity of 1.018 results in an ABV of
6.7% and ABW of 5.3%
Documentation
-
[___] Verify that the user manual available under the
Help->Contents... contains correct
version and copyright dates.
-
[___] Verify that window titles for all online documentation are
formatted correctly. Errors can arise form newlines and nbsp tags.
-
[___] Verify that The Menus sections of the
user manual contain all available menu commands, with no unavailable
commands
-
[___] Verify that the Using QBrew sections
of the user manual are an accurate portrayal of the QBrew application
-
[___] Verify that the primer available under the
Help->Primer... contains correct
copyright dates.
-
[___] Verify that the information presented in the primer is not
dependant upon the use of the QBrew application
-
[___] Verify that the
ChangeLog
and
README
files have the correct version and
copyright dates
-
[___] Verify that the html documentation is viewable in a variety of
browsers. Using the
Konqueror
validation tool, or similar, validate the html.
-
[___] Verify that miscellaneous documentation contained in the
win
and
mac
directories are up to date and
accurate.
Miscellaneous
-
[___] Verify that the text file created with the
File->Export... command using the
text format, is well formatted within the limitations of plain
text
-
[___] Verify that the HTML file created with the
File->Export... command using the
HTML format, is well formatted. Use
tidy
for verification
-
[___] Verify that all controls (other than labels) have
What's This help available
-
[___] Verify by using
ldd
or a similar
command or method, that the requirements for QBrew are limited to
POSIX, X11 and Qt (and the requirements for those libraries)
-
[___] Verify that the default file extension for recipe files is
"
qbrew
"
-
[___] Verify that the default application configuration file on Unix
is
~/.config/usermode/qbrew.conf
, and
that the system registry or preferences facility is used under Windows
or Macintosh.
-
[___] Verify that if a file by the name of
.qbrewdata
is present in the user's
home directory, that the data in this file will be used instead of
the defaults
-
[___] Verify that the following files are installed by default to
/usr/local/share/qbrew
:
qbrewdata
,
splash.png
, and any available translations
-
[___] Verify that all files under
/usr/local/share/doc/qbrew
with the
prefix of handbook-
form a complete user
manual navigable with "Prev" and "Next" links
-
[___] Verify the existance of
LICENSE
,and
README
, files under
/usr/local/share/doc/qbrew
-
[___] Verify that using the instructions given in the
INSTALL
file, that QBrew can be built
and executed on a variety of Unix and unix-like operating system
-
[___] Verify that the ui files in the source directory have Qt
versions of 4.0.
-
[___] Verify that the correct list of contributors is contained in
the About dialog and the documentation


Navy hands over unregistered cocoa factory, suspect to NAFDAC
by Agency ReportThe Nigerian Navy in Lagos on Wednesday handed over a suspect and an unregistered cocoa beverage factory to the National Agency for Food and Drugs Administration and Control.
The Flag Officer Commanding, Western Naval Command, Rear Admiral Oladele Daji, handed over the suspect alongside the items to NAFDAC at Nigerian Navy Ship WEY in Lagos.
Daji, who was represented by the Commander NNS WEY, Commodore Uduak Ibanga, said the suspect was caught producing unregistered cocoa beverage named Belling Chokovita.
“The suspect was caught by NNS WEY security patrol team at 01:30hrs on Sunday November 17 in his factory at Mammy market, Navy Town, Ojo.
“The following items recovered from the suspect’s illegal factory are 10 cartons x 12 pieces of finished products, 152 pieces of unpacked products.
“Others are 23 bags of grounded cocoa powder and seven bags of Calcium Carbonate Power,” he said.
Commodore Ibanga advised Nigerians to purchase only NAFDAC registered products and to always check the manufacturing or production and expiry dates of products before consumption.
“The navy will not rest on her oars in carrying out this task and the cooperation of the general public is solicited,” he said.
(NAN)


This subpart provides policies and procedures for exempting from import duties certain supplies purchased under Government contracts.
United States laws impose duties on foreign supplies imported into the customs territory of the United States. Certain exemptions from these duties are available to Government agencies. Agencies must use these exemptions when the anticipated savings to appropriated funds will outweigh the administrative costs associated with processing required documentation.
For regulations governing importations and duties, see the Customs Regulations issued by the U.S. Customs Service, Department of the Treasury (19 CFR Chapter 1). Except as provided elsewhere in the Customs Regulations (see 19 CFR 10.100), all shipments of imported supplies purchased under Government contracts are subject to the usual Customs entry and examination requirements. Unless the agency obtains an exemption (see 25.903), those shipments are also subject to duty.
(a) Subchapters VIII and X of Chapter 98 of the Harmonized Tariff Schedule of the United States (19 U.S.C. 1202) list supplies for which exemptions from duty may be obtained when imported into the customs territory of the United States under a Government contract. For certain of these supplies, the contracting agency must certify to the Commissioner of Customs that they are for the purpose stated in the Harmonized Tariff Schedule (see 19 CFR 10.102-104, 10.114, and 10.121 and 15 CFR Part 301 for requirements and formats).
(b) Supplies (excluding equipment) for Government-operated vessels or aircraft may be withdrawn from any customs-bonded warehouse, from continuous customs custody elsewhere than in a bonded warehouse, or from a foreign-trade zone, free of duty and internal revenue tax as provided in 19 U.S.C. 1309 and 1317. The contracting activity must cite this authority on the appropriate customs form when making purchases (see 19 CFR 10.59 - 10.65).


Incident
Transit
T-HUB Analytics
Map View
Shared Segments
Shared Segments
May - Original Performance
May - Optimized Performance
June - Original Performance
June - Optimized Performance
Options
Route:
Direction:
Departure Time:
Delay Prediction
REAL-TIME


@(classes: Seq[String])(cellContents: Html) @* This template populates a table cell so it can accept arbitrary markup including further tables *@


Follow along with this document by interacting with the example playback in your browser.
Every playback has a title and a description. This sets the context for the code that a viewer is about to see animated.
The author might provide some background on the problem that is being solved or give some hint about the techniques that will be shown in the playback.
Tip: The description can be hidden by clicking on the name of the playback at the top of the screen with a dropdown arrow next to it.
This is the playback window. It has a tab for each file to be animated, some controls, and other information. A playback shows the evolution of some code with some comments about how and why the code is changing over time. A developer can create a playback with a series of comments that tells the story of how their code evolved.
To get a playback to start or stop there is a button to toggle between Play
and Pause
.
Playback 'events' are animated one at a time. There are different kinds of playback events. There are events for the insertion
and deletion of individual text characters along with events to record file/directory operations (create, delete, move, rename).
There are buttons to move one event at a time (<
for backward and >
for forward) or to
move one comment at a time (<<
to move to the previous comment and >>
to move forward
to the next comment).
There are keyboard shortcuts to move through a playback as well. The space bar
toggles between play and pause.
left arrow
and right arrow
move the playback one event at a time. shift + left arrow
and shift + right arrow
move the playback to the next comments.
Filters limit what part of a development session gets played back. More information about filtering can be found here.
Tip: Although Storyteller is capable of animating the insertion and deletion of every single character in a programming session some viewers prefer to skip the animation and focus on the state of the code at comments points only. Often, this allows a viewer to get through the playback faster and focus on what the author wants the viewer to see. These controls enable the flexibility to view the playback with animation or simply at the comment points.
As the playback progresses events are handled in the playback window. The most current event has some information recorded about it. This information is described in the section labelled 'Event Info' in the user interface. It displays the event number, the event type, the location of the event, and a timestamp of when the event was recorded.
This part of the interface shows which developer was active when the event was recorded. Storyteller supports multiple developers programming together in groups. Each active developer will be shown here. More information about managing developers can be found here.
Storyteller uses the Gravatar service for developer images.
Tip: Mousing over the developer image shows more information about the developer.
The green playback progress bar shows roughly how many relevant events have been played and how many are left. The dark green vertical bars are points in the playback where comments have been added. By default, a playback will pause when an event with a comment is encountered.
Tip: The playback progress bar can also be used to jump to different points in the playback. Click anywhere in the bar and the viewer will be taken to that point.
On the left hand side of the screen is the comment area. When making a playback, authors can pause and add a comment. When the playback is replayed the comment will show at the pause point.
When making the comment the author can choose to highlight some code and it will be associated with the comment. It shows up with a highlight
in the playback window when the comment is clicked and is used to direct a comment to a one or more portions of the code. The picture above
shows a playback paused on a comment. There is some highlighted code, (new Thread
and a )
at the end of the line,
that the author is describing in the comment. More information about making comments can be found here.
When moving from comment to comment new code will show up in blue. Previously displayed code will be changed to the color green. If there was some deleted text a red bar will show up where the delete occurred. This makes it easy to see what has changed since the last comment. In addition, for each file that has been updated since the last comment will get a marker * next to the name in the file tabs.
The author can create comments that include text, hand drawn pictures, screenshots, or video to help them describe what is happening in their code.
Tip: Clicking on an image or a video will make it larger.
A single pause point can include more than one comment. Multiple comments are stacked on top of each other and some may not be visible on the screen until the viewer scrolls down. To make it easier to notice that there are multiple comments there is a comment counter above the entire comment stack. Each time a viewer clicks on a comment a running sum of 'read' comments will be increased. The viewer can use this to help them know if they are ready to move on in the Playback.
As a playback progresses the viewer can see the state of the file system when each event was recorded. This is shown on the bottom left of the screen. Each time a file was added, removed, renamed, or moved in the author's programming session this view will be updated.
A viewer can download the code at any point during a playback and experiment with it in the same state it is in the playback window. More information about downloading code can be found here.
Storyteller is also a distributed version control system that supports simple branching and merging. More information about this feature can be found here.


user Class
User class: represents a users of the MobilEnt instance.
Methods
create
-
data
Creates a new user record in the MobilEnt system.
Executes the supplied callback when the user is created, passing a null error object and the user object. The user object is a JSON object containing the user record with user id, name, email, company, country, created, modified, and _id.
On error, the callback error is non-null and contains one of the following 'missing-parameter' (400) 'username-taken' (400) 'email-taken' (400) 'insert-error' (400)
Parameters:
-
data
ObjectUser record to create. Note that at a minimum you must supply a user name, email, and password at a minimum.
Example:
PUT http://mobilent.com/api/user/create.json
Body:
{
"user": "gollum",
"email"<EMAIL_ADDRESS>"pass": "precious"
}
api.user.create({ user: "gollum", email<EMAIL_ADDRESS>pass: "precious" },
function (err, obj) { alert(JSON.stringify(err ? err : obj)) });
Returns:
{
"user": "gollum",
"name": "Gollum Smeagol",
"email"<EMAIL_ADDRESS>"company": "Independent Agent",
"country": "Mordor",
"created": "20130520142109-07:00",
"modified": "20130520142226-07:00",
"_id": "519a93c5da78cdb4a5000001"
}
delete
-
data
Deletes an existing user in the MobilEnt system.
Executes the supplied callback when the user is deleted, passing a null error object and the user object. The user object is a JSON object containing the user record with user id, name, email, company, country, created, modified, and _id.
On error, the callback error is non-null and contains one of the following 'missing-parameter' (400) 'delete-error' (400)
Parameters:
-
data
ObjectUser record to delete. Note that you must supply suffient conditions to locate at least one user.
Example:
DELETE http://mobilent.com/api/user/delete.json
Body:
{
"user": "gollum",
}
api.user.delete({ user: "gollum" },
function (err, obj) { alert(JSON.stringify(err ? err : obj)) });
Returns:
{
"user": "gollum",
"name": "Gollum Smeagol",
"email"<EMAIL_ADDRESS>"company": "Independent Agent",
"country": "Mordor",
"created": "20130520142109-07:00",
"modified": "20130520142226-07:00",
"_id": "519a93c5da78cdb4a5000001"
}
login
()
Logins in a user into the MobilEnt system. Has both a local (api.user.login) and a remote (api/user/login.json) version.
Executes the supplied callback when the user has been logged in, passing a null error obect and the user object. The user object is a JSON object containing the user record with user id, name, email, company, country, created, modified, and _id.
On error, the callback error is non-null and contains one of the following 'user-not-found' (404) 'invalid-password' (400)
Example:
POST http://mobilent.com/api/users/login.json
Body:
{
"user": "gollum",
"pass": "precious"
}
api.user.login({ user: "gollum", pass: "precious" });
Returns:
{
"user": "gollum",
"name": "Gollum Smeagol",
"email"<EMAIL_ADDRESS>"company": "Independent Agent",
"country": "Mordor",
"created": "20130520142109-07:00",
"modified": "20130520142226-07:00",
"_id": "519a93c5da78cdb4a5000001"
}
read
-
conditions
Retrieves a user record from the MobilEnt system.
Executes the supplied callback when the user located, passing a null error object and the user object. The user object is a JSON object containing the user record with user id, name, email, company, country, created, modified, and _id.
On error, the callback error is non-null and contains one of the following 'missing-parameter' (400) 'user-not-found' (404)
Parameters:
-
conditions
ObjectList of conditions to use to search for the user.
Example:
GET http://mobilent.com/api/user/read.json?user=gollum
api.user.read({ user: "gollum" }, function (err, obj) { alert(JSON.stringify(err ? err : obj)) });
Returns:
{
"user": "gollum",
"name": "Gollum Smeagol",
"email"<EMAIL_ADDRESS>"company": "Independent Agent",
"country": "Mordor",
"created": "20130520142109-07:00",
"modified": "20130520142226-07:00",
"_id": "519a93c5da78cdb4a5000001"
}
update
-
data
Updates an existing user or creates a new user record in the MobilEnt system.
Executes the supplied callback when the user is created, passing a null error object and the user object. The user object is a JSON object containing the user record with user id, name, email, company, country, created, modified, and _id.
On error, the callback error is non-null and contains one of the following 'missing-parameter' (400) 'save-error' (400)
Parameters:
-
data
ObjectUser record to update. Note that you must supply a user name in order to locate at least one user. If you are creating a user, you must supply a user id, email, and password at a minimum.
Example:
POST http://mobilent.com/api/user/update.json
Body:
{
"user": "gollum",
"country": "Mordor",
"company": "Mordor Inc."
}
api.user.update({ user: "gollum", country: "Mordor", company: "Mordor Inc." },
function (err, obj) { alert(JSON.stringify(err ? err : obj)) });
Returns:
{
"user": "gollum",
"name": "Gollum Smeagol",
"email"<EMAIL_ADDRESS>"company": "Independent Agent",
"country": "Mordor",
"created": "20130520142109-07:00",
"modified": "20130520142226-07:34",
"_id": "519a93c5da78cdb4a5000001"
}


My favorite places
These are a few of my places
Around the world
Here are some of my favorite places!
"Behind these stones, I peed."
- Ireland
- Paris
- United states
- San Franscico, California
- Portland, Oregon
- Chicago, illinois
- New York, New York
- Orlando, FLorida
The most beautiful places I've been are:
- Paris
- Ireland
- Scotland
- England
- San Francisco
All about me, in a little nut shell!


Explore christmas time in waterford through the variety of family orientated events and workshops that Winterval has to offer. Get skating with waterford on ice, watch the heart of waterford city come to life with christmas lights, the christmas crafts festival, markets and the visit of santa amd his elves. Plenty of fun for all the family!
Come and watch waterfords annual parade in commeration of irelands most famous patron saint St.Patrick in very place that first declared St. Patrick’s Day a general holiday in Ireland in 1903. Throughout the parade you will get to witness a wide variety of acts from dancing to martial arts along with the many colorful floats that are made by different clubs and societys just for this special day.
A festival celebrating food heritage and culture in Waterford! Take a day out with the whole family and watch the streets of waterford come to life through the wide variety of food available, from a variety of countries around the world.
A festival designed for adults of all ages to explore all the best things about Bavaria including the food, music, atmosphere and of course beer! Discover and embrace your inner German.
A completely free air music festival held in the viking triangle of waterford every saturday during the summer. Explore the creativity of waterford and see all the glories of art it has to offer.


Default
Primary
Secondary
Basic
Compact
Labeled
Labeled
Combo
Choice 1
Choice 2
Choice 3
Search Dropdown
Arabic
Chinese
Danish
Dutch
English
French
German
Greek
Hungarian
Italian
Japanese
Korean
Lithuanian
Persian
Polish
Portuguese
Russian
Spanish
Swedish
Turkish
Vietnamese
Horizontal
Hidden
Vertical
Hidden
Fade In
Hidden
Disabled
Loading
1
2
3
1
2
One
Two
One
Two
Mini
Tiny
Small
Large
Big
Huge
Massive
Yellow
Orange
Green
Teal
Blue
Purple
Pink
Red
Black
Inverted
Basic
Colored
Basic Colored


THE SPANISH PRISONER (Sony Classics) Starring: Campbell Scott, Rebecca Pidgeon, Steve Martin, Ben Gazzara. Screenplay: David Mamet. Producer: Jean Doumanian. Director: David Mamet. MPAA Rating: R (profanity, violence) Running Time: 110 minutes. Reviewed by Scott Renshaw.
I recall being only mildly impressed with David Mamet's HOUSE OF GAMES when I first saw it a decade ago, despite general critical acclaim. Sure, it was a meticulously crafted intellectual puzzle, and, even more impressive, it was a puzzle which didn't fall apart completely as you were thinking about it on the way home. With Lindsey Crouse serving serving as its remote heroine, however, all its unpredictable twists felt like they were taking place in a vacuum, leaving little reason to care about anyone in the story. Crafty, yes, but soulless.
Five years of wading through cinema at its most mind-numbing has given me a new appreciation for meticulously crafted intellectual puzzles, even if they are of the soulless variety. Mamet's new psychological mystery THE SPANISH PRISONER, a thoroughly intriguing cinematic engine, definitely falls into that category. Campbell Scott stars as a young corporate underling named Joe who has created a potential cash cow called The Process for his company. Unfortunately for Joe, little of that milk looks likely to end up in his cup. Enter Jimmy Dell (Steve Martin), a smooth operator who promises Joe a windfall if he'll turn over The Process.
It's best to cut off any plot summary at this point, lest certain turns of narrative be inadvertently revealed. Suffice it to say that THE SPANISH PRISONER tackles familiar Mamet subjects like breakdowns in trust and deceptive appearances, accompanied by the familiar-bordering-on-cliche staccato rhythms of Mamet's dialogue. It also features crisp pacing courtesy of editor Barbara Tulliver, and yet another insinuating score from the gifted Carter Burwell. Most significantly, it features a story which manipulates in all the best senses of the word.
There's a lot to admire about the construction of THE SPANISH PRISONER, but it shouldn't be so difficult to find a sympathetic human protagonist to guide a story like this. Campbell Scott is a versatile, capable performer with the requisite look of naivete to play Hitchcockian dupe; he also reads virtually every line of Mamet's script with a deadening flatness. That goes ditto and double for Rebecca Pidgeon, whose turn as Joe's affectionate confidante falls apart with every forced line. While Steve Martin does marvelously cagey work as the mysterious Jimmy -- he's one of the few cast members who seems to have a grip on Mamet's style -- Scott feels as though he's being pulled grudgingly through the story because _somebody's_ got to be the hero.
Even with its lack of a vibrant hero, I can't be too hard on THE SPANISH PRISONER. In fact, that absence only really started to bother me on the way home, which is usually where the plots of such films start to bother me. I do wish that Mamet, who clearly has mastered the art of plotting, could make his films as emotionally compelling as they are intellectually satisfying. Giving his houses of games hearts to match their brains would make him one of our finest film-makers.
On the Renshaw scale of 0 to 10 games people play: 7.
Visit Scott Renshaw's MoviePage http://www.inconnect.com/~renshaw/ *** Subscribe to receive new reviews directly by email! See the MoviePage for details, or reply to this message with subject line "Subscribe".
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


---
layout: post
title: Burnette and Monson Haefel on Android
date: '2007-11-28T21:16:00.000-08:00'
author: headius
tags:
modified_time: '2011-01-25T21:44:32.155-08:00'
blogger_id: tag:blogger.com,1999:blog-4704664917418794835.post-520546322838590477
---
I've noticed a couple Android posts from Richard Monson-Haefel have been answered by a post from Ed Burnette. Interesting points on both sides.
First RMH asks "Is Android Fragmentation Inevitable?", largely because certain portions of the API are optional. Here, he may have a point. One of the strengths of Java ME was the profiles; you could write for a specific set of APIs in a given profile and know your app would always work on other devices that support that profile. But it's early days for Android; I'd expect there would be certain compatibility levels established as things move along. Then he goes on to describe "Why Microsoft Loves Google's Android".


metann.utils package¶
Module contents¶
-
class
metann.utils.
SubDict
(super_dict: collections.abc.Mapping, keys=[], keep_order=True)¶ Bases:
collections.abc.MutableMapping
Provide a sub dict access to a super dict. Parameters:
- param super_dict (Mapping)
The super dictionary where you want to take a sub dict
- param keys (iterable)
An iterable of keys according to which you want to access a sub dict
- param keep_order (bool)
If set to true the sub dict will keep the iteration order of the super dict when it is iterated. Default: True
Examples:
>>>super_dict = collections.OrderedDict({'a': 1, 'b': 2, 'c': 3}) >>>sub_dict = SubDict(super_dict, keys=['a', 'b'])
-
update_keys
()¶ This method update the keys of the sub dict when the super dict is modified.
Note
Do not call this method when you use the built-in method only.
- Returns


To begin a trial, press the space bar.
To indicate that the dots are moving to the right, press the 'M' key, and to indicate that dots are moving to the left, press the 'Z' key.
It may help to keep a finger of your left hand on the 'Z' key and a finger of your right hand on the 'M' key.
Please ask the experimenter if anything seems unclear.
Correct!
Your score is {}
Incorrect
Thank you!
Please press D to submit.


I am a third-year Ph.D. student and a Graduate Research Assistant at the Department of CSE, at Pennsylvania State University, under the supervision of Dr. Rui Zhang (co advised by Dr. Rebecca J. Passonneau). My research interest lies in Natural Language Processing, Machine Learning, Computer Vision, and Data Mining.
Working as a graduate research assistant in Pennsylvania State University. Currently working on multiple NLP projects e.g. Few-Shot Sequence Labeling, Named Entity Recognition, Relation Extraction, coreference resolution etc.
Worked on different Neural Ranking techniques to research their efficacy in search and recommendation.
Worked as a graduate research assistant under supervision of Dr. Mohammed Eunus Ali in CSE, BUET. Multiple research projects are funded by the government of Bangladesh.
Sarkar Snigdha Sarathi Das, Arzoo Katiyar, Rebecca J. Passonneau, Rui Zhang.
CONTaiNER: Few-Shot Named Entity Recognition via Contrastive Learning.
ACL 2022. [pdf] [code]
Sarkar Snigdha Sarathi Das, Subangkar Karmaker Shanto, Masum Rahman, Md. Saiful Islam, Atif Rahman, Mohammad Mehedy Masud, Mohammed Eunus Ali.
BayesBeat: A Bayesian Deep Learning Approach for Atrial Fibrillation Detection from Noisy Photoplethysmography Data.
IMWUT (UbiComp) 2022
[pdf] [code]
Sarkar Snigdha Sarathi Das, Mohammed Eunus Ali, Yuan-Fang Li, Yong-Bin Kang, Timos Sellis.
Boosting House Price Predictions using Geo-Spatial Network Embedding.
Data Mining and Knowledge Discovery(2021)
Md. Ashraful Islam, Mir Mahathir Mohammad, Sarkar Snigdha Sarathi Das, Mohammed Eunus Ali.
A Survey on Deep Learning Based Point-Of-Interest (POI) Recommendations.
Neurocomputing(2022)
Sarkar Snigdha Sarathi Das, Syed Md. Mukit Rashid, Mohammed Eunus Ali.
CCCNet: An Attention Based Deep Learning Framework for Categorized Crowd Counting.
2020 IEEE International Joint Conference on Neural Networks (IJCNN)
Syed Md. Mukit Rashid, Sarkar Snigdha Sarathi Das, Mohammed Eunus Ali.
Categorized Crowd Counting based on Different Body State Detection.
International Conference on Networking, Systems and Security, December 2018
CGPA: 3.88/4.00


Keerthi Chandra
Let’s say you have a button in your app, and you want to be able to get a picture – either from the Gallery, Camera or any other app in Firefox OS that supports that activity. You can then call the pick activity, like this:
var pick = new MozActivity({
name: "pick",{
data: {
type: ["image/png", "image/jpg", "image/jpeg"]
}
});
In this example, we specify the name pick
and the data to be PNG or JPEG images. You will then be presented with a menu of available activities in Firefox OS:
For most WebAPIs, including Web Activities, you will have onsuccess
and onerror
event handlers. In the case of an image/file you will get a blob
back. You can then represent that returned image visually directly in your app:
you can also set your app as a handler for certain activities. There are two ways to do that:
1.Through the manifest file – declaration registration
2.Register an activity handler – dynamic registration
and then handle the activity:
var call = new MozActivity({
name: "dial",
data: {
number: "+1804100100"
}
});


atl_print - Prints an ATL formula.
atl_print [-lh] []
This command prints the names of all the ATL formulas that
have been read.
Command Options:
- -l
- Prints the name as well as the formula itself.
- -h
- Prints Usage.
-
- Prints only the specified formula.
Last updated on 1031103 12h03


Credits
Just to get licensing and copyright out of the way: this site is licensed under the MIT License, which lets you do whatever you want as long as you keep the license and copyright notice. The only thing I ask is that you don't completely copy me and make money off of it while doing so. (IF you do try that, at least keep the copyright notice.)
Thank you to all the following people/services:
- repl.it, for hosting this website, along with all of my online projects.
- Christian Robertson's Roboto, for the font used on this website and the ggtylerr branding.
- jQuery, for being an excellent library and providing functionality to parts of the website.
- Font Awesome, for providing great icons.
- To comply with their license, here's a link to it.
- There are also two icons (help-line and envelope) that have been edited to be white instead of black.
- There is also the mutat.io logo, which currently uses the sync-alt icon that's gray instead of black. This is a temporary logo and will change at a later date.

- The Instagram logo, which provided inspiration for the DSA Bot logo. This was initially from a documentary regarding the change of the logo, but I can't find it anymore. If someone can send it to me, I'll add a link to it here.
- The Discord branding, which provided inspiration for the brand kit.
- Matthais#8217 over the CodeSupport community, for helping out with an odd bug regarding the card's hover functionality.
- My freshman robotics club teacher, who first got me into programming.
- My graphic design teacher, who's helped me with the design aspects in some of my projects, even if it might be outside his comfort zone.
- Everyone who's supported me over the years, either financially, emotionally, or just by sticking around.
- You, for checking this place out and being a really cool person :)
As cheesy as it sounds, without them none of this wouldn't be possible, so thank you all. Seriously, thank you :D
~ggtylerr


Movies to rate:
{%for i in range(num)%}
{{Movie_chosen[i]['movie_name']}}
Details
Rating:
{% endfor %}


King Painting - we will make your home look like a castle!
123 Main Street
Asheville, NC 28801
Phone:<PHONE_NUMBER>
E-mail<EMAIL_ADDRESS>We provide customized and high quality paint services for the home owner who really cares about appearance. We use top quality products at reasonable rates. And we are fully insured. Contact us for a free estimate.
Click here for an example of our room rates.


Create New User
There already is user with this username!
Role:
E-mail:
Username:
*
Password:
*
Password:
*
*
Required field


class: center, middle, inverse, title-slide # Git good ## ༼ʘ̚ل͜ʘ̚༽ --- # Links - \ (•◡•) / - [Cheatsheet and commandline info](https://www.atlassian.com/git/tutorials/atlassian-git-cheatsheet) - [Happy git with R](https://happygitwithr.com/big-picture.html#why-git) - [Excuse me, do you have a moment to talk about version control?](https://peerj.com/preprints/3159v2/) - [Software carpentry (commandline Git)](https://swcarpentry.github.io/git-novice/) Today's objective is to cover the minimum requirements to use Git for code reviews. --- # Overview - (◕‿◕✿) .pull-left[ - Git is a version control system for items like source code. - Git is not for data storage although GitHub does have an option for large file storage (Git LFS). - **Git** and **GitHub** are different things. Git is the version control system, GitHub is a cloud storage. - There are alternatives to Git and GitHub. Git is commonly used. - If all you want is a personal back-up system Git is not essential ] .pull-right[  ] --- # Git language - :o) **Git language** [see cheatsheet](https://www.atlassian.com/git/tutorials/atlassian-git-cheatsheet) Git has its own 'verbs' for everything! Gets confusing so we will cover a few of the most important ones. .pull-left[ **Git verbs for today** - init (initialise) - add - commit - push - pull - clone - merge ] .pull-right[ **Other Git things** - Repository - Staging area - Local storage - Remote host ] ??? Everything you need to do in Git has the form *verb* -> *argument* Commandline Git is useful to know at some point but for personal use I like the GUI. --- # Git workflow - ﴾͡๏̯͡๏﴿ - Local copy (stored on your personal machine) - Remote copy (stored in the cloud) - Remote copies can be private, public or shared with specific collaborators  ??? The idea is that git version control always moves forward. Even if you revert change it still exists. --- # Git workflow - ﴾͡๏̯͡๏﴿ - Everything in Git can be done in the commandline. - Use whatever method is most effective for your workflow, today we will use a GUI. - A lot of Git things can be done either from your local machine or the remote repo, even some editing. ??? Commandline may be necessary for some work like with NeSI but 'there are no merit badges for being a git nerd'... actually there are... --- # Git workflow - ﴾͡๏̯͡๏﴿ - **initialise** a local repository ('repo'). A repo is a working directory containing the files you wish to version control (e.g., a thesis, paper or analysis code). - **add** a snapshot of the repo to a 'staging area': Tell git which changes to the repo you want to commit. - **commit** files from the staging area. Takes a snapshot of the tracked files and stores them as a version. - Each commit has a unique identifier. You can revert to a previous version of your project by using the identifier. - Each commit requires a commit message to write to your future self what you changed and why. - **push** changes to a server such as GitHub (there are others). Upload files to a remote repo. ??? A repository is initialised once. Add, commit and push are done every time you back up your local copy to the remote server. Git does not autobackup every x minutes. Can set up a cron job if you really want. --- # Initialise - (ง'̀-'́)ง 1. Make a new directory somewhere on your computer. 2. Initialise a repo in that directory with a README.md and a .gitignore (in GitDesktop this steps 1 and 2 can be done at the same time). - a .gitignore file is a text file containing a list of items you *do not* want to keep track of or store (e.g., plot images generated from the source code). - Markdown files render in html so the README is viewed as a formatted document on a browser. I suggest using the README to outline the purpose of your code and detail problems. 3. Publish the repo to GitHub. --- # add/commit and push - (ᵔᴥᵔ) 1. Make some changes to your README.md. 2. Add and commit the changes. 4. Push the changes to GitHub. ??? I recommend we use the README to outline the purpose of the code to review. --- # Pull - (ง°ل͜°)ง 1. Edit your README.md on GitHub. 2. Pull changes to your local machine. --- # Branching - ≧☉_☉≦ - So far we have been working on the master branch of your project. - Branches allow you to make changes in parallel to your master branch without editing your primary working branch. Changes can be reviewed and merged to your master branch with a 'pull request' --- # Branching - ಠ~ಠ 1. Create a branch in your Git GUI and navigate to that branch. 2. Edit your README.md and commit the changes to your new branch. 3. Create a 'pull request' to merge the changes with your master branch. --- # Collaboration - ಠ╭╮ಠ 0. Pair up with someone. 1. GitHub go: settings -> manage access -> invite collaborator. Add each other as collaborators to your projects. 2. Clone their repository. - 'Clone' makes a copy of a remote repo on your local machine. 3. Make a new branch in their repo. 4. Make changes to their README.md, commit the changes to the branch and submit a pull request for them to review. 5. Review the changes they have made on your README.md and merge them with your master branch. --- # Collaboration - ಠ╭╮ಠ For the code review: .pull-left[ For the **submitter** 1. Initialise a repo. 2. Create a branch for bug fixes. 3. Once changes have submitted to the branch, review them and **merge** with your master branch. ] .pull-right[ For the **reviewers** 1. clone the repo. 2. do your thing. 3. submit changes **to the branch**. ] --- # ̿̿ ̿̿ ̿̿ ̿'̿'\̵͇̿̿\з= ( ▀ ͜͞ʖ▀) =ε/̵͇̿̿/’̿’̿ ̿ ̿̿ ̿̿ ̿̿ - Git can do much much more, and also gets a lot more complicated.... - Git version control can all be done on the command line which is necessary when communing with NeSI.


qToggle Examples
Code
initializing the plugin:
$(function(){
$('body').qToggle();
});
This will place click event listeners on all elements in the body that have the data attribute 'data-qtoggle-selector'. As a best practice apply the plugin to a limited scope inside the body, such as $('body','.main-content').qToggle();
initializing the plugin with options:
$(function(){
$('body').qToggle({
'effect':'slideToggle',
'targets':'next',
'eventArgs':{'duration':'fast','easing':'swing'}
});
});
You may pass options into the plugin to control many aspects its behavior. The plugin accepts one argument of an object. Look in the source code for what options can be passed to the plugin (until more documentation can be provided here). In this example the slideToggle() function will be called instead of the default Toggle() and an DOM element next to the control will be toggled instead of the previous element. The slideToggle will be given 'fast' and 'swing' as arguments to control its animation.
html control and target:
hide info

I am the div that you can hide and show.

the
is our control element. The

is our control's target element. To apply a toggle effect simply add data-qtoggle-selector
to your control element and set its value to a jQuery selector string which which will select your desired target element.
Targeting reset all
targeting a single element with simple selector
data-toggle-selector=".example1"
targeting a single element using a complex selector
data-qtoggle-selector="#example2 > .target"
targeting a multiple elements with a single class selector.
data-qtoggle-selector=".multitarget"
targeting a single element with a ID selector.
data-qtoggle-selector="#myTargetID"
targeting with keyword prev
data-qtoggle-selector="prev"
targeting with keyword next
data-qtoggle-selector="next"
targeting with keyword siblings
targeting with keyword parent
reset
I am a sibling paragraph in the same parent div
hide parent ( and me, of course ). targeting with keyword this
reset
data-toggle-selector="this"
targeting with keyword self
( synonymous with 'this' )
reset
data-qtoggle-selector="self"
Effects reset all
Only show hidden target data-qtoggle-effect="show"
(don't toggle)
only show hidden target
Extras
Hide one target and show another, slowly
data-qtoggle-duration="900" data-qtoggle-easing="swing"
toggle the target and fire a callback function on animation completion
data-qtoggle-callback="exampleCallback"
var exampleCallback = function(){
alert('callback fired.');
}
Toggle class on element
data-qtoggle-class="important" data-qtoggle-effect="toggleClass"


There are two parking garages for the Austin Convention Center
2nd Street GarageEntrances on Brazos and San Jacinto Streets. Most convenient parking for events scheduled in Exhibit Halls 1, 2 and 3, and meeting rooms 1-10.
5th Street GarageEntrance on 5th Street, between Red River and Sabine Streets. Most convenient parking for events scheduled in Exhibit Halls 5, 4 and 3 and Level 4 meeting rooms 11-19.
Take Bastrop Hwy TX-71 W (TX-71 becomes E. Ben White Blvd) for 5.6 miles.
Turn slight right onto S I-35 (.2 miles).
Merge onto I-35 N / US-290 E / US-81N (2.8 miles).
Take Exit 234B toward 2nd-4th Streets / 1st Street / Cesar Chavez (.1 miles).
Continue ahead to go onto I-35 N (.1 miles).
Turn left onto E. 1st Street / Cesar Chavez Street E (.2 miles).
Facility is on your right.
Go South on I-35.
Take Exit 234A toward 1st Street / Holly Street.
Turn right onto E 1st Street. / Cesar Chavez Street E.
Facility is on your right.
Go North on I-35.
Take Exit 234B toward 2nd-4th Streets. / 1st Street. / Cesar Chavez.
Continue ahead.
Turn left onto E. 1st Street / Cesar Chavez Street E.
Facility is on your right.
Take Texas Loop 1 (MoPac Expressway) South.
Take the 5th Street / 1st Street exit.
Take the 1st Street ramp.
Merge onto Cesar Chavez Street E / W 1st Street.
Facility is on your left.
Take Texas Loop 1 (MoPac Expressway) North
Take the 5th Street / Lake Austin Blvd. / 1st Street exit.
Merge onto Cesar Chavez Street E / W 1st Street.
Facility is on your left.


ESFA funded adult education budget contract for services for 2022 to 2023
Total 2022 to 2023 allocation
£2,395,872
| Allocation | Amount |
|---|---|
| August 2022 to March 2023 | £898,452 |
| April 2023 to July 2023 | £1,497,420 |
| Total | £2,395,872 |
| Funding type | August 2022 to March 2023 | April 2023 to July 2023 | Total |
|---|---|---|---|
| Adult skills | £299,484 | £299,484 | £598,968 |
| Adult skills learner support | £149,742 | £449,226 | £598,968 |
| National Skills Fund: Level 3 Free Courses for Jobs | £299,484 | £299,484 | £598,968 |
| National Skills Fund: Level 3 Free Courses for Jobs learner support | £149,742 | £449,226 | £598,968 |
To find out more about the ESFA funded adult education budget (contract for services) and how allocations are calculated, read the 19+ allocations technical guidance for 2022 to 2023 (opens in new tab).
Changes to your allocation
You must follow the adult education budget (contract for services) funding rules (opens in new tab). We can reduce or remove your allocation if there's evidence that public funds are at risk.
Allocation statements are not legally binding. They do not create any legal obligation against the Secretary of State for Education, acting through the Education and Skills Funding Agency (ESFA).
Submit a business case
You can submit a business case (opens in new tab) if you have given incorrect data to the ESFA and this has affected your funding allocation. For example, a mistake in your R04 return.
How 19+ funding is allocated
Find out more about how the ESFA allocates 19+ funding (opens in new tab).


To ensure that any new data does not conflict with existing
data, Proximity’s import process restricts when and how you can
add additional elements to an existing database. In many instance,
however, careful data management can eliminate such conflicts. In
such cases, users can override the default import restrictions by
setting the noChecks
import option to true.
When
noChecks
is true, Proximity makes no checks to see if
the imported data conflicts with the existing database. If imported
objects or links already exist
in the database, Proximity creates duplicate entries for these items.
When noChecks
is
false or not specified, adding new objects or links to a database that
already contains such items results in an error. You can also use the
noChecks
option to import additional values for previously
defined attributes (an error without this option). The only check in
this case is ensuring that the “new” attribute is of the
same type as the previously defined attribute.
When noChecks
is true, Proximity automatically
recodes container
identifiers when imported containers conflict with
containers already present in the database. For example, if the
database already has a container with an ID of 2, and the XML data
file to be imported also includes a container with an ID of 2, the
import process assigns a new, non-conflicting identifier to the imported
container. Any associated data (container attributes and nesting
relationships) are similarly recoded.
The following exercise adds a small number of new link_tag attribute values to the database. The new values are added solely for illustrative purposes; they are not used in later Tutorial exercises.
Exercise 3.3. Importing additional link_tag attribute values:
Before beginning, make sure that you are serving the ProxWebKB database (created in Exercise 3.1) using Mserver. You must have completed Exercise 3.1 before running the current exercise. Data files must be on the same machine as that serving the database.
Try to import the new link_tag
attribute values without using the noChecks
option.
(Substitute the appropriate port number if you are using a
different port.)
> bin/import-xml.sh localhost:30000 \
$PROX_HOME/doc/user/tutorial/examples/more-linktag-values.xml
Proximity attempts to import the new attribute values, but reports an error because the link_tag attribute already exists.
ERROR app.ImportXMLApp: java.lang.IllegalArgumentException: Attribute already exists in the database: link_tag. You may use the noChecks flag if you want to ignore this check.
Import the additional link_tag attribute
values, specifying that noChecks
is true.
> bin/import-xml.sh localhost:30000 \
$PROX_HOME/doc/user/tutorial/examples/more-linktag-values.xml true
When the import process is finished, Proximity reports on the number of database entities created (leading information showing elapsed time and execution thread has been omitted from the trace for brevity):
INFO app.ImportXMLApp: * importing database from /proximity/doc/user/tutorial/examples/more-linktag-values.xml NOT CHECKING FOR DUPLICATES INFO app.ImportXMLApp: * converting xml to bulk import text files; dir: /tmp/prox-xml-import62294 INFO app.ImportXMLApp: attributes INFO app.ImportXMLApp: attribute: link_tag, L, str INFO app.ImportTextApp: * importing database from /tmp/prox-xml-import62294 INFO app.ImportTextApp: Loading object table INFO app.ImportTextApp: Loading link table INFO app.ImportTextApp: Loading attributes INFO app.ImportTextApp: Loading attribute: av_0 INFO app.ImportTextApp: Loading containers INFO app.ImportTextApp: * done importing INFO app.ImportXMLApp: * done importing; counts: 0 objects, 0 links, 1 attributes, 5 attribute values, 0 containers, 0 subgraph items
Note that the start of the trace includes a warning that the import process is not checking for duplicates.
If you want, examine link 1 in the Proximity Database Browser to see its attribute values. (A summary of steps for examining link 1’s attribute values is included, below. See Chapter 4, Exploring Data for complete information on using the Proximity Database Browser.)
From the Proximity Database Browser start page, click Links.
Click 1.
Click attrs.
Because link 1 already had a value of
“OFFSITE
” for the
link_tag attribute, the new data is added
as an additional value for this attribute.


When using click'n'drag to select a range of cells, this option determines whether or not the active cell should be set during this operation. If disabled, click'n'drag only selects a range of cells. If enabled, cells are still selected and the last cell in the range is automatically activated for edit allowing you to take an action.
(boolean)
: Defaulttrue
.
{activateSelection: true}


<< Back to Home
Candidate Names:
Guide to add multiple candidates:
-
Enter after each name of the candidate
Example:
Ramesh
Suresh
Rajesh


Please enter all the desired information
Supply your name and address
Full Name:
Address:
Are you a co-op?
Yes
No
What is your desired starting salary; enter a number greater than zero