CTC 2020 is a technology conference for industry professionals. Each event is highly curated to provide you with the absolute best possible experience.
Every presenter has been hand-picked and each topic is selected to complement or build on the others.
Best yet, every presentation is recorded and published to CTCSessions after the event has ended. This means you can watch everything no matter when you're available.
Cameroonian Technology Congress 2020 will be on a screen near from September 2nd, 2020 , kicking off at 4:00am.


S2 Fig
Volcano plots of the meta-analysis results of differentially expressed genes of BP. A) SBP; B) DBP; C) HTN. The x-axis is the effect size (beta values) of meta-analysis and the y-axis is the −log10 transformed p values. (TIF)
Click here for additional data file.


Leon de Rijke
Freelance Front-end Developer
Founder of
Izano
I'm a freelance Front-end Developer based in Eindhoven, the Netherlands.
Clients include for-profit organisations, public sector organisations and non-profit organisations. Please refer to my LinkedIn profile for more information.
You can reach me via phone: +31 (0)6 24 71 58 32 or email: hello@leonderijke.nl


Convenience macro to simplify bounce statement usage.
The BOUNCE() macro simplifies the creation of a bounce function to a class member for use with C-style callbacks. The BOUNCE() macro must be paried with a this
pointer to get to the proper class instance.
Example usage with a C-style callback interface.
posixThread is a C++ class, and posixThread::thread_func() is a member function which we want to pass to pthread_create().
r = pthread_create(&handle_, &attributes,
reinterpret_cast<void* (*)(
void*)
>(
BOUNCE(posixThread, thread_func)),
reinterpret_cast<void*>(this));
- Parameters
-
| c | The class type. |
| m | The member function in the class |
- Returns
- A bounce function which redirects a C-style callback to a class member function.


Show This Project Off!
Developed this site for the blah de blah company and it went viral, generating umpteen million in sales overnight.
Acme Design & Web was excited to help a new restaurant establish a presence on the web. In addition to the website, Acme designed the company logo, menus, business cards, and signage.
Developed this site for the blah de blah company and it went viral, generating umpteen million in sales overnight.
Developed this site for the blah de blah company and it went viral, generating umpteen million in sales overnight.
Developed this site for the blah de blah company and it went viral, generating umpteen million in sales overnight.


B. Verkin Institute for Low
Temperature Physics & Engineering of Ukrainian Academy of Sciences,
47, Nauky Ave.,
61103 Kharkov, Ukraine
<EMAIL_ADDRESS>+38 (057) 340 21 05.
Was born in Ulan-Ude (USSR) in 1945.
Graduated from KharkovGraduated from Kharkov State University
in1967.
PhD Phys & Math, Kharkov State University, 1975
DrS Phys&Math, ILTPE NANU,1989
Professor degrees in Theoretical physics in ILTPE, 2001.
Now is the Leading Researcher in ILTPE (theoretical department) and
the professor in Kharkov National University (E.M.Lifshits
theoretical physics department).
Area of expertise is the nonlinear waves and soliton dynamics
of magnetically ordered and elastic media, nonlinear phenomena in
dynamical systems, mathematical aspects of nonlinear mechanics. Is
the author and co-author of 2 monographs, 4 reviews and 200
articles.
Lecturer activity: lecturing on theoretical mechanics and
nonlinear physics at Kharkov National University.
Foreign activity: scientific visitor in universities of
Regensburg, Bayreuth (Germany), Paris (France), Canberra
(Australia), Birmingham (UK) and Linchoping (Sweden) during the
years 1994-2004.
Scientific adviser of 6 PhDs.
Avards: Ukrainian A.S.Davydov award in theoretical physics
(2006), Letter of commendation from Ukrainian parliament (2010),
Ukrainian State award (2012) and decoration of NAS of Ukraine
(2018).
Main current research interests:
theory of nonlinear structures and waves in solid state.
-
Investigation of nonlinear surface waves during last years
includes studying of nonlinear surface shear waves (It was
demonstrated the importance of a spatial dispersion of elastic
media and criteria of stability for NSSW and surface shear
solitons were formulated); the SSS were studied as a general
problem of 2D and 3D solitons in media with acoustic spectrum and
the special asyptotical procedures for them were proposed; the
different surface Rayleigh solitons with a stationary profile were
investigated near perfect surface and surface covered with thin
film or monolayer. In the last cases the nonlinear non-local ID
evolution equations were derived and their unusual soliton
solutions were obtained. Recently some special problems for
nonlinear elastic surface waves were investigated: propagation of
envelope SRS, properties of "gap" SRS near the corrugated surface,
propagation of exotic solitons with combined polarization in
nonlinear elastic plates with effective nonlinear dispersion,
derivation of nonlinear evolution equations for nonlinear elastic
systems with restricted geometry and second-order nonlinearity.
Some results were obtained for nonlinear elastic waves and
solitons near the surface in the incommensurate state.
-
Nonlinear dynamics of magnets is a traditional field of interest:
the specific nonlinear excitations - "magnetic solitons" were
studying and the novel conception of magnetic soliton as a bound
state of magnons was formulated. In this area some important
results were obtained: the exact solutions for ID solitons in
ferro- and anti-feromagnets; exact many-solitons solutions in ID
FM; numerical solutions for many-dimensional magnetic solitons; 2D
skirmions and vortices in FM. Later some specific phenomena of
nonlinear magnetic structure and dynamics was investigated:
magnetic solitons in thin films and nonlinear surface spin waves,
magnetic frustrations in HTSC, complicated topological solitons in
AFM with dislocations, dynamical and topological solitons and
internal modes in quasi 2D essentially discrete FM, exotic
magnetic solitons, magnetic structure and dynamics of FM/AFM
perfect and imperfect interfaces (especially exchange bias
phenomenon). Recently the main interests are concentrated on the
structure and dynamics of magnetic vortices, vortex pairs and
their interaction with spin waves and external fields, magnetic
vortices in magnetic nanodots, magnetic solitons interaction with
the point sources of external high frequency field.
-
Special problems of nonlinear mechanic and mathematical aspects of
solitonic theory were studied including: some asymptotic
techniques for envelope solitons in ID- 2D- and finite size
systems; Hirota transformation, N-solitons solutions and spin-wave
spectrum in the presence of domain walls; exact solutions for
incommensurated systems; the connection of solitons in the systems
with distributed parameters with their quasi-soliton analogous in
the systems with finite number degrees of freedom. Recently some
problems of nonlinear optical pulse propagation in fibers were
intensively studied. Another "optical activity" is connected with
propagation of nonlinear optical beams through spatial periodic
media and properties of optical "supersolitons”. The particular
attention is devoted to investigation of "gap-solitons" and their
discrete analogs.
Main publications:
-
A.M.Kosevich, B.A.Ivanov, A.S.Kovalev, Nonlinear waves of
magnetization. Dynamical and topological solitons, Kiev, Naukova
Dumka (1983).
-
A.M.Kosevich, B.A.Ivanov, A.S.Kovalev, Magnetic solitons: A new type
of collective excitations in magnetically ordered systems,
Sov.Sci.Rev., A6,161-260 (1985).
-
A.M.Kosevich, B.A.Ivanov, A.S.Kovalev, Magnetic solitons, Phys.Rep.,
v.194, N3/4, 117-238 (1990).
-
A.M.Kosevich, A.S.Kovalev, Introduction in nonlinear physical
mechanics, Kiev, Naukova dumka (1989).
-
M.Pankratova, A.Kovalev, M.Zukovic, Understanding of Exchange Bias
in ferromagnetic/antiferromagnetic bilayers, in “Exchange
Bias”, Monograph Series in Physical Sciences, Taylor&Frances, CRC
Press, 205-232 (2017).
Main last publications:
-
А.С.Ковалев, «Вихревая структура магнитных солитонов», ФНТ, т.43,
№2, 364 (2017).
-
A.S.Kovalev, M.L.Pankratova, “Field dependence of magnetization for
thin ferromagnetic film on rough antiferromagnetic surface”,
Superlattices and Microstructures, v.73, 275 (2014).
-
А.Г.Гречнев, А.С.Ковалев, М.Л.Панкратова, «Влияние обменного сдвига
на гистерезис полевой зависимости намагниченности ферромагнитной
пленки, контактирующей с антиферромагнетиком». ФНТ, т.39, №12, 1361
(2013).
-
E.S.Sokolova, A.P.Mayer, A.S.Kovalev, “Second-order nonlinearity of
wedge acoustic waves in anisotropic media”, Wave Motion, v.50, N2,
246 (2013).
-
E.S.Sokolova, R.Timler, A.S.Kovalev, A.P.Mayer, “On the dispersion
of wedge acoustic wave”, Wave Motion, v.50, N2, 233 (2013).
-
В.Н.Белан, А.С.Ковалев, А.А.Перетятько,«Влияние диссипации на
структуру квазисолитонных состояний при высокочастотном точечном
воздействии на нелинейные магнитоупорядоченные среды», ФНТ, т.39,
№2, 186 (2013).
-
S.A.Gredeskul, S.A.Derevyanko, A.S.Kovalev, J.E.Prilepsky, “ Soliton
propagation through a disordered system: Statistics of the
transmission delay”, Phys.Rev. E, v.81, N 3, 036608 (2010).


Class: Jammit::Controller
- Inherits:
-
ActionController::Base
- Object
- ActionController::Base
- Jammit::Controller
- Defined in:
- lib/jammit/controller.rb
Overview
The JammitController is added to your Rails application when the Gem is loaded. It takes responsibility for /assets, and dynamically packages any missing or uncached asset packages.
Constant Summary
- VALID_FORMATS =
[:css, :js]
- SUFFIX_STRIPPER =
/-(datauri|mhtml)\Z/
- NOT_FOUND_PATH =
"#{PUBLIC_ROOT}/404.html"
Instance Method Summary (collapse)
-
- (Object) cache_package
private
Tells the Jammit::Packager to cache and gzip an asset package.
-
- (Object) generate_stylesheets
private
If we’re generating MHTML/CSS, return a stylesheet with the absolute request URL to the client, and cache a version with the timestamped cache URL swapped in.
-
- (Object) package
The “package” action receives all requests for asset packages that haven’t yet been cached.
-
- (Object) package_not_found
private
Render the 404 page, if one exists, for any packages that don’t.
-
- (Object) parse_request
private
Extracts the package name, extension (:css, :js), and variant (:datauri, :mhtml) from the incoming URL.
-
- (Object) prefix_url(path)
private
Generate the complete, timestamped, MHTML url — if we’re rendering a dynamic MHTML package, we’ll need to put one URL in the response, and a different one into the cached package.
Instance Method Details
- (Object) cache_package (private)
Tells the Jammit::Packager to cache and gzip an asset package. We can’t just use the built-in “cache_page” because we need to ensure that the timestamp that ends up in the MHTML is also on the cached file.
37 38 39 40 |
# File 'lib/jammit/controller.rb', line 37 def cache_package dir = File.join(page_cache_directory, Jammit.package_path) Jammit.packager.cache(@package, @extension, @contents, dir, @variant, @mtime) end |
- (Object) generate_stylesheets (private)
If we’re generating MHTML/CSS, return a stylesheet with the absolute request URL to the client, and cache a version with the timestamped cache URL swapped in.
53 54 55 56 57 58 59 60 61 |
# File 'lib/jammit/controller.rb', line 53 def generate_stylesheets return @contents = Jammit.packager.pack_stylesheets(@package, @variant) unless @variant == :mhtml @mtime = Time.now request_url = prefix_url(request.request_uri) cached_url = prefix_url(Jammit.asset_url(@package, @extension, @variant, @mtime)) css = Jammit.packager.pack_stylesheets(@package, @variant, request_url) @contents = css.gsub(request_url, cached_url) if perform_caching css end |
- (Object) package
The “package” action receives all requests for asset packages that haven’t yet been cached. The package will be built, cached, and gzipped.
16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/jammit/controller.rb', line 16 def package parse_request case @extension when :js render :js => (@contents = Jammit.packager.pack_javascripts(@package)) when Jammit.template_extension.to_sym render :js => (@contents = Jammit.packager.pack_templates(@package)) when :css render :text => generate_stylesheets, :content_type => 'text/css' end cache_package if perform_caching rescue Jammit::PackageNotFound package_not_found end |
- (Object) package_not_found (private)
Render the 404 page, if one exists, for any packages that don’t.
78 79 80 81 |
# File 'lib/jammit/controller.rb', line 78 def package_not_found return render(:file => NOT_FOUND_PATH, :status => 404) if File.exists?(NOT_FOUND_PATH) render :text => "
404: \"#{@package}\" asset package not found.
", :status => 404 end |
- (Object) parse_request (private)
Extracts the package name, extension (:css, :js), and variant (:datauri, :mhtml) from the incoming URL.
65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/jammit/controller.rb', line 65 def parse_request pack = params[:package] @extension = params[:extension].to_sym raise PackageNotFound unless (VALID_FORMATS + [Jammit.template_extension.to_sym]).include?(@extension) if Jammit. suffix_match = pack.match(SUFFIX_STRIPPER) @variant = Jammit. && suffix_match && suffix_match[1].to_sym pack.sub!(SUFFIX_STRIPPER, '') end @package = pack.to_sym end |
- (Object) prefix_url(path) (private)
Generate the complete, timestamped, MHTML url — if we’re rendering a dynamic MHTML package, we’ll need to put one URL in the response, and a different one into the cached package.
45 46 47 48 |
# File 'lib/jammit/controller.rb', line 45 def prefix_url(path) host = request.port == 80 ? request.host : request.host_with_port "#{request.protocol}#{host}#{path}" end |


{% extends "base.html" %} {% block content %}
In here you can use our trained machine learning model to help you control the energy output of your powerplant, this value is only intented as an aid for making decisions and it should only be used as a guide.
Please enter in your powerplant to start
{% else %}Please sign in to start
{% endif %}If you wish to learn more about powerplant please check the about section.


Deployment
Structure and Distributions
- restsql - service and core framework
- restsql-sdk - documentation, HTTP API explorer, javadoc, examples
- restsql-test - test framework, test cases
- restsql-{version}.jar - core framework only
- restsql-{version}.war - service and core framework, 3rd party dependencies
- restsql-sdk-{version}.war - SDK
- restsql-{version}-src.jar - service and core framework
Deployment Modes
- WAR - web application
Clients use an HTTP service (web app) directly - JAR - java library
Clients use your service which uses the restSQL Java API
Configuring restSQL
- restsql.properties - general framework settings
- log4j.properties - logging settings
The general restsql.properties is set through a System Property, "org.restsql.properties". The value is an absolute path to your properties file, e.g. /etc/opt/business/restsql/restsql.properties. The WAR mode should use a context-param in the web.xml to set this (See Installation section later for details). The JAR mode will default to default-restsql.properties (source location: restsql/src/resources/properties) that is included in the jar.
The general restsql.properties contains the following configurations:
- Logging - required
- SQL Resource definition location - required
- Security - optional
- Triggers - optional
- XML - optional
- HTTP - optional
- Database - required
- Implementation classes - optional
Logging configuration example:
# logging.facility=[log4j,java] # logging.config=relative/to/classpath # logging.dir=/absolute/path - this is only used by the /log service method to find logs logging.facility=log4j logging.config=com/business/config/log4j.properties logging.dir=/var/log/restsql
The location of SQL Resource definitions is critical. An example:
# sqlresources.dir=/absolute/path sqlresources.dir=/etc/opt/business/restsql/sqlresources
The Security configuration is optional. Here is an example:
# security.privileges=/absolute/path security.privileges=/etc/opt/business/restsql/privileges.properties
The Triggers configuration is optional. Here is an example:
# triggers.classpath=/absolute/path # triggers.definition=/absolute/path triggers.classpath=/etc/opt/business/restsql/triggers triggers.definition=/etc/opt/business/restsql/triggers.properties
The XML configuration is optional. The defaults are:
# request.useXmlSchema=[true, false] # response.useXmlDirective=[true, false] # response.useXmlSchema=[true, false]w request.useXmlSchema=false response.useXmlSchema=false response.useXmlDirective=false
The HTTP configuration is optional. See HTTP Configuration for more detail. The defaults are:
# http.response.cacheControl={cache-directive}, {cache-directive}, ... http.response.cacheControl=no-cache, no-transform
The Database configuration is required. for a database with built-in support:
# database.driverClassName=x.x.x # for MySQL use com.mysql.jdbc.Driver # for PostgreSQL use org.postgresql.Driver # database.url=jdbc:etc:etc # for MySQL use jdbc:mysql://hostname:3306/ # for PostgreSQL use jdbc:postgresql://hostname:5432/{database-name} # database.user=userName # database.password=password database.driverClassName=com.mysql.jdbc.Driver database.url=jdbc:mysql://localhost:3306/ database.user=restsql database.password=Rest00sql# # DB-specific implementation classes - match the implementation to your database # For MySQL: # org.restsql.core.ColumnMetaData=org.restsql.core.impl.mysql.MySqlColumnMetaData # org.restsql.core.SequenceManager=org.restsql.core.impl.mysql.MySqlSequenceManager # org.restsql.core.SqlResourceMetaData=org.restsql.core.impl.mysql.MySqlSqlResourceMetaData # org.restsql.core.SqlBuilder=org.restsql.core.impl.mysql.MySqlSqlBuilder # org.restsql.tools.ResourceDefinitionGenerator=org.restsql.tools.impl.mysql.MySqlResourceDefinitionGenerator # For PostgreSQL: # org.restsql.core.ColumnMetaData=org.restsql.core.impl.ColumnMetaDataImpl # org.restsql.core.SequenceManager=org.restsql.core.impl.postgresql.PostgreSqlSequenceManager # org.restsql.core.SqlResourceMetaData=org.restsql.core.impl.postgresql.PostgreSqlSqlResourceMetaData # org.restsql.core.SqlBuilder=org.restsql.core.impl.postgresql.PostgreSqlSqlBuilder # org.restsql.tools.ResourceDefinitionGenerator=org.restsql.tools.impl.postgresql.PostgreSqlResourceDefinitionGenerator org.restsql.core.ColumnMetaData=org.restsql.core.impl.mysql.MySqlColumnMetaData org.restsql.core.SequenceManager=org.restsql.core.impl.mysql.MySqlSequenceManager org.restsql.core.SqlResourceMetaData=org.restsql.core.impl.mysql.MySqlSqlResourceMetaData org.restsql.core.SqlBuilder=org.restsql.core.impl.mysql.MySqlSqlBuilder org.restsql.tools.ResourceDefinitionGenerator=org.restsql.tools.impl.mysql.MySqlResourceDefinitionGenerator
Implementation classes configuration is optional. The defaults are:
# Implementation classes - use these to customize the framework # org.restsql.core.Factory.ConnectionFactory=fully.qualified.class.name # org.restsql.core.Factory.RequestFactory=fully.qualified.class.name # org.restsql.core.Factory.RequestDeserializerFactory=fully.qualified.class.name # org.restsql.core.Factory.ResponseSerializerFactory=fully.qualified.class.name # org.restsql.core.Factory.SqlResourceFactory=fully.qualified.class.name # org.restsql.core.HttpRequestAttributes=fully.qualified.class.name # org.restsql.core.RequestLogger=fully.qualified.class.name # org.restsql.core.TableMetaData=fully.qualified.class.name # org.restsql.security.Authorizer=fully.qualified.class.name org.restsql.core.Factory.ConnectionFactory=org.restsql.core.impl.ConnectionFactoryImpl org.restsql.core.Factory.RequestFactory=org.restsql.core.impl.RequestFactoryImpl org.restsql.core.Factory.RequestDeserializerFactory=org.restsql.core.impl.serial.RequestDeserializerFactoryImpl org.restsql.core.Factory.ResponseSerializerFactory=org.restsql.core.impl.serial.ResponseSerializerFactoryImpl org.restsql.core.Factory.SqlResourceFactory=org.restsql.core.impl.SqlResourceFactoryImpl org.restsql.core.HttpRequestAttributes=org.restsql.core.impl.HttpRequestAttributesImpl org.restsql.core.RequestLogger=org.restsql.core.impl.RequestLoggerImpl org.restsql.core.TableMetaData=org.restsql.core.impl.TableMetaDataImpl org.restsql.security.Authorizer=org.restsql.security.impl.AuthorizerImpl
See the SDK for more detail on Security, Logging and Trigger configuration.
Access http://yourhost:port/restsql for links to the effective runtime configuration.
Installing restSQL WAR mode
Requirements: JEE Container, RDBMS, JAR tool
Properties Files: Create your two required properties files (restsql.properties and log4j.properties (or logging.properties), as above. Create your two optional privileges and triggers definitions if required. The restsql.properties can exist outside the restSQL webapp, however the log4j.properties/logging.properties must exist within the classpath in WEB-INF/classes. Note that it will not load properly if you put the logging properties in WEB-INF/lib. You do not have to create the logging directory or directories, e.g. /var/log/restsql. The logging frameworks will do this automatically.
Abbreviated Deployment for Tomcat
You can use this shortcut if you are using Tomcat, do not want restSQL Authentication or Authorization and Java Security Manager is disabled (the default for Tomcat). Add a Parameter entry that indicates your absolute path to your restsql.properties in your $TOMCAT_HOME/conf/context.xml, as in:
<Parameter name="org.restsql.properties" value="/etc/opt/business/restsql/restsql.properties" override="false" />
Place the unmodified WARs (but rename them restsql.war and restsql-sdk.war) in the $TOMCAT/webapps directory and bounce the server, or deploy the webapp using your favorite method.
Deployment Option 2
This option avoids messing with the JAR tool (similar to the tar Unix/Linux tool) as in option 3. Drop the restsql-{version}.war in your $JEE_SERVER/webapps directory, but rename it to restsql.war so that the version number is not needed in URLs. Place restsql-sdk.war there as well, dropping the version number from the file name. Start/stop your JEE server. Most servers will expand be expand the WAR file into an exploded directory. Remove the WAR files just to play it safe.
Create the SDK database using the scripts (see the Installing the SDK section)
Edit the restsql/WEB-INF/web.xml pointing the org.restsql.properties
parameter to the restsql-sdk/examples/properties/restsql-mysql.properties, assuming you are using MySQL. Edit the restsql-mysql.properties file, setting the sqlresources.dir
property to restsql-sdk/examples/sqlresources.
Let's say the JEE server is Tomcat and is deployed in /opt/tomcat. The web.xml is found in /opt/tomcat/webapps/restsql/WEB-INF/web.xml. Set the org.restsql.properties
parameter to /opt/tomcat/restsql-sdk/examples/properties/restsql-mysql.properties. Set the sqlresources.dir
property to /opt/tomcat/restsql-sdk/examples/sqlresources.
Bounce your JEE server. See Getting Started section.
The following deployment option 3 discusses some other details you might want to consider for security and logging after you get it initially working.
Deployment Option 3
The restsql-{version}.war contains the service and framework classes as well as dependencies. Extract it's contents to some temp area, e.g. /tmp/restsql. Use the standard jar tool that comes with your JRE/JDK. The command is jar -xf war-file-name. It extracts all contents in the current directory. The contents looks like:
restsql/ META-INF/ wadl/ WEB-INF/ index.html
web.xml: Change the restSQL WEB-INF/web.xml. The LifecycleManager needs to know where to load your restsql.properties. Here's an example:
<context-param> <param-name>org.restsql.properties</param-name> <param-value>/etc/opt/business/restsql/restsql.properties</param-value> </context-param>
The default deployment descriptor (web.xml) contains login config (authentication method) and security constraints (authorization declarations). See the restSQL default deployment descriptor.
Disabling Authorization and Authentication: To disable authentication/authorization, simply remove or comment out the security-constraint and login-config elements in the web.xml. Security is disabled by default.
Enabling Authorization and Authentication: You may use the default security constraints and login config or change it to conform to your specific roles, realm and other requirements. More information on Web Application Security using deployment descriptors is available at http://java.sun.com/javaee/6/docs/tutorial/doc/bncbe.html. Or consult your container's documentation. Authentication mechanisms (credential management, user to role assigment) are typically container-specific/proprietary. You will also need to configure a privileges properties file and reference it in the restsql properties file. See the SDK's Security configuration for instructions.
Naming: You may deploy this as a single file or exploded war to your JEE container. Rename it from restsql-#.war to to restsql.war or webapps/restsql if you want the path to be http://yourhost:port/restsql. Containers generally use the war file name instead of the web.xml's id to name the web app. Additionally, the SDK's HTTP API Explorer will work without any customization.
Deploy: Copy your exploded war or war to your container's webapps dir and restart the container, or deploy the webapp in your preferred style. All third party dependencies are included in the war distribution in the WEB-INF/lib.
Java Security Manager: If Java Security is enabled in your container, permissions must be added to your container's policy file. restSQL requires:
- read/write access (java.util.PropertyPermission) to the following system properties:
- org.restsql.properties
- org.apache.commons.logging.Log
- either log4j.configuration for log4j logging or java.util.logging.config.file for Java Native logging
- read access (java.io.FilePermission) to the various properties files, and SQL Resources and triggers directories
grant codeBase "file:${catalina.base}/webapps/restsql/-" { permission java.security.AllPermission; };
Open http://host:port/restsql
in your browser.
Note: If you receive a 500 response to any res query with the text "No suitable driver found", then the container cannot find your jdbc driver. This can usually be fixed by placing the database driver in some common server library location. This also occurs after deploying the restSQL.war to WebLogic using the console when the container is running. After a container restart, the driver is found.
Installing restSQL JAR mode
Properties: Follow the instructions for Configuring restSQL.
Deploy: Copy jar to the classpath of your web app, e.g. WEB-INF/lib. The following third party dependencies also need to be in your classpath:
- commons-logging.jar - tested with version 1.1.1
- log4j.jar - tested with 1.2.16
log4j is not necessary if your app uses Java Native Logging. restSQL has been tested with JRE 1.6 and Java Native Logging.
Additionally one of the following jdbc drivers is necessary for databases with built-in support:
- mysql-connector-java-#.jar (tested with MySQL version 5.5)
- postgresql-#.jdbc4.jar (tested with PostgreSQL version 9.0)
Authorization and Authentication: restSQL will authorize SQL Resource operations. Your app will authenticate users and associate users with roles. You must provide a priviliges properties file and reference it in the restsql.properties. Your app will call restSQL's Authorizer
and provide a SecurityContext
implementation. See the SDK's Security configuration for more instructions.
Java Security Manager: If you run enable Java Security, restSQL requires read/write access (java.util.PropertyPermission) to the following system properties: org.restsql.properties, org.apache.commons.logging.Log and either log4j.configuration for log4j logging or java.util.logging.config.file for Java Native logging. Additionally it needs read access (java.io.FilePermission) to the various properties files, and SQL Resources and triggers directories.
Resource Definition Generation Tool
The tool creates resource definition templates for all columns for each table in a database schema. The definitions are created in the user-provided subfolder. These resources can be immediately used, or modified and reloaded and moved as necessary.
The tool is accessed after deploying restsql from the Tools link on the home page, or from http://host:port/restsql/tools. Enter the subfolder name (default is 'auto') and the database name. The definitions are created in the configured SQL Resources directory (in the restsql.properties file). These are viewable from the SQL Resources browser, i.e. http://host:port/restsql/res.
Installing restSQL SDK
Requirements: JEE Container, JAR tool, MySQL or PostgreSQL, Web Browser
Install restsql WAR mode as above with one variation: the restsql.properties must be changed to reference the sdk's SQL Resources definition directory. Below is an example:
# sqlresources.dir=/absolute/path sqlresources.dir=/opt/tomcat/webapps/restsql-sdk/examples/sqlresources
Deploy: Extract restsql-sdk-{version}.war to your container's webapps directory, e.g. /opt/tomcat/webapps/restsql-sdk. Restart the container or use your preferred deloyment method.
The SDK war contents are:
restsql-sdk/ api-explorer/ database/ defaults/ doc/ examples/ javadoc/ META-INF/ wadl/ WEB-INF/
Database: The HTTP API Explorer requires access to an extended sakila database. It is extended for the restsql-sdk with new tables and data. Bash and Windows batch scripts are provided to create the base and extended database for MySQL and for PostgreSQL. The bash script is restsql-sdk/database/<database>/create-sakila.sh and the Windows batch script is restsql-sdk/database/<database>/create-sakila.bat, where database is either mysql or postgresql. You will need to change the user and password variables in the beginning of the script to an account that has database and table creation privileges.
Troubleshooting: The HTTP API Explorer requires access to a restsql service instance. If you have not deployed restsql to the same host/port as the SDK and to the location /restsql, then you will need to make one small tweak. Change two Javascript variables in restsql-sdk/api-explorer/index.html. Here is an example:
var restsqlHost = "http://somehost:8080"; var restsqlBaseUri = "/restsql-0.8.7";
Installing restSQL Test
Requirements: restSQL project or deployed restSQL, JDK, Ant
The test project contains component test code, artifacts and a harness that exercise the framework and the service using the Java and HTTP APIs, respectively. The Java API tests use straight JUnit tests. The HTTP API tests use an XML-driven test case harness built with JUnit. The Java API tests require the restsql project, since it relies on its build file and source code. The HTTP API tests only require a deployed restsql service.
Database: If you have not deployed the SDK yet, you will need to deploy the extended sakila database. Bash and Windows batch scripts are provided to create the base and extended database for MySQL and PostgreSQL. The bash script is restsql-test/database/<database>/create-sakila.sh and the Windows batch script is restsql-test/database/<database>/create-sakila.bat, where database is mysql or postgresql. You will need to change the user and password variables in the beginning of the script to an account that has database and table creation privileges.
Execution: The tests are executed using the Ant build file (restsql-test/build.xml). Executing the default target, all, will run everything, but you can also run test-api (Java API) or test-service (HTTP API) to run one or either half. If the service is not running in the default location, http://localhost:8080/restsql/, then the System Property, org.restsql.baseUri, must be set. For example:
ant -Dorg.restsql.baseUri=http://somehost:8080/restsql-0.8.7/ test-service-http
Test results will appear on the console. Test detail is available in restsql-test/obj/test.
Getting Started
Open http://host:port/restsql
in your browser to see all your resources.
Open http://host:port/restsql-sdk/api-explorer
to interactively experiment with the HTTP API.
Open http://host:port/restsql-sdk/doc/ref
to explore the HTTP API.
Open http://host:port/restsql-sdk/javadoc
to explore the Java API.


I need some space.
Solve the riddle to find the items that help you escape Saturn:
"Fascinating. Truly Amazing."
Copyright 2017
Julia Sheremet, Kate Trahan, Byron Chang, Jun Li


mondrian.rolap.aggregates.rule.tag
String property that is the AggRule element's tag value.
Normally, this property is not set by a user.
mondrian.rolap.aggregates.rules
String property containing the name of the file which defines the rules for recognizing an aggregate table. Can be either a resource in the Mondrian jar or a URL.
The default value is "/DefaultRules.xml", which is in the mondrian.rolap.aggmatcher package in Mondrian.jar.
Normally, this property is not set by a user.
mondrian.rolap.aggregates.ChooseByVolume
Boolean property that controls whether aggregate tables are ordered by their volume or row count.
If true, Mondrian uses the aggregate table with the smallest volume (number of rows multiplied by number of columns); if false, Mondrian uses the aggregate table with the fewest rows.
mondrian.rolap.aggregates.generateSql
Boolean property that controls whether to print the SQL code generated for aggregate tables.
If set, then as each aggregate request is processed, both the lost and collapsed dimension create and insert sql code is printed. This is for use in the CmdRunner allowing one to create aggregate table generation sql.
mondrian.rolap.aggregates.jdbcFactoryClass
Property that defines the JdbcSchema factory class which determines the list of tables and columns of a specific datasource.
@see mondrian.rolap.aggmatcher.JdbcSchemamondrian.rolap.aggregates.optimizePredicates
Boolean property that determines whether Mondrian optimizes predicates.
If true, Mondrian may retrieve a little more data than specified in MDX query and cache it for future use. For example, if you ask for data on 48 states of the United States for 3 quarters of 2011, Mondrian will round out to all 50 states and all 4 quarters. If false, Mondrian still optimizes queries that involve all members of a dimension.
mondrian.rolap.aggregates.Read
Boolean property that determines whether Mondrian should read aggregate tables.
If set to true, then Mondrian scans the database for aggregate tables. Unless mondrian.rolap.aggregates.Use is set to true, the aggregates found will not be used.
mondrian.rolap.aggregates.Use
Boolean property that controls whether Mondrian uses aggregate tables.
If true, then Mondrian uses aggregate tables. This property is queried prior to each aggregate query so that changing the value of this property dynamically (not just at startup) is meaningful.
Aggregates can be read from the database using the {@link #ReadAggregates} property but will not be used unless this property is set to true.
mondrian.rolap.star.disableCaching
mondrian.rolap.star.disableLocalSegmentCache
mondrian.expCache.enable
Rank([Product].CurrentMember,
Order([Product].MEMBERS, [Measures].[Unit Sales]))
would perform
many redundant sorts. The default is true.
mondrian.rolap.EnableRolapCubeMemberCache
Property that determines whether to cache RolapCubeMember objects, each of which associates a member of a shared hierarchy with a particular cube in which it is being used.
The default is {@code true}, that is, use a cache. If you wish to use the member cache control aspects of {@link mondrian.olap.CacheControl}, you must set this property to {@code false}.
RolapCubeMember has recently become more lightweight to construct, and we may obsolete this cache and this property.
mondrian.spi.dataSourceResolverClass
Property that defines the name of the plugin class that resolves data source names to {@link javax.sql.DataSource} objects. The class must implement the {@link mondrian.spi.DataSourceResolver} interface. If not specified, the default implementation uses JNDI to perform resolution.
Example:
mondrian.spi.dataSourceResolverClass=mondrian.spi.impl.JndiDataSourceResolver
mondrian.calc.ExpCompiler.class
Property that defines the name of the class used to compile scalar expressions.
If the value is
non-null, it is used by the ExpCompiler.Factory
to create the implementation.
To test that for all test MDX queries that all functions can handle requests for ITERABLE, LIST and MUTABLE_LIST evaluation results, use the following:
mondrian.calc.ExpCompiler.class=mondrian.olap.fun.ResultStyleCompiler
mondrian.util.MemoryMonitor.class
Property that defines the name of the class used as a memory monitor.
If the value is
non-null, it is used by the MemoryMonitorFactory
to create the implementation.
mondrian.rolap.RolapMember.PropertyValueMapFactory.class
Property that defines the name of the factory class used to create maps of member properties to their respective values.
If the value is
non-null, it is used by the PropertyValueFactory
to create the implementation. If unset,
{@link mondrian.rolap.RolapMemberBase.DefaultPropertyValueMapFactory}
will be used.
mondrian.rolap.SqlMemberSource.ValuePoolFactory.class
Property that defines the name of the class used in SqlMemberSource to pool common values.
If the value is non-null, it is used by the
SqlMemberSource.ValueMapFactory
to create the implementation. If it is not set, then
{@link mondrian.rolap.SqlMemberSource.NullValuePoolFactory}
will be used, meaning common values will not be pooled.
mondrian.olap.case.sensitive
mondrian.rolap.cellBatchSize
mondrian.util.checkCancelOrTimeoutInterval
Positive integer property that determines loop iterations number between checks for whether the current mdx query has been cancelled or timeout was exceeded.
Setting the interval too small may result in a performance degradation when reading large result sets;
setting it too high can cause a big delay between the query being marked as cancelled or timeout was exceeded and system resources associated to it being released.
mondrian.rolap.compareSiblingsByOrderKey
mondrian.olap.fun.crossjoin.optimizer.size
Property that defines when to apply the crossjoin optimization algorithm.
If a crossjoin input list's size is larger than this property's
value and the axis has the "NON EMPTY" qualifier, then
the crossjoin non-empty optimizer is applied.
Setting this value to '0' means that for all crossjoin
input lists in non-empty axes will have the optimizer applied.
On the other hand, if the value is set larger than any possible
list, say Integer.MAX_VALUE
, then the optimizer
will never be applied.
mondrian.rolap.agg.enableCacheHitCounters
Property that controls whether aggregation cache hit / miss counters will be enabled.
Note that this will affect performance due to existence of sync blocks.
@deprecated This property is no longer used, and will be removed in mondrian-4.0.mondrian.drillthrough.enable
mondrian.rolap.EnableInMemoryRollup
true
.
mondrian.rolap.nonempty
mondrian.olap.triggers.enable
Boolean property that controls whether to notify the Mondrian system when a {@link MondrianProperties property value} changes.
This allows objects dependent on Mondrian properties to react (that
is, reload), when a given property changes via, say,
MondrianProperties.instance().populate(null)
or
MondrianProperties.instance().QueryLimit.set(50)
.
mondrian.result.highCardChunkSize
mondrian.rolap.ignoreInvalidMembers
Property that defines whether non-existent member errors should be ignored during schema load. If so, the non-existent member is treated as a null member.
mondrian.rolap.ignoreInvalidMembersDuringQuery
Property that defines whether non-existent member errors should be ignored during query validation. If so, the non-existent member is treated as a null member.
mondrian.olap.agg.IgnoreMeasureForNonJoiningDimension
Property that defines whether to ignore measure when non joining dimension is in the tuple during aggregation.
If there are unrelated dimensions to a measure in context during aggregation, the measure is ignored in the evaluation context. This behaviour kicks in only if the CubeUsage for this measure has IgnoreUnrelatedDimensions attribute set to false.
For example, Gender doesn't join with [Warehouse Sales] measure.
With mondrian.olap.agg.IgnoreMeasureForNonJoiningDimension=true Warehouse Sales gets eliminated and is ignored in the aggregate value.
[Store Sales] + [Warehouse Sales]
SUM({Product.members * Gender.members}) 7,913,333.82
With mondrian.olap.agg.IgnoreMeasureForNonJoiningDimension=false Warehouse Sales with Gender All level member contributes to the aggregate value.
[Store Sales] + [Warehouse Sales]
SUM({Product.members * Gender.members}) 9,290,730.03
On a report where Gender M, F and All members exist a user will see a large aggregated value compared to the aggregated value that can be arrived at by summing up values against Gender M and F. This can be confusing to the user. This feature can be used to eliminate such a situation.
mondrian.rolap.iterationLimit
Integer property indicating the maximum number of iterations allowed when iterating over members to compute aggregates. A value of 0 (the default) indicates no limit.
mondrian.jdbcDrivers
mondrian.rolap.precache.threshold
Property which governs whether child members or members of a level are precached
when child or level members are requested within a
query expression. For example,
if an expression references two child members in the store dimension,
like { [Store].[USA].[CA], [Store].[USA].[OR] }
, precaching will
load *all* children under [USA] rather than just the 2 requested.
The threshold value is
compared against the cardinality of the level to determine
whether or not precaching should be performed. If cardinality is
lower than the threshold value Mondrian will precache. Setting
this property to 0 effectively disables precaching.
mondrian.rolap.localePropFile
String property that holds the name of the class whose resource bundle is to be used to for this schema. For example, if the class is {@code com.acme.MyResource}, mondrian will look for a resource bundle called {@code com/acme/MyResource_locale.properties} on the class path. (This property has a confusing name because in a previous release it actually held a file name.)
Used for the {@link mondrian.i18n.LocalizingDynamicSchemaProcessor}; see Internationalization for more details.
Default value is null.
log4j.configuration
Set mondrian logging information if not provided by containing application.
Examples:
log4j.configuration=file://full/path/log4j.xml
log4j.configuration=file:log4j.properties
mondrian.rolap.evaluate.MaxEvalDepth
Boolean property that defines the maximum number of passes allowable while evaluating an MDX expression.
If evaluation exceeds this depth (for example, while evaluating a very complex calculated member), Mondrian will throw an error.
mondrian.native.NativizeMaxResults
Property that controls the maximum number of results contained in a NativizeSet result set.
If the number of tuples contained in the result set exceeds this value Mondrian throws a LimitExceededDuringCrossjoin error.
mondrian.native.NativizeMinThreshold
Property that controls minimum expected cardinality required in order for NativizeSet to natively evaluate a query.
If the expected cardinality falls below this level the query is executed non-natively.
It is possible for the actual cardinality to fall below this threshold even though the expected cardinality falls above this threshold. In this case the query will be natively evaluated.
mondrian.olap.elements.NeedDimensionPrefix
Property determines if elements of dimension (levels, hierarchies, members) need to be prefixed with dimension name in MDX query.
For example when the property is true, the following queries will error out. The same queries will work when this property is set to false.
select {[M]} on 0 from sales
select {[USA]} on 0 from sales
select {[USA].[CA].[Santa Monica]} on 0 from sales
When the property is set to true, any query where elements are prefixed with dimension name as below will work
select {[Gender].[F]} on 0 from sales
select {[Customers].[Santa Monica]} on 0 from sales
Please note that this property does not govern the behaviour wherein
[Gender].[M]
is resolved into a fully qualified
[Gender].[M]
In a scenario where the schema is very large and dimensions have large number of members a MDX query that has a invalid member in it will cause mondrian to to go through all the dimensions, levels, hierarchies, members and properties trying to resolve the element name. This behavior consumes considerable time and resources on the server. Setting this property to true will make it fail fast in a scenario where it is desirable.
mondrian.olap.NullDenominatorProducesNull
Property that defines the behavior of division if the denominator evaluates to zero.
If false (the default), if a division has a non-null numerator and a null denominator, it evaluates to "Infinity", which conforms to SSAS behavior.
If true, the result is null if the denominator is null. Setting to true enables the old semantics of evaluating this to null; this does not conform to SSAS, but is useful in some applications.
mondrian.olap.NullMemberRepresentation
Property that determines how a null member value is represented in the result output.
AS 2000 shows this as empty value
AS 2005 shows this as "(null)" value
mondrian.query.limit
Maximum number of simultaneous queries the system will allow.
Oracle fails if you try to run more than the 'processes' parameter in init.ora, typically 150. The throughput of Oracle and other databases will probably reduce long before you get to their limit.
mondrian.rolap.queryTimeout
Property that defines the timeout value (in seconds) for queries. A value of 0 (the default) indicates no timeout.
mondrian.result.limit
mondrian.rolap.maxQueryThreads
Maximum number of MDX query threads per Mondrian server instance. Defaults to 20.
mondrian.rolap.shepherdThreadPollingInterval
Property that defines the interval value between polling operations performed by the RolapConnection shepherd thread. This controls query timeouts and cancellation, so a small value (a few milliseconds) is best. Setting this to a value higher than mondrian.rolap.queryTimeout will result the timeout not being enforced as expected.
Default value is "1000ms". Default time unit is "ms".
mondrian.rolap.SegmentCache
org.example.SegmentCacheImpl
where SegmentCacheImpl
is an implementation of {@link mondrian.spi.SegmentCache}.
mondrian.rolap.maxCacheThreads
Maximum number of threads per Mondrian server instance that are used to run perform operations on the external caches. Defaults to 100.
mondrian.rolap.maxSqlThreads
Maximum number of threads per Mondrian server instance that are used to run SQL queries when populating segments. Defaults to 100.
mondrian.rolap.SolveOrderMode
Valid values are "scoped" and "absolute" (the default). See {@link mondrian.olap.SolveOrderMode} for details.
mondrian.rolap.SparseSegmentValueThreshold
Property that, with {@link #SparseSegmentDensityThreshold}, determines whether to choose a sparse or dense representation when storing collections of cell values in memory.
When storing collections of cell values, Mondrian has to choose
between a sparse and a dense representation, based upon the
possible
and actual
number of values.
The density
is actual / possible
.
We use a sparse representation if
(possible -
{@link #SparseSegmentCountThreshold countThreshold}) *
{@link #SparseSegmentDensityThreshold densityThreshold} >
actual
For example, at the default values ({@link #SparseSegmentCountThreshold countThreshold} = 1000, {@link #SparseSegmentDensityThreshold} = 0.5), we use a dense representation for
Any fewer actual values, or any more possible values, and Mondrian will use a sparse representation.
mondrian.rolap.SparseSegmentDensityThreshold
mondrian.olap.SsasCompatibleNaming
Property that defines whether to enable new naming behavior.
If true, hierarchies are named [Dimension].[Hierarchy]; if false, [Dimension.Hierarchy].
mondrian.statistics.providers
Comma-separated list of classes to be used to get statistics about the number of rows in a table, or the number of distinct values in a column.
If there is a value for mondrian.statistics.providers.DATABASE, where DAtABASE is the current database name (e.g. MYSQL or ORACLE), then that property overrides.
Example:
mondrian.statistics.providers=mondrian.spi.impl.JdbcStatisticsProvider
mondrian.statistics.providers.MYSQL=mondrian.spi.impl.JdbcStatisticsProvider,mondrian.spi.impl.JdbcStatisticsProvider
This would use JDBC's statistics (via the java.sql.DatabaseMetaData.getIndexInfo method) for most databases, but for connections to a MySQL database, would use external statistics first, and fall back to JDBC statistics only if external statistics were not available.
mondrian.test.highCardDimensions
mondrian.webapp.connectString
Connect string for the webapp. (Used by the webapp only.)
To achieve access control, append say ;Role='California
manager'
to the connect string.
mondrian.webapp.deploy
Where mondrian.war will be deployed to. (Used by mondrian's build.xml ant file only.)
Example: mondrian.webapp.deploy=C:/jboss-4.0.2/server/default/deploy
mondrian.xmla.SchemaRefreshInterval
Interval at which to refresh the list of XML/A catalogs. (Usually known as the datasources.xml file.)
It is not an active process; no threads will be created. It only serves as a rate limiter. The refresh process is triggered by requests to the doPost() servlet method.
Values may have time unit suffixes such as 's' (second) or 'ms' (milliseconds). Default value is 3000 milliseconds (3 seconds). Default time unit is milliseconds.
See also {@link mondrian.xmla.impl.DynamicDatasourceXmlaServlet}.
mondrian.server.monitor.executionHistorySize
Property that defines how many previous execution instances the
Monitor
keeps in its history so that it can send the events
which happen after the fact. Setting this property too high will make the
JVM run out of memory. Setting it too low might prevent some events from
reaching the listeners of the monitor.
This property is for internal use only and should not be changed unless required. Defaults to 1,000.
mondrian.util.memoryMonitor.enable
Property that defines whether the MemoryMonitor
should
be enabled. By default it is disabled; memory monitor is not available
before Java version 1.5.
mondrian.util.memoryMonitor.percentage.threshold
Property that defines the default MemoryMonitor
percentage threshold. If enabled, when Java's memory monitor detects
that post-garbage collection is above this value, notifications are
generated.
mondrian.native.unsupported.alert
Alerting action to take in case native evaluation of a function is enabled but not supported for that function's usage in a particular query. (No alert is ever raised in cases where native evaluation would definitely have been wasted effort.)
Recognized actions:
OFF
: do nothing (default action, also used if
unrecognized action is specified)WARN
: log a warning to RolapUtil loggerERROR
: throw an instance of
{@link NativeEvaluationUnsupportedException}mondrian.rolap.groupingsets.enable
Property that defines
whether to generate SQL queries using the GROUPING SETS
construct for rollup. By default it is not enabled.
Ignored on databases which do not support the
GROUPING SETS
construct (see
{@link mondrian.spi.Dialect#supportsGroupingSets}).
mondrian.native.crossjoin.enable
mondrian.native.filter.enable
mondrian.native.nonempty.enable
If enabled some NON EMPTY set operations like member.children, level.members and member descendants will be computed in SQL.
mondrian.native.topcount.enable
mondrian.native.ExpandNonNative
mondrian.rolap.FilterChildlessSnowflakeMembers
Property that defines whether to generate joins to filter out members in a snowflake dimension that do not have any children.
If true (the default), some queries to query members of high levels snowflake dimensions will be more expensive. If false, and if there are rows in an outer snowflake table that are not referenced by a row in an inner snowflake table, then some queries will return members that have no children.
Our recommendation, for best performance, is to remove rows outer snowflake tables are not referenced by any row in an inner snowflake table, during your ETL process, and to set this property to {@code false}.
mondrian.rolap.generate.formatted.sql
Boolean property that controls pretty-print mode.
If true, the all SqlQuery SQL strings will be generated in pretty-print mode, formatted for ease of reading.
mondrian.rolap.maxConstraints
Max number of constraints in a single 'IN' SQL clause.
This value may be variant among database products and their runtime settings. Oracle, for example, gives the error "ORA-01795: maximum number of expressions in a list is 1000".
Recommended values:
mondrian.catalogURL
mondrian.foodmart.jdbcURL
Property containing the JDBC URL of the FoodMart database. The default value is to connect to an ODBC data source called "MondrianFoodMart".
To run the test suite, first load the FoodMart data set into the database of your choice. Then set the driver.classpath, mondrian.foodmart.jdbcURL and mondrian.jdbcDrivers properties, by un-commenting and modifying one of the sections below. Put the JDBC driver jar into mondrian/testlib.
Here are example property settings for various databases.
mondrian.foodmart.jdbcURL=jdbc:derby:demo/derby/foodmart
mondrian.foodmart.jdbcUser=sa
mondrian.foodmart.jdbcPassword=sa
mondrian.jdbcDrivers=org.apache.derby.jdbc.EmbeddedDriver
driver.classpath=testlib/derby.jar
mondrian.foodmart.jdbcURL=jdbc:firebirdsql:localhost/3050:/mondrian/foodmart.gdb
mondrian.jdbcDrivers=org.firebirdsql.jdbc.FBDriver
driver.classpath=/jdbc/fb/firebirdsql-full.jar
mondrian.foodmart.jdbcURL=jdbc:postgresql://localhost/foodmart?user=gpadmin&password=xxxx
mondrian.foodmart.jdbcUser=foodmart
mondrian.foodmart.jdbcPassword=foodmart
mondrian.jdbcDrivers=org.postgresql.Driver
driver.classpath=lib/postgresql-8.2-504.jdbc3.jar
mondrian.foodmart.jdbcURL=jdbc:luciddb:http://localhost
mondrian.foodmart.jdbcUser=foodmart
mondrian.jdbcDrivers=org.luciddb.jdbc.LucidDbClientDriver
driver.classpath=/path/to/luciddb/plugin/LucidDbClient.jar
oracle.home=G:/oracle/product/10.1.0/Db_1
mondrian.foodmart.jdbcURL.oracle=jdbc:oracle:thin:@//host:port/service_name
mondrian.foodmart.jdbcURL=jdbc:oracle:thin:foodmart/foodmart@//stilton:1521/orcl
mondrian.foodmart.jdbcURL=jdbc:oracle:oci8:foodmart/foodmart@orcl
mondrian.foodmart.jdbcUser=FOODMART
mondrian.foodmart.jdbcPassword=oracle
mondrian.jdbcDrivers=oracle.jdbc.OracleDriver
driver.classpath=/home/jhyde/open/mondrian/lib/ojdbc14.jar
mondrian.foodmart.jdbcURL=jdbc:odbc:MondrianFoodMart
mondrian.jdbcDrivers=sun.jdbc.odbc.JdbcOdbcDriver
driver.classpath=
mondrian.foodmart.jdbcURL=jdbc:hsqldb:demo/hsql/FoodMart
mondrian.jdbcDrivers=org.hsqldb.jdbcDriver
driver.classpath=xx
mondrian.foodmart.jdbcURL=jdbc:mysql://localhost/foodmart?user=foodmart&password=foodmart
mondrian.foodmart.jdbcURL=jdbc:mysql://localhost/foodmart
mondrian.foodmart.jdbcUser=foodmart
mondrian.foodmart.jdbcPassword=foodmart
mondrian.jdbcDrivers=com.mysql.jdbc.Driver
driver.classpath=D:/mysql-connector-3.1.12
mondrian.foodmart.jdbcURL=jdbc:com.nuodb://localhost/foodmart?schema=mondrian
mondrian.foodmart.jdbcUser=foodmart
mondrian.foodmart.jdbcPassword=foodmart
mondrian.jdbcDrivers=com.nuodb.jdbc.Driver
mondrian.foodmart.jdbcSchema=mondrian
driver.classpath=/opt/nuodb/jar/nuodbjdbc.jar
As MySQL. (Infobright uses a MySQL driver, version 5.1 and later.)
mondrian.foodmart.jdbcURL=jdbc:ingres://<IP_ADDRESS>:II7/MondrianFoodMart;LOOP=on;AUTO=multi;UID=ingres;PWD=sergni
mondrian.jdbcDrivers=com.ingres.jdbc.IngresDriver
driver.classpath=c:/ingres2006/ingres/lib/iijdbc.jar
mondrian.foodmart.jdbcURL=jdbc:postgresql://localhost/FM3
mondrian.foodmart.jdbcUser=postgres
mondrian.foodmart.jdbcPassword=pgAdmin
mondrian.jdbcDrivers=org.postgresql.Driver
mondrian.foodmart.jdbcURL=jdbc:hpt4jdbc://localhost:18650/:schema=PENTAHO;serverDataSource=PENTAHO_DataSource
mondrian.foodmart.jdbcUser=user
mondrian.foodmart.jdbcPassword=password
mondrian.jdbcDrivers=com.hp.t4jdbc.HPT4Driver
driver.classpath=/some/path/hpt4jdbc.jar
mondrian.foodmart.jdbcURL=jdbc:netezza://<IP_ADDRESS>/foodmart
mondrian.foodmart.jdbcUser=user
mondrian.foodmart.jdbcPassword=password
mondrian.jdbcDrivers=org.netezza.Driver
driver.classpath=/some/path/nzjdbc.jar
mondrian.foodmart.jdbcURL=jdbc:jtds:sybase://xxx.xxx.xxx.xxx:port/dbName
mondrian.foodmart.jdbcUser=user
mondrian.foodmart.jdbcPassword=password
mondrian.jdbcDrivers=net.sourceforge.jtds.jdbc.Driver
driver.classpath=/some/path/jtds-1.2.jar
mondrian.foodmart.jdbcURL=jdbc:teradata://DatabaseServerName/DATABASE=FoodMart
mondrian.foodmart.jdbcUser=user
mondrian.foodmart.jdbcPassword=password
mondrian.jdbcDrivers=com.ncr.teradata.TeraDriver
driver.classpath=/some/path/terajdbc/classes/terajdbc4.jar
mondrian.foodmart.jdbcURL=jdbc:vertica://xxx.xxx.xxx.xxx:port/dbName
mondrian.foodmart.jdbcUser=user
mondrian.foodmart.jdbcPassword=password
mondrian.jdbcDrivers=com.vertica.Driver
driver.classpath=/some/path/vertica.jar
mondrian.foodmart.jdbcURL=jdbc:ingres://xxx.xxx.xxx.xxxport/dbName
mondrian.foodmart.jdbcUser=user
mondrian.foodmart.jdbcPassword=password
mondrian.jdbcDrivers=com.ingres.jdbc.IngresDriver
driver.classpath=/some/path/iijdbc.jar
mondrian.test.Iterations
mondrian.test.QueryFileDirectory
mondrian.test.QueryFilePattern
querywhatever.xml
in the directory.
Example:
mondrian.test.QueryFilePattern=queryTest_fec[A-Za-z0-9_]*.xml
mondrian.test.Class
String property that determines which test class to run.
This is the name of the class. It must either implement {@code junit.framework.Test} or have a method {@code public [static] junit.framework.Test suite()}.
Example:
mondrian.test.Class=mondrian.test.FoodMartTestCase
@see #TestName
mondrian.test.connectString
Property containing the connect string which regression tests should use to connect to the database.
Format is specified in {@link Util#parseConnectString(String)}.
mondrian.test.ExpDependencies
Integer property that controls whether to test operators' dependencies, and how much time to spend doing it.
If this property is positive, Mondrian's test framework allocates an expression evaluator which evaluates each expression several times, and makes sure that the results of the expression are independent of dimensions which the expression claims to be independent of.
The default is 0.
mondrian.foodmart.jdbcPassword
mondrian.foodmart.jdbcUser
mondrian.test.Name
String property that determines which tests are run.
This is a regular expression as defined by {@link java.util.regex.Pattern}. If this property is specified, only tests whose names match the pattern in its entirety will be run.
@see #TestClassmondrian.test.random.seed
Seed for random number generator used by some of the tests.
Any value besides 0 or -1 gives deterministic behavior. The default value is 1234: most users should use this. Setting the seed to a different value can increase coverage, and therefore may uncover new bugs.
If you set the value to 0, the system will generate its own pseudo-random seed.
If you set the value to -1, Mondrian uses the next seed from an internal random-number generator. This is a little more deterministic than setting the value to 0.
mondrian.test.TimeLimit
mondrian.test.VUsers
mondrian.test.Warmup
mondrian.test.WarnIfNoPatternForDialect
Property that controls whether warning messages should be printed if a SQL comparison test does not contain expected SQL statements for the specified dialect. The tests are skipped if no expected SQL statements are found for the current dialect.
Possible values are the following:
Specific tests can overwrite the default setting. The priority is:
mondrian.xmla.drillthroughTotalCount.enable
mondrian.xmla.drillthroughMaxRows


This the netbox-nethub specification.
| URL | Scheme | Description | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| api.company.com:{port}/{app-id} | mqtt | Allows you to connect using the MQTT protocol. |
||||||||||||||||
|
||||||||||||||||||
| api.company.com:{port}/{app-id} | amqp | Allows you to connect using the AMQP protocol. |
||||||||||||||||
|
Action to sign a user up.
Multiline description of what this action does. It allows Markdown.
| Name | Title | Type | Format | Default | Description |
|---|---|---|---|---|---|
| qos | qos | integer | int32 | 1 | Quality of Service |
| retainFlag | retainFlag | boolean | false | This flag determines if the message will be saved by the broker for the specified topic as last known good value. New clients that subscribe to that topic will receive the last retained message on that topic instantly after subscribing. More on retained messages and best practices in one of the next posts. |
{
"qos": 1,
"retainFlag": false
}
| Name | Title | Type | Format | Default | Description |
|---|---|---|---|---|---|
| user | object | ||||
| full_name | string | User full name | |||
| username (Required) | username | string | User handle | ||
| signup | object | ||||
| method (Required) | string | Signup method | |||
| datetime (Required) | datetime | string | date-time | Date and Time of the message |
{
"user": {
"full_name": "string",
"username": "string"
},
"signup": {
"method": "email",
"datetime": "2019-02-01T21:53:01Z"
}
}
| Name | Title | Type | Format | Default | Description |
|---|---|---|---|---|---|
| test | array (object) | ||||
| key1 | string | ||||
| key2 | integer | ||||
| user | object | ||||
| id (Required) | id | string | User Id | ||
| full_name | string | User full name | |||
| username (Required) | username | string | User handle | ||
| signup | object | ||||
| method (Required) | string | Signup method | |||
| datetime (Required) | datetime | string | date-time | Date and Time of the message |
{
"test": [
{
"key1": "string",
"key2": 0
}
],
"user": {
"id": "string",
"full_name": "string",
"username": "string"
},
"signup": {
"method": "email",
"datetime": "2019-02-01T21:53:01Z"
}
}
| Name | Title | Type | Format | Default | Description |
|---|---|---|---|---|---|
| id | id | string | Resource identifier |
"string"
| Name | Title | Type | Format | Default | Description |
|---|---|---|---|---|---|
| username | username | string | User handle |
"string"
| Name | Title | Type | Format | Default | Description |
|---|---|---|---|---|---|
| datetime | datetime | string | date-time | Date and Time of the message |
"2019-02-01T21:53:01Z"
| Name | Title | Type | Format | Default | Description |
|---|---|---|---|---|---|
| MQTTQoSHeader | qos | integer | int32 | 1 | Quality of Service |
1
| Name | Title | Type | Format | Default | Description |
|---|---|---|---|---|---|
| MQTTRetainHeader | retainFlag | boolean | false | This flag determines if the message will be saved by the broker for the specified topic as last known good value. New clients that subscribe to that topic will receive the last retained message on that topic instantly after subscribing. More on retained messages and best practices in one of the next posts. |
false
| Name | Title | Type | Format | Default | Description |
|---|---|---|---|---|---|
| id (Required) | id | string | User Id | ||
| full_name | string | User full name | |||
| username (Required) | username | string | User handle |
{
"id": "string",
"full_name": "string",
"username": "string"
}
| Name | Title | Type | Format | Default | Description |
|---|---|---|---|---|---|
| full_name | string | User full name | |||
| username (Required) | username | string | User handle |
{
"full_name": "string",
"username": "string"
}
| Name | Title | Type | Format | Default | Description |
|---|---|---|---|---|---|
| method (Required) | string | Signup method | |||
| datetime (Required) | datetime | string | date-time | Date and Time of the message |
{
"method": "email",
"datetime": "2019-02-01T21:53:01Z"
}


Places you've been
Places you've been
Where have you been:
Place
Country
Season
Landmarks
Notes
Add
PLaces You've Been:
Place:
Country:
Season:
Landmark:
Notes:


RPMBUILD(8) RPMBUILD(8) NAME rpmbuild - Build RPM Package(s) SYNOPSIS BUILDING PACKAGES: rpmbuild {-ba|-bb|-bp|-bc|-bi|-bl|-bs} [rpmbuild-options] SPECFILE ... rpmbuild {-ta|-tb|-tp|-tc|-ti|-tl|-ts} [rpmbuild-options] TARBALL ... rpmbuild {--rebuild|--recompile} SOURCEPKG ... MISCELLANEOUS: rpmbuild --showrc rpmbuild-options [--buildroot DIRECTORY] [--clean] [--nobuild] [--rmsource] [--rmspec] [--short-circuit] [--target PLATFORM] DESCRIPTION rpmbuild is used to build both binary and source software packages. A package consists of an archive of files and meta-data used to install and erase the archive files. The meta-data includes helper scripts, file attributes, and descriptive information about the package. Packages come in two varieties: binary packages, used to encapsulate software to be installed, and source packages, containing the source code and recipe necessary to produce binary packages. One of the following basic modes must be selected: Build Package, Build Package from Tarball, Recompile Package, Show Configuration. GENERAL OPTIONS These options can be used in all the different modes. -?, --help Print a longer usage message then normal. --version Print a single line containing the version number of rpm being used. --quiet Print as little as possible - normally only error messages will be displayed. -v Print verbose information - normally routine progress messages will be displayed. -vv Print lots of ugly debugging information. --rcfile FILELIST Each of the files in the colon separated FILELIST is read sequen‐ tially by rpm for configuration information. Only the first file in the list must exist, and tildes will be expanded to the value of $HOME. The default FILELIST is /usr/lib/rpm/rpmrc:/usr/lib/rpm/redhat/rpmrc:/etc/rpmrc:~/.rpmrc. --pipe CMD Pipes the output of rpm to the command CMD. --dbpath DIRECTORY Use the database in DIRECTORY rather than the default path /var/lib/rpm --root DIRECTORY Use the file system tree rooted at DIRECTORY for all operations. Note that this means the database within DIRECTORY will be used for dependency checks and any scriptlet(s) (e.g. %post if installing, or %prep if building, a package) will be run after a chroot(2) to DIRECTORY. BUILD OPTIONS The general form of an rpm build command is rpmbuild -bSTAGE|-tSTAGE [ rpmbuild-options ] FILE ... The argument used is -b if a spec file is being used to build the package and -t if rpmbuild should look inside of a (possibly compressed) tar file for the spec file to use. After the first argument, the next character (STAGE) specifies the stages of building and packaging to be done and is one of: -ba Build binary and source packages (after doing the %prep, %build, and %install stages). -bb Build a binary package (after doing the %prep, %build, and %install stages). -bp Executes the "%prep" stage from the spec file. Normally this involves unpacking the sources and applying any patches. -bc Do the "%build" stage from the spec file (after doing the %prep stage). This generally involves the equivalent of a "make". -bi Do the "%install" stage from the spec file (after doing the %prep and %build stages). This generally involves the equivalent of a "make install". -bl Do a "list check". The "%files" section from the spec file is macro expanded, and checks are made to verify that each file exists. -bs Build just the source package. The following options may also be used: --buildroot DIRECTORY When building a package, override the BuildRoot tag with directory DIRECTORY. --clean Remove the build tree after the packages are made. --nobuild Do not execute any build stages. Useful for testing out spec files. --nodeps Do not verify build dependencies. --rmsource Remove the sources after the build (may also be used standalone, e.g. "rpmbuild --rmsource foo.spec"). --rmspec Remove the spec file after the build (may also be used standalone, eg. "rpmbuild --rmspec foo.spec"). --short-circuit Skip straight to specified stage (i.e., skip all stages leading up to the specified stage). Only valid with -bc, -bi, and -bb. Use‐ ful for local testing only. Packages built this way will be marked with an unsatisfiable dependency to prevent their acciden‐ tal use. --target PLATFORM When building the package, interpret PLATFORM as arch-vendor-os and set the macros %_target, %_target_cpu, and %_target_os accord‐ ingly. REBUILD AND RECOMPILE OPTIONS There are two other ways to invoke building with rpm: rpmbuild --rebuild|--recompile SOURCEPKG ... When invoked this way, rpmbuild installs the named source package, and does a prep, compile and install. In addition, --rebuild builds a new binary package. When the build has completed, the build directory is removed (as in --clean) and the the sources and spec file for the package are removed. SHOWRC The command rpmbuild --showrc shows the values rpmbuild will use for all of the options are currently set in rpmrc and macros configuration file(s). FILES rpmrc Configuration /usr/lib/rpm/rpmrc /usr/lib/rpm/redhat/rpmrc /etc/rpmrc ~/.rpmrc Macro Configuration /usr/lib/rpm/macros /usr/lib/rpm/redhat/macros /etc/rpm/macros ~/.rpmmacros Temporary /var/tmp/rpm* SEE ALSO gendiff(1), popt(3), rpm(8), rpm2cpio(8), rpmkeys(8) rpmspec(8), rpmsign(8), rpmbuild --help - as rpm supports customizing the options via popt aliases it's impossible to guarantee that what's described in the manual matches what's available. http://www.rpm.org/ <URL:http://www.rpm.org/> AUTHORS Marc Ewing<EMAIL_ADDRESS>Jeff Johnson<EMAIL_ADDRESS>Erik Troan<EMAIL_ADDRESS>Red Hat, Inc. 09 June 2002 RPMBUILD(8)


suitable white areas mustard species climate rapeseed change crops area cultivation production model Mediterranean crop distribution current potential Fig emission Europe RCP. biofuel using {border-style biodiesel climatic different future land px;} #ffffff;} data GCMs currently increase suitability European models oil projection scenarios used Climate Energy alba environmental global native plant species, (-.) (.) Sinapis countries energy high predicted seed Basin Global alternative conditions gas values variables (i.e., Brassica important indicate oilseed projections relative seeds temperature Central Europe. However, Plant bioenergy cultivated development especially (Bio) Crop Europe, GAEZ SDM Table annual ecological greenhouse number presence/absence px; scenario, scenarios. species. studies threshold {font-family Bio, Biofuels Science Sciences Southern ]). based content decrease distributions effects font-size impact lipid negative new particular, predictions present production. projected validation warming Area Jaime Rapeseed Research Science. Western agronomic aridity climatically considered crops, double; expand fitted lost natural performance pixel showed unsuitable use (eds AUC According Bio Crops Environmental Iberian Jaén, Materials TSS Thus, according accordingly, acid adapted analysis available biofuels border-color border-width change. coast compared conditions. crops. ensemble expected fatty forecast grow increases influenced mainly maps mustard, occurrence precipitation predicting regression soil solid; southern temperate value {font-style {font-weight (see Agriculture Basin. Biogeography. Biology Biology. CMIP Change Eastern Ecography. Ecological Ecology Engineering Evaluation Formal GLM Investigation Life Methodology Oil Peninsula, Power Rafael Recent Rosenzweig Smith Technology Thuiller Universidad University White Writing better bold canola case century circulation coast, commonly concentration courier; em; emissions evolution extent food general ha. identify impacts increased localities napus need observed obtained oilseeds optimum overlap positive presence pt;} random rapeseed, recent reduction relatively requirements research response results retract scale source strong study study, temperatures total training water yield


Lesson 2 - The basics of ECS
The Entity Component System (ECS) is an architectural pattern that is particularly suited to video game development. In this article we'll implement a basic example with multiple systems and components.
What is ECS?
In classic Object-oriented programming, a computer program is designed around objects, which contain all the data and logic needed for their operation. These objects are usually defined through classes, which serve as templates for creating many objects of the same type. To enable code reuse, classes may inherit from each other, taking on all the attributes and functionality of their parent class. However, this can lead to brittle design and deep levels of inheritance, making it difficult to reason about the inner workings of classes or extend them without risking breaking functionality somewhere else. In addition, multiple inheritance is very complex, making lateral code reuse difficult.
ECS takes a different approach from OOP. In ECS, all game objects are entities which are made up of multiple components attached to them that define their data and functionality. The behavior of these components is managed by various systems that interact in various ways to implement the rules of the video game. This way, we can attach components to entities at will, allowing us to create unique objects at runtime. In addition, the components are loosely coupled, making them easy to reason about, reuse, and modify as they only have a small amount of functionality built in.
A basic example
Let's see how ECS works in action.
We're going to make a simple "game" that consists of a colored square in a black background. The square should


{{>includes/header}}
Reinstate Entry
1. Check details
Debtor details
Forename
Claire
Surname
Reeves
Occupation
Address
20 Kendell Street
Whittlesey
Peterborough
Northamptonshire
PE12 3DX
Official details
Name
Peterborough County Court
Reference
998 of 2016
{{>includes/footer}}


An enthusiastic computer science student looking for solving everyday life problems with creative and innovative solutions. Interested in : Computer Vision • Image Processing • Machine Learning • Design
I am working under Crime Detection module of Smart City Technology. Currently the work is in its initial phase.
Generally professors spend one fifth of lecture time in taking attendance. This adds up to a huge time loss if we consider the whole semester. The solution provided here is simple and fast. The professor takes a picture of class using his smart phone and quick attendance takes the attendance for him/her. Basically it is an application of Computer Vision, Machine Learning and Android App development.
2048 game built using PyGame for Linux. It was a part of open source contribution campaign by students of IIT KGP called KWoC - Kharagpur Winter of Code..
Reviews and opinions are vital to Hotels. I have made a supervised learning model to classify hotel reviews as fake or genuine. Click here for the problem statement.
Making an app for Monday Morning - The official student media body of NITR.
 In fact I am a member of the institute's cricket team. I also play Table tennis in my free time. I love to click photographs and capture beautiful landscapes. I love to travel different places and play FIFA with my friends.
From my childhood I was attracted towards Graphic Designs. I learnt graphics designing and do it in my free time now. I also make posters and graphics for different clubs and events at NIT Rourkela. I always get amazed by any creative video, I am looking forward to learn how to work with videos also.


A Tale of Two Systems
The Early Days.
The Idea for Html was first thought up on a cold winters day by Tim Berners-Lee, a physicist, who at the time was doing contract work CERN (The European Orginization for Nuclear research). Berners-Lee prototyed Enquire, which was a system for CERN researchers to use and share documents. 9 years later in 1989 Tim wrote a memo which proposed an internet-based hypertext system and hence HTML was born.
5 years later CSS was born. The brain child of Håkon Wium Lie. Although there were several other style sheet languages proposed at the time CSS won the day and soon became the norm.
A Match Made in Heaven.
Html really knew the nuts and bolts of putting pen to digital paper and had long been used as the staple to get information up onto the web. He was however exceedingly boring and it was soon noted that users struggled to stay awake.
CSS on the other hand brought brightness, colour and harmony to the web but didnt have the methodical nature to build pages from the ground up.
A decision was made to combine forces. Html would get the ball rolling by making a structual frame which would then be passed over to css to make it more appealing to the eye. Sort of like building a Car. Html is the engineer thats creates a usable mode of transport whilst CSS is like the designer that adds the style and flair whilst also making it more user friendly.
Whats Next.
Html and CSS have been working solidly together now for almost 30 years. Although technology has increased significantly in that time the core of what these two dynamoes do remains the same. Combine their unique attributes to make beautiful music together.


Post Archives childhood experiences life tech web development childhood Day Dreamer — March 21, 2019 Return to top ↑ experiences The Early Adventures of JavaScript — March 28, 2019 Day Dreamer — March 21, 2019 Return to top ↑ life Day Dreamer — March 21, 2019 Return to top ↑ tech The Early Adventures of JavaScript — March 28, 2019 Return to top ↑ web development The Early Adventures of JavaScript — March 28, 2019 Return to top ↑


Home
About
Get Involved
Contact
Latest News
Fixtures and Results
Date
Team
Points
Score
Points
Team
Leicester 23/04/2017
Colchester Eagles
15
15-10
10
Ipswich Mavericks
London Storm
20
20-10
10
Colchester Eagles
Colchester 24/04/2017
Colchester Eagles
15
15-10
10
Ipswich Igloos
2016/2017 Season
Fixtures & Results
Overall Standing
2015/2016 Season
Fixtures & Results
Overall Standing
<


RAISING CAIN A review in the public domain by The Phantom<EMAIL_ADDRESS>Although the Phantom attempts to get his reviews written as soon after he sees a film as possible (for otherwise real life and the Phantom's day job have an unfortunate habit of intruding), some films require a little thought before the Phantom can dash off a 1500-word opinion with any hope of accuracy. (By way of contrast, the Phantom's review of BASIC INSTINCT practically wrote itself on the subway ride home; even so, the Phantom has a feeling that he put more time and effort into his review than Joe Eszterhas put into his ludicrous screenplay.)
This is the case with RAISING CAIN, the latest film by Brian De Palma and one of the best thrillers of the year. Only, as the credits rolled and the Phantom left the theater, he felt that RAISING CAIN really wasn't all that good -- that perhaps it had been over hyped, or that perhaps De Palma was starting to play it safe now that he's "mainstream." Certainly it reminded the Phantom more than a little of De Palma's DRESSED TO KILL, and put side by side with that classic, RAISING CAIN doesn't really measure up.
But then it occurred to the Phantom that he was about to review the wrong film (no, he hadn't accidentlly walked into the horrifying, special effects-bloated DEATH BECOMES HER playing in the theater next door; although some tedious Hollywood literal-mindedness occasionally seeped through the wall, and although the sound of 200 frustrated and patronized adults shifting irritably in their seats was occasionally audible, this only served to keep the Phantom in his own seat for the duration of the film, even though he was at times tempted to duck his head in and discover just exactly how many expensive special effects a comedy needs to be really, really funny). For most of RAISING CAIN, the Phantom had unconsciously kept a number De Palma's early works in mind, and he'd made the mistake of seeing RAISING CAIN only by way of comparison to them.
Yet this is exactly the wrong way to see the film, precisely because De Palma hasn't made DRESSED TO KILL II. Once the Phantom realized this, he also realized how much of RAISING CAIN he'd really missed -- while searching for the parallels between De Palma's latest work and some of the films that made his reputation as one of our finest directors (and perhaps the best horror filmmaker working today), the Phantom wasn't really attending to the film De Palma had actually made.
Instead of a rehashed, more-of-the-same Hitchcock homage (a la DRESSED TO KILL, BLOW OUT, or BODY DOUBLE), De Palma has, with RAISING CAIN, pretty much said "To hell with it -- let's get rid of the story and the characters altogether, and see what we have left to work with." The result is a patently preposterous plot peopled with a parade of poorly drawn, two-dimensional characters -- and pretty much nothing else. (Please, no letters. The Phantom meant to do that, and he's truly sorry.)
Nothing else, that is, except the complete freedom to indulge in the most lyrical, fluid, gorgeous filmmaking of the year. Nothing anyone in RAISING CAIN does makes much sense; there are plot holes at every twist and turn of an outlandishly twisty and turny plot; characterization is established solely through cliche and lazy, easy tricks of the screenplay; and each individual scene in the film could easily have been lifted from one of De Palma's prior efforts.
But to focus on this is to miss the point -- something not a few other reviewers seem to have done. De Palma didn't set out to make yet another "Brian De Palma Film (pat. pending)" -- if that's what you're looking for, the Phantom suggests that you instead rent one of his previous efforts; with the single exception of the bewilderingly bad BONFIRE OF THE VANITIES, all are worth your time and your attention.
As is the very different RAISING CAIN. On the surface, CAIN is about Dr. Carter Nix who -- in the words of Janet Maslin -- has at least three more personalities than he really needs. While Carter is the perfect husband and father, Cain -- one of his wicked alter egos -- occasionally makes an appearance and works enough evil to keep the plot moving along. As Carter/Cain, John Lithgow is perfectly cast and remains completely in control of his role(s) and the near-constant screen time he gets throughout the film. He is literally at the center of this very warped fantasy, and the Phantom strongly suspects that a lesser actor might have taken the opportunity to put in a truly over-the-top and egotistical performance that would ignore De Palma's careful balancing act. One of the things that so distinguishes CAIN from a multitude of multiple personality films is that it is not at all a Jekyll and Hyde film. Instead, De Palma has crafted a much more subtle vision of a man who is helplessly out of control -- of his actions as well as his very being.
In a perfectly turned parallel to this, Lolita Davidovich plays Carter's wife Jenny, a woman who -- like many of the women in De Palma's films -- seems more than a little unfocused. She has the same dream-like quality about her that Angie Dickinson had in DRESSED TO KILL, and her quest for a better understanding of who she is and what she really wants both drives the plot and underscores Carter's own struggles to remain the thoughtful husband and devoted father. In fact, picture for a moment the opening scene in DRESSED TO KILL and you'll have a pretty good idea how most of RAISING CAIN plays out: using Jenny as the catalyst, De Palma brings us into a world where it's as difficult for us to sort out what is real and what is dream as it is for Carter. Are we seeing what's really happening? What someone is dreaming or remembering? Or what someone is fantasizing about? At no point in RAISING CAIN does De Palma ever give us the sort of solid ground that we've been so conditioned to expect from a Hollywood film -- and for that the Phantom is profoundly grateful. RAISING CAIN is a lot of things, but literal-minded it is not, and that is all too rare in American film these days -- even in horror films and thrillers, where one might reasonably expect the line between reality and nightmare to become blurred.
But Hollywood (and therefore American audiences) are rarely comfortable with anything other than obvious plot twists and predictable conclusions; we like our fantasies nice and tidy by the time the credits roll, and woe be it to the filmmaker who goes too far out on a limb. Though De Palma has cautiously (and sometimes not so cautiously) tested that limb before, this time he's way out on the end and ready to take the whole tree down with him. Thus, although we never have the opportunity to identify with the story's protagonist (in fact, RAISING CAIN doesn't really have one), De Palma allows us to do something even better, something even more rare: for two hours he allows us to *become* Carter.
It's a scary ride, and one that frequently treats logic as if it were a four-letter word. On the surface we can't help but be aware of De Palma's utter disregard for an original plot, or even an unoriginal one that makes sense. But down below, where De Palma is really working this time, is also where all the fun is; the trick is to put aside your prejudices and your preconditioned desires for a simple and understandable plot, sit back, and enjoy the ride. Once you stop worrying about whether something in RAISING CAIN could "really" have happened, you'll see a much different film emerge, one which is comprised of a series of overlapping scenarios each of which is filmed and acted to perfection; each of which makes sense on its own; but none of which really fit together very well. (It's as if De Palma has given us an IQ test consisting of various shapes and a box with similarly-shaped cutouts -- but the only way to pass the test is to use a hammer and steer clear of the ever-seductive cookie-cutter correctness that has made so many mainstream films so dreadfully dull.)
Inside the box are scenes filmed so as to turn lesser directors green with envy; with the possible exceptions of Stanley Kubrick, Ridley Scott, Spike Lee and the Coen brothers, no one makes films that look this good. RAISING CAIN is exciting on a fundamental, visual level in a way that very few other mainstream films are; regardless of what you think about it, the Phantom is willing to bet that you'll remember vividly many of the scenes in RAISING CAIN long after you've left the theater.
Also inside the box is a sort of free-floating sense of dread that -- like De Palma's startlingly photography -- is similarly absent from most of the run-of-the-mill thrillers churned out by Hollywood hacks each year. It's a disquieting sense of menace that we've felt before in bits of De Palma's other films (in the outdoor restaurant scene in THE FURY; in the lead-up to the climactic scene in CARRIE; in Angie Dickinson's silent tour of an art museum in DRESSED TO KILL), but here it engulfs the film whole; without a well-drawn and logical plot to keep it outside of our focus of attention, it creeps up on us just minutes into the film and never really goes away. We just don't know what's going to happen next in RAISING CAIN, and De Palma ably capitalizes on our sense of unease as he piles on scene after unlikely scene of terror and suspense. It's the end of CARRIE writ large[*]: there are so many opportunities for a hand to spring out of a fresh grave that we find we must either reject the film entirely or surrender ourselves to a two hour-long nightmare.
Having achieved his aim through guerrilla filmmaking, De Palma leaves out the gore this time; he also leaves out the in-jokes (no drills, phans) and the incessant references to Hitchcock. Some reviewers have remarked that CAIN is nothing but a reworking of PSYCHO, but they're misguided. De Palma did PSYCHO in DRESSED TO KILL, and while he uses elements of it to establish the framework of RAISING CAIN, he's obviously not out to do another Hitchcock homage.
RAISING CAIN has more in common with the equally dreamlike JACOB'S LADDER than it does with any of Hitchcock's films (with the possible exception of THE BIRDS); the Phantom only hopes that CAIN does better at the box office. Despite a pedestrian ending that in ten minutes attempts to wrap up the visual nightmare of the previous 120, audiences found JACOB'S LADDER to be too joyously untethered from reality for their made-in-Hollywood tastes. It would be a real shame if RAISING CAIN suffered a similar fate at the box office because too many people dissuaded their friends from attending a film that "doesn't make sense" or that doesn't have a neat and predictable ending. Yet given the immense popularity of films like BASIC INSTINCT -- films that are unrelentingly stupid but that are literal-minded to the core -- the Phantom fears that audiences will react to CAIN much the way they did to De Palma's CASUALTIES OF WAR, itself a casualty of our need for films to take us away from real life, yet allow us to keep our feet firmly planted on the ground and our minds firmly reassured by pat endings and ever-clear lines between reality and fantasy.
 In the past he's attempted to dress up his dark visions with Hitchcock's respectable clothing; now he's done away with the window dressing and let us come along with him on a very naked and effective exploration of evil, of the blurry line between reality and illusion, and of his own singular vision of terror. RAISING CAIN is without a doubt one of De Palma's best films; if nothing else, it's the most unrestrained and inventive film he's made in years.
No thumbs up or down -- but if you're a horror phan, or if you're in the mood for a thriller that thrills on so many different levels, you owe it to yourself to see just what a master of the art can do in this genre. More than worth full price: it's worth seeing twice.
[*] N.B.: Please, no letters. The Phantom promises not to use the phrase "writ large" ever again; chalk it up to a Modern American Film 101 flashback and to the Phantom's desire to give his spell-checker a workout. Webster's New World notes that when used this way, "writ" is "Rare or Archaic" -- either way, a perfect reflection of the Phantom's own writing style.
: The Phantom<EMAIL_ADDRESS>: cmcl2!panix!sbb
.
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


3 ways to use Uncertainty to your Advantage
Thousands of years ago, Once the Buddha achieved his enlightenment and started teaching to the public , one of his first messages was :
"There is Suffering"
This simple statement forms the crux of all Buddhist traditions.
"There is Suffering"
Understanding of this "Suffering" is not meant to put one into despair or sorrow , but rather it is truth (and a powerful truth at that) which indicates that everything is eternally changing. The whole cosmos is in constant flux. This flux gives rise to Uncertainty, Transientness and Impermanence (Anicca).
As we look around us , every single thing we regard as tangible, concrete and real is nothing but clumps of matter , shaped and made into different , sizes and forms, the wooden furniture was once a living tree which was once a seed in the ground. particles accumulate and de-accumulate to give rise to the diversity of forms percieved in the physical world.
Our very bodies change each and every day and each and every minute, the processes of breathing, digestion , heartbeat and circulation go on beneath our level of consciousness.
But Dukkha(suffering) caused by Anicca(Uncertainty/Impermanence) are not depressive and nihilistic philosophies as one might think. In fact it's quite the opposite , it is resisting change can lead us to depression and stress and gloom in the long run.
Understanding and applying the knowledge of Anicca can lead to a more stress free and overall efficient daily life.
1: Being aware of change helps cope with (and even enjoy) routine
I tend to feel a large part of the reason why we feel so bored as a species , and constantly look for some form of stimuli or another whether, physical , emotional or intellectual is because we have become numb to the eternal changes happening around us.
The Truth is no single moment is the same as the next.
When we start awakening to this truth , each moment is truly special. We start exploring the world through the eyes of innocence. Start questioning every deeply held belief , no matter how sacred, and take nothing for granted. Even our questioning is not directed towards a conclusion , as both the questioner and questioned are constantly in flux.
From this context , there is no such thing as a monotonous routine, even if you have a "typical" job , a "typical" home ,and "typical" family ,every day of your life may appear "similar" but no two moments are the same.
How accurately we perceive change and reality determines our frequency of vibration.
2: Being aware of change enables greater groundedness
One of my recent favourite anecdotal exchanges between Bodhidharma , the originator of Zen and his disciples:
Bodhidharma asked, "Can each of you say something to demonstrate your understanding?"
Dao Fu stepped forward and said, "It is not bound by words and phrases, nor is it separate from words and phrases. This is the function of the Tao."
Bodhidharma: "You have attained my skin."
The nun Zong Chi stepped up and said, "It is like a glorious glimpse of the realm of Akshobhya Buddha. Seen once, it need not be seen again."
Bodhidharma; "You have attained my flesh."
Dao Yu said, "The four elements are all empty. The five skandhas are without actual existence. Not a single dharma can be grasped."
Bodhidharma: "You have attained my bones."
Finally, Huike came forth, bowed deeply in silence and stood up straight.
Bodhidharma said, "You have attained my marrow."
This unnamed , ungraspable , imperceptible , unimaginable and eternally mysterious emptiness around which the dance of the cosmos happens is Shunya.
The mind has a tendency to immediately attach labels to things and experiences.But in order to have a deeper understanding we must empty our cup.
3: Acknowledging change makes us more compassionate
Accepting that none of us will be hanging around forever motivates us to be kinder and more compassionate to our fellow beings who are perhaps also going through rough changes of their own
This compassion is referred to as karuna in the Buddhist tradition.
This Karuna again enhances the clarity with which we perceive the world which again leads to more compassion which leads to greater awareness , which leads to more compassion... you get the drift , (or do you?)
This virtuous cycle can help us see , relate with and love people the way they are , without necessary imposing our conditions/expectations on them.
Thanks for taking the time out to read this ,and hope you can apply these principles to engage with change and go with the flow rather than resisting or running away.


| School of Public Health, The University of Hong Kong |<PHONE_NUMBER>3 |
| L5-14, 5/F, Laboratory Block, Faculty of Medicine Building |<EMAIL_ADDRESS>|
| 22 Sassoon Road, Pokfulam, Hong Kong | https://guangchuangyu.github.io |
Bioinformatics
BMC Bioinformatics
Computational Biology and Chemistry
Current Bioinformatics
Gastroenterology Research and Practice
Molecular BioSystems
R Journal
R
Unix
Other


DECEMBER 3
(1506-1552). Born
in
ENTRANCE ANTIPHON
I will praise
you, Lord, among the nations; I will tell of your name to my kin.
COLLECT
O God, who
through the preaching of Saint Francis Xavier won many peoples to yourself,
grant that the hearts of the faithful may burn with the same zeal for the faith
and that
PRAYER OVER THE OFFERINGS
Receive, O
Lord, these offerings we bring you in commemoration of Saint Francis Xavier,
and grant that, as he journeyed to distant lands out of longing for the
salvation of souls, so we, too, bearing effective witness to the Gospel, may,
with our brothers and sisters, eagerly hasten towards you. Through Christ our Lord.
COMMUNION ANTIPHON
What I say to
you in the darkness speak in the light, says the Lord, what you hear whispered,
proclaim on the housetops.
PRAYER AFTER COMMUNION
May your
mysteries, O God, kindle in us that fire of charity with which Saint Francis
Xavier burned for the salvation of souls, so that, walking ever more worthily
in our vocation, we may obtain with him the reward you promise to those who
labour well in your harvest. Through Christ our Lord.


The Force
About
Contact
Account
Sign out
(current)
Select Semester
Winter
Fall
Modify Schedule
Add Classes
Add Unavailabilities
M
T
W
T
F
Add


Text To Speech
Based on NVIDIA Tacotron2 and WaveGlow TTS models.
{% if voice %}
Result
{% if use_localhost %} {% else %} {% endif %}Took {{gen_time}} seconds to generate {{gen_dur}} seconds of audio (generated {{total_specs}} total spectrograms from {{n_passes}} passes)
Average score was {{avg_score}}
- Tacotron2 and WaveGlow models trained and modified by Cookie
- Website written/adapted from Verssae by Cookie
- Initial Dataset Processing and technical help from Twibot
- Clipper (and many anons) who labeled, cleaned, sourced and curated the amazing My Little Pony Dataset used.
- Synthbot who is much better at maths than me.
- Synthbot who hosts phonetically aligned and cleaned up copies of the Dataset for anyone to use.