COMP6205 Technical Manual
The two areas we were planning to learn about were Object relational mapping and Role based security. We will describe how we have implemented this first.
Doctrine - An ORM system
Doctrine provides us with an object relational mapping in PHP.
When learning to use Doctrine we referred to its "Getting Started with Doctrine"[1] guide.
This allows us to access the database using PHP objects and have Doctrine write the data back to a database.
An example of one of the mapping files Entity/Options.php
is below.
/** * @var string * * @Column(name="keyname", type="string", length=45, nullable=false) */ private $keyname;
Here we define a field in an object and the type of column it should be in the database. Once we have designed our entities we can then run a Doctrine export script to create the database. This also updates the database as we change the entities without losing data in the database.
We can create objects and use them and when we want them to be written to the database doctrine will do this. This is used in the setup files setup_database/options.php
$mainMode = new Options; $mainMode->setKeyname("maintenance_mode"); $mainMode->setValue("false"); $em->persist($mainMode); $em->flush();
$em
is the entity manager and deals with all the objects that we wish to write to and get from the database.
By telling it to persist the new object it puts it in a queue to write back to the database and when flush()
is called this is performed.
One of the decisions we had to make was to choose the format that Doctrine uses to detail information about the tables. Doctrine allows you to define this using PHP DocBlock comments, XML, YML and PHP objects. We reviewed these formats and decided on DocBlock comments. XML allowed you to validate the table structure using an XML validator which was very useful. However, it removed the PHP class from the table structure. The same problem occurred for YML and the PHP definitions, you removed the structure of the table from the class structure. When changing the details you had to change the XML and then the PHP class. This was open to errors where only one was changed. Therefore we decided to use DocBlock annotations to keep the table structure close to the PHP classes to ensure no issues occurred where only one area was changed.
Server side validation (SQL Injection)
Doctrine handles SQL injection problems in many of its functions[2]. When you are using the objects in the above manner Doctrine will escape all user input for you. It also provides prepared statements when you wish to use their own Doctrine Query Language (DQL) or SQL[3].
Generated Database schema (ORM)
Doctrine provides tools to synchronise your database structure to the DocBlock annotations[4].
We have used this to generate and update the database as we have been working.
Consequently we have not had to design the tables using conventional table creation tools.
This has sped up development as we just maintain the DocBlock annotations and use the tool to synchronise the database.
Using the Doctrine command line tools this can be performed by running php vendor/bin/doctrine orm:schema-tool:update --force
.
We stored this in a script for easy access and can be found in scripts/update_database_to_annotations.sh
Below is the entity relationship diagram generated from the Doctrine entities. Doctrine does not rely on the order of the columns so the produced database structure does not have column order order. This uses crows foot notation to demonstrate the foreign keys.
- Fields that are the primary key for the table have a yellow key.
- Fields that are a foreign key have a red icon.
- Fields that are required have a blue icon.
- Fields that are not required have a white icon.
Transaction consistency, ACID properties
Doctrine has transaction handling already built in[5]. Each time an entity is modified or persisted then it is queued. When you call flush[6] on the Entity Manager then it will run the SQL operations in one transaction. This gives you transaction consistency without having to do it yourself.
Critical evaluation
Doctrine was very helpful for the transaction and SQL injection handling abilities and using objects in PHP makes it much easier than trying to keep a database and set of objects in sync. Using the ORM in PHP means that you can use more OOP and use objects to relate to the actual tables. In doing this we didn't have to write any SQL and only a small bit of DQL to do the more advanced parts of the website.
Role based authentication
We spent some time working on creating a role based system to permit/deny access to parts of the website.
Possible implementation Concepts
We reviewed how role based control could be implemented and designed 4 possible database models to use.
-
One Role Per user, Pages checked for roles
This was a very simple method but if you added a new role with a similar set of allowed pages to old ones you needed to change every page to permit access to the new role.
-
Many permissions to a user
This is where a user was given a set of permissions required to do their job. We decided against this in the end as it could quickly lead to some users that should have the same set of permissions differing as some people were given additional permissions and not others.
-
Many roles per user, Many permissions per role
We decided against this in the end because this added another layer of complexity and meant that a user having multiple roles would inherit the privileges. Confusion may have occurred when users are given multiple roles giving them access to things they may not have been meant to access.
-
One Role per user, Many permissions per role
This allowed for you to configure a page to check for a permission rather than a role. The benefit of this was that when a new role was added you gave that a set of permissions and you did not have to change all the pages. This was the system we decided to implement.
Override Permissions
We considered that there may be a case where you will want to give a user a specific permission for a specific job and designed a basic "override permission" table which gave the user any addition permissions they needed.
After some discussion this was considered messy and causes problems similar to where each user is assigned a set of permissions.
Our proposed solution if a user needs a new permission is to create a new role.
Our Chosen Structure
Our chosen structure gave us three tables to store information in the database.
- Roles - This table stores a list of roles that users could have. One user has one specific role
- Permissions - This table stores a list of possible permissions a role could have. These permissions let you access functionality of the website
- RoleHasPermissions - This table links 1 role to 1 permission. This is needed to ensure 3rd normal form is kept in the database.
Evaluation of Structure
By having a list of permissions to access pages rather than deciding on roles that can access pages we have improved coding and reduced the time required to add new roles. A common problem without having permission based role authentication is that the ability to access a page will often be checked by the role the user has. This then means that if a new role is added all the pages need to be edited that the role can access. By having a permission based system you give that user the permissions it needs to complete its job and all the previous pages accept that user provided they have the permissions. This reduces the need for ongoing system maintenance and means non-technical users can create new roles as and when needed.
Bootstrap
We have used Twitter Bootstrap[8] system to style the website and utilising some of their design patterns. This was so that we could focus on getting a site that looked good and worked well on a range a devices to focus on learning in our chosen areas.
Responsive site, working on mobile devices
Bootstrap provide a base level of responsive design that allows you to create a website that works well on mobile devices. Provided you design your site correctly it will be able to scale to smaller screen devices.
The below example is used throughout the manuals and provides an img-responsive
class which scales the size of the image to the surrounding div

We have spent some time ensuring that webpages scale to smaller sized screens so that most of the functionality was still present.
This is to acknowledge the trend that many forms of web browsing is now on phones and tablets.
On the left is an example of the website displayed in a mobile browser.
You can see that the buttons along the top has been condensed into a button allowing you to reveal the additional navigation links.
In addition the text flows to fit the smaller screen rather than making the user scroll.
Input client side validation
Previously we wished to spend a bit of time learning to use the Dojo JavaScript library to make text inputs which validated the input. After some work with bootstrap we found that bootstrap actually does this very well so decided to simplify our plan. This was helpful as neither of us had much experience with this library and we would have had to spend a fair bit of time learning to use it.
In transferMoney.php
the code below for the input box produces the following output when the user tries to submit when the data isn't included.
<input type="number" class="form-control" placeholder="Amount" required name="amount">
Technical Features of the website
Below is a number of interesting technical features of the website that deserve note and documentation.
404 page
We have used a .htaccess
page to ensure that any people who visit a URL that is not found on our webserver get a more helpful screen.
Below is the content of the .htaccess
page.
ErrorDocument 404 /comp6205/website/404.php
Before adding .htaccess page
After adding .htaccess page
This will hopefully mean that they do not get put off by the default 404 page and it points them at a page that does exist.
Dynamic templates (hiding/showing content based on user)
Since neither of us had used templating libraries we decided that we would not spend time looking into and learning one of these to focus on our two main areas. We have however used a dynamic template written using PHP to help us develop the site easier.
All webpages included basic header and footer templates which made each page look similar to like:
<?php $pageRequiresLogin = true; $pageTitle = 'Account Overview'; require_once 'inc/setup.php'; require_once 'inc/header.php'; ?> Page Content <?php require_once 'inc/footer.php';
Here we set up templates for the header and the footer of the page and then included them on all the pages that we needed them on. This gave us a common look across the whole website and mean that we did not have to alter every page when we wished to change something on the header or footer. This therefore decreased the amount of work we needed to do.
The template is also dynamic as the page title and whether the page requires you to be logged in is set in variables then used in the header. It will also load additional tabs along the top of the page depending on your role permissions as shown in the below snippet:
<?php //display the admin tab only if user is logged in and has at least one of the roles below if(isset($_SESSION['id_user']) && $_SESSION['id_user']){ if((userHasPermission("admin_users_assign") || userHasPermission("admin_view_roles") || userHasPermission("admin_view_permission") || userHasPermission("admin_view_concerns") || userHasPermission("admin_site_options"))) { echo '
Admin
'; } } ?>
AJAX: reload page to dynamically update transactions list
The view transaction page uses AJAX calls to dynamically update the page as and when changes are made.
This will reload the current transactions every 10 seconds and update the table.
loadTransactions.php
gets the data from the database and outputs JSON which is then loaded by the bankOverview.php
setInterval(updateTransaction, 10000); function updateTransaction() { console.log("Loading transaction"); $.getJSON("loadTransactions.php?id=<?=$bankAccount->getIdBankaccount()?>", '', replaceTransaction); }
Here we use the jQuery $.getJSON()
method[9] to load the transactions page and then once loaded call the callback function replaceTransactions
which updates the information on the page.
We tell the page to load this every 10 seconds with setInterval()
[10] which will run the update function.
PDF Statement Creation
To create a PDF we create a latex file and then compile it on the server with the below code
exec("cd " . dirname(__FILE__) . "/../statements; pdflatex {$guid}.tex > pdflatex_statement_creation.log");This invokes pdflatex which creates the pdf and then later in the function we return the location of the new statement. Calling exec is bad however all user input will be sanitised and therefore the user will not be able to take control of this risky system call. A possible extension would be to use a PHP pdf creation library however for this example pdflatex suffices.
An example of the created statement is available
Cross Site Request Forgery
Cross site request forgery is where someone uses known details about a website to perform actions on your behalf.[11] An example would be making you visit a URL which then performs something you didn't want to happen. A typical solution to stop this is to include tokens or nonces (Numbers used once) into page loads and require these tokens each page request. This is invisible to the user but means that hackers will not be able to guess the tokens and therefore make requests to the page. It would take a long time to apply this to an entire website so we have just applied this to the logout link. Below is the code used to generate the security token.
/** * This creates a random token to be used as the logout token * @return string The newly generated logout token */ function generateLogoutToken() { $_SESSION['logout_token'] = substr(str_shuffle(md5(time())),0,10); return $_SESSION['logout_token']; }
The token is regenerated at every page load. To implement this on all forms we will put a hidden field into each, this will contain a randomly generated token. For the form submission to be successful it will be required that this token is valid. Since this is not guessable this stops people using Cross site request forgery and protects the user from this.
Cross Site Scripting
To prevent Cross Site Scripting you need to ensure that user input is properly escaped.[12] Therefore anywhere untrustworthy user input is to be displayed we need to escape it and stop it being executed.
An example of a XSS attack is below, where the user has entered Bold Account Name
as their account name.
This could be more serious such as JavaScript to perform actions on another users behalf.
Therefore to fix this we have placed the below code on the getName()
function in Entity/Bankaccount.php
public function getName() { return htmlentities($this->name); }This escapes the untrusted user string to ensure that it cannot be used to perpetrate an XSS attack.
When this code is ran, the above malicious code turns into
Due to time constraints this is the only field which has this protection but it has been used to demonstrate how to prevent XSS attacks.
Any place that user defined input is shown to the user needs to be protected.
Permission Checking - Disable access to guessable pages such as admin.php
As a security procedure and as part of our permission checking all pages that require permissions are checked to ensure the user has them. Any users visiting pages that they are not allowed to visit will have the below error shown.
This is performed by a check at the top of pages, the below code taken from adminRolePermissions.php
is used to ensure that the user has the correct permissions to view the page
if(!userHasPermission("admin_view_permission")) { redirectUnauthorized(); }
Password hashing and salting
To keep the users password secure we have decided we will hash and salt the passwords.
The three functions that deal with this are in /inc/auth.php
reproduced below.
/** * Used to generate a salt and hash when someone creates an account * @param $password Password to hash * @return string Resulting hash */ function generateHash($password) { $salt = '$2y$10$' . substr(md5(uniqid(rand(), true)), 0, 22); return crypt($password, $salt); } /** * This is used to get the hash given a password and a hash * @param $pass Password to hash * @param $hash Salt and hash method * @return string Resulting hash */ function getHash($pass, $hash) { return crypt($pass, $hash); } /** * Checks to see if a given password is correct to generate the hash * @param $pass Password to hash * @param $hash Salt and hash method * @return bool true if password valid to generate hash */ function verifyLoginPassword($pass, $hash) { return (getHash($pass, $hash) == $hash); }
We use the PHP crypt($password, $salt)
function to properly hash the passwords and use blowfish hashing.
This ensures that a users password is not stored in plaintext and as there is a salt used it makes bruteforcing of passwords much trickier.
Therefore passwords are stored in the database like $2y$10$4cd8ef6781c5e9e99d0a7ulXV3QNdg2gFIhcSndVMDRgHZVxVGodW
.
Using Content Delivery Networks
Where possible we have linked to the Google hosted libraries for the website instead of including it locally.
In /inc/header.php
we link to the jQuery library hosted by Google.

This has a number of added benefits:
- Google will be able to serve these large files much faster than we can. This is because they will have a large number of local servers and will be using IP anycast. These servers will also likely be much faster than ours due to their large data centres.
- This reduces the amount of data to be loaded off our site and improves loading time as browsers normally will only load a certain number of resources from one domain at a time.
- There are caching benefits as if a user has visited a website this includes jQuery from the Google CDN previously it will load this page from the cache speeding up pageload time.
-
Google provide http and HTTPS versions of this file and the URL we have linked to does not start with a protocol definition.
Instead we use
src="//ajax.googleapis.com/...
. This means that it will use whatever protocol the page uses. This stops us having to write code to dynamically determine what protocol we are using or serving insecure http content alongside secured HTTPS content.
Therefore, where possible, we have included these external libraries via a CDN
We have also looked into caching our custom data with a Content Delivery Network and identified that cloudflare is in use by a large number of companies and will suite our needs.[13]
Project Management
To ensure there is a high quality of development we managed the project and worked to certain standards.
State Diagram - Plan of interconnected webpages
Before we started coding the website we designed it using UML software. We used a state diagram to plan out how each of the pages should link together. Below is the state diagram produced.
Coding Standards
While programming this website we tried to, for the most part, adhere to PSR-1 basic coding standards[7]. This has hopefully kept our PHP relatively similar and therefore it is easy to pick up each others code.
Version Management - git
During the project we have used version management to ensure to keep a history of the work we have done. This is important for the case where we discover that there have been bugs introduced to the software as we will be able to find when they have been introduced.
All files used during this project have been put into our version management system
Composer
Composer is a PHP dependency manager that we have used to install Doctrine and PHPUnit with. It is very useful as it stores the version that you check out and develop with so that others who come to work on the project always download the specific version you wrote the code on. This removes issues of people installing the wrong version or not knowing what version you worked on.
Our composer.json
is reproduced below. Here you can see we did not specify which version of doctrine we installed.
{ "require": { "doctrine/orm": "*", "phpunit/phpunit": "4.3.*" }, "autoload": { "psr-0": {"": "Entity/"} } }
However the first time composer is installed it creates a composer.lock
which checks out the latest versions of doctrine and then details where it found the modules and what specific versions were installed.
Below is part of the lock file.
{ "name": "doctrine/annotations", "version": "v1.2.1", "source": { "type": "git", "url": "https://github.com/doctrine/annotations.git", "reference": "6a6bec0670bb6e71a263b08bc1b98ea242928633" } }
Unit Tests
To ensure that we do not introduce bugs we have written a number of unit tests to exhaustively test the functions and main parts of the website. As part of our development process it was recommended to run these tests before each commit so that we could fix any problems we caused in the commit before it committed.
These tests were written using the phpunit framework and all tests can be found in the unittests
directory.
Theses tests could be run with phpunit .
. An example of what the output looks like when ran is below.
An example test written to test our permission function is reproduced below.
The full source code for this file is available in unittests/HashingFunctionTest.php
/** * This tests the verifyLoginPassword function to see if it will verify valid and invalid passwords * @depends testGenerateHashIsUnique * @param $hashs a list of hashes generated above with the password "Easy_Password" */ public function testValidLogin($hashs) { foreach($hashs as $hash) { $this->assertTrue(verifyLoginPassword("Easy_Password", $hash)); $this->assertFalse(verifyLoginPassword("Wrong_Password", $hash)); } }
This test is given a list of hashes from a previous test.
These hashes are all salted hashes with the password "Easy_Password".
Here we test the function verifyLoginPassword
and pass it a valid and invalid password.
We use assertTrue
and assertFalse
to check if the function returns the expected value.
Any failure in assertion will cause this test to fail and report back the expected and actual value.
Progress Tracking Methods
When we started this project we allocated our time and worked according the below Gantt chart. In cases where we were ahead of the project we continued onto the next sections.
The only main deviation from the project plan is that we worked on the user manual and technical manual at the same times. It is suggested that people who wish to continue this project plan their time to ensure no one area takes wastes time.
Libraries Used
- Doctrine ORM - As discussed above, [website]
-
Bootstrap - Bootstraps layout CSS and elements has helped us quickly prototype a website.
In addition they have provided a number of HTML5 Shims to ensure compatibility with older browsers.
They have provided a number of helpful JavaScript functions such as the navigation bar on the left.
Their client side validation meant that we did not have to use Dojo and therefore reduced time of development.
[website] - jQuery - One of bootstraps requirements is jQuery so we have used this to do the client side validation and mobile compatibility.
[website] - Google Code Prettify - For the manual we have included code and use Google code prettify to do syntax highlighting.
[website] - Composer - Composer was used to install Doctrine and PHPUnit.
This was helpful as it stores which version you have been doing development with and means that anyone who wishes to continue the project will be able to get the precise version we used.
[website]
References
- [1] - Getting Started with Doctrine - Doctrine - http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/tutorials/getting-started.html
- [2] SQL Injection: Safe and Unsafe API's for User Input - Doctrine - http://doctrine-dbal.readthedocs.org/en/latest/reference/security.html#sql-injection-safe-and-unsafe-apis-for-user-input
- [3] - Right: Prepared Statements - Doctrine - http://doctrine-dbal.readthedocs.org/en/latest/reference/security.html#right-prepared-statements
- [4] - Database Schema Generation - Doctrine - http://doctrine-orm.readthedocs.org/en/latest/reference/tools.html#database-schema-generation
- [5] Transactions and Concurrency - Doctrine - http://doctrine-orm.readthedocs.org/en/latest/reference/transactions-and-concurrency.html
- [6] - Persisting Entities - Doctrine - http://doctrine-orm.readthedocs.org/en/latest/reference/working-with-objects.html#persisting-entities
- [7] - PSR-1 - Basic Coding Standard - http://www.php-fig.org/psr/psr-1/
- [8] - Bootstrap - http://getbootstrap.com/
- [9] - jQuery.getJSON() | jQuery API Documentation - http://api.jquery.com/jquery.getjson/
- [10] - WindowTimers.setInterval() - Web API Interfaces | MDN - https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers.setInterval
- [11] - Cross-Site Request Forgery (CSRF) Prevention Cheat Sheet - OWASP - https://www.owasp.org/index.php/Cross-Site_Request_Forgery_%28CSRF%29_Prevention_Cheat_Sheet
- [12] - Cross-site Scripting (XSS) - OWASP - https://www.owasp.org/index.php/Cross-site_Scripting_%28XSS%29
- [13] - Overview | CloudFlare - https://www.cloudflare.com/overview


One of the original philosophies of this project is to gather and manipulate data from a database, without having to touch the underlying database. With the query in the top right panel we are going to generate a base table definition to expand upon later in this lab.
Goal:
Generate a base table definition file from an SQL query.
Steps to complete:
- Create the folder 'ATSLab' in the '/var/www/tableDefinitions' folder by:
- Opening a terminal
- Running the following command:
- 'sudo mkdir /var/www/tableDefinitions/ATSLab'
- Setting the file permissions with the following command:
- 'sudo chmod 755 /var/www/tableDefinitions/ATSLab'
- Run the query. You should see a result set appear after the query has been run.
- View the table definition XML for this query by clicking on 'Generate table definition XML' in the upper right corner of the result set. This will open a new tab to the right of this text in which the XML will be displayed
- Save the table definition by right-clicking in the XML document and then selecting 'This Frame' -> 'Save Frame As...'
- Save the file as 'atsBaseView.xml' in the folder '/var/www/tableDefinitions/ATSLab'


JStudent
- An interactive JavaScript learning tool.
Home
About
Problem List
List of Problems
© 2013
j201


public final class EngineConfig
extends java.lang.Object
| Modifier and Type | Field and Description |
|---|---|
static Setting<java.lang.String> |
INDEX_CODEC_SETTING
Index setting to change the low level lucene codec used for writing new segments.
|
static java.lang.String |
INDEX_FORCE_NEW_TRANSLOG
if set to true the engine will start even if the translog id in the commit point can not be found
|
| Constructor and Description |
|---|
EngineConfig(ShardId shardId,
ThreadPool threadPool,
IndexSettings indexSettings,
Engine.Warmer warmer,
Store store,
org.apache.lucene.index.SnapshotDeletionPolicy deletionPolicy,
org.apache.lucene.index.MergePolicy mergePolicy,
org.apache.lucene.analysis.Analyzer analyzer,
org.apache.lucene.search.similarities.Similarity similarity,
CodecService codecService,
Engine.EventListener eventListener,
TranslogRecoveryPerformer translogRecoveryPerformer,
org.apache.lucene.search.QueryCache queryCache,
org.apache.lucene.search.QueryCachingPolicy queryCachingPolicy,
TranslogConfig translogConfig,
TimeValue flushMergesAfter)
Creates a new
EngineConfig |
| Modifier and Type | Method and Description |
|---|---|
boolean |
forceNewTranslog()
if true the engine will start even if the translog id in the commit point can not be found
|
org.apache.lucene.analysis.Analyzer |
getAnalyzer()
Returns the analyzer as the default analyzer in the engines
IndexWriter |
org.apache.lucene.codecs.Codec |
getCodec()
Returns the
Codec used in the engines IndexWriter |
org.apache.lucene.index.SnapshotDeletionPolicy |
getDeletionPolicy()
Returns a
SnapshotDeletionPolicy used in the engines
IndexWriter . |
Engine.EventListener |
getEventListener()
Returns a listener that should be called on engine failure
|
TimeValue |
getFlushMergesAfter()
Returns a
TimeValue at what time interval after the last write modification to the engine finished merges
should be automatically flushed. |
ByteSizeValue |
getIndexingBufferSize()
Returns the initial index buffer size.
|
IndexSettings |
getIndexSettings()
Returns the index settings for this index.
|
org.apache.lucene.index.MergePolicy |
getMergePolicy()
Returns the
MergePolicy for the engines IndexWriter |
org.apache.lucene.search.QueryCache |
getQueryCache()
Return the cache to use for queries.
|
org.apache.lucene.search.QueryCachingPolicy |
getQueryCachingPolicy()
Return the policy to use when caching queries.
|
ShardId |
getShardId()
Returns the engines shard ID
|
org.apache.lucene.search.similarities.Similarity |
getSimilarity()
Returns the
Similarity used for indexing and searching. |
Store |
getStore()
Returns the
Store instance that provides access to the Directory
used for the engines IndexWriter to write it's index files to. |
ThreadPool |
getThreadPool()
Returns a thread-pool mainly used to get estimated time stamps from
ThreadPool.estimatedTimeInMillis() and to schedule
async force merge calls on the ThreadPool.Names.FORCE_MERGE thread-pool |
TranslogConfig |
getTranslogConfig()
Returns the translog config for this engine
|
TranslogRecoveryPerformer |
getTranslogRecoveryPerformer()
Returns the
TranslogRecoveryPerformer for this engine. |
Engine.Warmer |
getWarmer()
Returns an
Engine.Warmer used to warm new searchers before they are used for searching. |
boolean |
isCreate()
Iff
true the engine should create a new lucene index when opening the engine. |
boolean |
isEnableGcDeletes()
Returns
true iff delete garbage collection in the engine should be enabled. |
void |
setCreate(boolean create)
Iff set to
true the engine will create a new lucene index when opening the engine. |
void |
setEnableGcDeletes(boolean enableGcDeletes)
Enables / disables gc deletes
|
public static final Setting<java.lang.String> INDEX_CODEC_SETTING
public static final java.lang.String INDEX_FORCE_NEW_TRANSLOG
public EngineConfig(ShardId shardId, ThreadPool threadPool, IndexSettings indexSettings, Engine.Warmer warmer, Store store, org.apache.lucene.index.SnapshotDeletionPolicy deletionPolicy, org.apache.lucene.index.MergePolicy mergePolicy, org.apache.lucene.analysis.Analyzer analyzer, org.apache.lucene.search.similarities.Similarity similarity, CodecService codecService, Engine.EventListener eventListener, TranslogRecoveryPerformer translogRecoveryPerformer, org.apache.lucene.search.QueryCache queryCache, org.apache.lucene.search.QueryCachingPolicy queryCachingPolicy, TranslogConfig translogConfig, TimeValue flushMergesAfter)
EngineConfig
public boolean forceNewTranslog()
public void setEnableGcDeletes(boolean enableGcDeletes)
isEnableGcDeletes()
public ByteSizeValue getIndexingBufferSize()
IndexingMemoryController
public boolean isEnableGcDeletes()
true
iff delete garbage collection in the engine should be enabled. This setting is updateable
in realtime and forces a volatile read. Consumers can safely read this value directly go fetch it's latest value. The default is true
Engine GC deletion if enabled collects deleted documents from in-memory realtime data structures after a certain amount of
time (IndexSettings.getGcDeletesInMillis()
if enabled. Before deletes are GCed they will cause re-adding the document that was deleted
to fail.
public org.apache.lucene.codecs.Codec getCodec()
Codec
used in the engines IndexWriter
Note: this settings is only read on startup.
public ThreadPool getThreadPool()
ThreadPool.estimatedTimeInMillis()
and to schedule
async force merge calls on the ThreadPool.Names.FORCE_MERGE
thread-poolpublic Engine.Warmer getWarmer()
Engine.Warmer
used to warm new searchers before they are used for searching.public Store getStore()
Store
instance that provides access to the Directory
used for the engines IndexWriter
to write it's index files to.
Note: In order to use this instance the consumer needs to increment the stores reference before it's used the first time and hold it's reference until it's not needed anymore.
public org.apache.lucene.index.SnapshotDeletionPolicy getDeletionPolicy()
SnapshotDeletionPolicy
used in the engines
IndexWriter
.public org.apache.lucene.index.MergePolicy getMergePolicy()
MergePolicy
for the engines IndexWriter
public Engine.EventListener getEventListener()
public IndexSettings getIndexSettings()
public ShardId getShardId()
public org.apache.lucene.analysis.Analyzer getAnalyzer()
IndexWriter
public org.apache.lucene.search.similarities.Similarity getSimilarity()
Similarity
used for indexing and searching.public TranslogRecoveryPerformer getTranslogRecoveryPerformer()
TranslogRecoveryPerformer
for this engine. This class is used
to apply transaction log operations to the engine. It encapsulates all the logic to transfer the translog entry into
an indexing operation.public org.apache.lucene.search.QueryCache getQueryCache()
public org.apache.lucene.search.QueryCachingPolicy getQueryCachingPolicy()
public TranslogConfig getTranslogConfig()
public void setCreate(boolean create)
true
the engine will create a new lucene index when opening the engine.
Otherwise the lucene index writer is opened in append mode. The default is false
public boolean isCreate()
true
the engine should create a new lucene index when opening the engine.
Otherwise the lucene index writer should be opened in append mode. The default is false
public TimeValue getFlushMergesAfter()
TimeValue
at what time interval after the last write modification to the engine finished merges
should be automatically flushed. This is used to free up transient disk usage of potentially large segments that
are written after the engine became inactive from an indexing perspective.


| Class | ActiveRecord::ConnectionAdapters::SQLiteAdapter |
| In: |
/usr/lib/ruby/gems/1.8/gems/activerecord-3.0.0.beta4/lib/active_record/connection_adapters/sqlite_adapter.rb
|
| Parent: | AbstractAdapter |
The SQLite adapter works with both the 2.x and 3.x series of SQLite with the sqlite-ruby drivers (available both as gems and from rubyforge.org/projects/sqlite-ruby/).
Options:
| insert_sql | -> | create |
| remove_column | -> | remove_columns |
# File /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.0.beta4/lib/active_record/connection_adapters/sqlite_adapter.rb, line 70 70: def initialize(connection, logger, config) 71: super(connection, logger) 72: @config = config 73: end
# File /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.0.beta4/lib/active_record/connection_adapters/sqlite_adapter.rb, line 264 264: def change_column_null(table_name, column_name, null, default = nil) 265: unless null || default.nil? 266: execute("UPDATE #{quote_table_name(table_name)} SET #{quote_column_name(column_name)}=#{quote(default)} WHERE #{quote_column_name(column_name)} IS NULL") 267: end 268: alter_table(table_name) do |definition| 269: definition[column_name].null = null 270: end 271: end
# File /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.0.beta4/lib/active_record/connection_adapters/sqlite_adapter.rb, line 99 99: def disconnect! 100: super 101: @connection.close rescue nil 102: end
# File /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.0.beta4/lib/active_record/connection_adapters/sqlite_adapter.rb, line 292 292: def empty_insert_statement_value 293: "VALUES(NULL)" 294: end
# File /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.0.beta4/lib/active_record/connection_adapters/sqlite_adapter.rb, line 229 229: def rename_table(name, new_name) 230: execute "ALTER TABLE #{quote_table_name(name)} RENAME TO #{quote_table_name(new_name)}" 231: end
# File /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.0.beta4/lib/active_record/connection_adapters/sqlite_adapter.rb, line 91 91: def requires_reloading? 92: true 93: end
# File /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.0.beta4/lib/active_record/connection_adapters/sqlite_adapter.rb, line 172 172: def select_rows(sql, name = nil) 173: execute(sql, name).map do |row| 174: (0...(row.size / 2)).map { |i| row[i] } 175: end 176: end
# File /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.0.beta4/lib/active_record/connection_adapters/sqlite_adapter.rb, line 95 95: def supports_add_column? 96: sqlite_version >= '3.1.6' 97: end
# File /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.0.beta4/lib/active_record/connection_adapters/sqlite_adapter.rb, line 79 79: def supports_ddl_transactions? 80: sqlite_version >= '2.0.0' 81: end
See: www.sqlite.org/lang_altertable.html SQLite has an additional restriction on the ALTER TABLE statement
# File /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.0.beta4/lib/active_record/connection_adapters/sqlite_adapter.rb, line 235 235: def valid_alter_table_options( type, options) 236: type.to_sym != :primary_key 237: end
# File /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.0.beta4/lib/active_record/connection_adapters/sqlite_adapter.rb, line 394 394: def catch_schema_changes 395: return yield 396: rescue ActiveRecord::StatementInvalid => exception 397: if exception.message =~ /database schema has changed/ 398: reconnect! 399: retry 400: else 401: raise 402: end 403: end
# File /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.0.beta4/lib/active_record/connection_adapters/sqlite_adapter.rb, line 409 409: def default_primary_key_type 410: if supports_autoincrement? 411: 'INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL'.freeze 412: else 413: 'INTEGER PRIMARY KEY NOT NULL'.freeze 414: end 415: end
# File /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.0.beta4/lib/active_record/connection_adapters/sqlite_adapter.rb, line 405 405: def sqlite_version 406: @sqlite_version ||= SQLiteAdapter::Version.new(select_value('select sqlite_version(*)')) 407: end
# File /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.0.beta4/lib/active_record/connection_adapters/sqlite_adapter.rb, line 309 309: def table_structure(table_name) 310: structure = @connection.table_info(quote_table_name(table_name)) 311: raise(ActiveRecord::StatementInvalid, "Could not find table '#{table_name}'") if structure.empty? 312: structure 313: end
# File /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.0.beta4/lib/active_record/connection_adapters/sqlite_adapter.rb, line 417 417: def translate_exception(exception, message) 418: case exception.message 419: when /column(s)? .* (is|are) not unique/ 420: RecordNotUnique.new(message, exception) 421: else 422: super 423: end 424: end


WITNESS LIST Business & Commerce Committee July 21, 2005 -10:00A SB 5 Registering, but not testifying: Against: Hwang, Kenneth (Texas Public Interest Research Group), Austin, TX


Saved
X
Subscribe to:
bitcointalk.org
r/Monero
r/xmrtrader
stackexchange
trollbox
Enter (btctalk)Topic id:
(Note: Default is Monero Speculation.[753252])
Submit


This example shows the ability to set specific items to be selectable.
Items selectability can be toggled by setting selectable
in the items configuration
options. Note: This will not override the timeline's selectable
configuration option. If
the timeline's selectable
configuration option is false, then no items will be selectable.
| Option | Status | Toggle |
|---|---|---|
| item selectability of 'no subgroup' item in the 'foo' group | true |


Travel Arrangements
Here is how you get to Sex Resort Times Private Resort:
Take a plane to this city.
Hail a cab.
Have the cab take you here.
We can't wait to see you!


Digital
Build a cheap flexible touch-screen interactive.
We've done so much, with so little, for so long, we can now do anything with nothing (well getting close anyway)
Making the digital part of digital interactives is getting easier and more accessible every day, getting them on gallery though is a different challenge, the hardware is expensive or proprietary or only works with one predetermined program (unless you've got the knowhow and guts to fundementally alter them), or you need a full digital team.
On a related note...
Did you know Raspberry Pis are awesome. Raspberry Pis are awesome and over the last couple of years they have only been getting better. Like they can even run a 4K touchscreen monitor straight out of the box... you see where I'm going with this?
There are a few things you're looking for when you think of on gallery interactive:


Moving and building quickly to gather the feedback we need to accurately determine what features make our product successful. I enjoy working within a team to discover our user's needs through analytics and UX research. Determining how much value our product drives and developing the love and loyalty the users have for the product.
DetailsAnalytics are critical, but building digital products without a strong design can be just as damming as no data at all.
Continuous iteration is central to successful product. The feedback gained from production will guide future breakthroughs.
With AB testing and UX research we move closer to understanding if we are providing the service our users actually need.
I enjoy working with a team to accomplish our goals. I have a special interest in both Design and Analytics.
123-456-6789


Public Member Functions | |
| andoyer (double f) | |
| andoyer () | |
| distance_result | operator() (const P1 &p1, const P2 &p2) const |
| bool | squared () const |
See also:
See also the implementations
| geometry::strategy::distance::andoyer< P1, P2 >::andoyer | ( | ) |
| geometry::strategy::distance::andoyer< P1, P2 >::andoyer | ( | double | f | ) |
| distance_result geometry::strategy::distance::andoyer< P1, P2 >::operator() | ( | const P1 & | p1, | |
| const P2 & | p2 | |||
| ) | const |
| bool geometry::strategy::distance::andoyer< P1, P2 >::squared | ( | ) | const |
|
October 14, 2008 |
Copyright © 1995-2008 Barend Gehrels, Geodan Holding B.V. Amsterdam, the Netherlands Copyright © 2008 Bruno Lalande, Paris, France |


{% if error %}
Error:
{{ error }} {% endif %}
{% if mapclat %}
Choose a New Location
{% endif %}
Source Code
App Source Code
About
{% if mapclat %}
Choose a New Location
{% endif %}
Code
App Code
About
Plan-It Trails
{% if mapclat %}
{% endif %}
{% if not mapclat %}
Enter Location to Load Trails:
Note:
Choosing a location via this search box downloads OSM data (server-side) and may take up to 1-2 minutes to load. The generated trail map is built within a 25 mile box around the desired location. Finally, this website uses server-side cookies to save information from each user session to improve performance. Use the "Choose a New Location" button (when present) to reset if you experience issues.
The following locations are pre-cached (within 25 miles). Click on any location to generate map: 1)
Boulder, CO
2)
Mount Wilson California
3)
Bear Mountain State Park, New York
5)
Issaquah Washington
6)
Boise, Idaho
7)
Yosemite National Park
8)
Great Smokey Mountains National Park
9)
Tegernsee Germany
10)
Lake District National Park, UK
11)
Bend, OR
12)
Big Basin Redwoods State Park, CA
{% endif %} {% if mapclat %} {% if not startlat %}
To begin, zoom and scroll on the map above to choose start / end points for your activity. Select a point close to a desired trailhead for the best results. Choose only a start point to plan a round-trip route. {% else %}
Now select your constraits.
Hover over each quantity for more information. Note: Long routes (> 20 mi) and many routes (> 5) may take a little time to compute.
Units (distance, elevation)
:
English (miles, ft)
Metric (kilometers, meters)
Distance
:
Min -
Max -
Elevation Gain
:
Min -
Max -
Max Grade (percent)
:
Avoid Backtracking
:
none
low
medium
high
very high
Number of Routes (up to 10)
:
Generate Route!
{% endif %}
Reset Current Map and Parameters
Choose a New Location
{% endif %}


Molly Prower Experience Designer, Ice Cream Lover
Hello.
I am a professional
I have over fifteen years experience working with the world wide web. I have designed, coded, and managed websites, applications, and online products in several different industries, from health care to eCommerce to education.
[Coming Soon]
Take a look at my resume here.
[Coming Soon]
Take a look at some of the work I've done here.
I am a student
I am currently enrolled in the Rutgers Master of Business and Science Program with a User Experience concentration.
You may see some of the course work I've been doing here.

[Coming Soon]
Some day I'll add some photos of these things.
This site is a work in progress. v1.1.1


Event Location:
Microsoft (Malaysia) Sdn Bhd
Level 17 18, Menara Shell, No. 211, Jalan Tun Sambanthan
Kuala Lumpur, Federal Territory of Kuala Lumpur, Malaysia
Abstract:
Have you heard about the Business Intelligence Markup Language (Biml)? Maybe you’ve even seen a session about it before but you still have doubts about how easily you can make something useful out of it. In this session, we’ll use Biml to build and populate a staging area including the corresponding SSIS packages. But there won’t be any pre-compiled demos - everything is happening live! Starting with a blank staging database, we will end up building a complete solution over the course of this session to prove that you can start from scratch and still quickly be successful. Let’s see, how that goes… PS: Even if you have not heard about Biml but are still tired of manually building SSIS packages, this is the right session for you!
Speaker(s): Ben Weissman,
Abstract:
In the last few years the requirement to understand and use distributed Source control systems has become an increasing part of a Data Professionals life. With the move into Open Source and community involvement even Microsoft has embraced the use of GitHub! In this session we will investigate the setup and use of GitHub and Git for source control. Using the highly popular DBATools open source project we will also investigate getting involved in an Open Source project and the process of Pull and Push requests! Based around personal experience of learning not to hate Source control, this session assume no experience with Git or Github
Speaker(s): Patrick Flynn,
Abstract:
For years we have been bombarded with AI-enabled/smart/intelligent features, tools and platforms. But what does it actually mean for Sql Server developers and DBAs in practical terms? Is it just marketing hype or contrary - distinct trend that has already started and impacts how and what we do, our workplaces and future careers? This session defines what AIOPs is, provides framework to measure AI, goes through the list and evaluates 'the latest and greatest' tools and features available in Sql Server both on-premises and in the cloud and finally shows practical use cases of the best of them that we have to adopt to stay relevant on increasingly competitive market. Let's find out if maintenance free, self-healing, auto-tuning databases that are able to detect and automatically mitigate security risks are ready for real-world workloads! Areas covered: - Conditional Access VS Thread Detection - Query Store and Automatic Tuning - Intelligent Query Processing
Speaker(s): Janusz Rokicki,
Abstract:
If you are considering moving your SQL Server instances to "The Cloud" you will need to have a plan in place for both high availability and disaster recovery. In this session we will examine the three top public cloud providers and what they have to offer in terms of both high availability and disaster recovery. We will discuss where the providers are the same and where the differ. Some real life customer configurations will be presented. With content from Cloud and Datacenter Management MVP Dave Bermingham, Jason Aw will lead this session and encourages you to bring your questions specific to your environment.
Speaker(s): Jason Aw,
Abstract:
We will discover what are the best new features in SQL Server 2019!
Speaker(s): Chiu Kiang Phua,
Abstract:
Data sourcing has changed a lot in the past. This session walks through on orchestrating data movement by an ELT approach by sourcing data from a centralized data lake store to Azure SQL DW and performing data transformation using Azure Data Factory.
Speaker(s): Danaraj Ram Kumar,
Abstract:
In this session I will walk through some of the out-of-box SQL Server tools that you will need to know or never knew could be so much fun. A number of commandline utilities exist with SQL Server that we are never exposed to. In this session, I will take a tour of each of these tools and the scenario’s that real world customers used them in innovative ways. From SQL Server Management Studio to every tools will be an hour of Demo extravaganza not to be missed. This is a Zero slide but an hour of demo marathon.
Speaker(s): Vinod Kumar M,
Abstract:
Spark and Azure Databricks have become game changing features in data world and processing large volume of data has never been faster. In this session , I will give a introduction to Azure Databricks, Apache Spark and will walk though step by step on how to use Azure Databricks.Additionally I will showcase how to perform ETL operations using Azure Databricks.
Speaker(s): Asanka Padmakumara,
Abstract:
We have more information available to us today than ever before. So much so that we run the risk of not being able to tell concise stories. There's a lot more to creating that story than just getting the correct information. Come learn not just the do's and don'ts, but the whys…
Speaker(s): Jonathan Stewart,
Abstract:
During this session, you will learn about what is neccessary to know and learn about SQL Server to have the best performing database environment in terms of managability, performance, security, HADR and etc. SQL Server is not just only a data storage, and due to very complex and complicated interanl engines, requires to be maintained and administrated in proper manner. This session will give you enough knowledge about what you are not aware about SQL Server.
Speaker(s): Hamid J. Fard,
Abstract:
Being a BI Professional, you need all the performance tuning the DB folks get and more. In this hour, we will go over important performance tuning tips that you can use to help make your deliverables faster and more effective. We will touch on the MSBI tools of SSIS, SSAS, SSRS and PowerBI.
Speaker(s): Jonathan Stewart,
Abstract:
The Data AI technology landscape have change drastically for the past few years and we are beginning to see more real-life implementation of modern data warehouses, big data, machine learning, chat-bots IoT in customers environment. In this years keynote session, I will share Microsoft's overall Data AI technologies and which have been the most asked about from real customers on the ground and how are they implementing the various software services components to realize business value.
Speaker(s): Ian Choy,
Abstract:
We are going to examine a variety of oopsies MANY developers fall prey too - some obvious, some pretty subtle and some down right sneaky! Lots of code examples with the bad AND good code presented. I GUARANTEE that you will find things here that will either prevent you from getting bad data, throwing unwanted errors or vastly improving your database application's performance. I have given this talk over 100 times now and it is always very highly rated!
Speaker(s): Kevin Boles,
Abstract:
In this session, we will go through architecture, components demos in order to build Power BI Dashboards with Real-time* data. Of course in fun way :)
Speaker(s): Khilitchandra Prajapati,
Abstract:
What is a Modern Data Warehouse? How is it different from the traditional Data Warehouse architecture? Where to start building the Data Warehouse? Cloud or no Cloud? This session will answer and expand upon each one of these questions. From the traditional data warehouse architecture to the modern data warehouse using Azure technologies, you will learn different services that are a good fit for your solutions and how to integrate them.
Speaker(s): David Alzamendi,
Abstract:
With SQL Server 2019, Microsoft is introducing a new couple of features for data virtualization, data mart scale out and big data analysis. They all together for the SQL Server Big Data Clusters. Let's take a look at what that means and how you can make use of the extended polybase capabilities, built in spark queries and more!
Speaker(s): Ben Weissman,
Abstract:
ORMs - oh how I LOVE them! As a consultant, when I see them in play at a client I go KACHIIINNNNGGGG!! :-D Seriously though, they can provide some substantial benefits for coding throughput. But if you don't Read The Fine Manual and do some things right and avoid some major gotchas you will fall prey to one of my favorite Guruisms: "Anything that allows developers to slap code together more quickly is inversely proportional to the performance, concurrency and scalability you will get from that code"! Although this talk is based on Entity Framework, all ORMs suffer from the same flaws.
Speaker(s): Kevin Boles,
This is a list of speakers from the XML Guidebook records. The details and URLs were valid at the time of the event.
Contact: http://blogs.ExtremeExperts.com
Vinod Kumar has worked with SQL Server extensively since joining the industry over more than 17 years back. Working on various versions from SQL Server 7.0, Oracle 7.3 and other database technologies - he now works with Microsoft Technology Center (MTC) as Technology Architect. With extensive database, BI and application background, he currently helps customers maximize on the investments on technologies to solve real world business and technology integration problems. Speaker in major conferences like TechEd India (12 yrs), TechNet, MSDN, Azure Conference etc.
LinkedIn: https://www.linkedin.com/in/sqllocks/
Contact: https://sqllocks.net/
Jonathan Stewart is a Business Intelligence consultant specializing in data visualization, data warehousing, and data management technologies. An advocate for educating others, he is a public speaker, teacher and blogger, continually teaching people about the Microsoft BI Stack. Since 2000, he has been working in the database field with industry leaders in healthcare, manufacturing, financial, insurance and federal, state and local governments. Jonathan is very active in the community. He has presented on SQL Server, SSIS, Reporting Services, Power BI and Business Intelligence at numerous SQLSaturday events, local user groups, and conferences throughout the United States and around the world. He participates in webcasts, podcasts, and on
Ian Choy is Microsoft#39;s Technology Solution Professional for the data platform business, working with customers on Microsoft data platform adoption, architecture design decisions and best practices. His work and passion involves partner enablement on upcoming Microsoft technology and involvement community events. Prior experiences includes managing large scale data warehouse operations, business intelligence implementations and software development projects.
LinkedIn: https://www.linkedin.com/in/asankapadmakumara/
Contact: https://asankap.wordpress.com/
Asanka is an experienced data engineer who is currently performing the role of Business Intelligence Consultant in Qrious. He has worked close to 10 years in BI and data analytics field and has implemented BI solutions for different industries. As a technology enthusiastic, he enjoys conducting technical presentations both locally and internationally. He is a MCSE in Data Management and Analytics as well as a Microsoft certified Azure Data Engineer. He is passionate about Data Analytics, Business Intelligence and AI related technologies.
LinkedIn: https://www.linkedin.com/in/jrokicki/
Contact: https://www.datasic.com/
Microsoft Data Platform Expert and certified Azure Solutions Architect with over 12 years’ experience working in the City of London in the Financial Services Industry (retail and investment banking, multi-asset class trading systems). He has passion for secure, high-performance, maintainable data-driven applications that can be deployed with confidence on-premises and in-cloud. With educational background in intelligent sensor networks and machine learning he is always in search of automation and optimisation opportunities. Has presented at SqlBits, PASS Summit, SqlDay and multiple Sql Saturday events (Tel-Aviv, Kiev, Paris, Tallinn, Bonn, Bratislava, Goteborg, Kharkiv, Bucharest, Sofia, Ljubljana) and user groups.
LinkedIn: https://de.linkedin.com/in/weissmanben
Ben Weissman has been working with SQL Server since SQL Server 6.5, mainly in the BI/Datawarehousing field. He is a Data Platform MVP, MCSE Data Management and Analytics, and a Certified Data Vault Data Modeler. He is also the first BimlHero Certified Expert in Germany and a co-author of 'SQL Server Big Data Clusters' and 'The Biml Book'. Ben has been involved in more than 150 BI Projects and is always looking for ways to become more productive and make SQL Server even more fun! Together with his team at Solisyon, Ben provides training, implementation and consultancy for SQL/BI developers and data analysts in upper-mid-market companies around the globe.
LinkedIn: http://linkd.in/1BH7dv4
Danaraj works on modern BI delivery activities that includes corporate BI data models development and data integration in the cloud.
LinkedIn: http://www.linkedin.com/in/thesqlguru
Kevin Boles is a SQL Server expert, working exclusively with the product since v6.5. With over 25 years of database experience and over 45,000 man hours of SQL Server engine experience, he holds many related certifications, is an MCT and was a SQL Server MVP from 2007 to 2012. Kevin has been a very successful independent consultant for over 20 years. His passion is the relational engine, especially designing, building, analyzing and tuning high-performance database applications.
LinkedIn: http://www.linkedin.com/in/thesqlguru
Kevin Boles is a SQL Server expert, working exclusively with the product since v6.5. With over 25 years of database experience and over 45,000 man hours of SQL Server engine experience, he holds many related certifications, is an MCT and was a SQL Server MVP from 2007 to 2012. Kevin has been a very successful independent consultant for over 20 years. His passion is the relational engine, especially designing, building, analyzing and tuning high-performance database applications.
LinkedIn: https://www.linkedin.com/in/dalzamendi
Contact: https://www.techtalkcorner.com
Delivering Business Intelligence and Data Analytics Solutions with On-Premises and Cloud technologies since 2011, David Alzamendi is a Microsoft Certified Solutions Expert and event speaker who solves problems with best practice procedures and the latest technology. David is passionate about the positive impact data can have on our lives, businesses, economy and the environment. He prides himself on using his creativity and optimism to solve what others thought impossible.
LinkedIn: https://my.linkedin.com/in/hamidjfard
I am SQL Server Data BI Platform Expert with more than 9 years’ of professional experience, I am currently Microsoft Certified Master: SQL Server 2008, Microsoft Certified Solutions Master: Charter-Data Platform, Microsoft Data Platform MVP and CIW Database Design Specialist. After a few years of being a production database administrator I jumped into the role of Data Platform Expert. Being a consultant allows me to work directly with customers to help solve questions regarding database issues for SQL Server.
LinkedIn: https://www.linkedin.com/in/smartkhilit
Contact: http://www.bigator.com/
Khilitchandra has been working with SQL Server, Data Warehouse amp; Business Intelligence projects for more than 14 yrs. He is currently working as Vice President, BI Data Analytics for UOB in Singapore. He is community leader of Singapore PASS Chapter. He mainly works on Microsoft technologies, which includes Power BI, Azure, SQL Server, SharePoint, SSAS, SSIS, SSRS, C#.Net, VB.Net etc. He is an avid Business Intelligence enthusiast and shares his knowledge, experience expertise via this blog (http://www.bigator.com) to everyone.
LinkedIn: https://www.linkedin.com/in/awjason
Contact: http://www.sios-apac.com/
A passionate IT leader with over 20 years of experience in in technology, infrastructure, cloud environments particularly with high availability and disaster recovery solutions for different architectures including SQL database applications.
LinkedIn: https://www.linkedin.com/in/sqllocks/
Contact: https://sqllocks.net/
Jonathan Stewart is a Business Intelligence consultant specializing in data visualization, data warehousing, and data management technologies. An advocate for educating others, he is a public speaker, teacher and blogger, continually teaching people about the Microsoft BI Stack. Since 2000, he has been working in the database field with industry leaders in healthcare, manufacturing, financial, insurance and federal, state and local governments. Jonathan is very active in the community. He has presented on SQL Server, SSIS, Reporting Services, Power BI and Business Intelligence at numerous SQLSaturday events, local user groups, and conferences throughout the United States and around the world. He participates in webcasts, podcasts, and on
LinkedIn: https://de.linkedin.com/in/weissmanben
Ben Weissman has been working with SQL Server since SQL Server 6.5, mainly in the BI/Datawarehousing field. He is a Data Platform MVP, MCSE Data Management and Analytics, and a Certified Data Vault Data Modeler. He is also the first BimlHero Certified Expert in Germany and a co-author of 'SQL Server Big Data Clusters' and 'The Biml Book'. Ben has been involved in more than 150 BI Projects and is always looking for ways to become more productive and make SQL Server even more fun! Together with his team at Solisyon, Ben provides training, implementation and consultancy for SQL/BI developers and data analysts in upper-mid-market companies around the globe.
Contact: http://sqllensman.com/blog/
Patrick Flynn is a Senior Database Administrator with 10 years experience in large 24 x 7 enterprise environments. He is a certified master for SQL Server and a regular attendee of the PASS Summit. Has presented at SQLSaturday events in Sydney, Melbourne, Brisbane and Auckland, Edmonton and Calgary, Oslo and Cambridge
Chiu Kiang is the principal of PCK Consulting, a provider for SQL Server and Microsoft .NET development and consulting services. He works with customers and partners on technologies covering data management, business intelligence, performance tuning and enterprise integration. He is currently in his 11th year in his role as a Microsoft MVP for SQL Server.
The following is a list of sponsors that helped fund the event.


Not asking GDPR consent?
We are not asking GDPR consent and yet we are GDPR compliant. because:
- We are not collecting data and creating profiles of individuals for analytics or others purposes
- We are not using web-tracker, and are not collecting data via cookies or social plug-ins from individuals


Matson (MATX) Presents At Stephens Nashville Investment Conference 2019 - Slideshow
by SA Transcripts, https://seekingalpha.com/author/sa-transcriptsThe following slide deck was published by Matson, Inc. in conjunction with this event.
The following slide deck was published by Matson, Inc. in conjunction with this event.


Your opponent is ready!
Waiting for your opponent!
Your opponent has left the game.
The game will close in {{ decoTimer - timer }} seconds.


This gamebook demonstrates simple references between sections. Also notice that an intro section like this one can reference sections, like the start at
1 or the next section at
400. References can include an optional name that is used in some formats, so the same links could also be rendered as
start and
next.


hello
Thousands of freebies from the hottest businesses in Oxford are ready to be claimed using your Instagram story!
1) Sign up to nanovert if you haven't already
2) Access the fair using the button below
Access The Fair3) Claim any freebies you like, be quick as they're first come first serve.
Sign Up The Lineup
We’re already working with some of the best brands in Oxford and we have many more joining over the next month. If you’d like to see any specific brands, please let us know! You can also checkout our main platform here.
Fill in the form below and we'll put you into our nano-influencer database
Follow @nanovertuk on Instagram with the same account you provide and let us follow you back.
We'll send through emails with opportunities to earn free food, drinks and even money.


Whanganui Police seek vehicle after robbery
by New Zealand Police"Whanganui Police seek vehicle after robbery"
Whanganui Police is seeking the help from the community to locate a white Toyota Corolla Station wagon, registration FUN993.
This vehicle was stolen during a robbery outside Trafalgar Square bus stop this morning at about 5:30am.
There is signwriting along each side of the car however this may have already been removed.
A large amount of electrical equipment and tools were also taken in the robbery.
This vehicle may be anywhere in the wider Manawatu-Whanganui area.
The owner of the vehicle suffered serious injuries as a result of the attack and remains in Whanganui Hospital.
Police are asking anyone with any information on the whereabouts of the vehicle or who have any information about the robbery to contact Police on the non-emergency number 105 and quote file number 191116/8861 or through Crimestoppers anonymously on 0800 555 111.
ENDS


Our Story
Whether planning a large dinner party or a warm and intimate lunch or dinner date, choose Diwali Palace (Indian & Nepalese Restaurant) . The word "fresh" summon-up a range of traits, almost all of which apply to Diwali Palace (Indian & Nepalese Restaurant). The great ambiance, excellent food, and exceptional service make for an incredible dining experience at Diwali Palace Restaurant. Come and enjoy the classic Indian and Nepalese delights that await you at Diwali Palace (Indian & Nepalese Restaurant).


Welcome Regional Enrollment Team!
This site is your final destination when it comes to finding resources to accomplish the task at hand. Everything here will always be current - you could say, "The One Stop Shop is ALIVE!"
Fresno Pacific University | Regional Enrollment
Phone:<PHONE_NUMBER> | Fax:<PHONE_NUMBER>


Developer Guide¶
This page is for people who wish to contribute code to this project.
Developer Setup¶
- Check out the source from head, switch to the source code’s root directory, then run:
- python setup.py develop
That will set up this project’s src directory in the easy-install.pth file in site-packages.
Release Process¶
- Checklist:
All newly-added code has a unit test
All tests pass cleanly (or have good reasons for not passing)
Change setup.cfg to have the appropriate tag (‘dev’, for example, or ‘’ for a stable release)
Change setup.py to have the appropriate version number
Inline comments updated with changes
Sphinx doc updated with changes
- Docs build cleanly
cd src/doc/src/ make html
- pep8 runs without much complaint
pep8 --ignore=E501,W601 --repeat model.py
- pylint runs without much complaint
pylint --disable=C0103,R0904,R0913,C0301,W0511 cmislibtest.py
All changes checked in
Tag the release using ‘cmislib-[release num]-RC[x]’
- Use the release script to build the release artifacts
cd dist ./release.sh -u<EMAIL_ADDRESS>This will do a ‘setup.py bdist sdist’ and will then sign all artifacts.
Note that the artifacts will be named without ‘RC[x]’. These are the same artifacts that will be distributed if the vote passes.
Copy files to the Apache server under ~/public_html/chemistry/cmislib/[release num]
Start vote. Send an email to<EMAIL_ADDRESS>announcing the vote, highlighting the changes, pointing to the tagged source, and referencing the artifacts that have been copied to the Apache server.
After 72 hours, if the vote passes, continue, otherwise address issues and start over
Copy the files to the appropriate Apache dist directory, which is /www/www.apache.org/dist/chemistry/cmislib/[release num]
Rename the RC tag in source code control
Update the cmislib home page with download links to the new release
Upload files to Pypi
- Check the cheesecake score
python cheesecake_index --name=cmislib


${invite_sender_name} invited you to add ${invite_org_name} to your account at ${site_title}. Visit the link below to continue.
This email contains private information, so please do not forward or share it. If you have any questions, email us at ${support_email}.


Complete every task on this page before {% if experts != 'on' %} 4pm on {{ now | date('add', 12, 'days') | date }} {% else %} its deadline {% endif %}
If you don't, {% if data['party'] == "defendant" %}the court may cancel your defence and give you a County Court Judgment (CCJ){% else %}the court may cancel your claim{% endif %}.
When you've completed every task, you need to tell us you've finished.
Upload any documents
{% if data['evidence'] == 'complete' %}You uploaded these documents on {{ now | date }}:
{% else %} {% if experts == 'on' %}
You need to upload these documents before 4pm on {{ now | date('add', 12, 'days') | date }}.
{% endif %}Upload copies of any documents you intend to use at the hearing.
Include copies of these if you have them:
- contracts or agreements relating to the claim
- any relevant text messages, emails or letters
- [any additional requests]
{% if data['generic'] == 'true' %}
Upload any other information the court ordered you to send
{% if experts == 'on' %}You need to upload these documents before 4pm on {{ now | date('add', 12, 'days') | date }}.
{% endif %}Please provide a copy of the roofing felt manufacturer's fitting instructions which you stated {% if data['party'] == "defendant" %}you followed accurately{% else %}was not followed{% endif %}.
Confirm you've done anything else the court ordered
{% if experts == 'on' %}You need to confirm this before 4pm on {{ now | date('add', 12, 'days') | date }}.
{% endif %}Please confirm you have supplied a sample of the disputed roofing material to the {% if data['party'] == "defendant" %}claimant{% else %}defendant{% endif %}.
{% endif %}
Complete and upload any witness statements
{% if data['witness'] == 'complete' %}You uploaded these documents on {{ now | date }}:
- Steve Smith: Witness statement 1.pdf
- Ben {{ partyName( 'claimant', 'last' ) }}: Witness statement 2.docx
{% else %} {% if experts == 'on' %}
You need to upload these documents before 4pm on {{ now | date('add', 12, 'days') | date }}.
{% endif %}Upload a witness statement for any witnesses whose evidence you want to use at the hearing, including yourself.
{% endif %}{% if experts == 'on' or data['expert'] == 'complete' %} {% if experts == 'on' %}
Upload an expert report
{% if experts == 'on' %}You need to upload an expert report before 4pm on {{ now | date('add', 18, 'days') | date }}.
{% endif %}The judge has given permission for you to use an expert. You need to follow these steps:
- Make a list of 3 independent experts who can provide a written report in return for a fee.
- The {% if data['party'] == "defendant" %}claimant{% else %}defendant{% endif %} then picks one expert from the list.
- You both provide questions for the expert to answer in the report, plus any extra information the expert asks for.
- Pay the expert - you usually both share this cost.
After you've received the expert's report you need to:
- Share the report with the {% if data['party'] == "defendant" %}claimant{% else %}defendant{% endif %}.
- Ask the expert any questions either of you have about the report.
- Upload the expert's report along with any questions and answers about it.
Upload the expert's report
You uploaded the expert's report on {{ now | date('subtract', 5, 'days') | date }}:
You uploaded the responses to the questions on the expert's report on {{ now | date }}:
{% endif %}{% endif %}
Tell us you've finished
You need to tell us when you've done everything the court ordered you to do. You should do this before 4pm on {% if experts == 'on' %}{{ now | date('add', 18, 'days') | date }}{% else %}{{ now | date('add', 12, 'days') | date }}{% endif %}.
Tell us you've finishedResponding by post
If you can't upload the required documents, you can respond to the order by post instead.
If you have a problem with the order
You can ask the court to review it. You need to do this before 4pm on {{ now | date('add', 19, 'days') | date }}.
A judge will consider your request. You should give details of how you want the order changed and the reasons for your request.


Seven Years in Tibet A film review by Marty Mapes Copyright 1997 Marty Mapes
***1/2 (out of 4) SEVEN YEARS IN TIBET is great, in both senses of the word. Much of the movie takes place in the Himalayas; the setting and the cinematography are spectacular. Even those who dislike this movie must admit that.
But not all of SEVEN YEARS takes place on a mountain. Most of the movie follows Heinrich Harrer (Brad Pitt) in his dealings with other people. In fact, if this epic movie has one center, it is Harrer, and on those terms, this movie is excellent.
Some critics have complained that there's "too much Brad Pitt, not enough Dalai Lama." Others criticize the Western condescension of Eastern culture. The latter comment is a valid complaint, and it is perhaps the reason this movie doesn't deserve four stars. The former, though, fails to take the movie on its own terms. This movie tells the story Heinrich Harrer's life and emotional growth. In that life, the Dalai Lama is a supporting character.
The movie opens with "Harry" leaving his pregnant wife in Austria and setting off to climb Nanga Parbet, a mountain in the Himalayas that his country has presumptuously adopted as its own. His wife begs him to stay but, annoyed, he coldly rejects her. At the station, official German well-wishers are excited for Harry's attempt on Nanga Parbet, and they give him a Nazi flag to plant on its summit. Coldly, again, he takes their flag, and it is never seen again. His reasons for leaving Austria are purely selfish. Neither fatherhood nor fatherland matters to him.
On their first attempt on Nanga Parbet, Harry's party is beaten by the weather and has to turn around. They get down to the camp and find themselves prisoners of war. War has broken out between Britain and Germany - and by association, India and Austria.
Harry doesn't take to prison well, and makes several escape attempts (reminiscent of Steve "The Cooler King" McQueen's role in THE GREAT ESCAPE). A bitter but resigned "Dear John" letter from his wife, and his comrades' enthusiasm, inspire one last bold escape attempt. Most of the prisoners do escape, and most of them are recaptured, but not Harry and Peter Aufschneiter (David Thewlis).
The pair make their way out of the unfriendly territory of India and into neigboring Tibet, but they find they are no more welcome here than they were in India. They decide to stick together in spite of the friction between them, and they spend quite a while wandering through the Himalayas - long enough for them to grow long beards and dark, leathery suntans.
Since his wife gave up on him and the world is at war, Harry now has no reason to go home. In fact, his life has very little purpose at all. Wandering the beautiful land and encountering its spiritual people, he begins to fill this void in his life with the Himalayas.
The movie tells us that Tibetans walk long journeys to pray at distant altars to atone for past wrongdoings. The longer the walk, the greater the atonement. It is clear that, deliberate or not, the walking is clearing Harry's head and his spirit. Harry is beginning to understand his flaws and internally atone for them. But atoning for past sins is only part of Harry's epic journey. Changing the current and future man is the other half.
Eventually, driven toward the protection of civilization by bandits, Harry and Peter find themselves in a caravan entering the forbidden city of Lhasa, Tibet, where Westerners are not allowed. Once inside, Harry is caught stealing something to eat (from a dog, no less), but the dog's owner is kind and invites them to stay. A little influence with the local politicaians, and Harry and Peter are welcomed into Tibetan society.
Harry is invited to an audience with the Dalai Lama (played by three actors, though mostly by Jamyang Wang Chuck), a young boy who has a sinful appetite for news and facts from the outside world. Harry handles the formality of speaking to a Dalai Lama awkwardly, but the boy takes to him and invites him to become a tutor, of sorts.
This is where critics complain about Western condescension of Tibetan culture. It IS presumptuous to take the customs of a different culture lightly. And it's not just Pitt's character that presumes - Annaud himself is guilty. He includes a scene, played up for comedy, of Tibetans treating earthworms very reverently. Ha ha! Those silly Tibetans!
Harry has atoned for his past failures, but he still has room for emotional growth. For example, when his best friend gets married, he resents their happiness; he is jealous. The last third of the movie shows Harry teaching the young Dalai Lama and immersing himself in work. These responsibilities help him grow and genuinely change for the better.
I admit I am not a very good judge of acting. And because so many people talk of Brad Pitt as a filmic object, it's hard to decide if what's effective is his presence or his performance. Either way, I found his portrayal of Henry to be very effective; his character genuinely grew from beginning to end. The change was subtle, but it was there. (And, hey, he managed to keep his accent all the way through.)
The other performance that really stood out (for me) was that of Jamyang Wang Chuck as the 14-year-old Dalai Lama, whose innocence, curiosity, and wisdom were not marred by bad-child-actor syndrome.
But maybe the best thing about SEVEN YEARS IN TIBET is the spectacular setting and cinematography. Even if that were all this movie had in its favor, it might deserve a recommendation. Luckily, there is more than just pretty pictures, and this movie is well recommended, but be prepared to forgive it its Western perspective.
Check out more current movie reviews at http://www.indra.com/~mmapes/
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


Night Moves at Potato Head Beach Club | Gamelan Concert | Paint and Wine Workshop | Cool Things To Do in Bali This Weekend ( Nov 15-17)
by Coconuts BaliThere’s a new social club and kitchen in Ubud, and their grand opening party is this Friday. Their menu begins with breakfast and takes you well into the night with their high voltage cocktail list, and, apparently keeping in line with the healthy trend, they use local and organic ingredients for Western and Asian classic dishes.
For the grand opening party, Current plans on bringing out free snacks and share plates for the guests, with performances from a DJ and a treat from their build-your-own gin & tonic bar.
Friday, Nov 15 at Current – Social Club & Kitchen, from 5pm ‘til late. Check out their Facebook event page here.
Night Moves with Tantrà ft. KAMMA and Masalo
This weekend, Bali-based collective Tantrà is set to take over Potato Head Beach Club to showcase their skills and new limited edition merch. They will be joined by DJs KAMMA and Masalo, who will be spinning diverse sets of sounds for the establishments’ Night Moves party.
Friday, Nov 15 at Potato Head Beach Club, from 7pm ‘til late. Free entry.
Analog Photography Hunting with The Film Collectives Bali
We’re always on the lookout for something new and interesting to do, and this week is no exception. Are you into analog photography? Join The Film Collectives Bali this Saturday afternoon for their photography hunt, which will begin at Rumah Sanur Creative Hub. It’s a chance to meet new people and get creative, and maybe capture some beautiful spots you haven’t stumbled upon before.
Saturday, Nov 16 from 3pm to 6pm. Meeting point at Rumah Sanur Creative Hub. Register here.
Komponis Kini 2019 – A Tribute to Wayan Beratha #6
It’s the sixth edition of Komponis Kini 2019, a series of music programs featuring the traditional gamelan instrument that has been focused as a tribute to Wayan Beratha, one of Bali’s most celebrated artists who passed away in 2014. This Saturday, five composers will present their new work, titled “Aural Indepence,” which will be performed by Gamelan Yuganada art performance group.
Saturday, Nov 16 at Bentara Budaya Bali, from 7pm to 10pm. Free entry.
Paint and Wine Workshop at Kinship Studio
The organizers have tagged this as a “Bring Home a Piece of Bali With You,” and while it’s probably safe to assume that they are specifically targeting tourists, we think there’s a good chance that the mix of painting and wine could be a wonderful way to spend your Sunday. Join the gang at Kinship Studio and Studio San Junipero (wait, isn’t that an episode in Black Mirror?) for a three-hours guided acrylic painting, which you can enjoy while also sipping wine.
Sunday, Nov 17 at Kinship Studio, from 1pm to 4pm. IDR350k for the painting workshop, and an additional IDR50k for free flow wine. Limited spots, register here.
Stay up to date with the latest happenings in Bali here!


Joining the jQuery Foundation has a couple of meanings. First, there is the act of a project becoming a jQuery Foundation project and benefiting from our open web ecosystem. If that's what you're looking for, check out the different projects that are already part of the foundation and see what it means to be a jQuery Foundation project.
If you're looking to support the jQuery Foundation and the projects involved, this is the place for you. Members join the jQuery Foundation on an annual subscription basis. Corporate members receive benefits ranging from website recognition to conference sponsorships and more.
If you would like to support our mission at any level but aren't interested in membership, head over to our donation page or let us know how you would like to help.
Membership in the jQuery Foundation supports our ongoing mission to make the open web accessible to everyone. The large majority of the Foundation's funding comes from memberships and as a 501(c)(6) nonprofit organization, all membership dues collected are invested back into realizing that mission through development of our projects, participation in standards bodies, collaboration with the development community and browser vendors, as well as hosting and running developer conferences.
We have a number of corporate membership levels with varying benefits associated with each:
For more detailed information, contact membership@jquery.org.


SLEEF Vectorized Math Library
Table of contents
Overview
SLEEF stands for SIMD Library for Evaluating Elementary
Functions. It implements vectorized versions of all C99 real
floating point math functions. It can utilize SIMD instructions that
are available on modern processors. SLEEF is designed to effciently
perform computation with SIMD instruction by reducing the use of
conditional branches and scatter/gather memory
access. Our benchmarks show that the performance of
SLEEF is comparable to that of the best commercial library. Unlike
vendor-tuned assembly-optimized libraries, SLEEF can be easily
ported to other architectures by writing a helper file, which is a
thin abstraction layer of SIMD intrinsics. SLEEF is also designed to
work with various operating systems and compilers. Link time
optimization can be used to reduce the overhead of calling
functions.
The library contains implementations of all C99 real FP math
functions in double precision and single precision. Different
accuracy of the results can be chosen for a subset of the elementary
functions; for this subset there are versions with up to 1 ULP error
(which is the maximum error, not the average) and even faster
versions with a few ULPs of error. For non-finite inputs and
outputs, the functions return correct results as specified in the
C99 standard. All the functions in the library are thoroughly tested
and confirmed that the evaluation error is within the designed
limit, by comparing the returned values against high-precision
evaluation using the GNU MPFR Library. Especially, we
carefully checked the error of the trigonometric functions with
arguments close to an integral multiple
of π/2.
SLEEF also includes subroutines for discrete Fourier
transform(DFT). These subroutines are fully vectorized, heavily
unrolled, and parallelized in such a way that modern SIMD
instructions and multiple cores can be utilized for efficient
computation. It has an API similar to that of FFTW for easy
migration, and distributed under
BSL, which is a
permissive open source license. The subroutines can utilize long
vectors up to 2048 bits. The helper files for abstracting SIMD
intrinsics are shared with SLEEF libm, and thus it is easy to port
DFT subroutines to other architectures. Preliminary
results of benchmark are now available.
Supported environments
This library currently supports several SIMD architectures :
In addition to the SIMD implementation, Pure C (scalar) version is
provided. The library provides dispatchers that automatically choose
the best subroutines for the computer the library is executed
on. The supported combinations of the architecture, operating system
and compiler are shown in Table 1.1.
| Table 1.1: Environment support matrix |
|
|
|
|
|
|
|
|
GCC |
Clang |
Intel Compiler |
MSVC |
|
|
|
|
|
|
| x86_64, Linux |
|
Supported |
Supported |
Supported |
N/A |
| AArch64, Linux |
|
Supported |
Supported |
N/A |
N/A |
| AArch32, Linux |
|
Supported(*1) |
Supported(*1) |
N/A |
N/A |
| PowerPC, Linux |
|
Supported |
Supported |
N/A |
N/A |
| System/390, Linux |
|
Supported |
Supported |
N/A |
N/A |
| x86_64, FreeBSD |
|
|
Supported |
N/A |
N/A |
| x86_64, OS X |
|
Supported(*2) |
Supported(*2) |
|
N/A |
| x86_64, Windows |
|
Supported(Cygwin)(*3) |
Supported(*3) |
|
Supported |
|
The supported compiler versions are as follows.
- GCC : version 5 and later
- Clang : version 6 and later
- Intel Compiler : ICC version 17
- MSVC : Visual Studio 2019
*1 NEON has only single precision support. The computation results
are not in full accuracy because NEON is not IEEE 754-compliant.
*2 LTO is not supported.
*3 AVX functions are not supported for Cygwin, because AVX is not
supported by Cygwin ABI.
All functions in the library are thread safe unless otherwise noted.
Credit
Partner institutes and corporations
| |
|
Division of Information Science of Nara Institute
of Science and Technology participates through Naoki Shibata.
|
| |
| |
| |
|
As the leading IP company in semiconductors
design, ARM
participates through Francesco Petrogalli.
|
| |
| |
| |
|
As the leading
company in developing a video game engine, Unity Technologies participates
through Alexandre Mutel.
|
| |
License
SLEEF is distributed under Boost Software License
Version 1.0.
Boost Software License is OSI-certified.
See this page for more
information about Boost Software License.
History
3.5.1 (Released on Sep 15, 2020)
- Fixed a bug in handling compiler options
3.5 (Released on Sep 1, 2020)
- IBM System/390 support is added (PR #291)
- The library can be built with Clang on Windows (PR #300)
- Static libraries with LTO can be generated (PR
#290)
- Alternative division and sqrt methods can be chosen with AArch64 (PR
#289)
- Header files for inlining the whole SLEEF functions can be
generated (PR #283)
- IEEE remainder function is added (PR
#271)
- GCC-10 can now build SLEEF with SVE support (PR
#310)
3.4.1 (Released on Oct 1, 2019)
- Fixed accuracy problem with tan_u35, atan_u10, log2f_u35 and exp10f_u10 (PR
#260,
#265,
#267)
- SVE intrinsics that are not supported in newer ACLE are replaced (PR
#268)
- FMA4 detection problem is fixed (PR
#262)
- Compilation problem under Windows with MinGW is fixed (PR
#266)
3.4 (Released on Apr 28, 2019)
- Faster and low precision functions are
added (PR #229)
- Functions that return consistent results across platforms are
added (PR #216,
#224)
- Many functions are now faster (PR #239)
- Quad precision math library(libsleefquad) is added
(PR #235,
#237,
#240)
- Testers are now faster (PR #223)
3.3.1 (Released on Aug 21, 2018)
- i386 build problem is fixed
- FreeBSD support is added
- Trigonometric functions now evaluate correctly with full FP
domain. (PR #210)
3.3 (Released on July 6, 2018)
- AArch64 SVE target support is added (PR #180, #182)
- DFT is now faster (PR #186)
- 3.5-ULP hyperbolic functions are added (PR #192)
- PowerPC VSX target support is added (PR #195)
- Modified Payne-Hanek argument reduction is added to the
trigonometric functions in libsleef (PR #197)
3.2 (Released on Feb 26, 2018)
- The whole build system of the project migrated from makefiles to
cmake. The makefile build system is now removed.
- GNUABI version of the library with compatibility tests is
added.
- Benchmarks that compare `libsleef` vs `SVML` on X86 Linux are
available in the project tree under src/libm-benchmarks
directory.
- Extensive upstream testing via Travis CI and Appveyor
- log2 is added.
- The library can be compiled to an LLVM bitcode object
- Added masked interface to the library to support AVX512F masked
vectorization.
- Use native instructions if available for `sqrt`.
- Removed `libm` dependency.
- fmod(FP remainder), asin, acos, log, pow, log10, exp2, exp10 and
log1p functions are now faster.
- Fixed a bug that was making the error of sinpi, cospi, sincospi,
and tgamma functions larger than the specifications on very rare
occasions.
- Fixed a bug that was preventing the dispatcher from choosing the
FMA4 implementation.
See Changelog
for older changes.
Publication
- Naoki Shibata and Francesco Petrogalli : SLEEF: A Portable Vectorized Library of C Standard Mathematical Functions, in IEEE Transactions on Parallel and Distributed Systems, DOI:10.1109/TPDS.2019.2960333 (Dec. 2019). [PDF]
- Francesco Petrogalli and Paul Walker : LLVM and the automatic vectorization of loops invoking math routines: -fsimdmath, 2018 IEEE/ACM 5th Workshop on the LLVM Compiler Infrastructure in HPC (LLVM-HPC), pp. 30-38., DOI:10.1109/LLVM-HPC.2018.8639354 (Nov. 2018). [PDF]


The Yeti in History
Pre 1800's
The Himalayas
The Himalayan people are like all about the Yeti. He is worshipped by many as a "Glacier Being", and many Tibetan Buddhists believed his blood to mystical.
The Himalayan people are like all about the Yeti. He is worshipped by many as a "Glacier Being", and many Tibetan Buddhists believed his blood to mystical.


Menuju ke konten
nafabi
.
Home
Favorite
About
nafabi
.
Home
Favorite
About
Have A Good Meal
nafabi
.
Search Restaurant
Here some list you might be like


Numbers 28:8
And the other lamb shalt thou offer at even: as the meat offering of the morning, and as the drink offering thereof, thou shalt offer it, a sacrifice made by fire, of a sweet savor unto the LORD.


The remote laboratory extends the accessibility of OSCAR. It consists of the following components:
The track in the remote laboratory is constructed to resemble a real road. We are using dark floor with yellow lanes to enable testing lane detection-based driving. Various sites are placed along the driveway to provide landmarks for localization with both LIDAR and an on-board camera. They include buildings of different sizes with different surface patterns, traffic cones, traffic barriers and traffic signs, all appropriately scaled for the OSCAR scaled platform.
A monitoring system is needed to mimic a Global Positioning System (GPS). Wide-angle cameras are installed above and alongside the track to monitor car’s movement.
The remote laboratory is integrated into the OSCAR IDE. Remote clients can select a set of sensor inputs to use for their computations to generate an output of motion control commands. Users can collect real-time sensor data from the OSCAR platform while monitoring a video stream from cameras installed in the laboratory.


Seth Archer
02.14.17
Emily Wolfe got her first experience teaching in a classroom at The Plains Elementary during her junior year at Ohio University. Now she in her first year of graduate school at OU, and she is back teaching at The Plains.
The Patton College of Education’s curriculum requires all students to work alongside teachers in area school districts, Marcy Keifer Kennedy, OU’s director of the Center for Professional Development School Partnerships, said.
"It really helped me personally, I was more confident about wanting to be a teacher because a lot of college students that first go in, they might not know what they want to do and they're trying to decide,” Wolfe said.
She teaches math, sciences and social studies to first graders at The Plains, and was a part of the Center during her undergraduate years. She taught at Morrison Gordon elementary her senior year.
Ohio University President Roderick McDavis was the dean of two colleges of education, a professor of education and counselor education and a vice president for academic affairs before becoming OU’s president.
He pledged he would improve local schools during his presidency.
“If our work is education, then that work must be applied to actively improving the quality of public schools throughout Southeast Ohio,” McDavis said in his inaugural address in 2004.
“We must never forget that a better educated populace leads to a better workforce for tomorrow’s jobs.” President Roderick McDavis
During McDavis’ time at OU, Athens City Schools have seen an increase in student test results with the exception of 2014-2015, according to the performance index annually distributed by the Ohio Department of Education.
The Center for Professional Development School Partnerships partners with Alexander Local Schools, Athens City Schools, Federal Hocking Schools, Logan Hocking Schools, Nelsonville-York City Schools, Trimble Local Schools and Southern Local and Perry County, Kennedy said.
The main mission of the Center is to positively impact students in preschool through grade 12, and the Center has been appreciative of the support McDavis during his presidency, Kennedy said.
“From what I've seen, candidates really feel as if they are educating the children of that building,” Kennedy said. “They're not just stopping in for a couple hours to teach a lesson. … There part of those environments, they're part of those children's lives.”
Liz Hoisington teaches English and Language Arts to first graders at The Plains, and said she thinks the partnership is fantastic. Together, she works with Wolfe to teach first grade.
"We get strong candidates …. and our faculty all work really close together and we feel very heard by the university,” Hoisington said.
She said the teachers are included in the planning meetings.
“I see it as a true partnership where we are working with the university, but the university is always working with us,” Hoisington said.
Hoisington said she can not imagine being at a college that did not have a partnership with local schools.
"I can't imagine as a college student, being at a university that did not have a partnership with the schools."
Landing Page
OU President Roderick McDavis is leaving February 17. The Post looks back at his time as Ohio's president. Click this box to read the rest of the stories from this issue.


[§674-15.5] Preclusion of title-related claims. Nothing in this chapter shall be construed to affect title, or conveyance of title, or place a cloud upon title, to any lands in the State, including but not limited to lands which were, are, or may have been Hawaiian home lands. [L Sp 1995, c 14, §16]