{% extends "base.html" %} {% block head %} {{ super() }}
This site pulls its data to calculate the number of hours played from HowLongToBeat.com. This is great, but the caveat is that naming schemes aren't 100% consistent between what I pull from the Steam API and what HLTB stores. That means that for any games that don't have consistent names, it's largely a manual process to connect to the two naming schemes, so that we pull the correct times.
You can see the current number of games we have times for here. The remaining apps we store from Steam are either not on HLTB at all, or have a different naming scheme. You'll notice that there's a seperate table for games we couldn't find when you look at your profile page.
In the near future I may open it up so that those interested can help with indexing the different naming conventions for games we can't find. Keep your eye on this if you would like to help out with that.
An obvious flaw in the site currently is how it handles multiplayer only games. It currently just factors them all in with the others. I'd like to put a flag on all multiplayer only games, and have them not included in the counts by default. (Both in the hours needed, and your hours played.) There will be an option to include them as well.
Once I have time I may put a form, or some other way for people to report a game as multiplayer only (as I certainly won't catch them all by myself).
{% endblock content %}


This project was made from the 4th of March 2019 to the 11th of March 2019.
The goal was to learn and explore a new game engine which, compared to Unity and Unreal Engine, had an entirely different workflow.
You can find the Android build here.
This project was made from September 2018 to March 2019. The software allowed the user to visualize and interact with 3D DICOM images. The software could be used with the Hololens mixed reality headset.
The rendered 3D image could be placed on top of a real patient in order to get more informations for some operations, like a dialysis for example.
This game engine prototype was made from October 2017 to June 2018. The first goal was to discover how a game engine really works. The second was to try to build an engine with new, safer and more expressive programming languages.
The major feature of this engine, heavily inspired by the game Quake 2 and the now discontinued Stingray Engine, was the client/server architecture for the game AND the tools.
You can find the source code here.
This prototype was made in 4 months. The goal was to discover the Unreal Engine 4 with a medium-sized project. The major features of this project were the dismemberment, by breaking bones via the physics engine and the use of the particle system, and the realistic wound rendering, based on the Valve's GDC Presentation.
This game was made in 6 months by a group of 14 students. I worked on it as a programmer and assets integrator. The major feature of the game was the heavy use of procedural content generation. All the levels, weapon appearance, weapon statistics... were procedurally generated.


Syntax:
case keyform {normal-clause}* [otherwise-clause] => result*
ccase keyplace {normal-clause}* => result*
ecase keyform {normal-clause}* => result*
normal-clause::= (keys form*)
otherwise-clause::= ({otherwise | t} form*)
clause::= normal-clause | otherwise-clause
Arguments and Values:
keyform---a form; evaluated to produce a test-key.
keyplace---a form; evaluated initially to produce a test-key. Possibly also used later as a place if no keys match.
test-key---an object produced by evaluating keyform or keyplace.
keys---a designator for a list of objects. In the case of case, the symbols t and otherwise may not be used as the keys designator. To refer to these symbols by themselves as keys, the designators (t) and (otherwise), respectively, must be used instead.
forms---an implicit progn.
results---the values returned by the forms in the matching clause.
Description:
These macros allow the conditional execution of a body of forms in a clause that is selected by matching the test-key on the basis of its identity.
The keyform or keyplace is evaluated to produce the test-key.
Each of the normal-clauses is then considered in turn. If the test-key is the same as any key for that clause, the forms in that clause are evaluated as an implicit progn, and the values it returns are returned as the value of the case, ccase, or ecase form.
These macros differ only in their behavior when no normal-clause matches; specifically:
If there is no otherwise-clause, case returns nil.
If the store-value restart is invoked, its argument becomes the new test-key, and is stored in keyplace as if by (setf keyplace test-key). Then ccase starts over, considering each clause anew.
The subforms of keyplace might be evaluated again if none of the cases holds.
Note that in contrast with ccase, the caller of ecase may rely on the fact that ecase does not return if a normal-clause does not match.
Examples:
(dolist (k '(1 2 3 :four #\v () t 'other)) (format t "~S " (case k ((1 2) 'clause1) (3 'clause2) (nil 'no-keys-so-never-seen) ((nil) 'nilslot) ((:four #\v) 'clause4) ((t) 'tslot) (otherwise 'others)))) >> CLAUSE1 CLAUSE1 CLAUSE2 CLAUSE4 CLAUSE4 NILSLOT TSLOT OTHERS => NIL (defun add-em (x) (apply #'+ (mapcar #'decode x))) => ADD-EM (defun decode (x) (ccase x ((i uno) 1) ((ii dos) 2) ((iii tres) 3) ((iv cuatro) 4))) => DECODE (add-em '(uno iii)) => 4 (add-em '(uno iiii)) >> Error: The value of X, IIII, is not I, UNO, II, DOS, III, >> TRES, IV, or CUATRO. >> 1: Supply a value to use instead. >> 2: Return to Lisp Toplevel. >> Debug> :CONTINUE 1 >> Value to evaluate and use for X: 'IV => 5
Side Effects:
The debugger might be entered. If the store-value restart is invoked, the value of keyplace might be changed.
Affected By:
ccase and ecase, since they might signal an error, are potentially affected by existing handlers and *debug-io*.
Exceptional Situations:
ccase and ecase signal an error of type type-error if no normal-clause matches.
See Also:
cond, typecase, setf, Section 5.1 (Generalized Reference)
Notes:
(case test-key {((key*) form*)}*) == (let ((#1=#:g0001 test-key)) (cond {((member #1# '(key*)) form*)}*))
The specific error message used by ecase and ccase can vary between implementations. In situations where control of the specific wording of the error message is important, it is better to use case with an otherwise-clause that explicitly signals an error with an appropriate message.


{% trans "Account Settings" %}
{% blocktrans %}Create a public profile to distinguish yourself across P2PU and add some personality to your learning circle.{% endblocktrans %}
{% blocktrans %}Manage your communication preferences to receive updates from the P2PU community. There are some messages you cannot opt out of. When you create a learning circle, you will receive occasional messages from P2PU and learners related to that learning circle. Additionally, you cannot opt out of account-related messages (such as password resets).{% endblocktrans %}
{% trans "Profile" %}
{% trans "Team" %}
{% trans "Your team:" %} {{ team_membership.team.name }}
{% trans "Delete Account" %}
{% trans "This will permanently delete your P2PU account and also delete any future or active learning circles." %}


INSTMODSH(1) Perl Programmers Reference Guide INSTMODSH(1) NAME instmodsh - A shell to examine installed modules SYNOPSIS instmodsh DESCRIPTION A little interface to ExtUtils::Installed to examine locally* installed modules, validate your packlists and even create a tarball from an installed module. *On Debian system, core and vendor modules are managed by "dpkg". SEE ALSO ExtUtils::Installed perl v5.14.2 2014-09-30 INSTMODSH(1)


{{item[0].description}}
Please find below the prices for services we introduce.
{{50 | currency: 'EUR'}} per hour
{{200 | currency: 'EUR'}} per day
{{900 | currency: 'EUR'}} per week
{{2000 | currency: 'EUR'}} per month
When dealing for a month and you don’t get your needs in two weeks, you can refund what you paid without any extra fees.


Main Page
InOrder to delete an element click the delete row specific button and referesh the page
Title
content
Delete


--- title: /home/ayonga/.dropboxes/business/Dropbox/research/dzopt/frost/matlab/symbolic/@SymVariable Directory Reference layout: doxygen comments: false sidebar: doxygen_sidebar topnav: topnav tags: false ---
Files | |
| file | flatten.m |
| file | horzcat.m |
| file | ind2label.m |
| file | label2ind.m |
| file | subsrule.m |
| file | SymVariable.m |
| file | tomatrix.m |
| file | tovector.m |
| file | unique.m |
| file | vertcat.m |


Stratosphere provides a web interface to upload jobs, inspect their execution plans, and execute them. The interface is a great tool to showcase programs, debug execution plans, or demonstrate the system as a whole.
Start the web interface by executing:
./bin/start-webclient.sh
and stop it by calling:
./bin/stop-webclient.sh
The web interface runs on port 8080 by default. To specify a custom port set the webclient.port
property in the ./conf/stratosphere.yaml configuration file. Jobs are submitted to the JobManager specified by jobmanager.rpc.address
and jobmanager.rpc.port
. Please consult the configuration page for details and further configuration options.
The web interface provides two views:
The interface starts serving the job view.
You can upload a Stratosphere program as a jar file. To execute an uploaded program:
If the “Show optimizer plan” option is enabled (default), the plan view is display next, otherwise the job is directly submitted to the JobManager for execution.
In case the jar's manifest file does not specify the program class, you can specify it before the argument list as:
assembler <assemblerClass> <programArgs...>
The plan view shows the optimized execution plan of the submitted program in the upper half of the page. The bottom part of the page displays detailed information about the currently selected plan operator including:
To submit the job for execution, click again on the "Run Job" button in the bottom right.


Two women killed while crossing a highway in Sebokeng
by Riaan GroblerTwo women in their 40s were killed while crossing the Golden Highway while seemingly trying to get to the Golden Gardens suburb of Sebokeng on foot on Wednesday evening.
They were struck by a BMW SUV and died on impact.
According to ER24, paramedics arrived on the scene at 19:40 to find the vehicle stationary in the road and the bodies of the two women on the centre median of the highway.
They both showed no signs of life and were declared dead on arrival.
The driver was shaken but uninjured.
The Sebokeng Fire Department, as well as the South African Police Services, were on the scene for further investigations, ER24 said.
According to Road Traffic Management Corporation's National Road Safety Strategy 2016 - 2030, vehicle factors make up 14.1% of fatal collisions, while human factors account for 73.6% of fatalities on the roads. The road environment accounts for 12.3%.
The organisation found that pedestrian deaths account for 40% of all road fatalities.


Zombies, Run!
So I followed this app since I saw the Kickstarter page – I didn’t donate but I was quite happy to wait until the app arrived. I’m glad I did, it adds a bit of fun to my runs!
I tried it out today and got this as my first run.
Nothing fantastic but now I know how the app works, I’ll be turning on the Zombie Chases (basically HITT intervals!) just to mix up the runs a bit!


3Wine was a subscription-based wine e-commerce.
It was late 2012 when I was contacted by 3Wine. The subscription-based e-commerce space was booming at the time; new startups were sprouting everyday, selling the most diverse kinds of goods.
3Wine’s ambition was to become a relevant player in the wine & food vertical, and the team’s Italian roots – they were based in Verona, a North-Eastern city which is well-known for its wines – was probably the best starting point.
When I was hired there weren’t any prototypes or beta versions of the product: a great opportunity for creating everything from scratch, from identity to user interface.
Logo Design & identity
Logo, final version
My work on the logo started with 4 proposals — 3 of which are documented here — that led to a selected version.
That version was refined and improved through several iterations, which ultimately led to the final version. No detail was left untouched until the logo felt complete, solid and balanced.
Once the final version was approved, 4 different color palettes were explored, all inspired by the colors of wine, soil, and vine leaves.
Logo iterations
Ribbon study
Circle study
Rejected logos
Colors & typography
-
#a0b63b
-
#e4dcca
-
#4e6b75
-
#7a655b
UI Design
As the primary touchpoint for 3Wine's customers, the website was the main platform for buying the product.
The client provided a series of sketches outlining requirements and functionalities, and I began my design work from there. I chose a simple and clean style, with white backgrounds and soft, washed-out colors. By contrast, call to actions were signaled in bright green. The logo's vintage vibe was echoed in many little UI details and embellishments.
I worked with typography to give the UI a distinctive look: particularly, I used the retro sans-serif "Hammersmith One" for the navbar, an unconventional choice for a main navigation; then I chose a gentler serif, Coustard, for the headings and finally the light yet easily readable Varela Round for body text.
▲ "Monthly Selection" was the core of the website's experience: every month it displayed a different curation of wines, paired with delicious recipes.
The goal of this page was to communicate to the user, at a glance, the value of a 3Wine subscription: a monthly selection of the best wines and recipes, delivered in an elegant box directly at your doorstep.
The arrow buttons on the top left/right offered to the logged-in user a convenient way to browse the content of each box present and past, like a personal collection.
Photography played a major role here, so two dedicated photographers were hired: the first focused on food photography, and the second specialized in product photography for the wine industry.
Website icons
▲ I designed a simple set of UI glyphs; I don't use templates, so each part of the app's visual language is my original creation.
In addition to that, the last touch was designing a complete UI Sheet, in order to establish clear and measurable UI guidelines for front-end developers: the document lists all the website's visual elements & styles, and defines in detail how they should look like.
"When I was hired there weren’t any prototypes or beta versions of the product: a great opportunity for creating everything from scratch"


Peter Rabbit and Other Stories
by Beatrix Potter
“The Tale of Mr. Jeremy Fisher”
Additional Information
- Year Published: 0
- Language: English
- Country of Origin: England
- Source: Beatrix Potter, The Great Big Treasury of Beatrix Potter
-
Readability:
- Flesch–Kincaid Level: 5.0
- Word Count: 828
- Genre: Fantasy
- ✎ Cite This
Downloads
Once upon a time there was a frog called Mr. Jeremy Fisher; he lived in a little damp house amongst the buttercups at the edge of a pond.
The water was all slippy-sloppy in the larder and in the back passage.
But Mr. Jeremy liked getting his feet wet; nobody ever scolded him, and he never caught a cold!
He was quite pleased when he looked out and saw large drops of rain, splashing in the pond—
“I will get some worms and go fishing and catch a dish of minnows for my dinner,” said Mr. Jeremy Fisher. “If I catch more than five fish, I will invite my friends Mr. Alderman Ptolemy Tortoise and Sir Isaac Newton. The Alderman, however, eats salad.”
Mr. Jeremy put on a mackintosh, and a pair of shiny galoshes; he took his rod and basket, and set off with enormous hops to the place where he kept his boat.
The boat was round and green, and very like the other lily-leaves. It was tied to a water-plant in the middle of the pond.
Mr. Jeremy took a reed pole, and pushed the boat out into open water. “I know a good place for minnows,” said Mr. Jeremy Fisher.
Mr. Jeremy stuck his pole into the mud and fastened the boat to it.
Then he settled himself cross-legged and arranged his fishing tackle. He had the dearest little red float. His rod was a tough stalk of grass, his line was a fine long white horse-hair, and he tied a little wriggling worm at the end.
The rain trickled down his back, and for nearly an hour he stared at the float.
“This is getting tiresome, I think I should like some lunch,” said Mr. Jeremy Fisher.
He punted back again amongst the water-plants, and took some lunch out of his basket.
“I will eat a butterfly sandwich, and wait till the shower is over,” said Mr. Jeremy Fisher.
A great big water-beetle came up underneath the lily leaf and tweaked the toe of one of his galoshes.
Mr. Jeremy crossed his legs up shorter, out of reach, and went on eating his sandwich.
Once or twice something moved about with a rustle and a splash amongst the rushes at the side of the pond.
“I trust that is not a rat,” said Mr. Jeremy Fisher; “I think I had better get away from here.”
Mr. Jeremy shoved the boat out again a little way, and dropped in the bait. There was a bite almost directly; the float gave a tremendous bobbit!
“A minnow! A minnow! I have him by the nose!” cried Mr. Jeremy Fisher, jerking up his rod.

The stickleback floundered about the boat, pricking and snapping until he was quite out of breath. Then he jumped back into the water.
And a shoal of other little fishes put their heads out, and laughed at Mr. Jeremy Fisher.
And while Mr. Jeremy sat disconsolately on the edge of his boat—sucking his sore fingers and peering down into the water—a MUCH worse thing happened; a really FRIGHTFUL thing it would have been, if Mr. Jeremy had not been wearing a mackintosh!
A great big enormous trout came up—ker-pflop-p-p-p! with a splash— and it seized Mr. Jeremy with a snap, “Ow! Ow! Ow!”—and then it turned and dived down to the bottom of the pond!
But the trout was so displeased with the taste of the mackintosh, that in less than half a minute it spat him out again; and the only thing it swallowed was Mr. Jeremy’s galoshes.
Mr. Jeremy bounced up to the surface of the water, like a cork and the bubbles out of a soda water bottle; and he swam with all his might to the edge of the pond.
He scrambled out on the first bank he came to, and he hopped home across the meadow with his mackintosh all in tatters.
“What a mercy that was not a pike!” said Mr. Jeremy Fisher. “I have lost my rod and basket; but it does not much matter, for I am sure I should never have dared to go fishing again!”
He put some sticking plaster on his fingers, and his friends both came to dinner. He could not offer them fish, but he had something else in his larder.
Sir Isaac Newton wore his black and gold waistcoat.

And instead of a nice dish of minnows, they had a roasted grasshopper with lady-bird sauce, which frogs consider a beautiful treat; but I think it must have been nasty!


Hello!
You are receiving this email because we received a password reset request for your account.
If you did not request a password reset, no further action is required.
Regards, eyelash Team


Description
We provide 2 ways to download a .CSV file with the data presented
Options
- Download Table View: allows you to download the data in the way it is presented in the table: the results are formatted in a column per database.
- Download Flat Data: download the data in a flat format with a results in a row per database.


You are not using Chrome or have not installed the application for this page.
This app displays a notification whenever its background window is created. Background windows and this app are described in the apps documentation.
The generic source code is available for download. The README tells you how to modify the code.
If you just want to run a version of this app that's already on the web, here's how:


EastEnders' Dean Gaffney 'signs up' for Celebs Go Dating
He's currently a single man
by Charlotte RodriguesFormer EastEnders actor Dean Gaffney, who played Robbie Jackson, is reportedly in talks for Celebs Go Dating.
Last month Daily Star Sunday reported Dean had been 'quietly axed' from the BBC soap.
However it looks like Dean could be appearing on the E4 dating show.
According to The Sun, the show has offered the actor big money to sign up.
A source told the publication: "Dean has been in the limelight as Robbie for decades, but now he wants to show everyone the real him.
"He's nervous about it but Celebs Go Dating would also give him an opportunity to find true love and someone who really cares about him after leaving EastEnders again earlier this year."
Apparently Dean's daughters have given him the green-light and told him to go for it.
The source added: "Dean is hoping that with some guidance from the love gurus he will be able to find someone very special."
Earlier this year it was reported that Dean, 41, had been 'dumped' by 25-year-old Rebekah Rose-Ward after three years of dating.
Read More: Teletubbies star Pui Fan Lee makes a guest appearance in EastEnders
Dean has twin daughters Charlotte and Chloe with his ex-girlfriend, childhood sweetheart Sarah Burge.
The actor, who played Robbie in EastEnders since 1993, left the soap as his character went to look after injured son Sami.
But off screen bosses are alleged to have told Gaffney his contract would not be renewed after becoming concerned about his behaviour.
Read More: EastEnders SPOILERS: Romance for Billy and Karen?
A source told Daily Star Sunday: "Dean knows he’s made some bad decisions and he is working hard to get his life back on track.
"He split up from his long-term girlfriend and then he lost his job. But he knows he only has himself to blame."
The source added: "After everything that’s happened Dean realised that he had to completely change his lifestyle."
Would you like to see Dean on Celebs Go Dating? Leave us a comment on our Facebook page @EntertainmentDailyFix and let us know what you think!


Please Send Us Your Information Here.
Personal Information
Email:
Survey for packages offered[scale: 1-10]:
Date:
Month:
Week:
Time:
Date-Time:
Color:
Downloading status:


Components are our drop-in JavaScript modules that you can add to your payment page.
They render as input fields that collect required shopper details, and provide the values you need to make a payment.
For more information, please refer to the Checkout Components documentation.


The Heresiarch laments: “The depressing thing is that, increasingly, custard is all we have left.”
But remember the wise words of Ned Ward (1667–1731) in British Wonders; Or, A Poetical Description of the Several Prodigies and Most Remarkable Accidents That have happen'd in Britain since the Death of Queen Anne (1717):
“Custard, that noble cooling Food,/ So toothsome, wholsome, and so good, / That Dainty so approv'd of old, / Whose yellow surface shines like Gold.”
You can find a longer extract from the poem, including some terrific lines about pudding, at BabelStone.


1. POST, PUT operations need user authentication.
2. To try the POST and PUT operations, either click on the Authorize button on top header or click the red ! icon in that particular operation and
enter the following values and click Authorize
auth-username: apitester
auth-key: ATtW0TqPjSuqzSnyqW8n
The user 'apitester' is allowed to register a new substance. To get some example substance json,
1. Login to https://tripod.nih.gov/ginas/app/api/v1 with apitester/apitester
2. Use Register Substance link to register a substance, before Submit the substance, user has the option to view the json format by clicking Show JSON
3. Copy the json and use it to try POST api operations.
Disclaimer: This API documentation is a beta version and we are still working on providing more details. Please email us if you have any questions!


This SDK is for interacting with a Cipherise server; it compiles to ES6-compliant JavaScript, and
uses ESNext features such as async
and await
. This means it can be used in a
sufficiently-compliant JavaScript environment, such as Node >6.0.0, recent browsers, and more.
Use NPM to install:
npm i cipherise-sdk
Otherwise, clone the repository and build:
npm run build
The dist folder will contain the package to import.
Note, your TypeScript project should target 'es6'. Ie the following line should be in your tsconfig.json.
"target": "es6",
The purpose of this SDK is to provide Cipherise Authentication and associated functionality to your Service.
Cipherise key concepts can be summarised into the following sections:
The main purpose of Cipherise is to protect a resource. In Cipherise terminology, that resource is called a Service. The application that is then using the Cipherise SDK is a Service Provider. Cipherise must know of this Service Provider to be able to offer any capability.
Service Provider management operations include:
In order to interact with Cipherise, a user must been enrolled to a Service Provider. This interaction is the key point in which the trust relationship is established. Future authentications rely on the trust established at enrolment time. For a service that is binding a secure profile to their Cipherise enrolment, a secure environment must be considered. For example, adding Cipherise to an existing profile in a site may require the user to be logged in. If Cipherise is being used for physical access, it could require being present in the physical environment for enrolment binding to be accepted. Alternatively, an SMS could also be sent from a profile to the owner's device.
Some services need not require a personalised account, and it may be sufficient to offer the instantaneous creation of an anonymous account, simply by scanning of a WaveCode.
Once a user is enrolled to a Service Provider, they can authenticate themselves. Cipherise Authentication is bi-directional, meaning that the Service Provider will verify the user's device and the user's device will verify the Service Provider. Authentication can be used in a variety of ways. It can be simple access control, physical or digital but it can also be part of a workflow. Workflows could include financial transaction approval, manager approval or multiple party approval for example.
There are two types of authentication, WaveAuth and PushAuth. A PushAuth is targeted to a specific user, where WaveAuth is performed by displaying a WaveCode image that can be scanned by a user. Once authenticated, the Service Provider will be informed of the user's username.
Serialization enables sharing of sessions between separate environments; they can be serialized and stored by one environment, and then retrieved and deserialized by another environment. This is most useful for concurrent/cluster environments in which sessions can be shared between cluster nodes using a central store, such as Redis.
Payload is a feature where a Service Provider can encrypt and send data to a user's device for storage via an authentication or at enrolment, and then retrieved from user device when required via an authentication. Each individual payload has a maximum size of 4k bytes. Ideally, this would be used by a Service, such that any private or sensitive user data that the server requires could be held at rest on the user's own device rather than held collectively at the service's storage where the consequences of a hack are far further reaching. Examples of where payload could be used include credit card payment details for a regularly used service, address details or other personally identifying details.
A Cipherise server can be queried for information about itself and what it supports using
Client.serverInformation
. See here.
This is demonstrated below:
import * as cipherise from "cipherise-sdk";
const cipheriseServer = "https://your.cipherise.server.here";
async function example() {
const client = new cipherise.Client(cipheriseServer);
// Retrieve information from the server and print it out.
const info = await client.serverInformation();
console.log("Server version: ", info.serverVersion);
console.log("Build version: ", info.buildVersion)
console.log("Minimum app version: ", info.appMinVersion);
console.log("Maximum supported payload size: ", info.maxPayloadSize);
}
example();
The first step to integrating your Service Provider with Cipherise is to create a Cipherise service. This service is the Cipherise representation of your service, and is used by your Service Provider to communicate with the Cipherise system and issue requests.
To achieve this, first create a Client to connect to a Cipherise server. A Cipherise server can be created at developer.cipherise.com.
const client = new cipherise.Client("https://your.cipherise.server.here");
Next, use the Client to create a new service. A service is not stored anywhere by default; in order to retrieve the same service again, use Service.serialize to store somewhere and Client.deserializeServiceAsync to restore from storage.
const service = await client.createService("Your Service Here");
or
const serializedService = /* load from database or filesystem */;
const service = await client.deserializeServiceAsync(serializedService);
A complete example using the filesystem follows.
import * as cipherise from "cipherise-sdk";
import * as fs from 'fs';
const cipheriseServer = "https://your.cipherise.server.here";
const serviceName = "Example Service";
const filename = serviceName + ".service";
async function example() {
const client = new cipherise.Client(cipheriseServer);
let service;
if (fs.existsSync(filename)) {
// If the service has been saved to disk, load it.
const serializedService = fs.readFileSync(filename);
service = await client.deserializeServiceAsync(serializedService);
} else {
// Otherwise, create the service and store it.
service = await client.createService(serviceName);
fs.writeFileSync(filename, service.serialize());
}
}
example();
A service can revoke itself using Service.revoke. This may be done when, for example, a Cipherise integration is uninstalled. Revoking a service will disable it and remove it from the list of services on users' devices. It cannot be undone.
A complete example of service revocation follows:
import * as cipherise from "cipherise-sdk";
const cipheriseServer = "https://your.cipherise.server.here";
const serviceName = "Example Service";
async function example() {
const client = new cipherise.Client(cipheriseServer);
const service = await client.createService(serviceName);
await service.revoke();
// The service can no longer be used.
}
example();
The enrolment process enrols a user to a Cipherise service so that they can use Cipherise to interact with the service. The enrolment process is multi-step:
1) An enrolment WaveCode is presented to the user (Service.enrolUser, Enrolment.WaveCodeUrl).
2) The user scans the WaveCode, and the service retrieves the result by long-polling on validation Enrolment.validate. The result is the URL from which to identicon can be displayed.
3) The service presents the identicon returned from the validation step.
4) The user confirms that it matches the identicon presented on their device. The service presents buttons that can be used to accept or deny the enrolment. See Enrolment.confirm.
Additionally, the SDK supports a short-polling workflow: Enrolment.getState can be short-polled before Enrolment.validate is called. The values it can return are:
For example, short-polling code may check for EnrolmentState.Scanned
, and then call
enrolment.validate
. This will immediately return (as the result is available), and then
the user can accept or deny the enrolment as required.
A complete example of the long-polling workflow follows:
import * as cipherise from "cipherise-sdk";
import * as readline from "readline";
const cipheriseServer = "https://your.cipherise.server.here";
const serviceName = "Example Service";
const userName = "Test User";
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
async function example() {
const client = new cipherise.Client(cipheriseServer);
const service = await client.createService(serviceName);
// (1) Start an enrolment and present the WaveCode to the user.
const enrolment = await service.enrolUser(userName);
console.log("WaveCode URL:", enrolment.WaveCodeUrl);
// (2) Wait for the user to scan and retrieve the identicon.
const identiconUrl = await enrolment.validate();
// (3) Display the identicon.
console.log("Identicon URL:", identiconUrl); // (3)
// Ask the user whether they want to confirm the enrolment or not.
rl.question("Accept? (y/n): ", async (answer) => {
const confirm = answer.toLowerCase().startsWith("y");
// (4) Confirm the enrolment as appropriate.
await enrolment.confirm(confirm);
rl.close();
});
}
example();
A service can revoke enrolled users using Service.revokeUser. This could be called for a number of reasons. For example, a user leaves an organisation and is no longer authorised for access. To regain access, the user must re-enrol.
Additionally, the optional devices
parameter to revokeUser
can be used to revoke a subset of
the user's devices. A potential use for this parameter is to revoke a device that a user has lost.
A complete example of user revocation follows:
import * as cipherise from "cipherise-sdk";
const cipheriseServer = "https://your.cipherise.server.here";
const serviceName = "Example Service";
const userName = "Test User";
async function example() {
const client = new cipherise.Client(cipheriseServer);
const service = await client.createService(serviceName);
// Automatically enrol the user.
const enrolment = await service.enrolUser(userName);
console.log("Enrolment WaveCode URL:", enrolment.WaveCodeUrl);
await enrolment.validate();
await enrolment.confirm(true);
// Revoke the user.
await service.revokeUser(userName);
// Confirm that they are no longer enrolled.
console.log("Enrolled?", await service.userEnrolled(userName));
}
example();
WaveAuth is where the user 'waves' their device over the presented coded image. It is ideal to log in with and upon successful authentication, will provide the Service Provider with the name of the enrolled application user.
The general flow consists of the following steps:
1) An authentication WaveCode is presented to the user. The WaveCode is an image, and its URL is obtained by initialising the authentication process. Call Service.WaveAuth and display the image from the returned data, located at WaveAuth.WaveCodeUrl.
2) The service retrieves the authentication result by calling WaveAuth.authenticate. Note that this is a blocking call and will not return until a user has scanned the returned image and completed the authentication challenge, OR until the authentication times out.
3) The user scans the QR code and completes the authentication challenge.
4) The service receives the authentication result. It contains the actual result of the authentication, the username and an optional payload response (more in the Payload section).
A complete example of the WaveAuth flow is shown (with a preliminary enrolment):
import * as cipherise from "cipherise-sdk";
const cipheriseServer = "https://your.cipherise.server.here";
const serviceName = "Example Service";
const userName = "Test User";
async function example() {
const client = new cipherise.Client(cipheriseServer);
const service = await client.createService(serviceName);
// Automatically enrol the user.
const enrolment = await service.enrolUser(userName);
console.log("Enrolment WaveCode URL:", enrolment.WaveCodeUrl);
await enrolment.validate();
await enrolment.confirm(true);
// (1) Start and present WaveAuth.
const auth = await service.WaveAuth(
"Description of the authentication, appears in the app",
"Secondary information, appears in the app",
cipherise.AuthenticationLevel.OneTiCK
);
console.log("Authentication WaveCode URL:", auth.WaveCodeUrl);
// (2) Retrieve authentication result.
const result = await auth.authenticate();
console.log("Authenticating username:", result.username);
console.log(
"Did the authentication succeed?",
result.authenticated === cipherise.Authenticated.Success
);
}
example();
PushAuth is a Cipherise authentication that is sent to a particular user's device. This can only be used when the Service wants to target a specific user and the username and device id are known for that user. Ideally, this is suited for workflow related cases, such as authorising a banking transaction (targeted user is the owner of the transferring account), or seeking permission for a privileged activity (targeted user is the supervisor of the user seeking permission).
The general flow consists of the following steps:
1) Look up the username (the name the user was enrolled to Cipherise as) of the authenticating user.
2) Get the device id for the user. This can be determined by calling Service.getUserDevices. Note that there can be more than one device registered to a user. In this situation, the Service will need to determine which one(s) to send the authentication to.
3) Send an authentication to the user's device, by calling Service.PushAuth. This will return a PushAuth
4) The service retrieves the authentication result by calling PushAuth.authenticate. Note that this call is blocking, awaiting timeouts or the User to complete the authentication on their device.
5) The user responds to the authentication notification on their device and solves the authentication challenge on their phone.
6) The result of the authentication contains the username, what the user responded with, and an optional payload response (See more in the Payload section).
A complete example of the long-polling PushAuth flow is shown (with a preliminary enrolment):
import * as cipherise from "cipherise-sdk";
const cipheriseServer = "https://your.cipherise.server.here";
const serviceName = "Example Service";
const userName = "Test User";
async function example() {
const client = new cipherise.Client(cipheriseServer);
const service = await client.createService(serviceName);
// Automatically enrol the user.
const enrolment = await service.enrolUser(userName);
console.log("Enrolment WaveCode URL:", enrolment.WaveCodeUrl);
await enrolment.validate();
await enrolment.confirm(true);
// (1) Retrieve a device.
const devices = await service.getUserDevices(userName);
// Take the last device returned (the most recent device).
const device = devices[devices.length - 1];
// (2) Send a PushAuth to the device.
const auth = await service.PushAuth(
userName,
device,
"Description of the authentication, appears in the app",
"Secondary information, appears in the app",
"Notification message, appears in the push notification",
cipherise.AuthenticationLevel.OneTiCK
);
// (3) Retrieve the result of the authentication.
const result = await auth.authenticate();
console.log("Authenticating username:", result.username);
console.log(
"Did the authentication succeed?",
result.authenticated === cipherise.Authenticated.Success
);
}
example();
There is a non-blocking alternative workflow for WaveAuth and PushAuth. Prior to calling WaveAuth.authenticate or PushAuth.authenticate which both block awaiting the user, WaveAuth.getState or PushAuth.getState can be called to immediately return the current state of the authentication. The values it can return are:
As a workflow example, short-polling code for a WaveAuth may check for AuthenticationState.Done, and then call WaveAuth.authenticate. This will immediately return (as the result is available), and the service can then accept the results of the authentication.
All classes with an extended lifetime (sessions, etc) support serialization and deserialization. Serialization packs the state of the session into a byte buffer, which can then be stored and transferred as appropriate. As this buffer consists of raw bytes, care must be taken in transport; consider encoding as Base64 or hex as required.
These classes feature a serialize
method, while the "parent" class (e.g. the parent for
WaveAuth
is Service
) features the counterpart deserialization method. A full list is
supplied below:
For an example of how these methods may be used, please look at the example for Creating new services.
Payload data can be supplied to the user's device during enrolment and supplied and fetched during authentication, both PushAuth and WaveAuth. Payload data is arbitrary and is controlled by the Service Provider.
A complete example for enrolment follows:
import * as cipherise from "cipherise-sdk";
const cipheriseServer = "https://your.cipherise.server.here";
const serviceName = "Example Service";
const userName = "Test User";
async function example() {
const client = new cipherise.Client(cipheriseServer);
const service = await client.createService(serviceName);
// Automatically enrol the user.
const enrolment = await service.enrolUser(userName);
console.log("Enrolment QR code URL:", enrolment.WaveCodeUrl);
await enrolment.validate();
await enrolment.confirm(true,
cipherise.PayloadRequestBuilder.build(p => p.withSet({
hello: "world",
}))
);
}
example();
Generated using TypeDoc


{% extends "layout.html" %} {% load i18n %} {% block breadcrumbs %}
{% endblock %} {% block content %}No information on editions has been found.
{% endif %} {% if object_list %}No information on literature has been found.
{% endif %} {% if online_list %}| id | Name | URL | |
|---|---|---|---|
| {{source.name}} | {{source.url}} |
No information on online sources has been found.
{% endif %}


{% extends "layout.html" %} {% block title %}Confirm source information{% endblock %} {% block body %} {% include 'partials/phase_banner_beta.html' %} Confirm source information Confirm that the information below is correct. Source information {{ source_information }} or change this source {% endblock %}
Confirm that the information below is correct.
or change this source


linux-dash is a light-weight, open-source web dashboard to monitor your linux machine or virtual machine. You can find this package on Github.
The dashboard reports many different aspects of our linux installation via shell scripts (*.sh). This allows the dashboard to be light-weight, and work on most linux machines. The website displays running charts, and tables. The web site can be node, php, or go. For the node webserver, the only dependencies are express and websocket.
You may have a few extra services or programs running on your linux installation that you would like to display on linux-dash . I use pm2, a process manager. Adding a table to display the pm2 status information was very easy -- even if you are not familiar with client-side Angular directives or server-side Node.JS or server-side shell scripts.
The naming convention and templating allows us to focus on the few components we need to build without struggling on the glue between them.
The 'pm2 list' command shows a table with information on the command line.
We want to show this in the linux-dash website on the applications tab in its own table.
In order to do that, we need:
I'll discuss each piece.
If you do not have linux-dash installed, you will need to get it. Clone it from github. Make sure scripts have execute status and the webserver is started with SUDO privileges.
This section applies to services with a snapshot or single point in time.
If you have not written a shell script before, no need to worry. There are plenty of examples of shell scripts at /server/modules/shell_files. The final output of the shell script needs to either be an empty json object such as {} or an array of values such as [{},{},{}]. The values will be key/value pairs (1 key, 1 value) which will diplay as a 2xn grid of information.
The second choice is a table (array of key/value pairs) with more columns which is what we need.
The command I usually run at the command line is "pm2 list" -- the response shows each process with uptime, status, and other information in a table.
We need to know which lines to ignore (1-3, 6, 7) and which to include (only 4 and 5).
Make sure each line of your output is accounted for as either ignored or parsed. While I ignored the header and footer, perhaps your data should be included.
The shell script needs to be able to read each row into a meaningful json object such as:
[
{
"appName":"dfberry-8080",
"id":"0",
"mode":"fork",
"pid":"1628",
"status":"online",
"restart":"0",
"uptime":"13D",
"memory":"20.043MB",
"watching":"disabled"
},
{
"appName":"linux-dash",
"id":"1",
"mode":"fork",
"pid":"29868",
"status":"online",
"restart":"21",
"uptime":"7D",
"memory":"28.293MB",
"watching":"disabled"
}
]
The script has 3 sections. The first section sets the command to the variable 'command'. The second section executes the command and sets the returned text (the command line table) to the variable 'data'. The third section is in two sections. The first section (a) executes if the 'data' variable has any length. The second section (b) returns an empty json object if the 'data' variable is empty.
Most of the work is in section 3.a with the 'awk' command. The first line pipes the 'data' variable through tail, only passing lines 4 or greater to the next pipe which is head. Head takes all the lines except the last 2 and pipes the results to awk.
The rest of 3.a is working through each column of each row, getting the values $6 means the sixth column. Columns include column break characters of '|' so make sure to include them in the count.
If you are watching the trailing commas, you may be wondering how the last one is removed. Bash has a couple of different ways, I'm using the older bash version syntax which is ${t%?}.
#!/bin/bash
#1: set text of command
command="pm2 list"
#2: execute command
data="$($command)"
#3: only process data if variable has a length
#this should handle cases where pm2 is not installed
if [ -n "$data" ]; then
#a: start processing data on line 4
#don't process last 2 lines
json=$( echo "$data" | tail -n +4 | head -n +2 \
| awk '{print "{"}\
{print "\"appName\":\"" $2 "\","} \
{print "\"id\":\"" $4 "\","} \
{print "\"mode\":\"" $6 "\","} \
{print "\"pid\":\"" $8 "\","}\
{print "\"status\":\"" $10 "\","}\
{print "\"restart\":\"" $12 "\","}\
{print "\"uptime\":\"" $14 "\","}\
{print "\"memory\":\"" $16 $17 "\","}\
{print "\"watching\":\"" $19 "\""}\
{print "},"}')
#make sure to remove last comma and print in array
echo "[" ${json%?} "]"
else
#b: no data found so return empty json object
echo "{}"
fi
Make sure the script has execute permissions then try it out on your favorite linux OS. If you have pm2 installed and running, you should get a json object filled in with values.
At this point, you are done with the server-side code. Isn't that amazing?
The client-side piece of the code is connected to the server-side script via the naming convention. I called this script pm2.sh on the server in the server/modules/shell_files directory. For the client-side/Angular files, you need to use the same name or Angular version of the same name.
The Angular directive will be pm2 and used like:
<pm2></pm2>
Add this to the /templates/sections/applications.html so that the entire file looks like:
<common-applications></common-applications>
<memcached></memcached>
<redis></redis>
<pm2></pm2>
Since the pm2 directive is at the end, it will display as the last table. Notice I haven't actually built a table in html, css, or any other method. I just added a directive using a naming convention tied to the server-side script. Pretty cool, huh?
The last piece is to route the directive 'pm2' to a call to the server for the 'pm2.sh' script.
In the /js/modules.js file, the routing for simple tables in controlled by the 'simpleTableModules' variable. Find that section. We need to add a new json object to the array of name/template sections.
{
name: 'pm2',
template: '<table-data heading="P(rocess) M(anager) 2" module-name="pm2" info="pm2 read-out."></table-data>'
},
It doesn't matter where in the array the section is added, just that the naming convention is used. Notice the name is 'pm2' and the template.module-name is set to the same value of 'pm2'.
If I wanted a simple table of 2 columns instead of 9 columns, the json object would look like:
{
name: 'pm2',
template: '<key-value-list heading="P(rocess) M(anager) 2" module-name="pm2" info="pm2 read-out."></key-value-list>'
},
The key-value-list changes the html display to a 2xN column table.
With very little code, you can add reports to linux-dash. You need to write a shell script with execute permissions that outputs a json object for the server-side. For the client-side you need to create a directive via adding its syntax to the appropriate section template. Then add a route to the modules.js file. The biggest piece of work is getting the shell script to work.
Now that you know how to create new reporting tables for linux-dash, feel free to add your own code to the project via a pull request.


Type Function Library facebook.* Return value None Revision Current Public Release (2013.2076) Keywords Sample code /CoronaSDK/SampleCode/Networking/Facebook See also Implementing Facebook fbconnect facebook.logout() event.token event.phase
Prompts the user to login to Facebook. This API can be called even if the user is already logged in.
The login comes back in the form of a fbconnect event that is sent to the listener passed to this function.
facebook.login( appId, listener [, permissions ] )
String. The Facebook App ID that you receive when you register your app.
Listener. A listener that responds to fbconnect events. If listener is a table, it should have a property "fbconnect"
that is a function.
Array. An optional array of strings that correspond to Facebook's publishing permissions. This enables your application to ask the user to grant certain extended permissions to your app. If not supplied, no extended permissions are requested. Use "publish_stream"
to allow posting to the user's wall.
On Android, you must add the following permission to the build.settings
file.
settings =
{
android =
{
usesPermissions =
{
"android.permission.INTERNET",
},
},
}
local facebook = require( "facebook" )
local json = require "json"
-- listener for "fbconnect" events
local function listener( event )
if ( "session" == event.type ) then
-- upon successful login, request list of friends of the signed in user
if ( "login" == event.phase ) then
facebook.request( "me/friends" )
-- Fetch access token for use in Facebook's API
local access_token = event.token
print( access_token )
end
elseif ( "request" == event.type ) then
-- event.response is a JSON object from the FB server
local response = event.response
-- if request succeeds, create a scrolling list of friend names
if ( not event.isError ) then
response = json.decode( event.response )
local data = response.data
for i=1,#data do
local name = data[i].name
print( name )
end
end
elseif ( "dialog" == event.type ) then
print( "dialog", event.response )
end
end
-- NOTE: You must provide a valid App ID provided from Facebook
local appId = nil
if ( appId ) then
facebook.login( appId, listener, {"publish_stream"} )
else
local function onComplete( event )
system.openURL( "http://developers.facebook.com/setup" )
end
native.showAlert( "Error", "To develop for Facebook Connect, you need an App ID from Facebook.", { "Learn More" }, onComplete )
end


Because SSH can be setup to use RSA keys for authentication instead of the normal username and password used by telnet, users can login to a remote server without having to enter a password each time. This provides similar behaviour to RSH, but without the security problems that come from authenticating users based on their IP address alone.
This module allows you to configure various options for the SSH server installed on your system, as well as option used when an SSH client makes a connection from your machine to another server. After making any server option changes, you must click the Apply Changes button at the bottom of the page for the changes to take effect.


About
This service, funded by the Association of Computing Machinery’s Special Interest Group (SIG) Governing Board, can be used to estimate the per-person CO2-equivalent emissions due to air travel and related activities involved with running conferences. It provides an interface for estimating CO2e for a single person’s trip, and an interference for estimating the CO2e for an entire conference. Results from past queries can be saved and retrieved for later examination.One itenerary
CO2 Footprint Result
- Roundrip | One-way With Rad forcing?
Multiple iteneraries
Upload CSV Must be < 5 MB
Select conference location (optional)
Select a CSV from your computer
Or drag and drop a CSV below
Just drag and drop a CSV here
Instructions:
The comma separated values file (CSV) must have a properly formatted header delimiting the columns present in each row.
Required columns: city1 (minimally the start city)
Optional columns:
- city2: optional stop, required if no conference location is specified
- city3: optional stop in a connecting flight
- city4: optional stop in a connecting flight
- city5: optional stop in a connecting flight
- passengerName: name of the passenger
- isRoundTrip: must be "true" (default) or "false". If there are passengers taking one way trips, add this column.
- # minDist=250 conferenceLocation="New York, NY"
An example of of a CSV with varying start and end cities for each indivudal is available here


Hello! My Name is Danielle Byrne. I grew up in Las Vegas, Nevada and am 25 years old. I went to the University of Nevada and got a Bachelors degree in Psychology. After college I worked for a year before deciding to move to Atlanta, GA. Once I got to Atlanta I knew I wanted to start a career in development. I enrolled in the Georgia Tech Coding Bootcamp, of which I am currently a student. I look forward to kickstarting my development career!


{% extends 'base.html' %} {% block content %}
If you were redirected here, you probably requested a page that requires you to be logged in.
Your username and password didn't match. Please try again.
{{ form.username.label_tag }}{{ form.username }}
{{ form.password.label_tag }}{{ form.password }}


| DOSE: |
14 mg |
oral |
2C-E |
(liquid) |
I had been reading up on various RC's for a long time now, and at the end I decided that 2CE was the one I wanted to give a spin. From what I had read, it was one of the more 'difficult' of the 2Cs - but also highly regarded, and some even claiming it had the depth/intensity of LSD.
After many months of waiting, my 2CE arrived, and then I had to wait for my scale to get in as I did not want to be eyeballing the substance.
Initially, I was planning on tripping on the Friday, but events of the day didn't have me getting in from class until nearly 10pm, my friend was going to trip with me - but decided not to at the last minute, and I figured - its late, I'm getting tired, and if I take it now - I'll be up all night and be worried about keeping my friend awake, so decided to post-pone it until Saturday.
At around 4:45, I measured out approx ~14mg of 2CE. My scale, I've decided - is not very accurate and it was a bit of a pain to work with. I mixed it in with some juice and down the hatch it went - no taste to note of.
I finished watching The Prestige with my BF - he had decided to remain the 'sober sitter' for the evening. The movie was kind of boring and wasn't really into it, but still gave me something to distract myself while waiting for the come up. I wasn't sure if it was just excitement / placebo, but started to notice initial effects fairly quickly - but nothing overwhelming.
As the 2CE started to kick in, I started to get a vague sensation of having 'a flue', mixed with typical come-up feelings of LSD for me. By around 6:00-6:30pm, I was feeling a bit burpy / gassy / nauseous, but not enough to make me feel bad or like I wanted to throw up.  Putting unknown chemicals into me to make me trip' and started to ponder on my drug-using habits a bit and the 'why am I so into this? Kind of things'
At around 6:30, I decide to hop into the bath-tub, the nausea was starting to go away and I could still feel things rising a little bit more - but starting to taper off. I drew a hot bath, threw on some music and turned off the lights.
The isolation and relaxation helped kick the trip into gear a bit more. I was finding it hard to find music I wanted to listen to. With Acid/Shrooms - pretty much anything sounds great, on 2CE - it seemed to be a little less forgiving I found myself going to stuff with more Rhythm/Melodies and 'flowing' sounds - the jarring mix/cuts/beats of some of the music I have didn't fit well with it. But, with the music that 2CE did work with - it worked with really well.
I was not getting too much in terms of OEVs, but the CEVs were rather nice - saturated, not very neon, they had more of a geometric/fractal feel to them and didn't burst into full-on surreal scenes like what can happen with LSD. In the bath, I felt lazy, relaxed and had surges of erotic sensations - touch felt nice, and I just spent quite awhile swaying back and forth in the tub getting into the music. The peak had hit - and had put me into a nice place. Not as intense as LSD, but enjoyable.
The mental aspects of 2CE were pretty interesting - I almost felt sober, but still in a bit of a psychedelic mind space. My mind could easily wander, but never felt as manic as LSD, or as thought-looped as mushrooms. I could bring issues to the surface of my thoughts, look at them, examine them, but not be involved with them. The best way I can describe it is as 'emotional detachment from logical problems in my life'
I got out of the bath after awhile, and threw on a few layers of clothes and headed outside for a walk. I didn't walk for too long as it was damn cold outside, even when I had on flannel PJs under my jeans, 2 sweaters and a jacket, but it was still refreshing, and got myself lost in my music for a bit.
Getting back in from the walk, I ask my BF to put on Drawing Restraint 9. The first 15 mins of this movie are BRILLIANT -- it was so cool to watch it, it was a visual treat for the eyes, and the rhythm of the soundtrack was stellar. Too bad that once the intro credits are done the movie loses steam and just ends up being 'bjork being weird' - I watched another hour of the movie then got bored of it just ended up throwing on some music for abit and laying on my couch relaxing.
One thing I noticed during the trip, is now and then I would feel 'chalky' like I was just coming down from K. There was a bit of a dissociative feeling, which is why I think I could get that 'emotional detachment' at times - it reminded me of when I mixed LSD+K.
Typically on LSD, I can have a hard time dealing with 'sarcasm' and end up taking things personally if they were meant to be just joking around. But, toss a bit of K into the mix - and I can take things better and joke around with it instead of getting caught up in the 'are they insulting me?!' type loop, and 2CE kind of reminded me of that feeling - that 'just whatever' and not getting all emotional over everything.
All in all, by around 11pm or so I had felt 'pretty much' down - watched some peewee's playhouse, an episode of wonder shozen, then was in bed by around 1:30am or so - slept easily and fairly well, woke up feeling pretty much normal. No hangover, but also no feeling of being 'refreshed' like I do after a hefty LSD trip.
Overall, I really enjoyed the trip and as a '1st dose' - seemed to be right on the mark. Nice to get my feet wet, not over-whelming at all, felt fairly easy to cope with. I'm curious to try for a higher dose next time.
Some of the downsides I'd say though would be.
- Feeling of unease during the come up, and some negative thoughts
- Now and then, it'd feel like my head was 'clogged' - like a night after doing too much K
- A bit of tension in the chest - but this could be a result of smoking weed. I've found weed + LSD, while it can up the intensity of the trip, makes my chest area feel a bit tight and can really feel it in my lungs
- Duration seemed a bit short, this could just be a result of the dose. But, dosed at around 4:45, was not until about 6:30-7:00pm that I had 'broken through' the physical un-ease and got to enjoying the trip, and then it felt like that by about 11pm, I was pretty much down -- there were still some lingering effects / minor visuals / etc, but it felt more like after-glow residuals effects and not really 'tripping'
Then again, the shorter duration can make it more appealing in some ways - as you may not want the long haul of an acid trip for every trip you do. But, I think I'm the only person in my circle of friends who wishes that LSD could last a few hours longer Everyone else seems to complain that LSD lasts too long.
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.


ESPECIALLY ON SUNDAY A film review by James Berardinelli Copyright 1993 James Berardinelli
Rating (Linear 0 to 10): 7.0
Date Released: 10/1/93 Running Length: 1:27 Rated: R (Nudity, sexual situations, language)
Music: Ennio Morricone Released by Miramax Films In Italian with English subtitles
ESPECIALLY ON SUNDAY is a collection of three very loosely-connected shorts that take place in a dreamy Italian village. All three were written by Tonino Guerra, so there are some common themes to the stories, especially the first and third. Each is wrapped in its own sense of ethereal unreality, and the mysticism is as enchanting here as it is in full-length features such as LIKE WATER FOR CHOCOLATE. ESPECIALLY ON SUNDAY is the kind of movie that suggested by its title: a frothy picture perfect for consumption when the viewer is ready for a break from the rigors of life.
ESPECIALLY ON SUNDAY's three tales are connected by an even-shorter envelope story that involves a boy, a motorcyclist, and some birds. This is perhaps the weakest element of the movie since, in addition to having far too little time to accomplish much of anything worthwhile, it does nothing to effectively link the more substantial parts of the film. One wonders why this was added in the first place, but since it's only six minutes long, the damage is minimal.
"The Blue Dog"
Rating: 8.4
Running Time: 0:30
Director: Guiseppe Tornatore Producer: Amedeo Pagani Written by: Tonino Guerra Starring: Philippe Noiret
The best of the three shorts, "The Blue Dog" is a sometimes funny, sometimes poignant tale about a man and the unwanted animal who dogs his every footstep. Amleto (Philippe Noiret) is a barber who has a strong dislike of dogs. In his words, they smell and carry lice. For some unknown reason, a dog with a blue spot on its forehead begins to follow him, and the more Amleto tries to shake the animal, the more insistent its pursuit becomes.
While one might normally think there's little that can be done with such a simple story, "The Blue Dog" gives unexpected depth to this one. Handled with deft skill by Guiseppe Tornatore (who directed CINEMA PARADISO), the short wastes no time giving the audience an exceptionally strong sense of character. For "The Blue Dog" to work, Amleto has to become a real person, and this is effectively, and quickly, accomplished.
There's quite a bit of humor in the movie, and it's perfectly-placed to counterbalance some of the more serious aspects. Of the three shorts, "The Blue Dog" is the least complex, the longest, and the most enjoyable. It shares with "Snow on Fire" the theme of how the loss of something familiar can profoundly affect a life.
"Especially on Sunday"
Rating: 7.0
Running Time: 0:24
Director: Guiseppe Bertolucci Producer: Giovanna Romagnoli Written by: Tonino Guerra Starring: Ornella Muti, Bruno Ganz, Andrea Prodan, Nicoletta Braschi
While "The Blue Dog" is basically suitable for family consumption, "Especially on Sunday" is decidedly adult in its erotic nature. This is the only one of the three shorts to feature full frontal female nudity. The story centers around Vittorio (Bruno Ganz), a suave, confidant man who comes across Anna (Ornella Muti) and her supposed brother Marco (Andrea Prodan) one Sunday afternoon. There is an immediate sexual connection between Vittorio and Anna, but finding a moment together becomes difficult because of Marco's constant presence. As the day winds down, Vittorio tries subterfuge to gain his ends, but instead finds something completely unexpected.
About the only connection that this short has with the previous one is the sudden, brief appearance of Amleto grumbling about how dogs stink and carry lice. The eroticism of the story connects it more concretely with "Snow on Fire," however.
While "Especially on Sunday" is a nice dance with the unusual, it's far from a complete story. The plot and characters need a lot of fleshing out, and this could easily have been a full-length feature. None of the relationships are ever nailed down, leading to a sense of incompleteness when this all-too-short tale concludes.
The best element of "Especially on Sunday" is the presence of Ornella Muti, a beautiful and exotic actress who is perfectly cast here in the role of a wild, mysterious temptress.
"Snow on Fire"
Rating: 6.0
Running Time: 0:23
Director: Marco Tullio Giordana Producer: Mario Orfini Written by: Tonino Guerra Starring: Maria Maddalena Fellini, Chiara Casselli
"Snow on Fire" is about the complicit voyeurism that develops between an elderly woman and her new daughter-in-law. Caterina (Maria Maddalena Fellini, the sister of the legendary director) lives in the bedroom above her newly-married son. One night, she discovers an easily-dislodged brick in the floor. Removing it, she finds a window into her son's bedroom. As she watches him and his bride (Chiara Casselli) making love, the two womens' eyes meet, and the daughter-in-law makes it clear that she doesn't mind being observed.
This short, in addition to taking less screen time than the others, is the least engaging. The premise is interesting, but somehow all the pieces don't fall into place. Perhaps more time would have helped develop the characters and situations better, but the story seems overly long already.
We aren't given the opportunity to get to know Caterina and her daughter-in-law, so the motivations of the two never take on an emotional depth. The reasons and morals of the nighttime activities are examined from both sides (each through a confession to a priest who tries ineffectually to deny his fascination), but we are sadly cheated of a full exploration of such potentially-intriguing issues.
So, while this short is expertly directed and exquisitely photographed (by Franco Lecca), its strengths don't run deeper than the purely visual. The message that it's trying to convey is presented with greater impact in "The Blue Dog." The only thing that "Snow on Fire" adds is a coy sexuality and a glance at the compulsion of voyeurism.
- James Berardinelli<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


@*
* This template takes a single argument, a String containing a
* message to display.
*@
@(routeID: Long)
@import helper._
@*
* Call the `main` template with two arguments. The first
* argument is a `String` with the title of the page, the second
* argument is an `Html` object containing the body of the page.
*@
@main("Create Trip") {
}


Rick Sanchez
Rick Sanchez is the co-main character and leading protagonist of the show. He is a genius scientist whose alcoholism and reckless, nihilistic behavior are a source of concern for his daughter's family, as well as the safety of their son, Morty.
Morty Smith
Morty Smith is the co-main protagonists in Rick and Morty. Rick's good-hearted but easily distressed 14-year-old grandson is frequently dragged into Rick's misadventures. He is often reluctant to follow Rick's plans, and he often ends up traumatized by the unorthodox methods Rick uses to 'fix' situations.
Summer Smith
Summer Smith is Morty's 17-year-old older sister, a more conventional and often superficial teenager, who is obsessed with improving her status among her peers. Summer is generally similar to her mother, as she is often shown to be very smart and humorous, but she has also shown elements of Jerry's approval-seeking. She occasionally expresses jealousy that Morty gets to accompany Rick on his inter-dimensional adventures.
Beth Smith
Beth Smith is Rick's daughter, Summer and Morty's mother, and Jerry's wife. She is a veterinarian who specializes in horse surgery, a job she internally feels to be beneath her and is often defensive when her career is compared to actual, human medicine. Level-headed and assertive, she struggles with her husband's ego, which thrives in defiance of his proven mediocrity. Several episodes have dealt with Beth's deep dissatisfaction with her life, stemming from her belief that she has "settled" in her marriage, family, and job.
Jerry Smith
Morty's insecure father, Beth's husband, and Rick's son-in-law, who strongly disapproves of Rick's influence over his family. Jerry used to work at a low-level advertising agency until he was fired for incompetence. Generally insecure, he is frequently led into conflicts stemming from opportunistic posturing, while his marriage is sometimes jeopardized by his wife's reactions to his poor relationship with Rick. Beth views Jerry as meek under his boasts, ultimately fearful of confrontation.


Betoch – Comedy 279 Ethiopian Series Drama Episode
borkena
Watch Betoch comedy 279
Watch betoch part 278 below
Video: embedded from Betoch YouTube channel
Cover photo: screenshot from video
Join the conversation. Like borkena on Facebook and get Ethiopian News updates regularly. As well, you may get Ethiopia News by following us on twitter @zborkena


Copyright © {{ site.time | date: "%Y" }} - {{ site.author }} and contributors - Powered by Octopress - Theme by alessandro melandri


-
<?php
-
-
// include the JavaScript tooltip generator class
-
require "../class.tooltips.php";
-
-
// instantiate the class
-
-
-
?>
-
-
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-

-

-
<title>PHP JavaScript Tooltip Generator Class</title>
-

-

-
<?php
-
-
// set some properties for the tooltip
-
// THIS MUST BE DONE BEFORE CALLING THE init() METHOD!
-
-
// tell the tooltips to start fading in only after it have waited for 100 milliseconds
-
-
// tell the tooltips to start fading out only after 3 seconds
-
// this is to show how more than just one tooltip can be visible on the screen at the same time!
-
-
-
// see the manual for what other properties can be set!
-
-
// notice that we init the tooltips in the  !
-
-
?>
-
-

-

-

-

-
<input type="button" value="hover me! (event is onmousemove)" onmousemove="
<?=$tt->show("Hello World
from button 1!")?>">

-
<select>
-
<option>in internet explorer the tooltips stay over select boxes</option>
-
</select>
-
<input type="button" value="hover me also! (event is onmouseover)" onmouseover="
<?=$tt->show("Hello World!
from button 2!")?>">

-
<input type="button" value="and hover me, too, please! (event is onmouseover)" onmouseover="
<?=$tt->show("Hello World!
from button 3!")?>">

-
notice how tooltips overlap and dissappear slowly in the order they appeared
-

-

-

-
-

-


transmission HIV- (.%) years individuals HIV (.–.%) pairs estimated study women men phylogenetic population Uganda communities University individual participants WHR aged deep-sequence phylogenetically []. flows infection networks reconstructed viral {border-style flow populations CrI Health px;} #ffffff;} Table Women analysis infections source–recipient studies Men Research Transmission direction fishing same-sex sampling sequence sources used male risk subgraph data sample transmissions using [,]. high infected originated Estimated groups linked proportion source subgraphs PANGEA based general Figure Phylogenetically Uganda: clients excluding high-risk networks, sequences AIDS College Institute Lake London adjacent areas compared credibility deep interval larger likely phyloscanner posterior recruited sample, vice -------- August Botswana MRC Pairs Partners Rakai Study characterize cluster combination epidemic involved phylogenies px; {font-family .–.%) Africa Considering MRC/UVRI Oxford PopART Prevention age central differences enrolled female font-size group incidence linkage pairs. sampled samples spread support supported years. (.% FF, However, Program Sciences Victoria [], cohort double; drug dynamics evidence highly included individuals, information molecular net pair participants, positive prevention resistance rural scores sequencing shown southwestern suggesting versa, years, (.–.) .–.) Committee Data Harvard Hopkins Johns Phylogenetics Project Same-Sex South Transm. United adjusting al.The antiretroviral associated attributable border-color border-width comprised convenience corresponding data, distances excluded genome. high-prevalence identified interventions introductions key local network populations, populations. probability ratio reconstruct sexual size solid; therapy total viruses---t_Table windows {font-style {font-weight (Table .collab: Based Deep Executive Flows General Infect. N.B.; Networks ONEe./journal.pone. Participants Population PrEP; RNA Results Sanger VCT Washington [,] accounting age. analyses analysis, ancestral available bold campaigns, clusters column courier; cross-sectional density) disease distribution em; extracted factors fisherfolk genomic important individual. infer intervention means neighboring number patterns performed possible prevalence probabilities pt;} randomised ratios reads regardless relationship set sex spatial virus


| Interface | Description |
|---|---|
| IAuditableClient |
Client specific part of the auditable library providing access to
IAuditable s. |
| IComponentConfigurationClient | |
| IDependentItems | |
| IDetailedStatus | |
| IEmailTemplateClient | |
| IEnumerationClient |
Client library for the IEnumerationService.
|
| ILaunchESignatureDialogListener | |
| IQueryClient |
Draft
|
| IQueryEvent | |
| IQueryListener | |
| IValueSetClient | |
| IWorkingCopyListener |
Listeners for work item working copies.
|
| IWorkItemClient |
Client specific part of the work item library providing access to work item specific artifacts.
|
| IWorkItemListener |
Listeners for work items.
|
| IWorkItemTemplateClient | |
| IWorkItemWorkingCopyManager |
A work item working copy manager allows to connect and disconnect from work item working copies
and provides other working copy related operations.
|
| WorkItemWorkingCopy |
A work item's working copy is used to change a work item.
|
| Class | Description |
|---|---|
| ClientEvaluationContext | |
| DetailedStatus | |
| QueryChangeEvent | |
| QueryEventAdapter | |
| QueryExecutionStateChangeEvent | |
| URIService | |
| ValueProviderTestResult | |
| WorkflowUtilities | |
| WorkingCopyEvent | |
| WorkItemChangeEvent | |
| WorkItemEvent | |
| WorkItemOperation |
A work item operation initializes new or changes existing work items.
|
| Enum | Description |
|---|---|
| WorkItemEvent.EventKind |


Mushrooms - P. semilanceata
I discovered 'magic mushrooms' when I was living in the UK in 1980. Much earlier, I had tested LSD maybe 10 times, and had a lot of very unpleasant experiences…I later realised this was because I was uncertain what I intended doing with my life, and I had parents who expected far too much of me. I was anxious, more than I realised at age 17. I was more interested in 'reality research' (using the chemical keys which seem to have been left lying about by a kind, humorous Universal spirit!) than in proving myself academically, and this didn't fit their view of what a dutiful eldest son should be doing.
I was a teenager in the 60's, saw Hendrix live at Woburn Abbey on his return from recording Electric Ladyland in the USA, and took some of the original 'Operation Julie' LSD several times.
So, by 1980, I had left LSD 11 years back down the timeline, and had learned a lot about myself and the world. I was no longer an adolescent, under the scrutiny of a high achieving academician father, I had become a lot calmer and more accepting of myself, my strengths and weaknesses, and had also developed a worldview which was essentially humanist, with some eastern mystical and Buddhistic elements.
And, I got on great with girls! Isn't libido wonderful! (I'm sure it helps)
I had, from age 11, noticed something very interesting about so called reality, which was, more than any other single external factor, to shape my life…I had started having what were quite clearly precognitive flashes and dreams.
It started when I was 11 and at school outside the UK. It was an all boys boarding school, and the authorities relied heavily on the use of corporal punishment. This was something which seemed often to be prescribed with very little justice, and often with no connection at all with what we might have been doing! So, I noticed, I would have the strong presentiment on say, Tuesday, that I would be going to be caned on the next day!
I would strenuously try to avoid getting into a situation likely to result in a caning, but on Wednesday evening, while we were all doing homework, the master in charge said 'I'm going down to the main building, I'll be about 10 minutes'…I recall this incident very clearly…he came back, and said 'Right, if the people who were responsible for all that noise don't own up within 5 minutes, I'm caning the lot of you!'
And he did. Although no one had been making any particular noise at all…Most amusing…this happened 3 or 4 times, and was responsible for making me take notice of something which by normal thinking, isn't possible.
In later years, I had very clear and increasingly frequent examples of obviously precognitive dreams, which I learned to distinguish from 'ordinary dreams'; I would always tell someone I had just had a precognitive dream on waking, and they would very often be there to experience the dream events occurring later that day. The events would normally be sufficiently unusual and detailed that it was a clear effect, not coincidence or wishful thinking on my part.
This has actually been very useful in my life, and I've been tested with extremely positive results in a well known University Parapsychology lab.
Don't let PSICOP persuade you these effects are not real! They have their own agenda! Instead, read JW Dunne's book, 'An Experiment with Time'.
There is even a website on this book now…
Anyway, 1980 was just a year after my Lab Parapsychology experience, and also just after I'd broken up with a girl I had been living with for 4 years… I was not in the best state emotionally, but feeling much more positive than I had been six months earlier, and dating again!!

We were going in an open car I owned, but as I had for some reason taken these liberty caps, I asked someone else to drive.
I sat in the passenger seat, with two or three others behind us, and as the steel blue Triumph Vitesse convertible wafted its way from the little village where we all lived in two adjoining cottages, I gazed at the passing scenery, and felt the mushrooms starting to take effect…my arm gently waving in languid circles in the balmy, scented summer air…fingers combing the ripples of clear, sparkling air…what? 'Yes, it's clear, perfumed, sparkling and so, so CLEAR…look around you…!'
Somewhere, distant, but somehow also close, I became aware of the drumbeat underlying the superficial surface of visual everyday reality…I sensed the enormity of mind in the Universe, the connections, so strongly felt in this condition, but how strange that we have to live our lives as individuals in this competitive, consumer frenzy, when just a handful of mushrooms away is this secret world of beauty, colour and understanding of the way things REALLY are…mind, expanding, substance…
This sudden, mystical contemplative and visionary state was alternating with something like my normal state of mind, with a frequency of maybe five minutes, though it's hard for me to be sure of the time lapse after so much time has passed...
I would find myself 'back in the car' and be able to smile at my friends and even talk normally…then I'd look at the surroundings and be away again…at one point, I saw a roundabout in the road, and as we passed around it, I saw tulips and daffodils at least 15 feet high burst out of the ground, and reach their full, impossible height in less tan a second, to hang, heads flopping to a standstill as drops of crystal clear water sprayed off them, sparking in the sunlight…then, within seconds, I saw a couple of people, again ridiculously and impossibly large and tall, with huge beaming faces emitting glorious golden light....and I KNEW these were hallucinations, at the time, but I also felt they were a part of a reality which is normally hidden behind the veil of the reduced consciousness which we use to cope in the everyday reality we have created as a species.
We arrived in the city centre, a beautiful, medieval marketplace amongst ancient and spectacular buildings, and some modern monstrosities.
On getting out of the car, I noticed that the sky was filled with firework rockets, though it was daytime, and all the church bells were ringing wildly!! I thought 'Wow…first time I've had anything like this! These are hallucinations too!' But I felt as though I had been specially singled out for this experience.
Then, we came to the cinema. We had to queue with other people for several minutes, and eventually it was my turn to line up at the little hatch with its glass screen, with an open section at the bottom, and some poor person the other side asking me for my money!
I creased up, laughing uncontrollably, it seemed so completely ridiculous, why was I doing this? I had lost all desire to see the film anyway, but was also incapable of thinking about money, tickets and the rest…and the vision of this poor guy's patient, bemused face just cracked me up totally.
I reeled, hooting with laughter, out of the narrow tunnel-like passage, into a dogleg shaped pedestrian walkway forming a right angle along two sides of a department store, and crashed into the wall of the store opposite, a small boutique type shop.
Then I heard a voice, from above, which announced loudly, 'You challenged God, and won!' The voice was full of timbre, not unkind, not Jovian, just, incredibly, THERE!
Gobsmacked into silence, I looked at the people passing by, to see what they had made of this extraordinary announcement, but it seemed no-one had heard a thing!
I realised this had been 'for my ears only'.
I've been wondering what that one was all about ever since!
I did manage to get in to see the film though I couldn't make any sense of it, it seemed like a jumble of disconnected images and I couldn't follow any plot. Later, with my friends, we had a few drinks which I think calmed me down a bit, and as the evening finished, we went home with no further quirky hallucinations.
I decided psilocybin was my 'drug of choice', but have come to see it as a sacrament, in the sense Aldous Huxley meant in his writing on the subject of mescaline, and SOMA.
Leary makes a lot of sense on this as well.
Happy tripping, but remember, folks, SET AND SETTING!
And read John P. Allegro, 'The Sacred Mushroom and the Cross'
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.


docstrip - Docstrip style source code extraction
Docstrip is a tool created to support a brand of Literate Programming. It is most common in the (La)TeX community, where it is being used for pretty much everything from the LaTeX core and up, but there is nothing about docstrip which prevents using it for other types of software.
In short, the basic principle of literate programming is that program source should primarily be written and structured to suit the developers (and advanced users who want to peek "under the hood"), not to suit the whims of a compiler or corresponding source code consumer.  The docstrip Tcl package handles this translation.
Even for those who do not whole-hartedly subscribe to the philosophy behind literate programming, docstrip can bring greater clarity to in particular:
programs employing non-obvious mathematics
projects where separate pieces of code, perhaps in different languages, need to be closely coordinated.
The first is by providing access to much more powerful typographical features for source code comments than are possible in plain text. The second is because all the separate pieces of code can be kept next to each other in the same source file.
The way it works is that the programmer edits directly only one or several "master" source code files, from which docstrip generates the more traditional "source" files compilers or the like would expect. The master sources typically contain a large amount of documentation of the code, sometimes even in places where the code consumers would not allow any comments. The etymology of "docstrip" is that this documentation was stripped away (although "code extraction" might be a better description, as it has always been a matter of copying selected pieces of the master source rather than deleting text from it). The docstrip Tcl package contains a reimplementation of the basic extraction functionality from the docstrip program, and thus makes it possible for a Tcl interpreter to read and interpret the master source files directly.
Readers who are not previously familiar with docstrip but want to know more about it may consult the following sources.
The tclldoc package and class, http://ctan.org/tex-archive/macros/latex/contrib/tclldoc/.
The DocStrip utility, http://ctan.org/tex-archive/macros/latex/base/docstrip.dtx.
The doc and shortvrb Packages, http://ctan.org/tex-archive/macros/latex/base/doc.dtx.
Chapter 14 of The LaTeX Companion (second edition), Addison-Wesley, 2004; ISBN 0-201-36299-6.
The basic unit docstrip operates on are the lines of a master source file. Extraction consists of selecting some of these lines to be copied from input text to output text. The basic distinction is that between code lines (which are copied and do not begin with a percent character) and comment lines (which begin with a percent character and are not copied).
docstrip::extract [join { {% comment} {% more comment !"#$%&/(} {some command} { % blah $blah "Not a comment."} {% abc; this is comment} {# def; this is code} {ghi} {% jkl} } \n] {}
returns the same sequence of lines as
join { {some command} { % blah $blah "Not a comment."} {# def; this is code} {ghi} "" } \n
It does not matter to docstrip what format is used for the documentation in the comment lines, but in order to do better than plain text comments, one typically uses some markup language. Most commonly LaTeX is used, as that is a very established standard and also provides the best support for mathematical formulae, but the docstrip::util package also gives some support for doctools-like markup.
Besides the basic code and comment lines, there are also guard lines, which begin with the two characters '%<', and meta-comment lines, which begin with the two characters '%%'. Within guard lines there is furthermore the distinction between verbatim guard lines, which begin with '%<<', and ordinary guard lines, where the '%<' is not followed by another '<'. The last category is by far the most common.
Ordinary guard lines conditions extraction of the code line(s) they guard by the value of a boolean expression; the guarded block of code lines will only be included if the expression evaluates to true. The syntax of an ordinary guard line is one of
'%' '<' STARSLASH EXPRESSION '>' '%' '<' PLUSMINUS EXPRESSION '>' CODE
where
STARSLASH ::= '*' | '/' PLUSMINUS ::= | '+' | '-' EXPRESSION ::= SECONDARY | SECONDARY ',' EXPRESSION | SECONDARY '|' EXPRESSION SECONDARY ::= PRIMARY | PRIMARY '&' SECONDARY PRIMARY ::= TERMINAL | '!' PRIMARY | '(' EXPRESSION ')' CODE ::= { any character except end-of-line }
Comma and vertical bar both denote 'or'. Ampersand denotes 'and'. Exclamation mark denotes 'not'. A TERMINAL can be any nonempty string of characters not containing '>', '&', '|', comma, '(', or ')', although the docstrip manual is a bit restrictive and only guarantees proper operation for strings of letters (although even the LaTeX core sources make heavy use also of digits in TERMINALs). The second argument of docstrip::extract is the list of those TERMINALs that should count as having the value 'true'; all other TERMINALs count as being 'false' when guard expressions are evaluated.
In the case of a '%<*EXPRESSION>' guard, the lines guarded are all lines up to the next '%</EXPRESSION>' guard with the same EXPRESSION (compared as strings). The blocks of code delimited by such '*' and '/' guard lines must be properly nested.
set text [join { {begin} {%<*foo>} {1} {%<*bar>} {2} {%</bar>} {%<*!bar>} {3} {%</!bar>} {4} {%</foo>} {5} {%<*bar>} {6} {%</bar>} {end} } \n] set res [docstrip::extract $text foo] append res [docstrip::extract $text {foo bar}] append res [docstrip::extract $text bar]
sets $res to the result of
join { {begin} {1} {3} {4} {5} {end} {begin} {1} {2} {4} {5} {6} {end} {begin} {5} {6} {end} "" } \n
In guard lines without a '*', '/', '+', or '-' modifier after the '%<', the guard applies only to the CODE following the '>' on that single line. A '+' modifier is equivalent to no modifier. A '-' modifier is like the case with no modifier, but the expression is implicitly negated, i.e., the CODE of a '%<-' guard line is only included if the expression evaluates to false.
Metacomment lines are "comment lines which should not be stripped away", but be extracted like code lines; these are sometimes used for copyright notices and similar material. The '%%' prefix is however not kept, but substituted by the current -metaprefix, which is customarily set to some "comment until end of line" character (or character sequence) of the language of the code being extracted.
set text [join { {begin} {%<foo> foo} {%<+foo>plusfoo} {%<-foo>minusfoo} {middle} {%% some metacomment} {%<*foo>} {%%another metacomment} {%</foo>} {end} } \n] set res [docstrip::extract $text foo -metaprefix {# }] append res [docstrip::extract $text bar -metaprefix {#}]
sets $res to the result of
join { {begin} { foo} {plusfoo} {middle} {# some metacomment} {# another metacomment} {end} {begin} {minusfoo} {middle} {# some metacomment} {end} "" } \n
Verbatim guards can be used to force code line interpretation of a block of lines even if some of them happen to look like any other type of lines to docstrip. A verbatim guard has the form '%<<END-TAG' and the verbatim block is terminated by the first line that is exactly '%END-TAG'.
set text [join { {begin} {%<*myblock>} {some stupid()} { #computer<program>} {%<<QQQ-98765} {% These three lines are copied verbatim (including percents} {%% even if -metaprefix is something different than %%).} {%</myblock>} {%QQQ-98765} { using*strange@programming<language>} {%</myblock>} {end} } \n] set res [docstrip::extract $text myblock -metaprefix {# }] append res [docstrip::extract $text {}]
sets $res to the result of
join { {begin} {some stupid()} { #computer<program>} {% These three lines are copied verbatim (including percents} {%% even if -metaprefix is something different than %%).} {%</myblock>} { using*strange@programming<language>} {end} {begin} {end} "" } \n
The processing of verbatim guards takes place also inside blocks of lines which due to some outer block guard will not be copied.
The final piece of docstrip syntax is that extraction stops at a line that is exactly "\endinput"; this is often used to avoid copying random whitespace at the end of a file. In the unlikely case that one wants such a code line, one can protect it with a verbatim guard.
The package defines two commands.
The extract command docstrips the text and returns the extracted lines of code, as a string with each line terminated with a newline. The terminals is the list of those guard expression terminals which should evaluate to true. The available options are:
It should be remarked that the terminals are often called "options" in the context of the docstrip program, since these specify which optional code fragments should be included.
The sourcefrom command is a docstripping emulation of source. It opens the file filename, reads it, closes it, docstrips the contents as specified by the terminals, and evaluates the result in the local context of the caller, during which time the info script value will be the filename. The options are passed on to fconfigure to configure the file before its contents are read. The -metaprefix is set to '#', all other extract options have their default values.
The file format (as described above) determines whether a master source code file can be processed correctly by docstrip, but the usefulness of the format is to no little part also dependent on that the code and comment lines together constitute a well-formed document.
For a document format that does not require any non-Tcl software, see the ddt2man command in the docstrip::util package. It is suggested that files employing that document format are given the suffix ".ddt", to distinguish them from the more traditional LaTeX-based ".dtx" files.
Master source files with ".dtx" extension are usually set up so that they can be typeset directly by latex without any support from other files. This is achieved by beginning the file with the lines
% \iffalse %<*driver> \documentclass{tclldoc} \begin{document} \DocInput{filename.dtx} \end{document} %</driver> % \fi
or some variation thereof. The trick is that the file gets read twice. With normal LaTeX reading rules, the first two lines are comments and therefore ignored. The third line is the document preamble, the fourth line begins the document body, and the sixth line ends the document, so LaTeX stops there — non-comments below that point in the file are never subjected to the normal LaTeX reading rules. Before that, however, the \DocInput command on the fifth line is processed, and that does two things: it changes the interpretation of '%' from "comment" to "ignored", and it inputs the file specified in the argument (which is normally the name of the file the command is in). It is this second time that the file is being read that the comments and code in it are typeset.
The function of the \iffalse ... \fi is to skip lines two to seven on this second time through; this is similar to the "if 0 { ... }" idiom for block comments in Tcl code, and it is needed here because (amongst other things) the \documentclass command may only be executed once. The function of the <driver> guards is to prevent this short piece of LaTeX code from being extracted by docstrip. The total effect is that the file can function both as a LaTeX document and as a docstrip master source code file.
It is not necessary to use the tclldoc document class, but that does provide a number of features that are convenient for ".dtx" files containing Tcl code. More information on this matter can be found in the references above.
Documentation tools
Copyright © 2003–2010 Lars Hellström <Lars dot Hellstrom at residenset dot net>


Module: ActiveSupport::IsolatedExecutionState
Do not use. This module is for internal use only.
| Relationships & Source Files | |
| Defined in: | activesupport/lib/active_support/isolated_execution_state.rb |
Class Attribute Summary
Class Method Summary
- .[](key)
- .[]=(key, value)
- .clear
- .delete(key)
- .key?(key) ⇒ Boolean
- .share_with(other)
- .unique_id
-
.current
private
Alias for .current_thread.
- .current_fiber private
- .current_thread (also: .current) private
Instance Attribute Summary
Class Attribute Details
.isolation_level (rw)
[ GitHub ]# File 'activesupport/lib/active_support/isolated_execution_state.rb', line 13
attr_reader :isolation_level
.isolation_level=(level) (rw)
[ GitHub ]# File 'activesupport/lib/active_support/isolated_execution_state.rb', line 15
def isolation_level=(level) unless %i(thread fiber).include?(level) raise ArgumentError, "isolation_level must be `:thread` or `:fiber`, got: `#{level.inspect}`" end if level != isolation_level clear singleton_class.alias_method(:current, "current_#{level}") singleton_class.send(:private, :current) @isolation_level = level end end
Class Method Details
.[](key)
[ GitHub ]# File 'activesupport/lib/active_support/isolated_execution_state.rb', line 32
def [](key) current[key] end
.[]=(key, value)
[ GitHub ]# File 'activesupport/lib/active_support/isolated_execution_state.rb', line 36
def []=(key, value) current[key] = value end
.clear
[ GitHub ]# File 'activesupport/lib/active_support/isolated_execution_state.rb', line 48
def clear current.clear end
.current (private)
Alias for .current_thread.
# File 'activesupport/lib/active_support/isolated_execution_state.rb', line 69
alias_method :current, :current_thread
.current_fiber (private)
[ GitHub ]# File 'activesupport/lib/active_support/isolated_execution_state.rb', line 65
def current_fiber Fiber.current.active_support_execution_state ||= {} end
.current_thread (private) Also known as: .current
[ GitHub ]# File 'activesupport/lib/active_support/isolated_execution_state.rb', line 61
def current_thread Thread.current.active_support_execution_state ||= {} end
.delete(key)
[ GitHub ]# File 'activesupport/lib/active_support/isolated_execution_state.rb', line 44
def delete(key) current.delete(key) end
.key?(key) ⇒ Boolean
# File 'activesupport/lib/active_support/isolated_execution_state.rb', line 40
def key?(key) current.key?(key) end
.unique_id
[ GitHub ]# File 'activesupport/lib/active_support/isolated_execution_state.rb', line 28
def unique_id self[:__id__] ||= Object.new end
Instance Attribute Details
#active_support_execution_state (rw)
[ GitHub ]# File 'activesupport/lib/active_support/isolated_execution_state.rb', line 9
Thread.attr_accessor :active_support_execution_state