|
This document is a guide to installing and configuring the Ontopia Topic Maps Engine RDBMS Backend Connector. It assumes that the reader is familiar with relational databases and has some knowledge of how to configure them.
This is a short summary of the installation process for the impatient. If you want more detail, jump to the introduction and read on from there.
In order to use the RDBMS backend you need:
A database with the Ontopia Topic Maps schema set up. SQL scripts to create the tables are in rdbms/setup.
A JDBC driver for your particular database. In the default installation this goes in apache-tomcat/common/lib.
A property file describing how to connect to the database. There are examples in rdbms/config. Put it in apache-tomcat/common/classes.
To make Ontopia look for topic maps in the database you must also add an RDBMS source to the apache-tomcat/common/classes/tm-sources.xml file. You'll find examples commented out at the bottom of the file.
That's it!
The RDBMS Backend Connector adds relational database persistence support to the Ontopia Topic Maps Engine. The persistence is transparent and users of the topic map interfaces don't have to take any additional steps in order to persist topic maps. Applications that uses the RDBMS Backend Connector must properly demarcate transactions and follow the general rules in a transactional system. This includes managing the life-cycle of topic map stores and transactions.
Before you can install and start using the RDBMS Backend Connector you must have an RDBMS server installed, and you must have created a database inside it. (The database can have any name since Ontopia finds the database name from the JDBC URL.) You also need a JDBC 2.0 driver, and to have set everything up so that you can connect to the database through the JDBC driver. If you want to use batch writing or connection pooling you will also have to install the JDBC 2.0 optional package. Once this is done, you are ready to start.
A JDBC 2.0 driver for your database must be available on your CLASSPATH. Your database vendor should be able to provide you with an appropriate JDBC driver.
If you want to use connection pooling you need the JDBC 2.0 Optional Package API (the javax.sql packages) on your CLASSPATH. This API can be downloaded from Sun Microsystems.
Ontopia fully supports Unicode, but for the RDBMS Connector to support Unicode the database must support storing Unicode text. Most databases do not enable this by default, and require special options to be set when creating the database. This section documents these options for various databases. Note that you need only do this if you actually need to store Unicode characters in your database.
If you don't do this, the tests in the test suite that verify Unicode support will fail. This will give failure reports like the ones shown below.
There were 4 failures: 1) testFile(net.ontopia.topicmaps.xml.test.AbstractCanonicalTests$CanonicalTestCase) "test file unicode.xtm canonicalized wrongly" 2) testFile(net.ontopia.topicmaps.xml.test.AbstractCanonicalTests$CanonicalTestCase) "test file unicode.iso canonicalized wrongly" 3) testExport(net.ontopia.topicmaps.xml.test.AbstractCanonicalExporterTests$CanonicalTestCase) "test file unicode.xtm canonicalized wrongly" 4) testExport(net.ontopia.topicmaps.xml.test.AbstractCanonicalExporterTests$CanonicalTestCase) "test file unicode.iso canonicalized wrongly"
To create a database which stores text in UTF-8, give the -E UNICODE option to createdb, as in createdb -E UNICODE topicmaps. More information can be found on the PostgreSQL website.
To create a database which stores text in UTF-8 and uses case-insensitive collation, use the following DDL command:
CREATE DATABASE topicmaps DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_bin;
To modify a database to store text in UTF-8, execute the following commands. More information is available on Oracle technet.
STARTUP MOUNT; ALTER SYSTEM ENABLE RESTRICTED SESSION; ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0; ALTER DATABASE OPEN; ALTER DATABASE CHARACTER SET UTF8; SHUTDOWN NORMAL;
The next step is to create the topic map database schema in the database. This is done by executing the SQL scripts provided in one of the *.create.sql files, found in the $ONTOPIA_HOME/rdbms/setup directory. If there is no script for the database you are using, use the generic.create.sql script.
There are also scripts for dropping the database schema in the same directory.
These scripts create the tables with primary keys and indexes in the database. They also initialize the TM_ADMIN_SEQUENCE table by inserting a single row. The TM_ADMIN_SEQUENCE table contains the sequence counters used to generate object identities.
In later versions we will provide a command-line tool which initializes the database for you automatically. In the meantime, if you run into problems when initializing the database, please send an email to<EMAIL_ADDRESS>The next step is to create a properties file that contains the information necessary to connect to the database.
Only SQL Server 2005 or newer versions are supported. Older versions may work, but there will be contention in the database if used in a concurrent environment.
In order to enable the snapshot isolation and row versioning features (both needed by Ontopia) the following two statements need to be executed in the database. Replace the topicmaps name with the name of your database. Note that this will not work with the master database as the read_committed_snapshot is not supported in that database. Use a custom database instead.
alter database topicmaps set allow_snapshot_isolation on; alter database topicmaps set read_committed_snapshot on;
More information about the database features can be found here.
Before we can connect to the database we need to tell the backend how to connect to the database. This is done by writing a Java properties file that provides the necessary information. Below are listed the properties that need to be defined. You can put the properties file anywhere you like, but it is recommended to place it together with other configuration files. For Ontopia to find this file you have to point to it from the tm-sources.xml file. (See the Navigator Configuration guide for details, but by default this file is located in apache-tomcat/common/classes.)
The default properties file for use in applications can be designated by setting the net.ontopia.topicmaps.impl.rdbms.PropertyFile system property to the property filename. Note that the default can always be overridden through the APIs.
A collection of sample database properties files can be found in the $ONTOPIA_HOME/rdbms/config directory.
Type: token, Required: yes
This property specifies which database it is running against. The RDBMS Backend Connector uses this information to adjust the SQL it generates, and also to do optimizations.
Possible values are: oracle8, oracle9i, oracle10g, postgresql, mysql, h2 sqlserver and generic. If you don't find your database in this list try using the generic setting.
Type: string, Required: yes
This is the JDBC connection string, which must be specified. The value will depend on which database you are using and how you have configured it.
Type: string (class name), Required: yes
This is the fully qualified class name of the JDBC driver class to use. It must be set. Note that this must be a JDBC 2.0 driver.
Type: string, Required: yes
This is the user name of the database user.
Type: string, Required: yes
This is the password of the database user.
Type: boolean, Default: false
If set to true all database modifications will be performed through JDBC batch updates.
This option boosts performance with large transactions and in environments where network lag is an issue, since the number of network requests needed is significantly lower and the database may provide optimizations for performing lots of similar database modifications in batches.
Note that some JDBC drivers do not support batch updates. Please verify that your JDBC driver actually supports batch updates before enabling it.
If multiple instances of the RDBMS Backend Connector are to access the same topic map(s) the clustering feature must be enabled to prevent inconsistencies. As each instance holds an internal data cache any modifications to the data needs to be replicated across all nodes in the cluster. This must be done to prevent any of the nodes from holding stale data.
Note that if your application uses the Web Editor framework then another clustering configuration needs to the set up. See the Web Editor Framework Developer's Guide for more information.
Type: string, Default: none
This property specifies the id of the cluster that the instance should be a member of. All instances that access the same topic map should be members of the same cluster. Specifying this property will make the instance connect to to the cluster on startup.
The cluster identifier must start with jgroups:, e.g. jgroups:cluster:my-topicmaps. JGroups is currently the only clustering implementation for cache invalidation.
Type: string, Default: none
This property lets one pass in the name of a file containing configuration properties used by the clustering implementation. If the property is not specified the default properties will be used. The file will be first attempted loaded from the file system, then from the classpath.
Note that there is a critical bug in pre-1.6 JVMs related to IPv6 network support that prevents them from being used with JGroups out of the box. To make JGroups use IPv4 make sure that you pass the following system property to the JVM on startup:
-Djava.net.preferIPv4Stack=true
The RDBMS Backend Connector retrieves all its data from the backing relational database. The communication with the database is relatively fast, but can introduce a big performance hit when the network traffic is high. In order to offer high performance Ontopia provides a number of client-caches that makes it possible to avoid repeated reads from the database.
Type: boolean, Default: true
Because the RDBMS Backend Connector supports concurrent transactions the database communication needs to be effective and non-redundant. Ontopia provides a cache implementation that transactions can share, so that redundant database access is avoided. This cache is enabled by default when using the Navigator and Web Editor Frameworks. Note that when using the Topic Maps Engine API one must access the topic map store through one of the topic map source implementations in the RDBMS Backend to make use of the shared cache. Warning: If one does not use the shared cache in a multi-user environment the performance hit can be very high.
The only situation where you should consider disabling this cache is when you have one long-running transaction. In this case it is best to disable the shared cache because it adds an overhead and can, if the transaction is big, also cause the transaction to run out of memory. Without a shared cache there is no limit on the size of transactions.
Do not disable the shared cache when there are concurrent transactions updating the same topic map as this would mean that the transactions might not see each other's committed changes.
Type: integer (# items in cache), Default: 300
Each transaction maintains a mapping between the object ids of topic map objects and the topic map objects themselves. This data structure holds soft references to the topic map objects and the objects can therefore be garbage collected when there are no other hard references to them. This is a mechanism that lets the Java Virtual Machine get rid of objects when it needs to reclaim memory in order to not run out of memory. This datastructure is also extremely useful for the transaction itself because it uses it to avoid having to create object instances too often.
This property tells Ontopia that it should hold hard references to the most recently used objects and for how many objects it should do so. Note that the property specifies the number of hard references per transaction, so when adjusting this number take into account how many concurrent transactions you might have and how much memory is available.
Type: integer (# items in cache), Default: 5000
This property is similiar to the previous one, but this one is used to define the size of the lru of the shared identity map. The shared identity map is shared amongst all read-only transactions. In general this one should be bigger than the previous one as there are usually a lot more read-only transactions in the system than read-write ones.
Type: integer (# items in cache), Default: 2000
Each transaction maintains cache that is a mapping between source locators and the topic map objects that have those identities. This cache is there so that repeated lookups can be fast. The cache uses soft references and this property lets you specify how many hard references there should be to the most recently used entries.
Type: integer (# items in cache), Default: 1000
Each transaction maintains cache that is a mapping between subject identities (subject identifiers) and the topics that have those identities. This cache is there so that repeated lookups can be fast. The cache uses soft references and this property lets you specify how many hard references there should be to the most recently used entries.
Type: integer (# items in cache), Default: 100
Each transaction maintains cache that is a mapping between subject locators and the topics that have those identities. This cache is there so that repeated lookups can be fast. The cache uses soft references and this property lets you specify how many hard references there should be to the most recently used entries.
Type: integer (# items in cache), Default: 1000
This setting is used to control the minimum size of a cache used by the TopicIF.getRolesByType(TopicIF roleType). This cache is also used by the tolog query engine to improve association traversal performance.
Type: integer (# items in cache), Default: 1000
This setting is used to control the minimum size of a cache used by the TopicIF.getRolesByType(TopicIF roleType, TopicIF associationType). This cache is also used by the tolog query engine to improve association traversal performance.
The RDBMS Backend Connector uses JDBC connections to access the relational database. Being able to reuse connections across interactions with the database is important because creating connections is expensive. The RDBMS Backend Connector supports different JDBC connection pool implementations. Use the following properties to enable and configure connection pooling:
Type: boolean, 'dbcp' or 'jndi', Default: dbcp
If set to true, or any of the named collection pool implementations, connection pooling will be used. The default connection pool implementation is 'dbcp'. It is recommended that one use connection pooling if one needs to open more than a single topic map transaction.
Type: integer (# connections), Default: 20
The minimum number of connections in the pool. The number of connections in the pool will never shrink below this size.
Type: integer (# connections), Default: Integer.MAX_VALUE
The maximum number of connections in the pool. The number of connections will never grow larger than this number, unless the soft maximum is enabled.
Type: boolean, Default: true
If the maximum pool size is reached but there are outstanding requests for connections emergency connections will be created if this property is true. This will temporarily increase the size of the pool, but the pool will shrink back to an acceptable size when the activity is lower. If this setting is false, requests will block until a connection is available.
Type: boolean, Default: true
The dbcp connection pool makes it possible to pool and reuse prepared statements created by the application. The RDBMS Backend uses prepared statements and enabling this feature should generally have a positive effect on performance. If the connection pool is dbcp then this feature is enabled by default. You should only set this property to false if you have a good reason to do so.
Type: string (the JNDI name), Default: none
Specifies the JNDI name of the JDBC data source. Note that this property is only useful when you are accessing the JDBC connections via JNDI. This usually only happens inside an J2EE application server. The property must be specified if the 'jndi' connection pool implementation has been specified. If you do not use JNDI to configure and set up your JDBC connections then do not set this property.
Ontopia supports pooling of topic map stores in the same way as you can pool JDBC connections with the provided connection pool implementations. The topic map store pooling is currently only available via the topic map reference implementation in the RDBMS Backend Connector. When using the RDBMS Backend Connector with the Navigator and Web Editor frameworks the topic map store pooling is always enabled. Note that when using the Topic Maps Engine API one must access the topic map stores through one of the topic map source implementations in the RDBMS Backend to make use store pooling. These topic map source implementations always use store pooling.
The main reason for using topic map store pooling is that it greatly improves performance in transactional environements. This is possible because topic map objects, topic map data, cached information and other state information can be reused across transaction boundaries.
You can override the store pool defaults by setting the following properties:
Type: integer (# stores), Default: 0
The minimum number of stores in the pool. The number of stores in the pool will never shrink below this size.
Type: integer (# stores), Default: 8
The maximum number of stores in the pool. The number of stores will never grow larger than this number, unless the soft maximum is enabled.
Type: boolean, Default: false
If the maximum pool size is reached but there are outstanding requests for stores emergency stores will be created if this property is true. This will temporarily increase the size of the pool, but the pool will shrink back to an acceptable size when the activity is lower. If this setting is false, requests will block until a connection is available.
The RDBMS Backend Connector has its own tolog implementation which it will use if it finds that it is possible to translate the tolog query into SQL. In most of the cases the entire tolog query can be translated fully into a SQL query, but for some more complex tolog queries only parts or none of it can be translated. Sometimes it makes sense for a topic map application to not use the RDBMS tolog implementation. These applications can change the default tolog implementation by setting the following property:
Type: 'in-memory' or 'rdbms', Default: 'in-memory'
Specifies which tolog implementation the RDBMS Backend Connector should use by default.
The tolog query language with its value-like predicate uses an underlying Fulltext integration. At the moment there are two options. The first is 'generic', which means that the search terms is turned into a SQL expression using the LIKE operator with wild cards on both sides. The second is 'oracle_text' which translates the search into an Oracle Text search expression. It is possible to specify exactly which Fulltext integration that should be used:
Type: 'generic' or 'oracle_text', Default: 'generic'
Specifies which fulltext implementation the RDBMS Backend Connector should use by default.
Note that this property will also have an effect with direct use of the net.ontopia.infoset.fulltext.impl.rdbms.RDBMSSearcher class.
Sample properties file (Oracle)
net.ontopia.topicmaps.impl.rdbms.Database=oracle10g net.ontopia.topicmaps.impl.rdbms.ConnectionString=jdbc:oracle:thin:@<IP_ADDRESS>:1521:TOPICMAPS net.ontopia.topicmaps.impl.rdbms.DriverClass=oracle.jdbc.driver.OracleDriver net.ontopia.topicmaps.impl.rdbms.UserName=scott net.ontopia.topicmaps.impl.rdbms.Password=tiger
Please note that the backslash character (\) is used as an escape character in Java property files. If you need to write a backslash (for example in DOS paths), make sure you write them as \\. Lines ending in a single backslash will cause the following property to be ignored.
Instead of using the Lucene integration with the RDBMS Backend Connector one can take advantage of the native full-text support that the database may have. This support can range from simple LIKE operator queries to advanced full-text indexing support.
In the net.ontopia.infoset.fulltext.impl.rdbms package there is a class called RDBMSSearcher that implements the SearcherIF interface. Pass your RDBMS TopicMapIF instance to the single constructor of this class and you have a searcher instance that let you search for topic name, variant name, and occurrences using the native pattern language.
The actual queries that are issued and the syntax that are supported is usually database specific, but the default behaviour is to use the LIKE operator. This means that you can use the '%' symbol to specify wildcards in your queries. Most relational databases support the LIKE operator, and therefore the default should be ok for most databases. Note that the actual query will make use of the lower function to make it a case-insensitive query.
In addition to the generic RDBMS full-text support Ontopia comes with support for several database-specific full-text implementations. They are all described below.
Note that enabling native RDBMS full-text through the net.ontopia.infoset.fulltext.impl.rdbms.RDBMSSearcher.type database property will also enable it for the value-like tolog predicate.
Recent versions of Oracle comes with full-text support included. The component is called Oracle Text. In older versions Oracle Text was an optional component and had to be purchased and installed separately.
To enable use of Oracle Text in Ontopia you will have to set the net.ontopia.infoset.fulltext.impl.rdbms.RDBMSSearcher.type database property to oracle_text. You will also have to make sure that the columns TM_TOPIC_NAME.content, TM_VARIANT_NAME.content, and TM_OCCURRENCE.content are setup to be indexed by Oracle Text.
Here are some sample statements to set this up for Oracle. Note that they require the Oracle Context Option, which for Oracle 8.x needs to be installed separately, but for Oracle 9i and later it should be installed by default.
create index TEXT_TOPIC_NAME on TM_TOPIC_NAME(content)
indextype is ctxsys.context
parameters ('sync(on commit) datastore ctxsys.default_datastore filter ctxsys.null_filter section group ctxsys.auto_section_group');
create index TEXT_OCCURRENCE on TM_OCCURRENCE(content)
indextype is ctxsys.context
parameters ('sync(on commit) datastore ctxsys.default_datastore filter ctxsys.null_filter section group ctxsys.auto_section_group');
create index TEXT_VARIANT_NAME on TM_VARIANT_NAME(content)
indextype is ctxsys.context
parameters ('sync(on commit) datastore ctxsys.default_datastore filter ctxsys.null_filter section group ctxsys.auto_section_group');
These indexes will be kept up to date on every commit. If you don't need to have them synced that often, consider changing the sync parameter.
An error message will be issued by the Oracle RDBMS if one attempts to use the Oracle Text query when the columns have not been full-text indexed, so if this happens you will have to run the create index statements above or similar ones.
Please consult your database documentation for more information on Oracle Text.
The full-text support in PostgreSQL is implemented through a module called tsearch2. This module will usually have to be installed manually before it can be used. This is typically done by logging in as the PostgreSQL administrator user and running the ${PSQL_LIB}/contrib/tsearch2.sql script in the database, e.g. using the psql command line utility. If you later which to uninstall tsearch2 that can be done with the ${PSQL_LIB}/contrib/untsearch2.sql script.
The next step is to grant access to the tsearch2 tables to the database user that is used by Ontopia. Replace myuser with the name of your database user below.
grant all on pg_ts_cfg to myuser;
grant all on pg_ts_cfgmap to myuser;
grant all on pg_ts_dict to myuser;
grant all on pg_ts_parser to myuser;
tsearch2 will then have to be told which of its configurations that are to be used. Ontopia uses a configuration called default. The configurations are mapped to the server encoding. Issue the following statement to set the locale for the default configration.
update pg_ts_cfg set locale='en_US.UTF-8' where ts_name='default';
If you don't know what the server encoding is then the following query will tell you:
select setting from pg_settings where name='lc_ctype';
The last step is to add a tsearch2 column and an index to each of the three tables that are to be searched. To keep the index up-to-date a set of triggers will also have to be added.
/* add columns */
alter table TM_TOPIC_NAME add column tsearch2 tsvector;
alter table TM_VARIANT_NAME add column tsearch2 tsvector;
alter table TM_OCCURRENCE add column tsearch2 tsvector;
/* create indexes */
create index tsearch2_index_tbn on TM_TOPIC_NAME using gist(tsearch2);
create index tsearch2_index_tvn on TM_VARIANT_NAME using gist(tsearch2);
create index tsearch2_index_to on TM_OCCURRENCE using gist(tsearch2);
/* populate indexed columns */
update TM_TOPIC_NAME set tsearch2=to_tsvector('default', coalesce(content,''));
update TM_VARIANT_NAME set tsearch2=to_tsvector('default', coalesce(content, ''));
update TM_OCCURRENCE set tsearch2=to_tsvector('default', coalesce(content, ''));
/* add triggers */
create trigger tsearch2_update_tbn before update or insert on TM_TOPIC_NAME for each row execute procedure tsearch2(tsearch2, content);
create trigger tsearch2_update_tvn before update or insert on TM_VARIANT_NAME for each row execute procedure tsearch2(tsearch2, content);
create trigger tsearch2_update_to before update or insert on TM_OCCURRENCE for each row execute procedure tsearch2(tsearch2, content);
To enable use of tsearch2 in Ontopia you will have to set the net.ontopia.infoset.fulltext.impl.rdbms.RDBMSSearcher.type database property to postgresql or tsearch2.
The full-text support in SQL Server is not enabled by default, so it will have to be enabled:
EXEC sp_fulltext_database 'enable';
Then a full-text catalog has to be created and one full-text index added to each of the three tables that are be indexed. The database server will keep the full-text indexes automatically up to date as changes occur.
create fulltext catalog okscatalog as default;
create fulltext index on TM_TOPIC_NAME(content) key index TM_TOPIC_NAME_pkey;
create fulltext index on TM_VARIANT_NAME(content) key index TM_VARIANT_NAME_pkey;
create fulltext index on TM_OCCURRENCE(content) key index TM_OCCURRENCE_pkey;
alter fulltext catalog okscatalog reorganize;
Note that the TM_TOPIC_NAME_pkey, TM_VARIANT_NAME_pkey and TM_OCCURRENCE_pkey indexes referenced above are primary key indexe names, but they may not actually have those names in your database. You will have to look up the actual names of those three indexes of the given three names don't work.
To enable use of Microsoft SQL Server full-text in Ontopia you will have to set the net.ontopia.infoset.fulltext.impl.rdbms.RDBMSSearcher.type database property to sqlserver.
In order for the Java Virtual Machine to be able to load the RDBMS Backend Connector classes you need to add the ontopia.jar file to your CLASSPATH environment variable. See the Ontopia Installation and getting started document for more information.
Note that you also need to put your selected JDBC-driver classes on the CLASSPATH.
If you are using batch writing or connection pooling, then you must make sure that the JDBC 2.0 optional package is available on the CLASSPATH.
Now that you have an empty database we are ready to verify that the system actually works. We do this by running the test suite on the database. If you don't want to run the test suite, feel free to skip this section.
Before you can run the RDBMS Backend Connector test suite make sure that you have the Ontopia test environment correctly set up. This includes having the ontopia.jar and ontopia-test.jar-files on the CLASSPATH. See the Ontopia, Installation and getting started document for more information.
You can now run the test suite by following the procedure below:
The result should be similiar to what is shown below. If it is not, please send an email to<EMAIL_ADDRESS>with the output of the test run as well as details about your platform and the database you are using.
Ontopia RDBMS Backend Connector [version] Success: All required classes found. Running tests ......................................... ......................................... ......................................... ......................................... ......................................... ......................................... ......................................... .............................. Time: [xxx.yyy] OK ([zzz] tests) Asserts: [nnn]
Congratulations. Now that you've gotten this far it is time to start developing software using the RDBMS Backend Connector. See the Ontopia RDBMS Backend Connector, Developer's Guide for information about how to develop applications using the backend connector.


| # | Sta | Rlx | Name | Row Text |
| 0 | ST | 0 | autoRow0 | many vehicles emit pollution into the air (8e30-5411-1171-26fa) |
| 1 | ST | 0 | autoRow1 | pollution has a negative impact on the environment ; air quality ; water quality ; society (d116-6f25-b3ac-7d88) |
| 2 | ST | 0 | autoRow2 | burning gasoline ; oil is a source of air pollution (86ae-9fcc-40d0-77ab) |
| 3 | ST | 0 | autoRow3 | using a gasoline engine requires burning gasoline (1893-0c1c-dddc-e8c4) |
| 4 | ST | 0 | autoRow4 | vehicles usually require gasoline to operate (0bb0-16b1-30de-d0e2) |
| 5 | ST | 0 | autoRow5 | riding a bike does not cause pollution (b44c-810f-461c-c314) |
| 6 | ST | 0 | autoRow6 | an engine is a part of an automobile (3c28-d2a7-4f05-ca25) |
| 7 | ST | 0 | autoRow7 | a bicycle is a kind of vehicle (b019-cdb9-47c8-1c40) |
| 8 | ST | 0 | autoRow8 | riding a bike does not require gasoline to operate (6fb2-058d-e419-87ec) |
| 9 | ST | 0 | autoRow9 | an automobile is a kind of vehicle (7cb7-40ac-f4d5-eb6c) |
| 10 | ST | 0 | autoRow10 | bike means bicycle (3625-df10-23fc-2223) |


| Figure 1 |
Some species of Xenosaurus included in this study (a) Xenosa ... |
| Figure 2 |
Distribution of the records of the 10 species of Xenosaurus. ... |
| Figure 3 |
Habitat suitability area from models projected in current an ... |
| Figure 4 |
Distribution of the genus Xenosaurus in the PCA of climatic ... |


Akinniyi Ajiboyede: Harvard scholar redefining tech innovations
- Akininiyi Ajiboyede, a Nigerian who is a Harvard scholar, is using the power of technology to redefine some aspects of human lives
- Founder of three startups that focus on ride sharing, transport and hair service in Nigeria abroad, he said he has always experimented with technology since childhood
- Born to a businessman, he also said his father instilled the spirit of entrepreneurship in him at a very young age
In this postmodern time, Nigerians are leveraging on the power of technology not only to redefine how the nation is perceived but to offer solutions to humanity’s problems.
Akinniyi Ajiboyede, a technopreneur and a graduate of Harvard Business School, has used technology to revolutionise the way business is done around the world.
He is also the founder of Matutu, a keke aggregator service, and another Workclick, a hair business startup in San Francisco, Lagos, and Nairobi. His third creation is Fleetpartners, a ride sharing service.
Nigerian man living in Japan returns home, builds amazing chatting app
In an interview with Vanguard, he said his dad is also a businessman who instilled in him an entrepreneurial spirit at a very tender age.
Ajiboyede told the newspaper that he built his first computer game while in secondary school which gained him the name wizard instead of applause. He said that experience made him stop creating things until he left secondary school. Afterwards, he stopped experimentation and began creating his own products instead.
"As a young boy, while growing up in the company of other boys, we would organise technology competitions amongst ourselves and take our creations to school. In my secondary days, I built my first computer game and instead of being applauded for my effort I was labelled a wizard.
"This is because such a feat was not common then. Consequently, I stopped trying to experiment until I left secondary school. After I left secondary school, I grew from being that young boy who was fascinated with technology, and then I started experimenting and trying to create my own products," he said.
Nigerian woman wins big award for her work in Aerospace (photos)
His ride-sharing service started in 2007 where his first task was to create a coordinating platform for fleet operators and leasing companies.
In talking about his challenges in Nigeria, he said that there are not enough angel investors in tech start ups in the country as most of them struggle to get funding.
Ajiboyede, therefore, advised the government to provide an encouraging environment for young entrepreneurs springing up to thrive.
He said his biggest challenge so far in the business is having on-time access to funding and that he has also learnt to begin anytime manually where they are no investors to put money into technology.
PAY ATTENTION: Download our mobile app to enjoy the latest news update
Meanwhile, Legit.ng earlier reported that Simple Azenabor, a Nigerian based in Japan and an app developer, created a Nigerian chat app called SoftTalk.
Azenabor, who is also the founder of Prime Time Telecoms, a communication company in Japan, said the chatting app will also allow users to send instant messages, videos, audios and files.
Meet Nigerian whose great inventions are used in weather forecast, oil drilling
NAIJ.com (naija.ng) -> Legit.ng: We have upgraded to serve you better
How leaving Nigeria for Canada for 16yrs changed my life | Legit TV


There are several ways to build photon:
Building with SCons
- Enter the photon directory.
- Type 'scons' - building should begin assuming all dependencies are found.
this will result in the photon library being built in the lib/ folder.
- Optional: Type 'scons test' to build test programs, test programs will be
built in the test/ folder.
- Optional: Type 'scons docs' to build documentation in the docs/ folder.
[requires NaturalDocs]
- Copy the photon library from the lib/ folder and the contents of photon's
include/ directory to somewhere in your compilers search path.
Building with Code::Blocks
- Open the photon.workspace file in Code::Blocks
- Build the library by compiling the project named photon.
- Optional: Build any tests by running the other projects.
- Copy the photon library from the lib/ folder and the contents of photon's
include/ directory to somewhere in your compilers search path.
Building with Dev-C++
- Run the photon.dev project in the devcpp directory, building libphoton.a
- Optional: Build any tests by running the other projects in the devcpp
directory.
- Copy the photon library from the lib/ folder and the contents of photon's
include/ directory to somewhere in your compilers search path.
$Id: INSTALL.html,v 1.1 2005/11/15 05:48:31 cozman Exp $


A frame acts as the skeleton for the entire vehicle and is designed while taking care of ergonomics. It provides a rigid connection between the front and rear suspension, creates structural support for the other necessary systems and provides protection and comfort for the driver.
Suspension acts as connecting medium between the sprung and unsprung mass of the ATV. It is crucil for the vehicles's stability.Steering system is a mechanical linkage which is helpful for a vehicle to follow the desired course.
Unsprung & brakes department primarily works on wheel assembly and brakes of vehicles and deals with tires,wheels, hubs, master cylinder, brakes callipers, pedals and rotars. Steering kunckle is also designed and fbricated with input from suspension & steering department.
The Powertrain department forms the powerhouse of the vehicle. With Briggs and Stratton Engine as power source, a CVT is used as primary transmission component, and a Garbox (with differential) as a fixed, final reduction stage. Our main aim is to achieve balance between efficiency and Performance.


Synopsis
Tom Bowen (Fred Astaire) and Ellen Bowen (Jane Powell) are a
brother and sister dance team from New York. Their agent (Keenan
Wynn) books them in London for performances during the time of
the royal wedding. Aboard a cruise ship to London, Ellen becomes
involved with aristocrat and playboy, Lord John Brindale (Peter
Lawford). In London, Tom meets and falls in love with Anne Ashmond
(Sarah Churchill), a dancer in his show. Despite a few minor
complications, it all ends happily as the two couples find love
and marriage on the day of the royal wedding.
Royal Wedding is famous for several dance sequences,
including a classic number in which Astaire appears to dance on
the ceiling and walls of his hotel room. Jane Powell proves to be
an elegant and athletic partner for Astaire; though perhaps his best
duet of the movie takes place with a hat rack he discovers on the
cruise to England. This is one of Astaire's best and I highly
recommend it.


Gladiator * * 1/2 (out of * * * * )
Directed by Ridley Scott.  Reviewed by Dustin Putman, May 6, 2000.
Being trumpeted as the first big "event" picture of the summer of 2000, Ridley Scott's "Gladiator" is a robust, lumbering, often very exciting, extremely well-acted, and long, action-adventure, the first movie of its type to be set in Rome in over three decades. In fact, the film has been made on such an enormous scale (with a price tag of $103-million) that it's difficult not to be completely swept away in its high-style effectiveness and technical grandeur. Despite the sparkling presences of the film's three lead actors, as well as the many rousing battle set-pieces, "Gladiator" is a flawed motion picture, and one that, for all its flashiness, comes off as a mild disappointment. It is still a good film, but only marginally so, and easily could have been a great one.
Opening in 180 A.D., Maximus (Russell Crowe), an acclaimed Roman general, has sent his group of men into battle against the Germanics, in the final fight to defeat the empire's enemies. Set against the backdrop of the fog-induced, murky Bavarian forest, just as nightfall approaches, Maximus carries on his battle plan, and amidst the carnage, lives to see their victory.
Once the cowardly Commodus discovers his father's decision, he promptly murders him and demands that Maximus and his family be executed at once. Following his escape and the discovery that his home has been burned down and his wife and son brutally murdered, Maximus is captured by slave traders and sent to the provinces to act as a gladiator for the citizens' entertainment. Known as "The Spaniard," he surprisingly manages to defeat everyone that steps in his way, and is, finally, sent back to Rome, where he must carry out his newly enslaved life. But Commodus, the new emperor of Rome who believes Maximus has long since been killed, does not know that the masked mystery man the crowds have been cheering for in the Coliseum, is the man he most despises.
Unlike most action-adventures, "Gladiator" has a heart, along with its visceral thrills, thus allowing the audience to not only get involved in the sword fights and battle scenes, but also in the fates of the major characters. It also strengthens its entire impact and adds dimension to a story that otherwise might have come off being ineffectual and thin-skinned.
As Maximus, 35-year-old Russell Crowe has once again made a 180-degree transformation from his Oscar-nominated last character, the 57-year-old Jeffrey Wigand in 1999's "The Insider." Toned, alluring, and exceptionally convincing, Crowe has created another largely memorable character, one that is not your typical action hero, but a man who seems real--who can get hurt and even killed, and is bound to not always be able to save the day, no matter how talented of a gladiator he is.
In his strongest role to date, Joaquin Phoenix, usually cast as punk or dense types (see 1995's "To Die For" and 1999's "8mm"), really gets to show off his acting chops, and is plausibly threatening and powerful as the scheming Commodus. As Commodus' sister, Lucilla, Connie Nielsen (2000's "Mission to Mars") is superb, managing to hold her own in each of her scenes, right down to her final one, which is a marvelous display of acting. The way she reacts in her last moments onscreen come off as strikingly genuine and real, and Nielsen unveils herself to be a talent worth watching.
The cinematography, by John Matheson, is sweeping and unforgettable, using the most out of its widescreen format. However, many sequences are overly dim and more than a little grimy looking. The brighter scenes, however, particularly the angelic ones set back at Maximus' home, as well as all of the scenes at the Coliseum, are dazzling in their visual glory. Also making an impression is the memorable music score, by Hans Zimmer and Lisa Gerrard, perfectly capturing the feel of a Roman epic.
Where "Gladiator" loses some of its luster is in its overlong running time, which could have easily been nipped and tucked here and there without losing anything substantial with its characters or the story, at hand. Moreover, certain sections run on a little too long, and the fight scenes begin to grow repetitive by the final half-hour.
What ultimately saves "Gladiator," making it a film worth seeing, is the intensity and power of the climax, a tour de force fight to the death between Commodus and Maximus, with unforeseen results. It is moments like these that prove what a natural craftsman and possibly underrated filmmaker Ridley Scott (1982's "Blade Runner") is. "Gladiator" may be guilty of needless excess, but when it really works, it's an unadulterated adrenaline rush.
- Copyright 2000 by Dustin Putman Http://www.young-hollywood.com Http://www.atnzone.com
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


class Optional<T : GrapheneSerializable> : GrapheneSerializable
Container template class used whenever we have an optional field.
The idea here is that the binary serialization of this field should be performed in a specific way determined by the field implementing the {@link ByteSerializable} interface, more specifically using the {@link ByteSerializable#toBytes()} method.
However, if the field is missing, the Optional class should be able to know how to serialize it, as this is always done by placing an zero byte.
Author
Daria Pechkovskaya
<init> |
Container template class used whenever we have an optional field. Optional(field: T?, addByteToStart: Boolean = false) |
addByteToStart |
var addByteToStart: Boolean |
field |
var field: T? |
isSet |
val isSet: Boolean |
toBytes |
Converts entity to byte-array representation fun toBytes(): ByteArray |
toJsonObject |
Converts entity to json object representation fun toJsonObject(): JsonElement? |
toJsonString |
Converts entity to json string representation fun toJsonString(): String? |


WITNESS LIST Infrastructure Development and Security Committee March 17, 2003 -10:00A Capitol Evacuation Procedures ON: Davis, G. Mike State Fire Marshal (State Fire Marshal's Office), Austin, TX Davis, Tommy Director (Texas Department of Public Safety), Austin, TX Nichols, John Capitol Fire Marshal (State Fire Marshal's Office), Austin, TX SB 345 FOR: Dickey, David EmPRO Distributing Inc. (Window Film Industry), Austin, TX Registering, but not testifying: For: Dominques, Sonya Lieutenant (Police Officer), San Antonio, TX Ybarbo, Ray Police Officer (Texas Police Chiefs Association), San Antonio, TX On: Knauth, Danny Captain, Traffic Law Enforcement (Texas Department of Public Safety), Austin, TX SB 361 FOR: McCarley, James Executive Director (Dallas Regional Mobility Coalition), Dallas, TX SB 677 ON: Dike, Jerry Director, Vehicles Titling & Registratio (Texas Department of Transportation), Austin, TX SB 756 FOR: Shehan, Thomas Chief of Police (DFW International Airport), DFW, TX Registering, but not testifying: For: Janezic, Lisa Manager, Government Affairs (DFW International Airport), DFW, TX SB 945 ON: Eoff, Janice Housewife (Self), Brenham, TX Eoff, Robert Banker (Self), Brenham, TX Registering, but not testifying: On: Brown, Judy Chief, Driver License Division (Texas Department of Public Safety), Austin, TX Smith, Kim Deputy Adminstrator, Driver License Div. (Texas Department of Public Safety), Austin, TX Providing written testimony: On: Kimbrough, Jay Deputy Attorney General (Attorney GeneraL), Austin, TX SB 946 Registering, but not testifying: On: Elder, Frank (Texas Department of Public Safety), Austin, TX


Get notified (via email) regarding the COVID Vaccine availability in your area
<> by : Swayamshree Mohanty, Farhan Hai Khan, UI: Srikant Shubham, Manisha Parichha


Nine Lives
Play
How To Play
Nine Lives
Touch Mode
Tilt Mode
⤺ Back
Nine Lives
Click the mice to get points before they escape and cost you lives.


Public Member Functions | |
| (CPArray arguments) | - accessors [implementation] |
| (CPNumber timesCalled) | - accessors(readonly) [implementation] |
| (void) | - call [implementation] |
| (CPComparisonResult) | - compareTimesCalled: [implementation] |
| (BOOL) | - equals: [implementation] |
| (id) | - initWithName:withArguments: [implementation] |
| (BOOL) | - isEqualToNameOf: [implementation] |
| (CPNumber) | - numberOfArguments [implementation] |
Static Public Member Functions | |
| (OJMoqSelector) | + find:in: [implementation] |
Definition at line 4 of file OJMoqSelector.j.
| - (Function callback) accessors | [implementation] |
Definition at line 9 of file OJMoqSelector.j.
- (CPNumber timesCalled accessors(readonly)) [implementation] |
| - (void) call | [implementation] |
Definition at line 41 of file OJMoqSelector.j.
| - (CPComparisonResult) compareTimesCalled: | (CPNumber) | anotherNumber | [implementation] |
Definition at line 61 of file OJMoqSelector.j.
| - (BOOL) equals: | (OJMoqSelector) | anotherSelector | [implementation] |
Definition at line 51 of file OJMoqSelector.j.
| + (OJMoqSelector) find: | (OJMoqSelector) | aSelector | ||
| in: | (CPArray) | selectors | ||
[implementation] |
Definition at line 13 of file OJMoqSelector.j.
| - (id) initWithName: | (CPString) | aName | ||
| withArguments: | (CPArray) | someArguments | ||
[implementation] |
Definition at line 28 of file OJMoqSelector.j.
| - (BOOL) isEqualToNameOf: | (OJMoqSelector) | anotherSelector | [implementation] |
Definition at line 46 of file OJMoqSelector.j.
| - (CPNumber) numberOfArguments | [implementation] |
Definition at line 56 of file OJMoqSelector.j.


{% now "Y" %}
FIRST
Robotics Competition
Bill of Materials
Team Name:
{{ location.owner.name }}
Team #:
{{ location.owner.teamNumber }}
Date:
{% now "d M Y" %}
Event:
{{ location.owner.event }}
City:
{{ location.owner.city }}
State:
{{ location.owner.get_state_display }}
{% for assembly in location.frcBOM_fullListing %}
{{ assembly.name }}
Item
Description
Material
Source
Quantity
Measurement
Unit Price
Total Price
{% for item in assembly.items %}
{{ item.details__name }}
{{ item.details__shortDescription }}
{{ item.details__material__name }}
{{ item.details__manufacturer__name }}
{{ item.quantity }}
{{ item.details__measurement }}
${{ item.details__marketPrice }}
${{ item.totalPrice }}
{% endfor %}
Subtotal: ${{ assembly.cost }}
{% endfor %}
Total: ${{ location.grandFRC_Total }}


EFA enquiries
Contact form https://form.education...
For all enquiries for the Education Funding Agency
Beta This is a test version of the layout of this page. Take the survey to help us improve it
Guidance
This guide explains to academy trusts how to submit their financial returns to the Education Funding Agency.
Academy trusts are required by their funding agreements to submit financial returns to the Education Funding Agency ( EFA ). This guide explains how to submit these returns.
The financial accountability and assurance framework is set out in the Academies Financial Handbook and the detailed guide to academies financial assurance .
Academy trust accounting officers are required to submit to EFA an annual accounts return by 31 January.
The accounts return is used for the academies sector annual report and accounts (SARA) , which consolidates academy trust accounts for the year ending 31 August each year rather than as part of EFA ’s and DfE’s annual accounts, which are based on year ending 31 March each year.
The accounts return also helps DfE to produce benchmarking data that is comparable with maintained schools. To help trusts prepare their accounts return, EFA publishes an Excel template. This follows the same structure as the online return and may assist trusts with calculating and verifying their figures before they are entered into the online return.
Academy trusts need to commission from their external auditors an assurance report on the preparation of the accounts return. The auditor’s report is the final step of the online form submission process.
All trusts preparing financial statements as at 31 August 2016 and/or with open academies at 31 August 2016 should complete the accounts return.
Deloitte carries out the validation of financial returns on EFA ’s behalf, and may need to email your academy trust with queries about the data you supplied. EFA will publish information about the validation tests, thresholds and standard questions Deloitte use in the guidance for the accounts return.
The accounts return is separate to the requirement for academy trusts to produce audited financial statements. This requirement is set out in the Academies Accounts Direction .
Academy trusts must monitor and manage their own budgets to ensure effective financial oversight of public funds. EFA reviews academy trusts’ budget projections and actual results to assess financial health and to ensure the estimates of the future funding requirements for academies are accurate.
EFA requires academy trusts to submit their budget forecast returns using the online form by 31 July annually.
Academy trusts that open on or after 1 April each financial year and new academies joining an existing multi-academy trust on or after 1 April are required to submit their budget forecast return 6 weeks after receiving their final funding letter or by 31 July of the same year, depending which is later.
A multi-academy trust (MAT) preparing aggregated financial statements comprising more than one academy must submit a consolidated budget forecast return aggregating the budgets of each of its academies.
If a new academy joins the MAT on or after the 31 July deadline, a separate return for that academy is required.
Academy trusts must submit to EFA audited accounts for the period ending 31 August each year by 31 December, using the Academies Accounts Direction as a reference pack.
You will need to:
Additionally, you must publish your accounts on your academy trust’s website as soon as possible after approval by the trustees, but by no later than 31 January each year.
You must also file these accounts with Companies House within 9 months of the end of the accounting period. For most trusts, this will be 31 May.
New academies should complete the land and buildings online form within 6 weeks of opening. This allows EFA to produce desktop valuations of the land and buildings of all new academies, so EFA can consolidate academies’ valuations into its financial statements.
EFA will send academies that opened in the year between 1 April and 31 March a copy of the desktop valuation in the following September. The copy is for information only, and academies don’t need to do anything with it.
You can access online training videos and recordings of our interactive webinars to help you complete your financial returns.
Contact form https://form.education...
For all enquiries for the Education Funding Agency
Published: 11 March 2014
Updated: 10 November 2016
From: Education Funding Agency
Related guides: Academies financial assurance


@** * Yobi, Project Hosting SW * * Copyright 2013 NAVER Corp. * http://yobi.io * * @Author Suwon Chae * * 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. **@ @(message: String, sender: String, errorMessage: String, isSent: Boolean) @siteLayout(message, utils.MenuType.NONE) {
@Messages("app.description")


Rebecca Samuelson
Seattle, WA<EMAIL_ADDRESS>(206) 225-6919 linkedin.com/in/rsamuelson
github.com/rsamuelson
Summary
Analytics director with an undergraduate engineering degree and 6 years of experience working at the intersection of product, marketing, and analytics to improve operations, customer experience, and company growth.
Skills
SQL Python ETL HTML CSS Data Mining Basic JavaScript CRO A/B Testing
Experience
Director of Analytics
Galvanize, Seattle, WA, August 2016
- Led a team of data analysts, data scientists, and developers while we delivered powerful insights across the organization, available through easy-to-use tools that aided in creating a data-driven decision-making culture
- Managed our ETL pipeline, data warehouse, data visualizations, experimentation, and ad-hoc analyses
- Managed and built out our lead tracking/web analytics standardization across all Galvanize digital properties (internal and external tools)
Product Manager, Growth Team
Galvanize, Seattle, WA, August 2016 - January 2017 (temporary role)
- Led a cross-functional team of 7 from engineering, marketing, and analytics who redesigned and redeveloped the Galvanize.com website
- Managed user testing, both in-person and remote
- Designed and managed A/B testing across the new and former sites
- Built reporting to benchmark progress with new website
Manager, Analytics & Optimization
Galvanize, Seattle, WA, June 2015 - August 2016
- Owned customer funnel analytics, including conversion rate optimization
- Owned marketing automation, marketing campaigns, paid acquisition, SEO, organic traffic, and content distribution
- Built the first version of our data warehouse (integrating all of our CRM, marketing, and website data)
- Built dashboards and data visualizations for operations to track revenue, traffic, and accountability metrics
- Cross-collaborated with all business functions for special projects and new software implementation
Senior Digital Marketing Specialist
Redfin, Seattle, WA, April 2014 - May 2015
- Owned all analytics for the PR Team, representing the PR Team in product planning meetings and measuring the impact of team performance
- Built a metric for the PR Team to measure the success of their campaigns
- Responsible for bringing the Redfin brand voice alive across our social networking channels, specifically responsible for execution strategy, paid advertising, advertisement optimization, community management, and analytics surrounding growth, engagement, and traffic
- Increased traffic from social media, particularly Facebook, by 55% YoY
Data Analyst
Redfin, Seattle, WA, June 2013 - April 2014
- Owned analyses regarding repeat and referral business, as well as the active sales pipeline and customer segmentation
- Supported our email marketing team, including designing experiments, tracking campaigns, and process improvement
- Worked on a customer segmentation project that led to changes in our customer funnel and increased close rate
- Built a referral project to track our referrals across all marketing channels and into the data warehouse
Process Engineer, Product Development
UPM-Raflatac, Mills River, NC, January 2011 - August 2012
- After assessing initial plan processes, I removed valuable time from machine startup costs by building a tool that provided initial settings to operators based on product type
- Built product development team's data warehouse, initially used for tracking client claims
- Built UI for data entry into data warehouse
- Built automated reporting to flag products that were consistently being returned due to a client claim
- Earned my Six Sigma Green Belt and was the only woman working swing shifts on the floor to learn the machines
Innovations and R&D Intern
Columbia Sportswear, Portland, OR, May 2011 - August 2011
- Tested the omni-heat materials for other potential applications
- Developed a quality control process to ensure their omni-electric product research was valid
- Researched and tested competitor brands
Co-Founder
Infinite Grind, Blacksburg, VA, October 2011 - November 2015
- Built reporting to monitor artists' growth across social media, as well as competitor analysis
- Built and maintained brand and artist websites
- Managed International Touring DJ
- Executive Producer for The State of the Come Up (Collaboration album with 10k downloads)
- Led release marketing for two Billboard Hot 100 Albums
- Marketing Manager and Tour Manager for The Dusty 45s
- Designed and ran social media campaigns with direct audiences over 1M people
Co-Founder & Business Development Manager
Ninjathat, Philadelphia, PA, January 2012 - May 2013
- Participated in a DreamIt Ventures' Philly Tech Accelerator (2012)
- Closed deals with Hyundai and EA Sports, as well as various smaller companies
- Built automated tools to grow lead funnel amongst the university student population in various cities across the country
Education
Bachelor of Science, Materials Science and Engineering
Virginia Tech, Blacksburg, VA - 2013
Continuing Education
| Course | Facilitator |
| The Data Scientist's Toolbox | Coursera, License B4F86P6QJU5M |
| Managing Data Analysis | Coursera, License 5HXGU499HWUA |
| Executive Data Science Capstone | Coursera, License JVFQMW2SCZZN |
| Building a Data Science Team | Coursera, License UHMFD63CU4BR |
| The Complete SQL Bootcamp | Udemy |


Your organization must first setup an organization account in order to create member accounts. Directions for setting up an organization account are listed below
A: In order for Organ Eyez to work for you, you should have the following:
B: Setup your Account
A: In order for Organ Eyez to work for you, you must meet the following:
B: Setup your Account


--- layout: post permalink: ultra90.html Tags: Array NameOfCoupon: Ultra90 Cash Back Summary: See our Ultra90 Coupon Code, Ultra90 Rebate, Ultra90 Promo Code, Ultra90 Discount, Ultra90 Coupon Cash Back Rebate here. MetaKeywords: Ultra90 Coupon Code, Ultra90 Rebate, Ultra90 Promo Code, Ultra90 Cash Back Rebate, Ultra90 Discount, Ultra90 Coupon Image: images/26122.jpg LinkURL: http://www.shareasale.com/r.cfm?b=216927&u=412002&m=26122 affiliate_url_link: http://www.icouponblog.com/jane.php?id=141 thesis_readmore: See the Ultra90 Coupon thesis_thumb: http://www.icouponblog.com/tn.php?merchantURL=ultra90.com Title: Save 7.5% - Ultra90 Coupon Code for ultra90.com. Ultra90 Rebate & Discount thesis_description: Our Ultra90 Discount Coupon Code for ultra90.com. We have the best Ultra90 Rebate anywhere. thesis_keywords: Ultra90, Ultra90 Coupon Code, Ultra90 Discount, Ultra90 Rebate product_name: Ultra90 hop_url: http://www.icouponblog.com/hop.php?id=141 ---
Lose weight safely, effectively and without any side effects with Ultra90. Ultra90 is different from other fat burners and weight loss products.  Most of these products are not good for the body. Ultra90 is a great product that works with overall wellness. Use our discount coupon on many Ultra90 products and save money.
Ultra90 is not limited to weight loss products. They have a wide range of products from Acai Berry, Eye Serum, Stop smoking products, Facial Cream etc. Find an Ultra90 product that suits you. All Ultra90 products are made from quality ingredients that are safe for your body. Get younger looking eyes with Ultra90 eye serum or Ultra 90 facial cream that help cells to renew themselves. Ultra 90 also has dietary supplements that are made from natural herbs and plant based formulas so they ensure overall wellness, Look for our promo code on Ultra90 products. You will love them and even more so when you use our discount coupons to steal a deal!
Ultra90 products will help you lose weight, improve your skin and products like unhooked will also help you to stop smoking. All the Ultra90 products are effective with practically no side-effects. They are made from natural herbs and plant based substances that are harmless for the body. Use our discount coupon on all Ultra90 products. you will be glad you did!


Welcome to BurgerTown
Choose burger
Choose what burger you want to eat
{{ burger.name }}
- {{ burger.kCal }} kcal
- Gluten Free
- Lactose Free
Customer info
Please fill in your payment and shipment info
- {{fullname}}
- {{email}}
- {{street}}
- {{apartment}}
- {{recipient}}
- {{selectedGender}}
- {{confirmedBurgers}}


This package adds functionalities to the Eloquent model and Query builder for MongoDB, using the original Laravel API. This library extends the original Laravel classes, so it uses exactly the same methods.
Make sure you have the MongoDB PHP driver installed. You can find installation instructions at http://php.net/manual/en/mongodb.installation.php
Install the package via Composer:
$ composer require jenssegers/mongodb
In case your Laravel version does NOT autoload the packages, add the service provider to config/app.php
:
Jenssegers\Mongodb\MongodbServiceProvider::class,
For usage with Lumen, add the service provider in bootstrap/app.php
. In this file, you will also need to enable Eloquent. You must however ensure that your call to $app->withEloquent();
is below where you have registered the MongodbServiceProvider
:
$app->register(Jenssegers\Mongodb\MongodbServiceProvider::class);
$app->withEloquent();
The service provider will register a MongoDB database extension with the original database manager. There is no need to register additional facades or objects.
When using MongoDB connections, Laravel will automatically provide you with the corresponding MongoDB objects.
For usage outside Laravel, check out the Capsule manager and add:
$capsule->getDatabaseManager()->extend('mongodb', function($config, $name) {
$config['name'] = $name;
return new Jenssegers\Mongodb\Connection($config);
});
To run the test for this package, run:
docker-compose up
To reset the database after each test, add:
use Illuminate\Foundation\Testing\DatabaseMigrations;
Also inside each test classes, add:
use DatabaseMigrations;
Keep in mind that these traits are not yet supported:
use Database Transactions;
use RefreshDatabase;
You can use MongoDB either as the main database, either as a side database. To do so, add a new mongodb
connection to config/database.php
:
'mongodb' => [
'driver' => 'mongodb',
'host' => env('DB_HOST', '<IP_ADDRESS>'),
'port' => env('DB_PORT', 27017),
'database' => env('DB_DATABASE', 'homestead'),
'username' => env('DB_USERNAME', 'homestead'),
'password' => env('DB_PASSWORD', 'secret'),
'options' => [
// here you can pass more settings to the Mongo Driver Manager
// see https://www.php.net/manual/en/mongodb-driver-manager.construct.php under "Uri Options" for a list of complete parameters that you can use
'database' => env('DB_AUTHENTICATION_DATABASE', 'admin'), // required with Mongo 3+
],
],
For multiple servers or replica set configurations, set the host to an array and specify each server host:
'mongodb' => [
'driver' => 'mongodb',
'host' => ['server1', 'server2', ...],
...
'options' => [
'replicaSet' => 'rs0',
],
],
If you wish to use a connection string instead of full key-value params, you can set it so. Check the documentation on MongoDB’s URI format: https://docs.mongodb.com/manual/reference/connection-string/
'mongodb' => [
'driver' => 'mongodb',
'dsn' => env('DB_DSN'),
'database' => env('DB_DATABASE', 'homestead'),
],
This package includes a MongoDB enabled Eloquent class that you can use to define models for corresponding collections.
use Jenssegers\Mongodb\Eloquent\Model;
class Book extends Model
{
//
}
Just like a normal model, the MongoDB model class will know which collection to use based on the model name. For Book
, the collection books
will be used.
To change the collection, pass the $collection
property:
use Jenssegers\Mongodb\Eloquent\Model;
class Book extends Model
{
protected $collection = 'my_books_collection';
}
NOTE: MongoDB documents are automatically stored with a unique ID that is stored in the _id
property. If you wish to use your own ID, substitute the $primaryKey
property and set it to your own primary key attribute name.
use Jenssegers\Mongodb\Eloquent\Model;
class Book extends Model
{
protected $primaryKey = 'id';
}
// Mongo will also create _id, but the 'id' property will be used for primary key actions like find().
Book::create(['id' => 1, 'title' => 'The Fault in Our Stars']);
Likewise, you may define a connection
property to override the name of the database connection that should be used when utilizing the model.
use Jenssegers\Mongodb\Eloquent\Model;
class Book extends Model
{
protected $connection = 'mongodb';
}
When soft deleting a model, it is not actually removed from your database. Instead, a deleted_at timestamp is set on the record.
To enable soft deletes for a model, apply the Jenssegers\Mongodb\Eloquent\SoftDeletes
Trait to the model:
use Jenssegers\Mongodb\Eloquent\SoftDeletes;
class User extends Model
{
use SoftDeletes;
protected $dates = ['deleted_at'];
}
For more information check Laravel Docs about Soft Deleting.
Eloquent allows you to work with Carbon or DateTime objects instead of MongoDate objects. Internally, these dates will be converted to MongoDate objects when saved to the database.
use Jenssegers\Mongodb\Eloquent\Model;
class User extends Model
{
protected $dates = ['birthday'];
}
This allows you to execute queries like this:
$users = User::where(
'birthday', '>',
new DateTime('-18 years')
)->get();
Retrieving all models
$users = User::all();
Retrieving a record by primary key
$user = User::find('517c43667db388101e00000f');
Where
$posts =
Post::where('author.name', 'John')
->take(10)
->get();
OR Statements
$posts =
Post::where('votes', '>', 0)
->orWhere('is_approved', true)
->get();
AND statements
$users =
User::where('age', '>', 18)
->where('name', '!=', 'John')
->get();
whereIn
$users = User::whereIn('age', [16, 18, 20])->get();
When using whereNotIn
objects will be returned if the field is non-existent. Combine with whereNotNull('age')
to leave out those documents.
whereBetween
$posts = Post::whereBetween('votes', [1, 100])->get();
whereNull
$users = User::whereNull('age')->get();
Advanced wheres
$users =
User::where('name', 'John')
->orWhere(function ($query) {
return $query
->where('votes', '>', 100)
->where('title', '<>', 'Admin');
})->get();
orderBy
$users = User::orderBy('age', 'desc')->get();
Offset & Limit (skip & take)
$users =
User::skip(10)
->take(5)
->get();
groupBy
Selected columns that are not grouped will be aggregated with the $last
function.
$users =
Users::groupBy('title')
->get(['title', 'name']);
Distinct
Distinct requires a field for which to return the distinct values.
$users = User::distinct()->get(['name']);
// Equivalent to:
$users = User::distinct('name')->get();
Distinct can be combined with where:
$users =
User::where('active', true)
->distinct('name')
->get();
Like
$spamComments = Comment::where('body', 'like', '%spam%')->get();
Aggregation
Aggregations are only available for MongoDB versions greater than 2.2.x
$total = Product::count();
$price = Product::max('price');
$price = Product::min('price');
$price = Product::avg('price');
$total = Product::sum('price');
Aggregations can be combined with where:
$sold = Orders::where('sold', true)->sum('price');
Aggregations can be also used on sub-documents:
$total = Order::max('suborder.price');
NOTE: This aggregation only works with single sub-documents (like EmbedsOne
) not subdocument arrays (like EmbedsMany
).
Incrementing/Decrementing the value of a column
Perform increments or decrements (default 1) on specified attributes:
Cat::where('name', 'Kitty')->increment('age');
Car::where('name', 'Toyota')->decrement('weight', 50);
The number of updated objects is returned:
$count = User::increment('age');
You may also specify additional columns to update:
Cat::where('age', 3)
->increment('age', 1, ['group' => 'Kitty Club']);
Car::where('weight', 300)
->decrement('weight', 100, ['latest_change' => 'carbon fiber']);
Exists
Matches documents that have the specified field.
User::where('age', 'exists', true)->get();
All
Matches arrays that contain all elements specified in the query.
User::where('roles', 'all', ['moderator', 'author'])->get();
Size
Selects documents if the array field is a specified size.
Post::where('tags', 'size', 3)->get();
Regex
Selects documents where values match a specified regular expression.
use MongoDB\BSON\Regex;
User::where('name', 'regex', new Regex('.*doe', 'i'))->get();
NOTE: you can also use the Laravel regexp operations. These are a bit more flexible and will automatically convert your regular expression string to a MongoDB\BSON\Regex
object.
User::where('name', 'regexp', '/.*doe/i')->get();
The inverse of regexp:
User::where('name', 'not regexp', '/.*doe/i')->get();
Type
Selects documents if a field is of the specified type. For more information check: http://docs.mongodb.org/manual/reference/operator/query/type/#op._S_type
User::where('age', 'type', 2)->get();
Mod
Performs a modulo operation on the value of a field and selects documents with a specified result.
User::where('age', 'mod', [10, 0])->get();
Near
$bars = Bar::where('location', 'near', [
'$geometry' => [
'type' => 'Point',
'coordinates' => [
-0.1367563, // longitude
51.5100913, // latitude
],
],
'$maxDistance' => 50,
])->get();
GeoWithin
$bars = Bar::where('location', 'geoWithin', [
'$geometry' => [
'type' => 'Polygon',
'coordinates' => [
[
[-0.1450383, 51.5069158],
[-0.1367563, 51.5100913],
[-0.1270247, 51.5013233],
[-0.1450383, 51.5069158],
],
],
],
])->get();
GeoIntersects
$bars = Bar::where('location', 'geoIntersects', [
'$geometry' => [
'type' => 'LineString',
'coordinates' => [
[-0.144044, 51.515215],
[-0.129545, 51.507864],
],
],
])->get();
Inserting, updating and deleting records works just like the original Eloquent. Please check Laravel Docs' Eloquent section.
Here, only the MongoDB-specific operations are specified.
Raw Expressions
These expressions will be injected directly into the query.
User::whereRaw([
'age' => ['$gt' => 30, '$lt' => 40],
])->get();
You can also perform raw expressions on the internal MongoCollection object. If this is executed on the model class, it will return a collection of models.
If this is executed on the query builder, it will return the original response.
Cursor timeout
To prevent MongoCursorTimeout
exceptions, you can manually set a timeout value that will be applied to the cursor:
DB::collection('users')->timeout(-1)->get();
Upsert
Update or insert a document. Additional options for the update method are passed directly to the native update method.
// Query Builder
DB::collection('users')
->where('name', 'John')
->update($data, ['upsert' => true]);
// Eloquent
$user->update($data, ['upsert' => true]);
Projections
You can apply projections to your queries using the project
method.
DB::collection('items')
->project(['tags' => ['$slice' => 1]])
->get();
DB::collection('items')
->project(['tags' => ['$slice' => [3, 7]]])
->get();
Projections with Pagination
$limit = 25;
$projections = ['id', 'name'];
DB::collection('items')
->paginate($limit, $projections);
Push
Add items to an array.
DB::collection('users')
->where('name', 'John')
->push('items', 'boots');
$user->push('items', 'boots');
DB::collection('users')
->where('name', 'John')
->push('messages', [
'from' => 'Jane Doe',
'message' => 'Hi John',
]);
$user->push('messages', [
'from' => 'Jane Doe',
'message' => 'Hi John',
]);
If you DON’T want duplicate items, set the third parameter to true
:
DB::collection('users')
->where('name', 'John')
->push('items', 'boots', true);
$user->push('items', 'boots', true);
Pull
Remove an item from an array.
DB::collection('users')
->where('name', 'John')
->pull('items', 'boots');
$user->pull('items', 'boots');
DB::collection('users')
->where('name', 'John')
->pull('messages', [
'from' => 'Jane Doe',
'message' => 'Hi John',
]);
$user->pull('messages', [
'from' => 'Jane Doe',
'message' => 'Hi John',
]);
Unset
Remove one or more fields from a document.
DB::collection('users')
->where('name', 'John')
->unset('note');
$user->unset('note');
The only available relationships are:
The MongoDB-specific relationships are:
Here is a small example:
use Jenssegers\Mongodb\Eloquent\Model;
class User extends Model
{
public function items()
{
return $this->hasMany(Item::class);
}
}
The inverse relation of hasMany
is belongsTo
:
use Jenssegers\Mongodb\Eloquent\Model;
class Item extends Model
{
public function user()
{
return $this->belongsTo(User::class);
}
}
The belongsToMany relation will not use a pivot “table” but will push id’s to a related_ids attribute instead. This makes the second parameter for the belongsToMany method useless.
If you want to define custom keys for your relation, set it to null
:
use Jenssegers\Mongodb\Eloquent\Model;
class User extends Model
{
public function groups()
{
return $this->belongsToMany(
Group::class, null, 'user_ids', 'group_ids'
);
}
}
If you want to embed models, rather than referencing them, you can use the embedsMany
relation. This relation is similar to the hasMany
relation but embeds the models inside the parent object.
REMEMBER: These relations return Eloquent collections, they don’t return query builder objects!
use Jenssegers\Mongodb\Eloquent\Model;
class User extends Model
{
public function books()
{
return $this->embedsMany(Book::class);
}
}
You can access the embedded models through the dynamic property:
$user = User::first();
foreach ($user->books as $book) {
//
}
The inverse relation is automagically available. You don’t need to define this reverse relation.
$book = Book::first();
$user = $book->user;
Inserting and updating embedded models works similar to the hasMany
relation:
$book = $user->books()->save(
new Book(['title' => 'A Game of Thrones'])
);
// or
$book =
$user->books()
->create(['title' => 'A Game of Thrones']);
You can update embedded models using their save
method (available since release 2.0.0):
$book = $user->books()->first();
$book->title = 'A Game of Thrones';
$book->save();
You can remove an embedded model by using the destroy
method on the relation, or the delete
method on the model (available since release 2.0.0):
$book->delete();
// Similar operation
$user->books()->destroy($book);
If you want to add or remove an embedded model, without touching the database, you can use the associate
and dissociate
methods.
To eventually write the changes to the database, save the parent object:
$user->books()->associate($book);
$user->save();
Like other relations, embedsMany assumes the local key of the relationship based on the model name. You can override the default local key by passing a second argument to the embedsMany method:
use Jenssegers\Mongodb\Eloquent\Model;
class User extends Model
{
public function books()
{
return $this->embedsMany(Book::class, 'local_key');
}
}
Embedded relations will return a Collection of embedded items instead of a query builder. Check out the available operations here: https://laravel.com/docs/master/collections
The embedsOne relation is similar to the embedsMany relation, but only embeds a single model.
use Jenssegers\Mongodb\Eloquent\Model;
class Book extends Model
{
public function author()
{
return $this->embedsOne(Author::class);
}
}
You can access the embedded models through the dynamic property:
$book = Book::first();
$author = $book->author;
Inserting and updating embedded models works similar to the hasOne
relation:
$author = $book->author()->save(
new Author(['name' => 'John Doe'])
);
// Similar
$author =
$book->author()
->create(['name' => 'John Doe']);
You can update the embedded model using the save
method (available since release 2.0.0):
$author = $book->author;
$author->name = 'Jane Doe';
$author->save();
You can replace the embedded model with a new model like this:
$newAuthor = new Author(['name' => 'Jane Doe']);
$book->author()->save($newAuthor);
The database driver plugs right into the original query builder.
When using MongoDB connections, you will be able to build fluent queries to perform database operations.
For your convenience, there is a collection
alias for table
as well as some additional MongoDB specific operators/operations.
$books = DB::collection('books')->get();
$hungerGames =
DB::collection('books')
->where('name', 'Hunger Games')
->first();
If you are familiar with Eloquent Queries, there is the same functionality.
To see the available operations, check the Eloquent section.
The database driver also has (limited) schema builder support. You can easily manipulate collections and set indexes.
Schema::create('users', function ($collection) {
$collection->index('name');
$collection->unique('email');
});
You can also pass all the parameters specified in the MongoDB docs to the $options
parameter:
Schema::create('users', function ($collection) {
$collection->index(
'username',
null,
null,
[
'sparse' => true,
'unique' => true,
'background' => true,
]
);
});
Inherited operations:
MongoDB specific operations:
All other (unsupported) operations are implemented as dummy pass-through methods because MongoDB does not use a predefined schema.
Read more about the schema builder on Laravel Docs
Geospatial indexes are handy for querying location-based documents.
They come in two forms: 2d
and 2dsphere
. Use the schema builder to add these to a collection.
Schema::create('bars', function ($collection) {
$collection->geospatial('location', '2d');
});
To add a 2dsphere
index:
Schema::create('bars', function ($collection) {
$collection->geospatial('location', '2dsphere');
});
If you’re using a hybrid MongoDB and SQL setup, you can define relationships across them.
The model will automatically return a MongoDB-related or SQL-related relation based on the type of the related model.
If you want this functionality to work both ways, your SQL-models will need to use the Jenssegers\Mongodb\Eloquent\HybridRelations
trait.
This functionality only works for hasOne
, hasMany
and belongsTo
.
The MySQL model should use the HybridRelations
trait:
use Jenssegers\Mongodb\Eloquent\HybridRelations;
class User extends Model
{
use HybridRelations;
protected $connection = 'mysql';
public function messages()
{
return $this->hasMany(Message::class);
}
}
Within your MongoDB model, you should define the relationship:
use Jenssegers\Mongodb\Eloquent\Model;
class Message extends Model
{
protected $connection = 'mongodb';
public function user()
{
return $this->belongsTo(User::class);
}
}
If you want to use Laravel’s native Auth functionality, register this included service provider:
Jenssegers\Mongodb\Auth\PasswordResetServiceProvider::class,
This service provider will slightly modify the internal DatabaseReminderRepository to add support for MongoDB based password reminders.
If you don’t use password reminders, you don’t have to register this service provider and everything else should work just fine.
If you want to use MongoDB as your database backend, change the driver in config/queue.php
:
'connections' => [
'database' => [
'driver' => 'mongodb',
'table' => 'jobs',
'queue' => 'default',
'expire' => 60,
],
],
If you want to use MongoDB to handle failed jobs, change the database in config/queue.php
:
'failed' => [
'driver' => env('QUEUE_FAILED_DRIVER', 'database'),
'database' => env('DB_CONNECTION', 'mongodb'),
'table' => 'failed_jobs',
],
Or simply set your own QUEUE_FAILED_DRIVER
environment variable to mongodb
QUEUE_FAILED_DRIVER=mongodb
Last, add the service provider in config/app.php
:
Jenssegers\Mongodb\MongodbQueueServiceProvider::class,
In this new major release which supports the new MongoDB PHP extension, we also moved the location of the Model class and replaced the MySQL model class with a trait.
Please change all Jenssegers\Mongodb\Model
references to Jenssegers\Mongodb\Eloquent\Model
either at the top of your model files or your registered alias.
use Jenssegers\Mongodb\Eloquent\Model;
class User extends Model
{
//
}
If you are using hybrid relations, your MySQL classes should now extend the original Eloquent model class Illuminate\Database\Eloquent\Model
instead of the removed Jenssegers\Eloquent\Model
.
Instead use the new Jenssegers\Mongodb\Eloquent\HybridRelations
trait. This should make things more clear as there is only one single model class in this package.
use Jenssegers\Mongodb\Eloquent\HybridRelations;
class User extends Model
{
use HybridRelations;
protected $connection = 'mysql';
}
Embedded relations now return an Illuminate\Database\Eloquent\Collection
rather than a custom Collection class. If you were using one of the special methods that were available, convert them to Collection operations.
$books = $user->books()->sortBy('title')->get();
To report a security vulnerability, follow these steps.


The sign in and security features of this version of Taco Cloud are not yet implemented. The forms presented below do absolutely nothing...yet. Stay tuned.


|
Warning
|
Watch out for dragons! |
|
Note
|
An admonition paragraph draws the reader’s attention to auxiliary information. Its purpose is determined by the label at the beginning of the paragraph. |
|
Important
|
While werewolves are hardy community members, keep in mind some dietary concerns. |
|
Important
|
Feeding the Werewolves
While werewolves are hardy community members, keep in mind some dietary concerns. |
|
Important
|
While werewolves are hardy community members, keep in mind some dietary concerns. |
| Watch out for dragons! |
| Watch out for dragons! |


Converts a sinusoidal rapid-scan time-domain EPR signal to the corresponding field-swept EPR spectrum.
rapidscan2spc(rsSignal,rsAmp,rsFreq); rapidscan2spc(rsSignal,rsAmp,rsFreq,g); [dB,spc] = rapidscan2spc(...);
See also the user guide on rapid-scan EPR.
rapidscan2spc
converts a rapid-scan time domain signal into the corresponding EPR spectrum.
It takes three or four inputs:
rsSignal
is s a vector containing the rapid-scan time-domain signal over one period of modulation. It must be complex-valued and contain the dispersion in the real part and the absorption in the imaginary part. The number of points must be even. The underlying modulation is assumed to be cosine.
rsAmp
is the peak-to-peak modulation amplitude, in units of mT. rsFreq
is modulation frequency, in units of kHz.
g
is the g value for the field/frequency conversions needed to calculate the spectrum and the field range. If g
is omitted, it is assumed to be 2.002319.
The function returns the field offset in dB
(in units of mT) and the EPR spectrum in spc
. spc
is complex-valued: the real part is the dispersion spectrum, and the imaginary part is the absorption spectra.
For the conversion to work, the rapid-scan signals of the up- and the down-sweeps should not overlap, and the data should not be saturated. Additionally, the input signal needs to be correctly quadrature phased, time shifted to align with a cosine field modulation, and background corrected.
Here is a simple example. First, let us simulate a rapid-scan signal:
g = 2; T1 = 4; % microseconds T2 = 0.5; % microseconds B1 = 1e-3; % mT deltaB0 = 0; % mT ModAmp_mT = 1; % mT ModFreq = 50; % kHz [t,Mx,My,Mz] = blochsteady(g,T1,T2,deltaB0,B1,ModAmp_mT,ModFreq); Mxy = -Mx + 1i*My;
rapidscan2spc
takes Mxy
and constructs the EPR spectrum
ModAmp_mT = 1; % mT ModFreq = 50; % kHz [dB,spc] = rapidscan2spc(Mxy,ModAmp_mT,ModFreq,g); plot(dB,real(spc),dB,imag(spc));
rapidscan2spc
uses a Fourier deconvolution method (Tseitlin et al., 2011) that transforms each of the two halves of the time-domain signal (up-sweep and down-sweep) separately to obtain two spectra, which are then added.


My Project
Functions
|
Variables
fattree.m File Reference
Functions
connect tors
to
aggregators
(pod by pod) for pod
Variables
This creates a FatTree graph with uniform degree
of
d
function
[
A
]
aggs
=
d
^2/2
cores
=
d
^2/4
nodes
= tors+
aggs
+
cores
A
=
zeros
( [
nodes
nodes
] )
if
agg
Function Documentation
◆
aggregators()
end
end
end
connect
cores
to
aggregators
(
pod by
pod
)
Initial value:
=1:
cores
for
pod=1:
d
agg
=
mod
(core,
d
/2)
Variable Documentation
◆
A
end
A
=
zeros
( [
nodes
nodes
] )
◆
agg
if
agg
Initial value:
==0
agg
=
d
/2
◆
aggs
aggs =
d
^2/2
◆
cores
cores =
d
^2/4
◆
function
This creates a FatTree graph with uniform degree
of
d
function[
A
]
Initial value:
= fattree(
d
)
tors =
d
^2/2
◆
nodes
nodes = tors+
aggs
+
cores
mod
if mod(k, 2)
d
d
Definition:
k_extension.m:82
agg
if agg
Definition:
fattree.m:23
cores
cores
Definition:
fattree.m:5
xpander_generation
graph_generation
fattree.m
Generated by
1.8.17


|
MeterLogger
|
Directories | |
| directory | ac |
| directory | cron |
| directory | crypto |
| directory | en61107 |
| directory | kamstrup |
Files | |
| file | auth.c [code] |
| file | auth.h [code] |
| file | base64.c [code] |
| file | base64.h [code] |
| file | captdns.c [code] |
| file | captdns.h [code] |
| file | cgi.c [code] |
| file | cgi.h [code] |
| file | cgiwifi.c [code] |
| file | cgiwifi.h [code] |
| file | espfs.c [code] |
| file | espfs.h [code] |
| file | heatshrink_config_httpd.h [code] |
| file | heatshrink_decoder.c [code] |
| file | httpd.c [code] |
| file | httpd.h [code] |
| file | httpd_user_init.c [code] |
| file | httpd_user_init.h [code] |
| file | httpdespfs.c [code] |
| file | httpdespfs.h [code] |
| file | led.c [code] |
| file | led.h [code] |
| file | rfinit.c [code] |
| file | tinyprintf.c [code] |
| file | tinyprintf.h [code] |
| file | unix_time.c [code] |
| file | unix_time.h [code] |
| file | user_main.c [code] |
| file | user_main.h [code] |
| file | utils.c [code] |
| file | utils.h [code] |
| file | watchdog.c [code] |
| file | watchdog.h [code] |


Low level functions for implementing
maximum likelihood estimating procedures for
complex models using data cloning and Bayesian
Markov chain Monte Carlo methods
as described in Solymos 2010 (R Journal 2(2):29–37).
Sequential and parallel MCMC support
for 'JAGS', 'WinBUGS' and 'OpenBUGS'.
| Version: |
2.2-0 |
| Depends: |
R (≥ 2.15.1), coda (≥ 0.13), parallel, Matrix |
| Imports: |
methods, stats, rjags (≥ 4-4) |
| Suggests: |
MASS, lattice, R2WinBUGS, R2OpenBUGS, BRugs, rlecuyer |
| Published: |
2018-02-26 |
| Author: |
Peter Solymos |
| Maintainer: |
Peter Solymos <solymos at ualberta.ca> |
| BugReports: |
https://github.com/datacloning/dclone/issues |
| License: |
GPL-2 |
| URL: |
https://groups.google.com/forum/#!forum/dclone-users,
http://datacloning.org |
| NeedsCompilation: |
no |
| SystemRequirements: |
none, one or more of JAGS (>= 3.0.0), WinBUGS (>=
1.4), OpenBUGS (>= 3.2.2) |
| Citation: |
dclone citation info |
| In views: |
Bayesian, HighPerformanceComputing, Optimization, gR |
| CRAN checks: |
dclone results |


Package org.apache.archiva.redback.rbac
Interface Role
-
- All Superinterfaces:
Serializable
- All Known Implementing Classes:
AbstractRole
,JpaRole
,MemoryRole
public interface Role extends Serializable
Role A role is assignable to a user and effectively grants that user all of the permissions that are present in that role. A role can also contain other roles which add the permissions in those roles to the available permissions for authorization. A role can contain any number of permissions A role can contain any number of other roles A role can be assigned to any number of users- Author:
- Jesse McConnell, Joakim Erdfelt, Martin Stockhammer
-
-
Method Summary
All Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description void
addChildRole(Role child)
Adds a child role and sets the list of child names and child ids.void
addChildRoleId(String id)
Adds a child role idvoid
addChildRoleName(String name)
Adds a role to the list of child rolesvoid
addPermission(Permission permission)
Adds a permission to the listList<String>
getChildRoleIds()
Returns the child role idsList<String>
getChildRoleNames()
Returns the list of child rolesString
getDescription()
Long description of the role.String
getId()
The role identifier.default String
getModelId()
Returns the model the role is derived from.String
getName()
Get the name.List<? extends Permission>
getPermissions()
Returns the list of permissions assigned to this role.default String
getResource()
Returns the resource that is used to build this role from a template.boolean
hasChildRoles()
Convenience method to see if Role has Child Roles.boolean
isAssignable()
True
, if this role is available to be assigned to a user, otherwisefalse
.boolean
isPermanent()
Test to see if the object is a permanent object or not.default boolean
isTemplateInstance()
Returnstrue
, if this role is a instance of a template role, otherwisefalse
.void
removePermission(Permission permission)
Removes the given permission from the list.void
setAssignable(boolean assignable)
Set totrue
, if this role should available to be assigned to a uservoid
setChildRoleIds(List<String> ids)
Sets the list of child role idsvoid
setChildRoleNames(List<String> names)
Sets the names of children roles.void
setDescription(String description)
Set the Descriptionvoid
setId(String id)
Sets the role idvoid
setModelId(String modelId)
Sets the model id.void
setName(String name)
Set the role name NOTE: This field is considered the Primary Key for this object.void
setPermanent(boolean permanent)
Set flag indicating if the object is a permanent object or not.void
setPermissions(List<Permission> permissions)
Set role permissions.void
setResource(String resource)
Sets the resource, this template instance is attached to.void
setTemplateInstance(boolean templateInstanceFlag)
Sets the template instance flag.
-
-
-
Method Detail
-
addPermission
void addPermission(Permission permission)
Adds a permission to the list- Parameters:
permission
- the permission to add to the list
-
addChildRoleName
void addChildRoleName(String name)
Adds a role to the list of child roles- Parameters:
name
- the name of the child role.
-
getChildRoleNames
List<String> getChildRoleNames()
Returns the list of child roles
-
addChildRole
void addChildRole(Role child)
Adds a child role and sets the list of child names and child ids.- Parameters:
child
- the child role
-
addChildRoleId
void addChildRoleId(String id)
Adds a child role id- Parameters:
id
- the id
-
getChildRoleIds
List<String> getChildRoleIds()
Returns the child role ids- Returns:
- the list of child role ids
-
hasChildRoles
boolean hasChildRoles()
Convenience method to see if Role has Child Roles.- Returns:
- true if child roles exists and has any roles being tracked.
-
getDescription
String getDescription()
Long description of the role.- Returns:
- the role description
-
getName
String getName()
Get the name. Must be unique. NOTE: This field is considered the Primary Key for this object.- Returns:
- the name of the role
-
getPermissions
List<? extends Permission> getPermissions()
Returns the list of permissions assigned to this role.- Returns:
- the list of permissions assigned to this role
-
isAssignable
boolean isAssignable()
True
, if this role is available to be assigned to a user, otherwisefalse
.- Returns:
true
, if this role can be assigned to users, otherwisefalse
-
removePermission
void removePermission(Permission permission)
Removes the given permission from the list. If the permission does not exist in the list of assigned permissions, nothing happens.- Parameters:
permission
- the permission to remove.
-
setAssignable
void setAssignable(boolean assignable)
Set totrue
, if this role should available to be assigned to a user- Parameters:
assignable
- the assignable flag
-
setChildRoleNames
void setChildRoleNames(List<String> names)
Sets the names of children roles. Children roles inherit the permissions of the parent role.- Parameters:
names
- the list of names of child roles.
-
setChildRoleIds
void setChildRoleIds(List<String> ids)
Sets the list of child role ids- Parameters:
ids
-
-
setDescription
void setDescription(String description)
Set the Description- Parameters:
description
- the role description
-
setName
void setName(String name)
Set the role name NOTE: This field is considered the Primary Key for this object.- Parameters:
name
- the role name
-
setPermissions
void setPermissions(List<Permission> permissions)
Set role permissions. The list of assigned permissions is replaced by this list.- Parameters:
permissions
- the permissions to set
-
isPermanent
boolean isPermanent()
Test to see if the object is a permanent object or not.- Returns:
true
, if the object is permanent.
-
setPermanent
void setPermanent(boolean permanent)
Set flag indicating if the object is a permanent object or not.- Parameters:
permanent
- true if the object is permanent.
-
getId
String getId()
The role identifier. Should be built from the modelId and the resource. And must be unique.- Returns:
- the role identifier
- Since:
- 3.0
-
setId
void setId(String id)
Sets the role id- Parameters:
id
- the identifier of the role, should not be null or empty.- Since:
- 3.0
-
getModelId
default String getModelId()
Returns the model the role is derived from.- Returns:
- The model id or empty string, if this role was not created from a model
- Since:
- 3.0
-
setModelId
void setModelId(String modelId)
Sets the model id.- Parameters:
modelId
- the identifier of the model, or empty string. Should not be null.
-
isTemplateInstance
default boolean isTemplateInstance()
Returnstrue
, if this role is a instance of a template role, otherwisefalse
. Templated roles are built from a template together with a resource identifier.- Returns:
true
, if this role is a templated role, otherwisefalse
- Since:
- 3.0
-
setTemplateInstance
void setTemplateInstance(boolean templateInstanceFlag)
Sets the template instance flag.- Parameters:
templateInstanceFlag
- Set totrue
, if this is a template instance, otherwisefalse
- Since:
- 3.0
-
getResource
default String getResource()
Returns the resource that is used to build this role from a template. If this is not a templated role, a empty string should be returned.- Returns:
- the resource identifier, used to build this role or a empty string, if this role is not templated
- Since:
- 3.0
-
setResource
void setResource(String resource)
Sets the resource, this template instance is attached to.- Parameters:
resource
- the resource identifier. Must not be null.
-
-


|
tesseract
5.0.0-alpha-619-ge9db
|
#include <polyblk.h>
Public Member Functions | |||
| POLY_BLOCK ()=default | |||
| POLY_BLOCK (const TBOX &tbox, PolyBlockType type) | |||
| POLY_BLOCK (ICOORDELT_LIST *points, PolyBlockType type) | |||
| ~POLY_BLOCK ()=default | |||
| TBOX * | bounding_box () | ||
| ICOORDELT_LIST * | points () | ||
| PolyBlockType | isA () const | ||
| bool | IsText () const | ||
POLY_BLOCK::compute_bb | |||
Compute the bounding box from the outline points. | |||
| void | compute_bb () | ||
POLY_BLOCK::rotate | |||
Rotate the POLY_BLOCK.
| |||
| void | rotate (FCOORD rotation) | ||
POLY_BLOCK::winding_number | |||
Return the winding number of the outline around the given point.
| |||
| bool | contains (POLY_BLOCK *other) | ||
| int16_t | winding_number (const ICOORD &test_pt) | ||
POLY_BLOCK::reflect_in_y_axis | |
Reflect the coords of the polygon in the y-axis. (Flip the sign of x.) | |
| void | reflect_in_y_axis () |
| void | move (ICOORD shift) |
| void | plot (ScrollView *window, int32_t num) |
| void | fill (ScrollView *window, ScrollView::Color colour) |
| bool | overlap (POLY_BLOCK *other) |
| static ScrollView::Color | ColorForPolyBlockType (PolyBlockType type) |
| Returns a color to draw the given type. More... | |
|
default |
| POLY_BLOCK::POLY_BLOCK | ( | const TBOX & | tbox, |
| PolyBlockType | type | ||
| ) |
Definition at line 45 of file polyblk.cpp.
| POLY_BLOCK::POLY_BLOCK | ( | ICOORDELT_LIST * | points, |
| PolyBlockType | type | ||
| ) |
Definition at line 34 of file polyblk.cpp.
|
default |
|
static |
| void POLY_BLOCK::compute_bb | ( | ) |
Definition at line 63 of file polyblk.cpp.
| bool POLY_BLOCK::contains | ( | POLY_BLOCK * | other | ) |
| void POLY_BLOCK::fill | ( | ScrollView * | window, |
| ScrollView::Color | colour | ||
| ) |
Definition at line 270 of file polyblk.cpp.
|
inline |
| void POLY_BLOCK::move | ( | ICOORD | shift | ) |
Move the POLY_BLOCK.
| shift | x,y translation vector |
Definition at line 228 of file polyblk.cpp.
| bool POLY_BLOCK::overlap | ( | POLY_BLOCK * | other | ) |
| void POLY_BLOCK::plot | ( | ScrollView * | window, |
| int32_t | num | ||
| ) |
Definition at line 243 of file polyblk.cpp.
| void POLY_BLOCK::reflect_in_y_axis | ( | ) |
Definition at line 207 of file polyblk.cpp.
| void POLY_BLOCK::rotate | ( | FCOORD | rotation | ) |
Definition at line 183 of file polyblk.cpp.
| int16_t POLY_BLOCK::winding_number | ( | const ICOORD & | test_pt | ) |
Definition at line 99 of file polyblk.cpp.


We're on a mission to build the largest and most accessible library connecting storytellers with their audience. That's an ambitious task, and we need ambitious people to get us there. See what positions are available and start your next chapter today.
All Positions