Note that CQL is currently in a state of flux. Features may be dropped in future releases, and the generated SQL may change between releases. In particular, runtime mode is deprecated.
CQL is a Prolog interface to SQL databases. There are two modes: fully compiled and runtime. The fully compiled mode should be used if possible due to the far greater compile time checking it provides.
CQLv2 correctly compiles equality comparisons with NULL into the appropriate expression at runtime. In CQLv1, executing
A={null}, {[A], foo :: [a-A]}
would never succeed, regardless of the value of foo.a. This is no
longer the case: If A is {null}
then this will execute as SELECT .... WHERE a IS NULL
and if A is not {null}, it will execute as SELECT .... WHERE a = ?
See the section Removing null comparisions for the dealing with the common requirement to ignore comparisons with null.
It is generally not a good idea to wrap CQL inside a setof/3 or a bagof/3 ... unless you are prepared to declare all the CQL variables that are neither bound nor mentioned in the setof/bagof template. If you want to sort, use findall/3 followed by sort/2. Note that sort/2 (like setof/3) removes duplicates. If you don't want to remove duplicates, use msort/2.
In the course of executing a select query, the following rules are applied:
This is so we can handle outer joins. Consider this:
x :: [a-A] *== y :: [a-A]
Assume x.a binds A to a non-null value. If there is no matching row
in
y
, then y.a = null
. If variable A
was truly shared the query could never succeed. By not binding the
variable associated with y.a
the query can succeed ( rule
1) and A will be bound to the value in x.a
.
Here is a simple example of a SQL SELECT from the table se_lt_x
test(A) :- format('About to call CQL with A=~w', [A]), {[], se_lt_x :: [a-A, b-B, c-C]}, format('B=~w, C=~w', [B, C]).
Comparisons can be done in-line e.g.
[a-'ELSTON_M']
or with the ==
operator e.g.
[a-A], A == 'ELSTON_M'.
The single = operator means unify, not compare. Use = for unification, not comparison
FIXME: Unification is deprecated.
The operators =:=
and \==
are also
available for numerical value comparisons (they just translate to SQL =
and <>
, so in fact you could use them for string
comparisons)
You can debug CQL using the meta-predicates ?/1, ??/2 and ???/3:
???{[], se_lt_x :: [a-A, b-_], A == 'ELSTON_M'}.
[main] CALL SELECT slx_2.b, slx_2.a FROM se_lt_x AS slx_2 WHERE slx_2.a = 'ELSTON_M' [main] EXIT SELECT slx_2.b, slx_2.a FROM se_lt_x AS slx_2 WHERE slx_2.a = 'ELSTON_M' (0.006963s, 0.01cpu, 3,899 inferences)
[main] CALL DECLARE @P0 VARCHAR(50); SET @P0 = 'ELSTON_M'; SELECT slx_450.b, slx_450.a FROM se_lt_x AS slx_450 WHERE slx_450.a = @P0 AND slx_450.a COLLATE Latin1_General_CS_AS = @P0 Result: se_lt_x.b = {null} se_lt_x.a = 'ELSTON_M' (0.003304s, 0.00cpu, 359 inferences)
[main] CALL SELECT slx_450.b, slx_450.a FROM se_lt_x AS slx_450 WHERE slx_450.a = 'ELSTON_M' Result: se_lt_x.b = {null} se_lt_x.a = 'ELSTON_M' (0.003304s, 0.00cpu, 359 inferences)
A Prolog variable can be simultaneously a SELECT variable, a JOIN variable and a WHERE variable as A is in the following example:
{[], se_lt_x :: [a-A, c-C] =*= se_lt_y :: [d-A, f-F], A == 'A4'}
which generates the following SQL
SELECT x_192.a, x_192.c, y_73.d, y_73.f FROM se_lt_x x_192 INNER JOIN se_lt_y y_73 ON y_73.d=x_192.a WHERE x_192.a = ? and y_73.d = ?
Note how all the variables referenced in the query are retrieved in the SELECT. This is done to make the query Prolog-like.
There is one notable exception however: WHERE variables and JOIN variables are not bound in aggregation selections
FIXME: Is this still the case?
sum_test :- {[], #se_lt_x :: [a-ValueA, sum(b)-Summation] =*= #se_lt_y :: [e-ValueB], ValueA == ValueB, % Explicit join point group_by([ValueA])}, writeln(ValueA-ValueB-Summation).
'ELSTON_M'-_G375971-99450 true ;
The following attributes are automatically provided i.e if the attribute is present in the table, CQL will automatically fill in the value:
All the special attributes can be overridden by supplying the attribute-value pair explicitly.
Rather than provide an abstract description of CQL syntax here is a set of examples that show how to use it.
{[], insert(se_lt_x, [a-'A', b-'B', c-100])}
{[], insert(se_lt_x, [a-'A', b-'B', c-100]), identity(I)}
{[], delete(se_lt_x, [x_pk-I])}
Note that the WHERE clause is part of the delete/2 term unlike update where the WHERE clause is defined outside the update/2 term. I could have made delete consisent with update, but this would have required the @ alias in the delete WHERE clause to identify the table where the rows are to be deleted). This seems like overkill because a delete can in fact refer to only one table anyway i.e. you can't identify rows to delete via a JOIN.
{[], se_lt_x :: [a-A, b-B]}
This query will either:
se_lt_x.b
where se_lt_x.a = A
se_lt_x.a
where se_lt_x.b = B
se_lt_x
{[], update(se_lt_x, [c-100]), @ :: [a-'A1'], row_count(N)}
This corresponds to UPDATE se_lt_x SET c=100 WHERE se_lt_x.a='A1'
.
The '@' is a special alias referring to the table that is being updated.
The row_count/1 term gives the number or
rows updated.
{[], se_lt_x :: [a-A, c-C], C > 10}
{[], se_lt_x :: [a-J1, c-C] =*= se_lt_y :: [d-J1, f-F]}
The join is se_lt_x.a = se_lt_y.d
because of the shared
variable J1.
se_lt_x.c
will be returned in C and se_lt_y.f
will be returned in
F
{[], update(se_lt_x, [c-(C + 2 * F + 20)]), @ :: [a-A, c-C] =*= se_lt_y :: [d-A, f-F], C < 100}
This joins the table being updated (table se_lt_x
) on
table se_lt_y
where se_lt_x.a = se_lt_y.a
and
where se_lt_x.c < 200
then updates each identified row se_lt_x.c
with the specified expression.
\+ exists {[], se_lt_x :: [a-'Z']}
{[], se_lt_x :: [count(c)-C]}
This will count the rows in table se_lt_x
{[], se_lt_x :: [sum(c)-C]}
Sum the values of attribute c in table se_lt_x
{[], se_lt_x :: [avg(c)-C]}
Calculate the mean of the values of attribute c in table se_lt_x
{[], se_lt_x :: [max(c)-C]}
Calculate the maximum of the values of attribute c in table se_lt_x
{[], se_lt_x :: [min(c)-C]}
Calculate the minimum of the values of attribute c in table se_lt_x
{[], se_lt_z :: [g-G, sum(i)-I], group_by([G])}
This will generate the GROUP BY SQL
and sum se_lt_z.i
for each value of se_lt_z.g
{[], se_lt_x :: [b-J1, a-A] =*= se_lt_z :: [h-J1, i-I, g-Z], I > min(Y, se_lt_y :: [f-Y, d-Z])}
The main query and the sub-query share variable Z. The generated SQL is:
SELECT x37.a, z4.i, z4.g FROM se_lt_x x37 INNER JOIN se_lt_z z4 ON x37.b=z4.h and z4.h=x37.b WHERE z4.i > (SELECT min(y11.f) FROM se_lt_y y11 WHERE z4.g=y11.d)
{[], se_lt_y :: [d-D,f-F], F < sum(I, se_lt_x :: [b-J1] =*= se_lt_z :: [h-J1, i-I])}
{[], se_lt_x :: [a-A, b-B], \+ exists se_lt_y :: [d-A]}
The generated SQL is:
SELECT x39.a, x39.b FROM se_lt_x x39 WHERE NOT EXISTS (SELECT * FROM se_lt_y y13 WHERE x39.a = y13.d)
An exists restriction translates to a WHERE
sub-query
and is used to say that "each row returned in the main query must
satisfy some condition expressed by another query".
Example
{[], se_lt_x :: [a-A, b-B], exists se_lt_y :: [d-A]}
compiles to:
SELECT x.b, x.a FROM se_lt_x x WHERE EXISTS (SELECT * FROM se_lt_y WHERE x.a = y.d)
se_lt_x :: [a-J1, b-B] *== se_lt_y :: [d-J1, e-E]}
CQL supports query restrictions based on lists. Note that in both
cases
\==
[]
and ==
[]
are equivalent despite the obvious logical inconsistency.
FIXME: Can we make this behaviour be controlled by a flag? It IS quite useful, even if it is completely illogical
{[], se_lt_x :: [a-Bar], Bar == []}
and
{[], se_lt_x :: [a-Bar], Bar \== []}
both do exactly the same thing - they will not restrict the query based on Bar. The second case seems to be logically consistent - all things are not in the empty list.
If your list is bound at compile-time, you can simply use it as the attribute value in CQL, for example:
{[], se_lt_x :: [a-['ELSTON_M', 'LILLEY_N']]}
This does not require the list to be ground, merely bound. For example, this is not precluded:
foo(V1, V2):- {[], se_lt_x :: [a-[V1, V2]]}.
If, however, your list is not bound at compile-time, you must wrap the variable in list/1:
Bar = [a,b,c], {[], se_lt_x :: [bar-list(Bar)]}
If you write
foo(V1):- {[], se_lt_x :: [a-V1]}.
and at runtime call foo([value1])
, you will get a type
error.
Remember: If the list of IN values is empty then no restriction is generated i.e.
{[], se_lt_x :: [a-[], b-B} is the exactly the same as {[], se_lt_x :: [b-B}
{[], se_lt_x :: [a-A, b-B, c-C], (C == 10 ; B == 'B2', C < 4)}
The generated SQL is:
SELECT x.a, x.b, x.c FROM se_lt_x x WHERE ((x.b = ? AND x.c < ?) OR x.c = ?)
{[], se_lt_x :: [a-A, c-C] =*= (se_lt_y :: [d-A] ; se_lt_z :: [g-A])}
The generated SQL is:
SELECT x43.c FROM (se_lt_x x43 INNER JOIN se_lt_z z6 ON x43.a=z6.g AND z6.g=x43.a) UNION SELECT x44.c FROM (se_lt_x x44 INNER JOIN se_lt_y y16 ON x44.a=y16.d AND y16.d=x44.a)
{[], (se_lt_x :: [a-A, c-10] ; se_lt_y :: [d-A, f-25])}
The output variable A is bound to the value from two different attributes and so the query is implemented as two separate ODBC queries
{[], se_lt_z :: [g-G, h-H], order_by([-G])}
The order_by specification is a list of "signed" variables. The example above will order by se_lt_z.g descending
Use distinct(ListOfVars)
to specify which attributes you
want to be distinct:
test_distinct :- findall(UserName, {[], se_lt_x :: [a-UserName, c-Key], Key >= 7, distinct([UserName])}, L), length(L, N), format('~w solutions~n', [N]). CALL : user:test_distinct/0 26 solutions EXIT : user:test_distinct/0 (0.098133s, 0.00cpu, 1,488 inferences)
{[], se_lt_z :: [i-I, j-J], J \== {null}}
{[], N = 3, se_lt_z :: [i-I], top(N), order_by([+I])}
This generates a TOP clause in SQL Server, and LIMIT clauses for PostgreSQL and SQLite
{[], se_lt_z :: [h-H, i-I1] =*= se_lt_z :: [h-H, i-I2], I1 \== I2}
Use the ignore_if_null wrapper in your CQL to 'filter out' null input values. This is a useful extension for creating user-designed searches.
{[], se_lt_x :: [a-UserName, b-ignore_if_null(SearchKey), ...]}
At runtime, if SearchKey is bound to a value other than {null} then
the query will contain WHERE ... b = ?
. If, however,
SearchKey is bound to {null}
, then this comparison will be
omitted.
Disjunctions
In general, don't use ignore_if_null in disjunctions. Consider this query:
SearchKey = '%ELSTON%', {[], se_lt_x :: [a-UserName, b-RealName], ( RealName =~ SearchKey ; UserName =~ SearchKey)}
The query means "find a user where the UserName contains ELSTON OR
the RealName contain ELSTON". If !SearchKey is {null} then RealName=~
{null}
will fail, which is correct. If ignore_if_null was used, the test would
succeed, which means the disjunction would always succeed i.e.
the query would contain no restriction, which is clearly not the
intended result. FIXME: Mike, what is this all about?
{[], se_lt_x :: [a-A, c-C] =*= se_lt_y :: [d-A, f-F] =*= se_lt_z :: [i-F, g-G]}
The shared variable A joins se_lt_x
and se_lt_y
;
the shared variable
F joins se_lt_y
and se_lt_z
{[], se_lt_x :: [a-A, c-C] =*= #se_lt_y :: [d-A, f-F] =*= #se_lt_z :: [i-F, g-G]}
The hash operator indicates the table that should be accessed WITH (NOLOCK)
{[], se_lt_z :: [g-G, i-I], G =~ 'A_'}
The operator =~
means LIKE. If you are using PostgreSQL,
it means ILIKE.
You can write an exception term directly to a varchar-type column in
the database. Note that it will be rendered as text using ~
p,
and truncated if necessary - so you certainly can't read it out again
and expect to get an exception! Example code:
catch(process_message(Message), Exception, {[], update(some_table, [status-'ERROR', status_comment-Exception]), @ :: [some_table_primary_key-PrimaryKey]}).
FIXME: This code is specific to my usage of CQL
You can pass the "N" is TOP N as a parameter (Subject to DBMS compatibility. This works in SQL Server 2005 and later, and PostgreSQL 9 (possibly earlier versions) and SQLite3.
N = 3, findall(I, {[], se_lt_z :: [i-I], top(N), order_by([+I])}, L)
You can include compile_time_goal(Goal)
in your CQL. If
you specify a module, it will be used, otherwise the goal will be called
in the current module. Note that the goal is executed in-order - if you
want to use the bindings in your CQL, you must put the compile_time_goal
before them.
Example 1
{[], se_lt_x :: [a-UserName, b-RealName, d-FavouriteColour], compile_time_goal(standard_batch_size_for_search(StandardBatchSize)), top(StandardBatchSize), order_by([+UserName]}
Example 2
excellent_colours(['RED', 'BLUE']). {[], se_lt_x :: [a-UserName, b-RealName, d-FavouriteColour], compile_time_goal(excellent_colours(Colours)), FavouriteColour == Colours}
CQL supports both constant and shared variable join specifications. This is particularly useful when specifying outer joins.
Example
{[], se_lt_x :: [a-UserNameA, b-RealName, d-FavouriteColour] *== se_lt_x :: [a-UserNameB, e-FavouriteFood] on( UserNameA == UserNameB, FavouriteColour == FavouriteFood, FavouriteFood == 'ORANGE')}
All the CQL comparison operators, <, =<, ==, =~, \=~, \==, >=, >
can be used in ON specifications.
For example:
{[], se_lt_z :: [i-J1, k-K] *== se_lt_x :: [c-J1, a-A, b-B] on A \== 'A1'},
Expressions in WHERE restrictions are supported, for example:
{[], se_lt_n :: [i-I, j-J, k-K], J > 10 * (K / I) + 15},
To avoid accidentally deleting or updating all rows in a table CQL raises an exception if there is no WHERE restriction.
Sometimes however you really do need to delete or update all rows in a table.
To support this requirement in a disciplined way (and to avoid the creation of "dummy" WHERE restrictions) the keyword absence_of_where_restriction_is_deliberate has been added. For example:
{[], update(se_lt_x, [c-10]), @ :: [], absence_of_where_restriction_is_deliberate}
HAVING restrictions can be specified. For example:
{[], se_lt_z :: [sum(i)-I, g-G], group_by([G]), having(I > 30)}
For a description of HAVING see http://en.wikipedia.org/wiki/Having_(SQL)
There is one important difference between SQL HAVING and SQL WHERE clauses. The SQL WHERE clause condition is tested against each and every row of data, while the SQL HAVING clause condition is tested against the groups and/or aggregates specified in the SQL GROUP BY clause and/or the SQL SELECT column list.
INSERT and UPDATE values can be formatted in-line at runtime. For example:
Suffix = 'NOGG', cql_transaction(Schema, UserId, {[], insert(se_lt_x, [a-'A', b-'B', c-100, d-format('EGG_~w', [Suffix])])}),
will insert 'EGG_NOGG' into attribute 'd'.
You can specify negations in CQL WHERE clauses e.g.
{[], se_lt_z :: [g-G, h-H, i-I], \+((G == 'A1', H == 'B1' ; G == 'D1', H == 'B3'))},
Note that, just like in Prolog, \+
is a unary operator
hence the "double" brackets in the example above.
It is possible to generate compile time attribute values by specifying a predicate which is executed when the CQL statement is compiled.
The predicate must return the value you want as its last argument. You specify the predicate where you would normally put the attribute value. The predicate is specified with its output argument missing.
Example - Using domain allowed values in a query.
In the following CQL statement the predicate cql_domain_allowed_value/3 is called within findall/3 at compile time to generate a list of domain values that restrict favourite_colour to be 'ORANGE' or 'PINK' or 'BLUE', or 'GREEN'.
colour('ORANGE'). colour('PINK'). colour('BLUE'). colour('GREEN'). {[], se_lt_x :: [d-findall(Value, permissible_colour(Value)), a-UserName]}
Note how findall/3 is actually called by specifying findall/2.
There is not much point using predicate-generated attribute values in compile-at-runtime CQL as you can always call the predicate to generate the required values outside the CQL statement.
INSERT from SELECT is supported:
Constant = 'MIKE', {[], insert(se_lt_x1, [x_pk-Pk, a-A, b-B, c-C, d-Constant]), se_lt_x :: [x_pk-Pk, a-A, b-B, c-C, as(d)-Constant]}
which generates the following SQL:
INSERT INTO se_lt_x1 (x_pk, a, b, c, d) SELECT se_lt_x_955.x_pk, se_lt_x_955.a, se_lt_x_955.b, se_lt_x_955.c, ? AS d FROM se_lt_x lt_x_955
Note the use of the as(d)
construct in the SELECT part
of the CQL to make the constant 'MIKE' appear to come from the
SELECT thus setting
lt_x1.d
to 'MIKE' in every row inserted.
CQL provides a large number of hooks to fine-tune behaviour and allow for customization. These are:
cql_dependency_hook(+EntitySet, +Module)
can be
defined to be notified when a given Module references a list of database
entities. This can be used to manage metadata/code dependency
cql_generated_sql_hook(+Filename, +LineNumber, +Goals)
can be defined to examine generated SQL. Use cql_sql_clause(+Goals, -SQL, -Parameters)
to examine the goals
cql_index_suggestion_hook(+Index)
can be defined if
you are interested in proposed indices for your schema. Note that this
is not very mature (yet)
cql_atomic_value_check_hook(+Value)
can be defined
to declare new 'atomic' types (That is, types which can be written
directly to the database), such as a representation like boolean(true)
for 1.
cql_check_value_hook(+Value)
can be used to check
that a value is legal
application_value_to_odbc_value_hook(+OdbcDataType, +Schema, +TableName, +ColumnName, +Qualifiers, +ApplicationValue, -OdbcValue)
.
odbc_value_to_application_value_hook(+OdbcDataType, +Schema, +TableName, +ColumnName, +Domain, +OdbcValue, -ApplicationValue)
.
cql_access_token_hook(+AccessToken, -UserId)
can be
defined to map the generic 'AccessToken' passed to cql_transaction/3
to a user ID. If not defined, the AccessToken is assumed to be the user
ID. This UserID is used in logging.
cql_execution_hook(+Statement, +OdbcParameters, +OdbcParameterDataTypes, -Row)
can be defined if you want to implement the exeuction yourself (for
example, to add extra debugging)
cql_log_hook(+Topics, +Level, +Format, +Args)
can
be defined to redirect CQL logging.
[]
and [debug(deadlocks)
]
sql_gripe_hook(+Level, +Format, +Args)
is called
when suspect SQL is found by the SQL parser
cql_normalize_atom_hook(+DBMS, +ApplciationAtom, -DBMSAtom)
can be used to create a map for atoms in a specific DBMS. For example,
your schema may have arbitrarily long table names, but your DBMS may
only allow names up to 64 bytes long. In this case, you can create a
scheme for mapping the application-level atom to the DBMS. Other uses
include deleting or normalizing illegal characters in names
cql_error_hook(+ErrorId, +Format, +Args)
can be
defined to generate a specific exception term from the given arguments.
If not defined (or if it does not throw an exception, or fails), you
will get cql_error(ErrorId, FormattedMessage)
.
cql_max_db_connections_hook(-Max)
can be defined to
limit the number of simultaneous connections each thread will attempt to
have
odbc_connection_complete_hook(+Schema, +Details, +Connection)
can be hooked if you want to know every time a connection is made
cql_transaction_info_hook(+AccessToken, +Connection, +DBMS, +Goal, -Info)
can be defined if you want to define any application-defined information
on a per-transaction level. This can be recovered via
database_transaction_query_info(?ThreadId, ?Goal, ?Info)
.
cql()
:
cql_inline_domain_value_hook(+DomainName,
+Value)
These define the schema. You MUST either define them, or include
library(cql/cql_autoschema)
and add two directives to build
the schema automatically:
:-
register_database_connection_details(+Schema, +ConnectionInfo)
.
:-
build_schema(+Schema)
.
Otherwise, you need to define at least cql:default_schema/1 and cql:dbms/2, and then as many of the other facts as needed for your schema.
default_schema(-Schema)
MUST be defined. CQL
autoschema will define this for you if you use it.
dbms(+Schema, -DBMS)
MUST be defined for every
schema you use. CQL autoschema will define this for you if you use it.
DBMS must be one of the following:
odbc_data_type(+Schema, +TableName, +ColumnName, +OdbcDataType)
.
primary_column_name(+Schema, +Tablename, +ColumnName)
.
database_attribute(+EntityType:table/view, +Schema:atom, +EntityName:atom, +ColumnName:atom, +DomainOrNativeType:atom, +AllowsNulls:allows_nulls(true/false), +IsIdentity:is_identity(true/false), +ColumnDefault)
.
database_domain(+DomainName, +OdbcDataType)
.
routine_return_type(+Schema, +RoutineName, +OdbcDataType)
.
database_constraint(+Schema, +EntityName, +ConstraintName, +Constraint)
.
CQL provides hooks for maintaining detailed history of data in the database.
The hook predicates are:
cql_event_notification_table(+Schema, +TableName)
cql_history_attribute(+Schema, +TableName, +ColumnName)
cql_update_history_hook(+Schema, +TableName, +ColumnName, +PrimaryKeyColumnName, +PrimaryKeyValue, +ApplicationValueBefore, +ApplicationValueAfter, +AccessToken, +TransactionId, +TransactionTimestamp, +ThreadId, +Connection, +Goal)
.
process_database_events(+Events)
Event Processing and History recording can be suppressed for a particular update/insert/delete statement by including the _no_state_change_actions_9 directive.
For example
{[], update(se_lt_x, [f-'LILAC'] @ :: [a-'ELSTON_M'], no_state_change_actions, % Don't want history to record this change row_count(RowCount)}
CQL has hooks to enable in-memory statistics to be tracked for database tables. Using this hook, it's possible to monitor the number of rows in a table with a particular value in a particular column.
Often the kind of statistics of interest are 'how many rows in this table are in ERROR' or 'how many in this table are at NEW'? While it may be possible to maintain these directly in any code which updates tables, it can be difficult to ensure all cases are accounted for, and requires developers to remember which attributes are tracked.
To ensure that all (CQL-originated) updates to statuses are captured, it's possible to use the CQL hook system to update them automatically. Define add a fact like:
cql_statistic_monitored_attribute_hook(my_schema, my_table, my_table_status_column).
This will examine the domain for the column 'my_table_status_column',
and generate a statistic for each of my_table::my_table_status_column(xxx)
,
where xxx is each possible allowed value for the domain. Code will be
automatically generated to trap updates to this specific column, and
maintain the state. This way, if you are interested in the number of
rows in my_table which have a status of 'NEW', you can look at
my_table::my_table_status_column('NEW')
, without having to
manage the state directly. CQL update statements which affect the status
will automatically maintain the statistics.
The calculations are vastly simpler than the history mechanism, so as to keep performance as high as possible. For inserts, there is no cost to monitoring the table (the insert simply increments the statistic if the transaction completes). For deletes, the delete query is first run as a select, aggregating on the monitored columns to find the number of deletes for each domain allowed value. This means that a delete of millions of rows might requires a select returning only a single row for statistics purposes. For updates, the delete code is run, then the insert calculation is done, multiplied by the number of rows affected by the update.
In all cases, CQL ends up calling cql_statistic_monitored_attribute_change_hook/5, where the last argument is a signed value indicating the number of changes to that particular statistic.
Expand at runtime if the first term is compile_at_runtime
| Goal | goal term |
| Mode | minimal ; explicit ; full |
varchar(30)
or decimal(10, 5)
Can be autoconfigured.
primary_key(ColumnNames:list)
foreign_key(ForeignTableName:atom, ForeignColumnNames:list, ColumnNames:list)
unique(ColumnNames:list)
check(CheckClause)
In theory this can be autoconfigured too, but I have not written the code for it yet
| KeyColumnNames | list of atom in database-supplied order |
| KeyType | identity ; 'primary key' ; unique |
| ConnectionDetails | driver_string(DriverString)
or dsn(Dsn, Username, Password) |


--- start: 2014-08-07 15:00 edition: 2 participate: "" talk: "" about: "
In this half-day event, there are talks and interactive sessions with real life examples that will help you inculcate, understand, and measure Business Relevance in your team/project. The topics will vary from how business relevance can be used to measure ROI in different domains to infusing business relevance in our teams' mindset to environment and social relevance.
" agenda: - time: "15:00" title: Registration - time: "15:30" title: "Keynote Address - Deepening our business relevance at ThoughtWorks" - time: "16:00" title: "How I learned to love my backlog" - time: "16:35" title: "Case Study: Insights on Customer Collaboration" - time: "16:55" title: "Changing how we shop : Today and Beyond - Prateek Mehta, Jabong.com" - time: "17:40" title: "Tactics to infuse Business Relevance in Delivery Teams" - time: "18:15" title: "Business Relevance’ out of a box" - time: "8:00" title: "Networking Dinner" ---


A set of functions used to compare co-occurrence between two corpora.
| Version: | 1.1-0 |
| Depends: | R (≥ 3.2.0) |
| Imports: | methods, stats, data.table (≥ 1.9.6), RColorBrewer, rlist |
| Suggests: | unittest, stringi, R.rsp |
| Published: | 2017-11-23 |
| Author: | Anthony Hennessey [aut, cre], Viola Wiegand [aut], Michaela Mahlberg [aut], Christopher R. Tench [aut], Jamie Lentin [aut] |
| Maintainer: | Anthony Hennessey <anthony.hennessey at nottingham.ac.uk> |
| BugReports: | https://github.com/birmingham-ccr/CorporaCoCo/issues |
| License: | GPL (≥ 3) |
| NeedsCompilation: | no |
| Materials: | README NEWS ChangeLog |
| CRAN checks: | CorporaCoCo results |
| Reference manual: | CorporaCoCo.pdf |
| Vignettes: |
FAQ Proof of Concept |
| Package source: | CorporaCoCo_1.1-0.tar.gz |
| Windows binaries: | r-devel: CorporaCoCo_1.1-0.zip, r-release: CorporaCoCo_1.1-0.zip, r-oldrel: CorporaCoCo_1.1-0.zip |
| OS X binaries: | r-release: CorporaCoCo_1.1-0.tgz, r-oldrel: CorporaCoCo_1.1-0.tgz |
| Old sources: | CorporaCoCo archive |
Please use the canonical form https://CRAN.R-project.org/package=CorporaCoCo to link to this page.


Project
Expedição Liberdade (or Freedom Expedition) was a crowdfunded project that aimed at understanding alternatives to the traditional educational model. Larusso, Cuducos and I visited nine of the most amazing schools and learning spaces in Europe.
All content generated was shared through posts, infographics and seven open workshops in Brazil.
{{ img('projects-expedicao-ga.jpg', 'General Assembly') }}
General Assembly
The school emerges as a dynamic option through immersive courses (8-12 weeks) focused on technology, design and business. They have a strong and growing community: students who have common interests, skilled professionals instructors from a variety of industry backgrounds and a networking spread in important cities.
{{ img('projects-expedicao-hi.jpg', 'Hyper Island') }}
Hyper Island
Jim Ralley, from Hyper Island Manchester, told us about the school philosophy. The school is guided by the needs of the market when structuring the courses. The idea is to simulate the working environment, with experts and real projects. The students do not write articles: they make briefings and develop projects.
{{ img('projects-expedicao-kaos.jpg', 'Kaospilot') }}
Kaospilot
We visited the school in Aarhus and joined the Team 20 class. Kaospilot offers a multi-sided education in leadership and entrepreneurship for a chaotic world. They centre on the students’ potential and proactiveness, tapping into their creativity, giving them some guidance, creating a setting that will help them to navigate through the uncertainties that will follow.
{{ img('projects-expedicao-trade.jpg', 'Trade School') }}
Trade School
They are an alternative, self-organized school where teachers propose classes and ask for barter items from students. In our case, we attended two classes: facilitating consensus and remapping the city. We offered to photograph the workshop and other students brought snacks and drinks – everyone helped in some way.
{{ img('projects-expedicao-schu.jpg', 'Schumacher College') }}
Schumacher College
The value of being part of Schumacher College is being part of the community and living in a light, warm and conscious environment. Waking up, meditating, eating, working and sleeping are part of the life in the college. They approach education through the head, the heart and the hands; the learning comes from everything one has done as a part of a living and working community.
{{ img('projects-expedicao-tsol.jpg', 'The School of Life') }}
The School of Life
A place to think about central emotional concerns, common to individuals of all ages and classes. The learning comes from philosophy, literature, psychology and visual arts. If one passes by The School of Life, one would think it's just another small store located in central London, but it’s actually a meeting point for many thinkers seeking inspiration for a better life.
{{ img('projects-expedicao-brockwood.jpg', 'Brockwood Park School') }}
Brockwood Park School
A school based on Krishnamurti’s philosophy.  There is a friendly atmosphere of responsibility, co-operation and affection: everyone helps with the day-to-day decision-making and takes care of the grounds and buildings.
{{ img('projects-expedicao-studio.jpg', 'Studio School') }}
Studio School
A project-based learning initiative designed for students between the ages of 14 and 19. They are small schools (300 students each) teaching through enterprise projects, more like a workplace than a school. The small classes allow teachers and students to get to know each other better, making projects that meet not only the needs of the local community, but also the interests and skills of the students.
{{ img('projects-expedicao-team.jpg', 'Team Academy') }}
Team Academy
The idea is that people learn from the need to do something and that group practice makes students mature both individually and as a human being. The entrepreneurs – as they refer to the students – create teams mixing different individual skills. Each team organizes an enterprise during the three years of university.
{{ img('projects-expedicao-info.jpg', 'Infographics') }}
{% include '_suggestions.html' %}
{% endblock %}


Tokenizes strings that represent a regular expressions.
var ret = require('ret');
var tokens = ret(/foo|bar/.source);
tokens
will contain the following object
{
"type": ret.types.ROOT
"options": [
[ { "type": ret.types.CHAR, "value", 102 },
{ "type": ret.types.CHAR, "value", 111 },
{ "type": ret.types.CHAR, "value", 111 } ],
[ { "type": ret.types.CHAR, "value", 98 },
{ "type": ret.types.CHAR, "value", 97 },
{ "type": ret.types.CHAR, "value", 114 } ]
]
}
ret.types
is a collection of the various token types exported by ret.
Only used in the root of the regexp. This is needed due to the posibility of the root containing a pipe |
character. In that case, the token will have an options
key that will be an array of arrays of tokens. If not, it will contain a stack
key that is an array of tokens.
{
"type": ret.types.ROOT,
"stack": [token1, token2...],
}
{
"type": ret.types.ROOT,
"options" [
[token1, token2...],
[othertoken1, othertoken2...]
...
],
}
Groups contain tokens that are inside of a parenthesis. If the group begins with ?
followed by another character, it's a special type of group. A ':' tells the group not to be remembered when exec
is used. '=' means the previous token matches only if followed by this group, and '!' means the previous token matches only if NOT followed.
Like root, it can contain an options
key instead of stack
if there is a pipe.
{
"type": ret.types.GROUP,
"remember" true,
"followedBy": false,
"notFollowedBy": false,
"stack": [token1, token2...],
}
{
"type": ret.types.GROUP,
"remember" true,
"followedBy": false,
"notFollowedBy": false,
"options" [
[token1, token2...],
[othertoken1, othertoken2...]
...
],
}
\b
, \B
, ^
, and $
specify positions in the regexp.
{
"type": ret.types.POSITION,
"value": "^",
}
Contains a key set
specifying what tokens are allowed and a key not
specifying if the set should be negated. A set can contain other sets, ranges, and characters.
{
"type": ret.types.SET,
"set": [token1, token2...],
"not": false,
}
Used in set tokens to specify a character range. from
and to
are character codes.
{
"type": ret.types.RANGE,
"from": 97,
"to": 122,
}
{
"type": ret.types.REPETITION,
"min": 0,
"max": Infinity,
"value": token,
}
References a group token. value
is 1-9.
{
"type": ret.types.REFERENCE,
"value": 1,
}
Represents a single character token. value
is the character code. This might seem a bit cluttering instead of concatenating characters together. But since repetition tokens only repeat the last token and not the last clause like the pipe, it's simpler to do it this way.
{
"type": ret.types.CHAR,
"value": 123,
}
ret.js will throw errors if given a string with an invalid regular expression. All possible errors are
?
character is followed by an invalid character. It can only be followed by !
, =
, or :
. Example: /(?_abc)/
/foo|?bar/
, /{1,3}foo|bar/
, /foo(+bar)/
/hello)2u/
/(1(23)4/
/[abc/
npm install ret
Tests are written with vows
npm test
MIT


Main Page
|
Modules
|
Class Hierarchy
|
Class List
|
Directories
|
File List
|
Class Members
|
File Members
|
Related Pages
XML-Security-C Graphical Class Hierarchy
Go to the textual class hierarchy
Generated on Sun Jul 3 17:59:24 2005 for XML-Security-C by
1.4.2


panpdf
is a command line tool for converting Markdown dialect files to CSS styled HTML or PDF. This lets you keep code highlighting, and makes the markdown look like markdown - and not like LaTeX (which is often great but not always ideal).
It has two steps:
- panhtml
: Creates a standalone HTML with custom CSS, using pandoc
and some shell scripting. The CSS is embedded in the HTML since I've had issues embedding local CSS in the HTML files in other ways. (Pull requests welcome!!)
- panpdf
: Creates a PDF formatted by the CSS. Currently implemented using cupsfilter
. If necessary, first converts the input to HTML.
There are other software which do the same thing - search online for Markdown to PDF
and you'll find alternatives! :)
However, I tried several of these tools but couldn't get them to work reliably. So - I decided to make panpdf
.
Since everything is formatted with CSS, it can look any way you want it to. Check out the example_output folder!
panpdf
has these dependencies:
For a basic installation, run:
sudo ./install.sh
The scripts + CSS will then be installed in /usr/local/panpdf/
, and symlinks for panpdf
, panhtml
will be added to /usr/local/bin/
. sudo
might be required due to folder creation in /usr/local/
(it was for me atleast).
If you want, go ahead and modify the config
file to choose your own install directory or CSS source URL. The config is interpreted as a shell script (. config
), so don't modify the variable names. (I'm planning on adding a script to automate changing the config, eventually.)
The default CSS used is this one, which is a print-friendly version of github.com/simonlc's Markdown-CSS.
After the installation, panhtml
and panpdf
should be usable.
This is how the pdf file in example_output was made.
eves@eves-mbp:~/Documents/Programming/panpdf$ panpdf README.md &&
if [[ "$?" == "0" ]]; then
printf "it worked! \n"
open README.pdf
fi
it worked!
This is how the html file in example_output was made.
eves@eves-mbp:~/Documents/Programming/panpdf$ panhtml README.md &&
if [[ "$?" == "0" ]]; then
printf "it worked! \n"
open README.html
fi
it worked!
Note: For the example output html file to be displayed correctly, you'll need to download it (since github shows it as plaintext).
There's probably a lot of bugs. Feel free to open an issue if you encounter one. Pull requests are also very welcome!
Just so a bit more is displayed in the example output, here's:
c
code.This is a blockquote
:)
// A c program
#define SOME_MACRO "some macro"
int main(int argc, char *argv[]) {
if (argc > 1) {
for (int i = 1; i < argc; i++) {
foo(argv[i]);
}
}
return bar();
}


Print-Q
SEARCH
(current)
SEE ALL PRINTERS
REPORT ISSUE
SETTINGS
LOGOUT
Report an issue
Here at Print-Q, we take all of your reports seriously. Please send us all of your feedback!
Report type
Bug in our code
Incorrect printer information
Questions about Print-Q
Option doesn't exist
Message
Submit
Thank you!
We'll be sure to update you on your feedback.
×
< Home


Ocean [au35], ocean, in The Inner Sea
Last updated Turn #140
Ocean [au35], ocean, in The Inner Sea
------------------------------------------------------------------------
26: General Kraken [k3k], Imperial Empire, duke, priest of the Church of
26: Halon [157], with two winged horses, 44 nazgul, arrived from the west,
26: accompanied by:
26: Phantom III [d6x], Imperial Empire, priest of the Church of
26: Dol [153], with 13 nazgul
26: Veejay [v8j], Imperial Empire, Bishop of the Church of Ham [155],
26: with five angels
26: Goon III [b9v], Imperial Empire, Bishop of the Church of Dol [153],
26: with five angels, 54 hvy. xbowmen, 18 nazgul
26: Lord Rodrigo Bane [c8b], Imperial Empire, priest of the Church of
26: Dol [153], with ten workers, 50 hvy. xbowmen, 15 nazgul
26: Licia [i1l], Imperial Empire, Bishop of the Church of Ham [155],
26: with five angels, 50 hvy. xbowmen
26: Odin [y5z], Imperial Empire, with 35 peasants, 15 soldiers, 55 hvy.
26: xbowmen
26: Thorg [j8u], Imperial Empire, with one warmount
26: Jupiter [m8j], Imperial Empire, duke, the High Priest of the Church
26: of Halon [157], with 14 peasants, 15 soldiers, ten angels,
26: 21 skirmishers, 52 hvy. xbowmen
26: Dryeth [q4e], Imperial Empire, priest of the Church of Dol [153],
26: with 16 nazgul
26: Firefly [f3f], Imperial Empire, priest of the Church of
26: Halon [157], with 50 hvy. xbowmen
26: Sunwalker [a8x], Imperial Empire, duke, Bishop of the Church of
26: Halon [157], with five angels, 52 nazgul
26: Thomas [o5y], Imperial Empire, priest of the Church of Dol [153],
26: with 52 hvy. xbowmen, five nazgul
26: Alexei Galantor [j7l], Imperial Empire, duke, priest of the Church
26: of Halon [157], with 35 peasants, 84 nazgul
26: Sir Peter [u9p], Imperial Empire, with 30 peasants, 20 workers,
26: ten hvy. xbowmen
26: George [p7f], Imperial Empire, duke, priest of the Church of
26: Dol [153], with ten nazgul
26: Lucca [h0t], Imperial Empire, priest of the Church of Halon [157],
26: with one skirmisher, 50 nazgul
26: Johny [w2d], Imperial Empire, priest of the Church of Halon [157],
26: with 41 nazgul
26: Stefano [t8e], Imperial Empire, Bishop of the Church of
26: Halon [157], with 30 peasants, five angels, 50 nazgul
26: Sir Charles [j5r], Imperial Empire, priest of the Church of
26: Halon [157], with 30 peasants, 50 nazgul
26: Everblack [n3r], Imperial Empire, prisoner
26: Majikthise [n4g], Imperial Empire
26: City boy [c5x], Imperial Empire, prisoner
26: swift [e6w], Mandor Confederacy, prisoner
26: Aurora [g5z], Imperial Empire, prisoner
26: Merchant [jc9q], refugee, prisoner
27: General Kraken [k3k], Imperial Empire, duke, priest of the Church of
27: Halon [157], with two winged horses, 44 nazgul, went east,
27: accompanied by:
27: Phantom III [d6x], Imperial Empire, priest of the Church of
27: Dol [153], with 13 nazgul
27: Veejay [v8j], Imperial Empire, Bishop of the Church of Ham [155],
27: with five angels
27: Goon III [b9v], Imperial Empire, Bishop of the Church of Dol [153],
27: with five angels, 54 hvy. xbowmen, 18 nazgul
27: Lord Rodrigo Bane [c8b], Imperial Empire, priest of the Church of
27: Dol [153], with ten workers, 50 hvy. xbowmen, 15 nazgul
27: Licia [i1l], Imperial Empire, Bishop of the Church of Ham [155],
27: with five angels, 50 hvy. xbowmen
27: Odin [y5z], Imperial Empire, with 35 peasants, 15 soldiers, 55 hvy.
27: xbowmen
27: Thorg [j8u], Imperial Empire, with one warmount
27: Jupiter [m8j], Imperial Empire, duke, the High Priest of the Church
27: of Halon [157], with 13 peasants, 15 soldiers, ten angels,
27: 22 skirmishers, 52 hvy. xbowmen
27: Dryeth [q4e], Imperial Empire, priest of the Church of Dol [153],
27: with 16 nazgul
27: Firefly [f3f], Imperial Empire, priest of the Church of
27: Halon [157], with 50 hvy. xbowmen
27: Sunwalker [a8x], Imperial Empire, duke, Bishop of the Church of
27: Halon [157], with five angels, 52 nazgul
27: Thomas [o5y], Imperial Empire, priest of the Church of Dol [153],
27: with 52 hvy. xbowmen, five nazgul
27: Alexei Galantor [j7l], Imperial Empire, duke, priest of the Church
27: of Halon [157], with 35 peasants, 84 nazgul
27: Sir Peter [u9p], Imperial Empire, with 30 peasants, 20 workers,
27: ten hvy. xbowmen
27: George [p7f], Imperial Empire, duke, priest of the Church of
27: Dol [153], with ten nazgul
27: Lucca [h0t], Imperial Empire, priest of the Church of Halon [157],
27: with one skirmisher, 50 nazgul
27: Johny [w2d], Imperial Empire, priest of the Church of Halon [157],
27: with 41 nazgul
27: Stefano [t8e], Imperial Empire, Bishop of the Church of
27: Halon [157], with 30 peasants, five angels, 50 nazgul
27: Sir Charles [j5r], Imperial Empire, priest of the Church of
27: Halon [157], with 30 peasants, 50 nazgul
27: Everblack [n3r], Imperial Empire, prisoner
27: Majikthise [n4g], Imperial Empire
27: City boy [c5x], Imperial Empire, prisoner
27: swift [e6w], Mandor Confederacy, prisoner
27: Aurora [g5z], Imperial Empire, prisoner
27: Merchant [jc9q], refugee, prisoner
Routes leaving Ocean:
North, plain, to Plain of Tears [at35], Mandoria, 2 days
East, to Ocean [au36], 6 days
South, to Ocean [av35], 6 days
West, city, to Pygate [ae3c], Mandoria, 1 day
West, plain, to Plain of Tears [au34], Mandoria, impassable
Garrison [ht8q], garrison, uncontrolled, with ten peasants


Blog Archive 2014 Learning to Go, Part I: Interfaces Jul 08 2014 WIP Microservices Reading List Jul 02 2014 Microservices are SOLID Jun 30 2014 2013 BOSH and Cloud API Compatibility Aug 02 2013 Blue-Green Deployments on Cloud Foundry Jul 10 2013 Clojure on Cloud Foundry May 29 2013 Into the Crucible May 29 2013 2012 The Relaunch May 24 2012 2011 Design Meeting Patterns/Antipatterns May 16 2011 Selenium Conference 2011 Jan 05 2011 2010 in review: the automated analysis… Jan 02 2011 2010 Selenium 2.0 Refcard Nov 29 2010 Agile Zone Roundup Nov 10 2010 The Seven Wastes of Software Development Nov 10 2010 The Agile Guerilla Series Sep 05 2010 More Agile Zone Articles! Aug 02 2010 I’m in the zone…Agile Zone. Jul 20 2010 Two new NFJS talks for this fall! Jul 06 2010 NFJS Fall 2010: What do you want to learn? Jun 22 2010 Don’t build software that’s TOO smart! Jun 03 2010 Announcing NOSQL Summer Memphis May 28 2010 First thoughts on “Seven Languages in Seven Weeks…” May 06 2010 OSGi on Rails? Apr 29 2010 JUG Leadership Lessons Learned on SlideShare Apr 02 2010 Dead Programmers Society Feb 16 2010 LOTY/TOTY for 2010 Jan 06 2010 2009 Securing Grails Plugin Artifacts with Filters Nov 10 2009 Pomodoro: The First Iteration Nov 04 2009 Hi, I’m Matt Stine, and I have technology ADD… Nov 03 2009 Thoughts so far on #springone2gx Oct 21 2009 Making Java “Groovier” with LambdaJ Oct 09 2009 Test Driven Development Worked for Me!  Jun 01 2009 Grails PayPal Plugin Update May 11 2009 Career 2.0: Toastmasters May 11 2009 I’ve “forked” the Grails PayPal Plugin… May 02 2009 Functional programming blog aggregator in the works… Apr 30 2009 Joel’s BuilderBuilder in Groovy Apr 27 2009 Groovy: Post to a URL Apr 25 2009 Grails, Prototype, Script.aculo.us - Persistent Grid Sorting Goodness Apr 25 2009 Latest Wordle Apr 24 2009 Hello, Clojure! Apr 24 2009 LOTY…Part Deux Apr 06 2009 LOTY Time Again: Scala or Clojure?!?! Apr 02 2009 The Developer Iteration Apr 01 2009 Awesome April Fools Joke Apr 01 2009 Deploying Grails with Groovy Mar 29 2009 Need a Textile engine? Look no further than Plextile! Mar 26 2009 The Manifesto for Software Craftsmanship Mar 15 2009 Grails+Dojo Ajax File Upload Mar 13 2009 I’m speaking at the March Memphis JUG meeting Mar 13 2009 My iPod is on rice Mar 13 2009 It’s been a long time… Mar 12 2009 2008 Little Man Aug 14 2008 Introducing Grant Dawson Stine May 18 2008 On our way to the Gateway Software Symposium Feb 08 2008 Set Conditional Breakpoints in IDEA Feb 05 2008 Grails 1.0 Released! Feb 05 2008 A Javascript Code “Prettifier” Feb 04 2008 The Spring Experience 2007 - Videos on the way! Feb 04 2008 Practical JRuby on Rails Web 2.0 Projects Jan 25 2008 Mid-Year Review: My Professional Development Goals for 2007-2008 Jan 02 2008 2007 Web Application Data Access Patterns: Keith Donald Dec 21 2007 Goodbye Spring Experience 2007! Dec 15 2007 The State of the Art in Dependency Injection: Rod Johnson Dec 15 2007 Ajax Integration Guide for 2008: Jeremy Grelle Dec 14 2007 What’s New in Spring 2.5? : Juergen Hoeller Dec 14 2007 Pair Programming with the Official Rod Johnson Bobblehead Dec 13 2007 Improving Application Design with a Rich Domain Model: Chris Richardson Dec 13 2007 Enterprise Java and the Changing of the Guard Dec 13 2007<PHONE_NUMBER>0901ForOSX Nov 08 2007 Ajax Construction Kit: Building Plug-and-Play Ajax Applications Oct 12 2007 Please support me in the 2007 Walk to Cure Diabetes Sep 05 2007 Welcome to Matt’s Mac Paradise Aug 29 2007 Haven’t had much time to blog lately…. Aug 17 2007 STJUDE-SRM 1.0 Released Jul 27 2007 My Professional Development Goals for 2007-2008 Jul 10 2007 On Agile: Why You Won’t Fix It Later Jul 09 2007 Graeme Rocher’s Blog: 5 More Misconceptions About Grails Jul 06 2007 Help me become a better programmer! Jul 02 2007 How to implement form-level validation in JSF Jun 27 2007 The Grove Coffee House Rocks! Jun 22 2007 Migrated Jun 19 2007 And then it was over… May 11 2007 Thursday was slow… May 11 2007 Wednesday was AJAX Day May 10 2007 It seems to be the year of the dynamic/scripting language May 08 2007 Java University: Rapid Web Site Development with Groovy and Grails May 07 2007 Java University: Developing Enterprise Applications with the Spring Framework May 07 2007 Siam Thai Restaurant Doesn’t Disappoint May 05 2007 Greetings from San Francisco! May 05 2007 Welcome! Apr 30 2007 2006 Matt, RTFM! Commons Collections HAS CLOSURES. Aug 17 2006 Java needs closures Aug 16 2006 Raible’s Wiki: AppFuseRoadmap Aug 15 2006 It seems that AppFuse has a competitor! Aug 15 2006 Seven simple reasons to use AppFuse Aug 09 2006 JFreeChart-AppFuse Integration Jul 25 2006 I Made Raible’s Blog Jul 25 2006 Stiff asks, Matt answers Jul 24 2006 2005 Isabella in Costume Nov 16 2005 Abby in Costume Nov 16 2005 Flickr Nov 16 2005 My Spiritual Father Goes Home Nov 15 2005 Ruby on Rails Dev Framework on Track for Growth Nov 02 2005 NBC2 News Online - The mystery of the eye Oct 31 2005 IT Observer - A Glimpse at the Future of Programming Languages: O’Reilly Releases “Beyond Java” Oct 17 2005 Spurgeon - Morning and Evening Oct 14 2005 FOXNews.com - The O’Reilly Factor - Talking Points - The ACLU Exposed Oct 14 2005 ONLamp.com: What Is Ruby on Rails Oct 14 2005 Apache iBATIS Oct 12 2005 Supernatural Regeneration Oct 12 2005 Ruby on Rails Oct 10 2005 Post #1 Oct 10 2005
IT Observer - A Glimpse at the Future of Programming Languages: O’Reilly Releases “Beyond Java” Oct 17 2005


Table Cell Element
Description
The table cell element allows you to specify a table cell within a tablerow element.
Attributes
text
string
The text to display in the cell.
html_encode
boolean
Set to true to safely html-encode the text.
body
Nitrogen element or list of elements.
The element or elements that will be rendered in the cell.
align
Atom, 'left', 'right', or 'center'
Set the horizontal alignment of HTML elements within the cell.
valign
Atom, 'top', 'bottom', 'middle'
Set the vertical alignment of HTML elements within the cell.
rowspan
Integer
Set how many rows this cell will span.
colspan
Integer
Set how many columns this cell will span.
See Also


The HiTechnic sensors are made for connecting to an NXT or EV3 system. Because of this, they have the RJ12 plugs. These plugs are very similar to an ethernet or phone connection. Additionally, this plug may be very familiar to you if you ever progammed Lego robotics.
 This will secure the breadboard so we can use it to run the wires. This setup is great for getting started quickly, but in a competition, you would want a more secure sensor connection.
Add a Sensor Mount made from Legos. On yimagesour robot, there is a Tetrix hardpoint connector which allows you to connect lego pieces to the robot. Using pegs and beams, create a mount which puts the sensor at the angle and position where you think it will get the best readings. Because this is made with Legos, you can easily modify it in the future.
Since our robot does not have NXT compatible sockets, we need a way to connect the sensors. We can split open the RJ12 cable and connect the wires directly into the Arduino.


--- layout: null permalink: playtester-voucher --- Thank you for playtesting Arsenic & Lies, I hope you enjoyed it! I'd like to offer you a £5 discount on a copy of A&L.


level: {{heroLevelMap[myHeroSelected.name]}}
mana: {{heroManaMap[myHeroSelected.name]}}
gainedExperience: {{heroXpMap[myHeroSelected.name]}}
description: {{myAbilitySelected.description}}
Type: {{myAbilitySelected.Type}}
manaRequired: {{myAbilitySelected.manaRequired}}
damage: {{myAbilitySelected.damage}}
health: {{myMonsterSelected.health}}
experienceGivenWhenDefeated: {{myMonsterSelected.experienceGivenWhenDefeated}}


--- layout: post title: SIEnKS in Open Review ---
My work in collaboration with Marc Bocquet on the single-iteration ensemble Kalman smoother (SIEnKS) is now in open review in Geoscientific Model Development. This work derives a novel optimzation of ensemble-variational formalism for short-range forecast applications such as synoptic meteorology, and provides extensive numerical benchmark simulation and validation of the method, establishing the performance advantages of this technique. All numerical results are developed in the open-source Julia package DataAssimilationBenchmarks.jl which is currently in a beta release. A more formal release will come in The Journal of Open Source Software later this year.


Formatter.util.number Class
Number utility functions.
Item Index
Methods
- isSigned static
- isSymbolicNumber static
- round static
- signedInt static
- twosComplement static
Properties
- MAX_INT static
- MAX_SIGNED_INT static
- MIN_SIGNED_INT static
Methods
isSigned
-
arg
Returns true if the given number is less than zero or negative zero.
Parameters:
-
arg
Number
Returns:
isSymbolicNumber
-
arg
Returns true if the given argument represents a symbolic number (NaN, POSITIVEINFINITY, NEGATIVEINFINITY), false otherwise.
Parameters:
-
arg
Number
Returns:
round
-
arg
-
[precision=0]
Returns the given argument rounded to the given precision.
Parameters:
-
arg
NumberNumber to be rounded
-
[precision=0]
Number optionalNumber of precise fractional digits. A falsy value specifies fractional precision of 0.
Returns:
signedInt
-
arg
Returns the given argument as a Number within the range [Formatter.util.number.MINSIGNEDINT, Formatter.util.number.MAXSIGNEDINT].
Parameters:
-
arg
Number
Returns:
twosComplement
-
arg
Returns a decimal integer representing two's complement of the given number.
A JavaScript Number is a double-precision floating-point as specified by the IEEE 754 standard. All positive integers up to 2^53 are represented precisely, numbers beyond that threshold get their least significant bits clipped (((Math.pow(2,53) + 1) - Math.pow(2,53) results to 0, not 1).
The argument is therefore interpreted as an integer within the range [-2^52, 2^52-1]. A floating point argument is truncated, an argument out of the expected range is set to the smallest or to the greatest precise value depending on whether the argument is smaller than -2^52 or greater than 2^52-1.
Parameters:
-
arg
Number
Returns:
Properties
MAX_INT
Number
final
static
Greatest precise integer value in JavaScript.
MAX_SIGNED_INT
Number
final
static
Greatest precise integer value in two's complement range.
MIN_SIGNED_INT
Number
final
static
Smallest precise integer value in two's complement range.


time number model infection immune agents Fig infected population infectious cohort spread weak second agent exposed peaks peak behavior individual inter-cohort results influenza data susceptible strength case connections pandemic rate distribution parameters strain runs seasonal stochastic cohorts shown recurrences strong structure ;():–. connected contact fraction given different study used {border-style ODE connection mean values Influenza function px;} virus #ffffff;} []. chosen probability agent-based individuals corresponding distributions infection. models simulation ABM Sciences cohorts. increase intra-cohort model. small Health course larger transmission additional cohort. degree dynamics flu inoculation occurs parameter sample seen Fig. SEIR features immunization initial large leads lower modeling occur people single strains value Individual Infectious Medicine Table cases discussed period randomly season taken times total work (TIF) (the Click LINK Model average days defined equations file. infections matrix samples simulations size time, well-defined Available Biology Figs [], define details effect higher immunological increasing infection, interval investigate occurrence provides px; represent reproduction result scale season, uniform various {font-family Modeling case. decreases described ensemble epidemiological fluctuations font-size from: immunity infectious) left model, network note present presented profile range rates recurrence relatively right scales series simulations. sum transition using Bartlett CDC Cij Disease Immunology: Mathematica Stochastic Vaccination according agents, cohorts, compared correspond data. differential display distributed double; dynamical examine example, groups increased. known leading level low maximum number, original panel random rare recovery recurrent response season. section. separation state text. time. vaccine variations weakly Agent-Based Analysis Control Inter-cohort Life Ohio Public Research United Viral border-color border-width case, cases, change cohort, consistent contrast day days. depend dependence depends determined deterministic discrete diseases earlier events health hierarchical histograms infectivity information lead life longer makes number. numbers numerical pathogens peak. possible probabilistic profile, remains reproductive roughly section, separated set shows similar simple smoothed solid; spreads states stochasticity strength. studied succeeding timing transitions vary {font-style {font-weight > Biology. Columbus, Diseases. Histogram However, Immunization Inoculation Mean Methods Orthomyxoviruses Parameters Proceedings Reports. Sample Systems Varied Wiener above. assumed averages based bold characteristics characterize characterized checked choice choose clearly computationally connections, connectivity connectivity. contacts contrast, courier; detailed difficult duration early effective effects. elements em; epidemic evolution feature fewer follows: important increased infected. inoculated just later length mathematical means observed obtained ordinary out-degree pt;} qualitative quantity recover report reported sciences slow specific spread, standard state, statistics strength, strongly studies successive suppression use variability variation varied varying virus. viruses: wave years


{{ reservation.workoutInstance.workout.notice }}
{{ reservation.workoutInstance.workout.outfit }}
{{reservation.workoutInstance.workout.address.name}}
{{reservation.workoutInstance.workout.address.firstline}}
{{reservation.workoutInstance.workout.address.secondline}}
{{reservation.workoutInstance.workout.address.postalCode}} - {{reservation.workoutInstance.workout.address.city}}


Derivations for the forward-backward algorithm
21 Sep 2016First post! To test this out: Here are derivations for the forward-backward algorithm by Baum et. al. (1970) for computing posteriors of hidden states in HMMs.
Hidden Markov model
Specification
Let there be a sequence ${x_1,\dots,x_n}$, where each $x_t$ denotes the system as being in a hidden state at time $t$. The sequence is a discrete time Markov chain, so
There are $m$ hidden states, and $p(x_t = j \vert x_{t-1} = i)$ is the probability of transition from state $i$ to state $j$.
While the states are hidden, we observe a sequence of output values ${y_1,\dots,y_n}$, where each $y_t$ is drawn from a distribution $p(y_t \vert x_t)$ that depends on the current hidden state $x_t$. Note that $y_t$ can be discrete or continuous.
(Image taken from Wikipedia)
For simplicity, we’ll assume these probabilities/distributions are the same across time.
Goal
We want to compute the posterior probabilities over possible hidden states $p(x_t \vert y_1,\dots,y_n)$ at all time points $t = 1,\dots,n$.
Forward-backward algorithm
Given
Assume we know for $t = 1,\dots,n$:
- All transition probabilities $p(x_t \vert x_{t-1})$
- All output probabilities $p(y_t \vert x_t)$
and also the distribution for the initial state $p(x_1)$.
Motivation
From the image above, we see that emissions are conditionally independent of past emissions given the current hidden state. Hence, we can factor our target posterior:
Algorithm
For each $t = 1,\dots,n$:
-
Use the forward algorithm to compute $p(x_1,y_1,\dots,y_t)$
-
Use the backward algorithm to compute $p(y_{t+1},\dots,y_n \vert x_t)$
-
Multiply the outcomes together to get $p(x_t \vert y_1,\dots,y_n)$
Forward algorithm
Motivation
Suppose we’re interested in the distribution of the observed output sequence $p(y_1\dots,y_n)$.
A brute force method:
This takes $\mathcal{O}(nm^n)$ operations!
Instead, here’s a $\mathcal{O}(nm^2)$ method that uses dynamic programming in the form of the forward algorithm:
Now we just need those summands.
Algorithm
First compute:
Then for each $t = 2,\dots,n$ compute:
Backward algorithm
We have the forward part needed to compute $p(x_t \vert y_1,\dots,y_n)$. Now we need the backward part.
Algorithm
For $t = n$:
Note that the notation is a formality since there is no observed $y_{n+1}$.
Then for each $t = n-1,\dots,1$ compute:
Conclusion
Now we have all the pieces to compute $p(x_t \vert y_1,\dots,y_n)$. We can use this to find the most likely state at any time $t$.
Of course, this isn’t enough by itself:
-
The Viterbi algorithm finds the most likely sequence of hidden states (i.e. ${x_1,\dots,x_n}$ such that $p(x_1,\dots,x_n \vert y_1,\dots,y_n)$ is maximized ).
-
The Baum-Welch algorithm uses the forward-backward algorithm to compute maximum likelihood estimates of the HMM parameters (i.e. the probabilities/distributions that we took as “given”).
All of this introductory material on HMMs can be found in Sections I-III of:
Rabiner, L. R. (1989). A tutorial on hidden Markov models and selected applications in speech recognition. Proceedings of the IEEE, 77(2), 257-286.


Principles of Design
Affordance
The ArchWiki website has always been a pinnicle of good design, providing everything that an aspiring archlinux user needs from beginner to pro.
From a Affordance point of view, wikis are in general an amazing format. Keeping things organized is easy when there are links between appropriate pages. Trying to figure out how to fix your internet while setting up your distro? There's a link on the settup page to the internet page.
The frontpage (main page) shows you everything you need at a glance, and can get you deeper into the reading. Or, like any good wiki, you can search for more specific things.
Modularity
Google drive is auto synced filesystem that uses a large variety of propriatary and third party self contained webpage based tools to edit files of all types. It's a prefect example of modularity as each system is completely self contained to do it's task.
Hicks Law
Michigan states website design has always been about making things easy to find.From this page you can see that there aren't too many links, or making things too confusing.
Mapping
Dash is a example of Mapping because it keeps each lesson button mapped to a single button, next to the picture representing that section. It's basically just a list of links, but it behaves really well.
80-20
Youtube is used for videos all over the world: For most users it's just important that specific videos be easily searchable and linkable. Tutorials and the like. For the powerusers however, it's the real tools of youtube that shine.
The spacebar-scroll-halfway-down-the-screen instead of pausing is a brilliant streak. Youtube best showcases it's ability to show you videos when you're trying to find videos you haven't seen yet by specific artists: It knows you'd rather re-watch the same video over and over.


The Studio Session {{.SessionName}} has been created with ID {{.SessionID}}. You may now go into Revu and markup your file. Click 'Finish Session' when you are ready.


Musician Pete Doherty Arrested in Paris on Drug Possession Charges - Reports
The artist, who is well-known for his projects The Libertines and Babyshambles, was previously arrested on numerous occasions and faced various charges, including drug offences, driving under the influence, car theft, robbery, and blackmail.
The frontman of The Libertines was arrested in Paris late on Thursday carrying 2 grammes of cocaine, Le Point reported, citing French police. According to the magazine, officers rounded him up in the Pigalle district, and the rock star refused to comply.
The sources, however, told the outlet that the British rock star was not violent or dangerous, so he subsequently followed them, as passersby, who recognised Doherty allegedly filmed the incident.
However, footage of the arrest has not yet been published.
The Libertines, founded by the musician in 1997 is considered to be a crucial part of the so-called post-punk revival (or "garage rock revival"), which included numerous bands in the United Kingdom and other countries.


Palm oil is an edible vegetable oil derived from the mesocarp of the fruit of the oil palms, primarily the African oil palm Elaeis guineensis, and to a lesser extent from the American oil palm Elaeis oleifera and the maripa palm Attalea maripa.
Amount Per
|
| Calories 884 |
| % Daily Value* | |
| Total Fat 100 g | 153% |
| Saturated fat 49 g | 245% |
| Polyunsaturated fat 9 g | |
| Monounsaturated fat 37 g | |
| Cholesterol 0 mg | 0% |
| Sodium 0 mg | 0% |
| Total Carbohydrate 0 g | 0% |
| Dietary fiber 0 g | 0% |
| Sugar 0 g | |
| Protein 0 g | 0% |
| Vitamin A | 0% | Vitamin C | 0% |
| Calcium | 0% | Iron | 0% |
| Vitamin B-6 | 0% | Vitamin B-12 | 0% |
| Magnesium | 0% |
| *Per cent Daily Values are based on a 2,000 calorie diet. Your daily values may be higher or lower depending on your calorie needs. |
Shipping: Available
Payment: Payment can be made through western union, or Bank tranfer
Min order: 1000litres


I am 23 years old and most of the way through a bachelors in biology. I used DXM and pot regularly when I first graduated high school, but never really got into other drugs. I went to rehab 3 years ago and cleaned my act up. I had been sober for almost 3 years and for some odd reason I wanted to give it another try.
For whatever reason, the bottle of Nyquill on top of the fridge called my name, and I ended up taking a healthy 2 doses. Within minutes I started feeling a little buzz, but also sleepy. In efforts to counteract this, I reached for the Dayquil liquid gels, which have 30mg DXM each and ate 6 of them. A few minutes later, I found myself driving to the store to buy even more. I would up with another bottle of Nyquil and a pack of Robo cough gels. In the parking lot I downed half the bottle of Nyquil and ate 14 cough gels (15mg DXM each). I threw the rest away then so I wouldnít eat them later.
The trip that I had is not the focus of this post and I will not go into details. Of the 200+ times I have taken DXM, it did not stand out in any way, it was not especially strong or different from any of my past experiences, except for in one way. I woke up the next day and I was still messed up. It lasted all day. I went to sleep again, same thing the next day. I was definitely not still full out tripping, but I felt a light buzz like I get from around 100mg DXM, along with feeling very out of it and having a slight headache. A week of this went on, absolutely no change. 2 weeks, same thing!
Now I am writing this article, it is the 22nd, I took the DXM on the 5th of this month, and I still feel exactly the same. Iím screwing up in school because I cant concentrate or interpret information correctly. I would do anything now just to be sober. If things donít change soon Iím going to have to go see a doctor, but I am extremely scared. I donít know if I have done permanent brain damage or what, but almost 3 weeks after the fact I am wondering if I will ever come down.
I have looked all over the internet and cannot find anyone else who has had a similar experience. I donít know the purpose of me writing this. I guess I am scared and looking for help, because I truely do not know what to do. I am also wanting to warn people out there. I always thought DXM was relatively safe.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


Restaurants
Delivery
Burgers
Reservations
Home Servises
Constructor
Locksmith
Electricians
Auto Servises
Auto repair
Parking
Oil change
More
Gyms
Phone repairs
Bars
For businesses
Write a review


---
layout: page
title: Welcome To Arclava Music - Home of the New Romantics
description: Arclava Music Company is a record/publishing company that promotes ultra-rock artists, and has a goal to educate the world on what ultra-rock is. Arclava Music Company also sells music merchandise, physical CD albums and more.
excerpt: "ARCLAVA MUSIC PUBLISHING"
image:
feature: header_main.png
---
Arclava Music strives to promote and record cutting edge artists in the field of ultra-rock. Arclava's secondary goal is to educate the world on what ultra-rock is and isn't. In articles enclosed, you'll learn how to tune your guitar to ultra-rock tuning, and how to use ultra-rock in any musical style whether it's rock and roll, pop, folk, country, jazz and/or classical.
Our current roster of artists include Nova Casanova, The Singing Bees, and Grady Franklin.
Arclava Music and Records targets music lovers from 9-99.
Support the Artists - Buy Direct!


When simple
XML attribute of a TokenList
is set to true
, the items selection
component will be hidden with only the Add button left. Clicking the Add button
opens the screen with the list of entity instances which type is defined by the datasource. Selection screen
identifier is selected according to the rules for the PickerField.LookupAction
standard action.
If the value of the multiselect
attribute is set to true
, then true
will be
passed to parameters map of the lookup screen for the MULTI_SELECT
key. In this example, this parameter
is used to switch the lookup table to multi-select mode.


| DOSE: |
0.5 g |
smoked |
Cannabis |
(plant material) |
| |
10 oz |
inhaled |
Ether |
(liquid) |
[Erowid Warning: Our understanding of the literature is that there is no such thing as safe use of volatile solvents, aerosols and other street inhalants : their psychoactive effects are inseparable from nerve and organ damage. We have chosen to include these reports to help document the real world use of inhalants, but their inclusion is not intended to imply that they are anything but dangerous.]
It was spring break of my sophmore year in high school and at this point in my life I had been using any chemical that came my way for about 6 months and I had been quite experienced in the use of DXM and cannabis among other random pills and inhalants, but this for me was not enough. I wanted something new, I wanted something more. This is when me and a friend of mind had learned about ether from the movie 'Fear and Loathing in Las Vegas' so my friend and I had looked up how to find ether and how to extract it from its source, which in our case was starting fluid. We soon found out that the extraction of the ether was quite simple, so we went to a wooded area by my house, loaded up a few rags, and huffed away.
We loved it, the high was great and unfortunatly I loved it a bit too much. The day after my friend went home and I decided to get another can of starting fluid. I got home, smoked a bowl of some fine marijuana and grabbed my big fat bottle of ether and started huffing. After about a half an hour I went into my own head, I was watching time move. I was no longer on the earth, I was in fact inside of time, And my brain had told me that I was going to simply dissappear from the earth and beacome part of the constant perpetuation of time.
My brain was showing me inside of my mind exactly how time moves and I found out that it moves in a square pattern in which when one gets to a corner of the square one would become a number. So I was the number 1, then 2, then 3, and so on and by the time I got to 5 or 6 I realized that my physical body was walking in a square pattern around my room. I found out about my movement pattern because when I would walk into a wall and hit my head I would tempoarily snap back into conciousness and then go right back into my 'head trip'. I use the phrase 'head trip' beacuse I was not actually seeing anything but rather I was inside of my own mind basically imagining all of this, but the thoughts were so concrete and real that I thought I was actually there, inside of time.
After the trip was over (about a 15 minutes long) I was absolutely freaked out by what had happened to me and I thought I was going insane. But then I realized 'it's only chemicals'.  I have used ether occasionally after that week and had alot of cool experiences, but none as heavy or psychologically damaging as that one fateful afternoon in my room. I still think about this experience to this day and I will never forget it.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


failure :(
{% if reason == 'MAX_KEYWORDS_LIMIT' %}
you reached the max number of keywords allowed for your email
your keywords expire every 7 days. try again then!
{% elif reason == 'ERROR_CREATE_DOC' %}
there was an error registering your keywords
give it a sec and try again!
{% endif %}
in the meantime, come check our deal alert site for /r/buildapcsales!


这里没用
This is probably the most common mishap. The remedy is simple--yank! It's most easily done with two people. One to restrain the bird and the This is a link. Hover me toThis is a link. Hover me toThis is a link. Hover me toThis is a link. Hover me to highlight the parent paragraph. other to pull the feather. Use pliers, or a hemostat. Tweezers won't work on primaries. Make certain that the wing bones are firmly supported or you can break the wing. Clamp onto the feather and give a sharp tug in the direction of the feather. The feather will come out. Next, apply gentle, direct pressure to the follicle where the feather was to stop the bleeding. Dab some styptic powder on it, as it will help stop the bleeding as well. Let the bird rest. Ask your vet or breeder to demonstrate exactly how to pull a blood feather if you're apprehensive about doing it.
This is probably the most common mishap. The remedy is simple--yank! It's most easily done with two people. One to restrain the bird and the This is a link. Hover me to highlight the parent paragraph. other to pull the feather. Use pliers, or a hemostat. Tweezers won't work on primaries. Make certain that the wing bones are firmly supported or you can break the wing. Clamp onto the feather and give a sharp tug in the direction of the feather. The feather will come out. Next, apply gentle, direct pressure to the follicle where the feather was to stop the bleeding. Dab some styptic powder on it, as it will help stop the bleeding as well. Let the bird rest. Ask your vet or breeder to demonstrate exactly how to pull a blood feather if you're apprehensive about doing it.


| Home | Trees | Indices | Help |
|
|---|
|
|
BigJob Documentation
This is the BigJob implementation of the Pilot API. Pilot-Jobs (also referred to as Pilot Compute) decouple system level and application level job management.
The main concepts and classes exposed by the Compute part of the API are:
The data side of the Pilot API is symmetric to the compute side. The exposed classes for managing Pilot Data are:
The application workload is represented by so called ComputeUnits and DataUnits:
Both Compute and Data Units are specified using an abstract description object:
The ComputeDataService represents the central entry point for the application workload:
The ComputeDataService (CDS) takes care of the placement of Compute and Data Units. The set of PilotComputes and PilotData available to the CDS can be changed during the application's runtime. The CDS different data-compute affinity and will handle compute/data co-locationing for the requested data-compute workload.
Pilots, Compute and Data Units are associated with a State.
Example:
from pilot import PilotComputeService, ComputeDataService, State pilot_compute_service = PilotComputeService() # create pilot job service and initiate a pilot job pilot_compute_description = { "service_url": 'fork://localhost', "number_of_processes": 1, "working_directory": os.path.join(os.getcwd(),"work"), 'affinity_datacenter_label': "eu-de-south", 'affinity_machine_label': "mymachine" } pilotjob = pilot_compute_service.create_pilot(pilot_compute_description=pilot_compute_description) compute_data_service = ComputeDataService() compute_data_service.add_pilot_compute_service(pilot_compute_service) # start work unit compute_unit_description = { "executable": "/bin/date", "arguments": [""], "number_of_processes": 1, "output": "stdout.txt", "error": "stderr.txt", "affinity_datacenter_label": "eu-de-south", "affinity_machine_label": "mymachine" } compute_unit = compute_data_service.submit_compute_unit(compute_unit_description) compute_data_service.wait() compute_data_service.cancel()
All API objects that should be utilized by the application reside in the pilot namespace. The implementation resides in pilot.impl.
Please, refer to https://github.com/saga-project/BigJob/tree/master/examples/pilot-api for an extensive set of examples.
| Submodules | |
|
| Variables | |
application_id =
|
|
version =
|
|
__package__ =
|
| Home | Trees | Indices | Help |
|
|---|
| Generated by Epydoc 3.0.1 on Sat Jan 26 22:29:03 2013 | http://epydoc.sourceforge.net |


|
|
| QuicDataReader (const char *data, const size_t len, Endianness endianness) |
| |
|
bool | ReadUInt8 (uint8_t *result) |
| |
|
bool | ReadUInt16 (uint16_t *result) |
| |
|
bool | ReadUInt32 (uint32_t *result) |
| |
|
bool | ReadUInt64 (uint64_t *result) |
| |
|
bool | ReadBytesToUInt64 (size_t num_bytes, uint64_t *result) |
| |
|
bool | ReadUFloat16 (uint64_t *result) |
| |
|
bool | ReadStringPiece16 (QuicStringPiece *result) |
| |
|
bool | ReadStringPiece (QuicStringPiece *result, size_t len) |
| |
|
bool | ReadConnectionId (uint64_t *connection_id) |
| |
|
bool | ReadTag (uint32_t *tag) |
| |
|
QuicStringPiece | ReadRemainingPayload () |
| |
|
QuicStringPiece | PeekRemainingPayload () |
| |
|
bool | ReadBytes (void *result, size_t size) |
| |
|
bool | IsDoneReading () const |
| |
|
size_t | BytesRemaining () const |
| |
|
uint8_t | PeekByte () const |
| |
|
void | set_endianness (Endianness endianness) |
| |
|
bool | ReadVarInt62 (uint64_t *result) |
| |
The documentation for this class was generated from the following files:


Next: Targeting large logic blocks
Up: Probabilistic Error Masking Matrix
Previous: PeMM Definition
PeMM for large circuits can be deducted through gate-level PeMM combinations, which requires a detailed knowledge on gate-level netlist of the targeted circuits. However, when the discussion is focused on the fault propagation analysis where only the primary inputs of logic blocks are faulty, PeMM can be also characterized through high-level behavioral simulation, for instance using C language based testbenches. For a specific circuit with random data inputs, the masking probability
can be acquired by averaging the error probability on
among multiple experiments, where one bit-flip fault is injected onto input
in each experiment.
Subsections
Zheng Wang A Chattopadhyay
2014-07-16


We know that investing is one of the most importance aspect of present time. We have strong opinion that Investing is not just for professionals but for everyone. Our mission to enable everyone to understand and invest easily.
Our ToolboxUnderstanding Investing can be done just by learning the basic financial concepts.
Powerful Analytics Tools to help you find out relevant information and data.
Smart and easy Visualization to enhance your decision making ability.
Copyright © Web Bricks Infotech LLP


Find the best training for your next job.
Type a skill or job you want and see relevant training programs eligible for tuition assistance.
Computer
Health Care
Sales
Business
Education
Science/Math
Filters
In-demand
On-Site Childcare Available
Distance Learning Available
Spanish-Speaking Staff
Other Languages Spoken By Staff
WIA Eligible
Wheelchair Accessible
Career Counseling Available


home link
contacts link
about us link
our teams link
Hello world
go to our instagram
go to our linked in
Subscribe


scrollBarOptions
Type Function Library widget.* Return value ScrollViewWidget Revision Current Public Release (2013.2076) Keywords widget, scrollview, scrollbox, scrolling content Sample code /CoronaSDK/SampleCode/Interface/WidgetDemo See also ScrollViewWidget graphics.newMask()
Creates a ScrollView object.
The ScrollView object uses one mask to define it's shape. You need to consider this if you are adding this object to a container (which also uses a mask) or adding masked items to the object (i.e., text objects). Graphcis 2.0 has a mask nesting limit of three.
For a walkthrough on how to use image masks, see the Masking Images guide.
This widget does not support scaling.
widget.newScrollView( options )
This function takes a single argument, options
, which is a table that accepts the following parameters:
String. This is an optional id to assign to your ScrollView. Default is "widget_scrollView".
Numbers. This is the position where the ScrollView will be created. The default values for left and top are 0, 0.
Numbers. This is the width/height of the ScrollView.
Numbers. This is the width/height of the total scrollable content area. This cannot be changed after the ScrollView widget has been created.
Numbers. These numbers represent the number of pixels from the top and bottom of the ScrollView in which content will stop when it reaches the top/bottom of scrollable area. The default value for both is 0.
Numbers. These numbers represent the number of pixels from the left and right of the ScrollView in which content will stop when it reaches the left/right of scrollable area. The default value for both is 0.
Number. This determines how fast the content travels when it is flicked up or down. The default value is 0.972.
Table. This is a table that holds the color (in rbga format) of the ScrollView background. Default is white:
{ 255, 255, 255, 255 }
Boolean. If set to true
, the background of the ScrollView will be not be visible.
Boolean. If set to true
, the ScrollView will be unable to scroll horizontally.
Boolean. If set to true
, the ScrollView will be unable to scroll vertically.
Boolean. If set to true
, the ScrollView will be locked, meaning it cannot be scrolled vertically or horizontally.
Boolean. Set this to true
if you do not want to use a scrollBar in your ScrollView.
Listener. Used to listen for ScrollView events, with the following events: event.limitReached
- Indicates that the scrollView has reached one of it's limits. event.direction
- Returns the direction the scrollView is moving in.
Event phases of: began
, moved
& ended
. In your listener, event.target
is a reference to the ScrollView object that the listener is attached to. See the example for how to construct the listener function.
Constant. This is the path to your maskFile (if using one). Default is system.ResourceDirectory
. See system.pathForFile() for valid values.
String. If you set a custom width/height, you need to provide a maskFile, which is the filename of the image mask which will be used on your ScrollView.
Boolean. Set this to false
if you do not want your ScrollView to bounce back when reaching a limit (top, bottom, left, right), but simply stop scrolling when it reaches that limit. Defaults to true.
Table. This is a table that specifies the imageSheet
object for the scrollBar, and it's top
, middle
and bottom
frames. If not specified the scrollBar will be created using the default widget theme.
scrollBarOptions
Scrollbar's are constructed in the form of a 3 slice image. You must specify all of the parameters below if you wish to visually customize your scrollBar.
ImageSheet. This is the image sheet object for your scrollBar.
Number. This is the top frame index of the scrollBar.
Number. This is the middle frame index of the scrollBar.
Number. This is the bottom frame index of the scrollBar.
local widget = require( "widget" )
-- Our ScrollView listener
local function scrollListener( event )
local phase = event.phase
local direction = event.direction
if "began" == phase then
print( "Began" )
elseif "moved" == phase then
print( "Moved" )
elseif "ended" == phase then
print( "Ended" )
end
-- If we have reached one of the scrollViews limits
if event.limitReached then
if "up" == direction then
print( "Reached Top Limit" )
elseif "down" == direction then
print( "Reached Bottom Limit" )
elseif "left" == direction then
print( "Reached Left Limit" )
elseif "right" == direction then
print( "Reached Right Limit" )
end
end
return true
end
-- Create a ScrollView
local scrollView = widget.newScrollView
{
top = 100,
left = 10,
width = 300,
height = 350,
scrollWidth = 465,
scrollHeight = 670,
listener = scrollListener,
}
-- Create a image and insert it into the ScrollView
local background = display.newImageRect( "assets/scrollimage2.jpg", 768, 1024 )
background.x = bg.contentWidth * 0.5
background.y = bg.contentHeight * 0.5
scrollView:insert( background )


unarchive
add
visibility
settings
print
Print
code
Copy HTML
mode_edit
Rename
archive
Archive
delete
Delete
help
Help


Descuentocity is an aggregator of deals, the largest in Argentina and strong presence in countries of Latin America. See all offers of your city in one place.
SeMeAntoja.com the largest social network in the world to order food online. Discover dishes and restaurants in Mexico, connect with friends and order.
Abzooba Inc.'s mission is to empower patients in making better health decisions through effective knowledge sharing and knowledge dissemination.


“I am not just a person who goes around peeing on tombs, but a writer with a serious oeuvre.”
So says one Eduardo Labarca, quoted in today's Grauniad. Proclaiming oneself to be the creator of “a serious oeuvre” is akin to the claim, invariably made by humourless persons, that “I've got a mad sense of humour, me”. Labarca also states “Peeing on that tomb was a legitimate artistic act.” Ah! How delightfully transgressive!
It briefly occurred to me to court notoriety and publicity by desecrating the grave of, say, Anthony Burgess, but then I realised that I am no longer a teenperson. Nor, for that matter, is the absurd Labarca.


Served on white bread with Goldfish crackers and a juice box.
$3.49 -- grilled with American cheese
$3.49 -- with your choice of strawberry or grape jelly
Menu and prices subject to change.
Cool Beans Coffee Café is a great place to relax AND bring the kids, too. In our children’s seating and play area inside, and sandbox outside, there is plenty to keep them busy while you enjoy our coffee and food.


FastGFile
File I/O wrappers without thread locking.
Note, that this is somewhat like builtin Python file I/O, but there are semantic differences to make it more efficient for some backing filesystems. For example, a write mode file will not be opened until the first write call (to minimize RPC invocations in network filesystems).
__init__
__init__( name, mode='r' )
DEPRECATED FUNCTION
Warning: THIS FUNCTION IS DEPRECATED. It will be removed in a future version. Instructions for updating: Use tf.gfile.GFile.
mode
Returns the mode in which the file was opened.
name
Returns the file name.
__enter__
__enter__()
Make usable with "with" statement.
__exit__
__exit__( unused_type, unused_value, unused_traceback )
Make usable with "with" statement.
__iter__
__iter__()
close
close()
Closes FileIO. Should be called for the WritableFile to be flushed.
flush
flush()
Flushes the Writable file.
This only ensures that the data has made its way out of the process without any guarantees on whether it's written to disk. This means that the data would survive an application crash but not necessarily an OS crash.
next
next()
read
read(n=-1)
Returns the contents of a file as a string.
Starts reading from current position in file.
n
: Read 'n' bytes if n != -1. If n = -1, reads to end of file.'n' bytes of the file (or whole file) in bytes mode or 'n' bytes of the string if in string (regular) mode.
readline
readline()
Reads the next line from the file. Leaves the '\n' at the end.
readlines
readlines()
Returns all lines from the file in a list.
seek
seek( offset=None, whence=0, position=None )
Seeks to the offset in the file. (deprecated arguments)
Warning: SOME ARGUMENTS ARE DEPRECATED: (position)
. They will be removed in a future version.
Instructions for updating:
position is deprecated in favor of the offset argument.
offset
: The byte count relative to the whence argument.whence
: Valid values for whence are:
0: start of the file (default)
1: relative to the current position of the file
2: relative to the end of file. offset is usually negative.seekable
seekable()
Returns True as FileIO supports random access ops of seek()/tell()
size
size()
Returns the size of the file.
tell
tell()
Returns the current position in the file.
write
write(file_content)
Writes file_content to the file. Appends to the end of the file.


stream2py¶
digraph { rankdir=LR; "SourceReader" [shape=cds] "StreamBuffer" [shape=box3d] "SourceReader" -> "StreamBuffer" -> "BufferReader1"; "StreamBuffer" -> "BufferReader2"; "StreamBuffer" -> "BufferReader3"; }The Rationale¶
Stream2py enables you to create a single asynchronous Source Reader and simply distribute thread-safe readers to one or more consumers for the same data window. Or in other words, read and work on data without worrying about missing data.
Normal way to process audio recording:
import pyaudio
CHUNK = 1024
WIDTH = 2
CHANNELS = 1
RATE = 44100
RECORD_SECONDS = 5
p = pyaudio.PyAudio()
stream = p.open(
format=p.get_format_from_width(WIDTH),
channels=CHANNELS,
rate=RATE,
input=True,
frames_per_buffer=CHUNK
)
for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
data = stream.read(CHUNK)
# risk of buffer overflow before next read
long_calculations(data)
stream.stop_stream()
stream.close()
p.terminate()
Stream2py way to process audio recording:
from stream2py.sources.audio import PyAudioSourceReader
CHUNK = 1024
WIDTH = 2
CHANNELS = 1
RATE = 44100
RECORD_SECONDS = 5
source_reader = PyAudioSourceReader(
rate=RATE,
width=WIDTH,
channels=CHANNELS,
frames_per_buffer=CHUNK
)
with StreamBuffer(
source_reader=source_reader, maxlen=int(RATE / CHUNK * RECORD_SECONDS)
) as stream_buffer:
buffer_reader = stream_buffer.mk_reader()
for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
data = next(buffer_reader)
long_calculations(data)
How to use¶
There are 3 components
1. The SourceReader¶
A SourceReader defines how to get data with the methods: open(), read(), and close(), and also how the data is ordered with the key() method and an info property describing the instance.
from typing import Tuple
from stream2py import SourceReader
EnumeratedReadData = Tuple[int, str]
class LineSourceReader(SourceReader):
def __init__(self, file, mode='rt'):
self.file = file
self.mode = mode
self.line_count = 0
self._f = None
def open(self):
self.line_count = 0
self._f = open(self.file, self.mode)
def read(self) -> EnumeratedReadData:
read_data = (self.line_count, self._f.readline())
self.line_count += 1
return read_data
def close(self):
self._f.close()
def key(self, data: EnumeratedReadData):
return data[0]
@property
def info(self)
return dict(file=self.file, mode=self.mode)
2. The StreamBuffer¶
A StreamBuffer has 2 jobs: First, it manages the open, read, and close of a SourceReader and puts read data onto a thread-safe buffer. Second, it is a factory of BufferReaders instances for multiple consumers.
# ...Continued from above
# download txt from: https://www.gutenberg.org/cache/epub/1524/pg1524.txt
FILE = 'hamlet.txt'
source_reader = LineSourceReader(FILE)
with StreamBuffer(
source_reader=source_reader,
maxlen=None, # None should only be used when reading objects with fixed lengths like a file
) as stream_buffer:
buffer_reader = stream_buffer.mk_reader()
3. The BufferReader¶
A BufferReader gives data access to any number of consumers and provides methods to seek data such as next(), range(), head(), tail(). Each BufferReader instance has it’s own cursor keeping track of what data was last seen.
# ...Continued from above
line_1 = buffer_reader.next()
line_2 = next(buffer_reader)
line_1_10 = buffer_reader.range(start=1, stop=10)
The All-in-One Helper¶
Here’s a bonus helper function to shortcut the SourceReader class.
from time import sleep
from stream2py import mk_stream_buffer
FILE = 'hamlet.txt'
with mk_stream_buffer(
read_stream=lambda open_inst: next(open_inst, None),
open_stream=lambda: open(FILE, 'rt'),
close_stream=lambda open_inst: open_inst.close(),
key=lambda read_data: read_data[0],
maxlen=None,
) as stream_buffer:
buffer_reader = stream_buffer.mk_reader()
sleep(1)
# do stuff with buffer_reader
print(buffer_reader.range(start=40, stop=50))


Congratulations for having chosen the safest and most natural health care program ever conceived: Chiropractic.
This painless, logical, and effective approach to health has been serving everyday people for over 100 years. It is licensed in every state, and in many countries as well. Chiropractic has the least chance of side effects of any other type of health care. Mild headaches and muscles soreness may sometimes occur.
Let’s look at a few statistics about possible serious side effects:
The #1 cause of death in the US is from correctly and incorrectly prescribed pharmaceutical drugs. (CDC, FDA, NIH sites, also Gary Null: Death By Medicine)
Stroke is one of the most common causes of death in the US. With people going to doctors all the time it is probable that many will have had a recent doctor visit. But causation is another matter entirely.
There is no absolutely known material risk of chiropractic care being greater than risks from medical treatment. In fact, when all the factors are taken together, deaths and injuries from a combination of medical mistakes and intentional drugs dwarf any injuries from chiropractic.
Risk of stroke from chiropractic? Virtually zero chance of stroke from chiropractic. The largest study ever done – the 2008 study in Canada looking at 12 million people over 9 years, showed that 53% of strokes had visited their MD within 30 days prior, while only 4% had visited their DC. No evidence of excess risk of stroke associated with chiropractic care.
In 2001 the Canadian Medical Association Journal found there is only a one-in-5.85-million risk that a cervical manipulation from an MD, PT, or DC would be followed by a stroke. Author David Cassidy, a professor of epidemiology at the University of Toronto said patients had already damaged the artery before seeking help from either a medical doctor or a chiropractor, and then the stroke occurred after the visit.
Speaking of risks associated with chiropractic, we should look also at the risk associated with NOT GETTING adjusted. This risk was one of the 4 components of risk in the Association of Chiropractic Colleges guidelines on informed consent in 2008. Disc degeneration, loss of mobility, loss of overall tone, decreased quality of life – these are real risks of the untreated spine as time goes by.
I fully understand these risks, the doctor has explained them to me and I consent to chiropractic care by typing my name and todays date below.


Toggle navigation
Mayer GmbH
Contact
Sign In
Sign Up
© 2018 » Mayer GmbH
Imprint | Disclaimer
Mayer GmbH
Login
Create Account
Username
First Name
Last Name
Email
Password
Thank you for registering on firma.de!
Sign in
here
.


SYSTANE BALANCE- propylene glycol emulsion
Alcon Laboratories, Inc.
Disclaimer: Most OTC drugs are not reviewed and approved by FDA, however they may be marketed if they comply with applicable regulations and policies. FDA has not evaluated whether this product complies.
For external use only.
Boric acid, dimyristoyl phosphatidylglycerol, edetate disodium, hydroxypropyl guar, mineral oil, polyoxyl 40 stearate, POLYQUAD® (polyquaternium-1) 0.001% preservative, sorbitan tristearate, sorbitol and purified water. May contain hydrochloric acid and/or sodium hydroxide to adjust pH.
TAMPER EVIDENT: For your protection, this bottle has an imprinted seal around the neck. Do not use if seal is damaged or missing at time of purchase.
Upgrade to a higher standard of relief. SYSTANE® BALANCE Lubricant Eye Drops has the proven power to restore the natural tear's lipid layer to treat dryness and provide long lasting relief.
U.S. Patent Nos. 5,278,151; 5,294,607; 5,578,586; 6,583,124; 6,838,449; 6,849,253
© 2010 Alcon, Inc.
Alcon®
Alcon Laboratories, Inc.
6201 South Freeway
Fort Worth, TX 76134 USA
Printed in USA
|
SYSTANE
BALANCE propylene glycol emulsion | ||||||||||||||||||||||||||
| ||||||||||||||||||||||||||
| ||||||||||||||||||||||||||
| ||||||||||||||||||||||||||
| ||||||||||||||||||||||||||
|
| Labeler - Alcon Laboratories, Inc. (008018525) |
| Establishment | |||
| Name | Address | ID/FEI | Business Operations |
|---|---|---|---|
| Alcon Laboratories, Inc. | 008018525 | MANUFACTURE |


{% csrf_token %}
Goods Info
Goods
{{ form.itemcode }}
{{ form.goodsname }}
Type
{{ form.typeapp.value }}
Colour
{{ form.colour.value }}
Invoice No
{{ form.invoice_no.value }}
Year Made
{{ form.year_made.value }}
Employee Info
Employee
{{ form.employee_nik }}
{{ form.employee_name }}
Send by
{{ form.sender_nik }}
{{ form.sender_name }}
Responsible by
{{ form.resp_employee_nik }}
{{ form.resp_employee_name }}
More Detail
Date Request
{{ form.daterequest }}
Date Released
{{ form.datereleased }}
Equipment
{% for equipment in equipments %}
{{ equipment.name_app }}
{% endfor %}
Add Equipment
{% for equipment in equipments %}
{{ equipment.name_app }}
{% endfor %}
Descriptions / Remark
{{ form.descriptions }}
{{ form.initializeForm }} {{ form.fk_goods }} {{ form.fk_app }} {{ form.fk_receive }} {{ form.isnew }} {{ form.employee }} {{ form.sender }} {{ form.resp_employee }} {{ form.equipment }} {{ form.add_equipment }} {{ form.used_by }} {{ form.used_by_nik }} {{ form.used_by_name }}


| ResponseHandler | |
| SidebarData | |
| SidebarDataTranslator | The translator's job is to translate input into something we can use for our views and other places. |
| SidebarManager | Why does the sidebar manager exist? |
| ResponseHandler | |
| SidebarData | |
| SidebarDataTranslator | The translator's job is to translate input into something we can use for our views and other places. |
| SidebarManager | Why does the sidebar manager exist? |


@* * Copyright 2018 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.gform.sharedmodel.formtemplate._ @import uk.gov.hmrc.gform.validation.FormFieldValidationResult @import uk.gov.hmrc.gform.views.html.localisation @import uk.gov.hmrc.play.views.html.helpers._ @(fieldValue: FormComponent, validationResultO: Option[FormFieldValidationResult]) @validationResult = @{ //it's always there, TODO: change template signature validationResultO.get } @safeId(id: String) = @{ fieldValue.id.withSuffix(id).value } @showError(e: String) = @{ errorInline(e, e, Seq("")) }