{% extends "tutorial.html" %} {% block headauthor %}Boris Smus{% endblock %} {% block headtitle %}Improving HTML5 Canvas Performance{% endblock %} {% block pagetitle %}Improving HTML5 Canvas Performance{% endblock %} {% block pagebreadcrumb %}Improving HTML5 Canvas Performance{% endblock %} {% block date %}August 16, 2011{% endblock %} {% block head %} {% endblock %} {% block browsersupport %} Operasupported Internet Explorerunsupported Safarisupported Firefoxsupported Chromesupported {% endblock %} {% block iscompatible %} return !!Modernizr.canvas {% endblock %} {% block html5badge %} {% endblock %} {% block content %}
HTML5 canvas, which started as an experiment from Apple, is the most widely supported standard for 2D immediate mode graphics on the web. Many developers now rely on it for a wide variety of multimedia projects, visualizations, and games. However, as the applications we build increase in complexity, developers inadvertently hit the performance wall.
There’s a lot of disconnected wisdom about optimizing canvas performance. This article aims to consolidate some of this body into a more readily digestible resource for developers. This article includes fundamental optimizations that apply to all computer graphics environments as well as canvas-specific techniques that are subject to change as canvas implementations improve. In particular, as browser vendors implement canvas GPU acceleration, some of the outlined performance techniques discussed will likely become less impactful. This will be noted where appropriate.
Note that this article does not go into usage of HTML5 canvas. For that, check out these canvas related articles on HTML5Rocks, this chapter on the Dive into HTML5 site or the MDN Canvas tutorial.
To address the quickly changing world of HTML5 canvas, JSPerf (jsperf.com) tests verify that every proposed optimization still works. JSPerf is a web application that allows developers to write JavaScript performance tests. Each test focuses on a result that you’re trying to achieve (for example, clearing the canvas), and includes multiple approaches that achieve the same result. JSPerf runs each approach as many times as possible over a short time period and gives a statistically meaningful number of iterations per second. Higher scores are always better!
Visitors to a JSPerf performance test page can run the test on their browser, and let JSPerf store the normalized test results on Browserscope (browserscope.org). Because the optimization techniques in this article are backed up by a JSPerf result, you can return to see up-to-date information about whether or not the technique still applies. I’ve written a small helper application that renders these results as graphs, embedded throughout this article.
All of the performance results in this article are keyed on the
browser version. This turns out to be a limitation, since we don't know what OS
the browser was running on, or even more importantly, whether or not HTML5
canvas was hardware accelerated when the performance test ran. You can find out
if Chrome's HTML5 canvas is hardware accelerated by visiting
about:gpu
in the address bar.
If you’re re-drawing similar primitives to the screen across multiple frames, as is often the case when writing a game, you can make large performance gains by pre-rendering large parts of the scene. Pre-rendering means using a separate off-screen canvas (or canvases) on which to render temporary images, and then rendering the off-screen canvases back onto the visible one.
For example, suppose you’re redrawing Mario running at 60 frames a second. You could either redraw his hat, moustache, and “M” at each frame, or pre-render Mario before running the animation.
no pre-rendering:
// canvas, context are defined
function render() {
drawMario(context);
requestAnimationFrame(render);
}
pre-rendering:
var m_canvas = document.createElement('canvas');
m_canvas.width = 64;
m_canvas.height = 64;
var m_context = m_canvas.getContext(‘2d’);
drawMario(m_context);
function render() {
context.drawImage(m_canvas, 0, 0);
requestAnimationFrame(render);
}
Note the use of requestAnimationFrame
, which is discussed in more detail
in a later section. The following graph illustrates the performance
benefits of using pre-rendering (from this
jsperf):
This technique is especially effective when the rendering operation
(drawMario
in the above example) is expensive. A good example of this is
text rendering, which is a very expensive operation. Here is the sort of
dramatic performance boost you can expect from pre-rendering this
operation (from this jsperf):
However, observe that in the above example, the poor performance of the “pre-rendered loose” test case. When pre-rendering, it’s important to make sure that your temporary canvas fits snugly around the image you are drawing, otherwise the performance gain of off-screen rendering is counterweighted by the performance loss of copying one large canvas onto another (which varies as a function of source target size). A snug canvas in the above test is simply smaller:
can2.width = 100;
can2.height = 40;
Compared to the loose one that yields poorer performance:
can3.width = 300;
can3.height = 100;
Since drawing is an expensive operation, it’s more efficient to load the drawing state machine with a long set of commands, and then have it dump them all onto the video buffer.
For example, when drawing multiple lines, it's more efficient to create one path with all the lines in it and draw it with a single draw call. In other words, rather than drawing separate lines:
for (var i = 0; i < points.length - 1; i++) {
var p1 = points[i];
var p2 = points[i+1];
context.beginPath();
context.moveTo(p1.x, p1.y);
context.lineTo(p2.x, p2.y);
context.stroke();
}
We get better performance from drawing a single polyline:
context.beginPath();
for (var i = 0; i < points.length - 1; i++) {
var p1 = points[i];
var p2 = points[i+1];
context.moveTo(p1.x, p1.y);
context.lineTo(p2.x, p2.y);
}
context.stroke();
This applies to the world of HTML5 canvas as well. When drawing a complex path, for example, it’s better to put all of the points into the path, rather than rendering the segments separately (jsperf).
Note, however, that with Canvas, there’s an important exception to this rule: if the primitives involved in drawing the desired object have small bounding boxes (for example, horizontal and vertical lines), it may actually be more efficient to render them separately (jsperf):
The HTML5 canvas element is implemented on top of a state machine that tracks things like fill and stroke styles, as well as previous points that make up the current path. When trying to optimize graphics performance, it’s tempting to focus solely on the graphics rendering. However, manipulating the state machine can also incur a performance overhead.
If you use multiple fill colors to render a scene, for example, it’s cheaper to render by color rather than by placement on the canvas. To render a pinstripe pattern, you could render a stripe, change colors, render the next stripe, etc:
for (var i = 0; i < STRIPES; i++) {
context.fillStyle = (i % 2 ? COLOR1 : COLOR2);
context.fillRect(i * GAP, 0, GAP, 480);
}
Or render all odd stripes and then all even stripes:
context.fillStyle = COLOR1;
for (var i = 0; i < STRIPES/2; i++) {
context.fillRect((i*2) * GAP, 0, GAP, 480);
}
context.fillStyle = COLOR2;
for (var i = 0; i < STRIPES/2; i++) {
context.fillRect((i*2+1) * GAP, 0, GAP, 480);
}
The following performance test draws an interlaced pinstripe pattern using the two approaches (jsperf):
As expected, the interlaced approach is slower because changing the state machine is expensive.
As one would expect, rendering less on the screen is cheaper than rendering more. If you have only incremental differences between redraws, you can get a significant performance boost by just drawing the difference. In other words, rather than clearing the whole screen before drawing:
context.fillRect(0, 0, canvas.width, canvas.height);
Keep track of the drawn bounding box, and only clear that.
context.fillRect(last.x, last.y, last.width, last.height);
This is illustrated in the following performance test which involves a white dot crossing the screen (jsperf):
If you are familiar with computer graphics, you might also know this technique as “redraw regions”, where the previously rendered bounding box is saved, and then cleared on each rendering.
This technique also applies to pixel-based rendering contexts, as is illustrated by this JavaScript Nintendo emulator talk.
As mentioned before, drawing large images is expensive and should be avoided if possible. In addition to using another canvas for rendering off screen, as illustrated in the pre-rendering section, we can also use canvases layered on top of one another. By using transparency in the foreground canvas, we can rely on the GPU to composite the alphas together at render time. You might set this up as follows, with two absolutely positioned canvases one on top of the other.
<canvas id="bg" width="640" height="480" style="position: absolute; z-index: 0">
</canvas>
<canvas id="fg" width="640" height="480" style="position: absolute; z-index: 1">
</canvas>
The advantage over having just one canvas here, is that when we draw or clear the foreground canvas, we don’t ever modify the background. If your game or multimedia app can be split up into a foreground and background, consider rendering these on separate canvases to get a significant performance boost. The following graph compares the naive single canvas case to one where you merely redraw and clear the foreground (jsperf):
You can often take advantage of imperfect human perception and render the background just once or at a slower speed compared to the foreground (which is likely to occupy most of your user’s attention). For example, you can render the foreground every time you render, but render the background only every Nth frame.
Also note that this approach generalizes well for any number of composite canvases if your application works better with a this sort of structure.
Like many other graphics environments, HTML5 canvas allows developers to blur primitives, but this operation can be very expensive:
context.shadowOffsetX = 5;
context.shadowOffsetY = 5;
context.shadowBlur = 4;
context.shadowColor = 'rgba(255, 0, 0, 0.5)';
context.fillRect(20, 20, 150, 100);
The following performance test shows the same scene rendered with and without shadow and the drastic performance difference (jsperf):
Since HTML5 canvas is an immediate mode drawing paradigm, the scene needs to be redrawn explicitly at each frame. Because of this, clearing the canvas is a fundamentally important operation for HTML5 canvas apps and games.
As mentioned in the
Avoid canvas state changes section,
clearing the entire canvas is often undesirable, but if you must do
it, there are two options: calling context.clearRect(0, 0, width,
height)
or using a canvas-specific hack to do it: canvas.width =
canvas.width
;.
At the time of writing, clearRect
generally outperforms the width
reset version, but in some cases using the canvas.width
resetting hack
is significantly faster in Chrome 14
(jsperf):
Be careful with this tip, since it depends heavily on the underlying canvas implementation and is very much subject to change. For more information, see Simon Sarris' article on clearing the canvas.
HTML5 canvas supports sub-pixel rendering, and there’s no way to turn it off. If you draw with coordinates that are not integers, it automatically uses anti-aliasing to try to to smooth out the lines. Here’s the visual effect, taken from this sub-pixel canvas performance article by Seb Lee-Delisle:
If the smoothed sprite is not the effect you seek, it can be much faster
to convert your coordinates to integers using Math.floor
or
Math.round
(jsperf):
To convert your floating point coordinates to integers, you can use several clever techniques, the most performant of which involve adding one half to the target number, and then performing bitwise operations on the result to eliminate the fractional part.
// With a bitwise or.
rounded = (0.5 + somenum) | 0;
// A double bitwise not.
rounded = ~~ (0.5 + somenum);
// Finally, a left bitwise shift.
rounded = (0.5 + somenum) << 0;
The full performance breakdown is here (jsperf):
Note that this sort of optimization should no longer matter once canvas implementations are GPU accelerated which will be able to quickly render non-integer coordinates.
The relatively new requestAnimationFrame
API is the recommended way of
implementing interactive applications in the browser. Rather than
command the browser to render at a particular fixed tick rate, you
politely ask the browser to call your rendering routine and get called
when the browser is available. As a nice side effect, if the page is not
in the foreground, the browser is smart enough not to render.
The requestAnimationFrame
callback aims for a 60 FPS callback rate but
doesn’t guarantee it, so you need to keep track of how much time passed
since the last render. This can look something like the following:
var x = 100;
var y = 100;
var lastRender = Date.now();
function render() {
var delta = Date.now() - lastRender;
x += delta;
y += delta;
context.fillRect(x, y, W, H);
requestAnimationFrame(render);
}
render();
Note that this use of requestAnimationFrame
applies to canvas as well as
other rendering technologies such as WebGL.
At the time of writing, this API is only available in Chrome, Safari and Firefox, so you should use this shim.
Let’s talk about mobile. Unfortunately at the time of writing, only iOS
5.0 beta running Safari 5.1 has GPU accelerated mobile canvas
implementation. Without GPU acceleration, mobile browsers don’t
generally have powerful enough CPUs for modern canvas-based
applications. A number of the JSPerf tests described above perform an
order of magnitude worse on mobile compared to desktop, greatly
restricting the kinds of cross-device apps you can expect to
successfully run.
To recap, this article covered a comprehensive set of useful optimization techniques that will help you develop performant HTML5 canvas-based projects. Now that you’ve learned something new here, go forth and optimize your awesome creations. Or, if you don’t currently have a game or application to optimize, check out Chrome Experiments and Creative JS for inspiration.


Largest ever social science data release, done under differential privacy
On January 17, my team at Facebook launched one of the largest social science data sets ever constructed. It’s meant to facilitate research on misinformation from across the web, shared and spread on Facebook.
Full details on the release here.
What makes this data release unprecedented is that it contains exposure data describing external links that billions of users saw and read while using the site.
The data set goes beyond URL-level data, breaking down exposure and interactions by month, country, age, gender, and in the U.S., political page affinity (see Barbera et al 2015).
The data contain two tables: (1) a “URL attributes” table describing the 38 million URLs in the data set, including how many times users tagged those posts as containing misinformation, harassment, etc. and (2) a “breakdown” table, which aggregates counts of actions taken on urls, broken out by user demographics and URL attributes.
The technical documentation reflects more work than most papers I’ve written: . This list of authors reflects the scale of this massive team effort, and that’s before you include increadibly helpful advice we got from a number of computer scientists in the academy listed in the acknowledgements.
Perhaps most importantly, this release provides guarantees about anonymity in an incredibly rigorous way–action-level differential privacy, while preserving more underlying signal in the data.
UPDATE: Nice coverage on Mashable of the entire hackathon! Check out the winning hackathon project.


by: Elvin Yeung & Abdur Rahman
Definition from their site
My definition:
An http client with an interface built on top of Chrome to make requests via browser.
Once apon a time, there are many platforms/server using http request...
Each platform are managed by different people, and more likely, different team...
One day, there goes the infamous HTTP Error
According to human nature, everyone in "denial defense" mode.
And the Blame Storming start....
After all the talk, lets see some demo!
It's Postman on steroid...
So, what does it do?
“…a command line companion tool for Postman.
“ With Newman, you can integrate Postman collections with your build system. Or you can run automated tests… ”


We'll only charge if the hosts accepts.
Payments are processed by Stripe, which handles payments for Twitter, Lyft, Kickstarter and Pinterest. We will never see your credit card data.


UploadZen lets you upload entire directory hierarchies including all (or only certain) files and sub-directories by simply marking a directory for upload.
To mark a directory for bulk upload, you can either navigate to it by clicking the Change Folder button, then selecting from the Change Folder drop-down menu the appropriate Mark entire folder contents (files and sub-folders) for upload menu item...
... or you can first select the folder(s) inside the local file navigation area and then from the context menu select either the Mark selected folders, their files and sub-folders for upload menu item or the Mark files and sub-folders of selected folders for upload menu item. (The second menu item will place the files and sub-folders directly into the currently selected Document Library target folder, the former will re-create the folder inside the currently selected Document Library target folder, then place the files and sub-folders inside that newly created folder.)
Once you have marked all folders for bulk-upload, click the Upload Files button to initiate the bulk-upload. Each directory will be ZIP-compressed in its entirety (in memory) for transfer:
UploadZen then uploads the in-memory ZIP archive to SharePoint where it will be extracted into the currently selected target Document Library folder.
Sometimes you want to put together a number of related files in one ZIP archive for uploading. UploadZen saves you the step of manually compressing files into a ZIP archive with an external tool; instead, you can simply select the files and tell UploadZen to compress those files into a ZIP archive which to upload in place of the individual files using the context menu:
This will put a single item (with a prefix [ZIP] and the names of the included files) into the Local Files Marked for Upload area, representing the dynamic ZIP archive that will be generated automatically once you start your upload:
As soon and as long as you have at least one ZIP archive marked for upload — whether an existing archive file you selected from your file system, or a dynamic ZIP that UploadZen will generate as described above — you will find check boxes next to these ZIP archives in the Local Files Marked for Upload area, as demonstrated in the screen shot above. Only tick the check boxes of those ZIP archives you want to extract into the currently selected target Document Library folder. This extraction will happen on the SharePoint server immediately after the ZIP archive has been fully uploaded.


Engineering Computation brought to you by Abel Sanchez and John R. Williams. Introduces the fundamentals of computational thinking and data science in engineering computation.We thank Github, Amazon, and Google for their support.
More information at Bio Page


Get credit for all your work by showing the number of contributions to private repositories on your profile without any repository or organization information. Learn how we count contributions.
Building an application, service, or tool that integrates with GitHub? Join the GitHub Developer Program, or read more about it at our Developer site.


Error
Error:
Loading...
Configuration for
Publish
Are you sure? This will make all keys, secrets, and all other test information publicly visible.
Run test confirmation
Are you sure you want to rerun this test? It is owned by a different user.
Go to Top


Toasts provide feedback messages as notifications to the user.
Goal is to mimic the push notifications available both on mobile and desktop operating systems.
NgbToast component allows you to only render the corresponding markup. Use it in one of your templates, and you are done. It will render a toast.
Live example available here.
Nonetheless, with this inline technique, you must handle the toast's lifecycle yourself, i.e. it won't disappear automagically or in other words we don't remove the markup, nor destroy the component.
To make it disappear, you can listen to the (hide)
output and remove/destroy/hide it yourself, and next section details how to do that in a real application environment.
Let's take the opportunity to demonstrate how to simply build a global toast management service.
In order to create our global toast system, 3 simple steps need to be done:
AppToastService
to act as a global storage for toasts.<app-toasts>
, acting as the host in the application to display your toasts.
You could use <ngb-toast>
with an *ngFor
to read the list of toasts to display from the service.Relying on Angular dependency injection to share some piece of logic application-wide is always a good and solid starting choice.
The service manages a collection of toasts. It also provides a public method to push a new toast to that same collection.
any[]
here.
Additionally, a method to remove an existing toast from the collection is also implemented.
As stated previously, <ngb-toast>
only generates a valid Bootstrap toast markup.
You'll still have to position them properly on the screen.
Thus, as a suggestion, toasts could be rendered in the top right corner of the application, as a kind of overlay.
To achieve that, you could create a dedicated container component/element to render all toasts in a convenient way.
For example, this container could be positionned using CSS property position: static
.
We provide a dedicated ngb-toasts
CSS class you could use, or write your own styles in case some specificities would be needed.
Lastly, let's use this container. Common sense would suggest to put it somewhere quite high in your hierarchy of components. Your root component would be a good candidate.
You're done! Just inject and use your AppToastService
anywhere you want to create a new toast. <app-toasts>
will take care of displaying them.
aria-live="polite"
& aria-atomic="true"
. They are mandatory in order to be compliant with screen readers technology. More information available on Bootstrap documentation.
Click here to see an example a bit more advanced of this how-to.


--- layout: widgets title: Map name: map widget_selected: selected description: |
The maps widget allows easy embedding of a Google Map into a site. We specify the addresses we want to show on the map, and these are indicated by pins. The map is fully functional (i.e. you can zoom and do street-view).
You can only use one map per page.
Note: If you're testing this locally (off of a file in your browser) - then geolocation may not work. Put it in your public dropbox folder to play with these features.
This is a singleton widget. This means only a single geocoder can exist per page.
basic_tab: data-ur-set="maps": add this attribute to an element that wraps the whole widget data-ur-map-component="canvas": sets the map canvas data-ur-map-component="address": defines the address for a map point data-ur-map-component="description": defines a description for the address advanced_tab: Required: address: - wraps an address for a point on a map - "multiple?: true" description: - describes the point on a map - "multiple?: true" canvas: - where the map is placed - "multiple?: false" Optional: icon: - allows you to change the pin icon - "multiple?: false" - attributes: - "required:data-ur-width
"
- "required: data-ur-height
"
- "required: data-ur-url
"
user_location:
- should wrap a "use my location" button
- "state: enabled / disabled(default)"
---


DROP TABLE
As of Drill 1.2, you can use the DROP TABLE command to remove tables (files or directories) from a file system when the file system is configured as a DFS storage plugin. See Storage Plugin Registration. As of Drill 1.8, you can include the IF EXISTS parameter with the DROP TABLE command. Currently, you can only issue the DROP TABLE command against file system data sources.
Syntax
The DROP TABLE command supports the following syntax:
DROP TABLE [IF EXISTS] [workspace.]name;
Parameters
IF EXISTS
Drill does not throw an error if the table does not exist. Instead, Drill returns “Table [name] not found.
”
workspace
The location of the table in subdirectories of a local or distributed file system.
name
A unique directory or file name, optionally prefaced by a storage plugin name, such as dfs
, and a workspace, such as tmp
using dot notation.
Usage Notes
By default, Drill returns a result set when you issue DDL statements, such as DROP TABLE. If the client tool from which you connect to Drill (via JDBC) does not expect a result set when you issue DDL statements, set the exec.query.return_result_set_for_ddl
option to false, as shown, to prevent the client from canceling queries:
SET `exec.query.return_result_set_for_ddl` = false
//This option is available in Drill 1.15 and later.
When set to false, Drill returns the affected rows count, and the result set is null.
Schema
- You must identify the schema in which a table exists to successfully drop the table. You can identify the schema before dropping the table with the USE
command (see [USE command](/docs/use/)) or when you issue the DROP TABLE command. See [Example 1: Identifying a schema](/docs/drop-table/#example-1:-identifying-a-schema). - The schema must be mutable. For example, to drop a table from a schema named
dfs.sales
, the"writable"
attribute for the"sales"
workspace in the DFS storage plugin configuration must be set totrue
. See Storage Plugin Attributes.
File Type
- The DROP TABLE command only works against file types that Drill can read. File types are identified as supported file formats, such as Parquet, JSON, or Text. See Querying a File System Introduction for a complete list of supported file types.
- Text formats must be configured in the DFS storage plugin configuration. For example, to support CSV files, the
"formats"
attribute in the configuration must include"csv"
as a value. See Storage Plugin Attributes. - The directory on which you issue the DROP TABLE command must contain files of the same type. For example, if you have a workspace configured, such as
dfs.sales
, that points to a directory containing subdirectories, such as/2012
and/2013
, files in all of the directories must be of the same type to successfully issue the DROP TABLE command against the directory.
Permissions
- A user must have the appropriate permissions on the file system to successfully issue the DROP TABLE command. Inadequate permissions result in a failed drop and can potentially remove a subset of the files in a directory.
User Impersonation
- When user impersonation is enabled in Drill, Drill impersonates the user issuing the DROP TABLE command. Therefore, the user must have sufficient permissions on the file system for the command to succeed. See Configuring User Impersonation.
- When user impersonation is not enabled in Drill, Drill accesses the file system as the user running the Drillbit. This user is typically a super user who has permission to delete most files. In this scenario, use the DROP TABLE command with caution to avoid deleting critical files and directories.
Views
- Views are independent of tables. Views that reference dropped tables become invalid. You must explicitly drop any view that references a dropped table using the DROP VIEW command.
Concurrency
- Concurrency occurs when two processes try to access and/or change data at the same time. Currently, Drill does not have a mechanism in place, such as read locks on files, to address concurrency issues. For example, if one user runs a query that references a table that another user simultaneously issues the DROP TABLE command against, there is no mechanism in place to prevent a collision of the two processes. In such a scenario, Drill may return partial query results or a system error to the user running the query when the table is dropped.
Examples
The following examples show results for several DROP TABLE scenarios.
Example 1: Identifying a schema
This example shows you how to identify a schema with the USE and DROP TABLE commands and successfully drop a table named donuts_json
in the "donuts"
workspace configured within the DFS storage plugin configuration.
The "donuts"
workspace is configured within the following DFS configuration:
{
"type": "file",
"enabled": true,
"connection": "file:///",
"workspaces": {
"root": {
"location": "/",
"writable": false,
"defaultInputFormat": null
},
"donuts": {
"location": "/Users/user1/donuts",
"writable": true,
"defaultInputFormat": null
}
},
Issuing the USE command changes the schema to the dfs.donuts
schema before dropping the donuts_json
table.
0: jdbc:drill:zk=local> use dfs.donuts;
|-------|-----------------------------------------|
| ok | summary |
|-------|-----------------------------------------|
| true | Default schema changed to [dfs.donuts] |
|-------|-----------------------------------------|
1 row selected (0.096 seconds)
0: jdbc:drill:zk=local> drop table donuts_json;
|-------|------------------------------|
| ok | summary |
|-------|------------------------------|
| true | Table [donuts_json] dropped |
|-------|------------------------------|
1 row selected (0.094 seconds)
Alternatively, instead of issuing the USE command to change the schema, you can include the schema name when you drop the table.
0: jdbc:drill:zk=local> drop table dfs.donuts.donuts_json;
|-------|------------------------------|
| ok | summary |
|-------|------------------------------|
| true | Table [donuts_json] dropped |
|-------|------------------------------|
1 row selected (1.189 seconds)
If you do not identify the schema prior to issuing the DROP TABLE command, Drill returns the following error:
0: jdbc:drill:zk=local> drop table donuts_json;
Error: PARSE ERROR: Root schema is immutable. Creating or dropping tables/views is not allowed in root schema.Select a schema using 'USE schema' command.
[Error Id: 8c42cb6a-27eb-48fd-b42a-671a6fb58c14 on <IP_ADDRESS>:31010] (state=,code=0)
Example 2: Dropping a table created from a file
In the following example, the donuts_json
table is removed from the /tmp
workspace using the DROP TABLE command. This example assumes that the steps in the Complete CTAS Example were already completed.
Running an ls
on /donuts_json
lists the files in the directory.
$ pwd
/tmp
$ cd donuts_json
$ ls
0_0_0.json
$ more 0_0_0.json
{
"id" : "0001",
"type" : "donut",
"name" : "Cake",
"ppu" : 0.55
} Issuing the USE command changes the schema to `dfs.tmp`.
0: jdbc:drill:zk=local> use dfs.tmp;
|------|-------------------------------------|
| ok | summary |
|------|-------------------------------------|
| true | Default schema changed to [dfs.tmp] |
|------|-------------------------------------|
1 row selected (0.085 seconds)
Running the DROP TABLE
command removes the table from the dfs.tmp
schema.
0: jdbc:drill:zk=local> drop table donuts_json;
|-------|------------------------------|
| ok | summary |
|-------|------------------------------|
| true | Table [donuts_json] dropped |
|-------|------------------------------|
1 row selected (0.107 seconds)
Example 3: Dropping a table created as a directory
When you create a table that writes files to a directory, you can issue the DROP TABLE
command against the table to remove the directory. All files and subdirectories are deleted. For example, the following CTAS command writes Parquet data from the nation.parquet
file, installed with Drill, to the /tmp/name_key
directory.
Issuing the USE command changes the schema to the dfs
schema.
0: jdbc:drill:zk=local> USE dfs;
Issuing the CTAS command creates a tmp.name_key
table.
0: jdbc:drill:zk=local> CREATE TABLE tmp.`name_key` (N_NAME, N_NATIONKEY) AS SELECT N_NATIONKEY, N_NAME FROM dfs.`/Users/drilluser/apache-drill-1.2.0/sample-data/nation.parquet`;
|-----------|----------------------------|
| Fragment | Number of records written |
|-----------|----------------------------|
| 0_0 | 25 |
|-----------|----------------------------|
Querying the directory shows the data.
0: jdbc:drill:zk=local> select * from tmp.`name_key`;
|---------|-----------------|
| N_NAME | N_NATIONKEY |
|---------|-----------------|
| 0 | ALGERIA |
| 1 | ARGENTINA |
| 2 | BRAZIL |
| 3 | CANADA |
| 4 | EGYPT |
| 5 | ETHIOPIA |
| 6 | FRANCE |
| 7 | GERMANY |
| 8 | INDIA |
| 9 | INDONESIA |
| 10 | IRAN |
| 11 | IRAQ |
| 12 | JAPAN |
| 13 | JORDAN |
| 14 | KENYA |
| 15 | MOROCCO |
| 16 | MOZAMBIQUE |
| 17 | PERU |
| 18 | CHINA |
| 19 | ROMANIA |
| 20 | SAUDI ARABIA |
| 21 | VIETNAM |
| 22 | RUSSIA |
| 23 | UNITED KINGDOM |
| 24 | UNITED STATES |
|---------|-----------------|
25 rows selected (0.183 seconds)
Issuing the DROP TABLE command against the directory removes the directory and deletes all the files and subdirectories that existed within the directory.
0: jdbc:drill:zk=local> drop table name_key;
|-------|---------------------------|
| ok | summary |
|-------|---------------------------|
| true | Table [name_key] dropped |
|-------|---------------------------|
1 row selected (0.086 seconds)
Example 4: Dropping a table that does not exist
The following example shows the result of dropping a table that does not exist because it was either already dropped or never existed.
0: jdbc:drill:zk=local> use dfs.tmp;
|-------|--------------------------------------|
| ok | summary |
|-------|--------------------------------------|
| true | Default schema changed to [dfs.tmp] |
|-------|--------------------------------------|
1 row selected (0.289 seconds)
0: jdbc:drill:zk=local> drop table name_key;
Error: VALIDATION ERROR: Table [name_key] not found
[Error Id: fc6bfe17-d009-421c-8063-d759d7ea2f4e on <IP_ADDRESS>:31010] (state=,code=0)
Example 5: Dropping a table that does not exist using the IF EXISTS parameter
The following example shows the result of dropping a table that does not exist (because it was already dropped or never existed) using the IF EXISTS parameter with the DROP TABLE command:
0: jdbc:drill:zk=local> use dfs.tmp;
|-------|--------------------------------------|
| ok | summary |
|-------|--------------------------------------|
| true | Default schema changed to 'dfs.tmp' |
|-------|--------------------------------------|
1 row selected (0.289 seconds)
0: jdbc:drill:zk=local> drop table if exists name_key;
|-------|-----------------------------|
| ok | summary |
|-------|-----------------------------|
| true | Table 'name_key' not found |
|-------|-----------------------------|
1 row selected (0.083 seconds)
Example 6: Dropping a table that exists using the IF EXISTS parameter
The following example shows the result of dropping a table that exists using the IF EXISTS parameter with the DROP TABLE command.
0: jdbc:drill:zk=local> use dfs.tmp;
|-------|--------------------------------------|
| ok | summary |
|-------|--------------------------------------|
| true | Default schema changed to 'dfs.tmp' |
|-------|--------------------------------------|
1 row selected (0.289 seconds)
0: jdbc:drill:zk=local> drop table if exists name_key;
|-------|---------------------------|
| ok | summary |
|-------|---------------------------|
| true | Table 'name_key' dropped |
|-------|---------------------------|
Example 7: Dropping a table without permissions
The following example shows the result of dropping a table without the appropriate permissions in the file system.
0: jdbc:drill:zk=local> drop table name_key;
Error: PERMISSION ERROR: Unauthorized to drop table
[Error Id: 36f6b51a-786d-4950-a4a7-44250f153c55 on <IP_ADDRESS>:31010] (state=,code=0)
Example 8: Dropping and querying a table concurrently
The result of this scenario depends on the delta in time between one user dropping a table and another user issuing a query against the table. Results can also vary. In some instances the drop may succeed and the query fails completely or the query completes partially and then the table is dropped returning an exception in the middle of the query results.
The following example shows the result of dropping a table and issuing a query against the table simultaneously. In this example, the table is dropped before the query can run against it.
User 1 issues the DROP TABLE command.
0: jdbc:drill:zk=local> drop table name_key;
|-------|------------------------------|
| ok | summary |
|-------|------------------------------|
| true | Table [droptable34] dropped |
|-------|------------------------------|
1 row selected (12.35 seconds)
User 2 issues a query against the table.
0: jdbc:drill:zk=local> select * from name_key;
Error: SYSTEM ERROR: FileNotFoundException: Requested file does not exist.
Fragment 1:0
[Error Id: 6e3c6a8d-8cfd-4033-90c4-61230af80573 on <IP_ADDRESS>:31010] (state=,code=0)
Example 9: Dropping a table with different file formats
The following example shows the result of dropping a table when multiple file formats exists in the directory. In this scenario, the sales_dir
table resides in the dfs.sales
workspace and contains Parquet, CSV, and JSON files.
Running ls
on sales_dir
shows the different file types that exist in the directory.
$ cd sales_dir/
$ ls
0_0_0.parquet sales_a.csv sales_b.json sales_c.parquet
Issuing the DROP TABLE command on the directory results in an error.
0: jdbc:drill:zk=local> drop table dfs.sales.sales_dir;
Error: VALIDATION ERROR: Table contains different file formats.
Drop Table is only supported for directories that contain homogeneous file formats consumable by Drill
[Error Id: 062f68c9-f2cd-4033-9b3d-182146a96904 on <IP_ADDRESS>:31010] (state=,code=0)


{% import "Pylot/macros/base.html" as m with context %} {% import "Pylot/macros/forms.html" as f with context %} {% extends "Pylot/PostManager/layout.html" %} {% block page_title %}Writer{% endblock %} {% block content %} {% if post and post.is_draft %} {{ m.alert("This post is a draft and is not yet published", category="warning", dismissible=False) }} {% endif %} {% if post %}
{% endif %}


FluentLenium 1.0 and 3.0 brings many new features but also comes with breaking changes.
If you have some tests written using previous version, reading this guideline should help you to migrate.
Maven
Some changes are required in maven configuration.
- Replace
fluentlenium-core
dependency withfluentlenium-junit
. - Add dependency to Selenium drivers actually used.
Configuration
In previous version, overriding getDefaultDriver()
method was the only way to
define
the WebDriver
to use. FluentLenium now
provides configuration features including
webDriver
and capabilities
properties that should be
enough for most use case.
If you still need to instantiate the WebDriver manually, or if configuration
features doesn’t seem to integrates well in your environment, getDefaultDriver()
has been renamed to newWebDriver()
and can still be overridden.
Keep in mind that events related features requires to wrap the WebDriver
instance into EventFiringWebDriver
.
-
Use
@FluentConfiguration(driverLifecycle=...)
instead of@SharedDriver(...)
. -
Rename
TriggerMode
enumeration values (ie:ON_FAIL
=>AUTOMATIC_ON_FAIL
).
Search method names
Some methods have been renamed and others have been removed to improve consistency and reduce codebase.
- Replace
findFirst()
occurrences withel()
,$(...).first()
orfind(...).first()
. - Replace
$(..., index)
orfind(..., index)
occurrences with$(...).index(index)
orfind(...).index(index)
.
Element method names
-
Many method prefixes like
is
,has
andget
have been removed from method names. Methods likeisDisplayed
,isEnabled
,getValue()
,getAttribute(name)
have been renamed with their shorter formdisplayed()
,enabled()
,value()
,attribute(name)
. -
text(...)
setter has been renamed inwrite(...)
to avoid collision withtext()
getter; -
fill().withValues()
has been renamed tofill().withText()
to avoid confusion withvalue()
that retrieves thevalue
attribute.
Conditions and await()
await()
now supports more conditions, provides
better error message, and is easier to maintain.
await().untilEach()
match the condition when
each element match the condition
await().until()
match the condition when at
least one element match the condition.
isNotPresent()
has been removed, in favor of
not().present()
. not()
method on condition builder
allows to negate any condition.
You can also check the exact same conditions on elements or list of elements, using
FluentWebElement#conditions()
, FluentList#one()
and FluentList#each()
- Replace
await().until("some-selector")...
withawait().until($(some-selector))...
or$(some-selector).await().until()...
.
Pages and Components
- Each method available in
FluentTest
is now available in bothFluentPage
andFluentWebElement
, allowing implementation of any logic into Pages and Components. - Ensure your Page Objects extends
FluentPage
and have a public empty constructor. - Ensure your Components extends
FluentWebElement
and have a constructor matchingFluentWebElement
constructor. createPage
method has been removed in favor ofnewInstance
.
A Component is roughly the same thing as a Page Object. A Page Object is global, but a Component is local
and attached
to an element so it can appear many time in a single page. A component can be created with
FluentWebElement#as(Component.class)
/ FluentList#as(Component.class)
.
Ajax support
FluentLenium now supports Ajax natively, using either injected elements or $
/el
/find
search methods.
@WaitHook
makes writing Ajax Webapp tests as
simple as writing Static Website tests.
@AjaxElement
has been removed.
Lazy Locators
When using search methods find
, $
or el
, effective search is NOT
performed at invocation time.
It’s a major change in FluentLenium 1.0. Those methods now returns a Lazy Locator
implementing
FluentWebElement
/ FluentList
.
Those locators looks like elements from previous versions, but the search will be performed lazily, when invoking the first action or check on the element.
So beware if you used to rely on catching NoSuchElementException
:
Those exceptions will now be
raised later in the test, or even not raised at all the element is not actively used.
You may use FluentWebElement#now()
/ FluentList#now()
to force the search at any
time.
Implicit waits
When using raw Selenium, explicit waits may spoil testing code and using implicit wait can be a solution. But using implicit waits may hard to diagnose delays when running tests.
FluentLenium now advocates for never using implicit wait, in favor of using explicit waits only.
FluentLenium hides the
complexity of explicit waits so them become readable when invoked manually, and can even automate them
before each action with the
use of @Wait
hook so you don’t have to care
about them.
withDefaultSearchWait
has been removed. Use@Wait
instead.
Something wrong ?
You may open issue if something wrong occurs during migration.


HOW TO ACE AN INTERVIEW
This event is NO longer Active
Date: 29th November, 2020
Link to Webinar
Event Report :
Well if there would be a line to describe this event, then it would simply be "CONFIDENCE: THE CROWNED FEATURE IN ONE'S PERSONALITY" because the tips and the guidance provided by our guest speaker Mrs. Prashasti Pritiprada, Director of HR at Muvi.com and a Human Resource specialist completely illustrated how important confidence is and how to keep maintaining it in a steady flow!
Remember that iconic hair flip that the leading lady does in every millennial movie and walks away from all the negative energies and vibes from her life. Yes! That amount of confidence is required to rock an interview.
Confidence is like the crowning feature in one's personality. It is the first factor which gets noticed in someone.
Hence, when you sit for an interview, make sure you own that!!!
So, therefore, starting from confidently presenting yourself to making a professional impression everything was utterly addressed with utmost perfection and precision by our respected speaker. For example:- More often or not, you will be continually competing with others and some can be way older than you. But no worries! Never feel like you are the lesser one and you have less learning than the person and then start losing hope in doing the work. You can always outrun them and all you need for doing that is having proper knowledge and knowing the way to apply it.
Similarly, "What type of behaviour would be the perfect one to showcase in front of the interviewer so that it reflects a smart side of yours?". The answer to this would be, simply to keep yourself together and calm. Portray the right body language such as maintaining a normal face with a minimal amount of emotions. That way it will show them that you want the job for sure but with a proper personality and confidence.
Besides, various more ideas, thoughts, strategies, and plans were stated which made us believe that no matter what, if you give your best efforts combined with smart work then nothing can stop you from acing an interview.
It was the honor of GirlScript Jamshedpur to have such an eminent speaker and a worthy audience for the event.


|
Figure 1
|
Schematic illustrations of the beam trajectories in a plane- ... |
|
Figure 2
|
Schematic illustrations of the beam trajectories in a bent p ... |
|
Figure 3
|
( a) A schematic diagram of the measuring system. x L is the ... |
|
Figure 4
|
Section topographs of Si(220) in the Bragg mode recorded in ... |
|
Figure 5
|
Section topographs of Si(220) in the Bragg mode recorded in ... |
|
Figure 6
|
Calculated intensities of IFRB in the range of x from 5 to 3 ... |
|
Figure 7
|
Calculated intensities of IFTB in the range of x from 3 mm t ... |
|
Figure 8
|
Beam trajectories in a bent plane-parallel crystal for the s ... |
|
Figure 9
|
The calculated trajectories of the beams to form IFLSD and I ... |
|
Figure 10
|
The angular amplification rate ( A B) as a function of Δ W f ... |
|
Figure 11
|
The optical system for evaluating the effective source size ... |
|
Figure 12
|
Dispersion surfaces and diffraction geometry in the vacuum. ... |


Maize disease detection using Convolutional Neural Network.
Disease found : {{ disease_name }}
Prediction Accuracy : {{ accuracy }}%
Common Cure : {{ preventive_measures }}


Australian bushfires intensify, residents told to leave
MELBOURNE (Reuters) - Towns were evacuated and hundreds of residents told to flee on Friday as a record number of emergency-level bushfires raged across two Australian states.
The New South Wales Rural Fire service issued warnings for 17 fires, advising people to leave early or to seek shelter.
The service has also received many reports of people being trapped in their homes, national broadcaster ABC said.
“These fires are very dangerous. If you are near these fires, your life is at risk and you need to take action to protect your life,” NSW Rural Fire service said.
Related Coverage
By early evening, the number of emergency-level fires had eased to 15 fires simultaneously burning and three fires at that same level burning in Queensland state to the north.
High winds were fanning fires, turning the sky red in the mid-north coastal town of Port Macquarie, according to posts on social media.
More than 1,000 firefighters and 70 aircraft had been deployed to battle the blaze, fire authorities told the ABC.
“It is a very volatile and very dangerous set of circumstances that we are experiencing right across these fire grounds in New South Wales,” New South Wales Rural Fire Service Commissioner Shane Fitzsimmons said.
Slideshow (9 Images)
In Queensland, people in several towns including Cooroibah and Tewantin, with a combined population of around 6,500, were told to leave by the state’s fire and emergency services.
Australia had an early and fierce start to its bushfire season, with an elderly couple killed in a blaze in October.
This is one of Australia’s worst bushfire seasons with a record number of emergency warnings and firefighters battling dozens of fires.


{% if title %}
Welcome to the City of Nawabs 🤴
Hungry Again? Satisfy your hunger : Choose the best Restaurant
Let Restaurants Recommender help you!


--- layout: default ---
|
Workshops |
What is ORSO? |
Working Groups |
|
Get Involved |
News |
FAQs |
|
Information |
|
Projects |


Detection of differentially expressed genes between two distinct groups of samples.
| Version: | 1.1 |
| Published: | 2012-10-30 |
| Author: | Klaus Jung |
| Maintainer: | Klaus Jung <Klaus.Jung at ams.med.uni-goettingen.de> |
| License: | GPL-2 |
| NeedsCompilation: | no |
| CRAN checks: | degenes results |
| Reference manual: | degenes.pdf |
| Package source: | degenes_1.1.tar.gz |
| Windows binaries: | r-devel: degenes_1.1.zip, r-release: degenes_1.1.zip, r-oldrel: degenes_1.1.zip |
| OS X binaries: | r-release: degenes_1.1.tgz, r-oldrel: degenes_1.1.tgz |
| Old sources: | degenes archive |
Please use the canonical form https://CRAN.R-project.org/package=degenes to link to this page.


Hover over nodes for details about each node.
Longest build path denoted in red ellipses connected by dashed lines.
The source channels are annotated if they are different than the channel currently being viewed.


Main
Create Account
Login
Join Event
Upload Songs
Create Event
About
Login
Email:
Password:
Login
Not yet a member?
Create Account


I have assembled this guild of Gnomes to honor the following tasks. Each member shall honorably undertake, to the best of their ability, the mental and physical fortitude required to ratify a Gnome kingdom deserving of our name. For we are The Coalition of Gnomes. Henceforth known as The COG.
- We will retake Gnomeregan!
- In doing so, we shall bring Mekgineer Thermaplugg to justice!
- Demand equal rights for Gnomes as a part of the Alliance.
- Form our own kingdom with the aid of our allies:
- Knights of Gnomeregan
- Clan Hammersong
Instituted and sworn by,
Gideon Killerwatt


@remarks To calculate the exact array size required by GetBytesEx to store the resulting bytes, the application uses GetByteCount. To calculate the maximum array size, the application should use GetMaxByteCount. The GetByteCount method generally allows allocation of less memory, while the GetMaxByteCount method generally executes faster.
With error detection, an invalid sequence causes this method to throw a ArgumentException. Without error detection, invalid sequences are ignored, and no exception is thrown.
Data to be converted, such as data read from a stream, might be available only in sequential blocks. In this case, or if the amount of data is so large that it needs to be divided into smaller blocks, the application uses the Decoder or the Encoder provided by the GetDecoder method or the GetEncoder method, respectively.
| Note |
|---|
| To ensure that the encoded bytes are decoded properly, the application should prefix encoded bytes with a preamble. |
| Exception | Condition |
|---|---|
| ArgumentNullException | Chars is an unintialized array. -or- Byte is an uninitialized array. |
| ArgumentOutOfRangeException | CharIndex is less than the lower-bound of Chars. -or- ByteIndex is less than the lower-bound of Bytes. -or- CharCount is less than zero. -or- CharIndex and CharCount do not denote a valid range in Chars. -or- ByteIndex is not a valid index in Bytes. |
| ArgumentException | Error detection is enabled, and Chars contains an invalid sequence of characters. -or- Bytes does not have enough capacity from ByteIndex to the end of the array to accommodate the resulting bytes. |
| EncoderFallbackException | A fallback occurred -and- EncoderFallback is set to EncoderExceptionFallback. |
Public Sub Main() Dim Bytes() As Byte Dim Chars As String Dim ByteCount As Long Dim BytesEncodedCount As Long Dim UTF8 As New UTF8Encoding Dim b As Variant Chars = "UTF8 Encoding Example" ByteCount = UTF8.GetByteCount(CorString.ToCharArray(Chars), 0, 13) ReDim Bytes(1 To ByteCount) BytesEncodedCount = UTF8.GetBytesEx(Chars, 0, 13, Bytes, 1) Console.WriteLine "{0} bytes used to encode string.", BytesEncodedCount Console.WriteValue "Encoded bytes: " For Each b In Bytes Console.WriteValue "[{0}]", b Next Console.WriteLine Console.ReadKey End Sub ' This code produces the following output. ' ' 13 bytes used to encode string. ' Encoded bytes: [85][84][70][56][32][69][110][99][111][100][105][110][103]


new Peer(calls, messages, auth, connection)
Represent one of the sides in the protocol. This class exposes most of the interface the final user will interact with NOTE: This class should not instantiated directly. See Context#_createPeer
Parameters:
| Name | Type | Description | |||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
calls |
Object | ||||||||||||||||||||||||||
messages |
Object | ||||||||||||||||||||||||||
auth |
Object |
Properties
|
|||||||||||||||||||||||||
connection |
Connection |
Extends
- EventEmitter
Members
(static) ERROR :number
Protocol error codes Negative codes are always generated locally. Codes 1xxx are reserved for protocol use
Type:
- number
Properties:
| Name | Type | Description |
|---|---|---|
TIMEOUT |
number | The call has timed out. If the answer is received after the timeout, it will be ignored |
CLOSED |
number | The connection was closed before this call could be answer. |
NOT_IMPLEMENTED |
number | The remote has not attached a handler to this call type |
INVALID_DATA |
number | The call input data was badly formatted. You should never see this error, since the local code validates the data before sending it |
INTERNAL |
number | The remote misbehaved and could not answer the call correctly It's caused by invalid answer format |
auth :Peer~Auth
Type:
(readonly) closed :boolean
Whether the connection has been closed and nothing more can be done. Note that 'error' events may still be raised after 'close'
Type:
- boolean
(readonly) handshakeDone :boolean
Whether the handshake has been completed
Type:
- boolean
Methods
call(name, dataopt, timeoutopt, callback)
Make a call to the other side (remote)
The callback will be executed asynchronously and only once
Making an unsupported call is considered error
If the remote answers the call after the timeout has fired, the response will be ignored
If no response is expected, you should send messages, not make calls!
All errors related to this call will be routed to the callback (including invalid input format)
One can check if the error was raised locally or by the remote (as a response) by checking the isLocal
flag in the Error object
Parameters:
| Name | Type | Attributes | Default | Description |
|---|---|---|---|---|
name |
string | call name |
||
data |
* |
<optional> |
null | must follow the call input format |
timeout |
number |
<optional> |
10e3 | call timeout in ms (0 means no timeout) |
callback |
function | required |
canCall(name)
Check if the remote can answer to a call
Parameters:
| Name | Type | Description |
|---|---|---|
name |
string |
canSend(name)
Check if the remote accepts a message
Parameters:
| Name | Type | Description |
|---|---|---|
name |
string |
close()
Close the connection and drop all pending calls
send(name, dataopt, strictopt)
Send a message to the other side (remote) This is a fire-and-forget operation, any error will not be informed If it is important to know whether the remote has received the message, consider using calls By default (strict=false), no feedback is given
Parameters:
| Name | Type | Attributes | Default | Description |
|---|---|---|---|---|
name |
string | message name |
||
data |
* |
<optional> |
must follow the message format |
|
strict |
boolean |
<optional> |
false | whether to throw error if the operation is invalid |
Throws:
if strict and some error occurs locally
Type Definitions
Auth
Type:
- Object
Properties:
| Name | Type | Description |
|---|---|---|
user |
string | |
required |
boolean | |
handler |
Peer~AuthHandler | |
remoteUser |
string |
AuthHandler(user, password, done)
This:
- {Peer}
Parameters:
| Name | Type | Description |
|---|---|---|
user |
string | |
password |
string | |
done |
function |
PendingCall
Type:
- Object
Properties:
| Name | Type | Attributes | Description |
|---|---|---|---|
callback |
function | ||
call |
Call | ||
timer |
Timer |
<nullable> |
timeout timer |
Events
close
Emited when the connection is closed and no more activity will happen
connect
Fired when the connection is ready
error
Type:
- Error


It's a Secret
It's a Secret is a anonymous photo-sharing social network based on Location for Android which strictly follows the Material Design Guidelines by Google.
Puerto Rico Seismic Network
PRSN is a Puerto Rico quake notifier for Android which strictly follows the Material Design Guidelines by Google.


Buddha and Benny's Favorite things!
Food:
Buddha:
Beef Paté
Crunchy Chicken Treats
Benny:
Turkey Paté
Canned Tuna
Hang out spots:
Buddha:
Big pillow near the window
Family member's bed
Benny:
Couch
Cat tree


HomeInterestsAbout I was originally born in Orlando Florida on April 16, 2001. I only lived there for two years and moved to Longmeadow Mass where I have been living for all of my life. I started playing hockey at a very young age and have loved the sport ever sense. My family up into very recently built a rink in our backyard to skate on during the winter. I also grew up loving the ocean as we have a house on Long Beach Island, New Jersey. I have been surfing, skimbording, and swimming in the ocean my whole life. I hve met some of my best friends from the summer and it is a large part of me. These are parts of my life that describe my personality and some of different things that are unique to me.


CindyJS: FFT by iterating a texture operation
This is an inplace implementation of the Cooley-Tukey FFT algorithm. It can be considered as a sequence of consecutive texture operations.


|
generated with STAXDoc v1.0.4 |
| Function Summary | |
Initialise | This function must be called first in all functions or jobs. |
GetEnv | Gets an environment value from a TestNode |
patch_release_dot_com | Check that the release. |
InitialiseNode | Initialise required data values of a particular TestNode within the current TestRun This will query the node for system variables and determine the required environment variables for a particular OSPL_HOME on that Node. |
StartOSPL | Starts OpenSplice on a node. |
OSPLIsRunning | Checks to see if OpenSplice is (already / now) running on a Node |
StopOSPL | Stop OpenSplice on a TestNode. |
RetrieveProcessLog | Manually retrieves process's logs. |
RunProcess | Runs a Process on a TestNode 'synchronously'. |
RunOSPLStart | Starts OpenSplice on a node. |
RunOSPLStop | Stops OpenSplice on a node. |
SpawnProcess | Asynchronously spawns a process without waiting for it to complete and returns the handle to the user & stores it on the passed Process. |
CheckProcessComplete | Check an asynchronously started process has completed successfully with return code 0. |
PASS-if-0 | This function checks if a value is 0. |
| STAX Function Details |
This function must be called first in all functions or jobs. It initialises variables, does various STAX and STAF jiggery pokery, and sets up the Python import path and imports the test classes module.
| This function does not allow any arguments |
The scope of this funcion is global rather than local so variables created here are all effectively exported. To avoid conflicts with variables in jobs prefix all used in local working with init_* and try and keep them to a min to avoid debugger clutter.
Gets an environment value from a TestNode
| This function takes a list of arguments | |||||
|---|---|---|---|---|---|
| Name | Description | Required | Private | Default | Properties |
| the_node |
Which TestNode to request the variable from | Yes | No | N/A | |
| the_variable_name |
The env variable name required. | Yes | No | N/A |
Returns the variable value or empty string if it can't be resoved on the box.
Check that the release.com script on posix platforms has had the @@INSTALLDIR@@ token removed and is executable.
| This function takes a list of arguments | |||||
|---|---|---|---|---|---|
| Name | Description | Required | Private | Default | Properties |
| the_node |
Which TestNode to do the check on | Yes | No | N/A | |
| the_ospl_home |
Optionally specify / override the OSPL_HOME to check. If not supplied use the value set globaslly for this node within this run. | No | No | '' |
Will replace the token and apply the permission if not.
Initialise required data values of a particular TestNode within the current TestRun This will query the node for system variables and determine the required environment variables for a particular OSPL_HOME on that Node.
| This function takes a single argument | |||||
|---|---|---|---|---|---|
| Name | Description | Required | Private | Default | Properties |
| the_node |
The TestNode that should be initialised | Yes | No | N/A |
This only needs doing opnce per TestNode but it shouldn't do any harm if it's repeated. Other than contributing to general patience trying.
Starts OpenSplice on a node. Optionally with a specific domain config.
| This function takes a list of arguments | |||||
|---|---|---|---|---|---|
| Name | Description | Required | Private | Default | Properties |
| the_node |
Which TestNode instance to start OSPL on | Yes | No | N/A | |
| the_scenario |
The TestScenario being run. | Yes | No | N/A | |
| ospl_conf_file |
The file 'URL' of the OSPL config file. Note - this is not a real URL (i.e. it must be machine local on the target machine, not a path on your machine or the STAX controller). If not specified then OSPL is started with the default file as specified by the env property. | No | No | '' | |
| ospl_work_dir |
A directory to start OSPL in. If you're not using default test locations it's important to set this if you want to be able to retrieve the ospl logs. | No | No | '' |
Returns a STAXResult of 0 on successful start or if the splice daemon was already running.
Checks to see if OpenSplice is (already / now) running on a Node
| This function takes a list of arguments | |||||
|---|---|---|---|---|---|
| Name | Description | Required | Private | Default | Properties |
| the_node |
Which node to check | Yes | No | N/A | |
| ospl_conf_file |
The file 'URL' of the OSPL config file. Note - this is not a real URL (i.e. it must be machine local on the target machine, not a path on your machine or the STAX controller). If not specified then OSPL is started with the default file as specified by the env property. | No | No | '' |
Calls ospl list for the specified doamin URI and returns true if the result is > 0.
Stop OpenSplice on a TestNode. Optionally with a specific domain config or stop the default instance otherwise.
| This function takes a list of arguments | |||||
|---|---|---|---|---|---|
| Name | Description | Required | Private | Default | Properties |
| the_node |
Which TestNode instance to stop OSPL on | Yes | No | N/A | |
| the_scenario |
The TestScenario being run currently. | Yes | No | N/A | |
| ospl_conf_file |
The file 'URL' of the OSPL config file. Note - this is not a real URL (i.e. it must be machine local on the target machine, not a path on your machine or the STAX controller box). If not specified then OSPL is started with the default file as specified by the OSPL_URI env property over there. | No | No | '' | |
| ospl_work_dir |
A directory to start OSPL in. If you're not using default test locations for some reason it's important to set this if you want to be able to retrieve the ospl logs. | No | No | '' |
Returns a STAXResult of 0 on successful stop or if the splice daemon had already stopped running. Throws and exception otherwise.
Manually retrieves process's logs.
| This function takes a list of arguments | |||||
|---|---|---|---|---|---|
| Name | Description | Required | Private | Default | Properties |
| the_process |
The Process instance that we need the logs for | Yes | No | N/A |
Retrieves the stdout & stdin output file created by the process from the remote machine back to the monitoring node.
Runs a Process on a TestNode 'synchronously'. Process should be expected to complete within a reasonable time. Will timeout otherwise. Optional timeout can be specified.
| This function takes a list of arguments | |||||
|---|---|---|---|---|---|
| Name | Description | Required | Private | Default | Properties |
| the_process |
The Process instance thatshould be run | Yes | No | N/A | |
| the_timeout |
A timeout to wait for the process to complete. | No | No | '60s' |
Will return Process return code on successful completion. Will throw an exception if it times out or cannot be run for some reason.
Starts OpenSplice on a node.
| This function takes a list of arguments | |||||
|---|---|---|---|---|---|
| Name | Description | Required | Private | Default | Properties |
| location |
The STAF URL of the machine of which you wish to start Vortex OpenSplice on | No | No | 'local' | |
| test_directory |
Set a working directory where OSPL will be started. This is done to ensure the logs go somewhere logical. If this is not set to they'll end up whereever STAF was started from. | No | No | '' | |
| ospl_conf_file |
The file 'URL' of the OSPL config file. Note - this is not a real URL (i.e. it must be machine local on the target machine). If not specified then OSPL is started with the default file as specified by the env property. | No | No | '' |
Stops OpenSplice on a node. Note 'ospl -a stop' is not supported as it is evil. If you want to do that go spawn yourself a process.
| This function takes a list of arguments | |||||
|---|---|---|---|---|---|
| Name | Description | Required | Private | Default | Properties |
| location |
The STAF daemon URI of the machine of which you wish to stop a Vortex OpenSplice domain on. | No | No | 'local' | |
| ospl_conf_file |
The optional file 'URL' of the OSPL domain config file. Note - this is not a real URL (i.e. it must be machine local). If not specified then OSPL is started with the default file as specified by the OSPL_URI env property. | No | No | '' |
Asynchronously spawns a process without waiting for it to complete and returns the handle to the user & stores it on the passed Process.
| This function takes a list of arguments | |||||
|---|---|---|---|---|---|
| Name | Description | Required | Private | Default | Properties |
| the_process |
The command of the process you want to start. | Yes | No | N/A |
Will throw an exception if the process fails to start.
Check an asynchronously started process has completed successfully with return code 0. Terminate it if it hasn't.
| This function takes a list of arguments | |||||
|---|---|---|---|---|---|
| Name | Description | Required | Private | Default | Properties |
| the_process |
The Process instance you want to check and stop. | Yes | No | N/A |
Will record an error and return the process RC if it hadn't terminated itself and returned 0. Will free handle resources in at all possible. Will only throw exception if the STAF service cannot be contacted.
This function checks if a value is 0. If 0, it sets the testcase status result to 'pass'; otherwise, it sets it to 'fail' and sends a message to the STAXMonitor.
| This function takes a single argument | |||||
|---|---|---|---|---|---|
| Name | Description | Required | Private | Default | Properties |
| value |
Value to compare with 0 | Yes | No | N/A |


| Test# | Test case Name | Time | Status |
|---|---|---|---|
| 1 | To verify whether creation of new vehicle in system | 2 Min : 45 Sec | Passed |
| 2 | To verify vehicle updates | 6 Min : 30 Sec | Passed |
| 3 | Verify vehicle search | 25 Min : 6 Sec | Failed |
| 4 | Verify Order Creation (LM) | 5 Min : 6 Sec | Passed |
| 5 | Verify Delivery Boy Creation (LM) | 5 Min : 6 Sec | Failed |
| 1 | To verify whether creation of new vehicle in system | 2 Min : 45 Sec | Passed |
| 2 | To verify vehicle updates | 6 Min : 30 Sec | Passed |
| 5 | Verify Delivery Boy Creation (LM) | 5 Min : 6 Sec | Failed |
| Overall Execution Summary | |
|---|---|
| Total Tests | 30 |
| Passed | 23 |
| Failedn | 7 |
| Time Taken | 30 Minutes 4 Seconds |
| Executed By | Jenkins |
| OS | Unix / Windows |
| Free Space | 877 MB |
| Notes |
1) Failed Tests under investigation for false positives |


Three important terms to understand are highlighted below: Epic > User Story > User Scenario
Before continuing on, check out the Behat documentation to get a thorough explanation of the difference between the three.


Welcome to your portfolio advisor. Here you will be able receive personalized investing advice. You can also search up updated stock performance from NASDAQ.
| Asset Class | Investment % | Amount |
|---|---|---|
| Gold (EGLN) | ||
| Commodities (SXRS) | ||
| Government Bonds (DBZB) | ||
| Stocks (VWRL) |


This document is for developers who need to upgrade their Cordova plugins to a newer Cordova version. Starting with Cordova 1.5.0, some classes have been renamed, which will require the plugin to be upgraded. Make sure your project itself has been upgraded using the “Cordova Upgrade Guide” document.
Change in the method signature of the CordovaLib’s JSONKit method categories, they are prefixed with “cdvjk_” now:
e.g.
[myDict cdvjk_JSONString];
instead of:
[myDict JSONString];
Change in import header use: in 2.0.0, Cordova projects use the CordovaLib project as a subproject, it now uses the CORDOVA_FRAMEWORK styled import like this:
#import <Cordova/CDV.h>
instead of like this:
#import "CDV.h"
So now in 2.0.0, Cordova import headers are unified.
NOTE: The deprecated for 2.0.0 CDVPlugin methods verifyArguments and appViewController have been removed.
The global “Cordova” (upper-case C) was renamed to “cordova” (lower-case c) to match the cordova-js Android implementation in 1.5.0 that is now common to Android, Blackberry and iOS. Please rename your calls to reflect the new lower-case c, or you can add a shim (which will support older versions) like so:
Wrap your plugin JavaScript in a temporary scope (self-executing function) - see “Temporary Scope” or this
Inside your temporary scope, set a local var to the global PhoneGap/Cordova/cordova object, for the exec function
var cordovaRef = window.PhoneGap || window.Cordova || window.cordova; // old to new fallbacks
Replace any PhoneGap or Cordova or cordova in your plugin JavaScript (within the temporary scope), with cordovaRef above
There is a new CDVCommandDelegate protocol method available:
- (void) registerPlugin:(CDVPlugin*)plugin withClassName:(NSString*)className;
You use this in your plugin to initialize another plugin that your plugin needs to be available and running (dependency), and all plugins can access the registered plugin from the getCommandInstance method of the CDVCommandDelegate. This is a substitute for listing a plugin your plugin depends on, in Cordova.plist/Plugins.
There is a new IsAtLeastiOSVersion macro available in CDVAvailability.h:
// Returns YES if it is at least version specified as NSString(X)
if (IsAtLeastiOSVersion(@"5.1")) {
// do something for iOS 5.1 or greater
}
There are Compatibility headers available for versions 0.9.6 and 1.5.0, in ~/Documents/CordovaLib/Classes/compatibility (where ~ signifies your Home folder). See the “README.txt” in that folder for instructions.
Note that including these headers are all or nothing - you can’t have a mix and match of plugin versions, if you include the 0.9.6 compatibility header - all your plugins must be of the same “version”. It is highly recommended that you upgrade your plugins to the current version instead of using these stop-gap headers.
The 1.5.0 header shouldn’t be used - this is included for the LocalStorage patch and is for using core plugins as general plugins that easily support multiple versions, and may be removed in the future.


There was an error making a report for {{ obsid }} when attempted on {{ proc_date }}. Please contact aspect_help if you need the report for this page.


{% extends "header.html" %} {% block body %}
In this video, we use two of Python 3's standard library modules, re and urllib, to parse paragraph data from a website. As we saw, initially, when you use Python 3 and urllib to parse a website, you get all of the HTML data, like using "view source" on a web page. This HTML data is great if you are viewing via a browser, but is incredibly messy if you are viewing the raw source. For this reason, we need to build something that can sift through the mess and just pull the article data that we are interested in. There are some web scraping libraries out there, namely BeautifulSoup, which are aimed at doing this same sort of task.
On to the code:
import urllib.request import urllib.parse import re url = 'http://pythonprogramming.net' values = {'s':'basics', 'submit':'search'} data = urllib.parse.urlencode(values) data = data.encode('utf-8') req = urllib.request.Request(url, data) resp = urllib.request.urlopen(req) respData = resp.read()
Up to this point, everything should look pretty typical, as you've seen it all before. We specify our url, our values dict, encode the values, build our request, make our request, and then store the request to respData. We can print it out if we want to see what we're working with. If you are using an IDE, sometimes printing out the source code is not the greatest idea. Many webpages, especially larger ones, have very large amounts of code in their source. Printing all of this out can take quite a while in the IDLE. Personally, I prefer to just view-source. In Google Chrome, for example, control+u will view-source.
Alternatively, you should be able to just right-click on the page and select view-source. Once there, you want to look for your "target data." In our case, we just want to take the paragraph text data. If you're looking for something specific, then what I suggest you do is copy some of the "thing" you are looking for. So in the case of specific paragraph text, highlight some of it, copy it, then view the source. Once there, do a find operation, control+f usually will open one up, then paste in what you are looking for. Once you've done that, you should be able to find some identifiers near what you are looking for. In the case of paragraph data, it is paragraph data because people tell the browser it is. This means usually that there are literally paragraph tags around what we want that look like:

text goes here

Some websites get fancy with their HTML and do things like

text here

...keep this in mind. With that in mind, most websites just use simple paragraph tags, so let's show that:
paragraphs = re.findall(r'
(.*?)
',str(respData))
The above regular expression states: Find me anything that starts with a paragraph tag, then in our parenthesis, we say exactly "what" we're looking for, and that's basically any character, except for a newline, one or more repetitions of that character, and finally there may be 0 or 1 of THIS expression. After that, we have a closing paragraph tag. We find as many of these that exist. This will generate a list, which we can then iterate through with:
for eachP in paragraphs: print(eachP)
The output should be a bunch of paragraph data from our website.


Building collapse: Two engineers arraigned in Lagos
by The Eagle OnlineTwo engineers were on Monday brought before a Yaba Chief Magistrates’ Court in Lagos State for allegedly causing the collapse of a two-storey building, which led to the death of a bricklayer.
The defendants: Benjamin John, 36, and Akin Tinuoya, 31, were arraigned on charges of conspiracy and negligent act causing harm.
The prosecutor, ASP Roman Unuigbe, told the court that the defendants committed the offences at 4.00p.m on November 1, at No. 36A Glover Court, Ikoyi, Lagos State.
According to Unuigbe, the defendants are part of a group of engineers employed to erect the two-story building for residential purposes.
He told the court that the defendants conspired with the other engineers and collected money from the contractors in exchange for the delivery of quality building materials.
He said that this resulted in building of the structure with inferior materials.
Unuigbe submitted that the negligence of the defendants caused the collapse of the building that killed a bricklayer working on it.
“My lord, the police were only able to apprehend these two defendants, the others absconded after the collapse but we are tracking them.
“We are also running tests on the debris to present as further evidence,” he said.
He said that the offences contravened Sections 411 and 252 of the Criminal Law of Lagos State, 2015 (revised).
The News Agency of Nigeria reports that both sections stipulate two years’ jail term each for conspiracy and negligent act causing harm.
The Chief Magistrate, Peter Ojo, granted each of the defendants bail in the sum of N500,000 each with two sureties in like sum.
Ojo said that the sureties must be gainfully employed and have landed property within the court’s jurisdiction.
He also ordered that the sureties must show evidence of three years’ tax payment to the Lagos State Government.
He adjourned the case until January 13, 2020, for mention.
Previous Post
PoS operators become target of armed robbers, lose millions
Next Post
Social Media Bill unnecessary duplication of law, Senator tells National Assembly


Someone spilled our beer!
Something went horribly wrong will you tried to access our pages. But fear not, we have been notified of the problem.
Please try again in a few seconds. If the problem persists, feel free to contact @braumeister_org on Twitter.


func GetPrivateKeyFromCert(cert []byte, cs core.CryptoSuite) (core.Key, error)
GetPrivateKeyFromCert will return private key represented by SKI in cert's public key
func GetPublicKeyFromCert(cert []byte, cs core.CryptoSuite) (core.Key, error)
GetPublicKeyFromCert will return public key the from cert
func X509KeyPair(certPEMBlock []byte, pk core.Key, cs core.CryptoSuite) (tls.Certificate, error)
X509KeyPair will return cer/key pair used for mutual TLS
PrivateKey is signer implementation for golang client TLS
type PrivateKey struct {
// contains filtered or unexported fields
}
func (priv *PrivateKey) Public() crypto.PublicKey
Public returns the public key corresponding to private key
func (priv *PrivateKey) Sign(rand io.Reader, msg []byte, opts crypto.SignerOpts) ([]byte, error)
Sign signs msg with priv, reading randomness from rand. If opts is a *PSSOptions then the PSS algorithm will be used, otherwise PKCS#1 v1.5 will be used. This method is intended to support keys where the private part is kept in, for example, a hardware module.


Design Technologist - Control Group
Writer - High Fructose Zombies
SnapScouts is agitprop software theatre. SnapScouts received over 80,000 hits was mentioned in several blogs including Wired, LA Times, Reddit and Download Squad (links below). The Android application and accompanying site lets you download the app to your Android phone. The app ultimately promotes kids spying on your neighborhood and parents. This is, of course, a terrible idea, but by creating awareness, it will hopefully promote privacy.
Interviewed by New Scientist.
Mentioned in:


SplitString(content: String)
A container utility class for strings split into two.
content - The string to split into two based on the first available whitespace.
content


By Johannes Buchner | Source code: https://github.com/JohannesBuchner/intersection | Open a issue or pull request if you would like somthing added


Contents of
this site are ©
Copyright 2020 Frealac. All rights reserved.
The source code is
available under the Apache License
2.0
This privacy policy governs your access to and use of ishandeveloper.com, including any content, functionality and services offered on or through ishandeveloper.com (the “Website”).
When you access the Website, I’ll learn certain information about you during
your visit:
a. Information you provide to me. I collect information
that you provide to me by filling out forms on the Website, by responding to surveys, or by
mailing me. I use this information to deliver my services to you, and to send you information
and marketing materials.
b. Information I collect through Google
Analytics. This data will generally include information about your location, how
you’re using my website, what device you’re using, etc. The information I collect automatically
is used for statistical data to improve my Website and my service offerings and won’t include
personal information.
This Website uses cookies and similar technologies (Google Analytics) to provide me with information on how people move about the site, what is of interest to them and what is not, how my marketing is performing, and incidental items such as what percentage of users access the site from a personal computer versus a mobile phone. You may block most cookies by adjusting your browser settings.
Some content or applications on the Website are served by third-parties. These third parties may use cookies alone or in conjunction with web beacons or other tracking technologies to collect information about you when you use my website. I do not control these third parties’ tracking technologies or how they may be used. If you have any questions about this, you should contact the responsible provider directly.
I will retain any information you choose to provide to me until the earlier of:
● You asking me to delete the information,
● My decision to cease using my existing data providers, or
● I decide that the value in retaining the data is outweighed by the costs
of retaining it.


Mushrooms - P. cubensis
Background Info: My cousin “TRIP” and I decided to trip on shrooms together for our 3rd time on a beautiful Friday night in December. We had gotten 7 grams of gorgeous blue and gold mushrooms during the previous week and we had been preparing all week for what would be our most amazing trip yet. My friend had died in a tragic car accident during our preparation week and I was scared of having a bad trip due to my constant bad moods. Believe it or not, this had very little or no effects on my trip.
10:45 P.M. - TRIP’s little brother and mom were upstairs watching a movie and we couldn’t wait any longer so we both opened our bags and began eating the shrooms. We finished 2 grams in about 5 minutes and we decided to hold off on the rest for a little bit.
11:05 P.M. - I began noticing similar patterns and vibrant colors similar to our previous trips. This is when we knew we were beginning our journey.
11:15 P.M. - We turned on some music to get us in the right mood. (…some Pink Floyd, and Cursive) I soon began feeling a little uneasy so I decided to grab my headphones and chill with my eyes closed for a few minutes because I didn’t want that “bad trip” I was worried about to actually happen.
11:20 P.M. - After listening to some songs to myself for a few minutes I began to feel fine again and we decided to take the rest of the shrooms so we could begin our dream. The only problem was that we had lost one of the bags! We began looking for it but we kept losing focus and forgetting what we were looking for. One minute we would be furiously looking and worrying and the next minute we would be laughing and talking about random things and how amazing our futures were going to be.
11:30 P.M. - Finally we found the bag right under a blanket on the bed that we had been sitting on. TRIP was extremely relieved and suggested that we finish up our bags. TRIP’s mom came down at this point to put his younger brother to bed in the room just outside of ours. We went out to greet her carefully making sure we didn’t say or do anything completely idiotic. His mom asked where the “red blanket” was for his younger brother and we calmly got it for her after some minor arguments. (We desperately wanted that blanket for some reason, even though it served virtually no purpose to us, as we were only sitting on it at the time and not actually using it.)
11:35 P.M. - TRIP’s mom went upstairs and I decided that it was necessary that I had to use the bathroom which was upstairs. I stumbled up the stairs with very little coordination and made it to the bathroom where I looked in the mirror and noticed that my face wasn’t quite right. I saw flashing colors in his bathroom which distracted me for awhile but I finally finished up and left. I walked past his mom who said “I’m very tired, I’m going to bed…” I replied with something along the lines of “Yeaaah, me too…” To my surprise my voice sounded quite distant from my body, as if I was watching myself in a movie or dream.
11:45 P.M. - I made it back downstairs to the basement where TRIP was pacing around the room looking confused. He was glad to see I made it back alright.  - We we’re both noticing a field of colors in our vision and we became somewhat excited that the shrooms we’re beginning to fully kick in. We decided to get out our bags and finish them up.
12:00 A.M. - Around this time we had devoured our entire bags and we’re laying on his bed when we decided to put our favorite movie in… “Alice in Wonderland”. In our previous trips we had always watched this movie. We had experienced a full-out fantasy “dream-like” state when we had watched this movie during our previous trip, and we had believed that we had almost found the true meaning of life and why we existed as human beings. We basically wanted to try watching this movie again to see if we could understand it better, and maybe continue the trip from where we left off last time.
12:10 A.M. - We turned off the stereo and began watching “Alice” as we like to call it. We both sat on the bed taking a few pictures so we could remember our faces the next day. This is the point where we both began losing reality.
12:15 A.M. - TRIP exclaimed to me that he felt as if the bed were a liquid and he was drifting in it. I had been feeling the exact same way and we discussed this oddity for a few minutes. Soon we began talking about our lives and our “previous lives” and what it means to be “living”. These conversations had plagued us in our past trips. We had convinced ourselves that we knew the answers to everything.
12:25 A.M. - This is the point where we began to notice our connectedness in our trips. It felt as if we were sharing the same senses and feelings and we both noticed the same exact visuals. Suddenly out of the corner of my eye I noticed an extremely short person who had just entered the room. I tried to look directly at him but he had disappeared. I told TRIP about what I had seen and he replied quite simply “Yeah, don’t worry, that was only James… ” We both looked at each other and began laughing uncontrollably at this for about 5 minutes straight. Neither of us knew where that comment or name had come from, but it just seemed right for some reason.
12:30 A.M. - I looked over and noticed a black cat on top of his laundry basket. I realized that he did not even own a cat to begin with, and with this thought, the cat disappeared almost instantly.
12:35 A.M. - At around this time, things got weird. We began “melting” into each other and we both stated how we felt like we were in a dream. It felt as if we were out of our bodies watching this whole scene from a distance. TRIP noticed that my arm which I was leaning on looked quite distorted and I just laughed and told him not to worry, my arm was fine. We began looking at the Alice in Wonderland poster which we had bought during the previous week and we noticed the creatures popping out of the poster. This was an amazing sight to look at. We were both mesmerized for quite some time. We looked at all the various posters in his room and noticed specific features and colors in all of them. The colors in the posters looked as if they were flowing like rivers. TRIP began telling me how everything he looked at looked furry. He said it looked as if the walls were growing hair. This seemed weird to me because I soon noticed the same effect.
12:45 A.M. - We suddenly both noticed that the entire room looked extremely hazy and smoky. It was as if we were both living in a dream. We discussed all the possibilities of what we would be able to do in this dream. The thought that we were actually experiencing a fantasy dream seemed amazing to the both of us. TRIP got up and sat next to his standing mirror and stared at himself for what must have been 10 minutes. He did not say a word, he just stared. He told me that his arms seemed out of proportion with the rest of his body, and as I looked I noticed the same thing once again. This is when we realized we were having a “connected trip”. We both were experiencing the same visuals and effects. I realized that whenever he left my field of view, I felt uneasy and lost, and when he came back to me I felt comfortable again… like we were both at home again and happy.
1:00 A.M. - Our trips began to peak at this time. I had suddenly “transported” to the bed opposite of the one we we’re laying on. I asked him how I got there and he replied “Got where?… you’re still on the same bed we started on.” He reassured me that I had not moved from my starting place, and I realized that it was all in my head.  He was convinced that I was his brother, when in reality I am his cousin. I still felt like I was lying on the other bed. I could only see my right arm which I was leaning on. My other arm had disappeared and did not seem to exist. For some reason, this did not seem to frighten me in the least bit. I kept reassuring myself that it was only in my head and I was having an amazing trip.
1:30 A.M. - I had “transported” once again to the bed which I had started on. We watched “Alice” and cried uncontrollably at its beauty. We didn’t really understand why we were crying, we just knew that it was beautiful and the whole movie was what life was “supposed to be like”. The smoking caterpillar in the movie befriended us. He seemed like an incredibly friendly character and it was as if he was trying to communicate with the both of us. TRIP named this caterpillar “Eastfall” (named changed). We looked to his poster where the same caterpillar was and we greeted “Eastfall” with enthusiasm.
2:00 A.M. - Neither of us was the least bit tired. We continued tripping in our fantasy dream. We both felt amazing. It was an indescribable feeling. TRIP’s room had taken an orange haze now and everything looked so beautiful. Everything in his room seemed to have a life of its own. Everything was “breathing” and living with us in our dream. Everything that one of us felt was felt by the both of us. We shared the same feelings and thoughts. The mushrooms took us to a comforting fantasy world where we knew exactly what each other was thinking. Quite a weird, unexplainable effect that we believe can not be achieved by any other drug. The mushrooms served as a spiritual guide to the both of us, guiding us through thoughts of existence, the future, and beauty.
2:30 A.M. - I tried to sit upright in the bed but just didn’t feel as if it was possible. I did not want to move… I just wanted to observe the dream and figure out why we were in it. We talked and talked until about 3:15 A.M…
3:15 A.M. - We had the feeling of “waking up” from the dream which we had inhabited for the past 5 hours. It felt like we were waking up from a long sleep. P guided me down what seemed to be a familiar long corridor which didn’t really exist. He kept telling me “Come on, It’s time to go home now… we’re going home”. This is when I woke up in the opposite bed once again. He came over to my bed and we discussed our trip. We we’re coming down, but still noticing the orange haze and flying colors throughout his room.
3:30 A.M. - We both wanted to go to bed but we just couldn’t. We felt as if we had something left to do. We had left something unfinished. We didn’t really understand this feeling but we finally decided to put in our beloved “Chrono Soundtrack” and fell asleep wondering what it was that we had left undone.
12:00 P.M. - We both woke up at the same time feeling refreshed and tired at the same time. We discussed the previous night but for some reason it seemed difficult to remember any exact details.
Throughout the day we recovered various parts of our trip from the previous night and talked about them. We still felt as though we had left something unfinished. We are now planning on obtaining 8 grams of the magical mushrooms to see if this slight increase will help us find what we were looking for. Could it be the meaning of life, or the truth about our existence? We know one thing for certain though… the answers lie somewhere within “Alice in Wonderland”. Somewhere deep in that movie lies the secrets of our pasts, present, and futures.
Until next time…our shared dream will not be forgotten and the answer is determined to be found. The answer that we have always been searching for…
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


Review: The Avengers
Starring: Ralph Fiennes, Uma Thurman and Sean Connery
Directed by Jeremiah Chechik Approx 90 min
Though at times I wasn't sure what to make of The Avengers, I must admit that I came out pleased. I don't really know why, but I just enjoyed the film. It's due in great part to the costume and production design. The Avengers is a stylish, vibrantly colorful and opulent picture.
I don't think I'd do very well in capsulating the story. The writer didn't do a very good job with it either. Basically, Sean Connery is a villain bent on world domination. He threatens every country in the world with his weather controlling device. If they don't pay him 10 percent of their GNP, he freezes their country. Special agent John Steed (Fiennes) works on stopping him, with the aid of Dr. Emma Peel (Thurman) who has only a short time to clear her name of heinous wrong-doings.For some reason (that I either didn't get or that wasn't explained clearly) there is a duplicate Emma Peel running about. She looks like Uma, only colder. And she is, of course, the one responsible for being bad. I don't think I've done a very poor job of explaining this, the story just isn't that good.
But there is something likable about the cheesey dialogue. And how could you not like a film that has people in huge colorful teddy bear costumes at a board meeting? There is also a spiffy "locust" attack, orchestrated by British rising star comedian Eddie Izzard, who's only line comes at the end of the film. One of many lines that made me chuckle, I might add.
Some films make it difficult to tell if they take themselves seriously. With Congo, they certainly did not, but that didn't work for so many reasons. With Godzilla, I'm not sure whether or not they took themselves seriously, but really, no matter how they took themselves, they couldn't have made it palpable. But The Avengers puts a modern, spunky twist on a campy 60's TV series. True fans probably won't much care for the new version, they seldom do. But as a viewer who has seen episodes, but was never die hard fan (and honestly can't remember much about them) I was able to enjoy The Avengers for what it was worth. Admitedly, it could have been made MUCH better than this. Fiennes and Connery are forgettable, and so is Thurman (who has never looked better). But for some reason, I didn't care about that as much with this one as I do with so many others. I think there is enough splash and style, enough pretty photography, enough cool effects and funky characters (shallow though they may be) that I can recommend this film for some light-hearted, thuroughly predictable fun.
* * 1/2 out of * * * * stars ©1998 Nick Amado email me at<EMAIL_ADDRESS>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


A word about the difference between dirigibles and balloons. A dirigible is what used to be called an "airship", sometimes is now called a "blimp", and uses hydrogen and/or helium-filled containers or modular structures to provide lift for passengers or cargo, and engine-driven propellers for thrust and directional maneuverability. A balloon is a sack that can be filled with air which, when heated, provides lift for passengers or cargo. A balloon has no internal power and must go where the wind takes it. Great for a tourist jaunt and sporting, but irritating for any kind of regular transportation.
From the beginning of the vCity concept, I had argued for the inclusion of dirigibles not just as scapps, but possibly to allow people to "fly" legally and within the laws of physics throughout the vCity. Ever since the Hindenburg disaster, dirigibles have received a bum rap. They are seen in the public eye as cumbersome, slow, dangerous, expensive, and (sin of sins) low-tech. This is unfortunate, since with modern equipment they are superbly capable of filling some market niches at low pollution cost. For example, hauling bulk cargo to and from mountains, islands, or sea-based platforms where running tracks or roads would either be prohibitively expensive or impossible.
I argued that dirigibles, and to a lesser extent balloons, could also be used also for advertising and specialty projects such as providing video coverage of a selected area (useful for sporting events and security). Floating billboards, cameras, and telecomm links. Etcetera.
The Zoning Council remained unconvinced, so I added one other possibility: the House-Dirigible or "No Foundation Domicile". People are familiar with the concept of the houseboat and the luxury yacht. These are legal residences which float upon the water. Why not a residence that floats on the air? The legal address registration for House-Dirigibles, I argued, could be a D and B Complex.
Well, I won that one, to the delight of the DOT contractors. As it stands now, if someone wants to live above the vCity they can do so, provided that they obey certain civilized rules. For example, a dirigible resident mustn't stray from registered flight paths. In the real world, I imagine dirigible residents also would have to test their engines regularly, keep an ear well-tuned for the weather report, avoid tall buildings, and not dump garbage or sewage on people down below. They would also be limited to wireless telecomm links, which would probably restrict their access to certain kinds of information and entertainment.


Home
<#if isAdmin>
Admin panel
#if>
Log out
New request
Customer:
<#list users as user>
${user.firstName} ${user.lastName} (${user.login})
#list>
Priority:
<#list priorities as priority>
${priority.title}
#list>
Create